From 35f2f1df84b65e83aef6c26839452250f2df8c4b Mon Sep 17 00:00:00 2001 From: Bubka <858858+Bubka@users.noreply.github.com> Date: Fri, 19 Jan 2024 15:49:01 +0100 Subject: [PATCH] Rebuild assets --- .../{About-8ae24971.js => About-0c758706.js} | 2 +- ...ccount-f9c3fa47.js => Account-40908236.js} | 2 +- ...ounts-10c20f4b.js => Accounts-8a72d9f5.js} | 2 +- ...apture-9bf0a566.js => Capture-8f76bfc6.js} | 2 +- ...e-ad68e9ef.js => CreateUpdate-030b151d.js} | 2 +- ...e-e5f4aaeb.js => CreateUpdate-f9adf383.js} | 2 +- .../{Edit-c86faad0.js => Edit-92d4ec4b.js} | 2 +- .../{Error-6fa6dad0.js => Error-c8fed33f.js} | 2 +- .../{Form-d325991a.js => Form-893a9a1a.js} | 2 +- ...{Groups-729cd6d1.js => Groups-6bce16d4.js} | 2 +- ...{Import-93a5b87d.js => Import-a9bc7b8c.js} | 2 +- .../{Login-f9f96d1e.js => Login-815161cc.js} | 2 +- .../{OAuth-7bad0205.js => OAuth-4e28fb5f.js} | 2 +- ...ptions-3a411377.js => Options-3d99ca9e.js} | 2 +- ...lay-62239862.js => OtpDisplay-1a3c1737.js} | 2 +- ...{QRcode-90640d5d.js => QRcode-628d39fd.js} | 2 +- ...c6658b.js => QrContentDisplay-1d6d5b3f.js} | 2 +- ...ecover-35ac48f1.js => Recover-9aa60c2c.js} | 2 +- ...ister-72e05bf6.js => Register-a013046c.js} | 2 +- ...t-031c3de6.js => RequestReset-dd2e2272.js} | 2 +- .../{Reset-ba2845e8.js => Reset-895e136f.js} | 2 +- ...bs-fbf19fde.js => SettingTabs-e95cff9d.js} | 2 +- ...pinner-0e4f49a2.js => Spinner-8bfb7257.js} | 2 +- .../{Start-3e40750b.js => Start-b183fdeb.js} | 2 +- ...Authn-60ef5014.js => WebAuthn-28d5bd1b.js} | 2 +- .../{app-72c44b80.js => app-347ef106.js} | 4 +- .../{bus-222e275f.js => bus-2e7bf732.js} | 2 +- public/build/assets/php_bg-0f3d4dcd.js | 4 + public/build/assets/php_bg-bcff75d8.js | 4 - public/build/assets/php_de-219f9ed4.js | 4 - public/build/assets/php_de-27d4511d.js | 4 + public/build/assets/php_es-887feba5.js | 4 - public/build/assets/php_es-e9ed7804.js | 4 + ...{php_id-3611d83b.js => php_id-54dd91aa.js} | 4 +- public/build/assets/php_it-785d18db.js | 4 - public/build/assets/php_it-fc9d90d6.js | 4 + ...{php_ro-e68bc39a.js => php_ro-5426628b.js} | 6 +- public/build/assets/php_ru-27c574f1.js | 4 + public/build/assets/php_ru-9fc62699.js | 4 - ...{php_si-fff4c92d.js => php_si-1c14cf6b.js} | 6 +- public/build/assets/php_zh-579d5b22.js | 4 + public/build/assets/php_zh-a04c3840.js | 4 - ...-fd2a8274.js => systemService-c3f13e84.js} | 2 +- ...ce-d2ada2ab.js => userService-f0891f7f.js} | 2 +- ...8262ddb.js => webauthnService-ad1f52a0.js} | 2 +- public/build/manifest.json | 188 +++++++++--------- 46 files changed, 157 insertions(+), 157 deletions(-) rename public/build/assets/{About-8ae24971.js => About-0c758706.js} (97%) rename public/build/assets/{Account-f9c3fa47.js => Account-40908236.js} (97%) rename public/build/assets/{Accounts-10c20f4b.js => Accounts-8a72d9f5.js} (99%) rename public/build/assets/{Capture-9bf0a566.js => Capture-8f76bfc6.js} (99%) rename public/build/assets/{CreateUpdate-ad68e9ef.js => CreateUpdate-030b151d.js} (98%) rename public/build/assets/{CreateUpdate-e5f4aaeb.js => CreateUpdate-f9adf383.js} (87%) rename public/build/assets/{Edit-c86faad0.js => Edit-92d4ec4b.js} (89%) rename public/build/assets/{Error-6fa6dad0.js => Error-c8fed33f.js} (95%) rename public/build/assets/{Form-d325991a.js => Form-893a9a1a.js} (98%) rename public/build/assets/{Groups-729cd6d1.js => Groups-6bce16d4.js} (94%) rename public/build/assets/{Import-93a5b87d.js => Import-a9bc7b8c.js} (97%) rename public/build/assets/{Login-f9f96d1e.js => Login-815161cc.js} (97%) rename public/build/assets/{OAuth-7bad0205.js => OAuth-4e28fb5f.js} (94%) rename public/build/assets/{Options-3a411377.js => Options-3d99ca9e.js} (97%) rename public/build/assets/{OtpDisplay-62239862.js => OtpDisplay-1a3c1737.js} (99%) rename public/build/assets/{QRcode-90640d5d.js => QRcode-628d39fd.js} (87%) rename public/build/assets/{QrContentDisplay-d6c6658b.js => QrContentDisplay-1d6d5b3f.js} (96%) rename public/build/assets/{Recover-35ac48f1.js => Recover-9aa60c2c.js} (97%) rename public/build/assets/{Register-72e05bf6.js => Register-a013046c.js} (96%) rename public/build/assets/{RequestReset-031c3de6.js => RequestReset-dd2e2272.js} (91%) rename public/build/assets/{Reset-ba2845e8.js => Reset-895e136f.js} (96%) rename public/build/assets/{SettingTabs-fbf19fde.js => SettingTabs-e95cff9d.js} (93%) rename public/build/assets/{Spinner-0e4f49a2.js => Spinner-8bfb7257.js} (94%) rename public/build/assets/{Start-3e40750b.js => Start-b183fdeb.js} (96%) rename public/build/assets/{WebAuthn-60ef5014.js => WebAuthn-28d5bd1b.js} (93%) rename public/build/assets/{app-72c44b80.js => app-347ef106.js} (98%) rename public/build/assets/{bus-222e275f.js => bus-2e7bf732.js} (75%) create mode 100644 public/build/assets/php_bg-0f3d4dcd.js delete mode 100644 public/build/assets/php_bg-bcff75d8.js delete mode 100644 public/build/assets/php_de-219f9ed4.js create mode 100644 public/build/assets/php_de-27d4511d.js delete mode 100644 public/build/assets/php_es-887feba5.js create mode 100644 public/build/assets/php_es-e9ed7804.js rename public/build/assets/{php_id-3611d83b.js => php_id-54dd91aa.js} (99%) delete mode 100644 public/build/assets/php_it-785d18db.js create mode 100644 public/build/assets/php_it-fc9d90d6.js rename public/build/assets/{php_ro-e68bc39a.js => php_ro-5426628b.js} (99%) create mode 100644 public/build/assets/php_ru-27c574f1.js delete mode 100644 public/build/assets/php_ru-9fc62699.js rename public/build/assets/{php_si-fff4c92d.js => php_si-1c14cf6b.js} (99%) create mode 100644 public/build/assets/php_zh-579d5b22.js delete mode 100644 public/build/assets/php_zh-a04c3840.js rename public/build/assets/{systemService-fd2a8274.js => systemService-c3f13e84.js} (76%) rename public/build/assets/{userService-d2ada2ab.js => userService-f0891f7f.js} (89%) rename public/build/assets/{webauthnService-08262ddb.js => webauthnService-ad1f52a0.js} (98%) diff --git a/public/build/assets/About-8ae24971.js b/public/build/assets/About-0c758706.js similarity index 97% rename from public/build/assets/About-8ae24971.js rename to public/build/assets/About-0c758706.js index c2e901c4..b31188a1 100644 --- a/public/build/assets/About-8ae24971.js +++ b/public/build/assets/About-0c758706.js @@ -1 +1 @@ -import{P as E,u as N,b as U,R as D,r as h,o as M,e as g,f as n,k as R,p as k,h as s,t as o,m as l,n as m,j as r,i as a,U as S,g as i,D as v,F as C,G as $,l as p,I as W}from"./app-72c44b80.js";import{s as j}from"./systemService-fd2a8274.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const G={class:"title has-text-grey-dark"},O={class:"block"},Y=s("span",{class:"is-size-5"},"2FAuth",-1),q=s("br",null,null,-1),H=s("img",{class:"about-logo",src:"logo.svg",alt:"2FAuth logo"},null,-1),J=s("p",{class:"block"},[r(" ©Bubka "),s("a",{class:"is-size-7",href:"https://github.com/Bubka/2FAuth/blob/master/LICENSE"},"AGPL-3.0 license")],-1),K={class:"title is-5 has-text-grey-light"},Q={class:"buttons"},X={class:"icon is-small"},Z=s("span",null,"Github",-1),ss={class:"icon is-small"},ts=s("span",null,"Docs",-1),es={class:"icon is-small"},os=s("span",null,"Demo",-1),as={class:"icon is-small"},ns=s("span",null,"API",-1),is={class:"title is-5 has-text-grey-light"},ls={class:"block"},rs=s("a",{href:"https://docs.2fauth.app/credits/"},"Laravel, Bulma CSS, Vue.js and more",-1),cs=s("a",{href:"https://fontawesome.com/"},"Font Awesome",-1),us=s("a",{class:"is-size-7",href:"https://fontawesome.com/license/free"},"(CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)",-1),ds=s("a",{href:"https://2fa.directory/"},"2FA Directory",-1),hs=s("a",{class:"is-size-7",href:"https://github.com/2factorauth/twofactorauth/blob/master/LICENSE.md"},"(MIT License)",-1),_s={class:"title is-5 has-text-grey-light"},ms={key:0,class:"about-debug box is-family-monospace is-size-7"},ps=["aria-label"],fs=["value"],bs={key:1,class:"about-debug box is-family-monospace is-size-7 has-text-warning-dark"},gs={key:2,class:"title is-5 has-text-grey-light"},ks={key:3,class:"about-debug box is-family-monospace is-size-7"},ys=["aria-label"],vs=["value"],Cs={key:4,class:"title is-5 has-text-grey-light"},$s={key:5,class:"about-debug box is-family-monospace is-size-7"},As=["aria-label"],Bs=["value"],Is={__name:"About",setup(Fs){const x=E("2fauth"),I=N(),w=U(),{copy:T}=D({legacy:!0}),z=I.options.history.state.back,_=h(),A=h(null),f=h(!1),B=h(null),b=h(!1),F=h(null);M(()=>{j.getSystemInfos({returnError:!0}).then(t=>{_.value=t.data.common,t.data.admin_settings&&(b.value=t.data.admin_settings),t.data.user_preferences&&(f.value=t.data.user_preferences)}).catch(()=>{_.value=null})});function y(t){T(t),w.success({text:W("commons.copied_to_clipboard")})}return(t,d)=>{const u=g("FontAwesomeIcon"),L=g("ButtonBackCloseCancel"),P=g("VueFooter"),V=g("ResponsiveWidthWrapper");return n(),R(V,null,{default:k(()=>[s("h1",G,o(t.$t("commons.about")),1),s("p",O,[l(a(S),null,{default:k(({mode:e})=>[s("span",{class:m(e=="dark"?"has-text-white":"has-text-black")},[Y,r(" v"+o(a(x).version),1)],2)]),_:1}),q,r(" "+o(t.$t("commons.2fauth_teaser")),1)]),H,J,s("h2",K,o(t.$t("commons.resources")),1),s("div",Q,[l(a(S),null,{default:k(({mode:e})=>[s("a",{class:m(["button",{"is-dark":e=="dark"}]),href:"https://github.com/Bubka/2FAuth",target:"_blank"},[s("span",X,[l(u,{icon:["fab","github-alt"]})]),Z],2),s("a",{class:m(["button",{"is-dark":e=="dark"}]),href:"https://docs.2fauth.app/",target:"_blank"},[s("span",ss,[l(u,{icon:["fas","book"]})]),ts],2),s("a",{class:m(["button",{"is-dark":e=="dark"}]),href:"https://demo.2fauth.app/",target:"_blank"},[s("span",es,[l(u,{icon:["fas","flask"]})]),os],2),s("a",{class:m(["button",{"is-dark":e=="dark"}]),href:"https://docs.2fauth.app/resources/rapidoc.html",target:"_blank"},[s("span",as,[l(u,{icon:["fas","code"]})]),ns],2)]),_:1})]),s("h2",is,o(t.$t("commons.credits")),1),s("p",ls,[s("ul",null,[s("li",null,[r(o(t.$t("commons.made_with"))+" ",1),rs]),s("li",null,[r(o(t.$t("commons.ui_icons_by"))+" ",1),cs,r(" "),us]),s("li",null,[r(o(t.$t("commons.logos_by"))+" ",1),ds,r(" "),hs])])]),s("h2",_s,o(t.$t("commons.environment")),1),a(_)?(n(),i("div",ms,[s("button",{id:"btnCopyEnvVars","aria-label":t.$t("commons.copy_to_clipboard"),class:"button is-like-text is-pulled-right is-small is-text",onClick:d[0]||(d[0]=v(e=>y(a(A).innerText),["stop"]))},[l(u,{icon:["fas","copy"]})],8,ps),s("ul",{ref_key:"listInfos",ref:A,id:"listInfos"},[(n(!0),i(C,null,$(a(_),(e,c)=>(n(),i("li",{value:e,key:c},[s("b",null,o(c),1),r(": "+o(e),1)],8,fs))),128))],512)])):a(_)===null?(n(),i("div",bs,o(t.$t("errors.error_during_data_fetching")),1)):p("",!0),a(b)?(n(),i("h2",gs,o(t.$t("settings.admin_settings")),1)):p("",!0),a(b)?(n(),i("div",ks,[s("button",{id:"btnCopyAdminSettings","aria-label":t.$t("commons.copy_to_clipboard"),class:"button is-like-text is-pulled-right is-small is-text",onClick:d[1]||(d[1]=v(e=>y(a(F).innerText),["stop"]))},[l(u,{icon:["fas","copy"]})],8,ys),s("ul",{ref_key:"listAdminSettings",ref:F,id:"listAdminSettings"},[(n(!0),i(C,null,$(a(b),(e,c)=>(n(),i("li",{value:e,key:c},[s("b",null,o(c),1),r(": "+o(e),1)],8,vs))),128))],512)])):p("",!0),a(f)?(n(),i("h2",Cs,o(t.$t("settings.user_preferences")),1)):p("",!0),a(f)?(n(),i("div",$s,[s("button",{id:"btnCopyUserPreferences","aria-label":t.$t("commons.copy_to_clipboard"),class:"button is-like-text is-pulled-right is-small is-text",onClick:d[2]||(d[2]=v(e=>y(a(B).innerText),["stop"]))},[l(u,{icon:["fas","copy"]})],8,As),s("ul",{ref_key:"listUserPreferences",ref:B,id:"listUserPreferences"},[(n(!0),i(C,null,$(a(f),(e,c)=>(n(),i("li",{value:e,key:c},[s("b",null,o(c),1),r(": "+o(e),1)],8,Bs))),128))],512)])):p("",!0),l(P,{showButtons:!0},{default:k(()=>[l(L,{returnTo:{path:a(z)},action:"back"},null,8,["returnTo"])]),_:1})]),_:1})}}};export{Is as default}; +import{P as E,u as N,b as U,R as D,r as h,o as M,e as g,f as n,k as R,p as k,h as s,t as o,m as l,n as m,j as r,i as a,U as S,g as i,D as v,F as C,G as $,l as p,I as W}from"./app-347ef106.js";import{s as j}from"./systemService-c3f13e84.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const G={class:"title has-text-grey-dark"},O={class:"block"},Y=s("span",{class:"is-size-5"},"2FAuth",-1),q=s("br",null,null,-1),H=s("img",{class:"about-logo",src:"logo.svg",alt:"2FAuth logo"},null,-1),J=s("p",{class:"block"},[r(" ©Bubka "),s("a",{class:"is-size-7",href:"https://github.com/Bubka/2FAuth/blob/master/LICENSE"},"AGPL-3.0 license")],-1),K={class:"title is-5 has-text-grey-light"},Q={class:"buttons"},X={class:"icon is-small"},Z=s("span",null,"Github",-1),ss={class:"icon is-small"},ts=s("span",null,"Docs",-1),es={class:"icon is-small"},os=s("span",null,"Demo",-1),as={class:"icon is-small"},ns=s("span",null,"API",-1),is={class:"title is-5 has-text-grey-light"},ls={class:"block"},rs=s("a",{href:"https://docs.2fauth.app/credits/"},"Laravel, Bulma CSS, Vue.js and more",-1),cs=s("a",{href:"https://fontawesome.com/"},"Font Awesome",-1),us=s("a",{class:"is-size-7",href:"https://fontawesome.com/license/free"},"(CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)",-1),ds=s("a",{href:"https://2fa.directory/"},"2FA Directory",-1),hs=s("a",{class:"is-size-7",href:"https://github.com/2factorauth/twofactorauth/blob/master/LICENSE.md"},"(MIT License)",-1),_s={class:"title is-5 has-text-grey-light"},ms={key:0,class:"about-debug box is-family-monospace is-size-7"},ps=["aria-label"],fs=["value"],bs={key:1,class:"about-debug box is-family-monospace is-size-7 has-text-warning-dark"},gs={key:2,class:"title is-5 has-text-grey-light"},ks={key:3,class:"about-debug box is-family-monospace is-size-7"},ys=["aria-label"],vs=["value"],Cs={key:4,class:"title is-5 has-text-grey-light"},$s={key:5,class:"about-debug box is-family-monospace is-size-7"},As=["aria-label"],Bs=["value"],Is={__name:"About",setup(Fs){const x=E("2fauth"),I=N(),w=U(),{copy:T}=D({legacy:!0}),z=I.options.history.state.back,_=h(),A=h(null),f=h(!1),B=h(null),b=h(!1),F=h(null);M(()=>{j.getSystemInfos({returnError:!0}).then(t=>{_.value=t.data.common,t.data.admin_settings&&(b.value=t.data.admin_settings),t.data.user_preferences&&(f.value=t.data.user_preferences)}).catch(()=>{_.value=null})});function y(t){T(t),w.success({text:W("commons.copied_to_clipboard")})}return(t,d)=>{const u=g("FontAwesomeIcon"),L=g("ButtonBackCloseCancel"),P=g("VueFooter"),V=g("ResponsiveWidthWrapper");return n(),R(V,null,{default:k(()=>[s("h1",G,o(t.$t("commons.about")),1),s("p",O,[l(a(S),null,{default:k(({mode:e})=>[s("span",{class:m(e=="dark"?"has-text-white":"has-text-black")},[Y,r(" v"+o(a(x).version),1)],2)]),_:1}),q,r(" "+o(t.$t("commons.2fauth_teaser")),1)]),H,J,s("h2",K,o(t.$t("commons.resources")),1),s("div",Q,[l(a(S),null,{default:k(({mode:e})=>[s("a",{class:m(["button",{"is-dark":e=="dark"}]),href:"https://github.com/Bubka/2FAuth",target:"_blank"},[s("span",X,[l(u,{icon:["fab","github-alt"]})]),Z],2),s("a",{class:m(["button",{"is-dark":e=="dark"}]),href:"https://docs.2fauth.app/",target:"_blank"},[s("span",ss,[l(u,{icon:["fas","book"]})]),ts],2),s("a",{class:m(["button",{"is-dark":e=="dark"}]),href:"https://demo.2fauth.app/",target:"_blank"},[s("span",es,[l(u,{icon:["fas","flask"]})]),os],2),s("a",{class:m(["button",{"is-dark":e=="dark"}]),href:"https://docs.2fauth.app/resources/rapidoc.html",target:"_blank"},[s("span",as,[l(u,{icon:["fas","code"]})]),ns],2)]),_:1})]),s("h2",is,o(t.$t("commons.credits")),1),s("p",ls,[s("ul",null,[s("li",null,[r(o(t.$t("commons.made_with"))+" ",1),rs]),s("li",null,[r(o(t.$t("commons.ui_icons_by"))+" ",1),cs,r(" "),us]),s("li",null,[r(o(t.$t("commons.logos_by"))+" ",1),ds,r(" "),hs])])]),s("h2",_s,o(t.$t("commons.environment")),1),a(_)?(n(),i("div",ms,[s("button",{id:"btnCopyEnvVars","aria-label":t.$t("commons.copy_to_clipboard"),class:"button is-like-text is-pulled-right is-small is-text",onClick:d[0]||(d[0]=v(e=>y(a(A).innerText),["stop"]))},[l(u,{icon:["fas","copy"]})],8,ps),s("ul",{ref_key:"listInfos",ref:A,id:"listInfos"},[(n(!0),i(C,null,$(a(_),(e,c)=>(n(),i("li",{value:e,key:c},[s("b",null,o(c),1),r(": "+o(e),1)],8,fs))),128))],512)])):a(_)===null?(n(),i("div",bs,o(t.$t("errors.error_during_data_fetching")),1)):p("",!0),a(b)?(n(),i("h2",gs,o(t.$t("settings.admin_settings")),1)):p("",!0),a(b)?(n(),i("div",ks,[s("button",{id:"btnCopyAdminSettings","aria-label":t.$t("commons.copy_to_clipboard"),class:"button is-like-text is-pulled-right is-small is-text",onClick:d[1]||(d[1]=v(e=>y(a(F).innerText),["stop"]))},[l(u,{icon:["fas","copy"]})],8,ys),s("ul",{ref_key:"listAdminSettings",ref:F,id:"listAdminSettings"},[(n(!0),i(C,null,$(a(b),(e,c)=>(n(),i("li",{value:e,key:c},[s("b",null,o(c),1),r(": "+o(e),1)],8,vs))),128))],512)])):p("",!0),a(f)?(n(),i("h2",Cs,o(t.$t("settings.user_preferences")),1)):p("",!0),a(f)?(n(),i("div",$s,[s("button",{id:"btnCopyUserPreferences","aria-label":t.$t("commons.copy_to_clipboard"),class:"button is-like-text is-pulled-right is-small is-text",onClick:d[2]||(d[2]=v(e=>y(a(B).innerText),["stop"]))},[l(u,{icon:["fas","copy"]})],8,As),s("ul",{ref_key:"listUserPreferences",ref:B,id:"listUserPreferences"},[(n(!0),i(C,null,$(a(f),(e,c)=>(n(),i("li",{value:e,key:c},[s("b",null,o(c),1),r(": "+o(e),1)],8,Bs))),128))],512)])):p("",!0),l(P,{showButtons:!0},{default:k(()=>[l(L,{returnTo:{path:a(z)},action:"back"},null,8,["returnTo"])]),_:1})]),_:1})}}};export{Is as default}; diff --git a/public/build/assets/Account-f9c3fa47.js b/public/build/assets/Account-40908236.js similarity index 97% rename from public/build/assets/Account-f9c3fa47.js rename to public/build/assets/Account-40908236.js index 30479703..efdc5779 100644 --- a/public/build/assets/Account-f9c3fa47.js +++ b/public/build/assets/Account-40908236.js @@ -1 +1 @@ -import{P as A,a as U,b as C,u as D,a2 as K,d as y,$ as L,e as p,f as _,g as w,m as a,h as n,p as E,i as s,t as u,l as g,D as b,I as V}from"./app-72c44b80.js";import{F as v}from"./Form-d325991a.js";import{_ as R}from"./SettingTabs-fbf19fde.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const M={class:"options-tabs"},W={key:0,class:"notification is-warning"},H={key:1,class:"notification is-info"},I=["onSubmit"],j=["innerHTML"],z={class:"title is-4 has-text-grey-light"},q=["disabled"],G=["onSubmit"],J={class:"title is-4 pt-6 has-text-grey-light"},O=["disabled"],Q=["onSubmit"],X={class:"title is-4 pt-6 has-text-danger"},Y={class:"field is-size-7-mobile"},Z={class:"block"},ee=["disabled"],ae={__name:"Account",setup(se){const c=A("2fauth"),d=U(),i=C(),F=D(),x=K(c.prefix+"returnTo","accounts"),l=y(new v({name:d.name,email:d.email,password:""})),t=y(new v({currentPassword:"",password:"",password_confirmation:""})),m=y(new v({password:""}));function P(r){l.put("/user",{returnError:!0}).then(e=>{d.$patch({name:e.data.name,email:e.data.email,isAdmin:e.data.is_admin}),i.success({text:V("auth.forms.profile_saved")})}).catch(e=>{e.response.status===400?i.alert({text:e.response.data.message}):e.response.status!==422&&i.error(e.response)})}function T(r){t.patch("/user/password",{returnError:!0}).then(e=>{t.password="",t.formPassword="",t.password_confirmation="",i.success({text:e.data.message})}).catch(e=>{e.response.status===400?i.alert({text:e.response.data.message}):e.response.status!==422&&i.error(e.response)})}function $(r){confirm(V("auth.confirm.delete_account"))&&m.delete("/user",{returnError:!0}).then(e=>{i.success({text:V("auth.forms.user_account_successfully_deleted")}),F.push({name:"register"})}).catch(e=>{e.response.status===400?i.alert({text:e.response.data.message}):e.response.status!==422&&i.error(e.response)})}return L(r=>{!r.name.startsWith("settings.")&&r.name==="login"&&i.clear()}),(r,e)=>{const f=p("FormField"),h=p("FormButtons"),B=p("FormPasswordField"),N=p("FormWrapper"),S=p("ButtonBackCloseCancel"),k=p("VueFooter");return _(),w("div",null,[a(R,{activeTab:"settings.account"},null,8,["activeTab"]),n("div",M,[a(N,null,{default:E(()=>[s(d).isAdmin?(_(),w("div",W,u(r.$t("settings.you_are_administrator")),1)):g("",!0),s(d).oauth_provider?(_(),w("div",H,u(r.$t("settings.account_linked_to_sso_x_provider",{provider:s(d).oauth_provider})),1)):g("",!0),n("form",{onSubmit:b(P,["prevent"]),onKeydown:e[3]||(e[3]=o=>s(l).onKeydown(o))},[s(c).config.proxyAuth?(_(),w("div",{key:0,class:"notification is-warning has-text-centered",innerHTML:r.$t("auth.user_account_controlled_by_proxy")},null,8,j)):g("",!0),n("h4",z,u(r.$t("settings.profile")),1),n("fieldset",{disabled:s(c).config.proxyAuth||s(d).oauth_provider},[a(f,{modelValue:s(l).name,"onUpdate:modelValue":e[0]||(e[0]=o=>s(l).name=o),fieldName:"name",fieldError:s(l).errors.get("name"),label:"auth.forms.name",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),a(f,{modelValue:s(l).email,"onUpdate:modelValue":e[1]||(e[1]=o=>s(l).email=o),fieldName:"email",fieldError:s(l).errors.get("email"),inputType:"email",label:"auth.forms.email",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),a(f,{modelValue:s(l).password,"onUpdate:modelValue":e[2]||(e[2]=o=>s(l).password=o),fieldName:"password",fieldError:s(l).errors.get("password"),inputType:"password",label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),a(h,{isBusy:s(l).isBusy,caption:"commons.update"},null,8,["isBusy"])],8,q)],40,I),n("form",{onSubmit:b(T,["prevent"]),onKeydown:e[7]||(e[7]=o=>s(t).onKeydown(o))},[n("h4",J,u(r.$t("settings.change_password")),1),n("fieldset",{disabled:s(c).config.proxyAuth||s(d).oauth_provider},[a(B,{modelValue:s(t).password,"onUpdate:modelValue":e[4]||(e[4]=o=>s(t).password=o),fieldName:"password",fieldError:s(t).errors.get("password"),autocomplete:"new-password",showRules:!0,label:"auth.forms.new_password"},null,8,["modelValue","fieldError"]),a(B,{modelValue:s(t).password_confirmation,"onUpdate:modelValue":e[5]||(e[5]=o=>s(t).password_confirmation=o),showRules:!1,fieldName:"password_confirmation",fieldError:s(t).errors.get("password_confirmation"),inputType:"password",autocomplete:"new-password",label:"auth.forms.confirm_new_password"},null,8,["modelValue","fieldError"]),a(f,{modelValue:s(t).currentPassword,"onUpdate:modelValue":e[6]||(e[6]=o=>s(t).currentPassword=o),fieldName:"currentPassword",fieldError:s(t).errors.get("currentPassword"),inputType:"password",label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),a(h,{isBusy:s(t).isBusy,caption:"auth.forms.change_password"},null,8,["isBusy"])],8,O)],40,G),n("form",{id:"frmDeleteAccount",onSubmit:b($,["prevent"]),onKeydown:e[9]||(e[9]=o=>s(m).onKeydown(o))},[n("h4",X,u(r.$t("auth.forms.delete_account")),1),n("div",Y,[n("p",Z,u(r.$t("auth.forms.delete_your_account_and_reset_all_data")),1),n("p",null,u(r.$t("auth.forms.reset_your_password_to_delete_your_account")),1),n("p",null,u(r.$t("auth.forms.deleting_2fauth_account_does_not_impact_provider")),1)]),n("fieldset",{disabled:s(c).config.proxyAuth},[a(f,{modelValue:s(m).password,"onUpdate:modelValue":e[8]||(e[8]=o=>s(m).password=o),fieldName:"password",fieldError:s(m).errors.get("password"),inputType:"password",autocomplete:"new-password",label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),a(h,{isBusy:s(m).isBusy,caption:"auth.forms.delete_your_account",submitId:"btnDeleteAccount",color:"is-danger"},null,8,["isBusy"])],8,ee)],40,Q)]),_:1})]),a(k,{showButtons:!0},{default:E(()=>[a(S,{returnTo:{name:s(x)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{ae as default}; +import{P as A,a as U,b as C,u as D,a2 as K,d as y,$ as L,e as p,f as _,g as w,m as a,h as n,p as E,i as s,t as u,l as g,D as b,I as V}from"./app-347ef106.js";import{F as v}from"./Form-893a9a1a.js";import{_ as R}from"./SettingTabs-e95cff9d.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const M={class:"options-tabs"},W={key:0,class:"notification is-warning"},H={key:1,class:"notification is-info"},I=["onSubmit"],j=["innerHTML"],z={class:"title is-4 has-text-grey-light"},q=["disabled"],G=["onSubmit"],J={class:"title is-4 pt-6 has-text-grey-light"},O=["disabled"],Q=["onSubmit"],X={class:"title is-4 pt-6 has-text-danger"},Y={class:"field is-size-7-mobile"},Z={class:"block"},ee=["disabled"],ae={__name:"Account",setup(se){const c=A("2fauth"),d=U(),i=C(),F=D(),x=K(c.prefix+"returnTo","accounts"),l=y(new v({name:d.name,email:d.email,password:""})),t=y(new v({currentPassword:"",password:"",password_confirmation:""})),m=y(new v({password:""}));function P(r){l.put("/user",{returnError:!0}).then(e=>{d.$patch({name:e.data.name,email:e.data.email,isAdmin:e.data.is_admin}),i.success({text:V("auth.forms.profile_saved")})}).catch(e=>{e.response.status===400?i.alert({text:e.response.data.message}):e.response.status!==422&&i.error(e.response)})}function T(r){t.patch("/user/password",{returnError:!0}).then(e=>{t.password="",t.formPassword="",t.password_confirmation="",i.success({text:e.data.message})}).catch(e=>{e.response.status===400?i.alert({text:e.response.data.message}):e.response.status!==422&&i.error(e.response)})}function $(r){confirm(V("auth.confirm.delete_account"))&&m.delete("/user",{returnError:!0}).then(e=>{i.success({text:V("auth.forms.user_account_successfully_deleted")}),F.push({name:"register"})}).catch(e=>{e.response.status===400?i.alert({text:e.response.data.message}):e.response.status!==422&&i.error(e.response)})}return L(r=>{!r.name.startsWith("settings.")&&r.name==="login"&&i.clear()}),(r,e)=>{const f=p("FormField"),h=p("FormButtons"),B=p("FormPasswordField"),N=p("FormWrapper"),S=p("ButtonBackCloseCancel"),k=p("VueFooter");return _(),w("div",null,[a(R,{activeTab:"settings.account"},null,8,["activeTab"]),n("div",M,[a(N,null,{default:E(()=>[s(d).isAdmin?(_(),w("div",W,u(r.$t("settings.you_are_administrator")),1)):g("",!0),s(d).oauth_provider?(_(),w("div",H,u(r.$t("settings.account_linked_to_sso_x_provider",{provider:s(d).oauth_provider})),1)):g("",!0),n("form",{onSubmit:b(P,["prevent"]),onKeydown:e[3]||(e[3]=o=>s(l).onKeydown(o))},[s(c).config.proxyAuth?(_(),w("div",{key:0,class:"notification is-warning has-text-centered",innerHTML:r.$t("auth.user_account_controlled_by_proxy")},null,8,j)):g("",!0),n("h4",z,u(r.$t("settings.profile")),1),n("fieldset",{disabled:s(c).config.proxyAuth||s(d).oauth_provider},[a(f,{modelValue:s(l).name,"onUpdate:modelValue":e[0]||(e[0]=o=>s(l).name=o),fieldName:"name",fieldError:s(l).errors.get("name"),label:"auth.forms.name",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),a(f,{modelValue:s(l).email,"onUpdate:modelValue":e[1]||(e[1]=o=>s(l).email=o),fieldName:"email",fieldError:s(l).errors.get("email"),inputType:"email",label:"auth.forms.email",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),a(f,{modelValue:s(l).password,"onUpdate:modelValue":e[2]||(e[2]=o=>s(l).password=o),fieldName:"password",fieldError:s(l).errors.get("password"),inputType:"password",label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),a(h,{isBusy:s(l).isBusy,caption:"commons.update"},null,8,["isBusy"])],8,q)],40,I),n("form",{onSubmit:b(T,["prevent"]),onKeydown:e[7]||(e[7]=o=>s(t).onKeydown(o))},[n("h4",J,u(r.$t("settings.change_password")),1),n("fieldset",{disabled:s(c).config.proxyAuth||s(d).oauth_provider},[a(B,{modelValue:s(t).password,"onUpdate:modelValue":e[4]||(e[4]=o=>s(t).password=o),fieldName:"password",fieldError:s(t).errors.get("password"),autocomplete:"new-password",showRules:!0,label:"auth.forms.new_password"},null,8,["modelValue","fieldError"]),a(B,{modelValue:s(t).password_confirmation,"onUpdate:modelValue":e[5]||(e[5]=o=>s(t).password_confirmation=o),showRules:!1,fieldName:"password_confirmation",fieldError:s(t).errors.get("password_confirmation"),inputType:"password",autocomplete:"new-password",label:"auth.forms.confirm_new_password"},null,8,["modelValue","fieldError"]),a(f,{modelValue:s(t).currentPassword,"onUpdate:modelValue":e[6]||(e[6]=o=>s(t).currentPassword=o),fieldName:"currentPassword",fieldError:s(t).errors.get("currentPassword"),inputType:"password",label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),a(h,{isBusy:s(t).isBusy,caption:"auth.forms.change_password"},null,8,["isBusy"])],8,O)],40,G),n("form",{id:"frmDeleteAccount",onSubmit:b($,["prevent"]),onKeydown:e[9]||(e[9]=o=>s(m).onKeydown(o))},[n("h4",X,u(r.$t("auth.forms.delete_account")),1),n("div",Y,[n("p",Z,u(r.$t("auth.forms.delete_your_account_and_reset_all_data")),1),n("p",null,u(r.$t("auth.forms.reset_your_password_to_delete_your_account")),1),n("p",null,u(r.$t("auth.forms.deleting_2fauth_account_does_not_impact_provider")),1)]),n("fieldset",{disabled:s(c).config.proxyAuth},[a(f,{modelValue:s(m).password,"onUpdate:modelValue":e[8]||(e[8]=o=>s(m).password=o),fieldName:"password",fieldError:s(m).errors.get("password"),inputType:"password",autocomplete:"new-password",label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),a(h,{isBusy:s(m).isBusy,caption:"auth.forms.delete_your_account",submitId:"btnDeleteAccount",color:"is-danger"},null,8,["isBusy"])],8,ee)],40,Q)]),_:1})]),a(k,{showButtons:!0},{default:E(()=>[a(S,{returnTo:{name:s(x)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{ae as default}; diff --git a/public/build/assets/Accounts-10c20f4b.js b/public/build/assets/Accounts-8a72d9f5.js similarity index 99% rename from public/build/assets/Accounts-10c20f4b.js rename to public/build/assets/Accounts-8a72d9f5.js index 223546e8..12f94c47 100644 --- a/public/build/assets/Accounts-10c20f4b.js +++ b/public/build/assets/Accounts-8a72d9f5.js @@ -1,4 +1,4 @@ -import{a as Ft,e as Q,f as w,g as k,h as v,F as ut,G as dt,m as I,p as B,n as H,t as M,i as p,U as Me,j as ze,r as te,J as nt,K as hn,o as Bt,s as mn,k as ve,z as gn,u as Zt,l as Y,L as vn,M as bn,N as _n,O as We,E as ot,P as yn,b as wn,Q as Sn,R as En,c as Dn,S as kn,x as bt,v as Cn,I as _t,D as Ie,T as Tn,A as yt,V as In,w as wt,W as Ge,B as Yt,X as On}from"./app-72c44b80.js";import{_ as $n,a as An,b as Mn}from"./OtpDisplay-62239862.js";import{u as xn}from"./userService-d2ada2ab.js";import{u as Pn}from"./bus-222e275f.js";import"./Spinner-0e4f49a2.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const Nn={id:"groupSwitch",class:"container groups"},Fn={class:"columns is-centered"},Bn={class:"column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},Rn={class:"columns is-multiline"},Gn=["onClick"],Ln={class:"columns is-centered"},Xn={class:"column has-text-centered"},Yn={__name:"GroupSwitch",props:{showGroupSwitch:Boolean,groups:Array},emits:["update:showGroupSwitch"],setup(t,{emit:e}){const n=Ft();function o(i){n.preferences.activeGroup=i,n.preferences.rememberActiveGroup&&xn.updatePreference("activeGroup",i),e("update:showGroupSwitch",!1)}return(i,r)=>{const s=Q("RouterLink"),l=Q("ButtonBackCloseCancel"),u=Q("VueFooter");return w(),k("div",Nn,[v("div",Fn,[v("div",Bn,[v("div",Rn,[(w(!0),k(ut,null,dt(t.groups,a=>(w(),k("div",{class:"column is-full",key:a.id},[I(p(Me),null,{default:B(({mode:c})=>[v("button",{class:H(["button is-fullwidth",{"is-dark has-text-light is-outlined":c=="dark"}]),onClick:f=>o(a.id)},M(a.name),11,Gn)]),_:2},1024)]))),128))]),v("div",Ln,[v("div",Xn,[I(s,{to:{name:"groups"}},{default:B(()=>[ze(M(i.$t("groups.manage_groups")),1)]),_:1})])])])]),I(u,{showButtons:!0},{default:B(()=>[I(l,{action:"close",useLinkTag:!1,onClosed:r[0]||(r[0]=a=>i.$emit("update:showGroupSwitch",!1))})]),_:1})])}}},zn={class:"container group-selector"},Wn={class:"columns is-centered is-multiline"},Un={class:"column is-full has-text-centered"},qn={class:"column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},Hn={class:"columns is-multiline"},jn=["onClick"],Vn={key:0,class:"is-italic"},Kn={key:1},Qn={class:"columns is-centered"},Zn={class:"column has-text-centered"},Jn={class:"control"},eo={__name:"DestinationGroupSelector",props:{showDestinationGroupSelector:Boolean,selectedAccountsIds:Array,groups:Array},emits:["update:showDestinationGroupSelector","accounts-moved"],setup(t,{emit:e}){const n=t,o=te(null);async function i(){o.value===0?await nt.withdraw(n.selectedAccountsIds):await hn.assign(n.selectedAccountsIds,o.value),e("accounts-moved")}return(r,s)=>{const l=Q("RouterLink"),u=Q("ButtonBackCloseCancel"),a=Q("VueFooter");return w(),k("div",zn,[v("div",Wn,[v("div",Un,M(r.$t("groups.move_selected_to")),1),v("div",qn,[v("div",Hn,[(w(!0),k(ut,null,dt(t.groups,c=>(w(),k("div",{class:"column is-full",key:c.id},[I(p(Me),null,{default:B(({mode:f})=>[v("button",{class:H(["button is-fullwidth",{"is-link":p(o)===c.id,"is-dark has-text-light is-outlined":f=="dark"}]),onClick:y=>o.value=c.id},[c.id===0?(w(),k("span",Vn,M(r.$t("groups.no_group")),1)):(w(),k("span",Kn,M(c.name),1))],10,jn)]),_:2},1024)]))),128))]),v("div",Qn,[v("div",Zn,[I(l,{to:{name:"groups"}},{default:B(()=>[ze(M(r.$t("groups.manage_groups")),1)]),_:1})])])])]),I(a,{showButtons:!0},{default:B(()=>[v("p",Jn,[v("button",{class:"button is-link is-rounded",onClick:i},M(r.$t("commons.move")),1)]),I(u,{action:"cancel",useLinkTag:!1,onCanceled:s[0]||(s[0]=c=>r.$emit("update:showDestinationGroupSelector",!1))})]),_:1})])}}},to={role:"search",class:"field"},no={class:"control has-icons-right"},oo=["aria-label","title","value"],io={class:"icon is-small is-right"},ro=["title"],so={__name:"SearchBox",props:{keyword:String},setup(t){const e=te(null);Bt(()=>{document.addEventListener("keydown",n)}),mn(()=>{document.removeEventListener("keydown",n)});function n(o){var i;o.key==="f"&&(o.ctrlKey||o.metaKey)&&(o.preventDefault(),(i=e.value)==null||i.focus())}return(o,i)=>{const r=Q("FontAwesomeIcon");return w(),k("div",to,[v("div",no,[v("input",{ref_key:"searchInput",ref:e,id:"txtSearch",type:"search",tabindex:"1","aria-label":o.$t("commons.search"),title:o.$t("commons.search"),class:"input is-rounded is-search",value:t.keyword,onKeyup:i[0]||(i[0]=s=>o.$emit("update:keyword",s.target.value))},null,40,oo),v("span",io,[t.keyword!=""?(w(),k("button",{key:0,id:"btnClearSearch",tabindex:"1",title:o.$t("commons.clear_search"),class:"clear-selection delete",onClick:i[1]||(i[1]=s=>o.$emit("update:keyword",""))},null,8,ro)):(w(),ve(r,{key:1,icon:["fas","search"]}))])])])}}},ao={class:"toolbar has-text-centered"},lo={class:"columns"},uo={class:"column has-nowrap px-0"},co={class:"has-text-grey mr-1"},fo=["title"],po=["title"],ho=["title"],mo=["title"],go={__name:"Toolbar",props:{selectedCount:Number},setup(t){return(e,n)=>{const o=Q("FontAwesomeIcon");return w(),k("div",ao,[v("div",lo,[v("div",uo,[v("span",co,M(t.selectedCount)+" "+M(e.$t("commons.selected")),1),v("button",{id:"btnUnselectAll",onClick:n[0]||(n[0]=i=>e.$emit("clear-selected")),class:"clear-selection delete mr-4",style:gn({visibility:t.selectedCount>0?"visible":"hidden"}),title:e.$t("commons.clear_selection")},null,12,fo),v("button",{id:"btnSelectAll",onClick:n[1]||(n[1]=i=>e.$emit("select-all")),class:"button mr-5 has-line-height p-1 is-ghost has-text-grey",title:e.$t("commons.select_all")},[v("span",null,M(e.$t("commons.all")),1),I(o,{class:"ml-1",icon:["fas","check-square"]})],8,po),v("button",{id:"btnSortAscending",onClick:n[2]||(n[2]=i=>e.$emit("sort-asc")),class:"button has-line-height p-1 is-ghost has-text-grey",title:e.$t("commons.sort_ascending")},[I(o,{icon:["fas","sort-alpha-down"]})],8,ho),v("button",{id:"btnSortDescending",onClick:n[3]||(n[3]=i=>e.$emit("sort-desc")),class:"button has-line-height p-1 is-ghost has-text-grey",title:e.$t("commons.sort_descending")},[I(o,{icon:["fas","sort-alpha-up"]})],8,mo)])])])}}},vo={key:0,class:"control"},bo={class:"icon is-small"},_o={key:1,class:"control"},yo={key:2,class:"control"},wo=["disabled","title"],So={key:3,class:"control"},Eo=["disabled"],Do={key:4,class:"control"},ko=["disabled","title"],Co={__name:"ActionButtons",props:{inManagementMode:Boolean,areDisabled:Boolean},emits:["update:inManagementMode","move-button-clicked","delete-button-clicked","export-button-clicked"],setup(t,{emit:e}){const n=Zt(),o=Ft();function i(){o.preferences.useDirectCapture&&o.preferences.defaultCaptureMode==="advancedForm"?n.push({name:"createAccount"}):o.preferences.useDirectCapture&&o.preferences.defaultCaptureMode==="livescan"?n.push({name:"capture"}):n.push({name:"start"})}return(r,s)=>{const l=Q("FontAwesomeIcon");return w(),ve(p(Me),null,{default:B(({mode:u})=>[t.inManagementMode?Y("",!0):(w(),k("p",vo,[v("button",{class:"button is-link is-rounded is-focus",onClick:i},[v("span",null,M(r.$t("commons.new")),1),v("span",bo,[I(l,{icon:["fas","qrcode"]})])])])),t.inManagementMode?Y("",!0):(w(),k("p",_o,[v("button",{id:"btnManage",class:H(["button is-rounded",{"is-dark":u=="dark"}]),onClick:s[0]||(s[0]=a=>r.$emit("update:inManagementMode",!0))},M(r.$t("commons.manage")),3)])),t.inManagementMode?(w(),k("p",yo,[v("button",{id:"btnMove",disabled:t.areDisabled,class:H(["button is-rounded",[{"is-outlined":u=="dark"||t.areDisabled},t.areDisabled?"is-dark":"is-link"]]),onClick:s[1]||(s[1]=a=>r.$emit("move-button-clicked")),title:r.$t("groups.move_selected_to_group")},M(r.$t("commons.move")),11,wo)])):Y("",!0),t.inManagementMode?(w(),k("p",So,[v("button",{id:"btnDelete",disabled:t.areDisabled,class:H(["button is-rounded",[{"is-outlined":u=="dark"||t.areDisabled},t.areDisabled?"is-dark":"is-link"]]),onClick:s[2]||(s[2]=a=>r.$emit("delete-button-clicked"))},M(r.$t("commons.delete")),11,Eo)])):Y("",!0),t.inManagementMode?(w(),k("p",Do,[v("button",{id:"btnExport",disabled:t.areDisabled,class:H(["button is-rounded",[{"is-outlined":u=="dark"||t.areDisabled},t.areDisabled?"is-dark":"is-link"]]),onClick:s[3]||(s[3]=a=>r.$emit("export-button-clicked")),title:r.$t("twofaccounts.export_selected_to_json")},M(r.$t("commons.export")),11,ko)])):Y("",!0)]),_:1})}}};function To(t){return vn()?(bn(t),!0):!1}function At(t){return typeof t=="function"?t():p(t)}const Io=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;function Oo(t,e=!0){_n()?Bt(t):e?t():We(t)}function $o(t){var e;const n=At(t);return(e=n==null?void 0:n.$el)!=null?e:n}const Ao=Io?window.document:void 0;/**! +import{a as Ft,e as Q,f as w,g as k,h as v,F as ut,G as dt,m as I,p as B,n as H,t as M,i as p,U as Me,j as ze,r as te,J as nt,K as hn,o as Bt,s as mn,k as ve,z as gn,u as Zt,l as Y,L as vn,M as bn,N as _n,O as We,E as ot,P as yn,b as wn,Q as Sn,R as En,c as Dn,S as kn,x as bt,v as Cn,I as _t,D as Ie,T as Tn,A as yt,V as In,w as wt,W as Ge,B as Yt,X as On}from"./app-347ef106.js";import{_ as $n,a as An,b as Mn}from"./OtpDisplay-1a3c1737.js";import{u as xn}from"./userService-f0891f7f.js";import{u as Pn}from"./bus-2e7bf732.js";import"./Spinner-8bfb7257.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const Nn={id:"groupSwitch",class:"container groups"},Fn={class:"columns is-centered"},Bn={class:"column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},Rn={class:"columns is-multiline"},Gn=["onClick"],Ln={class:"columns is-centered"},Xn={class:"column has-text-centered"},Yn={__name:"GroupSwitch",props:{showGroupSwitch:Boolean,groups:Array},emits:["update:showGroupSwitch"],setup(t,{emit:e}){const n=Ft();function o(i){n.preferences.activeGroup=i,n.preferences.rememberActiveGroup&&xn.updatePreference("activeGroup",i),e("update:showGroupSwitch",!1)}return(i,r)=>{const s=Q("RouterLink"),l=Q("ButtonBackCloseCancel"),u=Q("VueFooter");return w(),k("div",Nn,[v("div",Fn,[v("div",Bn,[v("div",Rn,[(w(!0),k(ut,null,dt(t.groups,a=>(w(),k("div",{class:"column is-full",key:a.id},[I(p(Me),null,{default:B(({mode:c})=>[v("button",{class:H(["button is-fullwidth",{"is-dark has-text-light is-outlined":c=="dark"}]),onClick:f=>o(a.id)},M(a.name),11,Gn)]),_:2},1024)]))),128))]),v("div",Ln,[v("div",Xn,[I(s,{to:{name:"groups"}},{default:B(()=>[ze(M(i.$t("groups.manage_groups")),1)]),_:1})])])])]),I(u,{showButtons:!0},{default:B(()=>[I(l,{action:"close",useLinkTag:!1,onClosed:r[0]||(r[0]=a=>i.$emit("update:showGroupSwitch",!1))})]),_:1})])}}},zn={class:"container group-selector"},Wn={class:"columns is-centered is-multiline"},Un={class:"column is-full has-text-centered"},qn={class:"column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},Hn={class:"columns is-multiline"},jn=["onClick"],Vn={key:0,class:"is-italic"},Kn={key:1},Qn={class:"columns is-centered"},Zn={class:"column has-text-centered"},Jn={class:"control"},eo={__name:"DestinationGroupSelector",props:{showDestinationGroupSelector:Boolean,selectedAccountsIds:Array,groups:Array},emits:["update:showDestinationGroupSelector","accounts-moved"],setup(t,{emit:e}){const n=t,o=te(null);async function i(){o.value===0?await nt.withdraw(n.selectedAccountsIds):await hn.assign(n.selectedAccountsIds,o.value),e("accounts-moved")}return(r,s)=>{const l=Q("RouterLink"),u=Q("ButtonBackCloseCancel"),a=Q("VueFooter");return w(),k("div",zn,[v("div",Wn,[v("div",Un,M(r.$t("groups.move_selected_to")),1),v("div",qn,[v("div",Hn,[(w(!0),k(ut,null,dt(t.groups,c=>(w(),k("div",{class:"column is-full",key:c.id},[I(p(Me),null,{default:B(({mode:f})=>[v("button",{class:H(["button is-fullwidth",{"is-link":p(o)===c.id,"is-dark has-text-light is-outlined":f=="dark"}]),onClick:y=>o.value=c.id},[c.id===0?(w(),k("span",Vn,M(r.$t("groups.no_group")),1)):(w(),k("span",Kn,M(c.name),1))],10,jn)]),_:2},1024)]))),128))]),v("div",Qn,[v("div",Zn,[I(l,{to:{name:"groups"}},{default:B(()=>[ze(M(r.$t("groups.manage_groups")),1)]),_:1})])])])]),I(a,{showButtons:!0},{default:B(()=>[v("p",Jn,[v("button",{class:"button is-link is-rounded",onClick:i},M(r.$t("commons.move")),1)]),I(u,{action:"cancel",useLinkTag:!1,onCanceled:s[0]||(s[0]=c=>r.$emit("update:showDestinationGroupSelector",!1))})]),_:1})])}}},to={role:"search",class:"field"},no={class:"control has-icons-right"},oo=["aria-label","title","value"],io={class:"icon is-small is-right"},ro=["title"],so={__name:"SearchBox",props:{keyword:String},setup(t){const e=te(null);Bt(()=>{document.addEventListener("keydown",n)}),mn(()=>{document.removeEventListener("keydown",n)});function n(o){var i;o.key==="f"&&(o.ctrlKey||o.metaKey)&&(o.preventDefault(),(i=e.value)==null||i.focus())}return(o,i)=>{const r=Q("FontAwesomeIcon");return w(),k("div",to,[v("div",no,[v("input",{ref_key:"searchInput",ref:e,id:"txtSearch",type:"search",tabindex:"1","aria-label":o.$t("commons.search"),title:o.$t("commons.search"),class:"input is-rounded is-search",value:t.keyword,onKeyup:i[0]||(i[0]=s=>o.$emit("update:keyword",s.target.value))},null,40,oo),v("span",io,[t.keyword!=""?(w(),k("button",{key:0,id:"btnClearSearch",tabindex:"1",title:o.$t("commons.clear_search"),class:"clear-selection delete",onClick:i[1]||(i[1]=s=>o.$emit("update:keyword",""))},null,8,ro)):(w(),ve(r,{key:1,icon:["fas","search"]}))])])])}}},ao={class:"toolbar has-text-centered"},lo={class:"columns"},uo={class:"column has-nowrap px-0"},co={class:"has-text-grey mr-1"},fo=["title"],po=["title"],ho=["title"],mo=["title"],go={__name:"Toolbar",props:{selectedCount:Number},setup(t){return(e,n)=>{const o=Q("FontAwesomeIcon");return w(),k("div",ao,[v("div",lo,[v("div",uo,[v("span",co,M(t.selectedCount)+" "+M(e.$t("commons.selected")),1),v("button",{id:"btnUnselectAll",onClick:n[0]||(n[0]=i=>e.$emit("clear-selected")),class:"clear-selection delete mr-4",style:gn({visibility:t.selectedCount>0?"visible":"hidden"}),title:e.$t("commons.clear_selection")},null,12,fo),v("button",{id:"btnSelectAll",onClick:n[1]||(n[1]=i=>e.$emit("select-all")),class:"button mr-5 has-line-height p-1 is-ghost has-text-grey",title:e.$t("commons.select_all")},[v("span",null,M(e.$t("commons.all")),1),I(o,{class:"ml-1",icon:["fas","check-square"]})],8,po),v("button",{id:"btnSortAscending",onClick:n[2]||(n[2]=i=>e.$emit("sort-asc")),class:"button has-line-height p-1 is-ghost has-text-grey",title:e.$t("commons.sort_ascending")},[I(o,{icon:["fas","sort-alpha-down"]})],8,ho),v("button",{id:"btnSortDescending",onClick:n[3]||(n[3]=i=>e.$emit("sort-desc")),class:"button has-line-height p-1 is-ghost has-text-grey",title:e.$t("commons.sort_descending")},[I(o,{icon:["fas","sort-alpha-up"]})],8,mo)])])])}}},vo={key:0,class:"control"},bo={class:"icon is-small"},_o={key:1,class:"control"},yo={key:2,class:"control"},wo=["disabled","title"],So={key:3,class:"control"},Eo=["disabled"],Do={key:4,class:"control"},ko=["disabled","title"],Co={__name:"ActionButtons",props:{inManagementMode:Boolean,areDisabled:Boolean},emits:["update:inManagementMode","move-button-clicked","delete-button-clicked","export-button-clicked"],setup(t,{emit:e}){const n=Zt(),o=Ft();function i(){o.preferences.useDirectCapture&&o.preferences.defaultCaptureMode==="advancedForm"?n.push({name:"createAccount"}):o.preferences.useDirectCapture&&o.preferences.defaultCaptureMode==="livescan"?n.push({name:"capture"}):n.push({name:"start"})}return(r,s)=>{const l=Q("FontAwesomeIcon");return w(),ve(p(Me),null,{default:B(({mode:u})=>[t.inManagementMode?Y("",!0):(w(),k("p",vo,[v("button",{class:"button is-link is-rounded is-focus",onClick:i},[v("span",null,M(r.$t("commons.new")),1),v("span",bo,[I(l,{icon:["fas","qrcode"]})])])])),t.inManagementMode?Y("",!0):(w(),k("p",_o,[v("button",{id:"btnManage",class:H(["button is-rounded",{"is-dark":u=="dark"}]),onClick:s[0]||(s[0]=a=>r.$emit("update:inManagementMode",!0))},M(r.$t("commons.manage")),3)])),t.inManagementMode?(w(),k("p",yo,[v("button",{id:"btnMove",disabled:t.areDisabled,class:H(["button is-rounded",[{"is-outlined":u=="dark"||t.areDisabled},t.areDisabled?"is-dark":"is-link"]]),onClick:s[1]||(s[1]=a=>r.$emit("move-button-clicked")),title:r.$t("groups.move_selected_to_group")},M(r.$t("commons.move")),11,wo)])):Y("",!0),t.inManagementMode?(w(),k("p",So,[v("button",{id:"btnDelete",disabled:t.areDisabled,class:H(["button is-rounded",[{"is-outlined":u=="dark"||t.areDisabled},t.areDisabled?"is-dark":"is-link"]]),onClick:s[2]||(s[2]=a=>r.$emit("delete-button-clicked"))},M(r.$t("commons.delete")),11,Eo)])):Y("",!0),t.inManagementMode?(w(),k("p",Do,[v("button",{id:"btnExport",disabled:t.areDisabled,class:H(["button is-rounded",[{"is-outlined":u=="dark"||t.areDisabled},t.areDisabled?"is-dark":"is-link"]]),onClick:s[3]||(s[3]=a=>r.$emit("export-button-clicked")),title:r.$t("twofaccounts.export_selected_to_json")},M(r.$t("commons.export")),11,ko)])):Y("",!0)]),_:1})}}};function To(t){return vn()?(bn(t),!0):!1}function At(t){return typeof t=="function"?t():p(t)}const Io=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;function Oo(t,e=!0){_n()?Bt(t):e?t():We(t)}function $o(t){var e;const n=At(t);return(e=n==null?void 0:n.$el)!=null?e:n}const Ao=Io?window.document:void 0;/**! * Sortable 1.15.0 * @author RubaXa * @author owenm diff --git a/public/build/assets/Capture-9bf0a566.js b/public/build/assets/Capture-8f76bfc6.js similarity index 99% rename from public/build/assets/Capture-9bf0a566.js rename to public/build/assets/Capture-8f76bfc6.js index 2e1d1299..3299cd08 100644 --- a/public/build/assets/Capture-9bf0a566.js +++ b/public/build/assets/Capture-8f76bfc6.js @@ -1,4 +1,4 @@ -import{q as go,r as Ee,o as za,s as wo,v as va,x as ya,y as bo,f as Se,g as Ye,h as Z,z as $o,A as $a,B as Na,C as _o,u as Co,b as To,d as Po,e as ga,i as fe,t as gt,m as Ve,p as wa,D as So,k as Sa,l as Ea,E as Aa,F as Oa,G as Eo,H as Ao,n as ka,U as Da,I as ja}from"./app-72c44b80.js";import{F as Oo}from"./Form-d325991a.js";import{S as ko}from"./Spinner-0e4f49a2.js";import{_ as Do}from"./QrContentDisplay-d6c6658b.js";import{u as jo}from"./bus-222e275f.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */var Ba=(i,c,o)=>{if(!c.has(i))throw TypeError("Cannot "+o)},xa=(i,c,o)=>(Ba(i,c,"read from private field"),o?o.call(i):c.get(i)),xo=(i,c,o)=>{if(c.has(i))throw TypeError("Cannot add the same private member more than once");c instanceof WeakSet?c.add(i):c.set(i,o)},Mo=(i,c,o,h)=>(Ba(i,c,"write to private field"),h?h.call(i,o):c.set(i,o),o);const Ma=["aztec","code_128","code_39","code_93","codabar","data_matrix","ean_13","ean_8","itf","pdf417","qr_code","upc_a","upc_e","unknown"];function Ro(i){if(Ya(i))return{width:i.naturalWidth,height:i.naturalHeight};if(Ga(i))return{width:i.width.baseVal.value,height:i.height.baseVal.value};if(qa(i))return{width:i.videoWidth,height:i.videoHeight};if(Xa(i))return{width:i.width,height:i.height};if(Qa(i))return{width:i.displayWidth,height:i.displayHeight};if(Ja(i))return{width:i.width,height:i.height};if(Za(i))return{width:i.width,height:i.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function Ya(i){try{return i instanceof HTMLImageElement}catch{return!1}}function Ga(i){try{return i instanceof SVGImageElement}catch{return!1}}function qa(i){try{return i instanceof HTMLVideoElement}catch{return!1}}function Ja(i){try{return i instanceof HTMLCanvasElement}catch{return!1}}function Xa(i){try{return i instanceof ImageBitmap}catch{return!1}}function Za(i){try{return i instanceof OffscreenCanvas}catch{return!1}}function Qa(i){try{return i instanceof VideoFrame}catch{return!1}}function Ka(i){try{return i instanceof Blob}catch{return!1}}function Fo(i){try{return i instanceof ImageData}catch{return!1}}function Wo(i,c){try{const o=new OffscreenCanvas(i,c);if(o.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return o;throw void 0}catch{const h=document.createElement("canvas");return h.width=i,h.height=c,h}}async function eo(i){if(Ya(i)&&!await Vo(i))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(Ga(i)&&!await Lo(i))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(Qa(i)&&zo(i))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(qa(i)&&(i.readyState===0||i.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(Xa(i)&&Bo(i))throw new DOMException("The image source is detached.","InvalidStateError");const{width:c,height:o}=Ro(i);if(c===0||o===0)return null;const h=Wo(c,o).getContext("2d");h.drawImage(i,0,0);try{return h.getImageData(0,0,c,o)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Io(i){let c;try{if(createImageBitmap)c=await createImageBitmap(i);else if(Image){c=new Image;let o="";try{o=URL.createObjectURL(i),c.src=o,await c.decode()}finally{URL.revokeObjectURL(o)}}else return i}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await eo(c)}function Uo(i){const{width:c,height:o}=i;if(c===0||o===0)return null;const h=i.getContext("2d");try{return h.getImageData(0,0,c,o)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Ho(i){if(Ka(i))return await Io(i);if(Fo(i)){if(No(i))throw new DOMException("The image data has been detached.","InvalidStateError");return i}return Ja(i)||Za(i)?Uo(i):await eo(i)}async function Vo(i){try{return await i.decode(),!0}catch{return!1}}async function Lo(i){var c;try{return await((c=i.decode)==null?void 0:c.call(i)),!0}catch{return!1}}function zo(i){return i.format===null}function No(i){return i.data.buffer.byteLength===0}function Bo(i){return i.width===0&&i.height===0}function Ra(i,c){return i instanceof DOMException?new DOMException(`${c}: ${i.message}`,i.name):i instanceof Error?new i.constructor(`${c}: ${i.message}`):new Error(`${c}: ${i}`)}const Fa=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","UPC-A","UPC-E"];function Yo(i){return i.join("|")}function Go(i){const c=Wa(i);let o=0,h=Fa.length-1;for(;o<=h;){const v=Math.floor((o+h)/2),b=Fa[v],$=Wa(b);if($===c)return b;${const o=i.match(/_(.+?)\.wasm$/);return o?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.0.0-rc.3/dist/${o[1]}/${i}`:c+i}};let Ia=new WeakMap;function Ta(i,c){var o;const h=Ia.get(i);if(h!=null&&h.modulePromise&&(c===void 0||Object.is(c,h.moduleOverrides)))return h.modulePromise;const v=(o=c??(h==null?void 0:h.moduleOverrides))!=null?o:ei,b=i({...v});return Ia.set(i,{moduleOverrides:v,modulePromise:b}),b}async function ti(i,c,o=lr){const h={...lr,...o},v=await Ta(i),{size:b}=c,$=new Uint8Array(await c.arrayBuffer()),E=v._malloc(b);v.HEAPU8.set($,E);const y=v.readBarcodesFromImage(E,b,to(v,h));v._free(E);const _=[];for(let O=0;O{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(c={}){var o=c,h,v;o.ready=new Promise((n,e)=>{h=n,v=e});var b=Object.assign({},o),$="./this.program",E=typeof window=="object",y=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var _="";function O(n){return o.locateFile?o.locateFile(n,_):_+n}var P;(E||y)&&(y?_=self.location.href:typeof document<"u"&&document.currentScript&&(_=document.currentScript.src),i&&(_=i),_.indexOf("blob:")!==0?_=_.substr(0,_.replace(/[?#].*/,"").lastIndexOf("/")+1):_="",y&&(P=n=>{var e=new XMLHttpRequest;return e.open("GET",n,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),o.print||console.log.bind(console);var B=o.printErr||console.error.bind(console);Object.assign(o,b),b=null,o.arguments&&o.arguments,o.thisProgram&&($=o.thisProgram),o.quit&&o.quit;var q;o.wasmBinary&&(q=o.wasmBinary),typeof WebAssembly!="object"&&pe("no native wasm support detected");var Y,X=!1;function oe(n,e){n||pe(e)}var x,k,z,J,R,A,we,Oe;function ze(){var n=Y.buffer;o.HEAP8=x=new Int8Array(n),o.HEAP16=z=new Int16Array(n),o.HEAPU8=k=new Uint8Array(n),o.HEAPU16=J=new Uint16Array(n),o.HEAP32=R=new Int32Array(n),o.HEAPU32=A=new Uint32Array(n),o.HEAPF32=we=new Float32Array(n),o.HEAPF64=Oe=new Float64Array(n)}var Ne=[],Be=[],Xe=[];function Ct(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)Ze(o.preRun.shift());et(Ne)}function Tt(){et(Be)}function Pt(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)St(o.postRun.shift());et(Xe)}function Ze(n){Ne.unshift(n)}function wt(n){Be.unshift(n)}function St(n){Xe.unshift(n)}var se=0,ie=null;function ye(n){se++,o.monitorRunDependencies&&o.monitorRunDependencies(se)}function Et(n){if(se--,o.monitorRunDependencies&&o.monitorRunDependencies(se),se==0&&ie){var e=ie;ie=null,e()}}function pe(n){o.onAbort&&o.onAbort(n),n="Aborted("+n+")",B(n),X=!0,n+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(n);throw v(e),e}var At="data:application/octet-stream;base64,",Qe=n=>n.startsWith(At),ce;ce="zxing_reader.wasm",Qe(ce)||(ce=O(ce));function Ke(n){if(n==ce&&q)return new Uint8Array(q);if(P)return P(n);throw"both async and sync fetching of the wasm failed"}function fr(n){return!q&&(E||y)&&typeof fetch=="function"?fetch(n,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+n+"'";return e.arrayBuffer()}).catch(()=>Ke(n)):Promise.resolve().then(()=>Ke(n))}function Ot(n,e,t){return fr(n).then(r=>WebAssembly.instantiate(r,e)).then(r=>r).then(t,r=>{B(`failed to asynchronously prepare wasm: ${r}`),pe(r)})}function hr(n,e,t,r){return!n&&typeof WebAssembly.instantiateStreaming=="function"&&!Qe(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var s=WebAssembly.instantiateStreaming(a,t);return s.then(r,function(u){return B(`wasm streaming compile failed: ${u}`),B("falling back to ArrayBuffer instantiation"),Ot(e,t,r)})}):Ot(e,t,r)}function pr(){var n={a:Jn};function e(r,a){return F=r.exports,Y=F.fa,ze(),Vt=F.ja,wt(F.ga),Et(),F}ye();function t(r){e(r.instance)}if(o.instantiateWasm)try{return o.instantiateWasm(n,e)}catch(r){B(`Module.instantiateWasm callback failed with error: ${r}`),v(r)}return hr(q,ce,n,t).catch(v),{}}var et=n=>{for(;n.length>0;)n.shift()(o)};o.noExitRuntime;var ke=[],De=0,mr=n=>{var e=new tt(n);return e.get_caught()||(e.set_caught(!0),De--),e.set_rethrown(!1),ke.push(e),nr(e.excPtr),e.get_exception_ptr()},ne=0,vr=()=>{M(0,0);var n=ke.pop();rr(n.excPtr),ne=0};function tt(n){this.excPtr=n,this.ptr=n-24,this.set_type=function(e){A[this.ptr+4>>2]=e},this.get_type=function(){return A[this.ptr+4>>2]},this.set_destructor=function(e){A[this.ptr+8>>2]=e},this.get_destructor=function(){return A[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,x[this.ptr+12>>0]=e},this.get_caught=function(){return x[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,x[this.ptr+13>>0]=e},this.get_rethrown=function(){return x[this.ptr+13>>0]!=0},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){A[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return A[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=or(this.get_type());if(e)return A[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var yr=n=>{throw ne||(ne=n),ne},rt=n=>{var e=ne;if(!e)return Pe(0),0;var t=new tt(e);t.set_adjusted_ptr(e);var r=t.get_type();if(!r)return Pe(0),e;for(var a in n){var s=n[a];if(s===0||s===r)break;var u=t.ptr+16;if(ar(s,r,u))return Pe(s),e}return Pe(r),e},gr=()=>rt([]),wr=n=>rt([n]),br=(n,e)=>rt([n,e]),$r=()=>{var n=ke.pop();n||pe("no exception to throw");var e=n.excPtr;throw n.get_rethrown()||(ke.push(n),n.set_rethrown(!0),n.set_caught(!1),De++),ne=e,ne},_r=(n,e,t)=>{var r=new tt(n);throw r.init(e,t),ne=n,De++,ne},Cr=()=>De,je={},kt=n=>{for(;n.length;){var e=n.pop(),t=n.pop();t(e)}};function nt(n){return this.fromWireType(R[n>>2])}var me={},le={},xe={},Dt,Me=n=>{throw new Dt(n)},de=(n,e,t)=>{n.forEach(function(l){xe[l]=e});function r(l){var d=t(l);d.length!==n.length&&Me("Mismatched type converter count");for(var f=0;f{le.hasOwnProperty(l)?a[d]=le[l]:(s.push(l),me.hasOwnProperty(l)||(me[l]=[]),me[l].push(()=>{a[d]=le[l],++u,u===s.length&&r(a)}))}),s.length===0&&r(a)},Tr=n=>{var e=je[n];delete je[n];var t=e.rawConstructor,r=e.rawDestructor,a=e.fields,s=a.map(u=>u.getterReturnType).concat(a.map(u=>u.setterArgumentType));de([n],s,u=>{var l={};return a.forEach((d,f)=>{var m=d.fieldName,w=u[f],C=d.getter,S=d.getterContext,j=u[f+a.length],H=d.setter,V=d.setterContext;l[m]={read:L=>w.fromWireType(C(S,L)),write:(L,g)=>{var p=[];H(V,L,j.toWireType(p,g)),kt(p)}}}),[{name:e.name,fromWireType:d=>{var f={};for(var m in l)f[m]=l[m].read(d);return r(d),f},toWireType:(d,f)=>{for(var m in l)if(!(m in f))throw new TypeError(`Missing field: "${m}"`);var w=t();for(m in l)l[m].write(w,f[m]);return d!==null&&d.push(r,w),w},argPackAdvance:re,readValueFromPointer:nt,destructorFunction:r}]})},Pr=(n,e,t,r,a)=>{},Sr=()=>{for(var n=new Array(256),e=0;e<256;++e)n[e]=String.fromCharCode(e);jt=n},jt,G=n=>{for(var e="",t=n;k[t];)e+=jt[k[t++]];return e},ve,D=n=>{throw new ve(n)};function Er(n,e,t={}){var r=e.name;if(n||D(`type "${r}" must have a positive integer typeid pointer`),le.hasOwnProperty(n)){if(t.ignoreDuplicateRegistrations)return;D(`Cannot register type '${r}' twice`)}if(le[n]=e,delete xe[n],me.hasOwnProperty(n)){var a=me[n];delete me[n],a.forEach(s=>s())}}function te(n,e,t={}){if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Er(n,e,t)}var re=8,Ar=(n,e,t,r)=>{e=G(e),te(n,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,s){return s?t:r},argPackAdvance:re,readValueFromPointer:function(a){return this.fromWireType(k[a])},destructorFunction:null})},Or=n=>({count:n.count,deleteScheduled:n.deleteScheduled,preservePointerOnDelete:n.preservePointerOnDelete,ptr:n.ptr,ptrType:n.ptrType,smartPtr:n.smartPtr,smartPtrType:n.smartPtrType}),at=n=>{function e(t){return t.$$.ptrType.registeredClass.name}D(e(n)+" instance already deleted")},ot=!1,xt=n=>{},kr=n=>{n.smartPtr?n.smartPtrType.rawDestructor(n.smartPtr):n.ptrType.registeredClass.rawDestructor(n.ptr)},Mt=n=>{n.count.value-=1;var e=n.count.value===0;e&&kr(n)},Rt=(n,e,t)=>{if(e===t)return n;if(t.baseClass===void 0)return null;var r=Rt(n,e,t.baseClass);return r===null?null:t.downcast(r)},Ft={},Dr=()=>Object.keys(_e).length,jr=()=>{var n=[];for(var e in _e)_e.hasOwnProperty(e)&&n.push(_e[e]);return n},be=[],it=()=>{for(;be.length;){var n=be.pop();n.$$.deleteScheduled=!1,n.delete()}},$e,xr=n=>{$e=n,be.length&&$e&&$e(it)},Mr=()=>{o.getInheritedInstanceCount=Dr,o.getLiveInheritedInstances=jr,o.flushPendingDeletes=it,o.setDelayFunction=xr},_e={},Rr=(n,e)=>{for(e===void 0&&D("ptr should not be undefined");n.baseClass;)e=n.upcast(e),n=n.baseClass;return e},Fr=(n,e)=>(e=Rr(n,e),_e[e]),Re=(n,e)=>{(!e.ptrType||!e.ptr)&&Me("makeClassHandle requires ptr and ptrType");var t=!!e.smartPtrType,r=!!e.smartPtr;return t!==r&&Me("Both smartPtrType and smartPtr must be specified"),e.count={value:1},Ce(Object.create(n,{$$:{value:e}}))};function Wr(n){var e=this.getPointee(n);if(!e)return this.destructor(n),null;var t=Fr(this.registeredClass,e);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=e,t.$$.smartPtr=n,t.clone();var r=t.clone();return this.destructor(n),r}function a(){return this.isSmartPointer?Re(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:n}):Re(this.registeredClass.instancePrototype,{ptrType:this,ptr:n})}var s=this.registeredClass.getActualType(e),u=Ft[s];if(!u)return a.call(this);var l;this.isConst?l=u.constPointerType:l=u.pointerType;var d=Rt(e,this.registeredClass,l.registeredClass);return d===null?a.call(this):this.isSmartPointer?Re(l.registeredClass.instancePrototype,{ptrType:l,ptr:d,smartPtrType:this,smartPtr:n}):Re(l.registeredClass.instancePrototype,{ptrType:l,ptr:d})}var Ce=n=>typeof FinalizationRegistry>"u"?(Ce=e=>e,n):(ot=new FinalizationRegistry(e=>{Mt(e.$$)}),Ce=e=>{var t=e.$$,r=!!t.smartPtr;if(r){var a={$$:t};ot.register(e,a,e)}return e},xt=e=>ot.unregister(e),Ce(n)),Ir=()=>{Object.assign(Fe.prototype,{isAliasOf(n){if(!(this instanceof Fe)||!(n instanceof Fe))return!1;var e=this.$$.ptrType.registeredClass,t=this.$$.ptr;n.$$=n.$$;for(var r=n.$$.ptrType.registeredClass,a=n.$$.ptr;e.baseClass;)t=e.upcast(t),e=e.baseClass;for(;r.baseClass;)a=r.upcast(a),r=r.baseClass;return e===r&&t===a},clone(){if(this.$$.ptr||at(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var n=Ce(Object.create(Object.getPrototypeOf(this),{$$:{value:Or(this.$$)}}));return n.$$.count.value+=1,n.$$.deleteScheduled=!1,n},delete(){this.$$.ptr||at(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&D("Object already scheduled for deletion"),xt(this),Mt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||at(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&D("Object already scheduled for deletion"),be.push(this),be.length===1&&$e&&$e(it),this.$$.deleteScheduled=!0,this}})};function Fe(){}var Ur=48,Hr=57,Wt=n=>{if(n===void 0)return"_unknown";n=n.replace(/[^a-zA-Z0-9_]/g,"$");var e=n.charCodeAt(0);return e>=Ur&&e<=Hr?`_${n}`:n};function st(n,e){return n=Wt(n),{[n]:function(){return e.apply(this,arguments)}}[n]}var It=(n,e,t)=>{if(n[e].overloadTable===void 0){var r=n[e];n[e]=function(){return n[e].overloadTable.hasOwnProperty(arguments.length)||D(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${n[e].overloadTable})!`),n[e].overloadTable[arguments.length].apply(this,arguments)},n[e].overloadTable=[],n[e].overloadTable[r.argCount]=r}},ut=(n,e,t)=>{o.hasOwnProperty(n)?((t===void 0||o[n].overloadTable!==void 0&&o[n].overloadTable[t]!==void 0)&&D(`Cannot register public name '${n}' twice`),It(o,n,n),o.hasOwnProperty(t)&&D(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),o[n].overloadTable[t]=e):(o[n]=e,t!==void 0&&(o[n].numArguments=t))};function Vr(n,e,t,r,a,s,u,l){this.name=n,this.constructor=e,this.instancePrototype=t,this.rawDestructor=r,this.baseClass=a,this.getActualType=s,this.upcast=u,this.downcast=l,this.pureVirtualFunctions=[]}var ct=(n,e,t)=>{for(;e!==t;)e.upcast||D(`Expected null or instance of ${t.name}, got an instance of ${e.name}`),n=e.upcast(n),e=e.baseClass;return n};function Lr(n,e){if(e===null)return this.isReference&&D(`null is not a valid ${this.name}`),0;e.$$||D(`Cannot pass "${ht(e)}" as a ${this.name}`),e.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=e.$$.ptrType.registeredClass,r=ct(e.$$.ptr,t,this.registeredClass);return r}function zr(n,e){var t;if(e===null)return this.isReference&&D(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),n!==null&&n.push(this.rawDestructor,t),t):0;e.$$||D(`Cannot pass "${ht(e)}" as a ${this.name}`),e.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&D(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var r=e.$$.ptrType.registeredClass;if(t=ct(e.$$.ptr,r,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&D("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?t=e.$$.smartPtr:D(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)t=e.$$.smartPtr;else{var a=e.clone();t=this.rawShare(t,ue.toHandle(()=>a.delete())),n!==null&&n.push(this.rawDestructor,t)}break;default:D("Unsupporting sharing policy")}return t}function Nr(n,e){if(e===null)return this.isReference&&D(`null is not a valid ${this.name}`),0;e.$$||D(`Cannot pass "${ht(e)}" as a ${this.name}`),e.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&D(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var t=e.$$.ptrType.registeredClass,r=ct(e.$$.ptr,t,this.registeredClass);return r}function Ut(n){return this.fromWireType(A[n>>2])}var Br=()=>{Object.assign(We.prototype,{getPointee(n){return this.rawGetPointee&&(n=this.rawGetPointee(n)),n},destructor(n){this.rawDestructor&&this.rawDestructor(n)},argPackAdvance:re,readValueFromPointer:Ut,deleteObject(n){n!==null&&n.delete()},fromWireType:Wr})};function We(n,e,t,r,a,s,u,l,d,f,m){this.name=n,this.registeredClass=e,this.isReference=t,this.isConst=r,this.isSmartPointer=a,this.pointeeType=s,this.sharingPolicy=u,this.rawGetPointee=l,this.rawConstructor=d,this.rawShare=f,this.rawDestructor=m,!a&&e.baseClass===void 0?r?(this.toWireType=Lr,this.destructorFunction=null):(this.toWireType=Nr,this.destructorFunction=null):this.toWireType=zr}var Ht=(n,e,t)=>{o.hasOwnProperty(n)||Me("Replacing nonexistant public symbol"),o[n].overloadTable!==void 0&&t!==void 0?o[n].overloadTable[t]=e:(o[n]=e,o[n].argCount=t)},Yr=(n,e,t)=>{var r=o["dynCall_"+n];return t&&t.length?r.apply(null,[e].concat(t)):r.call(null,e)},Ie=[],Vt,W=n=>{var e=Ie[n];return e||(n>=Ie.length&&(Ie.length=n+1),Ie[n]=e=Vt.get(n)),e},Gr=(n,e,t)=>{if(n.includes("j"))return Yr(n,e,t);var r=W(e).apply(null,t);return r},qr=(n,e)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),Gr(n,e,t)}},ee=(n,e)=>{n=G(n);function t(){return n.includes("j")?qr(n,e):W(e)}var r=t();return typeof r!="function"&&D(`unknown function pointer with signature ${n}: ${e}`),r},Jr=(n,e)=>{var t=st(e,function(r){this.name=e,this.message=r;var a=new Error(r).stack;a!==void 0&&(this.stack=this.toString()+` +import{q as go,r as Ee,o as za,s as wo,v as va,x as ya,y as bo,f as Se,g as Ye,h as Z,z as $o,A as $a,B as Na,C as _o,u as Co,b as To,d as Po,e as ga,i as fe,t as gt,m as Ve,p as wa,D as So,k as Sa,l as Ea,E as Aa,F as Oa,G as Eo,H as Ao,n as ka,U as Da,I as ja}from"./app-347ef106.js";import{F as Oo}from"./Form-893a9a1a.js";import{S as ko}from"./Spinner-8bfb7257.js";import{_ as Do}from"./QrContentDisplay-1d6d5b3f.js";import{u as jo}from"./bus-2e7bf732.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */var Ba=(i,c,o)=>{if(!c.has(i))throw TypeError("Cannot "+o)},xa=(i,c,o)=>(Ba(i,c,"read from private field"),o?o.call(i):c.get(i)),xo=(i,c,o)=>{if(c.has(i))throw TypeError("Cannot add the same private member more than once");c instanceof WeakSet?c.add(i):c.set(i,o)},Mo=(i,c,o,h)=>(Ba(i,c,"write to private field"),h?h.call(i,o):c.set(i,o),o);const Ma=["aztec","code_128","code_39","code_93","codabar","data_matrix","ean_13","ean_8","itf","pdf417","qr_code","upc_a","upc_e","unknown"];function Ro(i){if(Ya(i))return{width:i.naturalWidth,height:i.naturalHeight};if(Ga(i))return{width:i.width.baseVal.value,height:i.height.baseVal.value};if(qa(i))return{width:i.videoWidth,height:i.videoHeight};if(Xa(i))return{width:i.width,height:i.height};if(Qa(i))return{width:i.displayWidth,height:i.displayHeight};if(Ja(i))return{width:i.width,height:i.height};if(Za(i))return{width:i.width,height:i.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function Ya(i){try{return i instanceof HTMLImageElement}catch{return!1}}function Ga(i){try{return i instanceof SVGImageElement}catch{return!1}}function qa(i){try{return i instanceof HTMLVideoElement}catch{return!1}}function Ja(i){try{return i instanceof HTMLCanvasElement}catch{return!1}}function Xa(i){try{return i instanceof ImageBitmap}catch{return!1}}function Za(i){try{return i instanceof OffscreenCanvas}catch{return!1}}function Qa(i){try{return i instanceof VideoFrame}catch{return!1}}function Ka(i){try{return i instanceof Blob}catch{return!1}}function Fo(i){try{return i instanceof ImageData}catch{return!1}}function Wo(i,c){try{const o=new OffscreenCanvas(i,c);if(o.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return o;throw void 0}catch{const h=document.createElement("canvas");return h.width=i,h.height=c,h}}async function eo(i){if(Ya(i)&&!await Vo(i))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(Ga(i)&&!await Lo(i))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(Qa(i)&&zo(i))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(qa(i)&&(i.readyState===0||i.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(Xa(i)&&Bo(i))throw new DOMException("The image source is detached.","InvalidStateError");const{width:c,height:o}=Ro(i);if(c===0||o===0)return null;const h=Wo(c,o).getContext("2d");h.drawImage(i,0,0);try{return h.getImageData(0,0,c,o)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Io(i){let c;try{if(createImageBitmap)c=await createImageBitmap(i);else if(Image){c=new Image;let o="";try{o=URL.createObjectURL(i),c.src=o,await c.decode()}finally{URL.revokeObjectURL(o)}}else return i}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await eo(c)}function Uo(i){const{width:c,height:o}=i;if(c===0||o===0)return null;const h=i.getContext("2d");try{return h.getImageData(0,0,c,o)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Ho(i){if(Ka(i))return await Io(i);if(Fo(i)){if(No(i))throw new DOMException("The image data has been detached.","InvalidStateError");return i}return Ja(i)||Za(i)?Uo(i):await eo(i)}async function Vo(i){try{return await i.decode(),!0}catch{return!1}}async function Lo(i){var c;try{return await((c=i.decode)==null?void 0:c.call(i)),!0}catch{return!1}}function zo(i){return i.format===null}function No(i){return i.data.buffer.byteLength===0}function Bo(i){return i.width===0&&i.height===0}function Ra(i,c){return i instanceof DOMException?new DOMException(`${c}: ${i.message}`,i.name):i instanceof Error?new i.constructor(`${c}: ${i.message}`):new Error(`${c}: ${i}`)}const Fa=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","UPC-A","UPC-E"];function Yo(i){return i.join("|")}function Go(i){const c=Wa(i);let o=0,h=Fa.length-1;for(;o<=h;){const v=Math.floor((o+h)/2),b=Fa[v],$=Wa(b);if($===c)return b;${const o=i.match(/_(.+?)\.wasm$/);return o?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.0.0-rc.3/dist/${o[1]}/${i}`:c+i}};let Ia=new WeakMap;function Ta(i,c){var o;const h=Ia.get(i);if(h!=null&&h.modulePromise&&(c===void 0||Object.is(c,h.moduleOverrides)))return h.modulePromise;const v=(o=c??(h==null?void 0:h.moduleOverrides))!=null?o:ei,b=i({...v});return Ia.set(i,{moduleOverrides:v,modulePromise:b}),b}async function ti(i,c,o=lr){const h={...lr,...o},v=await Ta(i),{size:b}=c,$=new Uint8Array(await c.arrayBuffer()),E=v._malloc(b);v.HEAPU8.set($,E);const y=v.readBarcodesFromImage(E,b,to(v,h));v._free(E);const _=[];for(let O=0;O{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(c={}){var o=c,h,v;o.ready=new Promise((n,e)=>{h=n,v=e});var b=Object.assign({},o),$="./this.program",E=typeof window=="object",y=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var _="";function O(n){return o.locateFile?o.locateFile(n,_):_+n}var P;(E||y)&&(y?_=self.location.href:typeof document<"u"&&document.currentScript&&(_=document.currentScript.src),i&&(_=i),_.indexOf("blob:")!==0?_=_.substr(0,_.replace(/[?#].*/,"").lastIndexOf("/")+1):_="",y&&(P=n=>{var e=new XMLHttpRequest;return e.open("GET",n,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),o.print||console.log.bind(console);var B=o.printErr||console.error.bind(console);Object.assign(o,b),b=null,o.arguments&&o.arguments,o.thisProgram&&($=o.thisProgram),o.quit&&o.quit;var q;o.wasmBinary&&(q=o.wasmBinary),typeof WebAssembly!="object"&&pe("no native wasm support detected");var Y,X=!1;function oe(n,e){n||pe(e)}var x,k,z,J,R,A,we,Oe;function ze(){var n=Y.buffer;o.HEAP8=x=new Int8Array(n),o.HEAP16=z=new Int16Array(n),o.HEAPU8=k=new Uint8Array(n),o.HEAPU16=J=new Uint16Array(n),o.HEAP32=R=new Int32Array(n),o.HEAPU32=A=new Uint32Array(n),o.HEAPF32=we=new Float32Array(n),o.HEAPF64=Oe=new Float64Array(n)}var Ne=[],Be=[],Xe=[];function Ct(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)Ze(o.preRun.shift());et(Ne)}function Tt(){et(Be)}function Pt(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)St(o.postRun.shift());et(Xe)}function Ze(n){Ne.unshift(n)}function wt(n){Be.unshift(n)}function St(n){Xe.unshift(n)}var se=0,ie=null;function ye(n){se++,o.monitorRunDependencies&&o.monitorRunDependencies(se)}function Et(n){if(se--,o.monitorRunDependencies&&o.monitorRunDependencies(se),se==0&&ie){var e=ie;ie=null,e()}}function pe(n){o.onAbort&&o.onAbort(n),n="Aborted("+n+")",B(n),X=!0,n+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(n);throw v(e),e}var At="data:application/octet-stream;base64,",Qe=n=>n.startsWith(At),ce;ce="zxing_reader.wasm",Qe(ce)||(ce=O(ce));function Ke(n){if(n==ce&&q)return new Uint8Array(q);if(P)return P(n);throw"both async and sync fetching of the wasm failed"}function fr(n){return!q&&(E||y)&&typeof fetch=="function"?fetch(n,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+n+"'";return e.arrayBuffer()}).catch(()=>Ke(n)):Promise.resolve().then(()=>Ke(n))}function Ot(n,e,t){return fr(n).then(r=>WebAssembly.instantiate(r,e)).then(r=>r).then(t,r=>{B(`failed to asynchronously prepare wasm: ${r}`),pe(r)})}function hr(n,e,t,r){return!n&&typeof WebAssembly.instantiateStreaming=="function"&&!Qe(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var s=WebAssembly.instantiateStreaming(a,t);return s.then(r,function(u){return B(`wasm streaming compile failed: ${u}`),B("falling back to ArrayBuffer instantiation"),Ot(e,t,r)})}):Ot(e,t,r)}function pr(){var n={a:Jn};function e(r,a){return F=r.exports,Y=F.fa,ze(),Vt=F.ja,wt(F.ga),Et(),F}ye();function t(r){e(r.instance)}if(o.instantiateWasm)try{return o.instantiateWasm(n,e)}catch(r){B(`Module.instantiateWasm callback failed with error: ${r}`),v(r)}return hr(q,ce,n,t).catch(v),{}}var et=n=>{for(;n.length>0;)n.shift()(o)};o.noExitRuntime;var ke=[],De=0,mr=n=>{var e=new tt(n);return e.get_caught()||(e.set_caught(!0),De--),e.set_rethrown(!1),ke.push(e),nr(e.excPtr),e.get_exception_ptr()},ne=0,vr=()=>{M(0,0);var n=ke.pop();rr(n.excPtr),ne=0};function tt(n){this.excPtr=n,this.ptr=n-24,this.set_type=function(e){A[this.ptr+4>>2]=e},this.get_type=function(){return A[this.ptr+4>>2]},this.set_destructor=function(e){A[this.ptr+8>>2]=e},this.get_destructor=function(){return A[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,x[this.ptr+12>>0]=e},this.get_caught=function(){return x[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,x[this.ptr+13>>0]=e},this.get_rethrown=function(){return x[this.ptr+13>>0]!=0},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){A[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return A[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=or(this.get_type());if(e)return A[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var yr=n=>{throw ne||(ne=n),ne},rt=n=>{var e=ne;if(!e)return Pe(0),0;var t=new tt(e);t.set_adjusted_ptr(e);var r=t.get_type();if(!r)return Pe(0),e;for(var a in n){var s=n[a];if(s===0||s===r)break;var u=t.ptr+16;if(ar(s,r,u))return Pe(s),e}return Pe(r),e},gr=()=>rt([]),wr=n=>rt([n]),br=(n,e)=>rt([n,e]),$r=()=>{var n=ke.pop();n||pe("no exception to throw");var e=n.excPtr;throw n.get_rethrown()||(ke.push(n),n.set_rethrown(!0),n.set_caught(!1),De++),ne=e,ne},_r=(n,e,t)=>{var r=new tt(n);throw r.init(e,t),ne=n,De++,ne},Cr=()=>De,je={},kt=n=>{for(;n.length;){var e=n.pop(),t=n.pop();t(e)}};function nt(n){return this.fromWireType(R[n>>2])}var me={},le={},xe={},Dt,Me=n=>{throw new Dt(n)},de=(n,e,t)=>{n.forEach(function(l){xe[l]=e});function r(l){var d=t(l);d.length!==n.length&&Me("Mismatched type converter count");for(var f=0;f{le.hasOwnProperty(l)?a[d]=le[l]:(s.push(l),me.hasOwnProperty(l)||(me[l]=[]),me[l].push(()=>{a[d]=le[l],++u,u===s.length&&r(a)}))}),s.length===0&&r(a)},Tr=n=>{var e=je[n];delete je[n];var t=e.rawConstructor,r=e.rawDestructor,a=e.fields,s=a.map(u=>u.getterReturnType).concat(a.map(u=>u.setterArgumentType));de([n],s,u=>{var l={};return a.forEach((d,f)=>{var m=d.fieldName,w=u[f],C=d.getter,S=d.getterContext,j=u[f+a.length],H=d.setter,V=d.setterContext;l[m]={read:L=>w.fromWireType(C(S,L)),write:(L,g)=>{var p=[];H(V,L,j.toWireType(p,g)),kt(p)}}}),[{name:e.name,fromWireType:d=>{var f={};for(var m in l)f[m]=l[m].read(d);return r(d),f},toWireType:(d,f)=>{for(var m in l)if(!(m in f))throw new TypeError(`Missing field: "${m}"`);var w=t();for(m in l)l[m].write(w,f[m]);return d!==null&&d.push(r,w),w},argPackAdvance:re,readValueFromPointer:nt,destructorFunction:r}]})},Pr=(n,e,t,r,a)=>{},Sr=()=>{for(var n=new Array(256),e=0;e<256;++e)n[e]=String.fromCharCode(e);jt=n},jt,G=n=>{for(var e="",t=n;k[t];)e+=jt[k[t++]];return e},ve,D=n=>{throw new ve(n)};function Er(n,e,t={}){var r=e.name;if(n||D(`type "${r}" must have a positive integer typeid pointer`),le.hasOwnProperty(n)){if(t.ignoreDuplicateRegistrations)return;D(`Cannot register type '${r}' twice`)}if(le[n]=e,delete xe[n],me.hasOwnProperty(n)){var a=me[n];delete me[n],a.forEach(s=>s())}}function te(n,e,t={}){if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Er(n,e,t)}var re=8,Ar=(n,e,t,r)=>{e=G(e),te(n,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,s){return s?t:r},argPackAdvance:re,readValueFromPointer:function(a){return this.fromWireType(k[a])},destructorFunction:null})},Or=n=>({count:n.count,deleteScheduled:n.deleteScheduled,preservePointerOnDelete:n.preservePointerOnDelete,ptr:n.ptr,ptrType:n.ptrType,smartPtr:n.smartPtr,smartPtrType:n.smartPtrType}),at=n=>{function e(t){return t.$$.ptrType.registeredClass.name}D(e(n)+" instance already deleted")},ot=!1,xt=n=>{},kr=n=>{n.smartPtr?n.smartPtrType.rawDestructor(n.smartPtr):n.ptrType.registeredClass.rawDestructor(n.ptr)},Mt=n=>{n.count.value-=1;var e=n.count.value===0;e&&kr(n)},Rt=(n,e,t)=>{if(e===t)return n;if(t.baseClass===void 0)return null;var r=Rt(n,e,t.baseClass);return r===null?null:t.downcast(r)},Ft={},Dr=()=>Object.keys(_e).length,jr=()=>{var n=[];for(var e in _e)_e.hasOwnProperty(e)&&n.push(_e[e]);return n},be=[],it=()=>{for(;be.length;){var n=be.pop();n.$$.deleteScheduled=!1,n.delete()}},$e,xr=n=>{$e=n,be.length&&$e&&$e(it)},Mr=()=>{o.getInheritedInstanceCount=Dr,o.getLiveInheritedInstances=jr,o.flushPendingDeletes=it,o.setDelayFunction=xr},_e={},Rr=(n,e)=>{for(e===void 0&&D("ptr should not be undefined");n.baseClass;)e=n.upcast(e),n=n.baseClass;return e},Fr=(n,e)=>(e=Rr(n,e),_e[e]),Re=(n,e)=>{(!e.ptrType||!e.ptr)&&Me("makeClassHandle requires ptr and ptrType");var t=!!e.smartPtrType,r=!!e.smartPtr;return t!==r&&Me("Both smartPtrType and smartPtr must be specified"),e.count={value:1},Ce(Object.create(n,{$$:{value:e}}))};function Wr(n){var e=this.getPointee(n);if(!e)return this.destructor(n),null;var t=Fr(this.registeredClass,e);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=e,t.$$.smartPtr=n,t.clone();var r=t.clone();return this.destructor(n),r}function a(){return this.isSmartPointer?Re(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:n}):Re(this.registeredClass.instancePrototype,{ptrType:this,ptr:n})}var s=this.registeredClass.getActualType(e),u=Ft[s];if(!u)return a.call(this);var l;this.isConst?l=u.constPointerType:l=u.pointerType;var d=Rt(e,this.registeredClass,l.registeredClass);return d===null?a.call(this):this.isSmartPointer?Re(l.registeredClass.instancePrototype,{ptrType:l,ptr:d,smartPtrType:this,smartPtr:n}):Re(l.registeredClass.instancePrototype,{ptrType:l,ptr:d})}var Ce=n=>typeof FinalizationRegistry>"u"?(Ce=e=>e,n):(ot=new FinalizationRegistry(e=>{Mt(e.$$)}),Ce=e=>{var t=e.$$,r=!!t.smartPtr;if(r){var a={$$:t};ot.register(e,a,e)}return e},xt=e=>ot.unregister(e),Ce(n)),Ir=()=>{Object.assign(Fe.prototype,{isAliasOf(n){if(!(this instanceof Fe)||!(n instanceof Fe))return!1;var e=this.$$.ptrType.registeredClass,t=this.$$.ptr;n.$$=n.$$;for(var r=n.$$.ptrType.registeredClass,a=n.$$.ptr;e.baseClass;)t=e.upcast(t),e=e.baseClass;for(;r.baseClass;)a=r.upcast(a),r=r.baseClass;return e===r&&t===a},clone(){if(this.$$.ptr||at(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var n=Ce(Object.create(Object.getPrototypeOf(this),{$$:{value:Or(this.$$)}}));return n.$$.count.value+=1,n.$$.deleteScheduled=!1,n},delete(){this.$$.ptr||at(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&D("Object already scheduled for deletion"),xt(this),Mt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||at(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&D("Object already scheduled for deletion"),be.push(this),be.length===1&&$e&&$e(it),this.$$.deleteScheduled=!0,this}})};function Fe(){}var Ur=48,Hr=57,Wt=n=>{if(n===void 0)return"_unknown";n=n.replace(/[^a-zA-Z0-9_]/g,"$");var e=n.charCodeAt(0);return e>=Ur&&e<=Hr?`_${n}`:n};function st(n,e){return n=Wt(n),{[n]:function(){return e.apply(this,arguments)}}[n]}var It=(n,e,t)=>{if(n[e].overloadTable===void 0){var r=n[e];n[e]=function(){return n[e].overloadTable.hasOwnProperty(arguments.length)||D(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${n[e].overloadTable})!`),n[e].overloadTable[arguments.length].apply(this,arguments)},n[e].overloadTable=[],n[e].overloadTable[r.argCount]=r}},ut=(n,e,t)=>{o.hasOwnProperty(n)?((t===void 0||o[n].overloadTable!==void 0&&o[n].overloadTable[t]!==void 0)&&D(`Cannot register public name '${n}' twice`),It(o,n,n),o.hasOwnProperty(t)&&D(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),o[n].overloadTable[t]=e):(o[n]=e,t!==void 0&&(o[n].numArguments=t))};function Vr(n,e,t,r,a,s,u,l){this.name=n,this.constructor=e,this.instancePrototype=t,this.rawDestructor=r,this.baseClass=a,this.getActualType=s,this.upcast=u,this.downcast=l,this.pureVirtualFunctions=[]}var ct=(n,e,t)=>{for(;e!==t;)e.upcast||D(`Expected null or instance of ${t.name}, got an instance of ${e.name}`),n=e.upcast(n),e=e.baseClass;return n};function Lr(n,e){if(e===null)return this.isReference&&D(`null is not a valid ${this.name}`),0;e.$$||D(`Cannot pass "${ht(e)}" as a ${this.name}`),e.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=e.$$.ptrType.registeredClass,r=ct(e.$$.ptr,t,this.registeredClass);return r}function zr(n,e){var t;if(e===null)return this.isReference&&D(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),n!==null&&n.push(this.rawDestructor,t),t):0;e.$$||D(`Cannot pass "${ht(e)}" as a ${this.name}`),e.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&D(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var r=e.$$.ptrType.registeredClass;if(t=ct(e.$$.ptr,r,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&D("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?t=e.$$.smartPtr:D(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)t=e.$$.smartPtr;else{var a=e.clone();t=this.rawShare(t,ue.toHandle(()=>a.delete())),n!==null&&n.push(this.rawDestructor,t)}break;default:D("Unsupporting sharing policy")}return t}function Nr(n,e){if(e===null)return this.isReference&&D(`null is not a valid ${this.name}`),0;e.$$||D(`Cannot pass "${ht(e)}" as a ${this.name}`),e.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&D(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var t=e.$$.ptrType.registeredClass,r=ct(e.$$.ptr,t,this.registeredClass);return r}function Ut(n){return this.fromWireType(A[n>>2])}var Br=()=>{Object.assign(We.prototype,{getPointee(n){return this.rawGetPointee&&(n=this.rawGetPointee(n)),n},destructor(n){this.rawDestructor&&this.rawDestructor(n)},argPackAdvance:re,readValueFromPointer:Ut,deleteObject(n){n!==null&&n.delete()},fromWireType:Wr})};function We(n,e,t,r,a,s,u,l,d,f,m){this.name=n,this.registeredClass=e,this.isReference=t,this.isConst=r,this.isSmartPointer=a,this.pointeeType=s,this.sharingPolicy=u,this.rawGetPointee=l,this.rawConstructor=d,this.rawShare=f,this.rawDestructor=m,!a&&e.baseClass===void 0?r?(this.toWireType=Lr,this.destructorFunction=null):(this.toWireType=Nr,this.destructorFunction=null):this.toWireType=zr}var Ht=(n,e,t)=>{o.hasOwnProperty(n)||Me("Replacing nonexistant public symbol"),o[n].overloadTable!==void 0&&t!==void 0?o[n].overloadTable[t]=e:(o[n]=e,o[n].argCount=t)},Yr=(n,e,t)=>{var r=o["dynCall_"+n];return t&&t.length?r.apply(null,[e].concat(t)):r.call(null,e)},Ie=[],Vt,W=n=>{var e=Ie[n];return e||(n>=Ie.length&&(Ie.length=n+1),Ie[n]=e=Vt.get(n)),e},Gr=(n,e,t)=>{if(n.includes("j"))return Yr(n,e,t);var r=W(e).apply(null,t);return r},qr=(n,e)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),Gr(n,e,t)}},ee=(n,e)=>{n=G(n);function t(){return n.includes("j")?qr(n,e):W(e)}var r=t();return typeof r!="function"&&D(`unknown function pointer with signature ${n}: ${e}`),r},Jr=(n,e)=>{var t=st(e,function(r){this.name=e,this.message=r;var a=new Error(r).stack;a!==void 0&&(this.stack=this.toString()+` `+a.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},Lt,zt=n=>{var e=tr(n),t=G(e);return ae(e),t},Ue=(n,e)=>{var t=[],r={};function a(s){if(!r[s]&&!le[s]){if(xe[s]){xe[s].forEach(a);return}t.push(s),r[s]=!0}}throw e.forEach(a),new Lt(`${n}: `+t.map(zt).join([", "]))},Xr=(n,e,t,r,a,s,u,l,d,f,m,w,C)=>{m=G(m),s=ee(a,s),l&&(l=ee(u,l)),f&&(f=ee(d,f)),C=ee(w,C);var S=Wt(m);ut(S,function(){Ue(`Cannot construct ${m} due to unbound types`,[r])}),de([n,e,t],r?[r]:[],function(j){j=j[0];var H,V;r?(H=j.registeredClass,V=H.instancePrototype):V=Fe.prototype;var L=st(S,function(){if(Object.getPrototypeOf(this)!==g)throw new ve("Use 'new' to construct "+m);if(p.constructor_body===void 0)throw new ve(m+" has no accessible constructor");var ge=p.constructor_body[arguments.length];if(ge===void 0)throw new ve(`Tried to invoke ctor of ${m} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(p.constructor_body).toString()}) parameters instead!`);return ge.apply(this,arguments)}),g=Object.create(V,{constructor:{value:L}});L.prototype=g;var p=new Vr(m,L,g,C,H,s,l,f);p.baseClass&&(p.baseClass.__derivedClasses===void 0&&(p.baseClass.__derivedClasses=[]),p.baseClass.__derivedClasses.push(p));var T=new We(m,p,!0,!1,!1),N=new We(m+"*",p,!1,!1,!1),Q=new We(m+" const*",p,!1,!0,!1);return Ft[n]={pointerType:N,constPointerType:Q},Ht(S,L),[T,N,Q]})},lt=(n,e)=>{for(var t=[],r=0;r>2]);return t};function dt(n,e,t,r,a,s){var u=e.length;u<2&&D("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var l=e[1]!==null&&t!==null,d=!1,f=1;f{var u=lt(e,t);a=ee(r,a),de([],[n],function(l){l=l[0];var d=`constructor ${l.name}`;if(l.registeredClass.constructor_body===void 0&&(l.registeredClass.constructor_body=[]),l.registeredClass.constructor_body[e-1]!==void 0)throw new ve(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${l.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return l.registeredClass.constructor_body[e-1]=()=>{Ue(`Cannot construct ${l.name} due to unbound types`,u)},de([],u,f=>(f.splice(1,0,null),l.registeredClass.constructor_body[e-1]=dt(d,f,null,a,s),[])),[]})},Nt=n=>{n=n.trim();const e=n.indexOf("(");return e!==-1?(oe(n[n.length-1]==")","Parentheses for argument names should match."),n.substr(0,e)):n},Qr=(n,e,t,r,a,s,u,l,d)=>{var f=lt(t,r);e=G(e),e=Nt(e),s=ee(a,s),de([],[n],function(m){m=m[0];var w=`${m.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]),l&&m.registeredClass.pureVirtualFunctions.push(e);function C(){Ue(`Cannot call ${w} due to unbound types`,f)}var S=m.registeredClass.instancePrototype,j=S[e];return j===void 0||j.overloadTable===void 0&&j.className!==m.name&&j.argCount===t-2?(C.argCount=t-2,C.className=m.name,S[e]=C):(It(S,e,w),S[e].overloadTable[t-2]=C),de([],f,function(H){var V=dt(w,H,m,s,u);return S[e].overloadTable===void 0?(V.argCount=t-2,S[e]=V):S[e].overloadTable[t-2]=V,[]}),[]})};function Kr(){Object.assign(Bt.prototype,{get(n){return this.allocated[n]},has(n){return this.allocated[n]!==void 0},allocate(n){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=n,e},free(n){this.allocated[n]=void 0,this.freelist.push(n)}})}function Bt(){this.allocated=[void 0],this.freelist=[]}var K=new Bt,Yt=n=>{n>=K.reserved&&--K.get(n).refcount===0&&K.free(n)},en=()=>{for(var n=0,e=K.reserved;e{K.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),K.reserved=K.allocated.length,o.count_emval_handles=en},ue={toValue:n=>(n||D("Cannot use deleted val. handle = "+n),K.get(n).value),toHandle:n=>{switch(n){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return K.allocate({refcount:1,value:n})}}},rn=(n,e)=>{e=G(e),te(n,{name:e,fromWireType:t=>{var r=ue.toValue(t);return Yt(t),r},toWireType:(t,r)=>ue.toHandle(r),argPackAdvance:re,readValueFromPointer:nt,destructorFunction:null})},nn=(n,e,t)=>{switch(e){case 1:return t?function(r){return this.fromWireType(x[r>>0])}:function(r){return this.fromWireType(k[r>>0])};case 2:return t?function(r){return this.fromWireType(z[r>>1])}:function(r){return this.fromWireType(J[r>>1])};case 4:return t?function(r){return this.fromWireType(R[r>>2])}:function(r){return this.fromWireType(A[r>>2])};default:throw new TypeError(`invalid integer width (${e}): ${n}`)}},an=(n,e,t,r)=>{e=G(e);function a(){}a.values={},te(n,{name:e,constructor:a,fromWireType:function(s){return this.constructor.values[s]},toWireType:(s,u)=>u.value,argPackAdvance:re,readValueFromPointer:nn(e,t,r),destructorFunction:null}),ut(e,a)},ft=(n,e)=>{var t=le[n];return t===void 0&&D(e+" has unknown type "+zt(n)),t},on=(n,e,t)=>{var r=ft(n,"enum");e=G(e);var a=r.constructor,s=Object.create(r.constructor.prototype,{value:{value:t},constructor:{value:st(`${r.name}_${e}`,function(){})}});a.values[t]=s,a[e]=s},ht=n=>{if(n===null)return"null";var e=typeof n;return e==="object"||e==="array"||e==="function"?n.toString():""+n},sn=(n,e)=>{switch(e){case 4:return function(t){return this.fromWireType(we[t>>2])};case 8:return function(t){return this.fromWireType(Oe[t>>3])};default:throw new TypeError(`invalid float width (${e}): ${n}`)}},un=(n,e,t)=>{e=G(e),te(n,{name:e,fromWireType:r=>r,toWireType:(r,a)=>a,argPackAdvance:re,readValueFromPointer:sn(e,t),destructorFunction:null})},cn=(n,e,t,r,a,s,u)=>{var l=lt(e,t);n=G(n),n=Nt(n),a=ee(r,a),ut(n,function(){Ue(`Cannot call ${n} due to unbound types`,l)},e-1),de([],l,function(d){var f=[d[0],null].concat(d.slice(1));return Ht(n,dt(n,f,null,a,s),e-1),[]})},ln=(n,e,t)=>{switch(e){case 1:return t?r=>x[r>>0]:r=>k[r>>0];case 2:return t?r=>z[r>>1]:r=>J[r>>1];case 4:return t?r=>R[r>>2]:r=>A[r>>2];default:throw new TypeError(`invalid integer width (${e}): ${n}`)}},dn=(n,e,t,r,a)=>{e=G(e);var s=m=>m;if(r===0){var u=32-8*t;s=m=>m<>>u}var l=e.includes("unsigned"),d=(m,w)=>{},f;l?f=function(m,w){return d(w,this.name),w>>>0}:f=function(m,w){return d(w,this.name),w},te(n,{name:e,fromWireType:s,toWireType:f,argPackAdvance:re,readValueFromPointer:ln(e,t,r!==0),destructorFunction:null})},fn=(n,e,t)=>{var r=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=r[e];function s(u){var l=A[u>>2],d=A[u+4>>2];return new a(x.buffer,d,l)}t=G(t),te(n,{name:t,fromWireType:s,argPackAdvance:re,readValueFromPointer:s},{ignoreDuplicateRegistrations:!0})},Gt=(n,e,t,r)=>{if(!(r>0))return 0;for(var a=t,s=t+r-1,u=0;u=55296&&l<=57343){var d=n.charCodeAt(++u);l=65536+((l&1023)<<10)|d&1023}if(l<=127){if(t>=s)break;e[t++]=l}else if(l<=2047){if(t+1>=s)break;e[t++]=192|l>>6,e[t++]=128|l&63}else if(l<=65535){if(t+2>=s)break;e[t++]=224|l>>12,e[t++]=128|l>>6&63,e[t++]=128|l&63}else{if(t+3>=s)break;e[t++]=240|l>>18,e[t++]=128|l>>12&63,e[t++]=128|l>>6&63,e[t++]=128|l&63}}return e[t]=0,t-a},hn=(n,e,t)=>Gt(n,k,e,t),qt=n=>{for(var e=0,t=0;t=55296&&r<=57343?(e+=4,++t):e+=3}return e},Jt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,pn=(n,e,t)=>{for(var r=e+t,a=e;n[a]&&!(a>=r);)++a;if(a-e>16&&n.buffer&&Jt)return Jt.decode(n.subarray(e,a));for(var s="";e>10,56320|f&1023)}}return s},pt=(n,e)=>n?pn(k,n,e):"",mn=(n,e)=>{e=G(e);var t=e==="std::string";te(n,{name:e,fromWireType(r){var a=A[r>>2],s=r+4,u;if(t)for(var l=s,d=0;d<=a;++d){var f=s+d;if(d==a||k[f]==0){var m=f-l,w=pt(l,m);u===void 0?u=w:(u+=String.fromCharCode(0),u+=w),l=f+1}}else{for(var C=new Array(a),d=0;d>2]=s,t&&u)hn(a,d,s+1);else if(u)for(var f=0;f255&&(ae(d),D("String has UTF-16 code units that do not fit in 8 bits")),k[d+f]=m}else for(var f=0;f{for(var t=n,r=t>>1,a=r+e/2;!(r>=a)&&J[r];)++r;if(t=r<<1,t-n>32&&Xt)return Xt.decode(k.subarray(n,t));for(var s="",u=0;!(u>=e/2);++u){var l=z[n+u*2>>1];if(l==0)break;s+=String.fromCharCode(l)}return s},yn=(n,e,t)=>{if(t===void 0&&(t=2147483647),t<2)return 0;t-=2;for(var r=e,a=t>1]=u,e+=2}return z[e>>1]=0,e-r},gn=n=>n.length*2,wn=(n,e)=>{for(var t=0,r="";!(t>=e/4);){var a=R[n+t*4>>2];if(a==0)break;if(++t,a>=65536){var s=a-65536;r+=String.fromCharCode(55296|s>>10,56320|s&1023)}else r+=String.fromCharCode(a)}return r},bn=(n,e,t)=>{if(t===void 0&&(t=2147483647),t<4)return 0;for(var r=e,a=r+t-4,s=0;s=55296&&u<=57343){var l=n.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(R[e>>2]=u,e+=4,e+4>a)break}return R[e>>2]=0,e-r},$n=n=>{for(var e=0,t=0;t=55296&&r<=57343&&++t,e+=4}return e},_n=(n,e,t)=>{t=G(t);var r,a,s,u,l;e===2?(r=vn,a=yn,u=gn,s=()=>J,l=1):e===4&&(r=wn,a=bn,u=$n,s=()=>A,l=2),te(n,{name:t,fromWireType:d=>{for(var f=A[d>>2],m=s(),w,C=d+4,S=0;S<=f;++S){var j=d+4+S*e;if(S==f||m[j>>l]==0){var H=j-C,V=r(C,H);w===void 0?w=V:(w+=String.fromCharCode(0),w+=V),C=j+e}}return ae(d),w},toWireType:(d,f)=>{typeof f!="string"&&D(`Cannot pass non-string to C++ string type ${t}`);var m=u(f),w=vt(4+m+e);return A[w>>2]=m>>l,a(f,w+4,m+e),d!==null&&d.push(ae,w),w},argPackAdvance:re,readValueFromPointer:nt,destructorFunction(d){ae(d)}})},Cn=(n,e,t,r,a,s)=>{je[n]={name:G(e),rawConstructor:ee(t,r),rawDestructor:ee(a,s),fields:[]}},Tn=(n,e,t,r,a,s,u,l,d,f)=>{je[n].fields.push({fieldName:G(e),getterReturnType:t,getter:ee(r,a),getterContext:s,setterArgumentType:u,setter:ee(l,d),setterContext:f})},Pn=(n,e)=>{e=G(e),te(n,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,r)=>{}})},Sn={},En=n=>{var e=Sn[n];return e===void 0?G(n):e},Zt=()=>{if(typeof globalThis=="object")return globalThis;function n(e){e.$$$embind_global$$$=e;var t=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return t||delete e.$$$embind_global$$$,t}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&n(global)?$$$embind_global$$$=global:typeof self=="object"&&n(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},An=n=>n===0?ue.toHandle(Zt()):(n=En(n),ue.toHandle(Zt()[n])),On=n=>{n>4&&(K.get(n).refcount+=1)},kn=n=>{var e=new Array(n+1);return function(t,r,a){e[0]=t;for(var s=0;s>2],"parameter "+s);e[s+1]=u.readValueFromPointer(a),a+=u.argPackAdvance}var l=new(t.bind.apply(t,e));return ue.toHandle(l)}},Qt={},Dn=(n,e,t,r)=>{n=ue.toValue(n);var a=Qt[e];return a||(a=kn(e),Qt[e]=a),a(n,t,r)},jn=(n,e)=>{n=ft(n,"_emval_take_value");var t=n.readValueFromPointer(e);return ue.toHandle(t)},xn=()=>{pe("")},Mn=(n,e,t)=>k.copyWithin(n,e,e+t),Rn=()=>2147483648,Fn=n=>{var e=Y.buffer,t=(n-e.byteLength+65535)/65536;try{return Y.grow(t),ze(),1}catch{}},Wn=n=>{var e=k.length;n>>>=0;var t=Rn();if(n>t)return!1;for(var r=(d,f)=>d+(f-d%f)%f,a=1;a<=4;a*=2){var s=e*(1+.2/a);s=Math.min(s,n+100663296);var u=Math.min(t,r(Math.max(n,s),65536)),l=Fn(u);if(l)return!0}return!1},mt={},In=()=>$||"./this.program",Te=()=>{if(!Te.strings){var n=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:n,_:In()};for(var t in mt)mt[t]===void 0?delete e[t]:e[t]=mt[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Te.strings=r}return Te.strings},Un=(n,e)=>{for(var t=0;t>0]=n.charCodeAt(t);x[e>>0]=0},Hn=(n,e)=>{var t=0;return Te().forEach((r,a)=>{var s=e+t;A[n+a*4>>2]=s,Un(r,s),t+=r.length+1}),0},Vn=(n,e)=>{var t=Te();A[n>>2]=t.length;var r=0;return t.forEach(a=>r+=a.length+1),A[e>>2]=r,0},Ln=n=>n,He=n=>n%4===0&&(n%100!==0||n%400===0),zn=(n,e)=>{for(var t=0,r=0;r<=e;t+=n[r++]);return t},Kt=[31,29,31,30,31,30,31,31,30,31,30,31],er=[31,28,31,30,31,30,31,31,30,31,30,31],Nn=(n,e)=>{for(var t=new Date(n.getTime());e>0;){var r=He(t.getFullYear()),a=t.getMonth(),s=(r?Kt:er)[a];if(e>s-t.getDate())e-=s-t.getDate()+1,t.setDate(1),a<11?t.setMonth(a+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else return t.setDate(t.getDate()+e),t}return t};function Bn(n,e,t){var r=t>0?t:qt(n)+1,a=new Array(r),s=Gt(n,a,0,a.length);return e&&(a.length=s),a}var Yn=(n,e)=>{x.set(n,e)},Gn=(n,e,t,r)=>{var a=A[r+40>>2],s={tm_sec:R[r>>2],tm_min:R[r+4>>2],tm_hour:R[r+8>>2],tm_mday:R[r+12>>2],tm_mon:R[r+16>>2],tm_year:R[r+20>>2],tm_wday:R[r+24>>2],tm_yday:R[r+28>>2],tm_isdst:R[r+32>>2],tm_gmtoff:R[r+36>>2],tm_zone:a?pt(a):""},u=pt(t),l={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var d in l)u=u.replace(new RegExp(d,"g"),l[d]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],m=["January","February","March","April","May","June","July","August","September","October","November","December"];function w(g,p,T){for(var N=typeof g=="number"?g.toString():g||"";N.length0?1:0}var N;return(N=T(g.getFullYear()-p.getFullYear()))===0&&(N=T(g.getMonth()-p.getMonth()))===0&&(N=T(g.getDate()-p.getDate())),N}function j(g){switch(g.getDay()){case 0:return new Date(g.getFullYear()-1,11,29);case 1:return g;case 2:return new Date(g.getFullYear(),0,3);case 3:return new Date(g.getFullYear(),0,2);case 4:return new Date(g.getFullYear(),0,1);case 5:return new Date(g.getFullYear()-1,11,31);case 6:return new Date(g.getFullYear()-1,11,30)}}function H(g){var p=Nn(new Date(g.tm_year+1900,0,1),g.tm_yday),T=new Date(p.getFullYear(),0,4),N=new Date(p.getFullYear()+1,0,4),Q=j(T),ge=j(N);return S(Q,p)<=0?S(ge,p)<=0?p.getFullYear()+1:p.getFullYear():p.getFullYear()-1}var V={"%a":g=>f[g.tm_wday].substring(0,3),"%A":g=>f[g.tm_wday],"%b":g=>m[g.tm_mon].substring(0,3),"%B":g=>m[g.tm_mon],"%C":g=>{var p=g.tm_year+1900;return C(p/100|0,2)},"%d":g=>C(g.tm_mday,2),"%e":g=>w(g.tm_mday,2," "),"%g":g=>H(g).toString().substring(2),"%G":g=>H(g),"%H":g=>C(g.tm_hour,2),"%I":g=>{var p=g.tm_hour;return p==0?p=12:p>12&&(p-=12),C(p,2)},"%j":g=>C(g.tm_mday+zn(He(g.tm_year+1900)?Kt:er,g.tm_mon-1),3),"%m":g=>C(g.tm_mon+1,2),"%M":g=>C(g.tm_min,2),"%n":()=>` `,"%p":g=>g.tm_hour>=0&&g.tm_hour<12?"AM":"PM","%S":g=>C(g.tm_sec,2),"%t":()=>" ","%u":g=>g.tm_wday||7,"%U":g=>{var p=g.tm_yday+7-g.tm_wday;return C(Math.floor(p/7),2)},"%V":g=>{var p=Math.floor((g.tm_yday+7-(g.tm_wday+6)%7)/7);if((g.tm_wday+371-g.tm_yday-2)%7<=2&&p++,p){if(p==53){var T=(g.tm_wday+371-g.tm_yday)%7;T!=4&&(T!=3||!He(g.tm_year))&&(p=1)}}else{p=52;var N=(g.tm_wday+7-g.tm_yday-1)%7;(N==4||N==5&&He(g.tm_year%400-1))&&p++}return C(p,2)},"%w":g=>g.tm_wday,"%W":g=>{var p=g.tm_yday+7-(g.tm_wday+6)%7;return C(Math.floor(p/7),2)},"%y":g=>(g.tm_year+1900).toString().substring(2),"%Y":g=>g.tm_year+1900,"%z":g=>{var p=g.tm_gmtoff,T=p>=0;return p=Math.abs(p)/60,p=p/60*100+p%60,(T?"+":"-")+("0000"+p).slice(-4)},"%Z":g=>g.tm_zone,"%%":()=>"%"};u=u.replace(/%%/g,"\0\0");for(var d in V)u.includes(d)&&(u=u.replace(new RegExp(d,"g"),V[d](s)));u=u.replace(/\0\0/g,"%");var L=Bn(u,!1);return L.length>e?0:(Yn(L,n),L.length-1)},qn=(n,e,t,r,a)=>Gn(n,e,t,r);Dt=o.InternalError=class extends Error{constructor(n){super(n),this.name="InternalError"}},Sr(),ve=o.BindingError=class extends Error{constructor(n){super(n),this.name="BindingError"}},Ir(),Mr(),Br(),Lt=o.UnboundTypeError=Jr(Error,"UnboundTypeError"),Kr(),tn();var Jn={s:mr,v:vr,b:gr,g:wr,q:br,I:$r,f:_r,T:Cr,d:yr,ba:Tr,P:Pr,Y:Ar,aa:Xr,$:Zr,w:Qr,X:rn,x:an,h:on,K:un,L:cn,t:dn,n:fn,J:mn,C:_n,A:Cn,ca:Tn,Z:Pn,ea:Yt,da:An,M:On,V:Dn,_:jn,B:xn,W:Mn,U:Wn,R:Hn,S:Vn,D:la,E:ca,m:da,a:Xn,e:ea,o:na,k:Kn,G:sa,u:oa,F:ua,z:ha,O:ma,l:ta,j:ra,c:Qn,p:Zn,H:ia,r:fa,i:aa,y:pa,N:Ln,Q:qn},F=pr(),ae=o._free=n=>(ae=o._free=F.ha)(n),vt=o._malloc=n=>(vt=o._malloc=F.ia)(n),tr=n=>(tr=F.ka)(n);o.__embind_initialize_bindings=()=>(o.__embind_initialize_bindings=F.la)();var M=(n,e)=>(M=F.ma)(n,e),Pe=n=>(Pe=F.na)(n),I=()=>(I=F.oa)(),U=n=>(U=F.pa)(n),rr=n=>(rr=F.qa)(n),nr=n=>(nr=F.ra)(n),ar=(n,e,t)=>(ar=F.sa)(n,e,t),or=n=>(or=F.ta)(n);o.dynCall_viijii=(n,e,t,r,a,s,u)=>(o.dynCall_viijii=F.ua)(n,e,t,r,a,s,u);var ir=o.dynCall_jiiii=(n,e,t,r,a)=>(ir=o.dynCall_jiiii=F.va)(n,e,t,r,a);o.dynCall_iiiiij=(n,e,t,r,a,s,u)=>(o.dynCall_iiiiij=F.wa)(n,e,t,r,a,s,u),o.dynCall_iiiiijj=(n,e,t,r,a,s,u,l,d)=>(o.dynCall_iiiiijj=F.xa)(n,e,t,r,a,s,u,l,d),o.dynCall_iiiiiijj=(n,e,t,r,a,s,u,l,d,f)=>(o.dynCall_iiiiiijj=F.ya)(n,e,t,r,a,s,u,l,d,f);function Xn(n,e){var t=I();try{return W(n)(e)}catch(r){if(U(t),r!==r+0)throw r;M(1,0)}}function Zn(n,e,t,r){var a=I();try{W(n)(e,t,r)}catch(s){if(U(a),s!==s+0)throw s;M(1,0)}}function Qn(n,e,t){var r=I();try{W(n)(e,t)}catch(a){if(U(r),a!==a+0)throw a;M(1,0)}}function Kn(n,e,t,r,a){var s=I();try{return W(n)(e,t,r,a)}catch(u){if(U(s),u!==u+0)throw u;M(1,0)}}function ea(n,e,t){var r=I();try{return W(n)(e,t)}catch(a){if(U(r),a!==a+0)throw a;M(1,0)}}function ta(n){var e=I();try{W(n)()}catch(t){if(U(e),t!==t+0)throw t;M(1,0)}}function ra(n,e){var t=I();try{W(n)(e)}catch(r){if(U(t),r!==r+0)throw r;M(1,0)}}function na(n,e,t,r){var a=I();try{return W(n)(e,t,r)}catch(s){if(U(a),s!==s+0)throw s;M(1,0)}}function aa(n,e,t,r,a,s,u,l,d,f,m){var w=I();try{W(n)(e,t,r,a,s,u,l,d,f,m)}catch(C){if(U(w),C!==C+0)throw C;M(1,0)}}function oa(n,e,t,r,a,s,u){var l=I();try{return W(n)(e,t,r,a,s,u)}catch(d){if(U(l),d!==d+0)throw d;M(1,0)}}function ia(n,e,t,r,a){var s=I();try{W(n)(e,t,r,a)}catch(u){if(U(s),u!==u+0)throw u;M(1,0)}}function sa(n,e,t,r,a,s){var u=I();try{return W(n)(e,t,r,a,s)}catch(l){if(U(u),l!==l+0)throw l;M(1,0)}}function ua(n,e,t,r,a,s,u,l){var d=I();try{return W(n)(e,t,r,a,s,u,l)}catch(f){if(U(d),f!==f+0)throw f;M(1,0)}}function ca(n,e,t,r){var a=I();try{return W(n)(e,t,r)}catch(s){if(U(a),s!==s+0)throw s;M(1,0)}}function la(n,e,t,r){var a=I();try{return W(n)(e,t,r)}catch(s){if(U(a),s!==s+0)throw s;M(1,0)}}function da(n){var e=I();try{return W(n)()}catch(t){if(U(e),t!==t+0)throw t;M(1,0)}}function fa(n,e,t,r,a,s,u,l){var d=I();try{W(n)(e,t,r,a,s,u,l)}catch(f){if(U(d),f!==f+0)throw f;M(1,0)}}function ha(n,e,t,r,a,s,u,l,d,f,m,w){var C=I();try{return W(n)(e,t,r,a,s,u,l,d,f,m,w)}catch(S){if(U(C),S!==S+0)throw S;M(1,0)}}function pa(n,e,t,r,a,s,u,l,d,f,m,w,C,S,j,H){var V=I();try{W(n)(e,t,r,a,s,u,l,d,f,m,w,C,S,j,H)}catch(L){if(U(V),L!==L+0)throw L;M(1,0)}}function ma(n,e,t,r,a){var s=I();try{return ir(n,e,t,r,a)}catch(u){if(U(s),u!==u+0)throw u;M(1,0)}}var bt;ie=function n(){bt||yt(),bt||(ie=n)};function yt(){if(se>0||(Ct(),se>0))return;function n(){bt||(bt=!0,o.calledRun=!0,!X&&(Tt(),h(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),Pt()))}o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),n()},1)):n()}if(o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return yt(),c.ready}})();function ni(i){return Ta(Pa,i)}async function ai(i,c){return ti(Pa,i,c)}async function oi(i,c){return ri(Pa,i,c)}(()=>{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(c={}){var o=c,h,v;o.ready=new Promise((e,t)=>{h=e,v=t});var b=Object.assign({},o),$="./this.program",E=typeof window=="object",y=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var _="";function O(e){return o.locateFile?o.locateFile(e,_):_+e}var P;(E||y)&&(y?_=self.location.href:typeof document<"u"&&document.currentScript&&(_=document.currentScript.src),i&&(_=i),_.indexOf("blob:")!==0?_=_.substr(0,_.replace(/[?#].*/,"").lastIndexOf("/")+1):_="",y&&(P=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)})),o.print||console.log.bind(console);var B=o.printErr||console.error.bind(console);Object.assign(o,b),b=null,o.arguments&&o.arguments,o.thisProgram&&($=o.thisProgram),o.quit&&o.quit;var q;o.wasmBinary&&(q=o.wasmBinary),typeof WebAssembly!="object"&&pe("no native wasm support detected");var Y,X=!1;function oe(e,t){e||pe(t)}var x,k,z,J,R,A,we,Oe;function ze(){var e=Y.buffer;o.HEAP8=x=new Int8Array(e),o.HEAP16=z=new Int16Array(e),o.HEAPU8=k=new Uint8Array(e),o.HEAPU16=J=new Uint16Array(e),o.HEAP32=R=new Int32Array(e),o.HEAPU32=A=new Uint32Array(e),o.HEAPF32=we=new Float32Array(e),o.HEAPF64=Oe=new Float64Array(e)}var Ne=[],Be=[],Xe=[];function Ct(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)Ze(o.preRun.shift());et(Ne)}function Tt(){et(Be)}function Pt(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)St(o.postRun.shift());et(Xe)}function Ze(e){Ne.unshift(e)}function wt(e){Be.unshift(e)}function St(e){Xe.unshift(e)}var se=0,ie=null;function ye(e){se++,o.monitorRunDependencies&&o.monitorRunDependencies(se)}function Et(e){if(se--,o.monitorRunDependencies&&o.monitorRunDependencies(se),se==0&&ie){var t=ie;ie=null,t()}}function pe(e){o.onAbort&&o.onAbort(e),e="Aborted("+e+")",B(e),X=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw v(t),t}var At="data:application/octet-stream;base64,",Qe=e=>e.startsWith(At),ce;ce="zxing_full.wasm",Qe(ce)||(ce=O(ce));function Ke(e){if(e==ce&&q)return new Uint8Array(q);if(P)return P(e);throw"both async and sync fetching of the wasm failed"}function fr(e){return!q&&(E||y)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()}).catch(()=>Ke(e)):Promise.resolve().then(()=>Ke(e))}function Ot(e,t,r){return fr(e).then(a=>WebAssembly.instantiate(a,t)).then(a=>a).then(r,a=>{B(`failed to asynchronously prepare wasm: ${a}`),pe(a)})}function hr(e,t,r,a){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!Qe(t)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(s=>{var u=WebAssembly.instantiateStreaming(s,r);return u.then(a,function(l){return B(`wasm streaming compile failed: ${l}`),B("falling back to ArrayBuffer instantiation"),Ot(t,r,a)})}):Ot(t,r,a)}function pr(){var e={a:Jn};function t(a,s){return F=a.exports,Y=F.ga,ze(),Vt=F.ka,wt(F.ha),Et(),F}ye();function r(a){t(a.instance)}if(o.instantiateWasm)try{return o.instantiateWasm(e,t)}catch(a){B(`Module.instantiateWasm callback failed with error: ${a}`),v(a)}return hr(q,ce,e,r).catch(v),{}}var et=e=>{for(;e.length>0;)e.shift()(o)};o.noExitRuntime;var ke=[],De=0,mr=e=>{var t=new tt(e);return t.get_caught()||(t.set_caught(!0),De--),t.set_rethrown(!1),ke.push(t),nr(t.excPtr),t.get_exception_ptr()},ne=0,vr=()=>{M(0,0);var e=ke.pop();rr(e.excPtr),ne=0};function tt(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(t){A[this.ptr+4>>2]=t},this.get_type=function(){return A[this.ptr+4>>2]},this.set_destructor=function(t){A[this.ptr+8>>2]=t},this.get_destructor=function(){return A[this.ptr+8>>2]},this.set_caught=function(t){t=t?1:0,x[this.ptr+12>>0]=t},this.get_caught=function(){return x[this.ptr+12>>0]!=0},this.set_rethrown=function(t){t=t?1:0,x[this.ptr+13>>0]=t},this.get_rethrown=function(){return x[this.ptr+13>>0]!=0},this.init=function(t,r){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(r)},this.set_adjusted_ptr=function(t){A[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return A[this.ptr+16>>2]},this.get_exception_ptr=function(){var t=or(this.get_type());if(t)return A[this.excPtr>>2];var r=this.get_adjusted_ptr();return r!==0?r:this.excPtr}}var yr=e=>{throw ne||(ne=e),ne},rt=e=>{var t=ne;if(!t)return Pe(0),0;var r=new tt(t);r.set_adjusted_ptr(t);var a=r.get_type();if(!a)return Pe(0),t;for(var s in e){var u=e[s];if(u===0||u===a)break;var l=r.ptr+16;if(ar(u,a,l))return Pe(u),t}return Pe(a),t},gr=()=>rt([]),wr=e=>rt([e]),br=(e,t)=>rt([e,t]),$r=()=>{var e=ke.pop();e||pe("no exception to throw");var t=e.excPtr;throw e.get_rethrown()||(ke.push(e),e.set_rethrown(!0),e.set_caught(!1),De++),ne=t,ne},_r=(e,t,r)=>{var a=new tt(e);throw a.init(t,r),ne=e,De++,ne},Cr=()=>De,je={},kt=e=>{for(;e.length;){var t=e.pop(),r=e.pop();r(t)}};function nt(e){return this.fromWireType(R[e>>2])}var me={},le={},xe={},Dt,Me=e=>{throw new Dt(e)},de=(e,t,r)=>{e.forEach(function(d){xe[d]=t});function a(d){var f=r(d);f.length!==e.length&&Me("Mismatched type converter count");for(var m=0;m{le.hasOwnProperty(d)?s[f]=le[d]:(u.push(d),me.hasOwnProperty(d)||(me[d]=[]),me[d].push(()=>{s[f]=le[d],++l,l===u.length&&a(s)}))}),u.length===0&&a(s)},Tr=e=>{var t=je[e];delete je[e];var r=t.rawConstructor,a=t.rawDestructor,s=t.fields,u=s.map(l=>l.getterReturnType).concat(s.map(l=>l.setterArgumentType));de([e],u,l=>{var d={};return s.forEach((f,m)=>{var w=f.fieldName,C=l[m],S=f.getter,j=f.getterContext,H=l[m+s.length],V=f.setter,L=f.setterContext;d[w]={read:g=>C.fromWireType(S(j,g)),write:(g,p)=>{var T=[];V(L,g,H.toWireType(T,p)),kt(T)}}}),[{name:t.name,fromWireType:f=>{var m={};for(var w in d)m[w]=d[w].read(f);return a(f),m},toWireType:(f,m)=>{for(var w in d)if(!(w in m))throw new TypeError(`Missing field: "${w}"`);var C=r();for(w in d)d[w].write(C,m[w]);return f!==null&&f.push(a,C),C},argPackAdvance:re,readValueFromPointer:nt,destructorFunction:a}]})},Pr=(e,t,r,a,s)=>{},Sr=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);jt=e},jt,G=e=>{for(var t="",r=e;k[r];)t+=jt[k[r++]];return t},ve,D=e=>{throw new ve(e)};function Er(e,t,r={}){var a=t.name;if(e||D(`type "${a}" must have a positive integer typeid pointer`),le.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;D(`Cannot register type '${a}' twice`)}if(le[e]=t,delete xe[e],me.hasOwnProperty(e)){var s=me[e];delete me[e],s.forEach(u=>u())}}function te(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Er(e,t,r)}var re=8,Ar=(e,t,r,a)=>{t=G(t),te(e,{name:t,fromWireType:function(s){return!!s},toWireType:function(s,u){return u?r:a},argPackAdvance:re,readValueFromPointer:function(s){return this.fromWireType(k[s])},destructorFunction:null})},Or=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),at=e=>{function t(r){return r.$$.ptrType.registeredClass.name}D(t(e)+" instance already deleted")},ot=!1,xt=e=>{},kr=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Mt=e=>{e.count.value-=1;var t=e.count.value===0;t&&kr(e)},Rt=(e,t,r)=>{if(t===r)return e;if(r.baseClass===void 0)return null;var a=Rt(e,t,r.baseClass);return a===null?null:r.downcast(a)},Ft={},Dr=()=>Object.keys(_e).length,jr=()=>{var e=[];for(var t in _e)_e.hasOwnProperty(t)&&e.push(_e[t]);return e},be=[],it=()=>{for(;be.length;){var e=be.pop();e.$$.deleteScheduled=!1,e.delete()}},$e,xr=e=>{$e=e,be.length&&$e&&$e(it)},Mr=()=>{o.getInheritedInstanceCount=Dr,o.getLiveInheritedInstances=jr,o.flushPendingDeletes=it,o.setDelayFunction=xr},_e={},Rr=(e,t)=>{for(t===void 0&&D("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},Fr=(e,t)=>(t=Rr(e,t),_e[t]),Re=(e,t)=>{(!t.ptrType||!t.ptr)&&Me("makeClassHandle requires ptr and ptrType");var r=!!t.smartPtrType,a=!!t.smartPtr;return r!==a&&Me("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Ce(Object.create(e,{$$:{value:t}}))};function Wr(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Fr(this.registeredClass,t);if(r!==void 0){if(r.$$.count.value===0)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var a=r.clone();return this.destructor(e),a}function s(){return this.isSmartPointer?Re(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Re(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var u=this.registeredClass.getActualType(t),l=Ft[u];if(!l)return s.call(this);var d;this.isConst?d=l.constPointerType:d=l.pointerType;var f=Rt(t,this.registeredClass,d.registeredClass);return f===null?s.call(this):this.isSmartPointer?Re(d.registeredClass.instancePrototype,{ptrType:d,ptr:f,smartPtrType:this,smartPtr:e}):Re(d.registeredClass.instancePrototype,{ptrType:d,ptr:f})}var Ce=e=>typeof FinalizationRegistry>"u"?(Ce=t=>t,e):(ot=new FinalizationRegistry(t=>{Mt(t.$$)}),Ce=t=>{var r=t.$$,a=!!r.smartPtr;if(a){var s={$$:r};ot.register(t,s,t)}return t},xt=t=>ot.unregister(t),Ce(e)),Ir=()=>{Object.assign(Fe.prototype,{isAliasOf(e){if(!(this instanceof Fe)||!(e instanceof Fe))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var a=e.$$.ptrType.registeredClass,s=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;a.baseClass;)s=a.upcast(s),a=a.baseClass;return t===a&&r===s},clone(){if(this.$$.ptr||at(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Ce(Object.create(Object.getPrototypeOf(this),{$$:{value:Or(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||at(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&D("Object already scheduled for deletion"),xt(this),Mt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||at(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&D("Object already scheduled for deletion"),be.push(this),be.length===1&&$e&&$e(it),this.$$.deleteScheduled=!0,this}})};function Fe(){}var Ur=48,Hr=57,Wt=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var t=e.charCodeAt(0);return t>=Ur&&t<=Hr?`_${e}`:e};function st(e,t){return e=Wt(e),{[e]:function(){return t.apply(this,arguments)}}[e]}var It=(e,t,r)=>{if(e[t].overloadTable===void 0){var a=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||D(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[a.argCount]=a}},ut=(e,t,r)=>{o.hasOwnProperty(e)?((r===void 0||o[e].overloadTable!==void 0&&o[e].overloadTable[r]!==void 0)&&D(`Cannot register public name '${e}' twice`),It(o,e,e),o.hasOwnProperty(r)&&D(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),o[e].overloadTable[r]=t):(o[e]=t,r!==void 0&&(o[e].numArguments=r))};function Vr(e,t,r,a,s,u,l,d){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=a,this.baseClass=s,this.getActualType=u,this.upcast=l,this.downcast=d,this.pureVirtualFunctions=[]}var ct=(e,t,r)=>{for(;t!==r;)t.upcast||D(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Lr(e,t){if(t===null)return this.isReference&&D(`null is not a valid ${this.name}`),0;t.$$||D(`Cannot pass "${ht(t)}" as a ${this.name}`),t.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass,a=ct(t.$$.ptr,r,this.registeredClass);return a}function zr(e,t){var r;if(t===null)return this.isReference&&D(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,r),r):0;t.$$||D(`Cannot pass "${ht(t)}" as a ${this.name}`),t.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&D(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var a=t.$$.ptrType.registeredClass;if(r=ct(t.$$.ptr,a,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&D("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:D(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var s=t.clone();r=this.rawShare(r,ue.toHandle(()=>s.delete())),e!==null&&e.push(this.rawDestructor,r)}break;default:D("Unsupporting sharing policy")}return r}function Nr(e,t){if(t===null)return this.isReference&&D(`null is not a valid ${this.name}`),0;t.$$||D(`Cannot pass "${ht(t)}" as a ${this.name}`),t.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&D(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass,a=ct(t.$$.ptr,r,this.registeredClass);return a}function Ut(e){return this.fromWireType(A[e>>2])}var Br=()=>{Object.assign(We.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:re,readValueFromPointer:Ut,deleteObject(e){e!==null&&e.delete()},fromWireType:Wr})};function We(e,t,r,a,s,u,l,d,f,m,w){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=a,this.isSmartPointer=s,this.pointeeType=u,this.sharingPolicy=l,this.rawGetPointee=d,this.rawConstructor=f,this.rawShare=m,this.rawDestructor=w,!s&&t.baseClass===void 0?a?(this.toWireType=Lr,this.destructorFunction=null):(this.toWireType=Nr,this.destructorFunction=null):this.toWireType=zr}var Ht=(e,t,r)=>{o.hasOwnProperty(e)||Me("Replacing nonexistant public symbol"),o[e].overloadTable!==void 0&&r!==void 0?o[e].overloadTable[r]=t:(o[e]=t,o[e].argCount=r)},Yr=(e,t,r)=>{var a=o["dynCall_"+e];return r&&r.length?a.apply(null,[t].concat(r)):a.call(null,t)},Ie=[],Vt,W=e=>{var t=Ie[e];return t||(e>=Ie.length&&(Ie.length=e+1),Ie[e]=t=Vt.get(e)),t},Gr=(e,t,r)=>{if(e.includes("j"))return Yr(e,t,r);var a=W(t).apply(null,r);return a},qr=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Gr(e,t,r)}},ee=(e,t)=>{e=G(e);function r(){return e.includes("j")?qr(e,t):W(t)}var a=r();return typeof a!="function"&&D(`unknown function pointer with signature ${e}: ${t}`),a},Jr=(e,t)=>{var r=st(t,function(a){this.name=t,this.message=a;var s=new Error(a).stack;s!==void 0&&(this.stack=this.toString()+` `+s.replace(/^Error(:[^\n]*)?\n/,""))});return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},r},Lt,zt=e=>{var t=tr(e),r=G(t);return ae(t),r},Ue=(e,t)=>{var r=[],a={};function s(u){if(!a[u]&&!le[u]){if(xe[u]){xe[u].forEach(s);return}r.push(u),a[u]=!0}}throw t.forEach(s),new Lt(`${e}: `+r.map(zt).join([", "]))},Xr=(e,t,r,a,s,u,l,d,f,m,w,C,S)=>{w=G(w),u=ee(s,u),d&&(d=ee(l,d)),m&&(m=ee(f,m)),S=ee(C,S);var j=Wt(w);ut(j,function(){Ue(`Cannot construct ${w} due to unbound types`,[a])}),de([e,t,r],a?[a]:[],function(H){H=H[0];var V,L;a?(V=H.registeredClass,L=V.instancePrototype):L=Fe.prototype;var g=st(j,function(){if(Object.getPrototypeOf(this)!==p)throw new ve("Use 'new' to construct "+w);if(T.constructor_body===void 0)throw new ve(w+" has no accessible constructor");var ur=T.constructor_body[arguments.length];if(ur===void 0)throw new ve(`Tried to invoke ctor of ${w} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(T.constructor_body).toString()}) parameters instead!`);return ur.apply(this,arguments)}),p=Object.create(L,{constructor:{value:g}});g.prototype=p;var T=new Vr(w,g,p,S,V,u,d,m);T.baseClass&&(T.baseClass.__derivedClasses===void 0&&(T.baseClass.__derivedClasses=[]),T.baseClass.__derivedClasses.push(T));var N=new We(w,T,!0,!1,!1),Q=new We(w+"*",T,!1,!1,!1),ge=new We(w+" const*",T,!1,!0,!1);return Ft[e]={pointerType:Q,constPointerType:ge},Ht(j,g),[N,Q,ge]})},lt=(e,t)=>{for(var r=[],a=0;a>2]);return r};function dt(e,t,r,a,s,u){var l=t.length;l<2&&D("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var d=t[1]!==null&&r!==null,f=!1,m=1;m{var l=lt(t,r);s=ee(a,s),de([],[e],function(d){d=d[0];var f=`constructor ${d.name}`;if(d.registeredClass.constructor_body===void 0&&(d.registeredClass.constructor_body=[]),d.registeredClass.constructor_body[t-1]!==void 0)throw new ve(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${d.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return d.registeredClass.constructor_body[t-1]=()=>{Ue(`Cannot construct ${d.name} due to unbound types`,l)},de([],l,m=>(m.splice(1,0,null),d.registeredClass.constructor_body[t-1]=dt(f,m,null,s,u),[])),[]})},Nt=e=>{e=e.trim();const t=e.indexOf("(");return t!==-1?(oe(e[e.length-1]==")","Parentheses for argument names should match."),e.substr(0,t)):e},Qr=(e,t,r,a,s,u,l,d,f)=>{var m=lt(r,a);t=G(t),t=Nt(t),u=ee(s,u),de([],[e],function(w){w=w[0];var C=`${w.name}.${t}`;t.startsWith("@@")&&(t=Symbol[t.substring(2)]),d&&w.registeredClass.pureVirtualFunctions.push(t);function S(){Ue(`Cannot call ${C} due to unbound types`,m)}var j=w.registeredClass.instancePrototype,H=j[t];return H===void 0||H.overloadTable===void 0&&H.className!==w.name&&H.argCount===r-2?(S.argCount=r-2,S.className=w.name,j[t]=S):(It(j,t,C),j[t].overloadTable[r-2]=S),de([],m,function(V){var L=dt(C,V,w,u,l);return j[t].overloadTable===void 0?(L.argCount=r-2,j[t]=L):j[t].overloadTable[r-2]=L,[]}),[]})};function Kr(){Object.assign(Bt.prototype,{get(e){return this.allocated[e]},has(e){return this.allocated[e]!==void 0},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Bt(){this.allocated=[void 0],this.freelist=[]}var K=new Bt,Yt=e=>{e>=K.reserved&&--K.get(e).refcount===0&&K.free(e)},en=()=>{for(var e=0,t=K.reserved;t{K.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),K.reserved=K.allocated.length,o.count_emval_handles=en},ue={toValue:e=>(e||D("Cannot use deleted val. handle = "+e),K.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return K.allocate({refcount:1,value:e})}}},rn=(e,t)=>{t=G(t),te(e,{name:t,fromWireType:r=>{var a=ue.toValue(r);return Yt(r),a},toWireType:(r,a)=>ue.toHandle(a),argPackAdvance:re,readValueFromPointer:nt,destructorFunction:null})},nn=(e,t,r)=>{switch(t){case 1:return r?function(a){return this.fromWireType(x[a>>0])}:function(a){return this.fromWireType(k[a>>0])};case 2:return r?function(a){return this.fromWireType(z[a>>1])}:function(a){return this.fromWireType(J[a>>1])};case 4:return r?function(a){return this.fromWireType(R[a>>2])}:function(a){return this.fromWireType(A[a>>2])};default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},an=(e,t,r,a)=>{t=G(t);function s(){}s.values={},te(e,{name:t,constructor:s,fromWireType:function(u){return this.constructor.values[u]},toWireType:(u,l)=>l.value,argPackAdvance:re,readValueFromPointer:nn(t,r,a),destructorFunction:null}),ut(t,s)},ft=(e,t)=>{var r=le[e];return r===void 0&&D(t+" has unknown type "+zt(e)),r},on=(e,t,r)=>{var a=ft(e,"enum");t=G(t);var s=a.constructor,u=Object.create(a.constructor.prototype,{value:{value:r},constructor:{value:st(`${a.name}_${t}`,function(){})}});s.values[r]=u,s[t]=u},ht=e=>{if(e===null)return"null";var t=typeof e;return t==="object"||t==="array"||t==="function"?e.toString():""+e},sn=(e,t)=>{switch(t){case 4:return function(r){return this.fromWireType(we[r>>2])};case 8:return function(r){return this.fromWireType(Oe[r>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},un=(e,t,r)=>{t=G(t),te(e,{name:t,fromWireType:a=>a,toWireType:(a,s)=>s,argPackAdvance:re,readValueFromPointer:sn(t,r),destructorFunction:null})},cn=(e,t,r,a,s,u,l)=>{var d=lt(t,r);e=G(e),e=Nt(e),s=ee(a,s),ut(e,function(){Ue(`Cannot call ${e} due to unbound types`,d)},t-1),de([],d,function(f){var m=[f[0],null].concat(f.slice(1));return Ht(e,dt(e,m,null,s,u),t-1),[]})},ln=(e,t,r)=>{switch(t){case 1:return r?a=>x[a>>0]:a=>k[a>>0];case 2:return r?a=>z[a>>1]:a=>J[a>>1];case 4:return r?a=>R[a>>2]:a=>A[a>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},dn=(e,t,r,a,s)=>{t=G(t);var u=w=>w;if(a===0){var l=32-8*r;u=w=>w<>>l}var d=t.includes("unsigned"),f=(w,C)=>{},m;d?m=function(w,C){return f(C,this.name),C>>>0}:m=function(w,C){return f(C,this.name),C},te(e,{name:t,fromWireType:u,toWireType:m,argPackAdvance:re,readValueFromPointer:ln(t,r,a!==0),destructorFunction:null})},fn=(e,t,r)=>{var a=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],s=a[t];function u(l){var d=A[l>>2],f=A[l+4>>2];return new s(x.buffer,f,d)}r=G(r),te(e,{name:r,fromWireType:u,argPackAdvance:re,readValueFromPointer:u},{ignoreDuplicateRegistrations:!0})},Gt=(e,t,r,a)=>{if(!(a>0))return 0;for(var s=r,u=r+a-1,l=0;l=55296&&d<=57343){var f=e.charCodeAt(++l);d=65536+((d&1023)<<10)|f&1023}if(d<=127){if(r>=u)break;t[r++]=d}else if(d<=2047){if(r+1>=u)break;t[r++]=192|d>>6,t[r++]=128|d&63}else if(d<=65535){if(r+2>=u)break;t[r++]=224|d>>12,t[r++]=128|d>>6&63,t[r++]=128|d&63}else{if(r+3>=u)break;t[r++]=240|d>>18,t[r++]=128|d>>12&63,t[r++]=128|d>>6&63,t[r++]=128|d&63}}return t[r]=0,r-s},hn=(e,t,r)=>Gt(e,k,t,r),qt=e=>{for(var t=0,r=0;r=55296&&a<=57343?(t+=4,++r):t+=3}return t},Jt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,pn=(e,t,r)=>{for(var a=t+r,s=t;e[s]&&!(s>=a);)++s;if(s-t>16&&e.buffer&&Jt)return Jt.decode(e.subarray(t,s));for(var u="";t>10,56320|m&1023)}}return u},pt=(e,t)=>e?pn(k,e,t):"",mn=(e,t)=>{t=G(t);var r=t==="std::string";te(e,{name:t,fromWireType(a){var s=A[a>>2],u=a+4,l;if(r)for(var d=u,f=0;f<=s;++f){var m=u+f;if(f==s||k[m]==0){var w=m-d,C=pt(d,w);l===void 0?l=C:(l+=String.fromCharCode(0),l+=C),d=m+1}}else{for(var S=new Array(s),f=0;f>2]=u,r&&l)hn(s,f,u+1);else if(l)for(var m=0;m255&&(ae(f),D("String has UTF-16 code units that do not fit in 8 bits")),k[f+m]=w}else for(var m=0;m{for(var r=e,a=r>>1,s=a+t/2;!(a>=s)&&J[a];)++a;if(r=a<<1,r-e>32&&Xt)return Xt.decode(k.subarray(e,r));for(var u="",l=0;!(l>=t/2);++l){var d=z[e+l*2>>1];if(d==0)break;u+=String.fromCharCode(d)}return u},yn=(e,t,r)=>{if(r===void 0&&(r=2147483647),r<2)return 0;r-=2;for(var a=t,s=r>1]=l,t+=2}return z[t>>1]=0,t-a},gn=e=>e.length*2,wn=(e,t)=>{for(var r=0,a="";!(r>=t/4);){var s=R[e+r*4>>2];if(s==0)break;if(++r,s>=65536){var u=s-65536;a+=String.fromCharCode(55296|u>>10,56320|u&1023)}else a+=String.fromCharCode(s)}return a},bn=(e,t,r)=>{if(r===void 0&&(r=2147483647),r<4)return 0;for(var a=t,s=a+r-4,u=0;u=55296&&l<=57343){var d=e.charCodeAt(++u);l=65536+((l&1023)<<10)|d&1023}if(R[t>>2]=l,t+=4,t+4>s)break}return R[t>>2]=0,t-a},$n=e=>{for(var t=0,r=0;r=55296&&a<=57343&&++r,t+=4}return t},_n=(e,t,r)=>{r=G(r);var a,s,u,l,d;t===2?(a=vn,s=yn,l=gn,u=()=>J,d=1):t===4&&(a=wn,s=bn,l=$n,u=()=>A,d=2),te(e,{name:r,fromWireType:f=>{for(var m=A[f>>2],w=u(),C,S=f+4,j=0;j<=m;++j){var H=f+4+j*t;if(j==m||w[H>>d]==0){var V=H-S,L=a(S,V);C===void 0?C=L:(C+=String.fromCharCode(0),C+=L),S=H+t}}return ae(f),C},toWireType:(f,m)=>{typeof m!="string"&&D(`Cannot pass non-string to C++ string type ${r}`);var w=l(m),C=vt(4+w+t);return A[C>>2]=w>>d,s(m,C+4,w+t),f!==null&&f.push(ae,C),C},argPackAdvance:re,readValueFromPointer:nt,destructorFunction(f){ae(f)}})},Cn=(e,t,r,a,s,u)=>{je[e]={name:G(t),rawConstructor:ee(r,a),rawDestructor:ee(s,u),fields:[]}},Tn=(e,t,r,a,s,u,l,d,f,m)=>{je[e].fields.push({fieldName:G(t),getterReturnType:r,getter:ee(a,s),getterContext:u,setterArgumentType:l,setter:ee(d,f),setterContext:m})},Pn=(e,t)=>{t=G(t),te(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType:()=>{},toWireType:(r,a)=>{}})},Sn={},En=e=>{var t=Sn[e];return t===void 0?G(e):t},Zt=()=>{if(typeof globalThis=="object")return globalThis;function e(t){t.$$$embind_global$$$=t;var r=typeof $$$embind_global$$$=="object"&&t.$$$embind_global$$$==t;return r||delete t.$$$embind_global$$$,r}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&e(global)?$$$embind_global$$$=global:typeof self=="object"&&e(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},An=e=>e===0?ue.toHandle(Zt()):(e=En(e),ue.toHandle(Zt()[e])),On=e=>{e>4&&(K.get(e).refcount+=1)},kn=e=>{var t=new Array(e+1);return function(r,a,s){t[0]=r;for(var u=0;u>2],"parameter "+u);t[u+1]=l.readValueFromPointer(s),s+=l.argPackAdvance}var d=new(r.bind.apply(r,t));return ue.toHandle(d)}},Qt={},Dn=(e,t,r,a)=>{e=ue.toValue(e);var s=Qt[t];return s||(s=kn(t),Qt[t]=s),s(e,r,a)},jn=(e,t)=>{e=ft(e,"_emval_take_value");var r=e.readValueFromPointer(t);return ue.toHandle(r)},xn=()=>{pe("")},Mn=(e,t,r)=>k.copyWithin(e,t,t+r),Rn=()=>2147483648,Fn=e=>{var t=Y.buffer,r=(e-t.byteLength+65535)/65536;try{return Y.grow(r),ze(),1}catch{}},Wn=e=>{var t=k.length;e>>>=0;var r=Rn();if(e>r)return!1;for(var a=(f,m)=>f+(m-f%m)%m,s=1;s<=4;s*=2){var u=t*(1+.2/s);u=Math.min(u,e+100663296);var l=Math.min(r,a(Math.max(e,u),65536)),d=Fn(l);if(d)return!0}return!1},mt={},In=()=>$||"./this.program",Te=()=>{if(!Te.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:In()};for(var r in mt)mt[r]===void 0?delete t[r]:t[r]=mt[r];var a=[];for(var r in t)a.push(`${r}=${t[r]}`);Te.strings=a}return Te.strings},Un=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);x[t>>0]=0},Hn=(e,t)=>{var r=0;return Te().forEach((a,s)=>{var u=t+r;A[e+s*4>>2]=u,Un(a,u),r+=a.length+1}),0},Vn=(e,t)=>{var r=Te();A[e>>2]=r.length;var a=0;return r.forEach(s=>a+=s.length+1),A[t>>2]=a,0},Ln=e=>e,He=e=>e%4===0&&(e%100!==0||e%400===0),zn=(e,t)=>{for(var r=0,a=0;a<=t;r+=e[a++]);return r},Kt=[31,29,31,30,31,30,31,31,30,31,30,31],er=[31,28,31,30,31,30,31,31,30,31,30,31],Nn=(e,t)=>{for(var r=new Date(e.getTime());t>0;){var a=He(r.getFullYear()),s=r.getMonth(),u=(a?Kt:er)[s];if(t>u-r.getDate())t-=u-r.getDate()+1,r.setDate(1),s<11?r.setMonth(s+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1));else return r.setDate(r.getDate()+t),r}return r};function Bn(e,t,r){var a=r>0?r:qt(e)+1,s=new Array(a),u=Gt(e,s,0,s.length);return t&&(s.length=u),s}var Yn=(e,t)=>{x.set(e,t)},Gn=(e,t,r,a)=>{var s=A[a+40>>2],u={tm_sec:R[a>>2],tm_min:R[a+4>>2],tm_hour:R[a+8>>2],tm_mday:R[a+12>>2],tm_mon:R[a+16>>2],tm_year:R[a+20>>2],tm_wday:R[a+24>>2],tm_yday:R[a+28>>2],tm_isdst:R[a+32>>2],tm_gmtoff:R[a+36>>2],tm_zone:s?pt(s):""},l=pt(r),d={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var f in d)l=l.replace(new RegExp(f,"g"),d[f]);var m=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],w=["January","February","March","April","May","June","July","August","September","October","November","December"];function C(p,T,N){for(var Q=typeof p=="number"?p.toString():p||"";Q.length0?1:0}var Q;return(Q=N(p.getFullYear()-T.getFullYear()))===0&&(Q=N(p.getMonth()-T.getMonth()))===0&&(Q=N(p.getDate()-T.getDate())),Q}function H(p){switch(p.getDay()){case 0:return new Date(p.getFullYear()-1,11,29);case 1:return p;case 2:return new Date(p.getFullYear(),0,3);case 3:return new Date(p.getFullYear(),0,2);case 4:return new Date(p.getFullYear(),0,1);case 5:return new Date(p.getFullYear()-1,11,31);case 6:return new Date(p.getFullYear()-1,11,30)}}function V(p){var T=Nn(new Date(p.tm_year+1900,0,1),p.tm_yday),N=new Date(T.getFullYear(),0,4),Q=new Date(T.getFullYear()+1,0,4),ge=H(N),ur=H(Q);return j(ge,T)<=0?j(ur,T)<=0?T.getFullYear()+1:T.getFullYear():T.getFullYear()-1}var L={"%a":p=>m[p.tm_wday].substring(0,3),"%A":p=>m[p.tm_wday],"%b":p=>w[p.tm_mon].substring(0,3),"%B":p=>w[p.tm_mon],"%C":p=>{var T=p.tm_year+1900;return S(T/100|0,2)},"%d":p=>S(p.tm_mday,2),"%e":p=>C(p.tm_mday,2," "),"%g":p=>V(p).toString().substring(2),"%G":p=>V(p),"%H":p=>S(p.tm_hour,2),"%I":p=>{var T=p.tm_hour;return T==0?T=12:T>12&&(T-=12),S(T,2)},"%j":p=>S(p.tm_mday+zn(He(p.tm_year+1900)?Kt:er,p.tm_mon-1),3),"%m":p=>S(p.tm_mon+1,2),"%M":p=>S(p.tm_min,2),"%n":()=>` diff --git a/public/build/assets/CreateUpdate-ad68e9ef.js b/public/build/assets/CreateUpdate-030b151d.js similarity index 98% rename from public/build/assets/CreateUpdate-ad68e9ef.js rename to public/build/assets/CreateUpdate-030b151d.js index b33c880a..48c786f5 100644 --- a/public/build/assets/CreateUpdate-ad68e9ef.js +++ b/public/build/assets/CreateUpdate-030b151d.js @@ -1 +1 @@ -import{Y as xe,r as f,e as h,f as a,g as u,h as s,i as e,n as $,T as Z,k as E,p as v,D as L,m as r,U as H,l as c,F as X,P as Le,u as Me,Z as Se,a as Be,c as Ne,b as qe,d as W,v as Oe,o as Ue,J as T,O as fe,x as J,G as pe,E as me,t as g,j as ve,w as he,I as x}from"./app-72c44b80.js";import{F as Y}from"./Form-d325991a.js";import{_ as _e}from"./OtpDisplay-62239862.js";import{_ as Ae}from"./QrContentDisplay-d6c6658b.js";import{u as De}from"./bus-222e275f.js";import"./Spinner-0e4f49a2.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const He={class:"field",style:{"margin-bottom":"0.5rem"}},Pe=["for","innerHTML"],Ke=["disabled","id","type","value","placeholder","maxlength"],Qe={key:0,class:"control"},je=["title"],ze={class:"icon"},Re={key:1,class:"control"},Ge=["title"],We={class:"icon has-text-danger"},Je=["innerHTML"],ge=Object.assign({inheritAttrs:!1},{__name:"FormLockField",props:{modelValue:[String,Number,Boolean],isEditMode:{type:Boolean,default:!1},label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],inputType:{type:String,default:"text"},placeholder:{type:String,default:""},help:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},isExpanded:{type:Boolean,default:!0},maxLength:{type:Number,default:null}},setup(d){const b=d,{inputId:q}=xe(b.inputType,b.fieldName),y=f(b.isDisabled||b.isEditMode);return(w,_)=>{const I=h("FontAwesomeIcon"),M=h("FieldError");return a(),u(X,null,[s("div",He,[s("label",{for:e(q),class:"label",innerHTML:w.$t(d.label)},null,8,Pe)]),s("div",{class:$(["field has-addons",{"pt-3":d.hasOffset}])},[s("div",{class:$(["control",{"is-expanded":d.isExpanded}])},[s("input",Z({disabled:e(y),id:e(q),type:d.inputType,class:"input",value:d.modelValue,placeholder:d.placeholder},w.$attrs,{onInput:_[0]||(_[0]=p=>w.$emit("update:modelValue",p.target.value)),maxlength:d.maxLength}),null,16,Ke)],2),d.isEditMode?(a(),E(e(H),{key:0},{default:v(({mode:p})=>[e(y)?(a(),u("div",Qe,[s("button",{type:"button",class:$(["button field-lock",{"is-dark":p=="dark"}]),onClick:_[1]||(_[1]=L(t=>y.value=!1,["stop"])),title:w.$t("twofaccounts.forms.unlock.title")},[s("span",ze,[r(I,{icon:["fas","lock"]})])],10,je)])):(a(),u("div",Re,[s("button",{type:"button",class:$(["button field-unlock",{"is-dark":p=="dark"}]),onClick:_[2]||(_[2]=L(t=>y.value=!0,["stop"])),title:w.$t("twofaccounts.forms.lock.title")},[s("span",We,[r(I,{icon:["fas","lock-open"]})])],10,Ge)]))]),_:1})):c("",!0)],2),d.fieldError!=null?(a(),E(M,{key:0,error:d.fieldError,field:d.fieldName},null,8,["error","field"])):c("",!0),d.help?(a(),u("p",{key:1,class:"help",innerHTML:w.$t(d.help)},null,8,Je)):c("",!0)],64)}}}),Ye=["onSubmit"],Ze={class:"container preview has-text-centered"},Xe={class:"columns is-mobile"},et={class:"column"},tt={key:1,class:"add-icon-button"},ot=["onClick"],lt={class:"columns is-mobile",role:"alert"},st={key:0,class:"column"},nt={class:"columns is-mobile"},at={class:"column quickform-footer"},rt={class:"field is-grouped is-grouped-centered"},it={class:"control"},ct=["onSubmit"],ut={key:0,class:"field is-grouped"},dt={class:"control"},ft=["title"],pt={class:"file-cta"},mt={class:"file-icon"},vt={class:"file-label"},ht={class:"label"},_t={class:"field is-grouped"},gt={key:0,class:"control"},yt={class:"icon is-small"},bt={class:"control is-flex"},wt={class:"file-cta"},kt={class:"file-icon"},Et={class:"file-label"},$t=["src","alt"],Vt=["onClick","aria-label"],Ft={class:"field"},It=["innerHTML"],Ct={key:2},Tt={key:0},xt={class:"title is-4 mt-5 mb-2"},Lt={class:"help mb-4"},Mt={class:"control"},St={key:0,class:"control"},Dt={__name:"CreateUpdate",props:{twofaccountId:[Number,String]},setup(d){const b=d,q=Le("2fauth"),y=Me(),w=Se(),_=Be(),I=Ne(),M=De(),p=qe(),t=W(new Y({service:"",account:"",otp_type:"",icon:"",secret:"",algorithm:"",digits:null,counter:null,period:null,image:""})),O=W(new Y({qrcode:null})),C=W(new Y({icon:null})),ye=[{text:"TOTP",value:"totp"},{text:"HOTP",value:"hotp"},{text:"STEAM",value:"steamtotp"}],be=[{text:"6",value:6},{text:"7",value:7},{text:"8",value:8},{text:"9",value:9},{text:"10",value:10}],we=[{text:"sha1",value:"sha1"},{text:"sha256",value:"sha256"},{text:"sha512",value:"sha512"},{text:"md5",value:"md5"}],S=f(),i=f(""),B=f(!1),N=f(!1),U=f(!1),V=f(!1),P=f(!1),K=f(null),A=f(null),Q=f(null),ee=f(null),te=f(null),oe=f(null),m=Oe(()=>b.twofaccountId!=null);Ue(()=>{w.name=="editAccount"?T.get(b.twofaccountId).then(o=>{t.fill(o.data),t.setOriginal(),i.value=t.icon,U.value=!0}):M.decodedUri?(S.value=M.decodedUri,M.decodedUri=null,T.preview(S.value).then(o=>{t.fill(o.data),i.value=o.data.icon?o.data.icon:"",B.value=!0,fe().then(()=>{A.value.show()})}).catch(o=>{o.response.data.errors.uri&&(N.value=!0,U.value=!0)})):U.value=!0}),J(i,o=>{B.value&&fe().then(()=>{A.value.icon=o})}),J(V,o=>{var l,k;o==!1&&((l=Q.value)==null||l.clearOTP(),(k=A.value)==null||k.clearOTP())}),J(()=>t.otp_type,(o,l)=>{o==="steamtotp"?(t.service="Steam",ie()):l==="steamtotp"&&(t.service="",F())});function ke(){m.value?Ee():le()}async function le(){t.icon=i.value;const{data:o}=await t.post("/api/v1/twofaccounts");t.errors.any()===!1&&(I.items.push(o),p.success({text:x("twofaccounts.account_created")}),y.push({name:"accounts"}))}async function Ee(){if(i.value!==t.icon){let l="";l=t.icon,t.icon=i.value,i.value=l,F()}const{data:o}=await t.put("/api/v1/twofaccounts/"+b.twofaccountId);if(t.errors.any()===!1){const l=I.items.findIndex(k=>k.id===o.id);I.items.splice(l,1,o),p.success({text:x("twofaccounts.account_updated")}),y.push({name:"accounts"})}}function $e(){t.clear(),V.value=!0,Q.value.show()}function se(){t.hasChanged()||i.value!=t.icon?confirm(x("twofaccounts.confirm.cancel"))===!0&&((!m.value||i.value!=t.icon)&&F(),y.push({name:"accounts"})):y.push({name:"accounts"})}function ne(){F(),C.icon=K.value.files[0],C.upload("/api/v1/icons",{returnError:!0}).then(o=>{i.value=o.data.filename,B.value&&(t.icon=i.value)}).catch(o=>{o.response.status!==422&&p.alert({text:o.response.data.message})})}function F(){m.value?i.value&&(i.value!==t.icon&&T.deleteIcon(i.value),i.value=""):i.value&&(T.deleteIcon(i.value),i.value="",B.value&&(t.icon=""))}function ae(o){t.counter=o.nextHotpCounter}function re(o){t.errors.set(t.extractErrors(o))}function Ve(){O.qrcode=te.value.files[0],O.upload("/api/v1/qrcode/decode",{returnError:!0}).then(o=>{S.value=o.data.data,T.preview(S.value,{returnError:!0}).then(l=>{t.fill(l.data),i.value=l.data.icon?l.data.icon:null}).catch(l=>{l.response.status===422?l.response.data.errors.uri?N.value=!0:p.alert({text:x(l.response.data.message)}):p.error(l)})}).catch(o=>{o.response.status!==422&&p.alert({text:o.response.data.message})})}function ie(){_.preferences.getOfficialIcons&&(P.value=!0,T.getLogo(t.service,{returnError:!0}).then(o=>{o.status===201?(F(),i.value=o.data.filename):p.warn({text:x("errors.no_logo_found_for_x",{service:ce(t.service)})})}).catch(()=>{p.warn({text:x("errors.no_logo_found_for_x",{service:ce(t.service)})})}).finally(()=>{P.value=!1}))}function ce(o){return o.replace(/(<([^> ]+)>)/ig,"")}return(o,l)=>{const k=h("FieldError"),D=h("FontAwesomeIcon"),j=h("VueButton"),ue=h("ButtonBackCloseCancel"),z=h("FormField"),R=h("FormToggle"),Fe=h("VueFooter"),de=h("modal"),Ie=h("FormWrapper");return a(),u("div",null,[!e(m)&&e(B)?(a(),u("form",{key:0,onSubmit:L(le,["prevent"]),onKeydown:l[1]||(l[1]=n=>e(t).onKeydown(n))},[s("div",Ze,[s("div",Xe,[s("div",et,[e(C).errors.hasAny("icon")?(a(),E(k,{key:0,error:e(C).errors.get("icon"),field:"icon",class:"help-for-file"},null,8,["error"])):c("",!0),e(i)?c("",!0):(a(),u("label",tt,[s("input",{class:"file-input",type:"file",accept:"image/*",onChange:ne,ref_key:"iconInput",ref:K},null,544),r(D,{icon:["fas","image"],size:"2x"})])),e(i)?(a(),u("button",{key:2,class:"delete delete-icon-button is-medium",onClick:L(F,["prevent"])},null,8,ot)):c("",!0),r(_e,Z({ref_key:"OtpDisplayForQuickForm",ref:A},e(t).data(),{onIncrementHotp:ae,onValidationError:re,onPleaseCloseMe:l[0]||(l[0]=n=>V.value=!1)}),null,16)])]),s("div",lt,[e(t).errors.any()?(a(),u("div",st,[(a(!0),u(X,null,pe(e(t).errors.errors,(n,G)=>(a(),u("p",{key:G,class:"help is-danger"},[s("ul",null,[(a(!0),u(X,null,pe(n,(Ce,Te)=>(a(),u("li",{key:Te},g(Ce),1))),128))])]))),128))])):c("",!0)]),s("div",nt,[s("div",at,[s("div",rt,[s("div",it,[r(j,{isLoading:e(t).isBusy},{default:v(()=>[ve(g(o.$t("commons.save")),1)]),_:1},8,["isLoading"])]),r(ue,{action:"cancel",isText:!0,useLinkTag:!1,onCanceled:se})])])])])],40,Ye)):c("",!0),e(U)?(a(),E(Ie,{key:1,title:o.$t(e(m)?"twofaccounts.forms.edit_account":"twofaccounts.forms.new_account")},{default:v(()=>[s("form",{onSubmit:L(ke,["prevent"]),onKeydown:l[12]||(l[12]=n=>e(t).onKeydown(n))},[e(m)?c("",!0):(a(),u("div",ut,[s("div",dt,[r(e(H),null,{default:v(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:$(["file is-small",{"is-black":n=="dark"}]),onKeyup:l[2]||(l[2]=he(G=>e(ee).click(),["enter"]))},[s("label",{class:"file-label",title:o.$t("twofaccounts.forms.use_qrcode.title"),ref_key:"qrcodeInputLabel",ref:ee},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:Ve,ref_key:"qrcodeInput",ref:te},null,544),s("span",pt,[s("span",mt,[r(D,{icon:["fas","qrcode"],size:"lg"})]),s("span",vt,g(o.$t("twofaccounts.forms.prefill_using_qrcode")),1)])],8,ft)],34)]),_:1})])])),e(O).errors.hasAny("qrcode")?(a(),E(k,{key:1,error:e(O).errors.get("qrcode"),field:"qrcode",class:"help-for-file"},null,8,["error"])):c("",!0),r(z,{modelValue:e(t).service,"onUpdate:modelValue":l[3]||(l[3]=n=>e(t).service=n),fieldName:"service",fieldError:e(t).errors.get("email"),isDisabled:e(t).otp_type==="steamtotp",label:"twofaccounts.service",placeholder:o.$t("twofaccounts.forms.service.placeholder"),autofocus:""},null,8,["modelValue","fieldError","isDisabled","placeholder"]),r(z,{modelValue:e(t).account,"onUpdate:modelValue":l[4]||(l[4]=n=>e(t).account=n),fieldName:"account",fieldError:e(t).errors.get("account"),label:"twofaccounts.account",placeholder:o.$t("twofaccounts.forms.account.placeholder")},null,8,["modelValue","fieldError","placeholder"]),s("label",ht,g(o.$t("twofaccounts.icon")),1),s("div",_t,[e(_).preferences.getOfficialIcons?(a(),u("div",gt,[r(e(H),null,{default:v(({mode:n})=>[r(j,{onClick:ie,color:n=="dark"?"is-dark":"",nativeType:"button","is-loading":e(P),isDisabled:!e(t).service},{default:v(()=>[s("span",yt,[r(D,{icon:["fas","globe"]})]),s("span",null,g(o.$t("twofaccounts.forms.i_m_lucky")),1)]),_:2},1032,["color","is-loading","isDisabled"])]),_:1})])):c("",!0),s("div",bt,[r(e(H),null,{default:v(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:$(["file mr-3",n=="dark"?"is-dark":"is-white"]),onKeyup:l[5]||(l[5]=he(G=>e(oe).click(),["enter"]))},[s("label",{class:"file-label",ref_key:"iconInputLabel",ref:oe},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:ne,ref_key:"iconInput",ref:K},null,544),s("span",wt,[s("span",kt,[r(D,{icon:["fas","upload"]})]),s("span",Et,g(o.$t("twofaccounts.forms.choose_image")),1)])],512)],34),e(i)?(a(),u("span",{key:0,class:$(["tag is-large",n=="dark"?"is-dark":"is-white"])},[s("img",{class:"icon-preview",src:e(q).config.subdirectory+"/storage/icons/"+e(i),alt:o.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,$t),s("button",{class:"clear-selection delete is-small",onClick:L(F,["prevent"]),"aria-label":o.$t("twofaccounts.remove_icon")},null,8,Vt)],2)):c("",!0)]),_:1})])]),s("div",Ft,[e(C).errors.hasAny("icon")?(a(),E(k,{key:0,error:e(C).errors.get("icon"),field:"icon",class:"help-for-file"},null,8,["error"])):c("",!0),e(_).preferences.getOfficialIcons?(a(),u("p",{key:1,class:"help",innerHTML:o.$t("twofaccounts.forms.i_m_lucky_legend")},null,8,It)):c("",!0)]),r(R,{modelValue:e(t).otp_type,"onUpdate:modelValue":l[6]||(l[6]=n=>e(t).otp_type=n),isDisabled:e(m),choices:ye,fieldName:"otp_type",fieldError:e(t).errors.get("otp_type"),label:"twofaccounts.forms.otp_type.label",help:"twofaccounts.forms.otp_type.help",hasOffset:!0},null,8,["modelValue","isDisabled","fieldError"]),e(t).otp_type!=""?(a(),u("div",Ct,[r(ge,{isEditMode:e(m),modelValue:e(t).secret,"onUpdate:modelValue":l[7]||(l[7]=n=>e(t).secret=n),fieldName:"secret",fieldError:e(t).errors.get("secret"),label:"twofaccounts.forms.secret.label",help:"twofaccounts.forms.secret.help"},null,8,["isEditMode","modelValue","fieldError"]),e(t).otp_type!=="steamtotp"?(a(),u("div",Tt,[s("h2",xt,g(o.$t("commons.options")),1),s("p",Lt,g(o.$t("twofaccounts.forms.options_help")),1),r(R,{modelValue:e(t).digits,"onUpdate:modelValue":l[8]||(l[8]=n=>e(t).digits=n),choices:be,fieldName:"digits",fieldError:e(t).errors.get("digits"),label:"twofaccounts.forms.digits.label",help:"twofaccounts.forms.digits.help"},null,8,["modelValue","fieldError"]),r(R,{modelValue:e(t).algorithm,"onUpdate:modelValue":l[9]||(l[9]=n=>e(t).algorithm=n),choices:we,fieldName:"algorithm",fieldError:e(t).errors.get("algorithm"),label:"twofaccounts.forms.algorithm.label",help:"twofaccounts.forms.algorithm.help"},null,8,["modelValue","fieldError"]),e(t).otp_type==="totp"?(a(),E(z,{key:0,pattern:"[0-9]{1,4}",class:$("is-third-width-field"),modelValue:e(t).period,"onUpdate:modelValue":l[10]||(l[10]=n=>e(t).period=n),fieldName:"period",fieldError:e(t).errors.get("period"),label:"twofaccounts.forms.period.label",help:"twofaccounts.forms.period.help",placeholder:o.$t("twofaccounts.forms.period.placeholder")},null,8,["modelValue","fieldError","placeholder"])):c("",!0),e(t).otp_type==="hotp"?(a(),E(ge,{key:1,pattern:"[0-9]{1,4}",isEditMode:e(m),isExpanded:!1,modelValue:e(t).counter,"onUpdate:modelValue":l[11]||(l[11]=n=>e(t).counter=n),fieldName:"counter",fieldError:e(t).errors.get("counter"),label:"twofaccounts.forms.counter.label",placeholder:o.$t("twofaccounts.forms.counter.placeholder"),help:e(m)?"twofaccounts.forms.counter.help_lock":"twofaccounts.forms.counter.help"},null,8,["isEditMode","modelValue","fieldError","placeholder","help"])):c("",!0)])):c("",!0)])):c("",!0),r(Fe,{showButtons:!0},{default:v(()=>[s("p",Mt,[r(j,{id:e(m)?"btnUpdate":"btnCreate",isLoading:e(t).isBusy,class:"is-rounded"},{default:v(()=>[ve(g(e(m)?o.$t("commons.save"):o.$t("commons.create")),1)]),_:1},8,["id","isLoading"])]),e(t).otp_type&&e(t).secret?(a(),u("p",St,[s("button",{id:"btnPreview",type:"button",class:"button is-success is-rounded",onClick:$e},g(o.$t("twofaccounts.forms.test")),1)])):c("",!0),r(ue,{action:"cancel",useLinkTag:!1,onCanceled:se})]),_:1})],40,ct),r(de,{modelValue:e(V),"onUpdate:modelValue":l[14]||(l[14]=n=>me(V)?V.value=n:null)},{default:v(()=>[r(_e,Z({ref_key:"OtpDisplayForAdvancedForm",ref:Q},e(t).data(),{onIncrementHotp:ae,onValidationError:re,onPleaseCloseMe:l[13]||(l[13]=n=>V.value=!1)}),null,16)]),_:1},8,["modelValue"])]),_:1},8,["title"])):c("",!0),r(de,{modelValue:e(N),"onUpdate:modelValue":l[15]||(l[15]=n=>me(N)?N.value=n:null)},{default:v(()=>[r(Ae,{qrContent:e(S)},null,8,["qrContent"])]),_:1},8,["modelValue"])])}}};export{Dt as default}; +import{Y as xe,r as f,e as h,f as a,g as u,h as s,i as e,n as $,T as Z,k as E,p as v,D as L,m as r,U as H,l as c,F as X,P as Le,u as Me,Z as Se,a as Be,c as Ne,b as qe,d as W,v as Oe,o as Ue,J as T,O as fe,x as J,G as pe,E as me,t as g,j as ve,w as he,I as x}from"./app-347ef106.js";import{F as Y}from"./Form-893a9a1a.js";import{_ as _e}from"./OtpDisplay-1a3c1737.js";import{_ as Ae}from"./QrContentDisplay-1d6d5b3f.js";import{u as De}from"./bus-2e7bf732.js";import"./Spinner-8bfb7257.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const He={class:"field",style:{"margin-bottom":"0.5rem"}},Pe=["for","innerHTML"],Ke=["disabled","id","type","value","placeholder","maxlength"],Qe={key:0,class:"control"},je=["title"],ze={class:"icon"},Re={key:1,class:"control"},Ge=["title"],We={class:"icon has-text-danger"},Je=["innerHTML"],ge=Object.assign({inheritAttrs:!1},{__name:"FormLockField",props:{modelValue:[String,Number,Boolean],isEditMode:{type:Boolean,default:!1},label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],inputType:{type:String,default:"text"},placeholder:{type:String,default:""},help:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},isExpanded:{type:Boolean,default:!0},maxLength:{type:Number,default:null}},setup(d){const b=d,{inputId:q}=xe(b.inputType,b.fieldName),y=f(b.isDisabled||b.isEditMode);return(w,_)=>{const I=h("FontAwesomeIcon"),M=h("FieldError");return a(),u(X,null,[s("div",He,[s("label",{for:e(q),class:"label",innerHTML:w.$t(d.label)},null,8,Pe)]),s("div",{class:$(["field has-addons",{"pt-3":d.hasOffset}])},[s("div",{class:$(["control",{"is-expanded":d.isExpanded}])},[s("input",Z({disabled:e(y),id:e(q),type:d.inputType,class:"input",value:d.modelValue,placeholder:d.placeholder},w.$attrs,{onInput:_[0]||(_[0]=p=>w.$emit("update:modelValue",p.target.value)),maxlength:d.maxLength}),null,16,Ke)],2),d.isEditMode?(a(),E(e(H),{key:0},{default:v(({mode:p})=>[e(y)?(a(),u("div",Qe,[s("button",{type:"button",class:$(["button field-lock",{"is-dark":p=="dark"}]),onClick:_[1]||(_[1]=L(t=>y.value=!1,["stop"])),title:w.$t("twofaccounts.forms.unlock.title")},[s("span",ze,[r(I,{icon:["fas","lock"]})])],10,je)])):(a(),u("div",Re,[s("button",{type:"button",class:$(["button field-unlock",{"is-dark":p=="dark"}]),onClick:_[2]||(_[2]=L(t=>y.value=!0,["stop"])),title:w.$t("twofaccounts.forms.lock.title")},[s("span",We,[r(I,{icon:["fas","lock-open"]})])],10,Ge)]))]),_:1})):c("",!0)],2),d.fieldError!=null?(a(),E(M,{key:0,error:d.fieldError,field:d.fieldName},null,8,["error","field"])):c("",!0),d.help?(a(),u("p",{key:1,class:"help",innerHTML:w.$t(d.help)},null,8,Je)):c("",!0)],64)}}}),Ye=["onSubmit"],Ze={class:"container preview has-text-centered"},Xe={class:"columns is-mobile"},et={class:"column"},tt={key:1,class:"add-icon-button"},ot=["onClick"],lt={class:"columns is-mobile",role:"alert"},st={key:0,class:"column"},nt={class:"columns is-mobile"},at={class:"column quickform-footer"},rt={class:"field is-grouped is-grouped-centered"},it={class:"control"},ct=["onSubmit"],ut={key:0,class:"field is-grouped"},dt={class:"control"},ft=["title"],pt={class:"file-cta"},mt={class:"file-icon"},vt={class:"file-label"},ht={class:"label"},_t={class:"field is-grouped"},gt={key:0,class:"control"},yt={class:"icon is-small"},bt={class:"control is-flex"},wt={class:"file-cta"},kt={class:"file-icon"},Et={class:"file-label"},$t=["src","alt"],Vt=["onClick","aria-label"],Ft={class:"field"},It=["innerHTML"],Ct={key:2},Tt={key:0},xt={class:"title is-4 mt-5 mb-2"},Lt={class:"help mb-4"},Mt={class:"control"},St={key:0,class:"control"},Dt={__name:"CreateUpdate",props:{twofaccountId:[Number,String]},setup(d){const b=d,q=Le("2fauth"),y=Me(),w=Se(),_=Be(),I=Ne(),M=De(),p=qe(),t=W(new Y({service:"",account:"",otp_type:"",icon:"",secret:"",algorithm:"",digits:null,counter:null,period:null,image:""})),O=W(new Y({qrcode:null})),C=W(new Y({icon:null})),ye=[{text:"TOTP",value:"totp"},{text:"HOTP",value:"hotp"},{text:"STEAM",value:"steamtotp"}],be=[{text:"6",value:6},{text:"7",value:7},{text:"8",value:8},{text:"9",value:9},{text:"10",value:10}],we=[{text:"sha1",value:"sha1"},{text:"sha256",value:"sha256"},{text:"sha512",value:"sha512"},{text:"md5",value:"md5"}],S=f(),i=f(""),B=f(!1),N=f(!1),U=f(!1),V=f(!1),P=f(!1),K=f(null),A=f(null),Q=f(null),ee=f(null),te=f(null),oe=f(null),m=Oe(()=>b.twofaccountId!=null);Ue(()=>{w.name=="editAccount"?T.get(b.twofaccountId).then(o=>{t.fill(o.data),t.setOriginal(),i.value=t.icon,U.value=!0}):M.decodedUri?(S.value=M.decodedUri,M.decodedUri=null,T.preview(S.value).then(o=>{t.fill(o.data),i.value=o.data.icon?o.data.icon:"",B.value=!0,fe().then(()=>{A.value.show()})}).catch(o=>{o.response.data.errors.uri&&(N.value=!0,U.value=!0)})):U.value=!0}),J(i,o=>{B.value&&fe().then(()=>{A.value.icon=o})}),J(V,o=>{var l,k;o==!1&&((l=Q.value)==null||l.clearOTP(),(k=A.value)==null||k.clearOTP())}),J(()=>t.otp_type,(o,l)=>{o==="steamtotp"?(t.service="Steam",ie()):l==="steamtotp"&&(t.service="",F())});function ke(){m.value?Ee():le()}async function le(){t.icon=i.value;const{data:o}=await t.post("/api/v1/twofaccounts");t.errors.any()===!1&&(I.items.push(o),p.success({text:x("twofaccounts.account_created")}),y.push({name:"accounts"}))}async function Ee(){if(i.value!==t.icon){let l="";l=t.icon,t.icon=i.value,i.value=l,F()}const{data:o}=await t.put("/api/v1/twofaccounts/"+b.twofaccountId);if(t.errors.any()===!1){const l=I.items.findIndex(k=>k.id===o.id);I.items.splice(l,1,o),p.success({text:x("twofaccounts.account_updated")}),y.push({name:"accounts"})}}function $e(){t.clear(),V.value=!0,Q.value.show()}function se(){t.hasChanged()||i.value!=t.icon?confirm(x("twofaccounts.confirm.cancel"))===!0&&((!m.value||i.value!=t.icon)&&F(),y.push({name:"accounts"})):y.push({name:"accounts"})}function ne(){F(),C.icon=K.value.files[0],C.upload("/api/v1/icons",{returnError:!0}).then(o=>{i.value=o.data.filename,B.value&&(t.icon=i.value)}).catch(o=>{o.response.status!==422&&p.alert({text:o.response.data.message})})}function F(){m.value?i.value&&(i.value!==t.icon&&T.deleteIcon(i.value),i.value=""):i.value&&(T.deleteIcon(i.value),i.value="",B.value&&(t.icon=""))}function ae(o){t.counter=o.nextHotpCounter}function re(o){t.errors.set(t.extractErrors(o))}function Ve(){O.qrcode=te.value.files[0],O.upload("/api/v1/qrcode/decode",{returnError:!0}).then(o=>{S.value=o.data.data,T.preview(S.value,{returnError:!0}).then(l=>{t.fill(l.data),i.value=l.data.icon?l.data.icon:null}).catch(l=>{l.response.status===422?l.response.data.errors.uri?N.value=!0:p.alert({text:x(l.response.data.message)}):p.error(l)})}).catch(o=>{o.response.status!==422&&p.alert({text:o.response.data.message})})}function ie(){_.preferences.getOfficialIcons&&(P.value=!0,T.getLogo(t.service,{returnError:!0}).then(o=>{o.status===201?(F(),i.value=o.data.filename):p.warn({text:x("errors.no_logo_found_for_x",{service:ce(t.service)})})}).catch(()=>{p.warn({text:x("errors.no_logo_found_for_x",{service:ce(t.service)})})}).finally(()=>{P.value=!1}))}function ce(o){return o.replace(/(<([^> ]+)>)/ig,"")}return(o,l)=>{const k=h("FieldError"),D=h("FontAwesomeIcon"),j=h("VueButton"),ue=h("ButtonBackCloseCancel"),z=h("FormField"),R=h("FormToggle"),Fe=h("VueFooter"),de=h("modal"),Ie=h("FormWrapper");return a(),u("div",null,[!e(m)&&e(B)?(a(),u("form",{key:0,onSubmit:L(le,["prevent"]),onKeydown:l[1]||(l[1]=n=>e(t).onKeydown(n))},[s("div",Ze,[s("div",Xe,[s("div",et,[e(C).errors.hasAny("icon")?(a(),E(k,{key:0,error:e(C).errors.get("icon"),field:"icon",class:"help-for-file"},null,8,["error"])):c("",!0),e(i)?c("",!0):(a(),u("label",tt,[s("input",{class:"file-input",type:"file",accept:"image/*",onChange:ne,ref_key:"iconInput",ref:K},null,544),r(D,{icon:["fas","image"],size:"2x"})])),e(i)?(a(),u("button",{key:2,class:"delete delete-icon-button is-medium",onClick:L(F,["prevent"])},null,8,ot)):c("",!0),r(_e,Z({ref_key:"OtpDisplayForQuickForm",ref:A},e(t).data(),{onIncrementHotp:ae,onValidationError:re,onPleaseCloseMe:l[0]||(l[0]=n=>V.value=!1)}),null,16)])]),s("div",lt,[e(t).errors.any()?(a(),u("div",st,[(a(!0),u(X,null,pe(e(t).errors.errors,(n,G)=>(a(),u("p",{key:G,class:"help is-danger"},[s("ul",null,[(a(!0),u(X,null,pe(n,(Ce,Te)=>(a(),u("li",{key:Te},g(Ce),1))),128))])]))),128))])):c("",!0)]),s("div",nt,[s("div",at,[s("div",rt,[s("div",it,[r(j,{isLoading:e(t).isBusy},{default:v(()=>[ve(g(o.$t("commons.save")),1)]),_:1},8,["isLoading"])]),r(ue,{action:"cancel",isText:!0,useLinkTag:!1,onCanceled:se})])])])])],40,Ye)):c("",!0),e(U)?(a(),E(Ie,{key:1,title:o.$t(e(m)?"twofaccounts.forms.edit_account":"twofaccounts.forms.new_account")},{default:v(()=>[s("form",{onSubmit:L(ke,["prevent"]),onKeydown:l[12]||(l[12]=n=>e(t).onKeydown(n))},[e(m)?c("",!0):(a(),u("div",ut,[s("div",dt,[r(e(H),null,{default:v(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:$(["file is-small",{"is-black":n=="dark"}]),onKeyup:l[2]||(l[2]=he(G=>e(ee).click(),["enter"]))},[s("label",{class:"file-label",title:o.$t("twofaccounts.forms.use_qrcode.title"),ref_key:"qrcodeInputLabel",ref:ee},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:Ve,ref_key:"qrcodeInput",ref:te},null,544),s("span",pt,[s("span",mt,[r(D,{icon:["fas","qrcode"],size:"lg"})]),s("span",vt,g(o.$t("twofaccounts.forms.prefill_using_qrcode")),1)])],8,ft)],34)]),_:1})])])),e(O).errors.hasAny("qrcode")?(a(),E(k,{key:1,error:e(O).errors.get("qrcode"),field:"qrcode",class:"help-for-file"},null,8,["error"])):c("",!0),r(z,{modelValue:e(t).service,"onUpdate:modelValue":l[3]||(l[3]=n=>e(t).service=n),fieldName:"service",fieldError:e(t).errors.get("email"),isDisabled:e(t).otp_type==="steamtotp",label:"twofaccounts.service",placeholder:o.$t("twofaccounts.forms.service.placeholder"),autofocus:""},null,8,["modelValue","fieldError","isDisabled","placeholder"]),r(z,{modelValue:e(t).account,"onUpdate:modelValue":l[4]||(l[4]=n=>e(t).account=n),fieldName:"account",fieldError:e(t).errors.get("account"),label:"twofaccounts.account",placeholder:o.$t("twofaccounts.forms.account.placeholder")},null,8,["modelValue","fieldError","placeholder"]),s("label",ht,g(o.$t("twofaccounts.icon")),1),s("div",_t,[e(_).preferences.getOfficialIcons?(a(),u("div",gt,[r(e(H),null,{default:v(({mode:n})=>[r(j,{onClick:ie,color:n=="dark"?"is-dark":"",nativeType:"button","is-loading":e(P),isDisabled:!e(t).service},{default:v(()=>[s("span",yt,[r(D,{icon:["fas","globe"]})]),s("span",null,g(o.$t("twofaccounts.forms.i_m_lucky")),1)]),_:2},1032,["color","is-loading","isDisabled"])]),_:1})])):c("",!0),s("div",bt,[r(e(H),null,{default:v(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:$(["file mr-3",n=="dark"?"is-dark":"is-white"]),onKeyup:l[5]||(l[5]=he(G=>e(oe).click(),["enter"]))},[s("label",{class:"file-label",ref_key:"iconInputLabel",ref:oe},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:ne,ref_key:"iconInput",ref:K},null,544),s("span",wt,[s("span",kt,[r(D,{icon:["fas","upload"]})]),s("span",Et,g(o.$t("twofaccounts.forms.choose_image")),1)])],512)],34),e(i)?(a(),u("span",{key:0,class:$(["tag is-large",n=="dark"?"is-dark":"is-white"])},[s("img",{class:"icon-preview",src:e(q).config.subdirectory+"/storage/icons/"+e(i),alt:o.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,$t),s("button",{class:"clear-selection delete is-small",onClick:L(F,["prevent"]),"aria-label":o.$t("twofaccounts.remove_icon")},null,8,Vt)],2)):c("",!0)]),_:1})])]),s("div",Ft,[e(C).errors.hasAny("icon")?(a(),E(k,{key:0,error:e(C).errors.get("icon"),field:"icon",class:"help-for-file"},null,8,["error"])):c("",!0),e(_).preferences.getOfficialIcons?(a(),u("p",{key:1,class:"help",innerHTML:o.$t("twofaccounts.forms.i_m_lucky_legend")},null,8,It)):c("",!0)]),r(R,{modelValue:e(t).otp_type,"onUpdate:modelValue":l[6]||(l[6]=n=>e(t).otp_type=n),isDisabled:e(m),choices:ye,fieldName:"otp_type",fieldError:e(t).errors.get("otp_type"),label:"twofaccounts.forms.otp_type.label",help:"twofaccounts.forms.otp_type.help",hasOffset:!0},null,8,["modelValue","isDisabled","fieldError"]),e(t).otp_type!=""?(a(),u("div",Ct,[r(ge,{isEditMode:e(m),modelValue:e(t).secret,"onUpdate:modelValue":l[7]||(l[7]=n=>e(t).secret=n),fieldName:"secret",fieldError:e(t).errors.get("secret"),label:"twofaccounts.forms.secret.label",help:"twofaccounts.forms.secret.help"},null,8,["isEditMode","modelValue","fieldError"]),e(t).otp_type!=="steamtotp"?(a(),u("div",Tt,[s("h2",xt,g(o.$t("commons.options")),1),s("p",Lt,g(o.$t("twofaccounts.forms.options_help")),1),r(R,{modelValue:e(t).digits,"onUpdate:modelValue":l[8]||(l[8]=n=>e(t).digits=n),choices:be,fieldName:"digits",fieldError:e(t).errors.get("digits"),label:"twofaccounts.forms.digits.label",help:"twofaccounts.forms.digits.help"},null,8,["modelValue","fieldError"]),r(R,{modelValue:e(t).algorithm,"onUpdate:modelValue":l[9]||(l[9]=n=>e(t).algorithm=n),choices:we,fieldName:"algorithm",fieldError:e(t).errors.get("algorithm"),label:"twofaccounts.forms.algorithm.label",help:"twofaccounts.forms.algorithm.help"},null,8,["modelValue","fieldError"]),e(t).otp_type==="totp"?(a(),E(z,{key:0,pattern:"[0-9]{1,4}",class:$("is-third-width-field"),modelValue:e(t).period,"onUpdate:modelValue":l[10]||(l[10]=n=>e(t).period=n),fieldName:"period",fieldError:e(t).errors.get("period"),label:"twofaccounts.forms.period.label",help:"twofaccounts.forms.period.help",placeholder:o.$t("twofaccounts.forms.period.placeholder")},null,8,["modelValue","fieldError","placeholder"])):c("",!0),e(t).otp_type==="hotp"?(a(),E(ge,{key:1,pattern:"[0-9]{1,4}",isEditMode:e(m),isExpanded:!1,modelValue:e(t).counter,"onUpdate:modelValue":l[11]||(l[11]=n=>e(t).counter=n),fieldName:"counter",fieldError:e(t).errors.get("counter"),label:"twofaccounts.forms.counter.label",placeholder:o.$t("twofaccounts.forms.counter.placeholder"),help:e(m)?"twofaccounts.forms.counter.help_lock":"twofaccounts.forms.counter.help"},null,8,["isEditMode","modelValue","fieldError","placeholder","help"])):c("",!0)])):c("",!0)])):c("",!0),r(Fe,{showButtons:!0},{default:v(()=>[s("p",Mt,[r(j,{id:e(m)?"btnUpdate":"btnCreate",isLoading:e(t).isBusy,class:"is-rounded"},{default:v(()=>[ve(g(e(m)?o.$t("commons.save"):o.$t("commons.create")),1)]),_:1},8,["id","isLoading"])]),e(t).otp_type&&e(t).secret?(a(),u("p",St,[s("button",{id:"btnPreview",type:"button",class:"button is-success is-rounded",onClick:$e},g(o.$t("twofaccounts.forms.test")),1)])):c("",!0),r(ue,{action:"cancel",useLinkTag:!1,onCanceled:se})]),_:1})],40,ct),r(de,{modelValue:e(V),"onUpdate:modelValue":l[14]||(l[14]=n=>me(V)?V.value=n:null)},{default:v(()=>[r(_e,Z({ref_key:"OtpDisplayForAdvancedForm",ref:Q},e(t).data(),{onIncrementHotp:ae,onValidationError:re,onPleaseCloseMe:l[13]||(l[13]=n=>V.value=!1)}),null,16)]),_:1},8,["modelValue"])]),_:1},8,["title"])):c("",!0),r(de,{modelValue:e(N),"onUpdate:modelValue":l[15]||(l[15]=n=>me(N)?N.value=n:null)},{default:v(()=>[r(Ae,{qrContent:e(S)},null,8,["qrContent"])]),_:1},8,["modelValue"])])}}};export{Dt as default}; diff --git a/public/build/assets/CreateUpdate-e5f4aaeb.js b/public/build/assets/CreateUpdate-f9adf383.js similarity index 87% rename from public/build/assets/CreateUpdate-e5f4aaeb.js rename to public/build/assets/CreateUpdate-f9adf383.js index d7bfde49..42d09c2d 100644 --- a/public/build/assets/CreateUpdate-e5f4aaeb.js +++ b/public/build/assets/CreateUpdate-f9adf383.js @@ -1 +1 @@ -import{S as v,u as G,Z as h,v as w,d as y,_ as N,K as S,e as m,f as E,k as I,p as V,i as t,h as C,m as i,D as $}from"./app-72c44b80.js";import{F as k}from"./Form-d325991a.js";import{u as K}from"./bus-222e275f.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const M=["onSubmit"],W={__name:"CreateUpdate",props:{groupId:[Number,String]},setup(c){const s=c,p=v(),d=G(),l=h(),a=K(),r=w(()=>s.groupId!=null),o=y(new k({name:""}));N(()=>{l.name=="editGroup"&&(a.editedGroupName?(o.name=a.editedGroupName,a.editedGroupName=void 0):S.get(s.groupId).then(e=>{o.name=e.data.name}))});function f(){r.value?B():g()}async function g(){o.post("/api/v1/groups").then(e=>{p.addOrEdit(e.data),d.push({name:"groups"})})}async function B(){o.put("/api/v1/groups/"+s.groupId).then(e=>{p.addOrEdit(e.data),d.push({name:"groups"})})}return(e,n)=>{const b=m("FormField"),F=m("FormButtons"),_=m("FormWrapper");return E(),I(_,{title:t(r)?e.$t("groups.forms.rename_group"):e.$t("groups.forms.new_group")},{default:V(()=>[C("form",{onSubmit:$(f,["prevent"]),onKeydown:n[1]||(n[1]=u=>t(o).onKeydown(u))},[i(b,{modelValue:t(o).name,"onUpdate:modelValue":n[0]||(n[0]=u=>t(o).name=u),fieldName:"name",fieldError:t(o).errors.get("name"),label:"commons.name",autofocus:""},null,8,["modelValue","fieldError"]),i(F,{submitId:t(r)?"btnEditGroup":"btnCreateGroup",isBusy:t(o).isBusy,caption:t(r)?e.$t("commons.save"):e.$t("commons.create"),showCancelButton:!0,cancelLandingView:"groups"},null,8,["submitId","isBusy","caption"])],40,M)]),_:1},8,["title"])}}};export{W as default}; +import{S as v,u as G,Z as h,v as w,d as y,_ as N,K as S,e as m,f as E,k as I,p as V,i as t,h as C,m as i,D as $}from"./app-347ef106.js";import{F as k}from"./Form-893a9a1a.js";import{u as K}from"./bus-2e7bf732.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const M=["onSubmit"],W={__name:"CreateUpdate",props:{groupId:[Number,String]},setup(c){const s=c,p=v(),d=G(),l=h(),a=K(),r=w(()=>s.groupId!=null),o=y(new k({name:""}));N(()=>{l.name=="editGroup"&&(a.editedGroupName?(o.name=a.editedGroupName,a.editedGroupName=void 0):S.get(s.groupId).then(e=>{o.name=e.data.name}))});function f(){r.value?B():g()}async function g(){o.post("/api/v1/groups").then(e=>{p.addOrEdit(e.data),d.push({name:"groups"})})}async function B(){o.put("/api/v1/groups/"+s.groupId).then(e=>{p.addOrEdit(e.data),d.push({name:"groups"})})}return(e,n)=>{const b=m("FormField"),F=m("FormButtons"),_=m("FormWrapper");return E(),I(_,{title:t(r)?e.$t("groups.forms.rename_group"):e.$t("groups.forms.new_group")},{default:V(()=>[C("form",{onSubmit:$(f,["prevent"]),onKeydown:n[1]||(n[1]=u=>t(o).onKeydown(u))},[i(b,{modelValue:t(o).name,"onUpdate:modelValue":n[0]||(n[0]=u=>t(o).name=u),fieldName:"name",fieldError:t(o).errors.get("name"),label:"commons.name",autofocus:""},null,8,["modelValue","fieldError"]),i(F,{submitId:t(r)?"btnEditGroup":"btnCreateGroup",isBusy:t(o).isBusy,caption:t(r)?e.$t("commons.save"):e.$t("commons.create"),showCancelButton:!0,cancelLandingView:"groups"},null,8,["submitId","isBusy","caption"])],40,M)]),_:1},8,["title"])}}};export{W as default}; diff --git a/public/build/assets/Edit-c86faad0.js b/public/build/assets/Edit-92d4ec4b.js similarity index 89% rename from public/build/assets/Edit-c86faad0.js rename to public/build/assets/Edit-92d4ec4b.js index 6fa22af8..5c0c9b87 100644 --- a/public/build/assets/Edit-c86faad0.js +++ b/public/build/assets/Edit-92d4ec4b.js @@ -1 +1 @@ -import{u as h,b as w,d as b,I as a,e as s,f as y,k as F,p as v,h as B,m as r,i as t,D as g}from"./app-72c44b80.js";import{F as V}from"./Form-d325991a.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const C=["onSubmit"],I={__name:"Edit",props:{credentialId:{type:String,default:""}},setup(i){const u=i,m=h(),d=w(),e=b(new V({name:a("auth.webauthn.my_device")}));function c(){e.patch("/webauthn/credentials/"+u.credentialId+"/name").then(()=>{d.success({text:a("auth.webauthn.device_successfully_registered")}),m.push({name:"settings.webauthn.devices"})})}return(l,n)=>{const p=s("FormField"),f=s("FormButtons"),_=s("FormWrapper");return y(),F(_,{title:"auth.webauthn.rename_device"},{default:v(()=>[B("form",{onSubmit:g(c,["prevent"]),onKeydown:n[1]||(n[1]=o=>t(e).onKeydown(o))},[r(p,{modelValue:t(e).name,"onUpdate:modelValue":n[0]||(n[0]=o=>t(e).name=o),fieldName:"name",fieldError:t(e).errors.get("name"),inputType:"text",label:"commons.new_name",autofocus:""},null,8,["modelValue","fieldError"]),r(f,{submitId:"btnEditCredential",isBusy:t(e).isBusy,caption:l.$t("commons.save"),showCancelButton:!0,cancelLandingView:"settings.webauthn.devices"},null,8,["isBusy","caption"])],40,C)]),_:1})}}};export{I as default}; +import{u as h,b as w,d as b,I as a,e as s,f as y,k as F,p as v,h as B,m as r,i as t,D as g}from"./app-347ef106.js";import{F as V}from"./Form-893a9a1a.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const C=["onSubmit"],I={__name:"Edit",props:{credentialId:{type:String,default:""}},setup(i){const u=i,m=h(),d=w(),e=b(new V({name:a("auth.webauthn.my_device")}));function c(){e.patch("/webauthn/credentials/"+u.credentialId+"/name").then(()=>{d.success({text:a("auth.webauthn.device_successfully_registered")}),m.push({name:"settings.webauthn.devices"})})}return(l,n)=>{const p=s("FormField"),f=s("FormButtons"),_=s("FormWrapper");return y(),F(_,{title:"auth.webauthn.rename_device"},{default:v(()=>[B("form",{onSubmit:g(c,["prevent"]),onKeydown:n[1]||(n[1]=o=>t(e).onKeydown(o))},[r(p,{modelValue:t(e).name,"onUpdate:modelValue":n[0]||(n[0]=o=>t(e).name=o),fieldName:"name",fieldError:t(e).errors.get("name"),inputType:"text",label:"commons.new_name",autofocus:""},null,8,["modelValue","fieldError"]),r(f,{submitId:"btnEditCredential",isBusy:t(e).isBusy,caption:l.$t("commons.save"),showCancelButton:!0,cancelLandingView:"settings.webauthn.devices"},null,8,["isBusy","caption"])],40,C)]),_:1})}}};export{I as default}; diff --git a/public/build/assets/Error-6fa6dad0.js b/public/build/assets/Error-c8fed33f.js similarity index 95% rename from public/build/assets/Error-6fa6dad0.js rename to public/build/assets/Error-c8fed33f.js index b54c72a4..a8802e89 100644 --- a/public/build/assets/Error-6fa6dad0.js +++ b/public/build/assets/Error-c8fed33f.js @@ -1 +1 @@ -import{b as y,u as b,Z as k,r as v,v as V,x as w,o as N,I as x,e as B,f as r,g as t,m as M,p as $,i as e,E as q,h as l,t as n,l as c,j as C}from"./app-72c44b80.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const E={key:0,class:"error-message"},R=l("p",{class:"error-404"},null,-1),D={key:1,class:"error-message"},F=l("p",{class:"error-generic"},null,-1),S={key:0,class:"has-text-grey-lighter"},j={key:1,class:"has-text-grey-lighter"},z={key:2,class:"is-size-7 is-family-code"},H=l("br",null,null,-1),T={__name:"Error",props:{closable:{type:Boolean,default:!0}},setup(m){const p=m,s=y(),d=b(),a=k(),u=v(!0),_=V(()=>!1);w(u,o=>{o==!1&&g()}),N(()=>{a.query.err&&(s.message=x("errors."+a.query.err))});function g(){window.history.length>1&&a.name!=="404"&&a.name!=="notFound"&&!a.query.err?d.go(-1):d.push({name:"accounts"})}return(o,i)=>{const h=B("modal");return r(),t("div",null,[M(h,{modelValue:e(u),"onUpdate:modelValue":i[0]||(i[0]=f=>q(u)?u.value=f:null),closable:p.closable},{default:$(()=>[o.$route.name=="404"||o.$route.name=="notFound"?(r(),t("div",E,[R,l("p",null,n(o.$t("errors.resource_not_found")),1)])):(r(),t("div",D,[F,l("p",null,n(o.$t("errors.error_occured")),1),e(s).message?(r(),t("p",S,n(e(s).message),1)):c("",!0),e(s).originalMessage?(r(),t("p",j,n(e(s).originalMessage),1)):c("",!0),e(_)&&e(s).debug?(r(),t("p",z,[H,C(n(e(s).debug),1)])):c("",!0)]))]),_:1},8,["modelValue","closable"])])}}};export{T as default}; +import{b as y,u as b,Z as k,r as v,v as V,x as w,o as N,I as x,e as B,f as r,g as t,m as M,p as $,i as e,E as q,h as l,t as n,l as c,j as C}from"./app-347ef106.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const E={key:0,class:"error-message"},R=l("p",{class:"error-404"},null,-1),D={key:1,class:"error-message"},F=l("p",{class:"error-generic"},null,-1),S={key:0,class:"has-text-grey-lighter"},j={key:1,class:"has-text-grey-lighter"},z={key:2,class:"is-size-7 is-family-code"},H=l("br",null,null,-1),T={__name:"Error",props:{closable:{type:Boolean,default:!0}},setup(m){const p=m,s=y(),d=b(),a=k(),u=v(!0),_=V(()=>!1);w(u,o=>{o==!1&&g()}),N(()=>{a.query.err&&(s.message=x("errors."+a.query.err))});function g(){window.history.length>1&&a.name!=="404"&&a.name!=="notFound"&&!a.query.err?d.go(-1):d.push({name:"accounts"})}return(o,i)=>{const h=B("modal");return r(),t("div",null,[M(h,{modelValue:e(u),"onUpdate:modelValue":i[0]||(i[0]=f=>q(u)?u.value=f:null),closable:p.closable},{default:$(()=>[o.$route.name=="404"||o.$route.name=="notFound"?(r(),t("div",E,[R,l("p",null,n(o.$t("errors.resource_not_found")),1)])):(r(),t("div",D,[F,l("p",null,n(o.$t("errors.error_occured")),1),e(s).message?(r(),t("p",S,n(e(s).message),1)):c("",!0),e(s).originalMessage?(r(),t("p",j,n(e(s).originalMessage),1)):c("",!0),e(_)&&e(s).debug?(r(),t("p",z,[H,C(n(e(s).debug),1)])):c("",!0)]))]),_:1},8,["modelValue","closable"])])}}};export{T as default}; diff --git a/public/build/assets/Form-d325991a.js b/public/build/assets/Form-893a9a1a.js similarity index 98% rename from public/build/assets/Form-d325991a.js rename to public/build/assets/Form-893a9a1a.js index 4116a82f..f60ff2e8 100644 --- a/public/build/assets/Form-d325991a.js +++ b/public/build/assets/Form-893a9a1a.js @@ -1 +1 @@ -import{a1 as l}from"./app-72c44b80.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */class f{constructor(){this.errors={}}set(t,s){typeof t=="object"?this.errors=t:this.set({...this.errors,[t]:c(s)})}all(){return this.errors}has(t){return this.errors.hasOwnProperty(t)}hasAny(...t){return t.some(s=>this.has(s))}any(){return Object.keys(this.errors).length>0}get(t){if(this.has(t))return this.getAll(t)[0]}getAll(t){return c(this.errors[t]||[])}only(...t){const s=[];return t.forEach(r=>{const e=this.get(r);e&&s.push(e)}),s}flatten(){return Object.values(this.errors).reduce((t,s)=>t.concat(s),[])}clear(t){const s={};t&&Object.keys(this.errors).forEach(r=>{r!==t&&(s[r]=this.errors[r])}),this.set(s)}}function c(o){return Array.isArray(o)?o:[o]}class i{constructor(t={}){this.axios=l("web"),this.isBusy=!1,this.isDisabled=!1,this.errors=new f,this.originalData=this.deepCopy(t),Object.assign(this,t)}fill(t){this.keys().forEach(s=>{this[s]=t[s]})}setOriginal(){Object.keys(this).filter(t=>!i.ignore.includes(t)).forEach(t=>{this.originalData[t]=this.deepCopy(this[t])})}hasChanged(){return this.keys().some(t=>this[t]!==this.originalData[t])}fillWithKeyValueObject(t){this.keys().forEach(s=>{const r=t.find(e=>e.key===s.toString());r!=null&&(this[s]=r.value)})}data(){return this.keys().reduce((t,s)=>({...t,[s]:this[s]}),{})}keys(){return Object.keys(this).filter(t=>!i.ignore.includes(t))}startProcessing(){this.errors.clear(),this.isBusy=!0}finishProcessing(){this.isBusy=!1}clear(){this.errors.clear()}reset(){Object.keys(this).filter(t=>!i.ignore.includes(t)).forEach(t=>{this[t]=this.deepCopy(this.originalData[t])})}get(t,s={}){return this.submit("get",t,s)}post(t,s={}){return this.submit("post",t,s)}patch(t,s={}){return this.submit("patch",t,s)}put(t,s={}){return this.submit("put",t,s)}delete(t,s={}){return this.submit("delete",t,s)}submit(t,s,r={}){this.startProcessing();const e=t==="get"?{params:this.data()}:this.data();return new Promise((a,u)=>{this.axios.request({url:this.route(s),method:t,data:e,...r}).then(h=>{this.finishProcessing(),a(h)}).catch(h=>{var n;this.isBusy=!1,h.response&&this.errors.set(this.extractErrors(h.response)),((n=h.response)==null?void 0:n.status)!=422&&u(h)})})}upload(t,s={}){return this.startProcessing(),new Promise((r,e)=>{this.axios.post(this.route(t),this.data(),{headers:{"Content-Type":"multipart/form-data"},...s}).then(a=>{this.finishProcessing(),r(a)}).catch(a=>{this.isBusy=!1,a.response&&this.errors.set(this.extractErrors(a.response)),e(a)})})}extractErrors(t){return!t.data||typeof t.data!="object"?{error:i.errorMessage}:t.data.errors?{...t.data.errors}:t.data.message?{error:t.data.message}:{...t.data}}route(t,s={}){let r=t;return i.routes.hasOwnProperty(t)&&(r=decodeURI(i.routes[t])),typeof s!="object"&&(s={id:s}),Object.keys(s).forEach(e=>{r=r.replace(`{${e}}`,s[e])}),r}onKeydown(t){t.target.name&&this.errors.clear(t.target.name)}deepCopy(t){if(t===null||typeof t!="object")return t;const s=Array.isArray(t)?[]:{};return Object.keys(t).forEach(r=>{s[r]=this.deepCopy(t[r])}),s}}i.routes={};i.errorMessage="Something went wrong. Please try again.";i.ignore=["isBusy","isDisabled","errors","originalData","axios"];export{i as F}; +import{a1 as l}from"./app-347ef106.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */class f{constructor(){this.errors={}}set(t,s){typeof t=="object"?this.errors=t:this.set({...this.errors,[t]:c(s)})}all(){return this.errors}has(t){return this.errors.hasOwnProperty(t)}hasAny(...t){return t.some(s=>this.has(s))}any(){return Object.keys(this.errors).length>0}get(t){if(this.has(t))return this.getAll(t)[0]}getAll(t){return c(this.errors[t]||[])}only(...t){const s=[];return t.forEach(r=>{const e=this.get(r);e&&s.push(e)}),s}flatten(){return Object.values(this.errors).reduce((t,s)=>t.concat(s),[])}clear(t){const s={};t&&Object.keys(this.errors).forEach(r=>{r!==t&&(s[r]=this.errors[r])}),this.set(s)}}function c(o){return Array.isArray(o)?o:[o]}class i{constructor(t={}){this.axios=l("web"),this.isBusy=!1,this.isDisabled=!1,this.errors=new f,this.originalData=this.deepCopy(t),Object.assign(this,t)}fill(t){this.keys().forEach(s=>{this[s]=t[s]})}setOriginal(){Object.keys(this).filter(t=>!i.ignore.includes(t)).forEach(t=>{this.originalData[t]=this.deepCopy(this[t])})}hasChanged(){return this.keys().some(t=>this[t]!==this.originalData[t])}fillWithKeyValueObject(t){this.keys().forEach(s=>{const r=t.find(e=>e.key===s.toString());r!=null&&(this[s]=r.value)})}data(){return this.keys().reduce((t,s)=>({...t,[s]:this[s]}),{})}keys(){return Object.keys(this).filter(t=>!i.ignore.includes(t))}startProcessing(){this.errors.clear(),this.isBusy=!0}finishProcessing(){this.isBusy=!1}clear(){this.errors.clear()}reset(){Object.keys(this).filter(t=>!i.ignore.includes(t)).forEach(t=>{this[t]=this.deepCopy(this.originalData[t])})}get(t,s={}){return this.submit("get",t,s)}post(t,s={}){return this.submit("post",t,s)}patch(t,s={}){return this.submit("patch",t,s)}put(t,s={}){return this.submit("put",t,s)}delete(t,s={}){return this.submit("delete",t,s)}submit(t,s,r={}){this.startProcessing();const e=t==="get"?{params:this.data()}:this.data();return new Promise((a,u)=>{this.axios.request({url:this.route(s),method:t,data:e,...r}).then(h=>{this.finishProcessing(),a(h)}).catch(h=>{var n;this.isBusy=!1,h.response&&this.errors.set(this.extractErrors(h.response)),((n=h.response)==null?void 0:n.status)!=422&&u(h)})})}upload(t,s={}){return this.startProcessing(),new Promise((r,e)=>{this.axios.post(this.route(t),this.data(),{headers:{"Content-Type":"multipart/form-data"},...s}).then(a=>{this.finishProcessing(),r(a)}).catch(a=>{this.isBusy=!1,a.response&&this.errors.set(this.extractErrors(a.response)),e(a)})})}extractErrors(t){return!t.data||typeof t.data!="object"?{error:i.errorMessage}:t.data.errors?{...t.data.errors}:t.data.message?{error:t.data.message}:{...t.data}}route(t,s={}){let r=t;return i.routes.hasOwnProperty(t)&&(r=decodeURI(i.routes[t])),typeof s!="object"&&(s={id:s}),Object.keys(s).forEach(e=>{r=r.replace(`{${e}}`,s[e])}),r}onKeydown(t){t.target.name&&this.errors.clear(t.target.name)}deepCopy(t){if(t===null||typeof t!="object")return t;const s=Array.isArray(t)?[]:{};return Object.keys(t).forEach(r=>{s[r]=this.deepCopy(t[r])}),s}}i.routes={};i.errorMessage="Something went wrong. Please try again.";i.ignore=["isBusy","isDisabled","errors","originalData","axios"];export{i as F}; diff --git a/public/build/assets/Groups-729cd6d1.js b/public/build/assets/Groups-6bce16d4.js similarity index 94% rename from public/build/assets/Groups-729cd6d1.js rename to public/build/assets/Groups-6bce16d4.js index 47ec3ac2..7489ecf9 100644 --- a/public/build/assets/Groups-729cd6d1.js +++ b/public/build/assets/Groups-6bce16d4.js @@ -1 +1 @@ -import{u as C,S as $,r as w,o as z,$ as G,e as c,f as l,k as b,p as u,h as a,t as s,m as t,j as _,i,g as m,F,G as R,n as V,U as N,l as h}from"./app-72c44b80.js";import{u as E}from"./bus-222e275f.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const I={class:"title has-text-grey-dark"},L={class:"is-size-7-mobile"},W={class:"mt-3 mb-6"},A={key:0},S=["onClick","title"],T={class:"is-family-primary is-size-6 is-size-7-mobile has-text-grey"},M={class:"mt-2 is-size-7 is-pulled-right"},U={key:1,class:"has-text-centered"},j={class:"is-size-4"},J={__name:"Groups",setup(q){C();const o=$(),f=E(),p=w(!1);return z(async()=>{p.value=o.isEmpty,await o.fetch().finally(()=>{p.value=!1})}),G((e,g)=>{var n;e.name=="editGroup"&&(f.editedGroupName=(n=o.items.find(d=>d.id==e.params.groupId))==null?void 0:n.name)}),(e,g)=>{const n=c("FontAwesomeIcon"),d=c("RouterLink"),k=c("ButtonBackCloseCancel"),y=c("VueFooter"),v=c("ResponsiveWidthWrapper");return l(),b(v,null,{default:u(()=>[a("h1",I,s(e.$t("groups.groups")),1),a("div",L,s(e.$t("groups.manage_groups_legend")),1),a("div",W,[t(d,{class:"is-link mt-5",to:{name:"createGroup"}},{default:u(()=>[t(n,{icon:["fas","plus-circle"]}),_(" "+s(e.$t("groups.create_group")),1)]),_:1})]),i(o).isEmpty?h("",!0):(l(),m("div",A,[(l(!0),m(F,null,R(i(o).withoutTheAllGroup,r=>(l(),m("div",{key:r.id,class:"group-item is-size-5 is-size-6-mobile"},[_(s(r.name)+" ",1),t(i(N),null,{default:u(({mode:B})=>[a("button",{class:V(["button tag is-pulled-right",B=="dark"?"is-dark":"is-white"]),onClick:x=>i(o).delete(r.id),title:e.$t("commons.delete")},s(e.$t("commons.delete")),11,S)]),_:2},1024),t(d,{to:{name:"editGroup",params:{groupId:r.id}},class:"has-text-grey px-1",title:e.$t("commons.rename")},{default:u(()=>[t(n,{icon:["fas","pen-square"]})]),_:2},1032,["to","title"]),a("span",T,s(r.twofaccounts_count)+" "+s(e.$t("twofaccounts.accounts")),1)]))),128)),a("div",M,s(e.$t("groups.deleting_group_does_not_delete_accounts")),1)])),i(p)&&i(o).isEmpty?(l(),m("div",U,[a("span",j,[t(n,{icon:["fas","spinner"],spin:""})])])):h("",!0),t(y,{showButtons:!0},{default:u(()=>[t(k,{returnTo:{name:"accounts"},action:"close"})]),_:1})]),_:1})}}};export{J as default}; +import{u as C,S as $,r as w,o as z,$ as G,e as c,f as l,k as b,p as u,h as a,t as s,m as t,j as _,i,g as m,F,G as R,n as V,U as N,l as h}from"./app-347ef106.js";import{u as E}from"./bus-2e7bf732.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const I={class:"title has-text-grey-dark"},L={class:"is-size-7-mobile"},W={class:"mt-3 mb-6"},A={key:0},S=["onClick","title"],T={class:"is-family-primary is-size-6 is-size-7-mobile has-text-grey"},M={class:"mt-2 is-size-7 is-pulled-right"},U={key:1,class:"has-text-centered"},j={class:"is-size-4"},J={__name:"Groups",setup(q){C();const o=$(),f=E(),p=w(!1);return z(async()=>{p.value=o.isEmpty,await o.fetch().finally(()=>{p.value=!1})}),G((e,g)=>{var n;e.name=="editGroup"&&(f.editedGroupName=(n=o.items.find(d=>d.id==e.params.groupId))==null?void 0:n.name)}),(e,g)=>{const n=c("FontAwesomeIcon"),d=c("RouterLink"),k=c("ButtonBackCloseCancel"),y=c("VueFooter"),v=c("ResponsiveWidthWrapper");return l(),b(v,null,{default:u(()=>[a("h1",I,s(e.$t("groups.groups")),1),a("div",L,s(e.$t("groups.manage_groups_legend")),1),a("div",W,[t(d,{class:"is-link mt-5",to:{name:"createGroup"}},{default:u(()=>[t(n,{icon:["fas","plus-circle"]}),_(" "+s(e.$t("groups.create_group")),1)]),_:1})]),i(o).isEmpty?h("",!0):(l(),m("div",A,[(l(!0),m(F,null,R(i(o).withoutTheAllGroup,r=>(l(),m("div",{key:r.id,class:"group-item is-size-5 is-size-6-mobile"},[_(s(r.name)+" ",1),t(i(N),null,{default:u(({mode:B})=>[a("button",{class:V(["button tag is-pulled-right",B=="dark"?"is-dark":"is-white"]),onClick:x=>i(o).delete(r.id),title:e.$t("commons.delete")},s(e.$t("commons.delete")),11,S)]),_:2},1024),t(d,{to:{name:"editGroup",params:{groupId:r.id}},class:"has-text-grey px-1",title:e.$t("commons.rename")},{default:u(()=>[t(n,{icon:["fas","pen-square"]})]),_:2},1032,["to","title"]),a("span",T,s(r.twofaccounts_count)+" "+s(e.$t("twofaccounts.accounts")),1)]))),128)),a("div",M,s(e.$t("groups.deleting_group_does_not_delete_accounts")),1)])),i(p)&&i(o).isEmpty?(l(),m("div",U,[a("span",j,[t(n,{icon:["fas","spinner"],spin:""})])])):h("",!0),t(y,{showButtons:!0},{default:u(()=>[t(k,{returnTo:{name:"accounts"},action:"close"})]),_:1})]),_:1})}}};export{J as default}; diff --git a/public/build/assets/Import-93a5b87d.js b/public/build/assets/Import-a9bc7b8c.js similarity index 97% rename from public/build/assets/Import-93a5b87d.js rename to public/build/assets/Import-a9bc7b8c.js index f3e52003..766046bb 100644 --- a/public/build/assets/Import-93a5b87d.js +++ b/public/build/assets/Import-a9bc7b8c.js @@ -1 +1 @@ -import{P as nt,b as lt,a as rt,c as ct,r as k,d as q,I as f,v as V,x as ut,o as dt,J as ft,e as h,f as n,g as r,m as c,p as v,i as a,E as pt,h as e,t as i,U as E,n as T,k as M,l as d,j as p,w as R,F as J,G as L,T as _t,O as mt}from"./app-72c44b80.js";import{F as B}from"./Form-d325991a.js";import{_ as ht}from"./OtpDisplay-62239862.js";import{S as vt}from"./Spinner-0e4f49a2.js";import{u as gt}from"./bus-222e275f.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const wt={class:"title has-text-grey-dark"},kt={key:0},yt={class:"block is-size-7-mobile"},bt={class:"mb-2"},$t={class:"columns"},Ct={class:"column"},At={class:"block"},xt={class:"card"},Ft={class:"card-content"},zt={class:"media"},St={class:"media-left"},qt={class:"image is-32x32"},Vt={class:"media-content"},Et=["innerHTML"],Tt={class:"subtitle is-6 is-size-7-mobile"},Bt={class:"card-footer"},Nt={class:"block"},Ot={class:"card"},Pt={class:"card-content"},Ut={class:"media"},It={class:"media-left"},Mt={class:"image is-32x32"},Rt={class:"media-content"},Jt={class:"title is-5 has-text-grey"},Lt={class:"subtitle is-6 is-size-7-mobile"},jt={class:"card-footer"},Dt={class:"title is-5 has-text-grey-dark"},Wt={class:"block is-size-7-mobile"},Gt={class:"table is-size-7-mobile is-fullwidth"},Ht=e("thead",null,[e("tr",null,[e("th"),e("th",null,"Plain text"),e("th",null,"QR code"),e("th",null,"JSON")])],-1),Kt=e("th",null,"Google Authenticator",-1),Qt=e("td",null,null,-1),Xt=e("td",null,null,-1),Yt=e("th",null,"Aegis Auth",-1),Zt=e("td",null,null,-1),te=e("th",null,"2FAS auth",-1),ee=e("td",null,null,-1),se=e("td",null,null,-1),oe=e("th",null,"2FAuth",-1),ie=e("td",null,null,-1),ae=e("td",null,null,-1),ne={key:1},le={key:2},re={class:"block is-size-7-mobile"},ce={class:"mb-2"},ue={class:"is-flex is-justify-content-space-between"},de=["onClick","title"],fe=["src","alt"],pe={key:1,class:"is-flex-grow-1 has-ellipsis"},_e={key:2,class:"tags is-flex-wrap-nowrap"},me=["onClick","title"],he=["onClick","title"],ve={key:3,class:"has-nowrap"},ge={key:0,class:"has-text-success"},we={key:1,class:"has-text-danger"},ke={class:"is-size-6 is-size-7-mobile"},ye={class:"is-family-primary has-text-grey"},be={key:0,class:"has-text-danger"},$e={key:1,class:"has-text-warning"},Ce={key:2},Ae={key:0,class:"mt-2 is-size-7 is-pulled-right"},xe={key:1,class:"mt-2 is-size-7 is-pulled-right"},Fe={key:0,class:"control"},Ne={__name:"Import",setup(ze){const j=nt("2fauth"),_=lt(),D=rt(),x=gt(),W=ct(),y=k(null),F=k(null),z=k(null),b=q(new B({service:"",account:"",otp_type:"",icon:"",secret:"",algorithm:"",digits:null,counter:null,period:null})),$=q(new B({file:null,withSecret:!0})),C=q(new B({qrcode:null,withSecret:!0})),g=k(!1);f("twofaccounts.import.qr_code"),f("twofaccounts.import.plain_text");const l=k([]),m=k(!1),A=V(()=>l.value.filter(t=>t.imported==-1&&t.id>-2).length),N=V(()=>l.value.filter(t=>t.id===-1&&t.imported===-1).length),G=V(()=>l.value.filter(t=>t.imported===1).length);ut(g,t=>{var s;t==!1&&((s=y.value)==null||s.clearOTP())}),dt(()=>{x.migrationUri&&(O(x.migrationUri),x.migrationUri=null)});async function O(t){m.value=!0,await ft.migrate(t,{returnError:!0}).then(s=>{s.data.forEach(u=>{u.imported=-1,l.value.push(u)}),U()}).catch(s=>{_.alert({text:f(s.response.data.message)})}),m.value=!1}function H(){var t;confirm(f("twofaccounts.confirm.discard_duplicates"))&&(_.clear(),(t=y.value)==null||t.clearOTP(),l.value=l.value.filter(s=>s.id!==-1))}function K(){var t;confirm(f("twofaccounts.confirm.discard_all"))&&(_.clear(),(t=y.value)==null||t.clearOTP(),l.value=[])}function Q(t){confirm(f("twofaccounts.confirm.discard"))&&l.value.splice(t,1)}async function X(){for(let t=0;t{l.value[t].imported=1,l.value[t].id=s.data.id,delete s.data.secret,W.items.push(s.data)}).catch(s=>{l.value[t].imported=0,l.value[t].id=0,l.value[t].errors=b.errors.flatten()})}function Y(t){b.fill(l.value[t]),g.value=!0,mt().then(()=>{y.value.show()})}function Z(){$.clear(),m.value=!0,$.file=F.value.files[0],$.upload("/api/v1/twofaccounts/migration",{returnError:!0}).then(t=>{t.data.forEach(s=>{s.imported=-1,l.value.push(s)}),U()}).catch(t=>{t.response.status===422?t.response.data.errors.file==null&&_.alert({text:f("errors.invalid_2fa_data")}):_.alert({text:t.response.data.message})}),m.value=!1}function tt(){C.clear(),m.value=!0,C.qrcode=z.value.files[0],C.upload("/api/v1/qrcode/decode",{returnError:!0}).then(t=>{O(t.data.data)}).catch(t=>{t.response.status===422?t.response.data.errors.qrcode==null&&_.alert({text:f("errors.invalid_2fa_data")}):_.alert({text:t.response.data.message})}),m.value=!1}function U(){_.success({text:f("twofaccounts.import.x_valid_accounts_found",{count:A.value})})}return(t,s)=>{const u=h("FontAwesomeIcon"),I=h("FieldError"),et=h("RouterLink"),st=h("ButtonBackCloseCancel"),ot=h("VueFooter"),it=h("ResponsiveWidthWrapper"),at=h("modal");return n(),r("div",null,[c(it,null,{default:v(()=>[e("h1",wt,i(t.$t("twofaccounts.import.import")),1),!a(m)&&a(l).length==0?(n(),r("div",kt,[e("div",yt,[e("p",bt,i(t.$t("twofaccounts.import.import_legend")),1),e("p",null,i(t.$t("twofaccounts.import.import_legend_afterpart")),1)]),e("div",$t,[e("div",Ct,[e("div",At,[e("div",xt,[e("div",Ft,[e("div",zt,[e("div",St,[e("figure",qt,[c(a(E),null,{default:v(({mode:o})=>[c(u,{icon:["fas","qrcode"],size:"2x",class:T(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),e("div",Vt,[e("p",{class:"title is-5 has-text-grey",innerHTML:t.$t("twofaccounts.import.qr_code")},null,8,Et),e("p",Tt,i(t.$t("twofaccounts.import.supported_formats_for_qrcode_upload")),1)])]),a(C).errors.hasAny("qrcode")?(n(),M(I,{key:0,error:a(C).errors.get("qrcode"),field:"qrcode"},null,8,["error"])):d("",!0)]),e("footer",Bt,[c(et,{id:"btnCapture",to:{name:"capture"},class:"card-footer-item"},{default:v(()=>[p(i(t.$t("twofaccounts.import.scan")),1)]),_:1}),e("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onKeyup:s[0]||(s[0]=R(o=>a(z).click(),["enter"]))},[e("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:tt,ref_key:"qrcodeInput",ref:z},null,544),p(" "+i(t.$t("twofaccounts.import.upload")),1)],32)])])]),e("div",Nt,[e("div",Ot,[e("div",Pt,[e("div",Ut,[e("div",It,[e("figure",Mt,[c(a(E),null,{default:v(({mode:o})=>[c(u,{icon:["fas","file-lines"],size:"2x",class:T(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),e("div",Rt,[e("p",Jt,i(t.$t("twofaccounts.import.text_file")),1),e("p",Lt,i(t.$t("twofaccounts.import.supported_formats_for_file_upload")),1)])]),a($).errors.hasAny("file")?(n(),M(I,{key:0,error:a($).errors.get("file"),field:"file"},null,8,["error"])):d("",!0)]),e("footer",jt,[e("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onKeyup:s[1]||(s[1]=R(o=>a(F).click(),["enter"]))},[e("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"text/plain,application/json,text/csv,.2fas",onChange:Z,ref_key:"fileInput",ref:F},null,544),p(" "+i(t.$t("twofaccounts.import.upload")),1)],32)])])])])]),e("h2",Dt,i(t.$t("twofaccounts.import.supported_migration_formats")),1),e("div",Wt,[c(u,{icon:["fas","fa-triangle-exclamation"],class:"has-text-warning-dark"}),p(" "+i(t.$t("twofaccounts.import.do_not_set_password_or_encryption")),1)]),e("table",Gt,[Ht,e("tbody",null,[e("tr",null,[Kt,Qt,e("td",null,[c(u,{icon:["fas","circle-check"]})]),Xt]),e("tr",null,[Yt,e("td",null,[c(u,{icon:["fas","circle-check"]})]),Zt,e("td",null,[c(u,{icon:["fas","circle-check"]})])]),e("tr",null,[te,ee,se,e("td",null,[c(u,{icon:["fas","circle-check"]})])]),e("tr",null,[oe,ie,ae,e("td",null,[c(u,{icon:["fas","circle-check"]})])])])])])):a(m)&&a(l).length===0?(n(),r("div",ne,[c(vt,{type:"fullscreen-overlay",isVisible:!0,message:"twofaccounts.import.parsing_data"},null,8,["message"])])):(n(),r("div",le,[e("div",re,[e("p",ce,i(t.$t("twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import")),1),e("p",null,i(t.$t("twofaccounts.import.use_buttons_to_save_or_discard")),1)]),(n(!0),r(J,null,L(a(l),(o,S)=>(n(),r("div",{key:o.name,class:"group-item is-size-5 is-size-6-mobile"},[e("div",ue,[o.id>-2&&o.imported!==0?(n(),r("div",{key:0,class:"is-flex-grow-1 has-ellipsis is-clickable",onClick:w=>Y(S),title:t.$t("twofaccounts.import.generate_a_test_password")},[o.icon&&a(D).preferences.showAccountsIcons?(n(),r("img",{key:0,class:"import-icon",src:a(j).config.subdirectory+"/storage/icons/"+o.icon,alt:t.$t("twofaccounts.icon_for_account_x_at_service_y",{account:o.account,service:o.service})},null,8,fe)):d("",!0),p(" "+i(o.account),1)],8,de)):(n(),r("div",pe,i(o.account),1)),o.imported===-1?(n(),r("div",_e,[c(a(E),null,{default:v(({mode:w})=>[e("button",{class:T(["button tag",{"is-dark has-text-grey-light":w=="dark"}]),onClick:Se=>Q(S),title:t.$t("twofaccounts.import.discard_this_account")},[c(u,{icon:["fas","trash"]})],10,me)]),_:2},1024),o.id>-2?(n(),r("button",{key:0,class:"button tag is-link",onClick:w=>P(S),title:t.$t("twofaccounts.import.import_this_account")},i(t.$t("twofaccounts.import.to_import")),9,he)):d("",!0)])):(n(),r("div",ve,[o.imported===1?(n(),r("span",ge,[p(i(t.$t("twofaccounts.import.imported"))+" ",1),c(u,{icon:["fas","check"]})])):(n(),r("span",we,[p(i(t.$t("twofaccounts.import.failure"))+" ",1),c(u,{icon:["fas","times"]})]))]))]),e("div",ke,[e("div",ye,i(t.$t("twofaccounts.import.issuer"))+": "+i(o.service),1),o.id===-2?(n(),r("div",be,[c(u,{class:"mr-1",icon:["fas","times-circle"]}),p(i(o.secret),1)])):d("",!0),o.id===-1&&o.imported!==1&&!o.errors?(n(),r("div",$e,[c(u,{class:"mr-1",icon:["fas","exclamation-circle"]}),p(i(t.$t("twofaccounts.import.possible_duplicate")),1)])):d("",!0),o.errors?(n(),r("ul",Ce,[(n(!0),r(J,null,L(o.errors,w=>(n(),r("li",{key:w,class:"has-text-danger"},i(w),1))),128))])):d("",!0)])]))),128)),a(A)>0?(n(),r("div",Ae,[a(N)?(n(),r("button",{key:0,onClick:s[2]||(s[2]=o=>H()),class:"has-text-grey button is-small is-ghost"},i(t.$t("twofaccounts.import.discard_duplicates"))+" ("+i(a(N))+")",1)):d("",!0),e("button",{onClick:s[3]||(s[3]=o=>K()),class:"has-text-grey button is-small is-ghost"},i(t.$t("twofaccounts.import.discard_all")),1)])):d("",!0),a(G)==a(l).length?(n(),r("div",xe,[e("button",{onClick:s[4]||(s[4]=o=>l.value=[]),class:"has-text-grey button is-small is-ghost"},i(t.$t("commons.clear")),1)])):d("",!0)])),c(ot,{showButtons:!0},{default:v(()=>[a(A)>0?(n(),r("p",Fe,[e("button",{class:"button is-link is-rounded is-focus",onClick:X},[e("span",null,i(t.$t("twofaccounts.import.import_all"))+" ("+i(a(A))+")",1)])])):d("",!0),c(st,{returnTo:{name:"accounts"},action:a(A)>0?"cancel":"close"},null,8,["action"])]),_:1})]),_:1}),c(at,{modelValue:a(g),"onUpdate:modelValue":s[8]||(s[8]=o=>pt(g)?g.value=o:null)},{default:v(()=>[c(ht,_t({ref_key:"otpDisplay",ref:y},a(b).data(),{onIncrementHotp:s[5]||(s[5]=()=>{}),onValidationError:s[6]||(s[6]=()=>{}),onPleaseCloseMe:s[7]||(s[7]=o=>g.value=!1)}),null,16)]),_:1},8,["modelValue"])])}}};export{Ne as default}; +import{P as nt,b as lt,a as rt,c as ct,r as k,d as q,I as f,v as V,x as ut,o as dt,J as ft,e as h,f as n,g as r,m as c,p as v,i as a,E as pt,h as e,t as i,U as E,n as T,k as M,l as d,j as p,w as R,F as J,G as L,T as _t,O as mt}from"./app-347ef106.js";import{F as B}from"./Form-893a9a1a.js";import{_ as ht}from"./OtpDisplay-1a3c1737.js";import{S as vt}from"./Spinner-8bfb7257.js";import{u as gt}from"./bus-2e7bf732.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const wt={class:"title has-text-grey-dark"},kt={key:0},yt={class:"block is-size-7-mobile"},bt={class:"mb-2"},$t={class:"columns"},Ct={class:"column"},At={class:"block"},xt={class:"card"},Ft={class:"card-content"},zt={class:"media"},St={class:"media-left"},qt={class:"image is-32x32"},Vt={class:"media-content"},Et=["innerHTML"],Tt={class:"subtitle is-6 is-size-7-mobile"},Bt={class:"card-footer"},Nt={class:"block"},Ot={class:"card"},Pt={class:"card-content"},Ut={class:"media"},It={class:"media-left"},Mt={class:"image is-32x32"},Rt={class:"media-content"},Jt={class:"title is-5 has-text-grey"},Lt={class:"subtitle is-6 is-size-7-mobile"},jt={class:"card-footer"},Dt={class:"title is-5 has-text-grey-dark"},Wt={class:"block is-size-7-mobile"},Gt={class:"table is-size-7-mobile is-fullwidth"},Ht=e("thead",null,[e("tr",null,[e("th"),e("th",null,"Plain text"),e("th",null,"QR code"),e("th",null,"JSON")])],-1),Kt=e("th",null,"Google Authenticator",-1),Qt=e("td",null,null,-1),Xt=e("td",null,null,-1),Yt=e("th",null,"Aegis Auth",-1),Zt=e("td",null,null,-1),te=e("th",null,"2FAS auth",-1),ee=e("td",null,null,-1),se=e("td",null,null,-1),oe=e("th",null,"2FAuth",-1),ie=e("td",null,null,-1),ae=e("td",null,null,-1),ne={key:1},le={key:2},re={class:"block is-size-7-mobile"},ce={class:"mb-2"},ue={class:"is-flex is-justify-content-space-between"},de=["onClick","title"],fe=["src","alt"],pe={key:1,class:"is-flex-grow-1 has-ellipsis"},_e={key:2,class:"tags is-flex-wrap-nowrap"},me=["onClick","title"],he=["onClick","title"],ve={key:3,class:"has-nowrap"},ge={key:0,class:"has-text-success"},we={key:1,class:"has-text-danger"},ke={class:"is-size-6 is-size-7-mobile"},ye={class:"is-family-primary has-text-grey"},be={key:0,class:"has-text-danger"},$e={key:1,class:"has-text-warning"},Ce={key:2},Ae={key:0,class:"mt-2 is-size-7 is-pulled-right"},xe={key:1,class:"mt-2 is-size-7 is-pulled-right"},Fe={key:0,class:"control"},Ne={__name:"Import",setup(ze){const j=nt("2fauth"),_=lt(),D=rt(),x=gt(),W=ct(),y=k(null),F=k(null),z=k(null),b=q(new B({service:"",account:"",otp_type:"",icon:"",secret:"",algorithm:"",digits:null,counter:null,period:null})),$=q(new B({file:null,withSecret:!0})),C=q(new B({qrcode:null,withSecret:!0})),g=k(!1);f("twofaccounts.import.qr_code"),f("twofaccounts.import.plain_text");const l=k([]),m=k(!1),A=V(()=>l.value.filter(t=>t.imported==-1&&t.id>-2).length),N=V(()=>l.value.filter(t=>t.id===-1&&t.imported===-1).length),G=V(()=>l.value.filter(t=>t.imported===1).length);ut(g,t=>{var s;t==!1&&((s=y.value)==null||s.clearOTP())}),dt(()=>{x.migrationUri&&(O(x.migrationUri),x.migrationUri=null)});async function O(t){m.value=!0,await ft.migrate(t,{returnError:!0}).then(s=>{s.data.forEach(u=>{u.imported=-1,l.value.push(u)}),U()}).catch(s=>{_.alert({text:f(s.response.data.message)})}),m.value=!1}function H(){var t;confirm(f("twofaccounts.confirm.discard_duplicates"))&&(_.clear(),(t=y.value)==null||t.clearOTP(),l.value=l.value.filter(s=>s.id!==-1))}function K(){var t;confirm(f("twofaccounts.confirm.discard_all"))&&(_.clear(),(t=y.value)==null||t.clearOTP(),l.value=[])}function Q(t){confirm(f("twofaccounts.confirm.discard"))&&l.value.splice(t,1)}async function X(){for(let t=0;t{l.value[t].imported=1,l.value[t].id=s.data.id,delete s.data.secret,W.items.push(s.data)}).catch(s=>{l.value[t].imported=0,l.value[t].id=0,l.value[t].errors=b.errors.flatten()})}function Y(t){b.fill(l.value[t]),g.value=!0,mt().then(()=>{y.value.show()})}function Z(){$.clear(),m.value=!0,$.file=F.value.files[0],$.upload("/api/v1/twofaccounts/migration",{returnError:!0}).then(t=>{t.data.forEach(s=>{s.imported=-1,l.value.push(s)}),U()}).catch(t=>{t.response.status===422?t.response.data.errors.file==null&&_.alert({text:f("errors.invalid_2fa_data")}):_.alert({text:t.response.data.message})}),m.value=!1}function tt(){C.clear(),m.value=!0,C.qrcode=z.value.files[0],C.upload("/api/v1/qrcode/decode",{returnError:!0}).then(t=>{O(t.data.data)}).catch(t=>{t.response.status===422?t.response.data.errors.qrcode==null&&_.alert({text:f("errors.invalid_2fa_data")}):_.alert({text:t.response.data.message})}),m.value=!1}function U(){_.success({text:f("twofaccounts.import.x_valid_accounts_found",{count:A.value})})}return(t,s)=>{const u=h("FontAwesomeIcon"),I=h("FieldError"),et=h("RouterLink"),st=h("ButtonBackCloseCancel"),ot=h("VueFooter"),it=h("ResponsiveWidthWrapper"),at=h("modal");return n(),r("div",null,[c(it,null,{default:v(()=>[e("h1",wt,i(t.$t("twofaccounts.import.import")),1),!a(m)&&a(l).length==0?(n(),r("div",kt,[e("div",yt,[e("p",bt,i(t.$t("twofaccounts.import.import_legend")),1),e("p",null,i(t.$t("twofaccounts.import.import_legend_afterpart")),1)]),e("div",$t,[e("div",Ct,[e("div",At,[e("div",xt,[e("div",Ft,[e("div",zt,[e("div",St,[e("figure",qt,[c(a(E),null,{default:v(({mode:o})=>[c(u,{icon:["fas","qrcode"],size:"2x",class:T(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),e("div",Vt,[e("p",{class:"title is-5 has-text-grey",innerHTML:t.$t("twofaccounts.import.qr_code")},null,8,Et),e("p",Tt,i(t.$t("twofaccounts.import.supported_formats_for_qrcode_upload")),1)])]),a(C).errors.hasAny("qrcode")?(n(),M(I,{key:0,error:a(C).errors.get("qrcode"),field:"qrcode"},null,8,["error"])):d("",!0)]),e("footer",Bt,[c(et,{id:"btnCapture",to:{name:"capture"},class:"card-footer-item"},{default:v(()=>[p(i(t.$t("twofaccounts.import.scan")),1)]),_:1}),e("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onKeyup:s[0]||(s[0]=R(o=>a(z).click(),["enter"]))},[e("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:tt,ref_key:"qrcodeInput",ref:z},null,544),p(" "+i(t.$t("twofaccounts.import.upload")),1)],32)])])]),e("div",Nt,[e("div",Ot,[e("div",Pt,[e("div",Ut,[e("div",It,[e("figure",Mt,[c(a(E),null,{default:v(({mode:o})=>[c(u,{icon:["fas","file-lines"],size:"2x",class:T(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),e("div",Rt,[e("p",Jt,i(t.$t("twofaccounts.import.text_file")),1),e("p",Lt,i(t.$t("twofaccounts.import.supported_formats_for_file_upload")),1)])]),a($).errors.hasAny("file")?(n(),M(I,{key:0,error:a($).errors.get("file"),field:"file"},null,8,["error"])):d("",!0)]),e("footer",jt,[e("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onKeyup:s[1]||(s[1]=R(o=>a(F).click(),["enter"]))},[e("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"text/plain,application/json,text/csv,.2fas",onChange:Z,ref_key:"fileInput",ref:F},null,544),p(" "+i(t.$t("twofaccounts.import.upload")),1)],32)])])])])]),e("h2",Dt,i(t.$t("twofaccounts.import.supported_migration_formats")),1),e("div",Wt,[c(u,{icon:["fas","fa-triangle-exclamation"],class:"has-text-warning-dark"}),p(" "+i(t.$t("twofaccounts.import.do_not_set_password_or_encryption")),1)]),e("table",Gt,[Ht,e("tbody",null,[e("tr",null,[Kt,Qt,e("td",null,[c(u,{icon:["fas","circle-check"]})]),Xt]),e("tr",null,[Yt,e("td",null,[c(u,{icon:["fas","circle-check"]})]),Zt,e("td",null,[c(u,{icon:["fas","circle-check"]})])]),e("tr",null,[te,ee,se,e("td",null,[c(u,{icon:["fas","circle-check"]})])]),e("tr",null,[oe,ie,ae,e("td",null,[c(u,{icon:["fas","circle-check"]})])])])])])):a(m)&&a(l).length===0?(n(),r("div",ne,[c(vt,{type:"fullscreen-overlay",isVisible:!0,message:"twofaccounts.import.parsing_data"},null,8,["message"])])):(n(),r("div",le,[e("div",re,[e("p",ce,i(t.$t("twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import")),1),e("p",null,i(t.$t("twofaccounts.import.use_buttons_to_save_or_discard")),1)]),(n(!0),r(J,null,L(a(l),(o,S)=>(n(),r("div",{key:o.name,class:"group-item is-size-5 is-size-6-mobile"},[e("div",ue,[o.id>-2&&o.imported!==0?(n(),r("div",{key:0,class:"is-flex-grow-1 has-ellipsis is-clickable",onClick:w=>Y(S),title:t.$t("twofaccounts.import.generate_a_test_password")},[o.icon&&a(D).preferences.showAccountsIcons?(n(),r("img",{key:0,class:"import-icon",src:a(j).config.subdirectory+"/storage/icons/"+o.icon,alt:t.$t("twofaccounts.icon_for_account_x_at_service_y",{account:o.account,service:o.service})},null,8,fe)):d("",!0),p(" "+i(o.account),1)],8,de)):(n(),r("div",pe,i(o.account),1)),o.imported===-1?(n(),r("div",_e,[c(a(E),null,{default:v(({mode:w})=>[e("button",{class:T(["button tag",{"is-dark has-text-grey-light":w=="dark"}]),onClick:Se=>Q(S),title:t.$t("twofaccounts.import.discard_this_account")},[c(u,{icon:["fas","trash"]})],10,me)]),_:2},1024),o.id>-2?(n(),r("button",{key:0,class:"button tag is-link",onClick:w=>P(S),title:t.$t("twofaccounts.import.import_this_account")},i(t.$t("twofaccounts.import.to_import")),9,he)):d("",!0)])):(n(),r("div",ve,[o.imported===1?(n(),r("span",ge,[p(i(t.$t("twofaccounts.import.imported"))+" ",1),c(u,{icon:["fas","check"]})])):(n(),r("span",we,[p(i(t.$t("twofaccounts.import.failure"))+" ",1),c(u,{icon:["fas","times"]})]))]))]),e("div",ke,[e("div",ye,i(t.$t("twofaccounts.import.issuer"))+": "+i(o.service),1),o.id===-2?(n(),r("div",be,[c(u,{class:"mr-1",icon:["fas","times-circle"]}),p(i(o.secret),1)])):d("",!0),o.id===-1&&o.imported!==1&&!o.errors?(n(),r("div",$e,[c(u,{class:"mr-1",icon:["fas","exclamation-circle"]}),p(i(t.$t("twofaccounts.import.possible_duplicate")),1)])):d("",!0),o.errors?(n(),r("ul",Ce,[(n(!0),r(J,null,L(o.errors,w=>(n(),r("li",{key:w,class:"has-text-danger"},i(w),1))),128))])):d("",!0)])]))),128)),a(A)>0?(n(),r("div",Ae,[a(N)?(n(),r("button",{key:0,onClick:s[2]||(s[2]=o=>H()),class:"has-text-grey button is-small is-ghost"},i(t.$t("twofaccounts.import.discard_duplicates"))+" ("+i(a(N))+")",1)):d("",!0),e("button",{onClick:s[3]||(s[3]=o=>K()),class:"has-text-grey button is-small is-ghost"},i(t.$t("twofaccounts.import.discard_all")),1)])):d("",!0),a(G)==a(l).length?(n(),r("div",xe,[e("button",{onClick:s[4]||(s[4]=o=>l.value=[]),class:"has-text-grey button is-small is-ghost"},i(t.$t("commons.clear")),1)])):d("",!0)])),c(ot,{showButtons:!0},{default:v(()=>[a(A)>0?(n(),r("p",Fe,[e("button",{class:"button is-link is-rounded is-focus",onClick:X},[e("span",null,i(t.$t("twofaccounts.import.import_all"))+" ("+i(a(A))+")",1)])])):d("",!0),c(st,{returnTo:{name:"accounts"},action:a(A)>0?"cancel":"close"},null,8,["action"])]),_:1})]),_:1}),c(at,{modelValue:a(g),"onUpdate:modelValue":s[8]||(s[8]=o=>pt(g)?g.value=o:null)},{default:v(()=>[c(ht,_t({ref_key:"otpDisplay",ref:y},a(b).data(),{onIncrementHotp:s[5]||(s[5]=()=>{}),onValidationError:s[6]||(s[6]=()=>{}),onPleaseCloseMe:s[7]||(s[7]=o=>g.value=!1)}),null,16)]),_:1},8,["modelValue"])])}}};export{Ne as default}; diff --git a/public/build/assets/Login-f9f96d1e.js b/public/build/assets/Login-815161cc.js similarity index 97% rename from public/build/assets/Login-f9f96d1e.js rename to public/build/assets/Login-815161cc.js index 5063afa4..5567da08 100644 --- a/public/build/assets/Login-f9f96d1e.js +++ b/public/build/assets/Login-815161cc.js @@ -1 +1 @@ -import{P as N,u as O,a as T,b as D,Q as C,a2 as M,d as j,r as G,e as _,f as a,g as u,i as t,k as L,p as f,m as n,F as H,h as l,t as o,D as B,j as r,w as I,l as d,I as k}from"./app-72c44b80.js";import{F as P}from"./Form-d325991a.js";import{w as U}from"./webauthnService-08262ddb.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const q={class:"field"},Q=["onSubmit"],z={class:"nav-links"},J={key:0},X=["onKeyup"],Y={key:1,class:"mt-4"},Z={key:2,class:"columns mt-4 is-variable is-1"},x={class:"column is-narrow py-1"},ee={class:"column py-1"},te={key:0,id:"lnkSignWithOpenID",class:"button is-link is-outlined is-small ml-2",href:"/socialite/redirect/openid"},se={key:1,id:"lnkSignWithGithub",class:"button is-link is-outlined is-small ml-2",href:"/socialite/redirect/github"},ie=["innerHTML"],oe=["innerHTML"],ae=["onSubmit"],ne={class:"nav-links"},le=["onKeyup","aria-label"],re={key:0,class:"mt-4"},ue={key:1,class:"columns mt-4 is-variable is-1"},de={class:"column is-narrow py-1"},ce={class:"column py-1"},me={key:0,id:"lnkSignWithOpenID",class:"button is-link is-outlined is-small mr-2",href:"/socialite/redirect/openid"},he={key:1,id:"lnkSignWithGithub",class:"button is-link is-outlined is-small mr-2",href:"/socialite/redirect/github"},be={__name:"Login",setup(_e){const c=N("2fauth"),S=O(),p=T(),h=D(),g=C(),v=p.preferences.useWebauthnOnly?!0:M(c.prefix+"showWebauthnForm",!1),i=j(new P({email:"",password:""})),F=G(!1);function b(){i.clear(),v.value=!v.value}function A(e){h.clear(),i.post("/user/login",{returnError:!0}).then(async s=>{await p.loginAs({name:s.data.name,email:s.data.email,oauth_provider:s.data.oauth_provider,preferences:s.data.preferences,isAdmin:s.data.is_admin}),S.push({name:"accounts"})}).catch(s=>{s.response.status===401?h.alert({text:k("auth.forms.authentication_failed"),duration:1e4}):s.response.status!==422&&h.error(s)})}function E(){h.clear(),i.clear(),F.value=!0,U.authenticate(i.email).then(async e=>{await p.loginAs({name:e.data.name,email:e.data.email,oauth_provider:e.data.oauth_provider,preferences:e.data.preferences,isAdmin:e.data.is_admin}),S.push({name:"accounts"})}).catch(e=>{"webauthn"in e?e.name=="is-warning"?h.warn({text:k(e.message)}):h.alert({text:k(e.message)}):e.response.status===401?h.alert({text:k("auth.forms.authentication_failed"),duration:1e4}):e.response.status==422?i.errors.set(i.extractErrors(e.response)):h.error(e)}).finally(()=>{F.value=!1})}return(e,s)=>{const $=_("FormField"),V=_("FormButtons"),y=_("RouterLink"),w=_("FontAwesomeIcon"),W=_("FormWrapper"),K=_("FormPasswordField"),R=_("VueFooter");return a(),u(H,null,[t(v)?(a(),L(W,{key:0,title:"auth.forms.webauthn_login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[l("div",q,o(e.$t("auth.webauthn.use_security_device_to_sign_in")),1),l("form",{id:"frmWebauthnLogin",onSubmit:B(E,["prevent"]),onKeydown:s[1]||(s[1]=m=>t(i).onKeydown(m))},[n($,{modelValue:t(i).email,"onUpdate:modelValue":s[0]||(s[0]=m=>t(i).email=m),fieldName:"email",fieldError:t(i).errors.get("email"),inputType:"email",label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),n(V,{isBusy:t(F),caption:"commons.continue",submitId:"btnContinue"},null,8,["isBusy"])],40,Q),l("div",z,[l("p",null,[r(o(e.$t("auth.webauthn.lost_your_device"))+"  ",1),n(y,{id:"lnkRecoverAccount",to:{name:"webauthn.lost"},class:"is-link"},{default:f(()=>[r(o(e.$t("auth.webauthn.recover_your_account")),1)]),_:1},8,["to"])]),t(p).preferences.useWebauthnOnly?d("",!0):(a(),u("p",J,[r(o(e.$t("auth.sign_in_using"))+"  ",1),l("a",{id:"lnkSignWithLegacy",role:"button",class:"is-link",onKeyup:I(b,["enter"]),onClick:b,tabindex:"0"},o(e.$t("auth.login_and_password")),41,X)])),t(g).disableRegistration==!1?(a(),u("p",Y,[r(o(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),n(y,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[r(o(e.$t("auth.register")),1)]),_:1})])):d("",!0),t(g).enableSso&&Object.values(t(c).config.sso).includes(!0)?(a(),u("div",Z,[l("div",x,o(e.$t("auth.or_continue_with")),1),l("div",ee,[t(c).config.sso.openid?(a(),u("a",te,[r(" OpenID"),n(w,{class:"ml-2",icon:["fab","openid"]})])):d("",!0),t(c).config.sso.github?(a(),u("a",se,[r(" Github"),n(w,{class:"ml-2",icon:["fab","github-alt"]})])):d("",!0)])])):d("",!0)])]),_:1})):(a(),L(W,{key:1,title:"auth.forms.login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[t(c).isDemoApp?(a(),u("div",{key:0,class:"notification is-info has-text-centered is-radiusless",innerHTML:e.$t("auth.forms.welcome_to_demo_app_use_those_credentials")},null,8,ie)):d("",!0),t(c).isTestingApp?(a(),u("div",{key:1,class:"notification is-warning has-text-centered is-radiusless",innerHTML:e.$t("auth.forms.welcome_to_testing_app_use_those_credentials")},null,8,oe)):d("",!0),l("form",{id:"frmLegacyLogin",onSubmit:B(A,["prevent"]),onKeydown:s[4]||(s[4]=m=>t(i).onKeydown(m))},[n($,{modelValue:t(i).email,"onUpdate:modelValue":s[2]||(s[2]=m=>t(i).email=m),fieldName:"email",fieldError:t(i).errors.get("email"),inputType:"email",label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),n(K,{modelValue:t(i).password,"onUpdate:modelValue":s[3]||(s[3]=m=>t(i).password=m),fieldName:"password",fieldError:t(i).errors.get("password"),label:"auth.forms.password"},null,8,["modelValue","fieldError"]),n(V,{isBusy:t(i).isBusy,caption:"auth.sign_in",submitId:"btnSignIn"},null,8,["isBusy"])],40,ae),l("div",ne,[l("p",null,[r(o(e.$t("auth.forms.forgot_your_password"))+"  ",1),n(y,{id:"lnkResetPwd",to:{name:"password.request"},class:"is-link","aria-label":e.$t("auth.forms.reset_your_password")},{default:f(()=>[r(o(e.$t("auth.forms.request_password_reset")),1)]),_:1},8,["to","aria-label"])]),l("p",null,[r(o(e.$t("auth.sign_in_using"))+"  ",1),l("a",{id:"lnkSignWithWebauthn",role:"button",class:"is-link",onKeyup:I(b,["enter"]),onClick:b,tabindex:"0","aria-label":e.$t("auth.sign_in_using_security_device")},o(e.$t("auth.webauthn.security_device")),41,le)]),t(g).disableRegistration==!1?(a(),u("p",re,[r(o(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),n(y,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[r(o(e.$t("auth.register")),1)]),_:1})])):d("",!0),t(g).enableSso&&Object.values(t(c).config.sso).includes(!0)?(a(),u("div",ue,[l("div",de,o(e.$t("auth.or_continue_with")),1),l("div",ce,[t(c).config.sso.openid?(a(),u("a",me,[r(" OpenID"),n(w,{class:"ml-2",icon:["fab","openid"]})])):d("",!0),t(c).config.sso.github?(a(),u("a",he,[r(" Github"),n(w,{class:"ml-2",icon:["fab","github-alt"]})])):d("",!0)])])):d("",!0)])]),_:1})),n(R)],64)}}};export{be as default}; +import{P as N,u as O,a as T,b as D,Q as C,a2 as M,d as j,r as G,e as _,f as a,g as u,i as t,k as L,p as f,m as n,F as H,h as l,t as o,D as B,j as r,w as I,l as d,I as k}from"./app-347ef106.js";import{F as P}from"./Form-893a9a1a.js";import{w as U}from"./webauthnService-ad1f52a0.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const q={class:"field"},Q=["onSubmit"],z={class:"nav-links"},J={key:0},X=["onKeyup"],Y={key:1,class:"mt-4"},Z={key:2,class:"columns mt-4 is-variable is-1"},x={class:"column is-narrow py-1"},ee={class:"column py-1"},te={key:0,id:"lnkSignWithOpenID",class:"button is-link is-outlined is-small ml-2",href:"/socialite/redirect/openid"},se={key:1,id:"lnkSignWithGithub",class:"button is-link is-outlined is-small ml-2",href:"/socialite/redirect/github"},ie=["innerHTML"],oe=["innerHTML"],ae=["onSubmit"],ne={class:"nav-links"},le=["onKeyup","aria-label"],re={key:0,class:"mt-4"},ue={key:1,class:"columns mt-4 is-variable is-1"},de={class:"column is-narrow py-1"},ce={class:"column py-1"},me={key:0,id:"lnkSignWithOpenID",class:"button is-link is-outlined is-small mr-2",href:"/socialite/redirect/openid"},he={key:1,id:"lnkSignWithGithub",class:"button is-link is-outlined is-small mr-2",href:"/socialite/redirect/github"},be={__name:"Login",setup(_e){const c=N("2fauth"),S=O(),p=T(),h=D(),g=C(),v=p.preferences.useWebauthnOnly?!0:M(c.prefix+"showWebauthnForm",!1),i=j(new P({email:"",password:""})),F=G(!1);function b(){i.clear(),v.value=!v.value}function A(e){h.clear(),i.post("/user/login",{returnError:!0}).then(async s=>{await p.loginAs({name:s.data.name,email:s.data.email,oauth_provider:s.data.oauth_provider,preferences:s.data.preferences,isAdmin:s.data.is_admin}),S.push({name:"accounts"})}).catch(s=>{s.response.status===401?h.alert({text:k("auth.forms.authentication_failed"),duration:1e4}):s.response.status!==422&&h.error(s)})}function E(){h.clear(),i.clear(),F.value=!0,U.authenticate(i.email).then(async e=>{await p.loginAs({name:e.data.name,email:e.data.email,oauth_provider:e.data.oauth_provider,preferences:e.data.preferences,isAdmin:e.data.is_admin}),S.push({name:"accounts"})}).catch(e=>{"webauthn"in e?e.name=="is-warning"?h.warn({text:k(e.message)}):h.alert({text:k(e.message)}):e.response.status===401?h.alert({text:k("auth.forms.authentication_failed"),duration:1e4}):e.response.status==422?i.errors.set(i.extractErrors(e.response)):h.error(e)}).finally(()=>{F.value=!1})}return(e,s)=>{const $=_("FormField"),V=_("FormButtons"),y=_("RouterLink"),w=_("FontAwesomeIcon"),W=_("FormWrapper"),K=_("FormPasswordField"),R=_("VueFooter");return a(),u(H,null,[t(v)?(a(),L(W,{key:0,title:"auth.forms.webauthn_login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[l("div",q,o(e.$t("auth.webauthn.use_security_device_to_sign_in")),1),l("form",{id:"frmWebauthnLogin",onSubmit:B(E,["prevent"]),onKeydown:s[1]||(s[1]=m=>t(i).onKeydown(m))},[n($,{modelValue:t(i).email,"onUpdate:modelValue":s[0]||(s[0]=m=>t(i).email=m),fieldName:"email",fieldError:t(i).errors.get("email"),inputType:"email",label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),n(V,{isBusy:t(F),caption:"commons.continue",submitId:"btnContinue"},null,8,["isBusy"])],40,Q),l("div",z,[l("p",null,[r(o(e.$t("auth.webauthn.lost_your_device"))+"  ",1),n(y,{id:"lnkRecoverAccount",to:{name:"webauthn.lost"},class:"is-link"},{default:f(()=>[r(o(e.$t("auth.webauthn.recover_your_account")),1)]),_:1},8,["to"])]),t(p).preferences.useWebauthnOnly?d("",!0):(a(),u("p",J,[r(o(e.$t("auth.sign_in_using"))+"  ",1),l("a",{id:"lnkSignWithLegacy",role:"button",class:"is-link",onKeyup:I(b,["enter"]),onClick:b,tabindex:"0"},o(e.$t("auth.login_and_password")),41,X)])),t(g).disableRegistration==!1?(a(),u("p",Y,[r(o(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),n(y,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[r(o(e.$t("auth.register")),1)]),_:1})])):d("",!0),t(g).enableSso&&Object.values(t(c).config.sso).includes(!0)?(a(),u("div",Z,[l("div",x,o(e.$t("auth.or_continue_with")),1),l("div",ee,[t(c).config.sso.openid?(a(),u("a",te,[r(" OpenID"),n(w,{class:"ml-2",icon:["fab","openid"]})])):d("",!0),t(c).config.sso.github?(a(),u("a",se,[r(" Github"),n(w,{class:"ml-2",icon:["fab","github-alt"]})])):d("",!0)])])):d("",!0)])]),_:1})):(a(),L(W,{key:1,title:"auth.forms.login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[t(c).isDemoApp?(a(),u("div",{key:0,class:"notification is-info has-text-centered is-radiusless",innerHTML:e.$t("auth.forms.welcome_to_demo_app_use_those_credentials")},null,8,ie)):d("",!0),t(c).isTestingApp?(a(),u("div",{key:1,class:"notification is-warning has-text-centered is-radiusless",innerHTML:e.$t("auth.forms.welcome_to_testing_app_use_those_credentials")},null,8,oe)):d("",!0),l("form",{id:"frmLegacyLogin",onSubmit:B(A,["prevent"]),onKeydown:s[4]||(s[4]=m=>t(i).onKeydown(m))},[n($,{modelValue:t(i).email,"onUpdate:modelValue":s[2]||(s[2]=m=>t(i).email=m),fieldName:"email",fieldError:t(i).errors.get("email"),inputType:"email",label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),n(K,{modelValue:t(i).password,"onUpdate:modelValue":s[3]||(s[3]=m=>t(i).password=m),fieldName:"password",fieldError:t(i).errors.get("password"),label:"auth.forms.password"},null,8,["modelValue","fieldError"]),n(V,{isBusy:t(i).isBusy,caption:"auth.sign_in",submitId:"btnSignIn"},null,8,["isBusy"])],40,ae),l("div",ne,[l("p",null,[r(o(e.$t("auth.forms.forgot_your_password"))+"  ",1),n(y,{id:"lnkResetPwd",to:{name:"password.request"},class:"is-link","aria-label":e.$t("auth.forms.reset_your_password")},{default:f(()=>[r(o(e.$t("auth.forms.request_password_reset")),1)]),_:1},8,["to","aria-label"])]),l("p",null,[r(o(e.$t("auth.sign_in_using"))+"  ",1),l("a",{id:"lnkSignWithWebauthn",role:"button",class:"is-link",onKeyup:I(b,["enter"]),onClick:b,tabindex:"0","aria-label":e.$t("auth.sign_in_using_security_device")},o(e.$t("auth.webauthn.security_device")),41,le)]),t(g).disableRegistration==!1?(a(),u("p",re,[r(o(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),n(y,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[r(o(e.$t("auth.register")),1)]),_:1})])):d("",!0),t(g).enableSso&&Object.values(t(c).config.sso).includes(!0)?(a(),u("div",ue,[l("div",de,o(e.$t("auth.or_continue_with")),1),l("div",ce,[t(c).config.sso.openid?(a(),u("a",me,[r(" OpenID"),n(w,{class:"ml-2",icon:["fab","openid"]})])):d("",!0),t(c).config.sso.github?(a(),u("a",he,[r(" Github"),n(w,{class:"ml-2",icon:["fab","github-alt"]})])):d("",!0)])])):d("",!0)])]),_:1})),n(R)],64)}}};export{be as default}; diff --git a/public/build/assets/OAuth-7bad0205.js b/public/build/assets/OAuth-4e28fb5f.js similarity index 94% rename from public/build/assets/OAuth-7bad0205.js rename to public/build/assets/OAuth-4e28fb5f.js index addc95f0..859d8d2a 100644 --- a/public/build/assets/OAuth-7bad0205.js +++ b/public/build/assets/OAuth-4e28fb5f.js @@ -1 +1 @@ -import{P as D,b as G,a2 as H,R as O,r as m,o as q,d as J,$ as Q,e as _,f as l,g as c,m as n,h as t,p as f,i as o,l as d,t as a,w as X,j as g,F as Y,G as Z,k as ee,U as se,n as z,D as A,I as y}from"./app-72c44b80.js";import{F as te}from"./Form-d325991a.js";import{u as S}from"./userService-d2ada2ab.js";import{_ as oe}from"./SettingTabs-fbf19fde.js";import{S as ne}from"./Spinner-0e4f49a2.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const ae={class:"options-tabs"},ie=["innerHTML"],le={class:"title is-4 has-text-grey-light"},re={class:"is-size-7-mobile"},ce={class:"mt-3"},ue=["onKeyup"],de={key:1},me={class:"tags is-pulled-right"},_e=["onClick"],fe=["onClick","title"],pe={key:1,class:"is-size-7-mobile is-size-6 my-3"},ve={key:2,class:"pat is-family-monospace is-size-6 is-size-7-mobile has-text-success"},he={class:"mt-2 is-size-7 is-pulled-right"},ke={key:0,class:"is-overlay modal-otp modal-background"},ge={class:"main-section"},ye=["onSubmit"],be={class:"field is-grouped"},Te={class:"control"},Ce={class:"control"},Ae={__name:"OAuth",setup(we){const P=D("2fauth"),p=G(),x=H(P.prefix+"returnTo","accounts"),{copy:E}=O({legacy:!0}),r=m([]),b=m(!1),T=m(!1),v=m(!1),h=m(null),C=m(null);q(()=>{w()});const u=J(new te({name:""}));function w(){b.value=!0,S.getPersonalAccessTokens({returnError:!0}).then(e=>{r.value=[],e.data.forEach(i=>{i.id===C.value?(i.value=h.value,r.value.unshift(i)):r.value.push(i)})}).catch(e=>{e.response.status===405?T.value=!0:p.error(e)}).finally(()=>{b.value=!1,C.value=null,h.value=null})}function F(){N(),T.value?p.warn({text:y("errors.unsupported_with_reverseproxy")}):v.value=!0}function L(){u.post("/oauth/personal-access-tokens").then(e=>{h.value=e.data.accessToken,C.value=e.data.token.id,w(),v.value=!1,u.reset()})}function M(e){confirm(y("settings.confirm.revoke"))&&S.deletePersonalAccessToken(e).then(i=>{r.value=r.value.filter(k=>k.id!==e),p.success({text:y("settings.token_revoked")})})}function N(){r.value.forEach(e=>{e.value=null}),h.value=null}function K(e){E(e),p.success({text:y("commons.copied_to_clipboard")})}function I(){v.value=!1,u.reset()}return Q(e=>{e.name.startsWith("settings.")||p.clear()}),(e,i)=>{const k=_("FontAwesomeIcon"),U=_("ButtonBackCloseCancel"),R=_("VueFooter"),$=_("FormWrapper"),W=_("FormField"),V=_("VueButton");return l(),c("div",null,[n(oe,{activeTab:"settings.oauth.tokens"},null,8,["activeTab"]),t("div",ae,[n($,null,{default:f(()=>[o(T)?(l(),c("div",{key:0,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.auth_handled_by_proxy")},null,8,ie)):d("",!0),t("h4",le,a(e.$t("settings.personal_access_tokens")),1),t("div",re,a(e.$t("settings.token_legend")),1),t("div",ce,[t("a",{tabindex:"0",class:"is-link",onClick:F,onKeyup:X(F,["enter"])},[n(k,{icon:["fas","plus-circle"]}),g(" "+a(e.$t("settings.generate_new_token")),1)],40,ue)]),o(r).length>0?(l(),c("div",de,[(l(!0),c(Y,null,Z(o(r),s=>(l(),c("div",{key:s.id,class:"group-item is-size-5 is-size-6-mobile"},[s.value?(l(),ee(k,{key:0,class:"has-text-success",icon:["fas","check"]})):d("",!0),g(" "+a(s.name)+" ",1),t("div",me,[n(o(se),null,{default:f(({mode:B})=>[s.value?(l(),c("button",{key:0,class:z(["button tag",{"is-link":B!="dark"}]),onClick:A(j=>K(s.value),["stop"])},a(e.$t("commons.copy")),11,_e)):d("",!0),t("button",{class:z(["button tag",B==="dark"?"is-dark":"is-white"]),onClick:j=>M(s.id),title:e.$t("settings.revoke")},a(e.$t("settings.revoke")),11,fe)]),_:2},1024)]),s.value?(l(),c("span",pe,a(e.$t("settings.make_sure_copy_token")),1)):d("",!0),s.value?(l(),c("span",ve,a(s.value),1)):d("",!0)]))),128)),t("div",he,a(e.$t("settings.revoking_a_token_is_permanent")),1)])):d("",!0),n(ne,{isVisible:o(b)&&o(r).length===0},null,8,["isVisible"]),n(R,{showButtons:!0},{default:f(()=>[n(U,{returnTo:{name:o(x)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})]),o(v)?(l(),c("div",ke,[t("main",ge,[n($,{title:"settings.forms.new_token"},{default:f(()=>[t("form",{onSubmit:A(L,["prevent"]),onKeydown:i[1]||(i[1]=s=>o(u).onKeydown(s))},[n(W,{modelValue:o(u).name,"onUpdate:modelValue":i[0]||(i[0]=s=>o(u).name=s),fieldName:"name",fieldError:o(u).errors.get("name"),inputType:"text",label:"commons.name",autofocus:""},null,8,["modelValue","fieldError"]),t("div",be,[t("div",Te,[n(V,{id:"btnGenerateToken",isLoading:o(u).isBusy},{default:f(()=>[g(a(e.$t("commons.generate")),1)]),_:1},8,["isLoading"])]),t("div",Ce,[n(V,{onClick:I,nativeType:"button",id:"btnCancel",color:"is-text"},{default:f(()=>[g(a(e.$t("commons.cancel")),1)]),_:1})])])],40,ye)]),_:1})])])):d("",!0)])}}};export{Ae as default}; +import{P as D,b as G,a2 as H,R as O,r as m,o as q,d as J,$ as Q,e as _,f as l,g as c,m as n,h as t,p as f,i as o,l as d,t as a,w as X,j as g,F as Y,G as Z,k as ee,U as se,n as z,D as A,I as y}from"./app-347ef106.js";import{F as te}from"./Form-893a9a1a.js";import{u as S}from"./userService-f0891f7f.js";import{_ as oe}from"./SettingTabs-e95cff9d.js";import{S as ne}from"./Spinner-8bfb7257.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const ae={class:"options-tabs"},ie=["innerHTML"],le={class:"title is-4 has-text-grey-light"},re={class:"is-size-7-mobile"},ce={class:"mt-3"},ue=["onKeyup"],de={key:1},me={class:"tags is-pulled-right"},_e=["onClick"],fe=["onClick","title"],pe={key:1,class:"is-size-7-mobile is-size-6 my-3"},ve={key:2,class:"pat is-family-monospace is-size-6 is-size-7-mobile has-text-success"},he={class:"mt-2 is-size-7 is-pulled-right"},ke={key:0,class:"is-overlay modal-otp modal-background"},ge={class:"main-section"},ye=["onSubmit"],be={class:"field is-grouped"},Te={class:"control"},Ce={class:"control"},Ae={__name:"OAuth",setup(we){const P=D("2fauth"),p=G(),x=H(P.prefix+"returnTo","accounts"),{copy:E}=O({legacy:!0}),r=m([]),b=m(!1),T=m(!1),v=m(!1),h=m(null),C=m(null);q(()=>{w()});const u=J(new te({name:""}));function w(){b.value=!0,S.getPersonalAccessTokens({returnError:!0}).then(e=>{r.value=[],e.data.forEach(i=>{i.id===C.value?(i.value=h.value,r.value.unshift(i)):r.value.push(i)})}).catch(e=>{e.response.status===405?T.value=!0:p.error(e)}).finally(()=>{b.value=!1,C.value=null,h.value=null})}function F(){N(),T.value?p.warn({text:y("errors.unsupported_with_reverseproxy")}):v.value=!0}function L(){u.post("/oauth/personal-access-tokens").then(e=>{h.value=e.data.accessToken,C.value=e.data.token.id,w(),v.value=!1,u.reset()})}function M(e){confirm(y("settings.confirm.revoke"))&&S.deletePersonalAccessToken(e).then(i=>{r.value=r.value.filter(k=>k.id!==e),p.success({text:y("settings.token_revoked")})})}function N(){r.value.forEach(e=>{e.value=null}),h.value=null}function K(e){E(e),p.success({text:y("commons.copied_to_clipboard")})}function I(){v.value=!1,u.reset()}return Q(e=>{e.name.startsWith("settings.")||p.clear()}),(e,i)=>{const k=_("FontAwesomeIcon"),U=_("ButtonBackCloseCancel"),R=_("VueFooter"),$=_("FormWrapper"),W=_("FormField"),V=_("VueButton");return l(),c("div",null,[n(oe,{activeTab:"settings.oauth.tokens"},null,8,["activeTab"]),t("div",ae,[n($,null,{default:f(()=>[o(T)?(l(),c("div",{key:0,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.auth_handled_by_proxy")},null,8,ie)):d("",!0),t("h4",le,a(e.$t("settings.personal_access_tokens")),1),t("div",re,a(e.$t("settings.token_legend")),1),t("div",ce,[t("a",{tabindex:"0",class:"is-link",onClick:F,onKeyup:X(F,["enter"])},[n(k,{icon:["fas","plus-circle"]}),g(" "+a(e.$t("settings.generate_new_token")),1)],40,ue)]),o(r).length>0?(l(),c("div",de,[(l(!0),c(Y,null,Z(o(r),s=>(l(),c("div",{key:s.id,class:"group-item is-size-5 is-size-6-mobile"},[s.value?(l(),ee(k,{key:0,class:"has-text-success",icon:["fas","check"]})):d("",!0),g(" "+a(s.name)+" ",1),t("div",me,[n(o(se),null,{default:f(({mode:B})=>[s.value?(l(),c("button",{key:0,class:z(["button tag",{"is-link":B!="dark"}]),onClick:A(j=>K(s.value),["stop"])},a(e.$t("commons.copy")),11,_e)):d("",!0),t("button",{class:z(["button tag",B==="dark"?"is-dark":"is-white"]),onClick:j=>M(s.id),title:e.$t("settings.revoke")},a(e.$t("settings.revoke")),11,fe)]),_:2},1024)]),s.value?(l(),c("span",pe,a(e.$t("settings.make_sure_copy_token")),1)):d("",!0),s.value?(l(),c("span",ve,a(s.value),1)):d("",!0)]))),128)),t("div",he,a(e.$t("settings.revoking_a_token_is_permanent")),1)])):d("",!0),n(ne,{isVisible:o(b)&&o(r).length===0},null,8,["isVisible"]),n(R,{showButtons:!0},{default:f(()=>[n(U,{returnTo:{name:o(x)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})]),o(v)?(l(),c("div",ke,[t("main",ge,[n($,{title:"settings.forms.new_token"},{default:f(()=>[t("form",{onSubmit:A(L,["prevent"]),onKeydown:i[1]||(i[1]=s=>o(u).onKeydown(s))},[n(W,{modelValue:o(u).name,"onUpdate:modelValue":i[0]||(i[0]=s=>o(u).name=s),fieldName:"name",fieldError:o(u).errors.get("name"),inputType:"text",label:"commons.name",autofocus:""},null,8,["modelValue","fieldError"]),t("div",be,[t("div",Te,[n(V,{id:"btnGenerateToken",isLoading:o(u).isBusy},{default:f(()=>[g(a(e.$t("commons.generate")),1)]),_:1},8,["isLoading"])]),t("div",Ce,[n(V,{onClick:I,nativeType:"button",id:"btnCancel",color:"is-text"},{default:f(()=>[g(a(e.$t("commons.cancel")),1)]),_:1})])])],40,ye)]),_:1})])])):d("",!0)])}}};export{Ae as default}; diff --git a/public/build/assets/Options-3a411377.js b/public/build/assets/Options-3d99ca9e.js similarity index 97% rename from public/build/assets/Options-3a411377.js rename to public/build/assets/Options-3d99ca9e.js index c9e2bf78..c1a1834b 100644 --- a/public/build/assets/Options-3a411377.js +++ b/public/build/assets/Options-3d99ca9e.js @@ -1 +1 @@ -import{_ as G}from"./SettingTabs-fbf19fde.js";import{u as E}from"./userService-d2ada2ab.js";import{a1 as L,Q as A,r as k,e as m,f as c,g as _,h as r,n as Q,i as t,j as b,t as p,l as x,m as l,P as j,a as z,S as W,b as w,a2 as H,v as J,o as K,$ as X,p as D,I as N,a3 as Y}from"./app-72c44b80.js";import{s as Z}from"./systemService-fd2a8274.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const ee=L("api"),se={update(y,d){return ee.put("/settings/"+y,{value:d})}},te={class:"columns is-mobile is-vcentered"},oe={class:"column is-narrow"},le={class:"column"},ne={key:0,class:"mt-2 has-text-warning"},ae=r("span",{class:"release-flag"},null,-1),re=r("a",{class:"is-size-7",href:"https://github.com/Bubka/2FAuth/releases"},"View on Github",-1),ie={key:1,class:"has-text-grey"},ue={key:2,class:"has-text-grey"},pe={__name:"VersionChecker",setup(y){const d=A(),o=k(!1),f=k();async function O(){o.value=!0,f.value=void 0,await Z.getLastRelease({returnError:!0}).then(i=>{d.latestRelease=i.data.newRelease,f.value=i.data.newRelease===null?null:i.data.newRelease===!1}).catch(()=>{f.value=null}),o.value=!1}return(i,U)=>{const v=m("FontAwesomeIcon");return c(),_("div",te,[r("div",oe,[r("button",{type:"button",class:Q([t(o)?"is-loading":"","button is-link is-rounded is-small"]),onClick:O},"Check now",2)]),r("div",le,[t(d).latestRelease?(c(),_("span",ne,[ae,b(p(t(d).latestRelease)+" is available ",1),re])):x("",!0),t(f)?(c(),_("span",ie,[l(v,{icon:["fas","check"],class:"mr-1 has-text-success"}),b(" "+p(i.$t("commons.you_are_up_to_date")),1)])):t(f)===null?(c(),_("span",ue,[l(v,{icon:["fas","times"],class:"mr-1 has-text-danger"}),b(p(i.$t("errors.check_failed_try_later")),1)])):x("",!0)])])}}},de={class:"options-tabs"},me={class:"block"},fe={class:"title is-4 has-text-grey-light"},ge={class:"field help"},ce={class:"ml-2",href:"https://crowdin.com/project/2fauth"},_e={class:"title is-4 pt-4 has-text-grey-light"},be={class:"title is-4 pt-4 has-text-grey-light"},ve={class:"title is-4 pt-4 has-text-grey-light"},Ve={key:0},he={class:"title is-4 pt-4 has-text-grey-light"},ye={class:"is-size-7-mobile block has-text-grey"},Oe={class:"mb-2"},Ce={__name:"Options",setup(y){const d=j("2fauth"),o=z(),f=W(),O=w(),i=A(),U=H(d.prefix+"returnTo","accounts"),v=[{text:"settings.forms.grid",value:"grid",icon:"th"},{text:"settings.forms.list",value:"list",icon:"list"}],R=[{text:"settings.forms.light",value:"light",icon:"sun"},{text:"settings.forms.dark",value:"dark",icon:"moon"},{text:"settings.forms.automatic",value:"system",icon:"desktop"}],$=[{text:"12 34 56",value:2,legend:"settings.forms.pair",title:"settings.forms.pair_legend"},{text:"123 456",value:3,legend:"settings.forms.trio",title:"settings.forms.trio_legend"},{text:"1234 5678",value:.5,legend:"settings.forms.half",title:"settings.forms.half_legend"}],F=[{text:"settings.forms.never",value:0},{text:"settings.forms.on_otp_copy",value:-1},{text:"settings.forms.1_minutes",value:1},{text:"settings.forms.5_minutes",value:5},{text:"settings.forms.10_minutes",value:10},{text:"settings.forms.15_minutes",value:15},{text:"settings.forms.30_minutes",value:30},{text:"settings.forms.1_hour",value:60},{text:"settings.forms.1_day",value:1440}],C=k([{text:"groups.no_group",value:0},{text:"groups.active_group",value:-1}]),S=[{text:"settings.forms.livescan",value:"livescan"},{text:"settings.forms.upload",value:"upload"},{text:"settings.forms.advanced_form",value:"advancedForm"}],B=[{text:"settings.forms.otp_generation_on_request",value:!0,legend:"settings.forms.otp_generation_on_request_legend",title:"settings.forms.otp_generation_on_request_title"},{text:"settings.forms.otp_generation_on_home",value:!1,legend:"settings.forms.otp_generation_on_home_legend",title:"settings.forms.otp_generation_on_home_title"}],I=J(()=>{let n=[{text:"languages.browser_preference",value:"browser"}];for(const e of d.langs)n.push({text:"languages."+e,value:e});return n});K(()=>{f.items.forEach(n=>{n.id>0&&C.value.push({text:n.name,value:n.id})})});function a(n,e){E.updatePreference(n,e).then(g=>{w().success({type:"is-success",text:N("settings.forms.setting_saved")}),n==="lang"&&Y()!==e?o.applyLanguage():n==="theme"&&o.applyTheme()})}function V(n,e){se.update(n,e).then(g=>{w().success({type:"is-success",text:N("settings.forms.setting_saved")})})}return X(n=>{n.name.startsWith("settings.")||O.clear()}),(n,e)=>{const g=m("FormSelect"),P=m("FontAwesomeIcon"),h=m("FormToggle"),u=m("FormCheckbox"),T=m("FormWrapper"),M=m("ButtonBackCloseCancel"),q=m("VueFooter");return c(),_("div",null,[l(G,{activeTab:"settings.options"}),r("div",de,[l(T,null,{default:D(()=>[r("form",null,[r("div",me,[r("h4",fe,p(n.$t("settings.general")),1),l(g,{modelValue:t(o).preferences.lang,"onUpdate:modelValue":[e[0]||(e[0]=s=>t(o).preferences.lang=s),e[1]||(e[1]=s=>a("lang",s))],options:t(I),fieldName:"lang",label:"settings.forms.language.label",help:"settings.forms.language.help"},null,8,["modelValue","options"]),r("div",ge,[b(p(n.$t("settings.forms.some_translation_are_missing"))+" ",1),r("a",ce,[b(p(n.$t("settings.forms.help_translate_2fauth"))+" ",1),l(P,{icon:["fas","external-link-alt"]})])]),l(h,{modelValue:t(o).preferences.displayMode,"onUpdate:modelValue":[e[2]||(e[2]=s=>t(o).preferences.displayMode=s),e[3]||(e[3]=s=>a("displayMode",s))],choices:v,fieldName:"displayMode",label:"settings.forms.display_mode.label",help:"settings.forms.display_mode.help"},null,8,["modelValue"]),l(h,{modelValue:t(o).preferences.theme,"onUpdate:modelValue":[e[4]||(e[4]=s=>t(o).preferences.theme=s),e[5]||(e[5]=s=>a("theme",s))],choices:R,fieldName:"theme",label:"settings.forms.theme.label",help:"settings.forms.theme.help"},null,8,["modelValue"]),l(u,{modelValue:t(o).preferences.showAccountsIcons,"onUpdate:modelValue":[e[6]||(e[6]=s=>t(o).preferences.showAccountsIcons=s),e[7]||(e[7]=s=>a("showAccountsIcons",s))],fieldName:"showAccountsIcons",label:"settings.forms.show_accounts_icons.label",help:"settings.forms.show_accounts_icons.help"},null,8,["modelValue"]),l(u,{modelValue:t(o).preferences.getOfficialIcons,"onUpdate:modelValue":[e[8]||(e[8]=s=>t(o).preferences.getOfficialIcons=s),e[9]||(e[9]=s=>a("getOfficialIcons",s))],fieldName:"getOfficialIcons",label:"settings.forms.get_official_icons.label",help:"settings.forms.get_official_icons.help"},null,8,["modelValue"]),l(u,{modelValue:t(o).preferences.formatPassword,"onUpdate:modelValue":[e[10]||(e[10]=s=>t(o).preferences.formatPassword=s),e[11]||(e[11]=s=>a("formatPassword",s))],fieldName:"formatPassword",label:"settings.forms.password_format.label",help:"settings.forms.password_format.help"},null,8,["modelValue"]),l(h,{modelValue:t(o).preferences.formatPasswordBy,"onUpdate:modelValue":[e[12]||(e[12]=s=>t(o).preferences.formatPasswordBy=s),e[13]||(e[13]=s=>a("formatPasswordBy",s))],choices:$,fieldName:"formatPasswordBy",isDisabled:!t(o).preferences.formatPassword},null,8,["modelValue","isDisabled"]),r("h4",_e,p(n.$t("groups.groups")),1),l(g,{modelValue:t(o).preferences.defaultGroup,"onUpdate:modelValue":[e[14]||(e[14]=s=>t(o).preferences.defaultGroup=s),e[15]||(e[15]=s=>a("defaultGroup",s))],options:t(C),fieldName:"defaultGroup",label:"settings.forms.default_group.label",help:"settings.forms.default_group.help"},null,8,["modelValue","options"]),l(u,{modelValue:t(o).preferences.rememberActiveGroup,"onUpdate:modelValue":[e[16]||(e[16]=s=>t(o).preferences.rememberActiveGroup=s),e[17]||(e[17]=s=>a("rememberActiveGroup",s))],fieldName:"rememberActiveGroup",label:"settings.forms.remember_active_group.label",help:"settings.forms.remember_active_group.help"},null,8,["modelValue"]),r("h4",be,p(n.$t("settings.security")),1),l(g,{modelValue:t(o).preferences.kickUserAfter,"onUpdate:modelValue":[e[18]||(e[18]=s=>t(o).preferences.kickUserAfter=s),e[19]||(e[19]=s=>a("kickUserAfter",s))],options:F,fieldName:"kickUserAfter",label:"settings.forms.auto_lock.label",help:"settings.forms.auto_lock.help"},null,8,["modelValue"]),l(h,{modelValue:t(o).preferences.getOtpOnRequest,"onUpdate:modelValue":[e[20]||(e[20]=s=>t(o).preferences.getOtpOnRequest=s),e[21]||(e[21]=s=>a("getOtpOnRequest",s))],choices:B,fieldName:"getOtpOnRequest",label:"settings.forms.otp_generation.label",help:"settings.forms.otp_generation.help"},null,8,["modelValue"]),l(u,{modelValue:t(o).preferences.closeOtpOnCopy,"onUpdate:modelValue":[e[22]||(e[22]=s=>t(o).preferences.closeOtpOnCopy=s),e[23]||(e[23]=s=>a("closeOtpOnCopy",s))],fieldName:"closeOtpOnCopy",label:"settings.forms.close_otp_on_copy.label",help:"settings.forms.close_otp_on_copy.help",isDisabled:!t(o).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),l(u,{modelValue:t(o).preferences.copyOtpOnDisplay,"onUpdate:modelValue":[e[24]||(e[24]=s=>t(o).preferences.copyOtpOnDisplay=s),e[25]||(e[25]=s=>a("copyOtpOnDisplay",s))],fieldName:"copyOtpOnDisplay",label:"settings.forms.copy_otp_on_display.label",help:"settings.forms.copy_otp_on_display.help",isDisabled:!t(o).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),l(u,{modelValue:t(o).preferences.showOtpAsDot,"onUpdate:modelValue":[e[26]||(e[26]=s=>t(o).preferences.showOtpAsDot=s),e[27]||(e[27]=s=>a("showOtpAsDot",s))],fieldName:"showOtpAsDot",label:"settings.forms.show_otp_as_dot.label",help:"settings.forms.show_otp_as_dot.help"},null,8,["modelValue"]),l(u,{modelValue:t(o).preferences.revealDottedOTP,"onUpdate:modelValue":[e[28]||(e[28]=s=>t(o).preferences.revealDottedOTP=s),e[29]||(e[29]=s=>a("revealDottedOTP",s))],fieldName:"revealDottedOTP",label:"settings.forms.reveal_dotted_otp.label",help:"settings.forms.reveal_dotted_otp.help",isDisabled:!t(o).preferences.showOtpAsDot,isIndented:!0},null,8,["modelValue","isDisabled"]),r("h4",ve,p(n.$t("settings.data_input")),1),l(u,{modelValue:t(o).preferences.useBasicQrcodeReader,"onUpdate:modelValue":[e[30]||(e[30]=s=>t(o).preferences.useBasicQrcodeReader=s),e[31]||(e[31]=s=>a("useBasicQrcodeReader",s))],fieldName:"useBasicQrcodeReader",label:"settings.forms.use_basic_qrcode_reader.label",help:"settings.forms.use_basic_qrcode_reader.help"},null,8,["modelValue"]),l(u,{modelValue:t(o).preferences.useDirectCapture,"onUpdate:modelValue":[e[32]||(e[32]=s=>t(o).preferences.useDirectCapture=s),e[33]||(e[33]=s=>a("useDirectCapture",s))],fieldName:"useDirectCapture",label:"settings.forms.useDirectCapture.label",help:"settings.forms.useDirectCapture.help"},null,8,["modelValue"]),l(g,{modelValue:t(o).preferences.defaultCaptureMode,"onUpdate:modelValue":[e[34]||(e[34]=s=>t(o).preferences.defaultCaptureMode=s),e[35]||(e[35]=s=>a("defaultCaptureMode",s))],options:S,fieldName:"defaultCaptureMode",label:"settings.forms.defaultCaptureMode.label",help:"settings.forms.defaultCaptureMode.help"},null,8,["modelValue"])]),t(o).isAdmin?(c(),_("div",Ve,[r("h4",he,p(n.$t("settings.administration")),1),r("div",ye,[r("p",Oe,p(n.$t("settings.administration_legend")),1),r("p",null,p(n.$t("settings.only_an_admin_can_edit_them")),1)]),l(u,{modelValue:t(i).checkForUpdate,"onUpdate:modelValue":[e[36]||(e[36]=s=>t(i).checkForUpdate=s),e[37]||(e[37]=s=>V("checkForUpdate",s))],fieldName:"checkForUpdate",label:"commons.check_for_update",help:"commons.check_for_update_help"},null,8,["modelValue"]),l(pe),l(u,{modelValue:t(i).useEncryption,"onUpdate:modelValue":[e[38]||(e[38]=s=>t(i).useEncryption=s),e[39]||(e[39]=s=>V("useEncryption",s))],fieldName:"useEncryption",label:"settings.forms.use_encryption.label",help:"settings.forms.use_encryption.help"},null,8,["modelValue"]),l(u,{modelValue:t(i).disableRegistration,"onUpdate:modelValue":[e[40]||(e[40]=s=>t(i).disableRegistration=s),e[41]||(e[41]=s=>V("disableRegistration",s))],fieldName:"disableRegistration",label:"settings.forms.disable_registration.label",help:"settings.forms.disable_registration.help"},null,8,["modelValue"]),l(u,{modelValue:t(i).enableSso,"onUpdate:modelValue":[e[42]||(e[42]=s=>t(i).enableSso=s),e[43]||(e[43]=s=>V("enableSso",s))],fieldName:"enableSso",label:"settings.forms.enable_sso.label",help:"settings.forms.enable_sso.help"},null,8,["modelValue"])])):x("",!0)])]),_:1})]),l(q,{showButtons:!0},{default:D(()=>[l(M,{returnTo:{name:t(U)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{Ce as default}; +import{_ as G}from"./SettingTabs-e95cff9d.js";import{u as E}from"./userService-f0891f7f.js";import{a1 as L,Q as A,r as k,e as m,f as c,g as _,h as r,n as Q,i as t,j as b,t as p,l as x,m as l,P as j,a as z,S as W,b as w,a2 as H,v as J,o as K,$ as X,p as D,I as N,a3 as Y}from"./app-347ef106.js";import{s as Z}from"./systemService-c3f13e84.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const ee=L("api"),se={update(y,d){return ee.put("/settings/"+y,{value:d})}},te={class:"columns is-mobile is-vcentered"},oe={class:"column is-narrow"},le={class:"column"},ne={key:0,class:"mt-2 has-text-warning"},ae=r("span",{class:"release-flag"},null,-1),re=r("a",{class:"is-size-7",href:"https://github.com/Bubka/2FAuth/releases"},"View on Github",-1),ie={key:1,class:"has-text-grey"},ue={key:2,class:"has-text-grey"},pe={__name:"VersionChecker",setup(y){const d=A(),o=k(!1),f=k();async function O(){o.value=!0,f.value=void 0,await Z.getLastRelease({returnError:!0}).then(i=>{d.latestRelease=i.data.newRelease,f.value=i.data.newRelease===null?null:i.data.newRelease===!1}).catch(()=>{f.value=null}),o.value=!1}return(i,U)=>{const v=m("FontAwesomeIcon");return c(),_("div",te,[r("div",oe,[r("button",{type:"button",class:Q([t(o)?"is-loading":"","button is-link is-rounded is-small"]),onClick:O},"Check now",2)]),r("div",le,[t(d).latestRelease?(c(),_("span",ne,[ae,b(p(t(d).latestRelease)+" is available ",1),re])):x("",!0),t(f)?(c(),_("span",ie,[l(v,{icon:["fas","check"],class:"mr-1 has-text-success"}),b(" "+p(i.$t("commons.you_are_up_to_date")),1)])):t(f)===null?(c(),_("span",ue,[l(v,{icon:["fas","times"],class:"mr-1 has-text-danger"}),b(p(i.$t("errors.check_failed_try_later")),1)])):x("",!0)])])}}},de={class:"options-tabs"},me={class:"block"},fe={class:"title is-4 has-text-grey-light"},ge={class:"field help"},ce={class:"ml-2",href:"https://crowdin.com/project/2fauth"},_e={class:"title is-4 pt-4 has-text-grey-light"},be={class:"title is-4 pt-4 has-text-grey-light"},ve={class:"title is-4 pt-4 has-text-grey-light"},Ve={key:0},he={class:"title is-4 pt-4 has-text-grey-light"},ye={class:"is-size-7-mobile block has-text-grey"},Oe={class:"mb-2"},Ce={__name:"Options",setup(y){const d=j("2fauth"),o=z(),f=W(),O=w(),i=A(),U=H(d.prefix+"returnTo","accounts"),v=[{text:"settings.forms.grid",value:"grid",icon:"th"},{text:"settings.forms.list",value:"list",icon:"list"}],R=[{text:"settings.forms.light",value:"light",icon:"sun"},{text:"settings.forms.dark",value:"dark",icon:"moon"},{text:"settings.forms.automatic",value:"system",icon:"desktop"}],$=[{text:"12 34 56",value:2,legend:"settings.forms.pair",title:"settings.forms.pair_legend"},{text:"123 456",value:3,legend:"settings.forms.trio",title:"settings.forms.trio_legend"},{text:"1234 5678",value:.5,legend:"settings.forms.half",title:"settings.forms.half_legend"}],F=[{text:"settings.forms.never",value:0},{text:"settings.forms.on_otp_copy",value:-1},{text:"settings.forms.1_minutes",value:1},{text:"settings.forms.5_minutes",value:5},{text:"settings.forms.10_minutes",value:10},{text:"settings.forms.15_minutes",value:15},{text:"settings.forms.30_minutes",value:30},{text:"settings.forms.1_hour",value:60},{text:"settings.forms.1_day",value:1440}],C=k([{text:"groups.no_group",value:0},{text:"groups.active_group",value:-1}]),S=[{text:"settings.forms.livescan",value:"livescan"},{text:"settings.forms.upload",value:"upload"},{text:"settings.forms.advanced_form",value:"advancedForm"}],B=[{text:"settings.forms.otp_generation_on_request",value:!0,legend:"settings.forms.otp_generation_on_request_legend",title:"settings.forms.otp_generation_on_request_title"},{text:"settings.forms.otp_generation_on_home",value:!1,legend:"settings.forms.otp_generation_on_home_legend",title:"settings.forms.otp_generation_on_home_title"}],I=J(()=>{let n=[{text:"languages.browser_preference",value:"browser"}];for(const e of d.langs)n.push({text:"languages."+e,value:e});return n});K(()=>{f.items.forEach(n=>{n.id>0&&C.value.push({text:n.name,value:n.id})})});function a(n,e){E.updatePreference(n,e).then(g=>{w().success({type:"is-success",text:N("settings.forms.setting_saved")}),n==="lang"&&Y()!==e?o.applyLanguage():n==="theme"&&o.applyTheme()})}function V(n,e){se.update(n,e).then(g=>{w().success({type:"is-success",text:N("settings.forms.setting_saved")})})}return X(n=>{n.name.startsWith("settings.")||O.clear()}),(n,e)=>{const g=m("FormSelect"),P=m("FontAwesomeIcon"),h=m("FormToggle"),u=m("FormCheckbox"),T=m("FormWrapper"),M=m("ButtonBackCloseCancel"),q=m("VueFooter");return c(),_("div",null,[l(G,{activeTab:"settings.options"}),r("div",de,[l(T,null,{default:D(()=>[r("form",null,[r("div",me,[r("h4",fe,p(n.$t("settings.general")),1),l(g,{modelValue:t(o).preferences.lang,"onUpdate:modelValue":[e[0]||(e[0]=s=>t(o).preferences.lang=s),e[1]||(e[1]=s=>a("lang",s))],options:t(I),fieldName:"lang",label:"settings.forms.language.label",help:"settings.forms.language.help"},null,8,["modelValue","options"]),r("div",ge,[b(p(n.$t("settings.forms.some_translation_are_missing"))+" ",1),r("a",ce,[b(p(n.$t("settings.forms.help_translate_2fauth"))+" ",1),l(P,{icon:["fas","external-link-alt"]})])]),l(h,{modelValue:t(o).preferences.displayMode,"onUpdate:modelValue":[e[2]||(e[2]=s=>t(o).preferences.displayMode=s),e[3]||(e[3]=s=>a("displayMode",s))],choices:v,fieldName:"displayMode",label:"settings.forms.display_mode.label",help:"settings.forms.display_mode.help"},null,8,["modelValue"]),l(h,{modelValue:t(o).preferences.theme,"onUpdate:modelValue":[e[4]||(e[4]=s=>t(o).preferences.theme=s),e[5]||(e[5]=s=>a("theme",s))],choices:R,fieldName:"theme",label:"settings.forms.theme.label",help:"settings.forms.theme.help"},null,8,["modelValue"]),l(u,{modelValue:t(o).preferences.showAccountsIcons,"onUpdate:modelValue":[e[6]||(e[6]=s=>t(o).preferences.showAccountsIcons=s),e[7]||(e[7]=s=>a("showAccountsIcons",s))],fieldName:"showAccountsIcons",label:"settings.forms.show_accounts_icons.label",help:"settings.forms.show_accounts_icons.help"},null,8,["modelValue"]),l(u,{modelValue:t(o).preferences.getOfficialIcons,"onUpdate:modelValue":[e[8]||(e[8]=s=>t(o).preferences.getOfficialIcons=s),e[9]||(e[9]=s=>a("getOfficialIcons",s))],fieldName:"getOfficialIcons",label:"settings.forms.get_official_icons.label",help:"settings.forms.get_official_icons.help"},null,8,["modelValue"]),l(u,{modelValue:t(o).preferences.formatPassword,"onUpdate:modelValue":[e[10]||(e[10]=s=>t(o).preferences.formatPassword=s),e[11]||(e[11]=s=>a("formatPassword",s))],fieldName:"formatPassword",label:"settings.forms.password_format.label",help:"settings.forms.password_format.help"},null,8,["modelValue"]),l(h,{modelValue:t(o).preferences.formatPasswordBy,"onUpdate:modelValue":[e[12]||(e[12]=s=>t(o).preferences.formatPasswordBy=s),e[13]||(e[13]=s=>a("formatPasswordBy",s))],choices:$,fieldName:"formatPasswordBy",isDisabled:!t(o).preferences.formatPassword},null,8,["modelValue","isDisabled"]),r("h4",_e,p(n.$t("groups.groups")),1),l(g,{modelValue:t(o).preferences.defaultGroup,"onUpdate:modelValue":[e[14]||(e[14]=s=>t(o).preferences.defaultGroup=s),e[15]||(e[15]=s=>a("defaultGroup",s))],options:t(C),fieldName:"defaultGroup",label:"settings.forms.default_group.label",help:"settings.forms.default_group.help"},null,8,["modelValue","options"]),l(u,{modelValue:t(o).preferences.rememberActiveGroup,"onUpdate:modelValue":[e[16]||(e[16]=s=>t(o).preferences.rememberActiveGroup=s),e[17]||(e[17]=s=>a("rememberActiveGroup",s))],fieldName:"rememberActiveGroup",label:"settings.forms.remember_active_group.label",help:"settings.forms.remember_active_group.help"},null,8,["modelValue"]),r("h4",be,p(n.$t("settings.security")),1),l(g,{modelValue:t(o).preferences.kickUserAfter,"onUpdate:modelValue":[e[18]||(e[18]=s=>t(o).preferences.kickUserAfter=s),e[19]||(e[19]=s=>a("kickUserAfter",s))],options:F,fieldName:"kickUserAfter",label:"settings.forms.auto_lock.label",help:"settings.forms.auto_lock.help"},null,8,["modelValue"]),l(h,{modelValue:t(o).preferences.getOtpOnRequest,"onUpdate:modelValue":[e[20]||(e[20]=s=>t(o).preferences.getOtpOnRequest=s),e[21]||(e[21]=s=>a("getOtpOnRequest",s))],choices:B,fieldName:"getOtpOnRequest",label:"settings.forms.otp_generation.label",help:"settings.forms.otp_generation.help"},null,8,["modelValue"]),l(u,{modelValue:t(o).preferences.closeOtpOnCopy,"onUpdate:modelValue":[e[22]||(e[22]=s=>t(o).preferences.closeOtpOnCopy=s),e[23]||(e[23]=s=>a("closeOtpOnCopy",s))],fieldName:"closeOtpOnCopy",label:"settings.forms.close_otp_on_copy.label",help:"settings.forms.close_otp_on_copy.help",isDisabled:!t(o).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),l(u,{modelValue:t(o).preferences.copyOtpOnDisplay,"onUpdate:modelValue":[e[24]||(e[24]=s=>t(o).preferences.copyOtpOnDisplay=s),e[25]||(e[25]=s=>a("copyOtpOnDisplay",s))],fieldName:"copyOtpOnDisplay",label:"settings.forms.copy_otp_on_display.label",help:"settings.forms.copy_otp_on_display.help",isDisabled:!t(o).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),l(u,{modelValue:t(o).preferences.showOtpAsDot,"onUpdate:modelValue":[e[26]||(e[26]=s=>t(o).preferences.showOtpAsDot=s),e[27]||(e[27]=s=>a("showOtpAsDot",s))],fieldName:"showOtpAsDot",label:"settings.forms.show_otp_as_dot.label",help:"settings.forms.show_otp_as_dot.help"},null,8,["modelValue"]),l(u,{modelValue:t(o).preferences.revealDottedOTP,"onUpdate:modelValue":[e[28]||(e[28]=s=>t(o).preferences.revealDottedOTP=s),e[29]||(e[29]=s=>a("revealDottedOTP",s))],fieldName:"revealDottedOTP",label:"settings.forms.reveal_dotted_otp.label",help:"settings.forms.reveal_dotted_otp.help",isDisabled:!t(o).preferences.showOtpAsDot,isIndented:!0},null,8,["modelValue","isDisabled"]),r("h4",ve,p(n.$t("settings.data_input")),1),l(u,{modelValue:t(o).preferences.useBasicQrcodeReader,"onUpdate:modelValue":[e[30]||(e[30]=s=>t(o).preferences.useBasicQrcodeReader=s),e[31]||(e[31]=s=>a("useBasicQrcodeReader",s))],fieldName:"useBasicQrcodeReader",label:"settings.forms.use_basic_qrcode_reader.label",help:"settings.forms.use_basic_qrcode_reader.help"},null,8,["modelValue"]),l(u,{modelValue:t(o).preferences.useDirectCapture,"onUpdate:modelValue":[e[32]||(e[32]=s=>t(o).preferences.useDirectCapture=s),e[33]||(e[33]=s=>a("useDirectCapture",s))],fieldName:"useDirectCapture",label:"settings.forms.useDirectCapture.label",help:"settings.forms.useDirectCapture.help"},null,8,["modelValue"]),l(g,{modelValue:t(o).preferences.defaultCaptureMode,"onUpdate:modelValue":[e[34]||(e[34]=s=>t(o).preferences.defaultCaptureMode=s),e[35]||(e[35]=s=>a("defaultCaptureMode",s))],options:S,fieldName:"defaultCaptureMode",label:"settings.forms.defaultCaptureMode.label",help:"settings.forms.defaultCaptureMode.help"},null,8,["modelValue"])]),t(o).isAdmin?(c(),_("div",Ve,[r("h4",he,p(n.$t("settings.administration")),1),r("div",ye,[r("p",Oe,p(n.$t("settings.administration_legend")),1),r("p",null,p(n.$t("settings.only_an_admin_can_edit_them")),1)]),l(u,{modelValue:t(i).checkForUpdate,"onUpdate:modelValue":[e[36]||(e[36]=s=>t(i).checkForUpdate=s),e[37]||(e[37]=s=>V("checkForUpdate",s))],fieldName:"checkForUpdate",label:"commons.check_for_update",help:"commons.check_for_update_help"},null,8,["modelValue"]),l(pe),l(u,{modelValue:t(i).useEncryption,"onUpdate:modelValue":[e[38]||(e[38]=s=>t(i).useEncryption=s),e[39]||(e[39]=s=>V("useEncryption",s))],fieldName:"useEncryption",label:"settings.forms.use_encryption.label",help:"settings.forms.use_encryption.help"},null,8,["modelValue"]),l(u,{modelValue:t(i).disableRegistration,"onUpdate:modelValue":[e[40]||(e[40]=s=>t(i).disableRegistration=s),e[41]||(e[41]=s=>V("disableRegistration",s))],fieldName:"disableRegistration",label:"settings.forms.disable_registration.label",help:"settings.forms.disable_registration.help"},null,8,["modelValue"]),l(u,{modelValue:t(i).enableSso,"onUpdate:modelValue":[e[42]||(e[42]=s=>t(i).enableSso=s),e[43]||(e[43]=s=>V("enableSso",s))],fieldName:"enableSso",label:"settings.forms.enable_sso.label",help:"settings.forms.enable_sso.help"},null,8,["modelValue"])])):x("",!0)])]),_:1})]),l(q,{showButtons:!0},{default:D(()=>[l(M,{returnTo:{name:t(U)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{Ce as default}; diff --git a/public/build/assets/OtpDisplay-62239862.js b/public/build/assets/OtpDisplay-1a3c1737.js similarity index 99% rename from public/build/assets/OtpDisplay-62239862.js rename to public/build/assets/OtpDisplay-1a3c1737.js index a070495d..c99dc8e9 100644 --- a/public/build/assets/OtpDisplay-62239862.js +++ b/public/build/assets/OtpDisplay-1a3c1737.js @@ -1 +1 @@ -import{r as s,v as C,o as J,s as Y,f as u,g as f,F as ee,G as te,i as n,n as N,a as oe,b as ae,P as ne,R as se,Z as re,x as le,e as ue,h as S,l as A,m as M,p as ie,t as b,w as ce,X as pe,U as ve,A as j,B as q,k as z,D as de,J as B,I as E,O as G}from"./app-72c44b80.js";import{S as fe}from"./Spinner-0e4f49a2.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const ye={__name:"TotpLooper",props:{step_count:{type:Number,default:10},period:Number,generated_at:Number,autostart:{type:Boolean,default:!0}},emits:["loop-started","loop-ended","stepped-up"],setup(k,{expose:T,emit:l}){const o=k,r=s(null),i=s(null),x=s(null),y=s(null),c=s(null),p=C(()=>r.value%o.period),h=C(()=>o.period-p.value),w=C(()=>o.period/o.step_count),e=C(()=>{let v=p.value*o.step_count/o.period;return Math.floor(v)+0}),m=(v=null)=>{_(),r.value=v??o.generated_at,l("loop-started",e.value),c.value=e.value,i.value=setTimeout(function(){_(),l("loop-ended")},h.value*1e3);let g=Math.ceil(p.value/w.value)*w.value-p.value;x.value=setTimeout(function(){g>0&&(c.value+=1,l("stepped-up",c.value)),y.value=setInterval(function(){c.value+=1,l("stepped-up",c.value)},w.value*1e3)},g*1e3)},_=()=>{clearTimeout(i.value),clearTimeout(x.value),clearInterval(y.value),c.value=r.value=null};return J(()=>{o.autostart==!0&&m()}),Y(()=>{_()}),T({startLoop:m,clearLooper:_,props:o}),(v,g)=>(u(),f("div"))}},me=["data-is-active"],_e={__name:"Dots",props:{stepCount:{type:Number,default:10},initialIndex:{type:Number,default:null},period:{type:Number,default:null}},setup(k,{expose:T}){const l=k,o=s(0),r=C(()=>o.value==-1);function i(y){o.value=y{isNaN(l.initialIndex)||i(l.initialIndex)}),T({turnOn:i,turnOff:x,props:l}),(y,c)=>(u(),f("ul",{class:N(["dots",{off:n(r)}])},[(u(!0),f(ee,null,te(k.stepCount,p=>(u(),f("li",{key:p,"data-is-active":p==n(o)?!0:null},null,8,me))),128))],2))}},ge=["src","alt"],he=["title"],we={key:1,tabindex:"0",class:"otp is-size-1"},ke={key:0,class:"mt-3"},Se={__name:"OtpDisplay",props:{otp_type:String,account:String,service:String,icon:String,secret:String,digits:Number,algorithm:String,period:null,counter:null,image:String,qrcode:null,uri:String},emits:["please-close-me","increment-hotp","validation-error"],setup(k,{expose:T,emit:l}){const o=k,r=oe(),i=ae(),x=ne("2fauth"),{copy:y,copied:c}=se({legacy:!0}),p=re(),h=s(null),w=s(null),e=s({otp_type:"",account:"",service:"",icon:"",secret:"",digits:null,algorithm:"",period:null,counter:null,image:""}),m=s(""),_=s(null),v=s(!1),g=s(!1),O=s(!1),D=s(),I=s(),V=s();le(()=>o.icon,a=>{a!=null&&(e.value.icon=a)});const X=async a=>{if(O.value=!1,e.value.otp_type=o.otp_type,e.value.account=o.account,e.value.service=o.service,e.value.icon=o.icon,e.value.secret=o.secret,e.value.digits=o.digits,e.value.algorithm=o.algorithm,e.value.period=o.period,e.value.counter=o.counter,H(),a){h.value=a;const{data:t}=await B.get(h.value);e.value.service=t.service,e.value.account=t.account,e.value.icon=t.icon,e.value.otp_type=t.otp_type,P(t.otp_type)&&t.counter&&(e.value.counter=t.counter)}else o.uri?(w.value=o.uri,e.value.otp_type=o.uri.slice(0,15).toLowerCase()==="otpauth://totp/"?"totp":"hotp"):o.secret?!U(e.value.otp_type)&&!P(e.value.otp_type)&&i.error(new Error(E("errors.not_a_supported_otp_type"))):i.error(new Error(E("errors.cannot_create_otp_without_secret")));try{await F(),Q()}catch{L()}};async function F(){H(),await Z().then(a=>{let t=a.data;m.value=t.password,r.preferences.copyOtpOnDisplay&&$(t.password),U(t.otp_type)?(_.value=t.generated_at,e.value.period=t.period,v.value=!0,G().then(()=>{I.value.startLoop()})):P(t.otp_type)&&(e.value.counter=t.counter,l("increment-hotp",{nextHotpCounter:t.counter,nextUri:t.uri}))}).catch(a=>{a.response.status===422&&l("validation-error",a.response)}).finally(()=>{g.value=!1})}function H(){g.value=!0,D.value.turnOff()}function Z(){return h.value?B.getOtpById(h.value):w.value?B.getOtpByUri(w.value):B.getOtpByParams(e.value)}function L(){var a;h.value=e.value.counter=_.value=null,e.value.service=e.value.account=e.value.icon=e.value.otp_type=e.value.secret="",m.value="... ...",v.value=!1,(a=I.value)==null||a.clearLooper()}function Q(){G().then(()=>{var a;(a=V.value)==null||a.focus()})}function $(a,t){y(a.replace(/ /g,"")),c&&(r.preferences.kickUserAfter==-1&&(t||!1)===!0&&p.name!="importAccounts"?r.logout({kicked:!0}):r.preferences.closeOtpOnCopy&&(t||!1)===!0&&(l("please-close-me"),O.value=!1,L()),i.success({text:E("commons.copied_to_clipboard")}))}function U(a){return a==="totp"||a==="steamtotp"}function P(a){return a==="hotp"}function K(a){D.value.turnOn(a)}return T({show:X,clearOTP:L}),(a,t)=>{const R=ue("font-awesome-icon");return u(),f("div",null,[S("figure",{class:N(["image is-64x64",{"no-icon":!n(e).icon}]),style:{display:"inline-block"}},[n(e).icon?(u(),f("img",{key:0,src:n(x).config.subdirectory+"/storage/icons/"+n(e).icon,alt:a.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,ge)):A("",!0)],2),M(n(ve),null,{default:ie(({mode:d})=>[S("p",{class:N(["is-size-4 has-ellipsis",d=="dark"?"has-text-grey-light":"has-text-grey"])},b(n(e).service),3),S("p",{class:N(["is-size-6 has-ellipsis",d=="dark"?"has-text-grey":"has-text-grey-light"])},b(n(e).account),3),S("p",null,[n(g)?(u(),f("span",we,[M(fe,{isVisible:n(g),type:"raw"},null,8,["isVisible"])])):(u(),f("span",{key:0,id:"otp",role:"log",ref_key:"otpSpanTag",ref:V,tabindex:"0",class:N(["otp is-size-1 is-clickable px-3",d=="dark"?"has-text-white":"has-text-grey-dark"]),onClick:t[0]||(t[0]=W=>$(n(m),!0)),onKeyup:t[1]||(t[1]=ce(W=>$(n(m),!0),["enter"])),title:a.$t("commons.copy_to_clipboard")},b(n(pe)(n(m),n(r).preferences.showOtpAsDot&&n(r).preferences.revealDottedOTP&&n(O))),43,he))])]),_:1}),j(M(_e,{ref_key:"dots",ref:D},null,512),[[q,U(n(e).otp_type)]]),j(S("p",null,b(a.$t("twofaccounts.forms.counter.label"))+": "+b(n(e).counter),513),[[q,P(n(e).otp_type)]]),n(r).preferences.showOtpAsDot&&n(r).preferences.revealDottedOTP?(u(),f("p",ke,[S("button",{class:"button is-ghost has-text-grey-dark",onClick:t[2]||(t[2]=de(d=>O.value=!n(O),["stop"]))},[n(O)?(u(),z(R,{key:0,icon:["fas","eye"]})):(u(),z(R,{key:1,icon:["fas","eye-slash"]}))])])):A("",!0),n(v)?(u(),z(ye,{key:1,period:n(e).period,generated_at:n(_),autostart:!1,onLoopEnded:t[3]||(t[3]=d=>F()),onLoopStarted:t[4]||(t[4]=d=>K(d)),onSteppedUp:t[5]||(t[5]=d=>K(d)),ref_key:"totpLooper",ref:I},null,8,["period","generated_at"])):A("",!0)])}}};export{Se as _,ye as a,_e as b}; +import{r as s,v as C,o as J,s as Y,f as u,g as f,F as ee,G as te,i as n,n as N,a as oe,b as ae,P as ne,R as se,Z as re,x as le,e as ue,h as S,l as A,m as M,p as ie,t as b,w as ce,X as pe,U as ve,A as j,B as q,k as z,D as de,J as B,I as E,O as G}from"./app-347ef106.js";import{S as fe}from"./Spinner-8bfb7257.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const ye={__name:"TotpLooper",props:{step_count:{type:Number,default:10},period:Number,generated_at:Number,autostart:{type:Boolean,default:!0}},emits:["loop-started","loop-ended","stepped-up"],setup(k,{expose:T,emit:l}){const o=k,r=s(null),i=s(null),x=s(null),y=s(null),c=s(null),p=C(()=>r.value%o.period),h=C(()=>o.period-p.value),w=C(()=>o.period/o.step_count),e=C(()=>{let v=p.value*o.step_count/o.period;return Math.floor(v)+0}),m=(v=null)=>{_(),r.value=v??o.generated_at,l("loop-started",e.value),c.value=e.value,i.value=setTimeout(function(){_(),l("loop-ended")},h.value*1e3);let g=Math.ceil(p.value/w.value)*w.value-p.value;x.value=setTimeout(function(){g>0&&(c.value+=1,l("stepped-up",c.value)),y.value=setInterval(function(){c.value+=1,l("stepped-up",c.value)},w.value*1e3)},g*1e3)},_=()=>{clearTimeout(i.value),clearTimeout(x.value),clearInterval(y.value),c.value=r.value=null};return J(()=>{o.autostart==!0&&m()}),Y(()=>{_()}),T({startLoop:m,clearLooper:_,props:o}),(v,g)=>(u(),f("div"))}},me=["data-is-active"],_e={__name:"Dots",props:{stepCount:{type:Number,default:10},initialIndex:{type:Number,default:null},period:{type:Number,default:null}},setup(k,{expose:T}){const l=k,o=s(0),r=C(()=>o.value==-1);function i(y){o.value=y{isNaN(l.initialIndex)||i(l.initialIndex)}),T({turnOn:i,turnOff:x,props:l}),(y,c)=>(u(),f("ul",{class:N(["dots",{off:n(r)}])},[(u(!0),f(ee,null,te(k.stepCount,p=>(u(),f("li",{key:p,"data-is-active":p==n(o)?!0:null},null,8,me))),128))],2))}},ge=["src","alt"],he=["title"],we={key:1,tabindex:"0",class:"otp is-size-1"},ke={key:0,class:"mt-3"},Se={__name:"OtpDisplay",props:{otp_type:String,account:String,service:String,icon:String,secret:String,digits:Number,algorithm:String,period:null,counter:null,image:String,qrcode:null,uri:String},emits:["please-close-me","increment-hotp","validation-error"],setup(k,{expose:T,emit:l}){const o=k,r=oe(),i=ae(),x=ne("2fauth"),{copy:y,copied:c}=se({legacy:!0}),p=re(),h=s(null),w=s(null),e=s({otp_type:"",account:"",service:"",icon:"",secret:"",digits:null,algorithm:"",period:null,counter:null,image:""}),m=s(""),_=s(null),v=s(!1),g=s(!1),O=s(!1),D=s(),I=s(),V=s();le(()=>o.icon,a=>{a!=null&&(e.value.icon=a)});const X=async a=>{if(O.value=!1,e.value.otp_type=o.otp_type,e.value.account=o.account,e.value.service=o.service,e.value.icon=o.icon,e.value.secret=o.secret,e.value.digits=o.digits,e.value.algorithm=o.algorithm,e.value.period=o.period,e.value.counter=o.counter,H(),a){h.value=a;const{data:t}=await B.get(h.value);e.value.service=t.service,e.value.account=t.account,e.value.icon=t.icon,e.value.otp_type=t.otp_type,P(t.otp_type)&&t.counter&&(e.value.counter=t.counter)}else o.uri?(w.value=o.uri,e.value.otp_type=o.uri.slice(0,15).toLowerCase()==="otpauth://totp/"?"totp":"hotp"):o.secret?!U(e.value.otp_type)&&!P(e.value.otp_type)&&i.error(new Error(E("errors.not_a_supported_otp_type"))):i.error(new Error(E("errors.cannot_create_otp_without_secret")));try{await F(),Q()}catch{L()}};async function F(){H(),await Z().then(a=>{let t=a.data;m.value=t.password,r.preferences.copyOtpOnDisplay&&$(t.password),U(t.otp_type)?(_.value=t.generated_at,e.value.period=t.period,v.value=!0,G().then(()=>{I.value.startLoop()})):P(t.otp_type)&&(e.value.counter=t.counter,l("increment-hotp",{nextHotpCounter:t.counter,nextUri:t.uri}))}).catch(a=>{a.response.status===422&&l("validation-error",a.response)}).finally(()=>{g.value=!1})}function H(){g.value=!0,D.value.turnOff()}function Z(){return h.value?B.getOtpById(h.value):w.value?B.getOtpByUri(w.value):B.getOtpByParams(e.value)}function L(){var a;h.value=e.value.counter=_.value=null,e.value.service=e.value.account=e.value.icon=e.value.otp_type=e.value.secret="",m.value="... ...",v.value=!1,(a=I.value)==null||a.clearLooper()}function Q(){G().then(()=>{var a;(a=V.value)==null||a.focus()})}function $(a,t){y(a.replace(/ /g,"")),c&&(r.preferences.kickUserAfter==-1&&(t||!1)===!0&&p.name!="importAccounts"?r.logout({kicked:!0}):r.preferences.closeOtpOnCopy&&(t||!1)===!0&&(l("please-close-me"),O.value=!1,L()),i.success({text:E("commons.copied_to_clipboard")}))}function U(a){return a==="totp"||a==="steamtotp"}function P(a){return a==="hotp"}function K(a){D.value.turnOn(a)}return T({show:X,clearOTP:L}),(a,t)=>{const R=ue("font-awesome-icon");return u(),f("div",null,[S("figure",{class:N(["image is-64x64",{"no-icon":!n(e).icon}]),style:{display:"inline-block"}},[n(e).icon?(u(),f("img",{key:0,src:n(x).config.subdirectory+"/storage/icons/"+n(e).icon,alt:a.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,ge)):A("",!0)],2),M(n(ve),null,{default:ie(({mode:d})=>[S("p",{class:N(["is-size-4 has-ellipsis",d=="dark"?"has-text-grey-light":"has-text-grey"])},b(n(e).service),3),S("p",{class:N(["is-size-6 has-ellipsis",d=="dark"?"has-text-grey":"has-text-grey-light"])},b(n(e).account),3),S("p",null,[n(g)?(u(),f("span",we,[M(fe,{isVisible:n(g),type:"raw"},null,8,["isVisible"])])):(u(),f("span",{key:0,id:"otp",role:"log",ref_key:"otpSpanTag",ref:V,tabindex:"0",class:N(["otp is-size-1 is-clickable px-3",d=="dark"?"has-text-white":"has-text-grey-dark"]),onClick:t[0]||(t[0]=W=>$(n(m),!0)),onKeyup:t[1]||(t[1]=ce(W=>$(n(m),!0),["enter"])),title:a.$t("commons.copy_to_clipboard")},b(n(pe)(n(m),n(r).preferences.showOtpAsDot&&n(r).preferences.revealDottedOTP&&n(O))),43,he))])]),_:1}),j(M(_e,{ref_key:"dots",ref:D},null,512),[[q,U(n(e).otp_type)]]),j(S("p",null,b(a.$t("twofaccounts.forms.counter.label"))+": "+b(n(e).counter),513),[[q,P(n(e).otp_type)]]),n(r).preferences.showOtpAsDot&&n(r).preferences.revealDottedOTP?(u(),f("p",ke,[S("button",{class:"button is-ghost has-text-grey-dark",onClick:t[2]||(t[2]=de(d=>O.value=!n(O),["stop"]))},[n(O)?(u(),z(R,{key:0,icon:["fas","eye"]})):(u(),z(R,{key:1,icon:["fas","eye-slash"]}))])])):A("",!0),n(v)?(u(),z(ye,{key:1,period:n(e).period,generated_at:n(_),autostart:!1,onLoopEnded:t[3]||(t[3]=d=>F()),onLoopStarted:t[4]||(t[4]=d=>K(d)),onSteppedUp:t[5]||(t[5]=d=>K(d)),ref_key:"totpLooper",ref:I},null,8,["period","generated_at"])):A("",!0)])}}};export{Se as _,ye as a,_e as b}; diff --git a/public/build/assets/QRcode-90640d5d.js b/public/build/assets/QRcode-628d39fd.js similarity index 87% rename from public/build/assets/QRcode-90640d5d.js rename to public/build/assets/QRcode-628d39fd.js index 9ee64a1d..490a0b80 100644 --- a/public/build/assets/QRcode-90640d5d.js +++ b/public/build/assets/QRcode-628d39fd.js @@ -1 +1 @@ -import{u as _,Z as m,r as p,_ as f,J as h,e as c,f as n,g as r,h as a,i as t,l as B,m as s,p as g}from"./app-72c44b80.js";import{S as k}from"./Spinner-0e4f49a2.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const v={class:"modal modal-otp is-active"},C=a("div",{class:"modal-background"},null,-1),V={class:"modal-content"},w={class:"has-text-centered m-5"},b=["src","alt"],F={__name:"QRcode",setup(y){_();const l=m(),e=p();f(()=>{i()});async function i(){const{data:o}=await h.getQrcode(l.params.twofaccountId);e.value=o.qrcode}return(o,R)=>{const u=c("ButtonBackCloseCancel"),d=c("VueFooter");return n(),r("div",v,[C,a("div",V,[a("p",w,[t(e)?(n(),r("img",{key:0,src:t(e),class:"has-background-light",alt:o.$t("commons.image_of_qrcode_to_scan")},null,8,b)):B("",!0),s(k,{isVisible:!t(e),type:"raw",class:"is-size-1"},null,8,["isVisible"])])]),s(d,{showButtons:!0,internalFooterType:"modal"},{default:g(()=>[s(u,{returnTo:{name:"accounts"},action:"close"})]),_:1})])}}};export{F as default}; +import{u as _,Z as m,r as p,_ as f,J as h,e as c,f as n,g as r,h as a,i as t,l as B,m as s,p as g}from"./app-347ef106.js";import{S as k}from"./Spinner-8bfb7257.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const v={class:"modal modal-otp is-active"},C=a("div",{class:"modal-background"},null,-1),V={class:"modal-content"},w={class:"has-text-centered m-5"},b=["src","alt"],F={__name:"QRcode",setup(y){_();const l=m(),e=p();f(()=>{i()});async function i(){const{data:o}=await h.getQrcode(l.params.twofaccountId);e.value=o.qrcode}return(o,R)=>{const u=c("ButtonBackCloseCancel"),d=c("VueFooter");return n(),r("div",v,[C,a("div",V,[a("p",w,[t(e)?(n(),r("img",{key:0,src:t(e),class:"has-background-light",alt:o.$t("commons.image_of_qrcode_to_scan")},null,8,b)):B("",!0),s(k,{isVisible:!t(e),type:"raw",class:"is-size-1"},null,8,["isVisible"])])]),s(d,{showButtons:!0,internalFooterType:"modal"},{default:g(()=>[s(u,{returnTo:{name:"accounts"},action:"close"})]),_:1})])}}};export{F as default}; diff --git a/public/build/assets/QrContentDisplay-d6c6658b.js b/public/build/assets/QrContentDisplay-1d6d5b3f.js similarity index 96% rename from public/build/assets/QrContentDisplay-d6c6658b.js rename to public/build/assets/QrContentDisplay-1d6d5b3f.js index 18aa9f6e..591557ab 100644 --- a/public/build/assets/QrContentDisplay-d6c6658b.js +++ b/public/build/assets/QrContentDisplay-1d6d5b3f.js @@ -1 +1 @@ -import{R as h,b as v,e as w,f as r,g as l,h as n,t as s,m as c,p as _,n as y,i as d,I as u,U as g,D as q,l as m,F as $}from"./app-72c44b80.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const x=n("div",{class:"too-bad"},null,-1),E={class:"block"},I={key:0,class:"block has-text-link"},B={class:"button is-link is-outlined is-rounded"},F={class:"icon is-small"},R={__name:"QrContentDisplay",props:{qrContent:String},setup(o){const{copy:b}=h({legacy:!0}),k=v();function p(t){var e=/^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/,a=new RegExp(e);return a.test(t)}function C(t){const e=document.createElement("a");e.setAttribute("href",t),e.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))}function f(t){b(t),k.success({text:u("commons.copied_to_clipboard")})}return(t,e)=>{const a=w("FontAwesomeIcon");return r(),l($,null,[x,n("div",E,s(t.$t("errors.data_of_qrcode_is_not_valid_URI")),1),c(d(g),null,{default:_(({mode:i})=>[n("div",{class:y(["block mb-6",i=="dark"?"has-text-light":"has-text-grey-dark"])},s(o.qrContent?o.qrContent:"["+("trans"in t?t.trans:d(u))("commons.nothing")+"]"),3)]),_:1}),o.qrContent?(r(),l("div",I,[n("button",{class:"button is-link is-outlined is-rounded",onClick:e[0]||(e[0]=q(i=>f(o.qrContent),["stop"]))},s(t.$t("commons.copy_to_clipboard")),1)])):m("",!0),p(o.qrContent)?(r(),l("div",{key:1,class:"block has-text-link",onClick:e[1]||(e[1]=i=>C(o.qrContent))},[n("button",B,[n("span",null,s(t.$t("commons.open_in_browser")),1),n("span",F,[c(a,{icon:["fas","external-link-alt"]})])])])):m("",!0)],64)}}};export{R as _}; +import{R as h,b as v,e as w,f as r,g as l,h as n,t as s,m as c,p as _,n as y,i as d,I as u,U as g,D as q,l as m,F as $}from"./app-347ef106.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const x=n("div",{class:"too-bad"},null,-1),E={class:"block"},I={key:0,class:"block has-text-link"},B={class:"button is-link is-outlined is-rounded"},F={class:"icon is-small"},R={__name:"QrContentDisplay",props:{qrContent:String},setup(o){const{copy:b}=h({legacy:!0}),k=v();function p(t){var e=/^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/,a=new RegExp(e);return a.test(t)}function C(t){const e=document.createElement("a");e.setAttribute("href",t),e.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))}function f(t){b(t),k.success({text:u("commons.copied_to_clipboard")})}return(t,e)=>{const a=w("FontAwesomeIcon");return r(),l($,null,[x,n("div",E,s(t.$t("errors.data_of_qrcode_is_not_valid_URI")),1),c(d(g),null,{default:_(({mode:i})=>[n("div",{class:y(["block mb-6",i=="dark"?"has-text-light":"has-text-grey-dark"])},s(o.qrContent?o.qrContent:"["+("trans"in t?t.trans:d(u))("commons.nothing")+"]"),3)]),_:1}),o.qrContent?(r(),l("div",I,[n("button",{class:"button is-link is-outlined is-rounded",onClick:e[0]||(e[0]=q(i=>f(o.qrContent),["stop"]))},s(t.$t("commons.copy_to_clipboard")),1)])):m("",!0),p(o.qrContent)?(r(),l("div",{key:1,class:"block has-text-link",onClick:e[1]||(e[1]=i=>C(o.qrContent))},[n("button",B,[n("span",null,s(t.$t("commons.open_in_browser")),1),n("span",F,[c(a,{icon:["fas","external-link-alt"]})])])])):m("",!0)],64)}}};export{R as _}; diff --git a/public/build/assets/Recover-35ac48f1.js b/public/build/assets/Recover-9aa60c2c.js similarity index 97% rename from public/build/assets/Recover-35ac48f1.js rename to public/build/assets/Recover-9aa60c2c.js index 7b4c8589..025213d5 100644 --- a/public/build/assets/Recover-35ac48f1.js +++ b/public/build/assets/Recover-9aa60c2c.js @@ -1 +1 @@ -import{P as V,b as B,u as R,Z as g,a2 as $,d as N,$ as C,e as a,f as D,k as S,p as d,h as u,D as q,i as s,m as l,j as c,t as m,I as A}from"./app-72c44b80.js";import{F as L}from"./Form-d325991a.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const P=["onSubmit"],W={class:"field"},I={__name:"Recover",setup(x){const p=V("2fauth"),r=B(),f=R(),i=g(),h=$(p.prefix+"showWebauthnForm",!1),o=N(new L({email:i.query.email,password:"",token:i.query.token,revokeAll:!1}));function _(t){r.clear(),o.post("/webauthn/recover",{returnError:!0}).then(e=>{h.value=!1,f.push({name:"login"})}).catch(e=>{e.response.status===401?r.alert({text:A("auth.forms.authentication_failed"),duration:-1}):e.response.status===422?r.alert({text:e.response.data.message,duration:-1}):r.error(e)})}return C(()=>{r.clear()}),(t,e)=>{const w=a("FormCheckbox"),b=a("FormPasswordField"),v=a("RouterLink"),F=a("FormButtons"),k=a("VueFooter"),y=a("FormWrapper");return D(),S(y,{title:t.$t("auth.webauthn.account_recovery"),punchline:t.$t("auth.webauthn.recover_account_instructions")},{default:d(()=>[u("div",null,[u("form",{onSubmit:q(_,["prevent"]),onKeydown:e[2]||(e[2]=n=>s(o).onKeydown(n))},[l(w,{modelValue:s(o).revokeAll,"onUpdate:modelValue":e[0]||(e[0]=n=>s(o).revokeAll=n),fieldName:"revokeAll",label:"auth.webauthn.disable_all_security_devices",help:"auth.webauthn.disable_all_security_devices_help"},null,8,["modelValue"]),l(b,{modelValue:s(o).password,"onUpdate:modelValue":e[1]||(e[1]=n=>s(o).password=n),fieldName:"password",fieldError:s(o).errors.get("password"),autocomplete:"current-password",showRules:!1,label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),u("div",W,[u("p",null,[c(m(t.$t("auth.forms.forgot_your_password"))+"  ",1),l(v,{id:"lnkResetPwd",to:{name:"password.request"},class:"is-link","aria-label":t.$t("auth.forms.reset_your_password")},{default:d(()=>[c(m(t.$t("auth.forms.request_password_reset")),1)]),_:1},8,["to","aria-label"])])]),l(F,{submitId:"btnRecover",isBusy:s(o).isBusy,isDisabled:s(o).isDisabled,caption:t.$t("commons.continue"),showCancelButton:!0,cancelLandingView:"login"},null,8,["isBusy","isDisabled","caption"])],40,P)]),l(k)]),_:1},8,["title","punchline"])}}};export{I as default}; +import{P as V,b as B,u as R,Z as g,a2 as $,d as N,$ as C,e as a,f as D,k as S,p as d,h as u,D as q,i as s,m as l,j as c,t as m,I as A}from"./app-347ef106.js";import{F as L}from"./Form-893a9a1a.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const P=["onSubmit"],W={class:"field"},I={__name:"Recover",setup(x){const p=V("2fauth"),r=B(),f=R(),i=g(),h=$(p.prefix+"showWebauthnForm",!1),o=N(new L({email:i.query.email,password:"",token:i.query.token,revokeAll:!1}));function _(t){r.clear(),o.post("/webauthn/recover",{returnError:!0}).then(e=>{h.value=!1,f.push({name:"login"})}).catch(e=>{e.response.status===401?r.alert({text:A("auth.forms.authentication_failed"),duration:-1}):e.response.status===422?r.alert({text:e.response.data.message,duration:-1}):r.error(e)})}return C(()=>{r.clear()}),(t,e)=>{const w=a("FormCheckbox"),b=a("FormPasswordField"),v=a("RouterLink"),F=a("FormButtons"),k=a("VueFooter"),y=a("FormWrapper");return D(),S(y,{title:t.$t("auth.webauthn.account_recovery"),punchline:t.$t("auth.webauthn.recover_account_instructions")},{default:d(()=>[u("div",null,[u("form",{onSubmit:q(_,["prevent"]),onKeydown:e[2]||(e[2]=n=>s(o).onKeydown(n))},[l(w,{modelValue:s(o).revokeAll,"onUpdate:modelValue":e[0]||(e[0]=n=>s(o).revokeAll=n),fieldName:"revokeAll",label:"auth.webauthn.disable_all_security_devices",help:"auth.webauthn.disable_all_security_devices_help"},null,8,["modelValue"]),l(b,{modelValue:s(o).password,"onUpdate:modelValue":e[1]||(e[1]=n=>s(o).password=n),fieldName:"password",fieldError:s(o).errors.get("password"),autocomplete:"current-password",showRules:!1,label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),u("div",W,[u("p",null,[c(m(t.$t("auth.forms.forgot_your_password"))+"  ",1),l(v,{id:"lnkResetPwd",to:{name:"password.request"},class:"is-link","aria-label":t.$t("auth.forms.reset_your_password")},{default:d(()=>[c(m(t.$t("auth.forms.request_password_reset")),1)]),_:1},8,["to","aria-label"])])]),l(F,{submitId:"btnRecover",isBusy:s(o).isBusy,isDisabled:s(o).isDisabled,caption:t.$t("commons.continue"),showCancelButton:!0,cancelLandingView:"login"},null,8,["isBusy","isDisabled","caption"])],40,P)]),l(k)]),_:1},8,["title","punchline"])}}};export{I as default}; diff --git a/public/build/assets/Register-72e05bf6.js b/public/build/assets/Register-a013046c.js similarity index 96% rename from public/build/assets/Register-72e05bf6.js rename to public/build/assets/Register-a013046c.js index b9368097..e65e703f 100644 --- a/public/build/assets/Register-72e05bf6.js +++ b/public/build/assets/Register-a013046c.js @@ -1 +1 @@ -import{a as T,b as C,u as I,r as F,d as k,$ as K,e as l,f as u,g as _,i as t,k as V,p as c,m as n,h as i,j as p,t as d,D,I as U}from"./app-72c44b80.js";import{F as B}from"./Form-d325991a.js";import{w as W}from"./webauthnService-08262ddb.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const P={key:0,class:"field"},M={id:"lblDeviceRegistrationSuccess",class:"label mb-5"},j=["onSubmit"],A={key:1,class:"field is-grouped"},J={class:"control"},O={class:"control"},Y=["onSubmit"],q={class:"nav-links"},X={__name:"Register",setup(z){const b=T(),m=C(),R=I(),w=F(!1),f=F(null),s=k(new B({name:"",email:"",password:"",password_confirmation:""})),r=k(new B({name:""}));async function S(o){s.password_confirmation=s.password,s.post("/user").then(e=>{b.$patch({name:e.data.name,email:e.data.email,preferences:e.data.preferences,isAdmin:e.data.is_admin??!1}),b.applyTheme(),w.value=!0})}function N(){W.register().then(o=>{const e=JSON.parse(o.config.data);f.value=e.id}).catch(o=>{o.response.status===422?m.alert({text:o.response.data.message}):m.error(o)})}function E(o){r.patch("/webauthn/credentials/"+f.value+"/name").then(()=>{m.success({text:U("auth.webauthn.device_successfully_registered")}),R.push({name:"accounts"})})}return K(()=>{m.clear()}),(o,e)=>{const $=l("font-awesome-icon"),h=l("FormField"),g=l("FormButtons"),y=l("RouterLink"),v=l("FormWrapper"),x=l("FormPasswordField"),L=l("VueFooter");return u(),_("div",null,[t(w)?(u(),V(v,{key:0,title:"auth.authentication",punchline:"auth.webauthn.enhance_security_using_webauthn"},{default:c(()=>[t(f)?(u(),_("div",P,[i("label",M,[p(d(o.$t("auth.webauthn.device_successfully_registered"))+" ",1),n($,{icon:["fas","check"]})]),i("form",{onSubmit:D(E,["prevent"]),onKeydown:e[1]||(e[1]=a=>t(r).onKeydown(a))},[n(h,{modelValue:t(r).name,"onUpdate:modelValue":e[0]||(e[0]=a=>t(r).name=a),fieldName:"name",fieldError:t(r).errors.get("name"),inputType:"text",placeholder:"iPhone 12, TouchID, Yubikey 5C",label:"auth.forms.name_this_device"},null,8,["modelValue","fieldError"]),n(g,{isBusy:t(r).isBusy,isDisabled:t(r).isDisabled,caption:"commons.continue"},null,8,["isBusy","isDisabled"])],40,j)])):(u(),_("div",A,[i("div",J,[i("button",{type:"button",id:"btnRegisterNewDevice",onClick:e[2]||(e[2]=a=>N()),class:"button is-link"},d(o.$t("auth.webauthn.register_a_device")),1)]),i("div",O,[n(y,{id:"btnMaybeLater",to:{name:"accounts"},class:"button is-text"},{default:c(()=>[p(d(o.$t("auth.maybe_later")),1)]),_:1})])]))]),_:1})):(u(),V(v,{key:1,title:"auth.register",punchline:"auth.forms.register_punchline"},{default:c(()=>[i("form",{onSubmit:D(S,["prevent"]),onKeydown:e[6]||(e[6]=a=>t(s).onKeydown(a))},[n(h,{modelValue:t(s).name,"onUpdate:modelValue":e[3]||(e[3]=a=>t(s).name=a),fieldName:"name",fieldError:t(s).errors.get("name"),inputType:"text",label:"auth.forms.name",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),n(h,{modelValue:t(s).email,"onUpdate:modelValue":e[4]||(e[4]=a=>t(s).email=a),fieldName:"email",fieldError:t(s).errors.get("email"),inputType:"email",label:"auth.forms.email",maxLength:255},null,8,["modelValue","fieldError"]),n(x,{modelValue:t(s).password,"onUpdate:modelValue":e[5]||(e[5]=a=>t(s).password=a),fieldName:"password",fieldError:t(s).errors.get("password"),showRules:!0,label:"auth.forms.password"},null,8,["modelValue","fieldError"]),n(g,{isBusy:t(s).isBusy,isDisabled:t(s).isDisabled,caption:"auth.register",submitId:"btnRegister"},null,8,["isBusy","isDisabled"])],40,Y),i("div",q,[i("p",null,[p(d(o.$t("auth.forms.already_register"))+" ",1),n(y,{id:"lnkSignIn",to:{name:"login"},class:"is-link"},{default:c(()=>[p(d(o.$t("auth.sign_in")),1)]),_:1})])])]),_:1})),n(L)])}}};export{X as default}; +import{a as T,b as C,u as I,r as F,d as k,$ as K,e as l,f as u,g as _,i as t,k as V,p as c,m as n,h as i,j as p,t as d,D,I as U}from"./app-347ef106.js";import{F as B}from"./Form-893a9a1a.js";import{w as W}from"./webauthnService-ad1f52a0.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const P={key:0,class:"field"},M={id:"lblDeviceRegistrationSuccess",class:"label mb-5"},j=["onSubmit"],A={key:1,class:"field is-grouped"},J={class:"control"},O={class:"control"},Y=["onSubmit"],q={class:"nav-links"},X={__name:"Register",setup(z){const b=T(),m=C(),R=I(),w=F(!1),f=F(null),s=k(new B({name:"",email:"",password:"",password_confirmation:""})),r=k(new B({name:""}));async function S(o){s.password_confirmation=s.password,s.post("/user").then(e=>{b.$patch({name:e.data.name,email:e.data.email,preferences:e.data.preferences,isAdmin:e.data.is_admin??!1}),b.applyTheme(),w.value=!0})}function N(){W.register().then(o=>{const e=JSON.parse(o.config.data);f.value=e.id}).catch(o=>{o.response.status===422?m.alert({text:o.response.data.message}):m.error(o)})}function E(o){r.patch("/webauthn/credentials/"+f.value+"/name").then(()=>{m.success({text:U("auth.webauthn.device_successfully_registered")}),R.push({name:"accounts"})})}return K(()=>{m.clear()}),(o,e)=>{const $=l("font-awesome-icon"),h=l("FormField"),g=l("FormButtons"),y=l("RouterLink"),v=l("FormWrapper"),x=l("FormPasswordField"),L=l("VueFooter");return u(),_("div",null,[t(w)?(u(),V(v,{key:0,title:"auth.authentication",punchline:"auth.webauthn.enhance_security_using_webauthn"},{default:c(()=>[t(f)?(u(),_("div",P,[i("label",M,[p(d(o.$t("auth.webauthn.device_successfully_registered"))+" ",1),n($,{icon:["fas","check"]})]),i("form",{onSubmit:D(E,["prevent"]),onKeydown:e[1]||(e[1]=a=>t(r).onKeydown(a))},[n(h,{modelValue:t(r).name,"onUpdate:modelValue":e[0]||(e[0]=a=>t(r).name=a),fieldName:"name",fieldError:t(r).errors.get("name"),inputType:"text",placeholder:"iPhone 12, TouchID, Yubikey 5C",label:"auth.forms.name_this_device"},null,8,["modelValue","fieldError"]),n(g,{isBusy:t(r).isBusy,isDisabled:t(r).isDisabled,caption:"commons.continue"},null,8,["isBusy","isDisabled"])],40,j)])):(u(),_("div",A,[i("div",J,[i("button",{type:"button",id:"btnRegisterNewDevice",onClick:e[2]||(e[2]=a=>N()),class:"button is-link"},d(o.$t("auth.webauthn.register_a_device")),1)]),i("div",O,[n(y,{id:"btnMaybeLater",to:{name:"accounts"},class:"button is-text"},{default:c(()=>[p(d(o.$t("auth.maybe_later")),1)]),_:1})])]))]),_:1})):(u(),V(v,{key:1,title:"auth.register",punchline:"auth.forms.register_punchline"},{default:c(()=>[i("form",{onSubmit:D(S,["prevent"]),onKeydown:e[6]||(e[6]=a=>t(s).onKeydown(a))},[n(h,{modelValue:t(s).name,"onUpdate:modelValue":e[3]||(e[3]=a=>t(s).name=a),fieldName:"name",fieldError:t(s).errors.get("name"),inputType:"text",label:"auth.forms.name",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),n(h,{modelValue:t(s).email,"onUpdate:modelValue":e[4]||(e[4]=a=>t(s).email=a),fieldName:"email",fieldError:t(s).errors.get("email"),inputType:"email",label:"auth.forms.email",maxLength:255},null,8,["modelValue","fieldError"]),n(x,{modelValue:t(s).password,"onUpdate:modelValue":e[5]||(e[5]=a=>t(s).password=a),fieldName:"password",fieldError:t(s).errors.get("password"),showRules:!0,label:"auth.forms.password"},null,8,["modelValue","fieldError"]),n(g,{isBusy:t(s).isBusy,isDisabled:t(s).isDisabled,caption:"auth.register",submitId:"btnRegister"},null,8,["isBusy","isDisabled"])],40,Y),i("div",q,[i("p",null,[p(d(o.$t("auth.forms.already_register"))+" ",1),n(y,{id:"lnkSignIn",to:{name:"login"},class:"is-link"},{default:c(()=>[p(d(o.$t("auth.sign_in")),1)]),_:1})])])]),_:1})),n(L)])}}};export{X as default}; diff --git a/public/build/assets/RequestReset-031c3de6.js b/public/build/assets/RequestReset-dd2e2272.js similarity index 91% rename from public/build/assets/RequestReset-031c3de6.js rename to public/build/assets/RequestReset-dd2e2272.js index 7e6d4595..5b00f5ba 100644 --- a/public/build/assets/RequestReset-031c3de6.js +++ b/public/build/assets/RequestReset-dd2e2272.js @@ -1 +1 @@ -import{b as f,Z as h,d as _,$ as w,e as r,f as F,k as b,p as y,h as B,m as i,i as s,D as V}from"./app-72c44b80.js";import{F as v}from"./Form-d325991a.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const R=["onSubmit"],S={__name:"RequestReset",setup(k){const o=f(),n=h().name=="webauthn.lost",t=_(new v({email:""}));function l(a){o.clear(),t.post(n?"/webauthn/lost":"/user/password/lost",{returnError:!0}).then(e=>{o.success({text:e.data.message,duration:-1})}).catch(e=>{e.response.data.requestFailed?o.alert({text:e.response.data.requestFailed,duration:-1}):e.response.status!==422&&o.error(e)})}return w(()=>{o.clear()}),(a,e)=>{const m=r("FormField"),c=r("FormButtons"),d=r("VueFooter"),p=r("FormWrapper");return F(),b(p,{title:a.$t(n?"auth.webauthn.account_recovery":"auth.forms.reset_password"),punchline:a.$t(n?"auth.webauthn.recovery_punchline":"auth.forms.reset_punchline")},{default:y(()=>[B("form",{onSubmit:V(l,["prevent"]),onKeydown:e[1]||(e[1]=u=>s(t).onKeydown(u))},[i(m,{modelValue:s(t).email,"onUpdate:modelValue":e[0]||(e[0]=u=>s(t).email=u),fieldName:"email",fieldError:s(t).errors.get("email"),label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),i(c,{submitId:"btnSendResetPwd",isBusy:s(t).isBusy,caption:a.$t(n?"auth.webauthn.send_recovery_link":"auth.forms.send_password_reset_link"),showCancelButton:!0,cancelLandingView:"login"},null,8,["isBusy","caption"])],40,R),i(d)]),_:1},8,["title","punchline"])}}};export{S as default}; +import{b as f,Z as h,d as _,$ as w,e as r,f as F,k as b,p as y,h as B,m as i,i as s,D as V}from"./app-347ef106.js";import{F as v}from"./Form-893a9a1a.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const R=["onSubmit"],S={__name:"RequestReset",setup(k){const o=f(),n=h().name=="webauthn.lost",t=_(new v({email:""}));function l(a){o.clear(),t.post(n?"/webauthn/lost":"/user/password/lost",{returnError:!0}).then(e=>{o.success({text:e.data.message,duration:-1})}).catch(e=>{e.response.data.requestFailed?o.alert({text:e.response.data.requestFailed,duration:-1}):e.response.status!==422&&o.error(e)})}return w(()=>{o.clear()}),(a,e)=>{const m=r("FormField"),c=r("FormButtons"),d=r("VueFooter"),p=r("FormWrapper");return F(),b(p,{title:a.$t(n?"auth.webauthn.account_recovery":"auth.forms.reset_password"),punchline:a.$t(n?"auth.webauthn.recovery_punchline":"auth.forms.reset_punchline")},{default:y(()=>[B("form",{onSubmit:V(l,["prevent"]),onKeydown:e[1]||(e[1]=u=>s(t).onKeydown(u))},[i(m,{modelValue:s(t).email,"onUpdate:modelValue":e[0]||(e[0]=u=>s(t).email=u),fieldName:"email",fieldError:s(t).errors.get("email"),label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),i(c,{submitId:"btnSendResetPwd",isBusy:s(t).isBusy,caption:a.$t(n?"auth.webauthn.send_recovery_link":"auth.forms.send_password_reset_link"),showCancelButton:!0,cancelLandingView:"login"},null,8,["isBusy","caption"])],40,R),i(d)]),_:1},8,["title","punchline"])}}};export{S as default}; diff --git a/public/build/assets/Reset-ba2845e8.js b/public/build/assets/Reset-895e136f.js similarity index 96% rename from public/build/assets/Reset-ba2845e8.js rename to public/build/assets/Reset-895e136f.js index c861f0cb..2e166b70 100644 --- a/public/build/assets/Reset-ba2845e8.js +++ b/public/build/assets/Reset-895e136f.js @@ -1 +1 @@ -import{b as g,u as B,Z as h,r as R,d as E,$ as N,e as s,f as i,k as l,p as c,h as v,m as d,i as t,l as m,j as C,t as P,D as L}from"./app-72c44b80.js";import{F as S}from"./Form-d325991a.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const $=["onSubmit"],K={__name:"Reset",setup(x){const n=g();B();const p=h(),u=R(!0),e=E(new S({email:p.query.email,password:"",password_confirmation:"",token:p.query.token}));function f(a){e.password_confirmation=e.password,e.post("/user/password/reset",{returnError:!0}).then(o=>{e.password="",e.password_confirmation="",u.value=!1,n.success({text:o.data.message,duration:-1})}).catch(o=>{o.response.data.resetFailed?n.alert({text:o.response.data.resetFailed,duration:-1}):o.response.status!==422&&n.error(o)})}return N(()=>{n.clear()}),(a,o)=>{const w=s("FormField"),_=s("FormPasswordField"),F=s("FieldError"),k=s("FormButtons"),y=s("RouterLink"),V=s("VueFooter"),b=s("FormWrapper");return i(),l(b,{title:a.$t("auth.forms.new_password")},{default:c(()=>[v("form",{onSubmit:L(f,["prevent"]),onKeydown:o[2]||(o[2]=r=>t(e).onKeydown(r))},[d(w,{modelValue:t(e).email,"onUpdate:modelValue":o[0]||(o[0]=r=>t(e).email=r),isDisabled:!0,fieldName:"email",fieldError:t(e).errors.get("email"),label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),d(_,{modelValue:t(e).password,"onUpdate:modelValue":o[1]||(o[1]=r=>t(e).password=r),fieldName:"password",fieldError:t(e).errors.get("password"),autocomplete:"new-password",showRules:!0,label:"auth.forms.new_password"},null,8,["modelValue","fieldError"]),t(e).errors.get("token")!=null?(i(),l(F,{key:0,error:t(e).errors.get("token"),field:t(e).token},null,8,["error","field"])):m("",!0),t(u)?(i(),l(k,{key:1,submitId:"btnResetPwd",isBusy:t(e).isBusy,caption:a.$t("auth.forms.change_password"),showCancelButton:!0,cancelLandingView:"login"},null,8,["isBusy","caption"])):m("",!0),t(u)?m("",!0):(i(),l(y,{key:2,id:"btnContinue",to:{name:"accounts"},class:"button is-link"},{default:c(()=>[C(P(a.$t("commons.continue")),1)]),_:1}))],40,$),d(V)]),_:1},8,["title"])}}};export{K as default}; +import{b as g,u as B,Z as h,r as R,d as E,$ as N,e as s,f as i,k as l,p as c,h as v,m as d,i as t,l as m,j as C,t as P,D as L}from"./app-347ef106.js";import{F as S}from"./Form-893a9a1a.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const $=["onSubmit"],K={__name:"Reset",setup(x){const n=g();B();const p=h(),u=R(!0),e=E(new S({email:p.query.email,password:"",password_confirmation:"",token:p.query.token}));function f(a){e.password_confirmation=e.password,e.post("/user/password/reset",{returnError:!0}).then(o=>{e.password="",e.password_confirmation="",u.value=!1,n.success({text:o.data.message,duration:-1})}).catch(o=>{o.response.data.resetFailed?n.alert({text:o.response.data.resetFailed,duration:-1}):o.response.status!==422&&n.error(o)})}return N(()=>{n.clear()}),(a,o)=>{const w=s("FormField"),_=s("FormPasswordField"),F=s("FieldError"),k=s("FormButtons"),y=s("RouterLink"),V=s("VueFooter"),b=s("FormWrapper");return i(),l(b,{title:a.$t("auth.forms.new_password")},{default:c(()=>[v("form",{onSubmit:L(f,["prevent"]),onKeydown:o[2]||(o[2]=r=>t(e).onKeydown(r))},[d(w,{modelValue:t(e).email,"onUpdate:modelValue":o[0]||(o[0]=r=>t(e).email=r),isDisabled:!0,fieldName:"email",fieldError:t(e).errors.get("email"),label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),d(_,{modelValue:t(e).password,"onUpdate:modelValue":o[1]||(o[1]=r=>t(e).password=r),fieldName:"password",fieldError:t(e).errors.get("password"),autocomplete:"new-password",showRules:!0,label:"auth.forms.new_password"},null,8,["modelValue","fieldError"]),t(e).errors.get("token")!=null?(i(),l(F,{key:0,error:t(e).errors.get("token"),field:t(e).token},null,8,["error","field"])):m("",!0),t(u)?(i(),l(k,{key:1,submitId:"btnResetPwd",isBusy:t(e).isBusy,caption:a.$t("auth.forms.change_password"),showCancelButton:!0,cancelLandingView:"login"},null,8,["isBusy","caption"])):m("",!0),t(u)?m("",!0):(i(),l(y,{key:2,id:"btnContinue",to:{name:"accounts"},class:"button is-link"},{default:c(()=>[C(P(a.$t("commons.continue")),1)]),_:1}))],40,$),d(V)]),_:1},8,["title"])}}};export{K as default}; diff --git a/public/build/assets/SettingTabs-fbf19fde.js b/public/build/assets/SettingTabs-e95cff9d.js similarity index 93% rename from public/build/assets/SettingTabs-fbf19fde.js rename to public/build/assets/SettingTabs-e95cff9d.js index 6cf38e24..9205fd23 100644 --- a/public/build/assets/SettingTabs-fbf19fde.js +++ b/public/build/assets/SettingTabs-e95cff9d.js @@ -1 +1 @@ -import{r as m,e as n,f as t,g as s,m as a,p as i,h as o,F as v,G as _,i as h,n as g,j as w,t as k}from"./app-72c44b80.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const f={class:"options-header"},b={class:"tabs is-centered is-fullwidth"},R={__name:"SettingTabs",props:{activeTab:{type:String,default:""}},setup(r){const c=r,l=m([{name:"settings.options",view:"settings.options",id:"lnkTabOptions"},{name:"settings.account",view:"settings.account",id:"lnkTabAccount"},{name:"settings.oauth",view:"settings.oauth.tokens",id:"lnkTabOAuth"},{name:"settings.webauthn",view:"settings.webauthn.devices",id:"lnkTabWebauthn"}]);return(u,T)=>{const d=n("RouterLink"),p=n("ResponsiveWidthWrapper");return t(),s("div",f,[a(p,null,{default:i(()=>[o("div",b,[o("ul",null,[(t(!0),s(v,null,_(h(l),e=>(t(),s("li",{key:e.view,class:g({"is-active":e.view===c.activeTab})},[a(d,{id:e.id,to:{name:e.view}},{default:i(()=>[w(k(u.$t(e.name)),1)]),_:2},1032,["id","to"])],2))),128))])])]),_:1})])}}};export{R as _}; +import{r as m,e as n,f as t,g as s,m as a,p as i,h as o,F as v,G as _,i as h,n as g,j as w,t as k}from"./app-347ef106.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const f={class:"options-header"},b={class:"tabs is-centered is-fullwidth"},R={__name:"SettingTabs",props:{activeTab:{type:String,default:""}},setup(r){const c=r,l=m([{name:"settings.options",view:"settings.options",id:"lnkTabOptions"},{name:"settings.account",view:"settings.account",id:"lnkTabAccount"},{name:"settings.oauth",view:"settings.oauth.tokens",id:"lnkTabOAuth"},{name:"settings.webauthn",view:"settings.webauthn.devices",id:"lnkTabWebauthn"}]);return(u,T)=>{const d=n("RouterLink"),p=n("ResponsiveWidthWrapper");return t(),s("div",f,[a(p,null,{default:i(()=>[o("div",b,[o("ul",null,[(t(!0),s(v,null,_(h(l),e=>(t(),s("li",{key:e.view,class:g({"is-active":e.view===c.activeTab})},[a(d,{id:e.id,to:{name:e.view}},{default:i(()=>[w(k(u.$t(e.name)),1)]),_:2},1032,["id","to"])],2))),128))])])]),_:1})])}}};export{R as _}; diff --git a/public/build/assets/Spinner-0e4f49a2.js b/public/build/assets/Spinner-8bfb7257.js similarity index 94% rename from public/build/assets/Spinner-0e4f49a2.js rename to public/build/assets/Spinner-8bfb7257.js index c4980286..6b04cc46 100644 --- a/public/build/assets/Spinner-0e4f49a2.js +++ b/public/build/assets/Spinner-8bfb7257.js @@ -1 +1 @@ -import{a4 as p,e as l,f as n,g as t,h as e,m as a,t as c,l as r,k as d}from"./app-72c44b80.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const _={key:0},m={key:0,class:"spinner-container"},y={class:"spinner-wrapper"},u={id:"icnSpinnerFull",class:"is-size-1 spinner"},f={key:1,class:"spinner-overlay-container"},h={class:"spinner-wrapper"},v={id:"icnSpinnerFull",class:"is-size-1 spinner"},g={key:3,class:"has-text-centered mt-6"},S={id:"icnSpinner",class:"is-size-4"},k={__name:"Spinner",props:{isVisible:Boolean,type:{type:String,default:"inline"},message:{type:String,default:"commons.generating_otp"}},setup(s){return(o,w)=>{const i=l("FontAwesomeIcon");return s.isVisible?(n(),t("div",_,[s.type=="fullscreen"?(n(),t("div",m,[e("div",y,[e("span",u,[a(i,{icon:["fas","spinner"],spin:""})]),e("span",null,c(o.$t(s.message)),1)])])):r("",!0),s.type=="fullscreen-overlay"?(n(),t("div",f,[e("div",h,[e("span",v,[a(i,{icon:["fas","spinner"],spin:""})]),e("span",null,c(o.$t(s.message)),1)])])):s.type=="raw"?(n(),d(i,{key:2,icon:["fas","spinner"],spin:""})):(n(),t("div",g,[e("span",S,[a(i,{icon:["fas","spinner"],spin:""})])]))])):r("",!0)}}},V=p(k,[["__scopeId","data-v-247a4fa7"]]);export{V as S}; +import{a4 as p,e as l,f as n,g as t,h as e,m as a,t as c,l as r,k as d}from"./app-347ef106.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const _={key:0},m={key:0,class:"spinner-container"},y={class:"spinner-wrapper"},u={id:"icnSpinnerFull",class:"is-size-1 spinner"},f={key:1,class:"spinner-overlay-container"},h={class:"spinner-wrapper"},v={id:"icnSpinnerFull",class:"is-size-1 spinner"},g={key:3,class:"has-text-centered mt-6"},S={id:"icnSpinner",class:"is-size-4"},k={__name:"Spinner",props:{isVisible:Boolean,type:{type:String,default:"inline"},message:{type:String,default:"commons.generating_otp"}},setup(s){return(o,w)=>{const i=l("FontAwesomeIcon");return s.isVisible?(n(),t("div",_,[s.type=="fullscreen"?(n(),t("div",m,[e("div",y,[e("span",u,[a(i,{icon:["fas","spinner"],spin:""})]),e("span",null,c(o.$t(s.message)),1)])])):r("",!0),s.type=="fullscreen-overlay"?(n(),t("div",f,[e("div",h,[e("span",v,[a(i,{icon:["fas","spinner"],spin:""})]),e("span",null,c(o.$t(s.message)),1)])])):s.type=="raw"?(n(),d(i,{key:2,icon:["fas","spinner"],spin:""})):(n(),t("div",g,[e("span",S,[a(i,{icon:["fas","spinner"],spin:""})])]))])):r("",!0)}}},V=p(k,[["__scopeId","data-v-247a4fa7"]]);export{V as S}; diff --git a/public/build/assets/Start-3e40750b.js b/public/build/assets/Start-b183fdeb.js similarity index 96% rename from public/build/assets/Start-3e40750b.js rename to public/build/assets/Start-b183fdeb.js index ce568a75..3d792663 100644 --- a/public/build/assets/Start-3e40750b.js +++ b/public/build/assets/Start-b183fdeb.js @@ -1 +1 @@ -import{u as U,a as V,b as A,c as E,r as w,d as N,o as R,e as d,f as a,g as f,h as t,n as C,i as o,j as r,t as s,w as g,k as B,l as b,m as p,p as m,U as S}from"./app-72c44b80.js";import{F as K}from"./Form-d325991a.js";import{u as M}from"./bus-222e275f.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const Q={class:"container has-text-centered"},T={class:"columns quick-uploader"},D=t("br",null,null,-1),j={class:"column is-full quick-uploader-button"},z={class:"quick-uploader-centerer"},G={class:"column is-full"},H={key:0,class:"block has-text-link"},J={class:"block has-text-link"},O={class:"block has-text-link"},Z={__name:"Start",setup(P){const k=U(),i=V(),h=M(),$=A(),v=E(),_=w(null),c=w(null),u=N(new K({qrcode:null,inputFormat:"fileUpload"}));function y(){u.clear(),u.qrcode=_.value.files[0],u.upload("/api/v1/qrcode/decode",{returnError:!0}).then(e=>{e.data.data.slice(0,33).toLowerCase()==="otpauth-migration://offline?data="?(h.migrationUri=e.data.data,k.push({name:"importAccounts"})):(h.decodedUri=e.data.data,k.push({name:"createAccount"}))}).catch(e=>{e.response.status!==422&&$.alert({text:e.response.data.message})})}function x(){k.push({name:"capture"})}return R(()=>{i.preferences.useDirectCapture&&i.preferences.defaultCaptureMode==="upload"&&c.value.click()}),(e,n)=>{const F=d("FieldError"),q=d("RouterLink"),I=d("ButtonBackCloseCancel"),L=d("VueFooter");return a(),f("div",Q,[t("div",T,[t("div",{class:C(["column is-full quick-uploader-header",{"is-invisible":o(v).count!==0}])},[r(s(e.$t("twofaccounts.no_account_here")),1),D,r(" "+s(e.$t("twofaccounts.add_first_account")),1)],2),t("div",j,[t("div",z,[o(i).preferences.useBasicQrcodeReader?(a(),f("label",{key:0,role:"button",tabindex:"0",class:"button is-link is-medium is-rounded is-main",ref_key:"qrcodeInputLabel",ref:c,onKeyup:n[0]||(n[0]=g(l=>o(c).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:y,ref_key:"qrcodeInput",ref:_},null,544),r(" "+s(e.$t("twofaccounts.forms.upload_qrcode")),1)],544)):(a(),f("button",{key:1,class:"button is-link is-medium is-rounded is-main",onClick:n[1]||(n[1]=l=>x())},s(e.$t("twofaccounts.forms.scan_qrcode")),1))]),o(u).errors.hasAny("qrcode")?(a(),B(F,{key:0,error:o(u).errors.get("qrcode"),field:"qrcode"},null,8,["error"])):b("",!0)]),t("div",G,[p(o(S),null,{default:m(({mode:l})=>[t("div",{class:C(["block",l=="dark"?"has-text-light":"has-text-grey-dark"])},s(e.$t("twofaccounts.forms.alternative_methods")),3)]),_:1}),o(i).preferences.useBasicQrcodeReader?b("",!0):(a(),f("div",H,[t("label",{role:"button",tabindex:"0",class:"button is-link is-outlined is-rounded",ref_key:"qrcodeInputLabel",ref:c,onKeyup:n[2]||(n[2]=g(l=>o(c).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:y,ref_key:"qrcodeInput",ref:_},null,544),r(" "+s(e.$t("twofaccounts.forms.upload_qrcode")),1)],544)])),t("div",J,[p(q,{class:"button is-link is-outlined is-rounded",to:{name:"createAccount"}},{default:m(()=>[r(s(e.$t("twofaccounts.forms.use_advanced_form")),1)]),_:1})]),t("div",O,[p(q,{id:"btnImport",class:"button is-link is-outlined is-rounded",to:{name:"importAccounts"}},{default:m(()=>[r(s(e.$t("twofaccounts.import.import")),1)]),_:1})])])]),p(L,{showButtons:!0},{default:m(()=>[o(v).isEmpty?b("",!0):(a(),B(I,{key:0,returnTo:{name:"accounts"},action:"back"}))]),_:1})])}}};export{Z as default}; +import{u as U,a as V,b as A,c as E,r as w,d as N,o as R,e as d,f as a,g as f,h as t,n as C,i as o,j as r,t as s,w as g,k as B,l as b,m as p,p as m,U as S}from"./app-347ef106.js";import{F as K}from"./Form-893a9a1a.js";import{u as M}from"./bus-2e7bf732.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const Q={class:"container has-text-centered"},T={class:"columns quick-uploader"},D=t("br",null,null,-1),j={class:"column is-full quick-uploader-button"},z={class:"quick-uploader-centerer"},G={class:"column is-full"},H={key:0,class:"block has-text-link"},J={class:"block has-text-link"},O={class:"block has-text-link"},Z={__name:"Start",setup(P){const k=U(),i=V(),h=M(),$=A(),v=E(),_=w(null),c=w(null),u=N(new K({qrcode:null,inputFormat:"fileUpload"}));function y(){u.clear(),u.qrcode=_.value.files[0],u.upload("/api/v1/qrcode/decode",{returnError:!0}).then(e=>{e.data.data.slice(0,33).toLowerCase()==="otpauth-migration://offline?data="?(h.migrationUri=e.data.data,k.push({name:"importAccounts"})):(h.decodedUri=e.data.data,k.push({name:"createAccount"}))}).catch(e=>{e.response.status!==422&&$.alert({text:e.response.data.message})})}function x(){k.push({name:"capture"})}return R(()=>{i.preferences.useDirectCapture&&i.preferences.defaultCaptureMode==="upload"&&c.value.click()}),(e,n)=>{const F=d("FieldError"),q=d("RouterLink"),I=d("ButtonBackCloseCancel"),L=d("VueFooter");return a(),f("div",Q,[t("div",T,[t("div",{class:C(["column is-full quick-uploader-header",{"is-invisible":o(v).count!==0}])},[r(s(e.$t("twofaccounts.no_account_here")),1),D,r(" "+s(e.$t("twofaccounts.add_first_account")),1)],2),t("div",j,[t("div",z,[o(i).preferences.useBasicQrcodeReader?(a(),f("label",{key:0,role:"button",tabindex:"0",class:"button is-link is-medium is-rounded is-main",ref_key:"qrcodeInputLabel",ref:c,onKeyup:n[0]||(n[0]=g(l=>o(c).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:y,ref_key:"qrcodeInput",ref:_},null,544),r(" "+s(e.$t("twofaccounts.forms.upload_qrcode")),1)],544)):(a(),f("button",{key:1,class:"button is-link is-medium is-rounded is-main",onClick:n[1]||(n[1]=l=>x())},s(e.$t("twofaccounts.forms.scan_qrcode")),1))]),o(u).errors.hasAny("qrcode")?(a(),B(F,{key:0,error:o(u).errors.get("qrcode"),field:"qrcode"},null,8,["error"])):b("",!0)]),t("div",G,[p(o(S),null,{default:m(({mode:l})=>[t("div",{class:C(["block",l=="dark"?"has-text-light":"has-text-grey-dark"])},s(e.$t("twofaccounts.forms.alternative_methods")),3)]),_:1}),o(i).preferences.useBasicQrcodeReader?b("",!0):(a(),f("div",H,[t("label",{role:"button",tabindex:"0",class:"button is-link is-outlined is-rounded",ref_key:"qrcodeInputLabel",ref:c,onKeyup:n[2]||(n[2]=g(l=>o(c).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:y,ref_key:"qrcodeInput",ref:_},null,544),r(" "+s(e.$t("twofaccounts.forms.upload_qrcode")),1)],544)])),t("div",J,[p(q,{class:"button is-link is-outlined is-rounded",to:{name:"createAccount"}},{default:m(()=>[r(s(e.$t("twofaccounts.forms.use_advanced_form")),1)]),_:1})]),t("div",O,[p(q,{id:"btnImport",class:"button is-link is-outlined is-rounded",to:{name:"importAccounts"}},{default:m(()=>[r(s(e.$t("twofaccounts.import.import")),1)]),_:1})])])]),p(L,{showButtons:!0},{default:m(()=>[o(v).isEmpty?b("",!0):(a(),B(I,{key:0,returnTo:{name:"accounts"},action:"back"}))]),_:1})])}}};export{Z as default}; diff --git a/public/build/assets/WebAuthn-60ef5014.js b/public/build/assets/WebAuthn-28d5bd1b.js similarity index 93% rename from public/build/assets/WebAuthn-60ef5014.js rename to public/build/assets/WebAuthn-28d5bd1b.js index 16b75873..98c847ad 100644 --- a/public/build/assets/WebAuthn-60ef5014.js +++ b/public/build/assets/WebAuthn-28d5bd1b.js @@ -1 +1 @@ -import{P as z,a as U,b as L,u as M,a2 as A,r as b,o as D,x as I,$ as K,e as h,f as d,g as _,m as o,h as s,p as v,i as t,l as y,t as i,w as R,j as k,F as j,G as E,U as H,n as P,I as r}from"./app-72c44b80.js";import{_ as G}from"./SettingTabs-fbf19fde.js";import{u as g}from"./userService-d2ada2ab.js";import{w as J}from"./webauthnService-08262ddb.js";import{S as q}from"./Spinner-0e4f49a2.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const Q={class:"options-tabs"},X=["innerHTML"],Y={class:"title is-4 has-text-grey-light"},Z={class:"is-size-7-mobile"},ee={class:"mt-3"},te=["onKeyup"],se={key:1,class:"field"},ne=["onClick","title"],ae={class:"mt-2 is-size-7 is-pulled-right"},oe={class:"title is-4 pt-6 has-text-grey-light"},ie={class:"field"},pe={__name:"WebAuthn",setup(re){const C=z("2fauth"),l=U(),n=L(),W=M(),$=A(C.prefix+"returnTo","accounts"),a=b([]),f=b(!1),p=b(!1);D(()=>{V()}),I(()=>l.preferences.useWebauthnOnly,()=>{g.updatePreference("useWebauthnOnly",l.preferences.useWebauthnOnly).then(e=>{n.success({text:r("settings.forms.setting_saved")})})});function w(){if(p==!0)return n.warn({text:r("errors.unsupported_with_reverseproxy")}),!1;J.register().then(e=>{W.push({name:"settings.webauthn.editCredential",params:{credentialId:JSON.parse(e.config.data).id}})}).catch(e=>{var u;"webauthn"in e?e.name=="is-warning"?n.warn({text:r(e.message)}):n.alert({text:r(e.message)}):((u=e.response)==null?void 0:u.status)===422?n.alert({text:e.response.data.message}):n.error(e)})}function x(e){confirm(r("auth.confirm.revoke_device"))&&g.revokeWebauthnDevice(e).then(u=>{a.value=a.value.filter(m=>m.id!==e),a.value.length==0&&(l.preferences.useWebauthnOnly=!1),n.success({text:r("auth.webauthn.device_revoked")})})}function F(e){return e.alias?e.alias:r("auth.webauthn.my_device")+" (#"+e.id.substring(0,10)+")"}function V(){f.value=!0,g.getWebauthnDevices({returnError:!0}).then(e=>{a.value=e.data}).catch(e=>{e.response.status===405?p.value=!0:n.error(e)}).finally(()=>{f.value=!1})}return K(e=>{e.name.startsWith("settings.")||n.clear()}),(e,u)=>{const m=h("FontAwesomeIcon"),B=h("FormCheckbox"),S=h("ButtonBackCloseCancel"),T=h("VueFooter"),N=h("FormWrapper");return d(),_("div",null,[o(G,{activeTab:"settings.webauthn.devices"},null,8,["activeTab"]),s("div",Q,[o(N,null,{default:v(()=>[t(p)?(d(),_("div",{key:0,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.auth_handled_by_proxy")},null,8,X)):y("",!0),s("h4",Y,i(e.$t("auth.webauthn.security_devices")),1),s("div",Z,i(e.$t("auth.webauthn.security_devices_legend")),1),s("div",ee,[s("a",{tabindex:"0",onClick:w,onKeyup:R(w,["enter"])},[o(m,{icon:["fas","plus-circle"]}),k(" "+i(e.$t("auth.webauthn.register_a_new_device")),1)],40,te)]),t(a).length>0?(d(),_("div",se,[(d(!0),_(j,null,E(t(a),c=>(d(),_("div",{key:c.id,class:"group-item is-size-5 is-size-6-mobile"},[k(i(F(c))+" ",1),o(t(H),null,{default:v(({mode:O})=>[s("button",{class:P(["button tag is-pulled-right",O==="dark"?"is-dark":"is-white"]),onClick:ue=>x(c.id),title:e.$t("settings.revoke")},i(e.$t("settings.revoke")),11,ne)]),_:2},1024)]))),128)),s("div",ae,i(e.$t("auth.webauthn.revoking_a_device_is_permanent")),1)])):y("",!0),o(q,{isVisible:t(f)&&t(a).length===0},null,8,["isVisible"]),s("h4",oe,i(e.$t("settings.options")),1),s("div",ie,i(e.$t("auth.webauthn.need_a_security_device_to_enable_options")),1),s("form",null,[o(B,{modelValue:t(l).preferences.useWebauthnOnly,"onUpdate:modelValue":u[0]||(u[0]=c=>t(l).preferences.useWebauthnOnly=c),fieldName:"useWebauthnOnly",label:"auth.webauthn.use_webauthn_only.label",help:"auth.webauthn.use_webauthn_only.help",disabled:t(p)||t(a).length===0},null,8,["modelValue","disabled"])]),o(T,{showButtons:!0},{default:v(()=>[o(S,{returnTo:{name:t($)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})])])}}};export{pe as default}; +import{P as z,a as U,b as L,u as M,a2 as A,r as b,o as D,x as I,$ as K,e as h,f as d,g as _,m as o,h as s,p as v,i as t,l as y,t as i,w as R,j as k,F as j,G as E,U as H,n as P,I as r}from"./app-347ef106.js";import{_ as G}from"./SettingTabs-e95cff9d.js";import{u as g}from"./userService-f0891f7f.js";import{w as J}from"./webauthnService-ad1f52a0.js";import{S as q}from"./Spinner-8bfb7257.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const Q={class:"options-tabs"},X=["innerHTML"],Y={class:"title is-4 has-text-grey-light"},Z={class:"is-size-7-mobile"},ee={class:"mt-3"},te=["onKeyup"],se={key:1,class:"field"},ne=["onClick","title"],ae={class:"mt-2 is-size-7 is-pulled-right"},oe={class:"title is-4 pt-6 has-text-grey-light"},ie={class:"field"},pe={__name:"WebAuthn",setup(re){const C=z("2fauth"),l=U(),n=L(),W=M(),$=A(C.prefix+"returnTo","accounts"),a=b([]),f=b(!1),p=b(!1);D(()=>{V()}),I(()=>l.preferences.useWebauthnOnly,()=>{g.updatePreference("useWebauthnOnly",l.preferences.useWebauthnOnly).then(e=>{n.success({text:r("settings.forms.setting_saved")})})});function w(){if(p==!0)return n.warn({text:r("errors.unsupported_with_reverseproxy")}),!1;J.register().then(e=>{W.push({name:"settings.webauthn.editCredential",params:{credentialId:JSON.parse(e.config.data).id}})}).catch(e=>{var u;"webauthn"in e?e.name=="is-warning"?n.warn({text:r(e.message)}):n.alert({text:r(e.message)}):((u=e.response)==null?void 0:u.status)===422?n.alert({text:e.response.data.message}):n.error(e)})}function x(e){confirm(r("auth.confirm.revoke_device"))&&g.revokeWebauthnDevice(e).then(u=>{a.value=a.value.filter(m=>m.id!==e),a.value.length==0&&(l.preferences.useWebauthnOnly=!1),n.success({text:r("auth.webauthn.device_revoked")})})}function F(e){return e.alias?e.alias:r("auth.webauthn.my_device")+" (#"+e.id.substring(0,10)+")"}function V(){f.value=!0,g.getWebauthnDevices({returnError:!0}).then(e=>{a.value=e.data}).catch(e=>{e.response.status===405?p.value=!0:n.error(e)}).finally(()=>{f.value=!1})}return K(e=>{e.name.startsWith("settings.")||n.clear()}),(e,u)=>{const m=h("FontAwesomeIcon"),B=h("FormCheckbox"),S=h("ButtonBackCloseCancel"),T=h("VueFooter"),N=h("FormWrapper");return d(),_("div",null,[o(G,{activeTab:"settings.webauthn.devices"},null,8,["activeTab"]),s("div",Q,[o(N,null,{default:v(()=>[t(p)?(d(),_("div",{key:0,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.auth_handled_by_proxy")},null,8,X)):y("",!0),s("h4",Y,i(e.$t("auth.webauthn.security_devices")),1),s("div",Z,i(e.$t("auth.webauthn.security_devices_legend")),1),s("div",ee,[s("a",{tabindex:"0",onClick:w,onKeyup:R(w,["enter"])},[o(m,{icon:["fas","plus-circle"]}),k(" "+i(e.$t("auth.webauthn.register_a_new_device")),1)],40,te)]),t(a).length>0?(d(),_("div",se,[(d(!0),_(j,null,E(t(a),c=>(d(),_("div",{key:c.id,class:"group-item is-size-5 is-size-6-mobile"},[k(i(F(c))+" ",1),o(t(H),null,{default:v(({mode:O})=>[s("button",{class:P(["button tag is-pulled-right",O==="dark"?"is-dark":"is-white"]),onClick:ue=>x(c.id),title:e.$t("settings.revoke")},i(e.$t("settings.revoke")),11,ne)]),_:2},1024)]))),128)),s("div",ae,i(e.$t("auth.webauthn.revoking_a_device_is_permanent")),1)])):y("",!0),o(q,{isVisible:t(f)&&t(a).length===0},null,8,["isVisible"]),s("h4",oe,i(e.$t("settings.options")),1),s("div",ie,i(e.$t("auth.webauthn.need_a_security_device_to_enable_options")),1),s("form",null,[o(B,{modelValue:t(l).preferences.useWebauthnOnly,"onUpdate:modelValue":u[0]||(u[0]=c=>t(l).preferences.useWebauthnOnly=c),fieldName:"useWebauthnOnly",label:"auth.webauthn.use_webauthn_only.label",help:"auth.webauthn.use_webauthn_only.help",disabled:t(p)||t(a).length===0},null,8,["modelValue","disabled"])]),o(T,{showButtons:!0},{default:v(()=>[o(S,{returnTo:{name:t($)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})])])}}};export{pe as default}; diff --git a/public/build/assets/app-72c44b80.js b/public/build/assets/app-347ef106.js similarity index 98% rename from public/build/assets/app-72c44b80.js rename to public/build/assets/app-347ef106.js index a4e7859b..b736296e 100644 --- a/public/build/assets/app-72c44b80.js +++ b/public/build/assets/app-347ef106.js @@ -8,7 +8,7 @@ * @license MIT */let sf;const sa=e=>sf=e,af=Symbol();function ni(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var vr;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(vr||(vr={}));function R1(){const e=Cc(!0),t=e.run(()=>me({}));let n=[],r=[];const s=Ks({install(a){sa(s),s._a=a,a.provide(af,s),a.config.globalProperties.$pinia=s,r.forEach(i=>n.push(i)),r=[]},use(a){return!this._a&&!P1?r.push(a):n.push(a),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const of=()=>{};function Ll(e,t,n,r=of){e.push(t);const s=()=>{const a=e.indexOf(t);a>-1&&(e.splice(a,1),r())};return!n&&Si()&&Oc(s),s}function Sn(e,...t){e.slice().forEach(n=>{n(...t)})}const M1=e=>e();function ri(e,t){e instanceof Map&&t instanceof Map&&t.forEach((n,r)=>e.set(r,n)),e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],s=e[n];ni(s)&&ni(r)&&e.hasOwnProperty(n)&&!ke(r)&&!Qt(r)?e[n]=ri(s,r):e[n]=r}return e}const N1=Symbol();function I1(e){return!ni(e)||!e.hasOwnProperty(N1)}const{assign:Yt}=Object;function $1(e){return!!(ke(e)&&e.effect)}function F1(e,t,n,r){const{state:s,actions:a,getters:i}=t,o=n.state.value[e];let l;function c(){o||(n.state.value[e]=s?s():{});const u=op(n.state.value[e]);return Yt(u,a,Object.keys(i||{}).reduce((f,d)=>(f[d]=Ks(te(()=>{sa(n);const m=n._s.get(e);return i[d].call(m,m)})),f),{}))}return l=lf(e,c,t,n,r,!0),l}function lf(e,t,n={},r,s,a){let i;const o=Yt({actions:{}},n),l={deep:!0};let c,u,f=[],d=[],m;const g=r.state.value[e];!a&&!g&&(r.state.value[e]={}),me({});let v;function S(w){let O;c=u=!1,typeof w=="function"?(w(r.state.value[e]),O={type:vr.patchFunction,storeId:e,events:m}):(ri(r.state.value[e],w),O={type:vr.patchObject,payload:w,storeId:e,events:m});const H=v=Symbol();Qn().then(()=>{v===H&&(c=!0)}),u=!0,Sn(f,O,r.state.value[e])}const b=a?function(){const{state:O}=n,H=O?O():{};this.$patch(R=>{Yt(R,H)})}:of;function _(){i.stop(),f=[],d=[],r._s.delete(e)}function P(w,O){return function(){sa(r);const H=Array.from(arguments),R=[],N=[];function V(ae){R.push(ae)}function ye(ae){N.push(ae)}Sn(d,{args:H,name:w,store:F,after:V,onError:ye});let Se;try{Se=O.apply(this&&this.$id===e?this:F,H)}catch(ae){throw Sn(N,ae),ae}return Se instanceof Promise?Se.then(ae=>(Sn(R,ae),ae)).catch(ae=>(Sn(N,ae),Promise.reject(ae))):(Sn(R,Se),Se)}}const x={_p:r,$id:e,$onAction:Ll.bind(null,d),$patch:S,$reset:b,$subscribe(w,O={}){const H=Ll(f,w,O.detached,()=>R()),R=i.run(()=>He(()=>r.state.value[e],N=>{(O.flush==="sync"?u:c)&&w({storeId:e,type:vr.direct,events:m},N)},Yt({},l,O)));return H},$dispose:_},F=Rt(x);r._s.set(e,F);const Z=r._a&&r._a.runWithContext||M1,q=r._e.run(()=>(i=Cc(),Z(()=>i.run(t))));for(const w in q){const O=q[w];if(ke(O)&&!$1(O)||Qt(O))a||(g&&I1(O)&&(ke(O)?O.value=g[w]:ri(O,g[w])),r.state.value[e][w]=O);else if(typeof O=="function"){const H=P(w,O);q[w]=H,o.actions[w]=O}}return Yt(F,q),Yt(oe(F),q),Object.defineProperty(F,"$state",{get:()=>r.state.value[e],set:w=>{S(O=>{Yt(O,w)})}}),r._p.forEach(w=>{Yt(F,i.run(()=>w({store:F,app:r._a,pinia:r,options:o})))}),g&&a&&n.hydrate&&n.hydrate(F.$state,g),c=!0,u=!0,F}function jr(e,t,n){let r,s;const a=typeof t=="function";typeof e=="string"?(r=e,s=a?n:t):(s=e,r=e.id);function i(o,l){const c=Kp();return o=o||(c?et(af,null):null),o&&sa(o),o=sf,o._s.has(r)||(a?lf(r,t,s,o):F1(r,s,o)),o._s.get(r)}return i.$id=r,i}function cf(e,t){return function(){return e.apply(t,arguments)}}const{toString:H1}=Object.prototype,{getPrototypeOf:no}=Object,aa=(e=>t=>{const n=H1.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),St=e=>(e=e.toLowerCase(),t=>aa(t)===e),ia=e=>t=>typeof t===e,{isArray:tr}=Array,Rr=ia("undefined");function D1(e){return e!==null&&!Rr(e)&&e.constructor!==null&&!Rr(e.constructor)&&ut(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const uf=St("ArrayBuffer");function z1(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&uf(e.buffer),t}const B1=ia("string"),ut=ia("function"),ff=ia("number"),oa=e=>e!==null&&typeof e=="object",j1=e=>e===!0||e===!1,ws=e=>{if(aa(e)!=="object")return!1;const t=no(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},V1=St("Date"),U1=St("File"),K1=St("Blob"),W1=St("FileList"),q1=e=>oa(e)&&ut(e.pipe),Y1=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||ut(e.append)&&((t=aa(e))==="formdata"||t==="object"&&ut(e.toString)&&e.toString()==="[object FormData]"))},G1=St("URLSearchParams"),J1=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Vr(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),tr(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const pf=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global)(),mf=e=>!Rr(e)&&e!==pf;function si(){const{caseless:e}=mf(this)&&this||{},t={},n=(r,s)=>{const a=e&&df(t,s)||s;ws(t[a])&&ws(r)?t[a]=si(t[a],r):ws(r)?t[a]=si({},r):tr(r)?t[a]=r.slice():t[a]=r};for(let r=0,s=arguments.length;r(Vr(t,(s,a)=>{n&&ut(s)?e[a]=cf(s,n):e[a]=s},{allOwnKeys:r}),e),Q1=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Z1=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},e2=(e,t,n,r)=>{let s,a,i;const o={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),a=s.length;a-- >0;)i=s[a],(!r||r(i,e,t))&&!o[i]&&(t[i]=e[i],o[i]=!0);e=n!==!1&&no(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},t2=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},n2=e=>{if(!e)return null;if(tr(e))return e;let t=e.length;if(!ff(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},r2=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&no(Uint8Array)),s2=(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let s;for(;(s=r.next())&&!s.done;){const a=s.value;t.call(e,a[0],a[1])}},a2=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},i2=St("HTMLFormElement"),o2=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),Pl=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),l2=St("RegExp"),hf=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};Vr(n,(s,a)=>{t(s,a,e)!==!1&&(r[a]=s)}),Object.defineProperties(e,r)},c2=e=>{hf(e,(t,n)=>{if(ut(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(ut(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},u2=(e,t)=>{const n={},r=s=>{s.forEach(a=>{n[a]=!0})};return tr(e)?r(e):r(String(e).split(t)),n},f2=()=>{},d2=(e,t)=>(e=+e,Number.isFinite(e)?e:t),Ta="abcdefghijklmnopqrstuvwxyz",Rl="0123456789",gf={DIGIT:Rl,ALPHA:Ta,ALPHA_DIGIT:Ta+Ta.toUpperCase()+Rl},p2=(e=16,t=gf.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function m2(e){return!!(e&&ut(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const h2=e=>{const t=new Array(10),n=(r,s)=>{if(oa(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[s]=r;const a=tr(r)?[]:{};return Vr(r,(i,o)=>{const l=n(i,s+1);!Rr(l)&&(a[o]=l)}),t[s]=void 0,a}}return r};return n(e,0)},g2=St("AsyncFunction"),v2=e=>e&&(oa(e)||ut(e))&&ut(e.then)&&ut(e.catch),k={isArray:tr,isArrayBuffer:uf,isBuffer:D1,isFormData:Y1,isArrayBufferView:z1,isString:B1,isNumber:ff,isBoolean:j1,isObject:oa,isPlainObject:ws,isUndefined:Rr,isDate:V1,isFile:U1,isBlob:K1,isRegExp:l2,isFunction:ut,isStream:q1,isURLSearchParams:G1,isTypedArray:r2,isFileList:W1,forEach:Vr,merge:si,extend:X1,trim:J1,stripBOM:Q1,inherits:Z1,toFlatObject:e2,kindOf:aa,kindOfTest:St,endsWith:t2,toArray:n2,forEachEntry:s2,matchAll:a2,isHTMLForm:i2,hasOwnProperty:Pl,hasOwnProp:Pl,reduceDescriptors:hf,freezeMethods:c2,toObjectSet:u2,toCamelCase:o2,noop:f2,toFiniteNumber:d2,findKey:df,global:pf,isContextDefined:mf,ALPHABET:gf,generateString:p2,isSpecCompliantForm:m2,toJSONObject:h2,isAsyncFn:g2,isThenable:v2};function ce(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s)}k.inherits(ce,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:k.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const vf=ce.prototype,yf={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{yf[e]={value:e}});Object.defineProperties(ce,yf);Object.defineProperty(vf,"isAxiosError",{value:!0});ce.from=(e,t,n,r,s,a)=>{const i=Object.create(vf);return k.toFlatObject(e,i,function(l){return l!==Error.prototype},o=>o!=="isAxiosError"),ce.call(i,e.message,t,n,r,s),i.cause=e,i.name=e.name,a&&Object.assign(i,a),i};const y2=null;function ai(e){return k.isPlainObject(e)||k.isArray(e)}function bf(e){return k.endsWith(e,"[]")?e.slice(0,-2):e}function Ml(e,t,n){return e?e.concat(t).map(function(s,a){return s=bf(s),!n&&a?"["+s+"]":s}).join(n?".":""):t}function b2(e){return k.isArray(e)&&!e.some(ai)}const w2=k.toFlatObject(k,{},null,function(t){return/^is[A-Z]/.test(t)});function la(e,t,n){if(!k.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=k.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(v,S){return!k.isUndefined(S[v])});const r=n.metaTokens,s=n.visitor||u,a=n.dots,i=n.indexes,l=(n.Blob||typeof Blob<"u"&&Blob)&&k.isSpecCompliantForm(t);if(!k.isFunction(s))throw new TypeError("visitor must be a function");function c(g){if(g===null)return"";if(k.isDate(g))return g.toISOString();if(!l&&k.isBlob(g))throw new ce("Blob is not supported. Use a Buffer instead.");return k.isArrayBuffer(g)||k.isTypedArray(g)?l&&typeof Blob=="function"?new Blob([g]):Buffer.from(g):g}function u(g,v,S){let b=g;if(g&&!S&&typeof g=="object"){if(k.endsWith(v,"{}"))v=r?v:v.slice(0,-2),g=JSON.stringify(g);else if(k.isArray(g)&&b2(g)||(k.isFileList(g)||k.endsWith(v,"[]"))&&(b=k.toArray(g)))return v=bf(v),b.forEach(function(P,x){!(k.isUndefined(P)||P===null)&&t.append(i===!0?Ml([v],x,a):i===null?v:v+"[]",c(P))}),!1}return ai(g)?!0:(t.append(Ml(S,v,a),c(g)),!1)}const f=[],d=Object.assign(w2,{defaultVisitor:u,convertValue:c,isVisitable:ai});function m(g,v){if(!k.isUndefined(g)){if(f.indexOf(g)!==-1)throw Error("Circular reference detected in "+v.join("."));f.push(g),k.forEach(g,function(b,_){(!(k.isUndefined(b)||b===null)&&s.call(t,b,k.isString(_)?_.trim():_,v,d))===!0&&m(b,v?v.concat(_):[_])}),f.pop()}}if(!k.isObject(e))throw new TypeError("data must be an object");return m(e),t}function Nl(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function ro(e,t){this._pairs=[],e&&la(e,this,t)}const wf=ro.prototype;wf.append=function(t,n){this._pairs.push([t,n])};wf.toString=function(t){const n=t?function(r){return t.call(this,r,Nl)}:Nl;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function _2(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function _f(e,t,n){if(!t)return e;const r=n&&n.encode||_2,s=n&&n.serialize;let a;if(s?a=s(t,n):a=k.isURLSearchParams(t)?t.toString():new ro(t,n).toString(r),a){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+a}return e}class E2{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){k.forEach(this.handlers,function(r){r!==null&&t(r)})}}const Il=E2,Ef={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},x2=typeof URLSearchParams<"u"?URLSearchParams:ro,k2=typeof FormData<"u"?FormData:null,A2=typeof Blob<"u"?Blob:null,S2=(()=>{let e;return typeof navigator<"u"&&((e=navigator.product)==="ReactNative"||e==="NativeScript"||e==="NS")?!1:typeof window<"u"&&typeof document<"u"})(),C2=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),xt={isBrowser:!0,classes:{URLSearchParams:x2,FormData:k2,Blob:A2},isStandardBrowserEnv:S2,isStandardBrowserWebWorkerEnv:C2,protocols:["http","https","file","blob","url","data"]};function O2(e,t){return la(e,new xt.classes.URLSearchParams,Object.assign({visitor:function(n,r,s,a){return xt.isNode&&k.isBuffer(n)?(this.append(r,n.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)}},t))}function T2(e){return k.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function L2(e){const t={},n=Object.keys(e);let r;const s=n.length;let a;for(r=0;r=n.length;return i=!i&&k.isArray(s)?s.length:i,l?(k.hasOwnProp(s,i)?s[i]=[s[i],r]:s[i]=r,!o):((!s[i]||!k.isObject(s[i]))&&(s[i]=[]),t(n,r,s[i],a)&&k.isArray(s[i])&&(s[i]=L2(s[i])),!o)}if(k.isFormData(e)&&k.isFunction(e.entries)){const n={};return k.forEachEntry(e,(r,s)=>{t(T2(r),s,n,0)}),n}return null}const P2={"Content-Type":void 0};function R2(e,t,n){if(k.isString(e))try{return(t||JSON.parse)(e),k.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const ca={transitional:Ef,adapter:["xhr","http"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,a=k.isObject(t);if(a&&k.isHTMLForm(t)&&(t=new FormData(t)),k.isFormData(t))return s&&s?JSON.stringify(xf(t)):t;if(k.isArrayBuffer(t)||k.isBuffer(t)||k.isStream(t)||k.isFile(t)||k.isBlob(t))return t;if(k.isArrayBufferView(t))return t.buffer;if(k.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let o;if(a){if(r.indexOf("application/x-www-form-urlencoded")>-1)return O2(t,this.formSerializer).toString();if((o=k.isFileList(t))||r.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return la(o?{"files[]":t}:t,l&&new l,this.formSerializer)}}return a||s?(n.setContentType("application/json",!1),R2(t)):t}],transformResponse:[function(t){const n=this.transitional||ca.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(t&&k.isString(t)&&(r&&!this.responseType||s)){const i=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(o){if(i)throw o.name==="SyntaxError"?ce.from(o,ce.ERR_BAD_RESPONSE,this,null,this.response):o}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:xt.classes.FormData,Blob:xt.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};k.forEach(["delete","get","head"],function(t){ca.headers[t]={}});k.forEach(["post","put","patch"],function(t){ca.headers[t]=k.merge(P2)});const so=ca,M2=k.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),N2=e=>{const t={};let n,r,s;return e&&e.split(` `).forEach(function(i){s=i.indexOf(":"),n=i.substring(0,s).trim().toLowerCase(),r=i.substring(s+1).trim(),!(!n||t[n]&&M2[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},$l=Symbol("internals");function or(e){return e&&String(e).trim().toLowerCase()}function _s(e){return e===!1||e==null?e:k.isArray(e)?e.map(_s):String(e)}function I2(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const $2=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function La(e,t,n,r,s){if(k.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!k.isString(t)){if(k.isString(r))return t.indexOf(r)!==-1;if(k.isRegExp(r))return r.test(t)}}function F2(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function H2(e,t){const n=k.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,a,i){return this[r].call(this,t,s,a,i)},configurable:!0})})}class ua{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function a(o,l,c){const u=or(l);if(!u)throw new Error("header name must be a non-empty string");const f=k.findKey(s,u);(!f||s[f]===void 0||c===!0||c===void 0&&s[f]!==!1)&&(s[f||l]=_s(o))}const i=(o,l)=>k.forEach(o,(c,u)=>a(c,u,l));return k.isPlainObject(t)||t instanceof this.constructor?i(t,n):k.isString(t)&&(t=t.trim())&&!$2(t)?i(N2(t),n):t!=null&&a(n,t,r),this}get(t,n){if(t=or(t),t){const r=k.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return I2(s);if(k.isFunction(n))return n.call(this,s,r);if(k.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=or(t),t){const r=k.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||La(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function a(i){if(i=or(i),i){const o=k.findKey(r,i);o&&(!n||La(r,r[o],o,n))&&(delete r[o],s=!0)}}return k.isArray(t)?t.forEach(a):a(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const a=n[r];(!t||La(this,this[a],a,t,!0))&&(delete this[a],s=!0)}return s}normalize(t){const n=this,r={};return k.forEach(this,(s,a)=>{const i=k.findKey(r,a);if(i){n[i]=_s(s),delete n[a];return}const o=t?F2(a):String(a).trim();o!==a&&delete n[a],n[o]=_s(s),r[o]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return k.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&k.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` -`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[$l]=this[$l]={accessors:{}}).accessors,s=this.prototype;function a(i){const o=or(i);r[o]||(H2(s,i),r[o]=!0)}return k.isArray(t)?t.forEach(a):a(t),this}}ua.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);k.freezeMethods(ua.prototype);k.freezeMethods(ua);const Mt=ua;function Pa(e,t){const n=this||so,r=t||n,s=Mt.from(r.headers);let a=r.data;return k.forEach(e,function(o){a=o.call(n,a,s.normalize(),t?t.status:void 0)}),s.normalize(),a}function kf(e){return!!(e&&e.__CANCEL__)}function Ur(e,t,n){ce.call(this,e??"canceled",ce.ERR_CANCELED,t,n),this.name="CanceledError"}k.inherits(Ur,ce,{__CANCEL__:!0});function D2(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new ce("Request failed with status code "+n.status,[ce.ERR_BAD_REQUEST,ce.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}const z2=xt.isStandardBrowserEnv?function(){return{write:function(n,r,s,a,i,o){const l=[];l.push(n+"="+encodeURIComponent(r)),k.isNumber(s)&&l.push("expires="+new Date(s).toGMTString()),k.isString(a)&&l.push("path="+a),k.isString(i)&&l.push("domain="+i),o===!0&&l.push("secure"),document.cookie=l.join("; ")},read:function(n){const r=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return r?decodeURIComponent(r[3]):null},remove:function(n){this.write(n,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}();function B2(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function j2(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}function Af(e,t){return e&&!B2(t)?j2(e,t):t}const V2=xt.isStandardBrowserEnv?function(){const t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");let r;function s(a){let i=a;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=s(window.location.href),function(i){const o=k.isString(i)?s(i):i;return o.protocol===r.protocol&&o.host===r.host}}():function(){return function(){return!0}}();function U2(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function K2(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,a=0,i;return t=t!==void 0?t:1e3,function(l){const c=Date.now(),u=r[a];i||(i=c),n[s]=l,r[s]=c;let f=a,d=0;for(;f!==s;)d+=n[f++],f=f%e;if(s=(s+1)%e,s===a&&(a=(a+1)%e),c-i{const a=s.loaded,i=s.lengthComputable?s.total:void 0,o=a-n,l=r(o),c=a<=i;n=a;const u={loaded:a,total:i,progress:i?a/i:void 0,bytes:o,rate:l||void 0,estimated:l&&i&&c?(i-a)/l:void 0,event:s};u[t?"download":"upload"]=!0,e(u)}}const W2=typeof XMLHttpRequest<"u",q2=W2&&function(e){return new Promise(function(n,r){let s=e.data;const a=Mt.from(e.headers).normalize(),i=e.responseType;let o;function l(){e.cancelToken&&e.cancelToken.unsubscribe(o),e.signal&&e.signal.removeEventListener("abort",o)}k.isFormData(s)&&(xt.isStandardBrowserEnv||xt.isStandardBrowserWebWorkerEnv?a.setContentType(!1):a.setContentType("multipart/form-data;",!1));let c=new XMLHttpRequest;if(e.auth){const m=e.auth.username||"",g=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";a.set("Authorization","Basic "+btoa(m+":"+g))}const u=Af(e.baseURL,e.url);c.open(e.method.toUpperCase(),_f(u,e.params,e.paramsSerializer),!0),c.timeout=e.timeout;function f(){if(!c)return;const m=Mt.from("getAllResponseHeaders"in c&&c.getAllResponseHeaders()),v={data:!i||i==="text"||i==="json"?c.responseText:c.response,status:c.status,statusText:c.statusText,headers:m,config:e,request:c};D2(function(b){n(b),l()},function(b){r(b),l()},v),c=null}if("onloadend"in c?c.onloadend=f:c.onreadystatechange=function(){!c||c.readyState!==4||c.status===0&&!(c.responseURL&&c.responseURL.indexOf("file:")===0)||setTimeout(f)},c.onabort=function(){c&&(r(new ce("Request aborted",ce.ECONNABORTED,e,c)),c=null)},c.onerror=function(){r(new ce("Network Error",ce.ERR_NETWORK,e,c)),c=null},c.ontimeout=function(){let g=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const v=e.transitional||Ef;e.timeoutErrorMessage&&(g=e.timeoutErrorMessage),r(new ce(g,v.clarifyTimeoutError?ce.ETIMEDOUT:ce.ECONNABORTED,e,c)),c=null},xt.isStandardBrowserEnv){const m=(e.withCredentials||V2(u))&&e.xsrfCookieName&&z2.read(e.xsrfCookieName);m&&a.set(e.xsrfHeaderName,m)}s===void 0&&a.setContentType(null),"setRequestHeader"in c&&k.forEach(a.toJSON(),function(g,v){c.setRequestHeader(v,g)}),k.isUndefined(e.withCredentials)||(c.withCredentials=!!e.withCredentials),i&&i!=="json"&&(c.responseType=e.responseType),typeof e.onDownloadProgress=="function"&&c.addEventListener("progress",Fl(e.onDownloadProgress,!0)),typeof e.onUploadProgress=="function"&&c.upload&&c.upload.addEventListener("progress",Fl(e.onUploadProgress)),(e.cancelToken||e.signal)&&(o=m=>{c&&(r(!m||m.type?new Ur(null,e,c):m),c.abort(),c=null)},e.cancelToken&&e.cancelToken.subscribe(o),e.signal&&(e.signal.aborted?o():e.signal.addEventListener("abort",o)));const d=U2(u);if(d&&xt.protocols.indexOf(d)===-1){r(new ce("Unsupported protocol "+d+":",ce.ERR_BAD_REQUEST,e));return}c.send(s||null)})},Es={http:y2,xhr:q2};k.forEach(Es,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Y2={getAdapter:e=>{e=k.isArray(e)?e:[e];const{length:t}=e;let n,r;for(let s=0;se instanceof Mt?e.toJSON():e;function Kn(e,t){t=t||{};const n={};function r(c,u,f){return k.isPlainObject(c)&&k.isPlainObject(u)?k.merge.call({caseless:f},c,u):k.isPlainObject(u)?k.merge({},u):k.isArray(u)?u.slice():u}function s(c,u,f){if(k.isUndefined(u)){if(!k.isUndefined(c))return r(void 0,c,f)}else return r(c,u,f)}function a(c,u){if(!k.isUndefined(u))return r(void 0,u)}function i(c,u){if(k.isUndefined(u)){if(!k.isUndefined(c))return r(void 0,c)}else return r(void 0,u)}function o(c,u,f){if(f in t)return r(c,u);if(f in e)return r(void 0,c)}const l={url:a,method:a,data:a,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:o,headers:(c,u)=>s(Dl(c),Dl(u),!0)};return k.forEach(Object.keys(Object.assign({},e,t)),function(u){const f=l[u]||s,d=f(e[u],t[u],u);k.isUndefined(d)&&f!==o||(n[u]=d)}),n}const Sf="1.4.0",ao={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{ao[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const zl={};ao.transitional=function(t,n,r){function s(a,i){return"[Axios v"+Sf+"] Transitional option '"+a+"'"+i+(r?". "+r:"")}return(a,i,o)=>{if(t===!1)throw new ce(s(i," has been removed"+(n?" in "+n:"")),ce.ERR_DEPRECATED);return n&&!zl[i]&&(zl[i]=!0,console.warn(s(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(a,i,o):!0}};function G2(e,t,n){if(typeof e!="object")throw new ce("options must be an object",ce.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const a=r[s],i=t[a];if(i){const o=e[a],l=o===void 0||i(o,a,e);if(l!==!0)throw new ce("option "+a+" must be "+l,ce.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new ce("Unknown option "+a,ce.ERR_BAD_OPTION)}}const ii={assertOptions:G2,validators:ao},Kt=ii.validators;class $s{constructor(t){this.defaults=t,this.interceptors={request:new Il,response:new Il}}request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Kn(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:a}=n;r!==void 0&&ii.assertOptions(r,{silentJSONParsing:Kt.transitional(Kt.boolean),forcedJSONParsing:Kt.transitional(Kt.boolean),clarifyTimeoutError:Kt.transitional(Kt.boolean)},!1),s!=null&&(k.isFunction(s)?n.paramsSerializer={serialize:s}:ii.assertOptions(s,{encode:Kt.function,serialize:Kt.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i;i=a&&k.merge(a.common,a[n.method]),i&&k.forEach(["delete","get","head","post","put","patch","common"],g=>{delete a[g]}),n.headers=Mt.concat(i,a);const o=[];let l=!0;this.interceptors.request.forEach(function(v){typeof v.runWhen=="function"&&v.runWhen(n)===!1||(l=l&&v.synchronous,o.unshift(v.fulfilled,v.rejected))});const c=[];this.interceptors.response.forEach(function(v){c.push(v.fulfilled,v.rejected)});let u,f=0,d;if(!l){const g=[Hl.bind(this),void 0];for(g.unshift.apply(g,o),g.push.apply(g,c),d=g.length,u=Promise.resolve(n);f{if(!r._listeners)return;let a=r._listeners.length;for(;a-- >0;)r._listeners[a](s);r._listeners=null}),this.promise.then=s=>{let a;const i=new Promise(o=>{r.subscribe(o),a=o}).then(s);return i.cancel=function(){r.unsubscribe(a)},i},t(function(a,i,o){r.reason||(r.reason=new Ur(a,i,o),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}static source(){let t;return{token:new io(function(s){t=s}),cancel:t}}}const J2=io;function X2(e){return function(n){return e.apply(null,n)}}function Q2(e){return k.isObject(e)&&e.isAxiosError===!0}const oi={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(oi).forEach(([e,t])=>{oi[t]=e});const Z2=oi;function Cf(e){const t=new xs(e),n=cf(xs.prototype.request,t);return k.extend(n,xs.prototype,t,{allOwnKeys:!0}),k.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return Cf(Kn(e,s))},n}const Ie=Cf(so);Ie.Axios=xs;Ie.CanceledError=Ur;Ie.CancelToken=J2;Ie.isCancel=kf;Ie.VERSION=Sf;Ie.toFormData=la;Ie.AxiosError=ce;Ie.Cancel=Ie.CanceledError;Ie.all=function(t){return Promise.all(t)};Ie.spread=X2;Ie.isAxiosError=Q2;Ie.mergeConfig=Kn;Ie.AxiosHeaders=Mt;Ie.formToJSON=e=>xf(k.isHTMLForm(e)?new FormData(e):e);Ie.HttpStatusCode=Z2;Ie.default=Ie;const Bl=Ie;function eg(e,t){switch(e.replace("_","-")){case"af":case"af-ZA":case"bn":case"bn-BD":case"bn-IN":case"bg":case"bg-BG":case"ca":case"ca-AD":case"ca-ES":case"ca-FR":case"ca-IT":case"da":case"da-DK":case"de":case"de-AT":case"de-BE":case"de-CH":case"de-DE":case"de-LI":case"de-LU":case"el":case"el-CY":case"el-GR":case"en":case"en-AG":case"en-AU":case"en-BW":case"en-CA":case"en-DK":case"en-GB":case"en-HK":case"en-IE":case"en-IN":case"en-NG":case"en-NZ":case"en-PH":case"en-SG":case"en-US":case"en-ZA":case"en-ZM":case"en-ZW":case"eo":case"eo-US":case"es":case"es-AR":case"es-BO":case"es-CL":case"es-CO":case"es-CR":case"es-CU":case"es-DO":case"es-EC":case"es-ES":case"es-GT":case"es-HN":case"es-MX":case"es-NI":case"es-PA":case"es-PE":case"es-PR":case"es-PY":case"es-SV":case"es-US":case"es-UY":case"es-VE":case"et":case"et-EE":case"eu":case"eu-ES":case"eu-FR":case"fa":case"fa-IR":case"fi":case"fi-FI":case"fo":case"fo-FO":case"fur":case"fur-IT":case"fy":case"fy-DE":case"fy-NL":case"gl":case"gl-ES":case"gu":case"gu-IN":case"ha":case"ha-NG":case"he":case"he-IL":case"hu":case"hu-HU":case"is":case"is-IS":case"it":case"it-CH":case"it-IT":case"ku":case"ku-TR":case"lb":case"lb-LU":case"ml":case"ml-IN":case"mn":case"mn-MN":case"mr":case"mr-IN":case"nah":case"nb":case"nb-NO":case"ne":case"ne-NP":case"nl":case"nl-AW":case"nl-BE":case"nl-NL":case"nn":case"nn-NO":case"no":case"om":case"om-ET":case"om-KE":case"or":case"or-IN":case"pa":case"pa-IN":case"pa-PK":case"pap":case"pap-AN":case"pap-AW":case"pap-CW":case"ps":case"ps-AF":case"pt":case"pt-BR":case"pt-PT":case"so":case"so-DJ":case"so-ET":case"so-KE":case"so-SO":case"sq":case"sq-AL":case"sq-MK":case"sv":case"sv-FI":case"sv-SE":case"sw":case"sw-KE":case"sw-TZ":case"ta":case"ta-IN":case"ta-LK":case"te":case"te-IN":case"tk":case"tk-TM":case"ur":case"ur-IN":case"ur-PK":case"zu":case"zu-ZA":return t===1?0:1;case"am":case"am-ET":case"bh":case"fil":case"fil-PH":case"fr":case"fr-BE":case"fr-CA":case"fr-CH":case"fr-FR":case"fr-LU":case"gun":case"hi":case"hi-IN":case"hy":case"hy-AM":case"ln":case"ln-CD":case"mg":case"mg-MG":case"nso":case"nso-ZA":case"ti":case"ti-ER":case"ti-ET":case"wa":case"wa-BE":case"xbr":return t===0||t===1?0:1;case"be":case"be-BY":case"bs":case"bs-BA":case"hr":case"hr-HR":case"ru":case"ru-RU":case"ru-UA":case"sr":case"sr-ME":case"sr-RS":case"uk":case"uk-UA":return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"cs":case"cs-CZ":case"sk":case"sk-SK":return t==1?0:t>=2&&t<=4?1:2;case"ga":case"ga-IE":return t==1?0:t==2?1:2;case"lt":case"lt-LT":return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2;case"sl":case"sl-SI":return t%100==1?0:t%100==2?1:t%100==3||t%100==4?2:3;case"mk":case"mk-MK":return t%10==1?0:1;case"mt":case"mt-MT":return t==1?0:t==0||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3;case"lv":case"lv-LV":return t==0?0:t%10==1&&t%100!=11?1:2;case"pl":case"pl-PL":return t==1?0:t%10>=2&&t%10<=4&&(t%100<12||t%100>14)?1:2;case"cy":case"cy-GB":return t==1?0:t==2?1:t==8||t==11?2:3;case"ro":case"ro-RO":return t==1?0:t==0||t%100>0&&t%100<20?1:2;case"ar":case"ar-AE":case"ar-BH":case"ar-DZ":case"ar-EG":case"ar-IN":case"ar-IQ":case"ar-JO":case"ar-KW":case"ar-LB":case"ar-LY":case"ar-MA":case"ar-OM":case"ar-QA":case"ar-SA":case"ar-SD":case"ar-SS":case"ar-SY":case"ar-TN":case"ar-YE":return t==0?0:t==1?1:t==2?2:t%100>=3&&t%100<=10?3:t%100>=11&&t%100<=99?4:5;default:return 0}}function tg(e,t,n){let r=e.split("|");const s=ng(r,t);if(s!==null)return s.trim();r=sg(r);const a=eg(n,t);return r.length===1||!r[a]?r[0]:r[a]}function ng(e,t){for(const n of e){let r=rg(n,t);if(r!==null)return r}return null}function rg(e,t){const n=e.match(/^[\{\[]([^\[\]\{\}]*)[\}\]](.*)/s)||[];if(n.length!==3)return null;const r=n[1],s=n[2];if(r.includes(",")){let[a,i]=r.split(",");if(i==="*"&&t>=parseFloat(a))return s;if(a==="*"&&t<=parseFloat(i))return s;if(t>=parseFloat(a)&&t<=parseFloat(i))return s}return parseFloat(r)===t?s:null}function sg(e){return e.map(t=>t.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}const Ma=(e,t,n={})=>{try{return e(t)}catch{return n}},Na=async(e,t={})=>{try{return(await e).default||t}catch{return t}};function jl(e){return e||ag()||ig()}function ag(){var e;return!!(typeof process<"u"&&((e=process.env)!=null&&e.LARAVEL_VUE_I18N_HAS_PHP))}function ig(){return typeof{VITE_LARAVEL_VUE_I18N_HAS_PHP:"true",BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}<"u"}const Pn=typeof window>"u";let Cn=null;const Vl={lang:!Pn&&document.documentElement.lang?document.documentElement.lang.replace("-","_"):null,fallbackLang:"en",fallbackMissingTranslations:!1,resolve:e=>new Promise(t=>t({default:{}})),onLoad:e=>{}},og={shared:!0};function Ul(e,t=!1){return Qe.getSharedInstance().loadLanguageAsync(e,t)}function Ze(e,t={}){return Qe.getSharedInstance().trans(e,t)}function u3(){return Qe.getSharedInstance().getActiveLanguage()}const lg={install(e,t={}){t={...og,...t};const n=t.shared?Qe.getSharedInstance(t,!0):new Qe(t);e.config.globalProperties.$t=(r,s)=>n.trans(r,s),e.config.globalProperties.$tChoice=(r,s,a)=>n.transChoice(r,s,a),e.provide("i18n",n)}};class Qe{constructor(t={}){this.activeMessages=Rt({}),this.fallbackMessages=Rt({}),this.reset=()=>{Qe.loaded=[],this.options=Vl;for(const[n]of Object.entries(this.activeMessages))this.activeMessages[n]=null;this===Cn&&(Cn=null)},this.options={...Vl,...t},this.options.fallbackMissingTranslations?this.loadFallbackLanguage():this.load()}setOptions(t={},n=!1){return this.options={...this.options,...t},n&&this.load(),this}load(){this[Pn?"loadLanguage":"loadLanguageAsync"](this.getActiveLanguage())}loadFallbackLanguage(){if(!Pn){this.resolveLangAsync(this.options.resolve,this.options.fallbackLang).then(({default:n})=>{this.applyFallbackLanguage(this.options.fallbackLang,n),this.load()});return}const{default:t}=this.resolveLang(this.options.resolve,this.options.fallbackLang);this.applyFallbackLanguage(this.options.fallbackLang,t),this.loadLanguage(this.getActiveLanguage())}loadLanguage(t,n=!1){const r=Qe.loaded.find(a=>a.lang===t);if(r){this.setLanguage(r);return}const{default:s}=this.resolveLang(this.options.resolve,t);this.applyLanguage(t,s,n,this.loadLanguage)}loadLanguageAsync(t,n=!1,r=!1){var a;r||((a=this.abortController)==null||a.abort(),this.abortController=new AbortController);const s=Qe.loaded.find(i=>i.lang===t);return s?Promise.resolve(this.setLanguage(s)):new Promise((i,o)=>{this.abortController.signal.addEventListener("abort",()=>{i()}),this.resolveLangAsync(this.options.resolve,t).then(({default:l})=>{i(this.applyLanguage(t,l,n,this.loadLanguageAsync))})})}resolveLang(t,n,r={}){return Object.keys(r).length||(r=Ma(t,n)),jl(Pn)?{default:{...r,...Ma(t,`php_${n}`)}}:{default:r}}async resolveLangAsync(t,n){let r=Ma(t,n);if(!(r instanceof Promise))return this.resolveLang(t,n,r);if(jl(Pn)){const s=await Na(t(`php_${n}`)),a=await Na(r);return new Promise(i=>i({default:{...s,...a}}))}return new Promise(async s=>s({default:await Na(r)}))}applyLanguage(t,n,r=!1,s){if(Object.keys(n).length<1){if(/[-_]/g.test(t)&&!r)return s.call(this,t.replace(/[-_]/g,i=>i==="-"?"_":"-"),!0,!0);if(t!==this.options.fallbackLang)return s.call(this,this.options.fallbackLang,!1,!0)}const a={lang:t,messages:n};return Qe.loaded.push(a),this.setLanguage(a)}applyFallbackLanguage(t,n){for(const[r,s]of Object.entries(n))this.fallbackMessages[r]=s;Qe.loaded.push({lang:this.options.fallbackLang,messages:n})}setLanguage({lang:t,messages:n}){Pn||document.documentElement.setAttribute("lang",t.replace("_","-")),this.options.lang=t;for(const[r,s]of Object.entries(n))this.activeMessages[r]=s;for(const[r,s]of Object.entries(this.fallbackMessages))(!this.activeMessages[r]||this.activeMessages[r]===r)&&(this.activeMessages[r]=s);for(const[r]of Object.entries(this.activeMessages))!n[r]&&!this.fallbackMessages[r]&&(this.activeMessages[r]=null);return this.options.onLoad(t),t}getActiveLanguage(){return this.options.lang||this.options.fallbackLang}isLoaded(t){return t??(t=this.getActiveLanguage()),Qe.loaded.some(n=>n.lang.replace(/[-_]/g,"-")===t.replace(/[-_]/g,"-"))}trans(t,n={}){return this.wTrans(t,n).value}wTrans(t,n={}){return Di(()=>{this.activeMessages[t]=this.findTranslation(t)||this.findTranslation(t.replace(/\//g,"."))||t}),te(()=>this.makeReplacements(this.activeMessages[t],n))}transChoice(t,n,r={}){return this.wTransChoice(t,n,r).value}wTransChoice(t,n,r={}){const s=this.wTrans(t,r);return r.count=n.toString(),te(()=>this.makeReplacements(tg(s.value,n,this.options.lang),r))}findTranslation(t){if(this.activeMessages[t])return this.activeMessages[t];if(this.activeMessages[`${t}.0`]!==void 0){const r=Object.entries(this.activeMessages).filter(s=>s[0].startsWith(`${t}.`)).map(s=>s[1]);return Rt(r)}return this.activeMessages[t]}makeReplacements(t,n){const r=s=>s.charAt(0).toUpperCase()+s.slice(1);return Object.entries(n||[]).sort((s,a)=>s[0].length>=a[0].length?-1:1).forEach(([s,a])=>{a=a.toString(),t=t.replace(new RegExp(`:${s}`,"g"),a).replace(new RegExp(`:${s.toUpperCase()}`,"g"),a.toUpperCase()).replace(new RegExp(`:${r(s)}`,"g"),r(a))}),t}static getSharedInstance(t,n=!1){return(Cn==null?void 0:Cn.setOptions(t,n))||(Cn=new Qe(t))}}Qe.loaded=[];const{notify:On}=Nu(),Nt=jr({id:"notify",state:()=>({err:null,message:null,originalMessage:null,debug:null}),getters:{},actions:{parseError(e){this.$reset,this.err=e,e.response?e.response.status===407?(this.message=Ze("errors.auth_proxy_failed"),this.originalMessage=Ze("errors.auth_proxy_failed_legend")):e.response.status===403?(this.message=Ze("errors.unauthorized"),this.originalMessage=Ze("errors.unauthorized_legend")):e.response.data&&(this.message=e.response.data.message,this.originalMessage=e.response.data.originalMessage??null,this.debug=e.response.data.debug??null):(this.message=e.message,this.debug=e.stack??null)},notFound(e){Wn.push({name:"404"})},error(e){this.parseError(e),Wn.push({name:"genericError"})},info(e){On({type:"is-info",...e})},success(e){On({type:"is-success",...e})},warn(e){On({type:"is-warning",...e})},alert(e){On({type:"is-danger",...e})},action(e){On({type:"is-dark",...e})},clear(){On({clean:!0})}}}),fa=(e="api")=>{let t;const n=window.appConfig.subdirectory;e==="web"?t=n+"/":t=n+"/api/v1";const r=Bl.create({baseURL:t,headers:{"X-Requested-With":"XMLHttpRequest","Content-Type":"application/json"},withCredentials:!0});return r.interceptors.response.use(s=>s,async function(s){const a=s.config;return s.response.status===419&&!a._retried?(a._retried=!0,await Bl.get("/refresh-csrf"),r.request(a)):s.response&&[407].includes(s.response.status)?(Nt().error(s),new Promise(()=>{})):s.config.hasOwnProperty("returnError")&&s.config.returnError===!0||(s.response&&[401].includes(s.response.status)&&ft().tossOut(),s.response.status===422)?Promise.reject(s):s.response.status===404?(Nt().notFound(),new Promise(()=>{})):(s.response.status===418&&ft().logout({kicked:!0}),Nt().error(s),new Promise(()=>{}))}),r},cg=fa("web"),ug=fa("api"),Of={logout(e={}){return cg.get("/user/logout",{...e})},async getCurrentUser(e={}){return ug.get("/user",{...e})}},je=fa("api"),rs={getAll(e=!1,t={}){return je.get("/twofaccounts"+(e?"?withOtp=1":""),{...t})},getByIds(e,t=!1,n={}){return je.get("/twofaccounts?ids="+e+(t?"&withOtp=1":""),{...n})},get(e,t={}){return je.get("/twofaccounts/"+e,{...t})},preview(e,t={}){return je.post("/twofaccounts/preview",{uri:e},{...t})},getLogo(e,t={}){return je.post("/icons/default",{service:e},{...t})},deleteIcon(e,t={}){return je.delete("/icons/"+e,{...t})},getOtpById(e,t={}){return je.get("/twofaccounts/"+e+"/otp",{...t})},getOtpByUri(e,t={}){return je.post("/twofaccounts/otp",{uri:e},{...t})},getOtpByParams(e,t={}){return je.post("/twofaccounts/otp",e,{...t})},withdraw(e,t={}){return je.patch("/twofaccounts/withdraw?ids="+e.join(),{...t})},saveOrder(e,t={}){return je.post("/twofaccounts/reorder",{orderedIds:e},{...t})},batchDelete(e,t={}){return je.delete("/twofaccounts?ids="+e,{...t})},export(e,t={}){return je.get("/twofaccounts/export?ids="+e,{...t})},getQrcode(e,t={}){return je.get("/twofaccounts/"+e+"/qrcode",{...t})},migrate(e,t={}){return je.post("/twofaccounts/migration",{payload:e,withSecret:!0},{...t})},count(e={}){return je.get("/twofaccounts/count",{...e})}};var lr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Tf={exports:{}};(function(e,t){(function(n,r){r()})(lr,function(){function n(c,u){return typeof u>"u"?u={autoBom:!1}:typeof u!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),u={autoBom:!u}),u.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(c.type)?new Blob(["\uFEFF",c],{type:c.type}):c}function r(c,u,f){var d=new XMLHttpRequest;d.open("GET",c),d.responseType="blob",d.onload=function(){l(d.response,u,f)},d.onerror=function(){console.error("could not download file")},d.send()}function s(c){var u=new XMLHttpRequest;u.open("HEAD",c,!1);try{u.send()}catch{}return 200<=u.status&&299>=u.status}function a(c){try{c.dispatchEvent(new MouseEvent("click"))}catch{var u=document.createEvent("MouseEvents");u.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),c.dispatchEvent(u)}}var i=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof lr=="object"&&lr.global===lr?lr:void 0,o=i.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),l=i.saveAs||(typeof window!="object"||window!==i?function(){}:"download"in HTMLAnchorElement.prototype&&!o?function(c,u,f){var d=i.URL||i.webkitURL,m=document.createElement("a");u=u||c.name||"download",m.download=u,m.rel="noopener",typeof c=="string"?(m.href=c,m.origin===location.origin?a(m):s(m.href)?r(c,u,f):a(m,m.target="_blank")):(m.href=d.createObjectURL(c),setTimeout(function(){d.revokeObjectURL(m.href)},4e4),setTimeout(function(){a(m)},0))}:"msSaveOrOpenBlob"in navigator?function(c,u,f){if(u=u||c.name||"download",typeof c!="string")navigator.msSaveOrOpenBlob(n(c,f),u);else if(s(c))r(c,u,f);else{var d=document.createElement("a");d.href=c,d.target="_blank",setTimeout(function(){a(d)})}}:function(c,u,f,d){if(d=d||open("","_blank"),d&&(d.document.title=d.document.body.innerText="downloading..."),typeof c=="string")return r(c,u,f);var m=c.type==="application/octet-stream",g=/constructor/i.test(i.HTMLElement)||i.safari,v=/CriOS\/[\d]+/.test(navigator.userAgent);if((v||m&&g||o)&&typeof FileReader<"u"){var S=new FileReader;S.onloadend=function(){var P=S.result;P=v?P:P.replace(/^data:[^;]*;/,"data:attachment/file;"),d?d.location.href=P:location=P,d=null},S.readAsDataURL(c)}else{var b=i.URL||i.webkitURL,_=b.createObjectURL(c);d?d.location=_:location.href=_,d=null,setTimeout(function(){b.revokeObjectURL(_)},4e4)}});i.saveAs=l.saveAs=l,e.exports=l})})(Tf);var fg=Tf.exports;const Lf=jr({id:"twofaccounts",state:()=>({items:[],selectedIds:[],filter:"",backendWasNewer:!1,fetchedOn:null}),getters:{filtered(e){const t=ft();return e.items.filter(n=>parseInt(t.preferences.activeGroup)>0?((n.service?n.service.toLowerCase().includes(e.filter.toLowerCase()):!1)||n.account.toLowerCase().includes(e.filter.toLowerCase()))&&n.group_id==parseInt(t.preferences.activeGroup):(n.service?n.service.toLowerCase().includes(e.filter.toLowerCase()):!1)||n.account.toLowerCase().includes(e.filter.toLowerCase()))},periods(e){return e.items.filter(t=>t.otp_type=="totp").map(function(t){var n;return{period:t.period,generated_at:(n=t.otp)==null?void 0:n.generated_at}}).filter((t,n,r)=>n===r.findIndex(s=>s.period===t.period)).sort()},orderedIds(e){return e.items.map(t=>t.id)},isEmpty(e){return e.items.length==0},count(e){return e.items.length},filteredCount(e){return e.filtered.length},selectedCount(e){return e.selectedIds.length},hasNoneSelected(e){return e.selectedIds.length==0}},actions:{async fetch(e=!1){Math.floor(Date.now()-this.fetchedOn)>2e3||e?(this.fetchedOn=Date.now(),await rs.getAll(!ft().preferences.getOtpOnRequest).then(r=>{e&&(this.backendWasNewer=r.data.length!==this.items.length,this.items.forEach(s=>{let a=r.data.find(i=>i.id===s.id);if(a==null){this.backendWasNewer=!0;return}for(const i in s)if(i!=="otp"&&s[i]!=a[i]){this.backendWasNewer=!0;return}})),this.items=r.data})):this.backendWasNewer=!1},select(e){for(var t=0;te.id)},selectNone(){this.selectedIds=[]},async deleteSelected(){confirm(Ze("twofaccounts.confirm.delete"))&&this.selectedIds.length>0&&await rs.batchDelete(this.selectedIds.join()).then(e=>{let t=this.items;this.selectedIds.forEach(function(n){t=t.filter(r=>r.id!==n)}),this.items=t,this.selectNone(),Nt().success({text:Ze("twofaccounts.accounts_deleted")})})},export(){rs.export(this.selectedIds.join(),{responseType:"blob"}).then(e=>{var t=new Blob([e.data],{type:"application/json;charset=utf-8"});fg.saveAs.saveAs(t,"2fauth_export.json")})},saveOrder(){rs.saveOrder(this.orderedIds)},sortAsc(){this.items.sort((e,t)=>e.service>t.service?1:-1),this.saveOrder()},sortDesc(){this.items.sort((e,t)=>e.servicet.period==e).map(t=>t.id)}}}),ss=fa("api"),Kl={getAll(){return ss.get("groups")},get(e,t={}){return ss.get("/groups/"+e,{...t})},assign(e,t,n={}){return ss.post("/groups/"+t+"/assign",{ids:e},{...n})},delete(e,t={}){return ss.delete("/groups/"+e,{...t})}},dg=jr({id:"groups",state:()=>({items:[],fetchedOn:null}),getters:{current(e){const t=e.items.find(n=>n.id===parseInt(ft().preferences.activeGroup));return t?t.name:Ze("commons.all")},withoutTheAllGroup(e){return e.items.filter(t=>t.id>0)},theAllGroup(e){return e.items.find(t=>t.id==0)},isEmpty(){return this.withoutTheAllGroup.length==0},count(){return this.withoutTheAllGroup.length}},actions:{addOrEdit(e){const t=this.items.findIndex(n=>n.id===parseInt(e.id));t>-1?(this.items[t]=e,Nt().success({text:Ze("groups.group_name_saved")})):(this.items.push(e),Nt().success({text:Ze("groups.group_successfully_created")}))},async fetch(){Math.floor(Date.now()-this.fetchedOn)>2e3&&(this.fetchedOn=Date.now(),await Kl.getAll().then(n=>{this.items=n.data}))},async delete(e){const t=ft();confirm(Ze("groups.confirm.delete"))&&await Kl.delete(e).then(n=>{this.items=this.items.filter(r=>r.id!==e),Nt().success({text:Ze("groups.group_successfully_deleted")}),parseInt(t.preferences.activeGroup)===e&&(t.preferences.activeGroup=0)})}}}),ft=jr({id:"user",state:()=>({name:void 0,email:void 0,oauth_provider:void 0,preferences:window.defaultPreferences,isAdmin:!1}),getters:{isAuthenticated(){return this.name!=null}},actions:{async loginAs(e){this.$patch(e),await this.initDataStores(),this.applyUserPrefs()},async initDataStores(){const e=Lf(),t=dg();this.isAuthenticated?(await e.fetch(),t.fetch()):(e.$reset(),t.$reset())},logout(e={}){const{kicked:t}=e,n=Nt();if(this.$2fauth.config.proxyAuth)if(this.$2fauth.config.proxyLogoutUrl)location.assign(this.$2fauth.config.proxyLogoutUrl);else return!1;else Of.logout({returnError:!0}).then(()=>{t&&(n.clear(),n.warn({text:Ze("auth.autolock_triggered_punchline"),duration:-1})),this.tossOut()}).catch(r=>{r.response.status!==401?n.error(r):this.tossOut()})},tossOut(){this.$reset(),this.initDataStores(),this.applyUserPrefs(),Wn.push({name:"login"})},applyTheme(){const e=tf({attribute:"data-theme"});e.value=this.preferences.theme=="system"?"auto":this.preferences.theme},applyLanguage(){const{isSupported:e,language:t}=nf();Ul(e?this.preferences.lang=="browser"?t.value.slice(0,2):this.preferences.lang:"en")},applyUserPrefs(){this.applyTheme(),this.applyLanguage()}}}),pg=Object.freeze(Object.defineProperty({__proto__:null,useUserStore:ft},Symbol.toStringTag,{value:"Module"})),Pf=jr({id:"appSettings",state:()=>({...window.appSettings}),actions:{}});async function qe({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r;s.isAuthenticated||await Of.getCurrentUser({returnError:!0}).then(async a=>{const i=a.data;await s.loginAs({name:i.name,email:i.email,oauth_provider:i.oauth_provider,preferences:i.preferences,isAdmin:i.is_admin})}).catch(a=>{}),s.isAuthenticated?n():t({name:"login"})}async function mg({to:e,next:t,nextMiddleware:n,stores:r}){const{twofaccounts:s}=r;s.isEmpty?await s.fetch().then(()=>{s.isEmpty?t({name:"start"}):n()}):n()}function hg({to:e,next:t,nextMiddleware:n,stores:r}){const{notify:s}=r;s.err==null&&!e.query.err?t({name:"accounts"}):n()}async function gg({to:e,next:t,nextMiddleware:n,stores:r}){const{appSettings:s}=r;s.disableRegistration?t({name:"notFound"}):n()}function Ve({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r,a=ef(s.$2fauth.prefix+"returnTo","accounts");a.value=e.name,n()}async function Tn({to:e,next:t,nextMiddleware:n,stores:r}){const{appSettings:s}=r;s.$2fauth.config.proxyAuth?t({name:"accounts"}):n()}const Wn=d1({history:Th(window.appConfig.subdirectory?window.appConfig.subdirectory:"/"),routes:[{path:"/start",name:"start",component:()=>se(()=>import("./Start-3e40750b.js"),["./Start-3e40750b.js","./Form-d325991a.js","./bus-222e275f.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0}},{path:"/capture",name:"capture",component:()=>se(()=>import("./Capture-9bf0a566.js"),["./Capture-9bf0a566.js","./Form-d325991a.js","./Spinner-0e4f49a2.js","./Spinner-2c227a70.css","./QrContentDisplay-d6c6658b.js","./bus-222e275f.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0}},{path:"/accounts",name:"accounts",component:()=>se(()=>import("./Accounts-10c20f4b.js"),["./Accounts-10c20f4b.js","./OtpDisplay-62239862.js","./Spinner-0e4f49a2.js","./Spinner-2c227a70.css","./userService-d2ada2ab.js","./bus-222e275f.js"],import.meta.url),meta:{middlewares:[qe,mg,Ve],watchedByKicker:!0},alias:"/"},{path:"/account/create",name:"createAccount",component:()=>se(()=>import("./CreateUpdate-ad68e9ef.js"),["./CreateUpdate-ad68e9ef.js","./Form-d325991a.js","./OtpDisplay-62239862.js","./Spinner-0e4f49a2.js","./Spinner-2c227a70.css","./QrContentDisplay-d6c6658b.js","./bus-222e275f.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0}},{path:"/account/import",name:"importAccounts",component:()=>se(()=>import("./Import-93a5b87d.js"),["./Import-93a5b87d.js","./Form-d325991a.js","./OtpDisplay-62239862.js","./Spinner-0e4f49a2.js","./Spinner-2c227a70.css","./bus-222e275f.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0}},{path:"/account/:twofaccountId/edit",name:"editAccount",component:()=>se(()=>import("./CreateUpdate-ad68e9ef.js"),["./CreateUpdate-ad68e9ef.js","./Form-d325991a.js","./OtpDisplay-62239862.js","./Spinner-0e4f49a2.js","./Spinner-2c227a70.css","./QrContentDisplay-d6c6658b.js","./bus-222e275f.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0},props:!0},{path:"/account/:twofaccountId/qrcode",name:"showQRcode",component:()=>se(()=>import("./QRcode-90640d5d.js"),["./QRcode-90640d5d.js","./Spinner-0e4f49a2.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0}},{path:"/groups",name:"groups",component:()=>se(()=>import("./Groups-729cd6d1.js"),["./Groups-729cd6d1.js","./bus-222e275f.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0},props:!0},{path:"/group/create",name:"createGroup",component:()=>se(()=>import("./CreateUpdate-e5f4aaeb.js"),["./CreateUpdate-e5f4aaeb.js","./Form-d325991a.js","./bus-222e275f.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0}},{path:"/group/:groupId/edit",name:"editGroup",component:()=>se(()=>import("./CreateUpdate-e5f4aaeb.js"),["./CreateUpdate-e5f4aaeb.js","./Form-d325991a.js","./bus-222e275f.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0},props:!0},{path:"/settings/options",name:"settings.options",component:()=>se(()=>import("./Options-3a411377.js"),["./Options-3a411377.js","./SettingTabs-fbf19fde.js","./userService-d2ada2ab.js","./systemService-fd2a8274.js"],import.meta.url),meta:{middlewares:[qe],watchedByKicker:!0,showAbout:!0}},{path:"/settings/account",name:"settings.account",component:()=>se(()=>import("./Account-f9c3fa47.js"),["./Account-f9c3fa47.js","./Form-d325991a.js","./SettingTabs-fbf19fde.js"],import.meta.url),meta:{middlewares:[qe],watchedByKicker:!0,showAbout:!0}},{path:"/settings/oauth",name:"settings.oauth.tokens",component:()=>se(()=>import("./OAuth-7bad0205.js"),["./OAuth-7bad0205.js","./Form-d325991a.js","./userService-d2ada2ab.js","./SettingTabs-fbf19fde.js","./Spinner-0e4f49a2.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[qe],watchedByKicker:!0,showAbout:!0,props:!0}},{path:"/settings/webauthn/:credentialId/edit",name:"settings.webauthn.editCredential",component:()=>se(()=>import("./Edit-c86faad0.js"),["./Edit-c86faad0.js","./Form-d325991a.js"],import.meta.url),meta:{middlewares:[qe],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/settings/webauthn",name:"settings.webauthn.devices",component:()=>se(()=>import("./WebAuthn-60ef5014.js"),["./WebAuthn-60ef5014.js","./SettingTabs-fbf19fde.js","./userService-d2ada2ab.js","./webauthnService-08262ddb.js","./Spinner-0e4f49a2.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[qe],watchedByKicker:!0,showAbout:!0}},{path:"/login",name:"login",component:()=>se(()=>import("./Login-f9f96d1e.js"),["./Login-f9f96d1e.js","./Form-d325991a.js","./webauthnService-08262ddb.js"],import.meta.url),meta:{middlewares:[Tn,Ve],showAbout:!0}},{path:"/register",name:"register",component:()=>se(()=>import("./Register-72e05bf6.js"),["./Register-72e05bf6.js","./Form-d325991a.js","./webauthnService-08262ddb.js"],import.meta.url),meta:{middlewares:[Tn,gg,Ve],showAbout:!0}},{path:"/password/request",name:"password.request",component:()=>se(()=>import("./RequestReset-031c3de6.js"),["./RequestReset-031c3de6.js","./Form-d325991a.js"],import.meta.url),meta:{middlewares:[Tn,Ve],showAbout:!0}},{path:"/user/password/reset",name:"password.reset",component:()=>se(()=>import("./Reset-ba2845e8.js"),["./Reset-ba2845e8.js","./Form-d325991a.js"],import.meta.url),meta:{middlewares:[Tn,Ve],showAbout:!0}},{path:"/webauthn/lost",name:"webauthn.lost",component:()=>se(()=>import("./RequestReset-031c3de6.js"),["./RequestReset-031c3de6.js","./Form-d325991a.js"],import.meta.url),meta:{middlewares:[Tn,Ve],showAbout:!0}},{path:"/webauthn/recover",name:"webauthn.recover",component:()=>se(()=>import("./Recover-35ac48f1.js"),["./Recover-35ac48f1.js","./Form-d325991a.js"],import.meta.url),meta:{middlewares:[Tn,Ve],showAbout:!0}},{path:"/about",name:"about",component:()=>se(()=>import("./About-8ae24971.js"),["./About-8ae24971.js","./systemService-fd2a8274.js"],import.meta.url),meta:{showAbout:!0,watchedByKicker:!0}},{path:"/error",name:"genericError",component:()=>se(()=>import("./Error-6fa6dad0.js"),[],import.meta.url),meta:{middlewares:[hg],watchedByKicker:!0}},{path:"/404",name:"404",component:()=>se(()=>import("./Error-6fa6dad0.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>se(()=>import("./Error-6fa6dad0.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0}]});Wn.beforeEach((e,t,n)=>{const r=e.meta.middlewares,s=ft(),a=Lf(),i=Pf(),o=Nt(),u={to:e,from:t,next:n,nextMiddleware:{},stores:{user:s,twofaccounts:a,appSettings:i,notify:o}};if(!r)return n();r[0]({...u,nextMiddleware:rf(u,r,1)})});Wn.afterEach((e,t)=>{e.meta.title=Ze("titles."+e.name),document.title=e.meta.title});function Wl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function B(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);nr.set(s)),r}static accessor(t){const r=(this[$l]=this[$l]={accessors:{}}).accessors,s=this.prototype;function a(i){const o=or(i);r[o]||(H2(s,i),r[o]=!0)}return k.isArray(t)?t.forEach(a):a(t),this}}ua.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);k.freezeMethods(ua.prototype);k.freezeMethods(ua);const Mt=ua;function Pa(e,t){const n=this||so,r=t||n,s=Mt.from(r.headers);let a=r.data;return k.forEach(e,function(o){a=o.call(n,a,s.normalize(),t?t.status:void 0)}),s.normalize(),a}function kf(e){return!!(e&&e.__CANCEL__)}function Ur(e,t,n){ce.call(this,e??"canceled",ce.ERR_CANCELED,t,n),this.name="CanceledError"}k.inherits(Ur,ce,{__CANCEL__:!0});function D2(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new ce("Request failed with status code "+n.status,[ce.ERR_BAD_REQUEST,ce.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}const z2=xt.isStandardBrowserEnv?function(){return{write:function(n,r,s,a,i,o){const l=[];l.push(n+"="+encodeURIComponent(r)),k.isNumber(s)&&l.push("expires="+new Date(s).toGMTString()),k.isString(a)&&l.push("path="+a),k.isString(i)&&l.push("domain="+i),o===!0&&l.push("secure"),document.cookie=l.join("; ")},read:function(n){const r=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return r?decodeURIComponent(r[3]):null},remove:function(n){this.write(n,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}();function B2(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function j2(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}function Af(e,t){return e&&!B2(t)?j2(e,t):t}const V2=xt.isStandardBrowserEnv?function(){const t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");let r;function s(a){let i=a;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=s(window.location.href),function(i){const o=k.isString(i)?s(i):i;return o.protocol===r.protocol&&o.host===r.host}}():function(){return function(){return!0}}();function U2(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function K2(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,a=0,i;return t=t!==void 0?t:1e3,function(l){const c=Date.now(),u=r[a];i||(i=c),n[s]=l,r[s]=c;let f=a,d=0;for(;f!==s;)d+=n[f++],f=f%e;if(s=(s+1)%e,s===a&&(a=(a+1)%e),c-i{const a=s.loaded,i=s.lengthComputable?s.total:void 0,o=a-n,l=r(o),c=a<=i;n=a;const u={loaded:a,total:i,progress:i?a/i:void 0,bytes:o,rate:l||void 0,estimated:l&&i&&c?(i-a)/l:void 0,event:s};u[t?"download":"upload"]=!0,e(u)}}const W2=typeof XMLHttpRequest<"u",q2=W2&&function(e){return new Promise(function(n,r){let s=e.data;const a=Mt.from(e.headers).normalize(),i=e.responseType;let o;function l(){e.cancelToken&&e.cancelToken.unsubscribe(o),e.signal&&e.signal.removeEventListener("abort",o)}k.isFormData(s)&&(xt.isStandardBrowserEnv||xt.isStandardBrowserWebWorkerEnv?a.setContentType(!1):a.setContentType("multipart/form-data;",!1));let c=new XMLHttpRequest;if(e.auth){const m=e.auth.username||"",g=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";a.set("Authorization","Basic "+btoa(m+":"+g))}const u=Af(e.baseURL,e.url);c.open(e.method.toUpperCase(),_f(u,e.params,e.paramsSerializer),!0),c.timeout=e.timeout;function f(){if(!c)return;const m=Mt.from("getAllResponseHeaders"in c&&c.getAllResponseHeaders()),v={data:!i||i==="text"||i==="json"?c.responseText:c.response,status:c.status,statusText:c.statusText,headers:m,config:e,request:c};D2(function(b){n(b),l()},function(b){r(b),l()},v),c=null}if("onloadend"in c?c.onloadend=f:c.onreadystatechange=function(){!c||c.readyState!==4||c.status===0&&!(c.responseURL&&c.responseURL.indexOf("file:")===0)||setTimeout(f)},c.onabort=function(){c&&(r(new ce("Request aborted",ce.ECONNABORTED,e,c)),c=null)},c.onerror=function(){r(new ce("Network Error",ce.ERR_NETWORK,e,c)),c=null},c.ontimeout=function(){let g=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const v=e.transitional||Ef;e.timeoutErrorMessage&&(g=e.timeoutErrorMessage),r(new ce(g,v.clarifyTimeoutError?ce.ETIMEDOUT:ce.ECONNABORTED,e,c)),c=null},xt.isStandardBrowserEnv){const m=(e.withCredentials||V2(u))&&e.xsrfCookieName&&z2.read(e.xsrfCookieName);m&&a.set(e.xsrfHeaderName,m)}s===void 0&&a.setContentType(null),"setRequestHeader"in c&&k.forEach(a.toJSON(),function(g,v){c.setRequestHeader(v,g)}),k.isUndefined(e.withCredentials)||(c.withCredentials=!!e.withCredentials),i&&i!=="json"&&(c.responseType=e.responseType),typeof e.onDownloadProgress=="function"&&c.addEventListener("progress",Fl(e.onDownloadProgress,!0)),typeof e.onUploadProgress=="function"&&c.upload&&c.upload.addEventListener("progress",Fl(e.onUploadProgress)),(e.cancelToken||e.signal)&&(o=m=>{c&&(r(!m||m.type?new Ur(null,e,c):m),c.abort(),c=null)},e.cancelToken&&e.cancelToken.subscribe(o),e.signal&&(e.signal.aborted?o():e.signal.addEventListener("abort",o)));const d=U2(u);if(d&&xt.protocols.indexOf(d)===-1){r(new ce("Unsupported protocol "+d+":",ce.ERR_BAD_REQUEST,e));return}c.send(s||null)})},Es={http:y2,xhr:q2};k.forEach(Es,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Y2={getAdapter:e=>{e=k.isArray(e)?e:[e];const{length:t}=e;let n,r;for(let s=0;se instanceof Mt?e.toJSON():e;function Kn(e,t){t=t||{};const n={};function r(c,u,f){return k.isPlainObject(c)&&k.isPlainObject(u)?k.merge.call({caseless:f},c,u):k.isPlainObject(u)?k.merge({},u):k.isArray(u)?u.slice():u}function s(c,u,f){if(k.isUndefined(u)){if(!k.isUndefined(c))return r(void 0,c,f)}else return r(c,u,f)}function a(c,u){if(!k.isUndefined(u))return r(void 0,u)}function i(c,u){if(k.isUndefined(u)){if(!k.isUndefined(c))return r(void 0,c)}else return r(void 0,u)}function o(c,u,f){if(f in t)return r(c,u);if(f in e)return r(void 0,c)}const l={url:a,method:a,data:a,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:o,headers:(c,u)=>s(Dl(c),Dl(u),!0)};return k.forEach(Object.keys(Object.assign({},e,t)),function(u){const f=l[u]||s,d=f(e[u],t[u],u);k.isUndefined(d)&&f!==o||(n[u]=d)}),n}const Sf="1.4.0",ao={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{ao[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const zl={};ao.transitional=function(t,n,r){function s(a,i){return"[Axios v"+Sf+"] Transitional option '"+a+"'"+i+(r?". "+r:"")}return(a,i,o)=>{if(t===!1)throw new ce(s(i," has been removed"+(n?" in "+n:"")),ce.ERR_DEPRECATED);return n&&!zl[i]&&(zl[i]=!0,console.warn(s(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(a,i,o):!0}};function G2(e,t,n){if(typeof e!="object")throw new ce("options must be an object",ce.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const a=r[s],i=t[a];if(i){const o=e[a],l=o===void 0||i(o,a,e);if(l!==!0)throw new ce("option "+a+" must be "+l,ce.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new ce("Unknown option "+a,ce.ERR_BAD_OPTION)}}const ii={assertOptions:G2,validators:ao},Kt=ii.validators;class $s{constructor(t){this.defaults=t,this.interceptors={request:new Il,response:new Il}}request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Kn(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:a}=n;r!==void 0&&ii.assertOptions(r,{silentJSONParsing:Kt.transitional(Kt.boolean),forcedJSONParsing:Kt.transitional(Kt.boolean),clarifyTimeoutError:Kt.transitional(Kt.boolean)},!1),s!=null&&(k.isFunction(s)?n.paramsSerializer={serialize:s}:ii.assertOptions(s,{encode:Kt.function,serialize:Kt.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i;i=a&&k.merge(a.common,a[n.method]),i&&k.forEach(["delete","get","head","post","put","patch","common"],g=>{delete a[g]}),n.headers=Mt.concat(i,a);const o=[];let l=!0;this.interceptors.request.forEach(function(v){typeof v.runWhen=="function"&&v.runWhen(n)===!1||(l=l&&v.synchronous,o.unshift(v.fulfilled,v.rejected))});const c=[];this.interceptors.response.forEach(function(v){c.push(v.fulfilled,v.rejected)});let u,f=0,d;if(!l){const g=[Hl.bind(this),void 0];for(g.unshift.apply(g,o),g.push.apply(g,c),d=g.length,u=Promise.resolve(n);f{if(!r._listeners)return;let a=r._listeners.length;for(;a-- >0;)r._listeners[a](s);r._listeners=null}),this.promise.then=s=>{let a;const i=new Promise(o=>{r.subscribe(o),a=o}).then(s);return i.cancel=function(){r.unsubscribe(a)},i},t(function(a,i,o){r.reason||(r.reason=new Ur(a,i,o),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}static source(){let t;return{token:new io(function(s){t=s}),cancel:t}}}const J2=io;function X2(e){return function(n){return e.apply(null,n)}}function Q2(e){return k.isObject(e)&&e.isAxiosError===!0}const oi={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(oi).forEach(([e,t])=>{oi[t]=e});const Z2=oi;function Cf(e){const t=new xs(e),n=cf(xs.prototype.request,t);return k.extend(n,xs.prototype,t,{allOwnKeys:!0}),k.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return Cf(Kn(e,s))},n}const Ie=Cf(so);Ie.Axios=xs;Ie.CanceledError=Ur;Ie.CancelToken=J2;Ie.isCancel=kf;Ie.VERSION=Sf;Ie.toFormData=la;Ie.AxiosError=ce;Ie.Cancel=Ie.CanceledError;Ie.all=function(t){return Promise.all(t)};Ie.spread=X2;Ie.isAxiosError=Q2;Ie.mergeConfig=Kn;Ie.AxiosHeaders=Mt;Ie.formToJSON=e=>xf(k.isHTMLForm(e)?new FormData(e):e);Ie.HttpStatusCode=Z2;Ie.default=Ie;const Bl=Ie;function eg(e,t){switch(e.replace("_","-")){case"af":case"af-ZA":case"bn":case"bn-BD":case"bn-IN":case"bg":case"bg-BG":case"ca":case"ca-AD":case"ca-ES":case"ca-FR":case"ca-IT":case"da":case"da-DK":case"de":case"de-AT":case"de-BE":case"de-CH":case"de-DE":case"de-LI":case"de-LU":case"el":case"el-CY":case"el-GR":case"en":case"en-AG":case"en-AU":case"en-BW":case"en-CA":case"en-DK":case"en-GB":case"en-HK":case"en-IE":case"en-IN":case"en-NG":case"en-NZ":case"en-PH":case"en-SG":case"en-US":case"en-ZA":case"en-ZM":case"en-ZW":case"eo":case"eo-US":case"es":case"es-AR":case"es-BO":case"es-CL":case"es-CO":case"es-CR":case"es-CU":case"es-DO":case"es-EC":case"es-ES":case"es-GT":case"es-HN":case"es-MX":case"es-NI":case"es-PA":case"es-PE":case"es-PR":case"es-PY":case"es-SV":case"es-US":case"es-UY":case"es-VE":case"et":case"et-EE":case"eu":case"eu-ES":case"eu-FR":case"fa":case"fa-IR":case"fi":case"fi-FI":case"fo":case"fo-FO":case"fur":case"fur-IT":case"fy":case"fy-DE":case"fy-NL":case"gl":case"gl-ES":case"gu":case"gu-IN":case"ha":case"ha-NG":case"he":case"he-IL":case"hu":case"hu-HU":case"is":case"is-IS":case"it":case"it-CH":case"it-IT":case"ku":case"ku-TR":case"lb":case"lb-LU":case"ml":case"ml-IN":case"mn":case"mn-MN":case"mr":case"mr-IN":case"nah":case"nb":case"nb-NO":case"ne":case"ne-NP":case"nl":case"nl-AW":case"nl-BE":case"nl-NL":case"nn":case"nn-NO":case"no":case"om":case"om-ET":case"om-KE":case"or":case"or-IN":case"pa":case"pa-IN":case"pa-PK":case"pap":case"pap-AN":case"pap-AW":case"pap-CW":case"ps":case"ps-AF":case"pt":case"pt-BR":case"pt-PT":case"so":case"so-DJ":case"so-ET":case"so-KE":case"so-SO":case"sq":case"sq-AL":case"sq-MK":case"sv":case"sv-FI":case"sv-SE":case"sw":case"sw-KE":case"sw-TZ":case"ta":case"ta-IN":case"ta-LK":case"te":case"te-IN":case"tk":case"tk-TM":case"ur":case"ur-IN":case"ur-PK":case"zu":case"zu-ZA":return t===1?0:1;case"am":case"am-ET":case"bh":case"fil":case"fil-PH":case"fr":case"fr-BE":case"fr-CA":case"fr-CH":case"fr-FR":case"fr-LU":case"gun":case"hi":case"hi-IN":case"hy":case"hy-AM":case"ln":case"ln-CD":case"mg":case"mg-MG":case"nso":case"nso-ZA":case"ti":case"ti-ER":case"ti-ET":case"wa":case"wa-BE":case"xbr":return t===0||t===1?0:1;case"be":case"be-BY":case"bs":case"bs-BA":case"hr":case"hr-HR":case"ru":case"ru-RU":case"ru-UA":case"sr":case"sr-ME":case"sr-RS":case"uk":case"uk-UA":return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"cs":case"cs-CZ":case"sk":case"sk-SK":return t==1?0:t>=2&&t<=4?1:2;case"ga":case"ga-IE":return t==1?0:t==2?1:2;case"lt":case"lt-LT":return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2;case"sl":case"sl-SI":return t%100==1?0:t%100==2?1:t%100==3||t%100==4?2:3;case"mk":case"mk-MK":return t%10==1?0:1;case"mt":case"mt-MT":return t==1?0:t==0||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3;case"lv":case"lv-LV":return t==0?0:t%10==1&&t%100!=11?1:2;case"pl":case"pl-PL":return t==1?0:t%10>=2&&t%10<=4&&(t%100<12||t%100>14)?1:2;case"cy":case"cy-GB":return t==1?0:t==2?1:t==8||t==11?2:3;case"ro":case"ro-RO":return t==1?0:t==0||t%100>0&&t%100<20?1:2;case"ar":case"ar-AE":case"ar-BH":case"ar-DZ":case"ar-EG":case"ar-IN":case"ar-IQ":case"ar-JO":case"ar-KW":case"ar-LB":case"ar-LY":case"ar-MA":case"ar-OM":case"ar-QA":case"ar-SA":case"ar-SD":case"ar-SS":case"ar-SY":case"ar-TN":case"ar-YE":return t==0?0:t==1?1:t==2?2:t%100>=3&&t%100<=10?3:t%100>=11&&t%100<=99?4:5;default:return 0}}function tg(e,t,n){let r=e.split("|");const s=ng(r,t);if(s!==null)return s.trim();r=sg(r);const a=eg(n,t);return r.length===1||!r[a]?r[0]:r[a]}function ng(e,t){for(const n of e){let r=rg(n,t);if(r!==null)return r}return null}function rg(e,t){const n=e.match(/^[\{\[]([^\[\]\{\}]*)[\}\]](.*)/s)||[];if(n.length!==3)return null;const r=n[1],s=n[2];if(r.includes(",")){let[a,i]=r.split(",");if(i==="*"&&t>=parseFloat(a))return s;if(a==="*"&&t<=parseFloat(i))return s;if(t>=parseFloat(a)&&t<=parseFloat(i))return s}return parseFloat(r)===t?s:null}function sg(e){return e.map(t=>t.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}const Ma=(e,t,n={})=>{try{return e(t)}catch{return n}},Na=async(e,t={})=>{try{return(await e).default||t}catch{return t}};function jl(e){return e||ag()||ig()}function ag(){var e;return!!(typeof process<"u"&&((e=process.env)!=null&&e.LARAVEL_VUE_I18N_HAS_PHP))}function ig(){return typeof{VITE_LARAVEL_VUE_I18N_HAS_PHP:"true",BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}<"u"}const Pn=typeof window>"u";let Cn=null;const Vl={lang:!Pn&&document.documentElement.lang?document.documentElement.lang.replace("-","_"):null,fallbackLang:"en",fallbackMissingTranslations:!1,resolve:e=>new Promise(t=>t({default:{}})),onLoad:e=>{}},og={shared:!0};function Ul(e,t=!1){return Qe.getSharedInstance().loadLanguageAsync(e,t)}function Ze(e,t={}){return Qe.getSharedInstance().trans(e,t)}function u3(){return Qe.getSharedInstance().getActiveLanguage()}const lg={install(e,t={}){t={...og,...t};const n=t.shared?Qe.getSharedInstance(t,!0):new Qe(t);e.config.globalProperties.$t=(r,s)=>n.trans(r,s),e.config.globalProperties.$tChoice=(r,s,a)=>n.transChoice(r,s,a),e.provide("i18n",n)}};class Qe{constructor(t={}){this.activeMessages=Rt({}),this.fallbackMessages=Rt({}),this.reset=()=>{Qe.loaded=[],this.options=Vl;for(const[n]of Object.entries(this.activeMessages))this.activeMessages[n]=null;this===Cn&&(Cn=null)},this.options={...Vl,...t},this.options.fallbackMissingTranslations?this.loadFallbackLanguage():this.load()}setOptions(t={},n=!1){return this.options={...this.options,...t},n&&this.load(),this}load(){this[Pn?"loadLanguage":"loadLanguageAsync"](this.getActiveLanguage())}loadFallbackLanguage(){if(!Pn){this.resolveLangAsync(this.options.resolve,this.options.fallbackLang).then(({default:n})=>{this.applyFallbackLanguage(this.options.fallbackLang,n),this.load()});return}const{default:t}=this.resolveLang(this.options.resolve,this.options.fallbackLang);this.applyFallbackLanguage(this.options.fallbackLang,t),this.loadLanguage(this.getActiveLanguage())}loadLanguage(t,n=!1){const r=Qe.loaded.find(a=>a.lang===t);if(r){this.setLanguage(r);return}const{default:s}=this.resolveLang(this.options.resolve,t);this.applyLanguage(t,s,n,this.loadLanguage)}loadLanguageAsync(t,n=!1,r=!1){var a;r||((a=this.abortController)==null||a.abort(),this.abortController=new AbortController);const s=Qe.loaded.find(i=>i.lang===t);return s?Promise.resolve(this.setLanguage(s)):new Promise((i,o)=>{this.abortController.signal.addEventListener("abort",()=>{i()}),this.resolveLangAsync(this.options.resolve,t).then(({default:l})=>{i(this.applyLanguage(t,l,n,this.loadLanguageAsync))})})}resolveLang(t,n,r={}){return Object.keys(r).length||(r=Ma(t,n)),jl(Pn)?{default:{...r,...Ma(t,`php_${n}`)}}:{default:r}}async resolveLangAsync(t,n){let r=Ma(t,n);if(!(r instanceof Promise))return this.resolveLang(t,n,r);if(jl(Pn)){const s=await Na(t(`php_${n}`)),a=await Na(r);return new Promise(i=>i({default:{...s,...a}}))}return new Promise(async s=>s({default:await Na(r)}))}applyLanguage(t,n,r=!1,s){if(Object.keys(n).length<1){if(/[-_]/g.test(t)&&!r)return s.call(this,t.replace(/[-_]/g,i=>i==="-"?"_":"-"),!0,!0);if(t!==this.options.fallbackLang)return s.call(this,this.options.fallbackLang,!1,!0)}const a={lang:t,messages:n};return Qe.loaded.push(a),this.setLanguage(a)}applyFallbackLanguage(t,n){for(const[r,s]of Object.entries(n))this.fallbackMessages[r]=s;Qe.loaded.push({lang:this.options.fallbackLang,messages:n})}setLanguage({lang:t,messages:n}){Pn||document.documentElement.setAttribute("lang",t.replace("_","-")),this.options.lang=t;for(const[r,s]of Object.entries(n))this.activeMessages[r]=s;for(const[r,s]of Object.entries(this.fallbackMessages))(!this.activeMessages[r]||this.activeMessages[r]===r)&&(this.activeMessages[r]=s);for(const[r]of Object.entries(this.activeMessages))!n[r]&&!this.fallbackMessages[r]&&(this.activeMessages[r]=null);return this.options.onLoad(t),t}getActiveLanguage(){return this.options.lang||this.options.fallbackLang}isLoaded(t){return t??(t=this.getActiveLanguage()),Qe.loaded.some(n=>n.lang.replace(/[-_]/g,"-")===t.replace(/[-_]/g,"-"))}trans(t,n={}){return this.wTrans(t,n).value}wTrans(t,n={}){return Di(()=>{this.activeMessages[t]=this.findTranslation(t)||this.findTranslation(t.replace(/\//g,"."))||t}),te(()=>this.makeReplacements(this.activeMessages[t],n))}transChoice(t,n,r={}){return this.wTransChoice(t,n,r).value}wTransChoice(t,n,r={}){const s=this.wTrans(t,r);return r.count=n.toString(),te(()=>this.makeReplacements(tg(s.value,n,this.options.lang),r))}findTranslation(t){if(this.activeMessages[t])return this.activeMessages[t];if(this.activeMessages[`${t}.0`]!==void 0){const r=Object.entries(this.activeMessages).filter(s=>s[0].startsWith(`${t}.`)).map(s=>s[1]);return Rt(r)}return this.activeMessages[t]}makeReplacements(t,n){const r=s=>s.charAt(0).toUpperCase()+s.slice(1);return Object.entries(n||[]).sort((s,a)=>s[0].length>=a[0].length?-1:1).forEach(([s,a])=>{a=a.toString(),t=t.replace(new RegExp(`:${s}`,"g"),a).replace(new RegExp(`:${s.toUpperCase()}`,"g"),a.toUpperCase()).replace(new RegExp(`:${r(s)}`,"g"),r(a))}),t}static getSharedInstance(t,n=!1){return(Cn==null?void 0:Cn.setOptions(t,n))||(Cn=new Qe(t))}}Qe.loaded=[];const{notify:On}=Nu(),Nt=jr({id:"notify",state:()=>({err:null,message:null,originalMessage:null,debug:null}),getters:{},actions:{parseError(e){this.$reset,this.err=e,e.response?e.response.status===407?(this.message=Ze("errors.auth_proxy_failed"),this.originalMessage=Ze("errors.auth_proxy_failed_legend")):e.response.status===403?(this.message=Ze("errors.unauthorized"),this.originalMessage=Ze("errors.unauthorized_legend")):e.response.data&&(this.message=e.response.data.message,this.originalMessage=e.response.data.originalMessage??null,this.debug=e.response.data.debug??null):(this.message=e.message,this.debug=e.stack??null)},notFound(e){Wn.push({name:"404"})},error(e){this.parseError(e),Wn.push({name:"genericError"})},info(e){On({type:"is-info",...e})},success(e){On({type:"is-success",...e})},warn(e){On({type:"is-warning",...e})},alert(e){On({type:"is-danger",...e})},action(e){On({type:"is-dark",...e})},clear(){On({clean:!0})}}}),fa=(e="api")=>{let t;const n=window.appConfig.subdirectory;e==="web"?t=n+"/":t=n+"/api/v1";const r=Bl.create({baseURL:t,headers:{"X-Requested-With":"XMLHttpRequest","Content-Type":"application/json"},withCredentials:!0});return r.interceptors.response.use(s=>s,async function(s){const a=s.config;return s.response.status===419&&!a._retried?(a._retried=!0,await Bl.get("/refresh-csrf"),r.request(a)):s.response&&[407].includes(s.response.status)?(Nt().error(s),new Promise(()=>{})):s.config.hasOwnProperty("returnError")&&s.config.returnError===!0||(s.response&&[401].includes(s.response.status)&&ft().tossOut(),s.response.status===422)?Promise.reject(s):s.response.status===404?(Nt().notFound(),new Promise(()=>{})):(s.response.status===418&&ft().logout({kicked:!0}),Nt().error(s),new Promise(()=>{}))}),r},cg=fa("web"),ug=fa("api"),Of={logout(e={}){return cg.get("/user/logout",{...e})},async getCurrentUser(e={}){return ug.get("/user",{...e})}},je=fa("api"),rs={getAll(e=!1,t={}){return je.get("/twofaccounts"+(e?"?withOtp=1":""),{...t})},getByIds(e,t=!1,n={}){return je.get("/twofaccounts?ids="+e+(t?"&withOtp=1":""),{...n})},get(e,t={}){return je.get("/twofaccounts/"+e,{...t})},preview(e,t={}){return je.post("/twofaccounts/preview",{uri:e},{...t})},getLogo(e,t={}){return je.post("/icons/default",{service:e},{...t})},deleteIcon(e,t={}){return je.delete("/icons/"+e,{...t})},getOtpById(e,t={}){return je.get("/twofaccounts/"+e+"/otp",{...t})},getOtpByUri(e,t={}){return je.post("/twofaccounts/otp",{uri:e},{...t})},getOtpByParams(e,t={}){return je.post("/twofaccounts/otp",e,{...t})},withdraw(e,t={}){return je.patch("/twofaccounts/withdraw?ids="+e.join(),{...t})},saveOrder(e,t={}){return je.post("/twofaccounts/reorder",{orderedIds:e},{...t})},batchDelete(e,t={}){return je.delete("/twofaccounts?ids="+e,{...t})},export(e,t={}){return je.get("/twofaccounts/export?ids="+e,{...t})},getQrcode(e,t={}){return je.get("/twofaccounts/"+e+"/qrcode",{...t})},migrate(e,t={}){return je.post("/twofaccounts/migration",{payload:e,withSecret:!0},{...t})},count(e={}){return je.get("/twofaccounts/count",{...e})}};var lr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Tf={exports:{}};(function(e,t){(function(n,r){r()})(lr,function(){function n(c,u){return typeof u>"u"?u={autoBom:!1}:typeof u!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),u={autoBom:!u}),u.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(c.type)?new Blob(["\uFEFF",c],{type:c.type}):c}function r(c,u,f){var d=new XMLHttpRequest;d.open("GET",c),d.responseType="blob",d.onload=function(){l(d.response,u,f)},d.onerror=function(){console.error("could not download file")},d.send()}function s(c){var u=new XMLHttpRequest;u.open("HEAD",c,!1);try{u.send()}catch{}return 200<=u.status&&299>=u.status}function a(c){try{c.dispatchEvent(new MouseEvent("click"))}catch{var u=document.createEvent("MouseEvents");u.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),c.dispatchEvent(u)}}var i=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof lr=="object"&&lr.global===lr?lr:void 0,o=i.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),l=i.saveAs||(typeof window!="object"||window!==i?function(){}:"download"in HTMLAnchorElement.prototype&&!o?function(c,u,f){var d=i.URL||i.webkitURL,m=document.createElement("a");u=u||c.name||"download",m.download=u,m.rel="noopener",typeof c=="string"?(m.href=c,m.origin===location.origin?a(m):s(m.href)?r(c,u,f):a(m,m.target="_blank")):(m.href=d.createObjectURL(c),setTimeout(function(){d.revokeObjectURL(m.href)},4e4),setTimeout(function(){a(m)},0))}:"msSaveOrOpenBlob"in navigator?function(c,u,f){if(u=u||c.name||"download",typeof c!="string")navigator.msSaveOrOpenBlob(n(c,f),u);else if(s(c))r(c,u,f);else{var d=document.createElement("a");d.href=c,d.target="_blank",setTimeout(function(){a(d)})}}:function(c,u,f,d){if(d=d||open("","_blank"),d&&(d.document.title=d.document.body.innerText="downloading..."),typeof c=="string")return r(c,u,f);var m=c.type==="application/octet-stream",g=/constructor/i.test(i.HTMLElement)||i.safari,v=/CriOS\/[\d]+/.test(navigator.userAgent);if((v||m&&g||o)&&typeof FileReader<"u"){var S=new FileReader;S.onloadend=function(){var P=S.result;P=v?P:P.replace(/^data:[^;]*;/,"data:attachment/file;"),d?d.location.href=P:location=P,d=null},S.readAsDataURL(c)}else{var b=i.URL||i.webkitURL,_=b.createObjectURL(c);d?d.location=_:location.href=_,d=null,setTimeout(function(){b.revokeObjectURL(_)},4e4)}});i.saveAs=l.saveAs=l,e.exports=l})})(Tf);var fg=Tf.exports;const Lf=jr({id:"twofaccounts",state:()=>({items:[],selectedIds:[],filter:"",backendWasNewer:!1,fetchedOn:null}),getters:{filtered(e){const t=ft();return e.items.filter(n=>parseInt(t.preferences.activeGroup)>0?((n.service?n.service.toLowerCase().includes(e.filter.toLowerCase()):!1)||n.account.toLowerCase().includes(e.filter.toLowerCase()))&&n.group_id==parseInt(t.preferences.activeGroup):(n.service?n.service.toLowerCase().includes(e.filter.toLowerCase()):!1)||n.account.toLowerCase().includes(e.filter.toLowerCase()))},periods(e){return e.items.filter(t=>t.otp_type=="totp").map(function(t){var n;return{period:t.period,generated_at:(n=t.otp)==null?void 0:n.generated_at}}).filter((t,n,r)=>n===r.findIndex(s=>s.period===t.period)).sort()},orderedIds(e){return e.items.map(t=>t.id)},isEmpty(e){return e.items.length==0},count(e){return e.items.length},filteredCount(e){return e.filtered.length},selectedCount(e){return e.selectedIds.length},hasNoneSelected(e){return e.selectedIds.length==0}},actions:{async fetch(e=!1){Math.floor(Date.now()-this.fetchedOn)>2e3||e?(this.fetchedOn=Date.now(),await rs.getAll(!ft().preferences.getOtpOnRequest).then(r=>{e&&(this.backendWasNewer=r.data.length!==this.items.length,this.items.forEach(s=>{let a=r.data.find(i=>i.id===s.id);if(a==null){this.backendWasNewer=!0;return}for(const i in s)if(i!=="otp"&&s[i]!=a[i]){this.backendWasNewer=!0;return}})),this.items=r.data})):this.backendWasNewer=!1},select(e){for(var t=0;te.id)},selectNone(){this.selectedIds=[]},async deleteSelected(){confirm(Ze("twofaccounts.confirm.delete"))&&this.selectedIds.length>0&&await rs.batchDelete(this.selectedIds.join()).then(e=>{let t=this.items;this.selectedIds.forEach(function(n){t=t.filter(r=>r.id!==n)}),this.items=t,this.selectNone(),Nt().success({text:Ze("twofaccounts.accounts_deleted")})})},export(){rs.export(this.selectedIds.join(),{responseType:"blob"}).then(e=>{var t=new Blob([e.data],{type:"application/json;charset=utf-8"});fg.saveAs.saveAs(t,"2fauth_export.json")})},saveOrder(){rs.saveOrder(this.orderedIds)},sortAsc(){this.items.sort((e,t)=>e.service>t.service?1:-1),this.saveOrder()},sortDesc(){this.items.sort((e,t)=>e.servicet.period==e).map(t=>t.id)}}}),ss=fa("api"),Kl={getAll(){return ss.get("groups")},get(e,t={}){return ss.get("/groups/"+e,{...t})},assign(e,t,n={}){return ss.post("/groups/"+t+"/assign",{ids:e},{...n})},delete(e,t={}){return ss.delete("/groups/"+e,{...t})}},dg=jr({id:"groups",state:()=>({items:[],fetchedOn:null}),getters:{current(e){const t=e.items.find(n=>n.id===parseInt(ft().preferences.activeGroup));return t?t.name:Ze("commons.all")},withoutTheAllGroup(e){return e.items.filter(t=>t.id>0)},theAllGroup(e){return e.items.find(t=>t.id==0)},isEmpty(){return this.withoutTheAllGroup.length==0},count(){return this.withoutTheAllGroup.length}},actions:{addOrEdit(e){const t=this.items.findIndex(n=>n.id===parseInt(e.id));t>-1?(this.items[t]=e,Nt().success({text:Ze("groups.group_name_saved")})):(this.items.push(e),Nt().success({text:Ze("groups.group_successfully_created")}))},async fetch(){Math.floor(Date.now()-this.fetchedOn)>2e3&&(this.fetchedOn=Date.now(),await Kl.getAll().then(n=>{this.items=n.data}))},async delete(e){const t=ft();confirm(Ze("groups.confirm.delete"))&&await Kl.delete(e).then(n=>{this.items=this.items.filter(r=>r.id!==e),Nt().success({text:Ze("groups.group_successfully_deleted")}),parseInt(t.preferences.activeGroup)===e&&(t.preferences.activeGroup=0)})}}}),ft=jr({id:"user",state:()=>({name:void 0,email:void 0,oauth_provider:void 0,preferences:window.defaultPreferences,isAdmin:!1}),getters:{isAuthenticated(){return this.name!=null}},actions:{async loginAs(e){this.$patch(e),await this.initDataStores(),this.applyUserPrefs()},async initDataStores(){const e=Lf(),t=dg();this.isAuthenticated?(await e.fetch(),t.fetch()):(e.$reset(),t.$reset())},logout(e={}){const{kicked:t}=e,n=Nt();if(this.$2fauth.config.proxyAuth)if(this.$2fauth.config.proxyLogoutUrl)location.assign(this.$2fauth.config.proxyLogoutUrl);else return!1;else Of.logout({returnError:!0}).then(()=>{t&&(n.clear(),n.warn({text:Ze("auth.autolock_triggered_punchline"),duration:-1})),this.tossOut()}).catch(r=>{r.response.status!==401?n.error(r):this.tossOut()})},tossOut(){this.$reset(),this.initDataStores(),this.applyUserPrefs(),Wn.push({name:"login"})},applyTheme(){const e=tf({attribute:"data-theme"});e.value=this.preferences.theme=="system"?"auto":this.preferences.theme},applyLanguage(){const{isSupported:e,language:t}=nf();Ul(e?this.preferences.lang=="browser"?t.value.slice(0,2):this.preferences.lang:"en")},applyUserPrefs(){this.applyTheme(),this.applyLanguage()}}}),pg=Object.freeze(Object.defineProperty({__proto__:null,useUserStore:ft},Symbol.toStringTag,{value:"Module"})),Pf=jr({id:"appSettings",state:()=>({...window.appSettings}),actions:{}});async function qe({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r;s.isAuthenticated||await Of.getCurrentUser({returnError:!0}).then(async a=>{const i=a.data;await s.loginAs({name:i.name,email:i.email,oauth_provider:i.oauth_provider,preferences:i.preferences,isAdmin:i.is_admin})}).catch(a=>{}),s.isAuthenticated?n():t({name:"login"})}async function mg({to:e,next:t,nextMiddleware:n,stores:r}){const{twofaccounts:s}=r;s.isEmpty?await s.fetch().then(()=>{s.isEmpty?t({name:"start"}):n()}):n()}function hg({to:e,next:t,nextMiddleware:n,stores:r}){const{notify:s}=r;s.err==null&&!e.query.err?t({name:"accounts"}):n()}async function gg({to:e,next:t,nextMiddleware:n,stores:r}){const{appSettings:s}=r;s.disableRegistration?t({name:"notFound"}):n()}function Ve({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r,a=ef(s.$2fauth.prefix+"returnTo","accounts");a.value=e.name,n()}async function Tn({to:e,next:t,nextMiddleware:n,stores:r}){const{appSettings:s}=r;s.$2fauth.config.proxyAuth?t({name:"accounts"}):n()}const Wn=d1({history:Th(window.appConfig.subdirectory?window.appConfig.subdirectory:"/"),routes:[{path:"/start",name:"start",component:()=>se(()=>import("./Start-b183fdeb.js"),["./Start-b183fdeb.js","./Form-893a9a1a.js","./bus-2e7bf732.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0}},{path:"/capture",name:"capture",component:()=>se(()=>import("./Capture-8f76bfc6.js"),["./Capture-8f76bfc6.js","./Form-893a9a1a.js","./Spinner-8bfb7257.js","./Spinner-2c227a70.css","./QrContentDisplay-1d6d5b3f.js","./bus-2e7bf732.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0}},{path:"/accounts",name:"accounts",component:()=>se(()=>import("./Accounts-8a72d9f5.js"),["./Accounts-8a72d9f5.js","./OtpDisplay-1a3c1737.js","./Spinner-8bfb7257.js","./Spinner-2c227a70.css","./userService-f0891f7f.js","./bus-2e7bf732.js"],import.meta.url),meta:{middlewares:[qe,mg,Ve],watchedByKicker:!0},alias:"/"},{path:"/account/create",name:"createAccount",component:()=>se(()=>import("./CreateUpdate-030b151d.js"),["./CreateUpdate-030b151d.js","./Form-893a9a1a.js","./OtpDisplay-1a3c1737.js","./Spinner-8bfb7257.js","./Spinner-2c227a70.css","./QrContentDisplay-1d6d5b3f.js","./bus-2e7bf732.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0}},{path:"/account/import",name:"importAccounts",component:()=>se(()=>import("./Import-a9bc7b8c.js"),["./Import-a9bc7b8c.js","./Form-893a9a1a.js","./OtpDisplay-1a3c1737.js","./Spinner-8bfb7257.js","./Spinner-2c227a70.css","./bus-2e7bf732.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0}},{path:"/account/:twofaccountId/edit",name:"editAccount",component:()=>se(()=>import("./CreateUpdate-030b151d.js"),["./CreateUpdate-030b151d.js","./Form-893a9a1a.js","./OtpDisplay-1a3c1737.js","./Spinner-8bfb7257.js","./Spinner-2c227a70.css","./QrContentDisplay-1d6d5b3f.js","./bus-2e7bf732.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0},props:!0},{path:"/account/:twofaccountId/qrcode",name:"showQRcode",component:()=>se(()=>import("./QRcode-628d39fd.js"),["./QRcode-628d39fd.js","./Spinner-8bfb7257.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0}},{path:"/groups",name:"groups",component:()=>se(()=>import("./Groups-6bce16d4.js"),["./Groups-6bce16d4.js","./bus-2e7bf732.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0},props:!0},{path:"/group/create",name:"createGroup",component:()=>se(()=>import("./CreateUpdate-f9adf383.js"),["./CreateUpdate-f9adf383.js","./Form-893a9a1a.js","./bus-2e7bf732.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0}},{path:"/group/:groupId/edit",name:"editGroup",component:()=>se(()=>import("./CreateUpdate-f9adf383.js"),["./CreateUpdate-f9adf383.js","./Form-893a9a1a.js","./bus-2e7bf732.js"],import.meta.url),meta:{middlewares:[qe,Ve],watchedByKicker:!0},props:!0},{path:"/settings/options",name:"settings.options",component:()=>se(()=>import("./Options-3d99ca9e.js"),["./Options-3d99ca9e.js","./SettingTabs-e95cff9d.js","./userService-f0891f7f.js","./systemService-c3f13e84.js"],import.meta.url),meta:{middlewares:[qe],watchedByKicker:!0,showAbout:!0}},{path:"/settings/account",name:"settings.account",component:()=>se(()=>import("./Account-40908236.js"),["./Account-40908236.js","./Form-893a9a1a.js","./SettingTabs-e95cff9d.js"],import.meta.url),meta:{middlewares:[qe],watchedByKicker:!0,showAbout:!0}},{path:"/settings/oauth",name:"settings.oauth.tokens",component:()=>se(()=>import("./OAuth-4e28fb5f.js"),["./OAuth-4e28fb5f.js","./Form-893a9a1a.js","./userService-f0891f7f.js","./SettingTabs-e95cff9d.js","./Spinner-8bfb7257.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[qe],watchedByKicker:!0,showAbout:!0,props:!0}},{path:"/settings/webauthn/:credentialId/edit",name:"settings.webauthn.editCredential",component:()=>se(()=>import("./Edit-92d4ec4b.js"),["./Edit-92d4ec4b.js","./Form-893a9a1a.js"],import.meta.url),meta:{middlewares:[qe],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/settings/webauthn",name:"settings.webauthn.devices",component:()=>se(()=>import("./WebAuthn-28d5bd1b.js"),["./WebAuthn-28d5bd1b.js","./SettingTabs-e95cff9d.js","./userService-f0891f7f.js","./webauthnService-ad1f52a0.js","./Spinner-8bfb7257.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[qe],watchedByKicker:!0,showAbout:!0}},{path:"/login",name:"login",component:()=>se(()=>import("./Login-815161cc.js"),["./Login-815161cc.js","./Form-893a9a1a.js","./webauthnService-ad1f52a0.js"],import.meta.url),meta:{middlewares:[Tn,Ve],showAbout:!0}},{path:"/register",name:"register",component:()=>se(()=>import("./Register-a013046c.js"),["./Register-a013046c.js","./Form-893a9a1a.js","./webauthnService-ad1f52a0.js"],import.meta.url),meta:{middlewares:[Tn,gg,Ve],showAbout:!0}},{path:"/password/request",name:"password.request",component:()=>se(()=>import("./RequestReset-dd2e2272.js"),["./RequestReset-dd2e2272.js","./Form-893a9a1a.js"],import.meta.url),meta:{middlewares:[Tn,Ve],showAbout:!0}},{path:"/user/password/reset",name:"password.reset",component:()=>se(()=>import("./Reset-895e136f.js"),["./Reset-895e136f.js","./Form-893a9a1a.js"],import.meta.url),meta:{middlewares:[Tn,Ve],showAbout:!0}},{path:"/webauthn/lost",name:"webauthn.lost",component:()=>se(()=>import("./RequestReset-dd2e2272.js"),["./RequestReset-dd2e2272.js","./Form-893a9a1a.js"],import.meta.url),meta:{middlewares:[Tn,Ve],showAbout:!0}},{path:"/webauthn/recover",name:"webauthn.recover",component:()=>se(()=>import("./Recover-9aa60c2c.js"),["./Recover-9aa60c2c.js","./Form-893a9a1a.js"],import.meta.url),meta:{middlewares:[Tn,Ve],showAbout:!0}},{path:"/about",name:"about",component:()=>se(()=>import("./About-0c758706.js"),["./About-0c758706.js","./systemService-c3f13e84.js"],import.meta.url),meta:{showAbout:!0,watchedByKicker:!0}},{path:"/error",name:"genericError",component:()=>se(()=>import("./Error-c8fed33f.js"),[],import.meta.url),meta:{middlewares:[hg],watchedByKicker:!0}},{path:"/404",name:"404",component:()=>se(()=>import("./Error-c8fed33f.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>se(()=>import("./Error-c8fed33f.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0}]});Wn.beforeEach((e,t,n)=>{const r=e.meta.middlewares,s=ft(),a=Lf(),i=Pf(),o=Nt(),u={to:e,from:t,next:n,nextMiddleware:{},stores:{user:s,twofaccounts:a,appSettings:i,notify:o}};if(!r)return n();r[0]({...u,nextMiddleware:rf(u,r,1)})});Wn.afterEach((e,t)=>{e.meta.title=Ze("titles."+e.name),document.title=e.meta.title});function Wl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function B(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n-1;s--){var a=n[s],i=(a.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(i)>-1&&(r=a)}return xe.head.insertBefore(t,r),e}}var Bg="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Fr(){for(var e=12,t="";e-- >0;)t+=Bg[Math.random()*62|0];return t}function nr(e){for(var t=[],n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function po(e){return e.classList?nr(e.classList):(e.getAttribute("class")||"").split(" ").filter(function(t){return t})}function Vf(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function jg(e){return Object.keys(e||{}).reduce(function(t,n){return t+"".concat(n,'="').concat(Vf(e[n]),'" ')},"").trim()}function da(e){return Object.keys(e||{}).reduce(function(t,n){return t+"".concat(n,": ").concat(e[n].trim(),";")},"")}function mo(e){return e.size!==kt.size||e.x!==kt.x||e.y!==kt.y||e.rotate!==kt.rotate||e.flipX||e.flipY}function Vg(e){var t=e.transform,n=e.containerWidth,r=e.iconWidth,s={transform:"translate(".concat(n/2," 256)")},a="translate(".concat(t.x*32,", ").concat(t.y*32,") "),i="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),o="rotate(".concat(t.rotate," 0 0)"),l={transform:"".concat(a," ").concat(i," ").concat(o)},c={transform:"translate(".concat(r/2*-1," -256)")};return{outer:s,inner:l,path:c}}function Ug(e){var t=e.transform,n=e.width,r=n===void 0?ci:n,s=e.height,a=s===void 0?ci:s,i=e.startCentered,o=i===void 0?!1:i,l="";return o&&$f?l+="translate(".concat(t.x/Wt-r/2,"em, ").concat(t.y/Wt-a/2,"em) "):o?l+="translate(calc(-50% + ".concat(t.x/Wt,"em), calc(-50% + ").concat(t.y/Wt,"em)) "):l+="translate(".concat(t.x/Wt,"em, ").concat(t.y/Wt,"em) "),l+="scale(".concat(t.size/Wt*(t.flipX?-1:1),", ").concat(t.size/Wt*(t.flipY?-1:1),") "),l+="rotate(".concat(t.rotate,"deg) "),l}var Kg=`:root, :host { --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid"; @@ -768,4 +768,4 @@ svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa { color: var(--fa-inverse, #fff); }`;function Uf(){var e=Ff,t=Hf,n=K.cssPrefix,r=K.replacementClass,s=Kg;if(n!==e||r!==t){var a=new RegExp("\\.".concat(e,"\\-"),"g"),i=new RegExp("\\--".concat(e,"\\-"),"g"),o=new RegExp("\\.".concat(t),"g");s=s.replace(a,".".concat(n,"-")).replace(i,"--".concat(n,"-")).replace(o,".".concat(r))}return s}var Zl=!1;function Ia(){K.autoAddCss&&!Zl&&(zg(Uf()),Zl=!0)}var Wg={mixout:function(){return{dom:{css:Uf,insertCss:Ia}}},hooks:function(){return{beforeDOMElementCreation:function(){Ia()},beforeI2svg:function(){Ia()}}}},Ft=nn||{};Ft[$t]||(Ft[$t]={});Ft[$t].styles||(Ft[$t].styles={});Ft[$t].hooks||(Ft[$t].hooks={});Ft[$t].shims||(Ft[$t].shims=[]);var gt=Ft[$t],Kf=[],qg=function e(){xe.removeEventListener("DOMContentLoaded",e),Hs=1,Kf.map(function(t){return t()})},Hs=!1;zt&&(Hs=(xe.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(xe.readyState),Hs||xe.addEventListener("DOMContentLoaded",qg));function Yg(e){zt&&(Hs?setTimeout(e,0):Kf.push(e))}function qr(e){var t=e.tag,n=e.attributes,r=n===void 0?{}:n,s=e.children,a=s===void 0?[]:s;return typeof e=="string"?Vf(e):"<".concat(t," ").concat(jg(r),">").concat(a.map(qr).join(""),"")}function ec(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}var Gg=function(t,n){return function(r,s,a,i){return t.call(n,r,s,a,i)}},$a=function(t,n,r,s){var a=Object.keys(t),i=a.length,o=s!==void 0?Gg(n,s):n,l,c,u;for(r===void 0?(l=1,u=t[a[0]]):(l=0,u=r);l=55296&&s<=56319&&n=55296&&r<=56319&&n>t+1&&(s=e.charCodeAt(t+1),s>=56320&&s<=57343)?(r-55296)*1024+s-56320+65536:r}function tc(e){return Object.keys(e).reduce(function(t,n){var r=e[n],s=!!r.icon;return s?t[r.iconName]=r.icon:t[n]=r,t},{})}function di(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,s=r===void 0?!1:r,a=tc(t);typeof gt.hooks.addPack=="function"&&!s?gt.hooks.addPack(e,tc(t)):gt.styles[e]=B(B({},gt.styles[e]||{}),a),e==="fas"&&di("fa",t)}var fs,ds,ps,Rn=gt.styles,Qg=gt.shims,Zg=(fs={},$e(fs,Ee,Object.values(Ir[Ee])),$e(fs,Ce,Object.values(Ir[Ce])),fs),ho=null,Wf={},qf={},Yf={},Gf={},Jf={},e0=(ds={},$e(ds,Ee,Object.keys(Mr[Ee])),$e(ds,Ce,Object.keys(Mr[Ce])),ds);function t0(e){return~Ig.indexOf(e)}function n0(e,t){var n=t.split("-"),r=n[0],s=n.slice(1).join("-");return r===e&&s!==""&&!t0(s)?s:null}var Xf=function(){var t=function(a){return $a(Rn,function(i,o,l){return i[l]=$a(o,a,{}),i},{})};Wf=t(function(s,a,i){if(a[3]&&(s[a[3]]=i),a[2]){var o=a[2].filter(function(l){return typeof l=="number"});o.forEach(function(l){s[l.toString(16)]=i})}return s}),qf=t(function(s,a,i){if(s[i]=i,a[2]){var o=a[2].filter(function(l){return typeof l=="string"});o.forEach(function(l){s[l]=i})}return s}),Jf=t(function(s,a,i){var o=a[2];return s[i]=i,o.forEach(function(l){s[l]=i}),s});var n="far"in Rn||K.autoFetchSvg,r=$a(Qg,function(s,a){var i=a[0],o=a[1],l=a[2];return o==="far"&&!n&&(o="fas"),typeof i=="string"&&(s.names[i]={prefix:o,iconName:l}),typeof i=="number"&&(s.unicodes[i.toString(16)]={prefix:o,iconName:l}),s},{names:{},unicodes:{}});Yf=r.names,Gf=r.unicodes,ho=pa(K.styleDefault,{family:K.familyDefault})};Dg(function(e){ho=pa(e.styleDefault,{family:K.familyDefault})});Xf();function go(e,t){return(Wf[e]||{})[t]}function r0(e,t){return(qf[e]||{})[t]}function hn(e,t){return(Jf[e]||{})[t]}function Qf(e){return Yf[e]||{prefix:null,iconName:null}}function s0(e){var t=Gf[e],n=go("fas",e);return t||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function rn(){return ho}var vo=function(){return{prefix:null,iconName:null,rest:[]}};function pa(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.family,r=n===void 0?Ee:n,s=Mr[r][e],a=Nr[r][e]||Nr[r][s],i=e in gt.styles?e:null;return a||i||null}var nc=(ps={},$e(ps,Ee,Object.keys(Ir[Ee])),$e(ps,Ce,Object.keys(Ir[Ce])),ps);function ma(e){var t,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.skipLookups,s=r===void 0?!1:r,a=(t={},$e(t,Ee,"".concat(K.cssPrefix,"-").concat(Ee)),$e(t,Ce,"".concat(K.cssPrefix,"-").concat(Ce)),t),i=null,o=Ee;(e.includes(a[Ee])||e.some(function(c){return nc[Ee].includes(c)}))&&(o=Ee),(e.includes(a[Ce])||e.some(function(c){return nc[Ce].includes(c)}))&&(o=Ce);var l=e.reduce(function(c,u){var f=n0(K.cssPrefix,u);if(Rn[u]?(u=Zg[o].includes(u)?Tg[o][u]:u,i=u,c.prefix=u):e0[o].indexOf(u)>-1?(i=u,c.prefix=pa(u,{family:o})):f?c.iconName=f:u!==K.replacementClass&&u!==a[Ee]&&u!==a[Ce]&&c.rest.push(u),!s&&c.prefix&&c.iconName){var d=i==="fa"?Qf(c.iconName):{},m=hn(c.prefix,c.iconName);d.prefix&&(i=null),c.iconName=d.iconName||m||c.iconName,c.prefix=d.prefix||c.prefix,c.prefix==="far"&&!Rn.far&&Rn.fas&&!K.autoFetchSvg&&(c.prefix="fas")}return c},vo());return(e.includes("fa-brands")||e.includes("fab"))&&(l.prefix="fab"),(e.includes("fa-duotone")||e.includes("fad"))&&(l.prefix="fad"),!l.prefix&&o===Ce&&(Rn.fass||K.autoFetchSvg)&&(l.prefix="fass",l.iconName=hn(l.prefix,l.iconName)||l.iconName),(l.prefix==="fa"||i==="fa")&&(l.prefix=rn()||"fas"),l}var a0=function(){function e(){vg(this,e),this.definitions={}}return yg(e,[{key:"add",value:function(){for(var n=this,r=arguments.length,s=new Array(r),a=0;a0&&u.forEach(function(f){typeof f=="string"&&(n[o][f]=c)}),n[o][l]=c}),n}}]),e}(),rc=[],Mn={},Hn={},i0=Object.keys(Hn);function o0(e,t){var n=t.mixoutsTo;return rc=e,Mn={},Object.keys(Hn).forEach(function(r){i0.indexOf(r)===-1&&delete Hn[r]}),rc.forEach(function(r){var s=r.mixout?r.mixout():{};if(Object.keys(s).forEach(function(i){typeof s[i]=="function"&&(n[i]=s[i]),Fs(s[i])==="object"&&Object.keys(s[i]).forEach(function(o){n[i]||(n[i]={}),n[i][o]=s[i][o]})}),r.hooks){var a=r.hooks();Object.keys(a).forEach(function(i){Mn[i]||(Mn[i]=[]),Mn[i].push(a[i])})}r.provides&&r.provides(Hn)}),n}function pi(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),s=2;s1?t-1:0),r=1;r0&&arguments[0]!==void 0?arguments[0]:{};return zt?(bn("beforeI2svg",t),Ht("pseudoElements2svg",t),Ht("i2svg",t)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.autoReplaceSvgRoot;K.autoReplaceSvg===!1&&(K.autoReplaceSvg=!0),K.observeMutations=!0,Yg(function(){f0({autoReplaceSvgRoot:n}),bn("watch",t)})}},u0={icon:function(t){if(t===null)return null;if(Fs(t)==="object"&&t.prefix&&t.iconName)return{prefix:t.prefix,iconName:hn(t.prefix,t.iconName)||t.iconName};if(Array.isArray(t)&&t.length===2){var n=t[1].indexOf("fa-")===0?t[1].slice(3):t[1],r=pa(t[0]);return{prefix:r,iconName:hn(r,n)||n}}if(typeof t=="string"&&(t.indexOf("".concat(K.cssPrefix,"-"))>-1||t.match(Lg))){var s=ma(t.split(" "),{skipLookups:!0});return{prefix:s.prefix||rn(),iconName:hn(s.prefix,s.iconName)||s.iconName}}if(typeof t=="string"){var a=rn();return{prefix:a,iconName:hn(a,t)||t}}}},at={noAuto:l0,config:K,dom:c0,parse:u0,library:Zf,findIconDefinition:mi,toHtml:qr},f0=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.autoReplaceSvgRoot,r=n===void 0?xe:n;(Object.keys(gt.styles).length>0||K.autoFetchSvg)&&zt&&K.autoReplaceSvg&&at.dom.i2svg({node:r})};function ha(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map(function(r){return qr(r)})}}),Object.defineProperty(e,"node",{get:function(){if(zt){var r=xe.createElement("div");return r.innerHTML=e.html,r.children}}}),e}function d0(e){var t=e.children,n=e.main,r=e.mask,s=e.attributes,a=e.styles,i=e.transform;if(mo(i)&&n.found&&!r.found){var o=n.width,l=n.height,c={x:o/l/2,y:.5};s.style=da(B(B({},a),{},{"transform-origin":"".concat(c.x+i.x/16,"em ").concat(c.y+i.y/16,"em")}))}return[{tag:"svg",attributes:s,children:t}]}function p0(e){var t=e.prefix,n=e.iconName,r=e.children,s=e.attributes,a=e.symbol,i=a===!0?"".concat(t,"-").concat(K.cssPrefix,"-").concat(n):a;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:B(B({},s),{},{id:i}),children:r}]}]}function yo(e){var t=e.icons,n=t.main,r=t.mask,s=e.prefix,a=e.iconName,i=e.transform,o=e.symbol,l=e.title,c=e.maskId,u=e.titleId,f=e.extra,d=e.watchable,m=d===void 0?!1:d,g=r.found?r:n,v=g.width,S=g.height,b=s==="fak",_=[K.replacementClass,a?"".concat(K.cssPrefix,"-").concat(a):""].filter(function(O){return f.classes.indexOf(O)===-1}).filter(function(O){return O!==""||!!O}).concat(f.classes).join(" "),P={children:[],attributes:B(B({},f.attributes),{},{"data-prefix":s,"data-icon":a,class:_,role:f.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(v," ").concat(S)})},x=b&&!~f.classes.indexOf("fa-fw")?{width:"".concat(v/S*16*.0625,"em")}:{};m&&(P.attributes[yn]=""),l&&(P.children.push({tag:"title",attributes:{id:P.attributes["aria-labelledby"]||"title-".concat(u||Fr())},children:[l]}),delete P.attributes.title);var F=B(B({},P),{},{prefix:s,iconName:a,main:n,mask:r,maskId:c,transform:i,symbol:o,styles:B(B({},x),f.styles)}),Z=r.found&&n.found?Ht("generateAbstractMask",F)||{children:[],attributes:{}}:Ht("generateAbstractIcon",F)||{children:[],attributes:{}},q=Z.children,w=Z.attributes;return F.children=q,F.attributes=w,o?p0(F):d0(F)}function sc(e){var t=e.content,n=e.width,r=e.height,s=e.transform,a=e.title,i=e.extra,o=e.watchable,l=o===void 0?!1:o,c=B(B(B({},i.attributes),a?{title:a}:{}),{},{class:i.classes.join(" ")});l&&(c[yn]="");var u=B({},i.styles);mo(s)&&(u.transform=Ug({transform:s,startCentered:!0,width:n,height:r}),u["-webkit-transform"]=u.transform);var f=da(u);f.length>0&&(c.style=f);var d=[];return d.push({tag:"span",attributes:c,children:[t]}),a&&d.push({tag:"span",attributes:{class:"sr-only"},children:[a]}),d}function m0(e){var t=e.content,n=e.title,r=e.extra,s=B(B(B({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),a=da(r.styles);a.length>0&&(s.style=a);var i=[];return i.push({tag:"span",attributes:s,children:[t]}),n&&i.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),i}var Fa=gt.styles;function hi(e){var t=e[0],n=e[1],r=e.slice(4),s=oo(r,1),a=s[0],i=null;return Array.isArray(a)?i={tag:"g",attributes:{class:"".concat(K.cssPrefix,"-").concat(mn.GROUP)},children:[{tag:"path",attributes:{class:"".concat(K.cssPrefix,"-").concat(mn.SECONDARY),fill:"currentColor",d:a[0]}},{tag:"path",attributes:{class:"".concat(K.cssPrefix,"-").concat(mn.PRIMARY),fill:"currentColor",d:a[1]}}]}:i={tag:"path",attributes:{fill:"currentColor",d:a}},{found:!0,width:t,height:n,icon:i}}var h0={found:!1,width:512,height:512};function g0(e,t){!Df&&!K.showMissingIcons&&e&&console.error('Icon with name "'.concat(e,'" and prefix "').concat(t,'" is missing.'))}function gi(e,t){var n=t;return t==="fa"&&K.styleDefault!==null&&(t=rn()),new Promise(function(r,s){if(Ht("missingIconAbstract"),n==="fa"){var a=Qf(e)||{};e=a.iconName||e,t=a.prefix||t}if(e&&t&&Fa[t]&&Fa[t][e]){var i=Fa[t][e];return r(hi(i))}g0(e,t),r(B(B({},h0),{},{icon:K.showMissingIcons&&e?Ht("missingIconAbstract")||{}:{}}))})}var ac=function(){},vi=K.measurePerformance&&as&&as.mark&&as.measure?as:{mark:ac,measure:ac},fr='FA "6.4.2"',v0=function(t){return vi.mark("".concat(fr," ").concat(t," begins")),function(){return ed(t)}},ed=function(t){vi.mark("".concat(fr," ").concat(t," ends")),vi.measure("".concat(fr," ").concat(t),"".concat(fr," ").concat(t," begins"),"".concat(fr," ").concat(t," ends"))},bo={begin:v0,end:ed},ks=function(){};function ic(e){var t=e.getAttribute?e.getAttribute(yn):null;return typeof t=="string"}function y0(e){var t=e.getAttribute?e.getAttribute(co):null,n=e.getAttribute?e.getAttribute(uo):null;return t&&n}function b0(e){return e&&e.classList&&e.classList.contains&&e.classList.contains(K.replacementClass)}function w0(){if(K.autoReplaceSvg===!0)return As.replace;var e=As[K.autoReplaceSvg];return e||As.replace}function _0(e){return xe.createElementNS("http://www.w3.org/2000/svg",e)}function E0(e){return xe.createElement(e)}function td(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.ceFn,r=n===void 0?e.tag==="svg"?_0:E0:n;if(typeof e=="string")return xe.createTextNode(e);var s=r(e.tag);Object.keys(e.attributes||[]).forEach(function(i){s.setAttribute(i,e.attributes[i])});var a=e.children||[];return a.forEach(function(i){s.appendChild(td(i,{ceFn:r}))}),s}function x0(e){var t=" ".concat(e.outerHTML," ");return t="".concat(t,"Font Awesome fontawesome.com "),t}var As={replace:function(t){var n=t[0];if(n.parentNode)if(t[1].forEach(function(s){n.parentNode.insertBefore(td(s),n)}),n.getAttribute(yn)===null&&K.keepOriginalSource){var r=xe.createComment(x0(n));n.parentNode.replaceChild(r,n)}else n.remove()},nest:function(t){var n=t[0],r=t[1];if(~po(n).indexOf(K.replacementClass))return As.replace(t);var s=new RegExp("".concat(K.cssPrefix,"-.*"));if(delete r[0].attributes.id,r[0].attributes.class){var a=r[0].attributes.class.split(" ").reduce(function(o,l){return l===K.replacementClass||l.match(s)?o.toSvg.push(l):o.toNode.push(l),o},{toNode:[],toSvg:[]});r[0].attributes.class=a.toSvg.join(" "),a.toNode.length===0?n.removeAttribute("class"):n.setAttribute("class",a.toNode.join(" "))}var i=r.map(function(o){return qr(o)}).join(` `);n.setAttribute(yn,""),n.innerHTML=i}};function oc(e){e()}function nd(e,t){var n=typeof t=="function"?t:ks;if(e.length===0)n();else{var r=oc;K.mutateApproach===Cg&&(r=nn.requestAnimationFrame||oc),r(function(){var s=w0(),a=bo.begin("mutate");e.map(s),a(),n()})}}var wo=!1;function rd(){wo=!0}function yi(){wo=!1}var Ds=null;function lc(e){if(Xl&&K.observeMutations){var t=e.treeCallback,n=t===void 0?ks:t,r=e.nodeCallback,s=r===void 0?ks:r,a=e.pseudoElementsCallback,i=a===void 0?ks:a,o=e.observeMutationsRoot,l=o===void 0?xe:o;Ds=new Xl(function(c){if(!wo){var u=rn();nr(c).forEach(function(f){if(f.type==="childList"&&f.addedNodes.length>0&&!ic(f.addedNodes[0])&&(K.searchPseudoElements&&i(f.target),n(f.target)),f.type==="attributes"&&f.target.parentNode&&K.searchPseudoElements&&i(f.target.parentNode),f.type==="attributes"&&ic(f.target)&&~Ng.indexOf(f.attributeName))if(f.attributeName==="class"&&y0(f.target)){var d=ma(po(f.target)),m=d.prefix,g=d.iconName;f.target.setAttribute(co,m||u),g&&f.target.setAttribute(uo,g)}else b0(f.target)&&s(f.target)})}}),zt&&Ds.observe(l,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function k0(){Ds&&Ds.disconnect()}function A0(e){var t=e.getAttribute("style"),n=[];return t&&(n=t.split(";").reduce(function(r,s){var a=s.split(":"),i=a[0],o=a.slice(1);return i&&o.length>0&&(r[i]=o.join(":").trim()),r},{})),n}function S0(e){var t=e.getAttribute("data-prefix"),n=e.getAttribute("data-icon"),r=e.innerText!==void 0?e.innerText.trim():"",s=ma(po(e));return s.prefix||(s.prefix=rn()),t&&n&&(s.prefix=t,s.iconName=n),s.iconName&&s.prefix||(s.prefix&&r.length>0&&(s.iconName=r0(s.prefix,e.innerText)||go(s.prefix,fi(e.innerText))),!s.iconName&&K.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(s.iconName=e.firstChild.data)),s}function C0(e){var t=nr(e.attributes).reduce(function(s,a){return s.name!=="class"&&s.name!=="style"&&(s[a.name]=a.value),s},{}),n=e.getAttribute("title"),r=e.getAttribute("data-fa-title-id");return K.autoA11y&&(n?t["aria-labelledby"]="".concat(K.replacementClass,"-title-").concat(r||Fr()):(t["aria-hidden"]="true",t.focusable="false")),t}function O0(){return{iconName:null,title:null,titleId:null,prefix:null,transform:kt,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function cc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},n=S0(e),r=n.iconName,s=n.prefix,a=n.rest,i=C0(e),o=pi("parseNodeAttributes",{},e),l=t.styleParser?A0(e):[];return B({iconName:r,title:e.getAttribute("title"),titleId:e.getAttribute("data-fa-title-id"),prefix:s,transform:kt,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:a,styles:l,attributes:i}},o)}var T0=gt.styles;function sd(e){var t=K.autoReplaceSvg==="nest"?cc(e,{styleParser:!1}):cc(e);return~t.extra.classes.indexOf(zf)?Ht("generateLayersText",e,t):Ht("generateSvgReplacementMutation",e,t)}var sn=new Set;fo.map(function(e){sn.add("fa-".concat(e))});Object.keys(Mr[Ee]).map(sn.add.bind(sn));Object.keys(Mr[Ce]).map(sn.add.bind(sn));sn=Kr(sn);function uc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!zt)return Promise.resolve();var n=xe.documentElement.classList,r=function(f){return n.add("".concat(Ql,"-").concat(f))},s=function(f){return n.remove("".concat(Ql,"-").concat(f))},a=K.autoFetchSvg?sn:fo.map(function(u){return"fa-".concat(u)}).concat(Object.keys(T0));a.includes("fa")||a.push("fa");var i=[".".concat(zf,":not([").concat(yn,"])")].concat(a.map(function(u){return".".concat(u,":not([").concat(yn,"])")})).join(", ");if(i.length===0)return Promise.resolve();var o=[];try{o=nr(e.querySelectorAll(i))}catch{}if(o.length>0)r("pending"),s("complete");else return Promise.resolve();var l=bo.begin("onTree"),c=o.reduce(function(u,f){try{var d=sd(f);d&&u.push(d)}catch(m){Df||m.name==="MissingIcon"&&console.error(m)}return u},[]);return new Promise(function(u,f){Promise.all(c).then(function(d){nd(d,function(){r("active"),r("complete"),s("pending"),typeof t=="function"&&t(),l(),u()})}).catch(function(d){l(),f(d)})})}function L0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;sd(e).then(function(n){n&&nd([n],t)})}function P0(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(t||{}).icon?t:mi(t||{}),s=n.mask;return s&&(s=(s||{}).icon?s:mi(s||{})),e(r,B(B({},n),{},{mask:s}))}}var R0=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.transform,s=r===void 0?kt:r,a=n.symbol,i=a===void 0?!1:a,o=n.mask,l=o===void 0?null:o,c=n.maskId,u=c===void 0?null:c,f=n.title,d=f===void 0?null:f,m=n.titleId,g=m===void 0?null:m,v=n.classes,S=v===void 0?[]:v,b=n.attributes,_=b===void 0?{}:b,P=n.styles,x=P===void 0?{}:P;if(t){var F=t.prefix,Z=t.iconName,q=t.icon;return ha(B({type:"icon"},t),function(){return bn("beforeDOMElementCreation",{iconDefinition:t,params:n}),K.autoA11y&&(d?_["aria-labelledby"]="".concat(K.replacementClass,"-title-").concat(g||Fr()):(_["aria-hidden"]="true",_.focusable="false")),yo({icons:{main:hi(q),mask:l?hi(l.icon):{found:!1,width:null,height:null,icon:{}}},prefix:F,iconName:Z,transform:B(B({},kt),s),symbol:i,title:d,maskId:u,titleId:g,extra:{attributes:_,styles:x,classes:S}})})}},M0={mixout:function(){return{icon:P0(R0)}},hooks:function(){return{mutationObserverCallbacks:function(n){return n.treeCallback=uc,n.nodeCallback=L0,n}}},provides:function(t){t.i2svg=function(n){var r=n.node,s=r===void 0?xe:r,a=n.callback,i=a===void 0?function(){}:a;return uc(s,i)},t.generateSvgReplacementMutation=function(n,r){var s=r.iconName,a=r.title,i=r.titleId,o=r.prefix,l=r.transform,c=r.symbol,u=r.mask,f=r.maskId,d=r.extra;return new Promise(function(m,g){Promise.all([gi(s,o),u.iconName?gi(u.iconName,u.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(function(v){var S=oo(v,2),b=S[0],_=S[1];m([n,yo({icons:{main:b,mask:_},prefix:o,iconName:s,transform:l,symbol:c,maskId:f,title:a,titleId:i,extra:d,watchable:!0})])}).catch(g)})},t.generateAbstractIcon=function(n){var r=n.children,s=n.attributes,a=n.main,i=n.transform,o=n.styles,l=da(o);l.length>0&&(s.style=l);var c;return mo(i)&&(c=Ht("generateAbstractTransformGrouping",{main:a,transform:i,containerWidth:a.width,iconWidth:a.width})),r.push(c||a.icon),{children:r,attributes:s}}}},N0={mixout:function(){return{layer:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=r.classes,a=s===void 0?[]:s;return ha({type:"layer"},function(){bn("beforeDOMElementCreation",{assembler:n,params:r});var i=[];return n(function(o){Array.isArray(o)?o.map(function(l){i=i.concat(l.abstract)}):i=i.concat(o.abstract)}),[{tag:"span",attributes:{class:["".concat(K.cssPrefix,"-layers")].concat(Kr(a)).join(" ")},children:i}]})}}}},I0={mixout:function(){return{counter:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=r.title,a=s===void 0?null:s,i=r.classes,o=i===void 0?[]:i,l=r.attributes,c=l===void 0?{}:l,u=r.styles,f=u===void 0?{}:u;return ha({type:"counter",content:n},function(){return bn("beforeDOMElementCreation",{content:n,params:r}),m0({content:n.toString(),title:a,extra:{attributes:c,styles:f,classes:["".concat(K.cssPrefix,"-layers-counter")].concat(Kr(o))}})})}}}},$0={mixout:function(){return{text:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=r.transform,a=s===void 0?kt:s,i=r.title,o=i===void 0?null:i,l=r.classes,c=l===void 0?[]:l,u=r.attributes,f=u===void 0?{}:u,d=r.styles,m=d===void 0?{}:d;return ha({type:"text",content:n},function(){return bn("beforeDOMElementCreation",{content:n,params:r}),sc({content:n,transform:B(B({},kt),a),title:o,extra:{attributes:f,styles:m,classes:["".concat(K.cssPrefix,"-layers-text")].concat(Kr(c))}})})}}},provides:function(t){t.generateLayersText=function(n,r){var s=r.title,a=r.transform,i=r.extra,o=null,l=null;if($f){var c=parseInt(getComputedStyle(n).fontSize,10),u=n.getBoundingClientRect();o=u.width/c,l=u.height/c}return K.autoA11y&&!s&&(i.attributes["aria-hidden"]="true"),Promise.resolve([n,sc({content:n.innerHTML,width:o,height:l,transform:a,title:s,extra:i,watchable:!0})])}}},F0=new RegExp('"',"ug"),fc=[1105920,1112319];function H0(e){var t=e.replace(F0,""),n=Xg(t,0),r=n>=fc[0]&&n<=fc[1],s=t.length===2?t[0]===t[1]:!1;return{value:fi(s?t[0]:t),isSecondary:r||s}}function dc(e,t){var n="".concat(Sg).concat(t.replace(":","-"));return new Promise(function(r,s){if(e.getAttribute(n)!==null)return r();var a=nr(e.children),i=a.filter(function(q){return q.getAttribute(ui)===t})[0],o=nn.getComputedStyle(e,t),l=o.getPropertyValue("font-family").match(Pg),c=o.getPropertyValue("font-weight"),u=o.getPropertyValue("content");if(i&&!l)return e.removeChild(i),r();if(l&&u!=="none"&&u!==""){var f=o.getPropertyValue("content"),d=~["Sharp"].indexOf(l[2])?Ce:Ee,m=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(l[2])?Nr[d][l[2].toLowerCase()]:Rg[d][c],g=H0(f),v=g.value,S=g.isSecondary,b=l[0].startsWith("FontAwesome"),_=go(m,v),P=_;if(b){var x=s0(v);x.iconName&&x.prefix&&(_=x.iconName,m=x.prefix)}if(_&&!S&&(!i||i.getAttribute(co)!==m||i.getAttribute(uo)!==P)){e.setAttribute(n,P),i&&e.removeChild(i);var F=O0(),Z=F.extra;Z.attributes[ui]=t,gi(_,m).then(function(q){var w=yo(B(B({},F),{},{icons:{main:q,mask:vo()},prefix:m,iconName:P,extra:Z,watchable:!0})),O=xe.createElementNS("http://www.w3.org/2000/svg","svg");t==="::before"?e.insertBefore(O,e.firstChild):e.appendChild(O),O.outerHTML=w.map(function(H){return qr(H)}).join(` -`),e.removeAttribute(n),r()}).catch(s)}else r()}else r()})}function D0(e){return Promise.all([dc(e,"::before"),dc(e,"::after")])}function z0(e){return e.parentNode!==document.head&&!~Og.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(ui)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function pc(e){if(zt)return new Promise(function(t,n){var r=nr(e.querySelectorAll("*")).filter(z0).map(D0),s=bo.begin("searchPseudoElements");rd(),Promise.all(r).then(function(){s(),yi(),t()}).catch(function(){s(),yi(),n()})})}var B0={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=pc,n}}},provides:function(t){t.pseudoElements2svg=function(n){var r=n.node,s=r===void 0?xe:r;K.searchPseudoElements&&pc(s)}}},mc=!1,j0={mixout:function(){return{dom:{unwatch:function(){rd(),mc=!0}}}},hooks:function(){return{bootstrap:function(){lc(pi("mutationObserverCallbacks",{}))},noAuto:function(){k0()},watch:function(n){var r=n.observeMutationsRoot;mc?yi():lc(pi("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},hc=function(t){var n={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return t.toLowerCase().split(" ").reduce(function(r,s){var a=s.toLowerCase().split("-"),i=a[0],o=a.slice(1).join("-");if(i&&o==="h")return r.flipX=!0,r;if(i&&o==="v")return r.flipY=!0,r;if(o=parseFloat(o),isNaN(o))return r;switch(i){case"grow":r.size=r.size+o;break;case"shrink":r.size=r.size-o;break;case"left":r.x=r.x-o;break;case"right":r.x=r.x+o;break;case"up":r.y=r.y-o;break;case"down":r.y=r.y+o;break;case"rotate":r.rotate=r.rotate+o;break}return r},n)},V0={mixout:function(){return{parse:{transform:function(n){return hc(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-transform");return s&&(n.transform=hc(s)),n}}},provides:function(t){t.generateAbstractTransformGrouping=function(n){var r=n.main,s=n.transform,a=n.containerWidth,i=n.iconWidth,o={transform:"translate(".concat(a/2," 256)")},l="translate(".concat(s.x*32,", ").concat(s.y*32,") "),c="scale(".concat(s.size/16*(s.flipX?-1:1),", ").concat(s.size/16*(s.flipY?-1:1),") "),u="rotate(".concat(s.rotate," 0 0)"),f={transform:"".concat(l," ").concat(c," ").concat(u)},d={transform:"translate(".concat(i/2*-1," -256)")},m={outer:o,inner:f,path:d};return{tag:"g",attributes:B({},m.outer),children:[{tag:"g",attributes:B({},m.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:B(B({},r.icon.attributes),m.path)}]}]}}}},Ha={x:0,y:0,width:"100%",height:"100%"};function gc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function U0(e){return e.tag==="g"?e.children:[e]}var K0={hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-mask"),a=s?ma(s.split(" ").map(function(i){return i.trim()})):vo();return a.prefix||(a.prefix=rn()),n.mask=a,n.maskId=r.getAttribute("data-fa-mask-id"),n}}},provides:function(t){t.generateAbstractMask=function(n){var r=n.children,s=n.attributes,a=n.main,i=n.mask,o=n.maskId,l=n.transform,c=a.width,u=a.icon,f=i.width,d=i.icon,m=Vg({transform:l,containerWidth:f,iconWidth:c}),g={tag:"rect",attributes:B(B({},Ha),{},{fill:"white"})},v=u.children?{children:u.children.map(gc)}:{},S={tag:"g",attributes:B({},m.inner),children:[gc(B({tag:u.tag,attributes:B(B({},u.attributes),m.path)},v))]},b={tag:"g",attributes:B({},m.outer),children:[S]},_="mask-".concat(o||Fr()),P="clip-".concat(o||Fr()),x={tag:"mask",attributes:B(B({},Ha),{},{id:_,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[g,b]},F={tag:"defs",children:[{tag:"clipPath",attributes:{id:P},children:U0(d)},x]};return r.push(F,{tag:"rect",attributes:B({fill:"currentColor","clip-path":"url(#".concat(P,")"),mask:"url(#".concat(_,")")},Ha)}),{children:r,attributes:s}}}},W0={provides:function(t){var n=!1;nn.matchMedia&&(n=nn.matchMedia("(prefers-reduced-motion: reduce)").matches),t.missingIconAbstract=function(){var r=[],s={fill:"currentColor"},a={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};r.push({tag:"path",attributes:B(B({},s),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var i=B(B({},a),{},{attributeName:"opacity"}),o={tag:"circle",attributes:B(B({},s),{},{cx:"256",cy:"364",r:"28"}),children:[]};return n||o.children.push({tag:"animate",attributes:B(B({},a),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:B(B({},i),{},{values:"1;0;1;1;0;1;"})}),r.push(o),r.push({tag:"path",attributes:B(B({},s),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:n?[]:[{tag:"animate",attributes:B(B({},i),{},{values:"1;0;0;0;0;1;"})}]}),n||r.push({tag:"path",attributes:B(B({},s),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:B(B({},i),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:r}}}},q0={hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-symbol"),a=s===null?!1:s===""?!0:s;return n.symbol=a,n}}}},Y0=[Wg,M0,N0,I0,$0,B0,j0,V0,K0,W0,q0];o0(Y0,{mixoutsTo:at});at.noAuto;at.config;var G0=at.library;at.dom;var bi=at.parse;at.findIconDefinition;at.toHtml;var J0=at.icon;at.layer;at.text;at.counter;function vc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function Pt(e){for(var t=1;t=0)&&(n[s]=e[s]);return n}function Q0(e,t){if(e==null)return{};var n=X0(e,t),r,s;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(s=0;s=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var Z0=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ad={exports:{}};(function(e){(function(t){var n=function(b,_,P){if(!c(_)||f(_)||d(_)||m(_)||l(_))return _;var x,F=0,Z=0;if(u(_))for(x=[],Z=_.length;F1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string")return e;var r=(e.children||[]).map(function(l){return id(l)}),s=Object.keys(e.attributes||{}).reduce(function(l,c){var u=e.attributes[c];switch(c){case"class":l.class=rv(u);break;case"style":l.style=nv(u);break;default:l.attrs[c]=u}return l},{attrs:{},class:{},style:{}});n.class;var a=n.style,i=a===void 0?{}:a,o=Q0(n,tv);return ea(e.tag,Pt(Pt(Pt({},t),{},{class:s.class,style:Pt(Pt({},s.style),i)},s.attrs),o),r)}var od=!1;try{od=!0}catch{}function sv(){if(!od&&console&&typeof console.error=="function"){var e;(e=console).error.apply(e,arguments)}}function Da(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?Je({},e,t):{}}function av(e){var t,n=(t={"fa-spin":e.spin,"fa-pulse":e.pulse,"fa-fw":e.fixedWidth,"fa-border":e.border,"fa-li":e.listItem,"fa-inverse":e.inverse,"fa-flip":e.flip===!0,"fa-flip-horizontal":e.flip==="horizontal"||e.flip==="both","fa-flip-vertical":e.flip==="vertical"||e.flip==="both"},Je(t,"fa-".concat(e.size),e.size!==null),Je(t,"fa-rotate-".concat(e.rotation),e.rotation!==null),Je(t,"fa-pull-".concat(e.pull),e.pull!==null),Je(t,"fa-swap-opacity",e.swapOpacity),Je(t,"fa-bounce",e.bounce),Je(t,"fa-shake",e.shake),Je(t,"fa-beat",e.beat),Je(t,"fa-fade",e.fade),Je(t,"fa-beat-fade",e.beatFade),Je(t,"fa-flash",e.flash),Je(t,"fa-spin-pulse",e.spinPulse),Je(t,"fa-spin-reverse",e.spinReverse),t);return Object.keys(n).map(function(r){return n[r]?r:null}).filter(function(r){return r})}function yc(e){if(e&&zs(e)==="object"&&e.prefix&&e.iconName&&e.icon)return e;if(bi.icon)return bi.icon(e);if(e===null)return null;if(zs(e)==="object"&&e.prefix&&e.iconName)return e;if(Array.isArray(e)&&e.length===2)return{prefix:e[0],iconName:e[1]};if(typeof e=="string")return{prefix:"fas",iconName:e}}var iv=_n({name:"FontAwesomeIcon",props:{border:{type:Boolean,default:!1},fixedWidth:{type:Boolean,default:!1},flip:{type:[Boolean,String],default:!1,validator:function(t){return[!0,!1,"horizontal","vertical","both"].indexOf(t)>-1}},icon:{type:[Object,Array,String],required:!0},mask:{type:[Object,Array,String],default:null},listItem:{type:Boolean,default:!1},pull:{type:String,default:null,validator:function(t){return["right","left"].indexOf(t)>-1}},pulse:{type:Boolean,default:!1},rotation:{type:[String,Number],default:null,validator:function(t){return[90,180,270].indexOf(Number.parseInt(t,10))>-1}},swapOpacity:{type:Boolean,default:!1},size:{type:String,default:null,validator:function(t){return["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"].indexOf(t)>-1}},spin:{type:Boolean,default:!1},transform:{type:[String,Object],default:null},symbol:{type:[Boolean,String],default:!1},title:{type:String,default:null},inverse:{type:Boolean,default:!1},bounce:{type:Boolean,default:!1},shake:{type:Boolean,default:!1},beat:{type:Boolean,default:!1},fade:{type:Boolean,default:!1},beatFade:{type:Boolean,default:!1},flash:{type:Boolean,default:!1},spinPulse:{type:Boolean,default:!1},spinReverse:{type:Boolean,default:!1}},setup:function(t,n){var r=n.attrs,s=te(function(){return yc(t.icon)}),a=te(function(){return Da("classes",av(t))}),i=te(function(){return Da("transform",typeof t.transform=="string"?bi.transform(t.transform):t.transform)}),o=te(function(){return Da("mask",yc(t.mask))}),l=te(function(){return J0(s.value,Pt(Pt(Pt(Pt({},a.value),i.value),o.value),{},{symbol:t.symbol,title:t.title}))});He(l,function(u){if(!u)return sv("Could not find one or more icon(s)",s.value,o.value)},{immediate:!0});var c=te(function(){return l.value?id(l.value.abstract[0],{},r):null});return function(){return c.value}}}),ov={prefix:"fas",iconName:"file-lines",icon:[384,512,[128441,128462,61686,"file-alt","file-text"],"f15c","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z"]},lv={prefix:"fas",iconName:"circle-minus",icon:[512,512,["minus-circle"],"f056","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"]},cv=lv,uv={prefix:"fas",iconName:"circle-notch",icon:[512,512,[],"f1ce","M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z"]},fv={prefix:"fas",iconName:"bars",icon:[448,512,["navicon"],"f0c9","M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"]},dv={prefix:"fas",iconName:"circle-exclamation",icon:[512,512,["exclamation-circle"],"f06a","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"]},pv=dv,mv={prefix:"fas",iconName:"square-check",icon:[448,512,[9745,9989,61510,"check-square"],"f14a","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"]},hv=mv,gv={prefix:"fas",iconName:"list",icon:[512,512,["list-squares"],"f03a","M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z"]},vv={prefix:"fas",iconName:"lock",icon:[448,512,[128274],"f023","M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z"]},yv={prefix:"fas",iconName:"eye-slash",icon:[640,512,[],"f070","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z"]},bv={prefix:"fas",iconName:"globe",icon:[512,512,[127760],"f0ac","M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z"]},wv={prefix:"fas",iconName:"arrow-up-a-z",icon:[576,512,["sort-alpha-up"],"f15e","M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z"]},_v=wv,Ev={prefix:"fas",iconName:"image",icon:[512,512,[],"f03e","M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"]},xv={prefix:"fas",iconName:"circle-check",icon:[512,512,[61533,"check-circle"],"f058","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"]},kv={prefix:"fas",iconName:"layer-group",icon:[576,512,[],"f5fd","M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z"]},Av={prefix:"fas",iconName:"code",icon:[640,512,[],"f121","M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z"]},Sv={prefix:"fas",iconName:"lock-open",icon:[576,512,[],"f3c1","M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z"]},Cv={prefix:"fas",iconName:"eye",icon:[576,512,[128065],"f06e","M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z"]},Ov={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"]},Tv={prefix:"fas",iconName:"up-right-from-square",icon:[512,512,["external-link-alt"],"f35d","M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z"]},Lv=Tv,Pv={prefix:"fas",iconName:"table-cells",icon:[512,512,["th"],"f00a","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 64v64H64V96h88zm56 0h88v64H208V96zm240 0v64H360V96h88zM64 224h88v64H64V224zm232 0v64H208V224h88zm64 0h88v64H360V224zM152 352v64H64V352h88zm56 0h88v64H208V352zm240 0v64H360V352h88z"]},Rv=Pv,Mv={prefix:"fas",iconName:"camera",icon:[512,512,[62258,"camera-alt"],"f030","M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z"]},Nv={prefix:"fas",iconName:"arrow-down-a-z",icon:[576,512,["sort-alpha-asc","sort-alpha-down"],"f15d","M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z"]},Iv=Nv,$v={prefix:"fas",iconName:"caret-down",icon:[320,512,[],"f0d7","M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"]},Fv={prefix:"fas",iconName:"flask",icon:[448,512,[],"f0c3","M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM192 196.8V64h64V196.8c0 23.7 6.6 46.9 19 67.1L309.5 320h-171L173 263.9c12.4-20.2 19-43.4 19-67.1z"]},Hv={prefix:"fas",iconName:"upload",icon:[512,512,[],"f093","M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"]},Dv={prefix:"fas",iconName:"file-arrow-down",icon:[384,512,["file-download"],"f56d","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z"]},zv=Dv,Bv={prefix:"fas",iconName:"sun",icon:[512,512,[9728],"f185","M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z"]},jv={prefix:"fas",iconName:"ellipsis",icon:[448,512,["ellipsis-h"],"f141","M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z"]},Vv=jv,Uv={prefix:"fas",iconName:"magnifying-glass",icon:[512,512,[128269,"search"],"f002","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"]},Kv=Uv,Wv={prefix:"fas",iconName:"square-pen",icon:[448,512,["pen-square","pencil-square"],"f14b","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"]},qv=Wv,Yv={prefix:"fas",iconName:"copy",icon:[448,512,[],"f0c5","M208 0H332.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128h80v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z"]},Gv={prefix:"fas",iconName:"plus",icon:[448,512,[10133,61543,"add"],"2b","M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z"]},Jv={prefix:"fas",iconName:"xmark",icon:[384,512,[128473,10005,10006,10060,215,"close","multiply","remove","times"],"f00d","M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"]},Xv=Jv,Qv={prefix:"fas",iconName:"chevron-right",icon:[320,512,[9002],"f054","M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z"]},Zv={prefix:"fas",iconName:"video-slash",icon:[640,512,[],"f4e2","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9V192 320v5.8l-32-25.1V128c0-35.3-28.7-64-64-64H113.9L38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5V384c0 35.3 28.7 64 64 64H352c23.4 0 43.9-12.6 55-31.3z"]},e4={prefix:"fas",iconName:"spinner",icon:[512,512,[],"f110","M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z"]},t4={prefix:"fas",iconName:"qrcode",icon:[448,512,[],"f029","M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zM64 96v64h64V96H64zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336zm64 16v64h64V352H64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm80 64H320v64h64V96zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V304zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z"]},n4={prefix:"fas",iconName:"moon",icon:[384,512,[127769,9214],"f186","M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z"]},r4={prefix:"fas",iconName:"circle-plus",icon:[512,512,["plus-circle"],"f055","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"]},s4=r4,a4={prefix:"fas",iconName:"desktop",icon:[576,512,[128421,61704,"desktop-alt"],"f390","M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V288H64V64H512z"]},i4={prefix:"fas",iconName:"book",icon:[448,512,[128212],"f02d","M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z"]},o4={prefix:"fas",iconName:"check",icon:[448,512,[10003,10004],"f00c","M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"]},l4={prefix:"fas",iconName:"triangle-exclamation",icon:[512,512,[9888,"exclamation-triangle","warning"],"f071","M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"]},c4={prefix:"fas",iconName:"circle-xmark",icon:[512,512,[61532,"times-circle","xmark-circle"],"f057","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"]},u4=c4,f4={prefix:"far",iconName:"star",icon:[576,512,[11088,61446],"f005","M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.6 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z"]},d4={prefix:"fab",iconName:"github-alt",icon:[480,512,[],"f113","M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"]},p4={prefix:"fab",iconName:"openid",icon:[448,512,[],"f19b","M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z"]};G0.add(Gv,s4,t4,Ev,Ov,o4,hv,Xv,vv,Sv,Kv,Vv,fv,e4,d4,$v,kv,cv,pv,qv,Rv,gv,u4,Hv,bv,i4,Fv,Av,Yv,Iv,_v,Cv,yv,Lv,Mv,zv,Bv,n4,a4,uv,xv,l4,ov,Zv,f4,Qv,p4);const m4=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},h4={},g4={class:"columns is-centered"},v4={class:"form-column column is-two-thirds-tablet is-half-desktop is-half-widescreen is-one-third-fullhd"};function y4(e,t){return z(),X("div",g4,[Q("div",v4,[an(e.$slots,"default")])])}const b4=m4(h4,[["render",y4]]),w4=["innerHTML"],_4=["innerHTML"],E4={__name:"FormWrapper",props:{title:{type:String,default:""},punchline:{type:String,default:""}},setup(e){return(t,n)=>{const r=We("ResponsiveWidthWrapper");return z(),De(r,null,{default:Ge(()=>[e.title?(z(),X("h1",{key:0,class:"title has-text-grey-dark",innerHTML:t.$t(e.title)},null,8,w4)):ge("",!0),e.punchline?(z(),X("div",{key:1,id:"punchline",class:"block",innerHTML:t.$t(e.punchline)},null,8,_4)):ge("",!0),an(t.$slots,"default")]),_:3})}}},x4={class:"main"},k4={key:0,class:"columns is-gapless"},A4={class:"column has-text-centered"},S4={class:"field is-grouped"},C4={key:1,class:"content has-text-centered"},O4={key:2,class:"content has-text-centered"},T4={key:1},L4={key:3,class:"content has-text-centered"},P4={key:0,class:"is-size-6"},R4={class:"has-text-weight-bold"},M4={key:1},N4={key:0,class:"release-flag"},I4={key:0},$4={__name:"Footer",props:{showButtons:!0,internalFooterType:{type:String,default:"navLinks"}},setup(e){const t=Pf(),n=ft(),r=et("2fauth");function s(){confirm(Ze("auth.confirm.logout"))&&n.logout()}return(a,i)=>{const o=We("router-link");return z(),X("footer",x4,[e.showButtons?(z(),X("div",k4,[Q("div",A4,[Q("div",S4,[an(a.$slots,"default")])])])):ge("",!0),e.internalFooterType=="doneButton"?(z(),X("div",C4,[Q("button",{id:"lnkExitEdit",class:"button is-ghost is-like-text",onClick:i[0]||(i[0]=ta(l=>a.$emit("doneButtonClicked",!0),["stop"]))},Ae(a.$t("commons.done")),1)])):e.internalFooterType=="modal"?(z(),X("div",O4,[a.$route.name!="accounts"?(z(),De(o,{key:0,id:"lnkBackToHome",to:{name:"accounts"},class:"has-text-grey"},{default:Ge(()=>[Ke(Ae(a.$t("commons.back_to_home")),1)]),_:1})):(z(),X("span",T4," "))])):(z(),X("div",L4,[a.$route.meta.showAbout===!0?(z(),X("div",P4,[we(o,{id:"lnkAbout",to:{name:"about"},class:"has-text-grey"},{default:Ge(()=>[Ke(" 2FAuth – "),Q("span",R4,"v"+Ae(re(r).version),1)]),_:1})])):(z(),X("div",M4,[we(o,{id:"lnkSettings",to:{name:"settings.options"},class:"has-text-grey"},{default:Ge(()=>[Ke(Ae(a.$t("settings.settings")),1),re(t).latestRelease&&re(t).checkForUpdate?(z(),X("span",N4)):ge("",!0)]),_:1},8,["to"]),!re(r).config.proxyAuth||re(r).config.proxyAuth&&re(r).config.proxyLogoutUrl?(z(),X("span",I4,[Ke(" - "),Q("button",{id:"lnkSignOut",class:"button is-text is-like-text has-text-grey",onClick:s},Ae(a.$t("auth.sign_out")),1)])):ge("",!0)]))]))])}}},F4=["onClick"],H4={class:"modal-content"},D4={class:"section"},z4={class:"columns is-centered"},B4={class:"column is-three-quarters"},j4={class:"modal-slot box has-text-centered is-shadowless"},V4={__name:"Modal",props:{modelValue:Boolean,closable:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,{notify:r}=Nu(),s=te({get(){return n.modelValue},set(i){t("update:modelValue",i)}});function a(i){r({clean:!0}),s.value=!1}return(i,o)=>{const l=We("ButtonBackCloseCancel"),c=We("VueFooter");return z(),X("div",{class:Oe(["modal modal-otp",{"is-active":re(s)}])},[Q("div",{class:"modal-background",onClick:ta(a,["stop"])},null,8,F4),Q("div",H4,[Q("section",D4,[Q("div",z4,[Q("div",B4,[Q("div",j4,[an(i.$slots,"default")])])])])]),n.closable?(z(),De(c,{key:0,showButtons:!0,internalFooterType:"modal"},{default:Ge(()=>[we(l,{action:"close",useLinkTag:!1,onClosed:a})]),_:1})):ge("",!0)],2)}}},U4=["type","disabled"],K4={__name:"Button",props:{color:{type:String,default:"is-link"},nativeType:{type:String,default:"submit"},isLoading:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1}},setup(e){return(t,n)=>(z(),X("button",{type:e.nativeType,disabled:e.isLoading||e.isDisabled,class:Oe({button:!0,[`${e.color}`]:!0,"is-loading":e.isLoading})},[an(t.$slots,"default")],10,U4))}},W4={key:0,class:"control"},q4={key:1,class:"control"},Y4={__name:"ButtonBackCloseCancel",props:{returnTo:{type:Object,default:{name:"accounts"}},action:{type:String,default:"close"},useLinkTag:{type:Boolean,default:!0},isText:{type:Boolean,default:!1},isCapture:{type:Boolean,default:!1}},setup(e){const t=e;m1(),qu();const r="button is-rounded"+(tf().value==="dark"&&!t.isText&&!t.isCapture?" is-dark":"")+(t.isText?" is-text":"")+(t.isCapture?" is-large is-warning":"");return(s,a)=>{const i=We("RouterLink");return e.useLinkTag?(z(),X("p",W4,[e.action=="close"?(z(),De(i,{key:0,id:"btnClose",to:e.returnTo,class:Oe(r),tabindex:"0",role:"button","aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:Ge(()=>[Ke(Ae(s.$t("commons.close")),1)]),_:1},8,["to","aria-label"])):e.action=="back"?(z(),De(i,{key:1,id:"lnkBack",to:e.returnTo,class:Oe(r),"aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:Ge(()=>[Ke(Ae(s.$t("commons.back")),1)]),_:1},8,["to","aria-label"])):e.action=="cancel"?(z(),De(i,{key:2,id:"btnCancel",to:e.returnTo,class:Oe(r)},{default:Ge(()=>[Ke(Ae(s.$t("commons.cancel")),1)]),_:1},8,["to"])):ge("",!0)])):(z(),X("p",q4,[e.action=="close"?(z(),X("button",{key:0,id:"btnClose",class:Oe(r),onClick:a[0]||(a[0]=o=>s.$emit("closed")),type:"button"},Ae(s.$t("commons.close")),1)):ge("",!0),e.action=="cancel"?(z(),X("button",{key:1,id:"btnCancel",class:Oe(r),onClick:a[1]||(a[1]=o=>s.$emit("canceled")),type:"button"},Ae(s.$t("commons.cancel")),1)):ge("",!0)]))}}},G4={role:"alert"},J4=["id","innerHTML"],X4={__name:"FieldError",props:{error:{type:String,required:!0},field:{type:String,required:!0}},setup(e){return(t,n)=>(z(),X("div",G4,[Q("p",{id:"valError"+e.field[0].toUpperCase()+e.field.toLowerCase().slice(1),class:"help is-danger",innerHTML:e.error},null,8,J4)]))}};function Nn(e,t){let n;switch(t=t.toString(),e){case"text":n="txt";break;case"button":n="btn";break;case"email":n="eml";break;case"password":n="pwd";break;case"radio":n="rdo";break;case"label":n="lbl";break;default:n="txt";break}return{inputId:n+t[0].toUpperCase()+t.toLowerCase().slice(1)}}function f3(e,t=!1){const n=ft();if(n.preferences.formatPassword&&e.length>0){const r=Math.ceil(n.preferences.formatPasswordBy<1?e.length*n.preferences.formatPasswordBy:n.preferences.formatPasswordBy),s=e.match(new RegExp(`.{1,${r}}`,"g"));s&&(e=s.join(" "))}return n.preferences.showOtpAsDot&&!t?e.replace(/[0-9]/g,"●"):e}const Q4=["for","innerHTML"],Z4={class:"control"},ey=["disabled","id","type","value","placeholder","maxlength"],ty=["innerHTML"],ny=Object.assign({inheritAttrs:!1},{__name:"FormField",props:{modelValue:[String,Number,Boolean],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],inputType:{type:String,default:"text"},placeholder:{type:String,default:""},help:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},maxLength:{type:Number,default:null}},setup(e){const t=e,{inputId:n}=Nn(t.inputType,t.fieldName);return(r,s)=>{const a=We("FieldError");return z(),X("div",{class:Oe(["field",{"pt-3":e.hasOffset}])},[Q("label",{for:re(n),class:"label",innerHTML:r.$t(e.label)},null,8,Q4),Q("div",Z4,[Q("input",qi({disabled:e.isDisabled,id:re(n),type:e.inputType,class:"input",value:e.modelValue,placeholder:e.placeholder},r.$attrs,{onInput:s[0]||(s[0]=i=>r.$emit("update:modelValue",i.target.value)),maxlength:e.maxLength}),null,16,ey)]),e.fieldError!=null?(z(),De(a,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):ge("",!0),e.help?(z(),X("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,ty)):ge("",!0)],2)}}}),ry=["for","innerHTML"],sy={class:"control has-icons-right"},ay=["disabled","id","type","value","placeholder"],iy=["title"],oy=["title"],ly=["innerHTML"],cy=["innerHTML"],uy={key:3,class:"columns is-mobile is-size-7 mt-0"},fy={class:"column is-one-third"},dy={class:"has-text-weight-semibold"},py=Q("br",null,null,-1),my=Q("br",null,null,-1),hy={class:"column"},gy={class:"has-text-weight-semibold"},vy=Q("br",null,null,-1),yy=Q("br",null,null,-1),by=Q("br",null,null,-1),wy=Q("br",null,null,-1),_y=Object.assign({inheritAttrs:!0},{__name:"FormPasswordField",props:{modelValue:[String],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],inputType:{type:String,default:"password"},placeholder:{type:String,default:""},help:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},showRules:{type:Boolean,default:!1}},setup(e){const t=e,{inputId:n}=Nn(t.inputType,t.fieldName),r=me(t.inputType),s=me(!1),a=te(()=>/[a-z]/.test(t.modelValue)),i=te(()=>/[A-Z]/.test(t.modelValue)),o=te(()=>/[0-9]/.test(t.modelValue)),l=te(()=>/[^A-Za-z0-9]/.test(t.modelValue)),c=te(()=>t.modelValue.length>=8);function u(d){s.value=!!d.getModifierState("CapsLock")}function f(d){r.value!=d&&(r.value=d)}return(d,m)=>{const g=We("font-awesome-icon"),v=We("FieldError");return z(),X("div",{class:Oe(["field",{"pt-3":e.hasOffset}])},[Q("label",{for:re(n),class:"label",innerHTML:d.$t(e.label)},null,8,ry),Q("div",sy,[Q("input",qi({disabled:e.isDisabled,id:re(n),type:re(r),class:"input",value:e.modelValue,placeholder:e.placeholder},d.$attrs,{onInput:m[0]||(m[0]=S=>d.$emit("update:modelValue",S.target.value)),onKeyup:u}),null,16,ay),re(r)=="password"?(z(),X("span",{key:0,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[1]||(m[1]=Qa(S=>f("text"),["enter"])),onClick:m[2]||(m[2]=S=>f("text")),title:d.$t("auth.forms.reveal_password")},[we(g,{icon:["fas","eye-slash"]})],40,iy)):(z(),X("span",{key:1,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[3]||(m[3]=Qa(S=>f("password"),["enter"])),onClick:m[4]||(m[4]=S=>f("password")),title:d.$t("auth.forms.hide_password")},[we(g,{icon:["fas","eye"]})],40,oy))]),re(s)?(z(),X("p",{key:0,class:"help is-warning",innerHTML:d.$t("auth.forms.caps_lock_is_on")},null,8,ly)):ge("",!0),e.fieldError!=null?(z(),De(v,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):ge("",!0),e.help?(z(),X("p",{key:2,class:"help",innerHTML:d.$t(e.help)},null,8,cy)):ge("",!0),e.showRules?(z(),X("div",uy,[Q("div",fy,[Q("span",dy,Ae(d.$t("auth.forms.mandatory_rules")),1),py,Q("span",{class:Oe(["is-underscored",{"is-dot":re(c)}]),id:"valPwdIsLongEnough"},null,2),Ke(Ae(d.$t("auth.forms.is_long_enough")),1),my]),Q("div",hy,[Q("span",gy,Ae(d.$t("auth.forms.optional_rules_you_should_follow")),1),vy,Q("span",{class:Oe(["is-underscored",{"is-dot":re(a)}]),id:"valPwdHasLowerCase"},null,2),Ke(Ae(d.$t("auth.forms.has_lower_case")),1),yy,Q("span",{class:Oe(["is-underscored",{"is-dot":re(i)}]),id:"valPwdHasUpperCase"},null,2),Ke(Ae(d.$t("auth.forms.has_upper_case")),1),by,Q("span",{class:Oe(["is-underscored",{"is-dot":re(l)}]),id:"valPwdHasSpecialChar"},null,2),Ke(Ae(d.$t("auth.forms.has_special_char")),1),wy,Q("span",{class:Oe(["is-underscored",{"is-dot":re(o)}]),id:"valPwdHasNumber"},null,2),Ke(Ae(d.$t("auth.forms.has_number")),1)])])):ge("",!0)],2)}}}),Ey={class:"field"},xy=["innerHTML"],ky={class:"control"},Ay={class:"select"},Sy=["value"],Cy=["innerHTML"],Oy={__name:"FormSelect",props:{modelValue:[String,Number,Boolean],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],options:{type:Array,required:!0},help:{type:String,default:""}},setup(e){const n=me(e.modelValue);return(r,s)=>{const a=We("FieldError");return z(),X("div",Ey,[Q("label",{class:"label",innerHTML:r.$t(e.label)},null,8,xy),Q("div",ky,[Q("div",Ay,[Xc(Q("select",{"onUpdate:modelValue":s[0]||(s[0]=i=>ke(n)?n.value=i:null),onChange:s[1]||(s[1]=i=>r.$emit("update:modelValue",i.target.value))},[(z(!0),X(Me,null,Vi(e.options,i=>(z(),X("option",{value:i.value},Ae(r.$t(i.text)),9,Sy))),256))],544),[[zm,re(n)]])])]),e.fieldError!=null?(z(),De(a,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):ge("",!0),e.help?(z(),X("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,Cy)):ge("",!0)])}}};function ld(e){var t;const n=st(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Hr=Br?window:void 0;function wi(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Hr):[t,n,r,s]=e,!t)return Zi;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const a=[],i=()=>{a.forEach(u=>u()),a.length=0},o=(u,f,d,m)=>(u.addEventListener(f,d,m),()=>u.removeEventListener(f,d,m)),l=He(()=>[ld(t),st(s)],([u,f])=>{if(i(),!u)return;const d=Yu(f)?{...f}:f;a.push(...n.flatMap(m=>r.map(g=>o(u,m,g,d))))},{immediate:!0,flush:"post"}),c=()=>{l(),i()};return er(c),c}const ms=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},hs="__vueuse_ssr_handlers__",Ty=Ly();function Ly(){return hs in ms||(ms[hs]=ms[hs]||{}),ms[hs]}function cd(e,t){return Ty[e]||t}function Py(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Ry={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},bc="vueuse-storage";function My(e,t,n,r={}){var s;const{flush:a="pre",deep:i=!0,listenToStorageChanges:o=!0,writeDefaults:l=!0,mergeDefaults:c=!1,shallow:u,window:f=Hr,eventFilter:d,onError:m=w=>{console.error(w)}}=r,g=(u?$i:me)(t);if(!n)try{n=cd("getDefaultStorage",()=>{var w;return(w=Hr)==null?void 0:w.localStorage})()}catch(w){m(w)}if(!n)return g;const v=st(t),S=Py(v),b=(s=r.serializer)!=null?s:Ry[S],{pause:_,resume:P}=Ju(g,()=>x(g.value),{flush:a,deep:i,eventFilter:d});return f&&o&&(wi(f,"storage",q),wi(f,bc,Z)),q(),g;function x(w){try{if(w==null)n.removeItem(e);else{const O=b.write(w),H=n.getItem(e);H!==O&&(n.setItem(e,O),f&&f.dispatchEvent(new CustomEvent(bc,{detail:{key:e,oldValue:H,newValue:O,storageArea:n}})))}}catch(O){m(O)}}function F(w){const O=w?w.newValue:n.getItem(e);if(O==null)return l&&v!==null&&n.setItem(e,b.write(v)),v;if(!w&&c){const H=b.read(O);return typeof c=="function"?c(H,v):S==="object"&&!Array.isArray(H)?{...v,...H}:H}else return typeof O!="string"?O:b.read(O)}function Z(w){q(w.detail)}function q(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){g.value=v;return}if(!(w&&w.key!==e)){_();try{(w==null?void 0:w.newValue)!==b.write(g.value)&&(g.value=F(w))}catch(O){m(O)}finally{w?Qn(P):P()}}}}}function Ny(){const e=me(!1);return Zn()&&En(()=>{e.value=!0}),e}function Iy(e){const t=Ny();return te(()=>(t.value,!!e()))}function $y(e,t={}){const{window:n=Hr}=t,r=Iy(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const a=me(!1),i=c=>{a.value=c.matches},o=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},l=Di(()=>{r.value&&(o(),s=n.matchMedia(st(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),a.value=s.matches)});return er(()=>{l(),o(),s=void 0}),a}function Fy(e){return $y("(prefers-color-scheme: dark)",e)}function Hy(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Hr,storage:a,storageKey:i="vueuse-color-scheme",listenToStorageChanges:o=!0,storageRef:l,emitAuto:c,disableTransition:u=!0}=e,f={auto:"",light:"light",dark:"dark",...e.modes||{}},d=Fy({window:s}),m=te(()=>d.value?"dark":"light"),g=l||(i==null?eo(r):My(i,r,a,{window:s,listenToStorageChanges:o})),v=te(()=>g.value==="auto"?m.value:g.value),S=cd("updateHTMLAttrs",(x,F,Z)=>{const q=typeof x=="string"?s==null?void 0:s.document.querySelector(x):ld(x);if(!q)return;let w;if(u){w=s.document.createElement("style");const O="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";w.appendChild(document.createTextNode(O)),s.document.head.appendChild(w)}if(F==="class"){const O=Z.split(/\s/g);Object.values(f).flatMap(H=>(H||"").split(/\s/g)).filter(Boolean).forEach(H=>{O.includes(H)?q.classList.add(H):q.classList.remove(H)})}else q.setAttribute(F,Z);u&&(s.getComputedStyle(w).opacity,document.head.removeChild(w))});function b(x){var F;S(t,n,(F=f[x])!=null?F:x)}function _(x){e.onChanged?e.onChanged(x,b):b(x)}He(v,_,{flush:"post",immediate:!0}),Xu(()=>_(v.value));const P=te({get(){return c?g.value:v.value},set(x){g.value=x}});try{return Object.assign(P,{store:g,system:m,state:v})}catch{return P}}const Dy=_n({name:"UseColorMode",props:["selector","attribute","modes","onChanged","storageKey","storage","emitAuto"],setup(e,{slots:t}){const n=Hy(e),r=Rt({mode:n,system:n.system,store:n.store});return()=>{if(t.default)return t.default(r)}}});function za(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function ud(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}function By(e,t=!1){const n=me(t);let r=null,s;He(eo(e),o=>{const l=za(st(o));if(l){const c=l;s=c.style.overflow,n.value&&(c.style.overflow="hidden")}},{immediate:!0});const a=()=>{const o=za(st(e));!o||n.value||(Ol&&(r=wi(o,"touchmove",l=>{zy(l)},{passive:!1})),o.style.overflow="hidden",n.value=!0)},i=()=>{const o=za(st(e));!o||!n.value||(Ol&&(r==null||r()),o.style.overflow=s,n.value=!1)};return er(i),te({get(){return n.value},set(o){o?a():i()}})}function jy(){let e=!1;const t=me(!1);return(n,r)=>{if(t.value=r.value,e)return;e=!0;const s=By(n,r.value);He(t,a=>s.value=a)}}jy();const Vy=["aria-labelledby"],Uy=["id","innerHTML"],Ky={class:"is-toggle buttons"},Wy=["id","aria-checked","disabled","onClick","title"],qy=["id","checked","value","disabled"],Yy=["innerHTML"],Gy=["innerHTML"],Jy={__name:"FormToggle",props:{modelValue:[String,Number,Boolean],choices:{type:Array,required:!0},fieldName:{type:String,required:!0},fieldError:[String],hasOffset:Boolean,isDisabled:Boolean,label:{type:String,default:""},help:{type:String,default:""}},emits:["update:modelValue"],setup(e,{emit:t}){function n(r){t("update:modelValue",r)}return(r,s)=>{const a=We("FontAwesomeIcon"),i=We("FieldError");return z(),X("div",{class:Oe(["field",{"pt-3":e.hasOffset}]),role:"radiogroup","aria-labelledby":re(Nn)("label",e.fieldName).inputId},[e.label?(z(),X("label",{key:0,id:re(Nn)("label",e.fieldName).inputId,class:"label",innerHTML:r.$t(e.label)},null,8,Uy)):ge("",!0),Q("div",Ky,[we(re(Dy),null,{default:Ge(({mode:o})=>[(z(!0),X(Me,null,Vi(e.choices,l=>(z(),X("button",{key:l.value,id:re(Nn)("button",e.fieldName+l.value).inputId,role:"radio",type:"button",class:Oe(["button",{"is-link":e.modelValue===l.value,"is-dark":o==="dark","is-multiline":l.legend}]),"aria-checked":e.modelValue===l.value,disabled:e.isDisabled,onClick:ta(c=>n(l.value),["stop"]),title:l.title?l.title:""},[Q("input",{id:re(Nn)("radio",l.value).inputId,type:"radio",class:"is-hidden",checked:e.modelValue===l.value,value:l.value,disabled:e.isDisabled},null,8,qy),l.legend?(z(),X("span",{key:0,innerHTML:r.$t(l.legend),class:"is-block is-size-7"},null,8,Yy)):ge("",!0),l.icon?(z(),De(a,{key:1,icon:["fas",l.icon],class:"mr-2"},null,8,["icon"])):ge("",!0),Ke(" "+Ae(r.$t(l.text)),1)],10,Wy))),128))]),_:1})]),e.fieldError!=null?(z(),De(i,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):ge("",!0),e.help?(z(),X("p",{key:2,class:"help",innerHTML:r.$t(e.help)},null,8,Gy)):ge("",!0)],10,Vy)}}},Xy={class:"field is-flex"},Qy=["id","name","disabled"],Zy=["for","innerHTML","onKeypress"],e3=["innerHTML"],t3=Object.assign({inheritAttrs:!1},{__name:"FormCheckbox",props:{modelValue:Boolean,fieldName:{type:String,default:"",required:!0},label:{type:String,default:""},labelClass:{type:String,default:""},help:{type:String,default:""},isIndented:Boolean,isDisabled:Boolean},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,r=$p(),s=te({get(){return n.modelValue},set(i){t("update:modelValue",i)}});function a(){r.disabled!=!0&&(s.value=!s.value)}return(i,o)=>{const l=We("FontAwesomeIcon");return z(),X("div",Xy,[e.isIndented?(z(),X("div",{key:0,class:"mx-2 pr-1",style:Dn({opacity:e.isDisabled?"0.5":"1"})},[we(l,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):ge("",!0),Q("div",null,[Xc(Q("input",{id:e.fieldName,type:"checkbox",name:e.fieldName,class:"is-checkradio is-info","onUpdate:modelValue":o[0]||(o[0]=c=>ke(s)?s.value=c:null),disabled:e.isDisabled},null,8,Qy),[[Dm,re(s)]]),Q("label",{tabindex:"0",for:e.fieldName,class:Oe(["label",e.labelClass]),innerHTML:i.$t(e.label),onKeypress:Qa(ta(a,["prevent"]),["space"])},null,42,Zy),e.help?(z(),X("p",{key:0,class:"help",innerHTML:i.$t(e.help)},null,8,e3)):ge("",!0)])])}}}),n3={class:"field is-grouped"},r3={class:"control"},s3={key:0,class:"control"},a3={__name:"FormButtons",props:{showCancelButton:{type:Boolean,default:!1},isBusy:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},caption:{type:String,default:"commons.submit"},cancelLandingView:{type:String,default:""},color:{type:String,default:"is-link"},submitId:{type:String,default:"btnSubmit"},cancelId:{type:String,default:"btnCancel"}},setup(e){return(t,n)=>{const r=We("VueButton"),s=We("RouterLink");return z(),X("div",n3,[Q("div",r3,[we(r,{id:e.submitId,color:e.color,isLoading:e.isBusy,disabled:e.isDisabled},{default:Ge(()=>[Ke(Ae(t.$t(e.caption)),1)]),_:1},8,["id","color","isLoading","disabled"])]),e.showCancelButton?(z(),X("div",s3,[we(s,{id:e.cancelId,to:{name:e.cancelLandingView},class:"button is-text"},{default:Ge(()=>[Ke(Ae(t.$t("commons.cancel")),1)]),_:1},8,["id","to"])])):ge("",!0)])}}},i3={__name:"Kicker",props:{kickAfter:{type:Number,required:!0}},setup(e){const t=e,n=ft(),r=me(["mousedown","scroll","keypress"]),s=me(null);He(()=>t.kickAfter,()=>{o()}),En(()=>{r.value.forEach(function(c){window.addEventListener(c,o)},this),a()}),Js(()=>{r.value.forEach(function(c){window.removeEventListener(c,o)},this),l()});function a(){s.value=setTimeout(i,t.kickAfter*60*1e3)}function i(){clearTimeout(s.value),n.logout({kicked:!0})}function o(){l(),a()}function l(){clearTimeout(s.value)}return(c,u)=>null}},xn=Wm(L1),fd={prefix:"2fauth_",config:window.appConfig,version:window.appVersion,isDemoApp:window.isDemoApp,isTestingApp:window.isTestingApp,langs:window.appLocales};xn.provide("2fauth",Xn(fd));const dd=R1();dd.use(({store:e})=>{e.$2fauth=fd});xn.use(dd);xn.use(Wn);xn.use(lg,{lang:document.documentElement.lang.substring(0,2),resolve:async e=>{const t=Object.assign({"../lang/php_bg.json":()=>se(()=>import("./php_bg-bcff75d8.js"),[],import.meta.url),"../lang/php_de.json":()=>se(()=>import("./php_de-219f9ed4.js"),[],import.meta.url),"../lang/php_en.json":()=>se(()=>import("./php_en-d30fbe66.js"),[],import.meta.url),"../lang/php_es.json":()=>se(()=>import("./php_es-887feba5.js"),[],import.meta.url),"../lang/php_fr.json":()=>se(()=>import("./php_fr-bec0a8e8.js"),[],import.meta.url),"../lang/php_id.json":()=>se(()=>import("./php_id-3611d83b.js"),[],import.meta.url),"../lang/php_it.json":()=>se(()=>import("./php_it-785d18db.js"),[],import.meta.url),"../lang/php_ro.json":()=>se(()=>import("./php_ro-e68bc39a.js"),[],import.meta.url),"../lang/php_ru.json":()=>se(()=>import("./php_ru-9fc62699.js"),[],import.meta.url),"../lang/php_si.json":()=>se(()=>import("./php_si-fff4c92d.js"),[],import.meta.url),"../lang/php_zh.json":()=>se(()=>import("./php_zh-a04c3840.js"),[],import.meta.url)});if(e.includes("php_"))return await t[`../lang/${e}.json`]()}});xn.use(fh);xn.component("FontAwesomeIcon",iv).component("ResponsiveWidthWrapper",b4).component("FormWrapper",E4).component("VueFooter",$4).component("Modal",V4).component("VueButton",K4).component("ButtonBackCloseCancel",Y4).component("FieldError",X4).component("FormField",ny).component("FormPasswordField",_y).component("FormSelect",Oy).component("FormToggle",Jy).component("FormCheckbox",t3).component("FormButtons",a3).component("Kicker",i3);xn.mount("#app");ft().applyUserPrefs();export{l3 as $,Xc as A,o3 as B,an as C,ta as D,ke as E,Me as F,Vi as G,zm as H,Ze as I,rs as J,Kl as K,Si as L,Oc as M,Zn as N,Qn as O,et as P,Pf as Q,c3 as R,dg as S,qi as T,Dy as U,Dm as V,xu as W,f3 as X,Nn as Y,qu as Z,su as _,ft as a,jr as a0,fa as a1,ef as a2,u3 as a3,m4 as a4,Nt as b,Lf as c,Rt as d,We as e,z as f,X as g,Q as h,re as i,Ke as j,De as k,ge as l,we as m,Oe as n,En as o,Ge as p,_n as q,me as r,Js as s,Ae as t,m1 as u,te as v,Qa as w,He as x,op as y,Dn as z}; +`),e.removeAttribute(n),r()}).catch(s)}else r()}else r()})}function D0(e){return Promise.all([dc(e,"::before"),dc(e,"::after")])}function z0(e){return e.parentNode!==document.head&&!~Og.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(ui)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function pc(e){if(zt)return new Promise(function(t,n){var r=nr(e.querySelectorAll("*")).filter(z0).map(D0),s=bo.begin("searchPseudoElements");rd(),Promise.all(r).then(function(){s(),yi(),t()}).catch(function(){s(),yi(),n()})})}var B0={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=pc,n}}},provides:function(t){t.pseudoElements2svg=function(n){var r=n.node,s=r===void 0?xe:r;K.searchPseudoElements&&pc(s)}}},mc=!1,j0={mixout:function(){return{dom:{unwatch:function(){rd(),mc=!0}}}},hooks:function(){return{bootstrap:function(){lc(pi("mutationObserverCallbacks",{}))},noAuto:function(){k0()},watch:function(n){var r=n.observeMutationsRoot;mc?yi():lc(pi("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},hc=function(t){var n={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return t.toLowerCase().split(" ").reduce(function(r,s){var a=s.toLowerCase().split("-"),i=a[0],o=a.slice(1).join("-");if(i&&o==="h")return r.flipX=!0,r;if(i&&o==="v")return r.flipY=!0,r;if(o=parseFloat(o),isNaN(o))return r;switch(i){case"grow":r.size=r.size+o;break;case"shrink":r.size=r.size-o;break;case"left":r.x=r.x-o;break;case"right":r.x=r.x+o;break;case"up":r.y=r.y-o;break;case"down":r.y=r.y+o;break;case"rotate":r.rotate=r.rotate+o;break}return r},n)},V0={mixout:function(){return{parse:{transform:function(n){return hc(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-transform");return s&&(n.transform=hc(s)),n}}},provides:function(t){t.generateAbstractTransformGrouping=function(n){var r=n.main,s=n.transform,a=n.containerWidth,i=n.iconWidth,o={transform:"translate(".concat(a/2," 256)")},l="translate(".concat(s.x*32,", ").concat(s.y*32,") "),c="scale(".concat(s.size/16*(s.flipX?-1:1),", ").concat(s.size/16*(s.flipY?-1:1),") "),u="rotate(".concat(s.rotate," 0 0)"),f={transform:"".concat(l," ").concat(c," ").concat(u)},d={transform:"translate(".concat(i/2*-1," -256)")},m={outer:o,inner:f,path:d};return{tag:"g",attributes:B({},m.outer),children:[{tag:"g",attributes:B({},m.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:B(B({},r.icon.attributes),m.path)}]}]}}}},Ha={x:0,y:0,width:"100%",height:"100%"};function gc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function U0(e){return e.tag==="g"?e.children:[e]}var K0={hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-mask"),a=s?ma(s.split(" ").map(function(i){return i.trim()})):vo();return a.prefix||(a.prefix=rn()),n.mask=a,n.maskId=r.getAttribute("data-fa-mask-id"),n}}},provides:function(t){t.generateAbstractMask=function(n){var r=n.children,s=n.attributes,a=n.main,i=n.mask,o=n.maskId,l=n.transform,c=a.width,u=a.icon,f=i.width,d=i.icon,m=Vg({transform:l,containerWidth:f,iconWidth:c}),g={tag:"rect",attributes:B(B({},Ha),{},{fill:"white"})},v=u.children?{children:u.children.map(gc)}:{},S={tag:"g",attributes:B({},m.inner),children:[gc(B({tag:u.tag,attributes:B(B({},u.attributes),m.path)},v))]},b={tag:"g",attributes:B({},m.outer),children:[S]},_="mask-".concat(o||Fr()),P="clip-".concat(o||Fr()),x={tag:"mask",attributes:B(B({},Ha),{},{id:_,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[g,b]},F={tag:"defs",children:[{tag:"clipPath",attributes:{id:P},children:U0(d)},x]};return r.push(F,{tag:"rect",attributes:B({fill:"currentColor","clip-path":"url(#".concat(P,")"),mask:"url(#".concat(_,")")},Ha)}),{children:r,attributes:s}}}},W0={provides:function(t){var n=!1;nn.matchMedia&&(n=nn.matchMedia("(prefers-reduced-motion: reduce)").matches),t.missingIconAbstract=function(){var r=[],s={fill:"currentColor"},a={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};r.push({tag:"path",attributes:B(B({},s),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var i=B(B({},a),{},{attributeName:"opacity"}),o={tag:"circle",attributes:B(B({},s),{},{cx:"256",cy:"364",r:"28"}),children:[]};return n||o.children.push({tag:"animate",attributes:B(B({},a),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:B(B({},i),{},{values:"1;0;1;1;0;1;"})}),r.push(o),r.push({tag:"path",attributes:B(B({},s),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:n?[]:[{tag:"animate",attributes:B(B({},i),{},{values:"1;0;0;0;0;1;"})}]}),n||r.push({tag:"path",attributes:B(B({},s),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:B(B({},i),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:r}}}},q0={hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-symbol"),a=s===null?!1:s===""?!0:s;return n.symbol=a,n}}}},Y0=[Wg,M0,N0,I0,$0,B0,j0,V0,K0,W0,q0];o0(Y0,{mixoutsTo:at});at.noAuto;at.config;var G0=at.library;at.dom;var bi=at.parse;at.findIconDefinition;at.toHtml;var J0=at.icon;at.layer;at.text;at.counter;function vc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function Pt(e){for(var t=1;t=0)&&(n[s]=e[s]);return n}function Q0(e,t){if(e==null)return{};var n=X0(e,t),r,s;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(s=0;s=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var Z0=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ad={exports:{}};(function(e){(function(t){var n=function(b,_,P){if(!c(_)||f(_)||d(_)||m(_)||l(_))return _;var x,F=0,Z=0;if(u(_))for(x=[],Z=_.length;F1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string")return e;var r=(e.children||[]).map(function(l){return id(l)}),s=Object.keys(e.attributes||{}).reduce(function(l,c){var u=e.attributes[c];switch(c){case"class":l.class=rv(u);break;case"style":l.style=nv(u);break;default:l.attrs[c]=u}return l},{attrs:{},class:{},style:{}});n.class;var a=n.style,i=a===void 0?{}:a,o=Q0(n,tv);return ea(e.tag,Pt(Pt(Pt({},t),{},{class:s.class,style:Pt(Pt({},s.style),i)},s.attrs),o),r)}var od=!1;try{od=!0}catch{}function sv(){if(!od&&console&&typeof console.error=="function"){var e;(e=console).error.apply(e,arguments)}}function Da(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?Je({},e,t):{}}function av(e){var t,n=(t={"fa-spin":e.spin,"fa-pulse":e.pulse,"fa-fw":e.fixedWidth,"fa-border":e.border,"fa-li":e.listItem,"fa-inverse":e.inverse,"fa-flip":e.flip===!0,"fa-flip-horizontal":e.flip==="horizontal"||e.flip==="both","fa-flip-vertical":e.flip==="vertical"||e.flip==="both"},Je(t,"fa-".concat(e.size),e.size!==null),Je(t,"fa-rotate-".concat(e.rotation),e.rotation!==null),Je(t,"fa-pull-".concat(e.pull),e.pull!==null),Je(t,"fa-swap-opacity",e.swapOpacity),Je(t,"fa-bounce",e.bounce),Je(t,"fa-shake",e.shake),Je(t,"fa-beat",e.beat),Je(t,"fa-fade",e.fade),Je(t,"fa-beat-fade",e.beatFade),Je(t,"fa-flash",e.flash),Je(t,"fa-spin-pulse",e.spinPulse),Je(t,"fa-spin-reverse",e.spinReverse),t);return Object.keys(n).map(function(r){return n[r]?r:null}).filter(function(r){return r})}function yc(e){if(e&&zs(e)==="object"&&e.prefix&&e.iconName&&e.icon)return e;if(bi.icon)return bi.icon(e);if(e===null)return null;if(zs(e)==="object"&&e.prefix&&e.iconName)return e;if(Array.isArray(e)&&e.length===2)return{prefix:e[0],iconName:e[1]};if(typeof e=="string")return{prefix:"fas",iconName:e}}var iv=_n({name:"FontAwesomeIcon",props:{border:{type:Boolean,default:!1},fixedWidth:{type:Boolean,default:!1},flip:{type:[Boolean,String],default:!1,validator:function(t){return[!0,!1,"horizontal","vertical","both"].indexOf(t)>-1}},icon:{type:[Object,Array,String],required:!0},mask:{type:[Object,Array,String],default:null},listItem:{type:Boolean,default:!1},pull:{type:String,default:null,validator:function(t){return["right","left"].indexOf(t)>-1}},pulse:{type:Boolean,default:!1},rotation:{type:[String,Number],default:null,validator:function(t){return[90,180,270].indexOf(Number.parseInt(t,10))>-1}},swapOpacity:{type:Boolean,default:!1},size:{type:String,default:null,validator:function(t){return["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"].indexOf(t)>-1}},spin:{type:Boolean,default:!1},transform:{type:[String,Object],default:null},symbol:{type:[Boolean,String],default:!1},title:{type:String,default:null},inverse:{type:Boolean,default:!1},bounce:{type:Boolean,default:!1},shake:{type:Boolean,default:!1},beat:{type:Boolean,default:!1},fade:{type:Boolean,default:!1},beatFade:{type:Boolean,default:!1},flash:{type:Boolean,default:!1},spinPulse:{type:Boolean,default:!1},spinReverse:{type:Boolean,default:!1}},setup:function(t,n){var r=n.attrs,s=te(function(){return yc(t.icon)}),a=te(function(){return Da("classes",av(t))}),i=te(function(){return Da("transform",typeof t.transform=="string"?bi.transform(t.transform):t.transform)}),o=te(function(){return Da("mask",yc(t.mask))}),l=te(function(){return J0(s.value,Pt(Pt(Pt(Pt({},a.value),i.value),o.value),{},{symbol:t.symbol,title:t.title}))});He(l,function(u){if(!u)return sv("Could not find one or more icon(s)",s.value,o.value)},{immediate:!0});var c=te(function(){return l.value?id(l.value.abstract[0],{},r):null});return function(){return c.value}}}),ov={prefix:"fas",iconName:"file-lines",icon:[384,512,[128441,128462,61686,"file-alt","file-text"],"f15c","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z"]},lv={prefix:"fas",iconName:"circle-minus",icon:[512,512,["minus-circle"],"f056","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"]},cv=lv,uv={prefix:"fas",iconName:"circle-notch",icon:[512,512,[],"f1ce","M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z"]},fv={prefix:"fas",iconName:"bars",icon:[448,512,["navicon"],"f0c9","M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"]},dv={prefix:"fas",iconName:"circle-exclamation",icon:[512,512,["exclamation-circle"],"f06a","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"]},pv=dv,mv={prefix:"fas",iconName:"square-check",icon:[448,512,[9745,9989,61510,"check-square"],"f14a","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"]},hv=mv,gv={prefix:"fas",iconName:"list",icon:[512,512,["list-squares"],"f03a","M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z"]},vv={prefix:"fas",iconName:"lock",icon:[448,512,[128274],"f023","M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z"]},yv={prefix:"fas",iconName:"eye-slash",icon:[640,512,[],"f070","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z"]},bv={prefix:"fas",iconName:"globe",icon:[512,512,[127760],"f0ac","M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z"]},wv={prefix:"fas",iconName:"arrow-up-a-z",icon:[576,512,["sort-alpha-up"],"f15e","M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z"]},_v=wv,Ev={prefix:"fas",iconName:"image",icon:[512,512,[],"f03e","M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"]},xv={prefix:"fas",iconName:"circle-check",icon:[512,512,[61533,"check-circle"],"f058","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"]},kv={prefix:"fas",iconName:"layer-group",icon:[576,512,[],"f5fd","M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z"]},Av={prefix:"fas",iconName:"code",icon:[640,512,[],"f121","M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z"]},Sv={prefix:"fas",iconName:"lock-open",icon:[576,512,[],"f3c1","M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z"]},Cv={prefix:"fas",iconName:"eye",icon:[576,512,[128065],"f06e","M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z"]},Ov={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"]},Tv={prefix:"fas",iconName:"up-right-from-square",icon:[512,512,["external-link-alt"],"f35d","M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z"]},Lv=Tv,Pv={prefix:"fas",iconName:"table-cells",icon:[512,512,["th"],"f00a","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 64v64H64V96h88zm56 0h88v64H208V96zm240 0v64H360V96h88zM64 224h88v64H64V224zm232 0v64H208V224h88zm64 0h88v64H360V224zM152 352v64H64V352h88zm56 0h88v64H208V352zm240 0v64H360V352h88z"]},Rv=Pv,Mv={prefix:"fas",iconName:"camera",icon:[512,512,[62258,"camera-alt"],"f030","M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z"]},Nv={prefix:"fas",iconName:"arrow-down-a-z",icon:[576,512,["sort-alpha-asc","sort-alpha-down"],"f15d","M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z"]},Iv=Nv,$v={prefix:"fas",iconName:"caret-down",icon:[320,512,[],"f0d7","M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"]},Fv={prefix:"fas",iconName:"flask",icon:[448,512,[],"f0c3","M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM192 196.8V64h64V196.8c0 23.7 6.6 46.9 19 67.1L309.5 320h-171L173 263.9c12.4-20.2 19-43.4 19-67.1z"]},Hv={prefix:"fas",iconName:"upload",icon:[512,512,[],"f093","M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"]},Dv={prefix:"fas",iconName:"file-arrow-down",icon:[384,512,["file-download"],"f56d","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z"]},zv=Dv,Bv={prefix:"fas",iconName:"sun",icon:[512,512,[9728],"f185","M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z"]},jv={prefix:"fas",iconName:"ellipsis",icon:[448,512,["ellipsis-h"],"f141","M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z"]},Vv=jv,Uv={prefix:"fas",iconName:"magnifying-glass",icon:[512,512,[128269,"search"],"f002","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"]},Kv=Uv,Wv={prefix:"fas",iconName:"square-pen",icon:[448,512,["pen-square","pencil-square"],"f14b","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"]},qv=Wv,Yv={prefix:"fas",iconName:"copy",icon:[448,512,[],"f0c5","M208 0H332.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128h80v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z"]},Gv={prefix:"fas",iconName:"plus",icon:[448,512,[10133,61543,"add"],"2b","M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z"]},Jv={prefix:"fas",iconName:"xmark",icon:[384,512,[128473,10005,10006,10060,215,"close","multiply","remove","times"],"f00d","M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"]},Xv=Jv,Qv={prefix:"fas",iconName:"chevron-right",icon:[320,512,[9002],"f054","M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z"]},Zv={prefix:"fas",iconName:"video-slash",icon:[640,512,[],"f4e2","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9V192 320v5.8l-32-25.1V128c0-35.3-28.7-64-64-64H113.9L38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5V384c0 35.3 28.7 64 64 64H352c23.4 0 43.9-12.6 55-31.3z"]},e4={prefix:"fas",iconName:"spinner",icon:[512,512,[],"f110","M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z"]},t4={prefix:"fas",iconName:"qrcode",icon:[448,512,[],"f029","M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zM64 96v64h64V96H64zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336zm64 16v64h64V352H64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm80 64H320v64h64V96zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V304zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z"]},n4={prefix:"fas",iconName:"moon",icon:[384,512,[127769,9214],"f186","M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z"]},r4={prefix:"fas",iconName:"circle-plus",icon:[512,512,["plus-circle"],"f055","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"]},s4=r4,a4={prefix:"fas",iconName:"desktop",icon:[576,512,[128421,61704,"desktop-alt"],"f390","M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V288H64V64H512z"]},i4={prefix:"fas",iconName:"book",icon:[448,512,[128212],"f02d","M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z"]},o4={prefix:"fas",iconName:"check",icon:[448,512,[10003,10004],"f00c","M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"]},l4={prefix:"fas",iconName:"triangle-exclamation",icon:[512,512,[9888,"exclamation-triangle","warning"],"f071","M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"]},c4={prefix:"fas",iconName:"circle-xmark",icon:[512,512,[61532,"times-circle","xmark-circle"],"f057","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"]},u4=c4,f4={prefix:"far",iconName:"star",icon:[576,512,[11088,61446],"f005","M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.6 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z"]},d4={prefix:"fab",iconName:"github-alt",icon:[480,512,[],"f113","M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"]},p4={prefix:"fab",iconName:"openid",icon:[448,512,[],"f19b","M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z"]};G0.add(Gv,s4,t4,Ev,Ov,o4,hv,Xv,vv,Sv,Kv,Vv,fv,e4,d4,$v,kv,cv,pv,qv,Rv,gv,u4,Hv,bv,i4,Fv,Av,Yv,Iv,_v,Cv,yv,Lv,Mv,zv,Bv,n4,a4,uv,xv,l4,ov,Zv,f4,Qv,p4);const m4=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},h4={},g4={class:"columns is-centered"},v4={class:"form-column column is-two-thirds-tablet is-half-desktop is-half-widescreen is-one-third-fullhd"};function y4(e,t){return z(),X("div",g4,[Q("div",v4,[an(e.$slots,"default")])])}const b4=m4(h4,[["render",y4]]),w4=["innerHTML"],_4=["innerHTML"],E4={__name:"FormWrapper",props:{title:{type:String,default:""},punchline:{type:String,default:""}},setup(e){return(t,n)=>{const r=We("ResponsiveWidthWrapper");return z(),De(r,null,{default:Ge(()=>[e.title?(z(),X("h1",{key:0,class:"title has-text-grey-dark",innerHTML:t.$t(e.title)},null,8,w4)):ge("",!0),e.punchline?(z(),X("div",{key:1,id:"punchline",class:"block",innerHTML:t.$t(e.punchline)},null,8,_4)):ge("",!0),an(t.$slots,"default")]),_:3})}}},x4={class:"main"},k4={key:0,class:"columns is-gapless"},A4={class:"column has-text-centered"},S4={class:"field is-grouped"},C4={key:1,class:"content has-text-centered"},O4={key:2,class:"content has-text-centered"},T4={key:1},L4={key:3,class:"content has-text-centered"},P4={key:0,class:"is-size-6"},R4={class:"has-text-weight-bold"},M4={key:1},N4={key:0,class:"release-flag"},I4={key:0},$4={__name:"Footer",props:{showButtons:!0,internalFooterType:{type:String,default:"navLinks"}},setup(e){const t=Pf(),n=ft(),r=et("2fauth");function s(){confirm(Ze("auth.confirm.logout"))&&n.logout()}return(a,i)=>{const o=We("router-link");return z(),X("footer",x4,[e.showButtons?(z(),X("div",k4,[Q("div",A4,[Q("div",S4,[an(a.$slots,"default")])])])):ge("",!0),e.internalFooterType=="doneButton"?(z(),X("div",C4,[Q("button",{id:"lnkExitEdit",class:"button is-ghost is-like-text",onClick:i[0]||(i[0]=ta(l=>a.$emit("doneButtonClicked",!0),["stop"]))},Ae(a.$t("commons.done")),1)])):e.internalFooterType=="modal"?(z(),X("div",O4,[a.$route.name!="accounts"?(z(),De(o,{key:0,id:"lnkBackToHome",to:{name:"accounts"},class:"has-text-grey"},{default:Ge(()=>[Ke(Ae(a.$t("commons.back_to_home")),1)]),_:1})):(z(),X("span",T4," "))])):(z(),X("div",L4,[a.$route.meta.showAbout===!0?(z(),X("div",P4,[we(o,{id:"lnkAbout",to:{name:"about"},class:"has-text-grey"},{default:Ge(()=>[Ke(" 2FAuth – "),Q("span",R4,"v"+Ae(re(r).version),1)]),_:1})])):(z(),X("div",M4,[we(o,{id:"lnkSettings",to:{name:"settings.options"},class:"has-text-grey"},{default:Ge(()=>[Ke(Ae(a.$t("settings.settings")),1),re(t).latestRelease&&re(t).checkForUpdate?(z(),X("span",N4)):ge("",!0)]),_:1},8,["to"]),!re(r).config.proxyAuth||re(r).config.proxyAuth&&re(r).config.proxyLogoutUrl?(z(),X("span",I4,[Ke(" - "),Q("button",{id:"lnkSignOut",class:"button is-text is-like-text has-text-grey",onClick:s},Ae(a.$t("auth.sign_out")),1)])):ge("",!0)]))]))])}}},F4=["onClick"],H4={class:"modal-content"},D4={class:"section"},z4={class:"columns is-centered"},B4={class:"column is-three-quarters"},j4={class:"modal-slot box has-text-centered is-shadowless"},V4={__name:"Modal",props:{modelValue:Boolean,closable:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,{notify:r}=Nu(),s=te({get(){return n.modelValue},set(i){t("update:modelValue",i)}});function a(i){r({clean:!0}),s.value=!1}return(i,o)=>{const l=We("ButtonBackCloseCancel"),c=We("VueFooter");return z(),X("div",{class:Oe(["modal modal-otp",{"is-active":re(s)}])},[Q("div",{class:"modal-background",onClick:ta(a,["stop"])},null,8,F4),Q("div",H4,[Q("section",D4,[Q("div",z4,[Q("div",B4,[Q("div",j4,[an(i.$slots,"default")])])])])]),n.closable?(z(),De(c,{key:0,showButtons:!0,internalFooterType:"modal"},{default:Ge(()=>[we(l,{action:"close",useLinkTag:!1,onClosed:a})]),_:1})):ge("",!0)],2)}}},U4=["type","disabled"],K4={__name:"Button",props:{color:{type:String,default:"is-link"},nativeType:{type:String,default:"submit"},isLoading:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1}},setup(e){return(t,n)=>(z(),X("button",{type:e.nativeType,disabled:e.isLoading||e.isDisabled,class:Oe({button:!0,[`${e.color}`]:!0,"is-loading":e.isLoading})},[an(t.$slots,"default")],10,U4))}},W4={key:0,class:"control"},q4={key:1,class:"control"},Y4={__name:"ButtonBackCloseCancel",props:{returnTo:{type:Object,default:{name:"accounts"}},action:{type:String,default:"close"},useLinkTag:{type:Boolean,default:!0},isText:{type:Boolean,default:!1},isCapture:{type:Boolean,default:!1}},setup(e){const t=e;m1(),qu();const r="button is-rounded"+(tf().value==="dark"&&!t.isText&&!t.isCapture?" is-dark":"")+(t.isText?" is-text":"")+(t.isCapture?" is-large is-warning":"");return(s,a)=>{const i=We("RouterLink");return e.useLinkTag?(z(),X("p",W4,[e.action=="close"?(z(),De(i,{key:0,id:"btnClose",to:e.returnTo,class:Oe(r),tabindex:"0",role:"button","aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:Ge(()=>[Ke(Ae(s.$t("commons.close")),1)]),_:1},8,["to","aria-label"])):e.action=="back"?(z(),De(i,{key:1,id:"lnkBack",to:e.returnTo,class:Oe(r),"aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:Ge(()=>[Ke(Ae(s.$t("commons.back")),1)]),_:1},8,["to","aria-label"])):e.action=="cancel"?(z(),De(i,{key:2,id:"btnCancel",to:e.returnTo,class:Oe(r)},{default:Ge(()=>[Ke(Ae(s.$t("commons.cancel")),1)]),_:1},8,["to"])):ge("",!0)])):(z(),X("p",q4,[e.action=="close"?(z(),X("button",{key:0,id:"btnClose",class:Oe(r),onClick:a[0]||(a[0]=o=>s.$emit("closed")),type:"button"},Ae(s.$t("commons.close")),1)):ge("",!0),e.action=="cancel"?(z(),X("button",{key:1,id:"btnCancel",class:Oe(r),onClick:a[1]||(a[1]=o=>s.$emit("canceled")),type:"button"},Ae(s.$t("commons.cancel")),1)):ge("",!0)]))}}},G4={role:"alert"},J4=["id","innerHTML"],X4={__name:"FieldError",props:{error:{type:String,required:!0},field:{type:String,required:!0}},setup(e){return(t,n)=>(z(),X("div",G4,[Q("p",{id:"valError"+e.field[0].toUpperCase()+e.field.toLowerCase().slice(1),class:"help is-danger",innerHTML:e.error},null,8,J4)]))}};function Nn(e,t){let n;switch(t=t.toString(),e){case"text":n="txt";break;case"button":n="btn";break;case"email":n="eml";break;case"password":n="pwd";break;case"radio":n="rdo";break;case"label":n="lbl";break;default:n="txt";break}return{inputId:n+t[0].toUpperCase()+t.toLowerCase().slice(1)}}function f3(e,t=!1){const n=ft();if(n.preferences.formatPassword&&e.length>0){const r=Math.ceil(n.preferences.formatPasswordBy<1?e.length*n.preferences.formatPasswordBy:n.preferences.formatPasswordBy),s=e.match(new RegExp(`.{1,${r}}`,"g"));s&&(e=s.join(" "))}return n.preferences.showOtpAsDot&&!t?e.replace(/[0-9]/g,"●"):e}const Q4=["for","innerHTML"],Z4={class:"control"},ey=["disabled","id","type","value","placeholder","maxlength"],ty=["innerHTML"],ny=Object.assign({inheritAttrs:!1},{__name:"FormField",props:{modelValue:[String,Number,Boolean],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],inputType:{type:String,default:"text"},placeholder:{type:String,default:""},help:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},maxLength:{type:Number,default:null}},setup(e){const t=e,{inputId:n}=Nn(t.inputType,t.fieldName);return(r,s)=>{const a=We("FieldError");return z(),X("div",{class:Oe(["field",{"pt-3":e.hasOffset}])},[Q("label",{for:re(n),class:"label",innerHTML:r.$t(e.label)},null,8,Q4),Q("div",Z4,[Q("input",qi({disabled:e.isDisabled,id:re(n),type:e.inputType,class:"input",value:e.modelValue,placeholder:e.placeholder},r.$attrs,{onInput:s[0]||(s[0]=i=>r.$emit("update:modelValue",i.target.value)),maxlength:e.maxLength}),null,16,ey)]),e.fieldError!=null?(z(),De(a,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):ge("",!0),e.help?(z(),X("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,ty)):ge("",!0)],2)}}}),ry=["for","innerHTML"],sy={class:"control has-icons-right"},ay=["disabled","id","type","value","placeholder"],iy=["title"],oy=["title"],ly=["innerHTML"],cy=["innerHTML"],uy={key:3,class:"columns is-mobile is-size-7 mt-0"},fy={class:"column is-one-third"},dy={class:"has-text-weight-semibold"},py=Q("br",null,null,-1),my=Q("br",null,null,-1),hy={class:"column"},gy={class:"has-text-weight-semibold"},vy=Q("br",null,null,-1),yy=Q("br",null,null,-1),by=Q("br",null,null,-1),wy=Q("br",null,null,-1),_y=Object.assign({inheritAttrs:!0},{__name:"FormPasswordField",props:{modelValue:[String],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],inputType:{type:String,default:"password"},placeholder:{type:String,default:""},help:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},showRules:{type:Boolean,default:!1}},setup(e){const t=e,{inputId:n}=Nn(t.inputType,t.fieldName),r=me(t.inputType),s=me(!1),a=te(()=>/[a-z]/.test(t.modelValue)),i=te(()=>/[A-Z]/.test(t.modelValue)),o=te(()=>/[0-9]/.test(t.modelValue)),l=te(()=>/[^A-Za-z0-9]/.test(t.modelValue)),c=te(()=>t.modelValue.length>=8);function u(d){s.value=!!d.getModifierState("CapsLock")}function f(d){r.value!=d&&(r.value=d)}return(d,m)=>{const g=We("font-awesome-icon"),v=We("FieldError");return z(),X("div",{class:Oe(["field",{"pt-3":e.hasOffset}])},[Q("label",{for:re(n),class:"label",innerHTML:d.$t(e.label)},null,8,ry),Q("div",sy,[Q("input",qi({disabled:e.isDisabled,id:re(n),type:re(r),class:"input",value:e.modelValue,placeholder:e.placeholder},d.$attrs,{onInput:m[0]||(m[0]=S=>d.$emit("update:modelValue",S.target.value)),onKeyup:u}),null,16,ay),re(r)=="password"?(z(),X("span",{key:0,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[1]||(m[1]=Qa(S=>f("text"),["enter"])),onClick:m[2]||(m[2]=S=>f("text")),title:d.$t("auth.forms.reveal_password")},[we(g,{icon:["fas","eye-slash"]})],40,iy)):(z(),X("span",{key:1,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[3]||(m[3]=Qa(S=>f("password"),["enter"])),onClick:m[4]||(m[4]=S=>f("password")),title:d.$t("auth.forms.hide_password")},[we(g,{icon:["fas","eye"]})],40,oy))]),re(s)?(z(),X("p",{key:0,class:"help is-warning",innerHTML:d.$t("auth.forms.caps_lock_is_on")},null,8,ly)):ge("",!0),e.fieldError!=null?(z(),De(v,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):ge("",!0),e.help?(z(),X("p",{key:2,class:"help",innerHTML:d.$t(e.help)},null,8,cy)):ge("",!0),e.showRules?(z(),X("div",uy,[Q("div",fy,[Q("span",dy,Ae(d.$t("auth.forms.mandatory_rules")),1),py,Q("span",{class:Oe(["is-underscored",{"is-dot":re(c)}]),id:"valPwdIsLongEnough"},null,2),Ke(Ae(d.$t("auth.forms.is_long_enough")),1),my]),Q("div",hy,[Q("span",gy,Ae(d.$t("auth.forms.optional_rules_you_should_follow")),1),vy,Q("span",{class:Oe(["is-underscored",{"is-dot":re(a)}]),id:"valPwdHasLowerCase"},null,2),Ke(Ae(d.$t("auth.forms.has_lower_case")),1),yy,Q("span",{class:Oe(["is-underscored",{"is-dot":re(i)}]),id:"valPwdHasUpperCase"},null,2),Ke(Ae(d.$t("auth.forms.has_upper_case")),1),by,Q("span",{class:Oe(["is-underscored",{"is-dot":re(l)}]),id:"valPwdHasSpecialChar"},null,2),Ke(Ae(d.$t("auth.forms.has_special_char")),1),wy,Q("span",{class:Oe(["is-underscored",{"is-dot":re(o)}]),id:"valPwdHasNumber"},null,2),Ke(Ae(d.$t("auth.forms.has_number")),1)])])):ge("",!0)],2)}}}),Ey={class:"field"},xy=["innerHTML"],ky={class:"control"},Ay={class:"select"},Sy=["value"],Cy=["innerHTML"],Oy={__name:"FormSelect",props:{modelValue:[String,Number,Boolean],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],options:{type:Array,required:!0},help:{type:String,default:""}},setup(e){const n=me(e.modelValue);return(r,s)=>{const a=We("FieldError");return z(),X("div",Ey,[Q("label",{class:"label",innerHTML:r.$t(e.label)},null,8,xy),Q("div",ky,[Q("div",Ay,[Xc(Q("select",{"onUpdate:modelValue":s[0]||(s[0]=i=>ke(n)?n.value=i:null),onChange:s[1]||(s[1]=i=>r.$emit("update:modelValue",i.target.value))},[(z(!0),X(Me,null,Vi(e.options,i=>(z(),X("option",{value:i.value},Ae(r.$t(i.text)),9,Sy))),256))],544),[[zm,re(n)]])])]),e.fieldError!=null?(z(),De(a,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):ge("",!0),e.help?(z(),X("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,Cy)):ge("",!0)])}}};function ld(e){var t;const n=st(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Hr=Br?window:void 0;function wi(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Hr):[t,n,r,s]=e,!t)return Zi;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const a=[],i=()=>{a.forEach(u=>u()),a.length=0},o=(u,f,d,m)=>(u.addEventListener(f,d,m),()=>u.removeEventListener(f,d,m)),l=He(()=>[ld(t),st(s)],([u,f])=>{if(i(),!u)return;const d=Yu(f)?{...f}:f;a.push(...n.flatMap(m=>r.map(g=>o(u,m,g,d))))},{immediate:!0,flush:"post"}),c=()=>{l(),i()};return er(c),c}const ms=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},hs="__vueuse_ssr_handlers__",Ty=Ly();function Ly(){return hs in ms||(ms[hs]=ms[hs]||{}),ms[hs]}function cd(e,t){return Ty[e]||t}function Py(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Ry={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},bc="vueuse-storage";function My(e,t,n,r={}){var s;const{flush:a="pre",deep:i=!0,listenToStorageChanges:o=!0,writeDefaults:l=!0,mergeDefaults:c=!1,shallow:u,window:f=Hr,eventFilter:d,onError:m=w=>{console.error(w)}}=r,g=(u?$i:me)(t);if(!n)try{n=cd("getDefaultStorage",()=>{var w;return(w=Hr)==null?void 0:w.localStorage})()}catch(w){m(w)}if(!n)return g;const v=st(t),S=Py(v),b=(s=r.serializer)!=null?s:Ry[S],{pause:_,resume:P}=Ju(g,()=>x(g.value),{flush:a,deep:i,eventFilter:d});return f&&o&&(wi(f,"storage",q),wi(f,bc,Z)),q(),g;function x(w){try{if(w==null)n.removeItem(e);else{const O=b.write(w),H=n.getItem(e);H!==O&&(n.setItem(e,O),f&&f.dispatchEvent(new CustomEvent(bc,{detail:{key:e,oldValue:H,newValue:O,storageArea:n}})))}}catch(O){m(O)}}function F(w){const O=w?w.newValue:n.getItem(e);if(O==null)return l&&v!==null&&n.setItem(e,b.write(v)),v;if(!w&&c){const H=b.read(O);return typeof c=="function"?c(H,v):S==="object"&&!Array.isArray(H)?{...v,...H}:H}else return typeof O!="string"?O:b.read(O)}function Z(w){q(w.detail)}function q(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){g.value=v;return}if(!(w&&w.key!==e)){_();try{(w==null?void 0:w.newValue)!==b.write(g.value)&&(g.value=F(w))}catch(O){m(O)}finally{w?Qn(P):P()}}}}}function Ny(){const e=me(!1);return Zn()&&En(()=>{e.value=!0}),e}function Iy(e){const t=Ny();return te(()=>(t.value,!!e()))}function $y(e,t={}){const{window:n=Hr}=t,r=Iy(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const a=me(!1),i=c=>{a.value=c.matches},o=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},l=Di(()=>{r.value&&(o(),s=n.matchMedia(st(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),a.value=s.matches)});return er(()=>{l(),o(),s=void 0}),a}function Fy(e){return $y("(prefers-color-scheme: dark)",e)}function Hy(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Hr,storage:a,storageKey:i="vueuse-color-scheme",listenToStorageChanges:o=!0,storageRef:l,emitAuto:c,disableTransition:u=!0}=e,f={auto:"",light:"light",dark:"dark",...e.modes||{}},d=Fy({window:s}),m=te(()=>d.value?"dark":"light"),g=l||(i==null?eo(r):My(i,r,a,{window:s,listenToStorageChanges:o})),v=te(()=>g.value==="auto"?m.value:g.value),S=cd("updateHTMLAttrs",(x,F,Z)=>{const q=typeof x=="string"?s==null?void 0:s.document.querySelector(x):ld(x);if(!q)return;let w;if(u){w=s.document.createElement("style");const O="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";w.appendChild(document.createTextNode(O)),s.document.head.appendChild(w)}if(F==="class"){const O=Z.split(/\s/g);Object.values(f).flatMap(H=>(H||"").split(/\s/g)).filter(Boolean).forEach(H=>{O.includes(H)?q.classList.add(H):q.classList.remove(H)})}else q.setAttribute(F,Z);u&&(s.getComputedStyle(w).opacity,document.head.removeChild(w))});function b(x){var F;S(t,n,(F=f[x])!=null?F:x)}function _(x){e.onChanged?e.onChanged(x,b):b(x)}He(v,_,{flush:"post",immediate:!0}),Xu(()=>_(v.value));const P=te({get(){return c?g.value:v.value},set(x){g.value=x}});try{return Object.assign(P,{store:g,system:m,state:v})}catch{return P}}const Dy=_n({name:"UseColorMode",props:["selector","attribute","modes","onChanged","storageKey","storage","emitAuto"],setup(e,{slots:t}){const n=Hy(e),r=Rt({mode:n,system:n.system,store:n.store});return()=>{if(t.default)return t.default(r)}}});function za(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function ud(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}function By(e,t=!1){const n=me(t);let r=null,s;He(eo(e),o=>{const l=za(st(o));if(l){const c=l;s=c.style.overflow,n.value&&(c.style.overflow="hidden")}},{immediate:!0});const a=()=>{const o=za(st(e));!o||n.value||(Ol&&(r=wi(o,"touchmove",l=>{zy(l)},{passive:!1})),o.style.overflow="hidden",n.value=!0)},i=()=>{const o=za(st(e));!o||!n.value||(Ol&&(r==null||r()),o.style.overflow=s,n.value=!1)};return er(i),te({get(){return n.value},set(o){o?a():i()}})}function jy(){let e=!1;const t=me(!1);return(n,r)=>{if(t.value=r.value,e)return;e=!0;const s=By(n,r.value);He(t,a=>s.value=a)}}jy();const Vy=["aria-labelledby"],Uy=["id","innerHTML"],Ky={class:"is-toggle buttons"},Wy=["id","aria-checked","disabled","onClick","title"],qy=["id","checked","value","disabled"],Yy=["innerHTML"],Gy=["innerHTML"],Jy={__name:"FormToggle",props:{modelValue:[String,Number,Boolean],choices:{type:Array,required:!0},fieldName:{type:String,required:!0},fieldError:[String],hasOffset:Boolean,isDisabled:Boolean,label:{type:String,default:""},help:{type:String,default:""}},emits:["update:modelValue"],setup(e,{emit:t}){function n(r){t("update:modelValue",r)}return(r,s)=>{const a=We("FontAwesomeIcon"),i=We("FieldError");return z(),X("div",{class:Oe(["field",{"pt-3":e.hasOffset}]),role:"radiogroup","aria-labelledby":re(Nn)("label",e.fieldName).inputId},[e.label?(z(),X("label",{key:0,id:re(Nn)("label",e.fieldName).inputId,class:"label",innerHTML:r.$t(e.label)},null,8,Uy)):ge("",!0),Q("div",Ky,[we(re(Dy),null,{default:Ge(({mode:o})=>[(z(!0),X(Me,null,Vi(e.choices,l=>(z(),X("button",{key:l.value,id:re(Nn)("button",e.fieldName+l.value).inputId,role:"radio",type:"button",class:Oe(["button",{"is-link":e.modelValue===l.value,"is-dark":o==="dark","is-multiline":l.legend}]),"aria-checked":e.modelValue===l.value,disabled:e.isDisabled,onClick:ta(c=>n(l.value),["stop"]),title:l.title?l.title:""},[Q("input",{id:re(Nn)("radio",l.value).inputId,type:"radio",class:"is-hidden",checked:e.modelValue===l.value,value:l.value,disabled:e.isDisabled},null,8,qy),l.legend?(z(),X("span",{key:0,innerHTML:r.$t(l.legend),class:"is-block is-size-7"},null,8,Yy)):ge("",!0),l.icon?(z(),De(a,{key:1,icon:["fas",l.icon],class:"mr-2"},null,8,["icon"])):ge("",!0),Ke(" "+Ae(r.$t(l.text)),1)],10,Wy))),128))]),_:1})]),e.fieldError!=null?(z(),De(i,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):ge("",!0),e.help?(z(),X("p",{key:2,class:"help",innerHTML:r.$t(e.help)},null,8,Gy)):ge("",!0)],10,Vy)}}},Xy={class:"field is-flex"},Qy=["id","name","disabled"],Zy=["for","innerHTML","onKeypress"],e3=["innerHTML"],t3=Object.assign({inheritAttrs:!1},{__name:"FormCheckbox",props:{modelValue:Boolean,fieldName:{type:String,default:"",required:!0},label:{type:String,default:""},labelClass:{type:String,default:""},help:{type:String,default:""},isIndented:Boolean,isDisabled:Boolean},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,r=$p(),s=te({get(){return n.modelValue},set(i){t("update:modelValue",i)}});function a(){r.disabled!=!0&&(s.value=!s.value)}return(i,o)=>{const l=We("FontAwesomeIcon");return z(),X("div",Xy,[e.isIndented?(z(),X("div",{key:0,class:"mx-2 pr-1",style:Dn({opacity:e.isDisabled?"0.5":"1"})},[we(l,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):ge("",!0),Q("div",null,[Xc(Q("input",{id:e.fieldName,type:"checkbox",name:e.fieldName,class:"is-checkradio is-info","onUpdate:modelValue":o[0]||(o[0]=c=>ke(s)?s.value=c:null),disabled:e.isDisabled},null,8,Qy),[[Dm,re(s)]]),Q("label",{tabindex:"0",for:e.fieldName,class:Oe(["label",e.labelClass]),innerHTML:i.$t(e.label),onKeypress:Qa(ta(a,["prevent"]),["space"])},null,42,Zy),e.help?(z(),X("p",{key:0,class:"help",innerHTML:i.$t(e.help)},null,8,e3)):ge("",!0)])])}}}),n3={class:"field is-grouped"},r3={class:"control"},s3={key:0,class:"control"},a3={__name:"FormButtons",props:{showCancelButton:{type:Boolean,default:!1},isBusy:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},caption:{type:String,default:"commons.submit"},cancelLandingView:{type:String,default:""},color:{type:String,default:"is-link"},submitId:{type:String,default:"btnSubmit"},cancelId:{type:String,default:"btnCancel"}},setup(e){return(t,n)=>{const r=We("VueButton"),s=We("RouterLink");return z(),X("div",n3,[Q("div",r3,[we(r,{id:e.submitId,color:e.color,isLoading:e.isBusy,disabled:e.isDisabled},{default:Ge(()=>[Ke(Ae(t.$t(e.caption)),1)]),_:1},8,["id","color","isLoading","disabled"])]),e.showCancelButton?(z(),X("div",s3,[we(s,{id:e.cancelId,to:{name:e.cancelLandingView},class:"button is-text"},{default:Ge(()=>[Ke(Ae(t.$t("commons.cancel")),1)]),_:1},8,["id","to"])])):ge("",!0)])}}},i3={__name:"Kicker",props:{kickAfter:{type:Number,required:!0}},setup(e){const t=e,n=ft(),r=me(["mousedown","scroll","keypress"]),s=me(null);He(()=>t.kickAfter,()=>{o()}),En(()=>{r.value.forEach(function(c){window.addEventListener(c,o)},this),a()}),Js(()=>{r.value.forEach(function(c){window.removeEventListener(c,o)},this),l()});function a(){s.value=setTimeout(i,t.kickAfter*60*1e3)}function i(){clearTimeout(s.value),n.logout({kicked:!0})}function o(){l(),a()}function l(){clearTimeout(s.value)}return(c,u)=>null}},xn=Wm(L1),fd={prefix:"2fauth_",config:window.appConfig,version:window.appVersion,isDemoApp:window.isDemoApp,isTestingApp:window.isTestingApp,langs:window.appLocales};xn.provide("2fauth",Xn(fd));const dd=R1();dd.use(({store:e})=>{e.$2fauth=fd});xn.use(dd);xn.use(Wn);xn.use(lg,{lang:document.documentElement.lang.substring(0,2),resolve:async e=>{const t=Object.assign({"../lang/php_bg.json":()=>se(()=>import("./php_bg-0f3d4dcd.js"),[],import.meta.url),"../lang/php_de.json":()=>se(()=>import("./php_de-27d4511d.js"),[],import.meta.url),"../lang/php_en.json":()=>se(()=>import("./php_en-d30fbe66.js"),[],import.meta.url),"../lang/php_es.json":()=>se(()=>import("./php_es-e9ed7804.js"),[],import.meta.url),"../lang/php_fr.json":()=>se(()=>import("./php_fr-bec0a8e8.js"),[],import.meta.url),"../lang/php_id.json":()=>se(()=>import("./php_id-54dd91aa.js"),[],import.meta.url),"../lang/php_it.json":()=>se(()=>import("./php_it-fc9d90d6.js"),[],import.meta.url),"../lang/php_ro.json":()=>se(()=>import("./php_ro-5426628b.js"),[],import.meta.url),"../lang/php_ru.json":()=>se(()=>import("./php_ru-27c574f1.js"),[],import.meta.url),"../lang/php_si.json":()=>se(()=>import("./php_si-1c14cf6b.js"),[],import.meta.url),"../lang/php_zh.json":()=>se(()=>import("./php_zh-579d5b22.js"),[],import.meta.url)});if(e.includes("php_"))return await t[`../lang/${e}.json`]()}});xn.use(fh);xn.component("FontAwesomeIcon",iv).component("ResponsiveWidthWrapper",b4).component("FormWrapper",E4).component("VueFooter",$4).component("Modal",V4).component("VueButton",K4).component("ButtonBackCloseCancel",Y4).component("FieldError",X4).component("FormField",ny).component("FormPasswordField",_y).component("FormSelect",Oy).component("FormToggle",Jy).component("FormCheckbox",t3).component("FormButtons",a3).component("Kicker",i3);xn.mount("#app");ft().applyUserPrefs();export{l3 as $,Xc as A,o3 as B,an as C,ta as D,ke as E,Me as F,Vi as G,zm as H,Ze as I,rs as J,Kl as K,Si as L,Oc as M,Zn as N,Qn as O,et as P,Pf as Q,c3 as R,dg as S,qi as T,Dy as U,Dm as V,xu as W,f3 as X,Nn as Y,qu as Z,su as _,ft as a,jr as a0,fa as a1,ef as a2,u3 as a3,m4 as a4,Nt as b,Lf as c,Rt as d,We as e,z as f,X as g,Q as h,re as i,Ke as j,De as k,ge as l,we as m,Oe as n,En as o,Ge as p,_n as q,me as r,Js as s,Ae as t,m1 as u,te as v,Qa as w,He as x,op as y,Dn as z}; diff --git a/public/build/assets/bus-222e275f.js b/public/build/assets/bus-2e7bf732.js similarity index 75% rename from public/build/assets/bus-222e275f.js rename to public/build/assets/bus-2e7bf732.js index 946f0d47..cef20914 100644 --- a/public/build/assets/bus-222e275f.js +++ b/public/build/assets/bus-2e7bf732.js @@ -1 +1 @@ -import{a0 as e}from"./app-72c44b80.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const n=e({id:"bus",state:()=>({migrationUri:null,decodedUri:null,inManagementMode:!1,editedGroupName:null}),actions:{}});export{n as u}; +import{a0 as e}from"./app-347ef106.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const n=e({id:"bus",state:()=>({migrationUri:null,decodedUri:null,inManagementMode:!1,editedGroupName:null}),actions:{}});export{n as u}; diff --git a/public/build/assets/php_bg-0f3d4dcd.js b/public/build/assets/php_bg-0f3d4dcd.js new file mode 100644 index 00000000..32e5bd80 --- /dev/null +++ b/public/build/assets/php_bg-0f3d4dcd.js @@ -0,0 +1,4 @@ +/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"auth.failed":"Тези идентификационни данни не съответстват на нашите записи.","auth.password":"Предоставената парола е неправилна.","auth.throttle":"Твърде много опити за влизане. Опитайте се пак след :seconds секунди.","auth.sign_out":"Изход","auth.sign_in":"Вход","auth.sign_in_using":"Влизане с","auth.or_continue_with":"You an also continue with:","auth.sign_in_using_security_device":"Влезте с помощта на защитно устройство","auth.login_and_password":"потребител и парола","auth.register":"Регистрация","auth.welcome_to_2fauth":"Добре дошли в 2FAuth","auth.autolock_triggered":"Задейства се автоматично заключване","auth.autolock_triggered_punchline":"Задействано е автоматизно заклюване. Връзката ви е автоматично прекратена.","auth.already_authenticated":"Вече сте удостоверени","auth.authentication":"Удостоверяване","auth.maybe_later":"Може би по-късно","auth.user_account_controlled_by_proxy":"Потребителски акаунт, предоставен от прокси за удостоверяване.
Управлявайте акаунта на ниво прокси.","auth.auth_handled_by_proxy":"Удостоверяването се обработва от ревърс прокси, настройките по-долу са деактивирани.
Управлявайте удостоверяването на ниво прокси.","auth.confirm.logout":"Сигурни ли сте, че искате да излезете?","auth.confirm.revoke_device":"Сигурни ли сте, че искате да анулирате това устройство?","auth.confirm.delete_account":"Сигурни ли сте, че искате да изтриете профила си?","auth.webauthn.security_device":"устройство за сигурност","auth.webauthn.security_devices":"Устройства за сигурност","auth.webauthn.security_devices_legend":"Устройства за удостоверяване, които можете да използвате за влизане в 2FAuth, като ключове за сигурност (като Yubikey) или смартфони с биометрични възможности (като Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`Можете да подобрите сигурността на вашия 2FAuth акаунт, като активирате WebAuthn удостоверяване.

+ WebAuthn ви позволява да използвате надеждни устройства (като Yubikeys или смартфони с биометрични възможности), за да влизате бързо и по-сигурно.`,"auth.webauthn.use_security_device_to_sign_in":"Пригответе се за удостоверяване с помощта на (едно от) вашите устройства за сигурност. Включете ключа си, свалете маската за лице или ръкавиците и т.н.","auth.webauthn.lost_your_device":"Загубихте устройството си?","auth.webauthn.recover_your_account":"Възстановете профила си","auth.webauthn.account_recovery":"Възстановяване на профил","auth.webauthn.recovery_punchline":"2FAuth ще ви изпрати връзка за възстановяване на този имейл адрес. Кликнете върху връзката получена в имейл-а и следвайте инструкциите.

Уверете се, че отваряте имейла на устройство, което изцяло притежавате.","auth.webauthn.send_recovery_link":"Изпратете връзка за възстановяване","auth.webauthn.account_recovery_email_sent":"Имейлът за възстановяване на акаунта е изпратен!","auth.webauthn.disable_all_security_devices":"Деактивирайте всички защитни устройства","auth.webauthn.disable_all_security_devices_help":"Всички ваши устройства за сигурност ще бъдат отменени. Използвайте тази опция, ако сте загубили такова устройство или сигурността му е била компрометирана.","auth.webauthn.register_a_new_device":"Регистрирайте ново устройство","auth.webauthn.register_a_device":"Регистрирайте устройство","auth.webauthn.device_successfully_registered":"Устройството е регистрирано успешно","auth.webauthn.device_revoked":"Устройството е анулирано успешно","auth.webauthn.revoking_a_device_is_permanent":"Анулираното на устройство е перманентно","auth.webauthn.recover_account_instructions":"За да възстановите акаунта си, 2FAuth нулира някои настройки на Webauthn, така че да можете да влезете с вашия имейл и парола.","auth.webauthn.invalid_recovery_token":"Невалиден токен за възстановяване","auth.webauthn.webauthn_login_disabled":"Влизането чрез Webauthn е деактивирано","auth.webauthn.invalid_reset_token":"Този токен за нулиране е невалиден.","auth.webauthn.rename_device":"Преименуване на устройство","auth.webauthn.my_device":"Моето устройство","auth.webauthn.unknown_device":"Неразпознато устройство","auth.webauthn.use_webauthn_only.label":"Използвайте само WebAuthn","auth.webauthn.use_webauthn_only.help":`Направете WebAuthn единственият разрешен метод за влизане във вашия 2FAuth акаунт. Това е препоръчителната настройка, за да се възползвате от подобрената защита на WebAuthn.

+ В случай на загуба на устройство, ще можете да възстановите акаунта си, като нулирате тази опция и влезете с вашия имейл и парола.

+ внимание! Формулярът за имейл и парола остава достъпен, въпреки че тази опция е активирана, но винаги ще връща отговор „Неуспешно удостоверяване“.`,"auth.webauthn.need_a_security_device_to_enable_options":"Задайте поне едно устройство, за да активирате следните опции","auth.forms.name":"Име","auth.forms.login":"Вход","auth.forms.webauthn_login":"WebAuthn вход","auth.forms.email":"Имейл","auth.forms.password":"Парола","auth.forms.reveal_password":"Покажи паролата","auth.forms.hide_password":"Скрий паролата","auth.forms.confirm_password":"Потвърждаване на паролата","auth.forms.new_password":"New password","auth.forms.confirm_new_password":"Потвърди новата парола","auth.forms.dont_have_account_yet":"Все още нямате акаунт?","auth.forms.already_register":"Вече сте регистриран?","auth.forms.authentication_failed":"Неуспешна идентификация","auth.forms.forgot_your_password":"Забравена парола?","auth.forms.request_password_reset":"Възстанови я","auth.forms.reset_your_password":"Нулиране на паролата","auth.forms.reset_password":"Нулиране на парола","auth.forms.disabled_in_demo":"Функцията е деактивирана в демо режима","auth.forms.current_password.label":"Текуща парола","auth.forms.current_password.help":"Попълнете текущата си парола, за да потвърдите, че това сте вие","auth.forms.change_password":"Промяна на паролата","auth.forms.send_password_reset_link":"Изпратете връзка за нулиране на паролата","auth.forms.password_successfully_changed":"Паролата е променена успешно","auth.forms.edit_account":"Редактиране на профил","auth.forms.profile_saved":"Профилът е актуализиран успешно!","auth.forms.welcome_to_demo_app_use_those_credentials":"Добре дошли в демонстрацията на 2FAuth.

Можете да влезете с имейл demo@2fauth.app и парола demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Добре дошли в тестовата версия на 2FAuth.

Използвайте имейл testing@2fauth.app и парола password","auth.forms.register_punchline":"Добре дошли в 2FAuth.
Имате нужда от акаунт, за да продължите, моля, регистрирайте се.","auth.forms.reset_punchline":"2FAuth ще ви изпрати връзка за нулиране на паролата на този адрес. Кликнете върху връзката в получения имейл, за да зададете нова парола.","auth.forms.name_this_device":"Назовете това устройство","auth.forms.delete_account":"Изтриване на профил","auth.forms.delete_your_account":"Изтрийте профила си","auth.forms.delete_your_account_and_reset_all_data":"Това ще нулира 2FAuth. Вашият потребителски акаунт ще бъде изтрит, както и всички 2FA данни. Няма връщане назад.","auth.forms.reset_your_password_to_delete_your_account":"If you always used SSO to sign in, sign out then use the reset password feature to get a password so you can fill this form.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Deleting your 2FAuth account has no impact on your external SSO account.","auth.forms.user_account_successfully_deleted":"Потребителският профил е изтрит успешно","auth.forms.has_lower_case":"Съдържа малки букви","auth.forms.has_upper_case":"Съдържа големи букви","auth.forms.has_special_char":"Съдържа символи","auth.forms.has_number":"Съдържа числа","auth.forms.is_long_enough":"Минимум 8 символа.","auth.forms.mandatory_rules":"Задължително","auth.forms.optional_rules_you_should_follow":"Силно препоръчително","auth.forms.caps_lock_is_on":"Главните букви са включени","commons.cancel":"Отказ","commons.update":"Актуализация","commons.copy":"Копиране","commons.copy_to_clipboard":"Копиране в клипборда","commons.copied_to_clipboard":"Копирано в клипборда","commons.profile":"Профил","commons.edit":"Редактиране","commons.delete":"Изтрий","commons.disable":"Деактивиране","commons.enable":"Активирай","commons.create":"Създай","commons.save":"Запази","commons.close":"Затвори","commons.clear":"Изчисти","commons.clear_search":"Изчисти търсенето","commons.demo_do_not_post_sensitive_data":"Това е демонстрационна програма. Не записвайте чувствителна информация","commons.testing_do_not_post_sensitive_data":"Това е тестова програма. Не записвайте чувствителна информация","commons.selected":"избрани","commons.name":"Име","commons.manage":"Управление","commons.done":"Готово","commons.new":"Нов","commons.back":"Назад","commons.move":"Премести","commons.export":"Експорт","commons.all":"Всички","commons.select_all":"Избери всички","commons.clear_selection":"Изчисти избраните","commons.sort_descending":"Сортирай низходящо","commons.sort_ascending":"Cортирай възходящо","commons.rename":"Преименуване","commons.new_name":"Ново име","commons.options":"Настройки","commons.reload":"презаредите","commons.refresh":"Refresh","commons.data_refreshed_to_reflect_server_changes":"Data has been refresh to reflect server-side changes","commons.generate":"Създаване","commons.generating_otp":"Генериране на OTP","commons.open_in_browser":"Отвори в браузър","commons.continue":"Продължи","commons.discard":"Откажи","commons.about":"Относно","commons.usefull_links":"Полезни връзки","commons.environment":"Среда","commons.credits":"Заслуги","commons.2fauth_teaser":"Уеб приложение за управление на вашите акаунти с двуфакторно удостоверяване (2FA) и генериране на техните кодове за сигурност","commons.made_with":"Изработено с","commons.ui_icons_by":"Икони","commons.logos_by":"Лога от","commons.search":"Търсене","commons.resources":"Ресурси","commons.check_for_update":"Проверка за нова версия","commons.check_for_update_help":"Автоматично проверявайте (веднъж седмично) и предупреди, когато в Github се публикува нова версия на 2FAuth","commons.you_are_up_to_date":"Тази инстанция е актуална","commons.2fauth_description":"Уеб приложение за управление на вашите акаунти с двуфакторно удостоверяване (2FA) и генериране на техните кодове за сигурност","commons.image_of_qrcode_to_scan":"Изображение на QR код за сканиране","commons.file":"Файл","commons.or":"ИЛИ","commons.close_the_x_page":"Затвори {pagetitle} страницата","commons.submit":"Submit","commons.default":"Default","commons.back_to_home":"Back to home","commons.nothing":"nothing","errors.resource_not_found":"Ресурсът не е намерен","errors.error_occured":"Възникна грешка:","errors.refresh":"Презареждане","errors.no_valid_otp":"Няма валиден OTP ресурс в този QR код","errors.something_wrong_with_server":"Нещо не е наред със сървъра ви","errors.Unable_to_decrypt_uri":"URIа не може да се декриптира","errors.not_a_supported_otp_type":"Този OTP формат не се поддържа","errors.cannot_create_otp_without_secret":"Не може да се създаде OTP без тайна","errors.data_of_qrcode_is_not_valid_URI":"Данните от този QR код не са валиден OTP Auth URI. QR кодът съдържа:","errors.wrong_current_password":"Wrong current password, nothing has changed","errors.error_during_encryption":"Шифроването е неуспешно, вашата база данни остава незащитена.","errors.error_during_decryption":"Дешифрирането е неуспешно, вашата база данни все още е защитена. Това се дължи главно на проблем с целостта на криптираните данни за един или повече акаунти.","errors.qrcode_cannot_be_read":"Този QR код е нечетлив","errors.too_many_ids":"твърде много идентификатори бяха включени в параметъра на заявката, разрешени са максимум 100","errors.delete_user_setting_only":"Само настройка създадена от потребител може да бъде изтрита","errors.indecipherable":"*неразгадаем*","errors.cannot_decipher_secret":"Тайната не може да бъде разгадана. Това се причинява главно от грешен APP_KEY, зададен в конфигурационния файл .env на 2Fauth или на повредени данни в базата данни.","errors.https_required":"Изисква се HTTPS контекст","errors.browser_does_not_support_webauthn":"Вашето устройство не поддържа webauthn. Опитайте отново с по-модерен браузър","errors.aborted_by_user":"Прекратено от потребителя","errors.security_device_already_registered":"Device already registered","errors.not_allowed_operation":"Операцията не е разрешена","errors.no_authenticator_support_specified_algorithms":"No authenticators support specified algorithms","errors.authenticator_missing_discoverable_credential_support":"Authenticator missing discoverable credential support","errors.authenticator_missing_user_verification_support":"Authenticator missing user verification support","errors.unknown_error":"Неизвестна грешка","errors.security_error_check_rpid":"Грешка в сигурността
Проверете вашата WEBAUTHN_ID env променлива","errors.2fauth_has_not_a_valid_domain":"2FAuth's domain is not a valid domain","errors.user_id_not_between_1_64":"User ID was not between 1 and 64 chars","errors.no_entry_was_of_type_public_key":'No entry was of type "public-key"',"errors.unsupported_with_reverseproxy":"Не е приложимо при използване на прокси за удостоверяване","errors.user_deletion_failed":"Изтриването на профила не бе успешно, няма изтрити данни","errors.auth_proxy_failed":"Неуспешно удостоверяване на проксито","errors.auth_proxy_failed_legend":"2Fauth е конфигуриран да работи зад прокси за удостоверяване, но вашето прокси не връща очаквания хедър. Проверете конфигурацията си и опитайте отново.","errors.invalid_x_migration":"Невалидни или нечетливи :appname данни","errors.invalid_2fa_data":"Невалидни 2FA данни","errors.unsupported_migration":"Данните не отговарят на нито един поддържан формат","errors.unsupported_otp_type":"Неподдържан OTP тип","errors.encrypted_migration":"Нечетимо, данните изглеждат криптирани","errors.no_logo_found_for_x":"Няма налично лого за {service}","errors.file_upload_failed":"Качването на файл не бе успешно","errors.unauthorized":"Неразрешено","errors.unauthorized_legend":"Нямате права да видите този ресурс или да извършите това действие","errors.cannot_delete_the_only_admin":"Не може да изтрие единствения администраторски акаунт","errors.error_during_data_fetching":"💀 Something went wrong during data fetching","errors.check_failed_try_later":"Check failed, please retry later","errors.sso_disabled":"SSO is disabled","errors.sso_bad_provider_setup":"This SSO provider is not fully setup in your .env file","errors.sso_failed":"Authentication via SSO rejected","errors.sso_no_register":"Registrations are disabled","errors.sso_email_already_used":"A user account with the same email address already exists but it does not match your external account ID. Do not use SSO if you are already registered on 2FAuth with this email.","errors.account_managed_by_external_provider":"Account managed by an external provider","groups.groups":"Групи","groups.create_group":"Създай нова група","groups.show_group_selector":"Покажи избора на групи","groups.hide_group_selector":"Скрий избора на групи","groups.select_accounts_to_show":"Избери група профили за показване","groups.manage_groups":"Управление на групи","groups.active_group":"Активна група","groups.manage_groups_legend":"Можете да създавате групи, за да организирате акаунтите си по желания от вас начин. Всички профили остават видими в псевдо групата, наречена „Всички“, независимо от групата, към която принадлежат.","groups.deleting_group_does_not_delete_accounts":"Изтриването на група не изтрива профили","groups.move_selected_to":"Премести избраните в","groups.move_selected_to_group":"Преместете избраните в група","groups.no_group":"Няма група","groups.change_group":"Промени група","groups.group_successfully_created":"Групата беше създадена успешно","groups.group_name_saved":"Групата беше преименувана","groups.group_successfully_deleted":"Групата беше изтрита успешно","groups.forms.new_group":"Нова група","groups.forms.new_name":"Ново име","groups.forms.rename_group":"Преименуване на група","groups.confirm.delete":"Сигурни ли сте, че искате да изтриете тази група?","languages.browser_preference":"По предпочитание на браузъра","languages.en":"English (Английски)","languages.fr":"Français (Френски)","languages.de":"Deutsch (Немски)","languages.es":"Español (Испански)","languages.zh":"简体中文 (Китайски опростен)","languages.ru":"Русский (Руски)","languages.bg":"Български (Български)","pagination.previous":"« Назад","pagination.next":"Напред »","passwords.reset":"Вашата парола е нулирана!","passwords.sent":"Изпратихме Ви писмо с линк за нова парола!","passwords.throttled":"Моля, изчакайте, преди да опитате отново.","passwords.token":"Ключът за нулиране на паролата е невалиден.","passwords.user":"Не можем да намерим потребител с този имейл адрес.","passwords.password":"Паролите трябва да имат поне 8 символа и да съвпадат с потвърждението.","settings.settings":"Настройки","settings.preferences":"Предпочитания","settings.account":"Профил","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Токени","settings.options":"Опции","settings.user_preferences":"Потребителски предпочитания","settings.admin_settings":"Настройки на администратора","settings.confirm.revoke":"Наистина ли искате да анулирате този токен?","settings.administration":"Администрация","settings.administration_legend":"Докато предишните настройки са потребителски (всеки потребител може да зададе свои собствени предпочитания), следващите настройки са глобални и се прилагат за всички потребители. Само администратор може да преглежда и редактира тези настройки.","settings.only_an_admin_can_edit_them":"Only an administrator can view and edit them.","settings.you_are_administrator":"Вие сте администратор","settings.account_linked_to_sso_x_provider":"You signed-in via SSO using your :provider account. Your information cannot be changed here but on :provider.","settings.general":"Общи","settings.security":"Сигурност","settings.profile":"Профил","settings.change_password":"Промяна на паролата","settings.personal_access_tokens":"Персонални токени за достъп","settings.token_legend":"Токените за персонален достъп позволяват на всяко приложение да се удостовери в 2Fauth API. Трябва да посочите токена за достъп като Bearer токен в хедърите за оторизация на заявките за потребителски приложения.","settings.generate_new_token":"Генерирайте нов токен","settings.revoke":"Анулирaне","settings.token_revoked":"Токена е анулиран успешно","settings.revoking_a_token_is_permanent":"Анулираното на токена е перманентно","settings.make_sure_copy_token":"Уверете се, че сте копирали вашия личен токен за достъп. Няма да можете да го видите отново!","settings.data_input":"Въвеждане на данни","settings.forms.edit_settings":"Редактиране на настройките","settings.forms.setting_saved":"Настройките са запазени","settings.forms.new_token":"Нов токен","settings.forms.some_translation_are_missing":"Някои преводи липсват при използване на предпочитания от браузъра език?","settings.forms.help_translate_2fauth":"Помогнете за превода на 2FAuth","settings.forms.language.label":"Език","settings.forms.language.help":"Език, използван за превод на потребителския интерфейс 2FAuth. Наименуваните езици са завършени, задайте този по ваш избор, който да замени предпочитанията на браузъра ви.","settings.forms.show_otp_as_dot.label":"Показване на генерираните еднократни пароли като точка","settings.forms.show_otp_as_dot.help":"Заменете генерираните знаци за парола с ***, за да осигурите поверителност. Не засягайте функцията за копиране/поставяне","settings.forms.reveal_dotted_otp.label":'Reveal obscured OTP',"settings.forms.reveal_dotted_otp.help":"Let the ability to temporarily reveal Dot-Obscured passwords","settings.forms.close_otp_on_copy.label":'Затворете OTP след копиране',"settings.forms.close_otp_on_copy.help":"Кликването върху генерираната парола ще я копира и автоматично ще я скрива от екрана","settings.forms.copy_otp_on_display.label":'Копирайте OTP при показване',"settings.forms.copy_otp_on_display.help":'Автоматично копиране на генерирана парола веднага след като се появи на екрана. Поради ограниченията на браузърите само първата TOTP парола ще бъде копирана, а не ротационните',"settings.forms.use_basic_qrcode_reader.label":"Използване на основен четец на QR код","settings.forms.use_basic_qrcode_reader.help":"Ако имате проблеми при заснемането на QR кодове, тази опция позволява превключване към по-прост, но по-надежден четец на QR кодове","settings.forms.display_mode.label":"Режим на показване","settings.forms.display_mode.help":"Изберете дали искате профилите да се показват като списък или като решетка","settings.forms.password_format.label":"Форматиране на парола","settings.forms.password_format.help":"Променете начина, по който се показват паролите, като групирате цифри, за да улесните четливостта и запаметяването","settings.forms.pair":"на Две","settings.forms.pair_legend":"Групиране на цифрите две по две","settings.forms.trio_legend":"Групиране на цифрите три по три","settings.forms.half_legend":"Разделяне на цифрите на две равни групи","settings.forms.trio":"на Три","settings.forms.half":"на Половина","settings.forms.grid":"Решетка","settings.forms.list":"Списък","settings.forms.theme.label":"Облик","settings.forms.theme.help":"Прилагане на специфичен облик или прилагане на предпочитания според системните/браузърните предпочитания","settings.forms.light":"Светъл","settings.forms.dark":"Тъмен","settings.forms.automatic":"Авто","settings.forms.show_accounts_icons.label":"Показвай иконите","settings.forms.show_accounts_icons.help":"Показва иконите на профилите в основният екран","settings.forms.get_official_icons.label":"Взимане на официални икони","settings.forms.get_official_icons.help":"Взима официалната икона на издателя на 2FA при добавяне на акаунт (ако е възможно)","settings.forms.auto_lock.label":"Автоматично заключване","settings.forms.auto_lock.help":"Отписване на потребителя автоматично в случай на неактивност. Няма ефект, когато удостоверяването се обработва от прокси и не е указан персонализиран URL адрес за излизане.","settings.forms.use_encryption.label":"Защита на чувствителните данни","settings.forms.use_encryption.help":'Чувствителните данни, 2FA тайните и имейлите се съхраняват криптирани в база данни. Не забравяйте да направите резервно копие на стойността "APP_KEY" във вашия .env файл (или на целия файл), тъй като тя служи като ключ за криптиране. Няма начин да дешифрирате криптирани данни без този ключ.',"settings.forms.default_group.label":"Група по подразбиране","settings.forms.default_group.help":"Групата, към която са свързани новосъздадените акаунти","settings.forms.useDirectCapture.label":"Директно въвеждане","settings.forms.useDirectCapture.help":"Изберете дали искате да бъдете подканени да изберете режим на въвеждане сред наличните или искате директно да използвате режима на въвеждане по подразбиране","settings.forms.defaultCaptureMode.label":"Режим на въвеждане по подразбиране","settings.forms.defaultCaptureMode.help":"Режим на въвеждане по подразбиране, използван, когато опцията Директно въвеждане е включена","settings.forms.remember_active_group.label":"Запомняне на груповия филтър","settings.forms.remember_active_group.help":"Запазва последния приложен групов филтър и го възстановява при следващото ви посещение","settings.forms.disable_registration.label":"Деактивиране на регистрациите","settings.forms.disable_registration.help":"Предотвратява нови потребителски регистрации","settings.forms.enable_sso.label":"Enable Single Sign-On (SSO)","settings.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","settings.forms.otp_generation.label":"Покажи паролата","settings.forms.otp_generation.help":'Задайте как и кога OTPs да се показват.
',"settings.forms.otp_generation_on_request":"След клик/тап","settings.forms.otp_generation_on_request_legend":"Самостоятелно, в отделен изглед","settings.forms.otp_generation_on_request_title":"Щракнете върху акаунт, за да получите парола в отделен изглед","settings.forms.otp_generation_on_home":"Постоянно","settings.forms.otp_generation_on_home_legend":"Всички в основният изглед","settings.forms.otp_generation_on_home_title":"Показване на всички пароли в основния изглед, без да правите нищо","settings.forms.never":"Никога","settings.forms.on_otp_copy":"При копиране на кода","settings.forms.1_minutes":"След 1 минута","settings.forms.5_minutes":"След 5 минути","settings.forms.10_minutes":"След 10 минути","settings.forms.15_minutes":"След 15 минути","settings.forms.30_minutes":"След 30 минути","settings.forms.1_hour":"След 1 час","settings.forms.1_day":"След 1 ден","settings.forms.livescan":"Сканиране на QR код","settings.forms.upload":"Качване на QR код","settings.forms.advanced_form":"Разширена форма","titles.404":"Записът не е намерен","titles.start":"Нов профил","titles.capture":"Заснеми QR","titles.accounts":"Профили","titles.createAccount":"Създай профил","titles.importAccounts":"Импортиране на профили","titles.editAccount":"Промени профил","titles.showQRcode":"Профил като QR код","titles.groups":"Групи","titles.createGroup":"Създай група","titles.editGroup":"Промяна на група","titles.settings.options":"Опции","titles.settings.account":"Потребителски профил","titles.settings.oauth.tokens":"OAuth токени","titles.settings.oauth.generatePAT":"Нов персонален токен","titles.settings.webauthn.editCredential":"Редакция на устройство","titles.settings.webauthn.devices":"WebAuthn устройства","titles.login":"Вход","titles.register":"Регистрация","titles.autolock":"Авт. заключване","titles.password.request":"Нулиране на паролата","titles.password.reset":"Нова парола","titles.webauthn.lost":"Възстановяване на профил","titles.webauthn.recover":"Регистриране на устройство","titles.flooded":"Наводнение","titles.genericError":"Грешка","titles.about":"Относно","twofaccounts.service":"Услуга","twofaccounts.account":"Профил","twofaccounts.accounts":"Профили","twofaccounts.icon":"Икона","twofaccounts.icon_for_account_x_at_service_y":"Икона на профил {account} в {service}","twofaccounts.icon_to_illustrate_the_account":"Икона, илюстрираща акаунта","twofaccounts.remove_icon":"Премахни икона","twofaccounts.no_account_here":"Тук няма 2FA!","twofaccounts.add_first_account":"Изберете метод и добавете първия си акаунт","twofaccounts.use_full_form":"Или използвайте пълния формуляр","twofaccounts.add_one":"Добавяне на един","twofaccounts.show_qrcode":"Покажи QR код","twofaccounts.no_service":"- няма услуга -","twofaccounts.account_created":"Профилът беше създаден успешно","twofaccounts.account_updated":"Профилът е актуализиран успешно","twofaccounts.accounts_deleted":"Профил(ите) са изтрити успешно","twofaccounts.accounts_moved":"Профил(ите) са преместени успешно","twofaccounts.export_selected_to_json":"Изтегляне на json извадка на избраните профили","twofaccounts.reveal":"reveal","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"Джон Доу","twofaccounts.forms.new_account":"Нов профил","twofaccounts.forms.edit_account":"Редактиране на профил","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Сканирайте QR код","twofaccounts.forms.upload_qrcode":"Качете QR код","twofaccounts.forms.use_advanced_form":"Използвайте разширената форма","twofaccounts.forms.prefill_using_qrcode":"Попълнете използвайки QR код","twofaccounts.forms.use_qrcode.val":"Използвайте QR код","twofaccounts.forms.use_qrcode.title":"Използвайте QR код, за магическо попълване","twofaccounts.forms.unlock.val":"Отключи","twofaccounts.forms.unlock.title":"Отключи го (на ваш собствен риск)","twofaccounts.forms.lock.val":"Заключи","twofaccounts.forms.lock.title":"Заключи го","twofaccounts.forms.choose_image":"Качи","twofaccounts.forms.i_m_lucky":"На късмет","twofaccounts.forms.i_m_lucky_legend":'Бутонът "На късмет" ще опита да изтегли официалната икона на дадената услуга. Въведете действителното име на услугата без разширение ".xyz" и се опитайте да избегнете правописна грешка. (бета функция)',"twofaccounts.forms.test":"Тест","twofaccounts.forms.secret.label":"Тайна","twofaccounts.forms.secret.help":"Ключът, използван за генериране на вашите кодове за сигурност","twofaccounts.forms.plain_text":"Чист текст","twofaccounts.forms.otp_type.label":'Изберете типа на OTP за създаване',"twofaccounts.forms.otp_type.help":"Временен OTP или HMAC базиран OTP или Steam OTP","twofaccounts.forms.digits.label":"Цифри","twofaccounts.forms.digits.help":"Броят цифри на генерираните кодове за сигурност","twofaccounts.forms.algorithm.label":"Алгоритъм","twofaccounts.forms.algorithm.help":"Алгоритъмът, използван за защита на вашите кодове за сигурност","twofaccounts.forms.period.label":"Период","twofaccounts.forms.period.placeholder":"30 по подразбиране","twofaccounts.forms.period.help":"Периодът на валидност на генерираните кодове за сигурност в секунди","twofaccounts.forms.counter.label":"Брояч","twofaccounts.forms.counter.placeholder":"0 по подразбиране","twofaccounts.forms.counter.help":"Първоначалната стойност на брояча","twofaccounts.forms.counter.help_lock":"Рисковано е да редактирате брояча, тъй като можете да десинхронизирате акаунта със сървъра за проверка на услугата. Използвайте иконата за заключване, за да разрешите промяната, но само ако знаете, че правите","twofaccounts.forms.image.label":"Изображение","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"URL адресът на външно изображение, което да се използва като икона на акаунта","twofaccounts.forms.options_help":"Можете да оставите следните опции празни, ако не знаете как да ги зададете. Ще бъдат приложени най-често използваните стойности.","twofaccounts.forms.alternative_methods":"Алтернативни методи","twofaccounts.stream.live_scan_cant_start":"Сканирането не може да стартира :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth няма разрешение за достъп до камерата ви","twofaccounts.stream.need_grant_permission.solution":"Трябва да дадете разрешение за използване на камерата на вашето устройство. Ако вече сте отказали и вашият браузър не ви подкани отново, моля, вижте документацията на браузъра, за да разберете как да дадете разрешение.","twofaccounts.stream.need_grant_permission.click_camera_icon":"It is usually done by clicking on a slashed camera icon in or next to the browser's address bar","twofaccounts.stream.not_readable.reason":"Неуспешно зареждане на скенера","twofaccounts.stream.not_readable.solution":"Камерата използва ли се вече? Уверете се, че никое друго приложение не използва камерата и опитайте отново","twofaccounts.stream.no_cam_on_device.reason":"Няма камера на това устройство","twofaccounts.stream.no_cam_on_device.solution":"Може би сте забравили да включите уеб камерата си","twofaccounts.stream.secured_context_required.reason":"Изисква се защитен контекст","twofaccounts.stream.secured_context_required.solution":"За сканиране се изисква HTTPS. Ако стартирате 2FAuth от вашия компютър, не използвайте виртуален хост, различен от localhost","twofaccounts.stream.https_required":"За стрийминг от камерата се изисква HTTPS","twofaccounts.stream.camera_not_suitable.reason":"Инсталираните камери не са подходящи","twofaccounts.stream.camera_not_suitable.solution":"Моля, използвайте друго устройство/камера","twofaccounts.stream.stream_api_not_supported.reason":"Бразучера не поддържа поточно API","twofaccounts.stream.stream_api_not_supported.solution":"Трябва да използвате модерен браузър","twofaccounts.confirm.delete":"Сигурни ли сте, че искате да изтриете този профил?","twofaccounts.confirm.cancel":"Профилът ще бъде загубен. Сигурен ли си?","twofaccounts.confirm.discard":"Сигурни ли сте, че искате да отхвърлите профила?","twofaccounts.confirm.discard_all":"Сигурни ли сте, че искате да отхвърлите всички профили?","twofaccounts.confirm.discard_duplicates":"Сигурни ли сте, че искате да отхвърлите всички дубликати?","twofaccounts.import.import":"Импорт","twofaccounts.import.to_import":"Импорт","twofaccounts.import.import_legend":"2FAuth може да импортира данни от различни 2FA приложения.
Използвайте функцията за експортиране на тези приложения, за да получите ресурс за мигриране (QR код или файл) и да го заредите, като използвате предпочитания от вас метод по-долу.","twofaccounts.import.import_legend_afterpart":"Use the Export feature of these apps to get a migration resource like a QR code or a JSON file then load it here.","twofaccounts.import.upload":"Качи","twofaccounts.import.scan":"Сканирай","twofaccounts.import.supported_formats_for_qrcode_upload":"Приемат се: jpg, jpeg, png, bmp, gif, svg или webp","twofaccounts.import.supported_formats_for_file_upload":"Приема се: чист текст, json, 2fas","twofaccounts.import.supported_migration_formats":"Поддържани формати за миграция","twofaccounts.import.qr_code":"QR код","twofaccounts.import.text_file":"Text file","twofaccounts.import.plain_text":"Чист текст","twofaccounts.import.parsing_data":"Parsing data...","twofaccounts.import.issuer":"Издател","twofaccounts.import.imported":"Импортиран","twofaccounts.import.failure":"Грешка","twofaccounts.import.x_valid_accounts_found":"Намерени са {count} валидни профила","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"The following 2FA accounts were found in the migration resource. So far none of them have been added to 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Use the available buttons to permanently save them to your 2FA collection or discard them.","twofaccounts.import.import_all":"Импорт. на всички","twofaccounts.import.import_this_account":"Импориране на профила","twofaccounts.import.discard_all":"Отхвърли всички","twofaccounts.import.discard_duplicates":"Отхвърли дубликатите","twofaccounts.import.discard_this_account":"Отхвърли профила","twofaccounts.import.generate_a_test_password":"Генериране на тестов код","twofaccounts.import.possible_duplicate":"Вече съществува профил със същите данни","twofaccounts.import.invalid_account":"- невалиден профил -","twofaccounts.import.invalid_service":"- невалидна услуга -","twofaccounts.import.do_not_set_password_or_encryption":"НЕ активирайте защита с парола или криптиране, когато експортирате данни (от 2FA приложение), които искате да импортирате в 2FAuth.","validation.accepted":"Полето :attribute трябва да бъде приетo.","validation.accepted_if":"Полето :attribute да бъде приет когато :other е :value.","validation.active_url":"Полето :attribute не е валиден URL.","validation.after":"Полето :attribute трябва да е дата след :date.","validation.after_or_equal":"Полето :attribute трябва да е дата след или равна на :date.","validation.alpha":"Полето :attribute трябва да съдържа само букви.","validation.alpha_dash":"Полето :attribute трябва да съдържа само букви, цифри, долна черта и тире.","validation.alpha_num":"Полето :attribute трябва да съдържа само букви и цифри.","validation.array":"Полето :attribute трябва да е низ.","validation.before":"Полето :attribute трябва да е дата преди :date.","validation.before_or_equal":"Полето :attribute трябва да е дата преди или равна на :date.","validation.between.array":"Полето :attribute трябва да е между :min и :max елемента.","validation.between.file":"Полето :attribute трябва да е между :min и :max килобайта.","validation.between.numeric":"Полето :attribute трябва да е между :min и :max.","validation.between.string":"Полето :attribute трябва да е между :min и :max символа.","validation.boolean":"Полето :attribute трябва да съдържа булева стойност (true или false).","validation.confirmed":"Потвърждението на полето :attribute не съвпада.","validation.current_password":"Паролата е грешна.","validation.date":"Полето :attribute не е валидна дата.","validation.date_equals":"Полето :attribute трябва да е дата равна на :date.","validation.date_format":"Полето :attribute не съвпада с формата :format.","validation.declined":"Полето :attribute трябва да бъде отказано.","validation.declined_if":"Полето :attribute трябва да бъде отказано когато :other е :value.","validation.different":"Полето :attribute и :other трябва да са различни.","validation.digits":"Полето :attribute трябва да е :digits цифри.","validation.digits_between":"Полето :attribute трябва да е между :min и :max цифри.","validation.dimensions":"Полето :attribute съдържа невалидни размери.","validation.distinct":"Полето :attribute има дублирана стойност.","validation.doesnt_end_with":"Полето :Attribute трябва да завършва с една от следните стойности: :values.","validation.doesnt_start_with":"Полето :Attribute трябва да започва с едно от следните: :values.","validation.email":"Полето :attribute трябва да съдържа валиден имейл.","validation.ends_with":"Полето :attribute трябва да завърпва с една от следните стойности: :values.","validation.enum":"Избраното :attribute е невалидно.","validation.exists":"Избраното поле :attribute е невалидно.","validation.file":"Полето :attribute трябва да е файл.","validation.filled":"Полето :attribute трябва да съдържа стойнот.","validation.gt.array":":Attribute трябва да разполага с повече от :value елемента.","validation.gt.file":"Полето :attribute трябва да е по-голямо от :value килобакта.","validation.gt.numeric":"Полето :attribute трябва да е по-голямо от :value.","validation.gt.string":"Дължината на :attribute трябва да бъде по-голямо от :value символа.","validation.gte.array":":attribute трябва да има :value елемента или повече.","validation.gte.file":":attribute трябва да е по-голям или равн на :value Kb.","validation.gte.numeric":":attribute трябва да е по-голямо или равно на :value.","validation.gte.string":":attribute трябва да е повече или равно на :value символа.","validation.image":":attribute трябва да e изображение.","validation.in":"Избраният :attribute е невалиден.","validation.in_array":"Полето :attribute не съществува в :other.","validation.integer":":attribute трябва да бъде цяло число.","validation.ip":":attribute трябва да бъде валиден IP адрес.","validation.ipv4":":attribute трябва да бъде валиден IPv4 адрес.","validation.ipv6":":attribute трябва да бъде валиден IPv6 адрес.","validation.json":":attribute трябва да съдържа валиден JSON.","validation.lt.array":":attribute трябва да разполага с по-малко от :value елемента.","validation.lt.file":":attribute не трябва да е по-голям от :value килобакта.","validation.lt.numeric":":attribute трябва да бъде по-малко от :value.","validation.lt.string":":Attribute трябва да бъде по-малка от :value знака.","validation.lte.array":":attribute не трябва да има повече от :value елемента.","validation.lte.file":":attribute трябва да бъде по-малък от или равен на :value килобайта.","validation.lte.numeric":":attribute трябва да бъде по-малко или равно на :value.","validation.lte.string":":attribute трябва да бъде по-малко от или равно на :value знака.","validation.mac_address":":attribute трябва да бъде валиден MAC адрес.","validation.max.array":":attribute не трябва да има повече от :max елемента.","validation.max.file":":attribute не трябва да бъде по-голямо от :max килобайта.","validation.max.numeric":":attribute не трябва да бъде по-голям от :max.","validation.max.string":"Полето :attribute трябва да бъде по-малко от :max знака.","validation.max_digits":"Полето :attribute трябва да има по-малко от :max елемента.","validation.mimes":"Полето :attribute трябва да бъде файл от тип: :values.","validation.mimetypes":"Полето :attribute трябва да бъде файл от тип: :values.","validation.min.array":"Полето :attribute трябва да има поне :min елемента.","validation.min.file":"Полето :attribute трябва да бъде с големина минимум :min KB.","validation.min.numeric":"Полето :attribute трябва да бъде минимум :min.","validation.min.string":"Полето :attribute трябва да бъде минимум :min знака.","validation.min_digits":"Полето :attribute трябва има минимум :min числа.","validation.multiple_of":"Числото :attribute трябва да бъде кратно на :value.","validation.not_in":"Избраният :attribute е невалиден.","validation.not_regex":":attribute е с невалиден формат.","validation.numeric":":attribute трябва да бъде число.","validation.password.letters":"Полето :attribute трябва да съдържа поне една буква.","validation.password.mixed":"Полето :attribute трябва да съдържа поне една главна и една малка буква.","validation.password.numbers":"Полето :attribute трябва да съдържа поне една цифра.","validation.password.symbols":"Полето :attribute трябва да съдържа поне един символ.","validation.password.uncompromised":"Избраната :attribute съществува е дейта лийк. Моля изберете друга :attribute.","validation.present":"Полето :attribute трябва да съществува.","validation.prohibited":"Поле :attribute е забранено.","validation.prohibited_if":"The :attribute field is prohibited when :other is :value.","validation.prohibited_unless":"The :attribute field is prohibited unless :other is in :values.","validation.prohibits":"The :attribute field prohibits :other from being present.","validation.regex":"The :attribute format is invalid.","validation.required":"The :attribute field is required.","validation.required_array_keys":"The :attribute field must contain entries for: :values.","validation.required_if":"The :attribute field is required when :other is :value.","validation.required_if_accepted":"The :attribute field is required when :other is accepted.","validation.required_unless":"The :attribute field is required unless :other is in :values.","validation.required_with":"The :attribute field is required when :values is present.","validation.required_with_all":"The :attribute field is required when :values are present.","validation.required_without":"The :attribute field is required when :values is not present.","validation.required_without_all":"The :attribute field is required when none of :values are present.","validation.same":"The :attribute and :other must match.","validation.size.array":"The :attribute must contain :size items.","validation.size.file":"The :attribute must be :size kilobytes.","validation.size.numeric":"The :attribute must be :size.","validation.size.string":"The :attribute must be :size characters.","validation.starts_with":"The :attribute must start with one of the following: :values.","validation.string":"The :attribute must be a string.","validation.timezone":"The :attribute must be a valid timezone.","validation.unique":"The :attribute has already been taken.","validation.uploaded":"The :attribute failed to upload.","validation.url":"The :attribute must be a valid URL.","validation.uuid":"The :attribute must be a valid UUID.","validation.single":"When using :attribute it must be the only parameter in this request body","validation.onlyCustomOtpWithUri":"The uri parameter must be provided alone or only in combination with the 'custom_otp' parameter","validation.custom.icon.image":"Supported format are jpeg, png, bmp, gif, svg, or webp.","validation.custom.qrcode.image":"Supported format are jpeg, png, bmp, gif, svg, or webp.","validation.custom.uri.regex":"The :attribute is not a valid otpauth uri.","validation.custom.otp_type.in":"The :attribute is not supported.","validation.custom.email.exists":"Не е намерен акаунт с този имейл.","validation.custom.secret.isBase32Encoded":"The :attribute must be a base32 encoded string.","validation.custom.account.regex":"The :attribute must not contain colon.","validation.custom.service.regex":"The :attribute must not contain colon.","validation.custom.label.required":"Адресът трябва да има етикет.","validation.custom.ids.regex":"ID-тата трябва да са разделени със запетая, и да не завършват с такава."};export{t as default}; diff --git a/public/build/assets/php_bg-bcff75d8.js b/public/build/assets/php_bg-bcff75d8.js deleted file mode 100644 index 31c87bde..00000000 --- a/public/build/assets/php_bg-bcff75d8.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"auth.failed":"Тези идентификационни данни не съответстват на нашите записи.","auth.password":"Предоставената парола е неправилна.","auth.throttle":"Твърде много опити за влизане. Опитайте се пак след :seconds секунди.","auth.sign_out":"Изход","auth.sign_in":"Вход","auth.sign_in_using":"Влизане с","auth.or_continue_with":"You an also continue with:","auth.sign_in_using_security_device":"Влезте с помощта на защитно устройство","auth.login_and_password":"потребител и парола","auth.register":"Регистрация","auth.welcome_to_2fauth":"Добре дошли в 2FAuth","auth.autolock_triggered":"Задейства се автоматично заключване","auth.autolock_triggered_punchline":"Задействано е автоматизно заклюване. Връзката ви е автоматично прекратена.","auth.already_authenticated":"Вече сте удостоверени","auth.authentication":"Удостоверяване","auth.maybe_later":"Може би по-късно","auth.user_account_controlled_by_proxy":"Потребителски акаунт, предоставен от прокси за удостоверяване.
Управлявайте акаунта на ниво прокси.","auth.auth_handled_by_proxy":"Удостоверяването се обработва от ревърс прокси, настройките по-долу са деактивирани.
Управлявайте удостоверяването на ниво прокси.","auth.confirm.logout":"Сигурни ли сте, че искате да излезете?","auth.confirm.revoke_device":"Сигурни ли сте, че искате да анулирате това устройство?","auth.confirm.delete_account":"Сигурни ли сте, че искате да изтриете профила си?","auth.webauthn.security_device":"устройство за сигурност","auth.webauthn.security_devices":"Устройства за сигурност","auth.webauthn.security_devices_legend":"Устройства за удостоверяване, които можете да използвате за влизане в 2FAuth, като ключове за сигурност (като Yubikey) или смартфони с биометрични възможности (като Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`Можете да подобрите сигурността на вашия 2FAuth акаунт, като активирате WebAuthn удостоверяване.

- WebAuthn ви позволява да използвате надеждни устройства (като Yubikeys или смартфони с биометрични възможности), за да влизате бързо и по-сигурно.`,"auth.webauthn.use_security_device_to_sign_in":"Пригответе се за удостоверяване с помощта на (едно от) вашите устройства за сигурност. Включете ключа си, свалете маската за лице или ръкавиците и т.н.","auth.webauthn.lost_your_device":"Загубихте устройството си?","auth.webauthn.recover_your_account":"Възстановете профила си","auth.webauthn.account_recovery":"Възстановяване на профил","auth.webauthn.recovery_punchline":"2FAuth ще ви изпрати връзка за възстановяване на този имейл адрес. Кликнете върху връзката получена в имейл-а и следвайте инструкциите.

Уверете се, че отваряте имейла на устройство, което изцяло притежавате.","auth.webauthn.send_recovery_link":"Изпратете връзка за възстановяване","auth.webauthn.account_recovery_email_sent":"Имейлът за възстановяване на акаунта е изпратен!","auth.webauthn.disable_all_security_devices":"Деактивирайте всички защитни устройства","auth.webauthn.disable_all_security_devices_help":"Всички ваши устройства за сигурност ще бъдат отменени. Използвайте тази опция, ако сте загубили такова устройство или сигурността му е била компрометирана.","auth.webauthn.register_a_new_device":"Регистрирайте ново устройство","auth.webauthn.register_a_device":"Регистрирайте устройство","auth.webauthn.device_successfully_registered":"Устройството е регистрирано успешно","auth.webauthn.device_revoked":"Устройството е анулирано успешно","auth.webauthn.revoking_a_device_is_permanent":"Анулираното на устройство е перманентно","auth.webauthn.recover_account_instructions":"За да възстановите акаунта си, 2FAuth нулира някои настройки на Webauthn, така че да можете да влезете с вашия имейл и парола.","auth.webauthn.invalid_recovery_token":"Невалиден токен за възстановяване","auth.webauthn.webauthn_login_disabled":"Влизането чрез Webauthn е деактивирано","auth.webauthn.invalid_reset_token":"Този токен за нулиране е невалиден.","auth.webauthn.rename_device":"Преименуване на устройство","auth.webauthn.my_device":"Моето устройство","auth.webauthn.unknown_device":"Неразпознато устройство","auth.webauthn.use_webauthn_only.label":"Използвайте само WebAuthn","auth.webauthn.use_webauthn_only.help":`Направете WebAuthn единственият разрешен метод за влизане във вашия 2FAuth акаунт. Това е препоръчителната настройка, за да се възползвате от подобрената защита на WebAuthn.

- В случай на загуба на устройство, ще можете да възстановите акаунта си, като нулирате тази опция и влезете с вашия имейл и парола.

- внимание! Формулярът за имейл и парола остава достъпен, въпреки че тази опция е активирана, но винаги ще връща отговор „Неуспешно удостоверяване“.`,"auth.webauthn.need_a_security_device_to_enable_options":"Задайте поне едно устройство, за да активирате следните опции","auth.forms.name":"Име","auth.forms.login":"Вход","auth.forms.webauthn_login":"WebAuthn вход","auth.forms.email":"Имейл","auth.forms.password":"Парола","auth.forms.reveal_password":"Покажи паролата","auth.forms.hide_password":"Скрий паролата","auth.forms.confirm_password":"Потвърждаване на паролата","auth.forms.new_password":"New password","auth.forms.confirm_new_password":"Потвърди новата парола","auth.forms.dont_have_account_yet":"Все още нямате акаунт?","auth.forms.already_register":"Вече сте регистриран?","auth.forms.authentication_failed":"Неуспешна идентификация","auth.forms.forgot_your_password":"Забравена парола?","auth.forms.request_password_reset":"Възстанови я","auth.forms.reset_your_password":"Нулиране на паролата","auth.forms.reset_password":"Нулиране на парола","auth.forms.disabled_in_demo":"Функцията е деактивирана в демо режима","auth.forms.current_password.label":"Текуща парола","auth.forms.current_password.help":"Попълнете текущата си парола, за да потвърдите, че това сте вие","auth.forms.change_password":"Промяна на паролата","auth.forms.send_password_reset_link":"Изпратете връзка за нулиране на паролата","auth.forms.password_successfully_changed":"Паролата е променена успешно","auth.forms.edit_account":"Редактиране на профил","auth.forms.profile_saved":"Профилът е актуализиран успешно!","auth.forms.welcome_to_demo_app_use_those_credentials":"Добре дошли в демонстрацията на 2FAuth.

Можете да влезете с имейл demo@2fauth.app и парола demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Добре дошли в тестовата версия на 2FAuth.

Използвайте имейл testing@2fauth.app и парола password","auth.forms.register_punchline":"Добре дошли в 2FAuth.
Имате нужда от акаунт, за да продължите, моля, регистрирайте се.","auth.forms.reset_punchline":"2FAuth ще ви изпрати връзка за нулиране на паролата на този адрес. Кликнете върху връзката в получения имейл, за да зададете нова парола.","auth.forms.name_this_device":"Назовете това устройство","auth.forms.delete_account":"Изтриване на профил","auth.forms.delete_your_account":"Изтрийте профила си","auth.forms.delete_your_account_and_reset_all_data":"Това ще нулира 2FAuth. Вашият потребителски акаунт ще бъде изтрит, както и всички 2FA данни. Няма връщане назад.","auth.forms.reset_your_password_to_delete_your_account":"If you always used SSO to sign in, sign out then use the reset password feature to get a password so you can fill this form.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Deleting your 2FAuth account has no impact on your external SSO account.","auth.forms.user_account_successfully_deleted":"Потребителският профил е изтрит успешно","auth.forms.has_lower_case":"Съдържа малки букви","auth.forms.has_upper_case":"Съдържа големи букви","auth.forms.has_special_char":"Съдържа символи","auth.forms.has_number":"Съдържа числа","auth.forms.is_long_enough":"Минимум 8 символа.","auth.forms.mandatory_rules":"Задължително","auth.forms.optional_rules_you_should_follow":"Силно препоръчително","auth.forms.caps_lock_is_on":"Главните букви са включени","commons.cancel":"Отказ","commons.update":"Актуализация","commons.copy":"Копиране","commons.copy_to_clipboard":"Копиране в клипборда","commons.copied_to_clipboard":"Копирано в клипборда","commons.profile":"Профил","commons.edit":"Редактиране","commons.delete":"Изтрий","commons.disable":"Деактивиране","commons.enable":"Активирай","commons.create":"Създай","commons.save":"Запази","commons.close":"Затвори","commons.clear":"Изчисти","commons.clear_search":"Изчисти търсенето","commons.demo_do_not_post_sensitive_data":"Това е демонстрационна програма. Не записвайте чувствителна информация","commons.testing_do_not_post_sensitive_data":"Това е тестова програма. Не записвайте чувствителна информация","commons.selected":"избрани","commons.name":"Име","commons.manage":"Управление","commons.done":"Готово","commons.new":"Нов","commons.back":"Назад","commons.move":"Премести","commons.export":"Експорт","commons.all":"Всички","commons.select_all":"Избери всички","commons.clear_selection":"Изчисти избраните","commons.sort_descending":"Сортирай низходящо","commons.sort_ascending":"Cортирай възходящо","commons.rename":"Преименуване","commons.new_name":"Ново име","commons.options":"Настройки","commons.reload":"презаредите","commons.refresh":"Refresh","commons.data_refreshed_to_reflect_server_changes":"Data has been refresh to reflect server-side changes","commons.generate":"Създаване","commons.generating_otp":"Генериране на OTP","commons.open_in_browser":"Отвори в браузър","commons.continue":"Продължи","commons.discard":"Откажи","commons.about":"Относно","commons.usefull_links":"Полезни връзки","commons.environment":"Среда","commons.credits":"Заслуги","commons.2fauth_teaser":"Уеб приложение за управление на вашите акаунти с двуфакторно удостоверяване (2FA) и генериране на техните кодове за сигурност","commons.made_with":"Изработено с","commons.ui_icons_by":"Икони","commons.logos_by":"Лога от","commons.search":"Търсене","commons.resources":"Ресурси","commons.check_for_update":"Проверка за нова версия","commons.check_for_update_help":"Автоматично проверявайте (веднъж седмично) и предупреди, когато в Github се публикува нова версия на 2FAuth","commons.you_are_up_to_date":"Тази инстанция е актуална","commons.2fauth_description":"Уеб приложение за управление на вашите акаунти с двуфакторно удостоверяване (2FA) и генериране на техните кодове за сигурност","commons.image_of_qrcode_to_scan":"Изображение на QR код за сканиране","commons.file":"Файл","commons.or":"ИЛИ","commons.close_the_x_page":"Затвори {pagetitle} страницата","commons.submit":"Submit","commons.default":"Default","commons.back_to_home":"Back to home","commons.nothing":"nothing","errors.resource_not_found":"Ресурсът не е намерен","errors.error_occured":"Възникна грешка:","errors.refresh":"Презареждане","errors.no_valid_otp":"Няма валиден OTP ресурс в този QR код","errors.something_wrong_with_server":"Нещо не е наред със сървъра ви","errors.Unable_to_decrypt_uri":"URIа не може да се декриптира","errors.not_a_supported_otp_type":"Този OTP формат не се поддържа","errors.cannot_create_otp_without_secret":"Не може да се създаде OTP без тайна","errors.data_of_qrcode_is_not_valid_URI":"Данните от този QR код не са валиден OTP Auth URI. QR кодът съдържа:","errors.wrong_current_password":"Wrong current password, nothing has changed","errors.error_during_encryption":"Шифроването е неуспешно, вашата база данни остава незащитена.","errors.error_during_decryption":"Дешифрирането е неуспешно, вашата база данни все още е защитена. Това се дължи главно на проблем с целостта на криптираните данни за един или повече акаунти.","errors.qrcode_cannot_be_read":"Този QR код е нечетлив","errors.too_many_ids":"твърде много идентификатори бяха включени в параметъра на заявката, разрешени са максимум 100","errors.delete_user_setting_only":"Само настройка създадена от потребител може да бъде изтрита","errors.indecipherable":"*неразгадаем*","errors.cannot_decipher_secret":"Тайната не може да бъде разгадана. Това се причинява главно от грешен APP_KEY, зададен в конфигурационния файл .env на 2Fauth или на повредени данни в базата данни.","errors.https_required":"Изисква се HTTPS контекст","errors.browser_does_not_support_webauthn":"Вашето устройство не поддържа webauthn. Опитайте отново с по-модерен браузър","errors.aborted_by_user":"Прекратено от потребителя","errors.security_device_already_registered":"Device already registered","errors.not_allowed_operation":"Операцията не е разрешена","errors.no_authenticator_support_specified_algorithms":"No authenticators support specified algorithms","errors.authenticator_missing_discoverable_credential_support":"Authenticator missing discoverable credential support","errors.authenticator_missing_user_verification_support":"Authenticator missing user verification support","errors.unknown_error":"Неизвестна грешка","errors.security_error_check_rpid":"Грешка в сигурността
Проверете вашата WEBAUTHN_ID env променлива","errors.2fauth_has_not_a_valid_domain":"2FAuth's domain is not a valid domain","errors.user_id_not_between_1_64":"User ID was not between 1 and 64 chars","errors.no_entry_was_of_type_public_key":'No entry was of type "public-key"',"errors.unsupported_with_reverseproxy":"Не е приложимо при използване на прокси за удостоверяване","errors.user_deletion_failed":"Изтриването на профила не бе успешно, няма изтрити данни","errors.auth_proxy_failed":"Неуспешно удостоверяване на проксито","errors.auth_proxy_failed_legend":"2Fauth е конфигуриран да работи зад прокси за удостоверяване, но вашето прокси не връща очаквания хедър. Проверете конфигурацията си и опитайте отново.","errors.invalid_x_migration":"Невалидни или нечетливи :appname данни","errors.invalid_2fa_data":"Невалидни 2FA данни","errors.unsupported_migration":"Данните не отговарят на нито един поддържан формат","errors.unsupported_otp_type":"Неподдържан OTP тип","errors.encrypted_migration":"Нечетимо, данните изглеждат криптирани","errors.no_logo_found_for_x":"Няма налично лого за {service}","errors.file_upload_failed":"Качването на файл не бе успешно","errors.unauthorized":"Неразрешено","errors.unauthorized_legend":"Нямате права да видите този ресурс или да извършите това действие","errors.cannot_delete_the_only_admin":"Не може да изтрие единствения администраторски акаунт","errors.error_during_data_fetching":"💀 Something went wrong during data fetching","errors.check_failed_try_later":"Check failed, please retry later","errors.sso_disabled":"SSO is disabled","errors.sso_bad_provider_setup":"This SSO provider is not fully setup in your .env file","errors.sso_failed":"Authentication via SSO rejected","errors.sso_no_register":"Registrations are disabled","errors.sso_email_already_used":"A user account with the same email address already exists but it does not match your external account ID. Do not use SSO if you are already registered on 2FAuth with this email.","errors.account_managed_by_external_provider":"Account managed by an external provider","groups.groups":"Групи","groups.create_group":"Създай нова група","groups.show_group_selector":"Покажи избора на групи","groups.hide_group_selector":"Скрий избора на групи","groups.select_accounts_to_show":"Избери група профили за показване","groups.manage_groups":"Управление на групи","groups.active_group":"Активна група","groups.manage_groups_legend":"Можете да създавате групи, за да организирате акаунтите си по желания от вас начин. Всички профили остават видими в псевдо групата, наречена „Всички“, независимо от групата, към която принадлежат.","groups.deleting_group_does_not_delete_accounts":"Изтриването на група не изтрива профили","groups.move_selected_to":"Премести избраните в","groups.move_selected_to_group":"Преместете избраните в група","groups.no_group":"Няма група","groups.change_group":"Промени група","groups.group_successfully_created":"Групата беше създадена успешно","groups.group_name_saved":"Групата беше преименувана","groups.group_successfully_deleted":"Групата беше изтрита успешно","groups.forms.new_group":"Нова група","groups.forms.new_name":"Ново име","groups.forms.rename_group":"Преименуване на група","groups.confirm.delete":"Сигурни ли сте, че искате да изтриете тази група?","languages.browser_preference":"По предпочитание на браузъра","languages.en":"Английски","languages.fr":"Френски","languages.de":"Немски","languages.es":"Испански","languages.zh":"Китайски (опростен)","languages.ru":"Руски","languages.bg":"Български","pagination.previous":"« Назад","pagination.next":"Напред »","passwords.reset":"Вашата парола е нулирана!","passwords.sent":"Изпратихме Ви писмо с линк за нова парола!","passwords.throttled":"Моля, изчакайте, преди да опитате отново.","passwords.token":"Ключът за нулиране на паролата е невалиден.","passwords.user":"Не можем да намерим потребител с този имейл адрес.","passwords.password":"Паролите трябва да имат поне 8 символа и да съвпадат с потвърждението.","settings.settings":"Настройки","settings.preferences":"Предпочитания","settings.account":"Профил","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Токени","settings.options":"Опции","settings.user_preferences":"Потребителски предпочитания","settings.admin_settings":"Настройки на администратора","settings.confirm.revoke":"Наистина ли искате да анулирате този токен?","settings.administration":"Администрация","settings.administration_legend":"Докато предишните настройки са потребителски (всеки потребител може да зададе свои собствени предпочитания), следващите настройки са глобални и се прилагат за всички потребители. Само администратор може да преглежда и редактира тези настройки.","settings.only_an_admin_can_edit_them":"Only an administrator can view and edit them.","settings.you_are_administrator":"Вие сте администратор","settings.account_linked_to_sso_x_provider":"You signed-in via SSO using your :provider account. Your information cannot be changed here but on :provider.","settings.general":"Общи","settings.security":"Сигурност","settings.profile":"Профил","settings.change_password":"Промяна на паролата","settings.personal_access_tokens":"Персонални токени за достъп","settings.token_legend":"Токените за персонален достъп позволяват на всяко приложение да се удостовери в 2Fauth API. Трябва да посочите токена за достъп като Bearer токен в хедърите за оторизация на заявките за потребителски приложения.","settings.generate_new_token":"Генерирайте нов токен","settings.revoke":"Анулирaне","settings.token_revoked":"Токена е анулиран успешно","settings.revoking_a_token_is_permanent":"Анулираното на токена е перманентно","settings.make_sure_copy_token":"Уверете се, че сте копирали вашия личен токен за достъп. Няма да можете да го видите отново!","settings.data_input":"Въвеждане на данни","settings.forms.edit_settings":"Редактиране на настройките","settings.forms.setting_saved":"Настройките са запазени","settings.forms.new_token":"Нов токен","settings.forms.some_translation_are_missing":"Някои преводи липсват при използване на предпочитания от браузъра език?","settings.forms.help_translate_2fauth":"Помогнете за превода на 2FAuth","settings.forms.language.label":"Език","settings.forms.language.help":"Език, използван за превод на потребителския интерфейс 2FAuth. Наименуваните езици са завършени, задайте този по ваш избор, който да замени предпочитанията на браузъра ви.","settings.forms.show_otp_as_dot.label":"Показване на генерираните еднократни пароли като точка","settings.forms.show_otp_as_dot.help":"Заменете генерираните знаци за парола с ***, за да осигурите поверителност. Не засягайте функцията за копиране/поставяне","settings.forms.reveal_dotted_otp.label":'Reveal obscured OTP',"settings.forms.reveal_dotted_otp.help":"Let the ability to temporarily reveal Dot-Obscured passwords","settings.forms.close_otp_on_copy.label":'Затворете OTP след копиране',"settings.forms.close_otp_on_copy.help":"Кликването върху генерираната парола ще я копира и автоматично ще я скрива от екрана","settings.forms.copy_otp_on_display.label":'Копирайте OTP при показване',"settings.forms.copy_otp_on_display.help":'Автоматично копиране на генерирана парола веднага след като се появи на екрана. Поради ограниченията на браузърите само първата TOTP парола ще бъде копирана, а не ротационните',"settings.forms.use_basic_qrcode_reader.label":"Използване на основен четец на QR код","settings.forms.use_basic_qrcode_reader.help":"Ако имате проблеми при заснемането на QR кодове, тази опция позволява превключване към по-прост, но по-надежден четец на QR кодове","settings.forms.display_mode.label":"Режим на показване","settings.forms.display_mode.help":"Изберете дали искате профилите да се показват като списък или като решетка","settings.forms.password_format.label":"Форматиране на парола","settings.forms.password_format.help":"Променете начина, по който се показват паролите, като групирате цифри, за да улесните четливостта и запаметяването","settings.forms.pair":"на Две","settings.forms.pair_legend":"Групиране на цифрите две по две","settings.forms.trio_legend":"Групиране на цифрите три по три","settings.forms.half_legend":"Разделяне на цифрите на две равни групи","settings.forms.trio":"на Три","settings.forms.half":"на Половина","settings.forms.grid":"Решетка","settings.forms.list":"Списък","settings.forms.theme.label":"Облик","settings.forms.theme.help":"Прилагане на специфичен облик или прилагане на предпочитания според системните/браузърните предпочитания","settings.forms.light":"Светъл","settings.forms.dark":"Тъмен","settings.forms.automatic":"Авто","settings.forms.show_accounts_icons.label":"Показвай иконите","settings.forms.show_accounts_icons.help":"Показва иконите на профилите в основният екран","settings.forms.get_official_icons.label":"Взимане на официални икони","settings.forms.get_official_icons.help":"Взима официалната икона на издателя на 2FA при добавяне на акаунт (ако е възможно)","settings.forms.auto_lock.label":"Автоматично заключване","settings.forms.auto_lock.help":"Отписване на потребителя автоматично в случай на неактивност. Няма ефект, когато удостоверяването се обработва от прокси и не е указан персонализиран URL адрес за излизане.","settings.forms.use_encryption.label":"Защита на чувствителните данни","settings.forms.use_encryption.help":'Чувствителните данни, 2FA тайните и имейлите се съхраняват криптирани в база данни. Не забравяйте да направите резервно копие на стойността "APP_KEY" във вашия .env файл (или на целия файл), тъй като тя служи като ключ за криптиране. Няма начин да дешифрирате криптирани данни без този ключ.',"settings.forms.default_group.label":"Група по подразбиране","settings.forms.default_group.help":"Групата, към която са свързани новосъздадените акаунти","settings.forms.useDirectCapture.label":"Директно въвеждане","settings.forms.useDirectCapture.help":"Изберете дали искате да бъдете подканени да изберете режим на въвеждане сред наличните или искате директно да използвате режима на въвеждане по подразбиране","settings.forms.defaultCaptureMode.label":"Режим на въвеждане по подразбиране","settings.forms.defaultCaptureMode.help":"Режим на въвеждане по подразбиране, използван, когато опцията Директно въвеждане е включена","settings.forms.remember_active_group.label":"Запомняне на груповия филтър","settings.forms.remember_active_group.help":"Запазва последния приложен групов филтър и го възстановява при следващото ви посещение","settings.forms.disable_registration.label":"Деактивиране на регистрациите","settings.forms.disable_registration.help":"Предотвратява нови потребителски регистрации","settings.forms.enable_sso.label":"Enable Single Sign-On (SSO)","settings.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","settings.forms.otp_generation.label":"Покажи паролата","settings.forms.otp_generation.help":'Задайте как и кога OTPs да се показват.
',"settings.forms.otp_generation_on_request":"След клик/тап","settings.forms.otp_generation_on_request_legend":"Самостоятелно, в отделен изглед","settings.forms.otp_generation_on_request_title":"Щракнете върху акаунт, за да получите парола в отделен изглед","settings.forms.otp_generation_on_home":"Постоянно","settings.forms.otp_generation_on_home_legend":"Всички в основният изглед","settings.forms.otp_generation_on_home_title":"Показване на всички пароли в основния изглед, без да правите нищо","settings.forms.never":"Никога","settings.forms.on_otp_copy":"При копиране на кода","settings.forms.1_minutes":"След 1 минута","settings.forms.5_minutes":"След 5 минути","settings.forms.10_minutes":"След 10 минути","settings.forms.15_minutes":"След 15 минути","settings.forms.30_minutes":"След 30 минути","settings.forms.1_hour":"След 1 час","settings.forms.1_day":"След 1 ден","settings.forms.livescan":"Сканиране на QR код","settings.forms.upload":"Качване на QR код","settings.forms.advanced_form":"Разширена форма","titles.404":"Записът не е намерен","titles.start":"Нов профил","titles.capture":"Заснеми QR","titles.accounts":"Профили","titles.createAccount":"Създай профил","titles.importAccounts":"Импортиране на профили","titles.editAccount":"Промени профил","titles.showQRcode":"Профил като QR код","titles.groups":"Групи","titles.createGroup":"Създай група","titles.editGroup":"Промяна на група","titles.settings.options":"Опции","titles.settings.account":"Потребителски профил","titles.settings.oauth.tokens":"OAuth токени","titles.settings.oauth.generatePAT":"Нов персонален токен","titles.settings.webauthn.editCredential":"Редакция на устройство","titles.settings.webauthn.devices":"WebAuthn устройства","titles.login":"Вход","titles.register":"Регистрация","titles.autolock":"Авт. заключване","titles.password.request":"Нулиране на паролата","titles.password.reset":"Нова парола","titles.webauthn.lost":"Възстановяване на профил","titles.webauthn.recover":"Регистриране на устройство","titles.flooded":"Наводнение","titles.genericError":"Грешка","titles.about":"Относно","twofaccounts.service":"Услуга","twofaccounts.account":"Профил","twofaccounts.accounts":"Профили","twofaccounts.icon":"Икона","twofaccounts.icon_for_account_x_at_service_y":"Икона на профил {account} в {service}","twofaccounts.icon_to_illustrate_the_account":"Икона, илюстрираща акаунта","twofaccounts.remove_icon":"Премахни икона","twofaccounts.no_account_here":"Тук няма 2FA!","twofaccounts.add_first_account":"Изберете метод и добавете първия си акаунт","twofaccounts.use_full_form":"Или използвайте пълния формуляр","twofaccounts.add_one":"Добавяне на един","twofaccounts.show_qrcode":"Покажи QR код","twofaccounts.no_service":"- няма услуга -","twofaccounts.account_created":"Профилът беше създаден успешно","twofaccounts.account_updated":"Профилът е актуализиран успешно","twofaccounts.accounts_deleted":"Профил(ите) са изтрити успешно","twofaccounts.accounts_moved":"Профил(ите) са преместени успешно","twofaccounts.export_selected_to_json":"Изтегляне на json извадка на избраните профили","twofaccounts.reveal":"reveal","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"Джон Доу","twofaccounts.forms.new_account":"Нов профил","twofaccounts.forms.edit_account":"Редактиране на профил","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Сканирайте QR код","twofaccounts.forms.upload_qrcode":"Качете QR код","twofaccounts.forms.use_advanced_form":"Използвайте разширената форма","twofaccounts.forms.prefill_using_qrcode":"Попълнете използвайки QR код","twofaccounts.forms.use_qrcode.val":"Използвайте QR код","twofaccounts.forms.use_qrcode.title":"Използвайте QR код, за магическо попълване","twofaccounts.forms.unlock.val":"Отключи","twofaccounts.forms.unlock.title":"Отключи го (на ваш собствен риск)","twofaccounts.forms.lock.val":"Заключи","twofaccounts.forms.lock.title":"Заключи го","twofaccounts.forms.choose_image":"Качи","twofaccounts.forms.i_m_lucky":"На късмет","twofaccounts.forms.i_m_lucky_legend":'Бутонът "На късмет" ще опита да изтегли официалната икона на дадената услуга. Въведете действителното име на услугата без разширение ".xyz" и се опитайте да избегнете правописна грешка. (бета функция)',"twofaccounts.forms.test":"Тест","twofaccounts.forms.secret.label":"Тайна","twofaccounts.forms.secret.help":"Ключът, използван за генериране на вашите кодове за сигурност","twofaccounts.forms.plain_text":"Чист текст","twofaccounts.forms.otp_type.label":'Изберете типа на OTP за създаване',"twofaccounts.forms.otp_type.help":"Временен OTP или HMAC базиран OTP или Steam OTP","twofaccounts.forms.digits.label":"Цифри","twofaccounts.forms.digits.help":"Броят цифри на генерираните кодове за сигурност","twofaccounts.forms.algorithm.label":"Алгоритъм","twofaccounts.forms.algorithm.help":"Алгоритъмът, използван за защита на вашите кодове за сигурност","twofaccounts.forms.period.label":"Период","twofaccounts.forms.period.placeholder":"30 по подразбиране","twofaccounts.forms.period.help":"Периодът на валидност на генерираните кодове за сигурност в секунди","twofaccounts.forms.counter.label":"Брояч","twofaccounts.forms.counter.placeholder":"0 по подразбиране","twofaccounts.forms.counter.help":"Първоначалната стойност на брояча","twofaccounts.forms.counter.help_lock":"Рисковано е да редактирате брояча, тъй като можете да десинхронизирате акаунта със сървъра за проверка на услугата. Използвайте иконата за заключване, за да разрешите промяната, но само ако знаете, че правите","twofaccounts.forms.image.label":"Изображение","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"URL адресът на външно изображение, което да се използва като икона на акаунта","twofaccounts.forms.options_help":"Можете да оставите следните опции празни, ако не знаете как да ги зададете. Ще бъдат приложени най-често използваните стойности.","twofaccounts.forms.alternative_methods":"Алтернативни методи","twofaccounts.stream.live_scan_cant_start":"Сканирането не може да стартира :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth няма разрешение за достъп до камерата ви","twofaccounts.stream.need_grant_permission.solution":"Трябва да дадете разрешение за използване на камерата на вашето устройство. Ако вече сте отказали и вашият браузър не ви подкани отново, моля, вижте документацията на браузъра, за да разберете как да дадете разрешение.","twofaccounts.stream.need_grant_permission.click_camera_icon":"It is usually done by clicking on a slashed camera icon in or next to the browser's address bar","twofaccounts.stream.not_readable.reason":"Неуспешно зареждане на скенера","twofaccounts.stream.not_readable.solution":"Камерата използва ли се вече? Уверете се, че никое друго приложение не използва камерата и опитайте отново","twofaccounts.stream.no_cam_on_device.reason":"Няма камера на това устройство","twofaccounts.stream.no_cam_on_device.solution":"Може би сте забравили да включите уеб камерата си","twofaccounts.stream.secured_context_required.reason":"Изисква се защитен контекст","twofaccounts.stream.secured_context_required.solution":"За сканиране се изисква HTTPS. Ако стартирате 2FAuth от вашия компютър, не използвайте виртуален хост, различен от localhost","twofaccounts.stream.https_required":"За стрийминг от камерата се изисква HTTPS","twofaccounts.stream.camera_not_suitable.reason":"Инсталираните камери не са подходящи","twofaccounts.stream.camera_not_suitable.solution":"Моля, използвайте друго устройство/камера","twofaccounts.stream.stream_api_not_supported.reason":"Бразучера не поддържа поточно API","twofaccounts.stream.stream_api_not_supported.solution":"Трябва да използвате модерен браузър","twofaccounts.confirm.delete":"Сигурни ли сте, че искате да изтриете този профил?","twofaccounts.confirm.cancel":"Профилът ще бъде загубен. Сигурен ли си?","twofaccounts.confirm.discard":"Сигурни ли сте, че искате да отхвърлите профила?","twofaccounts.confirm.discard_all":"Сигурни ли сте, че искате да отхвърлите всички профили?","twofaccounts.confirm.discard_duplicates":"Сигурни ли сте, че искате да отхвърлите всички дубликати?","twofaccounts.import.import":"Импорт","twofaccounts.import.to_import":"Импорт","twofaccounts.import.import_legend":"2FAuth може да импортира данни от различни 2FA приложения.
Използвайте функцията за експортиране на тези приложения, за да получите ресурс за мигриране (QR код или файл) и да го заредите, като използвате предпочитания от вас метод по-долу.","twofaccounts.import.import_legend_afterpart":"Use the Export feature of these apps to get a migration resource like a QR code or a JSON file then load it here.","twofaccounts.import.upload":"Качи","twofaccounts.import.scan":"Сканирай","twofaccounts.import.supported_formats_for_qrcode_upload":"Приемат се: jpg, jpeg, png, bmp, gif, svg или webp","twofaccounts.import.supported_formats_for_file_upload":"Приема се: чист текст, json, 2fas","twofaccounts.import.supported_migration_formats":"Поддържани формати за миграция","twofaccounts.import.qr_code":"QR код","twofaccounts.import.text_file":"Text file","twofaccounts.import.plain_text":"Чист текст","twofaccounts.import.parsing_data":"Parsing data...","twofaccounts.import.issuer":"Издател","twofaccounts.import.imported":"Импортиран","twofaccounts.import.failure":"Грешка","twofaccounts.import.x_valid_accounts_found":"Намерени са {count} валидни профила","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"The following 2FA accounts were found in the migration resource. So far none of them have been added to 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Use the available buttons to permanently save them to your 2FA collection or discard them.","twofaccounts.import.import_all":"Импорт. на всички","twofaccounts.import.import_this_account":"Импориране на профила","twofaccounts.import.discard_all":"Отхвърли всички","twofaccounts.import.discard_duplicates":"Отхвърли дубликатите","twofaccounts.import.discard_this_account":"Отхвърли профила","twofaccounts.import.generate_a_test_password":"Генериране на тестов код","twofaccounts.import.possible_duplicate":"Вече съществува профил със същите данни","twofaccounts.import.invalid_account":"- невалиден профил -","twofaccounts.import.invalid_service":"- невалидна услуга -","twofaccounts.import.do_not_set_password_or_encryption":"НЕ активирайте защита с парола или криптиране, когато експортирате данни (от 2FA приложение), които искате да импортирате в 2FAuth.","validation.accepted":"Полето :attribute трябва да бъде приетo.","validation.accepted_if":"Полето :attribute да бъде приет когато :other е :value.","validation.active_url":"Полето :attribute не е валиден URL.","validation.after":"Полето :attribute трябва да е дата след :date.","validation.after_or_equal":"Полето :attribute трябва да е дата след или равна на :date.","validation.alpha":"Полето :attribute трябва да съдържа само букви.","validation.alpha_dash":"Полето :attribute трябва да съдържа само букви, цифри, долна черта и тире.","validation.alpha_num":"Полето :attribute трябва да съдържа само букви и цифри.","validation.array":"Полето :attribute трябва да е низ.","validation.before":"Полето :attribute трябва да е дата преди :date.","validation.before_or_equal":"Полето :attribute трябва да е дата преди или равна на :date.","validation.between.array":"Полето :attribute трябва да е между :min и :max елемента.","validation.between.file":"Полето :attribute трябва да е между :min и :max килобайта.","validation.between.numeric":"Полето :attribute трябва да е между :min и :max.","validation.between.string":"Полето :attribute трябва да е между :min и :max символа.","validation.boolean":"Полето :attribute трябва да съдържа булева стойност (true или false).","validation.confirmed":"Потвърждението на полето :attribute не съвпада.","validation.current_password":"Паролата е грешна.","validation.date":"Полето :attribute не е валидна дата.","validation.date_equals":"Полето :attribute трябва да е дата равна на :date.","validation.date_format":"Полето :attribute не съвпада с формата :format.","validation.declined":"Полето :attribute трябва да бъде отказано.","validation.declined_if":"Полето :attribute трябва да бъде отказано когато :other е :value.","validation.different":"Полето :attribute и :other трябва да са различни.","validation.digits":"Полето :attribute трябва да е :digits цифри.","validation.digits_between":"Полето :attribute трябва да е между :min и :max цифри.","validation.dimensions":"Полето :attribute съдържа невалидни размери.","validation.distinct":"Полето :attribute има дублирана стойност.","validation.doesnt_end_with":"Полето :Attribute трябва да завършва с една от следните стойности: :values.","validation.doesnt_start_with":"Полето :Attribute трябва да започва с едно от следните: :values.","validation.email":"Полето :attribute трябва да съдържа валиден имейл.","validation.ends_with":"Полето :attribute трябва да завърпва с една от следните стойности: :values.","validation.enum":"Избраното :attribute е невалидно.","validation.exists":"Избраното поле :attribute е невалидно.","validation.file":"Полето :attribute трябва да е файл.","validation.filled":"Полето :attribute трябва да съдържа стойнот.","validation.gt.array":":Attribute трябва да разполага с повече от :value елемента.","validation.gt.file":"Полето :attribute трябва да е по-голямо от :value килобакта.","validation.gt.numeric":"Полето :attribute трябва да е по-голямо от :value.","validation.gt.string":"Дължината на :attribute трябва да бъде по-голямо от :value символа.","validation.gte.array":":attribute трябва да има :value елемента или повече.","validation.gte.file":":attribute трябва да е по-голям или равн на :value Kb.","validation.gte.numeric":":attribute трябва да е по-голямо или равно на :value.","validation.gte.string":":attribute трябва да е повече или равно на :value символа.","validation.image":":attribute трябва да e изображение.","validation.in":"Избраният :attribute е невалиден.","validation.in_array":"Полето :attribute не съществува в :other.","validation.integer":":attribute трябва да бъде цяло число.","validation.ip":":attribute трябва да бъде валиден IP адрес.","validation.ipv4":":attribute трябва да бъде валиден IPv4 адрес.","validation.ipv6":":attribute трябва да бъде валиден IPv6 адрес.","validation.json":":attribute трябва да съдържа валиден JSON.","validation.lt.array":":attribute трябва да разполага с по-малко от :value елемента.","validation.lt.file":":attribute не трябва да е по-голям от :value килобакта.","validation.lt.numeric":":attribute трябва да бъде по-малко от :value.","validation.lt.string":":Attribute трябва да бъде по-малка от :value знака.","validation.lte.array":":attribute не трябва да има повече от :value елемента.","validation.lte.file":":attribute трябва да бъде по-малък от или равен на :value килобайта.","validation.lte.numeric":":attribute трябва да бъде по-малко или равно на :value.","validation.lte.string":":attribute трябва да бъде по-малко от или равно на :value знака.","validation.mac_address":":attribute трябва да бъде валиден MAC адрес.","validation.max.array":":attribute не трябва да има повече от :max елемента.","validation.max.file":":attribute не трябва да бъде по-голямо от :max килобайта.","validation.max.numeric":":attribute не трябва да бъде по-голям от :max.","validation.max.string":"Полето :attribute трябва да бъде по-малко от :max знака.","validation.max_digits":"Полето :attribute трябва да има по-малко от :max елемента.","validation.mimes":"Полето :attribute трябва да бъде файл от тип: :values.","validation.mimetypes":"Полето :attribute трябва да бъде файл от тип: :values.","validation.min.array":"Полето :attribute трябва да има поне :min елемента.","validation.min.file":"Полето :attribute трябва да бъде с големина минимум :min KB.","validation.min.numeric":"Полето :attribute трябва да бъде минимум :min.","validation.min.string":"Полето :attribute трябва да бъде минимум :min знака.","validation.min_digits":"Полето :attribute трябва има минимум :min числа.","validation.multiple_of":"Числото :attribute трябва да бъде кратно на :value.","validation.not_in":"Избраният :attribute е невалиден.","validation.not_regex":":attribute е с невалиден формат.","validation.numeric":":attribute трябва да бъде число.","validation.password.letters":"Полето :attribute трябва да съдържа поне една буква.","validation.password.mixed":"Полето :attribute трябва да съдържа поне една главна и една малка буква.","validation.password.numbers":"Полето :attribute трябва да съдържа поне една цифра.","validation.password.symbols":"Полето :attribute трябва да съдържа поне един символ.","validation.password.uncompromised":"Избраната :attribute съществува е дейта лийк. Моля изберете друга :attribute.","validation.present":"Полето :attribute трябва да съществува.","validation.prohibited":"Поле :attribute е забранено.","validation.prohibited_if":"The :attribute field is prohibited when :other is :value.","validation.prohibited_unless":"The :attribute field is prohibited unless :other is in :values.","validation.prohibits":"The :attribute field prohibits :other from being present.","validation.regex":"The :attribute format is invalid.","validation.required":"The :attribute field is required.","validation.required_array_keys":"The :attribute field must contain entries for: :values.","validation.required_if":"The :attribute field is required when :other is :value.","validation.required_if_accepted":"The :attribute field is required when :other is accepted.","validation.required_unless":"The :attribute field is required unless :other is in :values.","validation.required_with":"The :attribute field is required when :values is present.","validation.required_with_all":"The :attribute field is required when :values are present.","validation.required_without":"The :attribute field is required when :values is not present.","validation.required_without_all":"The :attribute field is required when none of :values are present.","validation.same":"The :attribute and :other must match.","validation.size.array":"The :attribute must contain :size items.","validation.size.file":"The :attribute must be :size kilobytes.","validation.size.numeric":"The :attribute must be :size.","validation.size.string":"The :attribute must be :size characters.","validation.starts_with":"The :attribute must start with one of the following: :values.","validation.string":"The :attribute must be a string.","validation.timezone":"The :attribute must be a valid timezone.","validation.unique":"The :attribute has already been taken.","validation.uploaded":"The :attribute failed to upload.","validation.url":"The :attribute must be a valid URL.","validation.uuid":"The :attribute must be a valid UUID.","validation.single":"When using :attribute it must be the only parameter in this request body","validation.onlyCustomOtpWithUri":"The uri parameter must be provided alone or only in combination with the 'custom_otp' parameter","validation.custom.icon.image":"Supported format are jpeg, png, bmp, gif, svg, or webp.","validation.custom.qrcode.image":"Supported format are jpeg, png, bmp, gif, svg, or webp.","validation.custom.uri.regex":"The :attribute is not a valid otpauth uri.","validation.custom.otp_type.in":"The :attribute is not supported.","validation.custom.email.exists":"Не е намерен акаунт с този имейл.","validation.custom.secret.isBase32Encoded":"The :attribute must be a base32 encoded string.","validation.custom.account.regex":"The :attribute must not contain colon.","validation.custom.service.regex":"The :attribute must not contain colon.","validation.custom.label.required":"Адресът трябва да има етикет.","validation.custom.ids.regex":"ID-тата трябва да са разделени със запетая, и да не завършват с такава."};export{t as default}; diff --git a/public/build/assets/php_de-219f9ed4.js b/public/build/assets/php_de-219f9ed4.js deleted file mode 100644 index 7027b0d3..00000000 --- a/public/build/assets/php_de-219f9ed4.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"auth.failed":"Diese Kombination aus Zugangsdaten wurde nicht in unserer Datenbank gefunden.","auth.password":"Das angegebene Passwort ist falsch.","auth.throttle":"Zu viele Loginversuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.","auth.sign_out":"Abmelden","auth.sign_in":"Anmelden","auth.sign_in_using":"Anmelden mit","auth.or_continue_with":"You an also continue with:","auth.sign_in_using_security_device":"Mit einem Sicherheitsgerät anmelden","auth.login_and_password":"benutzername & passwort","auth.register":"Registrieren","auth.welcome_to_2fauth":"Willkommen bei 2FAuth","auth.autolock_triggered":"Automatische Sperre ausgelöst","auth.autolock_triggered_punchline":"Das Ereignis, das von der Auto-Lock-Funktion beobachtet wird, wurde gestartet. Sie wurden automatisch getrennt.","auth.already_authenticated":"Bereits angemeldet","auth.authentication":"Authentifizierung","auth.maybe_later":"Vielleicht später","auth.user_account_controlled_by_proxy":"Benutzerkonto, das von einem Authentifizierungsproxy zur Verfügung gestellt wurde.
Verwalte das Konto auf Proxy-Ebene.","auth.auth_handled_by_proxy":"Authentifizierung von einem Reverse-Proxy verwaltet, unten sind die Einstellungen deaktiviert.
Authentifizierung auf Proxy-Ebene verwalten.","auth.confirm.logout":"Sind Sie sicher, dass Sie sich abmelden möchten?","auth.confirm.revoke_device":"Möchten Sie das Gerät wirklich entfernen?","auth.confirm.delete_account":"Möchten Sie Ihr Konto wirklich löschen?","auth.webauthn.security_device":"ein Sicherheitsgerät","auth.webauthn.security_devices":"Sicherheitsgeräte","auth.webauthn.security_devices_legend":"Authentifizierungsgeräte, mit denen Sie sich in 2FAuth anmelden können, wie z.B. Sicherheitsschlüssel (z.B. Yubikey) oder Smartphones mit biometrischen Fähigkeiten (z.B. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`Sie können die Sicherheit Ihres 2FAuth Accounts verbessern, indem Sie die WebAuthn Authentifizierung aktivieren.

- WebAuthn erlaubt es Ihnen, sich schnell und sicher mit vertrauenswürdigen Geräten (wie Yubikeys oder Smartphones mit biometrischen Fähigkeiten) anzumelden.`,"auth.webauthn.use_security_device_to_sign_in":"Machen Sie sich bereit, sich mit (einem) Ihren Sicherheitsgeräten zu authentifizieren. Schließen Sie Ihren Schlüssel an, entfernen Sie die Gesichtsmaske oder Handschuhe, etc.","auth.webauthn.lost_your_device":"Haben Sie Ihr Gerät verloren?","auth.webauthn.recover_your_account":"Konto wiederherstellen","auth.webauthn.account_recovery":"Kontowiederherstellung","auth.webauthn.recovery_punchline":"2FAuth wird Ihnen einen Wiederherstellungslink an diese E-Mail-Adresse senden. Klicken Sie auf den Link in der erhaltenen E-Mail und folgen Sie den Anweisungen.

Stellen Sie sicher, dass Sie die E-Mail auf einem Gerät öffnen, das vollständig Ihnen gehört.","auth.webauthn.send_recovery_link":"Wiederherstellungs-Link senden","auth.webauthn.account_recovery_email_sent":"E-Mail zur Kontowiederherstellung versendet!","auth.webauthn.disable_all_security_devices":"Alle Sicherheitsgeräte deaktivieren","auth.webauthn.disable_all_security_devices_help":"Alle Ihre Sicherheitsgeräte werden widerrufen. Benutzen Sie diese Option, wenn Sie eine verloren haben oder die Sicherheit des Geräts kompromittiert wurde.","auth.webauthn.register_a_new_device":"Ein neues Gerät registrieren","auth.webauthn.register_a_device":"Ein Gerät registrieren","auth.webauthn.device_successfully_registered":"Gerät erfolgreich registriert","auth.webauthn.device_revoked":"Gerät erfolgreich widerrufen","auth.webauthn.revoking_a_device_is_permanent":"Das Widerrufen eines Gerätes ist unwiderruflich","auth.webauthn.recover_account_instructions":"Um Ihr Konto wiederherzustellen, setzt 2FAuth einige Webauthn-Einstellungen zurück, damit Sie sich mit Ihrer E-Mail und Ihrem Passwort anmelden können.","auth.webauthn.invalid_recovery_token":"Ungültiger Wiederherstellungsschlüssel","auth.webauthn.webauthn_login_disabled":"Webauthn Login deaktiviert","auth.webauthn.invalid_reset_token":"Der Schlüssel zum Zurücksetzen des Passwortes ist ungültig.","auth.webauthn.rename_device":"Gerät umbenennen","auth.webauthn.my_device":"Mein Gerät","auth.webauthn.unknown_device":"Unbekanntes Gerät","auth.webauthn.use_webauthn_only.label":"Nur WebAuthn verwenden","auth.webauthn.use_webauthn_only.help":`WebAuthn als die einzige autorisierte Methode zulassen, um sich in Ihr 2FAuth Konto einzuloggen. Diese Option ist empfohlen und bietet eine verbesserte Sicherheit durch WebAuthn.

- Bei Verlust des WebAuthn-Geräts Sie können Ihr Konto wiederherstellen, indem Sie diese Option zurücksetzen und sich mit Ihrer E-Mail und Ihrem Passwort anmelden.

- Achtung! Das E-Mail & Passwort Anmeldeformular bleibt verfügbar, obwohl diese Option aktiviert ist. Eine Anmeldung hiermit führt jedoch immer zu der Meldung 'Authentifizierung fehlgeschlagen'.`,"auth.webauthn.need_a_security_device_to_enable_options":"Richten Sie mindestens ein Gerät ein um die nachfolgenden Optionen zu aktiveren","auth.forms.name":"Name","auth.forms.login":"Anmeldung","auth.forms.webauthn_login":"WebAuthn Anmeldung","auth.forms.email":"E-Mail","auth.forms.password":"Passwort","auth.forms.reveal_password":"Passwort anzeigen","auth.forms.hide_password":"Passwort verbergen","auth.forms.confirm_password":"Passwort bestätigen","auth.forms.new_password":"New password","auth.forms.confirm_new_password":"Neues Passwort bestätigen","auth.forms.dont_have_account_yet":"Sie haben noch keinen Account?","auth.forms.already_register":"Schon registriert?","auth.forms.authentication_failed":"Anmeldung fehlgeschlagen","auth.forms.forgot_your_password":"Passwort vergessen?","auth.forms.request_password_reset":"Zurücksetzen","auth.forms.reset_your_password":"Passwort zurücksetzen","auth.forms.reset_password":"Password zurücksetzen","auth.forms.disabled_in_demo":"Funktion ist im Demo-Modus deaktiviert","auth.forms.current_password.label":"Aktuelles Passwort","auth.forms.current_password.help":"Geben Sie Ihr aktuelles Passwort ein, um zu bestätigen, dass Sie es sind","auth.forms.change_password":"Passwort ändern","auth.forms.send_password_reset_link":"Link zum Zurücksetzen des Passworts senden","auth.forms.password_successfully_changed":"Passwort erfolgreich geändert","auth.forms.edit_account":"Account bearbeiten","auth.forms.profile_saved":"Profil erfolgreich aktualisiert!","auth.forms.welcome_to_demo_app_use_those_credentials":"Willkommen bei der 2FAuth Demo.

Sie können sich mit der E-Mail-Adresse demo@2fauth.app und dem Passwort demo anmelden","auth.forms.welcome_to_testing_app_use_those_credentials":"Willkommen bei der 2FAuth Testinstanz.

Verwenden Sie die E-Mail-Adresse testing@2fauth.app und das Passwort password","auth.forms.register_punchline":"Willkommen bei 2FAuth.
Sie müssen sich mit einem Konto anmelden, bitte registrieren Sie sich.","auth.forms.reset_punchline":"2FAuth sendet Ihnen einen Link zum Zurücksetzen des Passworts an diese Adresse. Klicken Sie auf den Link in der erhaltenen E-Mail, um ein neues Passwort festzulegen.","auth.forms.name_this_device":"Dieses Gerät benennen","auth.forms.delete_account":"Konto löschen","auth.forms.delete_your_account":"Ihr Konto Löschen","auth.forms.delete_your_account_and_reset_all_data":"Dies wird 2FAuth zurücksetzen. Ihr Benutzerkonto sowie alle 2FA-Daten werden gelöscht. Dies kann nicht rückgängig gemacht werden.","auth.forms.reset_your_password_to_delete_your_account":"If you always used SSO to sign in, sign out then use the reset password feature to get a password so you can fill this form.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Deleting your 2FAuth account has no impact on your external SSO account.","auth.forms.user_account_successfully_deleted":"Benutzerkonto wurde erfolgreich gelöscht","auth.forms.has_lower_case":"Beinhaltet Kleinbuchstaben","auth.forms.has_upper_case":"Beinhaltet Großbuchstaben","auth.forms.has_special_char":"Beinhaltet Sonderzeichen","auth.forms.has_number":"Beinhaltet Zahlen","auth.forms.is_long_enough":"Besteht aus mindestens 8 Zeichen.","auth.forms.mandatory_rules":"Erforderlich","auth.forms.optional_rules_you_should_follow":"Empfohlen (sehr)","auth.forms.caps_lock_is_on":"Die Feststelltaste ist aktiviert","commons.cancel":"Abbrechen","commons.update":"Aktualisieren","commons.copy":"Kopieren","commons.copy_to_clipboard":"In die Zwischenablage kopieren","commons.copied_to_clipboard":"In die Zwischenablage kopiert","commons.profile":"Profil","commons.edit":"Bearbeiten","commons.delete":"Löschen","commons.disable":"Deaktivieren","commons.enable":"Aktivieren","commons.create":"Erstellen","commons.save":"Speichern","commons.close":"Schließen","commons.clear":"Leeren","commons.clear_search":"Suche leeren","commons.demo_do_not_post_sensitive_data":"Dies ist eine Demo-App, veröffentlichen Sie keine sensiblen Daten","commons.testing_do_not_post_sensitive_data":"Dies ist eine Test-App, veröffentlichen Sie keine sensiblen Daten","commons.selected":"ausgewählt","commons.name":"Name","commons.manage":"Verwalten","commons.done":"Fertig","commons.new":"Neu","commons.back":"Zurück","commons.move":"Verschieben","commons.export":"Exportieren","commons.all":"Alle","commons.select_all":"Alle auswählen","commons.clear_selection":"Auswahl löschen","commons.sort_descending":"Sortierung absteigend","commons.sort_ascending":"Sortierung aufsteigend","commons.rename":"Umbenennen","commons.new_name":"Neu Name","commons.options":"Einstellungen","commons.reload":"Aktualisieren","commons.refresh":"Refresh","commons.data_refreshed_to_reflect_server_changes":"Data has been refresh to reflect server-side changes","commons.generate":"Generieren","commons.generating_otp":"Generiere OTP","commons.open_in_browser":"Im Browser öffnen","commons.continue":"Weiter","commons.discard":"Löschen","commons.about":"Über","commons.usefull_links":"Nützliche Links","commons.environment":"Umgebung","commons.credits":"Mitwirkende","commons.2fauth_teaser":"Eine Web-App um Ihre Zwei-Faktor-Authentifizierung (2FA) Konten zu verwalten und deren Sicherheitscodes zu generieren","commons.made_with":"Erstellt mit","commons.ui_icons_by":"UI-Icons von","commons.logos_by":"Logos von","commons.search":"Suche","commons.resources":"Ressourcen","commons.check_for_update":"Auf neue Version prüfen","commons.check_for_update_help":"Automatisch überprüfen (einmal pro Woche) und warnen, wenn eine neue Version von 2FAuth auf Github veröffentlicht wird","commons.you_are_up_to_date":"Instanz ist auf dem neusten Stand","commons.2fauth_description":"Eine Web-App um Ihre Zwei-Faktor-Authentifizierung (2FA) Konten zu verwalten und deren Sicherheitscodes zu generieren","commons.image_of_qrcode_to_scan":"Bild eines QR-Codes zum Scannen","commons.file":"Datei","commons.or":"ODER","commons.close_the_x_page":"{pagetitle} Seite schließen","commons.submit":"Submit","commons.default":"Default","commons.back_to_home":"Back to home","commons.nothing":"nothing","errors.resource_not_found":"Resource nicht gefunden","errors.error_occured":"Ein Fehler ist aufgetreten:","errors.refresh":"Aktualisieren","errors.no_valid_otp":"Keine gültige OTP-Ressource in diesem QR-Code","errors.something_wrong_with_server":"Etwas stimmt mit Ihrem Server nicht","errors.Unable_to_decrypt_uri":"URI konnte nicht entschlüsselt werden","errors.not_a_supported_otp_type":"Dieses OTP-Format wird derzeit nicht unterstützt","errors.cannot_create_otp_without_secret":"Das OTP kann nicht ohne Geheimnis erstellt werden","errors.data_of_qrcode_is_not_valid_URI":"Dieser QR-Code enthält keine gültige OTP Auth URI. Inhalt des QR-Codes:","errors.wrong_current_password":"Aktuelles Passwort falsch, nichts wurde geändert","errors.error_during_encryption":"Verschlüsselung fehlgeschlagen, Ihre Datenbank bleibt ungeschützt.","errors.error_during_decryption":"Entschlüsselung fehlgeschlagen, Ihre Datenbank bleibt geschützt. Dies wird hauptsächlich durch eine Integritätsproblem verschlüsselter Daten für ein oder mehrere Konten verursacht.","errors.qrcode_cannot_be_read":"Dieser QR-Code ist unlesbar","errors.too_many_ids":"zu viele Ids wurden in den Abfrageparameter eingefügt, maximal 100 erlaubt","errors.delete_user_setting_only":"Nur benutzerdefinierte Einstellungen können gelöscht werden","errors.indecipherable":"*nicht lesbar*","errors.cannot_decipher_secret":"Das Geheimnis kann nicht entschlüsselt werden. Dies wird hauptsächlich durch einen falsch gesetzten APP_KEY in der .env-Konfigurationsdatei von 2Fauth oder durch beschädigte Daten in der Datenbank verursacht.","errors.https_required":"HTTPS-Kontext erforderlich","errors.browser_does_not_support_webauthn":"Ihr Gerät unterstützt nicht webauthn. Versuchen Sie es später mit einem moderneren Browser erneut","errors.aborted_by_user":"Vom Benutzer abgebrochen","errors.security_device_already_registered":"Device already registered","errors.not_allowed_operation":"Vorgang nicht erlaubt","errors.no_authenticator_support_specified_algorithms":"No authenticators support specified algorithms","errors.authenticator_missing_discoverable_credential_support":"Authenticator missing discoverable credential support","errors.authenticator_missing_user_verification_support":"Authenticator missing user verification support","errors.unknown_error":"Unbekannter Fehler","errors.security_error_check_rpid":"Sicherheitsfehler
Prüfen Sie die Umgebungsvariable WEBAUTHN_ID","errors.2fauth_has_not_a_valid_domain":"2FAuth's domain is not a valid domain","errors.user_id_not_between_1_64":"User ID was not between 1 and 64 chars","errors.no_entry_was_of_type_public_key":'No entry was of type "public-key"',"errors.unsupported_with_reverseproxy":"Nicht anwendbar, wenn ein Auth-Proxy benutzt wird","errors.user_deletion_failed":"Löschen des Benutzerkontos fehlgeschlagen, es wurden keine Daten gelöscht","errors.auth_proxy_failed":"Proxy-Anmeldung scheitern","errors.auth_proxy_failed_legend":"2Fauth ist so konfiguriert, dass es hinter einem Authentifizierungs-Proxy läuft, aber Ihr Proxy gibt nicht den erwarteten Header zurück. Überprüfen Sie Ihre Konfiguration und versuchen Sie es erneut.","errors.invalid_x_migration":"Ungültige oder nicht lesbare Daten bei :appname","errors.invalid_2fa_data":"Ungültige 2FA Daten","errors.unsupported_migration":"Daten stimmen mit keinem der unterstützten Formate überein","errors.unsupported_otp_type":"Nicht unterstützter OTP -Typ","errors.encrypted_migration":"Nicht lesbar, die Daten scheinen verschlüsselt zu sein","errors.no_logo_found_for_x":"Kein Logo verfügbar für {service}","errors.file_upload_failed":"Hochladen der Datei fehlgeschlagen","errors.unauthorized":"Nicht berechtigt","errors.unauthorized_legend":"Sie haben keine Berechtigung, diese Ressource zu sehen oder diese Aktion auszuführen","errors.cannot_delete_the_only_admin":"Löschen des einzigen Admin-Kontos nicht möglichen","errors.error_during_data_fetching":"💀 Something went wrong during data fetching","errors.check_failed_try_later":"Check failed, please retry later","errors.sso_disabled":"SSO is disabled","errors.sso_bad_provider_setup":"This SSO provider is not fully setup in your .env file","errors.sso_failed":"Authentication via SSO rejected","errors.sso_no_register":"Registrations are disabled","errors.sso_email_already_used":"A user account with the same email address already exists but it does not match your external account ID. Do not use SSO if you are already registered on 2FAuth with this email.","errors.account_managed_by_external_provider":"Account managed by an external provider","groups.groups":"Gruppen","groups.create_group":"Neue Gruppe erstellen","groups.show_group_selector":"Gruppenauswahl anzeigen","groups.hide_group_selector":"Gruppenauswahl ausblenden","groups.select_accounts_to_show":"Kontogruppe auswählen","groups.manage_groups":"Gruppen verwalten","groups.active_group":"Aktive Gruppe","groups.manage_groups_legend":'Sie können Gruppen erstellen, um Ihre Konten so zu organisieren wie Sie wollen. Alle Konten bleiben in der Pseudo-Gruppe mit dem Namen "Alle" sichtbar, unabhängig davon, zu welcher Gruppe sie gehören.',"groups.deleting_group_does_not_delete_accounts":"Konten bleiben beim Löschen der Gruppe erhalten","groups.move_selected_to":"Ausgewählte verschieben","groups.move_selected_to_group":"Auswahl in eine Gruppe verschieben","groups.no_group":"Keine Gruppe","groups.change_group":"Gruppe ändern","groups.group_successfully_created":"Gruppe erfolgreich erstellt","groups.group_name_saved":"Gruppenname gespeichert","groups.group_successfully_deleted":"Gruppe erfolgreich gelöscht","groups.forms.new_group":"Neue Gruppe","groups.forms.new_name":"Neuer Name","groups.forms.rename_group":"Gruppe umbenennen","groups.confirm.delete":"Sind Sie sicher, dass Sie diese Gruppe löschen möchten?","languages.browser_preference":"Browsereinstellung","languages.en":"Englisch","languages.fr":"Französisch","languages.de":"Deutsch","languages.es":"Spanisch","languages.zh":"Vereinfachtes Chinesisch","languages.ru":"Russisch","languages.bg":"Bulgarisch","pagination.previous":"« Zurück","pagination.next":"Weiter »","passwords.reset":"Das Passwort wurde zurückgesetzt!","passwords.sent":"Passworterinnerung wurde gesendet!","passwords.throttled":"Bitte warten Sie, bevor Sie es erneut versuchen.","passwords.token":"Der Passwort-Wiederherstellungs-Schlüssel ist ungültig oder abgelaufen.","passwords.user":"Es konnte leider kein Nutzer mit dieser E-Mail-Adresse gefunden werden.","passwords.password":"Passwörter müssen mindestens acht Zeichen lang sein und mit der Bestätigung übereinstimmen.","settings.settings":"Einstellungen","settings.preferences":"Vorlieben","settings.account":"Account","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Token","settings.options":"Einstellungen","settings.user_preferences":"Benutzereinstellungen","settings.admin_settings":"Admin-Einstellungen","settings.confirm.revoke":"Sind Sie sicher, dass Sie diesen Token widerrufen möchten?","settings.administration":"Administration","settings.administration_legend":"Vorangegangene Einstellungen betreffen Benutzereinstellungen (jeder Benutzer kann seine eigenen Einstellungen festlegen), folgende globale Einstellungen sind gültig für alle Benutzer. Nur ein Administrator kann diese Einstellungen ansehen und bearbeiten.","settings.only_an_admin_can_edit_them":"Only an administrator can view and edit them.","settings.you_are_administrator":"Du bist ein Administrator","settings.account_linked_to_sso_x_provider":"You signed-in via SSO using your :provider account. Your information cannot be changed here but on :provider.","settings.general":"Allgemein","settings.security":"Sicherheit","settings.profile":"Profil","settings.change_password":"Passwort ändern","settings.personal_access_tokens":"Persönliche Zugriffsstokens","settings.token_legend":"Persönliche Zugriffstoken ermöglichen es jeder Anwendung, sich bei der 2Fauth-API zu authentifizieren. Sie sollten das Zugriffs-Token als Bearer-Token im Autorisierungs-Header der Anfragen von Verbraucher-Apps angeben.","settings.generate_new_token":"Neuen Token generieren","settings.revoke":"Zurückziehen","settings.token_revoked":"Token erfolgreich widerrufen","settings.revoking_a_token_is_permanent":"Widerruf eines Token ist dauerhaft","settings.make_sure_copy_token":"Kopieren Sie Ihren persönlichen Zugangs-Token jetzt. Sie werden ihn nicht mehr sehen können!","settings.data_input":"Daten-Eingabe","settings.forms.edit_settings":"Einstellungen bearbeiten","settings.forms.setting_saved":"Einstellungen gespeichert","settings.forms.new_token":"Neues Token","settings.forms.some_translation_are_missing":"Einige Übersetzungen fehlen bei Verwendung der bevorzugten Sprache des Browsers?","settings.forms.help_translate_2fauth":"Hilf 2FAuth zu übersetzen","settings.forms.language.label":"Sprache","settings.forms.language.help":"Sprache, die zur Übersetzung der 2FAuth-Benutzeroberfläche verwendet wird. Benannte Sprachen sind vollständig, stellen Sie die Sprache Ihrer Wahl ein, um Ihre Browserpräferenz zu überschreiben.","settings.forms.show_otp_as_dot.label":"Generierte Einmalpasswörter als Punkte anzeigen","settings.forms.show_otp_as_dot.help":"Passwortzeichen werden als *** angezeigt, um die Vertraulichkeit zu gewährleisten. Dies beeinflusst nicht die Kopieren/Einfügen Funktion","settings.forms.reveal_dotted_otp.label":'Reveal obscured OTP',"settings.forms.reveal_dotted_otp.help":"Let the ability to temporarily reveal Dot-Obscured passwords","settings.forms.close_otp_on_copy.label":'Schließe OTP nach dem Kopieren',"settings.forms.close_otp_on_copy.help":"Bei einem Klick auf das generierte Passwort wird es automatisch auf dem Bildschirm ausgeblendet","settings.forms.copy_otp_on_display.label":"Das angezeigte, einmaliges Passwort (OTP) kopieren","settings.forms.copy_otp_on_display.help":'Kopiert automatisch ein generiertes Passwort bei Anzeige auf dem Bildschirm. Aufgrund der Einschränkungen des Browsers wird nur das erste TOTP Passwort kopiert, nicht das rotierende Passwort',"settings.forms.use_basic_qrcode_reader.label":"Benutze den einfachen QR-Codeleser","settings.forms.use_basic_qrcode_reader.help":"Wenn bei der Erfassung von QR-Codes Probleme auftreten können Sie mit dieser Option zu einem einfacheren, aber zuverlässigeren QR-Codeleser wechseln","settings.forms.display_mode.label":"Anzeigemodus","settings.forms.display_mode.help":"Wählen Sie, ob Konten als Liste oder als Raster angezeigt werden sollen","settings.forms.password_format.label":"Passwortformatierung","settings.forms.password_format.help":"Anzeige der Passwörter ändern durch Gruppierung der Ziffern. Verbessert die Lesbarkeit und Passwörter lassen sich einfacher merken","settings.forms.pair":"nach Paar","settings.forms.pair_legend":"Ziffern in zweistellige Gruppen aufteilen","settings.forms.trio_legend":"Ziffern in dreistellige Gruppen aufteilen","settings.forms.half_legend":"Ziffern in zwei gleiche Gruppen aufteilen","settings.forms.trio":"durch Trio","settings.forms.half":"nach Hälfte","settings.forms.grid":"Raster","settings.forms.list":"Liste","settings.forms.theme.label":"Erscheinungsbild","settings.forms.theme.help":"Erzwinge eine bestimmte Darstellung oder wende die in deinen System/Browser-Einstellungen definierte Darstellung an","settings.forms.light":"Hell","settings.forms.dark":"Dunkel","settings.forms.automatic":"Automatisch","settings.forms.show_accounts_icons.label":"Symbole anzeigen","settings.forms.show_accounts_icons.help":"Kontosymbole in der Hauptansicht anzeigen","settings.forms.get_official_icons.label":"Offizielle Icons erhalten","settings.forms.get_official_icons.help":"(Versuch) Das offizielle Symbol des 2FA-Ausstellers beim Hinzufügen eines Kontos zu erhalten","settings.forms.auto_lock.label":"Automatische Sperrung","settings.forms.auto_lock.help":"Meldet den Benutzer bei Inaktivität automatisch ab. Hat keine Auswirkung, wenn die Authentifizierung über einen Proxy erfolgt und keine benutzerdefinierte Logout-URL angegeben ist.","settings.forms.use_encryption.label":"Sensible Daten schützen","settings.forms.use_encryption.help":"Vertrauliche Daten, die 2FA-Geheimnisse und E-Mails, werden verschlüsselt in der Datenbank gespeichert. Erstellen Sie ein Backup von der APP_KEY Variablen in der .env Datei (oder der gesamten Datei), da sie als Schlüssel zur gesicherten Datenbank dient. Es gibt keine Möglichkeit, verschlüsselte Daten ohne diesen Schlüssel zu wiederherzustellen.","settings.forms.default_group.label":"Standardgruppe","settings.forms.default_group.help":"Die Gruppe, der neu erstellte Konten zugeordnet werden","settings.forms.useDirectCapture.label":"Direkteingabe","settings.forms.useDirectCapture.help":"Wählen Sie aus, ob Sie einen Eingabemodus unter den Verfügbaren wählen möchten oder ob Sie direkt den Standard-Eingabemodus verwenden möchten","settings.forms.defaultCaptureMode.label":"Standard-Eingabemodus","settings.forms.defaultCaptureMode.help":"Standard-Eingabemodus, der verwendet wird, falls die Direkteingabe aktiviert ist","settings.forms.remember_active_group.label":"Gruppenfilter merken","settings.forms.remember_active_group.help":"Speichert den letzten Gruppenfilter und stellt ihn bei Ihrem nächsten Besuch wieder her","settings.forms.disable_registration.label":"Registrierung deaktivieren","settings.forms.disable_registration.help":"Deaktiviere Registrierung","settings.forms.enable_sso.label":"Enable Single Sign-On (SSO)","settings.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","settings.forms.otp_generation.label":"Passwort zeigen","settings.forms.otp_generation.help":'Legelt fest, wie und wann OTPs angezeigt werden.
',"settings.forms.otp_generation_on_request":"Nach einem Klick/Tippen","settings.forms.otp_generation_on_request_legend":"Einzeln, in eigener Ansicht","settings.forms.otp_generation_on_request_title":"Konto anklicken um ein Passwort in einer eigenen Ansicht zu erhalten","settings.forms.otp_generation_on_home":"Ständig","settings.forms.otp_generation_on_home_legend":"Alle auf dem Startbildschirm anzeigen","settings.forms.otp_generation_on_home_title":"Alle Passwörter auf dem Startbildschirm anzeigen, ohne etwas tun zu müssen","settings.forms.never":"Niemals","settings.forms.on_otp_copy":"Beim Kopieren des Tokens","settings.forms.1_minutes":"Nach 1 Minute","settings.forms.5_minutes":"Nach 5 Minuten","settings.forms.10_minutes":"Nach 10 Minuten","settings.forms.15_minutes":"Nach 15 Minuten","settings.forms.30_minutes":"Nach 30 Minuten","settings.forms.1_hour":"Nach 1 Stunde","settings.forms.1_day":"Nach 1 Tag","settings.forms.livescan":"QR-Code scannen","settings.forms.upload":"QR-Code hochladen","settings.forms.advanced_form":"Erweitertes Formular","titles.404":"Artikel nicht gefunden","titles.start":"Neues Konto","titles.capture":"QR blinken","titles.accounts":"Konten","titles.createAccount":"Konto erstellen","titles.importAccounts":"Importiere Konten","titles.editAccount":"Konto bearbeiten","titles.showQRcode":"Konto als QR-Code","titles.groups":"Gruppen","titles.createGroup":"Gruppe erstellen","titles.editGroup":"Gruppe bearbeiten","titles.settings.options":"Einstellungen","titles.settings.account":"Benutzerkonto","titles.settings.oauth.tokens":"OAuth Tokens","titles.settings.oauth.generatePAT":"Neues persönliches Token","titles.settings.webauthn.editCredential":"Gerät bearbeiten","titles.settings.webauthn.devices":"WebAuthn Geräte","titles.login":"Login","titles.register":"Anmelden","titles.autolock":"Automatische Sperrung","titles.password.request":"Passwort zurücksetzen","titles.password.reset":"Neues Passwort","titles.webauthn.lost":"Kontowiederherstellung","titles.webauthn.recover":"Neues Gerät registrieren","titles.flooded":"Überschwemmung","titles.genericError":"Fehler","titles.about":"Über","twofaccounts.service":"Dienst","twofaccounts.account":"Benutzerkonto","twofaccounts.accounts":"Benutzerkonten","twofaccounts.icon":"Symbol","twofaccounts.icon_for_account_x_at_service_y":"Symbol des {account} -Kontos bei {service}","twofaccounts.icon_to_illustrate_the_account":"Symbol, das den Account darstellt","twofaccounts.remove_icon":"Icon entfernen","twofaccounts.no_account_here":"Noch keine 2FA vorhanden!","twofaccounts.add_first_account":"Wähle eine Methode und füge deinen ersten Account hinzu","twofaccounts.use_full_form":"Oder nutzen Sie das vollständige Formular","twofaccounts.add_one":"Konto hinzufügen","twofaccounts.show_qrcode":"QR-Code anzeigen","twofaccounts.no_service":"- kein Service -","twofaccounts.account_created":"Konto erfolgreich erstellt","twofaccounts.account_updated":"Konto erfolgreich aktualisiert","twofaccounts.accounts_deleted":"Konto(s) erfolgreich gelöscht","twofaccounts.accounts_moved":"Konto(en) erfolgreich verschoben","twofaccounts.export_selected_to_json":"Json-Export ausgewählter Konten herunterladen","twofaccounts.reveal":"reveal","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"Max Mustermann","twofaccounts.forms.new_account":"Neues Konto","twofaccounts.forms.edit_account":"Konto bearbeiten","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"QR-Code scannen","twofaccounts.forms.upload_qrcode":"QR-Code hochladen","twofaccounts.forms.use_advanced_form":"Erweitertes Formular verwenden","twofaccounts.forms.prefill_using_qrcode":"Mit einem QR-Code ausfüllen","twofaccounts.forms.use_qrcode.val":"QR-Code verwenden","twofaccounts.forms.use_qrcode.title":"Verwenden Sie einen QR-Code, um das Formular auszufüllen","twofaccounts.forms.unlock.val":"Entsperren","twofaccounts.forms.unlock.title":"Entsperren (auf eigene Gefahr)","twofaccounts.forms.lock.val":"Sperren","twofaccounts.forms.lock.title":"Sperren","twofaccounts.forms.choose_image":"Hochladen","twofaccounts.forms.i_m_lucky":"Mein Glück versuchen","twofaccounts.forms.i_m_lucky_legend":'Durch den Knopf "mein Glück versuchen" wird versucht, das offizielle Symbol des jeweiligen Dienstes zu erhalten. Geben Sie den tatsächlichen Namen des Dienstes ohne die Erweiterung ".xyz" ein und versuchen Sie, Tippfehler zu vermeiden (Beta-Funktion)',"twofaccounts.forms.test":"Test","twofaccounts.forms.secret.label":"Geheimnis","twofaccounts.forms.secret.help":"Der Schlüssel, der zur Generierung Ihrer Sicherheitscodes verwendet wird","twofaccounts.forms.plain_text":"Klartext","twofaccounts.forms.otp_type.label":'Wählen Sie den OTP Typ',"twofaccounts.forms.otp_type.help":"Zeitbasierte OTP oder HMAC-basierte OTP oder Steam OTP","twofaccounts.forms.digits.label":"Ziffern","twofaccounts.forms.digits.help":"Die Anzahl der Ziffern der generierten Sicherheitscodes","twofaccounts.forms.algorithm.label":"Algorithmus","twofaccounts.forms.algorithm.help":"Der Algorithmus, der zur Sicherung Ihrer Sicherheitscodes verwendet wird","twofaccounts.forms.period.label":"Gültigkeitsdauer","twofaccounts.forms.period.placeholder":"Standard ist 30","twofaccounts.forms.period.help":"Die Gültigkeitsdauer der generierten Sicherheitscodes in Sekunden","twofaccounts.forms.counter.label":"Zähler","twofaccounts.forms.counter.placeholder":"Standard ist 0","twofaccounts.forms.counter.help":"Der Zählerwert am Anfang","twofaccounts.forms.counter.help_lock":"Es ist riskant, den Zähler zu ändern, da Sie das Konto mit dem Verifizierungsserver des Dienstes desynchronisieren können. Verwenden Sie das Schlosssymbol, um Änderungen zu ermöglichen, aber nur, wenn Sie wissen, was Sie tun","twofaccounts.forms.image.label":"Bild","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"Die Url eines externen Bildes, das als Kontosymbol verwendet werden soll","twofaccounts.forms.options_help":"Sie können die folgenden Einstellungen leer lassen, wenn Sie nicht wissen, wie Sie sie einstellen. In dem Fall werden die Standardwerte verwendet.","twofaccounts.forms.alternative_methods":"Alternative Methoden","twofaccounts.stream.live_scan_cant_start":"Der Live-Scan kann nicht gestartet werden :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth hat keine Berechtigung auf Ihre Kamera zuzugreifen","twofaccounts.stream.need_grant_permission.solution":"Sie müssen die Erlaubnis erteilen, um Ihre Gerätekamera zu verwenden. Falls Sie bereits verweigert haben und Ihr Browser Sie nicht erneut anfragt, verweisen Sie bitte auf die Browser-Dokumentation, um herauszufinden, wie Sie die Erlaubnis erteilen können.","twofaccounts.stream.need_grant_permission.click_camera_icon":"It is usually done by clicking on a slashed camera icon in or next to the browser's address bar","twofaccounts.stream.not_readable.reason":"Fehler beim Laden des Scanners","twofaccounts.stream.not_readable.solution":"Wird die Kamera bereits verwendet? Stellen Sie sicher, dass keine andere App Ihre Kamera verwendet und versuchen Sie es erneut","twofaccounts.stream.no_cam_on_device.reason":"Keine Kamera in diesem Gerät","twofaccounts.stream.no_cam_on_device.solution":"Vielleicht haben Sie vergessen, Ihre Webcam anzuschließen","twofaccounts.stream.secured_context_required.reason":"Sichere Umgebung erforderlich","twofaccounts.stream.secured_context_required.solution":"HTTPS wird für den Live-Scan benötigt. Wenn Sie 2FAuth auf Ihrem Computer ausführen, verwenden Sie nur localhost und keinen anderen virtuellen Host","twofaccounts.stream.https_required":"HTTPS für Kamera-Übertragung erforderlich","twofaccounts.stream.camera_not_suitable.reason":"Die verbauten Kameras sind nicht geeignet","twofaccounts.stream.camera_not_suitable.solution":"Bitte verwenden Sie ein anderes Gerät/Kamera","twofaccounts.stream.stream_api_not_supported.reason":"Stream API wird von diesem Browser nicht unterstützt","twofaccounts.stream.stream_api_not_supported.solution":"Sie sollten einen modernen Browser verwenden","twofaccounts.confirm.delete":"Sind Sie sicher, dass Sie dieses Konto löschen möchten?","twofaccounts.confirm.cancel":"Das Konto wird gelöscht. Sind Sie sicher?","twofaccounts.confirm.discard":"Sind Sie sicher, dass Sie dieses Konto auflösen wollen?","twofaccounts.confirm.discard_all":"Sind Sie sicher, dass Sie alle Konten verwerfen wollen?","twofaccounts.confirm.discard_duplicates":"Möchten Sie wirklich alle Duplikate wegwerfen?","twofaccounts.import.import":"Import","twofaccounts.import.to_import":"Import","twofaccounts.import.import_legend":"2FAuth kann Daten aus verschiedenen 2FA-Apps importieren.
Benutze die Exportfunktion dieser Apps, um eine Migrationsquelle zu erhalten (QR-Code oder eine Datei) und lade sie mit einer bevorzugten Methode unterhalb.","twofaccounts.import.import_legend_afterpart":"Use the Export feature of these apps to get a migration resource like a QR code or a JSON file then load it here.","twofaccounts.import.upload":"Hochladen","twofaccounts.import.scan":"Scannen","twofaccounts.import.supported_formats_for_qrcode_upload":"Akzeptiert: jpg, jpeg, png, bmp, gif, svg oder webp","twofaccounts.import.supported_formats_for_file_upload":"Akzeptiert: Klartext, Json, 2fas","twofaccounts.import.supported_migration_formats":"Unterstütze Migrationsformate","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Text file","twofaccounts.import.plain_text":"Klartext","twofaccounts.import.parsing_data":"Parsing data...","twofaccounts.import.issuer":"Aussteller","twofaccounts.import.imported":"Importiert","twofaccounts.import.failure":"Fehler","twofaccounts.import.x_valid_accounts_found":"{count} gültige Konten gefunden","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"The following 2FA accounts were found in the migration resource. So far none of them have been added to 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Use the available buttons to permanently save them to your 2FA collection or discard them.","twofaccounts.import.import_all":"Alle importieren","twofaccounts.import.import_this_account":"Importiere dieses Konto","twofaccounts.import.discard_all":"Alles wegwerfen","twofaccounts.import.discard_duplicates":"Duplikate wegwerfen","twofaccounts.import.discard_this_account":"Dieses Konto wegwerfen","twofaccounts.import.generate_a_test_password":"Ein Testpasswort generieren","twofaccounts.import.possible_duplicate":"Ein Konto mit der gleichen Daten ist bereits vorhanden","twofaccounts.import.invalid_account":"- ungültiger Account -","twofaccounts.import.invalid_service":"- ungültiger Service -","twofaccounts.import.do_not_set_password_or_encryption":"Aktivieren Sie NICHT den Passwortschutz oder die Verschlüsselung, wenn Sie Daten aus einer anderen 2FA-App exportieren, die Sie in 2FAuth importieren möchten.","validation.accepted":":attribute muss akzeptiert werden.","validation.accepted_if":"Das :attribute muss akzeptiert werden, wenn :other :value ist.","validation.active_url":":attribute ist keine gültige Internet-Adresse.","validation.after":":attribute muss ein Datum nach dem :date sein.","validation.after_or_equal":":attribute muss ein Datum nach dem :date oder gleich dem :date sein.","validation.alpha":"Das :attribute Feld darf nur Buchstaben enthalten.","validation.alpha_dash":"Das :attribute Feld darf nur Buchstaben, Ziffern, Bindestriche und Unterstriche enthalten.","validation.alpha_num":"Das :attribute Feld darf nur aus Zeichen und Nummern bestehen.","validation.array":":attribute muss ein Array sein.","validation.before":":attribute muss ein Datum vor dem :date sein.","validation.before_or_equal":":attribute muss ein Datum vor dem :date oder gleich dem :date sein.","validation.between.array":":attribute muss zwischen :min & :max Elemente haben.","validation.between.file":":attribute muss zwischen :min & :max Kilobytes groß sein.","validation.between.numeric":":attribute muss zwischen :min & :max liegen.","validation.between.string":":attribute muss zwischen :min & :max Zeichen lang sein.","validation.boolean":":attribute muss entweder 'true' oder 'false' sein.","validation.confirmed":":attribute stimmt nicht mit der Bestätigung überein.","validation.current_password":"Das Passwort ist falsch.","validation.date":":attribute muss ein gültiges Datum sein.","validation.date_equals":":attribute muss ein Datum gleich :date sein.","validation.date_format":":attribute entspricht nicht dem gültigen Format für :format.","validation.declined":"Das :attribute muss abgelehnt werden.","validation.declined_if":"Das :attribute muss abgelehnt werden, wenn :other :value ist.","validation.different":":attribute und :other müssen sich unterscheiden.","validation.digits":":attribute muss :digits Stellen haben.","validation.digits_between":":attribute muss zwischen :min und :max Stellen haben.","validation.dimensions":":attribute hat ungültige Bildabmessungen.","validation.distinct":":attribute beinhaltet einen bereits vorhandenen Wert.","validation.doesnt_end_with":"Das :attribute darf nicht mit einem der folgenden Werte enden: :values.","validation.doesnt_start_with":"Das :attribute Feld darf nicht mit einem der folgenden Werte beginnen: :values.","validation.email":":attribute muss eine gültige E-Mail-Adresse sein.","validation.ends_with":":attribute muss eine der folgenden Endungen aufweisen: :values","validation.enum":"Der gewählte Wert für :attribute ist ungültig.","validation.exists":"Der gewählte Wert für :attribute ist ungültig.","validation.file":":attribute muss eine Datei sein.","validation.filled":":attribute muss ausgefüllt sein.","validation.gt.array":":attribute muss mehr als :value Elemente haben.","validation.gt.file":":attribute muss größer als :value Kilobytes sein.","validation.gt.numeric":":attribute muss größer als :value sein.","validation.gt.string":":attribute muss länger als :value Zeichen sein.","validation.gte.array":":attribute muss mindestens :value Elemente haben.","validation.gte.file":"Das :attribute muss größer oder gleich :value Kilobytes groß sein.","validation.gte.numeric":"Das :attribute Feld muss größer oder gleich :value sein.","validation.gte.string":"Das :attribute Feld muss mindestens :value Zeichen enthalten.","validation.image":":attribute muss ein Bild sein.","validation.in":"Der gewählte Wert für :attribute ist ungültig.","validation.in_array":"Der gewählte Wert für :attribute kommt nicht in :other vor.","validation.integer":":attribute muss eine ganze Zahl sein.","validation.ip":":attribute muss eine gültige IP-Adresse sein.","validation.ipv4":":attribute muss eine gültige IPv4-Adresse sein.","validation.ipv6":":attribute muss eine gültige IPv6-Adresse sein.","validation.json":":attribute muss ein gültiger JSON-String sein.","validation.lt.array":":attribute muss weniger als :value Elemente haben.","validation.lt.file":":attribute muss kleiner als :value Kilobytes sein.","validation.lt.numeric":":attribute muss kleiner als :value sein.","validation.lt.string":":attribute muss kürzer als :value Zeichen sein.","validation.lte.array":":attribute darf maximal :value Elemente haben.","validation.lte.file":"Das :attribute muss kleiner oder gleich :value Kilobytes groß sein.","validation.lte.numeric":"Das :attribute Feld muss kleiner oder gleich :value sein.","validation.lte.string":"Das :attribute Feld darf maximal :value Zeichen enthalten.","validation.mac_address":"Das :attribute Feld muss eine gültige MAC-Adresse enthalten.","validation.max.array":"Das :attribute Feld darf nicht mehr als :max Elemente enthalten.","validation.max.file":"Das :attribute darf nicht größer als :max Kilobytes groß sein.","validation.max.numeric":"Das :attribute Feld darf nicht größer als :max sein.","validation.max.string":"Das :attribute Feld darf nicht mehr als :value Zeichen enthalten.","validation.max_digits":"Das :attribute Feld darf nicht mehr als :max Ziffern enthalten.","validation.mimes":":attribute muss den Dateityp :values haben.","validation.mimetypes":":attribute muss den Dateityp :values haben.","validation.min.array":":attribute muss mindestens :min Elemente haben.","validation.min.file":":attribute muss mindestens :min Kilobytes groß sein.","validation.min.numeric":":attribute muss mindestens :min sein.","validation.min.string":":attribute muss mindestens :min Zeichen lang sein.","validation.min_digits":"Das :attribute Feld muss mindestens :min Ziffern enthalten.","validation.multiple_of":"Das :attribute Feld muss ein Vielfaches von :value sein.","validation.not_in":"Der gewählte Wert für :attribute ist ungültig.","validation.not_regex":":attribute hat ein ungültiges Format.","validation.numeric":":attribute muss eine Zahl sein.","validation.password.letters":"Das :attribute Feld muss mindestens einen Buchstaben enthalten.","validation.password.mixed":"Das :attribute Feld muss mindestens einen Groß- und einen Kleinbuchstaben enthalten.","validation.password.numbers":"Das :attribute Feld muss mindestens eine Zahl enthalten.","validation.password.symbols":"Das :attribute Feld muss mindestens ein Symbol enthalten.","validation.password.uncompromised":"Der im :attribute Feld angegebene Wert wurde in einem Datenleck gefunden. Bitte geben Sie für :attribute einen anderen Wert ein.","validation.present":":attribute muss vorhanden sein.","validation.prohibited":"Das :attribute Feld ist unzulässig.","validation.prohibited_if":"Das :attribute Feld ist unzulässig, wenn :other den Wert :value entspricht.","validation.prohibited_unless":"Das :attribute Feld ist unzulässig, wenn :other nicht den Wert :value annimmt.","validation.prohibits":"Bei gegebenem :attribute Feld ist :other nicht zulässig.","validation.regex":":attribute Format ist ungültig.","validation.required":":attribute muss ausgefüllt werden.","validation.required_array_keys":"Das Feld :attribute muss Einträge enthalten für: :values.","validation.required_if":":attribute muss ausgefüllt werden, wenn :other den Wert :value hat.","validation.required_if_accepted":"Das Feld :attribute muss ausgefüllt werden, wenn :other ausgefüllt wurde.","validation.required_unless":":attribute muss ausgefüllt werden, wenn :other nicht den Wert :values hat.","validation.required_with":":attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.","validation.required_with_all":":attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.","validation.required_without":":attribute muss ausgefüllt werden, wenn :values nicht ausgefüllt wurde.","validation.required_without_all":":attribute muss ausgefüllt werden, wenn keines der Felder :values ausgefüllt wurde.","validation.same":":attribute und :other müssen übereinstimmen.","validation.size.array":":attribute muss genau :size Elemente haben.","validation.size.file":":attribute muss :size Kilobyte groß sein.","validation.size.numeric":":attribute muss gleich :size sein.","validation.size.string":":attribute muss :size Zeichen lang sein.","validation.starts_with":":attribute muss mit einem der folgenden Anfänge aufweisen: :values","validation.string":":attribute muss ein String sein.","validation.timezone":"Das :attribute Feld muss eine gültige Zeitzone sein.","validation.unique":":attribute ist bereits vergeben.","validation.uploaded":":attribute konnte nicht hochgeladen werden.","validation.url":"Das :attribute Feld muss eine gültige URL aufweisen.","validation.uuid":":attribute muss ein UUID sein.","validation.single":"Bei Verwendung von :attribute muss es der einzige Parameter in diesem Anfragetext sein","validation.onlyCustomOtpWithUri":"Der uri Parameter muss allein oder nur in Kombination mit dem 'custom_otp' Parameter angegeben werden","validation.custom.icon.image":"Unterstützte Formate sind jpeg, png, bmp, gif, svg oder webp.","validation.custom.qrcode.image":"Unterstützte Formate sind jpeg, png, bmp, gif, svg oder webp.","validation.custom.uri.regex":"Das :attribute Feld enthält kein gültiges otpauth uri.","validation.custom.otp_type.in":"Das :attribute Feld wird nicht unterstützt.","validation.custom.email.exists":"Kein Konto mit dieser E-Mail gefunden.","validation.custom.secret.isBase32Encoded":"Das :attribute Feld muss einen Base32 kodierten String enthalten.","validation.custom.account.regex":"Das :attribute Feld darf keinen Doppelpunkt enthalten.","validation.custom.service.regex":"Das :attribute Feld darf keinen Doppelpunkt enthalten.","validation.custom.label.required":"Der URI muss ein Label haben.","validation.custom.ids.regex":"Die IDs müssen durch Kommata getrennt werden, ohne Komma am Ende zu haben."};export{e as default}; diff --git a/public/build/assets/php_de-27d4511d.js b/public/build/assets/php_de-27d4511d.js new file mode 100644 index 00000000..22e787f3 --- /dev/null +++ b/public/build/assets/php_de-27d4511d.js @@ -0,0 +1,4 @@ +/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"auth.failed":"Diese Kombination aus Zugangsdaten wurde nicht in unserer Datenbank gefunden.","auth.password":"Das angegebene Passwort ist falsch.","auth.throttle":"Zu viele Loginversuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.","auth.sign_out":"Abmelden","auth.sign_in":"Anmelden","auth.sign_in_using":"Anmelden mit","auth.or_continue_with":"Du kannst auch fortfahren mit:","auth.sign_in_using_security_device":"Mit einem Sicherheitsgerät anmelden","auth.login_and_password":"benutzername & passwort","auth.register":"Registrieren","auth.welcome_to_2fauth":"Willkommen bei 2FAuth","auth.autolock_triggered":"Automatische Sperre ausgelöst","auth.autolock_triggered_punchline":"Das Ereignis, das von der Auto-Lock-Funktion beobachtet wird, wurde gestartet. Sie wurden automatisch getrennt.","auth.already_authenticated":"Bereits angemeldet","auth.authentication":"Authentifizierung","auth.maybe_later":"Vielleicht später","auth.user_account_controlled_by_proxy":"Benutzerkonto, das von einem Authentifizierungsproxy zur Verfügung gestellt wurde.
Verwalte das Konto auf Proxy-Ebene.","auth.auth_handled_by_proxy":"Authentifizierung von einem Reverse-Proxy verwaltet, unten sind die Einstellungen deaktiviert.
Authentifizierung auf Proxy-Ebene verwalten.","auth.confirm.logout":"Sind Sie sicher, dass Sie sich abmelden möchten?","auth.confirm.revoke_device":"Möchten Sie das Gerät wirklich entfernen?","auth.confirm.delete_account":"Möchten Sie Ihr Konto wirklich löschen?","auth.webauthn.security_device":"ein Sicherheitsgerät","auth.webauthn.security_devices":"Sicherheitsgeräte","auth.webauthn.security_devices_legend":"Authentifizierungsgeräte, mit denen Sie sich in 2FAuth anmelden können, wie z.B. Sicherheitsschlüssel (z.B. Yubikey) oder Smartphones mit biometrischen Fähigkeiten (z.B. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`Sie können die Sicherheit Ihres 2FAuth Accounts verbessern, indem Sie die WebAuthn Authentifizierung aktivieren.

+ WebAuthn erlaubt es Ihnen, sich schnell und sicher mit vertrauenswürdigen Geräten (wie Yubikeys oder Smartphones mit biometrischen Fähigkeiten) anzumelden.`,"auth.webauthn.use_security_device_to_sign_in":"Machen Sie sich bereit, sich mit (einem) Ihren Sicherheitsgeräten zu authentifizieren. Schließen Sie Ihren Schlüssel an, entfernen Sie die Gesichtsmaske oder Handschuhe, etc.","auth.webauthn.lost_your_device":"Haben Sie Ihr Gerät verloren?","auth.webauthn.recover_your_account":"Konto wiederherstellen","auth.webauthn.account_recovery":"Kontowiederherstellung","auth.webauthn.recovery_punchline":"2FAuth wird Ihnen einen Wiederherstellungslink an diese E-Mail-Adresse senden. Klicken Sie auf den Link in der erhaltenen E-Mail und folgen Sie den Anweisungen.

Stellen Sie sicher, dass Sie die E-Mail auf einem Gerät öffnen, das vollständig Ihnen gehört.","auth.webauthn.send_recovery_link":"Wiederherstellungs-Link senden","auth.webauthn.account_recovery_email_sent":"E-Mail zur Kontowiederherstellung versendet!","auth.webauthn.disable_all_security_devices":"Alle Sicherheitsgeräte deaktivieren","auth.webauthn.disable_all_security_devices_help":"Alle Ihre Sicherheitsgeräte werden widerrufen. Benutzen Sie diese Option, wenn Sie eine verloren haben oder die Sicherheit des Geräts kompromittiert wurde.","auth.webauthn.register_a_new_device":"Ein neues Gerät registrieren","auth.webauthn.register_a_device":"Ein Gerät registrieren","auth.webauthn.device_successfully_registered":"Gerät erfolgreich registriert","auth.webauthn.device_revoked":"Gerät erfolgreich widerrufen","auth.webauthn.revoking_a_device_is_permanent":"Das Widerrufen eines Gerätes ist unwiderruflich","auth.webauthn.recover_account_instructions":"Um Ihr Konto wiederherzustellen, setzt 2FAuth einige Webauthn-Einstellungen zurück, damit Sie sich mit Ihrer E-Mail und Ihrem Passwort anmelden können.","auth.webauthn.invalid_recovery_token":"Ungültiger Wiederherstellungsschlüssel","auth.webauthn.webauthn_login_disabled":"Webauthn Login deaktiviert","auth.webauthn.invalid_reset_token":"Der Schlüssel zum Zurücksetzen des Passwortes ist ungültig.","auth.webauthn.rename_device":"Gerät umbenennen","auth.webauthn.my_device":"Mein Gerät","auth.webauthn.unknown_device":"Unbekanntes Gerät","auth.webauthn.use_webauthn_only.label":"Nur WebAuthn verwenden","auth.webauthn.use_webauthn_only.help":`WebAuthn als die einzige autorisierte Methode zulassen, um sich in Ihr 2FAuth Konto einzuloggen. Diese Option ist empfohlen und bietet eine verbesserte Sicherheit durch WebAuthn.

+ Bei Verlust des WebAuthn-Geräts Sie können Ihr Konto wiederherstellen, indem Sie diese Option zurücksetzen und sich mit Ihrer E-Mail und Ihrem Passwort anmelden.

+ Achtung! Das E-Mail & Passwort Anmeldeformular bleibt verfügbar, obwohl diese Option aktiviert ist. Eine Anmeldung hiermit führt jedoch immer zu der Meldung 'Authentifizierung fehlgeschlagen'.`,"auth.webauthn.need_a_security_device_to_enable_options":"Richten Sie mindestens ein Gerät ein um die nachfolgenden Optionen zu aktiveren","auth.forms.name":"Name","auth.forms.login":"Anmeldung","auth.forms.webauthn_login":"WebAuthn Anmeldung","auth.forms.email":"E-Mail","auth.forms.password":"Passwort","auth.forms.reveal_password":"Passwort anzeigen","auth.forms.hide_password":"Passwort verbergen","auth.forms.confirm_password":"Passwort bestätigen","auth.forms.new_password":"Neues Passwort","auth.forms.confirm_new_password":"Neues Passwort bestätigen","auth.forms.dont_have_account_yet":"Sie haben noch keinen Account?","auth.forms.already_register":"Schon registriert?","auth.forms.authentication_failed":"Anmeldung fehlgeschlagen","auth.forms.forgot_your_password":"Passwort vergessen?","auth.forms.request_password_reset":"Zurücksetzen","auth.forms.reset_your_password":"Passwort zurücksetzen","auth.forms.reset_password":"Password zurücksetzen","auth.forms.disabled_in_demo":"Funktion ist im Demo-Modus deaktiviert","auth.forms.current_password.label":"Aktuelles Passwort","auth.forms.current_password.help":"Geben Sie Ihr aktuelles Passwort ein, um zu bestätigen, dass Sie es sind","auth.forms.change_password":"Passwort ändern","auth.forms.send_password_reset_link":"Link zum Zurücksetzen des Passworts senden","auth.forms.password_successfully_changed":"Passwort erfolgreich geändert","auth.forms.edit_account":"Account bearbeiten","auth.forms.profile_saved":"Profil erfolgreich aktualisiert!","auth.forms.welcome_to_demo_app_use_those_credentials":"Willkommen bei der 2FAuth Demo.

Sie können sich mit der E-Mail-Adresse demo@2fauth.app und dem Passwort demo anmelden","auth.forms.welcome_to_testing_app_use_those_credentials":"Willkommen bei der 2FAuth Testinstanz.

Verwenden Sie die E-Mail-Adresse testing@2fauth.app und das Passwort password","auth.forms.register_punchline":"Willkommen bei 2FAuth.
Sie müssen sich mit einem Konto anmelden, bitte registrieren Sie sich.","auth.forms.reset_punchline":"2FAuth sendet Ihnen einen Link zum Zurücksetzen des Passworts an diese Adresse. Klicken Sie auf den Link in der erhaltenen E-Mail, um ein neues Passwort festzulegen.","auth.forms.name_this_device":"Dieses Gerät benennen","auth.forms.delete_account":"Konto löschen","auth.forms.delete_your_account":"Ihr Konto Löschen","auth.forms.delete_your_account_and_reset_all_data":"Dies wird 2FAuth zurücksetzen. Ihr Benutzerkonto sowie alle 2FA-Daten werden gelöscht. Dies kann nicht rückgängig gemacht werden.","auth.forms.reset_your_password_to_delete_your_account":"Wenn Sie immer SSO zum Anmelden verwendet haben, melde dich ab und setze das Passwort zurück, damit du dieses Formular ausfüllen kannst.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Das Löschen Ihres 2FAuth Kontos hat keine Auswirkungen auf Ihr externes SSO Konto.","auth.forms.user_account_successfully_deleted":"Benutzerkonto wurde erfolgreich gelöscht","auth.forms.has_lower_case":"Beinhaltet Kleinbuchstaben","auth.forms.has_upper_case":"Beinhaltet Großbuchstaben","auth.forms.has_special_char":"Beinhaltet Sonderzeichen","auth.forms.has_number":"Beinhaltet Zahlen","auth.forms.is_long_enough":"Besteht aus mindestens 8 Zeichen.","auth.forms.mandatory_rules":"Erforderlich","auth.forms.optional_rules_you_should_follow":"Empfohlen (sehr)","auth.forms.caps_lock_is_on":"Die Feststelltaste ist aktiviert","commons.cancel":"Abbrechen","commons.update":"Aktualisieren","commons.copy":"Kopieren","commons.copy_to_clipboard":"In die Zwischenablage kopieren","commons.copied_to_clipboard":"In die Zwischenablage kopiert","commons.profile":"Profil","commons.edit":"Bearbeiten","commons.delete":"Löschen","commons.disable":"Deaktivieren","commons.enable":"Aktivieren","commons.create":"Erstellen","commons.save":"Speichern","commons.close":"Schließen","commons.clear":"Leeren","commons.clear_search":"Suche leeren","commons.demo_do_not_post_sensitive_data":"Dies ist eine Demo-App, veröffentlichen Sie keine sensiblen Daten","commons.testing_do_not_post_sensitive_data":"Dies ist eine Test-App, veröffentlichen Sie keine sensiblen Daten","commons.selected":"ausgewählt","commons.name":"Name","commons.manage":"Verwalten","commons.done":"Fertig","commons.new":"Neu","commons.back":"Zurück","commons.move":"Verschieben","commons.export":"Exportieren","commons.all":"Alle","commons.select_all":"Alle auswählen","commons.clear_selection":"Auswahl löschen","commons.sort_descending":"Sortierung absteigend","commons.sort_ascending":"Sortierung aufsteigend","commons.rename":"Umbenennen","commons.new_name":"Neu Name","commons.options":"Einstellungen","commons.reload":"Aktualisieren","commons.refresh":"Aktualisieren","commons.data_refreshed_to_reflect_server_changes":"Daten wurden aktualisiert, um Änderungen auf dem Server wiederzugeben","commons.generate":"Generieren","commons.generating_otp":"Generiere OTP","commons.open_in_browser":"Im Browser öffnen","commons.continue":"Weiter","commons.discard":"Löschen","commons.about":"Über","commons.usefull_links":"Nützliche Links","commons.environment":"Umgebung","commons.credits":"Mitwirkende","commons.2fauth_teaser":"Eine Web-App um Ihre Zwei-Faktor-Authentifizierung (2FA) Konten zu verwalten und deren Sicherheitscodes zu generieren","commons.made_with":"Erstellt mit","commons.ui_icons_by":"UI-Icons von","commons.logos_by":"Logos von","commons.search":"Suche","commons.resources":"Ressourcen","commons.check_for_update":"Auf neue Version prüfen","commons.check_for_update_help":"Automatisch überprüfen (einmal pro Woche) und warnen, wenn eine neue Version von 2FAuth auf Github veröffentlicht wird","commons.you_are_up_to_date":"Instanz ist auf dem neusten Stand","commons.2fauth_description":"Eine Web-App um Ihre Zwei-Faktor-Authentifizierung (2FA) Konten zu verwalten und deren Sicherheitscodes zu generieren","commons.image_of_qrcode_to_scan":"Bild eines QR-Codes zum Scannen","commons.file":"Datei","commons.or":"ODER","commons.close_the_x_page":"{pagetitle} Seite schließen","commons.submit":"Absenden","commons.default":"Standard","commons.back_to_home":"Zurück zur Startseite","commons.nothing":"nichts","errors.resource_not_found":"Resource nicht gefunden","errors.error_occured":"Ein Fehler ist aufgetreten:","errors.refresh":"Aktualisieren","errors.no_valid_otp":"Keine gültige OTP-Ressource in diesem QR-Code","errors.something_wrong_with_server":"Etwas stimmt mit Ihrem Server nicht","errors.Unable_to_decrypt_uri":"URI konnte nicht entschlüsselt werden","errors.not_a_supported_otp_type":"Dieses OTP-Format wird derzeit nicht unterstützt","errors.cannot_create_otp_without_secret":"Das OTP kann nicht ohne Geheimnis erstellt werden","errors.data_of_qrcode_is_not_valid_URI":"Dieser QR-Code enthält keine gültige OTP Auth URI. Inhalt des QR-Codes:","errors.wrong_current_password":"Aktuelles Passwort falsch, nichts wurde geändert","errors.error_during_encryption":"Verschlüsselung fehlgeschlagen, Ihre Datenbank bleibt ungeschützt.","errors.error_during_decryption":"Entschlüsselung fehlgeschlagen, Ihre Datenbank bleibt geschützt. Dies wird hauptsächlich durch eine Integritätsproblem verschlüsselter Daten für ein oder mehrere Konten verursacht.","errors.qrcode_cannot_be_read":"Dieser QR-Code ist unlesbar","errors.too_many_ids":"zu viele Ids wurden in den Abfrageparameter eingefügt, maximal 100 erlaubt","errors.delete_user_setting_only":"Nur benutzerdefinierte Einstellungen können gelöscht werden","errors.indecipherable":"*nicht lesbar*","errors.cannot_decipher_secret":"Das Geheimnis kann nicht entschlüsselt werden. Dies wird hauptsächlich durch einen falsch gesetzten APP_KEY in der .env-Konfigurationsdatei von 2Fauth oder durch beschädigte Daten in der Datenbank verursacht.","errors.https_required":"HTTPS-Kontext erforderlich","errors.browser_does_not_support_webauthn":"Ihr Gerät unterstützt nicht webauthn. Versuchen Sie es später mit einem moderneren Browser erneut","errors.aborted_by_user":"Vom Benutzer abgebrochen","errors.security_device_already_registered":"Gerät ist bereits registriert","errors.not_allowed_operation":"Vorgang nicht erlaubt","errors.no_authenticator_support_specified_algorithms":"Keine Authentifikatoren unterstützen die angegebenen Algorithmen","errors.authenticator_missing_discoverable_credential_support":"Authentifikator fehlt erkennbare Anmeldeinformationen","errors.authenticator_missing_user_verification_support":"Authentifikator fehlt Unterstützung für die Benutzerüberprüfung","errors.unknown_error":"Unbekannter Fehler","errors.security_error_check_rpid":"Sicherheitsfehler
Prüfen Sie die Umgebungsvariable WEBAUTHN_ID","errors.2fauth_has_not_a_valid_domain":"2FAuths Domain ist keine gültige Domain","errors.user_id_not_between_1_64":"Benutzer-ID war nicht zwischen 1 und 64 Zeichen","errors.no_entry_was_of_type_public_key":'Kein Eintrag vom Typ "public-key"',"errors.unsupported_with_reverseproxy":"Nicht anwendbar, wenn ein Auth-Proxy benutzt wird","errors.user_deletion_failed":"Löschen des Benutzerkontos fehlgeschlagen, es wurden keine Daten gelöscht","errors.auth_proxy_failed":"Proxy-Anmeldung scheitern","errors.auth_proxy_failed_legend":"2Fauth ist so konfiguriert, dass es hinter einem Authentifizierungs-Proxy läuft, aber Ihr Proxy gibt nicht den erwarteten Header zurück. Überprüfen Sie Ihre Konfiguration und versuchen Sie es erneut.","errors.invalid_x_migration":"Ungültige oder nicht lesbare Daten bei :appname","errors.invalid_2fa_data":"Ungültige 2FA Daten","errors.unsupported_migration":"Daten stimmen mit keinem der unterstützten Formate überein","errors.unsupported_otp_type":"Nicht unterstützter OTP -Typ","errors.encrypted_migration":"Nicht lesbar, die Daten scheinen verschlüsselt zu sein","errors.no_logo_found_for_x":"Kein Logo verfügbar für {service}","errors.file_upload_failed":"Hochladen der Datei fehlgeschlagen","errors.unauthorized":"Nicht berechtigt","errors.unauthorized_legend":"Sie haben keine Berechtigung, diese Ressource zu sehen oder diese Aktion auszuführen","errors.cannot_delete_the_only_admin":"Löschen des einzigen Admin-Kontos nicht möglichen","errors.error_during_data_fetching":"💀 Während des Datenabrufs ist etwas schief gelaufen","errors.check_failed_try_later":"Überprüfung fehlgeschlagen, bitte später erneut versuchen","errors.sso_disabled":"SSO ist deaktiviert","errors.sso_bad_provider_setup":"Dieser SSO-Provider ist nicht vollständig in Ihrer .env-Datei eingerichtet","errors.sso_failed":"Authentifizierung über SSO abgelehnt","errors.sso_no_register":"Registrierungen sind deaktiviert","errors.sso_email_already_used":"Ein Benutzerkonto mit der gleichen E-Mail-Adresse existiert bereits, aber es stimmt nicht mit Ihrer externen Konto-ID überein. Verwenden Sie kein SSO, wenn Sie bereits bei 2FAuth mit dieser E-Mail registriert sind.","errors.account_managed_by_external_provider":"Konto von einem externen Anbieter verwaltet","groups.groups":"Gruppen","groups.create_group":"Neue Gruppe erstellen","groups.show_group_selector":"Gruppenauswahl anzeigen","groups.hide_group_selector":"Gruppenauswahl ausblenden","groups.select_accounts_to_show":"Kontogruppe auswählen","groups.manage_groups":"Gruppen verwalten","groups.active_group":"Aktive Gruppe","groups.manage_groups_legend":'Sie können Gruppen erstellen, um Ihre Konten so zu organisieren wie Sie wollen. Alle Konten bleiben in der Pseudo-Gruppe mit dem Namen "Alle" sichtbar, unabhängig davon, zu welcher Gruppe sie gehören.',"groups.deleting_group_does_not_delete_accounts":"Konten bleiben beim Löschen der Gruppe erhalten","groups.move_selected_to":"Ausgewählte verschieben","groups.move_selected_to_group":"Auswahl in eine Gruppe verschieben","groups.no_group":"Keine Gruppe","groups.change_group":"Gruppe ändern","groups.group_successfully_created":"Gruppe erfolgreich erstellt","groups.group_name_saved":"Gruppenname gespeichert","groups.group_successfully_deleted":"Gruppe erfolgreich gelöscht","groups.forms.new_group":"Neue Gruppe","groups.forms.new_name":"Neuer Name","groups.forms.rename_group":"Gruppe umbenennen","groups.confirm.delete":"Sind Sie sicher, dass Sie diese Gruppe löschen möchten?","languages.browser_preference":"Browsereinstellung","languages.en":"Englisch","languages.fr":"Französisch","languages.de":"Deutsch","languages.es":"Spanisch","languages.zh":"Vereinfachtes Chinesisch","languages.ru":"Russisch","languages.bg":"Български (Bulgarisch)","pagination.previous":"« Zurück","pagination.next":"Weiter »","passwords.reset":"Das Passwort wurde zurückgesetzt!","passwords.sent":"Passworterinnerung wurde gesendet!","passwords.throttled":"Bitte warten Sie, bevor Sie es erneut versuchen.","passwords.token":"Der Passwort-Wiederherstellungs-Schlüssel ist ungültig oder abgelaufen.","passwords.user":"Es konnte leider kein Nutzer mit dieser E-Mail-Adresse gefunden werden.","passwords.password":"Passwörter müssen mindestens acht Zeichen lang sein und mit der Bestätigung übereinstimmen.","settings.settings":"Einstellungen","settings.preferences":"Vorlieben","settings.account":"Account","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Token","settings.options":"Einstellungen","settings.user_preferences":"Benutzereinstellungen","settings.admin_settings":"Admin-Einstellungen","settings.confirm.revoke":"Sind Sie sicher, dass Sie diesen Token widerrufen möchten?","settings.administration":"Administration","settings.administration_legend":"Vorangegangene Einstellungen betreffen Benutzereinstellungen (jeder Benutzer kann seine eigenen Einstellungen festlegen), folgende globale Einstellungen sind gültig für alle Benutzer. Nur ein Administrator kann diese Einstellungen ansehen und bearbeiten.","settings.only_an_admin_can_edit_them":"Nur ein Administrator kann sie ansehen und bearbeiten.","settings.you_are_administrator":"Du bist ein Administrator","settings.account_linked_to_sso_x_provider":"Sie haben sich mit Ihrem :provider-Konto via SSO angemeldet. Ihre Daten können hier nicht geändert werden, sondern auf :provider.","settings.general":"Allgemein","settings.security":"Sicherheit","settings.profile":"Profil","settings.change_password":"Passwort ändern","settings.personal_access_tokens":"Persönliche Zugriffsstokens","settings.token_legend":"Persönliche Zugriffstoken ermöglichen es jeder Anwendung, sich bei der 2Fauth-API zu authentifizieren. Sie sollten das Zugriffs-Token als Bearer-Token im Autorisierungs-Header der Anfragen von Verbraucher-Apps angeben.","settings.generate_new_token":"Neuen Token generieren","settings.revoke":"Zurückziehen","settings.token_revoked":"Token erfolgreich widerrufen","settings.revoking_a_token_is_permanent":"Widerruf eines Token ist dauerhaft","settings.make_sure_copy_token":"Kopieren Sie Ihren persönlichen Zugangs-Token jetzt. Sie werden ihn nicht mehr sehen können!","settings.data_input":"Daten-Eingabe","settings.forms.edit_settings":"Einstellungen bearbeiten","settings.forms.setting_saved":"Einstellungen gespeichert","settings.forms.new_token":"Neues Token","settings.forms.some_translation_are_missing":"Einige Übersetzungen fehlen bei Verwendung der bevorzugten Sprache des Browsers?","settings.forms.help_translate_2fauth":"Hilf 2FAuth zu übersetzen","settings.forms.language.label":"Sprache","settings.forms.language.help":"Sprache, die zur Übersetzung der 2FAuth-Benutzeroberfläche verwendet wird. Benannte Sprachen sind vollständig, stellen Sie die Sprache Ihrer Wahl ein, um Ihre Browserpräferenz zu überschreiben.","settings.forms.show_otp_as_dot.label":"Generierte Einmalpasswörter als Punkte anzeigen","settings.forms.show_otp_as_dot.help":"Passwortzeichen werden als *** angezeigt, um die Vertraulichkeit zu gewährleisten. Dies beeinflusst nicht die Kopieren/Einfügen Funktion","settings.forms.reveal_dotted_otp.label":'Decke verdecktes OTP auf',"settings.forms.reveal_dotted_otp.help":"Lass die Fähigkeit Punkt-verdeckte Passwörter temporär freigeben","settings.forms.close_otp_on_copy.label":'Schließe OTP nach dem Kopieren',"settings.forms.close_otp_on_copy.help":"Bei einem Klick auf das generierte Passwort wird es automatisch auf dem Bildschirm ausgeblendet","settings.forms.copy_otp_on_display.label":"Das angezeigte, einmaliges Passwort (OTP) kopieren","settings.forms.copy_otp_on_display.help":'Kopiert automatisch ein generiertes Passwort bei Anzeige auf dem Bildschirm. Aufgrund der Einschränkungen des Browsers wird nur das erste TOTP Passwort kopiert, nicht das rotierende Passwort',"settings.forms.use_basic_qrcode_reader.label":"Benutze den einfachen QR-Codeleser","settings.forms.use_basic_qrcode_reader.help":"Wenn bei der Erfassung von QR-Codes Probleme auftreten können Sie mit dieser Option zu einem einfacheren, aber zuverlässigeren QR-Codeleser wechseln","settings.forms.display_mode.label":"Anzeigemodus","settings.forms.display_mode.help":"Wählen Sie, ob Konten als Liste oder als Raster angezeigt werden sollen","settings.forms.password_format.label":"Passwortformatierung","settings.forms.password_format.help":"Anzeige der Passwörter ändern durch Gruppierung der Ziffern. Verbessert die Lesbarkeit und Passwörter lassen sich einfacher merken","settings.forms.pair":"nach Paar","settings.forms.pair_legend":"Ziffern in zweistellige Gruppen aufteilen","settings.forms.trio_legend":"Ziffern in dreistellige Gruppen aufteilen","settings.forms.half_legend":"Ziffern in zwei gleiche Gruppen aufteilen","settings.forms.trio":"durch Trio","settings.forms.half":"nach Hälfte","settings.forms.grid":"Raster","settings.forms.list":"Liste","settings.forms.theme.label":"Erscheinungsbild","settings.forms.theme.help":"Erzwinge eine bestimmte Darstellung oder wende die in deinen System/Browser-Einstellungen definierte Darstellung an","settings.forms.light":"Hell","settings.forms.dark":"Dunkel","settings.forms.automatic":"Automatisch","settings.forms.show_accounts_icons.label":"Symbole anzeigen","settings.forms.show_accounts_icons.help":"Kontosymbole in der Hauptansicht anzeigen","settings.forms.get_official_icons.label":"Offizielle Icons erhalten","settings.forms.get_official_icons.help":"(Versuch) Das offizielle Symbol des 2FA-Ausstellers beim Hinzufügen eines Kontos zu erhalten","settings.forms.auto_lock.label":"Automatische Sperrung","settings.forms.auto_lock.help":"Meldet den Benutzer bei Inaktivität automatisch ab. Hat keine Auswirkung, wenn die Authentifizierung über einen Proxy erfolgt und keine benutzerdefinierte Logout-URL angegeben ist.","settings.forms.use_encryption.label":"Sensible Daten schützen","settings.forms.use_encryption.help":"Vertrauliche Daten, die 2FA-Geheimnisse und E-Mails, werden verschlüsselt in der Datenbank gespeichert. Erstellen Sie ein Backup von der APP_KEY Variablen in der .env Datei (oder der gesamten Datei), da sie als Schlüssel zur gesicherten Datenbank dient. Es gibt keine Möglichkeit, verschlüsselte Daten ohne diesen Schlüssel zu wiederherzustellen.","settings.forms.default_group.label":"Standardgruppe","settings.forms.default_group.help":"Die Gruppe, der neu erstellte Konten zugeordnet werden","settings.forms.useDirectCapture.label":"Direkteingabe","settings.forms.useDirectCapture.help":"Wählen Sie aus, ob Sie einen Eingabemodus unter den Verfügbaren wählen möchten oder ob Sie direkt den Standard-Eingabemodus verwenden möchten","settings.forms.defaultCaptureMode.label":"Standard-Eingabemodus","settings.forms.defaultCaptureMode.help":"Standard-Eingabemodus, der verwendet wird, falls die Direkteingabe aktiviert ist","settings.forms.remember_active_group.label":"Gruppenfilter merken","settings.forms.remember_active_group.help":"Speichert den letzten Gruppenfilter und stellt ihn bei Ihrem nächsten Besuch wieder her","settings.forms.disable_registration.label":"Registrierung deaktivieren","settings.forms.disable_registration.help":"Deaktiviere Registrierung","settings.forms.enable_sso.label":"Single Sign-On (SSO) aktivieren","settings.forms.enable_sso.help":"Besuchern erlauben, eine externe ID über das Single Sign-On Schema zu authentifizieren","settings.forms.otp_generation.label":"Passwort zeigen","settings.forms.otp_generation.help":'Legelt fest, wie und wann OTPs angezeigt werden.
',"settings.forms.otp_generation_on_request":"Nach einem Klick/Tippen","settings.forms.otp_generation_on_request_legend":"Einzeln, in eigener Ansicht","settings.forms.otp_generation_on_request_title":"Konto anklicken um ein Passwort in einer eigenen Ansicht zu erhalten","settings.forms.otp_generation_on_home":"Ständig","settings.forms.otp_generation_on_home_legend":"Alle auf dem Startbildschirm anzeigen","settings.forms.otp_generation_on_home_title":"Alle Passwörter auf dem Startbildschirm anzeigen, ohne etwas tun zu müssen","settings.forms.never":"Niemals","settings.forms.on_otp_copy":"Beim Kopieren des Tokens","settings.forms.1_minutes":"Nach 1 Minute","settings.forms.5_minutes":"Nach 5 Minuten","settings.forms.10_minutes":"Nach 10 Minuten","settings.forms.15_minutes":"Nach 15 Minuten","settings.forms.30_minutes":"Nach 30 Minuten","settings.forms.1_hour":"Nach 1 Stunde","settings.forms.1_day":"Nach 1 Tag","settings.forms.livescan":"QR-Code scannen","settings.forms.upload":"QR-Code hochladen","settings.forms.advanced_form":"Erweitertes Formular","titles.404":"Artikel nicht gefunden","titles.start":"Neues Konto","titles.capture":"QR blinken","titles.accounts":"Konten","titles.createAccount":"Konto erstellen","titles.importAccounts":"Importiere Konten","titles.editAccount":"Konto bearbeiten","titles.showQRcode":"Konto als QR-Code","titles.groups":"Gruppen","titles.createGroup":"Gruppe erstellen","titles.editGroup":"Gruppe bearbeiten","titles.settings.options":"Einstellungen","titles.settings.account":"Benutzerkonto","titles.settings.oauth.tokens":"OAuth Tokens","titles.settings.oauth.generatePAT":"Neues persönliches Token","titles.settings.webauthn.editCredential":"Gerät bearbeiten","titles.settings.webauthn.devices":"WebAuthn Geräte","titles.login":"Login","titles.register":"Anmelden","titles.autolock":"Automatische Sperrung","titles.password.request":"Passwort zurücksetzen","titles.password.reset":"Neues Passwort","titles.webauthn.lost":"Kontowiederherstellung","titles.webauthn.recover":"Neues Gerät registrieren","titles.flooded":"Überschwemmung","titles.genericError":"Fehler","titles.about":"Über","twofaccounts.service":"Dienst","twofaccounts.account":"Benutzerkonto","twofaccounts.accounts":"Benutzerkonten","twofaccounts.icon":"Symbol","twofaccounts.icon_for_account_x_at_service_y":"Symbol des {account} -Kontos bei {service}","twofaccounts.icon_to_illustrate_the_account":"Symbol, das den Account darstellt","twofaccounts.remove_icon":"Icon entfernen","twofaccounts.no_account_here":"Noch keine 2FA vorhanden!","twofaccounts.add_first_account":"Wähle eine Methode und füge deinen ersten Account hinzu","twofaccounts.use_full_form":"Oder nutzen Sie das vollständige Formular","twofaccounts.add_one":"Konto hinzufügen","twofaccounts.show_qrcode":"QR-Code anzeigen","twofaccounts.no_service":"- kein Service -","twofaccounts.account_created":"Konto erfolgreich erstellt","twofaccounts.account_updated":"Konto erfolgreich aktualisiert","twofaccounts.accounts_deleted":"Konto(s) erfolgreich gelöscht","twofaccounts.accounts_moved":"Konto(en) erfolgreich verschoben","twofaccounts.export_selected_to_json":"Json-Export ausgewählter Konten herunterladen","twofaccounts.reveal":"aufdecken","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"Max Mustermann","twofaccounts.forms.new_account":"Neues Konto","twofaccounts.forms.edit_account":"Konto bearbeiten","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"QR-Code scannen","twofaccounts.forms.upload_qrcode":"QR-Code hochladen","twofaccounts.forms.use_advanced_form":"Erweitertes Formular verwenden","twofaccounts.forms.prefill_using_qrcode":"Mit einem QR-Code ausfüllen","twofaccounts.forms.use_qrcode.val":"QR-Code verwenden","twofaccounts.forms.use_qrcode.title":"Verwenden Sie einen QR-Code, um das Formular auszufüllen","twofaccounts.forms.unlock.val":"Entsperren","twofaccounts.forms.unlock.title":"Entsperren (auf eigene Gefahr)","twofaccounts.forms.lock.val":"Sperren","twofaccounts.forms.lock.title":"Sperren","twofaccounts.forms.choose_image":"Hochladen","twofaccounts.forms.i_m_lucky":"Mein Glück versuchen","twofaccounts.forms.i_m_lucky_legend":'Durch den Knopf "mein Glück versuchen" wird versucht, das offizielle Symbol des jeweiligen Dienstes zu erhalten. Geben Sie den tatsächlichen Namen des Dienstes ohne die Erweiterung ".xyz" ein und versuchen Sie, Tippfehler zu vermeiden (Beta-Funktion)',"twofaccounts.forms.test":"Test","twofaccounts.forms.secret.label":"Geheimnis","twofaccounts.forms.secret.help":"Der Schlüssel, der zur Generierung Ihrer Sicherheitscodes verwendet wird","twofaccounts.forms.plain_text":"Klartext","twofaccounts.forms.otp_type.label":'Wählen Sie den OTP Typ',"twofaccounts.forms.otp_type.help":"Zeitbasierte OTP oder HMAC-basierte OTP oder Steam OTP","twofaccounts.forms.digits.label":"Ziffern","twofaccounts.forms.digits.help":"Die Anzahl der Ziffern der generierten Sicherheitscodes","twofaccounts.forms.algorithm.label":"Algorithmus","twofaccounts.forms.algorithm.help":"Der Algorithmus, der zur Sicherung Ihrer Sicherheitscodes verwendet wird","twofaccounts.forms.period.label":"Gültigkeitsdauer","twofaccounts.forms.period.placeholder":"Standard ist 30","twofaccounts.forms.period.help":"Die Gültigkeitsdauer der generierten Sicherheitscodes in Sekunden","twofaccounts.forms.counter.label":"Zähler","twofaccounts.forms.counter.placeholder":"Standard ist 0","twofaccounts.forms.counter.help":"Der Zählerwert am Anfang","twofaccounts.forms.counter.help_lock":"Es ist riskant, den Zähler zu ändern, da Sie das Konto mit dem Verifizierungsserver des Dienstes desynchronisieren können. Verwenden Sie das Schlosssymbol, um Änderungen zu ermöglichen, aber nur, wenn Sie wissen, was Sie tun","twofaccounts.forms.image.label":"Bild","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"Die Url eines externen Bildes, das als Kontosymbol verwendet werden soll","twofaccounts.forms.options_help":"Sie können die folgenden Einstellungen leer lassen, wenn Sie nicht wissen, wie Sie sie einstellen. In dem Fall werden die Standardwerte verwendet.","twofaccounts.forms.alternative_methods":"Alternative Methoden","twofaccounts.stream.live_scan_cant_start":"Der Live-Scan kann nicht gestartet werden :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth hat keine Berechtigung auf Ihre Kamera zuzugreifen","twofaccounts.stream.need_grant_permission.solution":"Sie müssen die Erlaubnis erteilen, um Ihre Gerätekamera zu verwenden. Falls Sie bereits verweigert haben und Ihr Browser Sie nicht erneut anfragt, verweisen Sie bitte auf die Browser-Dokumentation, um herauszufinden, wie Sie die Erlaubnis erteilen können.","twofaccounts.stream.need_grant_permission.click_camera_icon":"Dies geschieht üblicherweise durch Klicken auf ein geschlitztes Kamerasymbol in oder neben der Adressleiste des Browsers","twofaccounts.stream.not_readable.reason":"Fehler beim Laden des Scanners","twofaccounts.stream.not_readable.solution":"Wird die Kamera bereits verwendet? Stellen Sie sicher, dass keine andere App Ihre Kamera verwendet und versuchen Sie es erneut","twofaccounts.stream.no_cam_on_device.reason":"Keine Kamera in diesem Gerät","twofaccounts.stream.no_cam_on_device.solution":"Vielleicht haben Sie vergessen, Ihre Webcam anzuschließen","twofaccounts.stream.secured_context_required.reason":"Sichere Umgebung erforderlich","twofaccounts.stream.secured_context_required.solution":"HTTPS wird für den Live-Scan benötigt. Wenn Sie 2FAuth auf Ihrem Computer ausführen, verwenden Sie nur localhost und keinen anderen virtuellen Host","twofaccounts.stream.https_required":"HTTPS für Kamera-Übertragung erforderlich","twofaccounts.stream.camera_not_suitable.reason":"Die verbauten Kameras sind nicht geeignet","twofaccounts.stream.camera_not_suitable.solution":"Bitte verwenden Sie ein anderes Gerät/Kamera","twofaccounts.stream.stream_api_not_supported.reason":"Stream API wird von diesem Browser nicht unterstützt","twofaccounts.stream.stream_api_not_supported.solution":"Sie sollten einen modernen Browser verwenden","twofaccounts.confirm.delete":"Sind Sie sicher, dass Sie dieses Konto löschen möchten?","twofaccounts.confirm.cancel":"Das Konto wird gelöscht. Sind Sie sicher?","twofaccounts.confirm.discard":"Sind Sie sicher, dass Sie dieses Konto auflösen wollen?","twofaccounts.confirm.discard_all":"Sind Sie sicher, dass Sie alle Konten verwerfen wollen?","twofaccounts.confirm.discard_duplicates":"Möchten Sie wirklich alle Duplikate wegwerfen?","twofaccounts.import.import":"Import","twofaccounts.import.to_import":"Import","twofaccounts.import.import_legend":"2FAuth kann Daten aus verschiedenen 2FA-Apps importieren.
Benutze die Exportfunktion dieser Apps, um eine Migrationsquelle zu erhalten (QR-Code oder eine Datei) und lade sie mit einer bevorzugten Methode unterhalb.","twofaccounts.import.import_legend_afterpart":"Benutzen Sie die Export-Funktion dieser Apps, um eine Migrations-Ressource wie einen QR-Code oder eine JSON-Datei zu erhalten und lade sie hier.","twofaccounts.import.upload":"Hochladen","twofaccounts.import.scan":"Scannen","twofaccounts.import.supported_formats_for_qrcode_upload":"Akzeptiert: jpg, jpeg, png, bmp, gif, svg oder webp","twofaccounts.import.supported_formats_for_file_upload":"Akzeptiert: Klartext, Json, 2fas","twofaccounts.import.supported_migration_formats":"Unterstütze Migrationsformate","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Textdatei","twofaccounts.import.plain_text":"Klartext","twofaccounts.import.parsing_data":"Daten werden verarbeitet...","twofaccounts.import.issuer":"Aussteller","twofaccounts.import.imported":"Importiert","twofaccounts.import.failure":"Fehler","twofaccounts.import.x_valid_accounts_found":"{count} gültige Konten gefunden","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"Die folgenden 2FA-Konten wurden in der Migrations-Ressource gefunden. Bisher wurden noch keine von ihnen zu 2FAuth hinzugefügt.","twofaccounts.import.use_buttons_to_save_or_discard":"Verwenden Sie die verfügbaren Schaltflächen, um sie dauerhaft in Ihrer 2FA-Sammlung zu speichern oder zu verwerfen.","twofaccounts.import.import_all":"Alle importieren","twofaccounts.import.import_this_account":"Importiere dieses Konto","twofaccounts.import.discard_all":"Alles wegwerfen","twofaccounts.import.discard_duplicates":"Duplikate wegwerfen","twofaccounts.import.discard_this_account":"Dieses Konto wegwerfen","twofaccounts.import.generate_a_test_password":"Ein Testpasswort generieren","twofaccounts.import.possible_duplicate":"Ein Konto mit der gleichen Daten ist bereits vorhanden","twofaccounts.import.invalid_account":"- ungültiger Account -","twofaccounts.import.invalid_service":"- ungültiger Service -","twofaccounts.import.do_not_set_password_or_encryption":"Aktivieren Sie NICHT den Passwortschutz oder die Verschlüsselung, wenn Sie Daten aus einer anderen 2FA-App exportieren, die Sie in 2FAuth importieren möchten.","validation.accepted":":attribute muss akzeptiert werden.","validation.accepted_if":"Das :attribute muss akzeptiert werden, wenn :other :value ist.","validation.active_url":":attribute ist keine gültige Internet-Adresse.","validation.after":":attribute muss ein Datum nach dem :date sein.","validation.after_or_equal":":attribute muss ein Datum nach dem :date oder gleich dem :date sein.","validation.alpha":"Das :attribute Feld darf nur Buchstaben enthalten.","validation.alpha_dash":"Das :attribute Feld darf nur Buchstaben, Ziffern, Bindestriche und Unterstriche enthalten.","validation.alpha_num":"Das :attribute Feld darf nur aus Zeichen und Nummern bestehen.","validation.array":":attribute muss ein Array sein.","validation.before":":attribute muss ein Datum vor dem :date sein.","validation.before_or_equal":":attribute muss ein Datum vor dem :date oder gleich dem :date sein.","validation.between.array":":attribute muss zwischen :min & :max Elemente haben.","validation.between.file":":attribute muss zwischen :min & :max Kilobytes groß sein.","validation.between.numeric":":attribute muss zwischen :min & :max liegen.","validation.between.string":":attribute muss zwischen :min & :max Zeichen lang sein.","validation.boolean":":attribute muss entweder 'true' oder 'false' sein.","validation.confirmed":":attribute stimmt nicht mit der Bestätigung überein.","validation.current_password":"Das Passwort ist falsch.","validation.date":":attribute muss ein gültiges Datum sein.","validation.date_equals":":attribute muss ein Datum gleich :date sein.","validation.date_format":":attribute entspricht nicht dem gültigen Format für :format.","validation.declined":"Das :attribute muss abgelehnt werden.","validation.declined_if":"Das :attribute muss abgelehnt werden, wenn :other :value ist.","validation.different":":attribute und :other müssen sich unterscheiden.","validation.digits":":attribute muss :digits Stellen haben.","validation.digits_between":":attribute muss zwischen :min und :max Stellen haben.","validation.dimensions":":attribute hat ungültige Bildabmessungen.","validation.distinct":":attribute beinhaltet einen bereits vorhandenen Wert.","validation.doesnt_end_with":"Das :attribute darf nicht mit einem der folgenden Werte enden: :values.","validation.doesnt_start_with":"Das :attribute Feld darf nicht mit einem der folgenden Werte beginnen: :values.","validation.email":":attribute muss eine gültige E-Mail-Adresse sein.","validation.ends_with":":attribute muss eine der folgenden Endungen aufweisen: :values","validation.enum":"Der gewählte Wert für :attribute ist ungültig.","validation.exists":"Der gewählte Wert für :attribute ist ungültig.","validation.file":":attribute muss eine Datei sein.","validation.filled":":attribute muss ausgefüllt sein.","validation.gt.array":":attribute muss mehr als :value Elemente haben.","validation.gt.file":":attribute muss größer als :value Kilobytes sein.","validation.gt.numeric":":attribute muss größer als :value sein.","validation.gt.string":":attribute muss länger als :value Zeichen sein.","validation.gte.array":":attribute muss mindestens :value Elemente haben.","validation.gte.file":"Das :attribute muss größer oder gleich :value Kilobytes groß sein.","validation.gte.numeric":"Das :attribute Feld muss größer oder gleich :value sein.","validation.gte.string":"Das :attribute Feld muss mindestens :value Zeichen enthalten.","validation.image":":attribute muss ein Bild sein.","validation.in":"Der gewählte Wert für :attribute ist ungültig.","validation.in_array":"Der gewählte Wert für :attribute kommt nicht in :other vor.","validation.integer":":attribute muss eine ganze Zahl sein.","validation.ip":":attribute muss eine gültige IP-Adresse sein.","validation.ipv4":":attribute muss eine gültige IPv4-Adresse sein.","validation.ipv6":":attribute muss eine gültige IPv6-Adresse sein.","validation.json":":attribute muss ein gültiger JSON-String sein.","validation.lt.array":":attribute muss weniger als :value Elemente haben.","validation.lt.file":":attribute muss kleiner als :value Kilobytes sein.","validation.lt.numeric":":attribute muss kleiner als :value sein.","validation.lt.string":":attribute muss kürzer als :value Zeichen sein.","validation.lte.array":":attribute darf maximal :value Elemente haben.","validation.lte.file":"Das :attribute muss kleiner oder gleich :value Kilobytes groß sein.","validation.lte.numeric":"Das :attribute Feld muss kleiner oder gleich :value sein.","validation.lte.string":"Das :attribute Feld darf maximal :value Zeichen enthalten.","validation.mac_address":"Das :attribute Feld muss eine gültige MAC-Adresse enthalten.","validation.max.array":"Das :attribute Feld darf nicht mehr als :max Elemente enthalten.","validation.max.file":"Das :attribute darf nicht größer als :max Kilobytes groß sein.","validation.max.numeric":"Das :attribute Feld darf nicht größer als :max sein.","validation.max.string":"Das :attribute Feld darf nicht mehr als :value Zeichen enthalten.","validation.max_digits":"Das :attribute Feld darf nicht mehr als :max Ziffern enthalten.","validation.mimes":":attribute muss den Dateityp :values haben.","validation.mimetypes":":attribute muss den Dateityp :values haben.","validation.min.array":":attribute muss mindestens :min Elemente haben.","validation.min.file":":attribute muss mindestens :min Kilobytes groß sein.","validation.min.numeric":":attribute muss mindestens :min sein.","validation.min.string":":attribute muss mindestens :min Zeichen lang sein.","validation.min_digits":"Das :attribute Feld muss mindestens :min Ziffern enthalten.","validation.multiple_of":"Das :attribute Feld muss ein Vielfaches von :value sein.","validation.not_in":"Der gewählte Wert für :attribute ist ungültig.","validation.not_regex":":attribute hat ein ungültiges Format.","validation.numeric":":attribute muss eine Zahl sein.","validation.password.letters":"Das :attribute Feld muss mindestens einen Buchstaben enthalten.","validation.password.mixed":"Das :attribute Feld muss mindestens einen Groß- und einen Kleinbuchstaben enthalten.","validation.password.numbers":"Das :attribute Feld muss mindestens eine Zahl enthalten.","validation.password.symbols":"Das :attribute Feld muss mindestens ein Symbol enthalten.","validation.password.uncompromised":"Der im :attribute Feld angegebene Wert wurde in einem Datenleck gefunden. Bitte geben Sie für :attribute einen anderen Wert ein.","validation.present":":attribute muss vorhanden sein.","validation.prohibited":"Das :attribute Feld ist unzulässig.","validation.prohibited_if":"Das :attribute Feld ist unzulässig, wenn :other den Wert :value entspricht.","validation.prohibited_unless":"Das :attribute Feld ist unzulässig, wenn :other nicht den Wert :value annimmt.","validation.prohibits":"Bei gegebenem :attribute Feld ist :other nicht zulässig.","validation.regex":":attribute Format ist ungültig.","validation.required":":attribute muss ausgefüllt werden.","validation.required_array_keys":"Das Feld :attribute muss Einträge enthalten für: :values.","validation.required_if":":attribute muss ausgefüllt werden, wenn :other den Wert :value hat.","validation.required_if_accepted":"Das Feld :attribute muss ausgefüllt werden, wenn :other ausgefüllt wurde.","validation.required_unless":":attribute muss ausgefüllt werden, wenn :other nicht den Wert :values hat.","validation.required_with":":attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.","validation.required_with_all":":attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.","validation.required_without":":attribute muss ausgefüllt werden, wenn :values nicht ausgefüllt wurde.","validation.required_without_all":":attribute muss ausgefüllt werden, wenn keines der Felder :values ausgefüllt wurde.","validation.same":":attribute und :other müssen übereinstimmen.","validation.size.array":":attribute muss genau :size Elemente haben.","validation.size.file":":attribute muss :size Kilobyte groß sein.","validation.size.numeric":":attribute muss gleich :size sein.","validation.size.string":":attribute muss :size Zeichen lang sein.","validation.starts_with":":attribute muss mit einem der folgenden Anfänge aufweisen: :values","validation.string":":attribute muss ein String sein.","validation.timezone":"Das :attribute Feld muss eine gültige Zeitzone sein.","validation.unique":":attribute ist bereits vergeben.","validation.uploaded":":attribute konnte nicht hochgeladen werden.","validation.url":"Das :attribute Feld muss eine gültige URL aufweisen.","validation.uuid":":attribute muss ein UUID sein.","validation.single":"Bei Verwendung von :attribute muss es der einzige Parameter in diesem Anfragetext sein","validation.onlyCustomOtpWithUri":"Der uri Parameter muss allein oder nur in Kombination mit dem 'custom_otp' Parameter angegeben werden","validation.custom.icon.image":"Unterstützte Formate sind jpeg, png, bmp, gif, svg oder webp.","validation.custom.qrcode.image":"Unterstützte Formate sind jpeg, png, bmp, gif, svg oder webp.","validation.custom.uri.regex":"Das :attribute Feld enthält kein gültiges otpauth uri.","validation.custom.otp_type.in":"Das :attribute Feld wird nicht unterstützt.","validation.custom.email.exists":"Kein Konto mit dieser E-Mail gefunden.","validation.custom.secret.isBase32Encoded":"Das :attribute Feld muss einen Base32 kodierten String enthalten.","validation.custom.account.regex":"Das :attribute Feld darf keinen Doppelpunkt enthalten.","validation.custom.service.regex":"Das :attribute Feld darf keinen Doppelpunkt enthalten.","validation.custom.label.required":"Der URI muss ein Label haben.","validation.custom.ids.regex":"Die IDs müssen durch Kommata getrennt werden, ohne Komma am Ende zu haben."};export{e as default}; diff --git a/public/build/assets/php_es-887feba5.js b/public/build/assets/php_es-887feba5.js deleted file mode 100644 index a1b4a2bc..00000000 --- a/public/build/assets/php_es-887feba5.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"auth.failed":"Estas credenciales no coinciden con nuestros registros.","auth.password":"La contraseña proporcionada es incorrecta.","auth.throttle":"Demasiados intentos de acceso. Por favor intente nuevamente en :seconds segundos.","auth.sign_out":"Cerrar sesión","auth.sign_in":"Iniciar sesión","auth.sign_in_using":"Inicia sesión, usando","auth.or_continue_with":"You an also continue with:","auth.sign_in_using_security_device":"Iniciar sesión usando un dispositivo de seguridad","auth.login_and_password":"usuario y contraseña","auth.register":"Registrarse","auth.welcome_to_2fauth":"Bienvenido a 2FAuth","auth.autolock_triggered":"Autobloqueo activado","auth.autolock_triggered_punchline":"El evento observado por el Auto Bloqueo ha sido activado. Has sido desconectado automáticamente.","auth.already_authenticated":"Ya está autenticado","auth.authentication":"Autenticación","auth.maybe_later":"Quizás más tarde","auth.user_account_controlled_by_proxy":"Cuenta de usuario disponible por un proxy de autenticación.
Administra la cuenta a nivel de proxy.","auth.auth_handled_by_proxy":"Autenticación administrada por un proxy inverso, las configuraciones de abajo están deshabilitadas.
Gestionar autenticación a nivel proxy.","auth.confirm.logout":"¿Seguro que quieres cerrar la sesión?","auth.confirm.revoke_device":"¿Está seguro que quiere eliminar este dispositivo?","auth.confirm.delete_account":"¿Está seguro que desea eliminar su cuenta?","auth.webauthn.security_device":"un dispositivo de seguridad","auth.webauthn.security_devices":"Dispositivos de seguridad","auth.webauthn.security_devices_legend":"Dispositivos de autenticación que pudes usar para iniciar sesión en 2FAuth, como: llaves de seguridad (ej. Yubikey) o smartphones con capacidades biométricas (ej. Apple FaceID/TouchID)","auth.webauthn.enhance_security_using_webauthn":`Puede mejorar la seguridad de su cuenta 2FAuth activando la autenticación WebAuthn.

- WebAuthn permite el uso de dispositivos de confianza (como, Yubikeys o smartphones con capacidades biométricas) para iniciar sesión rápidamente y de forma más segura.`,"auth.webauthn.use_security_device_to_sign_in":"Prepárese para autenticarse usando (uno) de sus dispositivos de seguridad. Conecte su llave, retirar máscaras o guantes, etc.","auth.webauthn.lost_your_device":"¿Perdió su dispositivo?","auth.webauthn.recover_your_account":"Recuperar su cuenta","auth.webauthn.account_recovery":"Recuperación cuenta","auth.webauthn.recovery_punchline":"2FAuth te enviará un enlace de recuperación a esta dirección de correo electrónico. Haz clic en el enlace en el correo electrónico recibido y sigue las instrucciones.

Asegúrate de abrir el correo electrónico en un dispositivo que sea completamente tuyo.","auth.webauthn.send_recovery_link":"Enviar enlace de recuperación","auth.webauthn.account_recovery_email_sent":"¡Correo de recuperación de cuenta enviado!","auth.webauthn.disable_all_security_devices":"Desactivar todos los dispositivos de seguridad","auth.webauthn.disable_all_security_devices_help":"Todos sus dispositivos de seguridad serán revocados. Utilice esta opción si ha perdido uno o si su seguridad ha sido comprometida.","auth.webauthn.register_a_new_device":"Registrar un nuevo dispositivo","auth.webauthn.register_a_device":"Registrar un dispositivo","auth.webauthn.device_successfully_registered":"Dispositivo registrado correctamente","auth.webauthn.device_revoked":"Dispositivo revocado correctamente","auth.webauthn.revoking_a_device_is_permanent":"El revocado de un dispositivo es permanente","auth.webauthn.recover_account_instructions":"Para recuperar su cuenta, 2FAuth restablece algunos ajustes de Webauthn para que pueda iniciar sesión usando su correo electrónico y contraseña.","auth.webauthn.invalid_recovery_token":"Token de recuperación inválido","auth.webauthn.webauthn_login_disabled":"Login Webauthn desactivado","auth.webauthn.invalid_reset_token":"Este token de recuperación no es válido.","auth.webauthn.rename_device":"Renombrar dispositivo","auth.webauthn.my_device":"Mi dispositivo","auth.webauthn.unknown_device":"Dispositivo desconocido","auth.webauthn.use_webauthn_only.label":"Usar WebAuthn solo","auth.webauthn.use_webauthn_only.help":`Haga de WebAuthn el único método autorizado para iniciar sesión en su cuenta de 2FAuth. Esta es la configuración recomendada para aprovechar la seguridad mejorada de WebAuthn.

- En caso de pérdida del dispositivo, podrás recuperar tu cuenta restableciendo esta opción e iniciando sesión utilizando tu correo electrónico y contraseña.

- Atención! El formulario de correo electrónico y contraseña sigue disponible a pesar de que esta opción está activada, pero siempre devolverá una respuesta de 'Autenticación fallida'.`,"auth.webauthn.need_a_security_device_to_enable_options":"Establezca al menos un dispositivo para activar las siguientes opciones","auth.forms.name":"Nombre","auth.forms.login":"Iniciar sesión","auth.forms.webauthn_login":"Inicio de sesión WebAuthn","auth.forms.email":"E-mail","auth.forms.password":"Contraseña","auth.forms.reveal_password":"Revelar contraseña","auth.forms.hide_password":"Ocultar contraseña","auth.forms.confirm_password":"Confirmar contraseña","auth.forms.new_password":"New password","auth.forms.confirm_new_password":"Confirma la contraseña nueva","auth.forms.dont_have_account_yet":"¿Aún no tienes una cuenta?","auth.forms.already_register":"¿Ya te has registrado?","auth.forms.authentication_failed":"La autenticación ha fallado","auth.forms.forgot_your_password":"¿Olvidó su contraseña?","auth.forms.request_password_reset":"Reiniciarlo","auth.forms.reset_your_password":"Reestablecer tu contraseña","auth.forms.reset_password":"Restablecer contraseña","auth.forms.disabled_in_demo":"Característica desactivada en el modo Demo","auth.forms.current_password.label":"Contraseña actual","auth.forms.current_password.help":"Introduzca su contraseña actual para confirmar que es usted","auth.forms.change_password":"Cambiar Contraseña","auth.forms.send_password_reset_link":"Enviar enlace para restablecer contraseña","auth.forms.password_successfully_changed":"Contraseña cambiada correctamente","auth.forms.edit_account":"Editar cuenta","auth.forms.profile_saved":"¡Perfil actualizado con éxito!","auth.forms.welcome_to_demo_app_use_those_credentials":"Bienvenido/a a la demostración de 2FAuth.

Puedes conectarte usando el email demo@2fauth.app y la contraseña demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Bienvenido/a a la instancia de prueba 2FAuth.

Usa el email testing@2fauth.app y la contraseña password","auth.forms.register_punchline":"Bienvenido a 2FAuth.
Necesitas una cuenta para ir más allá, por favor, regístrate.","auth.forms.reset_punchline":"2FAuth le enviará un enlace para restablecer la contraseña a esta dirección. Haga clic en el enlace en el correo electrónico recibido para establecer una nueva contraseña.","auth.forms.name_this_device":"Proporcione nombre al dispositivo","auth.forms.delete_account":"Eliminar cuenta","auth.forms.delete_your_account":"Eliminar su cuenta","auth.forms.delete_your_account_and_reset_all_data":"Esto restablecerá 2FAuth. Su cuenta de usuario se eliminará, así como, todos los datos de 2FA. No hay vuelta atrás.","auth.forms.reset_your_password_to_delete_your_account":"If you always used SSO to sign in, sign out then use the reset password feature to get a password so you can fill this form.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Deleting your 2FAuth account has no impact on your external SSO account.","auth.forms.user_account_successfully_deleted":"Cuenta de usuario eliminada correctamente","auth.forms.has_lower_case":"Tiene minúsculas","auth.forms.has_upper_case":"Tiene mayúsculas","auth.forms.has_special_char":"Tiene carácter especial","auth.forms.has_number":"Tiene número","auth.forms.is_long_enough":"8 carácteres min.","auth.forms.mandatory_rules":"Obligatorio","auth.forms.optional_rules_you_should_follow":"Recomendado (altamente)","auth.forms.caps_lock_is_on":"Bloqueo de mayúsculas está Activado","commons.cancel":"Cancelar","commons.update":"Actualizar","commons.copy":"Copiar","commons.copy_to_clipboard":"Copiar al portapapeles","commons.copied_to_clipboard":"Copiado al portapapeles","commons.profile":"Perfil","commons.edit":"Editar","commons.delete":"Eliminar","commons.disable":"Desactivar","commons.enable":"Activar","commons.create":"Crear","commons.save":"Guardar","commons.close":"Cerrar","commons.clear":"Limpiar","commons.clear_search":"Limpiar búsqueda","commons.demo_do_not_post_sensitive_data":"Esta instancia es para demostracion, no ingrese informacion privada","commons.testing_do_not_post_sensitive_data":"Esta instancia es para demostracion, no ingrese informacion privada","commons.selected":"seleccionado","commons.name":"Nombre","commons.manage":"Configurar","commons.done":"Hecho","commons.new":"Nuevo","commons.back":"Volver","commons.move":"Mover","commons.export":"Exportar","commons.all":"Todo","commons.select_all":"Seleccionar todo","commons.clear_selection":"Borrar selección","commons.sort_descending":"Ordenar (descendente)","commons.sort_ascending":"Ordenar (ascendente)","commons.rename":"Renombrar","commons.new_name":"Nuevo nombre","commons.options":"Opciones","commons.reload":"Recargar","commons.refresh":"Refresh","commons.data_refreshed_to_reflect_server_changes":"Data has been refresh to reflect server-side changes","commons.generate":"Generar","commons.generating_otp":"Generando contraseña de un solo uso","commons.open_in_browser":"Abrir en el navegador","commons.continue":"Continuar","commons.discard":"Descartar","commons.about":"Acerca de","commons.usefull_links":"Enlaces útiles","commons.environment":"Entorno","commons.credits":"Créditos","commons.2fauth_teaser":"Una aplicación web para administrar tus cuentas de autenticación de dos factores (2FA) y generar sus códigos de seguridad","commons.made_with":"Hecho con","commons.ui_icons_by":"Iconos UI por","commons.logos_by":"Logos por","commons.search":"Buscar","commons.resources":"Recursos","commons.check_for_update":"Comprobar nueva versión","commons.check_for_update_help":"Comprobar automáticamente (una vez por semana), y avisar si una nueva versión de 2FAuth se publique en Github","commons.you_are_up_to_date":"Esta instancia está actualizada","commons.2fauth_description":"Una app web para administrar tus cuentas de autenticación de doble factor (2FA), y generar tus códigos de seguridad","commons.image_of_qrcode_to_scan":"Imagen de código QR para escanear","commons.file":"Archivo","commons.or":"O","commons.close_the_x_page":"Cerrar la página {pagetitle}","commons.submit":"Submit","commons.default":"Default","commons.back_to_home":"Back to home","commons.nothing":"nothing","errors.resource_not_found":"Recurso no encontrado","errors.error_occured":"Se ha producido un error:","errors.refresh":"Actualizar","errors.no_valid_otp":"No hay un recurso OTP válido en este código QR","errors.something_wrong_with_server":"Algo va mal con su servidor","errors.Unable_to_decrypt_uri":"No se puede descifrar uri","errors.not_a_supported_otp_type":"Este formato OTP no está soportado actualmente","errors.cannot_create_otp_without_secret":"No se puede crear un OTP sin una clave secreta","errors.data_of_qrcode_is_not_valid_URI":"Los datos de este código QR no son una URI OTP de Autenticación. El código QR contiene:","errors.wrong_current_password":"Contraseña actual incorrecta, no ha cambiado nada","errors.error_during_encryption":"El cifrado falló, la base de datos permanece sin protección.","errors.error_during_decryption":"El descifrado falló, su base de datos todavía está protegida. Esto se debe, principalmente, a un problema de integridad de datos cifrados para una o más cuentas.","errors.qrcode_cannot_be_read":"Este código QR no se puede leer","errors.too_many_ids":"demasiado ids fueron incluidos en los parámetros de consulta, máx. 100 permitidos","errors.delete_user_setting_only":"Sólo los ajustes creados por el usuario pueden ser eliminados","errors.indecipherable":"*indescifrable*","errors.cannot_decipher_secret":"The clave secreta no puede ser descifrada. Esto es, principalmente, causado por una APP_KEY inválida en el archivo de configuración .env de 2FAuth, o datos corruptos almacenados en la base de datos.","errors.https_required":"Contexto HTTPS requerido","errors.browser_does_not_support_webauthn":"Su dispositivo no soporta WebAuthn. Intente de nuevo más tarde en un navegador más moderno","errors.aborted_by_user":"Abortado por el usuario","errors.security_device_already_registered":"Device already registered","errors.not_allowed_operation":"Operacion no permitida","errors.no_authenticator_support_specified_algorithms":"No authenticators support specified algorithms","errors.authenticator_missing_discoverable_credential_support":"Authenticator missing discoverable credential support","errors.authenticator_missing_user_verification_support":"Authenticator missing user verification support","errors.unknown_error":"Error desconocido","errors.security_error_check_rpid":"Error de seguridad
Compruebe su variable de entorno WEBAUTHN_ID","errors.2fauth_has_not_a_valid_domain":"2FAuth's domain is not a valid domain","errors.user_id_not_between_1_64":"User ID was not between 1 and 64 chars","errors.no_entry_was_of_type_public_key":'No entry was of type "public-key"',"errors.unsupported_with_reverseproxy":"No aplicable cuando se utiliza un proxy de autenticación","errors.user_deletion_failed":"Error al borrar la cuenta de usuario, no se han eliminado datos","errors.auth_proxy_failed":"La autenticación proxy falló","errors.auth_proxy_failed_legend":"2FAuth está configurado para ejecutarse detrás de un proxy de autenticación, pero, su proxy no devuelve el encabezado esperado. Compruebe su configuración e intente de nuevo.","errors.invalid_x_migration":"Inválido o ilegible: datos de ","errors.invalid_2fa_data":"Datos 2FA inválidos","errors.unsupported_migration":"Los datos no coinciden con ningún formato soportado","errors.unsupported_otp_type":"Tipo de OTP no soportada","errors.encrypted_migration":"Ilegíble, los datos parecen estar encriptados","errors.no_logo_found_for_x":"Logo no disponible para {service}","errors.file_upload_failed":"Fallo al subir el archivo","errors.unauthorized":"No autorizado","errors.unauthorized_legend":"No tiene permisos para ver este recurso o para realizar esta acción","errors.cannot_delete_the_only_admin":"No se puede eliminar la única cuenta de administrador","errors.error_during_data_fetching":"💀 Something went wrong during data fetching","errors.check_failed_try_later":"Check failed, please retry later","errors.sso_disabled":"SSO is disabled","errors.sso_bad_provider_setup":"This SSO provider is not fully setup in your .env file","errors.sso_failed":"Authentication via SSO rejected","errors.sso_no_register":"Registrations are disabled","errors.sso_email_already_used":"A user account with the same email address already exists but it does not match your external account ID. Do not use SSO if you are already registered on 2FAuth with this email.","errors.account_managed_by_external_provider":"Account managed by an external provider","groups.groups":"Grupos","groups.create_group":"Crear nuevo grupo","groups.show_group_selector":"Ver selector de grupo","groups.hide_group_selector":"Ocultar selector de grupo","groups.select_accounts_to_show":"Seleccionar grupo de cuenta a mostrar","groups.manage_groups":"Gestionar grupos","groups.active_group":"Grupo activo","groups.manage_groups_legend":"Puedes crear grupos para organizar tus cuentas de la manera que quieras. Todas las cuentas permanecen visibles en el pseudo grupo llamado 'Todo', independientemente del grupo al que pertenezcan.","groups.deleting_group_does_not_delete_accounts":"La eliminación de un grupo no elimina cuentas","groups.move_selected_to":"Mover selección a","groups.move_selected_to_group":"Mover seleccionados a un grupo","groups.no_group":"Sin grupo","groups.change_group":"Cambiar grupo","groups.group_successfully_created":"Grupo creado correctamente","groups.group_name_saved":"Nombre de grupo guardado","groups.group_successfully_deleted":"Grupo eliminado correctamente","groups.forms.new_group":"Nuevo grupo","groups.forms.new_name":"Nuevo nombre","groups.forms.rename_group":"Renombrar grupo","groups.confirm.delete":"¿Está seguro que desea eliminar este grupo?","languages.browser_preference":"Preferencia del navegador","languages.en":"Inglés","languages.fr":"Francés","languages.de":"Alemán","languages.es":"Español","languages.zh":"Chino Simplificado","languages.ru":"Ruso","languages.bg":"Búlgaro","pagination.previous":"« Anterior","pagination.next":"Siguiente »","passwords.reset":"¡Su contraseña ha sido restablecida!","passwords.sent":"¡Te hemos enviado por correo el enlace para restablecer tu contraseña!","passwords.throttled":"Por favor, espere antes de intentar de nuevo.","passwords.token":"El token de recuperación de contraseña es inválido.","passwords.user":"No podemos encontrar ningún usuario con ese correo electrónico.","passwords.password":"La contraseña debe tener al menos ocho caracteres, y coincidir con la confirmación de contraseña.","settings.settings":"Ajustes","settings.preferences":"Preferencias","settings.account":"Cuenta","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Tokens","settings.options":"Opciones","settings.user_preferences":"Preferencias de usuario","settings.admin_settings":"Ajustes de administración","settings.confirm.revoke":"¿Está seguro que desea revocar este token?","settings.administration":"Administración","settings.administration_legend":"Mientras que los ajustes anteriores son de usuario (cada usuario puede establecer sus propias preferencias), los siguientes son globales y se aplican a todos los usuarios. Sólo un administrador puede ver y editar esas configuraciones.","settings.only_an_admin_can_edit_them":"Only an administrator can view and edit them.","settings.you_are_administrator":"Usted es un administrador","settings.account_linked_to_sso_x_provider":"You signed-in via SSO using your :provider account. Your information cannot be changed here but on :provider.","settings.general":"General","settings.security":"Seguridad","settings.profile":"Perfil","settings.change_password":"Cambiar contraseña","settings.personal_access_tokens":"Tokens de acceso personal","settings.token_legend":"Los Tokens de Acceso Personal, permiten a cualquier aplicación autenticarse con la API de 2FAuth. Debe especificar el token de acceso como Bearer Token en la cabecera de autorización de aplicaciones de tercero.","settings.generate_new_token":"Generar nuevo token","settings.revoke":"Revocar","settings.token_revoked":"Token revocado correctamente","settings.revoking_a_token_is_permanent":"Revocar un token es permanente","settings.make_sure_copy_token":"Asegúrese de copiar su token de acceso personal ahora. ¡No podrá volver a verlo!","settings.data_input":"Introducción de datos","settings.forms.edit_settings":"Modificar ajustes","settings.forms.setting_saved":"Ajustes guardados","settings.forms.new_token":"Nuevo token","settings.forms.some_translation_are_missing":"¿Faltan algunas traducciones utilizando el idioma preferido por el navegador?","settings.forms.help_translate_2fauth":"Ayude a traducir 2FAuth","settings.forms.language.label":"Idioma","settings.forms.language.help":"Idioma utilizado para traducir la interfaz de usuario de 2FAuth. Los idiomas listados están completos, establezca el idioma de su elección para reemplazar las preferencias de su navegador.","settings.forms.show_otp_as_dot.label":"Mostrar contraseñas generadas de un solo uso como punto","settings.forms.show_otp_as_dot.help":"Reemplaza carácteres de contraseñas generados con *** para asegurar confidencialidad. No afecta la función copiar/pegar.","settings.forms.reveal_dotted_otp.label":'Reveal obscured OTP',"settings.forms.reveal_dotted_otp.help":"Let the ability to temporarily reveal Dot-Obscured passwords","settings.forms.close_otp_on_copy.label":'Cerrar OTP después de copiar',"settings.forms.close_otp_on_copy.help":"Haciendo clic en la contraseña generada para copiarla, la oculta automáticamente de la pantalla","settings.forms.copy_otp_on_display.label":'Copiar OTP en pantalla',"settings.forms.copy_otp_on_display.help":'Copiar automáticamente la contraseña justo después de aparecer en pantalla. Debido a limitaciones en los navegadores, solo la primera contraseña TOTP será copiada, no las que roten',"settings.forms.use_basic_qrcode_reader.label":"Usar lector de código QR básico","settings.forms.use_basic_qrcode_reader.help":"Si experimenta problemas al capturar códigos QR habilite esta opción para cambiar a un lector de código QR más básico, pero más fiable","settings.forms.display_mode.label":"Modo de visualización","settings.forms.display_mode.help":"Elija si desea que las cuentas se muestren como una lista o como una cuadrícula","settings.forms.password_format.label":"Formato de contraseñas","settings.forms.password_format.help":"Cambiar cómo se muestran las contraseñas agrupando dígitos para facilitar la legibilidad y la memorización","settings.forms.pair":"por parejas","settings.forms.pair_legend":"Grupo de dígitos dos por dos","settings.forms.trio_legend":"Grupo de dígitos tres por tres","settings.forms.half_legend":"Dividir dígitos en dos grupos iguales","settings.forms.trio":"por tríos","settings.forms.half":"por la mitad","settings.forms.grid":"Cuadrícula","settings.forms.list":"Lista","settings.forms.theme.label":"Tema","settings.forms.theme.help":"Forzar un tema específico o aplicar el tema definido en sus preferencias de sistema/navegador","settings.forms.light":"Claro","settings.forms.dark":"Oscuro","settings.forms.automatic":"Automático","settings.forms.show_accounts_icons.label":"Mostrar iconos","settings.forms.show_accounts_icons.help":"Mostar iconos de aplicaciones en la vista principal","settings.forms.get_official_icons.label":"Obtener iconos oficiales","settings.forms.get_official_icons.help":"(Intentar) Obtener el icono oficial del emisor 2FA al añadir una cuenta","settings.forms.auto_lock.label":"Bloqueo automático","settings.forms.auto_lock.help":"Cerrar sesión del usuario automáticamente en caso de inactividad. No tiene efecto cuando la autenticación es manejada por un proxy, ni cuando ninguna url de cierre de sesión personalizada se especificada.","settings.forms.use_encryption.label":"Proteger los datos confidenciales","settings.forms.use_encryption.help":"Los datos sensibles, las claves secretas y correos electrónicos de 2FA, se almacenan cifrados en la base de datos. Asegúrese de respaldar el valor de APP_KEY de su archivo .env (o el archivo entero), pues, sirve como clave de cifrado. No hay forma de descifrar datos encriptados sin esta clave.","settings.forms.default_group.label":"Grupo por defecto","settings.forms.default_group.help":"El grupo al que las cuentas recién creadas están asociadas","settings.forms.useDirectCapture.label":"Entrada directa","settings.forms.useDirectCapture.help":"Elija si desea que se le pida que elija un modo de entrada entre los disponibles o si desea utilizar directamente el modo de entrada por defecto","settings.forms.defaultCaptureMode.label":"Modo de entrada de datos por defecto","settings.forms.defaultCaptureMode.help":"Modo de entrada predeterminado usado cuando la opción de entrada directa está encendida","settings.forms.remember_active_group.label":"Recordar filtro de grupo","settings.forms.remember_active_group.help":"Guardar el último filtro de grupo aplicado y restaurarlo en su próxima visita","settings.forms.disable_registration.label":"Deshabilitar registro de usuarios","settings.forms.disable_registration.help":"Evitar el registro de nuevos usuarios","settings.forms.enable_sso.label":"Enable Single Sign-On (SSO)","settings.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","settings.forms.otp_generation.label":"Mostrar contraseña","settings.forms.otp_generation.help":'Establezca cómo y cuándo se muestran las OTP.
',"settings.forms.otp_generation_on_request":"Después de un clic/toque","settings.forms.otp_generation_on_request_legend":"Solo, en su propia vista","settings.forms.otp_generation_on_request_title":"Haga clic en una cuenta para obtener una contraseña en una vista dedicada","settings.forms.otp_generation_on_home":"Constantemente","settings.forms.otp_generation_on_home_legend":"Todos ellos, en casa","settings.forms.otp_generation_on_home_title":"Mostrar todas las contraseñas en la vista principal, sin hacer nada","settings.forms.never":"Nunca","settings.forms.on_otp_copy":"Al copiar código de seguridad","settings.forms.1_minutes":"Después de 1 minuto","settings.forms.5_minutes":"Después de 5 minutos","settings.forms.10_minutes":"Después de 10 minutos","settings.forms.15_minutes":"Después de 15 minutos","settings.forms.30_minutes":"Después de 30 minutos","settings.forms.1_hour":"Después de 1 hora","settings.forms.1_day":"Después de 1 día","settings.forms.livescan":"Escaneo código QR","settings.forms.upload":"Subida de código QR","settings.forms.advanced_form":"Formulario avanzado","titles.404":"Artículo no encontrado","titles.start":"Nueva cuenta","titles.capture":"Enfocar QR","titles.accounts":"Cuentas","titles.createAccount":"Crear cuenta","titles.importAccounts":"Importar cuentas","titles.editAccount":"Editar Cuenta","titles.showQRcode":"Cuenta como código QR","titles.groups":"Grupos","titles.createGroup":"Crear grupo","titles.editGroup":"Editar grupo","titles.settings.options":"Opciones","titles.settings.account":"Cuenta de usuario","titles.settings.oauth.tokens":"Tokens de OAuth","titles.settings.oauth.generatePAT":"Nuevo token personal","titles.settings.webauthn.editCredential":"Edición de dispositivo","titles.settings.webauthn.devices":"Dispositivos WebAuthn","titles.login":"Login","titles.register":"Registrarse","titles.autolock":"Bloqueo automático","titles.password.request":"Restablecer contraseña","titles.password.reset":"Nueva contraseña","titles.webauthn.lost":"Recuperación cuenta","titles.webauthn.recover":"Registrar un nuevo dispositivo","titles.flooded":"Desbordar","titles.genericError":"Error","titles.about":"Acerca de","twofaccounts.service":"Servicio","twofaccounts.account":"Cuenta","twofaccounts.accounts":"Cuentas","twofaccounts.icon":"Icono","twofaccounts.icon_for_account_x_at_service_y":"Icono de la cuenta {account} en {service}","twofaccounts.icon_to_illustrate_the_account":"Icono que representa a la cuenta","twofaccounts.remove_icon":"Eliminar icono","twofaccounts.no_account_here":"¡No hay 2FA aquí!","twofaccounts.add_first_account":"Elige un método y añade tu primer cuenta","twofaccounts.use_full_form":"O usa el formulario completo","twofaccounts.add_one":"Agregar uno","twofaccounts.show_qrcode":"Muestra el código QR","twofaccounts.no_service":"- sin servicio -","twofaccounts.account_created":"Cuenta creada correctamente","twofaccounts.account_updated":"Cuenta actualizada correctamente","twofaccounts.accounts_deleted":"Cuenta(s) eliminada(s) correctamente","twofaccounts.accounts_moved":"Cuenta(s) movida(s) correctamente","twofaccounts.export_selected_to_json":"Descargar un fichero json con el contenido de las cuentas seleccionadas","twofaccounts.reveal":"reveal","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"John DOE","twofaccounts.forms.new_account":"Nueva cuenta","twofaccounts.forms.edit_account":"Editar cuenta","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Escanear un código QR","twofaccounts.forms.upload_qrcode":"Subir un código QR","twofaccounts.forms.use_advanced_form":"Usar el formulario avanzado","twofaccounts.forms.prefill_using_qrcode":"Rellenar usando un código QR","twofaccounts.forms.use_qrcode.val":"Usar un código QR","twofaccounts.forms.use_qrcode.title":"Usa un código QR para rellenar mágicamente el formulario","twofaccounts.forms.unlock.val":"Desbloquear","twofaccounts.forms.unlock.title":"Desbloquearlo (bajo su propio riesgo)","twofaccounts.forms.lock.val":"Bloquear","twofaccounts.forms.lock.title":"Bloquearlo","twofaccounts.forms.choose_image":"Subir","twofaccounts.forms.i_m_lucky":"Probar suerte","twofaccounts.forms.i_m_lucky_legend":'El botón "Probar suerte" intenta obtener el icono oficial del servicio dado. Introduzca el nombre del servicio sin la extensión ".xyz" e intente evitar errores tipográficos. (función beta)',"twofaccounts.forms.test":"Test","twofaccounts.forms.secret.label":"Secreto","twofaccounts.forms.secret.help":"La clave utilizada para generar sus códigos de seguridad","twofaccounts.forms.plain_text":"Texto plano","twofaccounts.forms.otp_type.label":'Elige el tipo de OTP a crear',"twofaccounts.forms.otp_type.help":"Time-based OTP, HMAC-based OTP o Steam OTP","twofaccounts.forms.digits.label":"Dígitos","twofaccounts.forms.digits.help":"El número de dígitos del código de seguridad generado","twofaccounts.forms.algorithm.label":"Algorítmo","twofaccounts.forms.algorithm.help":"El algoritmo usado para proteger sus códigos de seguridad","twofaccounts.forms.period.label":"Periodo","twofaccounts.forms.period.placeholder":"Por defecto es 30","twofaccounts.forms.period.help":"Periodo de validez de los códigos se seguridad generados, en segundos","twofaccounts.forms.counter.label":"Contador","twofaccounts.forms.counter.placeholder":"Por defecto es 0","twofaccounts.forms.counter.help":"El valor inicial del contador","twofaccounts.forms.counter.help_lock":"Es arriesgado editar el contador, ya que puede desincronizar la cuenta con el servidor de verificación del servicio. Utilice el icono de bloqueo para habilitar la modificación, pero solo si sabe lo que está haciendo","twofaccounts.forms.image.label":"Imágen","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"La url de una imagen externa a usar como icono de cuenta","twofaccounts.forms.options_help":"Puede dejar las siguientes opciones en blanco si no sabe cómo establecerlas. Los valores más utilizados se aplicarán.","twofaccounts.forms.alternative_methods":"Métodos alternativos","twofaccounts.stream.live_scan_cant_start":"Live scan no puede comenzar :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth no tiene permiso para acceder a tu cámara","twofaccounts.stream.need_grant_permission.solution":"Necesitas conceder permiso para usar la cámara de tu dispositivo. Si ya lo ha denegado y su navegador no le preguntan de nuevo, por favor refiérase a la documentación del navegador para averiguar cómo conceder permisos.","twofaccounts.stream.need_grant_permission.click_camera_icon":"It is usually done by clicking on a slashed camera icon in or next to the browser's address bar","twofaccounts.stream.not_readable.reason":"Fallo al cargar el escáner","twofaccounts.stream.not_readable.solution":"¿La cámara ya está en uso? Asegúrate de que ninguna otra aplicación use tu cámara e inténtalo de nuevo","twofaccounts.stream.no_cam_on_device.reason":"No se encontraron cámaras en este dispositivo","twofaccounts.stream.no_cam_on_device.solution":"Tal vez olvidaste conectar tu cámara web","twofaccounts.stream.secured_context_required.reason":"Requiere contexto seguro","twofaccounts.stream.secured_context_required.solution":"HTTPS es necesario para escanear en vivo. Si ejecuta 2FAuth desde su computadora, no utilice un host virtual distinto de localhost","twofaccounts.stream.https_required":"HTTPS requerido para la transmisión de la cámara","twofaccounts.stream.camera_not_suitable.reason":"Las cámaras instaladas no son apropiadas","twofaccounts.stream.camera_not_suitable.solution":"Por favor usa otro dispositivo/cámara","twofaccounts.stream.stream_api_not_supported.reason":"Stream API no está soportado en este navegador","twofaccounts.stream.stream_api_not_supported.solution":"Deberías usar un navegador moderno","twofaccounts.confirm.delete":"¿Está seguro que desea eliminar esta cuenta?","twofaccounts.confirm.cancel":"La cuenta será eliminada. ¿Estás seguro?","twofaccounts.confirm.discard":"¿Está seguro que desea eliminar esta cuenta?","twofaccounts.confirm.discard_all":"¿Está seguro que desea eliminar todas las cuentas?","twofaccounts.confirm.discard_duplicates":"¿Está seguro que desea eliminar todos los duplicados?","twofaccounts.import.import":"Import","twofaccounts.import.to_import":"Importar","twofaccounts.import.import_legend":"2FAuth puede importar datos de varias apps 2FA.
Usa la función de Exportación de éstas apps para generar los recursos de migración (código QR o archivo), y cargalo usando el método preferido abajo.","twofaccounts.import.import_legend_afterpart":"Use the Export feature of these apps to get a migration resource like a QR code or a JSON file then load it here.","twofaccounts.import.upload":"Subir","twofaccounts.import.scan":"Escanear","twofaccounts.import.supported_formats_for_qrcode_upload":"Aceptado: jpg, jpeg, png, bmp, gif, svg, o webp","twofaccounts.import.supported_formats_for_file_upload":"Aceptado: texto plano, json, 2fas","twofaccounts.import.supported_migration_formats":"Formatos de migración soportados","twofaccounts.import.qr_code":"Código QR","twofaccounts.import.text_file":"Text file","twofaccounts.import.plain_text":"Texto plano","twofaccounts.import.parsing_data":"Parsing data...","twofaccounts.import.issuer":"Emisor","twofaccounts.import.imported":"Importado","twofaccounts.import.failure":"Fallo","twofaccounts.import.x_valid_accounts_found":"{count} cuentas válidos encontrados","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"The following 2FA accounts were found in the migration resource. So far none of them have been added to 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Use the available buttons to permanently save them to your 2FA collection or discard them.","twofaccounts.import.import_all":"Importar todo","twofaccounts.import.import_this_account":"Importar esta Cuenta","twofaccounts.import.discard_all":"Descartar todo","twofaccounts.import.discard_duplicates":"Descartar duplicados","twofaccounts.import.discard_this_account":"Descartar esta cuenta","twofaccounts.import.generate_a_test_password":"Generar una contraseña de prueba","twofaccounts.import.possible_duplicate":"Ya existe una cuenta con exactamente los mismos datos","twofaccounts.import.invalid_account":"- cuenta inválida -","twofaccounts.import.invalid_service":"- servicio inválido -","twofaccounts.import.do_not_set_password_or_encryption":"NO habilite la protección de contraseña o el cifrado cuando exporte datos (desde una aplicación 2FA) que desee importar a 2FAuth.","validation.accepted":":attribute debe ser aceptado.","validation.accepted_if":":attribute debe ser aceptado cuando :other sea :value.","validation.active_url":":attribute no es una URL válida.","validation.after":":attribute debe ser una fecha posterior a :date.","validation.after_or_equal":":attribute debe ser una fecha posterior o igual a :date.","validation.alpha":":attribute solo puede contener letras.","validation.alpha_dash":":attribute solo puede contener letras, números, guiones y guiones bajos.","validation.alpha_num":":attribute solo puede contener letras y números.","validation.array":":attribute debe ser un conjunto de datos.","validation.before":":attribute debe ser una fecha anterior a :date.","validation.before_or_equal":":attribute debe ser una fecha anterior o igual a :date.","validation.between.array":":attribute tiene que tener entre :min - :max elementos.","validation.between.file":":attribute debe pesar entre :min - :max kilobytes.","validation.between.numeric":":attribute tiene que estar entre :min - :max.","validation.between.string":":attribute tiene que tener entre :min - :max caracteres.","validation.boolean":"El campo :attribute debe tener un valor verdadero o falso.","validation.confirmed":"La confirmación de :attribute no coincide.","validation.current_password":"La contraseña es incorrecta.","validation.date":":attribute no es una fecha válida.","validation.date_equals":":attribute debe ser una fecha igual a :date.","validation.date_format":":attribute no corresponde al formato :format.","validation.declined":":attribute debe ser rechazado.","validation.declined_if":":attribute debe ser rechazado cuando :other sea :value.","validation.different":":attribute y :other deben ser diferentes.","validation.digits":":attribute debe tener :digits dígitos.","validation.digits_between":":attribute debe tener entre :min y :max dígitos.","validation.dimensions":"Las dimensiones de la imagen :attribute no son válidas.","validation.distinct":"El campo :attribute contiene un valor duplicado.","validation.doesnt_end_with":":attribute no puede finalizar con uno de los siguientes valores: :values.","validation.doesnt_start_with":":attribute no puede comenzar con uno de los siguientes valores: :values.","validation.email":":attribute no es un correo válido.","validation.ends_with":"El campo :attribute debe finalizar con uno de los siguientes valores: :values","validation.enum":":attribute no tiene el formato adecuado.","validation.exists":":attribute es inválido.","validation.file":"El campo :attribute debe ser un archivo.","validation.filled":"El campo :attribute es obligatorio.","validation.gt.array":"El campo :attribute debe tener más de :value elementos.","validation.gt.file":"El campo :attribute debe tener más de :value kilobytes.","validation.gt.numeric":"El campo :attribute debe ser mayor que :value.","validation.gt.string":"El campo :attribute debe tener más de :value caracteres.","validation.gte.array":"El campo :attribute debe tener como mínimo :value elementos.","validation.gte.file":":attribute debe ser mayor o igual a :value kilobytes.","validation.gte.numeric":":attribute debe ser mayor o igual que :value.","validation.gte.string":":attribute debe tener al menos :value caracteres.","validation.image":":attribute debe ser una imagen.","validation.in":":attribute es inválido.","validation.in_array":"El campo :attribute no existe en :other.","validation.integer":":attribute debe ser un número entero.","validation.ip":":attribute debe ser una dirección IP válida.","validation.ipv4":":attribute debe ser una dirección IPv4 válida.","validation.ipv6":":attribute debe ser una dirección IPv6 válida.","validation.json":"El campo :attribute debe ser una cadena JSON válida.","validation.lt.array":"El campo :attribute debe tener menos de :value elementos.","validation.lt.file":"El campo :attribute debe tener menos de :value kilobytes.","validation.lt.numeric":"El campo :attribute debe ser menor que :value.","validation.lt.string":"El campo :attribute debe tener menos de :value caracteres.","validation.lte.array":"El campo :attribute debe tener como máximo :value elementos.","validation.lte.file":":attribute debe ser menor o igual que :value kilobytes.","validation.lte.numeric":":attribute debe ser menor o igual que :value.","validation.lte.string":":attribute debe tener como máximo :value caracteres.","validation.mac_address":":attribute debe ser una dirección MAC válida.","validation.max.array":"El :attribute no debe contener más de :max elementos.","validation.max.file":":attribute no puede ser mayor que :max kilobytes.","validation.max.numeric":":attribute no debe ser mayor que :max.","validation.max.string":":attribute no debe contener más de :max caracteres.","validation.max_digits":":attribute no debe tener más de :max dígitos.","validation.mimes":":attribute debe ser un archivo con formato: :values.","validation.mimetypes":":attribute debe ser un archivo con formato: :values.","validation.min.array":":attribute debe tener al menos :min elementos.","validation.min.file":"El tamaño de :attribute debe ser de al menos :min kilobytes.","validation.min.numeric":"El tamaño de :attribute debe ser de al menos :min.","validation.min.string":":attribute debe contener al menos :min caracteres.","validation.min_digits":":attribute debe tener al menos :min dígitos.","validation.multiple_of":":attribute debe ser un múltiplo de :value.","validation.not_in":":attribute es inválido.","validation.not_regex":"El formato del campo :attribute no es válido.","validation.numeric":":attribute debe ser numérico.","validation.password.letters":":attribute debe contener al menos una letra.","validation.password.mixed":":attribute debe contener al menos una mayúscula y una minúscula.","validation.password.numbers":":attribute debe contener al menos un número.","validation.password.symbols":":attribute debe contener al menos un símbolo.","validation.password.uncompromised":"El campo :attribute ha aparecido en una fuga de datos. Por favor, elige un nuevo valor.","validation.present":"El campo :attribute debe estar presente.","validation.prohibited":"El campo :attribute está prohibido.","validation.prohibited_if":"El campo :attribute está prohibido cuando :other es :value.","validation.prohibited_unless":"El campo :attribute está prohibido a menos que :other sea :values.","validation.prohibits":"El campo :attribute prohíbe que :other esté presente.","validation.regex":"El formato de :attribute es inválido.","validation.required":"El campo :attribute es obligatorio.","validation.required_array_keys":"El campo :attribute debe contener entradas para: :values.","validation.required_if":"El campo :attribute es obligatorio cuando :other es :value.","validation.required_if_accepted":"El campo :attribute es obligatorio cuando :other se acepta.","validation.required_unless":"El campo :attribute es obligatorio a menos que :other esté en :values.","validation.required_with":"El campo :attribute es obligatorio cuando :values está presente.","validation.required_with_all":"El campo :attribute es obligatorio cuando :values están presentes.","validation.required_without":"El campo :attribute es obligatorio cuando :values no está presente.","validation.required_without_all":"El campo :attribute es obligatorio cuando ninguno de :values está presente.","validation.same":":attribute y :other deben coincidir.","validation.size.array":":attribute debe contener :size elementos.","validation.size.file":"El tamaño de :attribute debe ser :size kilobytes.","validation.size.numeric":"El tamaño de :attribute debe ser :size.","validation.size.string":":attribute debe contener :size caracteres.","validation.starts_with":"El campo :attribute debe comenzar con uno de los siguientes valores: :values","validation.string":"El campo :attribute debe ser una cadena de caracteres.","validation.timezone":":attribute debe ser una zona horaria válida.","validation.unique":"El campo :attribute ya ha sido registrado.","validation.uploaded":"Subir :attribute ha fallado.","validation.url":":attribute debe ser una URL válida.","validation.uuid":"El campo :attribute debe ser un UUID válido.","validation.single":"Cuando se usa :attribute, éste debe ser el único parámetro en este cuerpo de la solicitud","validation.onlyCustomOtpWithUri":"El parámetro uri debe ser proporcionado solo o sólo en combinación con el parámetro 'custom_otp'","validation.custom.icon.image":"Los formatos soportados son: jpeg, png, bmp, gif, svg o webp.","validation.custom.qrcode.image":"Los formatos soportados son: jpeg, png, bmp, gif, svg o webp.","validation.custom.uri.regex":":attribute no es una otpauth uri válida.","validation.custom.otp_type.in":":attribute no está soportado.","validation.custom.email.exists":"No se ha encontrado ninguna cuenta con este correo electrónico.","validation.custom.secret.isBase32Encoded":":attribute debe ser una cadena codificada en base32.","validation.custom.account.regex":":attribute no debe contener dos puntos.","validation.custom.service.regex":":attribute no debe contener dos puntos.","validation.custom.label.required":"La uri debe tener una etiqueta.","validation.custom.ids.regex":"Los IDs deben estar separados por comas, sin comas finales."};export{e as default}; diff --git a/public/build/assets/php_es-e9ed7804.js b/public/build/assets/php_es-e9ed7804.js new file mode 100644 index 00000000..2c3aa3d0 --- /dev/null +++ b/public/build/assets/php_es-e9ed7804.js @@ -0,0 +1,4 @@ +/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"auth.failed":"Estas credenciales no coinciden con nuestros registros.","auth.password":"La contraseña proporcionada es incorrecta.","auth.throttle":"Demasiados intentos de acceso. Por favor intente nuevamente en :seconds segundos.","auth.sign_out":"Cerrar sesión","auth.sign_in":"Iniciar sesión","auth.sign_in_using":"Inicia sesión, usando","auth.or_continue_with":"You an also continue with:","auth.sign_in_using_security_device":"Iniciar sesión usando un dispositivo de seguridad","auth.login_and_password":"usuario y contraseña","auth.register":"Registrarse","auth.welcome_to_2fauth":"Bienvenido a 2FAuth","auth.autolock_triggered":"Autobloqueo activado","auth.autolock_triggered_punchline":"El evento observado por el Auto Bloqueo ha sido activado. Has sido desconectado automáticamente.","auth.already_authenticated":"Ya está autenticado","auth.authentication":"Autenticación","auth.maybe_later":"Quizás más tarde","auth.user_account_controlled_by_proxy":"Cuenta de usuario disponible por un proxy de autenticación.
Administra la cuenta a nivel de proxy.","auth.auth_handled_by_proxy":"Autenticación administrada por un proxy inverso, las configuraciones de abajo están deshabilitadas.
Gestionar autenticación a nivel proxy.","auth.confirm.logout":"¿Seguro que quieres cerrar la sesión?","auth.confirm.revoke_device":"¿Está seguro que quiere eliminar este dispositivo?","auth.confirm.delete_account":"¿Está seguro que desea eliminar su cuenta?","auth.webauthn.security_device":"un dispositivo de seguridad","auth.webauthn.security_devices":"Dispositivos de seguridad","auth.webauthn.security_devices_legend":"Dispositivos de autenticación que pudes usar para iniciar sesión en 2FAuth, como: llaves de seguridad (ej. Yubikey) o smartphones con capacidades biométricas (ej. Apple FaceID/TouchID)","auth.webauthn.enhance_security_using_webauthn":`Puede mejorar la seguridad de su cuenta 2FAuth activando la autenticación WebAuthn.

+ WebAuthn permite el uso de dispositivos de confianza (como, Yubikeys o smartphones con capacidades biométricas) para iniciar sesión rápidamente y de forma más segura.`,"auth.webauthn.use_security_device_to_sign_in":"Prepárese para autenticarse usando (uno) de sus dispositivos de seguridad. Conecte su llave, retirar máscaras o guantes, etc.","auth.webauthn.lost_your_device":"¿Perdió su dispositivo?","auth.webauthn.recover_your_account":"Recuperar su cuenta","auth.webauthn.account_recovery":"Recuperación cuenta","auth.webauthn.recovery_punchline":"2FAuth te enviará un enlace de recuperación a esta dirección de correo electrónico. Haz clic en el enlace en el correo electrónico recibido y sigue las instrucciones.

Asegúrate de abrir el correo electrónico en un dispositivo que sea completamente tuyo.","auth.webauthn.send_recovery_link":"Enviar enlace de recuperación","auth.webauthn.account_recovery_email_sent":"¡Correo de recuperación de cuenta enviado!","auth.webauthn.disable_all_security_devices":"Desactivar todos los dispositivos de seguridad","auth.webauthn.disable_all_security_devices_help":"Todos sus dispositivos de seguridad serán revocados. Utilice esta opción si ha perdido uno o si su seguridad ha sido comprometida.","auth.webauthn.register_a_new_device":"Registrar un nuevo dispositivo","auth.webauthn.register_a_device":"Registrar un dispositivo","auth.webauthn.device_successfully_registered":"Dispositivo registrado correctamente","auth.webauthn.device_revoked":"Dispositivo revocado correctamente","auth.webauthn.revoking_a_device_is_permanent":"El revocado de un dispositivo es permanente","auth.webauthn.recover_account_instructions":"Para recuperar su cuenta, 2FAuth restablece algunos ajustes de Webauthn para que pueda iniciar sesión usando su correo electrónico y contraseña.","auth.webauthn.invalid_recovery_token":"Token de recuperación inválido","auth.webauthn.webauthn_login_disabled":"Login Webauthn desactivado","auth.webauthn.invalid_reset_token":"Este token de recuperación no es válido.","auth.webauthn.rename_device":"Renombrar dispositivo","auth.webauthn.my_device":"Mi dispositivo","auth.webauthn.unknown_device":"Dispositivo desconocido","auth.webauthn.use_webauthn_only.label":"Usar WebAuthn solo","auth.webauthn.use_webauthn_only.help":`Haga de WebAuthn el único método autorizado para iniciar sesión en su cuenta de 2FAuth. Esta es la configuración recomendada para aprovechar la seguridad mejorada de WebAuthn.

+ En caso de pérdida del dispositivo, podrás recuperar tu cuenta restableciendo esta opción e iniciando sesión utilizando tu correo electrónico y contraseña.

+ Atención! El formulario de correo electrónico y contraseña sigue disponible a pesar de que esta opción está activada, pero siempre devolverá una respuesta de 'Autenticación fallida'.`,"auth.webauthn.need_a_security_device_to_enable_options":"Establezca al menos un dispositivo para activar las siguientes opciones","auth.forms.name":"Nombre","auth.forms.login":"Iniciar sesión","auth.forms.webauthn_login":"Inicio de sesión WebAuthn","auth.forms.email":"E-mail","auth.forms.password":"Contraseña","auth.forms.reveal_password":"Revelar contraseña","auth.forms.hide_password":"Ocultar contraseña","auth.forms.confirm_password":"Confirmar contraseña","auth.forms.new_password":"New password","auth.forms.confirm_new_password":"Confirma la contraseña nueva","auth.forms.dont_have_account_yet":"¿Aún no tienes una cuenta?","auth.forms.already_register":"¿Ya te has registrado?","auth.forms.authentication_failed":"La autenticación ha fallado","auth.forms.forgot_your_password":"¿Olvidó su contraseña?","auth.forms.request_password_reset":"Reiniciarlo","auth.forms.reset_your_password":"Reestablecer tu contraseña","auth.forms.reset_password":"Restablecer contraseña","auth.forms.disabled_in_demo":"Característica desactivada en el modo Demo","auth.forms.current_password.label":"Contraseña actual","auth.forms.current_password.help":"Introduzca su contraseña actual para confirmar que es usted","auth.forms.change_password":"Cambiar Contraseña","auth.forms.send_password_reset_link":"Enviar enlace para restablecer contraseña","auth.forms.password_successfully_changed":"Contraseña cambiada correctamente","auth.forms.edit_account":"Editar cuenta","auth.forms.profile_saved":"¡Perfil actualizado con éxito!","auth.forms.welcome_to_demo_app_use_those_credentials":"Bienvenido/a a la demostración de 2FAuth.

Puedes conectarte usando el email demo@2fauth.app y la contraseña demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Bienvenido/a a la instancia de prueba 2FAuth.

Usa el email testing@2fauth.app y la contraseña password","auth.forms.register_punchline":"Bienvenido a 2FAuth.
Necesitas una cuenta para ir más allá, por favor, regístrate.","auth.forms.reset_punchline":"2FAuth le enviará un enlace para restablecer la contraseña a esta dirección. Haga clic en el enlace en el correo electrónico recibido para establecer una nueva contraseña.","auth.forms.name_this_device":"Proporcione nombre al dispositivo","auth.forms.delete_account":"Eliminar cuenta","auth.forms.delete_your_account":"Eliminar su cuenta","auth.forms.delete_your_account_and_reset_all_data":"Esto restablecerá 2FAuth. Su cuenta de usuario se eliminará, así como, todos los datos de 2FA. No hay vuelta atrás.","auth.forms.reset_your_password_to_delete_your_account":"If you always used SSO to sign in, sign out then use the reset password feature to get a password so you can fill this form.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Deleting your 2FAuth account has no impact on your external SSO account.","auth.forms.user_account_successfully_deleted":"Cuenta de usuario eliminada correctamente","auth.forms.has_lower_case":"Tiene minúsculas","auth.forms.has_upper_case":"Tiene mayúsculas","auth.forms.has_special_char":"Tiene carácter especial","auth.forms.has_number":"Tiene número","auth.forms.is_long_enough":"8 carácteres min.","auth.forms.mandatory_rules":"Obligatorio","auth.forms.optional_rules_you_should_follow":"Recomendado (altamente)","auth.forms.caps_lock_is_on":"Bloqueo de mayúsculas está Activado","commons.cancel":"Cancelar","commons.update":"Actualizar","commons.copy":"Copiar","commons.copy_to_clipboard":"Copiar al portapapeles","commons.copied_to_clipboard":"Copiado al portapapeles","commons.profile":"Perfil","commons.edit":"Editar","commons.delete":"Eliminar","commons.disable":"Desactivar","commons.enable":"Activar","commons.create":"Crear","commons.save":"Guardar","commons.close":"Cerrar","commons.clear":"Limpiar","commons.clear_search":"Limpiar búsqueda","commons.demo_do_not_post_sensitive_data":"Esta instancia es para demostracion, no ingrese informacion privada","commons.testing_do_not_post_sensitive_data":"Esta instancia es para demostracion, no ingrese informacion privada","commons.selected":"seleccionado","commons.name":"Nombre","commons.manage":"Configurar","commons.done":"Hecho","commons.new":"Nuevo","commons.back":"Volver","commons.move":"Mover","commons.export":"Exportar","commons.all":"Todo","commons.select_all":"Seleccionar todo","commons.clear_selection":"Borrar selección","commons.sort_descending":"Ordenar (descendente)","commons.sort_ascending":"Ordenar (ascendente)","commons.rename":"Renombrar","commons.new_name":"Nuevo nombre","commons.options":"Opciones","commons.reload":"Recargar","commons.refresh":"Refresh","commons.data_refreshed_to_reflect_server_changes":"Data has been refresh to reflect server-side changes","commons.generate":"Generar","commons.generating_otp":"Generando contraseña de un solo uso","commons.open_in_browser":"Abrir en el navegador","commons.continue":"Continuar","commons.discard":"Descartar","commons.about":"Acerca de","commons.usefull_links":"Enlaces útiles","commons.environment":"Entorno","commons.credits":"Créditos","commons.2fauth_teaser":"Una aplicación web para administrar tus cuentas de autenticación de dos factores (2FA) y generar sus códigos de seguridad","commons.made_with":"Hecho con","commons.ui_icons_by":"Iconos UI por","commons.logos_by":"Logos por","commons.search":"Buscar","commons.resources":"Recursos","commons.check_for_update":"Comprobar nueva versión","commons.check_for_update_help":"Comprobar automáticamente (una vez por semana), y avisar si una nueva versión de 2FAuth se publique en Github","commons.you_are_up_to_date":"Esta instancia está actualizada","commons.2fauth_description":"Una app web para administrar tus cuentas de autenticación de doble factor (2FA), y generar tus códigos de seguridad","commons.image_of_qrcode_to_scan":"Imagen de código QR para escanear","commons.file":"Archivo","commons.or":"O","commons.close_the_x_page":"Cerrar la página {pagetitle}","commons.submit":"Submit","commons.default":"Default","commons.back_to_home":"Back to home","commons.nothing":"nothing","errors.resource_not_found":"Recurso no encontrado","errors.error_occured":"Se ha producido un error:","errors.refresh":"Actualizar","errors.no_valid_otp":"No hay un recurso OTP válido en este código QR","errors.something_wrong_with_server":"Algo va mal con su servidor","errors.Unable_to_decrypt_uri":"No se puede descifrar uri","errors.not_a_supported_otp_type":"Este formato OTP no está soportado actualmente","errors.cannot_create_otp_without_secret":"No se puede crear un OTP sin una clave secreta","errors.data_of_qrcode_is_not_valid_URI":"Los datos de este código QR no son una URI OTP de Autenticación. El código QR contiene:","errors.wrong_current_password":"Contraseña actual incorrecta, no ha cambiado nada","errors.error_during_encryption":"El cifrado falló, la base de datos permanece sin protección.","errors.error_during_decryption":"El descifrado falló, su base de datos todavía está protegida. Esto se debe, principalmente, a un problema de integridad de datos cifrados para una o más cuentas.","errors.qrcode_cannot_be_read":"Este código QR no se puede leer","errors.too_many_ids":"demasiado ids fueron incluidos en los parámetros de consulta, máx. 100 permitidos","errors.delete_user_setting_only":"Sólo los ajustes creados por el usuario pueden ser eliminados","errors.indecipherable":"*indescifrable*","errors.cannot_decipher_secret":"The clave secreta no puede ser descifrada. Esto es, principalmente, causado por una APP_KEY inválida en el archivo de configuración .env de 2FAuth, o datos corruptos almacenados en la base de datos.","errors.https_required":"Contexto HTTPS requerido","errors.browser_does_not_support_webauthn":"Su dispositivo no soporta WebAuthn. Intente de nuevo más tarde en un navegador más moderno","errors.aborted_by_user":"Abortado por el usuario","errors.security_device_already_registered":"Device already registered","errors.not_allowed_operation":"Operacion no permitida","errors.no_authenticator_support_specified_algorithms":"No authenticators support specified algorithms","errors.authenticator_missing_discoverable_credential_support":"Authenticator missing discoverable credential support","errors.authenticator_missing_user_verification_support":"Authenticator missing user verification support","errors.unknown_error":"Error desconocido","errors.security_error_check_rpid":"Error de seguridad
Compruebe su variable de entorno WEBAUTHN_ID","errors.2fauth_has_not_a_valid_domain":"2FAuth's domain is not a valid domain","errors.user_id_not_between_1_64":"User ID was not between 1 and 64 chars","errors.no_entry_was_of_type_public_key":'No entry was of type "public-key"',"errors.unsupported_with_reverseproxy":"No aplicable cuando se utiliza un proxy de autenticación","errors.user_deletion_failed":"Error al borrar la cuenta de usuario, no se han eliminado datos","errors.auth_proxy_failed":"La autenticación proxy falló","errors.auth_proxy_failed_legend":"2FAuth está configurado para ejecutarse detrás de un proxy de autenticación, pero, su proxy no devuelve el encabezado esperado. Compruebe su configuración e intente de nuevo.","errors.invalid_x_migration":"Inválido o ilegible: datos de ","errors.invalid_2fa_data":"Datos 2FA inválidos","errors.unsupported_migration":"Los datos no coinciden con ningún formato soportado","errors.unsupported_otp_type":"Tipo de OTP no soportada","errors.encrypted_migration":"Ilegíble, los datos parecen estar encriptados","errors.no_logo_found_for_x":"Logo no disponible para {service}","errors.file_upload_failed":"Fallo al subir el archivo","errors.unauthorized":"No autorizado","errors.unauthorized_legend":"No tiene permisos para ver este recurso o para realizar esta acción","errors.cannot_delete_the_only_admin":"No se puede eliminar la única cuenta de administrador","errors.error_during_data_fetching":"💀 Something went wrong during data fetching","errors.check_failed_try_later":"Check failed, please retry later","errors.sso_disabled":"SSO is disabled","errors.sso_bad_provider_setup":"This SSO provider is not fully setup in your .env file","errors.sso_failed":"Authentication via SSO rejected","errors.sso_no_register":"Registrations are disabled","errors.sso_email_already_used":"A user account with the same email address already exists but it does not match your external account ID. Do not use SSO if you are already registered on 2FAuth with this email.","errors.account_managed_by_external_provider":"Account managed by an external provider","groups.groups":"Grupos","groups.create_group":"Crear nuevo grupo","groups.show_group_selector":"Ver selector de grupo","groups.hide_group_selector":"Ocultar selector de grupo","groups.select_accounts_to_show":"Seleccionar grupo de cuenta a mostrar","groups.manage_groups":"Gestionar grupos","groups.active_group":"Grupo activo","groups.manage_groups_legend":"Puedes crear grupos para organizar tus cuentas de la manera que quieras. Todas las cuentas permanecen visibles en el pseudo grupo llamado 'Todo', independientemente del grupo al que pertenezcan.","groups.deleting_group_does_not_delete_accounts":"La eliminación de un grupo no elimina cuentas","groups.move_selected_to":"Mover selección a","groups.move_selected_to_group":"Mover seleccionados a un grupo","groups.no_group":"Sin grupo","groups.change_group":"Cambiar grupo","groups.group_successfully_created":"Grupo creado correctamente","groups.group_name_saved":"Nombre de grupo guardado","groups.group_successfully_deleted":"Grupo eliminado correctamente","groups.forms.new_group":"Nuevo grupo","groups.forms.new_name":"Nuevo nombre","groups.forms.rename_group":"Renombrar grupo","groups.confirm.delete":"¿Está seguro que desea eliminar este grupo?","languages.browser_preference":"Preferencia del navegador","languages.en":"Inglés","languages.fr":"Francés","languages.de":"Deutsch (Alemán)","languages.es":"Español","languages.zh":"简体中文 (Chino Simplificado)","languages.ru":"Русский (Ruso)","languages.bg":"Български (Búlgaro)","pagination.previous":"« Anterior","pagination.next":"Siguiente »","passwords.reset":"¡Su contraseña ha sido restablecida!","passwords.sent":"¡Te hemos enviado por correo el enlace para restablecer tu contraseña!","passwords.throttled":"Por favor, espere antes de intentar de nuevo.","passwords.token":"El token de recuperación de contraseña es inválido.","passwords.user":"No podemos encontrar ningún usuario con ese correo electrónico.","passwords.password":"La contraseña debe tener al menos ocho caracteres, y coincidir con la confirmación de contraseña.","settings.settings":"Ajustes","settings.preferences":"Preferencias","settings.account":"Cuenta","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Tokens","settings.options":"Opciones","settings.user_preferences":"Preferencias de usuario","settings.admin_settings":"Ajustes de administración","settings.confirm.revoke":"¿Está seguro que desea revocar este token?","settings.administration":"Administración","settings.administration_legend":"Mientras que los ajustes anteriores son de usuario (cada usuario puede establecer sus propias preferencias), los siguientes son globales y se aplican a todos los usuarios. Sólo un administrador puede ver y editar esas configuraciones.","settings.only_an_admin_can_edit_them":"Only an administrator can view and edit them.","settings.you_are_administrator":"Usted es un administrador","settings.account_linked_to_sso_x_provider":"You signed-in via SSO using your :provider account. Your information cannot be changed here but on :provider.","settings.general":"General","settings.security":"Seguridad","settings.profile":"Perfil","settings.change_password":"Cambiar contraseña","settings.personal_access_tokens":"Tokens de acceso personal","settings.token_legend":"Los Tokens de Acceso Personal, permiten a cualquier aplicación autenticarse con la API de 2FAuth. Debe especificar el token de acceso como Bearer Token en la cabecera de autorización de aplicaciones de tercero.","settings.generate_new_token":"Generar nuevo token","settings.revoke":"Revocar","settings.token_revoked":"Token revocado correctamente","settings.revoking_a_token_is_permanent":"Revocar un token es permanente","settings.make_sure_copy_token":"Asegúrese de copiar su token de acceso personal ahora. ¡No podrá volver a verlo!","settings.data_input":"Introducción de datos","settings.forms.edit_settings":"Modificar ajustes","settings.forms.setting_saved":"Ajustes guardados","settings.forms.new_token":"Nuevo token","settings.forms.some_translation_are_missing":"¿Faltan algunas traducciones utilizando el idioma preferido por el navegador?","settings.forms.help_translate_2fauth":"Ayude a traducir 2FAuth","settings.forms.language.label":"Idioma","settings.forms.language.help":"Idioma utilizado para traducir la interfaz de usuario de 2FAuth. Los idiomas listados están completos, establezca el idioma de su elección para reemplazar las preferencias de su navegador.","settings.forms.show_otp_as_dot.label":"Mostrar contraseñas generadas de un solo uso como punto","settings.forms.show_otp_as_dot.help":"Reemplaza carácteres de contraseñas generados con *** para asegurar confidencialidad. No afecta la función copiar/pegar.","settings.forms.reveal_dotted_otp.label":'Reveal obscured OTP',"settings.forms.reveal_dotted_otp.help":"Let the ability to temporarily reveal Dot-Obscured passwords","settings.forms.close_otp_on_copy.label":'Cerrar OTP después de copiar',"settings.forms.close_otp_on_copy.help":"Haciendo clic en la contraseña generada para copiarla, la oculta automáticamente de la pantalla","settings.forms.copy_otp_on_display.label":'Copiar OTP en pantalla',"settings.forms.copy_otp_on_display.help":'Copiar automáticamente la contraseña justo después de aparecer en pantalla. Debido a limitaciones en los navegadores, solo la primera contraseña TOTP será copiada, no las que roten',"settings.forms.use_basic_qrcode_reader.label":"Usar lector de código QR básico","settings.forms.use_basic_qrcode_reader.help":"Si experimenta problemas al capturar códigos QR habilite esta opción para cambiar a un lector de código QR más básico, pero más fiable","settings.forms.display_mode.label":"Modo de visualización","settings.forms.display_mode.help":"Elija si desea que las cuentas se muestren como una lista o como una cuadrícula","settings.forms.password_format.label":"Formato de contraseñas","settings.forms.password_format.help":"Cambiar cómo se muestran las contraseñas agrupando dígitos para facilitar la legibilidad y la memorización","settings.forms.pair":"por parejas","settings.forms.pair_legend":"Grupo de dígitos dos por dos","settings.forms.trio_legend":"Grupo de dígitos tres por tres","settings.forms.half_legend":"Dividir dígitos en dos grupos iguales","settings.forms.trio":"por tríos","settings.forms.half":"por la mitad","settings.forms.grid":"Cuadrícula","settings.forms.list":"Lista","settings.forms.theme.label":"Tema","settings.forms.theme.help":"Forzar un tema específico o aplicar el tema definido en sus preferencias de sistema/navegador","settings.forms.light":"Claro","settings.forms.dark":"Oscuro","settings.forms.automatic":"Automático","settings.forms.show_accounts_icons.label":"Mostrar iconos","settings.forms.show_accounts_icons.help":"Mostar iconos de aplicaciones en la vista principal","settings.forms.get_official_icons.label":"Obtener iconos oficiales","settings.forms.get_official_icons.help":"(Intentar) Obtener el icono oficial del emisor 2FA al añadir una cuenta","settings.forms.auto_lock.label":"Bloqueo automático","settings.forms.auto_lock.help":"Cerrar sesión del usuario automáticamente en caso de inactividad. No tiene efecto cuando la autenticación es manejada por un proxy, ni cuando ninguna url de cierre de sesión personalizada se especificada.","settings.forms.use_encryption.label":"Proteger los datos confidenciales","settings.forms.use_encryption.help":"Los datos sensibles, las claves secretas y correos electrónicos de 2FA, se almacenan cifrados en la base de datos. Asegúrese de respaldar el valor de APP_KEY de su archivo .env (o el archivo entero), pues, sirve como clave de cifrado. No hay forma de descifrar datos encriptados sin esta clave.","settings.forms.default_group.label":"Grupo por defecto","settings.forms.default_group.help":"El grupo al que las cuentas recién creadas están asociadas","settings.forms.useDirectCapture.label":"Entrada directa","settings.forms.useDirectCapture.help":"Elija si desea que se le pida que elija un modo de entrada entre los disponibles o si desea utilizar directamente el modo de entrada por defecto","settings.forms.defaultCaptureMode.label":"Modo de entrada de datos por defecto","settings.forms.defaultCaptureMode.help":"Modo de entrada predeterminado usado cuando la opción de entrada directa está encendida","settings.forms.remember_active_group.label":"Recordar filtro de grupo","settings.forms.remember_active_group.help":"Guardar el último filtro de grupo aplicado y restaurarlo en su próxima visita","settings.forms.disable_registration.label":"Deshabilitar registro de usuarios","settings.forms.disable_registration.help":"Evitar el registro de nuevos usuarios","settings.forms.enable_sso.label":"Enable Single Sign-On (SSO)","settings.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","settings.forms.otp_generation.label":"Mostrar contraseña","settings.forms.otp_generation.help":'Establezca cómo y cuándo se muestran las OTP.
',"settings.forms.otp_generation_on_request":"Después de un clic/toque","settings.forms.otp_generation_on_request_legend":"Solo, en su propia vista","settings.forms.otp_generation_on_request_title":"Haga clic en una cuenta para obtener una contraseña en una vista dedicada","settings.forms.otp_generation_on_home":"Constantemente","settings.forms.otp_generation_on_home_legend":"Todos ellos, en casa","settings.forms.otp_generation_on_home_title":"Mostrar todas las contraseñas en la vista principal, sin hacer nada","settings.forms.never":"Nunca","settings.forms.on_otp_copy":"Al copiar código de seguridad","settings.forms.1_minutes":"Después de 1 minuto","settings.forms.5_minutes":"Después de 5 minutos","settings.forms.10_minutes":"Después de 10 minutos","settings.forms.15_minutes":"Después de 15 minutos","settings.forms.30_minutes":"Después de 30 minutos","settings.forms.1_hour":"Después de 1 hora","settings.forms.1_day":"Después de 1 día","settings.forms.livescan":"Escaneo código QR","settings.forms.upload":"Subida de código QR","settings.forms.advanced_form":"Formulario avanzado","titles.404":"Artículo no encontrado","titles.start":"Nueva cuenta","titles.capture":"Enfocar QR","titles.accounts":"Cuentas","titles.createAccount":"Crear cuenta","titles.importAccounts":"Importar cuentas","titles.editAccount":"Editar Cuenta","titles.showQRcode":"Cuenta como código QR","titles.groups":"Grupos","titles.createGroup":"Crear grupo","titles.editGroup":"Editar grupo","titles.settings.options":"Opciones","titles.settings.account":"Cuenta de usuario","titles.settings.oauth.tokens":"Tokens de OAuth","titles.settings.oauth.generatePAT":"Nuevo token personal","titles.settings.webauthn.editCredential":"Edición de dispositivo","titles.settings.webauthn.devices":"Dispositivos WebAuthn","titles.login":"Login","titles.register":"Registrarse","titles.autolock":"Bloqueo automático","titles.password.request":"Restablecer contraseña","titles.password.reset":"Nueva contraseña","titles.webauthn.lost":"Recuperación cuenta","titles.webauthn.recover":"Registrar un nuevo dispositivo","titles.flooded":"Desbordar","titles.genericError":"Error","titles.about":"Acerca de","twofaccounts.service":"Servicio","twofaccounts.account":"Cuenta","twofaccounts.accounts":"Cuentas","twofaccounts.icon":"Icono","twofaccounts.icon_for_account_x_at_service_y":"Icono de la cuenta {account} en {service}","twofaccounts.icon_to_illustrate_the_account":"Icono que representa a la cuenta","twofaccounts.remove_icon":"Eliminar icono","twofaccounts.no_account_here":"¡No hay 2FA aquí!","twofaccounts.add_first_account":"Elige un método y añade tu primer cuenta","twofaccounts.use_full_form":"O usa el formulario completo","twofaccounts.add_one":"Agregar uno","twofaccounts.show_qrcode":"Muestra el código QR","twofaccounts.no_service":"- sin servicio -","twofaccounts.account_created":"Cuenta creada correctamente","twofaccounts.account_updated":"Cuenta actualizada correctamente","twofaccounts.accounts_deleted":"Cuenta(s) eliminada(s) correctamente","twofaccounts.accounts_moved":"Cuenta(s) movida(s) correctamente","twofaccounts.export_selected_to_json":"Descargar un fichero json con el contenido de las cuentas seleccionadas","twofaccounts.reveal":"reveal","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"John DOE","twofaccounts.forms.new_account":"Nueva cuenta","twofaccounts.forms.edit_account":"Editar cuenta","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Escanear un código QR","twofaccounts.forms.upload_qrcode":"Subir un código QR","twofaccounts.forms.use_advanced_form":"Usar el formulario avanzado","twofaccounts.forms.prefill_using_qrcode":"Rellenar usando un código QR","twofaccounts.forms.use_qrcode.val":"Usar un código QR","twofaccounts.forms.use_qrcode.title":"Usa un código QR para rellenar mágicamente el formulario","twofaccounts.forms.unlock.val":"Desbloquear","twofaccounts.forms.unlock.title":"Desbloquearlo (bajo su propio riesgo)","twofaccounts.forms.lock.val":"Bloquear","twofaccounts.forms.lock.title":"Bloquearlo","twofaccounts.forms.choose_image":"Subir","twofaccounts.forms.i_m_lucky":"Probar suerte","twofaccounts.forms.i_m_lucky_legend":'El botón "Probar suerte" intenta obtener el icono oficial del servicio dado. Introduzca el nombre del servicio sin la extensión ".xyz" e intente evitar errores tipográficos. (función beta)',"twofaccounts.forms.test":"Test","twofaccounts.forms.secret.label":"Secreto","twofaccounts.forms.secret.help":"La clave utilizada para generar sus códigos de seguridad","twofaccounts.forms.plain_text":"Texto plano","twofaccounts.forms.otp_type.label":'Elige el tipo de OTP a crear',"twofaccounts.forms.otp_type.help":"Time-based OTP, HMAC-based OTP o Steam OTP","twofaccounts.forms.digits.label":"Dígitos","twofaccounts.forms.digits.help":"El número de dígitos del código de seguridad generado","twofaccounts.forms.algorithm.label":"Algorítmo","twofaccounts.forms.algorithm.help":"El algoritmo usado para proteger sus códigos de seguridad","twofaccounts.forms.period.label":"Periodo","twofaccounts.forms.period.placeholder":"Por defecto es 30","twofaccounts.forms.period.help":"Periodo de validez de los códigos se seguridad generados, en segundos","twofaccounts.forms.counter.label":"Contador","twofaccounts.forms.counter.placeholder":"Por defecto es 0","twofaccounts.forms.counter.help":"El valor inicial del contador","twofaccounts.forms.counter.help_lock":"Es arriesgado editar el contador, ya que puede desincronizar la cuenta con el servidor de verificación del servicio. Utilice el icono de bloqueo para habilitar la modificación, pero solo si sabe lo que está haciendo","twofaccounts.forms.image.label":"Imágen","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"La url de una imagen externa a usar como icono de cuenta","twofaccounts.forms.options_help":"Puede dejar las siguientes opciones en blanco si no sabe cómo establecerlas. Los valores más utilizados se aplicarán.","twofaccounts.forms.alternative_methods":"Métodos alternativos","twofaccounts.stream.live_scan_cant_start":"Live scan no puede comenzar :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth no tiene permiso para acceder a tu cámara","twofaccounts.stream.need_grant_permission.solution":"Necesitas conceder permiso para usar la cámara de tu dispositivo. Si ya lo ha denegado y su navegador no le preguntan de nuevo, por favor refiérase a la documentación del navegador para averiguar cómo conceder permisos.","twofaccounts.stream.need_grant_permission.click_camera_icon":"It is usually done by clicking on a slashed camera icon in or next to the browser's address bar","twofaccounts.stream.not_readable.reason":"Fallo al cargar el escáner","twofaccounts.stream.not_readable.solution":"¿La cámara ya está en uso? Asegúrate de que ninguna otra aplicación use tu cámara e inténtalo de nuevo","twofaccounts.stream.no_cam_on_device.reason":"No se encontraron cámaras en este dispositivo","twofaccounts.stream.no_cam_on_device.solution":"Tal vez olvidaste conectar tu cámara web","twofaccounts.stream.secured_context_required.reason":"Requiere contexto seguro","twofaccounts.stream.secured_context_required.solution":"HTTPS es necesario para escanear en vivo. Si ejecuta 2FAuth desde su computadora, no utilice un host virtual distinto de localhost","twofaccounts.stream.https_required":"HTTPS requerido para la transmisión de la cámara","twofaccounts.stream.camera_not_suitable.reason":"Las cámaras instaladas no son apropiadas","twofaccounts.stream.camera_not_suitable.solution":"Por favor usa otro dispositivo/cámara","twofaccounts.stream.stream_api_not_supported.reason":"Stream API no está soportado en este navegador","twofaccounts.stream.stream_api_not_supported.solution":"Deberías usar un navegador moderno","twofaccounts.confirm.delete":"¿Está seguro que desea eliminar esta cuenta?","twofaccounts.confirm.cancel":"La cuenta será eliminada. ¿Estás seguro?","twofaccounts.confirm.discard":"¿Está seguro que desea eliminar esta cuenta?","twofaccounts.confirm.discard_all":"¿Está seguro que desea eliminar todas las cuentas?","twofaccounts.confirm.discard_duplicates":"¿Está seguro que desea eliminar todos los duplicados?","twofaccounts.import.import":"Import","twofaccounts.import.to_import":"Importar","twofaccounts.import.import_legend":"2FAuth puede importar datos de varias apps 2FA.
Usa la función de Exportación de éstas apps para generar los recursos de migración (código QR o archivo), y cargalo usando el método preferido abajo.","twofaccounts.import.import_legend_afterpart":"Use the Export feature of these apps to get a migration resource like a QR code or a JSON file then load it here.","twofaccounts.import.upload":"Subir","twofaccounts.import.scan":"Escanear","twofaccounts.import.supported_formats_for_qrcode_upload":"Aceptado: jpg, jpeg, png, bmp, gif, svg, o webp","twofaccounts.import.supported_formats_for_file_upload":"Aceptado: texto plano, json, 2fas","twofaccounts.import.supported_migration_formats":"Formatos de migración soportados","twofaccounts.import.qr_code":"Código QR","twofaccounts.import.text_file":"Text file","twofaccounts.import.plain_text":"Texto plano","twofaccounts.import.parsing_data":"Parsing data...","twofaccounts.import.issuer":"Emisor","twofaccounts.import.imported":"Importado","twofaccounts.import.failure":"Fallo","twofaccounts.import.x_valid_accounts_found":"{count} cuentas válidos encontrados","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"The following 2FA accounts were found in the migration resource. So far none of them have been added to 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Use the available buttons to permanently save them to your 2FA collection or discard them.","twofaccounts.import.import_all":"Importar todo","twofaccounts.import.import_this_account":"Importar esta Cuenta","twofaccounts.import.discard_all":"Descartar todo","twofaccounts.import.discard_duplicates":"Descartar duplicados","twofaccounts.import.discard_this_account":"Descartar esta cuenta","twofaccounts.import.generate_a_test_password":"Generar una contraseña de prueba","twofaccounts.import.possible_duplicate":"Ya existe una cuenta con exactamente los mismos datos","twofaccounts.import.invalid_account":"- cuenta inválida -","twofaccounts.import.invalid_service":"- servicio inválido -","twofaccounts.import.do_not_set_password_or_encryption":"NO habilite la protección de contraseña o el cifrado cuando exporte datos (desde una aplicación 2FA) que desee importar a 2FAuth.","validation.accepted":":attribute debe ser aceptado.","validation.accepted_if":":attribute debe ser aceptado cuando :other sea :value.","validation.active_url":":attribute no es una URL válida.","validation.after":":attribute debe ser una fecha posterior a :date.","validation.after_or_equal":":attribute debe ser una fecha posterior o igual a :date.","validation.alpha":":attribute solo puede contener letras.","validation.alpha_dash":":attribute solo puede contener letras, números, guiones y guiones bajos.","validation.alpha_num":":attribute solo puede contener letras y números.","validation.array":":attribute debe ser un conjunto de datos.","validation.before":":attribute debe ser una fecha anterior a :date.","validation.before_or_equal":":attribute debe ser una fecha anterior o igual a :date.","validation.between.array":":attribute tiene que tener entre :min - :max elementos.","validation.between.file":":attribute debe pesar entre :min - :max kilobytes.","validation.between.numeric":":attribute tiene que estar entre :min - :max.","validation.between.string":":attribute tiene que tener entre :min - :max caracteres.","validation.boolean":"El campo :attribute debe tener un valor verdadero o falso.","validation.confirmed":"La confirmación de :attribute no coincide.","validation.current_password":"La contraseña es incorrecta.","validation.date":":attribute no es una fecha válida.","validation.date_equals":":attribute debe ser una fecha igual a :date.","validation.date_format":":attribute no corresponde al formato :format.","validation.declined":":attribute debe ser rechazado.","validation.declined_if":":attribute debe ser rechazado cuando :other sea :value.","validation.different":":attribute y :other deben ser diferentes.","validation.digits":":attribute debe tener :digits dígitos.","validation.digits_between":":attribute debe tener entre :min y :max dígitos.","validation.dimensions":"Las dimensiones de la imagen :attribute no son válidas.","validation.distinct":"El campo :attribute contiene un valor duplicado.","validation.doesnt_end_with":":attribute no puede finalizar con uno de los siguientes valores: :values.","validation.doesnt_start_with":":attribute no puede comenzar con uno de los siguientes valores: :values.","validation.email":":attribute no es un correo válido.","validation.ends_with":"El campo :attribute debe finalizar con uno de los siguientes valores: :values","validation.enum":":attribute no tiene el formato adecuado.","validation.exists":":attribute es inválido.","validation.file":"El campo :attribute debe ser un archivo.","validation.filled":"El campo :attribute es obligatorio.","validation.gt.array":"El campo :attribute debe tener más de :value elementos.","validation.gt.file":"El campo :attribute debe tener más de :value kilobytes.","validation.gt.numeric":"El campo :attribute debe ser mayor que :value.","validation.gt.string":"El campo :attribute debe tener más de :value caracteres.","validation.gte.array":"El campo :attribute debe tener como mínimo :value elementos.","validation.gte.file":":attribute debe ser mayor o igual a :value kilobytes.","validation.gte.numeric":":attribute debe ser mayor o igual que :value.","validation.gte.string":":attribute debe tener al menos :value caracteres.","validation.image":":attribute debe ser una imagen.","validation.in":":attribute es inválido.","validation.in_array":"El campo :attribute no existe en :other.","validation.integer":":attribute debe ser un número entero.","validation.ip":":attribute debe ser una dirección IP válida.","validation.ipv4":":attribute debe ser una dirección IPv4 válida.","validation.ipv6":":attribute debe ser una dirección IPv6 válida.","validation.json":"El campo :attribute debe ser una cadena JSON válida.","validation.lt.array":"El campo :attribute debe tener menos de :value elementos.","validation.lt.file":"El campo :attribute debe tener menos de :value kilobytes.","validation.lt.numeric":"El campo :attribute debe ser menor que :value.","validation.lt.string":"El campo :attribute debe tener menos de :value caracteres.","validation.lte.array":"El campo :attribute debe tener como máximo :value elementos.","validation.lte.file":":attribute debe ser menor o igual que :value kilobytes.","validation.lte.numeric":":attribute debe ser menor o igual que :value.","validation.lte.string":":attribute debe tener como máximo :value caracteres.","validation.mac_address":":attribute debe ser una dirección MAC válida.","validation.max.array":"El :attribute no debe contener más de :max elementos.","validation.max.file":":attribute no puede ser mayor que :max kilobytes.","validation.max.numeric":":attribute no debe ser mayor que :max.","validation.max.string":":attribute no debe contener más de :max caracteres.","validation.max_digits":":attribute no debe tener más de :max dígitos.","validation.mimes":":attribute debe ser un archivo con formato: :values.","validation.mimetypes":":attribute debe ser un archivo con formato: :values.","validation.min.array":":attribute debe tener al menos :min elementos.","validation.min.file":"El tamaño de :attribute debe ser de al menos :min kilobytes.","validation.min.numeric":"El tamaño de :attribute debe ser de al menos :min.","validation.min.string":":attribute debe contener al menos :min caracteres.","validation.min_digits":":attribute debe tener al menos :min dígitos.","validation.multiple_of":":attribute debe ser un múltiplo de :value.","validation.not_in":":attribute es inválido.","validation.not_regex":"El formato del campo :attribute no es válido.","validation.numeric":":attribute debe ser numérico.","validation.password.letters":":attribute debe contener al menos una letra.","validation.password.mixed":":attribute debe contener al menos una mayúscula y una minúscula.","validation.password.numbers":":attribute debe contener al menos un número.","validation.password.symbols":":attribute debe contener al menos un símbolo.","validation.password.uncompromised":"El campo :attribute ha aparecido en una fuga de datos. Por favor, elige un nuevo valor.","validation.present":"El campo :attribute debe estar presente.","validation.prohibited":"El campo :attribute está prohibido.","validation.prohibited_if":"El campo :attribute está prohibido cuando :other es :value.","validation.prohibited_unless":"El campo :attribute está prohibido a menos que :other sea :values.","validation.prohibits":"El campo :attribute prohíbe que :other esté presente.","validation.regex":"El formato de :attribute es inválido.","validation.required":"El campo :attribute es obligatorio.","validation.required_array_keys":"El campo :attribute debe contener entradas para: :values.","validation.required_if":"El campo :attribute es obligatorio cuando :other es :value.","validation.required_if_accepted":"El campo :attribute es obligatorio cuando :other se acepta.","validation.required_unless":"El campo :attribute es obligatorio a menos que :other esté en :values.","validation.required_with":"El campo :attribute es obligatorio cuando :values está presente.","validation.required_with_all":"El campo :attribute es obligatorio cuando :values están presentes.","validation.required_without":"El campo :attribute es obligatorio cuando :values no está presente.","validation.required_without_all":"El campo :attribute es obligatorio cuando ninguno de :values está presente.","validation.same":":attribute y :other deben coincidir.","validation.size.array":":attribute debe contener :size elementos.","validation.size.file":"El tamaño de :attribute debe ser :size kilobytes.","validation.size.numeric":"El tamaño de :attribute debe ser :size.","validation.size.string":":attribute debe contener :size caracteres.","validation.starts_with":"El campo :attribute debe comenzar con uno de los siguientes valores: :values","validation.string":"El campo :attribute debe ser una cadena de caracteres.","validation.timezone":":attribute debe ser una zona horaria válida.","validation.unique":"El campo :attribute ya ha sido registrado.","validation.uploaded":"Subir :attribute ha fallado.","validation.url":":attribute debe ser una URL válida.","validation.uuid":"El campo :attribute debe ser un UUID válido.","validation.single":"Cuando se usa :attribute, éste debe ser el único parámetro en este cuerpo de la solicitud","validation.onlyCustomOtpWithUri":"El parámetro uri debe ser proporcionado solo o sólo en combinación con el parámetro 'custom_otp'","validation.custom.icon.image":"Los formatos soportados son: jpeg, png, bmp, gif, svg o webp.","validation.custom.qrcode.image":"Los formatos soportados son: jpeg, png, bmp, gif, svg o webp.","validation.custom.uri.regex":":attribute no es una otpauth uri válida.","validation.custom.otp_type.in":":attribute no está soportado.","validation.custom.email.exists":"No se ha encontrado ninguna cuenta con este correo electrónico.","validation.custom.secret.isBase32Encoded":":attribute debe ser una cadena codificada en base32.","validation.custom.account.regex":":attribute no debe contener dos puntos.","validation.custom.service.regex":":attribute no debe contener dos puntos.","validation.custom.label.required":"La uri debe tener una etiqueta.","validation.custom.ids.regex":"Los IDs deben estar separados por comas, sin comas finales."};export{e as default}; diff --git a/public/build/assets/php_id-3611d83b.js b/public/build/assets/php_id-54dd91aa.js similarity index 99% rename from public/build/assets/php_id-3611d83b.js rename to public/build/assets/php_id-54dd91aa.js index 00b7fd39..d913400c 100644 --- a/public/build/assets/php_id-3611d83b.js +++ b/public/build/assets/php_id-54dd91aa.js @@ -1,3 +1,3 @@ -/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"auth.failed":"Kredensial ini tidak cocok dengan catatan kami.","auth.password":"Kata sandi yand diberikan salah.","auth.throttle":"Terlalu banyak upaya log masuk. Silakan coba lagi dalam :seconds detik.","auth.sign_out":"Keluar","auth.sign_in":"Masuk","auth.sign_in_using":"Masuk dengan","auth.or_continue_with":"You an also continue with:","auth.sign_in_using_security_device":"Masuk menggunakan sebuah perangkat keamanan","auth.login_and_password":"masuk & kata sandi","auth.register":"Mendaftar","auth.welcome_to_2fauth":"Welcome to 2FAuth","auth.autolock_triggered":"Kunci otomatis dipicu","auth.autolock_triggered_punchline":"Peristiwa yang di awasi oleh fitur Kunci Otomatis telah di picu. Jika anda terputus otomatis.","auth.already_authenticated":"Telah terotentikasi","auth.authentication":"Otentikasi","auth.maybe_later":"Mungkin nanti","auth.user_account_controlled_by_proxy":"User account made available by an authentication proxy.
Manage the account at proxy level.","auth.auth_handled_by_proxy":"Otentikasi ditangani oleh sebuah reverse proxy, pengaturan dibawah dimatikan.
Atur otentikasi pada level proxy.","auth.confirm.logout":"Apakah Anda yakin ingin keluar?","auth.confirm.revoke_device":"Anda yakin ingin menghapus perangkat ini?","auth.confirm.delete_account":"Apakah Anda yakin ingin menghapus akun anda?","auth.webauthn.security_device":"sebuah perangkat keamanan","auth.webauthn.security_devices":"Perangkat keamanan","auth.webauthn.security_devices_legend":"Perangkat otentikasi yang dapat anda gunakan untuk masuk ke 2FAuth, seperti kunci kemanan(cth. Yubikey) atau smartphone dengan kemampuan biometrik (cth. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":"Anda dapat meningkatkan keamanan pada akun 2FAuth anda dengan menyalakan otentikasi WebAuthn.

WebAuthn memungkinkan anda untuk menggunakan perangkat terpercaya (seperti Yubikeys atau smartphone dengan kemampuan biometric) untuk masuk dengan cepat dan lebih aman.","auth.webauthn.use_security_device_to_sign_in":"Get ready to authenticate using (one of) your security devices. Plug your key in, remove face mask or gloves, etc.","auth.webauthn.lost_your_device":"Lost your device?","auth.webauthn.recover_your_account":"Recover your account","auth.webauthn.account_recovery":"Account recovery","auth.webauthn.recovery_punchline":"2FAuth will send you a recovery link to this email address. Click the link in the received email and follow the instructions.

Ensure you open the email on a device you fully own.","auth.webauthn.send_recovery_link":"Send recovery link","auth.webauthn.account_recovery_email_sent":"Account recovery email sent!","auth.webauthn.disable_all_security_devices":"Disable all security devices","auth.webauthn.disable_all_security_devices_help":"All your security devices will be revoked. Use this option if you have lost one or its security has been compromised.","auth.webauthn.register_a_new_device":"Register a new device","auth.webauthn.register_a_device":"Register a device","auth.webauthn.device_successfully_registered":"Device successfully registered","auth.webauthn.device_revoked":"Device successfully revoked","auth.webauthn.revoking_a_device_is_permanent":"Revoking a device is permanent","auth.webauthn.recover_account_instructions":"To recover your account, 2FAuth resets some Webauthn settings so you will be able to sign in using your email and password.","auth.webauthn.invalid_recovery_token":"Invalid recovery token","auth.webauthn.webauthn_login_disabled":"Webauthn login disabled","auth.webauthn.invalid_reset_token":"This reset token is invalid.","auth.webauthn.rename_device":"Rename device","auth.webauthn.my_device":"My device","auth.webauthn.unknown_device":"Unknown device","auth.webauthn.use_webauthn_only.label":"Use WebAuthn only","auth.webauthn.use_webauthn_only.help":`Make WebAuthn the only authorized method to log into your 2FAuth account. This is the recommended setup to take advantage of the WebAuthn enhanced security.

- In case of device lost, you will be able to recover your account by resetting this option and signing in using your email and password.

+/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"auth.failed":"Kredensial ini tidak cocok dengan catatan kami.","auth.password":"Kata sandi yand diberikan salah.","auth.throttle":"Terlalu banyak upaya log masuk. Silakan coba lagi dalam :seconds detik.","auth.sign_out":"Keluar","auth.sign_in":"Masuk","auth.sign_in_using":"Masuk dengan","auth.or_continue_with":"You an also continue with:","auth.sign_in_using_security_device":"Masuk menggunakan sebuah perangkat keamanan","auth.login_and_password":"masuk & kata sandi","auth.register":"Mendaftar","auth.welcome_to_2fauth":"Welcome to 2FAuth","auth.autolock_triggered":"Kunci otomatis dipicu","auth.autolock_triggered_punchline":"Peristiwa yang di awasi oleh fitur Kunci Otomatis telah di picu. Jika anda terputus otomatis.","auth.already_authenticated":"Telah terotentikasi","auth.authentication":"Otentikasi","auth.maybe_later":"Mungkin nanti","auth.user_account_controlled_by_proxy":"User account made available by an authentication proxy.
Manage the account at proxy level.","auth.auth_handled_by_proxy":"Otentikasi ditangani oleh sebuah reverse proxy, pengaturan dibawah dimatikan.
Atur otentikasi pada level proxy.","auth.confirm.logout":"Apakah Anda yakin ingin keluar?","auth.confirm.revoke_device":"Anda yakin ingin menghapus perangkat ini?","auth.confirm.delete_account":"Apakah Anda yakin ingin menghapus akun anda?","auth.webauthn.security_device":"sebuah perangkat keamanan","auth.webauthn.security_devices":"Perangkat keamanan","auth.webauthn.security_devices_legend":"Perangkat otentikasi yang dapat anda gunakan untuk masuk ke 2FAuth, seperti kunci kemanan(cth. Yubikey) atau smartphone dengan kemampuan biometrik (cth. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":"Anda dapat meningkatkan keamanan pada akun 2FAuth anda dengan menyalakan otentikasi WebAuthn.

WebAuthn memungkinkan anda untuk menggunakan perangkat terpercaya (seperti Yubikeys atau smartphone dengan kemampuan biometric) untuk masuk dengan cepat dan lebih aman.","auth.webauthn.use_security_device_to_sign_in":"Get ready to authenticate using (one of) your security devices. Plug your key in, remove face mask or gloves, etc.","auth.webauthn.lost_your_device":"Lost your device?","auth.webauthn.recover_your_account":"Recover your account","auth.webauthn.account_recovery":"Account recovery","auth.webauthn.recovery_punchline":"2FAuth will send you a recovery link to this email address. Click the link in the received email and follow the instructions.

Ensure you open the email on a device you fully own.","auth.webauthn.send_recovery_link":"Send recovery link","auth.webauthn.account_recovery_email_sent":"Account recovery email sent!","auth.webauthn.disable_all_security_devices":"Disable all security devices","auth.webauthn.disable_all_security_devices_help":"All your security devices will be revoked. Use this option if you have lost one or its security has been compromised.","auth.webauthn.register_a_new_device":"Register a new device","auth.webauthn.register_a_device":"Register a device","auth.webauthn.device_successfully_registered":"Device successfully registered","auth.webauthn.device_revoked":"Device successfully revoked","auth.webauthn.revoking_a_device_is_permanent":"Revoking a device is permanent","auth.webauthn.recover_account_instructions":"To recover your account, 2FAuth resets some Webauthn settings so you will be able to sign in using your email and password.","auth.webauthn.invalid_recovery_token":"Invalid recovery token","auth.webauthn.webauthn_login_disabled":"Webauthn login disabled","auth.webauthn.invalid_reset_token":"This reset token is invalid.","auth.webauthn.rename_device":"Rename device","auth.webauthn.my_device":"My device","auth.webauthn.unknown_device":"Unknown device","auth.webauthn.use_webauthn_only.label":"Use WebAuthn only","auth.webauthn.use_webauthn_only.help":`Make WebAuthn the only authorized method to log into your 2FAuth account. This is the recommended setup to take advantage of the WebAuthn enhanced security.

\r + In case of device lost, you will be able to recover your account by resetting this option and signing in using your email and password.

\r Attention! The Email & Password form remains available despite this option being enabled, but it will always return an 'Authentication failed' response.`,"auth.webauthn.need_a_security_device_to_enable_options":"Set at least one device to enable the following options","auth.forms.name":"Name","auth.forms.login":"Login","auth.forms.webauthn_login":"WebAuthn login","auth.forms.email":"Email","auth.forms.password":"Password","auth.forms.reveal_password":"Reveal password","auth.forms.hide_password":"Hide password","auth.forms.confirm_password":"Confirm password","auth.forms.new_password":"New password","auth.forms.confirm_new_password":"Confirm new password","auth.forms.dont_have_account_yet":"Don't have your account yet?","auth.forms.already_register":"Already registered?","auth.forms.authentication_failed":"Authentication failed","auth.forms.forgot_your_password":"Forgot your password?","auth.forms.request_password_reset":"Reset it","auth.forms.reset_your_password":"Reset your password","auth.forms.reset_password":"Reset password","auth.forms.disabled_in_demo":"Feature disabled in Demo mode","auth.forms.current_password.label":"Current password","auth.forms.current_password.help":"Fill in your current password to confirm that it's you","auth.forms.change_password":"Change password","auth.forms.send_password_reset_link":"Send password reset link","auth.forms.password_successfully_changed":"Password successfully changed","auth.forms.edit_account":"Edit account","auth.forms.profile_saved":"Profile successfully updated!","auth.forms.welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Welcome to the 2FAuth testing instance.

Use email address testing@2fauth.app and password password","auth.forms.register_punchline":"Welcome to 2FAuth.
You need an account to go further, please register yourself.","auth.forms.reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password.","auth.forms.name_this_device":"Name this device","auth.forms.delete_account":"Delete account","auth.forms.delete_your_account":"Delete your account","auth.forms.delete_your_account_and_reset_all_data":"Your user account will be deleted as well as all your 2FA data. There is no going back.","auth.forms.reset_your_password_to_delete_your_account":"If you always used SSO to sign in, sign out then use the reset password feature to get a password so you can fill this form.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Deleting your 2FAuth account has no impact on your external SSO account.","auth.forms.user_account_successfully_deleted":"User account successfully deleted","auth.forms.has_lower_case":"Has lower case","auth.forms.has_upper_case":"Has upper case","auth.forms.has_special_char":"Has special char","auth.forms.has_number":"Has number","auth.forms.is_long_enough":"8 characters min.","auth.forms.mandatory_rules":"Mandatory","auth.forms.optional_rules_you_should_follow":"Recommanded (highly)","auth.forms.caps_lock_is_on":"Caps lock is On","commons.cancel":"Cancel","commons.update":"Update","commons.copy":"Copy","commons.copy_to_clipboard":"Copy to clipboard","commons.copied_to_clipboard":"Copied to clipboard","commons.profile":"Profile","commons.edit":"Edit","commons.delete":"Delete","commons.disable":"Disable","commons.enable":"Enable","commons.create":"Create","commons.save":"Save","commons.close":"Close","commons.clear":"Clear","commons.clear_search":"Clear search","commons.demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","commons.testing_do_not_post_sensitive_data":"This is a testing app, do not post any sensitive data","commons.selected":"selected","commons.name":"Name","commons.manage":"Manage","commons.done":"Done","commons.new":"New","commons.back":"Back","commons.move":"Move","commons.export":"Export","commons.all":"All","commons.select_all":"Select all","commons.clear_selection":"Clear selection","commons.sort_descending":"Sort descending","commons.sort_ascending":"Sort ascending","commons.rename":"Rename","commons.new_name":"New name","commons.options":"Options","commons.reload":"Reload","commons.refresh":"Refresh","commons.data_refreshed_to_reflect_server_changes":"Data has been refresh to reflect server-side changes","commons.generate":"Generate","commons.generating_otp":"Generating OTP","commons.open_in_browser":"Open in browser","commons.continue":"Continue","commons.discard":"Discard","commons.about":"About","commons.usefull_links":"Usefull links","commons.environment":"Environment","commons.credits":"Credits","commons.2fauth_teaser":"A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes","commons.made_with":"Made with","commons.ui_icons_by":"UI Icons by","commons.logos_by":"Logos by","commons.search":"Search","commons.resources":"Resources","commons.check_for_update":"Check for new version","commons.check_for_update_help":"Automatically check (once a week) and warn when a new release of 2FAuth is published on Github","commons.you_are_up_to_date":"This instance is up-to-date","commons.2fauth_description":"A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes","commons.image_of_qrcode_to_scan":"Image of a QR code to scan","commons.file":"File","commons.or":"OR","commons.close_the_x_page":"Close the :pagetitle page","commons.submit":"Submit","commons.default":"Default","commons.back_to_home":"Back to home","commons.nothing":"nothing","errors.resource_not_found":"Sumber daya tidak ditemukan","errors.error_occured":"Terjadi kesalahan:","errors.refresh":"Muat Ulang","errors.no_valid_otp":"Tidak ada sumber OTP Valid untuk kode QR ini","errors.something_wrong_with_server":"Ada yang selah dengan server anda","errors.Unable_to_decrypt_uri":"Tidak dapat mendekripsi uri","errors.not_a_supported_otp_type":"Format OTP ini saat ini tidak didukung","errors.cannot_create_otp_without_secret":"Tidak dapat membuat sebuah OTP tanpa sebuah rahasia","errors.data_of_qrcode_is_not_valid_URI":"Data dari kode QR merupakan Auth URI OTP yang tidak valid. Kode QR nya mengandung:","errors.wrong_current_password":"Kata sandi saat ini salah, tidak ada yang diubah","errors.error_during_encryption":"Enkripsi gagal, database anda masih tetap tidak terlindungi.","errors.error_during_decryption":"Dekripsi gagal, database anda masih tetap tidak terlindungi. Hal ini utamanya terjadi karena sebuah masalah integritas enkripsi data untuk satu atau lebih akun.","errors.qrcode_cannot_be_read":"Kode QR ini tidak dapat dibaca","errors.too_many_ids":"terlalu banyak id yang yang disertakan didalam parameter kueri, maksimal yang diperbolehkan 100","errors.delete_user_setting_only":"Only user-created setting can be deleted","errors.indecipherable":"*indecipherable*","errors.cannot_decipher_secret":"The secret cannot be deciphered. This is mainly caused by a wrong APP_KEY set in the .env configuration file of 2Fauth or a corrupted data stored in database.","errors.https_required":"HTTPS context required","errors.browser_does_not_support_webauthn":"Your device does not support webauthn. Try again later using a more modern browser","errors.aborted_by_user":"Aborted by user","errors.security_device_already_registered":"Device already registered","errors.not_allowed_operation":"Operation not allowed","errors.no_authenticator_support_specified_algorithms":"No authenticators support specified algorithms","errors.authenticator_missing_discoverable_credential_support":"Authenticator missing discoverable credential support","errors.authenticator_missing_user_verification_support":"Authenticator missing user verification support","errors.unknown_error":"Unknown error","errors.security_error_check_rpid":"Security error
Check your WEBAUTHN_ID env var","errors.2fauth_has_not_a_valid_domain":"2FAuth's domain is not a valid domain","errors.user_id_not_between_1_64":"User ID was not between 1 and 64 chars","errors.no_entry_was_of_type_public_key":'No entry was of type "public-key"',"errors.unsupported_with_reverseproxy":"Not applicable when using an auth proxy","errors.user_deletion_failed":"User account deletion failed, no data have been deleted","errors.auth_proxy_failed":"Proxy authentication failed","errors.auth_proxy_failed_legend":"2Fauth is configured to run behind an authentication proxy but your proxy does not return the expected header. Check your configuration and try again.","errors.invalid_x_migration":"Invalid or unreadable :appname data","errors.invalid_2fa_data":"Invalid 2FA data","errors.unsupported_migration":"Data do not match any supported format","errors.unsupported_otp_type":"Unsupported OTP type","errors.encrypted_migration":"Unreadable, the data seem encrypted","errors.no_logo_found_for_x":"No logo available for :service","errors.file_upload_failed":"File upload failed","errors.unauthorized":"Unauthorized","errors.unauthorized_legend":"You do not have permissions to view this resource or to perform this action","errors.cannot_delete_the_only_admin":"Cannot delete the only admin account","errors.error_during_data_fetching":"💀 Something went wrong during data fetching","errors.check_failed_try_later":"Check failed, please retry later","errors.sso_disabled":"SSO is disabled","errors.sso_bad_provider_setup":"This SSO provider is not fully setup in your .env file","errors.sso_failed":"Authentication via SSO rejected","errors.sso_no_register":"Registrations are disabled","errors.sso_email_already_used":"A user account with the same email address already exists but it does not match your external account ID. Do not use SSO if you are already registered on 2FAuth with this email.","errors.account_managed_by_external_provider":"Account managed by an external provider","groups.groups":"Groups","groups.create_group":"Create new group","groups.show_group_selector":"Show group selector","groups.hide_group_selector":"Hide group selector","groups.select_accounts_to_show":"Select accounts group to show","groups.manage_groups":"Manage groups","groups.active_group":"Active group","groups.manage_groups_legend":"You can create groups to organize your accounts the way you want. All accounts remain visible in the pseudo group named 'All', regardless of the group they belong to.","groups.deleting_group_does_not_delete_accounts":"Deleting a group does not delete accounts","groups.move_selected_to":"Move selected to","groups.move_selected_to_group":"Move selected into a group","groups.no_group":"No group","groups.change_group":"Change group","groups.group_successfully_created":"Group successfully created","groups.group_name_saved":"Group name saved","groups.group_successfully_deleted":"Group successfully deleted","groups.forms.new_group":"New group","groups.forms.new_name":"New name","groups.forms.rename_group":"Rename group","groups.confirm.delete":"Are you sure you want to delete this group?","languages.browser_preference":"Preferensi perambaan","languages.en":"Bahasa Inggris","languages.fr":"Bahasa Perancis","languages.de":"Bahasa Jerman","languages.es":"Bahasa Spanyol","languages.zh":"Bahasa Tiongkok yang disederhanakan","languages.ru":"Bahasa Rusia","languages.bg":"Bahasa Bulgaria","pagination.previous":"« Sebelumnya","pagination.next":"Selanjutnya »","passwords.reset":"Kata sandi Anda telah diatur ulang!","passwords.sent":"Kami telah mengirimkan email tautan pengaturan ulang kata sandi anda!","passwords.throttled":"Mohon tunggu sebelum mencoba lagi.","passwords.token":"Token pengaturan ulang kata sandi ini tidak valid.","passwords.user":"Kami tidak dapat menemukan pengguna dengan alamat email tersebut.","passwords.password":"Kata sandi harus setidaknya delapan karakter dan sesuai dengan konfirmasi.","settings.settings":"Settings","settings.preferences":"Preferences","settings.account":"Account","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Tokens","settings.options":"Options","settings.user_preferences":"User preferences","settings.admin_settings":"Admin settings","settings.confirm.revoke":"Are you sure you want to revoke this token?","settings.administration":"Administration","settings.administration_legend":"While previous settings are user settings (every user can set its own preferences), following settings are global and apply to all users.","settings.only_an_admin_can_edit_them":"Only an administrator can view and edit them.","settings.you_are_administrator":"You are an administrator","settings.account_linked_to_sso_x_provider":"You signed-in via SSO using your :provider account. Your information cannot be changed here but on :provider.","settings.general":"General","settings.security":"Security","settings.profile":"Profile","settings.change_password":"Change password","settings.personal_access_tokens":"Personal access tokens","settings.token_legend":"Personal Access Tokens allow any app to authenticate to the 2Fauth API. You should specify the access token as a Bearer token in the authorization header of consumer apps requests.","settings.generate_new_token":"Generate a new token","settings.revoke":"Revoke","settings.token_revoked":"Token successfully revoked","settings.revoking_a_token_is_permanent":"Revoking a token is permanent","settings.make_sure_copy_token":"Make sure to copy your personal access token now. You won’t be able to see it again!","settings.data_input":"Data input","settings.forms.edit_settings":"Edit settings","settings.forms.setting_saved":"Settings saved","settings.forms.new_token":"New token","settings.forms.some_translation_are_missing":"Some translations are missing using the browser preferred language?","settings.forms.help_translate_2fauth":"Help translate 2FAuth","settings.forms.language.label":"Language","settings.forms.language.help":"Language used to translate the 2FAuth user interface. Named languages are complete, set the one of your choice to override your browser preference.","settings.forms.show_otp_as_dot.label":'Show generated OTP as dot',"settings.forms.show_otp_as_dot.help":"Replace generated password caracters with *** to ensure confidentiality. Do not affect the copy/paste feature","settings.forms.reveal_dotted_otp.label":'Reveal obscured OTP',"settings.forms.reveal_dotted_otp.help":"Let the ability to temporarily reveal Dot-Obscured passwords","settings.forms.close_otp_on_copy.label":'Close OTP after copy',"settings.forms.close_otp_on_copy.help":"Clicking a generated password to copy it automatically hide it from the screen","settings.forms.copy_otp_on_display.label":'Copy OTP on display',"settings.forms.copy_otp_on_display.help":'Automatically copy a generated password right after it appears on screen. Due to browsers limitations, only the first TOTP password will be copied, not the rotating ones',"settings.forms.use_basic_qrcode_reader.label":"Use basic QR code reader","settings.forms.use_basic_qrcode_reader.help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader","settings.forms.display_mode.label":"Display mode","settings.forms.display_mode.help":"Choose whether you want accounts to be displayed as a list or as a grid","settings.forms.password_format.label":"Password formatting","settings.forms.password_format.help":"Change how the passwords are displayed by grouping digits to ease readability and memorization","settings.forms.pair":"by Pair","settings.forms.pair_legend":"Group digits two by two","settings.forms.trio_legend":"Group digits three by three","settings.forms.half_legend":"Split digits into two equals groups","settings.forms.trio":"by Trio","settings.forms.half":"by Half","settings.forms.grid":"Grid","settings.forms.list":"List","settings.forms.theme.label":"Theme","settings.forms.theme.help":"Force a specific theme or apply the theme defined in your system/browser preferences","settings.forms.light":"Light","settings.forms.dark":"Dark","settings.forms.automatic":"Auto","settings.forms.show_accounts_icons.label":"Show icons","settings.forms.show_accounts_icons.help":"Show icons accounts in the main view","settings.forms.get_official_icons.label":"Get official icons","settings.forms.get_official_icons.help":"(Try to) Get the official icon of the 2FA issuer when adding an account","settings.forms.auto_lock.label":"Auto lock","settings.forms.auto_lock.help":"Log out the user automatically in case of inactivity. Has no effect when authentication is handled by a proxy and no custom logout url is specified.","settings.forms.use_encryption.label":"Protect sensible data","settings.forms.use_encryption.help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key.","settings.forms.default_group.label":"Default group","settings.forms.default_group.help":"The group to which the newly created accounts are associated","settings.forms.useDirectCapture.label":"Direct input","settings.forms.useDirectCapture.help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode","settings.forms.defaultCaptureMode.label":"Default input mode","settings.forms.defaultCaptureMode.help":"Default input mode used when the Direct input option is On","settings.forms.remember_active_group.label":"Remember group filter","settings.forms.remember_active_group.help":"Save the last group filter applied and restore it on your next visit","settings.forms.disable_registration.label":"Disable registration","settings.forms.disable_registration.help":"Prevent new user registration. This affects SSO as well, so new SSO users won't be able to sign on","settings.forms.enable_sso.label":"Enable Single Sign-On (SSO)","settings.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","settings.forms.otp_generation.label":"Show Password","settings.forms.otp_generation.help":'Set how and when OTPs are displayed.
',"settings.forms.otp_generation_on_request":"After a click/tap","settings.forms.otp_generation_on_request_legend":"Alone, in its own view","settings.forms.otp_generation_on_request_title":"Click an account to get a password in a dedicated view","settings.forms.otp_generation_on_home":"Constantly","settings.forms.otp_generation_on_home_legend":"All of them, on home","settings.forms.otp_generation_on_home_title":"Show all passwords in the main view, without doing anything","settings.forms.never":"Never","settings.forms.on_otp_copy":"On security code copy","settings.forms.1_minutes":"After 1 minute","settings.forms.5_minutes":"After 5 minutes","settings.forms.10_minutes":"After 10 minutes","settings.forms.15_minutes":"After 15 minutes","settings.forms.30_minutes":"After 30 minutes","settings.forms.1_hour":"After 1 hour","settings.forms.1_day":"After 1 day","settings.forms.livescan":"QR code livescan","settings.forms.upload":"QR code upload","settings.forms.advanced_form":"Advanced form","titles.404":"Item tidak ditemukan","titles.start":"Akun baru","titles.capture":"QR Kilat","titles.accounts":"Akun","titles.createAccount":"Buat akun","titles.importAccounts":"Impor Akun","titles.editAccount":"Ubah akun","titles.showQRcode":"Akun sebagai kode QR","titles.groups":"Grup","titles.createGroup":"Buat grup","titles.editGroup":"Edit grup","titles.settings.options":"Opsi","titles.settings.account":"Akun pengguna","titles.settings.oauth.tokens":"Token OAuth","titles.settings.oauth.generatePAT":"Token personal baru","titles.settings.webauthn.editCredential":"Pengaturan perangkat","titles.settings.webauthn.devices":"Perangkat WebAuthn","titles.login":"Masuk","titles.register":"Mendaftar","titles.autolock":"Kunci Otomatis","titles.password.request":"Atur ulang kata sandi","titles.password.reset":"Kata sandi baru","titles.webauthn.lost":"Pemulihan akun","titles.webauthn.recover":"Daftarkan sebuah perangkat baru","titles.flooded":"Banjir","titles.genericError":"Galat","titles.about":"Tentang","twofaccounts.service":"Layanan","twofaccounts.account":"Akun","twofaccounts.accounts":"Akun","twofaccounts.icon":"Ikon","twofaccounts.icon_for_account_x_at_service_y":"Ikon dari akun {account} pada {service}","twofaccounts.icon_to_illustrate_the_account":"Ikon yang menggambarkan akun","twofaccounts.remove_icon":"Hapus ikon","twofaccounts.no_account_here":"Tidak ada 2FA disini!","twofaccounts.add_first_account":"Pilih sebuah metode dan tambahkan terlebih dahulu akun anda","twofaccounts.use_full_form":"Atau gunakan formulir lengkap","twofaccounts.add_one":"Tambahkan satu","twofaccounts.show_qrcode":"Tampilkan kode QR","twofaccounts.no_service":"- tidak ada layanan -","twofaccounts.account_created":"Akun berhasil dibuat","twofaccounts.account_updated":"Akun berhasil diperbaru","twofaccounts.accounts_deleted":"Akun berhasil dihapus","twofaccounts.accounts_moved":"Akun berhasil dipindahkan","twofaccounts.export_selected_to_json":"Unduh sebuah ekspor json dari akun yang dipilih","twofaccounts.reveal":"reveal","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"Fulan","twofaccounts.forms.new_account":"Akun baru","twofaccounts.forms.edit_account":"Edit akun","twofaccounts.forms.otp_uri":"Uri OTP","twofaccounts.forms.scan_qrcode":"Pindai kode QR","twofaccounts.forms.upload_qrcode":"Unggah kode QR","twofaccounts.forms.use_advanced_form":"Gunakan formulir lanjutan","twofaccounts.forms.prefill_using_qrcode":"Isi awal menggunakan sebuah Kode QR","twofaccounts.forms.use_qrcode.val":"Gunakan kode qr","twofaccounts.forms.use_qrcode.title":"Gunakan sebuah kode QR untuk mengisi formulir secara ajaib","twofaccounts.forms.unlock.val":"Buka","twofaccounts.forms.unlock.title":"Buka (tanggung resiko sendiri)","twofaccounts.forms.lock.val":"Kunci","twofaccounts.forms.lock.title":"Kunci","twofaccounts.forms.choose_image":"Unggah","twofaccounts.forms.i_m_lucky":"Coba keberuntunganku","twofaccounts.forms.i_m_lucky_legend":'The "Try my luck" button try to get the official icon of the given service. Enter actual service name without ".xyz" extension and try to avoid typo. (beta feature)',"twofaccounts.forms.test":"Tes","twofaccounts.forms.secret.label":"Secret","twofaccounts.forms.secret.help":"The key used to generate your security codes","twofaccounts.forms.plain_text":"Plain text","twofaccounts.forms.otp_type.label":'Choose the type of OTP to create',"twofaccounts.forms.otp_type.help":"Time-based OTP or HMAC-based OTP or Steam OTP","twofaccounts.forms.digits.label":"Digits","twofaccounts.forms.digits.help":"The number of digits of the generated security codes","twofaccounts.forms.algorithm.label":"Algorithm","twofaccounts.forms.algorithm.help":"The algorithm used to secure your security codes","twofaccounts.forms.period.label":"Period","twofaccounts.forms.period.placeholder":"Default is 30","twofaccounts.forms.period.help":"The period of validity of the generated security codes in second","twofaccounts.forms.counter.label":"Counter","twofaccounts.forms.counter.placeholder":"Default is 0","twofaccounts.forms.counter.help":"The initial counter value","twofaccounts.forms.counter.help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing","twofaccounts.forms.image.label":"Image","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"The url of an external image to use as the account icon","twofaccounts.forms.options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","twofaccounts.forms.alternative_methods":"Alternative methods","twofaccounts.stream.live_scan_cant_start":"Live scan can't start :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth does not have permission to access your camera","twofaccounts.stream.need_grant_permission.solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission.","twofaccounts.stream.need_grant_permission.click_camera_icon":"It is usually done by clicking on a slashed camera icon in or next to the browser's address bar","twofaccounts.stream.not_readable.reason":"Fail to load scanner","twofaccounts.stream.not_readable.solution":"Is the camera already in use? Ensure that no other app use your camera and try again","twofaccounts.stream.no_cam_on_device.reason":"No camera on this device","twofaccounts.stream.no_cam_on_device.solution":"Maybe you forgot to plug in your webcam","twofaccounts.stream.secured_context_required.reason":"Secure context required","twofaccounts.stream.secured_context_required.solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost","twofaccounts.stream.https_required":"HTTPS required for camera streaming","twofaccounts.stream.camera_not_suitable.reason":"Installed cameras are not suitable","twofaccounts.stream.camera_not_suitable.solution":"Please use another device/camera","twofaccounts.stream.stream_api_not_supported.reason":"Stream API is not supported in this browser","twofaccounts.stream.stream_api_not_supported.solution":"You should use a modern browser","twofaccounts.confirm.delete":"Are you sure you want to delete this account?","twofaccounts.confirm.cancel":"Changes will be lost. Are you sure?","twofaccounts.confirm.discard":"Are you sure you want to discard this account?","twofaccounts.confirm.discard_all":"Are you sure you want to discard all accounts?","twofaccounts.confirm.discard_duplicates":"Are you sure you want to discard all duplicates?","twofaccounts.import.import":"Import","twofaccounts.import.to_import":"Import","twofaccounts.import.import_legend":"2FAuth can import data from various 2FA apps.","twofaccounts.import.import_legend_afterpart":"Use the Export feature of these apps to get a migration resource like a QR code or a JSON file then load it here.","twofaccounts.import.upload":"Upload","twofaccounts.import.scan":"Scan","twofaccounts.import.supported_formats_for_qrcode_upload":"Accepted: jpg, jpeg, png, bmp, gif, svg, or webp","twofaccounts.import.supported_formats_for_file_upload":"Accepted: Plain text, json, 2fas","twofaccounts.import.supported_migration_formats":"Supported migration formats","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Text file","twofaccounts.import.plain_text":"Plain text","twofaccounts.import.parsing_data":"Parsing data...","twofaccounts.import.issuer":"Issuer","twofaccounts.import.imported":"Imported","twofaccounts.import.failure":"Failure","twofaccounts.import.x_valid_accounts_found":":count valid accounts found","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"The following 2FA accounts were found in the migration resource. So far none of them have been added to 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Use the available buttons to permanently save them to your 2FA collection or discard them.","twofaccounts.import.import_all":"Import all","twofaccounts.import.import_this_account":"Import this account","twofaccounts.import.discard_all":"Discard all","twofaccounts.import.discard_duplicates":"Discard duplicates","twofaccounts.import.discard_this_account":"Discard this account","twofaccounts.import.generate_a_test_password":"Generate a test pasword","twofaccounts.import.possible_duplicate":"An account with the exact same data already exists","twofaccounts.import.invalid_account":"- invalid account -","twofaccounts.import.invalid_service":"- invalid service -","twofaccounts.import.do_not_set_password_or_encryption":"Do NOT enable Password protection or Encryption when you export data from a 2FA app otherwise 2FAuth will not be able to decipher them.","validation.accepted":"The :attribute must be accepted.","validation.accepted_if":"The :attribute must be accepted when :other is :value.","validation.active_url":"The :attribute is not a valid URL.","validation.after":"The :attribute must be a date after :date.","validation.after_or_equal":"The :attribute must be a date after or equal to :date.","validation.alpha":"The :attribute must only contain letters.","validation.alpha_dash":"The :attribute must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The :attribute must only contain letters and numbers.","validation.array":"The :attribute must be an array.","validation.before":"The :attribute must be a date before :date.","validation.before_or_equal":"The :attribute must be a date before or equal to :date.","validation.between.array":"The :attribute must have between :min and :max items.","validation.between.file":"The :attribute must be between :min and :max kilobytes.","validation.between.numeric":"The :attribute must be between :min and :max.","validation.between.string":"The :attribute must be between :min and :max characters.","validation.boolean":"The :attribute field must be true or false.","validation.confirmed":"The :attribute confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The :attribute is not a valid date.","validation.date_equals":"The :attribute must be a date equal to :date.","validation.date_format":"The :attribute does not match the format :format.","validation.declined":"The :attribute must be declined.","validation.declined_if":"The :attribute must be declined when :other is :value.","validation.different":"The :attribute and :other must be different.","validation.digits":"The :attribute must be :digits digits.","validation.digits_between":"The :attribute must be between :min and :max digits.","validation.dimensions":"The :attribute has invalid image dimensions.","validation.distinct":"The :attribute field has a duplicate value.","validation.doesnt_end_with":"The :attribute may not end with one of the following: :values.","validation.doesnt_start_with":"The :attribute may not start with one of the following: :values.","validation.email":"The :attribute must be a valid email address.","validation.ends_with":"The :attribute must end with one of the following: :values.","validation.enum":"The selected :attribute is invalid.","validation.exists":"The selected :attribute is invalid.","validation.file":"The :attribute must be a file.","validation.filled":"The :attribute field must have a value.","validation.gt.array":"The :attribute must have more than :value items.","validation.gt.file":"The :attribute must be greater than :value kilobytes.","validation.gt.numeric":"The :attribute must be greater than :value.","validation.gt.string":"The :attribute must be greater than :value characters.","validation.gte.array":"The :attribute must have :value items or more.","validation.gte.file":"The :attribute must be greater than or equal to :value kilobytes.","validation.gte.numeric":"The :attribute must be greater than or equal to :value.","validation.gte.string":"The :attribute must be greater than or equal to :value characters.","validation.image":"The :attribute must be an image.","validation.in":"The selected :attribute is invalid.","validation.in_array":"The :attribute field does not exist in :other.","validation.integer":"The :attribute must be an integer.","validation.ip":"The :attribute must be a valid IP address.","validation.ipv4":"The :attribute must be a valid IPv4 address.","validation.ipv6":"The :attribute must be a valid IPv6 address.","validation.json":"The :attribute must be a valid JSON string.","validation.lt.array":"The :attribute must have less than :value items.","validation.lt.file":"The :attribute must be less than :value kilobytes.","validation.lt.numeric":"The :attribute must be less than :value.","validation.lt.string":"The :attribute must be less than :value characters.","validation.lte.array":"The :attribute must not have more than :value items.","validation.lte.file":"The :attribute must be less than or equal to :value kilobytes.","validation.lte.numeric":"The :attribute must be less than or equal to :value.","validation.lte.string":"The :attribute must be less than or equal to :value characters.","validation.mac_address":"The :attribute must be a valid MAC address.","validation.max.array":"The :attribute must not have more than :max items.","validation.max.file":"The :attribute must not be greater than :max kilobytes.","validation.max.numeric":"The :attribute must not be greater than :max.","validation.max.string":"The :attribute must not be greater than :max characters.","validation.max_digits":"The :attribute must not have more than :max digits.","validation.mimes":"The :attribute must be a file of type: :values.","validation.mimetypes":"The :attribute must be a file of type: :values.","validation.min.array":"The :attribute must have at least :min items.","validation.min.file":"The :attribute must be at least :min kilobytes.","validation.min.numeric":"The :attribute must be at least :min.","validation.min.string":"The :attribute must be at least :min characters.","validation.min_digits":"The :attribute must have at least :min digits.","validation.multiple_of":"The :attribute must be a multiple of :value.","validation.not_in":"The selected :attribute is invalid.","validation.not_regex":"The :attribute format is invalid.","validation.numeric":"The :attribute must be a number.","validation.password.letters":"The :attribute must contain at least one letter.","validation.password.mixed":"The :attribute must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The :attribute must contain at least one number.","validation.password.symbols":"The :attribute must contain at least one symbol.","validation.password.uncompromised":"The given :attribute has appeared in a data leak. Please choose a different :attribute.","validation.present":"The :attribute field must be present.","validation.prohibited":"The :attribute field is prohibited.","validation.prohibited_if":"The :attribute field is prohibited when :other is :value.","validation.prohibited_unless":"The :attribute field is prohibited unless :other is in :values.","validation.prohibits":"The :attribute field prohibits :other from being present.","validation.regex":"The :attribute format is invalid.","validation.required":"The :attribute field is required.","validation.required_array_keys":"The :attribute field must contain entries for: :values.","validation.required_if":"The :attribute field is required when :other is :value.","validation.required_if_accepted":"The :attribute field is required when :other is accepted.","validation.required_unless":"The :attribute field is required unless :other is in :values.","validation.required_with":"The :attribute field is required when :values is present.","validation.required_with_all":"The :attribute field is required when :values are present.","validation.required_without":"The :attribute field is required when :values is not present.","validation.required_without_all":"The :attribute field is required when none of :values are present.","validation.same":"The :attribute and :other must match.","validation.size.array":"The :attribute must contain :size items.","validation.size.file":"The :attribute must be :size kilobytes.","validation.size.numeric":"The :attribute must be :size.","validation.size.string":"The :attribute must be :size characters.","validation.starts_with":"The :attribute must start with one of the following: :values.","validation.string":"The :attribute must be a string.","validation.timezone":"The :attribute must be a valid timezone.","validation.unique":"The :attribute has already been taken.","validation.uploaded":"The :attribute failed to upload.","validation.url":"The :attribute must be a valid URL.","validation.uuid":"The :attribute must be a valid UUID.","validation.single":"When using :attribute it must be the only parameter in this request body","validation.onlyCustomOtpWithUri":"The uri parameter must be provided alone or only in combination with the 'custom_otp' parameter","validation.custom.icon.image":"Supported format are jpeg, png, bmp, gif, svg, or webp.","validation.custom.qrcode.image":"Supported format are jpeg, png, bmp, gif, svg, or webp.","validation.custom.uri.regex":"The :attribute is not a valid otpauth uri.","validation.custom.otp_type.in":"The :attribute is not supported.","validation.custom.email.exists":"No account found using this email.","validation.custom.secret.isBase32Encoded":"The :attribute must be a base32 encoded string.","validation.custom.account.regex":"The :attribute must not contain colon.","validation.custom.service.regex":"The :attribute must not contain colon.","validation.custom.label.required":"The uri must have a label.","validation.custom.ids.regex":"IDs must be comma separated, without trailing comma."};export{e as default}; diff --git a/public/build/assets/php_it-785d18db.js b/public/build/assets/php_it-785d18db.js deleted file mode 100644 index df09862f..00000000 --- a/public/build/assets/php_it-785d18db.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"auth.failed":"Credenziali non valide.","auth.password":"La password fornita non è corretta.","auth.throttle":"Troppi tentativi di accesso. Riprova tra :seconds secondi.","auth.sign_out":"Disconnettiti","auth.sign_in":"Accedi","auth.sign_in_using":"Accedi con","auth.or_continue_with":"You an also continue with:","auth.sign_in_using_security_device":"Accedi tramite un dispositivo di sicurezza","auth.login_and_password":"nome utente e password","auth.register":"Registrati","auth.welcome_to_2fauth":"Benvenuto su 2FAuth","auth.autolock_triggered":"Blocco automatico attivato","auth.autolock_triggered_punchline":"Auto-lock triggered, you've been logged out","auth.already_authenticated":"Già autenticato","auth.authentication":"Autenticazione","auth.maybe_later":"Magari più tardi","auth.user_account_controlled_by_proxy":"Account utente reso disponibile da un proxy di autenticazione.
Gestisci l'account a livello di proxy.","auth.auth_handled_by_proxy":"Authentication handled by a reverse proxy, below settings are disabled.
Manage authentication at proxy level.","auth.confirm.logout":"Sei sicuro di volerti disconnettere?","auth.confirm.revoke_device":"Sei sicuro di voler eliminare questo dispositivo?","auth.confirm.delete_account":"Sei sicuro di voler eliminare il tuo account?","auth.webauthn.security_device":"un dispositivo di sicurezza","auth.webauthn.security_devices":"Dispositivi di sicurezza","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

- WebAuthn allows you to use trusted devices (like Yubikeys or smartphones with biometric capabilities) to sign in quickly and more securely.`,"auth.webauthn.use_security_device_to_sign_in":"Get ready to authenticate using (one of) your security devices. Plug your key in, remove face mask or gloves, etc.","auth.webauthn.lost_your_device":"Lost your device?","auth.webauthn.recover_your_account":"Recover your account","auth.webauthn.account_recovery":"Account recovery","auth.webauthn.recovery_punchline":"2FAuth will send you a recovery link to this email address. Click the link in the received email and follow the instructions.

Ensure you open the email on a device you fully own.","auth.webauthn.send_recovery_link":"Send recovery link","auth.webauthn.account_recovery_email_sent":"Account recovery email sent!","auth.webauthn.disable_all_security_devices":"Disable all security devices","auth.webauthn.disable_all_security_devices_help":"All your security devices will be revoked. Use this option if you have lost one or its security has been compromised.","auth.webauthn.register_a_new_device":"Register a new device","auth.webauthn.register_a_device":"Register a device","auth.webauthn.device_successfully_registered":"Device successfully registered","auth.webauthn.device_revoked":"Device successfully revoked","auth.webauthn.revoking_a_device_is_permanent":"Revoking a device is permanent","auth.webauthn.recover_account_instructions":"To recover your account, 2FAuth resets some Webauthn settings so you will be able to sign in using your email and password.","auth.webauthn.invalid_recovery_token":"Invalid recovery token","auth.webauthn.webauthn_login_disabled":"Webauthn login disabled","auth.webauthn.invalid_reset_token":"This reset token is invalid.","auth.webauthn.rename_device":"Rename device","auth.webauthn.my_device":"My device","auth.webauthn.unknown_device":"Unknown device","auth.webauthn.use_webauthn_only.label":"Use WebAuthn only","auth.webauthn.use_webauthn_only.help":`Make WebAuthn the only authorized method to log into your 2FAuth account. This is the recommended setup to take advantage of the WebAuthn enhanced security.

- In case of device lost, you will be able to recover your account by resetting this option and signing in using your email and password.

- Attention! The Email & Password form remains available despite this option being enabled, but it will always return an 'Authentication failed' response.`,"auth.webauthn.need_a_security_device_to_enable_options":"Set at least one device to enable the following options","auth.forms.name":"Name","auth.forms.login":"Login","auth.forms.webauthn_login":"WebAuthn login","auth.forms.email":"Email","auth.forms.password":"Password","auth.forms.reveal_password":"Reveal password","auth.forms.hide_password":"Hide password","auth.forms.confirm_password":"Confirm password","auth.forms.new_password":"New password","auth.forms.confirm_new_password":"Confirm new password","auth.forms.dont_have_account_yet":"Don't have your account yet?","auth.forms.already_register":"Already registered?","auth.forms.authentication_failed":"Authentication failed","auth.forms.forgot_your_password":"Forgot your password?","auth.forms.request_password_reset":"Reset it","auth.forms.reset_your_password":"Reset your password","auth.forms.reset_password":"Reset password","auth.forms.disabled_in_demo":"Feature disabled in Demo mode","auth.forms.current_password.label":"Current password","auth.forms.current_password.help":"Fill in your current password to confirm that it's you","auth.forms.change_password":"Change password","auth.forms.send_password_reset_link":"Send password reset link","auth.forms.password_successfully_changed":"Password successfully changed","auth.forms.edit_account":"Edit account","auth.forms.profile_saved":"Profile successfully updated!","auth.forms.welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Welcome to the 2FAuth testing instance.

Use email address testing@2fauth.app and password password","auth.forms.register_punchline":"Welcome to 2FAuth.
You need an account to go further, please register yourself.","auth.forms.reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password.","auth.forms.name_this_device":"Name this device","auth.forms.delete_account":"Delete account","auth.forms.delete_your_account":"Delete your account","auth.forms.delete_your_account_and_reset_all_data":"Your user account will be deleted as well as all your 2FA data. There is no going back.","auth.forms.reset_your_password_to_delete_your_account":"If you always used SSO to sign in, sign out then use the reset password feature to get a password so you can fill this form.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Deleting your 2FAuth account has no impact on your external SSO account.","auth.forms.user_account_successfully_deleted":"User account successfully deleted","auth.forms.has_lower_case":"Has lower case","auth.forms.has_upper_case":"Has upper case","auth.forms.has_special_char":"Has special char","auth.forms.has_number":"Has number","auth.forms.is_long_enough":"8 characters min.","auth.forms.mandatory_rules":"Mandatory","auth.forms.optional_rules_you_should_follow":"Recommanded (highly)","auth.forms.caps_lock_is_on":"Caps lock is On","commons.cancel":"Cancel","commons.update":"Update","commons.copy":"Copy","commons.copy_to_clipboard":"Copy to clipboard","commons.copied_to_clipboard":"Copied to clipboard","commons.profile":"Profile","commons.edit":"Edit","commons.delete":"Delete","commons.disable":"Disable","commons.enable":"Enable","commons.create":"Create","commons.save":"Save","commons.close":"Close","commons.clear":"Clear","commons.clear_search":"Clear search","commons.demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","commons.testing_do_not_post_sensitive_data":"This is a testing app, do not post any sensitive data","commons.selected":"selected","commons.name":"Name","commons.manage":"Manage","commons.done":"Done","commons.new":"New","commons.back":"Back","commons.move":"Move","commons.export":"Export","commons.all":"All","commons.select_all":"Select all","commons.clear_selection":"Clear selection","commons.sort_descending":"Sort descending","commons.sort_ascending":"Sort ascending","commons.rename":"Rename","commons.new_name":"New name","commons.options":"Options","commons.reload":"Reload","commons.refresh":"Refresh","commons.data_refreshed_to_reflect_server_changes":"Data has been refresh to reflect server-side changes","commons.generate":"Generate","commons.generating_otp":"Generating OTP","commons.open_in_browser":"Open in browser","commons.continue":"Continue","commons.discard":"Discard","commons.about":"About","commons.usefull_links":"Usefull links","commons.environment":"Environment","commons.credits":"Credits","commons.2fauth_teaser":"A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes","commons.made_with":"Made with","commons.ui_icons_by":"UI Icons by","commons.logos_by":"Logos by","commons.search":"Search","commons.resources":"Resources","commons.check_for_update":"Check for new version","commons.check_for_update_help":"Automatically check (once a week) and warn when a new release of 2FAuth is published on Github","commons.you_are_up_to_date":"This instance is up-to-date","commons.2fauth_description":"A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes","commons.image_of_qrcode_to_scan":"Image of a QR code to scan","commons.file":"File","commons.or":"OR","commons.close_the_x_page":"Close the :pagetitle page","commons.submit":"Submit","commons.default":"Default","commons.back_to_home":"Back to home","commons.nothing":"nothing","errors.resource_not_found":"Resource not found","errors.error_occured":"An error occured:","errors.refresh":"Refresh","errors.no_valid_otp":"No valid OTP resource in this QR code","errors.something_wrong_with_server":"Something is wrong with your server","errors.Unable_to_decrypt_uri":"Unable to decrypt uri","errors.not_a_supported_otp_type":"This OTP format is not currently supported","errors.cannot_create_otp_without_secret":"Cannot create an OTP without a secret","errors.data_of_qrcode_is_not_valid_URI":"The data of this QR code is not a valid OTP Auth URI. The QR code contains:","errors.wrong_current_password":"Wrong current password, nothing has changed","errors.error_during_encryption":"Encryption failed, your database remains unprotected.","errors.error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","errors.qrcode_cannot_be_read":"This QR code is unreadable","errors.too_many_ids":"too many ids were included in the query parameter, max 100 allowed","errors.delete_user_setting_only":"Only user-created setting can be deleted","errors.indecipherable":"*indecipherable*","errors.cannot_decipher_secret":"The secret cannot be deciphered. This is mainly caused by a wrong APP_KEY set in the .env configuration file of 2Fauth or a corrupted data stored in database.","errors.https_required":"HTTPS context required","errors.browser_does_not_support_webauthn":"Your device does not support webauthn. Try again later using a more modern browser","errors.aborted_by_user":"Aborted by user","errors.security_device_already_registered":"Device already registered","errors.not_allowed_operation":"Operation not allowed","errors.no_authenticator_support_specified_algorithms":"No authenticators support specified algorithms","errors.authenticator_missing_discoverable_credential_support":"Authenticator missing discoverable credential support","errors.authenticator_missing_user_verification_support":"Authenticator missing user verification support","errors.unknown_error":"Unknown error","errors.security_error_check_rpid":"Security error
Check your WEBAUTHN_ID env var","errors.2fauth_has_not_a_valid_domain":"2FAuth's domain is not a valid domain","errors.user_id_not_between_1_64":"User ID was not between 1 and 64 chars","errors.no_entry_was_of_type_public_key":'No entry was of type "public-key"',"errors.unsupported_with_reverseproxy":"Not applicable when using an auth proxy","errors.user_deletion_failed":"User account deletion failed, no data have been deleted","errors.auth_proxy_failed":"Proxy authentication failed","errors.auth_proxy_failed_legend":"2Fauth is configured to run behind an authentication proxy but your proxy does not return the expected header. Check your configuration and try again.","errors.invalid_x_migration":"Invalid or unreadable :appname data","errors.invalid_2fa_data":"Invalid 2FA data","errors.unsupported_migration":"Data do not match any supported format","errors.unsupported_otp_type":"Unsupported OTP type","errors.encrypted_migration":"Unreadable, the data seem encrypted","errors.no_logo_found_for_x":"No logo available for :service","errors.file_upload_failed":"File upload failed","errors.unauthorized":"Unauthorized","errors.unauthorized_legend":"You do not have permissions to view this resource or to perform this action","errors.cannot_delete_the_only_admin":"Cannot delete the only admin account","errors.error_during_data_fetching":"💀 Something went wrong during data fetching","errors.check_failed_try_later":"Check failed, please retry later","errors.sso_disabled":"SSO is disabled","errors.sso_bad_provider_setup":"This SSO provider is not fully setup in your .env file","errors.sso_failed":"Authentication via SSO rejected","errors.sso_no_register":"Registrations are disabled","errors.sso_email_already_used":"A user account with the same email address already exists but it does not match your external account ID. Do not use SSO if you are already registered on 2FAuth with this email.","errors.account_managed_by_external_provider":"Account managed by an external provider","groups.groups":"Groups","groups.create_group":"Create new group","groups.show_group_selector":"Show group selector","groups.hide_group_selector":"Hide group selector","groups.select_accounts_to_show":"Select accounts group to show","groups.manage_groups":"Manage groups","groups.active_group":"Active group","groups.manage_groups_legend":"You can create groups to organize your accounts the way you want. All accounts remain visible in the pseudo group named 'All', regardless of the group they belong to.","groups.deleting_group_does_not_delete_accounts":"Deleting a group does not delete accounts","groups.move_selected_to":"Move selected to","groups.move_selected_to_group":"Move selected into a group","groups.no_group":"No group","groups.change_group":"Change group","groups.group_successfully_created":"Group successfully created","groups.group_name_saved":"Group name saved","groups.group_successfully_deleted":"Group successfully deleted","groups.forms.new_group":"New group","groups.forms.new_name":"New name","groups.forms.rename_group":"Rename group","groups.confirm.delete":"Are you sure you want to delete this group?","languages.browser_preference":"Browser preference","languages.en":"English","languages.fr":"French","languages.de":"German","languages.es":"Spanish","languages.zh":"Chinese Simplified","languages.ru":"Russian","languages.bg":"Bulgarian","pagination.previous":"« Precedente","pagination.next":"Successivo »","passwords.reset":"La password è stata reimpostata!","passwords.sent":"Ti abbiamo inviato una email con il link per il reset della password!","passwords.throttled":"Per favore, attendi prima di riprovare.","passwords.token":"Questo token di reset della password non è valido.","passwords.user":"Non riusciamo a trovare un utente con questo indirizzo email.","passwords.password":"Passwords must be at least eight characters and match the confirmation.","settings.settings":"Settings","settings.preferences":"Preferences","settings.account":"Account","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Tokens","settings.options":"Options","settings.user_preferences":"User preferences","settings.admin_settings":"Admin settings","settings.confirm.revoke":"Are you sure you want to revoke this token?","settings.administration":"Administration","settings.administration_legend":"While previous settings are user settings (every user can set its own preferences), following settings are global and apply to all users.","settings.only_an_admin_can_edit_them":"Only an administrator can view and edit them.","settings.you_are_administrator":"You are an administrator","settings.account_linked_to_sso_x_provider":"You signed-in via SSO using your :provider account. Your information cannot be changed here but on :provider.","settings.general":"General","settings.security":"Security","settings.profile":"Profile","settings.change_password":"Change password","settings.personal_access_tokens":"Personal access tokens","settings.token_legend":"Personal Access Tokens allow any app to authenticate to the 2Fauth API. You should specify the access token as a Bearer token in the authorization header of consumer apps requests.","settings.generate_new_token":"Generate a new token","settings.revoke":"Revoke","settings.token_revoked":"Token successfully revoked","settings.revoking_a_token_is_permanent":"Revoking a token is permanent","settings.make_sure_copy_token":"Make sure to copy your personal access token now. You won’t be able to see it again!","settings.data_input":"Data input","settings.forms.edit_settings":"Edit settings","settings.forms.setting_saved":"Settings saved","settings.forms.new_token":"New token","settings.forms.some_translation_are_missing":"Some translations are missing using the browser preferred language?","settings.forms.help_translate_2fauth":"Help translate 2FAuth","settings.forms.language.label":"Language","settings.forms.language.help":"Language used to translate the 2FAuth user interface. Named languages are complete, set the one of your choice to override your browser preference.","settings.forms.show_otp_as_dot.label":'Show generated OTP as dot',"settings.forms.show_otp_as_dot.help":"Replace generated password caracters with *** to ensure confidentiality. Do not affect the copy/paste feature","settings.forms.reveal_dotted_otp.label":'Reveal obscured OTP',"settings.forms.reveal_dotted_otp.help":"Let the ability to temporarily reveal Dot-Obscured passwords","settings.forms.close_otp_on_copy.label":'Close OTP after copy',"settings.forms.close_otp_on_copy.help":"Clicking a generated password to copy it automatically hide it from the screen","settings.forms.copy_otp_on_display.label":'Copy OTP on display',"settings.forms.copy_otp_on_display.help":'Automatically copy a generated password right after it appears on screen. Due to browsers limitations, only the first TOTP password will be copied, not the rotating ones',"settings.forms.use_basic_qrcode_reader.label":"Use basic QR code reader","settings.forms.use_basic_qrcode_reader.help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader","settings.forms.display_mode.label":"Display mode","settings.forms.display_mode.help":"Choose whether you want accounts to be displayed as a list or as a grid","settings.forms.password_format.label":"Password formatting","settings.forms.password_format.help":"Change how the passwords are displayed by grouping digits to ease readability and memorization","settings.forms.pair":"by Pair","settings.forms.pair_legend":"Group digits two by two","settings.forms.trio_legend":"Group digits three by three","settings.forms.half_legend":"Split digits into two equals groups","settings.forms.trio":"by Trio","settings.forms.half":"by Half","settings.forms.grid":"Grid","settings.forms.list":"List","settings.forms.theme.label":"Theme","settings.forms.theme.help":"Force a specific theme or apply the theme defined in your system/browser preferences","settings.forms.light":"Light","settings.forms.dark":"Dark","settings.forms.automatic":"Auto","settings.forms.show_accounts_icons.label":"Show icons","settings.forms.show_accounts_icons.help":"Show icons accounts in the main view","settings.forms.get_official_icons.label":"Get official icons","settings.forms.get_official_icons.help":"(Try to) Get the official icon of the 2FA issuer when adding an account","settings.forms.auto_lock.label":"Auto lock","settings.forms.auto_lock.help":"Log out the user automatically in case of inactivity. Has no effect when authentication is handled by a proxy and no custom logout url is specified.","settings.forms.use_encryption.label":"Protect sensible data","settings.forms.use_encryption.help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key.","settings.forms.default_group.label":"Default group","settings.forms.default_group.help":"The group to which the newly created accounts are associated","settings.forms.useDirectCapture.label":"Direct input","settings.forms.useDirectCapture.help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode","settings.forms.defaultCaptureMode.label":"Default input mode","settings.forms.defaultCaptureMode.help":"Default input mode used when the Direct input option is On","settings.forms.remember_active_group.label":"Remember group filter","settings.forms.remember_active_group.help":"Save the last group filter applied and restore it on your next visit","settings.forms.disable_registration.label":"Disable registration","settings.forms.disable_registration.help":"Prevent new user registration. This affects SSO as well, so new SSO users won't be able to sign on","settings.forms.enable_sso.label":"Enable Single Sign-On (SSO)","settings.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","settings.forms.otp_generation.label":"Show Password","settings.forms.otp_generation.help":'Set how and when OTPs are displayed.
',"settings.forms.otp_generation_on_request":"After a click/tap","settings.forms.otp_generation_on_request_legend":"Alone, in its own view","settings.forms.otp_generation_on_request_title":"Click an account to get a password in a dedicated view","settings.forms.otp_generation_on_home":"Constantly","settings.forms.otp_generation_on_home_legend":"All of them, on home","settings.forms.otp_generation_on_home_title":"Show all passwords in the main view, without doing anything","settings.forms.never":"Never","settings.forms.on_otp_copy":"On security code copy","settings.forms.1_minutes":"After 1 minute","settings.forms.5_minutes":"After 5 minutes","settings.forms.10_minutes":"After 10 minutes","settings.forms.15_minutes":"After 15 minutes","settings.forms.30_minutes":"After 30 minutes","settings.forms.1_hour":"After 1 hour","settings.forms.1_day":"After 1 day","settings.forms.livescan":"QR code livescan","settings.forms.upload":"QR code upload","settings.forms.advanced_form":"Advanced form","titles.404":"Item not found","titles.start":"New account","titles.capture":"Flash QR","titles.accounts":"Accounts","titles.createAccount":"Create account","titles.importAccounts":"Import accounts","titles.editAccount":"Account edit","titles.showQRcode":"Account as QR code","titles.groups":"Groups","titles.createGroup":"Create group","titles.editGroup":"Group edit","titles.settings.options":"Options","titles.settings.account":"User account","titles.settings.oauth.tokens":"OAuth tokens","titles.settings.oauth.generatePAT":"New personal token","titles.settings.webauthn.editCredential":"Device edit","titles.settings.webauthn.devices":"WebAuthn devices","titles.login":"Login","titles.register":"Register","titles.autolock":"Auto lock","titles.password.request":"Reset password","titles.password.reset":"New password","titles.webauthn.lost":"Account recovery","titles.webauthn.recover":"Register a new device","titles.flooded":"Flood","titles.genericError":"Error","titles.about":"About","twofaccounts.service":"Service","twofaccounts.account":"Account","twofaccounts.accounts":"Accounts","twofaccounts.icon":"Icon","twofaccounts.icon_for_account_x_at_service_y":"Icon of the :account account at :service","twofaccounts.icon_to_illustrate_the_account":"Icon that illustrates the account","twofaccounts.remove_icon":"Remove icon","twofaccounts.no_account_here":"No 2FA here!","twofaccounts.add_first_account":"Pick a method and add your first account","twofaccounts.use_full_form":"Or use the full form","twofaccounts.add_one":"Add one","twofaccounts.show_qrcode":"Show QR code","twofaccounts.no_service":"- no service -","twofaccounts.account_created":"Account successfully created","twofaccounts.account_updated":"Account successfully updated","twofaccounts.accounts_deleted":"Account(s) successfully deleted","twofaccounts.accounts_moved":"Account(s) successfully moved","twofaccounts.export_selected_to_json":"Download a json export of selected accounts","twofaccounts.reveal":"reveal","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"John DOE","twofaccounts.forms.new_account":"New account","twofaccounts.forms.edit_account":"Edit account","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Scan a QR code","twofaccounts.forms.upload_qrcode":"Upload a QR code","twofaccounts.forms.use_advanced_form":"Use the advanced form","twofaccounts.forms.prefill_using_qrcode":"Prefill using a QR Code","twofaccounts.forms.use_qrcode.val":"Use a qrcode","twofaccounts.forms.use_qrcode.title":"Use a QR code to fill the form magically","twofaccounts.forms.unlock.val":"Unlock","twofaccounts.forms.unlock.title":"Unlock it (at your own risk)","twofaccounts.forms.lock.val":"Lock","twofaccounts.forms.lock.title":"Lock it","twofaccounts.forms.choose_image":"Upload","twofaccounts.forms.i_m_lucky":"Try my luck","twofaccounts.forms.i_m_lucky_legend":'The "Try my luck" button try to get the official icon of the given service. Enter actual service name without ".xyz" extension and try to avoid typo. (beta feature)',"twofaccounts.forms.test":"Test","twofaccounts.forms.secret.label":"Secret","twofaccounts.forms.secret.help":"The key used to generate your security codes","twofaccounts.forms.plain_text":"Plain text","twofaccounts.forms.otp_type.label":'Choose the type of OTP to create',"twofaccounts.forms.otp_type.help":"Time-based OTP or HMAC-based OTP or Steam OTP","twofaccounts.forms.digits.label":"Digits","twofaccounts.forms.digits.help":"The number of digits of the generated security codes","twofaccounts.forms.algorithm.label":"Algorithm","twofaccounts.forms.algorithm.help":"The algorithm used to secure your security codes","twofaccounts.forms.period.label":"Period","twofaccounts.forms.period.placeholder":"Default is 30","twofaccounts.forms.period.help":"The period of validity of the generated security codes in second","twofaccounts.forms.counter.label":"Counter","twofaccounts.forms.counter.placeholder":"Default is 0","twofaccounts.forms.counter.help":"The initial counter value","twofaccounts.forms.counter.help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing","twofaccounts.forms.image.label":"Image","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"The url of an external image to use as the account icon","twofaccounts.forms.options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","twofaccounts.forms.alternative_methods":"Alternative methods","twofaccounts.stream.live_scan_cant_start":"Live scan can't start :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth does not have permission to access your camera","twofaccounts.stream.need_grant_permission.solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission.","twofaccounts.stream.need_grant_permission.click_camera_icon":"It is usually done by clicking on a slashed camera icon in or next to the browser's address bar","twofaccounts.stream.not_readable.reason":"Fail to load scanner","twofaccounts.stream.not_readable.solution":"Is the camera already in use? Ensure that no other app use your camera and try again","twofaccounts.stream.no_cam_on_device.reason":"No camera on this device","twofaccounts.stream.no_cam_on_device.solution":"Maybe you forgot to plug in your webcam","twofaccounts.stream.secured_context_required.reason":"Secure context required","twofaccounts.stream.secured_context_required.solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost","twofaccounts.stream.https_required":"HTTPS required for camera streaming","twofaccounts.stream.camera_not_suitable.reason":"Installed cameras are not suitable","twofaccounts.stream.camera_not_suitable.solution":"Please use another device/camera","twofaccounts.stream.stream_api_not_supported.reason":"Stream API is not supported in this browser","twofaccounts.stream.stream_api_not_supported.solution":"You should use a modern browser","twofaccounts.confirm.delete":"Are you sure you want to delete this account?","twofaccounts.confirm.cancel":"Changes will be lost. Are you sure?","twofaccounts.confirm.discard":"Are you sure you want to discard this account?","twofaccounts.confirm.discard_all":"Are you sure you want to discard all accounts?","twofaccounts.confirm.discard_duplicates":"Are you sure you want to discard all duplicates?","twofaccounts.import.import":"Import","twofaccounts.import.to_import":"Import","twofaccounts.import.import_legend":"2FAuth can import data from various 2FA apps.","twofaccounts.import.import_legend_afterpart":"Use the Export feature of these apps to get a migration resource like a QR code or a JSON file then load it here.","twofaccounts.import.upload":"Upload","twofaccounts.import.scan":"Scan","twofaccounts.import.supported_formats_for_qrcode_upload":"Accepted: jpg, jpeg, png, bmp, gif, svg, or webp","twofaccounts.import.supported_formats_for_file_upload":"Accepted: Plain text, json, 2fas","twofaccounts.import.supported_migration_formats":"Supported migration formats","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Text file","twofaccounts.import.plain_text":"Plain text","twofaccounts.import.parsing_data":"Parsing data...","twofaccounts.import.issuer":"Issuer","twofaccounts.import.imported":"Imported","twofaccounts.import.failure":"Failure","twofaccounts.import.x_valid_accounts_found":":count valid accounts found","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"The following 2FA accounts were found in the migration resource. So far none of them have been added to 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Use the available buttons to permanently save them to your 2FA collection or discard them.","twofaccounts.import.import_all":"Import all","twofaccounts.import.import_this_account":"Import this account","twofaccounts.import.discard_all":"Discard all","twofaccounts.import.discard_duplicates":"Discard duplicates","twofaccounts.import.discard_this_account":"Discard this account","twofaccounts.import.generate_a_test_password":"Generate a test pasword","twofaccounts.import.possible_duplicate":"An account with the exact same data already exists","twofaccounts.import.invalid_account":"- invalid account -","twofaccounts.import.invalid_service":"- invalid service -","twofaccounts.import.do_not_set_password_or_encryption":"Do NOT enable Password protection or Encryption when you export data from a 2FA app otherwise 2FAuth will not be able to decipher them.","validation.accepted":":attribute deve essere accettato.","validation.accepted_if":"The :attribute must be accepted when :other is :value.","validation.active_url":":attribute non è un URL valido.","validation.after":":attribute deve essere una data successiva al :date.","validation.after_or_equal":":attribute deve essere una data successiva o uguale al :date.","validation.alpha":"The :attribute must only contain letters.","validation.alpha_dash":"The :attribute must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The :attribute must only contain letters and numbers.","validation.array":":attribute deve essere un array.","validation.before":":attribute deve essere una data precedente al :date.","validation.before_or_equal":":attribute deve essere una data precedente o uguale al :date.","validation.between.array":":attribute deve avere tra :min - :max elementi.","validation.between.file":":attribute deve trovarsi tra :min - :max kilobyte.","validation.between.numeric":":attribute deve trovarsi tra :min - :max.","validation.between.string":":attribute deve trovarsi tra :min - :max caratteri.","validation.boolean":"Il campo :attribute deve essere vero o falso.","validation.confirmed":"Il campo di conferma per :attribute non coincide.","validation.current_password":"The password is incorrect.","validation.date":":attribute non è una data valida.","validation.date_equals":":attribute deve essere una data e uguale a :date.","validation.date_format":":attribute non coincide con il formato :format.","validation.declined":"The :attribute must be declined.","validation.declined_if":"The :attribute must be declined when :other is :value.","validation.different":":attribute e :other devono essere differenti.","validation.digits":":attribute deve essere di :digits cifre.","validation.digits_between":":attribute deve essere tra :min e :max cifre.","validation.dimensions":"Le dimensioni dell'immagine di :attribute non sono valide.","validation.distinct":":attribute contiene un valore duplicato.","validation.doesnt_end_with":"The :attribute may not end with one of the following: :values.","validation.doesnt_start_with":"The :attribute may not start with one of the following: :values.","validation.email":":attribute non è valido.","validation.ends_with":":attribute deve finire con uno dei seguenti valori: :values","validation.enum":"The selected :attribute is invalid.","validation.exists":":attribute selezionato non è valido.","validation.file":":attribute deve essere un file.","validation.filled":"Il campo :attribute deve contenere un valore.","validation.gt.array":":attribute deve contenere più di :value elementi.","validation.gt.file":":attribute deve essere maggiore di :value kilobyte.","validation.gt.numeric":":attribute deve essere maggiore di :value.","validation.gt.string":":attribute deve contenere più di :value caratteri.","validation.gte.array":":attribute deve contenere un numero di elementi uguale o maggiore di :value.","validation.gte.file":"The :attribute must be greater than or equal to :value kilobytes.","validation.gte.numeric":"The :attribute must be greater than or equal to :value.","validation.gte.string":"The :attribute must be greater than or equal to :value characters.","validation.image":":attribute deve essere un'immagine.","validation.in":":attribute selezionato non è valido.","validation.in_array":"Il valore del campo :attribute non esiste in :other.","validation.integer":":attribute deve essere un numero intero.","validation.ip":":attribute deve essere un indirizzo IP valido.","validation.ipv4":":attribute deve essere un indirizzo IPv4 valido.","validation.ipv6":":attribute deve essere un indirizzo IPv6 valido.","validation.json":":attribute deve essere una stringa JSON valida.","validation.lt.array":":attribute deve contenere meno di :value elementi.","validation.lt.file":":attribute deve essere minore di :value kilobyte.","validation.lt.numeric":":attribute deve essere minore di :value.","validation.lt.string":":attribute deve contenere meno di :value caratteri.","validation.lte.array":":attribute deve contenere un numero di elementi minore o uguale a :value.","validation.lte.file":"The :attribute must be less than or equal to :value kilobytes.","validation.lte.numeric":"The :attribute must be less than or equal to :value.","validation.lte.string":"The :attribute must be less than or equal to :value characters.","validation.mac_address":"The :attribute must be a valid MAC address.","validation.max.array":"The :attribute must not have more than :max items.","validation.max.file":"The :attribute must not be greater than :max kilobytes.","validation.max.numeric":"The :attribute must not be greater than :max.","validation.max.string":"The :attribute must not be greater than :max characters.","validation.max_digits":"The :attribute must not have more than :max digits.","validation.mimes":":attribute deve essere del tipo: :values.","validation.mimetypes":":attribute deve essere del tipo: :values.","validation.min.array":":attribute deve avere almeno :min elementi.","validation.min.file":":attribute deve essere almeno di :min kilobyte.","validation.min.numeric":":attribute deve essere almeno :min.","validation.min.string":":attribute deve contenere almeno :min caratteri.","validation.min_digits":"The :attribute must have at least :min digits.","validation.multiple_of":"The :attribute must be a multiple of :value.","validation.not_in":"Il valore selezionato per :attribute non è valido.","validation.not_regex":"Il formato di :attribute non è valido.","validation.numeric":":attribute deve essere un numero.","validation.password.letters":"The :attribute must contain at least one letter.","validation.password.mixed":"The :attribute must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The :attribute must contain at least one number.","validation.password.symbols":"The :attribute must contain at least one symbol.","validation.password.uncompromised":"The given :attribute has appeared in a data leak. Please choose a different :attribute.","validation.present":"Il campo :attribute deve essere presente.","validation.prohibited":"The :attribute field is prohibited.","validation.prohibited_if":"The :attribute field is prohibited when :other is :value.","validation.prohibited_unless":"The :attribute field is prohibited unless :other is in :values.","validation.prohibits":"The :attribute field prohibits :other from being present.","validation.regex":"Il formato del campo :attribute non è valido.","validation.required":"Il campo :attribute è richiesto.","validation.required_array_keys":"The :attribute field must contain entries for: :values.","validation.required_if":"Il campo :attribute è richiesto quando :other è :value.","validation.required_if_accepted":"The :attribute field is required when :other is accepted.","validation.required_unless":"Il campo :attribute è richiesto a meno che :other sia in :values.","validation.required_with":"Il campo :attribute è richiesto quando :values è presente.","validation.required_with_all":"Il campo :attribute è richiesto quando :values sono presenti.","validation.required_without":"Il campo :attribute è richiesto quando :values non è presente.","validation.required_without_all":"Il campo :attribute è richiesto quando nessuno di :values è presente.","validation.same":":attribute e :other devono coincidere.","validation.size.array":":attribute deve contenere :size elementi.","validation.size.file":":attribute deve essere :size kilobyte.","validation.size.numeric":":attribute deve essere :size.","validation.size.string":":attribute deve contenere :size caratteri.","validation.starts_with":":attribute deve iniziare con uno dei seguenti: :values","validation.string":":attribute deve essere una stringa.","validation.timezone":"The :attribute must be a valid timezone.","validation.unique":":attribute è stato già utilizzato.","validation.uploaded":":attribute non è stato caricato.","validation.url":"The :attribute must be a valid URL.","validation.uuid":":attribute deve essere un UUID valido.","validation.single":"When using :attribute it must be the only parameter in this request body","validation.onlyCustomOtpWithUri":"The uri parameter must be provided alone or only in combination with the 'custom_otp' parameter","validation.custom.icon.image":"Supported format are jpeg, png, bmp, gif, svg, or webp.","validation.custom.qrcode.image":"Supported format are jpeg, png, bmp, gif, svg, or webp.","validation.custom.uri.regex":"The :attribute is not a valid otpauth uri.","validation.custom.otp_type.in":"The :attribute is not supported.","validation.custom.email.exists":"No account found using this email.","validation.custom.secret.isBase32Encoded":"The :attribute must be a base32 encoded string.","validation.custom.account.regex":"The :attribute must not contain colon.","validation.custom.service.regex":"The :attribute must not contain colon.","validation.custom.label.required":"The uri must have a label.","validation.custom.ids.regex":"IDs must be comma separated, without trailing comma."};export{e as default}; diff --git a/public/build/assets/php_it-fc9d90d6.js b/public/build/assets/php_it-fc9d90d6.js new file mode 100644 index 00000000..ad171f04 --- /dev/null +++ b/public/build/assets/php_it-fc9d90d6.js @@ -0,0 +1,4 @@ +/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"auth.failed":"Credenziali non valide.","auth.password":"La password fornita non è corretta.","auth.throttle":"Troppi tentativi di accesso. Riprova tra :seconds secondi.","auth.sign_out":"Disconnettiti","auth.sign_in":"Accedi","auth.sign_in_using":"Accedi con","auth.or_continue_with":"Si continua anche con:","auth.sign_in_using_security_device":"Accedi tramite un dispositivo di sicurezza","auth.login_and_password":"nome utente e password","auth.register":"Registrati","auth.welcome_to_2fauth":"Benvenuto su 2FAuth","auth.autolock_triggered":"Blocco automatico attivato","auth.autolock_triggered_punchline":"Blocco automatico attivato, sei stato disconnesso","auth.already_authenticated":"Già autenticato","auth.authentication":"Autenticazione","auth.maybe_later":"Magari più tardi","auth.user_account_controlled_by_proxy":"Account utente reso disponibile da un proxy di autenticazione.
Gestisci l'account a livello di proxy.","auth.auth_handled_by_proxy":"Autenticazione gestita da un proxy inverso, le impostazioni sottostanti sono disabilitate.
Gestisci l'autenticazione a livello di proxy.","auth.confirm.logout":"Sei sicuro di volerti disconnettere?","auth.confirm.revoke_device":"Sei sicuro di voler eliminare questo dispositivo?","auth.confirm.delete_account":"Sei sicuro di voler eliminare il tuo account?","auth.webauthn.security_device":"un dispositivo di sicurezza","auth.webauthn.security_devices":"Dispositivi di sicurezza","auth.webauthn.security_devices_legend":"Dispositivi di autenticazione che puoi usare per accedere a 2FAuth, come le chiavi di sicurezza (come Yubikey) o gli smartphone con funzionalità biometriche (es. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`Puoi migliorare la sicurezza del tuo account 2FAuth abilitando l'autenticazione WebAuthn.

+ WebAuthn consente di utilizzare dispositivi fidati (come Yubikey o smartphone con funzionalità biometriche) per accedere in modo rapido e sicuro.`,"auth.webauthn.use_security_device_to_sign_in":"Preparati ad autenticarti usando uno dei dispositivi di sicurezza. Collega la tua chiave, rimuovi la mascherina o i guanti, ecc.","auth.webauthn.lost_your_device":"Hai perso il tuo dispositivo?","auth.webauthn.recover_your_account":"Recupera il tuo account","auth.webauthn.account_recovery":"Recupero dell'account","auth.webauthn.recovery_punchline":"2FAuth ti invierà un link di recupero a questo indirizzo email. Clicca sul link nell'email ricevuta e segui le istruzioni.

Assicurati di aprire l'email su un dispositivo fidato.","auth.webauthn.send_recovery_link":"Invia link di recupero password","auth.webauthn.account_recovery_email_sent":"Email di recupero account inviata!","auth.webauthn.disable_all_security_devices":"Disabilita tutti i dispositivi di sicurezza","auth.webauthn.disable_all_security_devices_help":"Tutti i tuoi dispositivi di sicurezza saranno rimossi. Usa questa opzione se ne hai perso uno o se la sua sicurezza è stata compromessa.","auth.webauthn.register_a_new_device":"Aggiungi dispositivo","auth.webauthn.register_a_device":"Registra un dispositivo","auth.webauthn.device_successfully_registered":"Dispositivo registrato con successo","auth.webauthn.device_revoked":"Dispositivo revocato con successo","auth.webauthn.revoking_a_device_is_permanent":"Revocare un dispositivo è permanente","auth.webauthn.recover_account_instructions":"Per recuperare il tuo account, 2FAuth ripristina alcune impostazioni Webauthn in modo che tu possa essere in grado di accedere utilizzando la tua email e password.","auth.webauthn.invalid_recovery_token":"Token di recupero non valido","auth.webauthn.webauthn_login_disabled":"Login Webauthn disabilitato","auth.webauthn.invalid_reset_token":"Questo token di reset non è valido.","auth.webauthn.rename_device":"Rinomina dispositivo","auth.webauthn.my_device":"Il mio dispositivo","auth.webauthn.unknown_device":"Dispositivo sconosciuto","auth.webauthn.use_webauthn_only.label":"Usa solo WebAuthn","auth.webauthn.use_webauthn_only.help":`Rendi WebAuthn l'unico metodo autorizzato per accedere al tuo account 2FAuth. Questa è la configurazione consigliata per sfruttare la sicurezza potenziata di WebAuthn.

+ In caso di perdita del dispositivo, sarai in grado di recuperare il tuo account ripristinando questa opzione e accedendo utilizzando la tua email e password.

+ Attenzione! Il modulo Email e Password rimane disponibile nonostante questa opzione sia abilitata, ma restituirà sempre una risposta 'Autenticazione non riuscita'.`,"auth.webauthn.need_a_security_device_to_enable_options":"Imposta almeno un dispositivo per abilitare le seguenti opzioni","auth.forms.name":"Nome","auth.forms.login":"Login","auth.forms.webauthn_login":"WebAuthn login","auth.forms.email":"Email","auth.forms.password":"Password","auth.forms.reveal_password":"Mostra password","auth.forms.hide_password":"Nascondi password","auth.forms.confirm_password":"Conferma password","auth.forms.new_password":"Nuova password","auth.forms.confirm_new_password":"Conferma nuova password","auth.forms.dont_have_account_yet":"Non hai ancora un account?","auth.forms.already_register":"Sei già registrato?","auth.forms.authentication_failed":"Autenticazione fallita","auth.forms.forgot_your_password":"Hai dimenticato la password?","auth.forms.request_password_reset":"Reimpostala","auth.forms.reset_your_password":"Reimposta la password","auth.forms.reset_password":"Ripristina password","auth.forms.disabled_in_demo":"Funzione disabilitata in modalità demo","auth.forms.current_password.label":"Password attuale","auth.forms.current_password.help":"Inserisci la tua password attuale per confermare che sei tu","auth.forms.change_password":"Cambia password","auth.forms.send_password_reset_link":"Invia link per reset password","auth.forms.password_successfully_changed":"Password cambiata con successo","auth.forms.edit_account":"Modifica account","auth.forms.profile_saved":"Profilo aggiornato con successo!","auth.forms.welcome_to_demo_app_use_those_credentials":"Benvenuto nella demo di 2Fauth.

Puoi connetterti utilizzando l'indirizzo email demo@2fauth.app e la password demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Benvenuto nell'istanza test di 2Fauth.

Utilizza l'indirizzo email testing@2fauth.app e la password password","auth.forms.register_punchline":"Benvenuto su 2FAuth.
Hai bisogno di un account per proseguire, per favore creane uno.","auth.forms.reset_punchline":"2Fauth ha iniviato il link per il reset password al tuo indirizzo. Clicca sul link ricevuto nell'email per impostare una nuova password.","auth.forms.name_this_device":"Nome di questo dispositivo","auth.forms.delete_account":"Elimina account","auth.forms.delete_your_account":"Elimina il tuo account","auth.forms.delete_your_account_and_reset_all_data":"Il tuo account utente verrà eliminato insieme a tutti i dati di 2FA. Non puoi tornare indietro.","auth.forms.reset_your_password_to_delete_your_account":"If you always used SSO to sign in, sign out then use the reset password feature to get a password so you can fill this form.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Deleting your 2FAuth account has no impact on your external SSO account.","auth.forms.user_account_successfully_deleted":"User account successfully deleted","auth.forms.has_lower_case":"Has lower case","auth.forms.has_upper_case":"Has upper case","auth.forms.has_special_char":"Has special char","auth.forms.has_number":"Has number","auth.forms.is_long_enough":"8 characters min.","auth.forms.mandatory_rules":"Mandatory","auth.forms.optional_rules_you_should_follow":"Recommanded (highly)","auth.forms.caps_lock_is_on":"Caps lock is On","commons.cancel":"Cancel","commons.update":"Update","commons.copy":"Copy","commons.copy_to_clipboard":"Copy to clipboard","commons.copied_to_clipboard":"Copied to clipboard","commons.profile":"Profile","commons.edit":"Edit","commons.delete":"Delete","commons.disable":"Disable","commons.enable":"Enable","commons.create":"Create","commons.save":"Save","commons.close":"Close","commons.clear":"Clear","commons.clear_search":"Clear search","commons.demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","commons.testing_do_not_post_sensitive_data":"This is a testing app, do not post any sensitive data","commons.selected":"selected","commons.name":"Name","commons.manage":"Manage","commons.done":"Done","commons.new":"New","commons.back":"Back","commons.move":"Move","commons.export":"Export","commons.all":"All","commons.select_all":"Select all","commons.clear_selection":"Clear selection","commons.sort_descending":"Sort descending","commons.sort_ascending":"Sort ascending","commons.rename":"Rename","commons.new_name":"New name","commons.options":"Options","commons.reload":"Reload","commons.refresh":"Refresh","commons.data_refreshed_to_reflect_server_changes":"Data has been refresh to reflect server-side changes","commons.generate":"Generate","commons.generating_otp":"Generating OTP","commons.open_in_browser":"Open in browser","commons.continue":"Continue","commons.discard":"Discard","commons.about":"About","commons.usefull_links":"Usefull links","commons.environment":"Environment","commons.credits":"Credits","commons.2fauth_teaser":"A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes","commons.made_with":"Made with","commons.ui_icons_by":"UI Icons by","commons.logos_by":"Logos by","commons.search":"Search","commons.resources":"Resources","commons.check_for_update":"Check for new version","commons.check_for_update_help":"Automatically check (once a week) and warn when a new release of 2FAuth is published on Github","commons.you_are_up_to_date":"This instance is up-to-date","commons.2fauth_description":"A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes","commons.image_of_qrcode_to_scan":"Image of a QR code to scan","commons.file":"File","commons.or":"OR","commons.close_the_x_page":"Close the :pagetitle page","commons.submit":"Submit","commons.default":"Default","commons.back_to_home":"Back to home","commons.nothing":"nothing","errors.resource_not_found":"Resource not found","errors.error_occured":"An error occured:","errors.refresh":"Refresh","errors.no_valid_otp":"No valid OTP resource in this QR code","errors.something_wrong_with_server":"Something is wrong with your server","errors.Unable_to_decrypt_uri":"Unable to decrypt uri","errors.not_a_supported_otp_type":"This OTP format is not currently supported","errors.cannot_create_otp_without_secret":"Cannot create an OTP without a secret","errors.data_of_qrcode_is_not_valid_URI":"The data of this QR code is not a valid OTP Auth URI. The QR code contains:","errors.wrong_current_password":"Wrong current password, nothing has changed","errors.error_during_encryption":"Encryption failed, your database remains unprotected.","errors.error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","errors.qrcode_cannot_be_read":"This QR code is unreadable","errors.too_many_ids":"too many ids were included in the query parameter, max 100 allowed","errors.delete_user_setting_only":"Only user-created setting can be deleted","errors.indecipherable":"*indecipherable*","errors.cannot_decipher_secret":"The secret cannot be deciphered. This is mainly caused by a wrong APP_KEY set in the .env configuration file of 2Fauth or a corrupted data stored in database.","errors.https_required":"HTTPS context required","errors.browser_does_not_support_webauthn":"Your device does not support webauthn. Try again later using a more modern browser","errors.aborted_by_user":"Aborted by user","errors.security_device_already_registered":"Device already registered","errors.not_allowed_operation":"Operation not allowed","errors.no_authenticator_support_specified_algorithms":"No authenticators support specified algorithms","errors.authenticator_missing_discoverable_credential_support":"Authenticator missing discoverable credential support","errors.authenticator_missing_user_verification_support":"Authenticator missing user verification support","errors.unknown_error":"Unknown error","errors.security_error_check_rpid":"Security error
Check your WEBAUTHN_ID env var","errors.2fauth_has_not_a_valid_domain":"2FAuth's domain is not a valid domain","errors.user_id_not_between_1_64":"User ID was not between 1 and 64 chars","errors.no_entry_was_of_type_public_key":'No entry was of type "public-key"',"errors.unsupported_with_reverseproxy":"Not applicable when using an auth proxy","errors.user_deletion_failed":"User account deletion failed, no data have been deleted","errors.auth_proxy_failed":"Proxy authentication failed","errors.auth_proxy_failed_legend":"2Fauth is configured to run behind an authentication proxy but your proxy does not return the expected header. Check your configuration and try again.","errors.invalid_x_migration":"Invalid or unreadable :appname data","errors.invalid_2fa_data":"Invalid 2FA data","errors.unsupported_migration":"Data do not match any supported format","errors.unsupported_otp_type":"Unsupported OTP type","errors.encrypted_migration":"Unreadable, the data seem encrypted","errors.no_logo_found_for_x":"No logo available for :service","errors.file_upload_failed":"File upload failed","errors.unauthorized":"Unauthorized","errors.unauthorized_legend":"You do not have permissions to view this resource or to perform this action","errors.cannot_delete_the_only_admin":"Cannot delete the only admin account","errors.error_during_data_fetching":"💀 Something went wrong during data fetching","errors.check_failed_try_later":"Check failed, please retry later","errors.sso_disabled":"SSO is disabled","errors.sso_bad_provider_setup":"This SSO provider is not fully setup in your .env file","errors.sso_failed":"Authentication via SSO rejected","errors.sso_no_register":"Registrations are disabled","errors.sso_email_already_used":"A user account with the same email address already exists but it does not match your external account ID. Do not use SSO if you are already registered on 2FAuth with this email.","errors.account_managed_by_external_provider":"Account managed by an external provider","groups.groups":"Groups","groups.create_group":"Create new group","groups.show_group_selector":"Show group selector","groups.hide_group_selector":"Hide group selector","groups.select_accounts_to_show":"Select accounts group to show","groups.manage_groups":"Manage groups","groups.active_group":"Active group","groups.manage_groups_legend":"You can create groups to organize your accounts the way you want. All accounts remain visible in the pseudo group named 'All', regardless of the group they belong to.","groups.deleting_group_does_not_delete_accounts":"Deleting a group does not delete accounts","groups.move_selected_to":"Move selected to","groups.move_selected_to_group":"Move selected into a group","groups.no_group":"No group","groups.change_group":"Change group","groups.group_successfully_created":"Group successfully created","groups.group_name_saved":"Group name saved","groups.group_successfully_deleted":"Group successfully deleted","groups.forms.new_group":"New group","groups.forms.new_name":"New name","groups.forms.rename_group":"Rename group","groups.confirm.delete":"Are you sure you want to delete this group?","languages.browser_preference":"Browser preference","languages.en":"English","languages.fr":"French","languages.de":"German","languages.es":"Spanish","languages.zh":"Chinese Simplified","languages.ru":"Russian","languages.bg":"Bulgarian","pagination.previous":"« Precedente","pagination.next":"Successivo »","passwords.reset":"La password è stata reimpostata!","passwords.sent":"Ti abbiamo inviato una email con il link per il reset della password!","passwords.throttled":"Per favore, attendi prima di riprovare.","passwords.token":"Questo token di reset della password non è valido.","passwords.user":"Non riusciamo a trovare un utente con questo indirizzo email.","passwords.password":"Passwords must be at least eight characters and match the confirmation.","settings.settings":"Settings","settings.preferences":"Preferences","settings.account":"Account","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Tokens","settings.options":"Options","settings.user_preferences":"User preferences","settings.admin_settings":"Admin settings","settings.confirm.revoke":"Are you sure you want to revoke this token?","settings.administration":"Administration","settings.administration_legend":"While previous settings are user settings (every user can set its own preferences), following settings are global and apply to all users.","settings.only_an_admin_can_edit_them":"Only an administrator can view and edit them.","settings.you_are_administrator":"You are an administrator","settings.account_linked_to_sso_x_provider":"You signed-in via SSO using your :provider account. Your information cannot be changed here but on :provider.","settings.general":"General","settings.security":"Security","settings.profile":"Profile","settings.change_password":"Change password","settings.personal_access_tokens":"Personal access tokens","settings.token_legend":"Personal Access Tokens allow any app to authenticate to the 2Fauth API. You should specify the access token as a Bearer token in the authorization header of consumer apps requests.","settings.generate_new_token":"Generate a new token","settings.revoke":"Revoke","settings.token_revoked":"Token successfully revoked","settings.revoking_a_token_is_permanent":"Revoking a token is permanent","settings.make_sure_copy_token":"Make sure to copy your personal access token now. You won’t be able to see it again!","settings.data_input":"Data input","settings.forms.edit_settings":"Edit settings","settings.forms.setting_saved":"Settings saved","settings.forms.new_token":"New token","settings.forms.some_translation_are_missing":"Some translations are missing using the browser preferred language?","settings.forms.help_translate_2fauth":"Help translate 2FAuth","settings.forms.language.label":"Language","settings.forms.language.help":"Language used to translate the 2FAuth user interface. Named languages are complete, set the one of your choice to override your browser preference.","settings.forms.show_otp_as_dot.label":'Show generated OTP as dot',"settings.forms.show_otp_as_dot.help":"Replace generated password caracters with *** to ensure confidentiality. Do not affect the copy/paste feature","settings.forms.reveal_dotted_otp.label":'Reveal obscured OTP',"settings.forms.reveal_dotted_otp.help":"Let the ability to temporarily reveal Dot-Obscured passwords","settings.forms.close_otp_on_copy.label":'Close OTP after copy',"settings.forms.close_otp_on_copy.help":"Clicking a generated password to copy it automatically hide it from the screen","settings.forms.copy_otp_on_display.label":'Copy OTP on display',"settings.forms.copy_otp_on_display.help":'Automatically copy a generated password right after it appears on screen. Due to browsers limitations, only the first TOTP password will be copied, not the rotating ones',"settings.forms.use_basic_qrcode_reader.label":"Use basic QR code reader","settings.forms.use_basic_qrcode_reader.help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader","settings.forms.display_mode.label":"Display mode","settings.forms.display_mode.help":"Choose whether you want accounts to be displayed as a list or as a grid","settings.forms.password_format.label":"Password formatting","settings.forms.password_format.help":"Change how the passwords are displayed by grouping digits to ease readability and memorization","settings.forms.pair":"by Pair","settings.forms.pair_legend":"Group digits two by two","settings.forms.trio_legend":"Group digits three by three","settings.forms.half_legend":"Split digits into two equals groups","settings.forms.trio":"by Trio","settings.forms.half":"by Half","settings.forms.grid":"Grid","settings.forms.list":"List","settings.forms.theme.label":"Theme","settings.forms.theme.help":"Force a specific theme or apply the theme defined in your system/browser preferences","settings.forms.light":"Light","settings.forms.dark":"Dark","settings.forms.automatic":"Auto","settings.forms.show_accounts_icons.label":"Show icons","settings.forms.show_accounts_icons.help":"Show icons accounts in the main view","settings.forms.get_official_icons.label":"Get official icons","settings.forms.get_official_icons.help":"(Try to) Get the official icon of the 2FA issuer when adding an account","settings.forms.auto_lock.label":"Auto lock","settings.forms.auto_lock.help":"Log out the user automatically in case of inactivity. Has no effect when authentication is handled by a proxy and no custom logout url is specified.","settings.forms.use_encryption.label":"Protect sensible data","settings.forms.use_encryption.help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key.","settings.forms.default_group.label":"Default group","settings.forms.default_group.help":"The group to which the newly created accounts are associated","settings.forms.useDirectCapture.label":"Direct input","settings.forms.useDirectCapture.help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode","settings.forms.defaultCaptureMode.label":"Default input mode","settings.forms.defaultCaptureMode.help":"Default input mode used when the Direct input option is On","settings.forms.remember_active_group.label":"Remember group filter","settings.forms.remember_active_group.help":"Save the last group filter applied and restore it on your next visit","settings.forms.disable_registration.label":"Disable registration","settings.forms.disable_registration.help":"Prevent new user registration. This affects SSO as well, so new SSO users won't be able to sign on","settings.forms.enable_sso.label":"Enable Single Sign-On (SSO)","settings.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","settings.forms.otp_generation.label":"Show Password","settings.forms.otp_generation.help":'Set how and when OTPs are displayed.
',"settings.forms.otp_generation_on_request":"After a click/tap","settings.forms.otp_generation_on_request_legend":"Alone, in its own view","settings.forms.otp_generation_on_request_title":"Click an account to get a password in a dedicated view","settings.forms.otp_generation_on_home":"Constantly","settings.forms.otp_generation_on_home_legend":"All of them, on home","settings.forms.otp_generation_on_home_title":"Show all passwords in the main view, without doing anything","settings.forms.never":"Never","settings.forms.on_otp_copy":"On security code copy","settings.forms.1_minutes":"After 1 minute","settings.forms.5_minutes":"After 5 minutes","settings.forms.10_minutes":"After 10 minutes","settings.forms.15_minutes":"After 15 minutes","settings.forms.30_minutes":"After 30 minutes","settings.forms.1_hour":"After 1 hour","settings.forms.1_day":"After 1 day","settings.forms.livescan":"QR code livescan","settings.forms.upload":"QR code upload","settings.forms.advanced_form":"Advanced form","titles.404":"Item not found","titles.start":"New account","titles.capture":"Flash QR","titles.accounts":"Accounts","titles.createAccount":"Create account","titles.importAccounts":"Import accounts","titles.editAccount":"Account edit","titles.showQRcode":"Account as QR code","titles.groups":"Groups","titles.createGroup":"Create group","titles.editGroup":"Group edit","titles.settings.options":"Options","titles.settings.account":"User account","titles.settings.oauth.tokens":"OAuth tokens","titles.settings.oauth.generatePAT":"New personal token","titles.settings.webauthn.editCredential":"Device edit","titles.settings.webauthn.devices":"WebAuthn devices","titles.login":"Login","titles.register":"Register","titles.autolock":"Auto lock","titles.password.request":"Reset password","titles.password.reset":"New password","titles.webauthn.lost":"Account recovery","titles.webauthn.recover":"Register a new device","titles.flooded":"Flood","titles.genericError":"Error","titles.about":"About","twofaccounts.service":"Service","twofaccounts.account":"Account","twofaccounts.accounts":"Accounts","twofaccounts.icon":"Icon","twofaccounts.icon_for_account_x_at_service_y":"Icon of the :account account at :service","twofaccounts.icon_to_illustrate_the_account":"Icon that illustrates the account","twofaccounts.remove_icon":"Remove icon","twofaccounts.no_account_here":"No 2FA here!","twofaccounts.add_first_account":"Pick a method and add your first account","twofaccounts.use_full_form":"Or use the full form","twofaccounts.add_one":"Add one","twofaccounts.show_qrcode":"Show QR code","twofaccounts.no_service":"- no service -","twofaccounts.account_created":"Account successfully created","twofaccounts.account_updated":"Account successfully updated","twofaccounts.accounts_deleted":"Account(s) successfully deleted","twofaccounts.accounts_moved":"Account(s) successfully moved","twofaccounts.export_selected_to_json":"Download a json export of selected accounts","twofaccounts.reveal":"reveal","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"John DOE","twofaccounts.forms.new_account":"New account","twofaccounts.forms.edit_account":"Edit account","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Scan a QR code","twofaccounts.forms.upload_qrcode":"Upload a QR code","twofaccounts.forms.use_advanced_form":"Use the advanced form","twofaccounts.forms.prefill_using_qrcode":"Prefill using a QR Code","twofaccounts.forms.use_qrcode.val":"Use a qrcode","twofaccounts.forms.use_qrcode.title":"Use a QR code to fill the form magically","twofaccounts.forms.unlock.val":"Unlock","twofaccounts.forms.unlock.title":"Unlock it (at your own risk)","twofaccounts.forms.lock.val":"Lock","twofaccounts.forms.lock.title":"Lock it","twofaccounts.forms.choose_image":"Upload","twofaccounts.forms.i_m_lucky":"Try my luck","twofaccounts.forms.i_m_lucky_legend":'The "Try my luck" button try to get the official icon of the given service. Enter actual service name without ".xyz" extension and try to avoid typo. (beta feature)',"twofaccounts.forms.test":"Test","twofaccounts.forms.secret.label":"Secret","twofaccounts.forms.secret.help":"The key used to generate your security codes","twofaccounts.forms.plain_text":"Plain text","twofaccounts.forms.otp_type.label":'Choose the type of OTP to create',"twofaccounts.forms.otp_type.help":"Time-based OTP or HMAC-based OTP or Steam OTP","twofaccounts.forms.digits.label":"Digits","twofaccounts.forms.digits.help":"The number of digits of the generated security codes","twofaccounts.forms.algorithm.label":"Algorithm","twofaccounts.forms.algorithm.help":"The algorithm used to secure your security codes","twofaccounts.forms.period.label":"Period","twofaccounts.forms.period.placeholder":"Default is 30","twofaccounts.forms.period.help":"The period of validity of the generated security codes in second","twofaccounts.forms.counter.label":"Counter","twofaccounts.forms.counter.placeholder":"Default is 0","twofaccounts.forms.counter.help":"The initial counter value","twofaccounts.forms.counter.help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing","twofaccounts.forms.image.label":"Image","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"The url of an external image to use as the account icon","twofaccounts.forms.options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","twofaccounts.forms.alternative_methods":"Alternative methods","twofaccounts.stream.live_scan_cant_start":"Live scan can't start :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth does not have permission to access your camera","twofaccounts.stream.need_grant_permission.solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission.","twofaccounts.stream.need_grant_permission.click_camera_icon":"It is usually done by clicking on a slashed camera icon in or next to the browser's address bar","twofaccounts.stream.not_readable.reason":"Fail to load scanner","twofaccounts.stream.not_readable.solution":"Is the camera already in use? Ensure that no other app use your camera and try again","twofaccounts.stream.no_cam_on_device.reason":"No camera on this device","twofaccounts.stream.no_cam_on_device.solution":"Maybe you forgot to plug in your webcam","twofaccounts.stream.secured_context_required.reason":"Secure context required","twofaccounts.stream.secured_context_required.solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost","twofaccounts.stream.https_required":"HTTPS required for camera streaming","twofaccounts.stream.camera_not_suitable.reason":"Installed cameras are not suitable","twofaccounts.stream.camera_not_suitable.solution":"Please use another device/camera","twofaccounts.stream.stream_api_not_supported.reason":"Stream API is not supported in this browser","twofaccounts.stream.stream_api_not_supported.solution":"You should use a modern browser","twofaccounts.confirm.delete":"Are you sure you want to delete this account?","twofaccounts.confirm.cancel":"Changes will be lost. Are you sure?","twofaccounts.confirm.discard":"Are you sure you want to discard this account?","twofaccounts.confirm.discard_all":"Are you sure you want to discard all accounts?","twofaccounts.confirm.discard_duplicates":"Are you sure you want to discard all duplicates?","twofaccounts.import.import":"Import","twofaccounts.import.to_import":"Import","twofaccounts.import.import_legend":"2FAuth can import data from various 2FA apps.","twofaccounts.import.import_legend_afterpart":"Use the Export feature of these apps to get a migration resource like a QR code or a JSON file then load it here.","twofaccounts.import.upload":"Upload","twofaccounts.import.scan":"Scan","twofaccounts.import.supported_formats_for_qrcode_upload":"Accepted: jpg, jpeg, png, bmp, gif, svg, or webp","twofaccounts.import.supported_formats_for_file_upload":"Accepted: Plain text, json, 2fas","twofaccounts.import.supported_migration_formats":"Supported migration formats","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Text file","twofaccounts.import.plain_text":"Plain text","twofaccounts.import.parsing_data":"Parsing data...","twofaccounts.import.issuer":"Issuer","twofaccounts.import.imported":"Imported","twofaccounts.import.failure":"Failure","twofaccounts.import.x_valid_accounts_found":":count valid accounts found","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"The following 2FA accounts were found in the migration resource. So far none of them have been added to 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Use the available buttons to permanently save them to your 2FA collection or discard them.","twofaccounts.import.import_all":"Import all","twofaccounts.import.import_this_account":"Import this account","twofaccounts.import.discard_all":"Discard all","twofaccounts.import.discard_duplicates":"Discard duplicates","twofaccounts.import.discard_this_account":"Discard this account","twofaccounts.import.generate_a_test_password":"Generate a test pasword","twofaccounts.import.possible_duplicate":"An account with the exact same data already exists","twofaccounts.import.invalid_account":"- invalid account -","twofaccounts.import.invalid_service":"- invalid service -","twofaccounts.import.do_not_set_password_or_encryption":"Do NOT enable Password protection or Encryption when you export data from a 2FA app otherwise 2FAuth will not be able to decipher them.","validation.accepted":":attribute deve essere accettato.","validation.accepted_if":"The :attribute must be accepted when :other is :value.","validation.active_url":":attribute non è un URL valido.","validation.after":":attribute deve essere una data successiva al :date.","validation.after_or_equal":":attribute deve essere una data successiva o uguale al :date.","validation.alpha":"The :attribute must only contain letters.","validation.alpha_dash":"The :attribute must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The :attribute must only contain letters and numbers.","validation.array":":attribute deve essere un array.","validation.before":":attribute deve essere una data precedente al :date.","validation.before_or_equal":":attribute deve essere una data precedente o uguale al :date.","validation.between.array":":attribute deve avere tra :min - :max elementi.","validation.between.file":":attribute deve trovarsi tra :min - :max kilobyte.","validation.between.numeric":":attribute deve trovarsi tra :min - :max.","validation.between.string":":attribute deve trovarsi tra :min - :max caratteri.","validation.boolean":"Il campo :attribute deve essere vero o falso.","validation.confirmed":"Il campo di conferma per :attribute non coincide.","validation.current_password":"The password is incorrect.","validation.date":":attribute non è una data valida.","validation.date_equals":":attribute deve essere una data e uguale a :date.","validation.date_format":":attribute non coincide con il formato :format.","validation.declined":"The :attribute must be declined.","validation.declined_if":"The :attribute must be declined when :other is :value.","validation.different":":attribute e :other devono essere differenti.","validation.digits":":attribute deve essere di :digits cifre.","validation.digits_between":":attribute deve essere tra :min e :max cifre.","validation.dimensions":"Le dimensioni dell'immagine di :attribute non sono valide.","validation.distinct":":attribute contiene un valore duplicato.","validation.doesnt_end_with":"The :attribute may not end with one of the following: :values.","validation.doesnt_start_with":"The :attribute may not start with one of the following: :values.","validation.email":":attribute non è valido.","validation.ends_with":":attribute deve finire con uno dei seguenti valori: :values","validation.enum":"The selected :attribute is invalid.","validation.exists":":attribute selezionato non è valido.","validation.file":":attribute deve essere un file.","validation.filled":"Il campo :attribute deve contenere un valore.","validation.gt.array":":attribute deve contenere più di :value elementi.","validation.gt.file":":attribute deve essere maggiore di :value kilobyte.","validation.gt.numeric":":attribute deve essere maggiore di :value.","validation.gt.string":":attribute deve contenere più di :value caratteri.","validation.gte.array":":attribute deve contenere un numero di elementi uguale o maggiore di :value.","validation.gte.file":"The :attribute must be greater than or equal to :value kilobytes.","validation.gte.numeric":"The :attribute must be greater than or equal to :value.","validation.gte.string":"The :attribute must be greater than or equal to :value characters.","validation.image":":attribute deve essere un'immagine.","validation.in":":attribute selezionato non è valido.","validation.in_array":"Il valore del campo :attribute non esiste in :other.","validation.integer":":attribute deve essere un numero intero.","validation.ip":":attribute deve essere un indirizzo IP valido.","validation.ipv4":":attribute deve essere un indirizzo IPv4 valido.","validation.ipv6":":attribute deve essere un indirizzo IPv6 valido.","validation.json":":attribute deve essere una stringa JSON valida.","validation.lt.array":":attribute deve contenere meno di :value elementi.","validation.lt.file":":attribute deve essere minore di :value kilobyte.","validation.lt.numeric":":attribute deve essere minore di :value.","validation.lt.string":":attribute deve contenere meno di :value caratteri.","validation.lte.array":":attribute deve contenere un numero di elementi minore o uguale a :value.","validation.lte.file":"The :attribute must be less than or equal to :value kilobytes.","validation.lte.numeric":"The :attribute must be less than or equal to :value.","validation.lte.string":"The :attribute must be less than or equal to :value characters.","validation.mac_address":"The :attribute must be a valid MAC address.","validation.max.array":"The :attribute must not have more than :max items.","validation.max.file":"The :attribute must not be greater than :max kilobytes.","validation.max.numeric":"The :attribute must not be greater than :max.","validation.max.string":"The :attribute must not be greater than :max characters.","validation.max_digits":"The :attribute must not have more than :max digits.","validation.mimes":":attribute deve essere del tipo: :values.","validation.mimetypes":":attribute deve essere del tipo: :values.","validation.min.array":":attribute deve avere almeno :min elementi.","validation.min.file":":attribute deve essere almeno di :min kilobyte.","validation.min.numeric":":attribute deve essere almeno :min.","validation.min.string":":attribute deve contenere almeno :min caratteri.","validation.min_digits":"The :attribute must have at least :min digits.","validation.multiple_of":"The :attribute must be a multiple of :value.","validation.not_in":"Il valore selezionato per :attribute non è valido.","validation.not_regex":"Il formato di :attribute non è valido.","validation.numeric":":attribute deve essere un numero.","validation.password.letters":"The :attribute must contain at least one letter.","validation.password.mixed":"The :attribute must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The :attribute must contain at least one number.","validation.password.symbols":"The :attribute must contain at least one symbol.","validation.password.uncompromised":"The given :attribute has appeared in a data leak. Please choose a different :attribute.","validation.present":"Il campo :attribute deve essere presente.","validation.prohibited":"The :attribute field is prohibited.","validation.prohibited_if":"The :attribute field is prohibited when :other is :value.","validation.prohibited_unless":"The :attribute field is prohibited unless :other is in :values.","validation.prohibits":"The :attribute field prohibits :other from being present.","validation.regex":"Il formato del campo :attribute non è valido.","validation.required":"Il campo :attribute è richiesto.","validation.required_array_keys":"The :attribute field must contain entries for: :values.","validation.required_if":"Il campo :attribute è richiesto quando :other è :value.","validation.required_if_accepted":"The :attribute field is required when :other is accepted.","validation.required_unless":"Il campo :attribute è richiesto a meno che :other sia in :values.","validation.required_with":"Il campo :attribute è richiesto quando :values è presente.","validation.required_with_all":"Il campo :attribute è richiesto quando :values sono presenti.","validation.required_without":"Il campo :attribute è richiesto quando :values non è presente.","validation.required_without_all":"Il campo :attribute è richiesto quando nessuno di :values è presente.","validation.same":":attribute e :other devono coincidere.","validation.size.array":":attribute deve contenere :size elementi.","validation.size.file":":attribute deve essere :size kilobyte.","validation.size.numeric":":attribute deve essere :size.","validation.size.string":":attribute deve contenere :size caratteri.","validation.starts_with":":attribute deve iniziare con uno dei seguenti: :values","validation.string":":attribute deve essere una stringa.","validation.timezone":"The :attribute must be a valid timezone.","validation.unique":":attribute è stato già utilizzato.","validation.uploaded":":attribute non è stato caricato.","validation.url":"The :attribute must be a valid URL.","validation.uuid":":attribute deve essere un UUID valido.","validation.single":"When using :attribute it must be the only parameter in this request body","validation.onlyCustomOtpWithUri":"The uri parameter must be provided alone or only in combination with the 'custom_otp' parameter","validation.custom.icon.image":"Supported format are jpeg, png, bmp, gif, svg, or webp.","validation.custom.qrcode.image":"Supported format are jpeg, png, bmp, gif, svg, or webp.","validation.custom.uri.regex":"The :attribute is not a valid otpauth uri.","validation.custom.otp_type.in":"The :attribute is not supported.","validation.custom.email.exists":"No account found using this email.","validation.custom.secret.isBase32Encoded":"The :attribute must be a base32 encoded string.","validation.custom.account.regex":"The :attribute must not contain colon.","validation.custom.service.regex":"The :attribute must not contain colon.","validation.custom.label.required":"The uri must have a label.","validation.custom.ids.regex":"IDs must be comma separated, without trailing comma."};export{e as default}; diff --git a/public/build/assets/php_ro-e68bc39a.js b/public/build/assets/php_ro-5426628b.js similarity index 99% rename from public/build/assets/php_ro-e68bc39a.js rename to public/build/assets/php_ro-5426628b.js index 8bb337bb..9eb20929 100644 --- a/public/build/assets/php_ro-e68bc39a.js +++ b/public/build/assets/php_ro-5426628b.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"auth.failed":"These credentials do not match our records.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in :seconds seconds.","auth.sign_out":"Sign out","auth.sign_in":"Sign in","auth.sign_in_using":"Sign in using","auth.or_continue_with":"You an also continue with:","auth.sign_in_using_security_device":"Sign in using a security device","auth.login_and_password":"login & password","auth.register":"Register","auth.welcome_to_2fauth":"Welcome to 2FAuth","auth.autolock_triggered":"Auto lock triggered","auth.autolock_triggered_punchline":"Auto-lock triggered, you've been logged out","auth.already_authenticated":"Already authenticated, please log out first","auth.authentication":"Authentication","auth.maybe_later":"Maybe later","auth.user_account_controlled_by_proxy":"User account made available by an authentication proxy.
Manage the account at proxy level.","auth.auth_handled_by_proxy":"Authentication handled by a reverse proxy, below settings are disabled.
Manage authentication at proxy level.","auth.confirm.logout":"Are you sure you want to log out?","auth.confirm.revoke_device":"Are you sure you want to revoke this device?","auth.confirm.delete_account":"Are you sure you want to delete your account?","auth.webauthn.security_device":"a security device","auth.webauthn.security_devices":"Security devices","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

- WebAuthn allows you to use trusted devices (like Yubikeys or smartphones with biometric capabilities) to sign in quickly and more securely.`,"auth.webauthn.use_security_device_to_sign_in":"Get ready to authenticate using (one of) your security devices. Plug your key in, remove face mask or gloves, etc.","auth.webauthn.lost_your_device":"Lost your device?","auth.webauthn.recover_your_account":"Recover your account","auth.webauthn.account_recovery":"Account recovery","auth.webauthn.recovery_punchline":"2FAuth will send you a recovery link to this email address. Click the link in the received email and follow the instructions.

Ensure you open the email on a device you fully own.","auth.webauthn.send_recovery_link":"Send recovery link","auth.webauthn.account_recovery_email_sent":"Account recovery email sent!","auth.webauthn.disable_all_security_devices":"Disable all security devices","auth.webauthn.disable_all_security_devices_help":"All your security devices will be revoked. Use this option if you have lost one or its security has been compromised.","auth.webauthn.register_a_new_device":"Register a new device","auth.webauthn.register_a_device":"Register a device","auth.webauthn.device_successfully_registered":"Device successfully registered","auth.webauthn.device_revoked":"Device successfully revoked","auth.webauthn.revoking_a_device_is_permanent":"Revoking a device is permanent","auth.webauthn.recover_account_instructions":"To recover your account, 2FAuth resets some Webauthn settings so you will be able to sign in using your email and password.","auth.webauthn.invalid_recovery_token":"Invalid recovery token","auth.webauthn.webauthn_login_disabled":"Webauthn login disabled","auth.webauthn.invalid_reset_token":"This reset token is invalid.","auth.webauthn.rename_device":"Rename device","auth.webauthn.my_device":"My device","auth.webauthn.unknown_device":"Unknown device","auth.webauthn.use_webauthn_only.label":"Use WebAuthn only","auth.webauthn.use_webauthn_only.help":`Make WebAuthn the only authorized method to log into your 2FAuth account. This is the recommended setup to take advantage of the WebAuthn enhanced security.

- In case of device lost, you will be able to recover your account by resetting this option and signing in using your email and password.

+/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"auth.failed":"These credentials do not match our records.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in :seconds seconds.","auth.sign_out":"Sign out","auth.sign_in":"Sign in","auth.sign_in_using":"Sign in using","auth.or_continue_with":"You an also continue with:","auth.sign_in_using_security_device":"Sign in using a security device","auth.login_and_password":"login & password","auth.register":"Register","auth.welcome_to_2fauth":"Welcome to 2FAuth","auth.autolock_triggered":"Auto lock triggered","auth.autolock_triggered_punchline":"Auto-lock triggered, you've been logged out","auth.already_authenticated":"Already authenticated, please log out first","auth.authentication":"Authentication","auth.maybe_later":"Maybe later","auth.user_account_controlled_by_proxy":"User account made available by an authentication proxy.
Manage the account at proxy level.","auth.auth_handled_by_proxy":"Authentication handled by a reverse proxy, below settings are disabled.
Manage authentication at proxy level.","auth.confirm.logout":"Are you sure you want to log out?","auth.confirm.revoke_device":"Are you sure you want to revoke this device?","auth.confirm.delete_account":"Are you sure you want to delete your account?","auth.webauthn.security_device":"a security device","auth.webauthn.security_devices":"Security devices","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

\r + WebAuthn allows you to use trusted devices (like Yubikeys or smartphones with biometric capabilities) to sign in quickly and more securely.`,"auth.webauthn.use_security_device_to_sign_in":"Get ready to authenticate using (one of) your security devices. Plug your key in, remove face mask or gloves, etc.","auth.webauthn.lost_your_device":"Lost your device?","auth.webauthn.recover_your_account":"Recover your account","auth.webauthn.account_recovery":"Account recovery","auth.webauthn.recovery_punchline":"2FAuth will send you a recovery link to this email address. Click the link in the received email and follow the instructions.

Ensure you open the email on a device you fully own.","auth.webauthn.send_recovery_link":"Send recovery link","auth.webauthn.account_recovery_email_sent":"Account recovery email sent!","auth.webauthn.disable_all_security_devices":"Disable all security devices","auth.webauthn.disable_all_security_devices_help":"All your security devices will be revoked. Use this option if you have lost one or its security has been compromised.","auth.webauthn.register_a_new_device":"Register a new device","auth.webauthn.register_a_device":"Register a device","auth.webauthn.device_successfully_registered":"Device successfully registered","auth.webauthn.device_revoked":"Device successfully revoked","auth.webauthn.revoking_a_device_is_permanent":"Revoking a device is permanent","auth.webauthn.recover_account_instructions":"To recover your account, 2FAuth resets some Webauthn settings so you will be able to sign in using your email and password.","auth.webauthn.invalid_recovery_token":"Invalid recovery token","auth.webauthn.webauthn_login_disabled":"Webauthn login disabled","auth.webauthn.invalid_reset_token":"This reset token is invalid.","auth.webauthn.rename_device":"Rename device","auth.webauthn.my_device":"My device","auth.webauthn.unknown_device":"Unknown device","auth.webauthn.use_webauthn_only.label":"Use WebAuthn only","auth.webauthn.use_webauthn_only.help":`Make WebAuthn the only authorized method to log into your 2FAuth account. This is the recommended setup to take advantage of the WebAuthn enhanced security.

\r + In case of device lost, you will be able to recover your account by resetting this option and signing in using your email and password.

\r Attention! The Email & Password form remains available despite this option being enabled, but it will always return an 'Authentication failed' response.`,"auth.webauthn.need_a_security_device_to_enable_options":"Set at least one device to enable the following options","auth.forms.name":"Name","auth.forms.login":"Login","auth.forms.webauthn_login":"WebAuthn login","auth.forms.email":"Email","auth.forms.password":"Password","auth.forms.reveal_password":"Reveal password","auth.forms.hide_password":"Hide password","auth.forms.confirm_password":"Confirm password","auth.forms.new_password":"New password","auth.forms.confirm_new_password":"Confirm new password","auth.forms.dont_have_account_yet":"Don't have your account yet?","auth.forms.already_register":"Already registered?","auth.forms.authentication_failed":"Authentication failed","auth.forms.forgot_your_password":"Forgot your password?","auth.forms.request_password_reset":"Reset it","auth.forms.reset_your_password":"Reset your password","auth.forms.reset_password":"Reset password","auth.forms.disabled_in_demo":"Feature disabled in Demo mode","auth.forms.current_password.label":"Current password","auth.forms.current_password.help":"Fill in your current password to confirm that it's you","auth.forms.change_password":"Change password","auth.forms.send_password_reset_link":"Send password reset link","auth.forms.password_successfully_changed":"Password successfully changed","auth.forms.edit_account":"Edit account","auth.forms.profile_saved":"Profile successfully updated!","auth.forms.welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Welcome to the 2FAuth testing instance.

Use email address testing@2fauth.app and password password","auth.forms.register_punchline":"Welcome to 2FAuth.
You need an account to go further, please register yourself.","auth.forms.reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password.","auth.forms.name_this_device":"Name this device","auth.forms.delete_account":"Delete account","auth.forms.delete_your_account":"Delete your account","auth.forms.delete_your_account_and_reset_all_data":"Your user account will be deleted as well as all your 2FA data. There is no going back.","auth.forms.reset_your_password_to_delete_your_account":"If you always used SSO to sign in, sign out then use the reset password feature to get a password so you can fill this form.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Deleting your 2FAuth account has no impact on your external SSO account.","auth.forms.user_account_successfully_deleted":"User account successfully deleted","auth.forms.has_lower_case":"Has lower case","auth.forms.has_upper_case":"Has upper case","auth.forms.has_special_char":"Has special char","auth.forms.has_number":"Has number","auth.forms.is_long_enough":"8 characters min.","auth.forms.mandatory_rules":"Mandatory","auth.forms.optional_rules_you_should_follow":"Recommanded (highly)","auth.forms.caps_lock_is_on":"Caps lock is On","commons.cancel":"Cancel","commons.update":"Update","commons.copy":"Copy","commons.copy_to_clipboard":"Copy to clipboard","commons.copied_to_clipboard":"Copied to clipboard","commons.profile":"Profile","commons.edit":"Edit","commons.delete":"Delete","commons.disable":"Disable","commons.enable":"Enable","commons.create":"Create","commons.save":"Save","commons.close":"Close","commons.clear":"Clear","commons.clear_search":"Clear search","commons.demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","commons.testing_do_not_post_sensitive_data":"This is a testing app, do not post any sensitive data","commons.selected":"selected","commons.name":"Name","commons.manage":"Manage","commons.done":"Done","commons.new":"New","commons.back":"Back","commons.move":"Move","commons.export":"Export","commons.all":"All","commons.select_all":"Select all","commons.clear_selection":"Clear selection","commons.sort_descending":"Sort descending","commons.sort_ascending":"Sort ascending","commons.rename":"Rename","commons.new_name":"New name","commons.options":"Options","commons.reload":"Reload","commons.refresh":"Refresh","commons.data_refreshed_to_reflect_server_changes":"Data has been refresh to reflect server-side changes","commons.generate":"Generate","commons.generating_otp":"Generating OTP","commons.open_in_browser":"Open in browser","commons.continue":"Continue","commons.discard":"Discard","commons.about":"About","commons.usefull_links":"Usefull links","commons.environment":"Environment","commons.credits":"Credits","commons.2fauth_teaser":"A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes","commons.made_with":"Made with","commons.ui_icons_by":"UI Icons by","commons.logos_by":"Logos by","commons.search":"Search","commons.resources":"Resources","commons.check_for_update":"Check for new version","commons.check_for_update_help":"Automatically check (once a week) and warn when a new release of 2FAuth is published on Github","commons.you_are_up_to_date":"This instance is up-to-date","commons.2fauth_description":"A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes","commons.image_of_qrcode_to_scan":"Image of a QR code to scan","commons.file":"File","commons.or":"OR","commons.close_the_x_page":"Close the :pagetitle page","commons.submit":"Submit","commons.default":"Default","commons.back_to_home":"Back to home","commons.nothing":"nothing","errors.resource_not_found":"Resource not found","errors.error_occured":"An error occured:","errors.refresh":"Refresh","errors.no_valid_otp":"No valid OTP resource in this QR code","errors.something_wrong_with_server":"Something is wrong with your server","errors.Unable_to_decrypt_uri":"Unable to decrypt uri","errors.not_a_supported_otp_type":"This OTP format is not currently supported","errors.cannot_create_otp_without_secret":"Cannot create an OTP without a secret","errors.data_of_qrcode_is_not_valid_URI":"The data of this QR code is not a valid OTP Auth URI. The QR code contains:","errors.wrong_current_password":"Wrong current password, nothing has changed","errors.error_during_encryption":"Encryption failed, your database remains unprotected.","errors.error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","errors.qrcode_cannot_be_read":"This QR code is unreadable","errors.too_many_ids":"too many ids were included in the query parameter, max 100 allowed","errors.delete_user_setting_only":"Only user-created setting can be deleted","errors.indecipherable":"*indecipherable*","errors.cannot_decipher_secret":"The secret cannot be deciphered. This is mainly caused by a wrong APP_KEY set in the .env configuration file of 2Fauth or a corrupted data stored in database.","errors.https_required":"HTTPS context required","errors.browser_does_not_support_webauthn":"Your device does not support webauthn. Try again later using a more modern browser","errors.aborted_by_user":"Aborted by user","errors.security_device_already_registered":"Device already registered","errors.not_allowed_operation":"Operation not allowed","errors.no_authenticator_support_specified_algorithms":"No authenticators support specified algorithms","errors.authenticator_missing_discoverable_credential_support":"Authenticator missing discoverable credential support","errors.authenticator_missing_user_verification_support":"Authenticator missing user verification support","errors.unknown_error":"Unknown error","errors.security_error_check_rpid":"Security error
Check your WEBAUTHN_ID env var","errors.2fauth_has_not_a_valid_domain":"2FAuth's domain is not a valid domain","errors.user_id_not_between_1_64":"User ID was not between 1 and 64 chars","errors.no_entry_was_of_type_public_key":'No entry was of type "public-key"',"errors.unsupported_with_reverseproxy":"Not applicable when using an auth proxy","errors.user_deletion_failed":"User account deletion failed, no data have been deleted","errors.auth_proxy_failed":"Proxy authentication failed","errors.auth_proxy_failed_legend":"2Fauth is configured to run behind an authentication proxy but your proxy does not return the expected header. Check your configuration and try again.","errors.invalid_x_migration":"Invalid or unreadable :appname data","errors.invalid_2fa_data":"Invalid 2FA data","errors.unsupported_migration":"Data do not match any supported format","errors.unsupported_otp_type":"Unsupported OTP type","errors.encrypted_migration":"Unreadable, the data seem encrypted","errors.no_logo_found_for_x":"No logo available for :service","errors.file_upload_failed":"File upload failed","errors.unauthorized":"Unauthorized","errors.unauthorized_legend":"You do not have permissions to view this resource or to perform this action","errors.cannot_delete_the_only_admin":"Cannot delete the only admin account","errors.error_during_data_fetching":"💀 Something went wrong during data fetching","errors.check_failed_try_later":"Check failed, please retry later","errors.sso_disabled":"SSO is disabled","errors.sso_bad_provider_setup":"This SSO provider is not fully setup in your .env file","errors.sso_failed":"Authentication via SSO rejected","errors.sso_no_register":"Registrations are disabled","errors.sso_email_already_used":"A user account with the same email address already exists but it does not match your external account ID. Do not use SSO if you are already registered on 2FAuth with this email.","errors.account_managed_by_external_provider":"Account managed by an external provider","groups.groups":"Groups","groups.create_group":"Create new group","groups.show_group_selector":"Show group selector","groups.hide_group_selector":"Hide group selector","groups.select_accounts_to_show":"Select accounts group to show","groups.manage_groups":"Manage groups","groups.active_group":"Active group","groups.manage_groups_legend":"You can create groups to organize your accounts the way you want. All accounts remain visible in the pseudo group named 'All', regardless of the group they belong to.","groups.deleting_group_does_not_delete_accounts":"Deleting a group does not delete accounts","groups.move_selected_to":"Move selected to","groups.move_selected_to_group":"Move selected into a group","groups.no_group":"No group","groups.change_group":"Change group","groups.group_successfully_created":"Group successfully created","groups.group_name_saved":"Group name saved","groups.group_successfully_deleted":"Group successfully deleted","groups.forms.new_group":"New group","groups.forms.new_name":"New name","groups.forms.rename_group":"Rename group","groups.confirm.delete":"Are you sure you want to delete this group?","languages.browser_preference":"Browser preference","languages.en":"English","languages.fr":"French","languages.de":"German","languages.es":"Spanish","languages.zh":"Chinese Simplified","languages.ru":"Russian","languages.bg":"Bulgarian","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","passwords.password":"Passwords must be at least eight characters and match the confirmation.","settings.settings":"Settings","settings.preferences":"Preferences","settings.account":"Account","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Tokens","settings.options":"Options","settings.user_preferences":"User preferences","settings.admin_settings":"Admin settings","settings.confirm.revoke":"Are you sure you want to revoke this token?","settings.administration":"Administration","settings.administration_legend":"While previous settings are user settings (every user can set its own preferences), following settings are global and apply to all users.","settings.only_an_admin_can_edit_them":"Only an administrator can view and edit them.","settings.you_are_administrator":"You are an administrator","settings.account_linked_to_sso_x_provider":"You signed-in via SSO using your :provider account. Your information cannot be changed here but on :provider.","settings.general":"General","settings.security":"Security","settings.profile":"Profile","settings.change_password":"Change password","settings.personal_access_tokens":"Personal access tokens","settings.token_legend":"Personal Access Tokens allow any app to authenticate to the 2Fauth API. You should specify the access token as a Bearer token in the authorization header of consumer apps requests.","settings.generate_new_token":"Generate a new token","settings.revoke":"Revoke","settings.token_revoked":"Token successfully revoked","settings.revoking_a_token_is_permanent":"Revoking a token is permanent","settings.make_sure_copy_token":"Make sure to copy your personal access token now. You won’t be able to see it again!","settings.data_input":"Data input","settings.forms.edit_settings":"Edit settings","settings.forms.setting_saved":"Settings saved","settings.forms.new_token":"New token","settings.forms.some_translation_are_missing":"Some translations are missing using the browser preferred language?","settings.forms.help_translate_2fauth":"Help translate 2FAuth","settings.forms.language.label":"Language","settings.forms.language.help":"Language used to translate the 2FAuth user interface. Named languages are complete, set the one of your choice to override your browser preference.","settings.forms.show_otp_as_dot.label":'Show generated OTP as dot',"settings.forms.show_otp_as_dot.help":"Replace generated password caracters with *** to ensure confidentiality. Do not affect the copy/paste feature","settings.forms.reveal_dotted_otp.label":'Reveal obscured OTP',"settings.forms.reveal_dotted_otp.help":"Let the ability to temporarily reveal Dot-Obscured passwords","settings.forms.close_otp_on_copy.label":'Close OTP after copy',"settings.forms.close_otp_on_copy.help":"Clicking a generated password to copy it automatically hide it from the screen","settings.forms.copy_otp_on_display.label":'Copy OTP on display',"settings.forms.copy_otp_on_display.help":'Automatically copy a generated password right after it appears on screen. Due to browsers limitations, only the first TOTP password will be copied, not the rotating ones',"settings.forms.use_basic_qrcode_reader.label":"Use basic QR code reader","settings.forms.use_basic_qrcode_reader.help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader","settings.forms.display_mode.label":"Display mode","settings.forms.display_mode.help":"Choose whether you want accounts to be displayed as a list or as a grid","settings.forms.password_format.label":"Password formatting","settings.forms.password_format.help":"Change how the passwords are displayed by grouping digits to ease readability and memorization","settings.forms.pair":"by Pair","settings.forms.pair_legend":"Group digits two by two","settings.forms.trio_legend":"Group digits three by three","settings.forms.half_legend":"Split digits into two equals groups","settings.forms.trio":"by Trio","settings.forms.half":"by Half","settings.forms.grid":"Grid","settings.forms.list":"List","settings.forms.theme.label":"Theme","settings.forms.theme.help":"Force a specific theme or apply the theme defined in your system/browser preferences","settings.forms.light":"Light","settings.forms.dark":"Dark","settings.forms.automatic":"Auto","settings.forms.show_accounts_icons.label":"Show icons","settings.forms.show_accounts_icons.help":"Show icons accounts in the main view","settings.forms.get_official_icons.label":"Get official icons","settings.forms.get_official_icons.help":"(Try to) Get the official icon of the 2FA issuer when adding an account","settings.forms.auto_lock.label":"Auto lock","settings.forms.auto_lock.help":"Log out the user automatically in case of inactivity. Has no effect when authentication is handled by a proxy and no custom logout url is specified.","settings.forms.use_encryption.label":"Protect sensible data","settings.forms.use_encryption.help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key.","settings.forms.default_group.label":"Default group","settings.forms.default_group.help":"The group to which the newly created accounts are associated","settings.forms.useDirectCapture.label":"Direct input","settings.forms.useDirectCapture.help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode","settings.forms.defaultCaptureMode.label":"Default input mode","settings.forms.defaultCaptureMode.help":"Default input mode used when the Direct input option is On","settings.forms.remember_active_group.label":"Remember group filter","settings.forms.remember_active_group.help":"Save the last group filter applied and restore it on your next visit","settings.forms.disable_registration.label":"Disable registration","settings.forms.disable_registration.help":"Prevent new user registration. This affects SSO as well, so new SSO users won't be able to sign on","settings.forms.enable_sso.label":"Enable Single Sign-On (SSO)","settings.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","settings.forms.otp_generation.label":"Show Password","settings.forms.otp_generation.help":'Set how and when OTPs are displayed.
',"settings.forms.otp_generation_on_request":"After a click/tap","settings.forms.otp_generation_on_request_legend":"Alone, in its own view","settings.forms.otp_generation_on_request_title":"Click an account to get a password in a dedicated view","settings.forms.otp_generation_on_home":"Constantly","settings.forms.otp_generation_on_home_legend":"All of them, on home","settings.forms.otp_generation_on_home_title":"Show all passwords in the main view, without doing anything","settings.forms.never":"Never","settings.forms.on_otp_copy":"On security code copy","settings.forms.1_minutes":"After 1 minute","settings.forms.5_minutes":"After 5 minutes","settings.forms.10_minutes":"After 10 minutes","settings.forms.15_minutes":"After 15 minutes","settings.forms.30_minutes":"After 30 minutes","settings.forms.1_hour":"After 1 hour","settings.forms.1_day":"After 1 day","settings.forms.livescan":"QR code livescan","settings.forms.upload":"QR code upload","settings.forms.advanced_form":"Advanced form","titles.404":"Item not found","titles.start":"New account","titles.capture":"Flash QR","titles.accounts":"Accounts","titles.createAccount":"Create account","titles.importAccounts":"Import accounts","titles.editAccount":"Account edit","titles.showQRcode":"Account as QR code","titles.groups":"Groups","titles.createGroup":"Create group","titles.editGroup":"Group edit","titles.settings.options":"Options","titles.settings.account":"User account","titles.settings.oauth.tokens":"OAuth tokens","titles.settings.oauth.generatePAT":"New personal token","titles.settings.webauthn.editCredential":"Device edit","titles.settings.webauthn.devices":"WebAuthn devices","titles.login":"Login","titles.register":"Register","titles.autolock":"Auto lock","titles.password.request":"Reset password","titles.password.reset":"New password","titles.webauthn.lost":"Account recovery","titles.webauthn.recover":"Register a new device","titles.flooded":"Flood","titles.genericError":"Error","titles.about":"About","twofaccounts.service":"Service","twofaccounts.account":"Account","twofaccounts.accounts":"Accounts","twofaccounts.icon":"Icon","twofaccounts.icon_for_account_x_at_service_y":"Icon of the :account account at :service","twofaccounts.icon_to_illustrate_the_account":"Icon that illustrates the account","twofaccounts.remove_icon":"Remove icon","twofaccounts.no_account_here":"No 2FA here!","twofaccounts.add_first_account":"Pick a method and add your first account","twofaccounts.use_full_form":"Or use the full form","twofaccounts.add_one":"Add one","twofaccounts.show_qrcode":"Show QR code","twofaccounts.no_service":"- no service -","twofaccounts.account_created":"Account successfully created","twofaccounts.account_updated":"Account successfully updated","twofaccounts.accounts_deleted":"Account(s) successfully deleted","twofaccounts.accounts_moved":"Account(s) successfully moved","twofaccounts.export_selected_to_json":"Download a json export of selected accounts","twofaccounts.reveal":"reveal","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"John DOE","twofaccounts.forms.new_account":"New account","twofaccounts.forms.edit_account":"Edit account","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Scan a QR code","twofaccounts.forms.upload_qrcode":"Upload a QR code","twofaccounts.forms.use_advanced_form":"Use the advanced form","twofaccounts.forms.prefill_using_qrcode":"Prefill using a QR Code","twofaccounts.forms.use_qrcode.val":"Use a qrcode","twofaccounts.forms.use_qrcode.title":"Use a QR code to fill the form magically","twofaccounts.forms.unlock.val":"Unlock","twofaccounts.forms.unlock.title":"Unlock it (at your own risk)","twofaccounts.forms.lock.val":"Lock","twofaccounts.forms.lock.title":"Lock it","twofaccounts.forms.choose_image":"Upload","twofaccounts.forms.i_m_lucky":"Try my luck","twofaccounts.forms.i_m_lucky_legend":'The "Try my luck" button try to get the official icon of the given service. Enter actual service name without ".xyz" extension and try to avoid typo. (beta feature)',"twofaccounts.forms.test":"Test","twofaccounts.forms.secret.label":"Secret","twofaccounts.forms.secret.help":"The key used to generate your security codes","twofaccounts.forms.plain_text":"Plain text","twofaccounts.forms.otp_type.label":'Choose the type of OTP to create',"twofaccounts.forms.otp_type.help":"Time-based OTP or HMAC-based OTP or Steam OTP","twofaccounts.forms.digits.label":"Digits","twofaccounts.forms.digits.help":"The number of digits of the generated security codes","twofaccounts.forms.algorithm.label":"Algorithm","twofaccounts.forms.algorithm.help":"The algorithm used to secure your security codes","twofaccounts.forms.period.label":"Period","twofaccounts.forms.period.placeholder":"Default is 30","twofaccounts.forms.period.help":"The period of validity of the generated security codes in second","twofaccounts.forms.counter.label":"Counter","twofaccounts.forms.counter.placeholder":"Default is 0","twofaccounts.forms.counter.help":"The initial counter value","twofaccounts.forms.counter.help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing","twofaccounts.forms.image.label":"Image","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"The url of an external image to use as the account icon","twofaccounts.forms.options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","twofaccounts.forms.alternative_methods":"Alternative methods","twofaccounts.stream.live_scan_cant_start":"Live scan can't start :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth does not have permission to access your camera","twofaccounts.stream.need_grant_permission.solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission.","twofaccounts.stream.need_grant_permission.click_camera_icon":"It is usually done by clicking on a slashed camera icon in or next to the browser's address bar","twofaccounts.stream.not_readable.reason":"Fail to load scanner","twofaccounts.stream.not_readable.solution":"Is the camera already in use? Ensure that no other app use your camera and try again","twofaccounts.stream.no_cam_on_device.reason":"No camera on this device","twofaccounts.stream.no_cam_on_device.solution":"Maybe you forgot to plug in your webcam","twofaccounts.stream.secured_context_required.reason":"Secure context required","twofaccounts.stream.secured_context_required.solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost","twofaccounts.stream.https_required":"HTTPS required for camera streaming","twofaccounts.stream.camera_not_suitable.reason":"Installed cameras are not suitable","twofaccounts.stream.camera_not_suitable.solution":"Please use another device/camera","twofaccounts.stream.stream_api_not_supported.reason":"Stream API is not supported in this browser","twofaccounts.stream.stream_api_not_supported.solution":"You should use a modern browser","twofaccounts.confirm.delete":"Are you sure you want to delete this account?","twofaccounts.confirm.cancel":"Changes will be lost. Are you sure?","twofaccounts.confirm.discard":"Are you sure you want to discard this account?","twofaccounts.confirm.discard_all":"Are you sure you want to discard all accounts?","twofaccounts.confirm.discard_duplicates":"Are you sure you want to discard all duplicates?","twofaccounts.import.import":"Import","twofaccounts.import.to_import":"Import","twofaccounts.import.import_legend":"2FAuth can import data from various 2FA apps.","twofaccounts.import.import_legend_afterpart":"Use the Export feature of these apps to get a migration resource like a QR code or a JSON file then load it here.","twofaccounts.import.upload":"Upload","twofaccounts.import.scan":"Scan","twofaccounts.import.supported_formats_for_qrcode_upload":"Accepted: jpg, jpeg, png, bmp, gif, svg, or webp","twofaccounts.import.supported_formats_for_file_upload":"Accepted: Plain text, json, 2fas","twofaccounts.import.supported_migration_formats":"Supported migration formats","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Text file","twofaccounts.import.plain_text":"Plain text","twofaccounts.import.parsing_data":"Parsing data...","twofaccounts.import.issuer":"Issuer","twofaccounts.import.imported":"Imported","twofaccounts.import.failure":"Failure","twofaccounts.import.x_valid_accounts_found":":count valid accounts found","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"The following 2FA accounts were found in the migration resource. So far none of them have been added to 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Use the available buttons to permanently save them to your 2FA collection or discard them.","twofaccounts.import.import_all":"Import all","twofaccounts.import.import_this_account":"Import this account","twofaccounts.import.discard_all":"Discard all","twofaccounts.import.discard_duplicates":"Discard duplicates","twofaccounts.import.discard_this_account":"Discard this account","twofaccounts.import.generate_a_test_password":"Generate a test pasword","twofaccounts.import.possible_duplicate":"An account with the exact same data already exists","twofaccounts.import.invalid_account":"- invalid account -","twofaccounts.import.invalid_service":"- invalid service -","twofaccounts.import.do_not_set_password_or_encryption":"Do NOT enable Password protection or Encryption when you export data from a 2FA app otherwise 2FAuth will not be able to decipher them.","validation.accepted":"The :attribute must be accepted.","validation.accepted_if":"The :attribute must be accepted when :other is :value.","validation.active_url":"The :attribute is not a valid URL.","validation.after":"The :attribute must be a date after :date.","validation.after_or_equal":"The :attribute must be a date after or equal to :date.","validation.alpha":"The :attribute must only contain letters.","validation.alpha_dash":"The :attribute must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The :attribute must only contain letters and numbers.","validation.array":"The :attribute must be an array.","validation.before":"The :attribute must be a date before :date.","validation.before_or_equal":"The :attribute must be a date before or equal to :date.","validation.between.array":"The :attribute must have between :min and :max items.","validation.between.file":"The :attribute must be between :min and :max kilobytes.","validation.between.numeric":"The :attribute must be between :min and :max.","validation.between.string":"The :attribute must be between :min and :max characters.","validation.boolean":"The :attribute field must be true or false.","validation.confirmed":"The :attribute confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The :attribute is not a valid date.","validation.date_equals":"The :attribute must be a date equal to :date.","validation.date_format":"The :attribute does not match the format :format.","validation.declined":"The :attribute must be declined.","validation.declined_if":"The :attribute must be declined when :other is :value.","validation.different":"The :attribute and :other must be different.","validation.digits":"The :attribute must be :digits digits.","validation.digits_between":"The :attribute must be between :min and :max digits.","validation.dimensions":"The :attribute has invalid image dimensions.","validation.distinct":"The :attribute field has a duplicate value.","validation.doesnt_end_with":"The :attribute may not end with one of the following: :values.","validation.doesnt_start_with":"The :attribute may not start with one of the following: :values.","validation.email":"The :attribute must be a valid email address.","validation.ends_with":"The :attribute must end with one of the following: :values.","validation.enum":"The selected :attribute is invalid.","validation.exists":"The selected :attribute is invalid.","validation.file":"The :attribute must be a file.","validation.filled":"The :attribute field must have a value.","validation.gt.array":"The :attribute must have more than :value items.","validation.gt.file":"The :attribute must be greater than :value kilobytes.","validation.gt.numeric":"The :attribute must be greater than :value.","validation.gt.string":"The :attribute must be greater than :value characters.","validation.gte.array":"The :attribute must have :value items or more.","validation.gte.file":"The :attribute must be greater than or equal to :value kilobytes.","validation.gte.numeric":"The :attribute must be greater than or equal to :value.","validation.gte.string":"The :attribute must be greater than or equal to :value characters.","validation.image":"The :attribute must be an image.","validation.in":"The selected :attribute is invalid.","validation.in_array":"The :attribute field does not exist in :other.","validation.integer":"The :attribute must be an integer.","validation.ip":"The :attribute must be a valid IP address.","validation.ipv4":"The :attribute must be a valid IPv4 address.","validation.ipv6":"The :attribute must be a valid IPv6 address.","validation.json":"The :attribute must be a valid JSON string.","validation.lt.array":"The :attribute must have less than :value items.","validation.lt.file":"The :attribute must be less than :value kilobytes.","validation.lt.numeric":"The :attribute must be less than :value.","validation.lt.string":"The :attribute must be less than :value characters.","validation.lte.array":"The :attribute must not have more than :value items.","validation.lte.file":"The :attribute must be less than or equal to :value kilobytes.","validation.lte.numeric":"The :attribute must be less than or equal to :value.","validation.lte.string":"The :attribute must be less than or equal to :value characters.","validation.mac_address":"The :attribute must be a valid MAC address.","validation.max.array":"The :attribute must not have more than :max items.","validation.max.file":"The :attribute must not be greater than :max kilobytes.","validation.max.numeric":"The :attribute must not be greater than :max.","validation.max.string":"The :attribute must not be greater than :max characters.","validation.max_digits":"The :attribute must not have more than :max digits.","validation.mimes":"The :attribute must be a file of type: :values.","validation.mimetypes":"The :attribute must be a file of type: :values.","validation.min.array":"The :attribute must have at least :min items.","validation.min.file":"The :attribute must be at least :min kilobytes.","validation.min.numeric":"The :attribute must be at least :min.","validation.min.string":"The :attribute must be at least :min characters.","validation.min_digits":"The :attribute must have at least :min digits.","validation.multiple_of":"The :attribute must be a multiple of :value.","validation.not_in":"The selected :attribute is invalid.","validation.not_regex":"The :attribute format is invalid.","validation.numeric":"The :attribute must be a number.","validation.password.letters":"The :attribute must contain at least one letter.","validation.password.mixed":"The :attribute must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The :attribute must contain at least one number.","validation.password.symbols":"The :attribute must contain at least one symbol.","validation.password.uncompromised":"The given :attribute has appeared in a data leak. Please choose a different :attribute.","validation.present":"The :attribute field must be present.","validation.prohibited":"The :attribute field is prohibited.","validation.prohibited_if":"The :attribute field is prohibited when :other is :value.","validation.prohibited_unless":"The :attribute field is prohibited unless :other is in :values.","validation.prohibits":"The :attribute field prohibits :other from being present.","validation.regex":"The :attribute format is invalid.","validation.required":"The :attribute field is required.","validation.required_array_keys":"The :attribute field must contain entries for: :values.","validation.required_if":"The :attribute field is required when :other is :value.","validation.required_if_accepted":"The :attribute field is required when :other is accepted.","validation.required_unless":"The :attribute field is required unless :other is in :values.","validation.required_with":"The :attribute field is required when :values is present.","validation.required_with_all":"The :attribute field is required when :values are present.","validation.required_without":"The :attribute field is required when :values is not present.","validation.required_without_all":"The :attribute field is required when none of :values are present.","validation.same":"The :attribute and :other must match.","validation.size.array":"The :attribute must contain :size items.","validation.size.file":"The :attribute must be :size kilobytes.","validation.size.numeric":"The :attribute must be :size.","validation.size.string":"The :attribute must be :size characters.","validation.starts_with":"The :attribute must start with one of the following: :values.","validation.string":"The :attribute must be a string.","validation.timezone":"The :attribute must be a valid timezone.","validation.unique":"The :attribute has already been taken.","validation.uploaded":"The :attribute failed to upload.","validation.url":"The :attribute must be a valid URL.","validation.uuid":"The :attribute must be a valid UUID.","validation.single":"When using :attribute it must be the only parameter in this request body","validation.onlyCustomOtpWithUri":"The uri parameter must be provided alone or only in combination with the 'custom_otp' parameter","validation.custom.icon.image":"Supported format are jpeg, png, bmp, gif, svg, or webp.","validation.custom.qrcode.image":"Supported format are jpeg, png, bmp, gif, svg, or webp.","validation.custom.uri.regex":"The :attribute is not a valid otpauth uri.","validation.custom.otp_type.in":"The :attribute is not supported.","validation.custom.email.exists":"No account found using this email.","validation.custom.secret.isBase32Encoded":"The :attribute must be a base32 encoded string.","validation.custom.account.regex":"The :attribute must not contain colon.","validation.custom.service.regex":"The :attribute must not contain colon.","validation.custom.label.required":"The uri must have a label.","validation.custom.ids.regex":"IDs must be comma separated, without trailing comma."};export{e as default}; diff --git a/public/build/assets/php_ru-27c574f1.js b/public/build/assets/php_ru-27c574f1.js new file mode 100644 index 00000000..a2dc4d55 --- /dev/null +++ b/public/build/assets/php_ru-27c574f1.js @@ -0,0 +1,4 @@ +/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"auth.failed":"Неверное имя пользователя или пароль.","auth.password":"Некорректный пароль.","auth.throttle":"Слишком много попыток входа. Пожалуйста, попробуйте еще раз через :seconds секунд.","auth.sign_out":"Выйти","auth.sign_in":"Войти","auth.sign_in_using":"Войти с помощью","auth.or_continue_with":"Вы также можете продолжить с:","auth.sign_in_using_security_device":"Войти, используя устройство безопасности","auth.login_and_password":"имя пользователя и пароль","auth.register":"Регистрация","auth.welcome_to_2fauth":"Добро пожаловать в 2FAuth","auth.autolock_triggered":"Сработала автоматическая блокировка","auth.autolock_triggered_punchline":"Произошло событие которое, отслеживалось функцией автоблокировки. Вы были автоматически отключены.","auth.already_authenticated":"Вы уже аутентифицированы","auth.authentication":"Аутентификация","auth.maybe_later":"Не сейчас","auth.user_account_controlled_by_proxy":"Учётная запись создана через прокси-аунтификацию.
Управляйте учётной записью на уровне прокси.","auth.auth_handled_by_proxy":"Аутентификация осуществляется на обратном прокси, настройки ниже не доступны.
Управление аутентификацией осуществляется на прокси.","auth.confirm.logout":"Вы уверены, что хотите выйти?","auth.confirm.revoke_device":"Вы уверены, что хотите удалить это устройство?","auth.confirm.delete_account":"Вы уверены, что хотите удалить свою учетную запись?","auth.webauthn.security_device":"устройство безопасности","auth.webauthn.security_devices":"Устройства безопасности","auth.webauthn.security_devices_legend":"Устройства аутентификации, которые можно использовать для входа в систему 2FAuth, такие как ключи безопасности (например, Yubikey) или смартфоны с биометрическими возможностями (например, Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`Вы можете повысить безопасность учетной записи 2FAuth, включив аутентификацию WebAuthn.

+ WebAuthn позволяет использовать доверенные устройства (например, Yubikeys или смартфоны с биометрическими возможностями) для безопасного входа.`,"auth.webauthn.use_security_device_to_sign_in":"Будьте готовы пройти аутентификацию с помощью (одного из) ваших устройств безопасности. Вставьте ключ, снимите маску или перчатки и т.д.","auth.webauthn.lost_your_device":"Потеряли устройство?","auth.webauthn.recover_your_account":"Восстановите доступ к учётной записи","auth.webauthn.account_recovery":"Восстановление доступа к учётной записи","auth.webauthn.recovery_punchline":"2FAuth отправит вам ссылку для восстановления на этот адрес электронной почты. Нажмите на ссылку в полученном письме и следуйте инструкциям.

Убедитесь, что вы откроете письмо на вашем полностью проверенном устройстве.","auth.webauthn.send_recovery_link":"Отправить ссылку для восстановления","auth.webauthn.account_recovery_email_sent":"Письмо для восстановления доступа к учётной записи отправлено!","auth.webauthn.disable_all_security_devices":"Отключить все устройства безопасности","auth.webauthn.disable_all_security_devices_help":"Все ваши устройства безопасности будут отозваны. Используйте эту опцию, если вы потеряли их или их безопасность была скомпрометирована.","auth.webauthn.register_a_new_device":"Зарегистрировать новое устройство","auth.webauthn.register_a_device":"Зарегистрировать устройство","auth.webauthn.device_successfully_registered":"Устройство успешно зарегистрировано","auth.webauthn.device_revoked":"Устройство успешно деактивировано","auth.webauthn.revoking_a_device_is_permanent":"Удаление устройства необратимо","auth.webauthn.recover_account_instructions":"Чтобы восстановить вашу учетную запись, 2FAuth сбрасывает некоторые настройки Webauthn, чтобы вы могли войти с помощью электронной почты и пароля.","auth.webauthn.invalid_recovery_token":"Неверный код восстановления","auth.webauthn.webauthn_login_disabled":"Webauthn вход отключен","auth.webauthn.invalid_reset_token":"Этот токен сброса недействителен.","auth.webauthn.rename_device":"Переименовать устройство","auth.webauthn.my_device":"Моё устройство","auth.webauthn.unknown_device":"Неизвестное устройство","auth.webauthn.use_webauthn_only.label":"Использовать только WebAuthn","auth.webauthn.use_webauthn_only.help":`Сделать WebAuthn единственным авторизованным методом входа в вашу учетную запись 2FAuth. Это рекомендуемая настройка, позволяющая воспользоваться преимуществами повышенной безопасности WebAuthn.

+ В случае утери устройства вы сможете восстановить свою учетную запись, сбросив эту опцию и войдя в систему, используя свой адрес электронной почты и пароль.

+ Внимание! Форма электронной почты и пароля остается доступной, несмотря на то, что эта опция включена, но она всегда будет возвращать ответ «Ошибка аутентификации».`,"auth.webauthn.need_a_security_device_to_enable_options":"Настройте хотя бы одно устройство для включения следующих параметров","auth.forms.name":"Имя","auth.forms.login":"Вход","auth.forms.webauthn_login":"WebAuthn вход","auth.forms.email":"Email","auth.forms.password":"Пароль","auth.forms.reveal_password":"Показать пароль","auth.forms.hide_password":"Скрыть пароль","auth.forms.confirm_password":"Подтверждение пароля","auth.forms.new_password":"Новый пароль","auth.forms.confirm_new_password":"Подтвердить новый пароль","auth.forms.dont_have_account_yet":"Еще нет учетной записи?","auth.forms.already_register":"Уже зарегистрированы?","auth.forms.authentication_failed":"Ошибка аутентификации","auth.forms.forgot_your_password":"Забыли пароль?","auth.forms.request_password_reset":"Восстановить","auth.forms.reset_your_password":"Восстановить пароль","auth.forms.reset_password":"Восстановить пароль","auth.forms.disabled_in_demo":"Функция отключена в демонастрационном режиме","auth.forms.current_password.label":"Текущий пароль","auth.forms.current_password.help":"Введите ваш текущий пароль для подтверждения, что это действительно вы","auth.forms.change_password":"Изменить пароль","auth.forms.send_password_reset_link":"Отправить ссылку для восстановления пароля","auth.forms.password_successfully_changed":"Пароль успешно изменен","auth.forms.edit_account":"Редактировать учётную запись","auth.forms.profile_saved":"Профиль успешно обновлен!","auth.forms.welcome_to_demo_app_use_those_credentials":"Добро пожаловать в демонстрационный режим 2FAuth.

Вы можете подключиться используя email адрес demo@2fauth.app и пароль demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Добро пожаловать в тестовое окружение 2FAuth.

Используйте email адрес testing@2fauth.app и пароль password","auth.forms.register_punchline":"Добро пожаловать в 2FAuth.
Вам необходима учётная запись, чтобы продолжить, пожалуйста, зарегистрируйте себя.","auth.forms.reset_punchline":"2FAuth вышлет вам ссылку для сброса пароля на этот адрес. Нажмите на ссылку в полученном письме, чтобы установить новый пароль.","auth.forms.name_this_device":"Назвать это устройство","auth.forms.delete_account":"Удалить аккаунт","auth.forms.delete_your_account":"Удалить учетную запись","auth.forms.delete_your_account_and_reset_all_data":"Ваша учетная запись пользователя будет удалена вместе со всеми вашими данными 2FA.
Это действие невозможно отменить.","auth.forms.reset_your_password_to_delete_your_account":"Если вы всегда использовали SSO для входа, выйдите из системы, а затем воспользуйтесь функцией сброса пароля, чтобы получить пароль и заполнить эту форму.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Удаление вашей учетной записи 2FAuth не влияет на вашу внешнюю учетную запись SSO.","auth.forms.user_account_successfully_deleted":"Аккаунт успешно удален","auth.forms.has_lower_case":"маленькие буквы","auth.forms.has_upper_case":"заглавные буквы","auth.forms.has_special_char":"специальный символы","auth.forms.has_number":"цифры","auth.forms.is_long_enough":"Минимум 8 символов","auth.forms.mandatory_rules":"Обязательно","auth.forms.optional_rules_you_should_follow":"Рекомендуется (настоятельно)","auth.forms.caps_lock_is_on":"Caps lock включен","commons.cancel":"Отмена","commons.update":"Обновить","commons.copy":"Скопировать","commons.copy_to_clipboard":"Скопировать в буфер обмена","commons.copied_to_clipboard":"Скопировано в буфер обмена","commons.profile":"Профиль","commons.edit":"Редактировать","commons.delete":"Удалить","commons.disable":"Выключить","commons.enable":"Включить","commons.create":"Создать","commons.save":"Сохранить","commons.close":"Закрыть","commons.clear":"Очистить","commons.clear_search":"Очистить поиск","commons.demo_do_not_post_sensitive_data":"Это демонстрационное приложение, не размещайте конфиденциальные данные","commons.testing_do_not_post_sensitive_data":"Это тестовое приложение, не оставляйте конфиденциальные данные","commons.selected":"выбрано","commons.name":"Имя","commons.manage":"Управление","commons.done":"Готово","commons.new":"Новый","commons.back":"Назад","commons.move":"Переместить","commons.export":"Экспорт","commons.all":"Все","commons.select_all":"Выбрать все","commons.clear_selection":"Очистить выделение","commons.sort_descending":"По убыванию","commons.sort_ascending":"По возрастанию","commons.rename":"Переименовать","commons.new_name":"Новое имя","commons.options":"Настройки","commons.reload":"Обновить","commons.refresh":"Обновить","commons.data_refreshed_to_reflect_server_changes":"Данные обновлены, чтобы отразить изменения со стороны сервера","commons.generate":"Генерировать","commons.generating_otp":"Генерация OTP","commons.open_in_browser":"Открыть в браузере","commons.continue":"Продолжить","commons.discard":"Отменить","commons.about":"О программе","commons.usefull_links":"Полезные ссылки","commons.environment":"Окружение","commons.credits":"Авторы","commons.2fauth_teaser":"Веб-приложение для управления двухфакторной аутентификацией (2FA) учетных записей и генерации кодов безопасности","commons.made_with":"Сделано с использованием","commons.ui_icons_by":"Иконки пользовательского интерфейса","commons.logos_by":"Логотипы","commons.search":"Поиск","commons.resources":"Ресурсы","commons.check_for_update":"Проверить обновления","commons.check_for_update_help":"Автоматически проверять (раз в неделю) и предупреждать о выходе новой версии 2FAuth на Github","commons.you_are_up_to_date":"Установленна последная версия","commons.2fauth_description":"Веб-приложение для управления двухфакторной аутентификацией (2FA) учетных записей и генерации кодов безопасности","commons.image_of_qrcode_to_scan":"Изображение QR-кода для сканирования","commons.file":"Файл","commons.or":"или","commons.close_the_x_page":"Закрыть страницу :pagetitle","commons.submit":"Отправить","commons.default":"По умолчанию","commons.back_to_home":"Вернуться на главную","commons.nothing":"ничего","errors.resource_not_found":"Ресурс не найден","errors.error_occured":"Произошла ошибка:","errors.refresh":"Обновить","errors.no_valid_otp":"В этом QR-коде нет допустимых OTP ресурсов","errors.something_wrong_with_server":"Что-то не так с вашим сервером","errors.Unable_to_decrypt_uri":"Не удалось расшифровать uri","errors.not_a_supported_otp_type":"Этот формат OTP в настоящее время не поддерживается","errors.cannot_create_otp_without_secret":"Невозможно создать OTP без секретного ключа","errors.data_of_qrcode_is_not_valid_URI":"Данные этого QR-кода не являются допустимым OTP Auth URI. QR-код содержит:","errors.wrong_current_password":"Неверный текущий пароль, ничего не было изменено","errors.error_during_encryption":"Сбой шифрования, ваша база данных остается незащищенной.","errors.error_during_decryption":"Сбой расшифровки, ваша база данных по-прежнему защищена. В основном, это вызвано проблемой целостности шифрованных данных для одной или нескольких учётных записей.","errors.qrcode_cannot_be_read":"Этот QR-код нечитаем","errors.too_many_ids":"в параметр запроса было включено слишком много идентификаторов, разрешено максимум 100","errors.delete_user_setting_only":"Могут быть удалены только настройки, созданные пользователем","errors.indecipherable":"*неразборчиво*","errors.cannot_decipher_secret":"Секретный ключ не может быть расшифрован. В основном это может быть вызвано неправильным APP_KEY в .env файле 2Fauth или поврежденными данными, хранящимися в базе данных.","errors.https_required":"Требуется HTTPS контекст","errors.browser_does_not_support_webauthn":"Ваше устройство не поддерживает webauth. Повторите попытку позже, используя более современный браузер","errors.aborted_by_user":"Прервано пользователем","errors.security_device_already_registered":"Устройство уже зарегистрировано","errors.not_allowed_operation":"Операция не разрешена","errors.no_authenticator_support_specified_algorithms":"Ни один аутентификатор не поддерживает указанные алгоритмы","errors.authenticator_missing_discoverable_credential_support":"В аутентификаторе отсутствует обнаруживаемая поддержка учетных данных","errors.authenticator_missing_user_verification_support":"В аутентификаторе отсутствует поддержка проверки пользователя","errors.unknown_error":"Неизвестная ошибка","errors.security_error_check_rpid":"Ошибка безопасности
Проверьте ваш переменную окружения WEBAUTHN_ID","errors.2fauth_has_not_a_valid_domain":"Домен 2FAuth не является допустимым доменом","errors.user_id_not_between_1_64":"Идентификатор пользователя не был от 1 до 64 символов","errors.no_entry_was_of_type_public_key":'Запись типа "Публичный ключ" не найдена',"errors.unsupported_with_reverseproxy":"Не применимо при использовании прокси-аутентификации","errors.user_deletion_failed":"Не удалось удалить учетную запись пользователя, данные не были удалены","errors.auth_proxy_failed":"Прокси-аунтификация не удалась","errors.auth_proxy_failed_legend":"2Fauth настроен на работу за прокси-аутентификацией, но ваш прокси не возвращает ожидаемый заголовок. Проверьте настройки и повторите попытку.","errors.invalid_x_migration":"Неверные или нечитаемые данные :appname","errors.invalid_2fa_data":"Неверные данные 2FA","errors.unsupported_migration":"Данные не соответствуют ни одному поддерживаемому формату","errors.unsupported_otp_type":"Неподдерживаемый тип OTP","errors.encrypted_migration":"Нечитаемо, данные кажутся зашифрованными","errors.no_logo_found_for_x":"Нет логотипа для :service","errors.file_upload_failed":"Не удалось загрузить файл","errors.unauthorized":"Авторизация не выполнена","errors.unauthorized_legend":"У вас нет разрешения на просмотр этого ресурса или выполнение этого действия","errors.cannot_delete_the_only_admin":"Невозможно удалить единственную учетную запись администратора","errors.error_during_data_fetching":"💀 Что-то пошло не так во время получения данных","errors.check_failed_try_later":"Проверка не удалась, повторите попытку позже","errors.sso_disabled":"SSO отключено","errors.sso_bad_provider_setup":"Этот SSO провайдер не полностью настроен в вашем .env файле","errors.sso_failed":"Аутентификация по SSO отклонена","errors.sso_no_register":"Регистрация отключена","errors.sso_email_already_used":"Учетная запись с таким же адресом электронной почты уже существует, но не соответствует внешнему идентификатору учетной записи. Не используйте SSO, если вы уже зарегистрированы на 2FAuth с этим email.","errors.account_managed_by_external_provider":"Учетная запись управляется внешним провайдером","groups.groups":"Группы","groups.create_group":"Создать новую группу","groups.show_group_selector":"Показать выбор групп","groups.hide_group_selector":"Скрыть выбор группы","groups.select_accounts_to_show":"Выберите группу учётных записей для отображения","groups.manage_groups":"Управление группами","groups.active_group":"Активные группы","groups.manage_groups_legend":"Вы можете создать группы для организации ваших учетных записей. Все учётные записи остаются видимыми в служебной группе 'Все', независимо от группы, к которой они принадлежат.","groups.deleting_group_does_not_delete_accounts":"Удаление группы не удаляет учетные записи","groups.move_selected_to":"Переместить выбранные в","groups.move_selected_to_group":"Переместить выделенное в группу","groups.no_group":"Без группы","groups.change_group":"Изменить группу","groups.group_successfully_created":"Группа успешно создана","groups.group_name_saved":"Название группы сохранено","groups.group_successfully_deleted":"Группа успешно удалена","groups.forms.new_group":"Новая группа","groups.forms.new_name":"Новое имя","groups.forms.rename_group":"Переименовать группу","groups.confirm.delete":"Вы действительно хотите удалить эту группу?","languages.browser_preference":"Настройки браузера","languages.en":"English (Английский)","languages.fr":"Français (Французский)","languages.de":"Deutsch (Немецкий)","languages.es":"Español (Испанский)","languages.zh":"简体中文 (Китайский упрощенный)","languages.ru":"Русский (Русский)","languages.bg":"Български (Болгарский)","pagination.previous":"« Назад","pagination.next":"Вперёд »","passwords.reset":"Ваш пароль был сброшен!","passwords.sent":"Ссылка на сброс пароля была отправлена!","passwords.throttled":"Пожалуйста, подождите перед повторной попыткой.","passwords.token":"Ошибочный код сброса пароля.","passwords.user":"Не удалось найти пользователя с указанным электронным адресом.","passwords.password":'Пароль должен содержать не менее восьми символов и совпадать с паролем в поле "подтверждение пароля".',"settings.settings":"Настройки","settings.preferences":"Настройки","settings.account":"Учётная запись","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Токены","settings.options":"Опции","settings.user_preferences":"Настройки пользователя","settings.admin_settings":"Настройки администратора","settings.confirm.revoke":"Вы уверены, что хотите отозвать этот токен?","settings.administration":"Администрирование","settings.administration_legend":"Хотя предыдущие настройки являются пользовательскими настройками (каждый пользователь может установить свои собственные настройки), следующие настройки являются глобальными и применимы ко всем пользователям.","settings.only_an_admin_can_edit_them":"Только администратор может просматривать и редактировать их.","settings.you_are_administrator":"Вы являетесь администратором","settings.account_linked_to_sso_x_provider":"Вы вошли через SSO с помощью учетной записи :provider. Ваша информация не может быть изменена здесь, измените данные в :provider.","settings.general":"Общие","settings.security":"Безопасность","settings.profile":"Профиль","settings.change_password":"Изменить пароль","settings.personal_access_tokens":"Персональные токены доступа","settings.token_legend":"Токены личного доступа позволяют любому приложению аутентифицироваться в API 2Fauth. Вам необходимо указать токен доступа как Bearer токен в HTTP заголовке Authorization запросов от клиентского приложения.","settings.generate_new_token":"Сгенерировать новый токен","settings.revoke":"Отозвать","settings.token_revoked":"Токен успешно отозван","settings.revoking_a_token_is_permanent":"Отзыв токена необратим","settings.make_sure_copy_token":"Убедитесь, что вы скопировали ваш персональный токен доступа прямо сейчас. Вы не сможете увидеть его снова!","settings.data_input":"Ввод данных","settings.forms.edit_settings":"Изменить настройки","settings.forms.setting_saved":"Настройки сохранены","settings.forms.new_token":"Новый токен","settings.forms.some_translation_are_missing":"Некоторые переводы отсутствуют на предпочитаемом языке?","settings.forms.help_translate_2fauth":"Помогите перевести 2FAuth","settings.forms.language.label":"Язык","settings.forms.language.help":"Язык, используемый для пользовательского интерфейса 2FAuth. Именованные языки полны, выберите язык, чтобы переопределить настройки браузера по умолчанию.","settings.forms.show_otp_as_dot.label":'Показать сгенерированный код OTP как точки',"settings.forms.show_otp_as_dot.help":"Заменить сгенерированный код на звёздочки для обеспечения конфиденциальности. Это не повлияет на функцию копирования/вставки","settings.forms.reveal_dotted_otp.label":'Раскрытие скрытых кодов OTP',"settings.forms.reveal_dotted_otp.help":"Разрешить временно раскрывать коды, скрытые звёздочками","settings.forms.close_otp_on_copy.label":'Закрыть OTP после копирования',"settings.forms.close_otp_on_copy.help":"Нажатие на сгенерированный код, чтобы скопировать его, автоматически скроет его с экрана","settings.forms.copy_otp_on_display.label":'Копировать OTP при отображении',"settings.forms.copy_otp_on_display.help":'Автоматически копировать сгенерированный код сразу после его появления на экране. Из-за ограничений браузеров, только первый пароль TOTP будет скопирован, но не последующие',"settings.forms.use_basic_qrcode_reader.label":"Использовать базовый сканер QR-кода","settings.forms.use_basic_qrcode_reader.help":"Если вы столкнулись с проблемами при захвате QR-кодов, это позволяет переключиться на более простой, но более надежный сканер QR-кодов","settings.forms.display_mode.label":"Режим отображения","settings.forms.display_mode.help":"Выберите, хотите ли вы отображать учётные записи как список или как сетку","settings.forms.password_format.label":"Форматирование кодов","settings.forms.password_format.help":"Изменить способ отображения кодов путем группировки цифр, чтобы облегчить чтение и запоминание","settings.forms.pair":"парами","settings.forms.pair_legend":"Группами по 2 цифры","settings.forms.trio_legend":"Группами по 3 цифры","settings.forms.half_legend":"Двумя одинаковыми группами","settings.forms.trio":"тройками","settings.forms.half":"половинками","settings.forms.grid":"Сетка","settings.forms.list":"Список","settings.forms.theme.label":"Тема","settings.forms.theme.help":"Принудительно использовать тему, определенную в настройках вашей системы/браузера","settings.forms.light":"Светлая","settings.forms.dark":"Тёмная","settings.forms.automatic":"Авто","settings.forms.show_accounts_icons.label":"Показать значки","settings.forms.show_accounts_icons.help":"Показывать значки учётных записей на главной","settings.forms.get_official_icons.label":"Получить официальные значки","settings.forms.get_official_icons.help":"(Пробовать) Получать официальную иконку эмитента 2FA при добавлении учётной записи","settings.forms.auto_lock.label":"Автоблокировка","settings.forms.auto_lock.help":"Выйти из учётной записи автоматически в случае неактивности. Не имеет эффекта, когда аутентификация обрабатывается прокси и не задан пользовательский адрес выхода.","settings.forms.use_encryption.label":"Защитить важные данные","settings.forms.use_encryption.help":"Конфиденциальные данные, секреты 2FA и адреса email хранятся в зашифрованном виде в базе данных. Убедитесь, что у вас есть резервная копия значения APP_KEY вашего .env файла (или весь файл) так как оно служит в качестве ключа шифрования. Не существует способа расшифровки данных без этого ключа.","settings.forms.default_group.label":"Группа по умолчанию","settings.forms.default_group.help":"Группа, к которой будут привязаны новые учётные данные","settings.forms.useDirectCapture.label":"Прямой ввод","settings.forms.useDirectCapture.help":"Выберите, хотите ли вы выбрать режим ввода среди имеющихся или вы хотите непосредственно использовать режим ввода по умолчанию","settings.forms.defaultCaptureMode.label":"Режим ввода по умолчанию","settings.forms.defaultCaptureMode.help":"Режим ввода по умолчанию используется при включенной опции прямого ввода","settings.forms.remember_active_group.label":"Запомнить фильтр группы","settings.forms.remember_active_group.help":"Сохранить последний примененный групповой фильтр и восстановить его при следующем посещении","settings.forms.disable_registration.label":"Отключить регистрацию","settings.forms.disable_registration.help":"Запретить регистрацию новых пользователей. Это также влияет на SSO, так что новые пользователи SSO не смогут войти","settings.forms.enable_sso.label":"Включить Single Sign-On (SSO)","settings.forms.enable_sso.help":"Разрешить посетителям аутентифицироваться с использованием внешнего ID через схему Single Sign-On","settings.forms.otp_generation.label":"Показывать пароль","settings.forms.otp_generation.help":'Установка того, как и когда отображаются OTP .
',"settings.forms.otp_generation_on_request":"После щелчка/касания","settings.forms.otp_generation_on_request_legend":"Один, по-своему","settings.forms.otp_generation_on_request_title":"Щелкните на учётную запись, чтобы получить код в отдельном окне","settings.forms.otp_generation_on_home":"Постоянно","settings.forms.otp_generation_on_home_legend":"Все на домашней странице","settings.forms.otp_generation_on_home_title":"Показать все пароли в главной странице, не делая ничего","settings.forms.never":"Никогда","settings.forms.on_otp_copy":"При копировании кода","settings.forms.1_minutes":"Через 1 минуту","settings.forms.5_minutes":"Через 5 минут","settings.forms.10_minutes":"Через 10 минут","settings.forms.15_minutes":"Через 15 минут","settings.forms.30_minutes":"Через 30 минут","settings.forms.1_hour":"Через 1 час","settings.forms.1_day":"Через 1 день","settings.forms.livescan":"📷 Сфотографировать QR-код","settings.forms.upload":"Загрузить файл с QR-кодом","settings.forms.advanced_form":"Расширенная форма","titles.404":"Элемент не найден","titles.start":"Новая учетная запись","titles.capture":"Отсканируйте QR","titles.accounts":"Учётные записи","titles.createAccount":"Создать учётную запись","titles.importAccounts":"Импорт учётных записей","titles.editAccount":"Редактирование учетной записи","titles.showQRcode":"Учетная запись как QR-код","titles.groups":"Группы","titles.createGroup":"Создать группу","titles.editGroup":"Изменение группы","titles.settings.options":"Настройки","titles.settings.account":"Учетные записи пользователя","titles.settings.oauth.tokens":"OAuth Токены","titles.settings.oauth.generatePAT":"Новый персональный токен","titles.settings.webauthn.editCredential":"Редактирование устройства","titles.settings.webauthn.devices":"Устройства WebAuthn","titles.login":"Вход","titles.register":"Регистрация","titles.autolock":"Автоблокировка","titles.password.request":"Восстановить пароль","titles.password.reset":"Новый пароль","titles.webauthn.lost":"Восстановление доступа к учётной записи","titles.webauthn.recover":"Зарегистрировать новое устройство","titles.flooded":"Слишком много запросов","titles.genericError":"Ошибка","titles.about":"О программе","twofaccounts.service":"Сервис","twofaccounts.account":"Учетная запись","twofaccounts.accounts":"Учётные записи","twofaccounts.icon":"Значок","twofaccounts.icon_for_account_x_at_service_y":"Значок учётной запсии :account для сервиса :service","twofaccounts.icon_to_illustrate_the_account":"Значок который иллюстрирует учетную запись","twofaccounts.remove_icon":"Удалить значок","twofaccounts.no_account_here":"Ни одной учётной записи 2FA не добавлено!","twofaccounts.add_first_account":"Выберите способ и добавьте свою первую учетную запись","twofaccounts.use_full_form":"Или воспользуйтесь полной формой","twofaccounts.add_one":"Добавить один","twofaccounts.show_qrcode":"Показать QR код","twofaccounts.no_service":"- нет сервисов -","twofaccounts.account_created":"Учетная запись успешно создана","twofaccounts.account_updated":"Учётная запись успешно обновлена.","twofaccounts.accounts_deleted":"Учетная запись успешно удалена","twofaccounts.accounts_moved":"Учетная запись успешно перемещена","twofaccounts.export_selected_to_json":"Скачать json экспорт выбранных учетных записей","twofaccounts.reveal":"показать","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"Иван Иванов","twofaccounts.forms.new_account":"Новая учётная запись","twofaccounts.forms.edit_account":"Редактировать учётную запись","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Сканировать QR-код","twofaccounts.forms.upload_qrcode":"Загрузить QR-код","twofaccounts.forms.use_advanced_form":"Использовать расширенную форму","twofaccounts.forms.prefill_using_qrcode":"Презаполнять QR-кодом","twofaccounts.forms.use_qrcode.val":"Использовать QR-код","twofaccounts.forms.use_qrcode.title":"Использовать QR-код для волшебного заполнения формы","twofaccounts.forms.unlock.val":"Разблокировать","twofaccounts.forms.unlock.title":"Разблокировать (под вашу ответственность)","twofaccounts.forms.lock.val":"Заблокировать","twofaccounts.forms.lock.title":"Заблокировать","twofaccounts.forms.choose_image":"Загрузить","twofaccounts.forms.i_m_lucky":"Мне повезёт!","twofaccounts.forms.i_m_lucky_legend":'Кнопка "Мне повезёт!" попытается получить официальную иконку данной службы. Введите фактическое имя службы без расширения ".xyz" и попытайтесь избежать опечаток. (бета-функция)',"twofaccounts.forms.test":"Проверка","twofaccounts.forms.secret.label":"Секрет","twofaccounts.forms.secret.help":"Ключ, используемый для генерации кодов безопасности","twofaccounts.forms.plain_text":"Обычный текст","twofaccounts.forms.otp_type.label":'Выберите тип создаваемого OTP',"twofaccounts.forms.otp_type.help":"OTP на основе времени, OTP на основе HMAC или Steam OTP","twofaccounts.forms.digits.label":"Количество цифр","twofaccounts.forms.digits.help":"Количество цифр в генерируемом коде безопасности","twofaccounts.forms.algorithm.label":"Алгоритм","twofaccounts.forms.algorithm.help":"Алгоритм, используемый для защиты ваших кодов безопасности","twofaccounts.forms.period.label":"Интервал","twofaccounts.forms.period.placeholder":"По умолчанию - 30","twofaccounts.forms.period.help":"Период действия сгенерированных кодов безопасности в секундах","twofaccounts.forms.counter.label":"Счетчик","twofaccounts.forms.counter.placeholder":"По умолчанию - 0","twofaccounts.forms.counter.help":"Начальное значение счетчика","twofaccounts.forms.counter.help_lock":"Редактирование счётчика рискованно, так как вы можете рассинхронизировать учётную запись с сервером службы верификации. Используйте значок блокировки, чтобы включить изменение, но только если вы точно знаете, что вы делаете","twofaccounts.forms.image.label":"Изображение","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"Адрес внешнего изображения для использования в качестве значка учетной записи","twofaccounts.forms.options_help":"Вы можете оставить следующие значения пустыми, если не знаете, как их установить. Наиболее распространенные значения будут применены.","twofaccounts.forms.alternative_methods":"Альтернативные методы","twofaccounts.stream.live_scan_cant_start":"Сканирование в реальном времени не может начаться :(","twofaccounts.stream.need_grant_permission.reason":"У 2FAuth нет разрешения на доступ к вашей камере","twofaccounts.stream.need_grant_permission.solution":"Вам нужно предоставить разрешение для использования камеры вашего устройства. Если вы уже отказались и ваш браузер не запрашивает у вас разрешения снова, обратитесь к документации браузера для выяснения того, как предоставить разрешение.","twofaccounts.stream.need_grant_permission.click_camera_icon":"Обычно это делается нажатием на значок камеры в адресной строке браузера или рядом с ней","twofaccounts.stream.not_readable.reason":"Сбой загрузки сканера","twofaccounts.stream.not_readable.solution":"Камера уже используется? Убедитесь, что другое приложение не использует вашу камеру и попробуйте снова","twofaccounts.stream.no_cam_on_device.reason":"На устройстве нет камеры","twofaccounts.stream.no_cam_on_device.solution":"Может быть, вы забыли подключить веб-камеру","twofaccounts.stream.secured_context_required.reason":"Требуется HTTPS контекст","twofaccounts.stream.secured_context_required.solution":"Для сканирования в реальном времени требуется HTTPS. Если вы запускаете 2FAuth с вашего компьютера, не используйте виртуальный хост, отличный от localhost","twofaccounts.stream.https_required":"Требуется HTTPS для потоковой передачи с камеры","twofaccounts.stream.camera_not_suitable.reason":"Установленные камеры не подходят","twofaccounts.stream.camera_not_suitable.solution":"Пожалуйста, используйте другое устройство/камеру","twofaccounts.stream.stream_api_not_supported.reason":"Steam API не поддерживается в этом браузере","twofaccounts.stream.stream_api_not_supported.solution":"Вам следует использовать современный браузер","twofaccounts.confirm.delete":"Вы уверены, что хотите удалить эту учетную запись?","twofaccounts.confirm.cancel":"Изменения будут утеряны. Вы уверены?","twofaccounts.confirm.discard":"Вы уверены, что хотите сбросить эту учетную запись?","twofaccounts.confirm.discard_all":"Вы уверены, что хотите сбросить все учётные записи?","twofaccounts.confirm.discard_duplicates":"Вы уверены, что хотите сбросить все дубликаты?","twofaccounts.import.import":"Импорт","twofaccounts.import.to_import":"Импортировать","twofaccounts.import.import_legend":"2FAuth может импортировать данные из различных 2FA приложений.","twofaccounts.import.import_legend_afterpart":"Используйте функцию экспорта данных приложений, чтобы получить ресурс миграции, такой как QR-код или JSON файл, а затем загрузите его здесь.","twofaccounts.import.upload":"Загрузить","twofaccounts.import.scan":"Сканировать","twofaccounts.import.supported_formats_for_qrcode_upload":"Принимается: jpg, jpeg, png, bmp, gif, svg или webp","twofaccounts.import.supported_formats_for_file_upload":"Принимается: Простой текст, json, 2fas","twofaccounts.import.supported_migration_formats":"Поддерживаемые форматы миграции","twofaccounts.import.qr_code":"QR-код","twofaccounts.import.text_file":"Текстовый файл","twofaccounts.import.plain_text":"Простой текст","twofaccounts.import.parsing_data":"Анализ данных...","twofaccounts.import.issuer":"Эмитент","twofaccounts.import.imported":"Импортировано","twofaccounts.import.failure":"Неудачно","twofaccounts.import.x_valid_accounts_found":"Найдено действительных учетных записей :count","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"Следующие учетные записи 2FA были найдены в ресурсе миграции. Пока ни один из них не был добавлен в 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Используйте доступные кнопки, чтобы навсегда сохранить их в вашей коллекции 2FA или сбросить их.","twofaccounts.import.import_all":"Импортировать все","twofaccounts.import.import_this_account":"Импортировать эту учётную запись","twofaccounts.import.discard_all":"Сбросить все","twofaccounts.import.discard_duplicates":"Сбросить дубликаты","twofaccounts.import.discard_this_account":"Сбросить эту учетную запись","twofaccounts.import.generate_a_test_password":"Сгенерировать тестовый код","twofaccounts.import.possible_duplicate":"Учетная запись с такими же данными уже существует","twofaccounts.import.invalid_account":"- неверная учётная запись -","twofaccounts.import.invalid_service":"- неверный сервис -","twofaccounts.import.do_not_set_password_or_encryption":"НЕ ВКЛЮЧАЙТЕ защиту паролем или шифрование при экспорте данных из приложения 2FA, иначе 2FAuth не сможет расшифровать их.","validation.accepted":"Вы должны принять :attribute.","validation.accepted_if":"Вы должны принять :attribute, когда :other соответствует :value.","validation.active_url":"Поле :attribute содержит недействительный URL.","validation.after":"В поле :attribute должна быть дата больше :date.","validation.after_or_equal":"В поле :attribute должна быть дата больше или равняться :date.","validation.alpha":"Значение поля :attribute может содержать только буквы.","validation.alpha_dash":"Значение поля :attribute может содержать только буквы, цифры, дефис и нижнее подчеркивание.","validation.alpha_num":"Значение поля :attribute может содержать только буквы и цифры.","validation.array":"Поле :attribute должно быть массивом.","validation.before":"В поле :attribute должна быть дата раньше :date.","validation.before_or_equal":"В поле :attribute должна быть дата раньше или равняться :date.","validation.between.array":"Количество элементов в поле :attribute должно быть между :min и :max.","validation.between.file":"Размер файла в поле :attribute должен быть между :min и :max Килобайт(а).","validation.between.numeric":"Поле :attribute должно быть между :min и :max.","validation.between.string":"Количество символов в поле :attribute должно быть между :min и :max.","validation.boolean":"Поле :attribute должно иметь значение логического типа.","validation.confirmed":"Поле :attribute не совпадает с подтверждением.","validation.current_password":"Неверный пароль.","validation.date":"Поле :attribute не является датой.","validation.date_equals":"Поле :attribute должно быть датой равной :date.","validation.date_format":"Поле :attribute не соответствует формату :format.","validation.declined":"Поле :attribute должно быть отклонено.","validation.declined_if":"Поле :attribute должно быть отклонено, когда :other равно :value.","validation.different":"Поля :attribute и :other должны различаться.","validation.digits":"Длина цифрового поля :attribute должна быть :digits.","validation.digits_between":"Длина цифрового поля :attribute должна быть между :min и :max.","validation.dimensions":"Поле :attribute имеет недопустимые размеры изображения.","validation.distinct":"Поле :attribute содержит повторяющееся значение.","validation.doesnt_end_with":"Значение поля :attribute не может заканчиваться одним из следующих: :values.","validation.doesnt_start_with":"Значение поля :attribute не может начинаться с одного из следующих: :values.","validation.email":"Поле :attribute должно быть действительным электронным адресом.","validation.ends_with":"Поле :attribute должно заканчиваться одним из следующих значений: :values","validation.enum":"Значение поля :attribute некорректно.","validation.exists":"Выбранное значение для :attribute некорректно.","validation.file":"Поле :attribute должно быть файлом.","validation.filled":"Поле :attribute обязательно для заполнения.","validation.gt.array":"Количество элементов в поле :attribute должно быть больше :value.","validation.gt.file":"Размер файла в поле :attribute должен быть больше :value Килобайт(а).","validation.gt.numeric":"Поле :attribute должно быть больше :value.","validation.gt.string":"Количество символов в поле :attribute должно быть больше :value.","validation.gte.array":"Количество элементов в поле :attribute должно быть :value или больше.","validation.gte.file":"Размер файла, указанный в поле :attribute, должен быть :value Кб или больше.","validation.gte.numeric":"Значение поля :attribute должно быть :value или больше.","validation.gte.string":"Количество символов в поле :attribute должно быть :value или больше.","validation.image":"Поле :attribute должно быть изображением.","validation.in":"Выбранное значение для :attribute ошибочно.","validation.in_array":"Поле :attribute не существует в :other.","validation.integer":"Поле :attribute должно быть целым числом.","validation.ip":"Поле :attribute должно быть действительным IP-адресом.","validation.ipv4":"Поле :attribute должно быть действительным IPv4-адресом.","validation.ipv6":"Поле :attribute должно быть действительным IPv6-адресом.","validation.json":"Поле :attribute должно быть JSON строкой.","validation.lt.array":"Количество элементов в поле :attribute должно быть меньше :value.","validation.lt.file":"Размер файла в поле :attribute должен быть меньше :value Килобайт(а).","validation.lt.numeric":"Поле :attribute должно быть меньше :value.","validation.lt.string":"Количество символов в поле :attribute должно быть меньше :value.","validation.lte.array":"Количество элементов в поле :attribute должно быть :value или меньше.","validation.lte.file":"Размер файла, указанный в поле :attribute, должен быть :value Кб или меньше.","validation.lte.numeric":"Значение поля :attribute должно быть равным или меньше :value.","validation.lte.string":"Количество символов в поле :attribute должно быть :value или меньше.","validation.mac_address":"Значение поля :attribute должно быть корректным MAC-адресом.","validation.max.array":"Количество элементов в поле :attribute не может превышать :max.","validation.max.file":"Размер файла в поле :attribute не может быть больше :max Кб.","validation.max.numeric":"Значение поля :attribute не может быть больше :max.","validation.max.string":"Количество символов в значении поля :attribute не может превышать :max.","validation.max_digits":"Значение поля :attribute не должно содержать больше :max цифр.","validation.mimes":"Поле :attribute должно быть файлом одного из следующих типов: :values.","validation.mimetypes":"Поле :attribute должно быть файлом одного из следующих типов: :values.","validation.min.array":"Количество элементов в поле :attribute должно быть не меньше :min.","validation.min.file":"Размер файла в поле :attribute должен быть не меньше :min Килобайт(а).","validation.min.numeric":"Поле :attribute должно быть не меньше :min.","validation.min.string":"Количество символов в поле :attribute должно быть не меньше :min.","validation.min_digits":"Значение поля :attribute должно содержать не меньше :min цифр.","validation.multiple_of":"Значение поля :attribute должно быть кратным :value","validation.not_in":"Выбранное значение для :attribute ошибочно.","validation.not_regex":"Выбранный формат для :attribute ошибочный.","validation.numeric":"Поле :attribute должно быть числом.","validation.password.letters":"Значение поля :attribute должно содержать хотя бы одну букву.","validation.password.mixed":"Значение поля :attribute должно содержать хотя бы одну прописную и одну строчную буквы.","validation.password.numbers":"Значение поля :attribute должно содержать хотя бы одну цифру.","validation.password.symbols":"Значение поля :attribute должно содержать хотя бы один символ.","validation.password.uncompromised":"Значение поля :attribute обнаружено в утёкших данных. Пожалуйста, выберите другое значение для :attribute.","validation.present":"Поле :attribute должно присутствовать.","validation.prohibited":"Значение поля :attribute запрещено.","validation.prohibited_if":"Значение поля :attribute запрещено, когда :other равно :value.","validation.prohibited_unless":"Значение поля :attribute запрещено, если :other не состоит в :values.","validation.prohibits":"Значение поля :attribute запрещает присутствие :other.","validation.regex":"Поле :attribute имеет ошибочный формат.","validation.required":"Поле :attribute обязательно для заполнения.","validation.required_array_keys":"Массив в поле :attribute обязательно должен иметь ключи: :values","validation.required_if":"Поле :attribute обязательно для заполнения, когда :other равно :value.","validation.required_if_accepted":"Поле :attribute обязательно, когда :other принято.","validation.required_unless":"Поле :attribute обязательно для заполнения, когда :other не равно :values.","validation.required_with":"Поле :attribute обязательно для заполнения, когда :values указано.","validation.required_with_all":"Поле :attribute обязательно для заполнения, когда :values указано.","validation.required_without":"Поле :attribute обязательно для заполнения, когда :values не указано.","validation.required_without_all":"Поле :attribute обязательно для заполнения, когда ни одно из :values не указано.","validation.same":"Значения полей :attribute и :other должны совпадать.","validation.size.array":"Количество элементов в поле :attribute должно быть равным :size.","validation.size.file":"Размер файла в поле :attribute должен быть равен :size Килобайт(а).","validation.size.numeric":"Поле :attribute должно быть равным :size.","validation.size.string":"Количество символов в поле :attribute должно быть равным :size.","validation.starts_with":"Поле :attribute должно начинаться из одного из следующих значений: :values","validation.string":"Поле :attribute должно быть строкой.","validation.timezone":"Значением поля :attribute должен быть действительный часовой пояс.","validation.unique":"Такое значение поля :attribute уже существует.","validation.uploaded":"Загрузка поля :attribute не удалась.","validation.url":"Значением поля :attribute должен быть допустимым URL.","validation.uuid":"Поле :attribute должно быть корректным UUID.","validation.single":"При использовании :attribute - это должен быть единственный параметр в теле этого запроса","validation.onlyCustomOtpWithUri":"Параметр uri должен быть указан один или в сочетании с параметром 'custom_otp'","validation.custom.icon.image":"Поддерживаемый формат - jpeg, png, bmp, gif, svg или webp.","validation.custom.qrcode.image":"Поддерживаемый формат - jpeg, png, bmp, gif, svg или webp.","validation.custom.uri.regex":"Поле :attribute не является ссылкой аутентификатора.","validation.custom.otp_type.in":":attribute не поддерживается.","validation.custom.email.exists":"Учётная запись с таким электронным адресом не найдена.","validation.custom.secret.isBase32Encoded":"Поле :attribute должно быть закодированной base32 строкой.","validation.custom.account.regex":":attribute не должен содержать двоеточий.","validation.custom.service.regex":":attribute не должен содержать двоеточие.","validation.custom.label.required":"URI должен иметь метку.","validation.custom.ids.regex":"Идентификаторы должны быть разделены запятыми. Запятая в конце не ставится."};export{t as default}; diff --git a/public/build/assets/php_ru-9fc62699.js b/public/build/assets/php_ru-9fc62699.js deleted file mode 100644 index f23091d4..00000000 --- a/public/build/assets/php_ru-9fc62699.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"auth.failed":"Неверное имя пользователя или пароль.","auth.password":"Некорректный пароль.","auth.throttle":"Слишком много попыток входа. Пожалуйста, попробуйте еще раз через :seconds секунд.","auth.sign_out":"Выйти","auth.sign_in":"Войти","auth.sign_in_using":"Войти с помощью","auth.or_continue_with":"You an also continue with:","auth.sign_in_using_security_device":"Войти, используя устройство безопасности","auth.login_and_password":"имя пользователя и пароль","auth.register":"Регистрация","auth.welcome_to_2fauth":"Добро пожаловать в 2FAuth","auth.autolock_triggered":"Сработала автоматическая блокировка","auth.autolock_triggered_punchline":"Произошло событие которое, отслеживалось функцией автоблокировки. Вы были автоматически отключены.","auth.already_authenticated":"Вы уже аутентифицирован","auth.authentication":"Аутентификация","auth.maybe_later":"Не сейчас","auth.user_account_controlled_by_proxy":"User account made available by an authentication proxy.
Manage the account at proxy level.","auth.auth_handled_by_proxy":"Аутентификация осуществляется на обратном прокси сервере, настройки ниже не доступны.
Управление аутентификацией осуществляется на прокси сервере.","auth.confirm.logout":"Вы уверены, что хотите выйти?","auth.confirm.revoke_device":"Вы уверены, что хотите удалить это устройство?","auth.confirm.delete_account":"Вы уверены, что хотите удалить свою учетную запись?","auth.webauthn.security_device":"устройство безопасности","auth.webauthn.security_devices":"Устройства безопасности","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

- WebAuthn allows you to use trusted devices (like Yubikeys or smartphones with biometric capabilities) to sign in quickly and more securely.`,"auth.webauthn.use_security_device_to_sign_in":"Get ready to authenticate using (one of) your security devices. Plug your key in, remove face mask or gloves, etc.","auth.webauthn.lost_your_device":"Потеряли устройство?","auth.webauthn.recover_your_account":"Восстановить доступ к аккаунту","auth.webauthn.account_recovery":"Восстановление доступа к аккаунту","auth.webauthn.recovery_punchline":"2FAuth will send you a recovery link to this email address. Click the link in the received email and follow the instructions.

Ensure you open the email on a device you fully own.","auth.webauthn.send_recovery_link":"Отправить ссылку для восстановления","auth.webauthn.account_recovery_email_sent":"Письмо для восстановления доступа к аккаунту отправлено!","auth.webauthn.disable_all_security_devices":"Отключить все устройства безопасности","auth.webauthn.disable_all_security_devices_help":"All your security devices will be revoked. Use this option if you have lost one or its security has been compromised.","auth.webauthn.register_a_new_device":"Зарегистрировать новое устройство","auth.webauthn.register_a_device":"Зарегистрировать устройство","auth.webauthn.device_successfully_registered":"Устройство успешно зарегистрировано","auth.webauthn.device_revoked":"Устройство успешно деактивировано","auth.webauthn.revoking_a_device_is_permanent":"Удаление устройства необратимо","auth.webauthn.recover_account_instructions":"To recover your account, 2FAuth resets some Webauthn settings so you will be able to sign in using your email and password.","auth.webauthn.invalid_recovery_token":"Неверный код восстановления","auth.webauthn.webauthn_login_disabled":"Webauthn login disabled","auth.webauthn.invalid_reset_token":"This reset token is invalid.","auth.webauthn.rename_device":"Переименовать устройство","auth.webauthn.my_device":"Моё устройство","auth.webauthn.unknown_device":"Неизвестное устройство","auth.webauthn.use_webauthn_only.label":"Use WebAuthn only","auth.webauthn.use_webauthn_only.help":`Make WebAuthn the only authorized method to log into your 2FAuth account. This is the recommended setup to take advantage of the WebAuthn enhanced security.

- In case of device lost, you will be able to recover your account by resetting this option and signing in using your email and password.

- Attention! The Email & Password form remains available despite this option being enabled, but it will always return an 'Authentication failed' response.`,"auth.webauthn.need_a_security_device_to_enable_options":"Set at least one device to enable the following options","auth.forms.name":"Имя","auth.forms.login":"Вход","auth.forms.webauthn_login":"WebAuthn login","auth.forms.email":"Адрес электронной почты","auth.forms.password":"Пароль","auth.forms.reveal_password":"Показать пароль","auth.forms.hide_password":"Скрыть пароль","auth.forms.confirm_password":"Подтверждение пароля","auth.forms.new_password":"New password","auth.forms.confirm_new_password":"Подтвердить новый пароль","auth.forms.dont_have_account_yet":"Don't have your account yet?","auth.forms.already_register":"Уже зарегистрированы?","auth.forms.authentication_failed":"Ошибка аутентификации","auth.forms.forgot_your_password":"Забыли пароль?","auth.forms.request_password_reset":"Восстановить","auth.forms.reset_your_password":"Восстановить пароль","auth.forms.reset_password":"Восстановить пароль","auth.forms.disabled_in_demo":"Функция отключена в демо режиме","auth.forms.current_password.label":"Текущий пароль","auth.forms.current_password.help":"Fill in your current password to confirm that it's you","auth.forms.change_password":"Изменить пароль","auth.forms.send_password_reset_link":"Send password reset link","auth.forms.password_successfully_changed":"Password successfully changed","auth.forms.edit_account":"Edit account","auth.forms.profile_saved":"Profile successfully updated!","auth.forms.welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Welcome to the 2FAuth testing instance.

Use email address testing@2fauth.app and password password","auth.forms.register_punchline":"Welcome to 2FAuth.
You need an account to go further, please register yourself.","auth.forms.reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password.","auth.forms.name_this_device":"Name this device","auth.forms.delete_account":"Удалить аккаунт","auth.forms.delete_your_account":"Удалить учетную запись","auth.forms.delete_your_account_and_reset_all_data":"Your user account will be deleted as well as all your 2FA data. There is no going back.","auth.forms.reset_your_password_to_delete_your_account":"If you always used SSO to sign in, sign out then use the reset password feature to get a password so you can fill this form.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Deleting your 2FAuth account has no impact on your external SSO account.","auth.forms.user_account_successfully_deleted":"Аккаунт успешно удален","auth.forms.has_lower_case":"маленькие буквы","auth.forms.has_upper_case":"заглавные буквы","auth.forms.has_special_char":"специальный символы","auth.forms.has_number":"цифры","auth.forms.is_long_enough":"Минимум 8 символов","auth.forms.mandatory_rules":"Обязательно","auth.forms.optional_rules_you_should_follow":"Recommanded (highly)","auth.forms.caps_lock_is_on":"Caps lock включен","commons.cancel":"Отмена","commons.update":"Обновить","commons.copy":"Скопировать","commons.copy_to_clipboard":"Скопировать в буфер обмена","commons.copied_to_clipboard":"Скопировано в буфер обмена","commons.profile":"Профиль","commons.edit":"Редактировать","commons.delete":"Удалить","commons.disable":"Выключить","commons.enable":"Включить","commons.create":"Создать","commons.save":"Сохранить","commons.close":"Закрыть","commons.clear":"Очистить","commons.clear_search":"Очистить поиск","commons.demo_do_not_post_sensitive_data":"Это демо-приложение, не размещайте конфиденциальные данные","commons.testing_do_not_post_sensitive_data":"Это тестовое приложение, не оставляйте конфиденциальные данные","commons.selected":"выбрано","commons.name":"Имя","commons.manage":"Управление","commons.done":"Готово","commons.new":"Новый","commons.back":"Назад","commons.move":"Переместить","commons.export":"Экспорт","commons.all":"Все","commons.select_all":"Выбрать все","commons.clear_selection":"Очистить выделение","commons.sort_descending":"По убыванию","commons.sort_ascending":"По возрастанию","commons.rename":"Переименовать","commons.new_name":"Новое имя","commons.options":"Настройки","commons.reload":"Обновить","commons.refresh":"Refresh","commons.data_refreshed_to_reflect_server_changes":"Data has been refresh to reflect server-side changes","commons.generate":"Генерировать","commons.generating_otp":"Generating OTP","commons.open_in_browser":"Открыть в браузере","commons.continue":"Продолжить","commons.discard":"Отменить","commons.about":"О программе","commons.usefull_links":"Полезные ссылки","commons.environment":"Окружение","commons.credits":"Авторы","commons.2fauth_teaser":"Веб-приложение для управления двухфакторной аутентификацией (2FA) учетных записей и генерации кодов безопасности","commons.made_with":"Сделано с","commons.ui_icons_by":"Иконки пользовательского интерфейса","commons.logos_by":"Логотипы","commons.search":"Поиск","commons.resources":"Ресурсы","commons.check_for_update":"Проверить обновления","commons.check_for_update_help":"Автоматически проверять (раз в неделю) и предупреждать о выходе новой версии 2FAuth на Github","commons.you_are_up_to_date":"Установленна последная версия","commons.2fauth_description":"Веб-приложение для управления двухфакторной аутентификацией (2FA) учетных записей и генерации кодов безопасности","commons.image_of_qrcode_to_scan":"Изображение QR-кода для сканирования","commons.file":"Файл","commons.or":"или","commons.close_the_x_page":"Закрыть страницу {pagetitle}","commons.submit":"Submit","commons.default":"Default","commons.back_to_home":"Back to home","commons.nothing":"nothing","errors.resource_not_found":"Ресурс не найден","errors.error_occured":"Произошла ошибка:","errors.refresh":"Обновить","errors.no_valid_otp":"No valid OTP resource in this QR code","errors.something_wrong_with_server":"Something is wrong with your server","errors.Unable_to_decrypt_uri":"Unable to decrypt uri","errors.not_a_supported_otp_type":"This OTP format is not currently supported","errors.cannot_create_otp_without_secret":"Cannot create an OTP without a secret","errors.data_of_qrcode_is_not_valid_URI":"The data of this QR code is not a valid OTP Auth URI. The QR code contains:","errors.wrong_current_password":"Wrong current password, nothing has changed","errors.error_during_encryption":"Encryption failed, your database remains unprotected.","errors.error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","errors.qrcode_cannot_be_read":"This QR code is unreadable","errors.too_many_ids":"too many ids were included in the query parameter, max 100 allowed","errors.delete_user_setting_only":"Only user-created setting can be deleted","errors.indecipherable":"*indecipherable*","errors.cannot_decipher_secret":"The secret cannot be deciphered. This is mainly caused by a wrong APP_KEY set in the .env configuration file of 2Fauth or a corrupted data stored in database.","errors.https_required":"HTTPS context required","errors.browser_does_not_support_webauthn":"Your device does not support webauthn. Try again later using a more modern browser","errors.aborted_by_user":"Прервано пользователем","errors.security_device_already_registered":"Device already registered","errors.not_allowed_operation":"Operation not allowed","errors.no_authenticator_support_specified_algorithms":"No authenticators support specified algorithms","errors.authenticator_missing_discoverable_credential_support":"Authenticator missing discoverable credential support","errors.authenticator_missing_user_verification_support":"Authenticator missing user verification support","errors.unknown_error":"Unknown error","errors.security_error_check_rpid":"Security error
Check your WEBAUTHN_ID env var","errors.2fauth_has_not_a_valid_domain":"2FAuth's domain is not a valid domain","errors.user_id_not_between_1_64":"User ID was not between 1 and 64 chars","errors.no_entry_was_of_type_public_key":'No entry was of type "public-key"',"errors.unsupported_with_reverseproxy":"Not applicable when using an auth proxy","errors.user_deletion_failed":"User account deletion failed, no data have been deleted","errors.auth_proxy_failed":"Proxy authentication failed","errors.auth_proxy_failed_legend":"2Fauth is configured to run behind an authentication proxy but your proxy does not return the expected header. Check your configuration and try again.","errors.invalid_x_migration":"Invalid or unreadable :appname data","errors.invalid_2fa_data":"Invalid 2FA data","errors.unsupported_migration":"Data do not match any supported format","errors.unsupported_otp_type":"Unsupported OTP type","errors.encrypted_migration":"Unreadable, the data seem encrypted","errors.no_logo_found_for_x":"No logo available for :service","errors.file_upload_failed":"Не удалось загрузить файл","errors.unauthorized":"Unauthorized","errors.unauthorized_legend":"You do not have permissions to view this resource or to perform this action","errors.cannot_delete_the_only_admin":"Cannot delete the only admin account","errors.error_during_data_fetching":"💀 Something went wrong during data fetching","errors.check_failed_try_later":"Check failed, please retry later","errors.sso_disabled":"SSO is disabled","errors.sso_bad_provider_setup":"This SSO provider is not fully setup in your .env file","errors.sso_failed":"Authentication via SSO rejected","errors.sso_no_register":"Registrations are disabled","errors.sso_email_already_used":"A user account with the same email address already exists but it does not match your external account ID. Do not use SSO if you are already registered on 2FAuth with this email.","errors.account_managed_by_external_provider":"Account managed by an external provider","groups.groups":"Группы","groups.create_group":"Создать новую группу","groups.show_group_selector":"Показать выбор групп","groups.hide_group_selector":"Скрыть выбор группы","groups.select_accounts_to_show":"Выберите группу аккаунтов для отображения","groups.manage_groups":"Управление группами","groups.active_group":"Активные группы","groups.manage_groups_legend":"Вы можете создать группы для организации ваших учетных записей. Все аккаунты остаются видимыми в служебной группе 'Все', независимо от группы, к которой они принадлежат.","groups.deleting_group_does_not_delete_accounts":"Удаление группы не удаляет учетные записи","groups.move_selected_to":"Переместить выбранные в","groups.move_selected_to_group":"Переместить выделенное в группу","groups.no_group":"Без группы","groups.change_group":"Изменить группу","groups.group_successfully_created":"Группа успешно создана","groups.group_name_saved":"Название группы сохранено","groups.group_successfully_deleted":"Группа успешно удалена","groups.forms.new_group":"Новая группа","groups.forms.new_name":"Новое имя","groups.forms.rename_group":"Переименовать группу","groups.confirm.delete":"Вы действительно хотите удалить эту группу?","languages.browser_preference":"Настройки браузера","languages.en":"Английский","languages.fr":"Французский","languages.de":"Немецкий","languages.es":"Испанский","languages.zh":"Китайский упрощенный","languages.ru":"Русский","languages.bg":"Bulgarian","pagination.previous":"« Назад","pagination.next":"Вперёд »","passwords.reset":"Ваш пароль был сброшен!","passwords.sent":"Ссылка на сброс пароля была отправлена!","passwords.throttled":"Пожалуйста, подождите перед повторной попыткой.","passwords.token":"Ошибочный код сброса пароля.","passwords.user":"Не удалось найти пользователя с указанным электронным адресом.","passwords.password":'Пароль должен содержать не менее восьми символов и совпадать с паролем в поле "подтверждение пароля".',"settings.settings":"Settings","settings.preferences":"Preferences","settings.account":"Account","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Tokens","settings.options":"Options","settings.user_preferences":"User preferences","settings.admin_settings":"Admin settings","settings.confirm.revoke":"Are you sure you want to revoke this token?","settings.administration":"Administration","settings.administration_legend":"While previous settings are user settings (every user can set its own preferences), following settings are global and apply to all users.","settings.only_an_admin_can_edit_them":"Only an administrator can view and edit them.","settings.you_are_administrator":"You are an administrator","settings.account_linked_to_sso_x_provider":"You signed-in via SSO using your :provider account. Your information cannot be changed here but on :provider.","settings.general":"General","settings.security":"Security","settings.profile":"Profile","settings.change_password":"Change password","settings.personal_access_tokens":"Personal access tokens","settings.token_legend":"Personal Access Tokens allow any app to authenticate to the 2Fauth API. You should specify the access token as a Bearer token in the authorization header of consumer apps requests.","settings.generate_new_token":"Generate a new token","settings.revoke":"Revoke","settings.token_revoked":"Token successfully revoked","settings.revoking_a_token_is_permanent":"Revoking a token is permanent","settings.make_sure_copy_token":"Make sure to copy your personal access token now. You won’t be able to see it again!","settings.data_input":"Data input","settings.forms.edit_settings":"Edit settings","settings.forms.setting_saved":"Settings saved","settings.forms.new_token":"New token","settings.forms.some_translation_are_missing":"Some translations are missing using the browser preferred language?","settings.forms.help_translate_2fauth":"Help translate 2FAuth","settings.forms.language.label":"Language","settings.forms.language.help":"Language used to translate the 2FAuth user interface. Named languages are complete, set the one of your choice to override your browser preference.","settings.forms.show_otp_as_dot.label":'Show generated OTP as dot',"settings.forms.show_otp_as_dot.help":"Replace generated password caracters with *** to ensure confidentiality. Do not affect the copy/paste feature","settings.forms.reveal_dotted_otp.label":'Reveal obscured OTP',"settings.forms.reveal_dotted_otp.help":"Let the ability to temporarily reveal Dot-Obscured passwords","settings.forms.close_otp_on_copy.label":'Close OTP after copy',"settings.forms.close_otp_on_copy.help":"Clicking a generated password to copy it automatically hide it from the screen","settings.forms.copy_otp_on_display.label":'Copy OTP on display',"settings.forms.copy_otp_on_display.help":'Automatically copy a generated password right after it appears on screen. Due to browsers limitations, only the first TOTP password will be copied, not the rotating ones',"settings.forms.use_basic_qrcode_reader.label":"Use basic QR code reader","settings.forms.use_basic_qrcode_reader.help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader","settings.forms.display_mode.label":"Display mode","settings.forms.display_mode.help":"Choose whether you want accounts to be displayed as a list or as a grid","settings.forms.password_format.label":"Password formatting","settings.forms.password_format.help":"Change how the passwords are displayed by grouping digits to ease readability and memorization","settings.forms.pair":"by Pair","settings.forms.pair_legend":"Group digits two by two","settings.forms.trio_legend":"Group digits three by three","settings.forms.half_legend":"Split digits into two equals groups","settings.forms.trio":"by Trio","settings.forms.half":"by Half","settings.forms.grid":"Grid","settings.forms.list":"List","settings.forms.theme.label":"Theme","settings.forms.theme.help":"Force a specific theme or apply the theme defined in your system/browser preferences","settings.forms.light":"Light","settings.forms.dark":"Dark","settings.forms.automatic":"Auto","settings.forms.show_accounts_icons.label":"Show icons","settings.forms.show_accounts_icons.help":"Show icons accounts in the main view","settings.forms.get_official_icons.label":"Get official icons","settings.forms.get_official_icons.help":"(Try to) Get the official icon of the 2FA issuer when adding an account","settings.forms.auto_lock.label":"Auto lock","settings.forms.auto_lock.help":"Log out the user automatically in case of inactivity. Has no effect when authentication is handled by a proxy and no custom logout url is specified.","settings.forms.use_encryption.label":"Protect sensible data","settings.forms.use_encryption.help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key.","settings.forms.default_group.label":"Default group","settings.forms.default_group.help":"The group to which the newly created accounts are associated","settings.forms.useDirectCapture.label":"Direct input","settings.forms.useDirectCapture.help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode","settings.forms.defaultCaptureMode.label":"Default input mode","settings.forms.defaultCaptureMode.help":"Default input mode used when the Direct input option is On","settings.forms.remember_active_group.label":"Remember group filter","settings.forms.remember_active_group.help":"Save the last group filter applied and restore it on your next visit","settings.forms.disable_registration.label":"Disable registration","settings.forms.disable_registration.help":"Prevent new user registration. This affects SSO as well, so new SSO users won't be able to sign on","settings.forms.enable_sso.label":"Enable Single Sign-On (SSO)","settings.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","settings.forms.otp_generation.label":"Show Password","settings.forms.otp_generation.help":'Set how and when OTPs are displayed.
',"settings.forms.otp_generation_on_request":"After a click/tap","settings.forms.otp_generation_on_request_legend":"Alone, in its own view","settings.forms.otp_generation_on_request_title":"Click an account to get a password in a dedicated view","settings.forms.otp_generation_on_home":"Constantly","settings.forms.otp_generation_on_home_legend":"All of them, on home","settings.forms.otp_generation_on_home_title":"Show all passwords in the main view, without doing anything","settings.forms.never":"Never","settings.forms.on_otp_copy":"On security code copy","settings.forms.1_minutes":"After 1 minute","settings.forms.5_minutes":"After 5 minutes","settings.forms.10_minutes":"After 10 minutes","settings.forms.15_minutes":"After 15 minutes","settings.forms.30_minutes":"After 30 minutes","settings.forms.1_hour":"After 1 hour","settings.forms.1_day":"After 1 day","settings.forms.livescan":"QR code livescan","settings.forms.upload":"QR code upload","settings.forms.advanced_form":"Advanced form","titles.404":"Элемент не найден","titles.start":"Новая учетная запись","titles.capture":"Отсканируйте QR","titles.accounts":"Учётные записи","titles.createAccount":"Создать учётную запись","titles.importAccounts":"Импорт учётных записей","titles.editAccount":"Редактирование учетной записи","titles.showQRcode":"Учетная запись как QR-код","titles.groups":"Группы","titles.createGroup":"Создать группу","titles.editGroup":"Изменение группы","titles.settings.options":"Настройки","titles.settings.account":"Учетные записи пользователя","titles.settings.oauth.tokens":"OAuth Токены","titles.settings.oauth.generatePAT":"Новый персональный токен","titles.settings.webauthn.editCredential":"Редактирование устройства","titles.settings.webauthn.devices":"Устройства WebAuthn","titles.login":"Вход","titles.register":"Регистрация","titles.autolock":"Автоблокировка","titles.password.request":"Восстановить пароль","titles.password.reset":"Новый пароль","titles.webauthn.lost":"Восстановление доступа к аккаунту","titles.webauthn.recover":"Зарегистрировать новое устройство","titles.flooded":"Слишком много запросов","titles.genericError":"Ошибка","titles.about":"О программе","twofaccounts.service":"Service","twofaccounts.account":"Account","twofaccounts.accounts":"Accounts","twofaccounts.icon":"Icon","twofaccounts.icon_for_account_x_at_service_y":"Icon of the :account account at :service","twofaccounts.icon_to_illustrate_the_account":"Icon that illustrates the account","twofaccounts.remove_icon":"Remove icon","twofaccounts.no_account_here":"No 2FA here!","twofaccounts.add_first_account":"Pick a method and add your first account","twofaccounts.use_full_form":"Or use the full form","twofaccounts.add_one":"Add one","twofaccounts.show_qrcode":"Show QR code","twofaccounts.no_service":"- no service -","twofaccounts.account_created":"Account successfully created","twofaccounts.account_updated":"Account successfully updated","twofaccounts.accounts_deleted":"Account(s) successfully deleted","twofaccounts.accounts_moved":"Account(s) successfully moved","twofaccounts.export_selected_to_json":"Download a json export of selected accounts","twofaccounts.reveal":"reveal","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"John DOE","twofaccounts.forms.new_account":"New account","twofaccounts.forms.edit_account":"Edit account","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Scan a QR code","twofaccounts.forms.upload_qrcode":"Upload a QR code","twofaccounts.forms.use_advanced_form":"Use the advanced form","twofaccounts.forms.prefill_using_qrcode":"Prefill using a QR Code","twofaccounts.forms.use_qrcode.val":"Use a qrcode","twofaccounts.forms.use_qrcode.title":"Use a QR code to fill the form magically","twofaccounts.forms.unlock.val":"Unlock","twofaccounts.forms.unlock.title":"Unlock it (at your own risk)","twofaccounts.forms.lock.val":"Lock","twofaccounts.forms.lock.title":"Lock it","twofaccounts.forms.choose_image":"Upload","twofaccounts.forms.i_m_lucky":"Try my luck","twofaccounts.forms.i_m_lucky_legend":'The "Try my luck" button try to get the official icon of the given service. Enter actual service name without ".xyz" extension and try to avoid typo. (beta feature)',"twofaccounts.forms.test":"Test","twofaccounts.forms.secret.label":"Secret","twofaccounts.forms.secret.help":"The key used to generate your security codes","twofaccounts.forms.plain_text":"Plain text","twofaccounts.forms.otp_type.label":'Choose the type of OTP to create',"twofaccounts.forms.otp_type.help":"Time-based OTP or HMAC-based OTP or Steam OTP","twofaccounts.forms.digits.label":"Digits","twofaccounts.forms.digits.help":"The number of digits of the generated security codes","twofaccounts.forms.algorithm.label":"Algorithm","twofaccounts.forms.algorithm.help":"The algorithm used to secure your security codes","twofaccounts.forms.period.label":"Period","twofaccounts.forms.period.placeholder":"Default is 30","twofaccounts.forms.period.help":"The period of validity of the generated security codes in second","twofaccounts.forms.counter.label":"Counter","twofaccounts.forms.counter.placeholder":"Default is 0","twofaccounts.forms.counter.help":"The initial counter value","twofaccounts.forms.counter.help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing","twofaccounts.forms.image.label":"Image","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"The url of an external image to use as the account icon","twofaccounts.forms.options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","twofaccounts.forms.alternative_methods":"Alternative methods","twofaccounts.stream.live_scan_cant_start":"Live scan can't start :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth does not have permission to access your camera","twofaccounts.stream.need_grant_permission.solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission.","twofaccounts.stream.need_grant_permission.click_camera_icon":"It is usually done by clicking on a slashed camera icon in or next to the browser's address bar","twofaccounts.stream.not_readable.reason":"Fail to load scanner","twofaccounts.stream.not_readable.solution":"Is the camera already in use? Ensure that no other app use your camera and try again","twofaccounts.stream.no_cam_on_device.reason":"No camera on this device","twofaccounts.stream.no_cam_on_device.solution":"Maybe you forgot to plug in your webcam","twofaccounts.stream.secured_context_required.reason":"Secure context required","twofaccounts.stream.secured_context_required.solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost","twofaccounts.stream.https_required":"HTTPS required for camera streaming","twofaccounts.stream.camera_not_suitable.reason":"Installed cameras are not suitable","twofaccounts.stream.camera_not_suitable.solution":"Please use another device/camera","twofaccounts.stream.stream_api_not_supported.reason":"Stream API is not supported in this browser","twofaccounts.stream.stream_api_not_supported.solution":"You should use a modern browser","twofaccounts.confirm.delete":"Are you sure you want to delete this account?","twofaccounts.confirm.cancel":"Changes will be lost. Are you sure?","twofaccounts.confirm.discard":"Are you sure you want to discard this account?","twofaccounts.confirm.discard_all":"Are you sure you want to discard all accounts?","twofaccounts.confirm.discard_duplicates":"Are you sure you want to discard all duplicates?","twofaccounts.import.import":"Import","twofaccounts.import.to_import":"Import","twofaccounts.import.import_legend":"2FAuth can import data from various 2FA apps.","twofaccounts.import.import_legend_afterpart":"Use the Export feature of these apps to get a migration resource like a QR code or a JSON file then load it here.","twofaccounts.import.upload":"Upload","twofaccounts.import.scan":"Scan","twofaccounts.import.supported_formats_for_qrcode_upload":"Accepted: jpg, jpeg, png, bmp, gif, svg, or webp","twofaccounts.import.supported_formats_for_file_upload":"Accepted: Plain text, json, 2fas","twofaccounts.import.supported_migration_formats":"Supported migration formats","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Text file","twofaccounts.import.plain_text":"Plain text","twofaccounts.import.parsing_data":"Parsing data...","twofaccounts.import.issuer":"Issuer","twofaccounts.import.imported":"Imported","twofaccounts.import.failure":"Failure","twofaccounts.import.x_valid_accounts_found":":count valid accounts found","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"The following 2FA accounts were found in the migration resource. So far none of them have been added to 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Use the available buttons to permanently save them to your 2FA collection or discard them.","twofaccounts.import.import_all":"Import all","twofaccounts.import.import_this_account":"Import this account","twofaccounts.import.discard_all":"Discard all","twofaccounts.import.discard_duplicates":"Discard duplicates","twofaccounts.import.discard_this_account":"Discard this account","twofaccounts.import.generate_a_test_password":"Generate a test pasword","twofaccounts.import.possible_duplicate":"An account with the exact same data already exists","twofaccounts.import.invalid_account":"- invalid account -","twofaccounts.import.invalid_service":"- invalid service -","twofaccounts.import.do_not_set_password_or_encryption":"Do NOT enable Password protection or Encryption when you export data from a 2FA app otherwise 2FAuth will not be able to decipher them.","validation.accepted":"Вы должны принять :attribute.","validation.accepted_if":"Вы должны принять :attribute, когда :other соответствует :value.","validation.active_url":"Поле :attribute содержит недействительный URL.","validation.after":"В поле :attribute должна быть дата больше :date.","validation.after_or_equal":"В поле :attribute должна быть дата больше или равняться :date.","validation.alpha":"Значение поля :attribute может содержать только буквы.","validation.alpha_dash":"Значение поля :attribute может содержать только буквы, цифры, дефис и нижнее подчеркивание.","validation.alpha_num":"Значение поля :attribute может содержать только буквы и цифры.","validation.array":"Поле :attribute должно быть массивом.","validation.before":"В поле :attribute должна быть дата раньше :date.","validation.before_or_equal":"В поле :attribute должна быть дата раньше или равняться :date.","validation.between.array":"Количество элементов в поле :attribute должно быть между :min и :max.","validation.between.file":"Размер файла в поле :attribute должен быть между :min и :max Килобайт(а).","validation.between.numeric":"Поле :attribute должно быть между :min и :max.","validation.between.string":"Количество символов в поле :attribute должно быть между :min и :max.","validation.boolean":"Поле :attribute должно иметь значение логического типа.","validation.confirmed":"Поле :attribute не совпадает с подтверждением.","validation.current_password":"Неверный пароль.","validation.date":"Поле :attribute не является датой.","validation.date_equals":"Поле :attribute должно быть датой равной :date.","validation.date_format":"Поле :attribute не соответствует формату :format.","validation.declined":"Поле :attribute должно быть отклонено.","validation.declined_if":"Поле :attribute должно быть отклонено, когда :other равно :value.","validation.different":"Поля :attribute и :other должны различаться.","validation.digits":"Длина цифрового поля :attribute должна быть :digits.","validation.digits_between":"Длина цифрового поля :attribute должна быть между :min и :max.","validation.dimensions":"Поле :attribute имеет недопустимые размеры изображения.","validation.distinct":"Поле :attribute содержит повторяющееся значение.","validation.doesnt_end_with":"Значение поля :attribute не может заканчиваться одним из следующих: :values.","validation.doesnt_start_with":"Значение поля :attribute не может начинаться с одного из следующих: :values.","validation.email":"Поле :attribute должно быть действительным электронным адресом.","validation.ends_with":"Поле :attribute должно заканчиваться одним из следующих значений: :values","validation.enum":"Значение поля :attribute некорректно.","validation.exists":"Выбранное значение для :attribute некорректно.","validation.file":"Поле :attribute должно быть файлом.","validation.filled":"Поле :attribute обязательно для заполнения.","validation.gt.array":"Количество элементов в поле :attribute должно быть больше :value.","validation.gt.file":"Размер файла в поле :attribute должен быть больше :value Килобайт(а).","validation.gt.numeric":"Поле :attribute должно быть больше :value.","validation.gt.string":"Количество символов в поле :attribute должно быть больше :value.","validation.gte.array":"Количество элементов в поле :attribute должно быть :value или больше.","validation.gte.file":"Размер файла, указанный в поле :attribute, должен быть :value Кб или больше.","validation.gte.numeric":"Значение поля :attribute должно быть :value или больше.","validation.gte.string":"Количество символов в поле :attribute должно быть :value или больше.","validation.image":"Поле :attribute должно быть изображением.","validation.in":"Выбранное значение для :attribute ошибочно.","validation.in_array":"Поле :attribute не существует в :other.","validation.integer":"Поле :attribute должно быть целым числом.","validation.ip":"Поле :attribute должно быть действительным IP-адресом.","validation.ipv4":"Поле :attribute должно быть действительным IPv4-адресом.","validation.ipv6":"Поле :attribute должно быть действительным IPv6-адресом.","validation.json":"Поле :attribute должно быть JSON строкой.","validation.lt.array":"Количество элементов в поле :attribute должно быть меньше :value.","validation.lt.file":"Размер файла в поле :attribute должен быть меньше :value Килобайт(а).","validation.lt.numeric":"Поле :attribute должно быть меньше :value.","validation.lt.string":"Количество символов в поле :attribute должно быть меньше :value.","validation.lte.array":"Количество элементов в поле :attribute должно быть :value или меньше.","validation.lte.file":"Размер файла, указанный в поле :attribute, должен быть :value Кб или меньше.","validation.lte.numeric":"Значение поля :attribute должно быть равным или меньше :value.","validation.lte.string":"Количество символов в поле :attribute должно быть :value или меньше.","validation.mac_address":"Значение поля :attribute должно быть корректным MAC-адресом.","validation.max.array":"Количество элементов в поле :attribute не может превышать :max.","validation.max.file":"Размер файла в поле :attribute не может быть больше :max Кб.","validation.max.numeric":"Значение поля :attribute не может быть больше :max.","validation.max.string":"Количество символов в значении поля :attribute не может превышать :max.","validation.max_digits":"Значение поля :attribute не должно содержать больше :max цифр.","validation.mimes":"Поле :attribute должно быть файлом одного из следующих типов: :values.","validation.mimetypes":"Поле :attribute должно быть файлом одного из следующих типов: :values.","validation.min.array":"Количество элементов в поле :attribute должно быть не меньше :min.","validation.min.file":"Размер файла в поле :attribute должен быть не меньше :min Килобайт(а).","validation.min.numeric":"Поле :attribute должно быть не меньше :min.","validation.min.string":"Количество символов в поле :attribute должно быть не меньше :min.","validation.min_digits":"Значение поля :attribute должно содержать не меньше :min цифр.","validation.multiple_of":"Значение поля :attribute должно быть кратным :value","validation.not_in":"Выбранное значение для :attribute ошибочно.","validation.not_regex":"Выбранный формат для :attribute ошибочный.","validation.numeric":"Поле :attribute должно быть числом.","validation.password.letters":"Значение поля :attribute должно содержать хотя бы одну букву.","validation.password.mixed":"Значение поля :attribute должно содержать хотя бы одну прописную и одну строчную буквы.","validation.password.numbers":"Значение поля :attribute должно содержать хотя бы одну цифру.","validation.password.symbols":"Значение поля :attribute должно содержать хотя бы один символ.","validation.password.uncompromised":"Значение поля :attribute обнаружено в утёкших данных. Пожалуйста, выберите другое значение для :attribute.","validation.present":"Поле :attribute должно присутствовать.","validation.prohibited":"Значение поля :attribute запрещено.","validation.prohibited_if":"Значение поля :attribute запрещено, когда :other равно :value.","validation.prohibited_unless":"Значение поля :attribute запрещено, если :other не состоит в :values.","validation.prohibits":"Значение поля :attribute запрещает присутствие :other.","validation.regex":"Поле :attribute имеет ошибочный формат.","validation.required":"Поле :attribute обязательно для заполнения.","validation.required_array_keys":"Массив в поле :attribute обязательно должен иметь ключи: :values","validation.required_if":"Поле :attribute обязательно для заполнения, когда :other равно :value.","validation.required_if_accepted":"Поле :attribute обязательно, когда :other принято.","validation.required_unless":"Поле :attribute обязательно для заполнения, когда :other не равно :values.","validation.required_with":"Поле :attribute обязательно для заполнения, когда :values указано.","validation.required_with_all":"Поле :attribute обязательно для заполнения, когда :values указано.","validation.required_without":"Поле :attribute обязательно для заполнения, когда :values не указано.","validation.required_without_all":"Поле :attribute обязательно для заполнения, когда ни одно из :values не указано.","validation.same":"Значения полей :attribute и :other должны совпадать.","validation.size.array":"Количество элементов в поле :attribute должно быть равным :size.","validation.size.file":"Размер файла в поле :attribute должен быть равен :size Килобайт(а).","validation.size.numeric":"Поле :attribute должно быть равным :size.","validation.size.string":"Количество символов в поле :attribute должно быть равным :size.","validation.starts_with":"Поле :attribute должно начинаться из одного из следующих значений: :values","validation.string":"Поле :attribute должно быть строкой.","validation.timezone":"Значение поля :attribute должно быть действительным часовым поясом.","validation.unique":"Такое значение поля :attribute уже существует.","validation.uploaded":"Загрузка поля :attribute не удалась.","validation.url":"Значение поля :attribute имеет ошибочный формат URL.","validation.uuid":"Поле :attribute должно быть корректным UUID.","validation.single":"При использовании :attribute в этом теле запроса должен быть единственный параметр","validation.onlyCustomOtpWithUri":"Параметр uri должен быть указан один или в сочетании с параметром 'custom_otp'","validation.custom.icon.image":"Поддерживаемый формат - jpeg, png, bmp, gif, svg или webp.","validation.custom.qrcode.image":"Поддерживаемый формат - jpeg, png, bmp, gif, svg или webp.","validation.custom.uri.regex":"Поле :attribute не является ссылкой аутентификатора.","validation.custom.otp_type.in":":attribute не поддерживается.","validation.custom.email.exists":"Учётная запись с таким электронным адресом не найдена.","validation.custom.secret.isBase32Encoded":"Поле :attribute должно быть строкой в base32 формате.","validation.custom.account.regex":":attribute не должен содержать двоеточий.","validation.custom.service.regex":":attribute не должен содержать двоеточие.","validation.custom.label.required":"URI должен иметь метку.","validation.custom.ids.regex":"Идентификаторы должны быть разделены запятыми. Запятая в конце не ставится."};export{e as default}; diff --git a/public/build/assets/php_si-fff4c92d.js b/public/build/assets/php_si-1c14cf6b.js similarity index 99% rename from public/build/assets/php_si-fff4c92d.js rename to public/build/assets/php_si-1c14cf6b.js index ae52934c..a3391f6f 100644 --- a/public/build/assets/php_si-fff4c92d.js +++ b/public/build/assets/php_si-1c14cf6b.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"auth.failed":"මෙම අක්තපත්ර අපගේ වාර්තා වලට ගැලපෙන්නේ නැත.","auth.password":"The provided password is incorrect.","auth.throttle":"බොහෝ පිවිසුම් උත්සහයන් සිදු කර ඇත. කරුණාකර නැවත උත්සාහ කරන්න: තත්පර තත්පර.","auth.sign_out":"වරන්න","auth.sign_in":"පුරන්න","auth.sign_in_using":"Sign in using","auth.or_continue_with":"You an also continue with:","auth.sign_in_using_security_device":"Sign in using a security device","auth.login_and_password":"login & password","auth.register":"ලියාපදිංචි වන්න","auth.welcome_to_2fauth":"Welcome to 2FAuth","auth.autolock_triggered":"Auto lock triggered","auth.autolock_triggered_punchline":"Auto-lock triggered, you've been logged out","auth.already_authenticated":"Already authenticated, please log out first","auth.authentication":"Authentication","auth.maybe_later":"Maybe later","auth.user_account_controlled_by_proxy":"User account made available by an authentication proxy.
Manage the account at proxy level.","auth.auth_handled_by_proxy":"Authentication handled by a reverse proxy, below settings are disabled.
Manage authentication at proxy level.","auth.confirm.logout":"Are you sure you want to log out?","auth.confirm.revoke_device":"Are you sure you want to revoke this device?","auth.confirm.delete_account":"Are you sure you want to delete your account?","auth.webauthn.security_device":"a security device","auth.webauthn.security_devices":"Security devices","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

- WebAuthn allows you to use trusted devices (like Yubikeys or smartphones with biometric capabilities) to sign in quickly and more securely.`,"auth.webauthn.use_security_device_to_sign_in":"Get ready to authenticate using (one of) your security devices. Plug your key in, remove face mask or gloves, etc.","auth.webauthn.lost_your_device":"Lost your device?","auth.webauthn.recover_your_account":"Recover your account","auth.webauthn.account_recovery":"Account recovery","auth.webauthn.recovery_punchline":"2FAuth will send you a recovery link to this email address. Click the link in the received email and follow the instructions.

Ensure you open the email on a device you fully own.","auth.webauthn.send_recovery_link":"Send recovery link","auth.webauthn.account_recovery_email_sent":"Account recovery email sent!","auth.webauthn.disable_all_security_devices":"Disable all security devices","auth.webauthn.disable_all_security_devices_help":"All your security devices will be revoked. Use this option if you have lost one or its security has been compromised.","auth.webauthn.register_a_new_device":"Register a new device","auth.webauthn.register_a_device":"Register a device","auth.webauthn.device_successfully_registered":"Device successfully registered","auth.webauthn.device_revoked":"Device successfully revoked","auth.webauthn.revoking_a_device_is_permanent":"Revoking a device is permanent","auth.webauthn.recover_account_instructions":"To recover your account, 2FAuth resets some Webauthn settings so you will be able to sign in using your email and password.","auth.webauthn.invalid_recovery_token":"Invalid recovery token","auth.webauthn.webauthn_login_disabled":"Webauthn login disabled","auth.webauthn.invalid_reset_token":"This reset token is invalid.","auth.webauthn.rename_device":"Rename device","auth.webauthn.my_device":"My device","auth.webauthn.unknown_device":"Unknown device","auth.webauthn.use_webauthn_only.label":"Use WebAuthn only","auth.webauthn.use_webauthn_only.help":`Make WebAuthn the only authorized method to log into your 2FAuth account. This is the recommended setup to take advantage of the WebAuthn enhanced security.

- In case of device lost, you will be able to recover your account by resetting this option and signing in using your email and password.

+/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"auth.failed":"මෙම අක්තපත්ර අපගේ වාර්තා වලට ගැලපෙන්නේ නැත.","auth.password":"The provided password is incorrect.","auth.throttle":"බොහෝ පිවිසුම් උත්සහයන් සිදු කර ඇත. කරුණාකර නැවත උත්සාහ කරන්න: තත්පර තත්පර.","auth.sign_out":"වරන්න","auth.sign_in":"පුරන්න","auth.sign_in_using":"Sign in using","auth.or_continue_with":"You an also continue with:","auth.sign_in_using_security_device":"Sign in using a security device","auth.login_and_password":"login & password","auth.register":"ලියාපදිංචි වන්න","auth.welcome_to_2fauth":"Welcome to 2FAuth","auth.autolock_triggered":"Auto lock triggered","auth.autolock_triggered_punchline":"Auto-lock triggered, you've been logged out","auth.already_authenticated":"Already authenticated, please log out first","auth.authentication":"Authentication","auth.maybe_later":"Maybe later","auth.user_account_controlled_by_proxy":"User account made available by an authentication proxy.
Manage the account at proxy level.","auth.auth_handled_by_proxy":"Authentication handled by a reverse proxy, below settings are disabled.
Manage authentication at proxy level.","auth.confirm.logout":"Are you sure you want to log out?","auth.confirm.revoke_device":"Are you sure you want to revoke this device?","auth.confirm.delete_account":"Are you sure you want to delete your account?","auth.webauthn.security_device":"a security device","auth.webauthn.security_devices":"Security devices","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

\r + WebAuthn allows you to use trusted devices (like Yubikeys or smartphones with biometric capabilities) to sign in quickly and more securely.`,"auth.webauthn.use_security_device_to_sign_in":"Get ready to authenticate using (one of) your security devices. Plug your key in, remove face mask or gloves, etc.","auth.webauthn.lost_your_device":"Lost your device?","auth.webauthn.recover_your_account":"Recover your account","auth.webauthn.account_recovery":"Account recovery","auth.webauthn.recovery_punchline":"2FAuth will send you a recovery link to this email address. Click the link in the received email and follow the instructions.

Ensure you open the email on a device you fully own.","auth.webauthn.send_recovery_link":"Send recovery link","auth.webauthn.account_recovery_email_sent":"Account recovery email sent!","auth.webauthn.disable_all_security_devices":"Disable all security devices","auth.webauthn.disable_all_security_devices_help":"All your security devices will be revoked. Use this option if you have lost one or its security has been compromised.","auth.webauthn.register_a_new_device":"Register a new device","auth.webauthn.register_a_device":"Register a device","auth.webauthn.device_successfully_registered":"Device successfully registered","auth.webauthn.device_revoked":"Device successfully revoked","auth.webauthn.revoking_a_device_is_permanent":"Revoking a device is permanent","auth.webauthn.recover_account_instructions":"To recover your account, 2FAuth resets some Webauthn settings so you will be able to sign in using your email and password.","auth.webauthn.invalid_recovery_token":"Invalid recovery token","auth.webauthn.webauthn_login_disabled":"Webauthn login disabled","auth.webauthn.invalid_reset_token":"This reset token is invalid.","auth.webauthn.rename_device":"Rename device","auth.webauthn.my_device":"My device","auth.webauthn.unknown_device":"Unknown device","auth.webauthn.use_webauthn_only.label":"Use WebAuthn only","auth.webauthn.use_webauthn_only.help":`Make WebAuthn the only authorized method to log into your 2FAuth account. This is the recommended setup to take advantage of the WebAuthn enhanced security.

\r + In case of device lost, you will be able to recover your account by resetting this option and signing in using your email and password.

\r Attention! The Email & Password form remains available despite this option being enabled, but it will always return an 'Authentication failed' response.`,"auth.webauthn.need_a_security_device_to_enable_options":"Set at least one device to enable the following options","auth.forms.name":"නම","auth.forms.login":"පිවිසෙන්න","auth.forms.webauthn_login":"WebAuthn login","auth.forms.email":"විද්‍යුත් තැපෑල","auth.forms.password":"මුර පදය","auth.forms.reveal_password":"Reveal password","auth.forms.hide_password":"Hide password","auth.forms.confirm_password":"මුරපදය තහවුරු කරන්න","auth.forms.new_password":"New password","auth.forms.confirm_new_password":"නව මුර පදය තහවුරු කරන්න","auth.forms.dont_have_account_yet":"Don't have your account yet?","auth.forms.already_register":"දැනටමත් ලියාපදිංචි වී ඇත්ද ?","auth.forms.authentication_failed":"Authentication failed","auth.forms.forgot_your_password":"මුරපදය අමතක වුනාද?","auth.forms.request_password_reset":"නැවත සකසන්න","auth.forms.reset_your_password":"Reset your password","auth.forms.reset_password":"මුරපදය නැවත සකසන්න","auth.forms.disabled_in_demo":"Feature disabled in Demo mode","auth.forms.current_password.label":"වත්මන් මුරපදය","auth.forms.current_password.help":"Fill in your current password to confirm that it's you","auth.forms.change_password":"මුරපදය වෙනස් කරන්න","auth.forms.send_password_reset_link":"මුරපදය නැවත සැකසීමේ සබැඳිය යවන්න","auth.forms.password_successfully_changed":"මුරපදය සාර්ථකව වෙනස් කෙරිණි","auth.forms.edit_account":"ගිණුම සංස්කරණය","auth.forms.profile_saved":"පැතිකඩ සාර්ථකව යාවත්කාල කෙරිණි!","auth.forms.welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Welcome to the 2FAuth testing instance.

Use email address testing@2fauth.app and password password","auth.forms.register_punchline":"Welcome to 2FAuth.
You need an account to go further, please register yourself.","auth.forms.reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password.","auth.forms.name_this_device":"Name this device","auth.forms.delete_account":"Delete account","auth.forms.delete_your_account":"Delete your account","auth.forms.delete_your_account_and_reset_all_data":"Your user account will be deleted as well as all your 2FA data. There is no going back.","auth.forms.reset_your_password_to_delete_your_account":"If you always used SSO to sign in, sign out then use the reset password feature to get a password so you can fill this form.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Deleting your 2FAuth account has no impact on your external SSO account.","auth.forms.user_account_successfully_deleted":"User account successfully deleted","auth.forms.has_lower_case":"Has lower case","auth.forms.has_upper_case":"Has upper case","auth.forms.has_special_char":"Has special char","auth.forms.has_number":"Has number","auth.forms.is_long_enough":"8 characters min.","auth.forms.mandatory_rules":"Mandatory","auth.forms.optional_rules_you_should_follow":"Recommanded (highly)","auth.forms.caps_lock_is_on":"Caps lock is On","commons.cancel":"අවලංගු","commons.update":"යාවත්කාල","commons.copy":"Copy","commons.copy_to_clipboard":"පසුරුපුවරුවට පිටපත්","commons.copied_to_clipboard":"පසුරුපුවරුවට පිටපත් කෙරිණි","commons.profile":"පැතිකඩ","commons.edit":"සංස්කරණය","commons.delete":"Delete","commons.disable":"Disable","commons.enable":"Enable","commons.create":"සාදන්න","commons.save":"සුරකින්න","commons.close":"වසන්න","commons.clear":"Clear","commons.clear_search":"Clear search","commons.demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","commons.testing_do_not_post_sensitive_data":"This is a testing app, do not post any sensitive data","commons.selected":"selected","commons.name":"නම","commons.manage":"Manage","commons.done":"Done","commons.new":"නව","commons.back":"ආපසු","commons.move":"Move","commons.export":"Export","commons.all":"සියල්ල","commons.select_all":"Select all","commons.clear_selection":"Clear selection","commons.sort_descending":"Sort descending","commons.sort_ascending":"Sort ascending","commons.rename":"නැවත නම්කරන්න","commons.new_name":"New name","commons.options":"විකල්ප","commons.reload":"නැවත පූරණය","commons.refresh":"Refresh","commons.data_refreshed_to_reflect_server_changes":"Data has been refresh to reflect server-side changes","commons.generate":"Generate","commons.generating_otp":"Generating OTP","commons.open_in_browser":"Open in browser","commons.continue":"Continue","commons.discard":"Discard","commons.about":"About","commons.usefull_links":"Usefull links","commons.environment":"Environment","commons.credits":"Credits","commons.2fauth_teaser":"A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes","commons.made_with":"Made with","commons.ui_icons_by":"UI Icons by","commons.logos_by":"Logos by","commons.search":"Search","commons.resources":"Resources","commons.check_for_update":"Check for new version","commons.check_for_update_help":"Automatically check (once a week) and warn when a new release of 2FAuth is published on Github","commons.you_are_up_to_date":"This instance is up-to-date","commons.2fauth_description":"A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes","commons.image_of_qrcode_to_scan":"Image of a QR code to scan","commons.file":"File","commons.or":"OR","commons.close_the_x_page":"Close the :pagetitle page","commons.submit":"Submit","commons.default":"Default","commons.back_to_home":"Back to home","commons.nothing":"nothing","errors.resource_not_found":"Resource not found","errors.error_occured":"An error occured:","errors.refresh":"නැවුම් කරන්න","errors.no_valid_otp":"No valid OTP resource in this QR code","errors.something_wrong_with_server":"Something is wrong with your server","errors.Unable_to_decrypt_uri":"Unable to decrypt uri","errors.not_a_supported_otp_type":"This OTP format is not currently supported","errors.cannot_create_otp_without_secret":"Cannot create an OTP without a secret","errors.data_of_qrcode_is_not_valid_URI":"The data of this QR code is not a valid OTP Auth URI. The QR code contains:","errors.wrong_current_password":"Wrong current password, nothing has changed","errors.error_during_encryption":"Encryption failed, your database remains unprotected.","errors.error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","errors.qrcode_cannot_be_read":"This QR code is unreadable","errors.too_many_ids":"too many ids were included in the query parameter, max 100 allowed","errors.delete_user_setting_only":"Only user-created setting can be deleted","errors.indecipherable":"*indecipherable*","errors.cannot_decipher_secret":"The secret cannot be deciphered. This is mainly caused by a wrong APP_KEY set in the .env configuration file of 2Fauth or a corrupted data stored in database.","errors.https_required":"HTTPS context required","errors.browser_does_not_support_webauthn":"Your device does not support webauthn. Try again later using a more modern browser","errors.aborted_by_user":"Aborted by user","errors.security_device_already_registered":"Device already registered","errors.not_allowed_operation":"Operation not allowed","errors.no_authenticator_support_specified_algorithms":"No authenticators support specified algorithms","errors.authenticator_missing_discoverable_credential_support":"Authenticator missing discoverable credential support","errors.authenticator_missing_user_verification_support":"Authenticator missing user verification support","errors.unknown_error":"Unknown error","errors.security_error_check_rpid":"Security error
Check your WEBAUTHN_ID env var","errors.2fauth_has_not_a_valid_domain":"2FAuth's domain is not a valid domain","errors.user_id_not_between_1_64":"User ID was not between 1 and 64 chars","errors.no_entry_was_of_type_public_key":'No entry was of type "public-key"',"errors.unsupported_with_reverseproxy":"Not applicable when using an auth proxy","errors.user_deletion_failed":"User account deletion failed, no data have been deleted","errors.auth_proxy_failed":"Proxy authentication failed","errors.auth_proxy_failed_legend":"2Fauth is configured to run behind an authentication proxy but your proxy does not return the expected header. Check your configuration and try again.","errors.invalid_x_migration":"Invalid or unreadable :appname data","errors.invalid_2fa_data":"Invalid 2FA data","errors.unsupported_migration":"Data do not match any supported format","errors.unsupported_otp_type":"Unsupported OTP type","errors.encrypted_migration":"Unreadable, the data seem encrypted","errors.no_logo_found_for_x":"No logo available for :service","errors.file_upload_failed":"File upload failed","errors.unauthorized":"Unauthorized","errors.unauthorized_legend":"You do not have permissions to view this resource or to perform this action","errors.cannot_delete_the_only_admin":"Cannot delete the only admin account","errors.error_during_data_fetching":"💀 Something went wrong during data fetching","errors.check_failed_try_later":"Check failed, please retry later","errors.sso_disabled":"SSO is disabled","errors.sso_bad_provider_setup":"This SSO provider is not fully setup in your .env file","errors.sso_failed":"Authentication via SSO rejected","errors.sso_no_register":"Registrations are disabled","errors.sso_email_already_used":"A user account with the same email address already exists but it does not match your external account ID. Do not use SSO if you are already registered on 2FAuth with this email.","errors.account_managed_by_external_provider":"Account managed by an external provider","groups.groups":"සමූහ","groups.create_group":"Create new group","groups.show_group_selector":"Show group selector","groups.hide_group_selector":"Hide group selector","groups.select_accounts_to_show":"Select accounts group to show","groups.manage_groups":"Manage groups","groups.active_group":"ක්‍රියාත්මක සමූහය","groups.manage_groups_legend":"You can create groups to organize your accounts the way you want. All accounts remain visible in the pseudo group named 'All', regardless of the group they belong to.","groups.deleting_group_does_not_delete_accounts":"Deleting a group does not delete accounts","groups.move_selected_to":"Move selected to","groups.move_selected_to_group":"Move selected into a group","groups.no_group":"සමූහ නැත","groups.change_group":"Change group","groups.group_successfully_created":"Group successfully created","groups.group_name_saved":"Group name saved","groups.group_successfully_deleted":"Group successfully deleted","groups.forms.new_group":"නව සමූහය","groups.forms.new_name":"නව නම","groups.forms.rename_group":"සමූහය නැවත නම් කිරීම","groups.confirm.delete":"Are you sure you want to delete this group?","languages.browser_preference":"Browser preference","languages.en":"ඉංග්‍රීසි","languages.fr":"ප්‍රංශ","languages.de":"ජර්මානු","languages.es":"Spanish","languages.zh":"Chinese Simplified","languages.ru":"Russian","languages.bg":"Bulgarian","pagination.previous":"« පෙර","pagination.next":"ඊළඟ »","passwords.reset":"ඔබගේ මුරපදය යළි සැකසිනි!","passwords.sent":"ඔබගේ රහස් පද යළි සකසන සබැඳිය අප විසින් ඊ-තැපැල් කර ඇත!","passwords.throttled":"නැවත උත්සහා කිරීමට පෙර,මදක් රැදිසිටින්න.","passwords.token":"මෙම මුරපද යළි පිහිටුවීමේ ටෝකනය වලංගු නොවේ.","passwords.user":"අපට එම විද්යුත් තැපැල් ලිපිනය සමඟ පරිශීලකයෙකු සොයා ගත නොහැක.","passwords.password":"Passwords must be at least eight characters and match the confirmation.","settings.settings":"සැකසුම්","settings.preferences":"Preferences","settings.account":"ගිණුම","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Tokens","settings.options":"විකල්ප","settings.user_preferences":"User preferences","settings.admin_settings":"Admin settings","settings.confirm.revoke":"Are you sure you want to revoke this token?","settings.administration":"Administration","settings.administration_legend":"While previous settings are user settings (every user can set its own preferences), following settings are global and apply to all users.","settings.only_an_admin_can_edit_them":"Only an administrator can view and edit them.","settings.you_are_administrator":"You are an administrator","settings.account_linked_to_sso_x_provider":"You signed-in via SSO using your :provider account. Your information cannot be changed here but on :provider.","settings.general":"General","settings.security":"ආරක්ෂාව","settings.profile":"Profile","settings.change_password":"Change password","settings.personal_access_tokens":"Personal access tokens","settings.token_legend":"Personal Access Tokens allow any app to authenticate to the 2Fauth API. You should specify the access token as a Bearer token in the authorization header of consumer apps requests.","settings.generate_new_token":"Generate a new token","settings.revoke":"Revoke","settings.token_revoked":"Token successfully revoked","settings.revoking_a_token_is_permanent":"Revoking a token is permanent","settings.make_sure_copy_token":"Make sure to copy your personal access token now. You won’t be able to see it again!","settings.data_input":"දත්ත ආදානය","settings.forms.edit_settings":"සැකසුම් සංස්කරණය","settings.forms.setting_saved":"සැකසුම් සුරැකිණි","settings.forms.new_token":"New token","settings.forms.some_translation_are_missing":"Some translations are missing using the browser preferred language?","settings.forms.help_translate_2fauth":"Help translate 2FAuth","settings.forms.language.label":"භාෂාව","settings.forms.language.help":"Language used to translate the 2FAuth user interface. Named languages are complete, set the one of your choice to override your browser preference.","settings.forms.show_otp_as_dot.label":'Show generated OTP as dot',"settings.forms.show_otp_as_dot.help":"Replace generated password caracters with *** to ensure confidentiality. Do not affect the copy/paste feature","settings.forms.reveal_dotted_otp.label":'Reveal obscured OTP',"settings.forms.reveal_dotted_otp.help":"Let the ability to temporarily reveal Dot-Obscured passwords","settings.forms.close_otp_on_copy.label":'Close OTP after copy',"settings.forms.close_otp_on_copy.help":"Clicking a generated password to copy it automatically hide it from the screen","settings.forms.copy_otp_on_display.label":'Copy OTP on display',"settings.forms.copy_otp_on_display.help":'Automatically copy a generated password right after it appears on screen. Due to browsers limitations, only the first TOTP password will be copied, not the rotating ones',"settings.forms.use_basic_qrcode_reader.label":"Use basic QR code reader","settings.forms.use_basic_qrcode_reader.help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader","settings.forms.display_mode.label":"Display mode","settings.forms.display_mode.help":"Choose whether you want accounts to be displayed as a list or as a grid","settings.forms.password_format.label":"Password formatting","settings.forms.password_format.help":"Change how the passwords are displayed by grouping digits to ease readability and memorization","settings.forms.pair":"by Pair","settings.forms.pair_legend":"Group digits two by two","settings.forms.trio_legend":"Group digits three by three","settings.forms.half_legend":"Split digits into two equals groups","settings.forms.trio":"by Trio","settings.forms.half":"by Half","settings.forms.grid":"Grid","settings.forms.list":"List","settings.forms.theme.label":"Theme","settings.forms.theme.help":"Force a specific theme or apply the theme defined in your system/browser preferences","settings.forms.light":"Light","settings.forms.dark":"Dark","settings.forms.automatic":"Auto","settings.forms.show_accounts_icons.label":"නිරූපක පෙන්වන්න","settings.forms.show_accounts_icons.help":"Show icons accounts in the main view","settings.forms.get_official_icons.label":"Get official icons","settings.forms.get_official_icons.help":"(Try to) Get the official icon of the 2FA issuer when adding an account","settings.forms.auto_lock.label":"ස්වයං අගුලුවැටීම","settings.forms.auto_lock.help":"Log out the user automatically in case of inactivity. Has no effect when authentication is handled by a proxy and no custom logout url is specified.","settings.forms.use_encryption.label":"Protect sensible data","settings.forms.use_encryption.help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key.","settings.forms.default_group.label":"Default group","settings.forms.default_group.help":"The group to which the newly created accounts are associated","settings.forms.useDirectCapture.label":"සෘජු ආදානය","settings.forms.useDirectCapture.help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode","settings.forms.defaultCaptureMode.label":"Default input mode","settings.forms.defaultCaptureMode.help":"Default input mode used when the Direct input option is On","settings.forms.remember_active_group.label":"Remember group filter","settings.forms.remember_active_group.help":"Save the last group filter applied and restore it on your next visit","settings.forms.disable_registration.label":"Disable registration","settings.forms.disable_registration.help":"Prevent new user registration. This affects SSO as well, so new SSO users won't be able to sign on","settings.forms.enable_sso.label":"Enable Single Sign-On (SSO)","settings.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","settings.forms.otp_generation.label":"Show Password","settings.forms.otp_generation.help":'Set how and when OTPs are displayed.
',"settings.forms.otp_generation_on_request":"After a click/tap","settings.forms.otp_generation_on_request_legend":"Alone, in its own view","settings.forms.otp_generation_on_request_title":"Click an account to get a password in a dedicated view","settings.forms.otp_generation_on_home":"Constantly","settings.forms.otp_generation_on_home_legend":"All of them, on home","settings.forms.otp_generation_on_home_title":"Show all passwords in the main view, without doing anything","settings.forms.never":"Never","settings.forms.on_otp_copy":"On security code copy","settings.forms.1_minutes":"විනාඩි 1කට පසු","settings.forms.5_minutes":"විනාඩි 5කට පසු","settings.forms.10_minutes":"විනාඩි 10කට පසු","settings.forms.15_minutes":"විනාඩි 15කට පසු","settings.forms.30_minutes":"විනාඩි 30කට පසු","settings.forms.1_hour":"පැය 1කට පසු","settings.forms.1_day":"දිනකට පසු","settings.forms.livescan":"QR code livescan","settings.forms.upload":"QR code upload","settings.forms.advanced_form":"Advanced form","titles.404":"Item not found","titles.start":"New account","titles.capture":"Flash QR","titles.accounts":"Accounts","titles.createAccount":"Create account","titles.importAccounts":"Import accounts","titles.editAccount":"Account edit","titles.showQRcode":"Account as QR code","titles.groups":"Groups","titles.createGroup":"Create group","titles.editGroup":"Group edit","titles.settings.options":"Options","titles.settings.account":"User account","titles.settings.oauth.tokens":"OAuth tokens","titles.settings.oauth.generatePAT":"New personal token","titles.settings.webauthn.editCredential":"Device edit","titles.settings.webauthn.devices":"WebAuthn devices","titles.login":"Login","titles.register":"Register","titles.autolock":"Auto lock","titles.password.request":"Reset password","titles.password.reset":"New password","titles.webauthn.lost":"Account recovery","titles.webauthn.recover":"Register a new device","titles.flooded":"Flood","titles.genericError":"Error","titles.about":"About","twofaccounts.service":"සේවාව","twofaccounts.account":"ගිණුම","twofaccounts.accounts":"ගිණුම්","twofaccounts.icon":"නිරූපකය","twofaccounts.icon_for_account_x_at_service_y":"Icon of the :account account at :service","twofaccounts.icon_to_illustrate_the_account":"Icon that illustrates the account","twofaccounts.remove_icon":"Remove icon","twofaccounts.no_account_here":"No 2FA here!","twofaccounts.add_first_account":"Pick a method and add your first account","twofaccounts.use_full_form":"Or use the full form","twofaccounts.add_one":"Add one","twofaccounts.show_qrcode":"Show QR code","twofaccounts.no_service":"- no service -","twofaccounts.account_created":"Account successfully created","twofaccounts.account_updated":"Account successfully updated","twofaccounts.accounts_deleted":"Account(s) successfully deleted","twofaccounts.accounts_moved":"Account(s) successfully moved","twofaccounts.export_selected_to_json":"Download a json export of selected accounts","twofaccounts.reveal":"reveal","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"ජෝන් ඩොයි","twofaccounts.forms.new_account":"නව ගිණුම","twofaccounts.forms.edit_account":"ගිණුම සංස්කරණය","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Scan a QR code","twofaccounts.forms.upload_qrcode":"Upload a QR code","twofaccounts.forms.use_advanced_form":"Use the advanced form","twofaccounts.forms.prefill_using_qrcode":"Prefill using a QR Code","twofaccounts.forms.use_qrcode.val":"Use a qrcode","twofaccounts.forms.use_qrcode.title":"Use a QR code to fill the form magically","twofaccounts.forms.unlock.val":"Unlock","twofaccounts.forms.unlock.title":"Unlock it (at your own risk)","twofaccounts.forms.lock.val":"Lock","twofaccounts.forms.lock.title":"එය අගුළුලන්න","twofaccounts.forms.choose_image":"Upload","twofaccounts.forms.i_m_lucky":"Try my luck","twofaccounts.forms.i_m_lucky_legend":'The "Try my luck" button try to get the official icon of the given service. Enter actual service name without ".xyz" extension and try to avoid typo. (beta feature)',"twofaccounts.forms.test":"අත්හදා බලන්න","twofaccounts.forms.secret.label":"රහස","twofaccounts.forms.secret.help":"The key used to generate your security codes","twofaccounts.forms.plain_text":"Plain text","twofaccounts.forms.otp_type.label":'Choose the type of OTP to create',"twofaccounts.forms.otp_type.help":"Time-based OTP or HMAC-based OTP or Steam OTP","twofaccounts.forms.digits.label":"Digits","twofaccounts.forms.digits.help":"The number of digits of the generated security codes","twofaccounts.forms.algorithm.label":"Algorithm","twofaccounts.forms.algorithm.help":"The algorithm used to secure your security codes","twofaccounts.forms.period.label":"Period","twofaccounts.forms.period.placeholder":"Default is 30","twofaccounts.forms.period.help":"The period of validity of the generated security codes in second","twofaccounts.forms.counter.label":"Counter","twofaccounts.forms.counter.placeholder":"Default is 0","twofaccounts.forms.counter.help":"The initial counter value","twofaccounts.forms.counter.help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing","twofaccounts.forms.image.label":"Image","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"The url of an external image to use as the account icon","twofaccounts.forms.options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","twofaccounts.forms.alternative_methods":"Alternative methods","twofaccounts.stream.live_scan_cant_start":"Live scan can't start :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth does not have permission to access your camera","twofaccounts.stream.need_grant_permission.solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission.","twofaccounts.stream.need_grant_permission.click_camera_icon":"It is usually done by clicking on a slashed camera icon in or next to the browser's address bar","twofaccounts.stream.not_readable.reason":"Fail to load scanner","twofaccounts.stream.not_readable.solution":"Is the camera already in use? Ensure that no other app use your camera and try again","twofaccounts.stream.no_cam_on_device.reason":"No camera on this device","twofaccounts.stream.no_cam_on_device.solution":"Maybe you forgot to plug in your webcam","twofaccounts.stream.secured_context_required.reason":"Secure context required","twofaccounts.stream.secured_context_required.solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost","twofaccounts.stream.https_required":"HTTPS required for camera streaming","twofaccounts.stream.camera_not_suitable.reason":"Installed cameras are not suitable","twofaccounts.stream.camera_not_suitable.solution":"Please use another device/camera","twofaccounts.stream.stream_api_not_supported.reason":"Stream API is not supported in this browser","twofaccounts.stream.stream_api_not_supported.solution":"You should use a modern browser","twofaccounts.confirm.delete":"Are you sure you want to delete this account?","twofaccounts.confirm.cancel":"Changes will be lost. Are you sure?","twofaccounts.confirm.discard":"Are you sure you want to discard this account?","twofaccounts.confirm.discard_all":"Are you sure you want to discard all accounts?","twofaccounts.confirm.discard_duplicates":"Are you sure you want to discard all duplicates?","twofaccounts.import.import":"Import","twofaccounts.import.to_import":"Import","twofaccounts.import.import_legend":"2FAuth can import data from various 2FA apps.","twofaccounts.import.import_legend_afterpart":"Use the Export feature of these apps to get a migration resource like a QR code or a JSON file then load it here.","twofaccounts.import.upload":"Upload","twofaccounts.import.scan":"Scan","twofaccounts.import.supported_formats_for_qrcode_upload":"Accepted: jpg, jpeg, png, bmp, gif, svg, or webp","twofaccounts.import.supported_formats_for_file_upload":"Accepted: Plain text, json, 2fas","twofaccounts.import.supported_migration_formats":"Supported migration formats","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Text file","twofaccounts.import.plain_text":"Plain text","twofaccounts.import.parsing_data":"Parsing data...","twofaccounts.import.issuer":"Issuer","twofaccounts.import.imported":"Imported","twofaccounts.import.failure":"Failure","twofaccounts.import.x_valid_accounts_found":":count valid accounts found","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"The following 2FA accounts were found in the migration resource. So far none of them have been added to 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Use the available buttons to permanently save them to your 2FA collection or discard them.","twofaccounts.import.import_all":"Import all","twofaccounts.import.import_this_account":"Import this account","twofaccounts.import.discard_all":"Discard all","twofaccounts.import.discard_duplicates":"Discard duplicates","twofaccounts.import.discard_this_account":"Discard this account","twofaccounts.import.generate_a_test_password":"Generate a test pasword","twofaccounts.import.possible_duplicate":"An account with the exact same data already exists","twofaccounts.import.invalid_account":"- invalid account -","twofaccounts.import.invalid_service":"- invalid service -","twofaccounts.import.do_not_set_password_or_encryption":"Do NOT enable Password protection or Encryption when you export data from a 2FA app otherwise 2FAuth will not be able to decipher them.","validation.accepted":"මෙම :attribute පිළිගත යුතුය.","validation.accepted_if":"The :attribute must be accepted when :other is :value.","validation.active_url":"මෙම :attribute වලංගු සබැඳි එකක් නොවේ.","validation.after":"මෙම :attribute පසු දිනය විය යුතුය :date.","validation.after_or_equal":"මෙම :attribute පසුව හෝ ඊට සමාන දිනයකි :date.","validation.alpha":"The :attribute must only contain letters.","validation.alpha_dash":"The :attribute must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The :attribute must only contain letters and numbers.","validation.array":"මෙම :attribute අරාව විය යුතුය.","validation.before":"මෙම :attribute පෙර දින විය යුතුය :date.","validation.before_or_equal":"මෙම :attribute පෙර හෝ ඊට සමාන දිනයකි :date.","validation.between.array":"මෙම :attribute අතර තිබිය යුතුය :min සහ :max අයිතම.","validation.between.file":"මෙම :attribute අතර විය යුතුය :min සහ :max කිලෝ බයිට ගණන.","validation.between.numeric":"මෙම :attribute අතර විය යුතුය :min සහ :max.","validation.between.string":"මෙම :attribute අතර විය යුතුය :min සහ :max ප්රමාණය.","validation.boolean":"මෙම :attribute ක්ෂේත්ර සත්ය හෝ අසත්ය විය යුතුය.","validation.confirmed":"මෙම :attribute තහවුරු කිරීම නොගැලපේ.","validation.current_password":"The password is incorrect.","validation.date":"මෙම :attribute වලංගු දිනය නොවේ.","validation.date_equals":"මෙම :attribute දිනකට සමාන විය යුතුය :date.","validation.date_format":"මෙම :attribute ආකෘතියට ගැළපෙන්නේ නැත :format.","validation.declined":"The :attribute must be declined.","validation.declined_if":"The :attribute must be declined when :other is :value.","validation.different":"මෙම :attribute සහ :other වෙනස් විය යුතුය.","validation.digits":"මෙම :attribute විය යුතුය :digits ඉලක්කම්.","validation.digits_between":"මෙම :attribute විය යුතුය අතර :min සහ :max ඉලක්කම්.","validation.dimensions":"මෙම :attribute වලංගු නොවන පිළිබිඹුවක් ඇත.","validation.distinct":"මෙම :attribute ක්ෂේත්රයේ අනුපිටපත් වටිනාකමක් ඇත.","validation.doesnt_end_with":"The :attribute may not end with one of the following: :values.","validation.doesnt_start_with":"The :attribute may not start with one of the following: :values.","validation.email":"මෙම :attribute වලංගු විද්යුත් තැපැල් ලිපිනයක් විය යුතුය.","validation.ends_with":"The :attribute must end with one of the following: :values.","validation.enum":"The selected :attribute is invalid.","validation.exists":"මෙම තෝරා ඇත :attribute අවලංගුයි.","validation.file":"මෙම :attribute ගොනුවක් විය යුතුය.","validation.filled":"මෙම :attribute ක්ෂේත්රයේ වටිනාකමක් තිබිය යුතුය.","validation.gt.array":"මෙම :attribute වඩා වැඩි විය යුතුය :value අයිතම.","validation.gt.file":"මෙම :attribute වඩා විශාල විය යුතුය :value කිලෝ බයිට ගණන.","validation.gt.numeric":"මෙම :attribute වඩා විශාල විය යුතුය :value.","validation.gt.string":"මෙම :attribute වඩා විශාල විය යුතුය :value ප්රමාණය.","validation.gte.array":"මෙම :attribute තිබිය යුතු :value අයිතම හෝ ඊට වැඩි.","validation.gte.file":"The :attribute must be greater than or equal to :value kilobytes.","validation.gte.numeric":"The :attribute must be greater than or equal to :value.","validation.gte.string":"The :attribute must be greater than or equal to :value characters.","validation.image":"මෙම :attribute රූපයක් විය යුතුය.","validation.in":"මෙම තෝරා ඇත :attribute අවලංගුයි.","validation.in_array":"මෙම :attribute ක්ෂේත්රයේ නොපවතින :other.","validation.integer":"මෙම :attribute පූර්ණ සංඛ්යාවක් විය යුතුය.","validation.ip":"මෙම :attribute වලංගු IP ලිපිනයක් තිබිය යුතුය.","validation.ipv4":"මෙම :attribute වලංගු IPv4 ලිපිනය විය යුතුය.","validation.ipv6":"මෙම :attribute වලංගු IPv6 ලිපිනය විය යුතුය.","validation.json":"මෙම :attribute වලංගු JSON පේළියකි විය යුතුය.","validation.lt.array":"මෙම :attribute වඩා අඩු විය යුතුය :value අයිතම.","validation.lt.file":"මෙම :attribute වඩා අඩු විය යුතුය :value කිලෝ බයිට ගණන.","validation.lt.numeric":"මෙම :attribute වඩා අඩු විය යුතුය :value.","validation.lt.string":"මෙම :attribute වඩා අඩු විය යුතුය :value ප්රමාණය..","validation.lte.array":"මෙම :attribute වඩා වැඩි නොවිය යුතුය :value අයිතම.","validation.lte.file":"The :attribute must be less than or equal to :value kilobytes.","validation.lte.numeric":"The :attribute must be less than or equal to :value.","validation.lte.string":"The :attribute must be less than or equal to :value characters.","validation.mac_address":"The :attribute must be a valid MAC address.","validation.max.array":"The :attribute must not have more than :max items.","validation.max.file":"The :attribute must not be greater than :max kilobytes.","validation.max.numeric":"The :attribute must not be greater than :max.","validation.max.string":"The :attribute must not be greater than :max characters.","validation.max_digits":"The :attribute must not have more than :max digits.","validation.mimes":"මෙම :attribute වර්ගයේ ගොනුවක් විය යුතුය: :values.","validation.mimetypes":"මෙම :attribute වර්ගයේ ගොනුවක් විය යුතුය: :values.","validation.min.array":"මෙම :attribute අවම වශයෙන් තිබිය යුතුය :min අයිතම.","validation.min.file":"මෙම :attribute අවම වශයෙන් විය යුතුය :min කිලෝ බයිට ගණන..","validation.min.numeric":"මෙම :attribute අවම වශයෙන් විය යුතුය :min.","validation.min.string":"මෙම :attribute අවම වශයෙන් විය යුතුය :min ප්රමාණය..","validation.min_digits":"The :attribute must have at least :min digits.","validation.multiple_of":"The :attribute must be a multiple of :value.","validation.not_in":"මෙම තෝරා ඇත :attribute අවලංගුයි.","validation.not_regex":"මෙම :attribute ආකෘතිය අවලංගුයි.","validation.numeric":"මෙම :attribute අංකයක් විය යුතුය.","validation.password.letters":"The :attribute must contain at least one letter.","validation.password.mixed":"The :attribute must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The :attribute must contain at least one number.","validation.password.symbols":"The :attribute must contain at least one symbol.","validation.password.uncompromised":"The given :attribute has appeared in a data leak. Please choose a different :attribute.","validation.present":"මෙම :attribute ක්ෂේත්රයයි තිබිය යුතුය.","validation.prohibited":"The :attribute field is prohibited.","validation.prohibited_if":"The :attribute field is prohibited when :other is :value.","validation.prohibited_unless":"The :attribute field is prohibited unless :other is in :values.","validation.prohibits":"The :attribute field prohibits :other from being present.","validation.regex":"මෙම :attribute ආකෘතිය අවලංගුයි.","validation.required":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි.","validation.required_array_keys":"The :attribute field must contain entries for: :values.","validation.required_if":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය :other මෙය :value.","validation.required_if_accepted":"The :attribute field is required when :other is accepted.","validation.required_unless":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි මිස :other මෙය :values.","validation.required_with":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය :values තිබිය යුතුය.","validation.required_with_all":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය :values තිබිය යුතුය.","validation.required_without":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය :values තිබිය යුතුය.","validation.required_without_all":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය කිසිවක් of :values තිබිය යුතුය.","validation.same":"මෙම :attribute සහ :other ගැලපිය යුතුයි.","validation.size.array":"මෙම :attribute must contain :size අයිතම.","validation.size.file":"මෙම :attribute විය යුතුය :size කිලෝ බයිට ගණන..","validation.size.numeric":"මෙම :attribute විය යුතුය :size.","validation.size.string":"මෙම :attribute විය යුතුය :size ප්රමාණය..","validation.starts_with":"මෙම :attribute පහත සඳහන් එකක් සමඟ ආරම්භ කළ යුතුය: :values","validation.string":"මෙම :attribute පේළියකි විය යුතුය.","validation.timezone":"The :attribute must be a valid timezone.","validation.unique":"මෙම :attribute දැනටමත් අරගෙන තියෙන්නේ.","validation.uploaded":"මෙම :attribute උඩුගත කිරීම අසාර්ථක විය.","validation.url":"The :attribute must be a valid URL.","validation.uuid":"මෙම :attribute වලංගු UUID විය යුතුය.","validation.single":"When using :attribute it must be the only parameter in this request body","validation.onlyCustomOtpWithUri":"The uri parameter must be provided alone or only in combination with the 'custom_otp' parameter","validation.custom.icon.image":"Supported format are jpeg, png, bmp, gif, svg, or webp.","validation.custom.qrcode.image":"Supported format are jpeg, png, bmp, gif, svg, or webp.","validation.custom.uri.regex":"The :attribute is not a valid otpauth uri.","validation.custom.otp_type.in":"The :attribute is not supported.","validation.custom.email.exists":"No account found using this email.","validation.custom.secret.isBase32Encoded":"The :attribute must be a base32 encoded string.","validation.custom.account.regex":"The :attribute must not contain colon.","validation.custom.service.regex":"The :attribute must not contain colon.","validation.custom.label.required":"The uri must have a label.","validation.custom.ids.regex":"IDs must be comma separated, without trailing comma."};export{e as default}; diff --git a/public/build/assets/php_zh-579d5b22.js b/public/build/assets/php_zh-579d5b22.js new file mode 100644 index 00000000..e22667d5 --- /dev/null +++ b/public/build/assets/php_zh-579d5b22.js @@ -0,0 +1,4 @@ +/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"auth.failed":"用户名或密码错误","auth.password":"提供的密码不正确","auth.throttle":"您尝试的登录次数过多,请 :seconds 秒后再试。","auth.sign_out":"登出","auth.sign_in":"登录","auth.sign_in_using":"登录使用","auth.or_continue_with":"您也可以:","auth.sign_in_using_security_device":"使用安全设备登录","auth.login_and_password":"用户名和密码","auth.register":"注册","auth.welcome_to_2fauth":"欢迎使用 2FAuth","auth.autolock_triggered":"已自动锁定","auth.autolock_triggered_punchline":"自动锁定已触发。您已被自动断开连接。","auth.already_authenticated":"已验证","auth.authentication":"身份认证","auth.maybe_later":"以后再说","auth.user_account_controlled_by_proxy":"用户帐户由身份验证代理提供。
请在代理中管理帐户。","auth.auth_handled_by_proxy":"身份验证由代理处理,下面的设置被禁用。
在代理管理身份验证。","auth.confirm.logout":"您确定要注销吗?","auth.confirm.revoke_device":"你确定要删除此设备?","auth.confirm.delete_account":"您确定要删除您的账户?","auth.webauthn.security_device":"硬件安全密钥","auth.webauthn.security_devices":"安全设备","auth.webauthn.security_devices_legend":"您可以用来登录2FAuth的认证设备,例如安全密钥(如Yubikey)或具有生物识别能力的智能手机(如Apple Face Id/TouchId)","auth.webauthn.enhance_security_using_webauthn":`您可以通过启用 WebAuthn 身份验证来增强您的2FAuth 账户的安全性。

+WebAuthn允许您使用受信任的设备 (如Yubikeys 或具有生物识别能力的智能手机) 快速和更安全地登录。`,"auth.webauthn.use_security_device_to_sign_in":"准备好使用您的(一个)安全设备进行身份验证。请插入您的密钥,移除口罩或手套等。","auth.webauthn.lost_your_device":"设备丢失?","auth.webauthn.recover_your_account":"恢复您的账号","auth.webauthn.account_recovery":"恢复账号","auth.webauthn.recovery_punchline":"2FAuth 将向您发送恢复链接到此电子邮件地址。点击收到电子邮件中的链接注册新的安全设备。

确保在您可以在自己的设备上打开电子邮件。","auth.webauthn.send_recovery_link":"发送恢复链接","auth.webauthn.account_recovery_email_sent":"账号恢复邮件已发送!","auth.webauthn.disable_all_security_devices":"禁用所有安全设备","auth.webauthn.disable_all_security_devices_help":"您的所有安全设备都将被撤销。如果您丢失了一个设备或其安全性已经受到损害,请使用此选项。","auth.webauthn.register_a_new_device":"注册新设备","auth.webauthn.register_a_device":"注册设备","auth.webauthn.device_successfully_registered":"成功注册设备","auth.webauthn.device_revoked":"成功注销设备","auth.webauthn.revoking_a_device_is_permanent":"注销设备是永久性的","auth.webauthn.recover_account_instructions":"若要恢复您的帐户,2FAuth 将会重置一些Webauth设置,以便您可以使用您的电子邮件和密码登录。","auth.webauthn.invalid_recovery_token":"无效的恢复密钥","auth.webauthn.webauthn_login_disabled":"Webauthn 登录已被禁用","auth.webauthn.invalid_reset_token":"此密码重置令牌无效","auth.webauthn.rename_device":"重命名设备","auth.webauthn.my_device":"我的设备","auth.webauthn.unknown_device":"未知设备","auth.webauthn.use_webauthn_only.label":"仅使用 WebAuthn","auth.webauthn.use_webauthn_only.help":`将WebAuthn设定为登录2FAuth账户的唯一授权的登录方式。推荐启用此选项,并利用WebAuth增强安全性。

+ 设备丢失时, 您可以通过重置此选项并使用您的电子邮件和密码登录来恢复您的帐户。

+ 请注意! 尽管启用了此选项,输入电子邮件和密码的登录界面仍然可用,但是会提示 “身份验证失败”。`,"auth.webauthn.need_a_security_device_to_enable_options":"设置至少一个WebAuth设备以启用以下选项","auth.forms.name":"用户名","auth.forms.login":"登录","auth.forms.webauthn_login":"使用 WebAuthn 登录","auth.forms.email":"邮箱","auth.forms.password":"密码","auth.forms.reveal_password":"显示密码","auth.forms.hide_password":"隐藏密码","auth.forms.confirm_password":"确认密码","auth.forms.new_password":"新密码","auth.forms.confirm_new_password":"确认新密码","auth.forms.dont_have_account_yet":"还没有账号?","auth.forms.already_register":"已经注册?","auth.forms.authentication_failed":"验证失败","auth.forms.forgot_your_password":"忘记密码?","auth.forms.request_password_reset":"重置密码","auth.forms.reset_your_password":"重置你的密码","auth.forms.reset_password":"重置密码","auth.forms.disabled_in_demo":"此功能将在演示模式下禁用。","auth.forms.current_password.label":"当前密码","auth.forms.current_password.help":"填写您当前设置的密码以确认是您本人","auth.forms.change_password":"修改密码","auth.forms.send_password_reset_link":"发送密码重置链接","auth.forms.password_successfully_changed":"密码修改成功","auth.forms.edit_account":"编辑账户","auth.forms.profile_saved":"个人资料更新成功!","auth.forms.welcome_to_demo_app_use_those_credentials":"欢迎访问 2FAuth 的演示站点。

您可以使用电子邮件地址 demo@2fauth.app 和密码 demo来登录。","auth.forms.welcome_to_testing_app_use_those_credentials":"欢迎访问 2FAuth 的测试实例。

您可以使用电子邮件地址 testing@2fauth.app 和密码 password来登录。","auth.forms.register_punchline":"欢迎使用 2FAuth
您需要一个账号才能继续,请先完成注册。","auth.forms.reset_punchline":"2FAuth 将向您发送密码重置链接到此邮箱。请点击收到的电子邮件中的链接设置新密码。","auth.forms.name_this_device":"命名此设备","auth.forms.delete_account":"删除账户","auth.forms.delete_your_account":"删除您的账户","auth.forms.delete_your_account_and_reset_all_data":"这将重置您的 2FAuth。您的账号以及所有的 2FA 数据都将被删除,这是一个不可逆的操作。","auth.forms.reset_your_password_to_delete_your_account":"如果您总是使用 SSO 登录, 登出后使用重置密码功能获取密码,以便您可以填写此表格。","auth.forms.deleting_2fauth_account_does_not_impact_provider":"删除您的 2FAuth 帐户对您的外部 SSO 帐户没有影响。","auth.forms.user_account_successfully_deleted":"账号已成功删除","auth.forms.has_lower_case":"包含小写字母","auth.forms.has_upper_case":"包含大写字母","auth.forms.has_special_char":"包含特殊字符","auth.forms.has_number":"包含数字","auth.forms.is_long_enough":"至少 8 个字符","auth.forms.mandatory_rules":"必选项","auth.forms.optional_rules_you_should_follow":"建议(推荐)","auth.forms.caps_lock_is_on":"大写锁定已开启","commons.cancel":"取消","commons.update":"更新","commons.copy":"复制","commons.copy_to_clipboard":"复制到剪贴板","commons.copied_to_clipboard":"已复制到剪贴板","commons.profile":"个人资料","commons.edit":"编辑","commons.delete":"删除","commons.disable":"禁用","commons.enable":"启用","commons.create":"创建","commons.save":"保存","commons.close":"关闭","commons.clear":"清空","commons.clear_search":"清除搜索结果","commons.demo_do_not_post_sensitive_data":"这是一个演示应用,请不要上传任何敏感数据","commons.testing_do_not_post_sensitive_data":"这是一个测试应用,请不要上传任何敏感数据","commons.selected":"项被选中","commons.name":"名称","commons.manage":"管理","commons.done":"完成","commons.new":"新建","commons.back":"返回","commons.move":"移动","commons.export":"导出","commons.all":"全部","commons.select_all":"全选","commons.clear_selection":"清除选择","commons.sort_descending":"降序排列","commons.sort_ascending":"升序排序","commons.rename":"重命名","commons.new_name":"新名称","commons.options":"选项","commons.reload":"刷新","commons.refresh":"刷新","commons.data_refreshed_to_reflect_server_changes":"数据已被刷新以反映服务器侧的更改","commons.generate":"生成","commons.generating_otp":"正在生成 OTP","commons.open_in_browser":"在浏览器中打开","commons.continue":"继续","commons.discard":"放弃","commons.about":"关于","commons.usefull_links":"有用的链接","commons.environment":"环境","commons.credits":"鸣谢","commons.2fauth_teaser":"用于管理您的两步验证 (2FA) 帐户并生成安全码的网页应用","commons.made_with":"基于","commons.ui_icons_by":"UI 图标来自","commons.logos_by":"Logo 来自","commons.search":"搜索​​​​","commons.resources":"资源","commons.check_for_update":"检查更新","commons.check_for_update_help":"自动检查 (每周一次) 并当 2FAuth 在 Github 上发布新版本时发出提醒","commons.you_are_up_to_date":"该实例是最新的","commons.2fauth_description":"用于管理您的两步验证 (2FA) 账户并生成安全码的网页应用","commons.image_of_qrcode_to_scan":"要扫描的二维码图像","commons.file":"文件","commons.or":"或","commons.close_the_x_page":"关闭 {pagetitle} 页","commons.submit":"提交","commons.default":"默认值","commons.back_to_home":"返回首页","commons.nothing":"无","errors.resource_not_found":"资源未找到","errors.error_occured":"发生错误:","errors.refresh":"刷新","errors.no_valid_otp":"此二维码中没有有效的OTP资源","errors.something_wrong_with_server":"服务器发生内部错误","errors.Unable_to_decrypt_uri":"无法解密uri","errors.not_a_supported_otp_type":"不支持此OTP格式","errors.cannot_create_otp_without_secret":"无法在没有密码的情况下创建一个OTP","errors.data_of_qrcode_is_not_valid_URI":"此QR码的数据不是有效的OTP Auth URI。该QR码包含:","errors.wrong_current_password":"当前密码错误,没有发生任何更改","errors.error_during_encryption":"加密失败,您的数据库仍未受到保护","errors.error_during_decryption":"解密失败,您的数据库仍受保护。这通常由一个或多个帐户加密数据的完整性不足导致。","errors.qrcode_cannot_be_read":"二维码无效","errors.too_many_ids":"查询参数中包含太多ID,最多允许 100 个","errors.delete_user_setting_only":"只能删除用户创建的设置","errors.indecipherable":"*无法解析*","errors.cannot_decipher_secret":"密钥不能被解密。这主要是由 2Fauth 的 .env 文件中 APP_KEY 设置错误或存储在数据库中的数据已损坏引发的。","errors.https_required":"需要 HTTPS","errors.browser_does_not_support_webauthn":"您的设备不支持Webauthn。请使用更现代的浏览器重试。","errors.aborted_by_user":"被用户中止。","errors.security_device_already_registered":"设备已被注册过","errors.not_allowed_operation":"不允许此操作","errors.no_authenticator_support_specified_algorithms":"没有身份验证器支持指定的算法","errors.authenticator_missing_discoverable_credential_support":"身份验证器缺少可发现凭据的支持","errors.authenticator_missing_user_verification_support":"身份验证器缺少用户验证支持","errors.unknown_error":"未知错误","errors.security_error_check_rpid":"安全错误
请检查您的 WEBAUTHN_ID env var","errors.2fauth_has_not_a_valid_domain":"2FAuth的域不是一个有效的域","errors.user_id_not_between_1_64":"用户ID不在 1 到 64 个字符内","errors.no_entry_was_of_type_public_key":'没有类型为"公钥"的条目',"errors.unsupported_with_reverseproxy":"使用代理进行认证时不可用","errors.user_deletion_failed":"帐户删除失败,没有数据被删除","errors.auth_proxy_failed":"代理认证失败","errors.auth_proxy_failed_legend":"2Fauth 被配置为在身份验证代理后运行,但您的代理没有返回预期的请求头。请检查您的配置并重试。","errors.invalid_x_migration":"无效或不可读的 :appname 数据","errors.invalid_2fa_data":"无效的2FA数据","errors.unsupported_migration":"数据与任何支持的格式不匹配","errors.unsupported_otp_type":"不支持的 OTP 类型","errors.encrypted_migration":"无法读取,数据似乎已加密","errors.no_logo_found_for_x":"{service} 没有可用的 Logo","errors.file_upload_failed":"文件上传失败","errors.unauthorized":"无权限","errors.unauthorized_legend":"您无权查看此资源或执行此操作","errors.cannot_delete_the_only_admin":"无法删除唯一的管理员账户","errors.error_during_data_fetching":"💀 在获取数据过程中出了问题","errors.check_failed_try_later":"检查失败,请稍后重试","errors.sso_disabled":"SSO 已禁用","errors.sso_bad_provider_setup":"此 SSO 提供商没有在您的 .env 文件中完全设置","errors.sso_failed":"通过 SSO 验证被拒绝","errors.sso_no_register":"注册已禁用","errors.sso_email_already_used":"已存在具有相同电子邮件地址的用户帐户,但它与您的外部帐户ID不匹配。 如果您已经在 2FAuth 上使用此邮箱注册,请不要使用 SSO。","errors.account_managed_by_external_provider":"由外部提供商管理的帐户","groups.groups":"组","groups.create_group":"创建新组","groups.show_group_selector":"显示分组选择器","groups.hide_group_selector":"隐藏分组选择器","groups.select_accounts_to_show":"选择要显示的帐户分组","groups.manage_groups":"管理组","groups.active_group":"活跃组","groups.manage_groups_legend":"您可以创建组以按照您想要的方式组织您的账户。 所有账户在名为“全部”的伪组中仍然可见,无论它们属于哪个组。","groups.deleting_group_does_not_delete_accounts":"删除组不会删除帐户","groups.move_selected_to":"移动选择到","groups.move_selected_to_group":"将所选移入组中","groups.no_group":"没有分组","groups.change_group":"更改组","groups.group_successfully_created":"分组成功创建","groups.group_name_saved":"分组名称已保存","groups.group_successfully_deleted":"分组成功删除","groups.forms.new_group":"新建组","groups.forms.new_name":"新名称","groups.forms.rename_group":"重命名组","groups.confirm.delete":"您确定要删除此组吗?","languages.browser_preference":"使用游览器偏好","languages.en":"English (英语)","languages.fr":"Français (法语)","languages.de":"Deutsch (德语)","languages.es":"Español (西班牙语)","languages.zh":"简体中文 (Chinese Simplified)","languages.ru":"Русский (俄语)","languages.bg":"Български (保加利亚语)","pagination.previous":"« 上一页","pagination.next":"下一页 »","passwords.reset":"密码重置成功!","passwords.sent":"密码重置邮件已发送!","passwords.throttled":"请稍候再试。","passwords.token":"密码重置令牌无效。","passwords.user":"找不到该邮箱对应的用户。","passwords.password":"密码必须包含至少8个字符,且两次输入的内容必须相同。","settings.settings":"设置","settings.preferences":"偏好","settings.account":"账户","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"令牌","settings.options":"选项","settings.user_preferences":"用户偏好","settings.admin_settings":"管理员设置","settings.confirm.revoke":"你确定要吊销此令牌?","settings.administration":"管理","settings.administration_legend":"此前的设置是用户设置(每个用户都可以设置自己的偏好)。以下的设置则是应用于所有用户的全局设置。 只有管理员可以查看和编辑这些设置。","settings.only_an_admin_can_edit_them":"只有管理员可以查看和编辑它们。","settings.you_are_administrator":"您是管理员","settings.account_linked_to_sso_x_provider":"您通过SSO使用您的 :provider 帐户登录。您的信息不能在这里更改,只能在 :provider 。","settings.general":"常规","settings.security":"安全","settings.profile":"配置文件","settings.change_password":"更改密码","settings.personal_access_tokens":"个人访问令牌","settings.token_legend":"个人访问令牌允许任何应用访问 2Fauth API。您应该在第三方应用授权请求头中提供访问令牌作为一个 Bearer 令牌。","settings.generate_new_token":"生成新令牌","settings.revoke":"吊销","settings.token_revoked":"已成功吊销令牌","settings.revoking_a_token_is_permanent":"吊销令牌是永久的","settings.make_sure_copy_token":"请确保您已复制个人访问令牌。令牌将不再显示。","settings.data_input":"数据输入","settings.forms.edit_settings":"编辑设置","settings.forms.setting_saved":"设置已保存","settings.forms.new_token":"新建令牌","settings.forms.some_translation_are_missing":"使用浏览器偏好时缺少一些翻译?","settings.forms.help_translate_2fauth":"帮助翻译 2FAuth","settings.forms.language.label":"语言","settings.forms.language.help":"用来翻译 2FAuth 用户界面的语言。列出的语言已完成翻译,请设置你选择的语言来覆盖你的浏览器偏好。","settings.forms.show_otp_as_dot.label":"用 *** 来显示生成的一次性密码","settings.forms.show_otp_as_dot.help":"将生成的密码替换为 *** 以确保保密。不影响复制和粘贴功能。","settings.forms.reveal_dotted_otp.label":'显示被 *** 隐藏的 OTP',"settings.forms.reveal_dotted_otp.help":"允许临时显示被 *** 隐藏的密码","settings.forms.close_otp_on_copy.label":'复制后关闭 OTP',"settings.forms.close_otp_on_copy.help":"点击生成的密码进行复制,并自动将其从屏幕上隐藏","settings.forms.copy_otp_on_display.label":'在显示时复制 OTP',"settings.forms.copy_otp_on_display.help":'在屏幕显示后自动复制生成的密码。 由于浏览器限制,只有第一个 TOTP 密码将被复制,而不是更新后的',"settings.forms.use_basic_qrcode_reader.label":"使用基本二维码读取器","settings.forms.use_basic_qrcode_reader.help":"如果你在扫描二维码时遇到问题,这个选项可以切换到更基本但更可靠的二维码阅读器","settings.forms.display_mode.label":"显示模式","settings.forms.display_mode.help":"选择将账户以列表或网格的方式进行展示","settings.forms.password_format.label":"密码格式","settings.forms.password_format.help":"分组显示密码,提高可读性并且便于记忆","settings.forms.pair":"两位数分组","settings.forms.pair_legend":"以两位数分组拆分数字","settings.forms.trio_legend":"以三位数分组拆分数字","settings.forms.half_legend":"将数字拆分为两个相等数位的分组","settings.forms.trio":"三位数分组","settings.forms.half":"两个相等数位的分组","settings.forms.grid":"网格","settings.forms.list":"列表","settings.forms.theme.label":"主题","settings.forms.theme.help":"强制一个特定主题或应用系统/浏览器首选项中定义的主题","settings.forms.light":"亮色主题","settings.forms.dark":"暗色主题","settings.forms.automatic":"自动检测","settings.forms.show_accounts_icons.label":"显示图标","settings.forms.show_accounts_icons.help":"在主视图中显示应用图标","settings.forms.get_official_icons.label":"获取官方图标","settings.forms.get_official_icons.help":"(尝试) 在添加账户时获取两步验证发行者的官方图标","settings.forms.auto_lock.label":"自动锁定","settings.forms.auto_lock.help":"在没有活动的情况下自动登出用户。当使用认证代理或没有指定自定义注销 URL 时无效。","settings.forms.use_encryption.label":"保护敏感数据","settings.forms.use_encryption.help":"敏感数据、2FA 秘钥和电子邮件已被加密存储在数据库中。请务必备份您在 .env 中设置的 APP_KEY 的值(或备份整个文件)。没有此密钥将无法解码已加密的数据。","settings.forms.default_group.label":"默认分组","settings.forms.default_group.help":"新创建的账户所关联的分组","settings.forms.useDirectCapture.label":"直接输入","settings.forms.useDirectCapture.help":"选择您是否想要在可用的输入模式中选择输入模式,或者直接使用默认输入模式","settings.forms.defaultCaptureMode.label":"默认输入模式","settings.forms.defaultCaptureMode.help":"直接输入选项开启时使用的默认输入模式","settings.forms.remember_active_group.label":"记住组筛选器","settings.forms.remember_active_group.help":"保存最后应用的组过滤器并在下次访问时还原它","settings.forms.disable_registration.label":"禁用注册","settings.forms.disable_registration.help":"阻止新用户注册","settings.forms.enable_sso.label":"启用单点登录 (SSO)","settings.forms.enable_sso.help":"允许访问者通过单点登录方案使用外部ID进行身份验证","settings.forms.otp_generation.label":"显示密码","settings.forms.otp_generation.help":'设置 OTPs 的显示方式和时间。
',"settings.forms.otp_generation_on_request":"点击/单击账户后","settings.forms.otp_generation_on_request_legend":"在专用视图中显示密码","settings.forms.otp_generation_on_request_title":"单击帐户在专用视图中获取密码","settings.forms.otp_generation_on_home":"始终","settings.forms.otp_generation_on_home_legend":"主视图中显示所有密码","settings.forms.otp_generation_on_home_title":"在主视图中显示所有密码,无需任何操作","settings.forms.never":"从不","settings.forms.on_otp_copy":"在复制安全代码后","settings.forms.1_minutes":"1分钟后","settings.forms.5_minutes":"5分钟后","settings.forms.10_minutes":"10 分钟后","settings.forms.15_minutes":"15分钟后","settings.forms.30_minutes":"30 分钟后","settings.forms.1_hour":"1小时后","settings.forms.1_day":"1天后","settings.forms.livescan":"扫描二维码","settings.forms.upload":"上传二维码","settings.forms.advanced_form":"高级表单","titles.404":"找不到项目","titles.start":"新账户","titles.capture":"扫描二维码","titles.accounts":"账户","titles.createAccount":"创建账户","titles.importAccounts":"导入账户","titles.editAccount":"编辑账户","titles.showQRcode":"二维码形式的账户","titles.groups":"组","titles.createGroup":"创建组","titles.editGroup":"编辑组","titles.settings.options":"选项","titles.settings.account":"用户帐户","titles.settings.oauth.tokens":"OAuth 令牌","titles.settings.oauth.generatePAT":"新建个人令牌","titles.settings.webauthn.editCredential":"编辑设备","titles.settings.webauthn.devices":"WebAuthn 设备","titles.login":"登录","titles.register":"注册","titles.autolock":"自动锁定","titles.password.request":"重置密码","titles.password.reset":"新密码","titles.webauthn.lost":"恢复账号","titles.webauthn.recover":"注册新设备","titles.flooded":"请求数过多","titles.genericError":"错误","titles.about":"关于","twofaccounts.service":"服务","twofaccounts.account":"账户","twofaccounts.accounts":"账户","twofaccounts.icon":"图标","twofaccounts.icon_for_account_x_at_service_y":"{account} 在 {service} 的帐户图标","twofaccounts.icon_to_illustrate_the_account":"说明账户的图标","twofaccounts.remove_icon":"移除图标","twofaccounts.no_account_here":"这里没有两步验证!","twofaccounts.add_first_account":"选择一个方法并添加您的第一个帐户","twofaccounts.use_full_form":"或者使用完整的表单","twofaccounts.add_one":"添加一个","twofaccounts.show_qrcode":"显示 QR 码","twofaccounts.no_service":"- 无服务 -","twofaccounts.account_created":"帐户成功创建","twofaccounts.account_updated":"账户成功更新","twofaccounts.accounts_deleted":"帐户成功删除","twofaccounts.accounts_moved":"帐户成功移动","twofaccounts.export_selected_to_json":"将所选账号以json导出","twofaccounts.reveal":"显示","twofaccounts.forms.service.placeholder":"谷歌, 推特, 苹果","twofaccounts.forms.account.placeholder":"李华","twofaccounts.forms.new_account":"新建账户","twofaccounts.forms.edit_account":"编辑账户","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"扫描QR码","twofaccounts.forms.upload_qrcode":"上传一个QR码","twofaccounts.forms.use_advanced_form":"使用高级表单","twofaccounts.forms.prefill_using_qrcode":"使用QR码进行预填充","twofaccounts.forms.use_qrcode.val":"使用一个QR码","twofaccounts.forms.use_qrcode.title":"使用QR码来自动填充表单","twofaccounts.forms.unlock.val":"解锁","twofaccounts.forms.unlock.title":"解锁它(风险自负)","twofaccounts.forms.lock.val":"锁定","twofaccounts.forms.lock.title":"将其锁定","twofaccounts.forms.choose_image":"上传","twofaccounts.forms.i_m_lucky":"手气不错","twofaccounts.forms.i_m_lucky_legend":'"手气不错"按钮会尝试获取指定服务的官方图标。输入实际的英文服务名(不带后缀)并避免输入错误。(测试中的功能)',"twofaccounts.forms.test":"测试","twofaccounts.forms.secret.label":"密钥","twofaccounts.forms.secret.help":"用于生成安全码的密钥","twofaccounts.forms.plain_text":"纯文本","twofaccounts.forms.otp_type.label":'选择要创建的 OTP 类型',"twofaccounts.forms.otp_type.help":"基于 时间的OTP(TOTP) 或 基于HMAC的OTP(HMAC-based OTP) 或 Steam OTP","twofaccounts.forms.digits.label":"码长","twofaccounts.forms.digits.help":"生成的安全码位数","twofaccounts.forms.algorithm.label":"算法","twofaccounts.forms.algorithm.help":"用于保护您的安全代码的算法","twofaccounts.forms.period.label":"周期","twofaccounts.forms.period.placeholder":"默认为30","twofaccounts.forms.period.help":"生成的二维码的以秒为单位的有效期限","twofaccounts.forms.counter.label":"计数器","twofaccounts.forms.counter.placeholder":"默认为0","twofaccounts.forms.counter.help":"初始计数器值","twofaccounts.forms.counter.help_lock":"编辑计数器是危险的,因为您可能使帐户与服务的验证服务器失去同步。点击锁的图标可启用更改,但只应在您知道您在做什么时使用","twofaccounts.forms.image.label":"图像","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"作为帐户图标的 URL","twofaccounts.forms.options_help":"如果您不知道如何填写,您可以将下列选项留空。将会应用最常见的设置。","twofaccounts.forms.alternative_methods":"备选方法","twofaccounts.stream.live_scan_cant_start":"扫描无法开始 :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth 没有权限访问您的相机","twofaccounts.stream.need_grant_permission.solution":"您需要授予权限才能使用您的设备相机。 如果您已经拒绝,且您的浏览器不会再次提示您,请参考浏览器文档以了解如何授予权限。","twofaccounts.stream.need_grant_permission.click_camera_icon":"它通常是通过点击浏览器地址栏中或旁边的虚线相机图标来完成的。","twofaccounts.stream.not_readable.reason":"载入扫描仪失败","twofaccounts.stream.not_readable.solution":"摄像头是否已在使用?请确保没有其他应用使用您的摄像头并重试","twofaccounts.stream.no_cam_on_device.reason":"此设备上没有摄像头","twofaccounts.stream.no_cam_on_device.solution":"也许你忘了插上你的摄像头","twofaccounts.stream.secured_context_required.reason":"需要安全上下文","twofaccounts.stream.secured_context_required.solution":"实时扫描需要HTTPS。如果您从计算机运行2FAuth,请不要使用localhost以外的虚拟主机","twofaccounts.stream.https_required":"摄像机需要 HTTPS","twofaccounts.stream.camera_not_suitable.reason":"已安装的摄像头不合适。","twofaccounts.stream.camera_not_suitable.solution":"请使用其他摄像头或更换设备","twofaccounts.stream.stream_api_not_supported.reason":"此浏览器不支持 Stream API","twofaccounts.stream.stream_api_not_supported.solution":"您应该使用一个现代浏览器","twofaccounts.confirm.delete":"你确定要删除这个账户吗?","twofaccounts.confirm.cancel":"帐户将丢失。您确定吗?","twofaccounts.confirm.discard":"您确定要放弃此账户吗?","twofaccounts.confirm.discard_all":"您确定要放弃所有账户吗?","twofaccounts.confirm.discard_duplicates":"您确定要放弃所有重复账户吗?","twofaccounts.import.import":"导入","twofaccounts.import.to_import":"导入","twofaccounts.import.import_legend":"2FAuth 可以从各种2FA 应用程序导入数据。
使用这些应用的导出功能来获取迁移资源(QR码或文件),并在下方加载它。","twofaccounts.import.import_legend_afterpart":"使用这些应用的导出功能来获取迁移资源,例如二维码或JSON文件,然后加载它。","twofaccounts.import.upload":"上传","twofaccounts.import.scan":"扫描","twofaccounts.import.supported_formats_for_qrcode_upload":"接受:jpg、jpeg、png、bmp、gif、svg或webp","twofaccounts.import.supported_formats_for_file_upload":"接受:纯文本,json,2fas","twofaccounts.import.supported_migration_formats":"支持的迁移格式","twofaccounts.import.qr_code":"二维码","twofaccounts.import.text_file":"文本文件","twofaccounts.import.plain_text":"纯文本","twofaccounts.import.parsing_data":"正在解析数据...","twofaccounts.import.issuer":"发行商","twofaccounts.import.imported":"已导入","twofaccounts.import.failure":"失败","twofaccounts.import.x_valid_accounts_found":"找到 {count} 个有效账户","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"在迁移资源中找到了以下2FA账户。到目前为止,它们都没有被添加到2FAuth中。","twofaccounts.import.use_buttons_to_save_or_discard":"使用可用的按钮将它们永久保存到您的两步验证集合或丢弃它们。","twofaccounts.import.import_all":"全部导入","twofaccounts.import.import_this_account":"导入此账户","twofaccounts.import.discard_all":"全部丢弃","twofaccounts.import.discard_duplicates":"丢弃重复项","twofaccounts.import.discard_this_account":"丢弃此帐户","twofaccounts.import.generate_a_test_password":"生成一个测试密码","twofaccounts.import.possible_duplicate":"完全相同的帐户已经存在","twofaccounts.import.invalid_account":"- 无效账户 -","twofaccounts.import.invalid_service":"- 无效服务 -","twofaccounts.import.do_not_set_password_or_encryption":"当您想要导入到2FAuth时不要启用密码保护或加密。","validation.accepted":"您必须接受 :attribute。","validation.accepted_if":":attribute 只有在 :other 为 :value 时才有效","validation.active_url":":attribute 不是一个有效的网址。","validation.after":":attribute 必须要晚于 :date。","validation.after_or_equal":":attribute 必须要等于 :date 或更晚。","validation.alpha":":attribute 只能包含字母。","validation.alpha_dash":":attribute 只能包含字母、 数字、 破折号和下划线","validation.alpha_num":":attribute 只能包含字母和数字","validation.array":":attribute 必须是一个数组。","validation.before":":attribute 必须要早于 :date。","validation.before_or_equal":":attribute 必须要等于 :date 或更早。","validation.between.array":":attribute 必须只有 :min - :max 个单元。","validation.between.file":":attribute 必须介于 :min - :max KB 之间。","validation.between.numeric":":attribute 必须介于 :min - :max 之间。","validation.between.string":":attribute 必须介于 :min - :max 个字符之间。","validation.boolean":":attribute 必须为布尔值。","validation.confirmed":":attribute 两次输入不一致。","validation.current_password":"密码错误","validation.date":":attribute 不是一个有效的日期。","validation.date_equals":":attribute 必须要等于 :date。","validation.date_format":":attribute 的格式必须为 :format。","validation.declined":"您必须同意 :attribute.","validation.declined_if":":attribute 在 :other 是 :value 时无效.","validation.different":":attribute 和 :other 必须不同。","validation.digits":":attribute 必须是 :digits 位数字。","validation.digits_between":":attribute 必须是介于 :min 和 :max 位的数字。","validation.dimensions":":attribute 图片尺寸不正确。","validation.distinct":":attribute 已经存在。","validation.doesnt_end_with":":attribute 不能以下列的值结尾: :values。","validation.doesnt_start_with":":attribute 不能以下列的值开头: :values。","validation.email":":attribute 不是一个合法的邮箱。","validation.ends_with":":attribute 必须以 :values 为结尾。","validation.enum":"已选的属性 :attribute 无效。","validation.exists":":attribute 不存在。","validation.file":":attribute 必须是文件。","validation.filled":":attribute 不能为空。","validation.gt.array":":attribute 必须多于 :value 个元素。","validation.gt.file":":attribute 必须大于 :value KB。","validation.gt.numeric":":attribute 必须大于 :value。","validation.gt.string":":attribute 必须多于 :value 个字符。","validation.gte.array":":attribute 必须多于或等于 :value 个元素。","validation.gte.file":":attribute 必须大于或等于 :value kB。","validation.gte.numeric":":attribute 必须大于或等于 :value。","validation.gte.string":":attribute 必须大于或等于 :value 个字符。","validation.image":":attribute 必须是图片。","validation.in":"已选的属性 :attribute 无效。","validation.in_array":":attribute 必须在 :other 中。","validation.integer":":attribute 必须是整数。","validation.ip":":attribute 必须是有效的 IP 地址。","validation.ipv4":":attribute 必须是有效的 IPv4 地址。","validation.ipv6":":attribute 必须是有效的 IPv6 地址。","validation.json":":attribute 必须是正确的 JSON 格式。","validation.lt.array":":attribute 必须少于 :value 个元素。","validation.lt.file":":attribute 必须小于 :value KB。","validation.lt.numeric":":attribute 必须小于 :value。","validation.lt.string":":attribute 必须少于 :value 个字符。","validation.lte.array":":attribute 必须少于或等于 :value 个元素。","validation.lte.file":":attribute 必须小于或等于 :value kB。","validation.lte.numeric":":attribute 必须小于或等于 :value。","validation.lte.string":":attribute 必须小于或等于 :value 个字符。","validation.mac_address":":attribute 必须是一个有效的 MAC 地址。","validation.max.array":":attribute 必须少于或等于 :value 个元素。","validation.max.file":":attribute 不能大于 :value kB。","validation.max.numeric":":attribute 不能大于 :max。","validation.max.string":":attribute 不能大于 :max 个字符。","validation.max_digits":":attribute 不能超过 :max 位数。","validation.mimes":":attribute 必须是一个 :values 类型的文件。","validation.mimetypes":":attribute 必须是一个 :values 类型的文件。","validation.min.array":":attribute 至少有 :min 个单元。","validation.min.file":":attribute 大小不能小于 :min KB。","validation.min.numeric":":attribute 必须大于等于 :min。","validation.min.string":":attribute 至少为 :min 个字符。","validation.min_digits":":attribute 至少要有 :min 位数。","validation.multiple_of":":attribute 必须是 :value 的倍数","validation.not_in":"已选的属性 :attribute 非法。","validation.not_regex":":attribute 的格式错误。","validation.numeric":":attribute 必须是一个数字。","validation.password.letters":":attribute 至少要包含一个字母。","validation.password.mixed":":attribute 至少要包含一个大写字母和一个小写字母。","validation.password.numbers":":attribute 至少要包含一个数字。","validation.password.symbols":":attribute 至少要包含一个符号。","validation.password.uncompromised":"在数据泄漏中检测到已输入的 :attribute。请选择一个不同的 :attribute 。","validation.present":":attribute 必须存在。","validation.prohibited":":attribute 字段是禁止的.","validation.prohibited_if":"当 :other 为 :value 时, :attribute 字段被禁止","validation.prohibited_unless":"除非 :other 为 :values,否则 :attribute 字段是禁止的","validation.prohibits":':attribute 字段禁止出现 ":other"',"validation.regex":":attribute 格式不正确。","validation.required":":attribute 不能为空。","validation.required_array_keys":":attribute 字段必须包含: :values","validation.required_if":"当 :other 为 :value 时 :attribute 不能为空。","validation.required_if_accepted":"当 :other 存在时,:attribute 不能为空。","validation.required_unless":"当 :other 不为 :values 时 :attribute 不能为空。","validation.required_with":"当 :values 存在时 :attribute 不能为空。","validation.required_with_all":"当 :values 存在时 :attribute 不能为空。","validation.required_without":"当 :values 不存在时 :attribute 不能为空。","validation.required_without_all":"当 :values 都不存在时 :attribute 不能为空。","validation.same":":attribute 和 :other 必须相同。","validation.size.array":":attribute 必须为 :size 个单元。","validation.size.file":":attribute 大小必须为 :size KB。","validation.size.numeric":":attribute 大小必须为 :size。","validation.size.string":":attribute 必须是 :size 个字符。","validation.starts_with":":attribute 必须以 :values 为开头。","validation.string":":attribute 必须是一个字符串。","validation.timezone":":attribute 必须是一个有效的时区。","validation.unique":":attribute 已经存在。","validation.uploaded":":attribute 上传失败。","validation.url":":attribute 必须是有效的URL。","validation.uuid":":attribute 必须是有效的 UUID。","validation.single":"当使用 :attribute 时,它必须是此请求主体中的唯一参数","validation.onlyCustomOtpWithUri":'"uri"参数仅应单独提供,或与"custom_otp"参数结合提供',"validation.custom.icon.image":"支持的格式是 jpeg、png、bmp、gif、svg或web。","validation.custom.qrcode.image":"支持的格式是 jpeg、png、bmp、gif、svg或web。","validation.custom.uri.regex":":attribute 不是有效的 otpauth uri","validation.custom.otp_type.in":":attribute 不受支持","validation.custom.email.exists":"未找到使用此电子邮件的账户。","validation.custom.secret.isBase32Encoded":":attribute 必须是 base32 编码的字符串","validation.custom.account.regex":":attribute 不能包含冒号。","validation.custom.service.regex":":attribute 不能包含冒号。","validation.custom.label.required":"uri 必须有一个标签。","validation.custom.ids.regex":"ID必须以逗号分隔,无需尾随逗号。"};export{t as default}; diff --git a/public/build/assets/php_zh-a04c3840.js b/public/build/assets/php_zh-a04c3840.js deleted file mode 100644 index b0f4d2c6..00000000 --- a/public/build/assets/php_zh-a04c3840.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"auth.failed":"用户名或密码错误","auth.password":"提供的密码不正确","auth.throttle":"您尝试的登录次数过多,请 :seconds 秒后再试。","auth.sign_out":"登出","auth.sign_in":"登录","auth.sign_in_using":"登录使用","auth.or_continue_with":"You an also continue with:","auth.sign_in_using_security_device":"使用安全设备登录","auth.login_and_password":"用户名和密码","auth.register":"注册","auth.welcome_to_2fauth":"欢迎使用 2FAuth","auth.autolock_triggered":"已自动锁定","auth.autolock_triggered_punchline":"自动锁定已触发。您已被自动断开连接。","auth.already_authenticated":"已验证","auth.authentication":"身份认证","auth.maybe_later":"以后再说","auth.user_account_controlled_by_proxy":"用户帐户由身份验证代理提供。
请在代理中管理帐户。","auth.auth_handled_by_proxy":"身份验证由代理处理,下面的设置被禁用。
在代理管理身份验证。","auth.confirm.logout":"您确定要注销吗?","auth.confirm.revoke_device":"你确定要删除此设备?","auth.confirm.delete_account":"您确定要删除您的账户?","auth.webauthn.security_device":"硬件安全密钥","auth.webauthn.security_devices":"安全设备","auth.webauthn.security_devices_legend":"您可以用来登录2FAuth的认证设备,例如安全密钥(如Yubikey)或具有生物识别能力的智能手机(如Apple Face Id/TouchId)","auth.webauthn.enhance_security_using_webauthn":`您可以通过启用 WebAuthn 身份验证来增强您的2FAuth 账户的安全性。

-WebAuthn允许您使用受信任的设备 (如Yubikeys 或具有生物识别能力的智能手机) 快速和更安全地登录。`,"auth.webauthn.use_security_device_to_sign_in":"准备好使用您的(一个)安全设备进行身份验证。请插入您的密钥,移除口罩或手套等。","auth.webauthn.lost_your_device":"设备丢失?","auth.webauthn.recover_your_account":"恢复您的账号","auth.webauthn.account_recovery":"恢复账号","auth.webauthn.recovery_punchline":"2FAuth 将向您发送恢复链接到此电子邮件地址。点击收到电子邮件中的链接注册新的安全设备。

确保在您可以在自己的设备上打开电子邮件。","auth.webauthn.send_recovery_link":"发送恢复链接","auth.webauthn.account_recovery_email_sent":"账号恢复邮件已发送!","auth.webauthn.disable_all_security_devices":"禁用所有安全设备","auth.webauthn.disable_all_security_devices_help":"您的所有安全设备都将被撤销。如果您丢失了一个设备或其安全性已经受到损害,请使用此选项。","auth.webauthn.register_a_new_device":"注册新设备","auth.webauthn.register_a_device":"注册设备","auth.webauthn.device_successfully_registered":"成功注册设备","auth.webauthn.device_revoked":"成功注销设备","auth.webauthn.revoking_a_device_is_permanent":"注销设备是永久性的","auth.webauthn.recover_account_instructions":"若要恢复您的帐户,2FAuth 将会重置一些Webauth设置,以便您可以使用您的电子邮件和密码登录。","auth.webauthn.invalid_recovery_token":"无效的恢复密钥","auth.webauthn.webauthn_login_disabled":"Webauthn 登录已被禁用","auth.webauthn.invalid_reset_token":"此密码重置令牌无效","auth.webauthn.rename_device":"重命名设备","auth.webauthn.my_device":"我的设备","auth.webauthn.unknown_device":"未知设备","auth.webauthn.use_webauthn_only.label":"仅使用 WebAuthn","auth.webauthn.use_webauthn_only.help":`将WebAuthn设定为登录2FAuth账户的唯一授权的登录方式。推荐启用此选项,并利用WebAuth增强安全性。

- 设备丢失时, 您可以通过重置此选项并使用您的电子邮件和密码登录来恢复您的帐户。

- 请注意! 尽管启用了此选项,输入电子邮件和密码的登录界面仍然可用,但是会提示 “身份验证失败”。`,"auth.webauthn.need_a_security_device_to_enable_options":"设置至少一个WebAuth设备以启用以下选项","auth.forms.name":"用户名","auth.forms.login":"登录","auth.forms.webauthn_login":"使用 WebAuthn 登录","auth.forms.email":"邮箱","auth.forms.password":"密码","auth.forms.reveal_password":"显示密码","auth.forms.hide_password":"隐藏密码","auth.forms.confirm_password":"确认密码","auth.forms.new_password":"New password","auth.forms.confirm_new_password":"确认新密码","auth.forms.dont_have_account_yet":"还没有账号?","auth.forms.already_register":"已经注册?","auth.forms.authentication_failed":"验证失败","auth.forms.forgot_your_password":"忘记密码?","auth.forms.request_password_reset":"重置密码","auth.forms.reset_your_password":"重置你的密码","auth.forms.reset_password":"重置密码","auth.forms.disabled_in_demo":"此功能将在演示模式下禁用。","auth.forms.current_password.label":"当前密码","auth.forms.current_password.help":"填写您当前设置的密码以确认是您本人","auth.forms.change_password":"修改密码","auth.forms.send_password_reset_link":"发送密码重置链接","auth.forms.password_successfully_changed":"密码修改成功","auth.forms.edit_account":"编辑账户","auth.forms.profile_saved":"个人资料更新成功!","auth.forms.welcome_to_demo_app_use_those_credentials":"欢迎访问 2FAuth 的演示站点。

您可以使用电子邮件地址 demo@2fauth.app 和密码 demo来登录。","auth.forms.welcome_to_testing_app_use_those_credentials":"欢迎访问 2FAuth 的测试实例。

您可以使用电子邮件地址 testing@2fauth.app 和密码 password来登录。","auth.forms.register_punchline":"欢迎使用 2FAuth
您需要一个账号才能继续,请先完成注册。","auth.forms.reset_punchline":"2FAuth 将向您发送密码重置链接到此邮箱。请点击收到的电子邮件中的链接设置新密码。","auth.forms.name_this_device":"命名此设备","auth.forms.delete_account":"删除账户","auth.forms.delete_your_account":"删除您的账户","auth.forms.delete_your_account_and_reset_all_data":"这将重置您的 2FAuth。您的账号以及所有的 2FA 数据都将被删除,这是一个不可逆的操作。","auth.forms.reset_your_password_to_delete_your_account":"If you always used SSO to sign in, sign out then use the reset password feature to get a password so you can fill this form.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Deleting your 2FAuth account has no impact on your external SSO account.","auth.forms.user_account_successfully_deleted":"账号已成功删除","auth.forms.has_lower_case":"包含小写字母","auth.forms.has_upper_case":"包含大写字母","auth.forms.has_special_char":"包含特殊字符","auth.forms.has_number":"包含数字","auth.forms.is_long_enough":"至少 8 个字符","auth.forms.mandatory_rules":"必选项","auth.forms.optional_rules_you_should_follow":"建议(推荐)","auth.forms.caps_lock_is_on":"大写锁定已开启","commons.cancel":"取消","commons.update":"更新","commons.copy":"复制","commons.copy_to_clipboard":"复制到剪贴板","commons.copied_to_clipboard":"已复制到剪贴板","commons.profile":"个人资料","commons.edit":"编辑","commons.delete":"删除","commons.disable":"禁用","commons.enable":"启用","commons.create":"创建","commons.save":"保存","commons.close":"关闭","commons.clear":"清空","commons.clear_search":"清除搜索结果","commons.demo_do_not_post_sensitive_data":"这是一个演示应用,请不要上传任何敏感数据","commons.testing_do_not_post_sensitive_data":"这是一个测试应用,请不要上传任何敏感数据","commons.selected":"项被选中","commons.name":"名称","commons.manage":"管理","commons.done":"完成","commons.new":"新建","commons.back":"返回","commons.move":"移动","commons.export":"导出","commons.all":"全部","commons.select_all":"全选","commons.clear_selection":"清除选择","commons.sort_descending":"降序排列","commons.sort_ascending":"升序排序","commons.rename":"重命名","commons.new_name":"新名称","commons.options":"选项","commons.reload":"刷新","commons.refresh":"Refresh","commons.data_refreshed_to_reflect_server_changes":"Data has been refresh to reflect server-side changes","commons.generate":"生成","commons.generating_otp":"正在生成 OTP","commons.open_in_browser":"在浏览器中打开","commons.continue":"继续","commons.discard":"放弃","commons.about":"关于","commons.usefull_links":"有用的链接","commons.environment":"环境","commons.credits":"鸣谢","commons.2fauth_teaser":"用于管理您的两步验证 (2FA) 帐户并生成安全码的网页应用","commons.made_with":"基于","commons.ui_icons_by":"UI 图标来自","commons.logos_by":"Logo 来自","commons.search":"搜索​​​​","commons.resources":"资源","commons.check_for_update":"检查更新","commons.check_for_update_help":"自动检查 (每周一次) 并当 2FAuth 在 Github 上发布新版本时发出提醒","commons.you_are_up_to_date":"该实例是最新的","commons.2fauth_description":"用于管理您的两步验证 (2FA) 账户并生成安全码的网页应用","commons.image_of_qrcode_to_scan":"要扫描的二维码图像","commons.file":"文件","commons.or":"或","commons.close_the_x_page":"关闭 {pagetitle} 页","commons.submit":"Submit","commons.default":"Default","commons.back_to_home":"Back to home","commons.nothing":"nothing","errors.resource_not_found":"资源未找到","errors.error_occured":"发生错误:","errors.refresh":"刷新","errors.no_valid_otp":"此二维码中没有有效的OTP资源","errors.something_wrong_with_server":"服务器发生内部错误","errors.Unable_to_decrypt_uri":"无法解密uri","errors.not_a_supported_otp_type":"不支持此OTP格式","errors.cannot_create_otp_without_secret":"无法在没有密码的情况下创建一个OTP","errors.data_of_qrcode_is_not_valid_URI":"此QR码的数据不是有效的OTP Auth URI。该QR码包含:","errors.wrong_current_password":"当前密码错误,没有发生任何更改","errors.error_during_encryption":"加密失败,您的数据库仍未受到保护","errors.error_during_decryption":"解密失败,您的数据库仍受保护。这通常由一个或多个帐户加密数据的完整性不足导致。","errors.qrcode_cannot_be_read":"二维码无效","errors.too_many_ids":"查询参数中包含太多ID,最多允许 100 个","errors.delete_user_setting_only":"只能删除用户创建的设置","errors.indecipherable":"*无法解析*","errors.cannot_decipher_secret":"密钥不能被解密。这主要是由 2Fauth 的 .env 文件中 APP_KEY 设置错误或存储在数据库中的数据已损坏引发的。","errors.https_required":"需要 HTTPS","errors.browser_does_not_support_webauthn":"您的设备不支持Webauthn。请使用更现代的浏览器重试。","errors.aborted_by_user":"被用户中止。","errors.security_device_already_registered":"Device already registered","errors.not_allowed_operation":"不允许此操作","errors.no_authenticator_support_specified_algorithms":"No authenticators support specified algorithms","errors.authenticator_missing_discoverable_credential_support":"Authenticator missing discoverable credential support","errors.authenticator_missing_user_verification_support":"Authenticator missing user verification support","errors.unknown_error":"未知错误","errors.security_error_check_rpid":"安全错误
请检查您的 WEBAUTHN_ID env var","errors.2fauth_has_not_a_valid_domain":"2FAuth's domain is not a valid domain","errors.user_id_not_between_1_64":"User ID was not between 1 and 64 chars","errors.no_entry_was_of_type_public_key":'No entry was of type "public-key"',"errors.unsupported_with_reverseproxy":"使用代理进行认证时不可用","errors.user_deletion_failed":"帐户删除失败,没有数据被删除","errors.auth_proxy_failed":"代理认证失败","errors.auth_proxy_failed_legend":"2Fauth 被配置为在身份验证代理后运行,但您的代理没有返回预期的请求头。请检查您的配置并重试。","errors.invalid_x_migration":"无效或不可读的 :appname 数据","errors.invalid_2fa_data":"无效的2FA数据","errors.unsupported_migration":"数据与任何支持的格式不匹配","errors.unsupported_otp_type":"不支持的 OTP 类型","errors.encrypted_migration":"无法读取,数据似乎已加密","errors.no_logo_found_for_x":"{service} 没有可用的 Logo","errors.file_upload_failed":"文件上传失败","errors.unauthorized":"无权限","errors.unauthorized_legend":"您无权查看此资源或执行此操作","errors.cannot_delete_the_only_admin":"无法删除唯一的管理员账户","errors.error_during_data_fetching":"💀 Something went wrong during data fetching","errors.check_failed_try_later":"Check failed, please retry later","errors.sso_disabled":"SSO is disabled","errors.sso_bad_provider_setup":"This SSO provider is not fully setup in your .env file","errors.sso_failed":"Authentication via SSO rejected","errors.sso_no_register":"Registrations are disabled","errors.sso_email_already_used":"A user account with the same email address already exists but it does not match your external account ID. Do not use SSO if you are already registered on 2FAuth with this email.","errors.account_managed_by_external_provider":"Account managed by an external provider","groups.groups":"组","groups.create_group":"创建新组","groups.show_group_selector":"显示分组选择器","groups.hide_group_selector":"隐藏分组选择器","groups.select_accounts_to_show":"选择要显示的帐户分组","groups.manage_groups":"管理组","groups.active_group":"活跃组","groups.manage_groups_legend":"您可以创建组以按照您想要的方式组织您的账户。 所有账户在名为“全部”的伪组中仍然可见,无论它们属于哪个组。","groups.deleting_group_does_not_delete_accounts":"删除组不会删除帐户","groups.move_selected_to":"移动选择到","groups.move_selected_to_group":"将所选移入组中","groups.no_group":"没有分组","groups.change_group":"更改组","groups.group_successfully_created":"分组成功创建","groups.group_name_saved":"分组名称已保存","groups.group_successfully_deleted":"分组成功删除","groups.forms.new_group":"新建组","groups.forms.new_name":"新名称","groups.forms.rename_group":"重命名组","groups.confirm.delete":"您确定要删除此组吗?","languages.browser_preference":"使用游览器偏好","languages.en":"English","languages.fr":"French","languages.de":"German","languages.es":"Spanish","languages.zh":"简体中文","languages.ru":"Russian","languages.bg":"Bulgarian","pagination.previous":"« 上一页","pagination.next":"下一页 »","passwords.reset":"密码重置成功!","passwords.sent":"密码重置邮件已发送!","passwords.throttled":"请稍候再试。","passwords.token":"密码重置令牌无效。","passwords.user":"找不到该邮箱对应的用户。","passwords.password":"密码必须包含至少8个字符,且两次输入的内容必须相同。","settings.settings":"设置","settings.preferences":"偏好","settings.account":"账户","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"令牌","settings.options":"选项","settings.user_preferences":"用户偏好","settings.admin_settings":"管理员设置","settings.confirm.revoke":"你确定要吊销此令牌?","settings.administration":"管理","settings.administration_legend":"此前的设置是用户设置(每个用户都可以设置自己的偏好)。以下的设置则是应用于所有用户的全局设置。 只有管理员可以查看和编辑这些设置。","settings.only_an_admin_can_edit_them":"Only an administrator can view and edit them.","settings.you_are_administrator":"您是管理员","settings.account_linked_to_sso_x_provider":"You signed-in via SSO using your :provider account. Your information cannot be changed here but on :provider.","settings.general":"常规","settings.security":"安全","settings.profile":"配置文件","settings.change_password":"更改密码","settings.personal_access_tokens":"个人访问令牌","settings.token_legend":"个人访问令牌允许任何应用访问 2Fauth API。您应该在第三方应用授权请求头中提供访问令牌作为一个 Bearer 令牌。","settings.generate_new_token":"生成新令牌","settings.revoke":"吊销","settings.token_revoked":"已成功吊销令牌","settings.revoking_a_token_is_permanent":"吊销令牌是永久的","settings.make_sure_copy_token":"请确保您已复制个人访问令牌。令牌将不再显示。","settings.data_input":"数据输入","settings.forms.edit_settings":"编辑设置","settings.forms.setting_saved":"设置已保存","settings.forms.new_token":"新建令牌","settings.forms.some_translation_are_missing":"使用浏览器偏好时缺少一些翻译?","settings.forms.help_translate_2fauth":"帮助翻译 2FAuth","settings.forms.language.label":"语言","settings.forms.language.help":"用来翻译 2FAuth 用户界面的语言。列出的语言已完成翻译,请设置你选择的语言来覆盖你的浏览器偏好。","settings.forms.show_otp_as_dot.label":"将生成的一次性密码作为点显示","settings.forms.show_otp_as_dot.help":"将生成的密码替换为 *** 以确保保密。不影响复制和粘贴功能。","settings.forms.reveal_dotted_otp.label":'Reveal obscured OTP',"settings.forms.reveal_dotted_otp.help":"Let the ability to temporarily reveal Dot-Obscured passwords","settings.forms.close_otp_on_copy.label":'复制后关闭 OTP',"settings.forms.close_otp_on_copy.help":"点击生成的密码进行复制,并自动将其从屏幕上隐藏","settings.forms.copy_otp_on_display.label":'在显示时复制 OTP',"settings.forms.copy_otp_on_display.help":'在屏幕显示后自动复制生成的密码。 由于浏览器限制,只有第一个 TOTP 密码将被复制,而不是更新后的',"settings.forms.use_basic_qrcode_reader.label":"使用基本二维码读取器","settings.forms.use_basic_qrcode_reader.help":"如果你在扫描二维码时遇到问题,这个选项可以切换到更基本但更可靠的二维码阅读器","settings.forms.display_mode.label":"显示模式","settings.forms.display_mode.help":"选择将账户以列表或网格的方式进行展示","settings.forms.password_format.label":"密码格式","settings.forms.password_format.help":"分组显示密码,提高可读性并且便于记忆","settings.forms.pair":"两位数分组","settings.forms.pair_legend":"以两位数分组拆分数字","settings.forms.trio_legend":"以三位数分组拆分数字","settings.forms.half_legend":"将数字拆分为两个相等数位的分组","settings.forms.trio":"三位数分组","settings.forms.half":"两个相等数位的分组","settings.forms.grid":"网格","settings.forms.list":"列表","settings.forms.theme.label":"主题","settings.forms.theme.help":"强制一个特定主题或应用系统/浏览器首选项中定义的主题","settings.forms.light":"亮色主题","settings.forms.dark":"暗色主题","settings.forms.automatic":"自动检测","settings.forms.show_accounts_icons.label":"显示图标","settings.forms.show_accounts_icons.help":"在主视图中显示应用图标","settings.forms.get_official_icons.label":"获取官方图标","settings.forms.get_official_icons.help":"(尝试) 在添加账户时获取两步验证发行者的官方图标","settings.forms.auto_lock.label":"自动锁定","settings.forms.auto_lock.help":"在没有活动的情况下自动登出用户。当使用认证代理或没有指定自定义注销 URL 时无效。","settings.forms.use_encryption.label":"保护敏感数据","settings.forms.use_encryption.help":"敏感数据、2FA 秘钥和电子邮件已被加密存储在数据库中。请务必备份您在 .env 中设置的 APP_KEY 的值(或备份整个文件)。没有此密钥将无法解码已加密的数据。","settings.forms.default_group.label":"默认分组","settings.forms.default_group.help":"新创建的账户所关联的分组","settings.forms.useDirectCapture.label":"直接输入","settings.forms.useDirectCapture.help":"选择您是否想要在可用的输入模式中选择输入模式,或者直接使用默认输入模式","settings.forms.defaultCaptureMode.label":"默认输入模式","settings.forms.defaultCaptureMode.help":"直接输入选项开启时使用的默认输入模式","settings.forms.remember_active_group.label":"记住组筛选器","settings.forms.remember_active_group.help":"保存最后应用的组过滤器并在下次访问时还原它","settings.forms.disable_registration.label":"禁用注册","settings.forms.disable_registration.help":"阻止新用户注册","settings.forms.enable_sso.label":"Enable Single Sign-On (SSO)","settings.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","settings.forms.otp_generation.label":"显示密码","settings.forms.otp_generation.help":'设置 OTPs 的显示方式和时间。
',"settings.forms.otp_generation_on_request":"点击/单击账户后","settings.forms.otp_generation_on_request_legend":"在专用视图中显示密码","settings.forms.otp_generation_on_request_title":"单击帐户在专用视图中获取密码","settings.forms.otp_generation_on_home":"始终","settings.forms.otp_generation_on_home_legend":"主视图中显示所有密码","settings.forms.otp_generation_on_home_title":"在主视图中显示所有密码,无需任何操作","settings.forms.never":"从不","settings.forms.on_otp_copy":"在复制安全代码后","settings.forms.1_minutes":"1分钟后","settings.forms.5_minutes":"5分钟后","settings.forms.10_minutes":"10 分钟后","settings.forms.15_minutes":"15分钟后","settings.forms.30_minutes":"30 分钟后","settings.forms.1_hour":"1小时后","settings.forms.1_day":"1天后","settings.forms.livescan":"扫描二维码","settings.forms.upload":"上传二维码","settings.forms.advanced_form":"高级表单","titles.404":"找不到项目","titles.start":"新账户","titles.capture":"扫描二维码","titles.accounts":"账户","titles.createAccount":"创建账户","titles.importAccounts":"导入账户","titles.editAccount":"编辑账户","titles.showQRcode":"二维码形式的账户","titles.groups":"组","titles.createGroup":"创建组","titles.editGroup":"编辑组","titles.settings.options":"选项","titles.settings.account":"用户帐户","titles.settings.oauth.tokens":"OAuth 令牌","titles.settings.oauth.generatePAT":"新建个人令牌","titles.settings.webauthn.editCredential":"编辑设备","titles.settings.webauthn.devices":"WebAuthn 设备","titles.login":"登录","titles.register":"注册","titles.autolock":"自动锁定","titles.password.request":"重置密码","titles.password.reset":"新密码","titles.webauthn.lost":"恢复账号","titles.webauthn.recover":"注册新设备","titles.flooded":"请求数过多","titles.genericError":"错误","titles.about":"关于","twofaccounts.service":"服务","twofaccounts.account":"账户","twofaccounts.accounts":"账户","twofaccounts.icon":"图标","twofaccounts.icon_for_account_x_at_service_y":"{account} 在 {service} 的帐户图标","twofaccounts.icon_to_illustrate_the_account":"说明账户的图标","twofaccounts.remove_icon":"移除图标","twofaccounts.no_account_here":"这里没有两步验证!","twofaccounts.add_first_account":"选择一个方法并添加您的第一个帐户","twofaccounts.use_full_form":"或者使用完整的表单","twofaccounts.add_one":"添加一个","twofaccounts.show_qrcode":"显示 QR 码","twofaccounts.no_service":"- 无服务 -","twofaccounts.account_created":"帐户成功创建","twofaccounts.account_updated":"账户成功更新","twofaccounts.accounts_deleted":"帐户成功删除","twofaccounts.accounts_moved":"帐户成功移动","twofaccounts.export_selected_to_json":"将所选账号以json导出","twofaccounts.reveal":"reveal","twofaccounts.forms.service.placeholder":"谷歌, 推特, 苹果","twofaccounts.forms.account.placeholder":"李华","twofaccounts.forms.new_account":"新建账户","twofaccounts.forms.edit_account":"编辑账户","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"扫描QR码","twofaccounts.forms.upload_qrcode":"上传一个QR码","twofaccounts.forms.use_advanced_form":"使用高级表单","twofaccounts.forms.prefill_using_qrcode":"使用QR码进行预填充","twofaccounts.forms.use_qrcode.val":"使用一个QR码","twofaccounts.forms.use_qrcode.title":"使用QR码来自动填充表单","twofaccounts.forms.unlock.val":"解锁","twofaccounts.forms.unlock.title":"解锁它(风险自负)","twofaccounts.forms.lock.val":"锁定","twofaccounts.forms.lock.title":"将其锁定","twofaccounts.forms.choose_image":"上传","twofaccounts.forms.i_m_lucky":"手气不错","twofaccounts.forms.i_m_lucky_legend":'"手气不错"按钮会尝试获取指定服务的官方图标。输入实际的英文服务名(不带后缀)并避免输入错误。(测试中的功能)',"twofaccounts.forms.test":"测试","twofaccounts.forms.secret.label":"密钥","twofaccounts.forms.secret.help":"用于生成安全码的密钥","twofaccounts.forms.plain_text":"纯文本","twofaccounts.forms.otp_type.label":'选择要创建的 OTP 类型',"twofaccounts.forms.otp_type.help":"基于 时间的OTP(TOTP) 或 基于HMAC的OTP(HMAC-based OTP) 或 Steam OTP","twofaccounts.forms.digits.label":"码长","twofaccounts.forms.digits.help":"生成的安全码位数","twofaccounts.forms.algorithm.label":"算法","twofaccounts.forms.algorithm.help":"用于保护您的安全代码的算法","twofaccounts.forms.period.label":"周期","twofaccounts.forms.period.placeholder":"默认为30","twofaccounts.forms.period.help":"生成的二维码的以秒为单位的有效期限","twofaccounts.forms.counter.label":"计数器","twofaccounts.forms.counter.placeholder":"默认为0","twofaccounts.forms.counter.help":"初始计数器值","twofaccounts.forms.counter.help_lock":"编辑计数器是危险的,因为您可能使帐户与服务的验证服务器失去同步。点击锁的图标可启用更改,但只应在您知道您在做什么时使用","twofaccounts.forms.image.label":"图像","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"作为帐户图标的 URL","twofaccounts.forms.options_help":"如果您不知道如何填写,您可以将下列选项留空。将会应用最常见的设置。","twofaccounts.forms.alternative_methods":"备选方法","twofaccounts.stream.live_scan_cant_start":"扫描无法开始 :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth 没有权限访问您的相机","twofaccounts.stream.need_grant_permission.solution":"您需要授予权限才能使用您的设备相机。 如果您已经拒绝,且您的浏览器不会再次提示您,请参考浏览器文档以了解如何授予权限。","twofaccounts.stream.need_grant_permission.click_camera_icon":"It is usually done by clicking on a slashed camera icon in or next to the browser's address bar","twofaccounts.stream.not_readable.reason":"载入扫描仪失败","twofaccounts.stream.not_readable.solution":"摄像头是否已在使用?请确保没有其他应用使用您的摄像头并重试","twofaccounts.stream.no_cam_on_device.reason":"此设备上没有摄像头","twofaccounts.stream.no_cam_on_device.solution":"也许你忘了插上你的摄像头","twofaccounts.stream.secured_context_required.reason":"需要安全上下文","twofaccounts.stream.secured_context_required.solution":"实时扫描需要HTTPS。如果您从计算机运行2FAuth,请不要使用localhost以外的虚拟主机","twofaccounts.stream.https_required":"摄像机需要 HTTPS","twofaccounts.stream.camera_not_suitable.reason":"已安装的摄像头不合适。","twofaccounts.stream.camera_not_suitable.solution":"请使用其他摄像头或更换设备","twofaccounts.stream.stream_api_not_supported.reason":"此浏览器不支持 Stream API","twofaccounts.stream.stream_api_not_supported.solution":"您应该使用一个现代浏览器","twofaccounts.confirm.delete":"你确定要删除这个账户吗?","twofaccounts.confirm.cancel":"帐户将丢失。您确定吗?","twofaccounts.confirm.discard":"您确定要放弃此账户吗?","twofaccounts.confirm.discard_all":"您确定要放弃所有账户吗?","twofaccounts.confirm.discard_duplicates":"您确定要放弃所有重复账户吗?","twofaccounts.import.import":"导入","twofaccounts.import.to_import":"导入","twofaccounts.import.import_legend":"2FAuth 可以从各种2FA 应用程序导入数据。
使用这些应用的导出功能来获取迁移资源(QR码或文件),并在下方加载它。","twofaccounts.import.import_legend_afterpart":"Use the Export feature of these apps to get a migration resource like a QR code or a JSON file then load it here.","twofaccounts.import.upload":"上传","twofaccounts.import.scan":"扫描","twofaccounts.import.supported_formats_for_qrcode_upload":"接受:jpg、jpeg、png、bmp、gif、svg或webp","twofaccounts.import.supported_formats_for_file_upload":"接受:纯文本,json,2fas","twofaccounts.import.supported_migration_formats":"支持的迁移格式","twofaccounts.import.qr_code":"二维码","twofaccounts.import.text_file":"Text file","twofaccounts.import.plain_text":"纯文本","twofaccounts.import.parsing_data":"Parsing data...","twofaccounts.import.issuer":"发行商","twofaccounts.import.imported":"已导入","twofaccounts.import.failure":"失败","twofaccounts.import.x_valid_accounts_found":"找到 {count} 个有效账户","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"The following 2FA accounts were found in the migration resource. So far none of them have been added to 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Use the available buttons to permanently save them to your 2FA collection or discard them.","twofaccounts.import.import_all":"全部导入","twofaccounts.import.import_this_account":"导入此账户","twofaccounts.import.discard_all":"全部丢弃","twofaccounts.import.discard_duplicates":"丢弃重复项","twofaccounts.import.discard_this_account":"丢弃此帐户","twofaccounts.import.generate_a_test_password":"生成一个测试密码","twofaccounts.import.possible_duplicate":"完全相同的帐户已经存在","twofaccounts.import.invalid_account":"- 无效账户 -","twofaccounts.import.invalid_service":"- 无效服务 -","twofaccounts.import.do_not_set_password_or_encryption":"当您想要导入到2FAuth时不要启用密码保护或加密。","validation.accepted":"您必须接受 :attribute。","validation.accepted_if":":attribute 只有在 :other 为 :value 时才有效","validation.active_url":":attribute 不是一个有效的网址。","validation.after":":attribute 必须要晚于 :date。","validation.after_or_equal":":attribute 必须要等于 :date 或更晚。","validation.alpha":":attribute 只能包含字母。","validation.alpha_dash":":attribute 只能包含字母、 数字、 破折号和下划线","validation.alpha_num":":attribute 只能包含字母和数字","validation.array":":attribute 必须是一个数组。","validation.before":":attribute 必须要早于 :date。","validation.before_or_equal":":attribute 必须要等于 :date 或更早。","validation.between.array":":attribute 必须只有 :min - :max 个单元。","validation.between.file":":attribute 必须介于 :min - :max KB 之间。","validation.between.numeric":":attribute 必须介于 :min - :max 之间。","validation.between.string":":attribute 必须介于 :min - :max 个字符之间。","validation.boolean":":attribute 必须为布尔值。","validation.confirmed":":attribute 两次输入不一致。","validation.current_password":"密码错误","validation.date":":attribute 不是一个有效的日期。","validation.date_equals":":attribute 必须要等于 :date。","validation.date_format":":attribute 的格式必须为 :format。","validation.declined":"您必须同意 :attribute.","validation.declined_if":":attribute 在 :other 是 :value 时无效.","validation.different":":attribute 和 :other 必须不同。","validation.digits":":attribute 必须是 :digits 位数字。","validation.digits_between":":attribute 必须是介于 :min 和 :max 位的数字。","validation.dimensions":":attribute 图片尺寸不正确。","validation.distinct":":attribute 已经存在。","validation.doesnt_end_with":":attribute 不能以下列的值结尾: :values。","validation.doesnt_start_with":":attribute 不能以下列的值开头: :values。","validation.email":":attribute 不是一个合法的邮箱。","validation.ends_with":":attribute 必须以 :values 为结尾。","validation.enum":"已选的属性 :attribute 无效。","validation.exists":":attribute 不存在。","validation.file":":attribute 必须是文件。","validation.filled":":attribute 不能为空。","validation.gt.array":":attribute 必须多于 :value 个元素。","validation.gt.file":":attribute 必须大于 :value KB。","validation.gt.numeric":":attribute 必须大于 :value。","validation.gt.string":":attribute 必须多于 :value 个字符。","validation.gte.array":":attribute 必须多于或等于 :value 个元素。","validation.gte.file":":attribute 必须大于或等于 :value kB。","validation.gte.numeric":":attribute 必须大于或等于 :value。","validation.gte.string":":attribute 必须大于或等于 :value 个字符。","validation.image":":attribute 必须是图片。","validation.in":"已选的属性 :attribute 无效。","validation.in_array":":attribute 必须在 :other 中。","validation.integer":":attribute 必须是整数。","validation.ip":":attribute 必须是有效的 IP 地址。","validation.ipv4":":attribute 必须是有效的 IPv4 地址。","validation.ipv6":":attribute 必须是有效的 IPv6 地址。","validation.json":":attribute 必须是正确的 JSON 格式。","validation.lt.array":":attribute 必须少于 :value 个元素。","validation.lt.file":":attribute 必须小于 :value KB。","validation.lt.numeric":":attribute 必须小于 :value。","validation.lt.string":":attribute 必须少于 :value 个字符。","validation.lte.array":":attribute 必须少于或等于 :value 个元素。","validation.lte.file":":attribute 必须小于或等于 :value kB。","validation.lte.numeric":":attribute 必须小于或等于 :value。","validation.lte.string":":attribute 必须小于或等于 :value 个字符。","validation.mac_address":":attribute 必须是一个有效的 MAC 地址。","validation.max.array":":attribute 必须少于或等于 :value 个元素。","validation.max.file":":attribute 不能大于 :value kB。","validation.max.numeric":":attribute 不能大于 :max。","validation.max.string":":attribute 不能大于 :max 个字符。","validation.max_digits":":attribute 不能超过 :max 位数。","validation.mimes":":attribute 必须是一个 :values 类型的文件。","validation.mimetypes":":attribute 必须是一个 :values 类型的文件。","validation.min.array":":attribute 至少有 :min 个单元。","validation.min.file":":attribute 大小不能小于 :min KB。","validation.min.numeric":":attribute 必须大于等于 :min。","validation.min.string":":attribute 至少为 :min 个字符。","validation.min_digits":":attribute 至少要有 :min 位数。","validation.multiple_of":":attribute 必须是 :value 的倍数","validation.not_in":"已选的属性 :attribute 非法。","validation.not_regex":":attribute 的格式错误。","validation.numeric":":attribute 必须是一个数字。","validation.password.letters":":attribute 至少要包含一个字母。","validation.password.mixed":":attribute 至少要包含一个大写字母和一个小写字母。","validation.password.numbers":":attribute 至少要包含一个数字。","validation.password.symbols":":attribute 至少要包含一个符号。","validation.password.uncompromised":"在数据泄漏中检测到已输入的 :attribute。请选择一个不同的 :attribute 。","validation.present":":attribute 必须存在。","validation.prohibited":":attribute 字段是禁止的.","validation.prohibited_if":"当 :other 为 :value 时, :attribute 字段被禁止","validation.prohibited_unless":"除非 :other 为 :values,否则 :attribute 字段是禁止的","validation.prohibits":':attribute 字段禁止出现 ":other"',"validation.regex":":attribute 格式不正确。","validation.required":":attribute 不能为空。","validation.required_array_keys":":attribute 字段必须包含: :values","validation.required_if":"当 :other 为 :value 时 :attribute 不能为空。","validation.required_if_accepted":"当 :other 存在时,:attribute 不能为空。","validation.required_unless":"当 :other 不为 :values 时 :attribute 不能为空。","validation.required_with":"当 :values 存在时 :attribute 不能为空。","validation.required_with_all":"当 :values 存在时 :attribute 不能为空。","validation.required_without":"当 :values 不存在时 :attribute 不能为空。","validation.required_without_all":"当 :values 都不存在时 :attribute 不能为空。","validation.same":":attribute 和 :other 必须相同。","validation.size.array":":attribute 必须为 :size 个单元。","validation.size.file":":attribute 大小必须为 :size KB。","validation.size.numeric":":attribute 大小必须为 :size。","validation.size.string":":attribute 必须是 :size 个字符。","validation.starts_with":":attribute 必须以 :values 为开头。","validation.string":":attribute 必须是一个字符串。","validation.timezone":":attribute 必须是一个有效的时区。","validation.unique":":attribute 已经存在。","validation.uploaded":":attribute 上传失败。","validation.url":":attribute 必须是有效的URL。","validation.uuid":":attribute 必须是有效的 UUID。","validation.single":"当使用 :attribute 时,它必须是此请求主体中的唯一参数","validation.onlyCustomOtpWithUri":'"uri"参数仅应单独提供,或与"custom_otp"参数结合提供',"validation.custom.icon.image":"支持的格式是 jpeg、png、bmp、gif、svg或web。","validation.custom.qrcode.image":"支持的格式是 jpeg、png、bmp、gif、svg或web。","validation.custom.uri.regex":":attribute 不是有效的 otpauth uri","validation.custom.otp_type.in":":attribute 不受支持","validation.custom.email.exists":"未找到使用此电子邮件的账户。","validation.custom.secret.isBase32Encoded":":attribute 必须是 base32 编码的字符串","validation.custom.account.regex":":attribute 不能包含冒号。","validation.custom.service.regex":":attribute 不能包含冒号。","validation.custom.label.required":"uri 必须有一个标签。","validation.custom.ids.regex":"ID必须以逗号分隔,无需尾随逗号。"};export{t as default}; diff --git a/public/build/assets/systemService-fd2a8274.js b/public/build/assets/systemService-c3f13e84.js similarity index 76% rename from public/build/assets/systemService-fd2a8274.js rename to public/build/assets/systemService-c3f13e84.js index ccf9e677..9d7a559e 100644 --- a/public/build/assets/systemService-fd2a8274.js +++ b/public/build/assets/systemService-c3f13e84.js @@ -1 +1 @@ -import{a1 as s}from"./app-72c44b80.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t=s("web"),a={getSystemInfos(e={}){return t.get("infos",{...e})},getLastRelease(e={}){return t.get("latestRelease",{...e})}};export{a as s}; +import{a1 as s}from"./app-347ef106.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t=s("web"),a={getSystemInfos(e={}){return t.get("infos",{...e})},getLastRelease(e={}){return t.get("latestRelease",{...e})}};export{a as s}; diff --git a/public/build/assets/userService-d2ada2ab.js b/public/build/assets/userService-f0891f7f.js similarity index 89% rename from public/build/assets/userService-d2ada2ab.js rename to public/build/assets/userService-f0891f7f.js index cdba5406..12178751 100644 --- a/public/build/assets/userService-d2ada2ab.js +++ b/public/build/assets/userService-f0891f7f.js @@ -1 +1 @@ -import{a1 as n}from"./app-72c44b80.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const a=n("api"),r=n("web"),o={updatePreference(e,t,s={}){return a.put("/user/preferences/"+e,{value:t},{...s})},getWebauthnDevices(e={}){return r.get("/webauthn/credentials",{...e})},revokeWebauthnDevice(e,t={}){return r.delete("/webauthn/credentials/"+e,{...t})},getPersonalAccessTokens(e={}){return r.get("/oauth/personal-access-tokens",{...e})},deletePersonalAccessToken(e,t={}){return r.delete("/oauth/personal-access-tokens/"+e,{...t})}};export{o as u}; +import{a1 as n}from"./app-347ef106.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const a=n("api"),r=n("web"),o={updatePreference(e,t,s={}){return a.put("/user/preferences/"+e,{value:t},{...s})},getWebauthnDevices(e={}){return r.get("/webauthn/credentials",{...e})},revokeWebauthnDevice(e,t={}){return r.delete("/webauthn/credentials/"+e,{...t})},getPersonalAccessTokens(e={}){return r.get("/oauth/personal-access-tokens",{...e})},deletePersonalAccessToken(e,t={}){return r.delete("/oauth/personal-access-tokens/"+e,{...t})}};export{o as u}; diff --git a/public/build/assets/webauthnService-08262ddb.js b/public/build/assets/webauthnService-ad1f52a0.js similarity index 98% rename from public/build/assets/webauthnService-08262ddb.js rename to public/build/assets/webauthnService-ad1f52a0.js index 44edb09d..c5502aec 100644 --- a/public/build/assets/webauthnService-08262ddb.js +++ b/public/build/assets/webauthnService-ad1f52a0.js @@ -1 +1 @@ -var h=Object.defineProperty;var w=(t,r,e)=>r in t?h(t,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[r]=e;var c=(t,r,e)=>(w(t,typeof r!="symbol"?r+"":r,e),e);import{a1 as f}from"./app-72c44b80.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */class y{constructor(){c(this,"controller")}createNewAbortSignal(){if(this.controller){const e=new Error("Cancelling existing WebAuthn API call for new one");e.name="AbortError",this.controller.abort(e)}const r=new AbortController;return this.controller=r,r.signal}}const d=new y;function g(t){return t==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(t)}function _(t,r){var n,a;const{publicKey:e}=r;if(t.name==="AbortError"){if(r.signal instanceof AbortSignal)return{phrase:"errors.aborted_by_user",type:"is-warning"}}else if(t.name==="ConstraintError"){if(((n=e.authenticatorSelection)==null?void 0:n.requireResidentKey)===!0)return{phrase:"errors.authenticator_missing_discoverable_credential_support",type:"is-danger"};if(((a=e.authenticatorSelection)==null?void 0:a.userVerification)==="required")return{phrase:"errors.authenticator_missing_user_verification_support",type:"is-danger"}}else{if(t.name==="InvalidStateError")return{phrase:"errors.security_device_already_registered",type:"is-danger"};if(t.name==="NotAllowedError")return{phrase:"errors.not_allowed_operation",type:"is-danger"};if(t.name==="NotSupportedError")return e.pubKeyCredParams.filter(u=>u.type==="public-key").length===0?{phrase:"errors.no_entry_was_of_type_public_key",type:"is-danger"}:{phrase:"errors.no_authenticator_support_specified_algorithms",type:"is-danger"};if(t.name==="SecurityError"){const o=window.location.hostname;if(g(o)){if(e.rp.id!==o)return{phrase:"errors.security_error_check_rpid",type:"is-danger"}}else return{phrase:"errors.2fauth_has_not_a_valid_domain",type:"is-danger"}}else if(t.name==="TypeError"){if(e.user.id.byteLength<1||e.user.id.byteLength>64)return{phrase:"errors.user_id_not_between_1_64",type:"is-danger"}}else if(t.name==="UnknownError")return{phrase:"errors.unknown_error",type:"is-danger"}}return{phrase:"errors.unknown_error",type:"is-danger"}}function m(t,r){const{publicKey:e}=r;if(t.name==="AbortError"){if(r.signal instanceof AbortSignal)return{phrase:"errors.aborted_by_user",type:"is-warning"}}else{if(t.name==="NotAllowedError")return{phrase:"errors.not_allowed_operation",type:"is-danger"};if(t.name==="SecurityError"){const n=window.location.hostname;if(g(n)){if(e.rpId!==n)return{phrase:"errors.security_error_check_rpid",type:"is-danger"}}else return{phrase:"errors.2fauth_has_not_a_valid_domain",type:"is-danger"}}else if(t.name==="UnknownError")return{phrase:"errors.unknown_error",type:"is-danger"}}return{phrase:"errors.unknown_error",type:"is-danger"}}const p=f("web");class s{async register(){let r={webauthn:!0,type:"is-danger",message:""};if(!window.isSecureContext)return r.message="errors.https_required",Promise.reject(r);if(!s.supportsWebAuthn)return r.message="errors.browser_does_not_support_webauthn",Promise.reject(r);const e=await p.post("/webauthn/register/options").then(i=>i.data);let a={publicKey:s.parseIncomingServerOptions(e)};a.signal=d.createNewAbortSignal();let o;try{o=await navigator.credentials.create(a)}catch(i){const l=_(i,a);return Promise.reject({webauthn:!0,type:l.type,message:l.phrase})}const u=s.parseOutgoingCredentials(o);return p.post("/webauthn/register",u,{returnError:!0})}async authenticate(r){if(!window.isSecureContext)return err.message="errors.https_required",Promise.reject(err);if(!s.supportsWebAuthn)return err.message="errors.browser_does_not_support_webauthn",Promise.reject(err);const e=await p.post("/webauthn/login/options",{email:r}).then(i=>i.data);let a={publicKey:s.parseIncomingServerOptions(e)};a.signal=d.createNewAbortSignal();const o=await navigator.credentials.get(a).catch(i=>{const l=m(i,a);return Promise.reject({webauthn:!0,type:l.type,message:l.phrase})});let u=s.parseOutgoingCredentials(o);return u.email=r,p.post("/webauthn/login",u,{returnError:!0})}static parseIncomingServerOptions(r){return r.challenge=s.uint8Array(r.challenge),"user"in r&&(r.user={...r.user,id:s.uint8Array(r.user.id)}),["excludeCredentials","allowCredentials"].filter(e=>e in r).forEach(e=>{r[e]=r[e].map(n=>({...n,id:s.uint8Array(n.id)}))}),r}static parseOutgoingCredentials(r){let e={id:r.id,type:r.type,rawId:s.arrayToBase64String(r.rawId),response:{}};return["clientDataJSON","attestationObject","authenticatorData","signature","userHandle"].filter(n=>n in r.response).forEach(n=>e.response[n]=s.arrayToBase64String(r.response[n])),e}static uint8Array(r,e=!1){return Uint8Array.from(e?atob(r):s.base64UrlDecode(r),n=>n.charCodeAt(0))}static arrayToBase64String(r){return btoa(String.fromCharCode(...new Uint8Array(r)))}static base64UrlDecode(r){r=r.replace(/-/g,"+").replace(/_/g,"/");const e=r.length%4;if(e){if(e===1)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");r+=new Array(5-e).join("=")}return atob(r)}static supportsWebAuthn(){return(window==null?void 0:window.PublicKeyCredential)!==void 0&&typeof window.PublicKeyCredential=="function"}}const C=new s;export{C as w}; +var h=Object.defineProperty;var w=(t,r,e)=>r in t?h(t,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[r]=e;var c=(t,r,e)=>(w(t,typeof r!="symbol"?r+"":r,e),e);import{a1 as f}from"./app-347ef106.js";/*! 2FAuth version 5.0.3 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */class y{constructor(){c(this,"controller")}createNewAbortSignal(){if(this.controller){const e=new Error("Cancelling existing WebAuthn API call for new one");e.name="AbortError",this.controller.abort(e)}const r=new AbortController;return this.controller=r,r.signal}}const d=new y;function g(t){return t==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(t)}function _(t,r){var n,a;const{publicKey:e}=r;if(t.name==="AbortError"){if(r.signal instanceof AbortSignal)return{phrase:"errors.aborted_by_user",type:"is-warning"}}else if(t.name==="ConstraintError"){if(((n=e.authenticatorSelection)==null?void 0:n.requireResidentKey)===!0)return{phrase:"errors.authenticator_missing_discoverable_credential_support",type:"is-danger"};if(((a=e.authenticatorSelection)==null?void 0:a.userVerification)==="required")return{phrase:"errors.authenticator_missing_user_verification_support",type:"is-danger"}}else{if(t.name==="InvalidStateError")return{phrase:"errors.security_device_already_registered",type:"is-danger"};if(t.name==="NotAllowedError")return{phrase:"errors.not_allowed_operation",type:"is-danger"};if(t.name==="NotSupportedError")return e.pubKeyCredParams.filter(u=>u.type==="public-key").length===0?{phrase:"errors.no_entry_was_of_type_public_key",type:"is-danger"}:{phrase:"errors.no_authenticator_support_specified_algorithms",type:"is-danger"};if(t.name==="SecurityError"){const o=window.location.hostname;if(g(o)){if(e.rp.id!==o)return{phrase:"errors.security_error_check_rpid",type:"is-danger"}}else return{phrase:"errors.2fauth_has_not_a_valid_domain",type:"is-danger"}}else if(t.name==="TypeError"){if(e.user.id.byteLength<1||e.user.id.byteLength>64)return{phrase:"errors.user_id_not_between_1_64",type:"is-danger"}}else if(t.name==="UnknownError")return{phrase:"errors.unknown_error",type:"is-danger"}}return{phrase:"errors.unknown_error",type:"is-danger"}}function m(t,r){const{publicKey:e}=r;if(t.name==="AbortError"){if(r.signal instanceof AbortSignal)return{phrase:"errors.aborted_by_user",type:"is-warning"}}else{if(t.name==="NotAllowedError")return{phrase:"errors.not_allowed_operation",type:"is-danger"};if(t.name==="SecurityError"){const n=window.location.hostname;if(g(n)){if(e.rpId!==n)return{phrase:"errors.security_error_check_rpid",type:"is-danger"}}else return{phrase:"errors.2fauth_has_not_a_valid_domain",type:"is-danger"}}else if(t.name==="UnknownError")return{phrase:"errors.unknown_error",type:"is-danger"}}return{phrase:"errors.unknown_error",type:"is-danger"}}const p=f("web");class s{async register(){let r={webauthn:!0,type:"is-danger",message:""};if(!window.isSecureContext)return r.message="errors.https_required",Promise.reject(r);if(!s.supportsWebAuthn)return r.message="errors.browser_does_not_support_webauthn",Promise.reject(r);const e=await p.post("/webauthn/register/options").then(i=>i.data);let a={publicKey:s.parseIncomingServerOptions(e)};a.signal=d.createNewAbortSignal();let o;try{o=await navigator.credentials.create(a)}catch(i){const l=_(i,a);return Promise.reject({webauthn:!0,type:l.type,message:l.phrase})}const u=s.parseOutgoingCredentials(o);return p.post("/webauthn/register",u,{returnError:!0})}async authenticate(r){if(!window.isSecureContext)return err.message="errors.https_required",Promise.reject(err);if(!s.supportsWebAuthn)return err.message="errors.browser_does_not_support_webauthn",Promise.reject(err);const e=await p.post("/webauthn/login/options",{email:r}).then(i=>i.data);let a={publicKey:s.parseIncomingServerOptions(e)};a.signal=d.createNewAbortSignal();const o=await navigator.credentials.get(a).catch(i=>{const l=m(i,a);return Promise.reject({webauthn:!0,type:l.type,message:l.phrase})});let u=s.parseOutgoingCredentials(o);return u.email=r,p.post("/webauthn/login",u,{returnError:!0})}static parseIncomingServerOptions(r){return r.challenge=s.uint8Array(r.challenge),"user"in r&&(r.user={...r.user,id:s.uint8Array(r.user.id)}),["excludeCredentials","allowCredentials"].filter(e=>e in r).forEach(e=>{r[e]=r[e].map(n=>({...n,id:s.uint8Array(n.id)}))}),r}static parseOutgoingCredentials(r){let e={id:r.id,type:r.type,rawId:s.arrayToBase64String(r.rawId),response:{}};return["clientDataJSON","attestationObject","authenticatorData","signature","userHandle"].filter(n=>n in r.response).forEach(n=>e.response[n]=s.arrayToBase64String(r.response[n])),e}static uint8Array(r,e=!1){return Uint8Array.from(e?atob(r):s.base64UrlDecode(r),n=>n.charCodeAt(0))}static arrayToBase64String(r){return btoa(String.fromCharCode(...new Uint8Array(r)))}static base64UrlDecode(r){r=r.replace(/-/g,"+").replace(/_/g,"/");const e=r.length%4;if(e){if(e===1)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");r+=new Array(5-e).join("=")}return atob(r)}static supportsWebAuthn(){return(window==null?void 0:window.PublicKeyCredential)!==void 0&&typeof window.PublicKeyCredential=="function"}}const C=new s;export{C as w}; diff --git a/public/build/manifest.json b/public/build/manifest.json index d4ea6c15..fdf56dd7 100644 --- a/public/build/manifest.json +++ b/public/build/manifest.json @@ -3,60 +3,60 @@ "file": "assets/Spinner-2c227a70.css", "src": "Spinner.css" }, - "_Form-d325991a.js": { - "file": "assets/Form-d325991a.js", + "_Form-893a9a1a.js": { + "file": "assets/Form-893a9a1a.js", "imports": [ "resources/js/app.js" ] }, - "_OtpDisplay-62239862.js": { - "file": "assets/OtpDisplay-62239862.js", + "_OtpDisplay-1a3c1737.js": { + "file": "assets/OtpDisplay-1a3c1737.js", "imports": [ "resources/js/app.js", - "_Spinner-0e4f49a2.js" + "_Spinner-8bfb7257.js" ] }, - "_QrContentDisplay-d6c6658b.js": { - "file": "assets/QrContentDisplay-d6c6658b.js", + "_QrContentDisplay-1d6d5b3f.js": { + "file": "assets/QrContentDisplay-1d6d5b3f.js", "imports": [ "resources/js/app.js" ] }, - "_SettingTabs-fbf19fde.js": { - "file": "assets/SettingTabs-fbf19fde.js", + "_SettingTabs-e95cff9d.js": { + "file": "assets/SettingTabs-e95cff9d.js", "imports": [ "resources/js/app.js" ] }, - "_Spinner-0e4f49a2.js": { + "_Spinner-8bfb7257.js": { "css": [ "assets/Spinner-2c227a70.css" ], - "file": "assets/Spinner-0e4f49a2.js", + "file": "assets/Spinner-8bfb7257.js", "imports": [ "resources/js/app.js" ] }, - "_bus-222e275f.js": { - "file": "assets/bus-222e275f.js", + "_bus-2e7bf732.js": { + "file": "assets/bus-2e7bf732.js", "imports": [ "resources/js/app.js" ] }, - "_systemService-fd2a8274.js": { - "file": "assets/systemService-fd2a8274.js", + "_systemService-c3f13e84.js": { + "file": "assets/systemService-c3f13e84.js", "imports": [ "resources/js/app.js" ] }, - "_userService-d2ada2ab.js": { - "file": "assets/userService-d2ada2ab.js", + "_userService-f0891f7f.js": { + "file": "assets/userService-f0891f7f.js", "imports": [ "resources/js/app.js" ] }, - "_webauthnService-08262ddb.js": { - "file": "assets/webauthnService-08262ddb.js", + "_webauthnService-ad1f52a0.js": { + "file": "assets/webauthnService-ad1f52a0.js", "imports": [ "resources/js/app.js" ] @@ -107,21 +107,21 @@ "resources/lang/php_si.json", "resources/lang/php_zh.json" ], - "file": "assets/app-72c44b80.js", + "file": "assets/app-347ef106.js", "isEntry": true, "src": "resources/js/app.js" }, "resources/js/views/About.vue": { - "file": "assets/About-8ae24971.js", + "file": "assets/About-0c758706.js", "imports": [ "resources/js/app.js", - "_systemService-fd2a8274.js" + "_systemService-c3f13e84.js" ], "isDynamicEntry": true, "src": "resources/js/views/About.vue" }, "resources/js/views/Error.vue": { - "file": "assets/Error-6fa6dad0.js", + "file": "assets/Error-c8fed33f.js", "imports": [ "resources/js/app.js" ], @@ -129,200 +129,200 @@ "src": "resources/js/views/Error.vue" }, "resources/js/views/Start.vue": { - "file": "assets/Start-3e40750b.js", + "file": "assets/Start-b183fdeb.js", "imports": [ "resources/js/app.js", - "_Form-d325991a.js", - "_bus-222e275f.js" + "_Form-893a9a1a.js", + "_bus-2e7bf732.js" ], "isDynamicEntry": true, "src": "resources/js/views/Start.vue" }, "resources/js/views/auth/Login.vue": { - "file": "assets/Login-f9f96d1e.js", + "file": "assets/Login-815161cc.js", "imports": [ "resources/js/app.js", - "_Form-d325991a.js", - "_webauthnService-08262ddb.js" + "_Form-893a9a1a.js", + "_webauthnService-ad1f52a0.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/Login.vue" }, "resources/js/views/auth/Register.vue": { - "file": "assets/Register-72e05bf6.js", + "file": "assets/Register-a013046c.js", "imports": [ "resources/js/app.js", - "_Form-d325991a.js", - "_webauthnService-08262ddb.js" + "_Form-893a9a1a.js", + "_webauthnService-ad1f52a0.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/Register.vue" }, "resources/js/views/auth/RequestReset.vue": { - "file": "assets/RequestReset-031c3de6.js", + "file": "assets/RequestReset-dd2e2272.js", "imports": [ "resources/js/app.js", - "_Form-d325991a.js" + "_Form-893a9a1a.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/RequestReset.vue" }, "resources/js/views/auth/password/Reset.vue": { - "file": "assets/Reset-ba2845e8.js", + "file": "assets/Reset-895e136f.js", "imports": [ "resources/js/app.js", - "_Form-d325991a.js" + "_Form-893a9a1a.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/password/Reset.vue" }, "resources/js/views/auth/webauthn/Recover.vue": { - "file": "assets/Recover-35ac48f1.js", + "file": "assets/Recover-9aa60c2c.js", "imports": [ "resources/js/app.js", - "_Form-d325991a.js" + "_Form-893a9a1a.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/webauthn/Recover.vue" }, "resources/js/views/groups/CreateUpdate.vue": { - "file": "assets/CreateUpdate-e5f4aaeb.js", + "file": "assets/CreateUpdate-f9adf383.js", "imports": [ "resources/js/app.js", - "_Form-d325991a.js", - "_bus-222e275f.js" + "_Form-893a9a1a.js", + "_bus-2e7bf732.js" ], "isDynamicEntry": true, "src": "resources/js/views/groups/CreateUpdate.vue" }, "resources/js/views/groups/Groups.vue": { - "file": "assets/Groups-729cd6d1.js", + "file": "assets/Groups-6bce16d4.js", "imports": [ "resources/js/app.js", - "_bus-222e275f.js" + "_bus-2e7bf732.js" ], "isDynamicEntry": true, "src": "resources/js/views/groups/Groups.vue" }, "resources/js/views/settings/Account.vue": { - "file": "assets/Account-f9c3fa47.js", + "file": "assets/Account-40908236.js", "imports": [ "resources/js/app.js", - "_Form-d325991a.js", - "_SettingTabs-fbf19fde.js" + "_Form-893a9a1a.js", + "_SettingTabs-e95cff9d.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/Account.vue" }, "resources/js/views/settings/Credentials/Edit.vue": { - "file": "assets/Edit-c86faad0.js", + "file": "assets/Edit-92d4ec4b.js", "imports": [ "resources/js/app.js", - "_Form-d325991a.js" + "_Form-893a9a1a.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/Credentials/Edit.vue" }, "resources/js/views/settings/OAuth.vue": { - "file": "assets/OAuth-7bad0205.js", + "file": "assets/OAuth-4e28fb5f.js", "imports": [ "resources/js/app.js", - "_Form-d325991a.js", - "_userService-d2ada2ab.js", - "_SettingTabs-fbf19fde.js", - "_Spinner-0e4f49a2.js" + "_Form-893a9a1a.js", + "_userService-f0891f7f.js", + "_SettingTabs-e95cff9d.js", + "_Spinner-8bfb7257.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/OAuth.vue" }, "resources/js/views/settings/Options.vue": { - "file": "assets/Options-3a411377.js", + "file": "assets/Options-3d99ca9e.js", "imports": [ - "_SettingTabs-fbf19fde.js", - "_userService-d2ada2ab.js", + "_SettingTabs-e95cff9d.js", + "_userService-f0891f7f.js", "resources/js/app.js", - "_systemService-fd2a8274.js" + "_systemService-c3f13e84.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/Options.vue" }, "resources/js/views/settings/WebAuthn.vue": { - "file": "assets/WebAuthn-60ef5014.js", + "file": "assets/WebAuthn-28d5bd1b.js", "imports": [ "resources/js/app.js", - "_SettingTabs-fbf19fde.js", - "_userService-d2ada2ab.js", - "_webauthnService-08262ddb.js", - "_Spinner-0e4f49a2.js" + "_SettingTabs-e95cff9d.js", + "_userService-f0891f7f.js", + "_webauthnService-ad1f52a0.js", + "_Spinner-8bfb7257.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/WebAuthn.vue" }, "resources/js/views/twofaccounts/Accounts.vue": { - "file": "assets/Accounts-10c20f4b.js", + "file": "assets/Accounts-8a72d9f5.js", "imports": [ "resources/js/app.js", - "_OtpDisplay-62239862.js", - "_userService-d2ada2ab.js", - "_bus-222e275f.js", - "_Spinner-0e4f49a2.js" + "_OtpDisplay-1a3c1737.js", + "_userService-f0891f7f.js", + "_bus-2e7bf732.js", + "_Spinner-8bfb7257.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/Accounts.vue" }, "resources/js/views/twofaccounts/Capture.vue": { - "file": "assets/Capture-9bf0a566.js", + "file": "assets/Capture-8f76bfc6.js", "imports": [ "resources/js/app.js", - "_Form-d325991a.js", - "_Spinner-0e4f49a2.js", - "_QrContentDisplay-d6c6658b.js", - "_bus-222e275f.js" + "_Form-893a9a1a.js", + "_Spinner-8bfb7257.js", + "_QrContentDisplay-1d6d5b3f.js", + "_bus-2e7bf732.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/Capture.vue" }, "resources/js/views/twofaccounts/CreateUpdate.vue": { - "file": "assets/CreateUpdate-ad68e9ef.js", + "file": "assets/CreateUpdate-030b151d.js", "imports": [ "resources/js/app.js", - "_Form-d325991a.js", - "_OtpDisplay-62239862.js", - "_QrContentDisplay-d6c6658b.js", - "_bus-222e275f.js", - "_Spinner-0e4f49a2.js" + "_Form-893a9a1a.js", + "_OtpDisplay-1a3c1737.js", + "_QrContentDisplay-1d6d5b3f.js", + "_bus-2e7bf732.js", + "_Spinner-8bfb7257.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/CreateUpdate.vue" }, "resources/js/views/twofaccounts/Import.vue": { - "file": "assets/Import-93a5b87d.js", + "file": "assets/Import-a9bc7b8c.js", "imports": [ "resources/js/app.js", - "_Form-d325991a.js", - "_OtpDisplay-62239862.js", - "_Spinner-0e4f49a2.js", - "_bus-222e275f.js" + "_Form-893a9a1a.js", + "_OtpDisplay-1a3c1737.js", + "_Spinner-8bfb7257.js", + "_bus-2e7bf732.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/Import.vue" }, "resources/js/views/twofaccounts/QRcode.vue": { - "file": "assets/QRcode-90640d5d.js", + "file": "assets/QRcode-628d39fd.js", "imports": [ "resources/js/app.js", - "_Spinner-0e4f49a2.js" + "_Spinner-8bfb7257.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/QRcode.vue" }, "resources/lang/php_bg.json": { - "file": "assets/php_bg-bcff75d8.js", + "file": "assets/php_bg-0f3d4dcd.js", "isDynamicEntry": true, "src": "resources/lang/php_bg.json" }, "resources/lang/php_de.json": { - "file": "assets/php_de-219f9ed4.js", + "file": "assets/php_de-27d4511d.js", "isDynamicEntry": true, "src": "resources/lang/php_de.json" }, @@ -332,7 +332,7 @@ "src": "resources/lang/php_en.json" }, "resources/lang/php_es.json": { - "file": "assets/php_es-887feba5.js", + "file": "assets/php_es-e9ed7804.js", "isDynamicEntry": true, "src": "resources/lang/php_es.json" }, @@ -342,32 +342,32 @@ "src": "resources/lang/php_fr.json" }, "resources/lang/php_id.json": { - "file": "assets/php_id-3611d83b.js", + "file": "assets/php_id-54dd91aa.js", "isDynamicEntry": true, "src": "resources/lang/php_id.json" }, "resources/lang/php_it.json": { - "file": "assets/php_it-785d18db.js", + "file": "assets/php_it-fc9d90d6.js", "isDynamicEntry": true, "src": "resources/lang/php_it.json" }, "resources/lang/php_ro.json": { - "file": "assets/php_ro-e68bc39a.js", + "file": "assets/php_ro-5426628b.js", "isDynamicEntry": true, "src": "resources/lang/php_ro.json" }, "resources/lang/php_ru.json": { - "file": "assets/php_ru-9fc62699.js", + "file": "assets/php_ru-27c574f1.js", "isDynamicEntry": true, "src": "resources/lang/php_ru.json" }, "resources/lang/php_si.json": { - "file": "assets/php_si-fff4c92d.js", + "file": "assets/php_si-1c14cf6b.js", "isDynamicEntry": true, "src": "resources/lang/php_si.json" }, "resources/lang/php_zh.json": { - "file": "assets/php_zh-a04c3840.js", + "file": "assets/php_zh-579d5b22.js", "isDynamicEntry": true, "src": "resources/lang/php_zh.json" }