diff --git a/public/build/assets/About-21528213.js b/public/build/assets/About-51085f4f.js similarity index 95% rename from public/build/assets/About-21528213.js rename to public/build/assets/About-51085f4f.js index 11d263dd..38544f19 100644 --- a/public/build/assets/About-21528213.js +++ b/public/build/assets/About-51085f4f.js @@ -1 +1 @@ -import{Q as b,u as k,e as i,f as g,k as C,p as r,h as s,t,m as o,n as c,j as e,i as h,U as u}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const B={class:"title has-text-grey-dark"},F={class:"block"},A=s("span",{class:"is-size-5"},"2FAuth",-1),w=s("br",null,null,-1),y=s("img",{class:"about-logo",src:"logo.svg",alt:"2FAuth logo"},null,-1),v=s("p",{class:"block"},[e(" ©Bubka "),s("a",{class:"is-size-7",href:"https://github.com/Bubka/2FAuth/blob/master/LICENSE"},"AGPL-3.0 license")],-1),I={class:"title is-5 has-text-grey-light"},L={class:"buttons"},$={class:"icon is-small"},S=s("span",null,"Github",-1),T={class:"icon is-small"},V=s("span",null,"Docs",-1),z={class:"icon is-small"},N=s("span",null,"Demo",-1),D={class:"icon is-small"},E=s("span",null,"API",-1),W={class:"title is-5 has-text-grey-light"},j={class:"block"},M=s("a",{href:"https://docs.2fauth.app/credits/"},"Laravel, Bulma CSS, Vue.js and more",-1),R=s("a",{href:"https://fontawesome.com/"},"Font Awesome",-1),x=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),G=s("a",{href:"https://2fa.directory/"},"2FA Directory",-1),P=s("a",{class:"is-size-7",href:"https://github.com/2factorauth/twofactorauth/blob/master/LICENSE.md"},"(MIT License)",-1),q={__name:"About",setup(U){const _=b("2fauth"),d=k().options.history.state.back;return(a,Q)=>{const l=i("FontAwesomeIcon"),p=i("ButtonBackCloseCancel"),m=i("VueFooter"),f=i("ResponsiveWidthWrapper");return g(),C(f,null,{default:r(()=>[s("h1",B,t(a.$t("commons.about")),1),s("p",F,[o(h(u),null,{default:r(({mode:n})=>[s("span",{class:c(n=="dark"?"has-text-white":"has-text-black")},[A,e(" v"+t(h(_).version),1)],2)]),_:1}),w,e(" "+t(a.$t("commons.2fauth_teaser")),1)]),y,v,s("h2",I,t(a.$t("commons.resources")),1),s("div",L,[o(h(u),null,{default:r(({mode:n})=>[s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://github.com/Bubka/2FAuth",target:"_blank"},[s("span",$,[o(l,{icon:["fab","github-alt"]})]),S],2),s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://docs.2fauth.app/",target:"_blank"},[s("span",T,[o(l,{icon:["fas","book"]})]),V],2),s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://demo.2fauth.app/",target:"_blank"},[s("span",z,[o(l,{icon:["fas","flask"]})]),N],2),s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://docs.2fauth.app/resources/rapidoc.html",target:"_blank"},[s("span",D,[o(l,{icon:["fas","code"]})]),E],2)]),_:1})]),s("h2",W,t(a.$t("commons.credits")),1),s("p",j,[s("ul",null,[s("li",null,[e(t(a.$t("commons.made_with"))+" ",1),M]),s("li",null,[e(t(a.$t("commons.ui_icons_by"))+" ",1),R,e(" "),x]),s("li",null,[e(t(a.$t("commons.logos_by"))+" ",1),G,e(" "),P])])]),o(m,{showButtons:!0},{default:r(()=>[o(p,{returnTo:{path:h(d)},action:"back"},null,8,["returnTo"])]),_:1})]),_:1})}}};export{q as default}; +import{Q as b,u as k,e as i,f as g,k as C,p as r,h as s,t,m as o,n as c,j as e,i as h,U as u}from"./app-2d89b28f.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const B={class:"title has-text-grey-dark"},F={class:"block"},A=s("span",{class:"is-size-5"},"2FAuth",-1),w=s("br",null,null,-1),y=s("img",{class:"about-logo",src:"logo.svg",alt:"2FAuth logo"},null,-1),v=s("p",{class:"block"},[e(" ©Bubka "),s("a",{class:"is-size-7",href:"https://github.com/Bubka/2FAuth/blob/master/LICENSE"},"AGPL-3.0 license")],-1),I={class:"title is-5 has-text-grey-light"},L={class:"buttons"},$={class:"icon is-small"},S=s("span",null,"Github",-1),T={class:"icon is-small"},V=s("span",null,"Docs",-1),z={class:"icon is-small"},N=s("span",null,"Demo",-1),D={class:"icon is-small"},E=s("span",null,"API",-1),W={class:"title is-5 has-text-grey-light"},j={class:"block"},M=s("a",{href:"https://docs.2fauth.app/credits/"},"Laravel, Bulma CSS, Vue.js and more",-1),R=s("a",{href:"https://fontawesome.com/"},"Font Awesome",-1),x=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),G=s("a",{href:"https://2fa.directory/"},"2FA Directory",-1),P=s("a",{class:"is-size-7",href:"https://github.com/2factorauth/twofactorauth/blob/master/LICENSE.md"},"(MIT License)",-1),q={__name:"About",setup(U){const _=b("2fauth"),d=k().options.history.state.back;return(a,Q)=>{const l=i("FontAwesomeIcon"),p=i("ButtonBackCloseCancel"),m=i("VueFooter"),f=i("ResponsiveWidthWrapper");return g(),C(f,null,{default:r(()=>[s("h1",B,t(a.$t("commons.about")),1),s("p",F,[o(h(u),null,{default:r(({mode:n})=>[s("span",{class:c(n=="dark"?"has-text-white":"has-text-black")},[A,e(" v"+t(h(_).version),1)],2)]),_:1}),w,e(" "+t(a.$t("commons.2fauth_teaser")),1)]),y,v,s("h2",I,t(a.$t("commons.resources")),1),s("div",L,[o(h(u),null,{default:r(({mode:n})=>[s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://github.com/Bubka/2FAuth",target:"_blank"},[s("span",$,[o(l,{icon:["fab","github-alt"]})]),S],2),s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://docs.2fauth.app/",target:"_blank"},[s("span",T,[o(l,{icon:["fas","book"]})]),V],2),s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://demo.2fauth.app/",target:"_blank"},[s("span",z,[o(l,{icon:["fas","flask"]})]),N],2),s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://docs.2fauth.app/resources/rapidoc.html",target:"_blank"},[s("span",D,[o(l,{icon:["fas","code"]})]),E],2)]),_:1})]),s("h2",W,t(a.$t("commons.credits")),1),s("p",j,[s("ul",null,[s("li",null,[e(t(a.$t("commons.made_with"))+" ",1),M]),s("li",null,[e(t(a.$t("commons.ui_icons_by"))+" ",1),R,e(" "),x]),s("li",null,[e(t(a.$t("commons.logos_by"))+" ",1),G,e(" "),P])])]),o(m,{showButtons:!0},{default:r(()=>[o(p,{returnTo:{path:h(d)},action:"back"},null,8,["returnTo"])]),_:1})]),_:1})}}};export{q as default}; diff --git a/public/build/assets/Account-a7d249ba.js b/public/build/assets/Account-9176478b.js similarity index 96% rename from public/build/assets/Account-a7d249ba.js rename to public/build/assets/Account-9176478b.js index 07210344..8779261e 100644 --- a/public/build/assets/Account-a7d249ba.js +++ b/public/build/assets/Account-9176478b.js @@ -1 +1 @@ -import{Q as A,a as U,b as C,u as D,a2 as K,d as y,a0 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-60af1d1a.js";import{F as v}from"./Form-0a788c90.js";import{_ as R}from"./SettingTabs-0b59e581.js";/*! 2FAuth version 5.1.0 - 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"],q=["onSubmit"],G={class:"title is-4 pt-6 has-text-grey-light"},J=["disabled"],O=["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 T(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 P(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(T,["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(P,["prevent"]),onKeydown:e[7]||(e[7]=o=>s(t).onKeydown(o))},[n("h4",G,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,J)],40,q),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,O)]),_:1})]),a(k,{showButtons:!0},{default:E(()=>[a(S,{returnTo:{name:s(x)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{ae as default}; +import{Q as A,a as U,b as C,u as D,a2 as K,d as y,a0 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-2d89b28f.js";import{F as v}from"./Form-5283f7b6.js";import{_ as R}from"./SettingTabs-708dbaa6.js";/*! 2FAuth version 5.1.1 - 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"],q=["onSubmit"],G={class:"title is-4 pt-6 has-text-grey-light"},J=["disabled"],O=["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 T(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 P(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(T,["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(P,["prevent"]),onKeydown:e[7]||(e[7]=o=>s(t).onKeydown(o))},[n("h4",G,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,J)],40,q),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,O)]),_: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-7bc9693f.js b/public/build/assets/Accounts-f711dee9.js similarity index 99% rename from public/build/assets/Accounts-7bc9693f.js rename to public/build/assets/Accounts-f711dee9.js index 04ed48d9..71d026fc 100644 --- a/public/build/assets/Accounts-7bc9693f.js +++ b/public/build/assets/Accounts-f711dee9.js @@ -1,4 +1,4 @@ -import{a as Ft,e as te,f as S,g as C,h as y,F as ut,G as dt,m as O,p as B,n as U,t as x,i as p,U as $e,j as ze,J as hn,r as oe,K as nt,L as mn,z as gn,u as Qt,k as Se,l as Y,M as vn,N as bn,O as _n,o as Zt,P as We,E as ot,Q as yn,b as wn,R as Sn,S as En,c as Dn,T as kn,x as bt,v as Cn,I as _t,D as Oe,V as Tn,A as yt,W as On,w as wt,X as Re,B as Xt,Y as In}from"./app-60af1d1a.js";import{_ as An,a as Mn,b as $n}from"./OtpDisplay-f582bb88.js";import{_ as xn}from"./SearchBox-62743462.js";import{u as Pn}from"./bus-ab2b6d74.js";import"./Spinner-bfa27d3a.js";/*! 2FAuth version 5.1.0 - 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"},Gn={class:"columns is-multiline"},Rn=["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&&hn.updatePreference("activeGroup",i),e("update:showGroupSwitch",!1)}return(i,r)=>{const s=te("RouterLink"),l=te("ButtonBackCloseCancel"),u=te("VueFooter");return S(),C("div",Nn,[y("div",Fn,[y("div",Bn,[y("div",Gn,[(S(!0),C(ut,null,dt(t.groups,a=>(S(),C("div",{class:"column is-full",key:a.id},[O(p($e),null,{default:B(({mode:c})=>[y("button",{class:U(["button is-fullwidth",{"is-dark has-text-light is-outlined":c=="dark"}]),onClick:f=>o(a.id)},x(a.name),11,Rn)]),_:2},1024)]))),128))]),y("div",Ln,[y("div",Xn,[O(s,{to:{name:"groups"}},{default:B(()=>[ze(x(i.$t("groups.manage_groups")),1)]),_:1})])])])]),O(u,{showButtons:!0},{default:B(()=>[O(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"},qn={class:"column is-full has-text-centered"},Hn={class:"column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},Un={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=oe(null);async function i(){o.value===0?await nt.withdraw(n.selectedAccountsIds):await mn.assign(n.selectedAccountsIds,o.value),e("accounts-moved")}return(r,s)=>{const l=te("RouterLink"),u=te("ButtonBackCloseCancel"),a=te("VueFooter");return S(),C("div",zn,[y("div",Wn,[y("div",qn,x(r.$t("groups.move_selected_to")),1),y("div",Hn,[y("div",Un,[(S(!0),C(ut,null,dt(t.groups,c=>(S(),C("div",{class:"column is-full",key:c.id},[O(p($e),null,{default:B(({mode:f})=>[y("button",{class:U(["button is-fullwidth",{"is-link":p(o)===c.id,"is-dark has-text-light is-outlined":f=="dark"}]),onClick:_=>o.value=c.id},[c.id===0?(S(),C("span",Vn,x(r.$t("groups.no_group")),1)):(S(),C("span",Kn,x(c.name),1))],10,jn)]),_:2},1024)]))),128))]),y("div",Qn,[y("div",Zn,[O(l,{to:{name:"groups"}},{default:B(()=>[ze(x(r.$t("groups.manage_groups")),1)]),_:1})])])])]),O(a,{showButtons:!0},{default:B(()=>[y("p",Jn,[y("button",{class:"button is-link is-rounded",onClick:i},x(r.$t("commons.move")),1)]),O(u,{action:"cancel",useLinkTag:!1,onCanceled:s[0]||(s[0]=c=>r.$emit("update:showDestinationGroupSelector",!1))})]),_:1})])}}},to={class:"toolbar has-text-centered"},no={class:"columns"},oo={class:"column has-nowrap px-0"},io={class:"has-text-grey mr-1"},ro=["title"],so=["title"],ao=["title"],lo=["title"],uo={__name:"Toolbar",props:{selectedCount:Number},setup(t){return(e,n)=>{const o=te("FontAwesomeIcon");return S(),C("div",to,[y("div",no,[y("div",oo,[y("span",io,x(e.$t("commons.x_selected",{count:t.selectedCount})),1),y("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,ro),y("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")},[y("span",null,x(e.$t("commons.check_all")),1),O(o,{class:"ml-1",icon:["fas","check-square"]})],8,so),y("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")},[O(o,{icon:["fas","sort-alpha-down"]})],8,ao),y("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")},[O(o,{icon:["fas","sort-alpha-up"]})],8,lo)])])])}}},co={key:0,class:"control"},fo={class:"icon is-small"},po={key:1,class:"control"},ho={key:2,class:"control"},mo=["disabled","title"],go={key:3,class:"control"},vo=["disabled"],bo={key:4,class:"control"},_o=["disabled","title"],yo={__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=Qt(),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=te("FontAwesomeIcon");return S(),Se(p($e),null,{default:B(({mode:u})=>[t.inManagementMode?Y("",!0):(S(),C("p",co,[y("button",{class:"button is-link is-rounded is-focus",onClick:i},[y("span",null,x(r.$t("commons.new")),1),y("span",fo,[O(l,{icon:["fas","qrcode"]})])])])),t.inManagementMode?Y("",!0):(S(),C("p",po,[y("button",{id:"btnManage",class:U(["button is-rounded",{"is-dark":u=="dark"}]),onClick:s[0]||(s[0]=a=>r.$emit("update:inManagementMode",!0))},x(r.$t("commons.manage")),3)])),t.inManagementMode?(S(),C("p",ho,[y("button",{id:"btnMove",disabled:t.areDisabled,class:U(["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")},x(r.$t("commons.move")),11,mo)])):Y("",!0),t.inManagementMode?(S(),C("p",go,[y("button",{id:"btnDelete",disabled:t.areDisabled,class:U(["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"))},x(r.$t("commons.delete")),11,vo)])):Y("",!0),t.inManagementMode?(S(),C("p",bo,[y("button",{id:"btnExport",disabled:t.areDisabled,class:U(["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")},x(r.$t("commons.export")),11,_o)])):Y("",!0)]),_:1})}}};function wo(t){return vn()?(bn(t),!0):!1}function Mt(t){return typeof t=="function"?t():p(t)}const So=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;function Eo(t,e=!0){_n()?Zt(t):e?t():We(t)}function Do(t){var e;const n=Mt(t);return(e=n==null?void 0:n.$el)!=null?e:n}const ko=So?window.document:void 0;/**! +import{a as Ft,e as te,f as S,g as C,h as y,F as ut,G as dt,m as O,p as B,n as U,t as x,i as p,U as $e,j as ze,J as hn,r as oe,K as nt,L as mn,z as gn,u as Qt,k as Se,l as Y,M as vn,N as bn,O as _n,o as Zt,P as We,E as ot,Q as yn,b as wn,R as Sn,S as En,c as Dn,T as kn,x as bt,v as Cn,I as _t,D as Oe,V as Tn,A as yt,W as On,w as wt,X as Re,B as Xt,Y as In}from"./app-2d89b28f.js";import{_ as An,a as Mn,b as $n}from"./OtpDisplay-2108b98d.js";import{_ as xn}from"./SearchBox-cb8625ff.js";import{u as Pn}from"./bus-7802a020.js";import"./Spinner-aea2b665.js";/*! 2FAuth version 5.1.1 - 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"},Gn={class:"columns is-multiline"},Rn=["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&&hn.updatePreference("activeGroup",i),e("update:showGroupSwitch",!1)}return(i,r)=>{const s=te("RouterLink"),l=te("ButtonBackCloseCancel"),u=te("VueFooter");return S(),C("div",Nn,[y("div",Fn,[y("div",Bn,[y("div",Gn,[(S(!0),C(ut,null,dt(t.groups,a=>(S(),C("div",{class:"column is-full",key:a.id},[O(p($e),null,{default:B(({mode:c})=>[y("button",{class:U(["button is-fullwidth",{"is-dark has-text-light is-outlined":c=="dark"}]),onClick:f=>o(a.id)},x(a.name),11,Rn)]),_:2},1024)]))),128))]),y("div",Ln,[y("div",Xn,[O(s,{to:{name:"groups"}},{default:B(()=>[ze(x(i.$t("groups.manage_groups")),1)]),_:1})])])])]),O(u,{showButtons:!0},{default:B(()=>[O(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"},qn={class:"column is-full has-text-centered"},Hn={class:"column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},Un={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=oe(null);async function i(){o.value===0?await nt.withdraw(n.selectedAccountsIds):await mn.assign(n.selectedAccountsIds,o.value),e("accounts-moved")}return(r,s)=>{const l=te("RouterLink"),u=te("ButtonBackCloseCancel"),a=te("VueFooter");return S(),C("div",zn,[y("div",Wn,[y("div",qn,x(r.$t("groups.move_selected_to")),1),y("div",Hn,[y("div",Un,[(S(!0),C(ut,null,dt(t.groups,c=>(S(),C("div",{class:"column is-full",key:c.id},[O(p($e),null,{default:B(({mode:f})=>[y("button",{class:U(["button is-fullwidth",{"is-link":p(o)===c.id,"is-dark has-text-light is-outlined":f=="dark"}]),onClick:_=>o.value=c.id},[c.id===0?(S(),C("span",Vn,x(r.$t("groups.no_group")),1)):(S(),C("span",Kn,x(c.name),1))],10,jn)]),_:2},1024)]))),128))]),y("div",Qn,[y("div",Zn,[O(l,{to:{name:"groups"}},{default:B(()=>[ze(x(r.$t("groups.manage_groups")),1)]),_:1})])])])]),O(a,{showButtons:!0},{default:B(()=>[y("p",Jn,[y("button",{class:"button is-link is-rounded",onClick:i},x(r.$t("commons.move")),1)]),O(u,{action:"cancel",useLinkTag:!1,onCanceled:s[0]||(s[0]=c=>r.$emit("update:showDestinationGroupSelector",!1))})]),_:1})])}}},to={class:"toolbar has-text-centered"},no={class:"columns"},oo={class:"column has-nowrap px-0"},io={class:"has-text-grey mr-1"},ro=["title"],so=["title"],ao=["title"],lo=["title"],uo={__name:"Toolbar",props:{selectedCount:Number},setup(t){return(e,n)=>{const o=te("FontAwesomeIcon");return S(),C("div",to,[y("div",no,[y("div",oo,[y("span",io,x(e.$t("commons.x_selected",{count:t.selectedCount})),1),y("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,ro),y("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")},[y("span",null,x(e.$t("commons.check_all")),1),O(o,{class:"ml-1",icon:["fas","check-square"]})],8,so),y("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")},[O(o,{icon:["fas","sort-alpha-down"]})],8,ao),y("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")},[O(o,{icon:["fas","sort-alpha-up"]})],8,lo)])])])}}},co={key:0,class:"control"},fo={class:"icon is-small"},po={key:1,class:"control"},ho={key:2,class:"control"},mo=["disabled","title"],go={key:3,class:"control"},vo=["disabled"],bo={key:4,class:"control"},_o=["disabled","title"],yo={__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=Qt(),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=te("FontAwesomeIcon");return S(),Se(p($e),null,{default:B(({mode:u})=>[t.inManagementMode?Y("",!0):(S(),C("p",co,[y("button",{class:"button is-link is-rounded is-focus",onClick:i},[y("span",null,x(r.$t("commons.new")),1),y("span",fo,[O(l,{icon:["fas","qrcode"]})])])])),t.inManagementMode?Y("",!0):(S(),C("p",po,[y("button",{id:"btnManage",class:U(["button is-rounded",{"is-dark":u=="dark"}]),onClick:s[0]||(s[0]=a=>r.$emit("update:inManagementMode",!0))},x(r.$t("commons.manage")),3)])),t.inManagementMode?(S(),C("p",ho,[y("button",{id:"btnMove",disabled:t.areDisabled,class:U(["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")},x(r.$t("commons.move")),11,mo)])):Y("",!0),t.inManagementMode?(S(),C("p",go,[y("button",{id:"btnDelete",disabled:t.areDisabled,class:U(["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"))},x(r.$t("commons.delete")),11,vo)])):Y("",!0),t.inManagementMode?(S(),C("p",bo,[y("button",{id:"btnExport",disabled:t.areDisabled,class:U(["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")},x(r.$t("commons.export")),11,_o)])):Y("",!0)]),_:1})}}};function wo(t){return vn()?(bn(t),!0):!1}function Mt(t){return typeof t=="function"?t():p(t)}const So=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;function Eo(t,e=!0){_n()?Zt(t):e?t():We(t)}function Do(t){var e;const n=Mt(t);return(e=n==null?void 0:n.$el)!=null?e:n}const ko=So?window.document:void 0;/**! * Sortable 1.15.0 * @author RubaXa * @author owenm diff --git a/public/build/assets/AdminTabs-94ad3971.js b/public/build/assets/AdminTabs-7af3858b.js similarity index 85% rename from public/build/assets/AdminTabs-94ad3971.js rename to public/build/assets/AdminTabs-7af3858b.js index 42353280..819d8cd2 100644 --- a/public/build/assets/AdminTabs-94ad3971.js +++ b/public/build/assets/AdminTabs-7af3858b.js @@ -1 +1 @@ -import{r as u,e as t,f as s,g as a,m as n,p as i,h as o,F as _,G as v,i as f,n as h,j as k,t as w}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const T={class:"options-header"},g={class:"tabs is-centered is-fullwidth"},b={__name:"AdminTabs",props:{activeTab:{type:String,default:""}},setup(r){const p=r,d=u([{name:"admin.app_setup",view:"admin.appSetup",id:"lnkTabApp"},{name:"admin.users",view:"admin.users",id:"lnkTabUsers"}]);return(c,R)=>{const l=t("RouterLink"),m=t("ResponsiveWidthWrapper");return s(),a("div",T,[n(m,null,{default:i(()=>[o("div",g,[o("ul",null,[(s(!0),a(_,null,v(f(d),e=>(s(),a("li",{key:e.view,class:h({"is-active":e.view===p.activeTab})},[n(l,{id:e.id,to:{name:e.view}},{default:i(()=>[k(w(c.$t(e.name)),1)]),_:2},1032,["id","to"])],2))),128))])])]),_:1})])}}};export{b as _}; +import{r as u,e as t,f as s,g as a,m as n,p as i,h as o,F as _,G as v,i as f,n as h,j as k,t as w}from"./app-2d89b28f.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const T={class:"options-header"},g={class:"tabs is-centered is-fullwidth"},b={__name:"AdminTabs",props:{activeTab:{type:String,default:""}},setup(r){const p=r,d=u([{name:"admin.app_setup",view:"admin.appSetup",id:"lnkTabApp"},{name:"admin.users",view:"admin.users",id:"lnkTabUsers"}]);return(c,R)=>{const l=t("RouterLink"),m=t("ResponsiveWidthWrapper");return s(),a("div",T,[n(m,null,{default:i(()=>[o("div",g,[o("ul",null,[(s(!0),a(_,null,v(f(d),e=>(s(),a("li",{key:e.view,class:h({"is-active":e.view===p.activeTab})},[n(l,{id:e.id,to:{name:e.view}},{default:i(()=>[k(w(c.$t(e.name)),1)]),_:2},1032,["id","to"])],2))),128))])])]),_:1})])}}};export{b as _}; diff --git a/public/build/assets/AppSetup-45bab529.js b/public/build/assets/AppSetup-b7dcb9f9.js similarity index 61% rename from public/build/assets/AppSetup-45bab529.js rename to public/build/assets/AppSetup-b7dcb9f9.js index f27c78bb..f45eb928 100644 --- a/public/build/assets/AppSetup-45bab529.js +++ b/public/build/assets/AppSetup-b7dcb9f9.js @@ -1 +1 @@ -import{_ as q}from"./AdminTabs-94ad3971.js";import{a4 as B,R as A,r as b,e as h,f as _,g as f,h as n,n as F,i as s,t as u,m as i,p as M,j as C,l as N,U as J,Q as K,a as P,b as E,a2 as X,a0 as Y,o as Z,I as $,F as ee,G as se}from"./app-60af1d1a.js";import{_ as te}from"./CopyButton-643e0686.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const U=B("api"),I={get(r={}){return U.get("/settings",{...r})},update(r,p){return U.put("/settings/"+r,{value:p})},delete(r,p={}){return U.delete("/settings/"+r,{...p})}},S=B("web"),L={getSystemInfos(r={}){return S.get("system/infos",{...r})},getLastRelease(r={}){return S.get("system/latestRelease",{...r})},sendTestEmail(r={}){return S.post("system/test-email",{...r})},clearCache(r={}){return S.get("system/clear-cache",{...r})},optimize(r={}){return S.get("system/optimize",{...r})}},le={class:"columns is-mobile is-vcentered"},ne={class:"column is-narrow"},ae={class:"column"},oe=n("span",{class:"release-flag"},null,-1),ie={class:"is-size-7",href:"https://github.com/Bubka/2FAuth/releases"},re={key:1,class:"has-text-grey"},de={key:2,class:"has-text-grey"},ue={__name:"VersionChecker",setup(r){const p=A(),k=b(!1),m=b();async function a(){k.value=!0,m.value=void 0,await L.getLastRelease({returnError:!0}).then(c=>{p.latestRelease=c.data.newRelease,m.value=c.data.newRelease===null?null:c.data.newRelease===!1}).catch(()=>{m.value=null}),k.value=!1}return(c,g)=>{const R=h("FontAwesomeIcon");return _(),f("div",le,[n("div",ne,[n("button",{type:"button",class:F([s(k)?"is-loading":"","button is-link is-rounded is-small"]),onClick:a},u(c.$t("admin.check_now")),3)]),n("div",ae,[i(s(J),null,{default:M(({mode:V})=>[s(p).latestRelease?(_(),f("span",{key:0,class:F(["mt-2",V=="dark"?"has-text-warning":"has-text-warning-dark"])},[oe,C(u(c.$t("admin.x_is_available",{version:s(p).latestRelease}))+" ",1),n("a",ie,u(c.$t("admin.view_on_github")),1)],2)):N("",!0),s(m)?(_(),f("span",re,[i(R,{icon:["fas","check"],class:"mr-1 has-text-success"}),C(" "+u(c.$t("commons.you_are_up_to_date")),1)])):s(m)===null?(_(),f("span",de,[i(R,{icon:["fas","times"],class:"mr-1 has-text-danger"}),C(u(c.$t("errors.check_failed_try_later")),1)])):N("",!0)]),_:1})])])}}},ce={class:"options-tabs"},me={class:"title is-4 pt-4 has-text-grey-light"},pe={class:"field"},_e=["innerHTML"],fe=["innerHTML"],be=["innerHTML"],he={class:"columns is-mobile is-vcentered"},ge={class:"column is-narrow"},ye={class:"icon is-small"},ve={class:"title is-4 pt-4 has-text-grey-light"},ke={class:"title is-4 pt-4 has-text-grey-light"},Re={class:"title is-4 pt-5 has-text-grey-light"},Ve={class:"field"},Se=["innerHTML"],Ee=["innerHTML"],$e={class:"field mb-5 is-grouped"},Ce={class:"control"},Le={class:"field"},Fe=["innerHTML"],Te={key:0,class:"about-debug box is-family-monospace is-size-7"},we=["value"],Ue={class:"has-text-grey"},Ie={key:1,class:"about-debug box is-family-monospace is-size-7 has-text-warning-dark"},xe={__name:"AppSetup",setup(r){const p=K("2fauth"),k=P(),m=E(),a=A(),c=X(p.prefix+"returnTo","accounts"),g=b(),R=b(null),V=b(!1),T=b(!1),y=b({restrictList:null,restrictRule:null}),o=b({checkForUpdate:a.checkForUpdate,useEncryption:a.useEncryption,restrictRegistration:a.restrictRegistration,restrictList:a.restrictList,restrictRule:a.restrictRule,disableRegistration:a.disableRegistration,keepSsoRegistrationEnabled:a.keepSsoRegistrationEnabled,enableSso:a.enableSso});function v(l,e){y.value[l]=null,I.update(l,e).then(d=>{a[l]=e,E().success({type:"is-success",text:$("settings.forms.setting_saved")})}).catch(d=>{d.response.status===422?y.value[l]=d.response.data.message:m.error(d)})}function w(l,e){e==""?(y.value[l]=null,I.delete(l,{returnError:!0}).then(d=>{a[l]="",E().success({type:"is-success",text:$("settings.forms.setting_saved")})}).catch(d=>{d.response.status!==404&&m.error(d)})):v(l,e)}function z(){V.value=!0,L.sendTestEmail().finally(()=>{V.value=!1})}function W(){T.value=!0,L.clearCache().then(l=>{E().success({type:"is-success",text:$("admin.cache_cleared")})}).finally(()=>{T.value=!1})}return Y(l=>{l.name.startsWith("admin.")||m.clear()}),Z(async()=>{I.get({returnError:!0}).then(l=>{o.value.restrictList="",o.value.restrictRule="",l.data.forEach(e=>{a[e.key]=e.value,o.value[e.key]=e.value})}).catch(l=>{m.alert({text:$("errors.data_cannot_be_refreshed_from_server")})}),L.getSystemInfos({returnError:!0}).then(l=>{g.value=l.data.common}).catch(()=>{g.value=null})}),(l,e)=>{const d=h("FormCheckbox"),j=h("FontAwesomeIcon"),H=h("FormField"),G=h("FormWrapper"),O=h("ButtonBackCloseCancel"),Q=h("VueFooter");return _(),f("div",null,[i(q,{activeTab:"admin.appSetup"}),n("div",ce,[i(G,null,{default:M(()=>{var x;return[n("form",null,[n("h4",me,u(l.$t("settings.general")),1),i(d,{modelValue:s(o).checkForUpdate,"onUpdate:modelValue":[e[0]||(e[0]=t=>s(o).checkForUpdate=t),e[1]||(e[1]=t=>v("checkForUpdate",t))],fieldName:"checkForUpdate",label:"commons.check_for_update",help:"commons.check_for_update_help"},null,8,["modelValue"]),i(ue),n("div",pe,[n("label",{class:"label",innerHTML:l.$t("admin.forms.test_email.label")},null,8,_e),n("p",{class:"help",innerHTML:l.$t("admin.forms.test_email.help")},null,8,fe),n("p",{class:"help",innerHTML:l.$t("admin.forms.test_email.email_will_be_send_to_x",{email:s(k).email})},null,8,be)]),n("div",he,[n("div",ge,[n("button",{type:"button",class:F([s(V)?"is-loading":"","button is-link is-rounded is-small"]),onClick:z},[n("span",ye,[i(j,{icon:["far","paper-plane"]})]),n("span",null,u(l.$t("commons.send")),1)],2)])]),n("h4",ve,u(l.$t("settings.security")),1),i(d,{modelValue:s(o).useEncryption,"onUpdate:modelValue":[e[2]||(e[2]=t=>s(o).useEncryption=t),e[3]||(e[3]=t=>v("useEncryption",t))],fieldName:"useEncryption",label:"admin.forms.use_encryption.label",help:"admin.forms.use_encryption.help"},null,8,["modelValue"]),n("h4",ke,u(l.$t("admin.registrations")),1),i(d,{modelValue:s(o).enableSso,"onUpdate:modelValue":[e[4]||(e[4]=t=>s(o).enableSso=t),e[5]||(e[5]=t=>v("enableSso",t))],fieldName:"enableSso",label:"admin.forms.enable_sso.label",help:"admin.forms.enable_sso.help"},null,8,["modelValue"]),i(d,{modelValue:s(o).restrictRegistration,"onUpdate:modelValue":[e[6]||(e[6]=t=>s(o).restrictRegistration=t),e[7]||(e[7]=t=>v("restrictRegistration",t))],fieldName:"restrictRegistration",isDisabled:s(a).disableRegistration,label:"admin.forms.restrict_registration.label",help:"admin.forms.restrict_registration.help"},null,8,["modelValue","isDisabled"]),i(H,{modelValue:s(o).restrictList,"onUpdate:modelValue":e[8]||(e[8]=t=>s(o).restrictList=t),"onChange:modelValue":e[9]||(e[9]=t=>w("restrictList",t)),fieldError:s(y).restrictList,fieldName:"restrictList",isDisabled:!s(a).restrictRegistration||s(a).disableRegistration,label:"admin.forms.restrict_list.label",help:"admin.forms.restrict_list.help",isIndented:!0},null,8,["modelValue","fieldError","isDisabled"]),i(H,{modelValue:s(o).restrictRule,"onUpdate:modelValue":e[10]||(e[10]=t=>s(o).restrictRule=t),"onChange:modelValue":e[11]||(e[11]=t=>w("restrictRule",t)),fieldError:s(y).restrictRule,fieldName:"restrictRule",isDisabled:!s(a).restrictRegistration||s(a).disableRegistration,label:"admin.forms.restrict_rule.label",help:"admin.forms.restrict_rule.help",isIndented:!0,leftIcon:"slash",rightIcon:"slash"},null,8,["modelValue","fieldError","isDisabled"]),i(d,{modelValue:s(o).disableRegistration,"onUpdate:modelValue":[e[12]||(e[12]=t=>s(o).disableRegistration=t),e[13]||(e[13]=t=>v("disableRegistration",t))],fieldName:"disableRegistration",label:"admin.forms.disable_registration.label",help:"admin.forms.disable_registration.help"},null,8,["modelValue"]),i(d,{modelValue:s(o).keepSsoRegistrationEnabled,"onUpdate:modelValue":e[14]||(e[14]=t=>s(o).keepSsoRegistrationEnabled=t),"onChange:modelValue":e[15]||(e[15]=t=>w("keepSsoRegistrationEnabled",t)),fieldError:s(y).keepSsoRegistrationEnabled,fieldName:"keepSsoRegistrationEnabled",isDisabled:!s(a).enableSso||!s(a).disableRegistration,label:"admin.forms.keep_sso_registration_enabled.label",help:"admin.forms.keep_sso_registration_enabled.help",isIndented:!0},null,8,["modelValue","fieldError","isDisabled"])]),n("h4",Re,u(l.$t("commons.environment")),1),n("div",Ve,[n("label",{class:"label",innerHTML:l.$t("admin.forms.cache_management.label")},null,8,Se),n("p",{class:"help",innerHTML:l.$t("admin.forms.cache_management.help")},null,8,Ee)]),n("div",$e,[n("p",Ce,[n("button",{type:"button",class:F([s(T)?"is-loading":"","button is-link is-rounded is-small"]),onClick:W},u(l.$t("commons.clear")),3)])]),n("div",Le,[n("label",{class:"label",innerHTML:l.$t("admin.variables")},null,8,Fe)]),s(g)?(_(),f("div",Te,[i(te,{id:"btnCopyEnvVars",token:(x=s(R))==null?void 0:x.innerText},null,8,["token"]),n("ul",{ref_key:"listInfos",ref:R,id:"listInfos"},[(_(!0),f(ee,null,se(s(g),(t,D)=>(_(),f("li",{value:t,key:D},[n("b",null,u(D),1),C(": "),n("span",Ue,u(t),1)],8,we))),128))],512)])):s(g)===null?(_(),f("div",Ie,u(l.$t("errors.error_during_data_fetching")),1)):N("",!0)]}),_:1})]),i(Q,{showButtons:!0},{default:M(()=>[i(O,{returnTo:{name:s(c)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{xe as default}; +import{_ as q}from"./AdminTabs-7af3858b.js";import{a4 as B,R as A,r as b,e as g,f as _,g as f,h as n,n as F,i as s,t as u,m as i,p as I,j as C,l as M,U as J,Q as K,a as P,b as E,a2 as X,a0 as Y,o as Z,I as $,F as ee,G as se}from"./app-2d89b28f.js";import{_ as te}from"./CopyButton-7a25d704.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const w=B("api"),U={get(r={}){return w.get("/settings",{...r})},update(r,p){return w.put("/settings/"+r,{value:p})},delete(r,p={}){return w.delete("/settings/"+r,{...p})}},S=B("web"),L={getSystemInfos(r={}){return S.get("system/infos",{...r})},getLastRelease(r={}){return S.get("system/latestRelease",{...r})},sendTestEmail(r={}){return S.post("system/test-email",{...r})},clearCache(r={}){return S.get("system/clear-cache",{...r})},optimize(r={}){return S.get("system/optimize",{...r})}},le={class:"columns is-mobile is-vcentered"},ne={class:"column is-narrow"},ae={class:"column"},oe=n("span",{class:"release-flag"},null,-1),ie={class:"is-size-7",href:"https://github.com/Bubka/2FAuth/releases"},re={key:1,class:"has-text-grey"},de={key:2,class:"has-text-grey"},ue={__name:"VersionChecker",setup(r){const p=A(),k=b(!1),m=b();async function a(){k.value=!0,m.value=void 0,await L.getLastRelease({returnError:!0}).then(c=>{p.latestRelease=c.data.newRelease,m.value=c.data.newRelease===null?null:c.data.newRelease===!1}).catch(()=>{m.value=null}),k.value=!1}return(c,y)=>{const R=g("FontAwesomeIcon");return _(),f("div",le,[n("div",ne,[n("button",{type:"button",class:F([s(k)?"is-loading":"","button is-link is-rounded is-small"]),onClick:a},u(c.$t("admin.check_now")),3)]),n("div",ae,[i(s(J),null,{default:I(({mode:V})=>[s(p).latestRelease?(_(),f("span",{key:0,class:F(["mt-2",V=="dark"?"has-text-warning":"has-text-warning-dark"])},[oe,C(u(c.$t("admin.x_is_available",{version:s(p).latestRelease}))+" ",1),n("a",ie,u(c.$t("admin.view_on_github")),1)],2)):M("",!0),s(m)?(_(),f("span",re,[i(R,{icon:["fas","check"],class:"mr-1 has-text-success"}),C(" "+u(c.$t("commons.you_are_up_to_date")),1)])):s(m)===null?(_(),f("span",de,[i(R,{icon:["fas","times"],class:"mr-1 has-text-danger"}),C(u(c.$t("errors.check_failed_try_later")),1)])):M("",!0)]),_:1})])])}}},ce={class:"options-tabs"},me={class:"title is-4 pt-4 has-text-grey-light"},pe={class:"field"},_e=["innerHTML"],fe=["innerHTML"],be=["innerHTML"],he={class:"columns is-mobile is-vcentered"},ge={class:"column is-narrow"},ye={class:"icon is-small"},ve={class:"title is-4 pt-4 has-text-grey-light"},ke={class:"title is-4 pt-4 has-text-grey-light"},Re={class:"title is-4 pt-5 has-text-grey-light"},Ve={class:"field"},Se=["innerHTML"],Ee=["innerHTML"],$e={class:"field mb-5 is-grouped"},Ce={class:"control"},Le={class:"field"},Fe=["innerHTML"],Te={key:0,class:"about-debug box is-family-monospace is-size-7"},we=["value"],Ue={class:"has-text-grey"},Ie={key:1,class:"about-debug box is-family-monospace is-size-7 has-text-warning-dark"},xe={__name:"AppSetup",setup(r){const p=K("2fauth"),k=P(),m=E(),a=A(),c=X(p.prefix+"returnTo","accounts"),y=b(),R=b(null),V=b(!1),T=b(!1),v=b({restrictList:null,restrictRule:null}),o=b({checkForUpdate:a.checkForUpdate,useEncryption:a.useEncryption,restrictRegistration:a.restrictRegistration,restrictList:a.restrictList,restrictRule:a.restrictRule,disableRegistration:a.disableRegistration,keepSsoRegistrationEnabled:a.keepSsoRegistrationEnabled,enableSso:a.enableSso});function h(l,e){v.value[l]=null,U.update(l,e).then(d=>{a[l]=e,E().success({type:"is-success",text:$("settings.forms.setting_saved")})}).catch(d=>{d.response.status===422?v.value[l]=d.response.data.message:m.error(d)})}function N(l,e){e==""?(v.value[l]=null,U.delete(l,{returnError:!0}).then(d=>{a[l]="",E().success({type:"is-success",text:$("settings.forms.setting_saved")})}).catch(d=>{d.response.status!==404&&m.error(d)})):h(l,e)}function z(){V.value=!0,L.sendTestEmail().finally(()=>{V.value=!1})}function W(){T.value=!0,L.clearCache().then(l=>{E().success({type:"is-success",text:$("admin.cache_cleared")})}).finally(()=>{T.value=!1})}return Y(l=>{l.name.startsWith("admin.")||m.clear()}),Z(async()=>{U.get({returnError:!0}).then(l=>{o.value.restrictList="",o.value.restrictRule="",l.data.forEach(e=>{a[e.key]=e.value,o.value[e.key]=e.value})}).catch(l=>{m.alert({text:$("errors.data_cannot_be_refreshed_from_server")})}),L.getSystemInfos({returnError:!0}).then(l=>{y.value=l.data.common}).catch(()=>{y.value=null})}),(l,e)=>{const d=g("FormCheckbox"),j=g("FontAwesomeIcon"),H=g("FormField"),G=g("FormWrapper"),O=g("ButtonBackCloseCancel"),Q=g("VueFooter");return _(),f("div",null,[i(q,{activeTab:"admin.appSetup"}),n("div",ce,[i(G,null,{default:I(()=>{var x;return[n("form",null,[n("h4",me,u(l.$t("settings.general")),1),i(d,{modelValue:s(o).checkForUpdate,"onUpdate:modelValue":[e[0]||(e[0]=t=>s(o).checkForUpdate=t),e[1]||(e[1]=t=>h("checkForUpdate",t))],fieldName:"checkForUpdate",label:"commons.check_for_update",help:"commons.check_for_update_help"},null,8,["modelValue"]),i(ue),n("div",pe,[n("label",{class:"label",innerHTML:l.$t("admin.forms.test_email.label")},null,8,_e),n("p",{class:"help",innerHTML:l.$t("admin.forms.test_email.help")},null,8,fe),n("p",{class:"help",innerHTML:l.$t("admin.forms.test_email.email_will_be_send_to_x",{email:s(k).email})},null,8,be)]),n("div",he,[n("div",ge,[n("button",{type:"button",class:F([s(V)?"is-loading":"","button is-link is-rounded is-small"]),onClick:z},[n("span",ye,[i(j,{icon:["far","paper-plane"]})]),n("span",null,u(l.$t("commons.send")),1)],2)])]),n("h4",ve,u(l.$t("settings.security")),1),i(d,{modelValue:s(o).useEncryption,"onUpdate:modelValue":[e[2]||(e[2]=t=>s(o).useEncryption=t),e[3]||(e[3]=t=>h("useEncryption",t))],fieldName:"useEncryption",label:"admin.forms.use_encryption.label",help:"admin.forms.use_encryption.help"},null,8,["modelValue"]),n("h4",ke,u(l.$t("admin.registrations")),1),i(d,{modelValue:s(o).enableSso,"onUpdate:modelValue":[e[4]||(e[4]=t=>s(o).enableSso=t),e[5]||(e[5]=t=>h("enableSso",t))],fieldName:"enableSso",label:"admin.forms.enable_sso.label",help:"admin.forms.enable_sso.help"},null,8,["modelValue"]),i(d,{modelValue:s(o).restrictRegistration,"onUpdate:modelValue":[e[6]||(e[6]=t=>s(o).restrictRegistration=t),e[7]||(e[7]=t=>h("restrictRegistration",t))],fieldName:"restrictRegistration",isDisabled:s(a).disableRegistration,label:"admin.forms.restrict_registration.label",help:"admin.forms.restrict_registration.help"},null,8,["modelValue","isDisabled"]),i(H,{modelValue:s(o).restrictList,"onUpdate:modelValue":e[8]||(e[8]=t=>s(o).restrictList=t),"onChange:modelValue":e[9]||(e[9]=t=>N("restrictList",t)),fieldError:s(v).restrictList,fieldName:"restrictList",isDisabled:!s(a).restrictRegistration||s(a).disableRegistration,label:"admin.forms.restrict_list.label",help:"admin.forms.restrict_list.help",isIndented:!0},null,8,["modelValue","fieldError","isDisabled"]),i(H,{modelValue:s(o).restrictRule,"onUpdate:modelValue":e[10]||(e[10]=t=>s(o).restrictRule=t),"onChange:modelValue":e[11]||(e[11]=t=>N("restrictRule",t)),fieldError:s(v).restrictRule,fieldName:"restrictRule",isDisabled:!s(a).restrictRegistration||s(a).disableRegistration,label:"admin.forms.restrict_rule.label",help:"admin.forms.restrict_rule.help",isIndented:!0,leftIcon:"slash",rightIcon:"slash"},null,8,["modelValue","fieldError","isDisabled"]),i(d,{modelValue:s(o).disableRegistration,"onUpdate:modelValue":[e[12]||(e[12]=t=>s(o).disableRegistration=t),e[13]||(e[13]=t=>h("disableRegistration",t))],fieldName:"disableRegistration",label:"admin.forms.disable_registration.label",help:"admin.forms.disable_registration.help"},null,8,["modelValue"]),i(d,{modelValue:s(o).keepSsoRegistrationEnabled,"onUpdate:modelValue":[e[14]||(e[14]=t=>s(o).keepSsoRegistrationEnabled=t),e[15]||(e[15]=t=>h("keepSsoRegistrationEnabled",t))],fieldError:s(v).keepSsoRegistrationEnabled,fieldName:"keepSsoRegistrationEnabled",isDisabled:!s(a).enableSso||!s(a).disableRegistration,label:"admin.forms.keep_sso_registration_enabled.label",help:"admin.forms.keep_sso_registration_enabled.help",isIndented:!0},null,8,["modelValue","fieldError","isDisabled"])]),n("h4",Re,u(l.$t("commons.environment")),1),n("div",Ve,[n("label",{class:"label",innerHTML:l.$t("admin.forms.cache_management.label")},null,8,Se),n("p",{class:"help",innerHTML:l.$t("admin.forms.cache_management.help")},null,8,Ee)]),n("div",$e,[n("p",Ce,[n("button",{type:"button",class:F([s(T)?"is-loading":"","button is-link is-rounded is-small"]),onClick:W},u(l.$t("commons.clear")),3)])]),n("div",Le,[n("label",{class:"label",innerHTML:l.$t("admin.variables")},null,8,Fe)]),s(y)?(_(),f("div",Te,[i(te,{id:"btnCopyEnvVars",token:(x=s(R))==null?void 0:x.innerText},null,8,["token"]),n("ul",{ref_key:"listInfos",ref:R,id:"listInfos"},[(_(!0),f(ee,null,se(s(y),(t,D)=>(_(),f("li",{value:t,key:D},[n("b",null,u(D),1),C(": "),n("span",Ue,u(t),1)],8,we))),128))],512)])):s(y)===null?(_(),f("div",Ie,u(l.$t("errors.error_during_data_fetching")),1)):M("",!0)]}),_:1})]),i(Q,{showButtons:!0},{default:I(()=>[i(O,{returnTo:{name:s(c)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{xe as default}; diff --git a/public/build/assets/Capture-1f19a38b.js b/public/build/assets/Capture-109ae9bf.js similarity index 99% rename from public/build/assets/Capture-1f19a38b.js rename to public/build/assets/Capture-109ae9bf.js index f07b1ee0..104da26e 100644 --- a/public/build/assets/Capture-1f19a38b.js +++ b/public/build/assets/Capture-109ae9bf.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-60af1d1a.js";import{F as Oo}from"./Form-0a788c90.js";import{S as ko}from"./Spinner-bfa27d3a.js";import{_ as Do}from"./QrContentDisplay-ea3c63ab.js";import{u as jo}from"./bus-ab2b6d74.js";/*! 2FAuth version 5.1.0 - 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-2d89b28f.js";import{F as Oo}from"./Form-5283f7b6.js";import{S as ko}from"./Spinner-aea2b665.js";import{_ as Do}from"./QrContentDisplay-251465e5.js";import{u as jo}from"./bus-7802a020.js";/*! 2FAuth version 5.1.1 - 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/CopyButton-643e0686.js b/public/build/assets/CopyButton-7a25d704.js similarity index 90% rename from public/build/assets/CopyButton-643e0686.js rename to public/build/assets/CopyButton-7a25d704.js index f2d4c12d..d8a4508f 100644 --- a/public/build/assets/CopyButton-643e0686.js +++ b/public/build/assets/CopyButton-7a25d704.js @@ -1 +1 @@ -import{b as r,S as p,e as l,f as m,g as _,m as u,D as b,I as d}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const y=["aria-label","title"],C={__name:"CopyButton",props:{token:String},setup(e){const s=e,n=r(),{copy:c}=p({legacy:!0});function a(){c(s.token),n.success({text:d("commons.copied_to_clipboard")})}return(o,t)=>{const i=l("FontAwesomeIcon");return m(),_("button",{"aria-label":o.$t("commons.copy_to_clipboard"),title:o.$t("commons.copy_to_clipboard"),class:"button is-like-text is-pulled-right is-small is-text",onClick:t[0]||(t[0]=b(f=>a(),["stop"]))},[u(i,{icon:["fas","copy"]})],8,y)}}};export{C as _}; +import{b as r,S as p,e as l,f as m,g as _,m as u,D as b,I as d}from"./app-2d89b28f.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const y=["aria-label","title"],C={__name:"CopyButton",props:{token:String},setup(e){const s=e,n=r(),{copy:c}=p({legacy:!0});function a(){c(s.token),n.success({text:d("commons.copied_to_clipboard")})}return(o,t)=>{const i=l("FontAwesomeIcon");return m(),_("button",{"aria-label":o.$t("commons.copy_to_clipboard"),title:o.$t("commons.copy_to_clipboard"),class:"button is-like-text is-pulled-right is-small is-text",onClick:t[0]||(t[0]=b(f=>a(),["stop"]))},[u(i,{icon:["fas","copy"]})],8,y)}}};export{C as _}; diff --git a/public/build/assets/Create-88a5e9ed.js b/public/build/assets/Create-3febca8f.js similarity index 93% rename from public/build/assets/Create-88a5e9ed.js rename to public/build/assets/Create-3febca8f.js index b0c1c678..1519b0fa 100644 --- a/public/build/assets/Create-88a5e9ed.js +++ b/public/build/assets/Create-3febca8f.js @@ -1 +1 @@ -import{b as _,u as F,d as V,e as n,f as b,g,m as r,p as y,h as x,i as o,D as B,I as h}from"./app-60af1d1a.js";import{F as C}from"./Form-0a788c90.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const E=["onSubmit"],k={__name:"Create",setup(N){const m=_(),l=F(),e=V(new C({name:"",email:"",password:"",password_confirmation:"",is_admin:!1}));async function i(d){e.password_confirmation=e.password,e.post("/api/v1/users").then(s=>{const t=s.data;m.success({text:h("admin.user_created")}),l.push({name:"admin.manageUser",params:{userId:t.info.id}})})}return(d,s)=>{const t=n("FormField"),u=n("FormPasswordField"),p=n("FormCheckbox"),f=n("FormButtons"),c=n("FormWrapper"),w=n("VueFooter");return b(),g("div",null,[r(c,{title:"admin.new_user"},{default:y(()=>[x("form",{onSubmit:B(i,["prevent"]),onKeydown:s[4]||(s[4]=a=>o(e).onKeydown(a))},[r(t,{modelValue:o(e).name,"onUpdate:modelValue":s[0]||(s[0]=a=>o(e).name=a),fieldName:"name",fieldError:o(e).errors.get("name"),inputType:"text",label:"auth.forms.name",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),r(t,{modelValue:o(e).email,"onUpdate:modelValue":s[1]||(s[1]=a=>o(e).email=a),fieldName:"email",fieldError:o(e).errors.get("email"),inputType:"email",label:"auth.forms.email",maxLength:255},null,8,["modelValue","fieldError"]),r(u,{modelValue:o(e).password,"onUpdate:modelValue":s[2]||(s[2]=a=>o(e).password=a),fieldName:"password",fieldError:o(e).errors.get("password"),showRules:!0,label:"auth.forms.password",autocomplete:"new-password"},null,8,["modelValue","fieldError"]),r(p,{modelValue:o(e).is_admin,"onUpdate:modelValue":s[3]||(s[3]=a=>o(e).is_admin=a),fieldName:"is_admin",label:"admin.forms.is_admin.label",help:"admin.forms.is_admin.help"},null,8,["modelValue"]),r(f,{isBusy:o(e).isBusy,isDisabled:o(e).isDisabled,showCancelButton:!0,cancelLandingView:"admin.users",caption:"commons.create",submitId:"btnCreateUser"},null,8,["isBusy","isDisabled","cancelLandingView"])],40,E)]),_:1}),r(w)])}}};export{k as default}; +import{b as _,u as F,d as V,e as n,f as b,g,m as r,p as y,h as x,i as o,D as B,I as h}from"./app-2d89b28f.js";import{F as C}from"./Form-5283f7b6.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const E=["onSubmit"],k={__name:"Create",setup(N){const m=_(),l=F(),e=V(new C({name:"",email:"",password:"",password_confirmation:"",is_admin:!1}));async function i(d){e.password_confirmation=e.password,e.post("/api/v1/users").then(s=>{const t=s.data;m.success({text:h("admin.user_created")}),l.push({name:"admin.manageUser",params:{userId:t.info.id}})})}return(d,s)=>{const t=n("FormField"),u=n("FormPasswordField"),p=n("FormCheckbox"),f=n("FormButtons"),c=n("FormWrapper"),w=n("VueFooter");return b(),g("div",null,[r(c,{title:"admin.new_user"},{default:y(()=>[x("form",{onSubmit:B(i,["prevent"]),onKeydown:s[4]||(s[4]=a=>o(e).onKeydown(a))},[r(t,{modelValue:o(e).name,"onUpdate:modelValue":s[0]||(s[0]=a=>o(e).name=a),fieldName:"name",fieldError:o(e).errors.get("name"),inputType:"text",label:"auth.forms.name",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),r(t,{modelValue:o(e).email,"onUpdate:modelValue":s[1]||(s[1]=a=>o(e).email=a),fieldName:"email",fieldError:o(e).errors.get("email"),inputType:"email",label:"auth.forms.email",maxLength:255},null,8,["modelValue","fieldError"]),r(u,{modelValue:o(e).password,"onUpdate:modelValue":s[2]||(s[2]=a=>o(e).password=a),fieldName:"password",fieldError:o(e).errors.get("password"),showRules:!0,label:"auth.forms.password",autocomplete:"new-password"},null,8,["modelValue","fieldError"]),r(p,{modelValue:o(e).is_admin,"onUpdate:modelValue":s[3]||(s[3]=a=>o(e).is_admin=a),fieldName:"is_admin",label:"admin.forms.is_admin.label",help:"admin.forms.is_admin.help"},null,8,["modelValue"]),r(f,{isBusy:o(e).isBusy,isDisabled:o(e).isDisabled,showCancelButton:!0,cancelLandingView:"admin.users",caption:"commons.create",submitId:"btnCreateUser"},null,8,["isBusy","isDisabled","cancelLandingView"])],40,E)]),_:1}),r(w)])}}};export{k as default}; diff --git a/public/build/assets/CreateUpdate-db65145e.js b/public/build/assets/CreateUpdate-643179e3.js similarity index 87% rename from public/build/assets/CreateUpdate-db65145e.js rename to public/build/assets/CreateUpdate-643179e3.js index f6f006a2..3fd6702e 100644 --- a/public/build/assets/CreateUpdate-db65145e.js +++ b/public/build/assets/CreateUpdate-643179e3.js @@ -1 +1 @@ -import{T as v,u as G,_ as h,v as w,d as y,$ as N,L as E,e as m,f as I,k as S,p as V,i as t,h as C,m as i,D as $}from"./app-60af1d1a.js";import{F as k}from"./Form-0a788c90.js";import{u as M}from"./bus-ab2b6d74.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const K=["onSubmit"],U={__name:"CreateUpdate",props:{groupId:[Number,String]},setup(c){const s=c,p=v(),d=G(),l=h(),a=M(),r=w(()=>s.groupId!=null),o=y(new k({name:""}));N(()=>{l.name=="editGroup"&&(a.editedGroupName?(o.name=a.editedGroupName,a.editedGroupName=void 0):E.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 I(),S(_,{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,K)]),_:1},8,["title"])}}};export{U as default}; +import{T as v,u as G,_ as h,v as w,d as y,$ as N,L as E,e as m,f as I,k as S,p as V,i as t,h as C,m as i,D as $}from"./app-2d89b28f.js";import{F as k}from"./Form-5283f7b6.js";import{u as M}from"./bus-7802a020.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const K=["onSubmit"],U={__name:"CreateUpdate",props:{groupId:[Number,String]},setup(c){const s=c,p=v(),d=G(),l=h(),a=M(),r=w(()=>s.groupId!=null),o=y(new k({name:""}));N(()=>{l.name=="editGroup"&&(a.editedGroupName?(o.name=a.editedGroupName,a.editedGroupName=void 0):E.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 I(),S(_,{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,K)]),_:1},8,["title"])}}};export{U as default}; diff --git a/public/build/assets/CreateUpdate-016104d4.js b/public/build/assets/CreateUpdate-f925f523.js similarity index 97% rename from public/build/assets/CreateUpdate-016104d4.js rename to public/build/assets/CreateUpdate-f925f523.js index 6579aee9..cddfa60c 100644 --- a/public/build/assets/CreateUpdate-016104d4.js +++ b/public/build/assets/CreateUpdate-f925f523.js @@ -1 +1 @@ -import{Z as xe,r as m,e as _,f as a,g as u,h as s,i as e,n as k,V as te,k as b,p as h,D as B,m as r,U as Q,l as c,F as oe,Q as Le,u as Me,_ as Se,a as Be,c as qe,b as Ae,d as X,v as Ne,o as Oe,K as M,P as ve,x as Y,G as he,E as _e,t as y,j as ge,w as ye,I as S}from"./app-60af1d1a.js";import{F as ee}from"./Form-0a788c90.js";import{_ as be}from"./OtpDisplay-f582bb88.js";import{_ as Ue}from"./QrContentDisplay-ea3c63ab.js";import{u as De}from"./bus-ab2b6d74.js";import"./Spinner-bfa27d3a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const He=["for","innerHTML"],Pe=["disabled","id","type","value","placeholder","maxlength"],Ke={key:0,class:"control"},Qe=["title"],Re={class:"icon"},je={key:1,class:"control"},ze=["title"],Ge={class:"icon has-text-danger"},We=["innerHTML"],we=Object.assign({inheritAttrs:!1},{__name:"FormLockField",props:{modelValue:String,modelModifiers:{default:()=>({})},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}},emits:["input:modelValue"],setup(p,{emit:T}){const V=p,{inputId:E}=xe(V.inputType,V.fieldName),x=m(V.isDisabled||V.isEditMode),$=m(!1),L=m(0);function q(f){let d=f.target.value;V.modelModifiers.trimAll&&(d=d.replace(/\s+/g,"")),T("update:modelValue",d)}function g(f){let d=f.target.value;$.value=d.includes(" "),T("update:modelValue",d)}function t(f){$.value=f.target.value.includes(" "),L.value+=1}return(f,d)=>{const O=_("FontAwesomeIcon"),U=_("FieldError");return a(),u(oe,null,[s("label",{for:e(E),class:"label",innerHTML:f.$t(p.label)},null,8,He),s("div",{class:k(["field has-addons mb-0",{"pt-3":p.hasOffset}])},[s("div",{class:k(["control",{"is-expanded":p.isExpanded}])},[(a(),u("input",te({key:e(L),disabled:e(x),id:e(E),type:p.inputType,class:"input",value:p.modelValue,placeholder:p.placeholder},f.$attrs,{onInput:g,onChange:q,onBlur:t,maxlength:p.maxLength}),null,16,Pe))],2),p.isEditMode?(a(),b(e(Q),{key:0},{default:h(({mode:D})=>[e(x)?(a(),u("div",Ke,[s("button",{type:"button",class:k(["button field-lock",{"is-dark":D=="dark"}]),onClick:d[0]||(d[0]=B(F=>x.value=!1,["stop"])),title:f.$t("twofaccounts.forms.unlock.title")},[s("span",Re,[r(O,{icon:["fas","lock"]})])],10,Qe)])):(a(),u("div",je,[s("button",{type:"button",class:k(["button field-unlock",{"is-dark":D=="dark"}]),onClick:d[1]||(d[1]=B(F=>x.value=!0,["stop"])),title:f.$t("twofaccounts.forms.lock.title")},[s("span",Ge,[r(O,{icon:["fas","lock-open"]})])],10,ze)]))]),_:1})):c("",!0)],2),e($)?(a(),b(U,{key:0,error:f.$t("twofaccounts.forms.spaces_are_ignored"),field:"spaces",alertType:"is-warning"},null,8,["error"])):c("",!0),p.fieldError!=null?(a(),b(U,{key:1,error:p.fieldError,field:p.fieldName},null,8,["error","field"])):c("",!0),p.help?(a(),u("p",{key:2,class:"help",innerHTML:f.$t(p.help)},null,8,We)):c("",!0)],64)}}}),Ze=["onSubmit"],Je={class:"container preview has-text-centered"},Xe={class:"columns is-mobile"},Ye={class:"column"},et={key:1,class:"add-icon-button"},tt=["onClick"],ot={class:"columns is-mobile",role:"alert"},lt={key:0,class:"column"},st={class:"columns is-mobile"},nt={class:"column quickform-footer"},at={class:"field is-grouped is-grouped-centered"},rt={class:"control"},it=["onSubmit"],ct={key:0,class:"field is-grouped"},ut={class:"control"},dt=["title"],ft={class:"file-cta"},pt={class:"file-icon"},mt={class:"file-label"},vt={class:"label"},ht={class:"field is-grouped"},_t={key:0,class:"control"},gt={class:"icon is-small"},yt={class:"control is-flex"},bt={class:"file-cta"},wt={class:"file-icon"},kt={class:"file-label"},Vt=["src","alt"],Et=["onClick","aria-label"],$t={class:"field"},Ft=["innerHTML"],It={key:2},Ct={key:0},Tt={class:"title is-4 mt-5 mb-2"},xt={class:"help mb-4"},Lt={class:"control"},Mt={key:0,class:"control"},Ut={__name:"CreateUpdate",props:{twofaccountId:[Number,String]},setup(p){const T=p,V=Le("2fauth"),E=Me(),x=Se(),$=Be(),L=qe(),q=De(),g=Ae(),t=X(new ee({service:"",account:"",otp_type:"",icon:"",secret:"",algorithm:"",digits:null,counter:null,period:null,image:""})),f=X(new ee({qrcode:null})),d=X(new ee({icon:null})),O=[{text:"TOTP",value:"totp"},{text:"HOTP",value:"hotp"},{text:"STEAM",value:"steamtotp"}],U=[{text:"6",value:6},{text:"7",value:7},{text:"8",value:8},{text:"9",value:9},{text:"10",value:10}],D=[{text:"sha1",value:"sha1"},{text:"sha256",value:"sha256"},{text:"sha512",value:"sha512"},{text:"md5",value:"md5"}],F=m(),i=m(""),A=m(!1),N=m(!1),H=m(!1),I=m(!1),R=m(!1),j=m(null),P=m(null),z=m(null),le=m(null),se=m(null),ne=m(null),v=Ne(()=>T.twofaccountId!=null);Oe(()=>{x.name=="editAccount"?M.get(T.twofaccountId).then(o=>{t.fill(o.data),t.setOriginal(),i.value=t.icon,H.value=!0}):q.decodedUri?(F.value=q.decodedUri,q.decodedUri=null,M.preview(F.value).then(o=>{t.fill(o.data),i.value=o.data.icon?o.data.icon:"",A.value=!0,ve().then(()=>{P.value.show()})}).catch(o=>{o.response.data.errors.uri&&(N.value=!0,H.value=!0)})):H.value=!0}),Y(i,o=>{A.value&&ve().then(()=>{P.value.icon=o})}),Y(I,o=>{var l,w;o==!1&&((l=z.value)==null||l.clearOTP(),(w=P.value)==null||w.clearOTP())}),Y(()=>t.otp_type,(o,l)=>{o==="steamtotp"?(t.service="Steam",de()):l==="steamtotp"&&(t.service="",C())});function ke(){v.value?Ve():ae()}async function ae(){t.icon=i.value;const{data:o}=await t.post("/api/v1/twofaccounts");t.errors.any()===!1&&(L.items.push(o),g.success({text:S("twofaccounts.account_created")}),E.push({name:"accounts"}))}async function Ve(){if(i.value!==t.icon){let l="";l=t.icon,t.icon=i.value,i.value=l,C()}const{data:o}=await t.put("/api/v1/twofaccounts/"+T.twofaccountId);if(t.errors.any()===!1){const l=L.items.findIndex(w=>w.id===o.id);L.items.splice(l,1,o),g.success({text:S("twofaccounts.account_updated")}),E.push({name:"accounts"})}}function Ee(){t.clear(),I.value=!0,z.value.show()}function re(){t.hasChanged()||i.value!=t.icon?confirm(S("twofaccounts.confirm.cancel"))===!0&&((!v.value||i.value!=t.icon)&&C(),E.push({name:"accounts"})):E.push({name:"accounts"})}function ie(){C(),d.icon=j.value.files[0],d.upload("/api/v1/icons",{returnError:!0}).then(o=>{i.value=o.data.filename,A.value&&(t.icon=i.value)}).catch(o=>{o.response.status!==422&&g.alert({text:o.response.data.message})})}function C(){v.value?i.value&&(i.value!==t.icon&&M.deleteIcon(i.value),i.value=""):i.value&&(M.deleteIcon(i.value),i.value="",A.value&&(t.icon=""))}function ce(o){t.counter=o.nextHotpCounter}function ue(o){t.errors.set(t.extractErrors(o))}function $e(){f.qrcode=se.value.files[0],f.upload("/api/v1/qrcode/decode",{returnError:!0}).then(o=>{F.value=o.data.data,M.preview(F.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:g.alert({text:S(l.response.data.message)}):g.error(l)})}).catch(o=>{o.response.status!==422&&g.alert({text:o.response.data.message})})}function de(){$.preferences.getOfficialIcons&&(R.value=!0,M.getLogo(t.service,{returnError:!0}).then(o=>{o.status===201?(C(),i.value=o.data.filename):g.warn({text:S("errors.no_logo_found_for_x",{service:fe(t.service)})})}).catch(()=>{g.warn({text:S("errors.no_logo_found_for_x",{service:fe(t.service)})})}).finally(()=>{R.value=!1}))}function fe(o){return o.replace(/(<([^> ]+)>)/ig,"")}return(o,l)=>{const w=_("FieldError"),K=_("FontAwesomeIcon"),G=_("VueButton"),pe=_("ButtonBackCloseCancel"),W=_("FormField"),Z=_("FormToggle"),Fe=_("VueFooter"),me=_("modal"),Ie=_("FormWrapper");return a(),u("div",null,[!e(v)&&e(A)?(a(),u("form",{key:0,onSubmit:B(ae,["prevent"]),onKeydown:l[1]||(l[1]=n=>e(t).onKeydown(n))},[s("div",Je,[s("div",Xe,[s("div",Ye,[e(d).errors.hasAny("icon")?(a(),b(w,{key:0,error:e(d).errors.get("icon"),field:"icon",class:"help-for-file"},null,8,["error"])):c("",!0),e(i)?c("",!0):(a(),u("label",et,[s("input",{class:"file-input",type:"file",accept:"image/*",onChange:ie,ref_key:"iconInput",ref:j},null,544),r(K,{icon:["fas","image"],size:"2x"})])),e(i)?(a(),u("button",{key:2,class:"delete delete-icon-button is-medium",onClick:B(C,["prevent"])},null,8,tt)):c("",!0),r(be,te({ref_key:"OtpDisplayForQuickForm",ref:P},e(t).data(),{onIncrementHotp:ce,onValidationError:ue,onPleaseCloseMe:l[0]||(l[0]=n=>I.value=!1)}),null,16)])]),s("div",ot,[e(t).errors.any()?(a(),u("div",lt,[(a(!0),u(oe,null,he(e(t).errors.errors,(n,J)=>(a(),u("p",{key:J,class:"help is-danger"},[s("ul",null,[(a(!0),u(oe,null,he(n,(Ce,Te)=>(a(),u("li",{key:Te},y(Ce),1))),128))])]))),128))])):c("",!0)]),s("div",st,[s("div",nt,[s("div",at,[s("div",rt,[r(G,{isLoading:e(t).isBusy},{default:h(()=>[ge(y(o.$t("commons.save")),1)]),_:1},8,["isLoading"])]),r(pe,{action:"cancel",isText:!0,useLinkTag:!1,onCanceled:re})])])])])],40,Ze)):c("",!0),e(H)?(a(),b(Ie,{key:1,title:o.$t(e(v)?"twofaccounts.forms.edit_account":"twofaccounts.forms.new_account")},{default:h(()=>[s("form",{onSubmit:B(ke,["prevent"]),onKeydown:l[12]||(l[12]=n=>e(t).onKeydown(n))},[e(v)?c("",!0):(a(),u("div",ct,[s("div",ut,[r(e(Q),null,{default:h(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:k(["file is-small",{"is-black":n=="dark"}]),onKeyup:l[2]||(l[2]=ye(J=>e(le).click(),["enter"]))},[s("label",{class:"file-label",title:o.$t("twofaccounts.forms.use_qrcode.title"),ref_key:"qrcodeInputLabel",ref:le},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:$e,ref_key:"qrcodeInput",ref:se},null,544),s("span",ft,[s("span",pt,[r(K,{icon:["fas","qrcode"],size:"lg"})]),s("span",mt,y(o.$t("twofaccounts.forms.prefill_using_qrcode")),1)])],8,dt)],34)]),_:1})])])),e(f).errors.hasAny("qrcode")?(a(),b(w,{key:1,error:e(f).errors.get("qrcode"),field:"qrcode",class:"help-for-file"},null,8,["error"])):c("",!0),r(W,{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(W,{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",vt,y(o.$t("twofaccounts.icon")),1),s("div",ht,[e($).preferences.getOfficialIcons?(a(),u("div",_t,[r(e(Q),null,{default:h(({mode:n})=>[r(G,{onClick:de,color:n=="dark"?"is-dark":"",nativeType:"button","is-loading":e(R),isDisabled:!e(t).service},{default:h(()=>[s("span",gt,[r(K,{icon:["fas","globe"]})]),s("span",null,y(o.$t("twofaccounts.forms.i_m_lucky")),1)]),_:2},1032,["color","is-loading","isDisabled"])]),_:1})])):c("",!0),s("div",yt,[r(e(Q),null,{default:h(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:k(["file mr-3",n=="dark"?"is-dark":"is-white"]),onKeyup:l[5]||(l[5]=ye(J=>e(ne).click(),["enter"]))},[s("label",{class:"file-label",ref_key:"iconInputLabel",ref:ne},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:ie,ref_key:"iconInput",ref:j},null,544),s("span",bt,[s("span",wt,[r(K,{icon:["fas","upload"]})]),s("span",kt,y(o.$t("twofaccounts.forms.choose_image")),1)])],512)],34),e(i)?(a(),u("span",{key:0,class:k(["tag is-large",n=="dark"?"is-dark":"is-white"])},[s("img",{class:"icon-preview",src:e(V).config.subdirectory+"/storage/icons/"+e(i),alt:o.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,Vt),s("button",{class:"clear-selection delete is-small",onClick:B(C,["prevent"]),"aria-label":o.$t("twofaccounts.remove_icon")},null,8,Et)],2)):c("",!0)]),_:1})])]),s("div",$t,[e(d).errors.hasAny("icon")?(a(),b(w,{key:0,error:e(d).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,Ft)):c("",!0)]),r(Z,{modelValue:e(t).otp_type,"onUpdate:modelValue":l[6]||(l[6]=n=>e(t).otp_type=n),isDisabled:e(v),choices:O,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",It,[r(we,{isEditMode:e(v),modelValue:e(t).secret,"onUpdate:modelValue":l[7]||(l[7]=n=>e(t).secret=n),modelModifiers:{trimAll:!0},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",Ct,[s("h2",Tt,y(o.$t("commons.options")),1),s("p",xt,y(o.$t("twofaccounts.forms.options_help")),1),r(Z,{modelValue:e(t).digits,"onUpdate:modelValue":l[8]||(l[8]=n=>e(t).digits=n),choices:U,fieldName:"digits",fieldError:e(t).errors.get("digits"),label:"twofaccounts.forms.digits.label",help:"twofaccounts.forms.digits.help"},null,8,["modelValue","fieldError"]),r(Z,{modelValue:e(t).algorithm,"onUpdate:modelValue":l[9]||(l[9]=n=>e(t).algorithm=n),choices:D,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(),b(W,{key:0,pattern:"[0-9]{1,4}",class:k("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(),b(we,{key:1,pattern:"[0-9]{1,4}",isEditMode:e(v),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(v)?"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:h(()=>[s("p",Lt,[r(G,{id:e(v)?"btnUpdate":"btnCreate",isLoading:e(t).isBusy,class:"is-rounded"},{default:h(()=>[ge(y(e(v)?o.$t("commons.save"):o.$t("commons.create")),1)]),_:1},8,["id","isLoading"])]),e(t).otp_type&&e(t).secret?(a(),u("p",Mt,[s("button",{id:"btnPreview",type:"button",class:"button is-success is-rounded",onClick:Ee},y(o.$t("twofaccounts.forms.test")),1)])):c("",!0),r(pe,{action:"cancel",useLinkTag:!1,onCanceled:re})]),_:1})],40,it),r(me,{modelValue:e(I),"onUpdate:modelValue":l[14]||(l[14]=n=>_e(I)?I.value=n:null)},{default:h(()=>[r(be,te({ref_key:"OtpDisplayForAdvancedForm",ref:z},e(t).data(),{onIncrementHotp:ce,onValidationError:ue,onPleaseCloseMe:l[13]||(l[13]=n=>I.value=!1)}),null,16)]),_:1},8,["modelValue"])]),_:1},8,["title"])):c("",!0),r(me,{modelValue:e(N),"onUpdate:modelValue":l[15]||(l[15]=n=>_e(N)?N.value=n:null)},{default:h(()=>[r(Ue,{qrContent:e(F)},null,8,["qrContent"])]),_:1},8,["modelValue"])])}}};export{Ut as default}; +import{Z as xe,r as m,e as _,f as a,g as u,h as s,i as e,n as k,V as te,k as b,p as h,D as B,m as r,U as Q,l as c,F as oe,Q as Le,u as Me,_ as Se,a as Be,c as qe,b as Ae,d as X,v as Ne,o as Oe,K as M,P as ve,x as Y,G as he,E as _e,t as y,j as ge,w as ye,I as S}from"./app-2d89b28f.js";import{F as ee}from"./Form-5283f7b6.js";import{_ as be}from"./OtpDisplay-2108b98d.js";import{_ as Ue}from"./QrContentDisplay-251465e5.js";import{u as De}from"./bus-7802a020.js";import"./Spinner-aea2b665.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const He=["for","innerHTML"],Pe=["disabled","id","type","value","placeholder","maxlength"],Ke={key:0,class:"control"},Qe=["title"],Re={class:"icon"},je={key:1,class:"control"},ze=["title"],Ge={class:"icon has-text-danger"},We=["innerHTML"],we=Object.assign({inheritAttrs:!1},{__name:"FormLockField",props:{modelValue:String,modelModifiers:{default:()=>({})},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}},emits:["input:modelValue"],setup(p,{emit:T}){const V=p,{inputId:E}=xe(V.inputType,V.fieldName),x=m(V.isDisabled||V.isEditMode),$=m(!1),L=m(0);function q(f){let d=f.target.value;V.modelModifiers.trimAll&&(d=d.replace(/\s+/g,"")),T("update:modelValue",d)}function g(f){let d=f.target.value;$.value=d.includes(" "),T("update:modelValue",d)}function t(f){$.value=f.target.value.includes(" "),L.value+=1}return(f,d)=>{const O=_("FontAwesomeIcon"),U=_("FieldError");return a(),u(oe,null,[s("label",{for:e(E),class:"label",innerHTML:f.$t(p.label)},null,8,He),s("div",{class:k(["field has-addons mb-0",{"pt-3":p.hasOffset}])},[s("div",{class:k(["control",{"is-expanded":p.isExpanded}])},[(a(),u("input",te({key:e(L),disabled:e(x),id:e(E),type:p.inputType,class:"input",value:p.modelValue,placeholder:p.placeholder},f.$attrs,{onInput:g,onChange:q,onBlur:t,maxlength:p.maxLength}),null,16,Pe))],2),p.isEditMode?(a(),b(e(Q),{key:0},{default:h(({mode:D})=>[e(x)?(a(),u("div",Ke,[s("button",{type:"button",class:k(["button field-lock",{"is-dark":D=="dark"}]),onClick:d[0]||(d[0]=B(F=>x.value=!1,["stop"])),title:f.$t("twofaccounts.forms.unlock.title")},[s("span",Re,[r(O,{icon:["fas","lock"]})])],10,Qe)])):(a(),u("div",je,[s("button",{type:"button",class:k(["button field-unlock",{"is-dark":D=="dark"}]),onClick:d[1]||(d[1]=B(F=>x.value=!0,["stop"])),title:f.$t("twofaccounts.forms.lock.title")},[s("span",Ge,[r(O,{icon:["fas","lock-open"]})])],10,ze)]))]),_:1})):c("",!0)],2),e($)?(a(),b(U,{key:0,error:f.$t("twofaccounts.forms.spaces_are_ignored"),field:"spaces",alertType:"is-warning"},null,8,["error"])):c("",!0),p.fieldError!=null?(a(),b(U,{key:1,error:p.fieldError,field:p.fieldName},null,8,["error","field"])):c("",!0),p.help?(a(),u("p",{key:2,class:"help",innerHTML:f.$t(p.help)},null,8,We)):c("",!0)],64)}}}),Ze=["onSubmit"],Je={class:"container preview has-text-centered"},Xe={class:"columns is-mobile"},Ye={class:"column"},et={key:1,class:"add-icon-button"},tt=["onClick"],ot={class:"columns is-mobile",role:"alert"},lt={key:0,class:"column"},st={class:"columns is-mobile"},nt={class:"column quickform-footer"},at={class:"field is-grouped is-grouped-centered"},rt={class:"control"},it=["onSubmit"],ct={key:0,class:"field is-grouped"},ut={class:"control"},dt=["title"],ft={class:"file-cta"},pt={class:"file-icon"},mt={class:"file-label"},vt={class:"label"},ht={class:"field is-grouped"},_t={key:0,class:"control"},gt={class:"icon is-small"},yt={class:"control is-flex"},bt={class:"file-cta"},wt={class:"file-icon"},kt={class:"file-label"},Vt=["src","alt"],Et=["onClick","aria-label"],$t={class:"field"},Ft=["innerHTML"],It={key:2},Ct={key:0},Tt={class:"title is-4 mt-5 mb-2"},xt={class:"help mb-4"},Lt={class:"control"},Mt={key:0,class:"control"},Ut={__name:"CreateUpdate",props:{twofaccountId:[Number,String]},setup(p){const T=p,V=Le("2fauth"),E=Me(),x=Se(),$=Be(),L=qe(),q=De(),g=Ae(),t=X(new ee({service:"",account:"",otp_type:"",icon:"",secret:"",algorithm:"",digits:null,counter:null,period:null,image:""})),f=X(new ee({qrcode:null})),d=X(new ee({icon:null})),O=[{text:"TOTP",value:"totp"},{text:"HOTP",value:"hotp"},{text:"STEAM",value:"steamtotp"}],U=[{text:"6",value:6},{text:"7",value:7},{text:"8",value:8},{text:"9",value:9},{text:"10",value:10}],D=[{text:"sha1",value:"sha1"},{text:"sha256",value:"sha256"},{text:"sha512",value:"sha512"},{text:"md5",value:"md5"}],F=m(),i=m(""),A=m(!1),N=m(!1),H=m(!1),I=m(!1),R=m(!1),j=m(null),P=m(null),z=m(null),le=m(null),se=m(null),ne=m(null),v=Ne(()=>T.twofaccountId!=null);Oe(()=>{x.name=="editAccount"?M.get(T.twofaccountId).then(o=>{t.fill(o.data),t.setOriginal(),i.value=t.icon,H.value=!0}):q.decodedUri?(F.value=q.decodedUri,q.decodedUri=null,M.preview(F.value).then(o=>{t.fill(o.data),i.value=o.data.icon?o.data.icon:"",A.value=!0,ve().then(()=>{P.value.show()})}).catch(o=>{o.response.data.errors.uri&&(N.value=!0,H.value=!0)})):H.value=!0}),Y(i,o=>{A.value&&ve().then(()=>{P.value.icon=o})}),Y(I,o=>{var l,w;o==!1&&((l=z.value)==null||l.clearOTP(),(w=P.value)==null||w.clearOTP())}),Y(()=>t.otp_type,(o,l)=>{o==="steamtotp"?(t.service="Steam",de()):l==="steamtotp"&&(t.service="",C())});function ke(){v.value?Ve():ae()}async function ae(){t.icon=i.value;const{data:o}=await t.post("/api/v1/twofaccounts");t.errors.any()===!1&&(L.items.push(o),g.success({text:S("twofaccounts.account_created")}),E.push({name:"accounts"}))}async function Ve(){if(i.value!==t.icon){let l="";l=t.icon,t.icon=i.value,i.value=l,C()}const{data:o}=await t.put("/api/v1/twofaccounts/"+T.twofaccountId);if(t.errors.any()===!1){const l=L.items.findIndex(w=>w.id===o.id);L.items.splice(l,1,o),g.success({text:S("twofaccounts.account_updated")}),E.push({name:"accounts"})}}function Ee(){t.clear(),I.value=!0,z.value.show()}function re(){t.hasChanged()||i.value!=t.icon?confirm(S("twofaccounts.confirm.cancel"))===!0&&((!v.value||i.value!=t.icon)&&C(),E.push({name:"accounts"})):E.push({name:"accounts"})}function ie(){C(),d.icon=j.value.files[0],d.upload("/api/v1/icons",{returnError:!0}).then(o=>{i.value=o.data.filename,A.value&&(t.icon=i.value)}).catch(o=>{o.response.status!==422&&g.alert({text:o.response.data.message})})}function C(){v.value?i.value&&(i.value!==t.icon&&M.deleteIcon(i.value),i.value=""):i.value&&(M.deleteIcon(i.value),i.value="",A.value&&(t.icon=""))}function ce(o){t.counter=o.nextHotpCounter}function ue(o){t.errors.set(t.extractErrors(o))}function $e(){f.qrcode=se.value.files[0],f.upload("/api/v1/qrcode/decode",{returnError:!0}).then(o=>{F.value=o.data.data,M.preview(F.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:g.alert({text:S(l.response.data.message)}):g.error(l)})}).catch(o=>{o.response.status!==422&&g.alert({text:o.response.data.message})})}function de(){$.preferences.getOfficialIcons&&(R.value=!0,M.getLogo(t.service,{returnError:!0}).then(o=>{o.status===201?(C(),i.value=o.data.filename):g.warn({text:S("errors.no_logo_found_for_x",{service:fe(t.service)})})}).catch(()=>{g.warn({text:S("errors.no_logo_found_for_x",{service:fe(t.service)})})}).finally(()=>{R.value=!1}))}function fe(o){return o.replace(/(<([^> ]+)>)/ig,"")}return(o,l)=>{const w=_("FieldError"),K=_("FontAwesomeIcon"),G=_("VueButton"),pe=_("ButtonBackCloseCancel"),W=_("FormField"),Z=_("FormToggle"),Fe=_("VueFooter"),me=_("modal"),Ie=_("FormWrapper");return a(),u("div",null,[!e(v)&&e(A)?(a(),u("form",{key:0,onSubmit:B(ae,["prevent"]),onKeydown:l[1]||(l[1]=n=>e(t).onKeydown(n))},[s("div",Je,[s("div",Xe,[s("div",Ye,[e(d).errors.hasAny("icon")?(a(),b(w,{key:0,error:e(d).errors.get("icon"),field:"icon",class:"help-for-file"},null,8,["error"])):c("",!0),e(i)?c("",!0):(a(),u("label",et,[s("input",{class:"file-input",type:"file",accept:"image/*",onChange:ie,ref_key:"iconInput",ref:j},null,544),r(K,{icon:["fas","image"],size:"2x"})])),e(i)?(a(),u("button",{key:2,class:"delete delete-icon-button is-medium",onClick:B(C,["prevent"])},null,8,tt)):c("",!0),r(be,te({ref_key:"OtpDisplayForQuickForm",ref:P},e(t).data(),{onIncrementHotp:ce,onValidationError:ue,onPleaseCloseMe:l[0]||(l[0]=n=>I.value=!1)}),null,16)])]),s("div",ot,[e(t).errors.any()?(a(),u("div",lt,[(a(!0),u(oe,null,he(e(t).errors.errors,(n,J)=>(a(),u("p",{key:J,class:"help is-danger"},[s("ul",null,[(a(!0),u(oe,null,he(n,(Ce,Te)=>(a(),u("li",{key:Te},y(Ce),1))),128))])]))),128))])):c("",!0)]),s("div",st,[s("div",nt,[s("div",at,[s("div",rt,[r(G,{isLoading:e(t).isBusy},{default:h(()=>[ge(y(o.$t("commons.save")),1)]),_:1},8,["isLoading"])]),r(pe,{action:"cancel",isText:!0,useLinkTag:!1,onCanceled:re})])])])])],40,Ze)):c("",!0),e(H)?(a(),b(Ie,{key:1,title:o.$t(e(v)?"twofaccounts.forms.edit_account":"twofaccounts.forms.new_account")},{default:h(()=>[s("form",{onSubmit:B(ke,["prevent"]),onKeydown:l[12]||(l[12]=n=>e(t).onKeydown(n))},[e(v)?c("",!0):(a(),u("div",ct,[s("div",ut,[r(e(Q),null,{default:h(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:k(["file is-small",{"is-black":n=="dark"}]),onKeyup:l[2]||(l[2]=ye(J=>e(le).click(),["enter"]))},[s("label",{class:"file-label",title:o.$t("twofaccounts.forms.use_qrcode.title"),ref_key:"qrcodeInputLabel",ref:le},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:$e,ref_key:"qrcodeInput",ref:se},null,544),s("span",ft,[s("span",pt,[r(K,{icon:["fas","qrcode"],size:"lg"})]),s("span",mt,y(o.$t("twofaccounts.forms.prefill_using_qrcode")),1)])],8,dt)],34)]),_:1})])])),e(f).errors.hasAny("qrcode")?(a(),b(w,{key:1,error:e(f).errors.get("qrcode"),field:"qrcode",class:"help-for-file"},null,8,["error"])):c("",!0),r(W,{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(W,{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",vt,y(o.$t("twofaccounts.icon")),1),s("div",ht,[e($).preferences.getOfficialIcons?(a(),u("div",_t,[r(e(Q),null,{default:h(({mode:n})=>[r(G,{onClick:de,color:n=="dark"?"is-dark":"",nativeType:"button","is-loading":e(R),isDisabled:!e(t).service},{default:h(()=>[s("span",gt,[r(K,{icon:["fas","globe"]})]),s("span",null,y(o.$t("twofaccounts.forms.i_m_lucky")),1)]),_:2},1032,["color","is-loading","isDisabled"])]),_:1})])):c("",!0),s("div",yt,[r(e(Q),null,{default:h(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:k(["file mr-3",n=="dark"?"is-dark":"is-white"]),onKeyup:l[5]||(l[5]=ye(J=>e(ne).click(),["enter"]))},[s("label",{class:"file-label",ref_key:"iconInputLabel",ref:ne},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:ie,ref_key:"iconInput",ref:j},null,544),s("span",bt,[s("span",wt,[r(K,{icon:["fas","upload"]})]),s("span",kt,y(o.$t("twofaccounts.forms.choose_image")),1)])],512)],34),e(i)?(a(),u("span",{key:0,class:k(["tag is-large",n=="dark"?"is-dark":"is-white"])},[s("img",{class:"icon-preview",src:e(V).config.subdirectory+"/storage/icons/"+e(i),alt:o.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,Vt),s("button",{class:"clear-selection delete is-small",onClick:B(C,["prevent"]),"aria-label":o.$t("twofaccounts.remove_icon")},null,8,Et)],2)):c("",!0)]),_:1})])]),s("div",$t,[e(d).errors.hasAny("icon")?(a(),b(w,{key:0,error:e(d).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,Ft)):c("",!0)]),r(Z,{modelValue:e(t).otp_type,"onUpdate:modelValue":l[6]||(l[6]=n=>e(t).otp_type=n),isDisabled:e(v),choices:O,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",It,[r(we,{isEditMode:e(v),modelValue:e(t).secret,"onUpdate:modelValue":l[7]||(l[7]=n=>e(t).secret=n),modelModifiers:{trimAll:!0},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",Ct,[s("h2",Tt,y(o.$t("commons.options")),1),s("p",xt,y(o.$t("twofaccounts.forms.options_help")),1),r(Z,{modelValue:e(t).digits,"onUpdate:modelValue":l[8]||(l[8]=n=>e(t).digits=n),choices:U,fieldName:"digits",fieldError:e(t).errors.get("digits"),label:"twofaccounts.forms.digits.label",help:"twofaccounts.forms.digits.help"},null,8,["modelValue","fieldError"]),r(Z,{modelValue:e(t).algorithm,"onUpdate:modelValue":l[9]||(l[9]=n=>e(t).algorithm=n),choices:D,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(),b(W,{key:0,pattern:"[0-9]{1,4}",class:k("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(),b(we,{key:1,pattern:"[0-9]{1,4}",isEditMode:e(v),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(v)?"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:h(()=>[s("p",Lt,[r(G,{id:e(v)?"btnUpdate":"btnCreate",isLoading:e(t).isBusy,class:"is-rounded"},{default:h(()=>[ge(y(e(v)?o.$t("commons.save"):o.$t("commons.create")),1)]),_:1},8,["id","isLoading"])]),e(t).otp_type&&e(t).secret?(a(),u("p",Mt,[s("button",{id:"btnPreview",type:"button",class:"button is-success is-rounded",onClick:Ee},y(o.$t("twofaccounts.forms.test")),1)])):c("",!0),r(pe,{action:"cancel",useLinkTag:!1,onCanceled:re})]),_:1})],40,it),r(me,{modelValue:e(I),"onUpdate:modelValue":l[14]||(l[14]=n=>_e(I)?I.value=n:null)},{default:h(()=>[r(be,te({ref_key:"OtpDisplayForAdvancedForm",ref:z},e(t).data(),{onIncrementHotp:ce,onValidationError:ue,onPleaseCloseMe:l[13]||(l[13]=n=>I.value=!1)}),null,16)]),_:1},8,["modelValue"])]),_:1},8,["title"])):c("",!0),r(me,{modelValue:e(N),"onUpdate:modelValue":l[15]||(l[15]=n=>_e(N)?N.value=n:null)},{default:h(()=>[r(Ue,{qrContent:e(F)},null,8,["qrContent"])]),_:1},8,["modelValue"])])}}};export{Ut as default}; diff --git a/public/build/assets/Edit-e1414c8a.js b/public/build/assets/Edit-307bbb3b.js similarity index 89% rename from public/build/assets/Edit-e1414c8a.js rename to public/build/assets/Edit-307bbb3b.js index 6a0fc749..1ad695bc 100644 --- a/public/build/assets/Edit-e1414c8a.js +++ b/public/build/assets/Edit-307bbb3b.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-60af1d1a.js";import{F as V}from"./Form-0a788c90.js";/*! 2FAuth version 5.1.0 - 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-2d89b28f.js";import{F as V}from"./Form-5283f7b6.js";/*! 2FAuth version 5.1.1 - 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-0e5b1508.js b/public/build/assets/Error-5d72db66.js similarity index 95% rename from public/build/assets/Error-0e5b1508.js rename to public/build/assets/Error-5d72db66.js index 528a434b..7569e9c3 100644 --- a/public/build/assets/Error-0e5b1508.js +++ b/public/build/assets/Error-5d72db66.js @@ -1 +1 @@ -import{b as y,u as b,_ 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-60af1d1a.js";/*! 2FAuth version 5.1.0 - 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,_ 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-2d89b28f.js";/*! 2FAuth version 5.1.1 - 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-0a788c90.js b/public/build/assets/Form-5283f7b6.js similarity index 98% rename from public/build/assets/Form-0a788c90.js rename to public/build/assets/Form-5283f7b6.js index e0163b43..ed46d740 100644 --- a/public/build/assets/Form-0a788c90.js +++ b/public/build/assets/Form-5283f7b6.js @@ -1 +1 @@ -import{a4 as l}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - 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{a4 as l}from"./app-2d89b28f.js";/*! 2FAuth version 5.1.1 - 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-e3693e0e.js b/public/build/assets/Groups-1660394b.js similarity index 94% rename from public/build/assets/Groups-e3693e0e.js rename to public/build/assets/Groups-1660394b.js index 38defc14..52cae1ec 100644 --- a/public/build/assets/Groups-e3693e0e.js +++ b/public/build/assets/Groups-1660394b.js @@ -1 +1 @@ -import{u as C,T as $,r as w,o as z,a0 as G,e as c,f as l,k as b,p as u,h as o,t as a,m as s,j as _,i,g as m,F,G as R,n as V,U as N,l as h}from"./app-60af1d1a.js";import{u as E}from"./bus-ab2b6d74.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const I={class:"title has-text-grey-dark"},L={class:"is-size-7-mobile"},T={class:"mt-3 mb-6"},W={key:0},A=["onClick","title"],x={class:"is-family-primary is-size-6 is-size-7-mobile has-text-grey"},M={class:"mt-2 is-size-7 is-pulled-right"},S={key:1,class:"has-text-centered"},U={class:"is-size-4"},J={__name:"Groups",setup(j){C();const t=$(),f=E(),p=w(!1);return z(async()=>{p.value=t.isEmpty,await t.fetch().finally(()=>{p.value=!1})}),G((e,g)=>{var n;e.name=="editGroup"&&(f.editedGroupName=(n=t.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(()=>[o("h1",I,a(e.$t("groups.groups")),1),o("div",L,a(e.$t("groups.manage_groups_legend")),1),o("div",T,[s(d,{class:"is-link mt-5",to:{name:"createGroup"}},{default:u(()=>[s(n,{icon:["fas","plus-circle"]}),_(" "+a(e.$t("groups.create_group")),1)]),_:1})]),i(t).isEmpty?h("",!0):(l(),m("div",W,[(l(!0),m(F,null,R(i(t).withoutTheAllGroup,r=>(l(),m("div",{key:r.id,class:"group-item is-size-5 is-size-6-mobile"},[_(a(r.name)+" ",1),s(i(N),null,{default:u(({mode:B})=>[o("button",{class:V(["button tag is-pulled-right",B=="dark"?"is-dark":"is-white"]),onClick:q=>i(t).delete(r.id),title:e.$t("commons.delete")},a(e.$t("commons.delete")),11,A)]),_:2},1024),s(d,{to:{name:"editGroup",params:{groupId:r.id}},class:"has-text-grey px-1",title:e.$t("commons.rename")},{default:u(()=>[s(n,{icon:["fas","pen-square"]})]),_:2},1032,["to","title"]),o("span",x,a(e.$t("groups.x_accounts",{count:r.twofaccounts_count})),1)]))),128)),o("div",M,a(e.$t("groups.deleting_group_does_not_delete_accounts")),1)])),i(p)&&i(t).isEmpty?(l(),m("div",S,[o("span",U,[s(n,{icon:["fas","spinner"],spin:""})])])):h("",!0),s(y,{showButtons:!0},{default:u(()=>[s(k,{returnTo:{name:"accounts"},action:"close"})]),_:1})]),_:1})}}};export{J as default}; +import{u as C,T as $,r as w,o as z,a0 as G,e as c,f as l,k as b,p as u,h as o,t as a,m as s,j as _,i,g as m,F,G as R,n as V,U as N,l as h}from"./app-2d89b28f.js";import{u as E}from"./bus-7802a020.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const I={class:"title has-text-grey-dark"},L={class:"is-size-7-mobile"},T={class:"mt-3 mb-6"},W={key:0},A=["onClick","title"],x={class:"is-family-primary is-size-6 is-size-7-mobile has-text-grey"},M={class:"mt-2 is-size-7 is-pulled-right"},S={key:1,class:"has-text-centered"},U={class:"is-size-4"},J={__name:"Groups",setup(j){C();const t=$(),f=E(),p=w(!1);return z(async()=>{p.value=t.isEmpty,await t.fetch().finally(()=>{p.value=!1})}),G((e,g)=>{var n;e.name=="editGroup"&&(f.editedGroupName=(n=t.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(()=>[o("h1",I,a(e.$t("groups.groups")),1),o("div",L,a(e.$t("groups.manage_groups_legend")),1),o("div",T,[s(d,{class:"is-link mt-5",to:{name:"createGroup"}},{default:u(()=>[s(n,{icon:["fas","plus-circle"]}),_(" "+a(e.$t("groups.create_group")),1)]),_:1})]),i(t).isEmpty?h("",!0):(l(),m("div",W,[(l(!0),m(F,null,R(i(t).withoutTheAllGroup,r=>(l(),m("div",{key:r.id,class:"group-item is-size-5 is-size-6-mobile"},[_(a(r.name)+" ",1),s(i(N),null,{default:u(({mode:B})=>[o("button",{class:V(["button tag is-pulled-right",B=="dark"?"is-dark":"is-white"]),onClick:q=>i(t).delete(r.id),title:e.$t("commons.delete")},a(e.$t("commons.delete")),11,A)]),_:2},1024),s(d,{to:{name:"editGroup",params:{groupId:r.id}},class:"has-text-grey px-1",title:e.$t("commons.rename")},{default:u(()=>[s(n,{icon:["fas","pen-square"]})]),_:2},1032,["to","title"]),o("span",x,a(e.$t("groups.x_accounts",{count:r.twofaccounts_count})),1)]))),128)),o("div",M,a(e.$t("groups.deleting_group_does_not_delete_accounts")),1)])),i(p)&&i(t).isEmpty?(l(),m("div",S,[o("span",U,[s(n,{icon:["fas","spinner"],spin:""})])])):h("",!0),s(y,{showButtons:!0},{default:u(()=>[s(k,{returnTo:{name:"accounts"},action:"close"})]),_:1})]),_:1})}}};export{J as default}; diff --git a/public/build/assets/Import-058e3143.js b/public/build/assets/Import-8782f7b5.js similarity index 98% rename from public/build/assets/Import-058e3143.js rename to public/build/assets/Import-8782f7b5.js index 0224153e..5bfbd1d1 100644 --- a/public/build/assets/Import-058e3143.js +++ b/public/build/assets/Import-8782f7b5.js @@ -1 +1 @@ -import{Z as ft,e as v,f as n,g as r,z as mt,m as a,l as f,h as t,i as l,n as C,V as Z,k as P,Q as pt,b as ht,a as _t,c as vt,r as k,d as O,I as p,v as D,x as gt,o as yt,K as kt,p as w,E as J,t as i,U as q,j as _,w as K,D as wt,F as W,G as Q,P as bt}from"./app-60af1d1a.js";import{F as H}from"./Form-0a788c90.js";import{_ as $t}from"./OtpDisplay-f582bb88.js";import{S as Ct}from"./Spinner-bfa27d3a.js";import{u as xt}from"./bus-ab2b6d74.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const At=["for","innerHTML"],Ft=["disabled","id","value","placeholder","maxlength"],St=["innerHTML"],zt=Object.assign({inheritAttrs:!1},{__name:"FormTextarea",props:{modelValue:[String,Number,Boolean],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],placeholder:{type:String,default:""},help:{type:String,default:""},size:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},maxLength:{type:Number,default:null},isIndented:Boolean},setup(d){const E=d,{inputId:m}=ft(E.inputType,E.fieldName);return(h,g)=>{const N=v("FontAwesomeIcon"),b=v("FieldError");return n(),r("div",{class:C(["mb-3",{"pt-3":d.hasOffset,"is-flex":d.isIndented}])},[d.isIndented?(n(),r("div",{key:0,class:"mx-2 pr-1",style:mt({opacity:d.isDisabled?"0.5":"1"})},[a(N,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):f("",!0),t("div",{class:C(["field",{"is-flex-grow-5":d.isIndented}])},[t("label",{for:l(m),class:"label",innerHTML:h.$t(d.label)},null,8,At),t("div",{class:C(["control",{"has-icons-left":h.leftIcon,"has-icons-right":h.rightIcon}])},[t("textarea",Z({disabled:d.isDisabled,id:l(m),class:["textarea",d.size],value:d.modelValue,placeholder:d.placeholder},h.$attrs,{onInput:g[0]||(g[0]=$=>h.$emit("update:modelValue",$.target.value)),onChange:g[1]||(g[1]=$=>h.$emit("change:modelValue",$.target.value)),maxlength:d.maxLength}),null,16,Ft)],2),d.fieldError!=null?(n(),P(b,{key:0,error:d.fieldError,field:d.fieldName},null,8,["error","field"])):f("",!0),d.help?(n(),r("p",{key:1,class:"help",innerHTML:h.$t(d.help)},null,8,St)):f("",!0)],2)],2)}}}),It={class:"title has-text-grey-dark"},Vt={key:0},Et={class:"block is-size-7-mobile"},Tt={class:"mb-2"},qt={class:"columns"},Nt={class:"column"},Bt={class:"block"},Lt={class:"card"},Mt={class:"card-content"},Ot={class:"media"},Dt={class:"media-left"},Ht={class:"image is-32x32"},Pt={class:"media-content"},Ut=["innerHTML"],Rt={class:"subtitle is-6 is-size-7-mobile"},jt={class:"card-footer"},Gt={class:"block"},Jt={class:"card"},Kt={class:"card-content"},Wt={class:"media"},Qt={class:"media-left"},Zt={class:"image is-32x32"},Xt={class:"media-content"},Yt={class:"title is-5 has-text-grey"},te={class:"subtitle is-6 is-size-7-mobile"},ee={class:"card-footer"},se={class:"block"},oe={class:"card"},ie={class:"card-content"},le={class:"media"},ne={class:"media-left"},ae={class:"image is-32x32"},re={class:"media-content"},ce=["innerHTML"],de={class:"subtitle is-6 is-size-7-mobile"},ue={class:"content"},fe={class:"card-footer"},me=["onClick"],pe={class:"title is-5 has-text-grey-dark"},he={class:"block is-size-7-mobile"},_e={class:"table is-size-7-mobile is-fullwidth"},ve=t("thead",null,[t("tr",null,[t("th"),t("th",null,"Plain text"),t("th",null,"QR code"),t("th",null,"JSON")])],-1),ge=t("th",null,"Google Authenticator",-1),ye=t("td",null,null,-1),ke=t("td",null,null,-1),we=t("th",null,"Aegis Auth",-1),be=t("td",null,null,-1),$e=t("th",null,"2FAS auth",-1),Ce=t("td",null,null,-1),xe=t("td",null,null,-1),Ae=t("th",null,"FreeOTP+",-1),Fe=t("td",null,null,-1),Se=t("td",null,null,-1),ze=t("th",null,"2FAuth",-1),Ie=t("td",null,null,-1),Ve=t("td",null,null,-1),Ee={key:1},Te={key:2},qe={class:"block is-size-7-mobile"},Ne={class:"mb-2"},Be={class:"is-flex is-justify-content-space-between"},Le=["onClick","title"],Me=["src","alt"],Oe={key:1,class:"is-flex-grow-1 has-ellipsis"},De={key:2,class:"tags is-flex-wrap-nowrap"},He=["onClick","title"],Pe=["onClick","title"],Ue={key:3,class:"has-nowrap"},Re={key:0,class:"has-text-success"},je={key:1,class:"has-text-danger"},Ge={class:"is-size-6 is-size-7-mobile"},Je={class:"is-family-primary has-text-grey"},Ke={key:0,class:"has-text-danger"},We={key:1,class:"has-text-warning"},Qe={key:2},Ze={key:0,class:"mt-2 is-size-7 is-pulled-right"},Xe={key:1,class:"mt-2 is-size-7 is-pulled-right"},Ye={key:0,class:"control"},ns={__name:"Import",setup(d){const E=pt("2fauth"),m=ht(),h=_t(),g=xt(),N=vt(),b=k(null),$=k(null),B=k(null),x=k(null),T=k(null),S=O(new H({service:"",account:"",otp_type:"",icon:"",secret:"",algorithm:"",digits:null,counter:null,period:null})),z=O(new H({file:null,withSecret:!0})),I=O(new H({qrcode:null,withSecret:!0})),A=k(!1);p("twofaccounts.import.qr_code"),p("twofaccounts.import.plain_text");const c=k([]),y=k(!1),V=D(()=>c.value.filter(e=>e.imported==-1&&e.id>-2).length),U=D(()=>c.value.filter(e=>e.id===-1&&e.imported===-1).length),X=D(()=>c.value.filter(e=>e.imported===1).length);gt(A,e=>{var s;e==!1&&((s=b.value)==null||s.clearOTP())}),yt(()=>{g.migrationUri&&(L(g.migrationUri),g.migrationUri=null)});async function L(e){y.value=!0,await kt.migrate(e,{returnError:!0}).then(s=>{s.data.forEach(u=>{u.imported=-1,c.value.push(u)}),j(),x.value=T.value=null}).catch(s=>{m.alert({text:p(s.response.data.message)})}),y.value=!1}function Y(){var e;confirm(p("twofaccounts.confirm.discard_duplicates"))&&(m.clear(),(e=b.value)==null||e.clearOTP(),c.value=c.value.filter(s=>s.id!==-1))}function tt(){var e;confirm(p("twofaccounts.confirm.discard_all"))&&(m.clear(),(e=b.value)==null||e.clearOTP(),c.value=[])}function et(e){confirm(p("twofaccounts.confirm.discard"))&&c.value.splice(e,1)}async function st(){for(let e=0;e{c.value[e].imported=1,c.value[e].id=s.data.id,delete s.data.secret,N.items.push(s.data)}).catch(s=>{c.value[e].imported=0,c.value[e].id=0,c.value[e].errors=S.errors.flatten()})}function ot(e){S.fill(c.value[e]),A.value=!0,bt().then(()=>{b.value.show()})}function it(){z.clear(),y.value=!0,z.file=$.value.files[0],z.upload("/api/v1/twofaccounts/migration",{returnError:!0}).then(e=>{e.data.forEach(s=>{s.imported=-1,c.value.push(s)}),j()}).catch(e=>{e.response.status===422?e.response.data.errors.file==null&&m.alert({text:p("errors.invalid_2fa_data")}):m.alert({text:e.response.data.message})}),y.value=!1}function lt(){I.clear(),y.value=!0,I.qrcode=B.value.files[0],I.upload("/api/v1/qrcode/decode",{returnError:!0}).then(e=>{L(e.data.data)}).catch(e=>{e.response.status===422?e.response.data.errors.qrcode==null&&m.alert({text:p("errors.invalid_2fa_data")}):m.alert({text:e.response.data.message})}),y.value=!1}function j(){m.success({text:p("twofaccounts.import.x_valid_accounts_found",{count:V.value})})}function nt(){T.value=null,x.value?L(x.value):T.value=p("validation.required",{attribute:"Direct input"})}return(e,s)=>{const u=v("FontAwesomeIcon"),G=v("FieldError"),at=v("RouterLink"),rt=v("ButtonBackCloseCancel"),ct=v("VueFooter"),dt=v("ResponsiveWidthWrapper"),ut=v("modal");return n(),r("div",null,[a(dt,null,{default:w(()=>[t("h1",It,i(e.$t("twofaccounts.import.import")),1),!l(y)&&l(c).length==0?(n(),r("div",Vt,[t("div",Et,[t("p",Tt,i(e.$t("twofaccounts.import.import_legend")),1),t("p",null,i(e.$t("twofaccounts.import.import_legend_afterpart")),1)]),t("div",qt,[t("div",Nt,[t("div",Bt,[t("div",Lt,[t("div",Mt,[t("div",Ot,[t("div",Dt,[t("figure",Ht,[a(l(q),null,{default:w(({mode:o})=>[a(u,{icon:["fas","qrcode"],size:"2x",class:C(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),t("div",Pt,[t("p",{class:"title is-5 has-text-grey",innerHTML:e.$t("twofaccounts.import.qr_code")},null,8,Ut),t("p",Rt,i(e.$t("twofaccounts.import.supported_formats_for_qrcode_upload")),1)])]),l(I).errors.hasAny("qrcode")?(n(),P(G,{key:0,error:l(I).errors.get("qrcode"),field:"qrcode"},null,8,["error"])):f("",!0)]),t("footer",jt,[a(at,{id:"btnCapture",to:{name:"capture"},class:"card-footer-item"},{default:w(()=>[_(i(e.$t("twofaccounts.import.scan")),1)]),_:1}),t("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onKeyup:s[0]||(s[0]=K(o=>l(B).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:lt,ref_key:"qrcodeInput",ref:B},null,544),_(" "+i(e.$t("twofaccounts.import.upload")),1)],32)])])]),t("div",Gt,[t("div",Jt,[t("div",Kt,[t("div",Wt,[t("div",Qt,[t("figure",Zt,[a(l(q),null,{default:w(({mode:o})=>[a(u,{icon:["fas","file-lines"],size:"2x",class:C(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),t("div",Xt,[t("p",Yt,i(e.$t("twofaccounts.import.text_file")),1),t("p",te,i(e.$t("twofaccounts.import.supported_formats_for_file_upload")),1)])]),l(z).errors.hasAny("file")?(n(),P(G,{key:0,error:l(z).errors.get("file"),field:"file"},null,8,["error"])):f("",!0)]),t("footer",ee,[t("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onKeyup:s[1]||(s[1]=K(o=>l($).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"text/plain,application/json,text/csv,.2fas",onChange:it,ref_key:"fileInput",ref:$},null,544),_(" "+i(e.$t("twofaccounts.import.upload")),1)],32)])])]),t("div",se,[t("div",oe,[t("div",ie,[t("div",le,[t("div",ne,[t("figure",ae,[a(l(q),null,{default:w(({mode:o})=>[a(u,{icon:["fas","align-left"],size:"2x",class:C(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),t("div",re,[t("p",{class:"title is-5 has-text-grey",innerHTML:e.$t("twofaccounts.import.direct_input")},null,8,ce),t("p",de,i(e.$t("twofaccounts.import.expected_format_for_direct_input")),1)])]),t("div",ue,[a(zt,{modelValue:l(x),"onUpdate:modelValue":s[2]||(s[2]=o=>J(x)?x.value=o:null),fieldError:l(T),fieldName:"payload",rows:"5",size:"is-small"},null,8,["modelValue","fieldError"])])]),t("footer",fe,[t("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onClick:wt(nt,["stop"])},i(e.$t("commons.submit")),9,me)])])])])]),t("h2",pe,i(e.$t("twofaccounts.import.supported_migration_formats")),1),t("div",he,[a(u,{icon:["fas","fa-triangle-exclamation"],class:"has-text-warning-dark"}),_(" "+i(e.$t("twofaccounts.import.do_not_set_password_or_encryption")),1)]),t("table",_e,[ve,t("tbody",null,[t("tr",null,[ge,ye,t("td",null,[a(u,{icon:["fas","circle-check"]})]),ke]),t("tr",null,[we,t("td",null,[a(u,{icon:["fas","circle-check"]})]),be,t("td",null,[a(u,{icon:["fas","circle-check"]})])]),t("tr",null,[$e,Ce,xe,t("td",null,[a(u,{icon:["fas","circle-check"]})])]),t("tr",null,[Ae,t("td",null,[a(u,{icon:["fas","circle-check"]})]),Fe,Se]),t("tr",null,[ze,Ie,Ve,t("td",null,[a(u,{icon:["fas","circle-check"]})])])])])])):l(y)&&l(c).length===0?(n(),r("div",Ee,[a(Ct,{type:"fullscreen-overlay",isVisible:!0,message:"twofaccounts.import.parsing_data"},null,8,["message"])])):(n(),r("div",Te,[t("div",qe,[t("p",Ne,i(e.$t("twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import")),1),t("p",null,i(e.$t("twofaccounts.import.use_buttons_to_save_or_discard")),1)]),(n(!0),r(W,null,Q(l(c),(o,M)=>(n(),r("div",{key:o.name,class:"group-item is-size-5 is-size-6-mobile"},[t("div",Be,[o.id>-2&&o.imported!==0?(n(),r("div",{key:0,class:"is-flex-grow-1 has-ellipsis is-clickable",onClick:F=>ot(M),title:e.$t("twofaccounts.import.generate_a_test_password")},[o.icon&&l(h).preferences.showAccountsIcons?(n(),r("img",{key:0,class:"import-icon",src:l(E).config.subdirectory+"/storage/icons/"+o.icon,alt:e.$t("twofaccounts.icon_for_account_x_at_service_y",{account:o.account,service:o.service})},null,8,Me)):f("",!0),_(" "+i(o.account),1)],8,Le)):(n(),r("div",Oe,i(o.account),1)),o.imported===-1?(n(),r("div",De,[a(l(q),null,{default:w(({mode:F})=>[t("button",{class:C(["button tag",{"is-dark has-text-grey-light":F=="dark"}]),onClick:ts=>et(M),title:e.$t("twofaccounts.import.discard_this_account")},[a(u,{icon:["fas","trash"]})],10,He)]),_:2},1024),o.id>-2?(n(),r("button",{key:0,class:"button tag is-link",onClick:F=>R(M),title:e.$t("twofaccounts.import.import_this_account")},i(e.$t("twofaccounts.import.to_import")),9,Pe)):f("",!0)])):(n(),r("div",Ue,[o.imported===1?(n(),r("span",Re,[_(i(e.$t("twofaccounts.import.imported"))+" ",1),a(u,{icon:["fas","check"]})])):(n(),r("span",je,[_(i(e.$t("twofaccounts.import.failure"))+" ",1),a(u,{icon:["fas","times"]})]))]))]),t("div",Ge,[t("div",Je,i(e.$t("twofaccounts.import.issuer"))+": "+i(o.service),1),o.id===-2?(n(),r("div",Ke,[a(u,{class:"mr-1",icon:["fas","times-circle"]}),_(i(o.secret),1)])):f("",!0),o.id===-1&&o.imported!==1&&!o.errors?(n(),r("div",We,[a(u,{class:"mr-1",icon:["fas","exclamation-circle"]}),_(i(e.$t("twofaccounts.import.possible_duplicate")),1)])):f("",!0),o.errors?(n(),r("ul",Qe,[(n(!0),r(W,null,Q(o.errors,F=>(n(),r("li",{key:F,class:"has-text-danger"},i(F),1))),128))])):f("",!0)])]))),128)),l(V)>0?(n(),r("div",Ze,[l(U)?(n(),r("button",{key:0,onClick:s[3]||(s[3]=o=>Y()),class:"has-text-grey button is-small is-ghost"},i(e.$t("twofaccounts.import.discard_duplicates"))+" ("+i(l(U))+")",1)):f("",!0),t("button",{onClick:s[4]||(s[4]=o=>tt()),class:"has-text-grey button is-small is-ghost"},i(e.$t("twofaccounts.import.discard_all")),1)])):f("",!0),l(X)==l(c).length?(n(),r("div",Xe,[t("button",{onClick:s[5]||(s[5]=o=>c.value=[]),class:"has-text-grey button is-small is-ghost"},i(e.$t("commons.clear")),1)])):f("",!0)])),a(ct,{showButtons:!0},{default:w(()=>[l(V)>0?(n(),r("p",Ye,[t("button",{class:"button is-link is-rounded is-focus",onClick:st},[t("span",null,i(e.$t("twofaccounts.import.import_all"))+" ("+i(l(V))+")",1)])])):f("",!0),a(rt,{returnTo:{name:"accounts"},action:l(V)>0?"cancel":"close"},null,8,["action"])]),_:1})]),_:1}),a(ut,{modelValue:l(A),"onUpdate:modelValue":s[9]||(s[9]=o=>J(A)?A.value=o:null)},{default:w(()=>[a($t,Z({ref_key:"otpDisplay",ref:b},l(S).data(),{onIncrementHotp:s[6]||(s[6]=()=>{}),onValidationError:s[7]||(s[7]=()=>{}),onPleaseCloseMe:s[8]||(s[8]=o=>A.value=!1)}),null,16)]),_:1},8,["modelValue"])])}}};export{ns as default}; +import{Z as ft,e as v,f as n,g as r,z as mt,m as a,l as f,h as t,i as l,n as C,V as Z,k as P,Q as pt,b as ht,a as _t,c as vt,r as k,d as O,I as p,v as D,x as gt,o as yt,K as kt,p as w,E as J,t as i,U as q,j as _,w as K,D as wt,F as W,G as Q,P as bt}from"./app-2d89b28f.js";import{F as H}from"./Form-5283f7b6.js";import{_ as $t}from"./OtpDisplay-2108b98d.js";import{S as Ct}from"./Spinner-aea2b665.js";import{u as xt}from"./bus-7802a020.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const At=["for","innerHTML"],Ft=["disabled","id","value","placeholder","maxlength"],St=["innerHTML"],zt=Object.assign({inheritAttrs:!1},{__name:"FormTextarea",props:{modelValue:[String,Number,Boolean],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],placeholder:{type:String,default:""},help:{type:String,default:""},size:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},maxLength:{type:Number,default:null},isIndented:Boolean},setup(d){const E=d,{inputId:m}=ft(E.inputType,E.fieldName);return(h,g)=>{const N=v("FontAwesomeIcon"),b=v("FieldError");return n(),r("div",{class:C(["mb-3",{"pt-3":d.hasOffset,"is-flex":d.isIndented}])},[d.isIndented?(n(),r("div",{key:0,class:"mx-2 pr-1",style:mt({opacity:d.isDisabled?"0.5":"1"})},[a(N,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):f("",!0),t("div",{class:C(["field",{"is-flex-grow-5":d.isIndented}])},[t("label",{for:l(m),class:"label",innerHTML:h.$t(d.label)},null,8,At),t("div",{class:C(["control",{"has-icons-left":h.leftIcon,"has-icons-right":h.rightIcon}])},[t("textarea",Z({disabled:d.isDisabled,id:l(m),class:["textarea",d.size],value:d.modelValue,placeholder:d.placeholder},h.$attrs,{onInput:g[0]||(g[0]=$=>h.$emit("update:modelValue",$.target.value)),onChange:g[1]||(g[1]=$=>h.$emit("change:modelValue",$.target.value)),maxlength:d.maxLength}),null,16,Ft)],2),d.fieldError!=null?(n(),P(b,{key:0,error:d.fieldError,field:d.fieldName},null,8,["error","field"])):f("",!0),d.help?(n(),r("p",{key:1,class:"help",innerHTML:h.$t(d.help)},null,8,St)):f("",!0)],2)],2)}}}),It={class:"title has-text-grey-dark"},Vt={key:0},Et={class:"block is-size-7-mobile"},Tt={class:"mb-2"},qt={class:"columns"},Nt={class:"column"},Bt={class:"block"},Lt={class:"card"},Mt={class:"card-content"},Ot={class:"media"},Dt={class:"media-left"},Ht={class:"image is-32x32"},Pt={class:"media-content"},Ut=["innerHTML"],Rt={class:"subtitle is-6 is-size-7-mobile"},jt={class:"card-footer"},Gt={class:"block"},Jt={class:"card"},Kt={class:"card-content"},Wt={class:"media"},Qt={class:"media-left"},Zt={class:"image is-32x32"},Xt={class:"media-content"},Yt={class:"title is-5 has-text-grey"},te={class:"subtitle is-6 is-size-7-mobile"},ee={class:"card-footer"},se={class:"block"},oe={class:"card"},ie={class:"card-content"},le={class:"media"},ne={class:"media-left"},ae={class:"image is-32x32"},re={class:"media-content"},ce=["innerHTML"],de={class:"subtitle is-6 is-size-7-mobile"},ue={class:"content"},fe={class:"card-footer"},me=["onClick"],pe={class:"title is-5 has-text-grey-dark"},he={class:"block is-size-7-mobile"},_e={class:"table is-size-7-mobile is-fullwidth"},ve=t("thead",null,[t("tr",null,[t("th"),t("th",null,"Plain text"),t("th",null,"QR code"),t("th",null,"JSON")])],-1),ge=t("th",null,"Google Authenticator",-1),ye=t("td",null,null,-1),ke=t("td",null,null,-1),we=t("th",null,"Aegis Auth",-1),be=t("td",null,null,-1),$e=t("th",null,"2FAS auth",-1),Ce=t("td",null,null,-1),xe=t("td",null,null,-1),Ae=t("th",null,"FreeOTP+",-1),Fe=t("td",null,null,-1),Se=t("td",null,null,-1),ze=t("th",null,"2FAuth",-1),Ie=t("td",null,null,-1),Ve=t("td",null,null,-1),Ee={key:1},Te={key:2},qe={class:"block is-size-7-mobile"},Ne={class:"mb-2"},Be={class:"is-flex is-justify-content-space-between"},Le=["onClick","title"],Me=["src","alt"],Oe={key:1,class:"is-flex-grow-1 has-ellipsis"},De={key:2,class:"tags is-flex-wrap-nowrap"},He=["onClick","title"],Pe=["onClick","title"],Ue={key:3,class:"has-nowrap"},Re={key:0,class:"has-text-success"},je={key:1,class:"has-text-danger"},Ge={class:"is-size-6 is-size-7-mobile"},Je={class:"is-family-primary has-text-grey"},Ke={key:0,class:"has-text-danger"},We={key:1,class:"has-text-warning"},Qe={key:2},Ze={key:0,class:"mt-2 is-size-7 is-pulled-right"},Xe={key:1,class:"mt-2 is-size-7 is-pulled-right"},Ye={key:0,class:"control"},ns={__name:"Import",setup(d){const E=pt("2fauth"),m=ht(),h=_t(),g=xt(),N=vt(),b=k(null),$=k(null),B=k(null),x=k(null),T=k(null),S=O(new H({service:"",account:"",otp_type:"",icon:"",secret:"",algorithm:"",digits:null,counter:null,period:null})),z=O(new H({file:null,withSecret:!0})),I=O(new H({qrcode:null,withSecret:!0})),A=k(!1);p("twofaccounts.import.qr_code"),p("twofaccounts.import.plain_text");const c=k([]),y=k(!1),V=D(()=>c.value.filter(e=>e.imported==-1&&e.id>-2).length),U=D(()=>c.value.filter(e=>e.id===-1&&e.imported===-1).length),X=D(()=>c.value.filter(e=>e.imported===1).length);gt(A,e=>{var s;e==!1&&((s=b.value)==null||s.clearOTP())}),yt(()=>{g.migrationUri&&(L(g.migrationUri),g.migrationUri=null)});async function L(e){y.value=!0,await kt.migrate(e,{returnError:!0}).then(s=>{s.data.forEach(u=>{u.imported=-1,c.value.push(u)}),j(),x.value=T.value=null}).catch(s=>{m.alert({text:p(s.response.data.message)})}),y.value=!1}function Y(){var e;confirm(p("twofaccounts.confirm.discard_duplicates"))&&(m.clear(),(e=b.value)==null||e.clearOTP(),c.value=c.value.filter(s=>s.id!==-1))}function tt(){var e;confirm(p("twofaccounts.confirm.discard_all"))&&(m.clear(),(e=b.value)==null||e.clearOTP(),c.value=[])}function et(e){confirm(p("twofaccounts.confirm.discard"))&&c.value.splice(e,1)}async function st(){for(let e=0;e{c.value[e].imported=1,c.value[e].id=s.data.id,delete s.data.secret,N.items.push(s.data)}).catch(s=>{c.value[e].imported=0,c.value[e].id=0,c.value[e].errors=S.errors.flatten()})}function ot(e){S.fill(c.value[e]),A.value=!0,bt().then(()=>{b.value.show()})}function it(){z.clear(),y.value=!0,z.file=$.value.files[0],z.upload("/api/v1/twofaccounts/migration",{returnError:!0}).then(e=>{e.data.forEach(s=>{s.imported=-1,c.value.push(s)}),j()}).catch(e=>{e.response.status===422?e.response.data.errors.file==null&&m.alert({text:p("errors.invalid_2fa_data")}):m.alert({text:e.response.data.message})}),y.value=!1}function lt(){I.clear(),y.value=!0,I.qrcode=B.value.files[0],I.upload("/api/v1/qrcode/decode",{returnError:!0}).then(e=>{L(e.data.data)}).catch(e=>{e.response.status===422?e.response.data.errors.qrcode==null&&m.alert({text:p("errors.invalid_2fa_data")}):m.alert({text:e.response.data.message})}),y.value=!1}function j(){m.success({text:p("twofaccounts.import.x_valid_accounts_found",{count:V.value})})}function nt(){T.value=null,x.value?L(x.value):T.value=p("validation.required",{attribute:"Direct input"})}return(e,s)=>{const u=v("FontAwesomeIcon"),G=v("FieldError"),at=v("RouterLink"),rt=v("ButtonBackCloseCancel"),ct=v("VueFooter"),dt=v("ResponsiveWidthWrapper"),ut=v("modal");return n(),r("div",null,[a(dt,null,{default:w(()=>[t("h1",It,i(e.$t("twofaccounts.import.import")),1),!l(y)&&l(c).length==0?(n(),r("div",Vt,[t("div",Et,[t("p",Tt,i(e.$t("twofaccounts.import.import_legend")),1),t("p",null,i(e.$t("twofaccounts.import.import_legend_afterpart")),1)]),t("div",qt,[t("div",Nt,[t("div",Bt,[t("div",Lt,[t("div",Mt,[t("div",Ot,[t("div",Dt,[t("figure",Ht,[a(l(q),null,{default:w(({mode:o})=>[a(u,{icon:["fas","qrcode"],size:"2x",class:C(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),t("div",Pt,[t("p",{class:"title is-5 has-text-grey",innerHTML:e.$t("twofaccounts.import.qr_code")},null,8,Ut),t("p",Rt,i(e.$t("twofaccounts.import.supported_formats_for_qrcode_upload")),1)])]),l(I).errors.hasAny("qrcode")?(n(),P(G,{key:0,error:l(I).errors.get("qrcode"),field:"qrcode"},null,8,["error"])):f("",!0)]),t("footer",jt,[a(at,{id:"btnCapture",to:{name:"capture"},class:"card-footer-item"},{default:w(()=>[_(i(e.$t("twofaccounts.import.scan")),1)]),_:1}),t("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onKeyup:s[0]||(s[0]=K(o=>l(B).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:lt,ref_key:"qrcodeInput",ref:B},null,544),_(" "+i(e.$t("twofaccounts.import.upload")),1)],32)])])]),t("div",Gt,[t("div",Jt,[t("div",Kt,[t("div",Wt,[t("div",Qt,[t("figure",Zt,[a(l(q),null,{default:w(({mode:o})=>[a(u,{icon:["fas","file-lines"],size:"2x",class:C(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),t("div",Xt,[t("p",Yt,i(e.$t("twofaccounts.import.text_file")),1),t("p",te,i(e.$t("twofaccounts.import.supported_formats_for_file_upload")),1)])]),l(z).errors.hasAny("file")?(n(),P(G,{key:0,error:l(z).errors.get("file"),field:"file"},null,8,["error"])):f("",!0)]),t("footer",ee,[t("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onKeyup:s[1]||(s[1]=K(o=>l($).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"text/plain,application/json,text/csv,.2fas",onChange:it,ref_key:"fileInput",ref:$},null,544),_(" "+i(e.$t("twofaccounts.import.upload")),1)],32)])])]),t("div",se,[t("div",oe,[t("div",ie,[t("div",le,[t("div",ne,[t("figure",ae,[a(l(q),null,{default:w(({mode:o})=>[a(u,{icon:["fas","align-left"],size:"2x",class:C(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),t("div",re,[t("p",{class:"title is-5 has-text-grey",innerHTML:e.$t("twofaccounts.import.direct_input")},null,8,ce),t("p",de,i(e.$t("twofaccounts.import.expected_format_for_direct_input")),1)])]),t("div",ue,[a(zt,{modelValue:l(x),"onUpdate:modelValue":s[2]||(s[2]=o=>J(x)?x.value=o:null),fieldError:l(T),fieldName:"payload",rows:"5",size:"is-small"},null,8,["modelValue","fieldError"])])]),t("footer",fe,[t("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onClick:wt(nt,["stop"])},i(e.$t("commons.submit")),9,me)])])])])]),t("h2",pe,i(e.$t("twofaccounts.import.supported_migration_formats")),1),t("div",he,[a(u,{icon:["fas","fa-triangle-exclamation"],class:"has-text-warning-dark"}),_(" "+i(e.$t("twofaccounts.import.do_not_set_password_or_encryption")),1)]),t("table",_e,[ve,t("tbody",null,[t("tr",null,[ge,ye,t("td",null,[a(u,{icon:["fas","circle-check"]})]),ke]),t("tr",null,[we,t("td",null,[a(u,{icon:["fas","circle-check"]})]),be,t("td",null,[a(u,{icon:["fas","circle-check"]})])]),t("tr",null,[$e,Ce,xe,t("td",null,[a(u,{icon:["fas","circle-check"]})])]),t("tr",null,[Ae,t("td",null,[a(u,{icon:["fas","circle-check"]})]),Fe,Se]),t("tr",null,[ze,Ie,Ve,t("td",null,[a(u,{icon:["fas","circle-check"]})])])])])])):l(y)&&l(c).length===0?(n(),r("div",Ee,[a(Ct,{type:"fullscreen-overlay",isVisible:!0,message:"twofaccounts.import.parsing_data"},null,8,["message"])])):(n(),r("div",Te,[t("div",qe,[t("p",Ne,i(e.$t("twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import")),1),t("p",null,i(e.$t("twofaccounts.import.use_buttons_to_save_or_discard")),1)]),(n(!0),r(W,null,Q(l(c),(o,M)=>(n(),r("div",{key:o.name,class:"group-item is-size-5 is-size-6-mobile"},[t("div",Be,[o.id>-2&&o.imported!==0?(n(),r("div",{key:0,class:"is-flex-grow-1 has-ellipsis is-clickable",onClick:F=>ot(M),title:e.$t("twofaccounts.import.generate_a_test_password")},[o.icon&&l(h).preferences.showAccountsIcons?(n(),r("img",{key:0,class:"import-icon",src:l(E).config.subdirectory+"/storage/icons/"+o.icon,alt:e.$t("twofaccounts.icon_for_account_x_at_service_y",{account:o.account,service:o.service})},null,8,Me)):f("",!0),_(" "+i(o.account),1)],8,Le)):(n(),r("div",Oe,i(o.account),1)),o.imported===-1?(n(),r("div",De,[a(l(q),null,{default:w(({mode:F})=>[t("button",{class:C(["button tag",{"is-dark has-text-grey-light":F=="dark"}]),onClick:ts=>et(M),title:e.$t("twofaccounts.import.discard_this_account")},[a(u,{icon:["fas","trash"]})],10,He)]),_:2},1024),o.id>-2?(n(),r("button",{key:0,class:"button tag is-link",onClick:F=>R(M),title:e.$t("twofaccounts.import.import_this_account")},i(e.$t("twofaccounts.import.to_import")),9,Pe)):f("",!0)])):(n(),r("div",Ue,[o.imported===1?(n(),r("span",Re,[_(i(e.$t("twofaccounts.import.imported"))+" ",1),a(u,{icon:["fas","check"]})])):(n(),r("span",je,[_(i(e.$t("twofaccounts.import.failure"))+" ",1),a(u,{icon:["fas","times"]})]))]))]),t("div",Ge,[t("div",Je,i(e.$t("twofaccounts.import.issuer"))+": "+i(o.service),1),o.id===-2?(n(),r("div",Ke,[a(u,{class:"mr-1",icon:["fas","times-circle"]}),_(i(o.secret),1)])):f("",!0),o.id===-1&&o.imported!==1&&!o.errors?(n(),r("div",We,[a(u,{class:"mr-1",icon:["fas","exclamation-circle"]}),_(i(e.$t("twofaccounts.import.possible_duplicate")),1)])):f("",!0),o.errors?(n(),r("ul",Qe,[(n(!0),r(W,null,Q(o.errors,F=>(n(),r("li",{key:F,class:"has-text-danger"},i(F),1))),128))])):f("",!0)])]))),128)),l(V)>0?(n(),r("div",Ze,[l(U)?(n(),r("button",{key:0,onClick:s[3]||(s[3]=o=>Y()),class:"has-text-grey button is-small is-ghost"},i(e.$t("twofaccounts.import.discard_duplicates"))+" ("+i(l(U))+")",1)):f("",!0),t("button",{onClick:s[4]||(s[4]=o=>tt()),class:"has-text-grey button is-small is-ghost"},i(e.$t("twofaccounts.import.discard_all")),1)])):f("",!0),l(X)==l(c).length?(n(),r("div",Xe,[t("button",{onClick:s[5]||(s[5]=o=>c.value=[]),class:"has-text-grey button is-small is-ghost"},i(e.$t("commons.clear")),1)])):f("",!0)])),a(ct,{showButtons:!0},{default:w(()=>[l(V)>0?(n(),r("p",Ye,[t("button",{class:"button is-link is-rounded is-focus",onClick:st},[t("span",null,i(e.$t("twofaccounts.import.import_all"))+" ("+i(l(V))+")",1)])])):f("",!0),a(rt,{returnTo:{name:"accounts"},action:l(V)>0?"cancel":"close"},null,8,["action"])]),_:1})]),_:1}),a(ut,{modelValue:l(A),"onUpdate:modelValue":s[9]||(s[9]=o=>J(A)?A.value=o:null)},{default:w(()=>[a($t,Z({ref_key:"otpDisplay",ref:b},l(S).data(),{onIncrementHotp:s[6]||(s[6]=()=>{}),onValidationError:s[7]||(s[7]=()=>{}),onPleaseCloseMe:s[8]||(s[8]=o=>A.value=!1)}),null,16)]),_:1},8,["modelValue"])])}}};export{ns as default}; diff --git a/public/build/assets/Login-0aa69f71.js b/public/build/assets/Login-69c0645b.js similarity index 97% rename from public/build/assets/Login-0aa69f71.js rename to public/build/assets/Login-69c0645b.js index 6a1b697d..9b4627ac 100644 --- a/public/build/assets/Login-0aa69f71.js +++ b/public/build/assets/Login-69c0645b.js @@ -1 +1 @@ -import{Q as N,u as O,a as T,b as D,R as C,a2 as M,d as j,r as G,e as _,f as o,g as u,i as t,k as L,p as f,m as n,F as H,h as l,t as a,D as B,j as r,w as I,l as d,I as k}from"./app-60af1d1a.js";import{F as U}from"./Form-0a788c90.js";import{w as P}from"./webauthnService-1f4ca5dc.js";/*! 2FAuth version 5.1.0 - 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"],ae=["innerHTML"],oe=["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 U({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({id:s.data.id,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 R(){h.clear(),i.clear(),F.value=!0,P.authenticate(i.email).then(async e=>{await p.loginAs({id:e.data.id,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"),E=_("FormPasswordField"),K=_("VueFooter");return o(),u(H,null,[t(v)?(o(),L(W,{key:0,title:"auth.forms.webauthn_login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[l("div",q,a(e.$t("auth.webauthn.use_security_device_to_sign_in")),1),l("form",{id:"frmWebauthnLogin",onSubmit:B(R,["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(a(e.$t("auth.webauthn.lost_your_device"))+"  ",1),n(y,{id:"lnkRecoverAccount",to:{name:"webauthn.lost"},class:"is-link"},{default:f(()=>[r(a(e.$t("auth.webauthn.recover_your_account")),1)]),_:1},8,["to"])]),t(p).preferences.useWebauthnOnly?d("",!0):(o(),u("p",J,[r(a(e.$t("auth.sign_in_using"))+"  ",1),l("a",{id:"lnkSignWithLegacy",role:"button",class:"is-link",onKeyup:I(b,["enter"]),onClick:b,tabindex:"0"},a(e.$t("auth.login_and_password")),41,X)])),t(g).disableRegistration==!1?(o(),u("p",Y,[r(a(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),n(y,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[r(a(e.$t("auth.register")),1)]),_:1})])):d("",!0),t(g).enableSso&&Object.values(t(c).config.sso).includes(!0)?(o(),u("div",Z,[l("div",x,a(e.$t("auth.or_continue_with")),1),l("div",ee,[t(c).config.sso.openid?(o(),u("a",te,[r(" OpenID"),n(w,{class:"ml-2",icon:["fab","openid"]})])):d("",!0),t(c).config.sso.github?(o(),u("a",se,[r(" Github"),n(w,{class:"ml-2",icon:["fab","github-alt"]})])):d("",!0)])])):d("",!0)])]),_:1})):(o(),L(W,{key:1,title:"auth.forms.login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[t(c).isDemoApp?(o(),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?(o(),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,ae)):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(E,{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,oe),l("div",ne,[l("p",null,[r(a(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(a(e.$t("auth.forms.request_password_reset")),1)]),_:1},8,["to","aria-label"])]),l("p",null,[r(a(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")},a(e.$t("auth.webauthn.security_device")),41,le)]),t(g).disableRegistration==!1?(o(),u("p",re,[r(a(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),n(y,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[r(a(e.$t("auth.register")),1)]),_:1})])):d("",!0),t(g).enableSso&&Object.values(t(c).config.sso).includes(!0)?(o(),u("div",ue,[l("div",de,a(e.$t("auth.or_continue_with")),1),l("div",ce,[t(c).config.sso.openid?(o(),u("a",me,[r(" OpenID"),n(w,{class:"ml-2",icon:["fab","openid"]})])):d("",!0),t(c).config.sso.github?(o(),u("a",he,[r(" Github"),n(w,{class:"ml-2",icon:["fab","github-alt"]})])):d("",!0)])])):d("",!0)])]),_:1})),n(K)],64)}}};export{be as default}; +import{Q as N,u as O,a as T,b as D,R as C,a2 as M,d as j,r as G,e as _,f as o,g as u,i as t,k as L,p as f,m as n,F as H,h as l,t as a,D as B,j as r,w as I,l as d,I as k}from"./app-2d89b28f.js";import{F as U}from"./Form-5283f7b6.js";import{w as P}from"./webauthnService-43ef310f.js";/*! 2FAuth version 5.1.1 - 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"],ae=["innerHTML"],oe=["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 U({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({id:s.data.id,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 R(){h.clear(),i.clear(),F.value=!0,P.authenticate(i.email).then(async e=>{await p.loginAs({id:e.data.id,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"),E=_("FormPasswordField"),K=_("VueFooter");return o(),u(H,null,[t(v)?(o(),L(W,{key:0,title:"auth.forms.webauthn_login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[l("div",q,a(e.$t("auth.webauthn.use_security_device_to_sign_in")),1),l("form",{id:"frmWebauthnLogin",onSubmit:B(R,["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(a(e.$t("auth.webauthn.lost_your_device"))+"  ",1),n(y,{id:"lnkRecoverAccount",to:{name:"webauthn.lost"},class:"is-link"},{default:f(()=>[r(a(e.$t("auth.webauthn.recover_your_account")),1)]),_:1},8,["to"])]),t(p).preferences.useWebauthnOnly?d("",!0):(o(),u("p",J,[r(a(e.$t("auth.sign_in_using"))+"  ",1),l("a",{id:"lnkSignWithLegacy",role:"button",class:"is-link",onKeyup:I(b,["enter"]),onClick:b,tabindex:"0"},a(e.$t("auth.login_and_password")),41,X)])),t(g).disableRegistration==!1?(o(),u("p",Y,[r(a(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),n(y,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[r(a(e.$t("auth.register")),1)]),_:1})])):d("",!0),t(g).enableSso&&Object.values(t(c).config.sso).includes(!0)?(o(),u("div",Z,[l("div",x,a(e.$t("auth.or_continue_with")),1),l("div",ee,[t(c).config.sso.openid?(o(),u("a",te,[r(" OpenID"),n(w,{class:"ml-2",icon:["fab","openid"]})])):d("",!0),t(c).config.sso.github?(o(),u("a",se,[r(" Github"),n(w,{class:"ml-2",icon:["fab","github-alt"]})])):d("",!0)])])):d("",!0)])]),_:1})):(o(),L(W,{key:1,title:"auth.forms.login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[t(c).isDemoApp?(o(),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?(o(),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,ae)):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(E,{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,oe),l("div",ne,[l("p",null,[r(a(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(a(e.$t("auth.forms.request_password_reset")),1)]),_:1},8,["to","aria-label"])]),l("p",null,[r(a(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")},a(e.$t("auth.webauthn.security_device")),41,le)]),t(g).disableRegistration==!1?(o(),u("p",re,[r(a(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),n(y,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[r(a(e.$t("auth.register")),1)]),_:1})])):d("",!0),t(g).enableSso&&Object.values(t(c).config.sso).includes(!0)?(o(),u("div",ue,[l("div",de,a(e.$t("auth.or_continue_with")),1),l("div",ce,[t(c).config.sso.openid?(o(),u("a",me,[r(" OpenID"),n(w,{class:"ml-2",icon:["fab","openid"]})])):d("",!0),t(c).config.sso.github?(o(),u("a",he,[r(" Github"),n(w,{class:"ml-2",icon:["fab","github-alt"]})])):d("",!0)])])):d("",!0)])]),_:1})),n(K)],64)}}};export{be as default}; diff --git a/public/build/assets/Manage-002185c7.js b/public/build/assets/Manage-83b1727c.js similarity index 97% rename from public/build/assets/Manage-002185c7.js rename to public/build/assets/Manage-83b1727c.js index 90b14e05..2997888a 100644 --- a/public/build/assets/Manage-002185c7.js +++ b/public/build/assets/Manage-83b1727c.js @@ -1 +1 @@ -import{_ as j}from"./CopyButton-643e0686.js";import{b as q,u as W,_ as A,a as D,r as v,o as G,J as u,e as p,f as o,k as J,p as h,h as s,t as n,i,g as r,m as c,n as m,j as y,U as b,l as f,F as Y,G as K,I as d,P as C}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const O={class:"title has-text-grey-dark mb-6"},Q={key:0,class:"has-text-centered"},X={class:"is-size-4"},Z={key:1},ee={class:"has-text-weight-light has-text-grey-dark is-pulled-right"},se={class:"subtitle is-6 block"},te={key:0,class:"notification is-dark is-size-7-mobile has-text-centered"},ie={class:"block"},ne={class:"title is-4 has-text-grey-light"},ae={class:"block"},oe={class:"list-item is-size-6 is-size-6-mobile has-text-grey"},re={class:"mb-3 is-flex is-justify-content-space-between"},le={class:"has-text-weight-bold"},de={class:"tags ml-3 is-right"},ce=["title"],_e=["title"],ue={class:"is-size-7 is-size-7-mobile has-text-grey-dark"},he=["innerHTML"],me=["innerHTML"],fe=["innerHTML"],pe=["innerHTML"],ke={class:"list-item is-size-6 is-size-6-mobile has-text-grey is-flex is-justify-content-space-between"},be={class:"has-text-weight-bold"},ge={class:"is-block is-family-primary is-size-7 is-size-7-mobile has-text-grey-dark"},ve={key:0},ye={class:"tags ml-3 is-right"},we=["title"],$e={class:"list-item is-size-6 is-size-6-mobile has-text-grey is-flex is-justify-content-space-between"},ze={class:"has-text-weight-bold"},xe={class:"is-block is-size-7 is-size-7-mobile has-text-grey-dark"},Ce={key:0},Te={class:"tags ml-3 is-right"},Me=["title"],Be={class:"title is-4 has-text-grey-light"},Fe={class:"about-debug box is-family-monospace is-size-7"},Pe=["value"],Ue={class:"has-text-grey"},Ve={class:"title is-4 has-text-grey-light"},Le={class:"block"},He={class:"is-size-6 is-size-7-mobile"},Ee={class:"title is-4 has-text-danger"},Ne={class:"is-left-bordered-danger"},Ie={class:"block is-size-6 is-size-7-mobile"},Re={class:"is-block has-text-grey has-text-weight-bold"},qe={__name:"Manage",props:{userId:[Number,String]},setup(T){const M=T,l=q(),B=W();A();const w=D(),g=v(!1),t=v(null),$=v(null);G(async()=>{await F()});async function F(){g.value=!0,u.getById(M.userId,{returnError:!0}).then(e=>{t.value=e.data}).catch(e=>{l.error(e)}).finally(()=>{g.value=!1})}async function P(){if(!k())return!1;confirm(d("admin.confirm.purge_password_reset_request"))===!0&&(await u.resendPasswordEmail(t.value.info.id),t.value.password_reset=null)}async function U(){if(!k())return!1;confirm(d("admin.confirm.request_password_reset"))===!0&&u.resetPassword(t.value.info.id,{returnError:!0}).then(e=>{t.value=e.data,l.success({text:d("admin.password_successfully_reset")})}).catch(e=>{e.response.status===400?l.alert({text:e.response.data.reason}):l.error(e)})}function V(e){if(!confirm(d("admin.confirm.change_admin_role"))){C().then(()=>{t.value.info.is_admin=!e});return}if(e===!1&&t.value.info.id===w.id&&!confirm(d("admin.confirm.demote_own_account"))){C().then(()=>{t.value.info.is_admin=!0});return}u.promote(t.value.info.id,{is_admin:e}).then(_=>{t.value.info.is_admin=_.data.info.is_admin,l.success({text:d("admin.user_role_updated")})}).catch(_=>{l.error(_)})}function L(){if(!k())return!1;confirm(d("admin.confirm.delete_account"))&&u.delete(t.value.info.id,{returnError:!0}).then(e=>{l.success({text:d("auth.forms.user_account_successfully_deleted")}),B.push({name:"admin.users"})}).catch(e=>{e.response.status===403?l.alert({text:e.response.data.message}):l.error(e.response)})}function H(){if(!k())return!1;u.revokePATs(t.value.info.id).then(e=>{t.value.valid_personal_access_tokens=0,l.success({text:d("admin.pats_succesfully_revoked")})})}function k(){return!(t.value.info.id===w.id&&!confirm(d("admin.confirm.edit_own_account")))}return(e,_)=>{const E=p("FontAwesomeIcon"),N=p("FormCheckbox"),I=p("ButtonBackCloseCancel"),R=p("VueFooter"),S=p("ResponsiveWidthWrapper");return o(),J(S,null,{default:h(()=>{var z;return[s("h1",O,n(e.$t("admin.user_management")),1),i(g)||!i(t)?(o(),r("div",Q,[s("span",X,[c(E,{icon:["fas","spinner"],spin:""})])])):(o(),r("div",Z,[s("div",{class:m(["mb-6",i(t).info.is_admin?"is-left-bordered-warning":"is-left-bordered-link"])},[c(i(b),null,{default:h(({mode:a})=>[s("p",{class:m(["title is-4",{"has-text-grey-lighter":a=="dark"}])},[s("span",ee,"#"+n(i(t).info.id),1),y(n(i(t).info.name),1)],2)]),_:1}),s("p",se,n(i(t).info.email),1)],2),i(t).info.oauth_provider?(o(),r("div",te,n(e.$t("admin.account_bound_to_x_via_oauth",{provider:i(t).info.oauth_provider})),1)):f("",!0),s("div",ie,[c(N,{modelValue:i(t).info.is_admin,"onUpdate:modelValue":[_[0]||(_[0]=a=>i(t).info.is_admin=a),_[1]||(_[1]=a=>V(a===!0))],fieldName:"is_admin",label:"admin.forms.is_admin.label",help:"admin.forms.is_admin.help"},null,8,["modelValue"])]),s("h2",ne,n(e.$t("admin.access")),1),s("div",ae,[s("div",oe,[s("div",re,[s("div",null,[s("span",le,n(e.$t("auth.forms.password")),1)]),s("div",null,[s("div",de,[c(i(b),null,{default:h(({mode:a})=>[i(t).password_reset?(o(),r("button",{key:0,class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:P,title:e.$t("admin.resend_email_title")},n(e.$t("admin.resend_email")),11,ce)):f("",!0),s("button",{class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:U,title:e.$t("admin.reset_password_title")},n(e.$t("admin.reset_password")),11,_e)]),_:1})])])]),s("div",ue,[i(t).password_reset===0?(o(),r("span",{key:0,innerHTML:e.$t("admin.password_request_expired"),class:"is-block block"},null,8,he)):i(t).password_reset?(o(),r("span",{key:1,innerHTML:e.$t("admin.password_requested_on_t",{datetime:i(t).password_reset}),class:"is-block block"},null,8,me)):f("",!0),i(t).password_reset?(o(),r("span",{key:2,innerHTML:e.$t("admin.resend_email_help"),class:"is-block block"},null,8,fe)):f("",!0),s("span",{innerHTML:e.$t("admin.reset_password_help"),class:"is-block block"},null,8,pe)])]),s("div",ke,[s("div",null,[s("span",be,n(e.$t("settings.personal_access_tokens")),1),s("span",ge,n(e.$t("admin.user_has_x_active_pat",{count:i(t).valid_personal_access_tokens})),1)]),i(t).valid_personal_access_tokens>0?(o(),r("div",ve,[s("div",ye,[c(i(b),null,{default:h(({mode:a})=>[s("button",{class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:H,title:e.$t("admin.revoke_all_pat_for_user")},n(e.$t("settings.revoke")),11,we)]),_:1})])])):f("",!0)]),s("div",$e,[s("div",null,[s("span",ze,n(e.$t("auth.webauthn.security_devices")),1),s("span",xe,n(e.$t("admin.user_has_x_security_devices",{count:i(t).webauthn_credentials})),1)]),i(t).webauthn_credentials>0?(o(),r("div",Ce,[s("div",Te,[c(i(b),null,{default:h(({mode:a})=>[s("button",{class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),title:e.$t("admin.revoke_all_devices_for_user")},n(e.$t("settings.revoke")),11,Me)]),_:1})])])):f("",!0)])]),s("h2",Be,n(e.$t("settings.preferences")),1),s("div",Fe,[c(j,{id:"btnCopyEnvVars",token:(z=i($))==null?void 0:z.innerText},null,8,["token"]),s("ul",{ref_key:"listUserPreferences",ref:$,id:"listUserPreferences"},[(o(!0),r(Y,null,K(i(t).info.preferences,(a,x)=>(o(),r("li",{value:a,key:x},[s("b",null,n(x),1),y(": "),s("span",Ue,n(a),1)],8,Pe))),128))],512)]),s("h2",Ve,n(e.$t("admin.logs")),1),s("div",Le,[s("ul",He,[s("li",null,n(e.$t("admin.registered_on_date",{date:i(t).info.created_at})),1),s("li",null,n(e.$t("admin.last_seen_on_date",{date:i(t).info.last_seen_at})),1)])]),s("h2",Ee,n(e.$t("admin.danger_zone")),1),s("div",Ne,[s("div",Ie,[y(n(e.$t("admin.delete_this_user_legend"))+" ",1),s("span",Re,n(e.$t("admin.this_is_not_soft_delete")),1)]),s("button",{class:"button is-danger",onClick:L,title:"delete"},n(e.$t("admin.delete_this_user")),1)])])),c(R,{showButtons:!0},{default:h(()=>[c(I,{returnTo:{name:"admin.users"},action:"back"},null,8,["returnTo"])]),_:1})]}),_:1})}}};export{qe as default}; +import{_ as j}from"./CopyButton-7a25d704.js";import{b as q,u as W,_ as A,a as D,r as v,o as G,J as u,e as p,f as o,k as J,p as h,h as s,t as n,i,g as r,m as c,n as m,j as y,U as b,l as f,F as Y,G as K,I as d,P as C}from"./app-2d89b28f.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const O={class:"title has-text-grey-dark mb-6"},Q={key:0,class:"has-text-centered"},X={class:"is-size-4"},Z={key:1},ee={class:"has-text-weight-light has-text-grey-dark is-pulled-right"},se={class:"subtitle is-6 block"},te={key:0,class:"notification is-dark is-size-7-mobile has-text-centered"},ie={class:"block"},ne={class:"title is-4 has-text-grey-light"},ae={class:"block"},oe={class:"list-item is-size-6 is-size-6-mobile has-text-grey"},re={class:"mb-3 is-flex is-justify-content-space-between"},le={class:"has-text-weight-bold"},de={class:"tags ml-3 is-right"},ce=["title"],_e=["title"],ue={class:"is-size-7 is-size-7-mobile has-text-grey-dark"},he=["innerHTML"],me=["innerHTML"],fe=["innerHTML"],pe=["innerHTML"],ke={class:"list-item is-size-6 is-size-6-mobile has-text-grey is-flex is-justify-content-space-between"},be={class:"has-text-weight-bold"},ge={class:"is-block is-family-primary is-size-7 is-size-7-mobile has-text-grey-dark"},ve={key:0},ye={class:"tags ml-3 is-right"},we=["title"],$e={class:"list-item is-size-6 is-size-6-mobile has-text-grey is-flex is-justify-content-space-between"},ze={class:"has-text-weight-bold"},xe={class:"is-block is-size-7 is-size-7-mobile has-text-grey-dark"},Ce={key:0},Te={class:"tags ml-3 is-right"},Me=["title"],Be={class:"title is-4 has-text-grey-light"},Fe={class:"about-debug box is-family-monospace is-size-7"},Pe=["value"],Ue={class:"has-text-grey"},Ve={class:"title is-4 has-text-grey-light"},Le={class:"block"},He={class:"is-size-6 is-size-7-mobile"},Ee={class:"title is-4 has-text-danger"},Ne={class:"is-left-bordered-danger"},Ie={class:"block is-size-6 is-size-7-mobile"},Re={class:"is-block has-text-grey has-text-weight-bold"},qe={__name:"Manage",props:{userId:[Number,String]},setup(T){const M=T,l=q(),B=W();A();const w=D(),g=v(!1),t=v(null),$=v(null);G(async()=>{await F()});async function F(){g.value=!0,u.getById(M.userId,{returnError:!0}).then(e=>{t.value=e.data}).catch(e=>{l.error(e)}).finally(()=>{g.value=!1})}async function P(){if(!k())return!1;confirm(d("admin.confirm.purge_password_reset_request"))===!0&&(await u.resendPasswordEmail(t.value.info.id),t.value.password_reset=null)}async function U(){if(!k())return!1;confirm(d("admin.confirm.request_password_reset"))===!0&&u.resetPassword(t.value.info.id,{returnError:!0}).then(e=>{t.value=e.data,l.success({text:d("admin.password_successfully_reset")})}).catch(e=>{e.response.status===400?l.alert({text:e.response.data.reason}):l.error(e)})}function V(e){if(!confirm(d("admin.confirm.change_admin_role"))){C().then(()=>{t.value.info.is_admin=!e});return}if(e===!1&&t.value.info.id===w.id&&!confirm(d("admin.confirm.demote_own_account"))){C().then(()=>{t.value.info.is_admin=!0});return}u.promote(t.value.info.id,{is_admin:e}).then(_=>{t.value.info.is_admin=_.data.info.is_admin,l.success({text:d("admin.user_role_updated")})}).catch(_=>{l.error(_)})}function L(){if(!k())return!1;confirm(d("admin.confirm.delete_account"))&&u.delete(t.value.info.id,{returnError:!0}).then(e=>{l.success({text:d("auth.forms.user_account_successfully_deleted")}),B.push({name:"admin.users"})}).catch(e=>{e.response.status===403?l.alert({text:e.response.data.message}):l.error(e.response)})}function H(){if(!k())return!1;u.revokePATs(t.value.info.id).then(e=>{t.value.valid_personal_access_tokens=0,l.success({text:d("admin.pats_succesfully_revoked")})})}function k(){return!(t.value.info.id===w.id&&!confirm(d("admin.confirm.edit_own_account")))}return(e,_)=>{const E=p("FontAwesomeIcon"),N=p("FormCheckbox"),I=p("ButtonBackCloseCancel"),R=p("VueFooter"),S=p("ResponsiveWidthWrapper");return o(),J(S,null,{default:h(()=>{var z;return[s("h1",O,n(e.$t("admin.user_management")),1),i(g)||!i(t)?(o(),r("div",Q,[s("span",X,[c(E,{icon:["fas","spinner"],spin:""})])])):(o(),r("div",Z,[s("div",{class:m(["mb-6",i(t).info.is_admin?"is-left-bordered-warning":"is-left-bordered-link"])},[c(i(b),null,{default:h(({mode:a})=>[s("p",{class:m(["title is-4",{"has-text-grey-lighter":a=="dark"}])},[s("span",ee,"#"+n(i(t).info.id),1),y(n(i(t).info.name),1)],2)]),_:1}),s("p",se,n(i(t).info.email),1)],2),i(t).info.oauth_provider?(o(),r("div",te,n(e.$t("admin.account_bound_to_x_via_oauth",{provider:i(t).info.oauth_provider})),1)):f("",!0),s("div",ie,[c(N,{modelValue:i(t).info.is_admin,"onUpdate:modelValue":[_[0]||(_[0]=a=>i(t).info.is_admin=a),_[1]||(_[1]=a=>V(a===!0))],fieldName:"is_admin",label:"admin.forms.is_admin.label",help:"admin.forms.is_admin.help"},null,8,["modelValue"])]),s("h2",ne,n(e.$t("admin.access")),1),s("div",ae,[s("div",oe,[s("div",re,[s("div",null,[s("span",le,n(e.$t("auth.forms.password")),1)]),s("div",null,[s("div",de,[c(i(b),null,{default:h(({mode:a})=>[i(t).password_reset?(o(),r("button",{key:0,class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:P,title:e.$t("admin.resend_email_title")},n(e.$t("admin.resend_email")),11,ce)):f("",!0),s("button",{class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:U,title:e.$t("admin.reset_password_title")},n(e.$t("admin.reset_password")),11,_e)]),_:1})])])]),s("div",ue,[i(t).password_reset===0?(o(),r("span",{key:0,innerHTML:e.$t("admin.password_request_expired"),class:"is-block block"},null,8,he)):i(t).password_reset?(o(),r("span",{key:1,innerHTML:e.$t("admin.password_requested_on_t",{datetime:i(t).password_reset}),class:"is-block block"},null,8,me)):f("",!0),i(t).password_reset?(o(),r("span",{key:2,innerHTML:e.$t("admin.resend_email_help"),class:"is-block block"},null,8,fe)):f("",!0),s("span",{innerHTML:e.$t("admin.reset_password_help"),class:"is-block block"},null,8,pe)])]),s("div",ke,[s("div",null,[s("span",be,n(e.$t("settings.personal_access_tokens")),1),s("span",ge,n(e.$t("admin.user_has_x_active_pat",{count:i(t).valid_personal_access_tokens})),1)]),i(t).valid_personal_access_tokens>0?(o(),r("div",ve,[s("div",ye,[c(i(b),null,{default:h(({mode:a})=>[s("button",{class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:H,title:e.$t("admin.revoke_all_pat_for_user")},n(e.$t("settings.revoke")),11,we)]),_:1})])])):f("",!0)]),s("div",$e,[s("div",null,[s("span",ze,n(e.$t("auth.webauthn.security_devices")),1),s("span",xe,n(e.$t("admin.user_has_x_security_devices",{count:i(t).webauthn_credentials})),1)]),i(t).webauthn_credentials>0?(o(),r("div",Ce,[s("div",Te,[c(i(b),null,{default:h(({mode:a})=>[s("button",{class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),title:e.$t("admin.revoke_all_devices_for_user")},n(e.$t("settings.revoke")),11,Me)]),_:1})])])):f("",!0)])]),s("h2",Be,n(e.$t("settings.preferences")),1),s("div",Fe,[c(j,{id:"btnCopyEnvVars",token:(z=i($))==null?void 0:z.innerText},null,8,["token"]),s("ul",{ref_key:"listUserPreferences",ref:$,id:"listUserPreferences"},[(o(!0),r(Y,null,K(i(t).info.preferences,(a,x)=>(o(),r("li",{value:a,key:x},[s("b",null,n(x),1),y(": "),s("span",Ue,n(a),1)],8,Pe))),128))],512)]),s("h2",Ve,n(e.$t("admin.logs")),1),s("div",Le,[s("ul",He,[s("li",null,n(e.$t("admin.registered_on_date",{date:i(t).info.created_at})),1),s("li",null,n(e.$t("admin.last_seen_on_date",{date:i(t).info.last_seen_at})),1)])]),s("h2",Ee,n(e.$t("admin.danger_zone")),1),s("div",Ne,[s("div",Ie,[y(n(e.$t("admin.delete_this_user_legend"))+" ",1),s("span",Re,n(e.$t("admin.this_is_not_soft_delete")),1)]),s("button",{class:"button is-danger",onClick:L,title:"delete"},n(e.$t("admin.delete_this_user")),1)])])),c(R,{showButtons:!0},{default:h(()=>[c(I,{returnTo:{name:"admin.users"},action:"back"},null,8,["returnTo"])]),_:1})]}),_:1})}}};export{qe as default}; diff --git a/public/build/assets/OAuth-23b533cf.js b/public/build/assets/OAuth-c85ae7fb.js similarity index 95% rename from public/build/assets/OAuth-23b533cf.js rename to public/build/assets/OAuth-c85ae7fb.js index 8e4541f3..5781c798 100644 --- a/public/build/assets/OAuth-23b533cf.js +++ b/public/build/assets/OAuth-c85ae7fb.js @@ -1 +1 @@ -import{Q as G,b as H,a2 as R,S as J,r as m,o as O,d as Q,J as z,a0 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 A,D as S,I as y}from"./app-60af1d1a.js";import{F as te}from"./Form-0a788c90.js";import{_ as oe}from"./SettingTabs-0b59e581.js";import{S as ne}from"./Spinner-bfa27d3a.js";/*! 2FAuth version 5.1.0 - 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"},ze={__name:"OAuth",setup(we){const x=G("2fauth"),p=H(),E=R(x.prefix+"returnTo","accounts"),{copy:L}=J({legacy:!0}),r=m([]),b=m(!1),T=m(!1),v=m(!1),h=m(null),C=m(null);O(()=>{w()});const u=Q(new te({name:""}));function w(){b.value=!0,z.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(){P(),T.value?p.warn({text:y("errors.unsupported_with_reverseproxy")}):v.value=!0}function M(){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 N(e){confirm(y("settings.confirm.revoke"))&&z.deletePersonalAccessToken(e).then(i=>{r.value=r.value.filter(k=>k.id!==e),p.success({text:y("settings.token_revoked")})})}function P(){r.value.forEach(e=>{e.value=null}),h.value=null}function K(e){L(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"),W=_("VueFooter"),V=_("FormWrapper"),j=_("FormField"),$=_("VueButton");return l(),c("div",null,[n(oe,{activeTab:"settings.oauth.tokens"},null,8,["activeTab"]),t("div",ae,[n(V,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:A(["button tag",{"is-link":B!="dark"}]),onClick:S(D=>K(s.value),["stop"])},a(e.$t("commons.copy")),11,_e)):d("",!0),t("button",{class:A(["button tag",B==="dark"?"is-dark":"is-white"]),onClick:D=>N(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(W,{showButtons:!0},{default:f(()=>[n(U,{returnTo:{name:o(E)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})]),o(v)?(l(),c("div",ke,[t("main",ge,[n(V,{title:"settings.forms.new_token"},{default:f(()=>[t("form",{onSubmit:S(M,["prevent"]),onKeydown:i[1]||(i[1]=s=>o(u).onKeydown(s))},[n(j,{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($,{id:"btnGenerateToken",isLoading:o(u).isBusy},{default:f(()=>[g(a(e.$t("commons.generate")),1)]),_:1},8,["isLoading"])]),t("div",Ce,[n($,{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{ze as default}; +import{Q as G,b as H,a2 as R,S as J,r as m,o as O,d as Q,J as z,a0 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 A,D as S,I as y}from"./app-2d89b28f.js";import{F as te}from"./Form-5283f7b6.js";import{_ as oe}from"./SettingTabs-708dbaa6.js";import{S as ne}from"./Spinner-aea2b665.js";/*! 2FAuth version 5.1.1 - 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"},ze={__name:"OAuth",setup(we){const x=G("2fauth"),p=H(),E=R(x.prefix+"returnTo","accounts"),{copy:L}=J({legacy:!0}),r=m([]),b=m(!1),T=m(!1),v=m(!1),h=m(null),C=m(null);O(()=>{w()});const u=Q(new te({name:""}));function w(){b.value=!0,z.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(){P(),T.value?p.warn({text:y("errors.unsupported_with_reverseproxy")}):v.value=!0}function M(){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 N(e){confirm(y("settings.confirm.revoke"))&&z.deletePersonalAccessToken(e).then(i=>{r.value=r.value.filter(k=>k.id!==e),p.success({text:y("settings.token_revoked")})})}function P(){r.value.forEach(e=>{e.value=null}),h.value=null}function K(e){L(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"),W=_("VueFooter"),V=_("FormWrapper"),j=_("FormField"),$=_("VueButton");return l(),c("div",null,[n(oe,{activeTab:"settings.oauth.tokens"},null,8,["activeTab"]),t("div",ae,[n(V,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:A(["button tag",{"is-link":B!="dark"}]),onClick:S(D=>K(s.value),["stop"])},a(e.$t("commons.copy")),11,_e)):d("",!0),t("button",{class:A(["button tag",B==="dark"?"is-dark":"is-white"]),onClick:D=>N(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(W,{showButtons:!0},{default:f(()=>[n(U,{returnTo:{name:o(E)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})]),o(v)?(l(),c("div",ke,[t("main",ge,[n(V,{title:"settings.forms.new_token"},{default:f(()=>[t("form",{onSubmit:S(M,["prevent"]),onKeydown:i[1]||(i[1]=s=>o(u).onKeydown(s))},[n(j,{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($,{id:"btnGenerateToken",isLoading:o(u).isBusy},{default:f(()=>[g(a(e.$t("commons.generate")),1)]),_:1},8,["isLoading"])]),t("div",Ce,[n($,{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{ze as default}; diff --git a/public/build/assets/Options-599918f8.js b/public/build/assets/Options-86d2ee8a.js similarity index 98% rename from public/build/assets/Options-599918f8.js rename to public/build/assets/Options-86d2ee8a.js index a9b20a32..f8fe3772 100644 --- a/public/build/assets/Options-599918f8.js +++ b/public/build/assets/Options-86d2ee8a.js @@ -1 +1 @@ -import{_ as P}from"./SettingTabs-0b59e581.js";import{Q as T,a as F,T as I,b as c,a2 as G,r as M,v as q,o as R,a0 as S,e as p,f as $,g as Q,m as l,h as i,p as _,t as u,i as o,j as V,J as L,I as j,a3 as W}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const E={class:"options-tabs"},J={class:"block"},z={class:"title is-4 has-text-grey-light"},H={class:"field help"},K={class:"ml-2",href:"https://crowdin.com/project/2fauth"},X={class:"title is-4 pt-4 has-text-grey-light"},Y={class:"title is-4 pt-4 has-text-grey-light"},Z={class:"title is-4 pt-4 has-text-grey-light"},oe={__name:"Options",setup(ee){const f=T("2fauth"),s=F(),v=I(),b=c(),y=G(f.prefix+"returnTo","accounts"),O=[{text:"settings.forms.grid",value:"grid",icon:"th"},{text:"settings.forms.list",value:"list",icon:"list"}],h=[{text:"settings.forms.light",value:"light",icon:"sun"},{text:"settings.forms.dark",value:"dark",icon:"moon"},{text:"settings.forms.automatic",value:"system",icon:"desktop"}],w=[{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"}],x=[{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}],g=M([{text:"groups.no_group",value:0},{text:"groups.active_group",value:-1}]),C=[{text:"settings.forms.livescan",value:"livescan"},{text:"settings.forms.upload",value:"upload"},{text:"settings.forms.advanced_form",value:"advancedForm"}],D=[{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"}],U=q(()=>{let n=[{text:"languages.browser_preference",value:"browser"}];for(const e of f.langs)n.push({text:"languages."+e,value:e});return n});R(()=>{v.items.forEach(n=>{n.id>0&&g.value.push({text:n.name,value:n.id})}),s.refreshPreferences()});function r(n,e){L.updatePreference(n,e).then(m=>{c().success({type:"is-success",text:j("settings.forms.setting_saved")}),n==="lang"&&W()!==e?s.applyLanguage():n==="theme"&&s.applyTheme()})}return S(n=>{n.name.startsWith("settings.")||b.clear()}),(n,e)=>{const m=p("FormSelect"),N=p("FontAwesomeIcon"),d=p("FormToggle"),a=p("FormCheckbox"),k=p("FormWrapper"),A=p("ButtonBackCloseCancel"),B=p("VueFooter");return $(),Q("div",null,[l(P,{activeTab:"settings.options"}),i("div",E,[l(k,null,{default:_(()=>[i("form",null,[i("div",J,[i("h4",z,u(n.$t("settings.general")),1),l(m,{modelValue:o(s).preferences.lang,"onUpdate:modelValue":[e[0]||(e[0]=t=>o(s).preferences.lang=t),e[1]||(e[1]=t=>r("lang",t))],options:o(U),fieldName:"lang",label:"settings.forms.language.label",help:"settings.forms.language.help"},null,8,["modelValue","options"]),i("div",H,[V(u(n.$t("settings.forms.some_translation_are_missing"))+" ",1),i("a",K,[V(u(n.$t("settings.forms.help_translate_2fauth"))+" ",1),l(N,{icon:["fas","external-link-alt"]})])]),l(d,{modelValue:o(s).preferences.displayMode,"onUpdate:modelValue":[e[2]||(e[2]=t=>o(s).preferences.displayMode=t),e[3]||(e[3]=t=>r("displayMode",t))],choices:O,fieldName:"displayMode",label:"settings.forms.display_mode.label",help:"settings.forms.display_mode.help"},null,8,["modelValue"]),l(d,{modelValue:o(s).preferences.theme,"onUpdate:modelValue":[e[4]||(e[4]=t=>o(s).preferences.theme=t),e[5]||(e[5]=t=>r("theme",t))],choices:h,fieldName:"theme",label:"settings.forms.theme.label",help:"settings.forms.theme.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.showAccountsIcons,"onUpdate:modelValue":[e[6]||(e[6]=t=>o(s).preferences.showAccountsIcons=t),e[7]||(e[7]=t=>r("showAccountsIcons",t))],fieldName:"showAccountsIcons",label:"settings.forms.show_accounts_icons.label",help:"settings.forms.show_accounts_icons.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.getOfficialIcons,"onUpdate:modelValue":[e[8]||(e[8]=t=>o(s).preferences.getOfficialIcons=t),e[9]||(e[9]=t=>r("getOfficialIcons",t))],fieldName:"getOfficialIcons",label:"settings.forms.get_official_icons.label",help:"settings.forms.get_official_icons.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.formatPassword,"onUpdate:modelValue":[e[10]||(e[10]=t=>o(s).preferences.formatPassword=t),e[11]||(e[11]=t=>r("formatPassword",t))],fieldName:"formatPassword",label:"settings.forms.password_format.label",help:"settings.forms.password_format.help"},null,8,["modelValue"]),l(d,{modelValue:o(s).preferences.formatPasswordBy,"onUpdate:modelValue":[e[12]||(e[12]=t=>o(s).preferences.formatPasswordBy=t),e[13]||(e[13]=t=>r("formatPasswordBy",t))],choices:w,fieldName:"formatPasswordBy",isDisabled:!o(s).preferences.formatPassword},null,8,["modelValue","isDisabled"]),l(a,{modelValue:o(s).preferences.clearSearchOnCopy,"onUpdate:modelValue":[e[14]||(e[14]=t=>o(s).preferences.clearSearchOnCopy=t),e[15]||(e[15]=t=>r("clearSearchOnCopy",t))],fieldName:"clearSearchOnCopy",label:"settings.forms.clear_search_on_copy.label",help:"settings.forms.clear_search_on_copy.help"},null,8,["modelValue"]),i("h4",X,u(n.$t("groups.groups")),1),l(m,{modelValue:o(s).preferences.defaultGroup,"onUpdate:modelValue":[e[16]||(e[16]=t=>o(s).preferences.defaultGroup=t),e[17]||(e[17]=t=>r("defaultGroup",t))],options:o(g),fieldName:"defaultGroup",label:"settings.forms.default_group.label",help:"settings.forms.default_group.help"},null,8,["modelValue","options"]),l(a,{modelValue:o(s).preferences.rememberActiveGroup,"onUpdate:modelValue":[e[18]||(e[18]=t=>o(s).preferences.rememberActiveGroup=t),e[19]||(e[19]=t=>r("rememberActiveGroup",t))],fieldName:"rememberActiveGroup",label:"settings.forms.remember_active_group.label",help:"settings.forms.remember_active_group.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.viewDefaultGroupOnCopy,"onUpdate:modelValue":[e[20]||(e[20]=t=>o(s).preferences.viewDefaultGroupOnCopy=t),e[21]||(e[21]=t=>r("viewDefaultGroupOnCopy",t))],fieldName:"viewDefaultGroupOnCopy",label:"settings.forms.view_default_group_on_copy.label",help:"settings.forms.view_default_group_on_copy.help"},null,8,["modelValue"]),i("h4",Y,u(n.$t("settings.security")),1),l(m,{modelValue:o(s).preferences.kickUserAfter,"onUpdate:modelValue":[e[22]||(e[22]=t=>o(s).preferences.kickUserAfter=t),e[23]||(e[23]=t=>r("kickUserAfter",t))],options:x,fieldName:"kickUserAfter",label:"settings.forms.auto_lock.label",help:"settings.forms.auto_lock.help"},null,8,["modelValue"]),l(d,{modelValue:o(s).preferences.getOtpOnRequest,"onUpdate:modelValue":[e[24]||(e[24]=t=>o(s).preferences.getOtpOnRequest=t),e[25]||(e[25]=t=>r("getOtpOnRequest",t))],choices:D,fieldName:"getOtpOnRequest",label:"settings.forms.otp_generation.label",help:"settings.forms.otp_generation.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.closeOtpOnCopy,"onUpdate:modelValue":[e[26]||(e[26]=t=>o(s).preferences.closeOtpOnCopy=t),e[27]||(e[27]=t=>r("closeOtpOnCopy",t))],fieldName:"closeOtpOnCopy",label:"settings.forms.close_otp_on_copy.label",help:"settings.forms.close_otp_on_copy.help",isDisabled:!o(s).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),l(a,{modelValue:o(s).preferences.copyOtpOnDisplay,"onUpdate:modelValue":[e[28]||(e[28]=t=>o(s).preferences.copyOtpOnDisplay=t),e[29]||(e[29]=t=>r("copyOtpOnDisplay",t))],fieldName:"copyOtpOnDisplay",label:"settings.forms.copy_otp_on_display.label",help:"settings.forms.copy_otp_on_display.help",isDisabled:!o(s).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),l(a,{modelValue:o(s).preferences.showOtpAsDot,"onUpdate:modelValue":[e[30]||(e[30]=t=>o(s).preferences.showOtpAsDot=t),e[31]||(e[31]=t=>r("showOtpAsDot",t))],fieldName:"showOtpAsDot",label:"settings.forms.show_otp_as_dot.label",help:"settings.forms.show_otp_as_dot.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.revealDottedOTP,"onUpdate:modelValue":[e[32]||(e[32]=t=>o(s).preferences.revealDottedOTP=t),e[33]||(e[33]=t=>r("revealDottedOTP",t))],fieldName:"revealDottedOTP",label:"settings.forms.reveal_dotted_otp.label",help:"settings.forms.reveal_dotted_otp.help",isDisabled:!o(s).preferences.showOtpAsDot,isIndented:!0},null,8,["modelValue","isDisabled"]),i("h4",Z,u(n.$t("settings.data_input")),1),l(a,{modelValue:o(s).preferences.useBasicQrcodeReader,"onUpdate:modelValue":[e[34]||(e[34]=t=>o(s).preferences.useBasicQrcodeReader=t),e[35]||(e[35]=t=>r("useBasicQrcodeReader",t))],fieldName:"useBasicQrcodeReader",label:"settings.forms.use_basic_qrcode_reader.label",help:"settings.forms.use_basic_qrcode_reader.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.useDirectCapture,"onUpdate:modelValue":[e[36]||(e[36]=t=>o(s).preferences.useDirectCapture=t),e[37]||(e[37]=t=>r("useDirectCapture",t))],fieldName:"useDirectCapture",label:"settings.forms.useDirectCapture.label",help:"settings.forms.useDirectCapture.help"},null,8,["modelValue"]),l(m,{modelValue:o(s).preferences.defaultCaptureMode,"onUpdate:modelValue":[e[38]||(e[38]=t=>o(s).preferences.defaultCaptureMode=t),e[39]||(e[39]=t=>r("defaultCaptureMode",t))],options:C,fieldName:"defaultCaptureMode",label:"settings.forms.defaultCaptureMode.label",help:"settings.forms.defaultCaptureMode.help"},null,8,["modelValue"])])])]),_:1})]),l(B,{showButtons:!0},{default:_(()=>[l(A,{returnTo:{name:o(y)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{oe as default}; +import{_ as P}from"./SettingTabs-708dbaa6.js";import{Q as T,a as F,T as I,b as c,a2 as G,r as M,v as q,o as R,a0 as S,e as p,f as $,g as Q,m as l,h as i,p as _,t as u,i as o,j as V,J as L,I as j,a3 as W}from"./app-2d89b28f.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const E={class:"options-tabs"},J={class:"block"},z={class:"title is-4 has-text-grey-light"},H={class:"field help"},K={class:"ml-2",href:"https://crowdin.com/project/2fauth"},X={class:"title is-4 pt-4 has-text-grey-light"},Y={class:"title is-4 pt-4 has-text-grey-light"},Z={class:"title is-4 pt-4 has-text-grey-light"},oe={__name:"Options",setup(ee){const f=T("2fauth"),s=F(),v=I(),b=c(),y=G(f.prefix+"returnTo","accounts"),O=[{text:"settings.forms.grid",value:"grid",icon:"th"},{text:"settings.forms.list",value:"list",icon:"list"}],h=[{text:"settings.forms.light",value:"light",icon:"sun"},{text:"settings.forms.dark",value:"dark",icon:"moon"},{text:"settings.forms.automatic",value:"system",icon:"desktop"}],w=[{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"}],x=[{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}],g=M([{text:"groups.no_group",value:0},{text:"groups.active_group",value:-1}]),C=[{text:"settings.forms.livescan",value:"livescan"},{text:"settings.forms.upload",value:"upload"},{text:"settings.forms.advanced_form",value:"advancedForm"}],D=[{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"}],U=q(()=>{let n=[{text:"languages.browser_preference",value:"browser"}];for(const e of f.langs)n.push({text:"languages."+e,value:e});return n});R(()=>{v.items.forEach(n=>{n.id>0&&g.value.push({text:n.name,value:n.id})}),s.refreshPreferences()});function r(n,e){L.updatePreference(n,e).then(m=>{c().success({type:"is-success",text:j("settings.forms.setting_saved")}),n==="lang"&&W()!==e?s.applyLanguage():n==="theme"&&s.applyTheme()})}return S(n=>{n.name.startsWith("settings.")||b.clear()}),(n,e)=>{const m=p("FormSelect"),N=p("FontAwesomeIcon"),d=p("FormToggle"),a=p("FormCheckbox"),k=p("FormWrapper"),A=p("ButtonBackCloseCancel"),B=p("VueFooter");return $(),Q("div",null,[l(P,{activeTab:"settings.options"}),i("div",E,[l(k,null,{default:_(()=>[i("form",null,[i("div",J,[i("h4",z,u(n.$t("settings.general")),1),l(m,{modelValue:o(s).preferences.lang,"onUpdate:modelValue":[e[0]||(e[0]=t=>o(s).preferences.lang=t),e[1]||(e[1]=t=>r("lang",t))],options:o(U),fieldName:"lang",label:"settings.forms.language.label",help:"settings.forms.language.help"},null,8,["modelValue","options"]),i("div",H,[V(u(n.$t("settings.forms.some_translation_are_missing"))+" ",1),i("a",K,[V(u(n.$t("settings.forms.help_translate_2fauth"))+" ",1),l(N,{icon:["fas","external-link-alt"]})])]),l(d,{modelValue:o(s).preferences.displayMode,"onUpdate:modelValue":[e[2]||(e[2]=t=>o(s).preferences.displayMode=t),e[3]||(e[3]=t=>r("displayMode",t))],choices:O,fieldName:"displayMode",label:"settings.forms.display_mode.label",help:"settings.forms.display_mode.help"},null,8,["modelValue"]),l(d,{modelValue:o(s).preferences.theme,"onUpdate:modelValue":[e[4]||(e[4]=t=>o(s).preferences.theme=t),e[5]||(e[5]=t=>r("theme",t))],choices:h,fieldName:"theme",label:"settings.forms.theme.label",help:"settings.forms.theme.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.showAccountsIcons,"onUpdate:modelValue":[e[6]||(e[6]=t=>o(s).preferences.showAccountsIcons=t),e[7]||(e[7]=t=>r("showAccountsIcons",t))],fieldName:"showAccountsIcons",label:"settings.forms.show_accounts_icons.label",help:"settings.forms.show_accounts_icons.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.getOfficialIcons,"onUpdate:modelValue":[e[8]||(e[8]=t=>o(s).preferences.getOfficialIcons=t),e[9]||(e[9]=t=>r("getOfficialIcons",t))],fieldName:"getOfficialIcons",label:"settings.forms.get_official_icons.label",help:"settings.forms.get_official_icons.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.formatPassword,"onUpdate:modelValue":[e[10]||(e[10]=t=>o(s).preferences.formatPassword=t),e[11]||(e[11]=t=>r("formatPassword",t))],fieldName:"formatPassword",label:"settings.forms.password_format.label",help:"settings.forms.password_format.help"},null,8,["modelValue"]),l(d,{modelValue:o(s).preferences.formatPasswordBy,"onUpdate:modelValue":[e[12]||(e[12]=t=>o(s).preferences.formatPasswordBy=t),e[13]||(e[13]=t=>r("formatPasswordBy",t))],choices:w,fieldName:"formatPasswordBy",isDisabled:!o(s).preferences.formatPassword},null,8,["modelValue","isDisabled"]),l(a,{modelValue:o(s).preferences.clearSearchOnCopy,"onUpdate:modelValue":[e[14]||(e[14]=t=>o(s).preferences.clearSearchOnCopy=t),e[15]||(e[15]=t=>r("clearSearchOnCopy",t))],fieldName:"clearSearchOnCopy",label:"settings.forms.clear_search_on_copy.label",help:"settings.forms.clear_search_on_copy.help"},null,8,["modelValue"]),i("h4",X,u(n.$t("groups.groups")),1),l(m,{modelValue:o(s).preferences.defaultGroup,"onUpdate:modelValue":[e[16]||(e[16]=t=>o(s).preferences.defaultGroup=t),e[17]||(e[17]=t=>r("defaultGroup",t))],options:o(g),fieldName:"defaultGroup",label:"settings.forms.default_group.label",help:"settings.forms.default_group.help"},null,8,["modelValue","options"]),l(a,{modelValue:o(s).preferences.rememberActiveGroup,"onUpdate:modelValue":[e[18]||(e[18]=t=>o(s).preferences.rememberActiveGroup=t),e[19]||(e[19]=t=>r("rememberActiveGroup",t))],fieldName:"rememberActiveGroup",label:"settings.forms.remember_active_group.label",help:"settings.forms.remember_active_group.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.viewDefaultGroupOnCopy,"onUpdate:modelValue":[e[20]||(e[20]=t=>o(s).preferences.viewDefaultGroupOnCopy=t),e[21]||(e[21]=t=>r("viewDefaultGroupOnCopy",t))],fieldName:"viewDefaultGroupOnCopy",label:"settings.forms.view_default_group_on_copy.label",help:"settings.forms.view_default_group_on_copy.help"},null,8,["modelValue"]),i("h4",Y,u(n.$t("settings.security")),1),l(m,{modelValue:o(s).preferences.kickUserAfter,"onUpdate:modelValue":[e[22]||(e[22]=t=>o(s).preferences.kickUserAfter=t),e[23]||(e[23]=t=>r("kickUserAfter",t))],options:x,fieldName:"kickUserAfter",label:"settings.forms.auto_lock.label",help:"settings.forms.auto_lock.help"},null,8,["modelValue"]),l(d,{modelValue:o(s).preferences.getOtpOnRequest,"onUpdate:modelValue":[e[24]||(e[24]=t=>o(s).preferences.getOtpOnRequest=t),e[25]||(e[25]=t=>r("getOtpOnRequest",t))],choices:D,fieldName:"getOtpOnRequest",label:"settings.forms.otp_generation.label",help:"settings.forms.otp_generation.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.closeOtpOnCopy,"onUpdate:modelValue":[e[26]||(e[26]=t=>o(s).preferences.closeOtpOnCopy=t),e[27]||(e[27]=t=>r("closeOtpOnCopy",t))],fieldName:"closeOtpOnCopy",label:"settings.forms.close_otp_on_copy.label",help:"settings.forms.close_otp_on_copy.help",isDisabled:!o(s).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),l(a,{modelValue:o(s).preferences.copyOtpOnDisplay,"onUpdate:modelValue":[e[28]||(e[28]=t=>o(s).preferences.copyOtpOnDisplay=t),e[29]||(e[29]=t=>r("copyOtpOnDisplay",t))],fieldName:"copyOtpOnDisplay",label:"settings.forms.copy_otp_on_display.label",help:"settings.forms.copy_otp_on_display.help",isDisabled:!o(s).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),l(a,{modelValue:o(s).preferences.showOtpAsDot,"onUpdate:modelValue":[e[30]||(e[30]=t=>o(s).preferences.showOtpAsDot=t),e[31]||(e[31]=t=>r("showOtpAsDot",t))],fieldName:"showOtpAsDot",label:"settings.forms.show_otp_as_dot.label",help:"settings.forms.show_otp_as_dot.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.revealDottedOTP,"onUpdate:modelValue":[e[32]||(e[32]=t=>o(s).preferences.revealDottedOTP=t),e[33]||(e[33]=t=>r("revealDottedOTP",t))],fieldName:"revealDottedOTP",label:"settings.forms.reveal_dotted_otp.label",help:"settings.forms.reveal_dotted_otp.help",isDisabled:!o(s).preferences.showOtpAsDot,isIndented:!0},null,8,["modelValue","isDisabled"]),i("h4",Z,u(n.$t("settings.data_input")),1),l(a,{modelValue:o(s).preferences.useBasicQrcodeReader,"onUpdate:modelValue":[e[34]||(e[34]=t=>o(s).preferences.useBasicQrcodeReader=t),e[35]||(e[35]=t=>r("useBasicQrcodeReader",t))],fieldName:"useBasicQrcodeReader",label:"settings.forms.use_basic_qrcode_reader.label",help:"settings.forms.use_basic_qrcode_reader.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.useDirectCapture,"onUpdate:modelValue":[e[36]||(e[36]=t=>o(s).preferences.useDirectCapture=t),e[37]||(e[37]=t=>r("useDirectCapture",t))],fieldName:"useDirectCapture",label:"settings.forms.useDirectCapture.label",help:"settings.forms.useDirectCapture.help"},null,8,["modelValue"]),l(m,{modelValue:o(s).preferences.defaultCaptureMode,"onUpdate:modelValue":[e[38]||(e[38]=t=>o(s).preferences.defaultCaptureMode=t),e[39]||(e[39]=t=>r("defaultCaptureMode",t))],options:C,fieldName:"defaultCaptureMode",label:"settings.forms.defaultCaptureMode.label",help:"settings.forms.defaultCaptureMode.help"},null,8,["modelValue"])])])]),_:1})]),l(B,{showButtons:!0},{default:_(()=>[l(A,{returnTo:{name:o(y)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{oe as default}; diff --git a/public/build/assets/OtpDisplay-f582bb88.js b/public/build/assets/OtpDisplay-2108b98d.js similarity index 97% rename from public/build/assets/OtpDisplay-f582bb88.js rename to public/build/assets/OtpDisplay-2108b98d.js index 6166220e..8fbe88dd 100644 --- a/public/build/assets/OtpDisplay-f582bb88.js +++ b/public/build/assets/OtpDisplay-2108b98d.js @@ -1 +1 @@ -import{r,v as C,o as R,s as Z,f as u,g as d,F as ee,G as te,i as n,n as N,a as oe,b as ae,Q as ne,S as se,_ as re,x as le,e as ue,h as x,l as A,m as G,p as ie,t as b,w as ce,Y as pe,U as ve,A as j,B as q,k as M,D as fe,K as D,I as z,P as Q}from"./app-60af1d1a.js";import{S as de}from"./Spinner-bfa27d3a.js";/*! 2FAuth version 5.1.0 - 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,s=r(null),i=r(null),S=r(null),y=r(null),c=r(null),p=C(()=>s.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)=>{_(),s.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;S.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(S.value),clearInterval(y.value),c.value=s.value=null};return R(()=>{o.autostart==!0&&m()}),Z(()=>{_()}),T({startLoop:m,clearLooper:_,props:o}),(v,g)=>(u(),d("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=r(0),s=C(()=>o.value==-1);function i(y){o.value=y{isNaN(l.initialIndex)||i(l.initialIndex)}),T({turnOn:i,turnOff:S,props:l}),(y,c)=>(u(),d("ul",{class:N(["dots",{off:n(s)}])},[(u(!0),d(ee,null,te(k.stepCount,p=>(u(),d("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"},xe={__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,s=oe(),i=ae(),S=ne("2fauth"),{copy:y,copied:c}=se({legacy:!0}),p=re(),h=r(null),w=r(null),e=r({otp_type:"",account:"",service:"",icon:"",secret:"",digits:null,algorithm:"",period:null,counter:null,image:""}),m=r(""),_=r(null),v=r(!1),g=r(!1),O=r(!1),B=r(),I=r(),E=r();le(()=>o.icon,a=>{a!=null&&(e.value.icon=a)});const Y=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,F(),a){h.value=a;const{data:t}=await D.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(z("errors.not_a_supported_otp_type"))):i.error(new Error(z("errors.cannot_create_otp_without_secret")));try{await V(),W()}catch{L()}};async function V(){F(),await J().then(a=>{let t=a.data;m.value=t.password,s.preferences.copyOtpOnDisplay&&$(t.password),U(t.otp_type)?(_.value=t.generated_at,e.value.period=t.period,v.value=!0,Q().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 F(){g.value=!0,B.value.turnOff()}function J(){return h.value?D.getOtpById(h.value):w.value?D.getOtpByUri(w.value):D.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 W(){Q().then(()=>{var a;(a=E.value)==null||a.focus()})}function $(a,t){y(a.replace(/ /g,"")),c&&(s.preferences.kickUserAfter==-1&&(t||!1)===!0&&p.name!="importAccounts"?s.logout({kicked:!0}):s.preferences.closeOtpOnCopy&&(t||!1)===!0&&(l("please-close-me"),O.value=!1,L()),s.preferences.clearSearchOnCopy&&l("please-clear-search"),s.preferences.viewDefaultGroupOnCopy&&(s.preferences.activeGroup=s.preferences.defaultGroup==-1?s.preferences.activeGroup:s.preferences.defaultGroup),i.success({text:z("commons.copied_to_clipboard")}))}function U(a){return a==="totp"||a==="steamtotp"}function P(a){return a==="hotp"}function K(a){B.value.turnOn(a)}return T({show:Y,clearOTP:L}),(a,t)=>{const H=ue("font-awesome-icon");return u(),d("div",null,[x("figure",{class:N(["image is-64x64",{"no-icon":!n(e).icon}]),style:{display:"inline-block"}},[n(e).icon?(u(),d("img",{key:0,src:n(S).config.subdirectory+"/storage/icons/"+n(e).icon,alt:a.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,ge)):A("",!0)],2),G(n(ve),null,{default:ie(({mode:f})=>[x("p",{class:N(["is-size-4 has-ellipsis",f=="dark"?"has-text-grey-light":"has-text-grey"])},b(n(e).service),3),x("p",{class:N(["is-size-6 has-ellipsis",f=="dark"?"has-text-grey":"has-text-grey-light"])},b(n(e).account),3),x("p",null,[n(g)?(u(),d("span",we,[G(de,{isVisible:n(g),type:"raw"},null,8,["isVisible"])])):(u(),d("span",{key:0,id:"otp",role:"log",ref_key:"otpSpanTag",ref:E,tabindex:"0",class:N(["otp is-size-1 is-clickable px-3",f=="dark"?"has-text-white":"has-text-grey-dark"]),onClick:t[0]||(t[0]=X=>$(n(m),!0)),onKeyup:t[1]||(t[1]=ce(X=>$(n(m),!0),["enter"])),title:a.$t("commons.copy_to_clipboard")},b(n(pe)(n(m),n(s).preferences.showOtpAsDot&&n(s).preferences.revealDottedOTP&&n(O))),43,he))])]),_:1}),j(G(_e,{ref_key:"dots",ref:B},null,512),[[q,U(n(e).otp_type)]]),j(x("p",null,b(a.$t("twofaccounts.forms.counter.label"))+": "+b(n(e).counter),513),[[q,P(n(e).otp_type)]]),n(s).preferences.showOtpAsDot&&n(s).preferences.revealDottedOTP?(u(),d("p",ke,[x("button",{class:"button is-ghost has-text-grey-dark",onClick:t[2]||(t[2]=fe(f=>O.value=!n(O),["stop"]))},[n(O)?(u(),M(H,{key:0,icon:["fas","eye"]})):(u(),M(H,{key:1,icon:["fas","eye-slash"]}))])])):A("",!0),n(v)?(u(),M(ye,{key:1,period:n(e).period,generated_at:n(_),autostart:!1,onLoopEnded:t[3]||(t[3]=f=>V()),onLoopStarted:t[4]||(t[4]=f=>K(f)),onSteppedUp:t[5]||(t[5]=f=>K(f)),ref_key:"totpLooper",ref:I},null,8,["period","generated_at"])):A("",!0)])}}};export{xe as _,ye as a,_e as b}; +import{r,v as C,o as R,s as Z,f as u,g as d,F as ee,G as te,i as n,n as N,a as oe,b as ae,Q as ne,S as se,_ as re,x as le,e as ue,h as x,l as A,m as G,p as ie,t as b,w as ce,Y as pe,U as ve,A as j,B as q,k as M,D as fe,K as D,I as z,P as Q}from"./app-2d89b28f.js";import{S as de}from"./Spinner-aea2b665.js";/*! 2FAuth version 5.1.1 - 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,s=r(null),i=r(null),S=r(null),y=r(null),c=r(null),p=C(()=>s.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)=>{_(),s.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;S.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(S.value),clearInterval(y.value),c.value=s.value=null};return R(()=>{o.autostart==!0&&m()}),Z(()=>{_()}),T({startLoop:m,clearLooper:_,props:o}),(v,g)=>(u(),d("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=r(0),s=C(()=>o.value==-1);function i(y){o.value=y{isNaN(l.initialIndex)||i(l.initialIndex)}),T({turnOn:i,turnOff:S,props:l}),(y,c)=>(u(),d("ul",{class:N(["dots",{off:n(s)}])},[(u(!0),d(ee,null,te(k.stepCount,p=>(u(),d("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"},xe={__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,s=oe(),i=ae(),S=ne("2fauth"),{copy:y,copied:c}=se({legacy:!0}),p=re(),h=r(null),w=r(null),e=r({otp_type:"",account:"",service:"",icon:"",secret:"",digits:null,algorithm:"",period:null,counter:null,image:""}),m=r(""),_=r(null),v=r(!1),g=r(!1),O=r(!1),B=r(),I=r(),E=r();le(()=>o.icon,a=>{a!=null&&(e.value.icon=a)});const Y=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,F(),a){h.value=a;const{data:t}=await D.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(z("errors.not_a_supported_otp_type"))):i.error(new Error(z("errors.cannot_create_otp_without_secret")));try{await V(),W()}catch{L()}};async function V(){F(),await J().then(a=>{let t=a.data;m.value=t.password,s.preferences.copyOtpOnDisplay&&$(t.password),U(t.otp_type)?(_.value=t.generated_at,e.value.period=t.period,v.value=!0,Q().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 F(){g.value=!0,B.value.turnOff()}function J(){return h.value?D.getOtpById(h.value):w.value?D.getOtpByUri(w.value):D.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 W(){Q().then(()=>{var a;(a=E.value)==null||a.focus()})}function $(a,t){y(a.replace(/ /g,"")),c&&(s.preferences.kickUserAfter==-1&&(t||!1)===!0&&p.name!="importAccounts"?s.logout({kicked:!0}):s.preferences.closeOtpOnCopy&&(t||!1)===!0&&(l("please-close-me"),O.value=!1,L()),s.preferences.clearSearchOnCopy&&l("please-clear-search"),s.preferences.viewDefaultGroupOnCopy&&(s.preferences.activeGroup=s.preferences.defaultGroup==-1?s.preferences.activeGroup:s.preferences.defaultGroup),i.success({text:z("commons.copied_to_clipboard")}))}function U(a){return a==="totp"||a==="steamtotp"}function P(a){return a==="hotp"}function K(a){B.value.turnOn(a)}return T({show:Y,clearOTP:L}),(a,t)=>{const H=ue("font-awesome-icon");return u(),d("div",null,[x("figure",{class:N(["image is-64x64",{"no-icon":!n(e).icon}]),style:{display:"inline-block"}},[n(e).icon?(u(),d("img",{key:0,src:n(S).config.subdirectory+"/storage/icons/"+n(e).icon,alt:a.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,ge)):A("",!0)],2),G(n(ve),null,{default:ie(({mode:f})=>[x("p",{class:N(["is-size-4 has-ellipsis",f=="dark"?"has-text-grey-light":"has-text-grey"])},b(n(e).service),3),x("p",{class:N(["is-size-6 has-ellipsis",f=="dark"?"has-text-grey":"has-text-grey-light"])},b(n(e).account),3),x("p",null,[n(g)?(u(),d("span",we,[G(de,{isVisible:n(g),type:"raw"},null,8,["isVisible"])])):(u(),d("span",{key:0,id:"otp",role:"log",ref_key:"otpSpanTag",ref:E,tabindex:"0",class:N(["otp is-size-1 is-clickable px-3",f=="dark"?"has-text-white":"has-text-grey-dark"]),onClick:t[0]||(t[0]=X=>$(n(m),!0)),onKeyup:t[1]||(t[1]=ce(X=>$(n(m),!0),["enter"])),title:a.$t("commons.copy_to_clipboard")},b(n(pe)(n(m),n(s).preferences.showOtpAsDot&&n(s).preferences.revealDottedOTP&&n(O))),43,he))])]),_:1}),j(G(_e,{ref_key:"dots",ref:B},null,512),[[q,U(n(e).otp_type)]]),j(x("p",null,b(a.$t("twofaccounts.forms.counter.label"))+": "+b(n(e).counter),513),[[q,P(n(e).otp_type)]]),n(s).preferences.showOtpAsDot&&n(s).preferences.revealDottedOTP?(u(),d("p",ke,[x("button",{class:"button is-ghost has-text-grey-dark",onClick:t[2]||(t[2]=fe(f=>O.value=!n(O),["stop"]))},[n(O)?(u(),M(H,{key:0,icon:["fas","eye"]})):(u(),M(H,{key:1,icon:["fas","eye-slash"]}))])])):A("",!0),n(v)?(u(),M(ye,{key:1,period:n(e).period,generated_at:n(_),autostart:!1,onLoopEnded:t[3]||(t[3]=f=>V()),onLoopStarted:t[4]||(t[4]=f=>K(f)),onSteppedUp:t[5]||(t[5]=f=>K(f)),ref_key:"totpLooper",ref:I},null,8,["period","generated_at"])):A("",!0)])}}};export{xe as _,ye as a,_e as b}; diff --git a/public/build/assets/QRcode-62f040ad.js b/public/build/assets/QRcode-8e9b023f.js similarity index 87% rename from public/build/assets/QRcode-62f040ad.js rename to public/build/assets/QRcode-8e9b023f.js index 09df2b95..69ce754b 100644 --- a/public/build/assets/QRcode-62f040ad.js +++ b/public/build/assets/QRcode-8e9b023f.js @@ -1 +1 @@ -import{u as _,_ as m,r as p,$ as f,K 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-60af1d1a.js";import{S as k}from"./Spinner-bfa27d3a.js";/*! 2FAuth version 5.1.0 - 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 _,_ as m,r as p,$ as f,K 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-2d89b28f.js";import{S as k}from"./Spinner-aea2b665.js";/*! 2FAuth version 5.1.1 - 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-ea3c63ab.js b/public/build/assets/QrContentDisplay-251465e5.js similarity index 96% rename from public/build/assets/QrContentDisplay-ea3c63ab.js rename to public/build/assets/QrContentDisplay-251465e5.js index 1b74bbe6..6ec2708c 100644 --- a/public/build/assets/QrContentDisplay-ea3c63ab.js +++ b/public/build/assets/QrContentDisplay-251465e5.js @@ -1 +1 @@ -import{S 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-60af1d1a.js";/*! 2FAuth version 5.1.0 - 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"},S={__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{S as _}; +import{S 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-2d89b28f.js";/*! 2FAuth version 5.1.1 - 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"},S={__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{S as _}; diff --git a/public/build/assets/Recover-d16991a5.js b/public/build/assets/Recover-68154a1c.js similarity index 94% rename from public/build/assets/Recover-d16991a5.js rename to public/build/assets/Recover-68154a1c.js index e610e7c8..9781bd96 100644 --- a/public/build/assets/Recover-d16991a5.js +++ b/public/build/assets/Recover-68154a1c.js @@ -1 +1 @@ -import{Q as V,b as B,u as R,_ as g,a2 as $,d as N,a0 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-60af1d1a.js";import{F as L}from"./Form-0a788c90.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const W=["onSubmit"],x={class:"field"},I={__name:"Recover",setup(E){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",x,[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,W)]),l(k)]),_:1},8,["title","punchline"])}}};export{I as default}; +import{Q as V,b as B,u as R,_ as g,a2 as $,d as N,a0 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-2d89b28f.js";import{F as L}from"./Form-5283f7b6.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const W=["onSubmit"],x={class:"field"},I={__name:"Recover",setup(E){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",x,[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,W)]),l(k)]),_:1},8,["title","punchline"])}}};export{I as default}; diff --git a/public/build/assets/Register-9acf7d81.js b/public/build/assets/Register-ac041825.js similarity index 94% rename from public/build/assets/Register-9acf7d81.js rename to public/build/assets/Register-ac041825.js index 94df5be9..6c710048 100644 --- a/public/build/assets/Register-9acf7d81.js +++ b/public/build/assets/Register-ac041825.js @@ -1 +1 @@ -import{a as T,b as C,u as I,r as F,d as k,a0 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-60af1d1a.js";import{F as B}from"./Form-0a788c90.js";import{w as W}from"./webauthnService-1f4ca5dc.js";/*! 2FAuth version 5.1.0 - 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,a0 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-2d89b28f.js";import{F as B}from"./Form-5283f7b6.js";import{w as W}from"./webauthnService-43ef310f.js";/*! 2FAuth version 5.1.1 - 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-9775b58f.js b/public/build/assets/RequestReset-a2b01eb6.js similarity index 91% rename from public/build/assets/RequestReset-9775b58f.js rename to public/build/assets/RequestReset-a2b01eb6.js index 89abbea0..9ab44ae4 100644 --- a/public/build/assets/RequestReset-9775b58f.js +++ b/public/build/assets/RequestReset-a2b01eb6.js @@ -1 +1 @@ -import{b as f,_,d as h,a0 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-60af1d1a.js";import{F as v}from"./Form-0a788c90.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const R=["onSubmit"],S={__name:"RequestReset",setup(k){const o=f(),n=_().name=="webauthn.lost",t=h(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,_,d as h,a0 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-2d89b28f.js";import{F as v}from"./Form-5283f7b6.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const R=["onSubmit"],S={__name:"RequestReset",setup(k){const o=f(),n=_().name=="webauthn.lost",t=h(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-4749a3f6.js b/public/build/assets/Reset-78a79c23.js similarity index 93% rename from public/build/assets/Reset-4749a3f6.js rename to public/build/assets/Reset-78a79c23.js index d3ed69c0..1a18aa11 100644 --- a/public/build/assets/Reset-4749a3f6.js +++ b/public/build/assets/Reset-78a79c23.js @@ -1 +1 @@ -import{b as g,u as B,_ as h,r as R,d as E,a0 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-60af1d1a.js";import{F as S}from"./Form-0a788c90.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const x=["onSubmit"],K={__name:"Reset",setup(D){const a=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(n){e.password_confirmation=e.password,e.post("/user/password/reset",{returnError:!0}).then(o=>{e.password="",e.password_confirmation="",u.value=!1,a.success({text:o.data.message,duration:-1})}).catch(o=>{o.response.data.resetFailed?a.alert({text:o.response.data.resetFailed,duration:-1}):o.response.status!==422&&a.error(o)})}return N(()=>{a.clear()}),(n,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:n.$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:n.$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(n.$t("commons.continue")),1)]),_:1}))],40,x),d(V)]),_:1},8,["title"])}}};export{K as default}; +import{b as g,u as B,_ as h,r as R,d as E,a0 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-2d89b28f.js";import{F as S}from"./Form-5283f7b6.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const x=["onSubmit"],K={__name:"Reset",setup(D){const a=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(n){e.password_confirmation=e.password,e.post("/user/password/reset",{returnError:!0}).then(o=>{e.password="",e.password_confirmation="",u.value=!1,a.success({text:o.data.message,duration:-1})}).catch(o=>{o.response.data.resetFailed?a.alert({text:o.response.data.resetFailed,duration:-1}):o.response.status!==422&&a.error(o)})}return N(()=>{a.clear()}),(n,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:n.$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:n.$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(n.$t("commons.continue")),1)]),_:1}))],40,x),d(V)]),_:1},8,["title"])}}};export{K as default}; diff --git a/public/build/assets/SearchBox-62743462.js b/public/build/assets/SearchBox-cb8625ff.js similarity index 95% rename from public/build/assets/SearchBox-62743462.js rename to public/build/assets/SearchBox-cb8625ff.js index d9c5d419..697fad28 100644 --- a/public/build/assets/SearchBox-62743462.js +++ b/public/build/assets/SearchBox-cb8625ff.js @@ -1 +1 @@ -import{r as d,o as u,s as h,e as m,f as n,g as c,h as a,n as k,k as p}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const y={role:"search",class:"field"},f={class:"control has-icons-right"},v=["aria-label","title","placeholder","value"],g={class:"icon is-small is-right"},w=["title"],b={__name:"SearchBox",props:{keyword:String,hasNoBackground:{type:Boolean,default:!1},placeholder:String},setup(t){const s=d(null);u(()=>{document.addEventListener("keydown",r)}),h(()=>{document.removeEventListener("keydown",r)});function r(e){var o;e.key==="f"&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),(o=s.value)==null||o.focus())}return(e,o)=>{const i=m("FontAwesomeIcon");return n(),c("div",y,[a("div",f,[a("input",{ref_key:"searchInput",ref:s,id:"txtSearch",type:"search",tabindex:"1","aria-label":e.$t("commons.search"),title:e.$t("commons.search"),placeholder:t.placeholder,class:k(["input is-rounded is-search",{"has-no-background":t.hasNoBackground}]),value:t.keyword,onKeyup:o[0]||(o[0]=l=>e.$emit("update:keyword",l.target.value))},null,42,v),a("span",g,[t.keyword!=""?(n(),c("button",{key:0,id:"btnClearSearch",tabindex:"1",title:e.$t("commons.clear_search"),class:"clear-selection delete",onClick:o[1]||(o[1]=l=>e.$emit("update:keyword",""))},null,8,w)):(n(),p(i,{key:1,icon:["fas","search"]}))])])])}}};export{b as _}; +import{r as d,o as u,s as h,e as m,f as n,g as c,h as a,n as k,k as p}from"./app-2d89b28f.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const y={role:"search",class:"field"},f={class:"control has-icons-right"},v=["aria-label","title","placeholder","value"],g={class:"icon is-small is-right"},w=["title"],b={__name:"SearchBox",props:{keyword:String,hasNoBackground:{type:Boolean,default:!1},placeholder:String},setup(t){const s=d(null);u(()=>{document.addEventListener("keydown",r)}),h(()=>{document.removeEventListener("keydown",r)});function r(e){var o;e.key==="f"&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),(o=s.value)==null||o.focus())}return(e,o)=>{const i=m("FontAwesomeIcon");return n(),c("div",y,[a("div",f,[a("input",{ref_key:"searchInput",ref:s,id:"txtSearch",type:"search",tabindex:"1","aria-label":e.$t("commons.search"),title:e.$t("commons.search"),placeholder:t.placeholder,class:k(["input is-rounded is-search",{"has-no-background":t.hasNoBackground}]),value:t.keyword,onKeyup:o[0]||(o[0]=l=>e.$emit("update:keyword",l.target.value))},null,42,v),a("span",g,[t.keyword!=""?(n(),c("button",{key:0,id:"btnClearSearch",tabindex:"1",title:e.$t("commons.clear_search"),class:"clear-selection delete",onClick:o[1]||(o[1]=l=>e.$emit("update:keyword",""))},null,8,w)):(n(),p(i,{key:1,icon:["fas","search"]}))])])])}}};export{b as _}; diff --git a/public/build/assets/SettingTabs-0b59e581.js b/public/build/assets/SettingTabs-708dbaa6.js similarity index 87% rename from public/build/assets/SettingTabs-0b59e581.js rename to public/build/assets/SettingTabs-708dbaa6.js index ada4a48d..e07cdc66 100644 --- a/public/build/assets/SettingTabs-0b59e581.js +++ b/public/build/assets/SettingTabs-708dbaa6.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-60af1d1a.js";/*! 2FAuth version 5.1.0 - 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-2d89b28f.js";/*! 2FAuth version 5.1.1 - 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-bfa27d3a.js b/public/build/assets/Spinner-aea2b665.js similarity index 94% rename from public/build/assets/Spinner-bfa27d3a.js rename to public/build/assets/Spinner-aea2b665.js index 597cba80..3e7d023d 100644 --- a/public/build/assets/Spinner-bfa27d3a.js +++ b/public/build/assets/Spinner-aea2b665.js @@ -1 +1 @@ -import{a5 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-60af1d1a.js";/*! 2FAuth version 5.1.0 - 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{a5 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-2d89b28f.js";/*! 2FAuth version 5.1.1 - 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-616d9df7.js b/public/build/assets/Start-864a4d60.js similarity index 94% rename from public/build/assets/Start-616d9df7.js rename to public/build/assets/Start-864a4d60.js index 70c1b514..ba862864 100644 --- a/public/build/assets/Start-616d9df7.js +++ b/public/build/assets/Start-864a4d60.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-60af1d1a.js";import{F as K}from"./Form-0a788c90.js";import{u as M}from"./bus-ab2b6d74.js";/*! 2FAuth version 5.1.0 - 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-2d89b28f.js";import{F as K}from"./Form-5283f7b6.js";import{u as M}from"./bus-7802a020.js";/*! 2FAuth version 5.1.1 - 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/Users-e4ea6e38.js b/public/build/assets/Users-422cc043.js similarity index 94% rename from public/build/assets/Users-e4ea6e38.js rename to public/build/assets/Users-422cc043.js index 17b4eff9..a0bf5170 100644 --- a/public/build/assets/Users-e4ea6e38.js +++ b/public/build/assets/Users-422cc043.js @@ -1 +1 @@ -import{_ as j}from"./AdminTabs-94ad3971.js";import{Q as N,b as S,a2 as T,r as k,v as $,o as I,J as E,a0 as R,e as p,f as u,g as m,m as n,h as t,p as h,t as i,j as B,i as r,E as O,F as W,G as M,U as F,n as y,l as A}from"./app-60af1d1a.js";import{S as Z}from"./Spinner-bfa27d3a.js";import{_ as q}from"./SearchBox-62743462.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const D={class:"options-tabs"},G={class:"title is-4 has-text-grey-light"},J={class:"is-size-7-mobile"},Q={class:"mb-6 mt-3"},H={class:"columns"},K={class:"column pb-0"},P={class:"level is-mobile mb-0"},X={class:"level-item has-text-centered is-justify-content-end"},Y={class:"subtitle is-7"},ee={class:"level-item has-text-centered is-justify-content-start"},se={class:"buttons"},te={key:0},ae={class:"has-ellipsis"},oe={class:"is-block has-ellipsis is-family-primary is-size-6 is-size-7-mobile has-text-grey"},ne={class:"tags mt-2"},ie={class:"ml-3"},le={key:1,class:"mt-4 pl-3"},he={__name:"Users",setup(re){const x=N("2fauth"),w=S(),z=T(x.prefix+"returnTo","accounts"),f=k([]),a=k(""),g=k(!1),C=$(()=>f.value.filter(e=>{let s=e.name.toLowerCase().includes(d.value.keywords)||e.email.toLowerCase().includes(d.value.keywords);return d.value.admin!=null&&(s=s&&e.is_admin==d.value.admin),d.value.oauth!=null&&(s=s&&e.oauth_provider==d.value.oauth),s})),d=$(()=>{const e={admin:void 0,oauth:void 0,keywords:a.value.toLowerCase()},s=a.value.toLowerCase().split(" "),c=/admin:([01])/,_=/oauth:([a-zA-Z0-9])/;return s.forEach(l=>{l.match(c)&&(e.admin=parseInt(l.replace(c,"$1")),e.keywords=e.keywords.replace(l,"").trim()),l.match(_)&&(e.oauth=l.replace(_,"$1"),e.keywords=e.keywords.replace(l,"").trim())}),e});I(()=>{L()});function b(e){const s=/admin:([01])/,c=/oauth:([a-zA-Z0-9]*)/;a.value.match(s)&&e.match(s)?a.value=a.value.replace(s,e):d.value.oauth!=null&&e.match(c)?a.value=a.value.replace(c,e):a.value=a.value?a.value+" "+e:e}function L(){g.value=!0,E.getAll({returnError:!0}).then(e=>{f.value=e.data}).catch(e=>{w.error(e)}).finally(()=>{g.value=!1})}return R(e=>{e.name.startsWith("admin.")||w.clear()}),(e,s)=>{const c=p("FontAwesomeIcon"),_=p("RouterLink"),l=p("ButtonBackCloseCancel"),U=p("VueFooter"),V=p("FormWrapper");return u(),m("div",null,[n(j,{activeTab:"admin.users"}),t("div",D,[n(V,null,{default:h(()=>[t("h4",G,i(e.$t("admin.users")),1),t("div",J,i(e.$t("admin.users_legend")),1),t("div",Q,[n(_,{class:"is-link mt-5",to:{name:"admin.createUser"}},{default:h(()=>[n(c,{icon:["fas","plus-circle"]}),B(" "+i(e.$t("admin.create_new_user")),1)]),_:1},8,["to"])]),t("div",H,[t("div",K,[n(q,{keyword:r(a),"onUpdate:keyword":s[0]||(s[0]=o=>O(a)?a.value=o:null),hasNoBackground:!0,placeholder:e.$t("admin.search_user_placeholder")},null,8,["keyword","placeholder"])])]),t("div",P,[t("div",X,[t("p",Y,i(e.$t("admin.quick_filters_colons")),1)]),t("div",ee,[t("div",se,[t("button",{class:"button is-small is-ghost p-0",onClick:s[1]||(s[1]=o=>b("admin:1"))},"admin"),t("button",{class:"button is-small is-ghost p-0",onClick:s[2]||(s[2]=o=>b("oauth:github"))},"github"),t("button",{class:"button is-small is-ghost p-0",onClick:s[3]||(s[3]=o=>b("oauth:openid"))},"openId")])])]),r(C).length>0?(u(),m("div",te,[(u(!0),m(W,null,M(r(C),o=>(u(),m("div",{key:o.id,class:"list-item is-size-5 is-size-6-mobile is-flex is-justify-content-space-between"},[t("div",ae,[t("span",null,i(o.name),1),t("span",oe,i(o.email),1),n(r(F),null,{default:h(({mode:v})=>[t("div",ne,[o.is_admin?(u(),m("span",{key:0,class:y(["tag is-rounded has-text-warning-dark",v=="dark"?"has-background-black-bis":"has-background-grey-lighter"])},"admin",2)):A("",!0),o.oauth_provider?(u(),m("span",{key:1,class:y(["tag is-rounded has-text-grey",v=="dark"?"has-background-black-bis":"has-background-grey-lighter"])},"oauth: "+i(o.oauth_provider),3)):A("",!0)])]),_:2},1024)]),t("div",ie,[n(r(F),null,{default:h(({mode:v})=>[n(_,{to:{name:"admin.manageUser",params:{userId:o.id}},class:y(["button is-small has-normal-radius is-pulled-right",{"is-dark":v=="dark"}]),title:e.$t("commons.manage")},{default:h(()=>[B(i(e.$t("commons.manage")),1)]),_:2},1032,["to","class","title"])]),_:2},1024)])]))),128))])):(u(),m("div",le,i(e.$t("commons.no_result")),1)),n(Z,{isVisible:r(g)&&r(f).length===0},null,8,["isVisible"]),n(U,{showButtons:!0},{default:h(()=>[n(l,{returnTo:{name:r(z)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})])])}}};export{he as default}; +import{_ as j}from"./AdminTabs-7af3858b.js";import{Q as N,b as S,a2 as T,r as k,v as $,o as I,J as E,a0 as R,e as p,f as u,g as m,m as n,h as t,p as h,t as i,j as B,i as r,E as O,F as W,G as M,U as F,n as y,l as A}from"./app-2d89b28f.js";import{S as Z}from"./Spinner-aea2b665.js";import{_ as q}from"./SearchBox-cb8625ff.js";/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const D={class:"options-tabs"},G={class:"title is-4 has-text-grey-light"},J={class:"is-size-7-mobile"},Q={class:"mb-6 mt-3"},H={class:"columns"},K={class:"column pb-0"},P={class:"level is-mobile mb-0"},X={class:"level-item has-text-centered is-justify-content-end"},Y={class:"subtitle is-7"},ee={class:"level-item has-text-centered is-justify-content-start"},se={class:"buttons"},te={key:0},ae={class:"has-ellipsis"},oe={class:"is-block has-ellipsis is-family-primary is-size-6 is-size-7-mobile has-text-grey"},ne={class:"tags mt-2"},ie={class:"ml-3"},le={key:1,class:"mt-4 pl-3"},he={__name:"Users",setup(re){const x=N("2fauth"),w=S(),z=T(x.prefix+"returnTo","accounts"),f=k([]),a=k(""),g=k(!1),C=$(()=>f.value.filter(e=>{let s=e.name.toLowerCase().includes(d.value.keywords)||e.email.toLowerCase().includes(d.value.keywords);return d.value.admin!=null&&(s=s&&e.is_admin==d.value.admin),d.value.oauth!=null&&(s=s&&e.oauth_provider==d.value.oauth),s})),d=$(()=>{const e={admin:void 0,oauth:void 0,keywords:a.value.toLowerCase()},s=a.value.toLowerCase().split(" "),c=/admin:([01])/,_=/oauth:([a-zA-Z0-9])/;return s.forEach(l=>{l.match(c)&&(e.admin=parseInt(l.replace(c,"$1")),e.keywords=e.keywords.replace(l,"").trim()),l.match(_)&&(e.oauth=l.replace(_,"$1"),e.keywords=e.keywords.replace(l,"").trim())}),e});I(()=>{L()});function b(e){const s=/admin:([01])/,c=/oauth:([a-zA-Z0-9]*)/;a.value.match(s)&&e.match(s)?a.value=a.value.replace(s,e):d.value.oauth!=null&&e.match(c)?a.value=a.value.replace(c,e):a.value=a.value?a.value+" "+e:e}function L(){g.value=!0,E.getAll({returnError:!0}).then(e=>{f.value=e.data}).catch(e=>{w.error(e)}).finally(()=>{g.value=!1})}return R(e=>{e.name.startsWith("admin.")||w.clear()}),(e,s)=>{const c=p("FontAwesomeIcon"),_=p("RouterLink"),l=p("ButtonBackCloseCancel"),U=p("VueFooter"),V=p("FormWrapper");return u(),m("div",null,[n(j,{activeTab:"admin.users"}),t("div",D,[n(V,null,{default:h(()=>[t("h4",G,i(e.$t("admin.users")),1),t("div",J,i(e.$t("admin.users_legend")),1),t("div",Q,[n(_,{class:"is-link mt-5",to:{name:"admin.createUser"}},{default:h(()=>[n(c,{icon:["fas","plus-circle"]}),B(" "+i(e.$t("admin.create_new_user")),1)]),_:1},8,["to"])]),t("div",H,[t("div",K,[n(q,{keyword:r(a),"onUpdate:keyword":s[0]||(s[0]=o=>O(a)?a.value=o:null),hasNoBackground:!0,placeholder:e.$t("admin.search_user_placeholder")},null,8,["keyword","placeholder"])])]),t("div",P,[t("div",X,[t("p",Y,i(e.$t("admin.quick_filters_colons")),1)]),t("div",ee,[t("div",se,[t("button",{class:"button is-small is-ghost p-0",onClick:s[1]||(s[1]=o=>b("admin:1"))},"admin"),t("button",{class:"button is-small is-ghost p-0",onClick:s[2]||(s[2]=o=>b("oauth:github"))},"github"),t("button",{class:"button is-small is-ghost p-0",onClick:s[3]||(s[3]=o=>b("oauth:openid"))},"openId")])])]),r(C).length>0?(u(),m("div",te,[(u(!0),m(W,null,M(r(C),o=>(u(),m("div",{key:o.id,class:"list-item is-size-5 is-size-6-mobile is-flex is-justify-content-space-between"},[t("div",ae,[t("span",null,i(o.name),1),t("span",oe,i(o.email),1),n(r(F),null,{default:h(({mode:v})=>[t("div",ne,[o.is_admin?(u(),m("span",{key:0,class:y(["tag is-rounded has-text-warning-dark",v=="dark"?"has-background-black-bis":"has-background-grey-lighter"])},"admin",2)):A("",!0),o.oauth_provider?(u(),m("span",{key:1,class:y(["tag is-rounded has-text-grey",v=="dark"?"has-background-black-bis":"has-background-grey-lighter"])},"oauth: "+i(o.oauth_provider),3)):A("",!0)])]),_:2},1024)]),t("div",ie,[n(r(F),null,{default:h(({mode:v})=>[n(_,{to:{name:"admin.manageUser",params:{userId:o.id}},class:y(["button is-small has-normal-radius is-pulled-right",{"is-dark":v=="dark"}]),title:e.$t("commons.manage")},{default:h(()=>[B(i(e.$t("commons.manage")),1)]),_:2},1032,["to","class","title"])]),_:2},1024)])]))),128))])):(u(),m("div",le,i(e.$t("commons.no_result")),1)),n(Z,{isVisible:r(g)&&r(f).length===0},null,8,["isVisible"]),n(U,{showButtons:!0},{default:h(()=>[n(l,{returnTo:{name:r(z)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})])])}}};export{he as default}; diff --git a/public/build/assets/WebAuthn-3d2e0d09.js b/public/build/assets/WebAuthn-ee78af22.js similarity index 94% rename from public/build/assets/WebAuthn-3d2e0d09.js rename to public/build/assets/WebAuthn-ee78af22.js index 57ea9530..b349ec30 100644 --- a/public/build/assets/WebAuthn-3d2e0d09.js +++ b/public/build/assets/WebAuthn-ee78af22.js @@ -1 +1 @@ -import{Q as z,a as U,b as L,u as M,a2 as A,r as b,o as D,x as I,J as v,a0 as K,e as h,f as d,g as _,m as o,h as s,p as g,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 J,I as r}from"./app-60af1d1a.js";import{_ as G}from"./SettingTabs-0b59e581.js";import{w as P}from"./webauthnService-1f4ca5dc.js";import{S as Q}from"./Spinner-bfa27d3a.js";/*! 2FAuth version 5.1.0 - 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"},_e={__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,()=>{v.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;P.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"))&&v.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,v.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:g(()=>[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:g(({mode:O})=>[s("button",{class:J(["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("auth.webauthn.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:g(()=>[o(S,{returnTo:{name:t($)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})])])}}};export{_e as default}; +import{Q as z,a as U,b as L,u as M,a2 as A,r as b,o as D,x as I,J as v,a0 as K,e as h,f as d,g as _,m as o,h as s,p as g,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 J,I as r}from"./app-2d89b28f.js";import{_ as G}from"./SettingTabs-708dbaa6.js";import{w as P}from"./webauthnService-43ef310f.js";import{S as Q}from"./Spinner-aea2b665.js";/*! 2FAuth version 5.1.1 - 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"},_e={__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,()=>{v.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;P.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"))&&v.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,v.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:g(()=>[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:g(({mode:O})=>[s("button",{class:J(["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("auth.webauthn.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:g(()=>[o(S,{returnTo:{name:t($)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})])])}}};export{_e as default}; diff --git a/public/build/assets/app-60af1d1a.js b/public/build/assets/app-2d89b28f.js similarity index 97% rename from public/build/assets/app-60af1d1a.js rename to public/build/assets/app-2d89b28f.js index 30c40705..3febfc78 100644 --- a/public/build/assets/app-60af1d1a.js +++ b/public/build/assets/app-2d89b28f.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const gd="modulepreload",vd=function(e,t){return new URL(e,t).href},Co={},te=function(t,n,r){if(!n||n.length===0)return t();const s=document.getElementsByTagName("link");return Promise.all(n.map(a=>{if(a=vd(a,r),a in Co)return;Co[a]=!0;const i=a.endsWith(".css"),o=i?'[rel="stylesheet"]':"";if(!!r)for(let u=s.length-1;u>=0;u--){const f=s[u];if(f.href===a&&(!i||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${a}"]${o}`))return;const c=document.createElement("link");if(c.rel=i?"stylesheet":gd,i||(c.as="script",c.crossOrigin=""),c.href=a,document.head.appendChild(c),i)return new Promise((u,f)=>{c.addEventListener("load",u),c.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${a}`)))})})).then(()=>t()).catch(a=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=a,window.dispatchEvent(i),!i.defaultPrevented)throw a})};function ki(e,t){const n=Object.create(null),r=e.split(",");for(let s=0;s!!n[s.toLowerCase()]:s=>!!n[s]}const _e={},Fn=[],vt=()=>{},yd=()=>!1,bd=/^on[^a-z]/,Ks=e=>bd.test(e),Ai=e=>e.startsWith("onUpdate:"),Te=Object.assign,Si=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},wd=Object.prototype.hasOwnProperty,le=(e,t)=>wd.call(e,t),W=Array.isArray,Hn=e=>Br(e)==="[object Map]",Gn=e=>Br(e)==="[object Set]",Oo=e=>Br(e)==="[object Date]",re=e=>typeof e=="function",Le=e=>typeof e=="string",Er=e=>typeof e=="symbol",ye=e=>e!==null&&typeof e=="object",xc=e=>ye(e)&&re(e.then)&&re(e.catch),kc=Object.prototype.toString,Br=e=>kc.call(e),_d=e=>Br(e).slice(8,-1),Ac=e=>Br(e)==="[object Object]",Ci=e=>Le(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ws=ki(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ws=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ed=/-(\w)/g,St=Ws(e=>e.replace(Ed,(t,n)=>n?n.toUpperCase():"")),xd=/\B([A-Z])/g,En=Ws(e=>e.replace(xd,"-$1").toLowerCase()),qs=Ws(e=>e.charAt(0).toUpperCase()+e.slice(1)),ba=Ws(e=>e?`on${qs(e)}`:""),xr=(e,t)=>!Object.is(e,t),_s=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Sc=e=>{const t=parseFloat(e);return isNaN(t)?e:t},kd=e=>{const t=Le(e)?Number(e):NaN;return isNaN(t)?e:t};let To;const Ua=()=>To||(To=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function tn(e){if(W(e)){const t={};for(let n=0;n{if(n){const r=n.split(Sd);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function xe(e){let t="";if(Le(e))t=e;else if(W(e))for(let n=0;njr(n,t))}const Ae=e=>Le(e)?e:e==null?"":W(e)||ye(e)&&(e.toString===kc||!re(e.toString))?JSON.stringify(e,Oc,2):String(e),Oc=(e,t)=>t&&t.__v_isRef?Oc(e,t.value):Hn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s])=>(n[`${r} =>`]=s,n),{})}:Gn(t)?{[`Set(${t.size})`]:[...t.values()]}:ye(t)&&!W(t)&&!Ac(t)?String(t):t;let rt;class Tc{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=rt,!t&&rt&&(this.index=(rt.scopes||(rt.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=rt;try{return rt=this,t()}finally{rt=n}}}on(){rt=this}off(){rt=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Rc=e=>(e.w&nn)>0,Mc=e=>(e.n&nn)>0,Md=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(u==="length"||u>=l)&&o.push(c)})}else switch(n!==void 0&&o.push(i.get(n)),t){case"add":W(e)?Ci(n)&&o.push(i.get("length")):(o.push(i.get(yn)),Hn(e)&&o.push(i.get(Wa)));break;case"delete":W(e)||(o.push(i.get(yn)),Hn(e)&&o.push(i.get(Wa)));break;case"set":Hn(e)&&o.push(i.get(yn));break}if(o.length===1)o[0]&&qa(o[0]);else{const l=[];for(const c of o)c&&l.push(...c);qa(Li(l))}}function qa(e,t){const n=W(e)?e:[...e];for(const r of n)r.computed&&Po(r);for(const r of n)r.computed||Po(r)}function Po(e,t){(e!==mt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function Id(e,t){var n;return(n=Ps.get(e))==null?void 0:n.get(t)}const $d=ki("__proto__,__v_isRef,__isVue"),$c=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Er)),Fd=Ri(),Hd=Ri(!1,!0),Dd=Ri(!0),Ro=zd();function zd(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=oe(this);for(let a=0,i=this.length;a{e[t]=function(...n){Jn();const r=oe(this)[t].apply(this,n);return Xn(),r}}),e}function Bd(e){const t=oe(this);return tt(t,"has",e),t.hasOwnProperty(e)}function Ri(e=!1,t=!1){return function(r,s,a){if(s==="__v_isReactive")return!e;if(s==="__v_isReadonly")return e;if(s==="__v_isShallow")return t;if(s==="__v_raw"&&a===(e?t?rp:Bc:t?zc:Dc).get(r))return r;const i=W(r);if(!e){if(i&&le(Ro,s))return Reflect.get(Ro,s,a);if(s==="hasOwnProperty")return Bd}const o=Reflect.get(r,s,a);return(Er(s)?$c.has(s):$d(s))||(e||tt(r,"get",s),t)?o:Se(o)?i&&Ci(s)?o:o.value:ye(o)?e?Qn(o):Nt(o):o}}const jd=Fc(),Vd=Fc(!0);function Fc(e=!1){return function(n,r,s,a){let i=n[r];if(Bn(i)&&Se(i)&&!Se(s))return!1;if(!e&&(!Rs(s)&&!Bn(s)&&(i=oe(i),s=oe(s)),!W(n)&&Se(i)&&!Se(s)))return i.value=s,!0;const o=W(n)&&Ci(r)?Number(r)e,Ys=e=>Reflect.getPrototypeOf(e);function Xr(e,t,n=!1,r=!1){e=e.__v_raw;const s=oe(e),a=oe(t);n||(t!==a&&tt(s,"get",t),tt(s,"get",a));const{has:i}=Ys(s),o=r?Mi:n?$i:kr;if(i.call(s,t))return o(e.get(t));if(i.call(s,a))return o(e.get(a));e!==s&&e.get(t)}function Qr(e,t=!1){const n=this.__v_raw,r=oe(n),s=oe(e);return t||(e!==s&&tt(r,"has",e),tt(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Zr(e,t=!1){return e=e.__v_raw,!t&&tt(oe(e),"iterate",yn),Reflect.get(e,"size",e)}function Mo(e){e=oe(e);const t=oe(this);return Ys(t).has.call(t,e)||(t.add(e),$t(t,"add",e,e)),this}function No(e,t){t=oe(t);const n=oe(this),{has:r,get:s}=Ys(n);let a=r.call(n,e);a||(e=oe(e),a=r.call(n,e));const i=s.call(n,e);return n.set(e,t),a?xr(t,i)&&$t(n,"set",e,t):$t(n,"add",e,t),this}function Io(e){const t=oe(this),{has:n,get:r}=Ys(t);let s=n.call(t,e);s||(e=oe(e),s=n.call(t,e)),r&&r.call(t,e);const a=t.delete(e);return s&&$t(t,"delete",e,void 0),a}function $o(){const e=oe(this),t=e.size!==0,n=e.clear();return t&&$t(e,"clear",void 0,void 0),n}function es(e,t){return function(r,s){const a=this,i=a.__v_raw,o=oe(i),l=t?Mi:e?$i:kr;return!e&&tt(o,"iterate",yn),i.forEach((c,u)=>r.call(s,l(c),l(u),a))}}function ts(e,t,n){return function(...r){const s=this.__v_raw,a=oe(s),i=Hn(a),o=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,c=s[e](...r),u=n?Mi:t?$i:kr;return!t&&tt(a,"iterate",l?Wa:yn),{next(){const{value:f,done:d}=c.next();return d?{value:f,done:d}:{value:o?[u(f[0]),u(f[1])]:u(f),done:d}},[Symbol.iterator](){return this}}}}function Vt(e){return function(...t){return e==="delete"?!1:this}}function Gd(){const e={get(a){return Xr(this,a)},get size(){return Zr(this)},has:Qr,add:Mo,set:No,delete:Io,clear:$o,forEach:es(!1,!1)},t={get(a){return Xr(this,a,!1,!0)},get size(){return Zr(this)},has:Qr,add:Mo,set:No,delete:Io,clear:$o,forEach:es(!1,!0)},n={get(a){return Xr(this,a,!0)},get size(){return Zr(this,!0)},has(a){return Qr.call(this,a,!0)},add:Vt("add"),set:Vt("set"),delete:Vt("delete"),clear:Vt("clear"),forEach:es(!0,!1)},r={get(a){return Xr(this,a,!0,!0)},get size(){return Zr(this,!0)},has(a){return Qr.call(this,a,!0)},add:Vt("add"),set:Vt("set"),delete:Vt("delete"),clear:Vt("clear"),forEach:es(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(a=>{e[a]=ts(a,!1,!1),n[a]=ts(a,!0,!1),t[a]=ts(a,!1,!0),r[a]=ts(a,!0,!0)}),[e,n,t,r]}const[Jd,Xd,Qd,Zd]=Gd();function Ni(e,t){const n=t?e?Zd:Qd:e?Xd:Jd;return(r,s,a)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(le(n,s)&&s in r?n:r,s,a)}const ep={get:Ni(!1,!1)},tp={get:Ni(!1,!0)},np={get:Ni(!0,!1)},Dc=new WeakMap,zc=new WeakMap,Bc=new WeakMap,rp=new WeakMap;function sp(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ap(e){return e.__v_skip||!Object.isExtensible(e)?0:sp(_d(e))}function Nt(e){return Bn(e)?e:Ii(e,!1,Hc,ep,Dc)}function jc(e){return Ii(e,!1,Yd,tp,zc)}function Qn(e){return Ii(e,!0,qd,np,Bc)}function Ii(e,t,n,r,s){if(!ye(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=s.get(e);if(a)return a;const i=ap(e);if(i===0)return e;const o=new Proxy(e,i===2?r:n);return s.set(e,o),o}function Zt(e){return Bn(e)?Zt(e.__v_raw):!!(e&&e.__v_isReactive)}function Bn(e){return!!(e&&e.__v_isReadonly)}function Rs(e){return!!(e&&e.__v_isShallow)}function Vc(e){return Zt(e)||Bn(e)}function oe(e){const t=e&&e.__v_raw;return t?oe(t):e}function Gs(e){return Ls(e,"__v_skip",!0),e}const kr=e=>ye(e)?Nt(e):e,$i=e=>ye(e)?Qn(e):e;function Fi(e){Qt&&mt&&(e=oe(e),Ic(e.dep||(e.dep=Li())))}function Hi(e,t){e=oe(e);const n=e.dep;n&&qa(n)}function Se(e){return!!(e&&e.__v_isRef===!0)}function ge(e){return Uc(e,!1)}function Di(e){return Uc(e,!0)}function Uc(e,t){return Se(e)?e:new ip(e,t)}class ip{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:oe(t),this._value=n?t:kr(t)}get value(){return Fi(this),this._value}set value(t){const n=this.__v_isShallow||Rs(t)||Bn(t);t=n?t:oe(t),xr(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:kr(t),Hi(this))}}function se(e){return Se(e)?e.value:e}const op={get:(e,t,n)=>se(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return Se(s)&&!Se(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Kc(e){return Zt(e)?e:new Proxy(e,op)}class lp{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Fi(this),()=>Hi(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function cp(e){return new lp(e)}function up(e){const t=W(e)?new Array(e.length):{};for(const n in e)t[n]=Wc(e,n);return t}class fp{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Id(oe(this._object),this._key)}}class dp{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function pp(e,t,n){return Se(e)?e:re(e)?new dp(e):ye(e)&&arguments.length>1?Wc(e,t,n):ge(e)}function Wc(e,t,n){const r=e[t];return Se(r)?r:new fp(e,t,n)}class mp{constructor(t,n,r,s){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new Pi(t,()=>{this._dirty||(this._dirty=!0,Hi(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=oe(this);return Fi(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function hp(e,t,n=!1){let r,s;const a=re(e);return a?(r=e,s=vt):(r=e.get,s=e.set),new mp(r,s,a||!s,n)}function en(e,t,n,r){let s;try{s=r?e(...r):e()}catch(a){Js(a,t,n)}return s}function lt(e,t,n,r){if(re(e)){const a=en(e,t,n,r);return a&&xc(a)&&a.catch(i=>{Js(i,t,n)}),a}const s=[];for(let a=0;a>>1;Sr(qe[r])Et&&qe.splice(t,1)}function bp(e){W(e)?Dn.push(...e):(!Rt||!Rt.includes(e,e.allowRecurse?dn+1:dn))&&Dn.push(e),Yc()}function Fo(e,t=Ar?Et+1:0){for(;tSr(n)-Sr(r)),dn=0;dne.id==null?1/0:e.id,wp=(e,t)=>{const n=Sr(e)-Sr(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Jc(e){Ya=!1,Ar=!0,qe.sort(wp);const t=vt;try{for(Et=0;EtLe(m)?m.trim():m)),f&&(s=n.map(Sc))}let o,l=r[o=ba(t)]||r[o=ba(St(t))];!l&&a&&(l=r[o=ba(En(t))]),l&<(l,e,6,s);const c=r[o+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[o])return;e.emitted[o]=!0,lt(c,e,6,s)}}function Xc(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const a=e.emits;let i={},o=!1;if(!re(e)){const l=c=>{const u=Xc(c,t,!0);u&&(o=!0,Te(i,u))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!a&&!o?(ye(e)&&r.set(e,null),null):(W(a)?a.forEach(l=>i[l]=null):Te(i,a),ye(e)&&r.set(e,i),i)}function Xs(e,t){return!e||!Ks(t)?!1:(t=t.slice(2).replace(/Once$/,""),le(e,t[0].toLowerCase()+t.slice(1))||le(e,En(t))||le(e,t))}let De=null,Qc=null;function Ms(e){const t=De;return De=e,Qc=e&&e.type.__scopeId||null,t}function Ye(e,t=De,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&Go(-1);const a=Ms(t);let i;try{i=e(...s)}finally{Ms(a),r._d&&Go(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function wa(e){const{type:t,vnode:n,proxy:r,withProxy:s,props:a,propsOptions:[i],slots:o,attrs:l,emit:c,render:u,renderCache:f,data:d,setupState:m,ctx:g,inheritAttrs:v}=e;let S,b;const _=Ms(e);try{if(n.shapeFlag&4){const x=s||r;S=_t(u.call(x,x,f,a,m,d,g)),b=l}else{const x=t;S=_t(x.length>1?x(a,{attrs:l,slots:o,emit:c}):x(a,null)),b=t.props?l:Ep(l)}}catch(x){gr.length=0,Js(x,e,1),S=pe(ct)}let P=S;if(b&&v!==!1){const x=Object.keys(b),{shapeFlag:F}=P;x.length&&F&7&&(i&&x.some(Ai)&&(b=xp(b,i)),P=rn(P,b))}return n.dirs&&(P=rn(P),P.dirs=P.dirs?P.dirs.concat(n.dirs):n.dirs),n.transition&&(P.transition=n.transition),S=P,Ms(_),S}const Ep=e=>{let t;for(const n in e)(n==="class"||n==="style"||Ks(n))&&((t||(t={}))[n]=e[n]);return t},xp=(e,t)=>{const n={};for(const r in e)(!Ai(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function kp(e,t,n){const{props:r,children:s,component:a}=e,{props:i,children:o,patchFlag:l}=t,c=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?Ho(r,i,c):!!i;if(l&8){const u=t.dynamicProps;for(let f=0;fe.__isSuspense;function Cp(e,t){t&&t.pendingBranch?W(e)?t.effects.push(...e):t.effects.push(e):bp(e)}function ji(e,t){return Vi(e,null,t)}const ns={};function ze(e,t,n){return Vi(e,t,n)}function Vi(e,t,{immediate:n,deep:r,flush:s,onTrack:a,onTrigger:i}=_e){var o;const l=Ti()===((o=Ie)==null?void 0:o.scope)?Ie:null;let c,u=!1,f=!1;if(Se(e)?(c=()=>e.value,u=Rs(e)):Zt(e)?(c=()=>e,r=!0):W(e)?(f=!0,u=e.some(x=>Zt(x)||Rs(x)),c=()=>e.map(x=>{if(Se(x))return x.value;if(Zt(x))return hn(x);if(re(x))return en(x,l,2)})):re(e)?t?c=()=>en(e,l,2):c=()=>{if(!(l&&l.isUnmounted))return d&&d(),lt(e,l,3,[m])}:c=vt,t&&r){const x=c;c=()=>hn(x())}let d,m=x=>{d=_.onStop=()=>{en(x,l,4)}},g;if(Pr)if(m=vt,t?n&<(t,l,3,[c(),f?[]:void 0,m]):c(),s==="sync"){const x=gm();g=x.__watcherHandles||(x.__watcherHandles=[])}else return vt;let v=f?new Array(e.length).fill(ns):ns;const S=()=>{if(_.active)if(t){const x=_.run();(r||u||(f?x.some((F,Z)=>xr(F,v[Z])):xr(x,v)))&&(d&&d(),lt(t,l,3,[x,v===ns?void 0:f&&v[0]===ns?[]:v,m]),v=x)}else _.run()};S.allowRecurse=!!t;let b;s==="sync"?b=S:s==="post"?b=()=>Qe(S,l&&l.suspense):(S.pre=!0,l&&(S.id=l.uid),b=()=>Bi(S));const _=new Pi(c,b);t?n?S():v=_.run():s==="post"?Qe(_.run.bind(_),l&&l.suspense):_.run();const P=()=>{_.stop(),l&&l.scope&&Si(l.scope.effects,_)};return g&&g.push(P),P}function Op(e,t,n){const r=this.proxy,s=Le(e)?e.includes(".")?Zc(r,e):()=>r[e]:e.bind(r,r);let a;re(t)?a=t:(a=t.handler,n=t);const i=Ie;jn(this);const o=Vi(s,a.bind(r),n);return i?jn(i):bn(),o}function Zc(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s{hn(n,t)});else if(Ac(e))for(const n in e)hn(e[n],t);return e}function eu(e,t){const n=De;if(n===null)return e;const r=ra(n)||n.proxy,s=e.dirs||(e.dirs=[]);for(let a=0;a{e.isMounted=!0}),cu(()=>{e.isUnmounting=!0}),e}const ot=[Function,Array],nu={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ot,onEnter:ot,onAfterEnter:ot,onEnterCancelled:ot,onBeforeLeave:ot,onLeave:ot,onAfterLeave:ot,onLeaveCancelled:ot,onBeforeAppear:ot,onAppear:ot,onAfterAppear:ot,onAppearCancelled:ot},Tp={name:"BaseTransition",props:nu,setup(e,{slots:t}){const n=er(),r=tu();let s;return()=>{const a=t.default&&Ui(t.default(),!0);if(!a||!a.length)return;let i=a[0];if(a.length>1){for(const v of a)if(v.type!==ct){i=v;break}}const o=oe(e),{mode:l}=o;if(r.isLeaving)return _a(i);const c=Do(i);if(!c)return _a(i);const u=Cr(c,o,r,n);Or(c,u);const f=n.subTree,d=f&&Do(f);let m=!1;const{getTransitionKey:g}=c.type;if(g){const v=g();s===void 0?s=v:v!==s&&(s=v,m=!0)}if(d&&d.type!==ct&&(!pn(c,d)||m)){const v=Cr(d,o,r,n);if(Or(d,v),l==="out-in")return r.isLeaving=!0,v.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},_a(i);l==="in-out"&&c.type!==ct&&(v.delayLeave=(S,b,_)=>{const P=ru(r,d);P[String(d.key)]=d,S._leaveCb=()=>{b(),S._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=_})}return i}}},Lp=Tp;function ru(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Cr(e,t,n,r){const{appear:s,mode:a,persisted:i=!1,onBeforeEnter:o,onEnter:l,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:f,onLeave:d,onAfterLeave:m,onLeaveCancelled:g,onBeforeAppear:v,onAppear:S,onAfterAppear:b,onAppearCancelled:_}=t,P=String(e.key),x=ru(n,e),F=(w,O)=>{w&<(w,r,9,O)},Z=(w,O)=>{const H=O[1];F(w,O),W(w)?w.every(R=>R.length<=1)&&H():w.length<=1&&H()},q={mode:a,persisted:i,beforeEnter(w){let O=o;if(!n.isMounted)if(s)O=v||o;else return;w._leaveCb&&w._leaveCb(!0);const H=x[P];H&&pn(e,H)&&H.el._leaveCb&&H.el._leaveCb(),F(O,[w])},enter(w){let O=l,H=c,R=u;if(!n.isMounted)if(s)O=S||l,H=b||c,R=_||u;else return;let N=!1;const V=w._enterCb=be=>{N||(N=!0,be?F(R,[w]):F(H,[w]),q.delayedLeave&&q.delayedLeave(),w._enterCb=void 0)};O?Z(O,[w,V]):V()},leave(w,O){const H=String(e.key);if(w._enterCb&&w._enterCb(!0),n.isUnmounting)return O();F(f,[w]);let R=!1;const N=w._leaveCb=V=>{R||(R=!0,O(),V?F(g,[w]):F(m,[w]),w._leaveCb=void 0,x[H]===e&&delete x[H])};x[H]=e,d?Z(d,[w,N]):N()},clone(w){return Cr(w,t,n,r)}};return q}function _a(e){if(Qs(e))return e=rn(e),e.children=null,e}function Do(e){return Qs(e)?e.children?e.children[0]:void 0:e}function Or(e,t){e.shapeFlag&6&&e.component?Or(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ui(e,t=!1,n){let r=[],s=0;for(let a=0;a1)for(let a=0;aTe({name:e.name},t,{setup:e}))():e}const mr=e=>!!e.type.__asyncLoader,Qs=e=>e.type.__isKeepAlive;function su(e,t){iu(e,"a",t)}function au(e,t){iu(e,"da",t)}function iu(e,t,n=Ie){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Zs(t,r,n),n){let s=n.parent;for(;s&&s.parent;)Qs(s.parent.vnode)&&Pp(r,t,n,s),s=s.parent}}function Pp(e,t,n,r){const s=Zs(t,e,r,!0);ea(()=>{Si(r[t],s)},n)}function Zs(e,t,n=Ie,r=!1){if(n){const s=n[e]||(n[e]=[]),a=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;Jn(),jn(n);const o=lt(t,n,e,i);return bn(),Xn(),o});return r?s.unshift(a):s.push(a),a}}const zt=e=>(t,n=Ie)=>(!Pr||e==="sp")&&Zs(e,(...r)=>t(...r),n),ou=zt("bm"),kn=zt("m"),Rp=zt("bu"),lu=zt("u"),cu=zt("bum"),ea=zt("um"),Mp=zt("sp"),Np=zt("rtg"),Ip=zt("rtc");function $p(e,t=Ie){Zs("ec",e,t)}const Ki="components";function je(e,t){return fu(Ki,e,!0,t)||e}const uu=Symbol.for("v-ndc");function Fp(e){return Le(e)?fu(Ki,e,!1)||e:e||uu}function fu(e,t,n=!0,r=!1){const s=De||Ie;if(s){const a=s.type;if(e===Ki){const o=pm(a,!1);if(o&&(o===t||o===St(t)||o===qs(St(t))))return a}const i=zo(s[e]||a[e],t)||zo(s.appContext[e],t);return!i&&r?a:i}}function zo(e,t){return e&&(e[t]||e[St(t)]||e[qs(St(t))])}function Wi(e,t,n,r){let s;const a=n&&n[r];if(W(e)||Le(e)){s=new Array(e.length);for(let i=0,o=e.length;it(i,o,void 0,a&&a[o]));else{const i=Object.keys(e);s=new Array(i.length);for(let o=0,l=i.length;oIs(t)?!(t.type===ct||t.type===Ne&&!du(t.children)):!0)?e:null}const Ga=e=>e?xu(e)?ra(e)||e.proxy:Ga(e.parent):null,hr=Te(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ga(e.parent),$root:e=>Ga(e.root),$emit:e=>e.emit,$options:e=>qi(e),$forceUpdate:e=>e.f||(e.f=()=>Bi(e.update)),$nextTick:e=>e.n||(e.n=Zn.bind(e.proxy)),$watch:e=>Op.bind(e)}),Ea=(e,t)=>e!==_e&&!e.__isScriptSetup&&le(e,t),Hp={get({_:e},t){const{ctx:n,setupState:r,data:s,props:a,accessCache:i,type:o,appContext:l}=e;let c;if(t[0]!=="$"){const m=i[t];if(m!==void 0)switch(m){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return a[t]}else{if(Ea(r,t))return i[t]=1,r[t];if(s!==_e&&le(s,t))return i[t]=2,s[t];if((c=e.propsOptions[0])&&le(c,t))return i[t]=3,a[t];if(n!==_e&&le(n,t))return i[t]=4,n[t];Ja&&(i[t]=0)}}const u=hr[t];let f,d;if(u)return t==="$attrs"&&tt(e,"get",t),u(e);if((f=o.__cssModules)&&(f=f[t]))return f;if(n!==_e&&le(n,t))return i[t]=4,n[t];if(d=l.config.globalProperties,le(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:a}=e;return Ea(s,t)?(s[t]=n,!0):r!==_e&&le(r,t)?(r[t]=n,!0):le(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(a[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:a}},i){let o;return!!n[i]||e!==_e&&le(e,i)||Ea(t,i)||(o=a[0])&&le(o,i)||le(r,i)||le(hr,i)||le(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:le(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Dp(){return zp().attrs}function zp(){const e=er();return e.setupContext||(e.setupContext=Au(e))}function Bo(e){return W(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Ja=!0;function Bp(e){const t=qi(e),n=e.proxy,r=e.ctx;Ja=!1,t.beforeCreate&&jo(t.beforeCreate,e,"bc");const{data:s,computed:a,methods:i,watch:o,provide:l,inject:c,created:u,beforeMount:f,mounted:d,beforeUpdate:m,updated:g,activated:v,deactivated:S,beforeDestroy:b,beforeUnmount:_,destroyed:P,unmounted:x,render:F,renderTracked:Z,renderTriggered:q,errorCaptured:w,serverPrefetch:O,expose:H,inheritAttrs:R,components:N,directives:V,filters:be}=t;if(c&&jp(c,r,null),i)for(const me in i){const ue=i[me];re(ue)&&(r[me]=ue.bind(n))}if(s){const me=s.call(n,n);ye(me)&&(e.data=Nt(me))}if(Ja=!0,a)for(const me in a){const ue=a[me],dt=re(ue)?ue.bind(n,n):re(ue.get)?ue.get.bind(n,n):vt,Ve=!re(ue)&&re(ue.set)?ue.set.bind(n):vt,it=ne({get:dt,set:Ve});Object.defineProperty(r,me,{enumerable:!0,configurable:!0,get:()=>it.value,set:Re=>it.value=Re})}if(o)for(const me in o)pu(o[me],r,n,me);if(l){const me=re(l)?l.call(n):l;Reflect.ownKeys(me).forEach(ue=>{Es(ue,me[ue])})}u&&jo(u,e,"c");function ae(me,ue){W(ue)?ue.forEach(dt=>me(dt.bind(n))):ue&&me(ue.bind(n))}if(ae(ou,f),ae(kn,d),ae(Rp,m),ae(lu,g),ae(su,v),ae(au,S),ae($p,w),ae(Ip,Z),ae(Np,q),ae(cu,_),ae(ea,x),ae(Mp,O),W(H))if(H.length){const me=e.exposed||(e.exposed={});H.forEach(ue=>{Object.defineProperty(me,ue,{get:()=>n[ue],set:dt=>n[ue]=dt})})}else e.exposed||(e.exposed={});F&&e.render===vt&&(e.render=F),R!=null&&(e.inheritAttrs=R),N&&(e.components=N),V&&(e.directives=V)}function jp(e,t,n=vt){W(e)&&(e=Xa(e));for(const r in e){const s=e[r];let a;ye(s)?"default"in s?a=et(s.from||r,s.default,!0):a=et(s.from||r):a=et(s),Se(a)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>a.value,set:i=>a.value=i}):t[r]=a}}function jo(e,t,n){lt(W(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function pu(e,t,n,r){const s=r.includes(".")?Zc(n,r):()=>n[r];if(Le(e)){const a=t[e];re(a)&&ze(s,a)}else if(re(e))ze(s,e.bind(n));else if(ye(e))if(W(e))e.forEach(a=>pu(a,t,n,r));else{const a=re(e.handler)?e.handler.bind(n):t[e.handler];re(a)&&ze(s,a,e)}}function qi(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:a,config:{optionMergeStrategies:i}}=e.appContext,o=a.get(t);let l;return o?l=o:!s.length&&!n&&!r?l=t:(l={},s.length&&s.forEach(c=>Ns(l,c,i,!0)),Ns(l,t,i)),ye(t)&&a.set(t,l),l}function Ns(e,t,n,r=!1){const{mixins:s,extends:a}=t;a&&Ns(e,a,n,!0),s&&s.forEach(i=>Ns(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const o=Vp[i]||n&&n[i];e[i]=o?o(e[i],t[i]):t[i]}return e}const Vp={data:Vo,props:Uo,emits:Uo,methods:dr,computed:dr,beforeCreate:Ge,created:Ge,beforeMount:Ge,mounted:Ge,beforeUpdate:Ge,updated:Ge,beforeDestroy:Ge,beforeUnmount:Ge,destroyed:Ge,unmounted:Ge,activated:Ge,deactivated:Ge,errorCaptured:Ge,serverPrefetch:Ge,components:dr,directives:dr,watch:Kp,provide:Vo,inject:Up};function Vo(e,t){return t?e?function(){return Te(re(e)?e.call(this,this):e,re(t)?t.call(this,this):t)}:t:e}function Up(e,t){return dr(Xa(e),Xa(t))}function Xa(e){if(W(e)){const t={};for(let n=0;n1)return n&&re(t)?t.call(r&&r.proxy):t}}function Yp(){return!!(Ie||De||Tr)}function Gp(e,t,n,r=!1){const s={},a={};Ls(a,na,1),e.propsDefaults=Object.create(null),hu(e,t,s,a);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:jc(s):e.type.props?e.props=s:e.props=a,e.attrs=a}function Jp(e,t,n,r){const{props:s,attrs:a,vnode:{patchFlag:i}}=e,o=oe(s),[l]=e.propsOptions;let c=!1;if((r||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let f=0;f{l=!0;const[d,m]=gu(f,t,!0);Te(i,d),m&&o.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!a&&!l)return ye(e)&&r.set(e,Fn),Fn;if(W(a))for(let u=0;u-1,m[1]=v<0||g-1||le(m,"default"))&&o.push(f)}}}const c=[i,o];return ye(e)&&r.set(e,c),c}function Ko(e){return e[0]!=="$"}function Wo(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function qo(e,t){return Wo(e)===Wo(t)}function Yo(e,t){return W(t)?t.findIndex(n=>qo(n,e)):re(t)&&qo(t,e)?0:-1}const vu=e=>e[0]==="_"||e==="$stable",Yi=e=>W(e)?e.map(_t):[_t(e)],Xp=(e,t,n)=>{if(t._n)return t;const r=Ye((...s)=>Yi(t(...s)),n);return r._c=!1,r},yu=(e,t,n)=>{const r=e._ctx;for(const s in e){if(vu(s))continue;const a=e[s];if(re(a))t[s]=Xp(s,a,r);else if(a!=null){const i=Yi(a);t[s]=()=>i}}},bu=(e,t)=>{const n=Yi(t);e.slots.default=()=>n},Qp=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=oe(t),Ls(t,"_",n)):yu(t,e.slots={})}else e.slots={},t&&bu(e,t);Ls(e.slots,na,1)},Zp=(e,t,n)=>{const{vnode:r,slots:s}=e;let a=!0,i=_e;if(r.shapeFlag&32){const o=t._;o?n&&o===1?a=!1:(Te(s,t),!n&&o===1&&delete s._):(a=!t.$stable,yu(t,s)),i=t}else t&&(bu(e,t),i={default:1});if(a)for(const o in s)!vu(o)&&!(o in i)&&delete s[o]};function Za(e,t,n,r,s=!1){if(W(e)){e.forEach((d,m)=>Za(d,t&&(W(t)?t[m]:t),n,r,s));return}if(mr(r)&&!s)return;const a=r.shapeFlag&4?ra(r.component)||r.component.proxy:r.el,i=s?null:a,{i:o,r:l}=e,c=t&&t.r,u=o.refs===_e?o.refs={}:o.refs,f=o.setupState;if(c!=null&&c!==l&&(Le(c)?(u[c]=null,le(f,c)&&(f[c]=null)):Se(c)&&(c.value=null)),re(l))en(l,o,12,[i,u]);else{const d=Le(l),m=Se(l);if(d||m){const g=()=>{if(e.f){const v=d?le(f,l)?f[l]:u[l]:l.value;s?W(v)&&Si(v,a):W(v)?v.includes(a)||v.push(a):d?(u[l]=[a],le(f,l)&&(f[l]=u[l])):(l.value=[a],e.k&&(u[e.k]=l.value))}else d?(u[l]=i,le(f,l)&&(f[l]=i)):m&&(l.value=i,e.k&&(u[e.k]=i))};i?(g.id=-1,Qe(g,n)):g()}}}const Qe=Cp;function em(e){return tm(e)}function tm(e,t){const n=Ua();n.__VUE__=!0;const{insert:r,remove:s,patchProp:a,createElement:i,createText:o,createComment:l,setText:c,setElementText:u,parentNode:f,nextSibling:d,setScopeId:m=vt,insertStaticContent:g}=e,v=(p,h,y,E=null,C=null,T=null,z=!1,M=null,I=!!h.dynamicChildren)=>{if(p===h)return;p&&!pn(p,h)&&(E=A(p),Re(p,C,T,!0),p=null),h.patchFlag===-2&&(I=!1,h.dynamicChildren=null);const{type:L,ref:J,shapeFlag:U}=h;switch(L){case ta:S(p,h,y,E);break;case ct:b(p,h,y,E);break;case xa:p==null&&_(h,y,E,z);break;case Ne:N(p,h,y,E,C,T,z,M,I);break;default:U&1?F(p,h,y,E,C,T,z,M,I):U&6?V(p,h,y,E,C,T,z,M,I):(U&64||U&128)&&L.process(p,h,y,E,C,T,z,M,I,$)}J!=null&&C&&Za(J,p&&p.ref,T,h||p,!h)},S=(p,h,y,E)=>{if(p==null)r(h.el=o(h.children),y,E);else{const C=h.el=p.el;h.children!==p.children&&c(C,h.children)}},b=(p,h,y,E)=>{p==null?r(h.el=l(h.children||""),y,E):h.el=p.el},_=(p,h,y,E)=>{[p.el,p.anchor]=g(p.children,h,y,E,p.el,p.anchor)},P=({el:p,anchor:h},y,E)=>{let C;for(;p&&p!==h;)C=d(p),r(p,y,E),p=C;r(h,y,E)},x=({el:p,anchor:h})=>{let y;for(;p&&p!==h;)y=d(p),s(p),p=y;s(h)},F=(p,h,y,E,C,T,z,M,I)=>{z=z||h.type==="svg",p==null?Z(h,y,E,C,T,z,M,I):O(p,h,C,T,z,M,I)},Z=(p,h,y,E,C,T,z,M)=>{let I,L;const{type:J,props:U,shapeFlag:X,transition:ee,dirs:ie}=p;if(I=p.el=i(p.type,T,U&&U.is,U),X&8?u(I,p.children):X&16&&w(p.children,I,null,E,C,T&&J!=="foreignObject",z,M),ie&&cn(p,null,E,"created"),q(I,p,p.scopeId,z,E),U){for(const ve in U)ve!=="value"&&!ws(ve)&&a(I,ve,null,U[ve],T,p.children,E,C,Ue);"value"in U&&a(I,"value",null,U.value),(L=U.onVnodeBeforeMount)&&wt(L,E,p)}ie&&cn(p,null,E,"beforeMount");const we=(!C||C&&!C.pendingBranch)&&ee&&!ee.persisted;we&&ee.beforeEnter(I),r(I,h,y),((L=U&&U.onVnodeMounted)||we||ie)&&Qe(()=>{L&&wt(L,E,p),we&&ee.enter(I),ie&&cn(p,null,E,"mounted")},C)},q=(p,h,y,E,C)=>{if(y&&m(p,y),E)for(let T=0;T{for(let L=I;L{const M=h.el=p.el;let{patchFlag:I,dynamicChildren:L,dirs:J}=h;I|=p.patchFlag&16;const U=p.props||_e,X=h.props||_e;let ee;y&&un(y,!1),(ee=X.onVnodeBeforeUpdate)&&wt(ee,y,h,p),J&&cn(h,p,y,"beforeUpdate"),y&&un(y,!0);const ie=C&&h.type!=="foreignObject";if(L?H(p.dynamicChildren,L,M,y,E,ie,T):z||ue(p,h,M,null,y,E,ie,T,!1),I>0){if(I&16)R(M,h,U,X,y,E,C);else if(I&2&&U.class!==X.class&&a(M,"class",null,X.class,C),I&4&&a(M,"style",U.style,X.style,C),I&8){const we=h.dynamicProps;for(let ve=0;ve{ee&&wt(ee,y,h,p),J&&cn(h,p,y,"updated")},E)},H=(p,h,y,E,C,T,z)=>{for(let M=0;M{if(y!==E){if(y!==_e)for(const M in y)!ws(M)&&!(M in E)&&a(p,M,y[M],null,z,h.children,C,T,Ue);for(const M in E){if(ws(M))continue;const I=E[M],L=y[M];I!==L&&M!=="value"&&a(p,M,L,I,z,h.children,C,T,Ue)}"value"in E&&a(p,"value",y.value,E.value)}},N=(p,h,y,E,C,T,z,M,I)=>{const L=h.el=p?p.el:o(""),J=h.anchor=p?p.anchor:o("");let{patchFlag:U,dynamicChildren:X,slotScopeIds:ee}=h;ee&&(M=M?M.concat(ee):ee),p==null?(r(L,y,E),r(J,y,E),w(h.children,y,J,C,T,z,M,I)):U>0&&U&64&&X&&p.dynamicChildren?(H(p.dynamicChildren,X,y,C,T,z,M),(h.key!=null||C&&h===C.subTree)&&wu(p,h,!0)):ue(p,h,y,J,C,T,z,M,I)},V=(p,h,y,E,C,T,z,M,I)=>{h.slotScopeIds=M,p==null?h.shapeFlag&512?C.ctx.activate(h,y,E,z,I):be(h,y,E,C,T,z,I):Ce(p,h,I)},be=(p,h,y,E,C,T,z)=>{const M=p.component=cm(p,E,C);if(Qs(p)&&(M.ctx.renderer=$),um(M),M.asyncDep){if(C&&C.registerDep(M,ae),!p.el){const I=M.subTree=pe(ct);b(null,I,h,y)}return}ae(M,p,h,y,C,T,z)},Ce=(p,h,y)=>{const E=h.component=p.component;if(kp(p,h,y))if(E.asyncDep&&!E.asyncResolved){me(E,h,y);return}else E.next=h,yp(E.update),E.update();else h.el=p.el,E.vnode=h},ae=(p,h,y,E,C,T,z)=>{const M=()=>{if(p.isMounted){let{next:J,bu:U,u:X,parent:ee,vnode:ie}=p,we=J,ve;un(p,!1),J?(J.el=ie.el,me(p,J,z)):J=ie,U&&_s(U),(ve=J.props&&J.props.onVnodeBeforeUpdate)&&wt(ve,ee,J,ie),un(p,!0);const Pe=wa(p),pt=p.subTree;p.subTree=Pe,v(pt,Pe,f(pt.el),A(pt),p,C,T),J.el=Pe.el,we===null&&Ap(p,Pe.el),X&&Qe(X,C),(ve=J.props&&J.props.onVnodeUpdated)&&Qe(()=>wt(ve,ee,J,ie),C)}else{let J;const{el:U,props:X}=h,{bm:ee,m:ie,parent:we}=p,ve=mr(h);if(un(p,!1),ee&&_s(ee),!ve&&(J=X&&X.onVnodeBeforeMount)&&wt(J,we,h),un(p,!0),U&&de){const Pe=()=>{p.subTree=wa(p),de(U,p.subTree,p,C,null)};ve?h.type.__asyncLoader().then(()=>!p.isUnmounted&&Pe()):Pe()}else{const Pe=p.subTree=wa(p);v(null,Pe,y,E,p,C,T),h.el=Pe.el}if(ie&&Qe(ie,C),!ve&&(J=X&&X.onVnodeMounted)){const Pe=h;Qe(()=>wt(J,we,Pe),C)}(h.shapeFlag&256||we&&mr(we.vnode)&&we.vnode.shapeFlag&256)&&p.a&&Qe(p.a,C),p.isMounted=!0,h=y=E=null}},I=p.effect=new Pi(M,()=>Bi(L),p.scope),L=p.update=()=>I.run();L.id=p.uid,un(p,!0),L()},me=(p,h,y)=>{h.component=p;const E=p.vnode.props;p.vnode=h,p.next=null,Jp(p,h.props,E,y),Zp(p,h.children,y),Jn(),Fo(),Xn()},ue=(p,h,y,E,C,T,z,M,I=!1)=>{const L=p&&p.children,J=p?p.shapeFlag:0,U=h.children,{patchFlag:X,shapeFlag:ee}=h;if(X>0){if(X&128){Ve(L,U,y,E,C,T,z,M,I);return}else if(X&256){dt(L,U,y,E,C,T,z,M,I);return}}ee&8?(J&16&&Ue(L,C,T),U!==L&&u(y,U)):J&16?ee&16?Ve(L,U,y,E,C,T,z,M,I):Ue(L,C,T,!0):(J&8&&u(y,""),ee&16&&w(U,y,E,C,T,z,M,I))},dt=(p,h,y,E,C,T,z,M,I)=>{p=p||Fn,h=h||Fn;const L=p.length,J=h.length,U=Math.min(L,J);let X;for(X=0;XJ?Ue(p,C,T,!0,!1,U):w(h,y,E,C,T,z,M,I,U)},Ve=(p,h,y,E,C,T,z,M,I)=>{let L=0;const J=h.length;let U=p.length-1,X=J-1;for(;L<=U&&L<=X;){const ee=p[L],ie=h[L]=I?Jt(h[L]):_t(h[L]);if(pn(ee,ie))v(ee,ie,y,null,C,T,z,M,I);else break;L++}for(;L<=U&&L<=X;){const ee=p[U],ie=h[X]=I?Jt(h[X]):_t(h[X]);if(pn(ee,ie))v(ee,ie,y,null,C,T,z,M,I);else break;U--,X--}if(L>U){if(L<=X){const ee=X+1,ie=eeX)for(;L<=U;)Re(p[L],C,T,!0),L++;else{const ee=L,ie=L,we=new Map;for(L=ie;L<=X;L++){const nt=h[L]=I?Jt(h[L]):_t(h[L]);nt.key!=null&&we.set(nt.key,L)}let ve,Pe=0;const pt=X-ie+1;let Sn=!1,ko=0;const ar=new Array(pt);for(L=0;L=pt){Re(nt,C,T,!0);continue}let bt;if(nt.key!=null)bt=we.get(nt.key);else for(ve=ie;ve<=X;ve++)if(ar[ve-ie]===0&&pn(nt,h[ve])){bt=ve;break}bt===void 0?Re(nt,C,T,!0):(ar[bt-ie]=L+1,bt>=ko?ko=bt:Sn=!0,v(nt,h[bt],y,null,C,T,z,M,I),Pe++)}const Ao=Sn?nm(ar):Fn;for(ve=Ao.length-1,L=pt-1;L>=0;L--){const nt=ie+L,bt=h[nt],So=nt+1{const{el:T,type:z,transition:M,children:I,shapeFlag:L}=p;if(L&6){it(p.component.subTree,h,y,E);return}if(L&128){p.suspense.move(h,y,E);return}if(L&64){z.move(p,h,y,$);return}if(z===Ne){r(T,h,y);for(let U=0;UM.enter(T),C);else{const{leave:U,delayLeave:X,afterLeave:ee}=M,ie=()=>r(T,h,y),we=()=>{U(T,()=>{ie(),ee&&ee()})};X?X(T,ie,we):we()}else r(T,h,y)},Re=(p,h,y,E=!1,C=!1)=>{const{type:T,props:z,ref:M,children:I,dynamicChildren:L,shapeFlag:J,patchFlag:U,dirs:X}=p;if(M!=null&&Za(M,null,y,p,!0),J&256){h.ctx.deactivate(p);return}const ee=J&1&&X,ie=!mr(p);let we;if(ie&&(we=z&&z.onVnodeBeforeUnmount)&&wt(we,h,p),J&6)Jr(p.component,y,E);else{if(J&128){p.suspense.unmount(y,E);return}ee&&cn(p,null,h,"beforeUnmount"),J&64?p.type.remove(p,h,y,C,$,E):L&&(T!==Ne||U>0&&U&64)?Ue(L,h,y,!1,!0):(T===Ne&&U&384||!C&&J&16)&&Ue(I,h,y),E&&jt(p)}(ie&&(we=z&&z.onVnodeUnmounted)||ee)&&Qe(()=>{we&&wt(we,h,p),ee&&cn(p,null,h,"unmounted")},y)},jt=p=>{const{type:h,el:y,anchor:E,transition:C}=p;if(h===Ne){Ot(y,E);return}if(h===xa){x(p);return}const T=()=>{s(y),C&&!C.persisted&&C.afterLeave&&C.afterLeave()};if(p.shapeFlag&1&&C&&!C.persisted){const{leave:z,delayLeave:M}=C,I=()=>z(y,T);M?M(p.el,T,I):I()}else T()},Ot=(p,h)=>{let y;for(;p!==h;)y=d(p),s(p),p=y;s(h)},Jr=(p,h,y)=>{const{bum:E,scope:C,update:T,subTree:z,um:M}=p;E&&_s(E),C.stop(),T&&(T.active=!1,Re(z,p,h,y)),M&&Qe(M,h),Qe(()=>{p.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&p.asyncDep&&!p.asyncResolved&&p.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},Ue=(p,h,y,E=!1,C=!1,T=0)=>{for(let z=T;zp.shapeFlag&6?A(p.component.subTree):p.shapeFlag&128?p.suspense.next():d(p.anchor||p.el),j=(p,h,y)=>{p==null?h._vnode&&Re(h._vnode,null,null,!0):v(h._vnode||null,p,h,null,null,null,y),Fo(),Gc(),h._vnode=p},$={p:v,um:Re,m:it,r:jt,mt:be,mc:w,pc:ue,pbc:H,n:A,o:e};let Y,de;return t&&([Y,de]=t($)),{render:j,hydrate:Y,createApp:qp(j,Y)}}function un({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function wu(e,t,n=!1){const r=e.children,s=t.children;if(W(r)&&W(s))for(let a=0;a>1,e[n[o]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,i=n[a-1];a-- >0;)n[a]=i,i=t[i];return n}const rm=e=>e.__isTeleport,Ne=Symbol.for("v-fgt"),ta=Symbol.for("v-txt"),ct=Symbol.for("v-cmt"),xa=Symbol.for("v-stc"),gr=[];let ht=null;function D(e=!1){gr.push(ht=e?null:[])}function sm(){gr.pop(),ht=gr[gr.length-1]||null}let Lr=1;function Go(e){Lr+=e}function _u(e){return e.dynamicChildren=Lr>0?ht||Fn:null,sm(),Lr>0&&ht&&ht.push(e),e}function G(e,t,n,r,s,a){return _u(Q(e,t,n,r,s,a,!0))}function Be(e,t,n,r,s){return _u(pe(e,t,n,r,s,!0))}function Is(e){return e?e.__v_isVNode===!0:!1}function pn(e,t){return e.type===t.type&&e.key===t.key}const na="__vInternal",Eu=({key:e})=>e??null,xs=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Le(e)||Se(e)||re(e)?{i:De,r:e,k:t,f:!!n}:e:null);function Q(e,t=null,n=null,r=0,s=null,a=e===Ne?0:1,i=!1,o=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Eu(t),ref:t&&xs(t),scopeId:Qc,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:De};return o?(Gi(l,n),a&128&&e.normalize(l)):n&&(l.shapeFlag|=Le(n)?8:16),Lr>0&&!i&&ht&&(l.patchFlag>0||a&6)&&l.patchFlag!==32&&ht.push(l),l}const pe=am;function am(e,t=null,n=null,r=0,s=null,a=!1){if((!e||e===uu)&&(e=ct),Is(e)){const o=rn(e,t,!0);return n&&Gi(o,n),Lr>0&&!a&&ht&&(o.shapeFlag&6?ht[ht.indexOf(e)]=o:ht.push(o)),o.patchFlag|=-2,o}if(mm(e)&&(e=e.__vccOpts),t){t=im(t);let{class:o,style:l}=t;o&&!Le(o)&&(t.class=xe(o)),ye(l)&&(Vc(l)&&!W(l)&&(l=Te({},l)),t.style=tn(l))}const i=Le(e)?1:Sp(e)?128:rm(e)?64:ye(e)?4:re(e)?2:0;return Q(e,t,n,r,s,i,a,!0)}function im(e){return e?Vc(e)||na in e?Te({},e):e:null}function rn(e,t,n=!1){const{props:r,ref:s,patchFlag:a,children:i}=e,o=t?Ji(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:o,key:o&&Eu(o),ref:t&&t.ref?n&&s?W(s)?s.concat(xs(t)):[s,xs(t)]:xs(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ne?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&rn(e.ssContent),ssFallback:e.ssFallback&&rn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function He(e=" ",t=0){return pe(ta,null,e,t)}function fe(e="",t=!1){return t?(D(),Be(ct,null,e)):pe(ct,null,e)}function _t(e){return e==null||typeof e=="boolean"?pe(ct):W(e)?pe(Ne,null,e.slice()):typeof e=="object"?Jt(e):pe(ta,null,String(e))}function Jt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:rn(e)}function Gi(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(W(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Gi(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(na in t)?t._ctx=De:s===3&&De&&(De.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else re(t)?(t={default:t,_ctx:De},n=32):(t=String(t),r&64?(n=16,t=[He(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ji(...e){const t={};for(let n=0;nIe||De;let Xi,Cn,Jo="__VUE_INSTANCE_SETTERS__";(Cn=Ua()[Jo])||(Cn=Ua()[Jo]=[]),Cn.push(e=>Ie=e),Xi=e=>{Cn.length>1?Cn.forEach(t=>t(e)):Cn[0](e)};const jn=e=>{Xi(e),e.scope.on()},bn=()=>{Ie&&Ie.scope.off(),Xi(null)};function xu(e){return e.vnode.shapeFlag&4}let Pr=!1;function um(e,t=!1){Pr=t;const{props:n,children:r}=e.vnode,s=xu(e);Gp(e,n,s,t),Qp(e,r);const a=s?fm(e,t):void 0;return Pr=!1,a}function fm(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Gs(new Proxy(e.ctx,Hp));const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?Au(e):null;jn(e),Jn();const a=en(r,e,0,[e.props,s]);if(Xn(),bn(),xc(a)){if(a.then(bn,bn),t)return a.then(i=>{Xo(e,i,t)}).catch(i=>{Js(i,e,0)});e.asyncDep=a}else Xo(e,a,t)}else ku(e,t)}function Xo(e,t,n){re(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ye(t)&&(e.setupState=Kc(t)),ku(e,n)}let Qo;function ku(e,t,n){const r=e.type;if(!e.render){if(!t&&Qo&&!r.render){const s=r.template||qi(e).template;if(s){const{isCustomElement:a,compilerOptions:i}=e.appContext.config,{delimiters:o,compilerOptions:l}=r,c=Te(Te({isCustomElement:a,delimiters:o},i),l);r.render=Qo(s,c)}}e.render=r.render||vt}jn(e),Jn(),Bp(e),Xn(),bn()}function dm(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return tt(e,"get","$attrs"),t[n]}}))}function Au(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return dm(e)},slots:e.slots,emit:e.emit,expose:t}}function ra(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Kc(Gs(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in hr)return hr[n](e)},has(t,n){return n in t||n in hr}}))}function pm(e,t=!0){return re(e)?e.displayName||e.name:e.name||t&&e.__name}function mm(e){return re(e)&&"__vccOpts"in e}const ne=(e,t)=>hp(e,t,Pr);function sa(e,t,n){const r=arguments.length;return r===2?ye(t)&&!W(t)?Is(t)?pe(e,null,[t]):pe(e,t):pe(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Is(n)&&(n=[n]),pe(e,t,n))}const hm=Symbol.for("v-scx"),gm=()=>et(hm),vm="3.3.4",ym="http://www.w3.org/2000/svg",mn=typeof document<"u"?document:null,Zo=mn&&mn.createElement("template"),bm={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t?mn.createElementNS(ym,e):mn.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>mn.createTextNode(e),createComment:e=>mn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>mn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,a){const i=n?n.previousSibling:t.lastChild;if(s&&(s===a||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===a||!(s=s.nextSibling)););else{Zo.innerHTML=r?`${e}`:e;const o=Zo.content;if(r){const l=o.firstChild;for(;l.firstChild;)o.appendChild(l.firstChild);o.removeChild(l)}t.insertBefore(o,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function wm(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function _m(e,t,n){const r=e.style,s=Le(n);if(n&&!s){if(t&&!Le(t))for(const a in t)n[a]==null&&ei(r,a,"");for(const a in n)ei(r,a,n[a])}else{const a=r.display;s?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=a)}}const el=/\s*!important$/;function ei(e,t,n){if(W(n))n.forEach(r=>ei(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Em(e,t);el.test(n)?e.setProperty(En(r),n.replace(el,""),"important"):e[r]=n}}const tl=["Webkit","Moz","ms"],ka={};function Em(e,t){const n=ka[t];if(n)return n;let r=St(t);if(r!=="filter"&&r in e)return ka[t]=r;r=qs(r);for(let s=0;sAa||(Om.then(()=>Aa=0),Aa=Date.now());function Lm(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;lt(Pm(r,n.value),t,5,[r])};return n.value=e,n.attached=Tm(),n}function Pm(e,t){if(W(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const sl=/^on[a-z]/,Rm=(e,t,n,r,s=!1,a,i,o,l)=>{t==="class"?wm(e,r,s):t==="style"?_m(e,n,r):Ks(t)?Ai(t)||Sm(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Mm(e,t,r,s))?km(e,t,r,a,i,o,l):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),xm(e,t,r,s))};function Mm(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&sl.test(t)&&re(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||sl.test(t)&&Le(n)?!1:t in e}const Ut="transition",ir="animation",Su=(e,{slots:t})=>sa(Lp,Ou(e),t);Su.displayName="Transition";const Cu={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Nm=Su.props=Te({},nu,Cu),fn=(e,t=[])=>{W(e)?e.forEach(n=>n(...t)):e&&e(...t)},al=e=>e?W(e)?e.some(t=>t.length>1):e.length>1:!1;function Ou(e){const t={};for(const N in e)N in Cu||(t[N]=e[N]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:a=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:o=`${n}-enter-to`,appearFromClass:l=a,appearActiveClass:c=i,appearToClass:u=o,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,g=Im(s),v=g&&g[0],S=g&&g[1],{onBeforeEnter:b,onEnter:_,onEnterCancelled:P,onLeave:x,onLeaveCancelled:F,onBeforeAppear:Z=b,onAppear:q=_,onAppearCancelled:w=P}=t,O=(N,V,be)=>{Yt(N,V?u:o),Yt(N,V?c:i),be&&be()},H=(N,V)=>{N._isLeaving=!1,Yt(N,f),Yt(N,m),Yt(N,d),V&&V()},R=N=>(V,be)=>{const Ce=N?q:_,ae=()=>O(V,N,be);fn(Ce,[V,ae]),il(()=>{Yt(V,N?l:a),Pt(V,N?u:o),al(Ce)||ol(V,r,v,ae)})};return Te(t,{onBeforeEnter(N){fn(b,[N]),Pt(N,a),Pt(N,i)},onBeforeAppear(N){fn(Z,[N]),Pt(N,l),Pt(N,c)},onEnter:R(!1),onAppear:R(!0),onLeave(N,V){N._isLeaving=!0;const be=()=>H(N,V);Pt(N,f),Lu(),Pt(N,d),il(()=>{N._isLeaving&&(Yt(N,f),Pt(N,m),al(x)||ol(N,r,S,be))}),fn(x,[N,be])},onEnterCancelled(N){O(N,!1),fn(P,[N])},onAppearCancelled(N){O(N,!0),fn(w,[N])},onLeaveCancelled(N){H(N),fn(F,[N])}})}function Im(e){if(e==null)return null;if(ye(e))return[Sa(e.enter),Sa(e.leave)];{const t=Sa(e);return[t,t]}}function Sa(e){return kd(e)}function Pt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Yt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function il(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let $m=0;function ol(e,t,n,r){const s=e._endId=++$m,a=()=>{s===e._endId&&r()};if(n)return setTimeout(a,n);const{type:i,timeout:o,propCount:l}=Tu(e,t);if(!i)return r();const c=i+"end";let u=0;const f=()=>{e.removeEventListener(c,d),a()},d=m=>{m.target===e&&++u>=l&&f()};setTimeout(()=>{u(n[g]||"").split(", "),s=r(`${Ut}Delay`),a=r(`${Ut}Duration`),i=ll(s,a),o=r(`${ir}Delay`),l=r(`${ir}Duration`),c=ll(o,l);let u=null,f=0,d=0;t===Ut?i>0&&(u=Ut,f=i,d=a.length):t===ir?c>0&&(u=ir,f=c,d=l.length):(f=Math.max(i,c),u=f>0?i>c?Ut:ir:null,d=u?u===Ut?a.length:l.length:0);const m=u===Ut&&/\b(transform|all)(,|$)/.test(r(`${Ut}Property`).toString());return{type:u,timeout:f,propCount:d,hasTransform:m}}function ll(e,t){for(;e.lengthcl(n)+cl(e[r])))}function cl(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Lu(){return document.body.offsetHeight}const Pu=new WeakMap,Ru=new WeakMap,Mu={name:"TransitionGroup",props:Te({},Nm,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=er(),r=tu();let s,a;return lu(()=>{if(!s.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!Bm(s[0].el,n.vnode.el,i))return;s.forEach(Hm),s.forEach(Dm);const o=s.filter(zm);Lu(),o.forEach(l=>{const c=l.el,u=c.style;Pt(c,i),u.transform=u.webkitTransform=u.transitionDuration="";const f=c._moveCb=d=>{d&&d.target!==c||(!d||/transform$/.test(d.propertyName))&&(c.removeEventListener("transitionend",f),c._moveCb=null,Yt(c,i))};c.addEventListener("transitionend",f)})}),()=>{const i=oe(e),o=Ou(i);let l=i.tag||Ne;s=a,a=t.default?Ui(t.default()):[];for(let c=0;cdelete e.mode;Mu.props;const Nu=Mu;function Hm(e){const t=e.el;t._moveCb&&t._moveCb(),t._enterCb&&t._enterCb()}function Dm(e){Ru.set(e,e.el.getBoundingClientRect())}function zm(e){const t=Pu.get(e),n=Ru.get(e),r=t.left-n.left,s=t.top-n.top;if(r||s){const a=e.el.style;return a.transform=a.webkitTransform=`translate(${r}px,${s}px)`,a.transitionDuration="0s",e}}function Bm(e,t,n){const r=e.cloneNode();e._vtc&&e._vtc.forEach(i=>{i.split(/\s+/).forEach(o=>o&&r.classList.remove(o))}),n.split(/\s+/).forEach(i=>i&&r.classList.add(i)),r.style.display="none";const s=t.nodeType===1?t:t.parentNode;s.appendChild(r);const{hasTransform:a}=Tu(r);return s.removeChild(r),a}const $s=e=>{const t=e.props["onUpdate:modelValue"]||!1;return W(t)?n=>_s(t,n):t},jm={deep:!0,created(e,t,n){e._assign=$s(n),Qi(e,"change",()=>{const r=e._modelValue,s=Rr(e),a=e.checked,i=e._assign;if(W(r)){const o=Oi(r,s),l=o!==-1;if(a&&!l)i(r.concat(s));else if(!a&&l){const c=[...r];c.splice(o,1),i(c)}}else if(Gn(r)){const o=new Set(r);a?o.add(s):o.delete(s),i(o)}else i(Iu(e,a))})},mounted:ul,beforeUpdate(e,t,n){e._assign=$s(n),ul(e,t,n)}};function ul(e,{value:t,oldValue:n},r){e._modelValue=t,W(t)?e.checked=Oi(t,r.props.value)>-1:Gn(t)?e.checked=t.has(r.props.value):t!==n&&(e.checked=jr(t,Iu(e,!0)))}const Vm={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const s=Gn(t);Qi(e,"change",()=>{const a=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Sc(Rr(i)):Rr(i));e._assign(e.multiple?s?new Set(a):a:a[0])}),e._assign=$s(r)},mounted(e,{value:t}){fl(e,t)},beforeUpdate(e,t,n){e._assign=$s(n)},updated(e,{value:t}){fl(e,t)}};function fl(e,t){const n=e.multiple;if(!(n&&!W(t)&&!Gn(t))){for(let r=0,s=e.options.length;r-1:a.selected=t.has(i);else if(jr(Rr(a),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Rr(e){return"_value"in e?e._value:e.value}function Iu(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Um=["ctrl","shift","alt","meta"],Km={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Um.some(n=>e[`${n}Key`]&&!t.includes(n))},aa=(e,t)=>(n,...r)=>{for(let s=0;sn=>{if(!("key"in n))return;const r=En(n.key);if(t.some(s=>s===r||Wm[s]===r))return e(n)},gy={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):or(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),or(e,!0),r.enter(e)):r.leave(e,()=>{or(e,!1)}):or(e,t))},beforeUnmount(e,{value:t}){or(e,t)}};function or(e,t){e.style.display=t?e._vod:"none"}const qm=Te({patchProp:Rm},bm);let dl;function Ym(){return dl||(dl=em(qm))}const Gm=(...e)=>{const t=Ym().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Jm(r);if(!s)return;const a=t._component;!re(a)&&!a.render&&!a.template&&(a.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,s instanceof SVGElement);return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t};function Jm(e){return Le(e)?document.querySelector(e):e}(function(){var e;try{if(typeof document<"u"){var t=document.createElement("style");t.nonce=(e=document.head.querySelector("meta[property=csp-nonce]"))==null?void 0:e.content,t.appendChild(document.createTextNode(".vue-notification-group{display:block;position:fixed;z-index:5000}.vue-notification-wrapper{display:block;overflow:hidden;width:100%;margin:0;padding:0}.notification-title{font-weight:600}.vue-notification-template{display:block;box-sizing:border-box;background:white;text-align:left}.vue-notification{display:block;box-sizing:border-box;text-align:left;font-size:12px;padding:10px;margin:0 5px 5px;color:#fff;background:#44A4FC;border-left:5px solid #187FE7}.vue-notification.warn{background:#ffb648;border-left-color:#f48a06}.vue-notification.error{background:#E54D42;border-left-color:#b82e24}.vue-notification.success{background:#68CD86;border-left-color:#42a85f}.vn-fade-enter-active,.vn-fade-leave-active,.vn-fade-move{transition:all .5s}.vn-fade-enter-from,.vn-fade-leave-to{opacity:0}")),document.head.appendChild(t)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}})();const $u=new Map;class Xm{constructor(t,n,r){this.remaining=n,this.callback=t,this.notifyItem=r,this.resume()}pause(){clearTimeout(this.notifyItem.timer),this.remaining-=Date.now()-this.start}resume(){this.start=Date.now(),clearTimeout(this.notifyItem.timer),this.notifyItem.timer=setTimeout(this.callback,this.remaining)}}function Qm(e){return{all:e=e||new Map,on:function(t,n){var r=e.get(t);r?r.push(n):e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&(n?r.splice(r.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var r=e.get(t);r&&r.slice().map(function(s){s(n)}),(r=e.get("*"))&&r.slice().map(function(s){s(t,n)})}}}const Fs=Qm(),Ca="[-+]?[0-9]*.?[0-9]+",pl=[{name:"px",regexp:new RegExp(`^${Ca}px$`)},{name:"%",regexp:new RegExp(`^${Ca}%$`)},{name:"px",regexp:new RegExp(`^${Ca}$`)}],Zm=e=>{if(e==="auto")return{type:e,value:0};for(let t=0;t{switch(typeof e){case"number":return{type:"px",value:e};case"string":return Zm(e);default:return{type:"",value:e}}},ml={x:new Set(["left","center","right"]),y:new Set(["top","bottom"])},th=(e=>()=>e++)(0),nh=e=>typeof e!="string"?[]:e.split(/\s+/gi).filter(Boolean),rh=e=>{typeof e=="string"&&(e=nh(e));let t=null,n=null;return e.forEach(r=>{ml.y.has(r)&&(n=r),ml.x.has(r)&&(t=r)}),{x:t,y:n}},Oa={position:["top","right"],cssAnimation:"vn-fade",velocityAnimation:{enter:e=>({height:[e.clientHeight,0],opacity:[1,0]}),leave:{height:0,opacity:[0,1]}}},sh=xn({__name:"VelocityGroup",emits:["enter","leave","after-leave"],setup(e,{emit:t}){const n=(a,i)=>{t("enter",a,i)},r=(a,i)=>{t("leave",a,i)},s=()=>{t("after-leave")};return(a,i)=>(D(),Be(Nu,{tag:"span",css:!1,onEnter:n,onLeave:r,onAfterLeave:s},{default:Ye(()=>[ln(a.$slots,"default")]),_:3}))}}),ah=xn({inheritAttrs:!1,__name:"CssGroup",props:{name:{}},setup(e){return(t,n)=>(D(),Be(Nu,{tag:"span",name:t.name},{default:Ye(()=>[ln(t.$slots,"default")]),_:3},8,["name"]))}}),ih=["data-id"],oh=["onClick"],lh=["innerHTML"],ch=["innerHTML"],uh={key:0,class:"notification-title"},fh={class:"notification-content"},dh=xn({__name:"Notifications",props:{group:{default:""},width:{default:300},reverse:{type:Boolean,default:!1},position:{default:Oa.position},classes:{default:"vue-notification"},animationType:{default:"css"},animation:{default:Oa.velocityAnimation},animationName:{default:Oa.cssAnimation},speed:{default:300},duration:{default:3e3},delay:{default:0},max:{default:1/0},ignoreDuplicates:{type:Boolean,default:!1},closeOnClick:{type:Boolean,default:!0},pauseOnHover:{type:Boolean,default:!1},dangerouslySetInnerHtml:{type:Boolean,default:!1}},emits:["click","destroy","start"],setup(e,{emit:t}){const n=e,r={IDLE:0,DESTROYED:2},s=ge([]),a=ge(null),i=ge($u.get("velocity")),o=ne(()=>n.animationType==="velocity"),l=ne(()=>o.value?sh:ah),c=ne(()=>s.value.filter(R=>R.state!==r.DESTROYED)),u=ne(()=>eh(n.width)),f=ne(()=>{const{x:R,y:N}=rh(n.position),V=u.value.value,be=u.value.type,Ce={width:V+be};return N&&(Ce[N]="0px"),R&&(R==="center"?Ce.left=`calc(50% - ${+V/2}${be})`:Ce[R]="0px"),Ce}),d=ne(()=>"bottom"in f.value),m=R=>{t("click",R),n.closeOnClick&&x(R)},g=()=>{var R;n.pauseOnHover&&((R=a.value)==null||R.pause())},v=()=>{var R;n.pauseOnHover&&((R=a.value)==null||R.resume())},S=(R={})=>{if(R.group||(R.group=""),R.data||(R.data={}),n.group!==R.group)return;if(R.clean||R.clear){Z();return}const N=typeof R.duration=="number"?R.duration:n.duration,V=typeof R.speed=="number"?R.speed:n.speed,be=typeof R.ignoreDuplicates=="boolean"?R.ignoreDuplicates:n.ignoreDuplicates,{title:Ce,text:ae,type:me,data:ue,id:dt}=R,Ve={id:dt||th(),title:Ce,text:ae,type:me,state:r.IDLE,speed:V,length:N+2*V,data:ue};N>=0&&(a.value=new Xm(()=>x(Ve),Ve.length,Ve));const it=n.reverse?!d.value:d.value;let Re=-1;const jt=c.value.some(Ot=>Ot.title===R.title&&Ot.text===R.text);(!be||!jt)&&(it?(s.value.push(Ve),t("start",Ve),c.value.length>n.max&&(Re=0)):(s.value.unshift(Ve),t("start",Ve),c.value.length>n.max&&(Re=c.value.length-1)),Re!==-1&&x(c.value[Re]))},b=R=>{F(R)},_=R=>["vue-notification-template",n.classes,R.type||""],P=R=>o.value?void 0:{transition:`all ${R.speed}ms`},x=R=>{clearTimeout(R.timer),R.state=r.DESTROYED,H(),t("destroy",R)},F=R=>{const N=s.value.find(V=>V.id===R);N&&x(N)},Z=()=>{c.value.forEach(x)},q=(R,N)=>{var V;const be=(V=n.animation)==null?void 0:V[R];return typeof be=="function"?be(N):be},w=(R,N)=>{if(!o.value)return;const V=q("enter",R);i.value(R,V,{duration:n.speed,complete:N})},O=(R,N)=>{if(!o.value)return;const V=q("leave",R);i.value(R,V,{duration:n.speed,complete:N})};function H(){s.value=s.value.filter(R=>R.state!==r.DESTROYED)}return kn(()=>{Fs.on("add",S),Fs.on("close",b)}),(R,N)=>(D(),G("div",{class:"vue-notification-group",style:tn(f.value)},[(D(),Be(Fp(l.value),{name:R.animationName,onEnter:w,onLeave:O,onAfterLeave:H},{default:Ye(()=>[(D(!0),G(Ne,null,Wi(c.value,V=>(D(),G("div",{key:V.id,class:"vue-notification-wrapper",style:tn(P(V)),"data-id":V.id,onMouseenter:g,onMouseleave:v},[ln(R.$slots,"body",{class:xe([R.classes,V.type]),item:V,close:()=>x(V)},()=>[Q("div",{class:xe(_(V)),onClick:be=>m(V)},[R.dangerouslySetInnerHtml?(D(),G(Ne,{key:0},[V.title?(D(),G("div",{key:0,class:"notification-title",innerHTML:V.title},null,8,lh)):fe("",!0),Q("div",{class:"notification-content",innerHTML:V.text},null,8,ch)],64)):(D(),G(Ne,{key:1},[V.title?(D(),G("div",uh,Ae(V.title),1)):fe("",!0),Q("div",fh,Ae(V.text),1)],64))],10,oh)])],44,ih))),128))]),_:3},40,["name"]))],4))}}),Zi=e=>{typeof e=="string"&&(e={title:"",text:e}),typeof e=="object"&&Fs.emit("add",e)};Zi.close=e=>{Fs.emit("close",e)};const Fu=()=>({notify:Zi});function ph(e,t={}){Object.entries(t).forEach(r=>$u.set(...r));const n=t.name||"notify";e.config.globalProperties["$"+n]=Zi,e.component(t.componentName||"Notifications",dh)}const mh={install:ph};/*! +/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const gd="modulepreload",vd=function(e,t){return new URL(e,t).href},Co={},te=function(t,n,r){if(!n||n.length===0)return t();const s=document.getElementsByTagName("link");return Promise.all(n.map(a=>{if(a=vd(a,r),a in Co)return;Co[a]=!0;const i=a.endsWith(".css"),o=i?'[rel="stylesheet"]':"";if(!!r)for(let u=s.length-1;u>=0;u--){const f=s[u];if(f.href===a&&(!i||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${a}"]${o}`))return;const c=document.createElement("link");if(c.rel=i?"stylesheet":gd,i||(c.as="script",c.crossOrigin=""),c.href=a,document.head.appendChild(c),i)return new Promise((u,f)=>{c.addEventListener("load",u),c.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${a}`)))})})).then(()=>t()).catch(a=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=a,window.dispatchEvent(i),!i.defaultPrevented)throw a})};function ki(e,t){const n=Object.create(null),r=e.split(",");for(let s=0;s!!n[s.toLowerCase()]:s=>!!n[s]}const _e={},Fn=[],vt=()=>{},yd=()=>!1,bd=/^on[^a-z]/,Ks=e=>bd.test(e),Ai=e=>e.startsWith("onUpdate:"),Te=Object.assign,Si=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},wd=Object.prototype.hasOwnProperty,le=(e,t)=>wd.call(e,t),W=Array.isArray,Hn=e=>Br(e)==="[object Map]",Gn=e=>Br(e)==="[object Set]",Oo=e=>Br(e)==="[object Date]",re=e=>typeof e=="function",Le=e=>typeof e=="string",Er=e=>typeof e=="symbol",ye=e=>e!==null&&typeof e=="object",xc=e=>ye(e)&&re(e.then)&&re(e.catch),kc=Object.prototype.toString,Br=e=>kc.call(e),_d=e=>Br(e).slice(8,-1),Ac=e=>Br(e)==="[object Object]",Ci=e=>Le(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ws=ki(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ws=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ed=/-(\w)/g,St=Ws(e=>e.replace(Ed,(t,n)=>n?n.toUpperCase():"")),xd=/\B([A-Z])/g,En=Ws(e=>e.replace(xd,"-$1").toLowerCase()),qs=Ws(e=>e.charAt(0).toUpperCase()+e.slice(1)),ba=Ws(e=>e?`on${qs(e)}`:""),xr=(e,t)=>!Object.is(e,t),_s=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Sc=e=>{const t=parseFloat(e);return isNaN(t)?e:t},kd=e=>{const t=Le(e)?Number(e):NaN;return isNaN(t)?e:t};let To;const Ua=()=>To||(To=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function tn(e){if(W(e)){const t={};for(let n=0;n{if(n){const r=n.split(Sd);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function xe(e){let t="";if(Le(e))t=e;else if(W(e))for(let n=0;njr(n,t))}const Ae=e=>Le(e)?e:e==null?"":W(e)||ye(e)&&(e.toString===kc||!re(e.toString))?JSON.stringify(e,Oc,2):String(e),Oc=(e,t)=>t&&t.__v_isRef?Oc(e,t.value):Hn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s])=>(n[`${r} =>`]=s,n),{})}:Gn(t)?{[`Set(${t.size})`]:[...t.values()]}:ye(t)&&!W(t)&&!Ac(t)?String(t):t;let rt;class Tc{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=rt,!t&&rt&&(this.index=(rt.scopes||(rt.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=rt;try{return rt=this,t()}finally{rt=n}}}on(){rt=this}off(){rt=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Rc=e=>(e.w&nn)>0,Mc=e=>(e.n&nn)>0,Md=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(u==="length"||u>=l)&&o.push(c)})}else switch(n!==void 0&&o.push(i.get(n)),t){case"add":W(e)?Ci(n)&&o.push(i.get("length")):(o.push(i.get(yn)),Hn(e)&&o.push(i.get(Wa)));break;case"delete":W(e)||(o.push(i.get(yn)),Hn(e)&&o.push(i.get(Wa)));break;case"set":Hn(e)&&o.push(i.get(yn));break}if(o.length===1)o[0]&&qa(o[0]);else{const l=[];for(const c of o)c&&l.push(...c);qa(Li(l))}}function qa(e,t){const n=W(e)?e:[...e];for(const r of n)r.computed&&Po(r);for(const r of n)r.computed||Po(r)}function Po(e,t){(e!==mt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function Id(e,t){var n;return(n=Ps.get(e))==null?void 0:n.get(t)}const $d=ki("__proto__,__v_isRef,__isVue"),$c=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Er)),Fd=Ri(),Hd=Ri(!1,!0),Dd=Ri(!0),Ro=zd();function zd(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=oe(this);for(let a=0,i=this.length;a{e[t]=function(...n){Jn();const r=oe(this)[t].apply(this,n);return Xn(),r}}),e}function Bd(e){const t=oe(this);return tt(t,"has",e),t.hasOwnProperty(e)}function Ri(e=!1,t=!1){return function(r,s,a){if(s==="__v_isReactive")return!e;if(s==="__v_isReadonly")return e;if(s==="__v_isShallow")return t;if(s==="__v_raw"&&a===(e?t?rp:Bc:t?zc:Dc).get(r))return r;const i=W(r);if(!e){if(i&&le(Ro,s))return Reflect.get(Ro,s,a);if(s==="hasOwnProperty")return Bd}const o=Reflect.get(r,s,a);return(Er(s)?$c.has(s):$d(s))||(e||tt(r,"get",s),t)?o:Se(o)?i&&Ci(s)?o:o.value:ye(o)?e?Qn(o):Nt(o):o}}const jd=Fc(),Vd=Fc(!0);function Fc(e=!1){return function(n,r,s,a){let i=n[r];if(Bn(i)&&Se(i)&&!Se(s))return!1;if(!e&&(!Rs(s)&&!Bn(s)&&(i=oe(i),s=oe(s)),!W(n)&&Se(i)&&!Se(s)))return i.value=s,!0;const o=W(n)&&Ci(r)?Number(r)e,Ys=e=>Reflect.getPrototypeOf(e);function Xr(e,t,n=!1,r=!1){e=e.__v_raw;const s=oe(e),a=oe(t);n||(t!==a&&tt(s,"get",t),tt(s,"get",a));const{has:i}=Ys(s),o=r?Mi:n?$i:kr;if(i.call(s,t))return o(e.get(t));if(i.call(s,a))return o(e.get(a));e!==s&&e.get(t)}function Qr(e,t=!1){const n=this.__v_raw,r=oe(n),s=oe(e);return t||(e!==s&&tt(r,"has",e),tt(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Zr(e,t=!1){return e=e.__v_raw,!t&&tt(oe(e),"iterate",yn),Reflect.get(e,"size",e)}function Mo(e){e=oe(e);const t=oe(this);return Ys(t).has.call(t,e)||(t.add(e),$t(t,"add",e,e)),this}function No(e,t){t=oe(t);const n=oe(this),{has:r,get:s}=Ys(n);let a=r.call(n,e);a||(e=oe(e),a=r.call(n,e));const i=s.call(n,e);return n.set(e,t),a?xr(t,i)&&$t(n,"set",e,t):$t(n,"add",e,t),this}function Io(e){const t=oe(this),{has:n,get:r}=Ys(t);let s=n.call(t,e);s||(e=oe(e),s=n.call(t,e)),r&&r.call(t,e);const a=t.delete(e);return s&&$t(t,"delete",e,void 0),a}function $o(){const e=oe(this),t=e.size!==0,n=e.clear();return t&&$t(e,"clear",void 0,void 0),n}function es(e,t){return function(r,s){const a=this,i=a.__v_raw,o=oe(i),l=t?Mi:e?$i:kr;return!e&&tt(o,"iterate",yn),i.forEach((c,u)=>r.call(s,l(c),l(u),a))}}function ts(e,t,n){return function(...r){const s=this.__v_raw,a=oe(s),i=Hn(a),o=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,c=s[e](...r),u=n?Mi:t?$i:kr;return!t&&tt(a,"iterate",l?Wa:yn),{next(){const{value:f,done:d}=c.next();return d?{value:f,done:d}:{value:o?[u(f[0]),u(f[1])]:u(f),done:d}},[Symbol.iterator](){return this}}}}function Vt(e){return function(...t){return e==="delete"?!1:this}}function Gd(){const e={get(a){return Xr(this,a)},get size(){return Zr(this)},has:Qr,add:Mo,set:No,delete:Io,clear:$o,forEach:es(!1,!1)},t={get(a){return Xr(this,a,!1,!0)},get size(){return Zr(this)},has:Qr,add:Mo,set:No,delete:Io,clear:$o,forEach:es(!1,!0)},n={get(a){return Xr(this,a,!0)},get size(){return Zr(this,!0)},has(a){return Qr.call(this,a,!0)},add:Vt("add"),set:Vt("set"),delete:Vt("delete"),clear:Vt("clear"),forEach:es(!0,!1)},r={get(a){return Xr(this,a,!0,!0)},get size(){return Zr(this,!0)},has(a){return Qr.call(this,a,!0)},add:Vt("add"),set:Vt("set"),delete:Vt("delete"),clear:Vt("clear"),forEach:es(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(a=>{e[a]=ts(a,!1,!1),n[a]=ts(a,!0,!1),t[a]=ts(a,!1,!0),r[a]=ts(a,!0,!0)}),[e,n,t,r]}const[Jd,Xd,Qd,Zd]=Gd();function Ni(e,t){const n=t?e?Zd:Qd:e?Xd:Jd;return(r,s,a)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(le(n,s)&&s in r?n:r,s,a)}const ep={get:Ni(!1,!1)},tp={get:Ni(!1,!0)},np={get:Ni(!0,!1)},Dc=new WeakMap,zc=new WeakMap,Bc=new WeakMap,rp=new WeakMap;function sp(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ap(e){return e.__v_skip||!Object.isExtensible(e)?0:sp(_d(e))}function Nt(e){return Bn(e)?e:Ii(e,!1,Hc,ep,Dc)}function jc(e){return Ii(e,!1,Yd,tp,zc)}function Qn(e){return Ii(e,!0,qd,np,Bc)}function Ii(e,t,n,r,s){if(!ye(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=s.get(e);if(a)return a;const i=ap(e);if(i===0)return e;const o=new Proxy(e,i===2?r:n);return s.set(e,o),o}function Zt(e){return Bn(e)?Zt(e.__v_raw):!!(e&&e.__v_isReactive)}function Bn(e){return!!(e&&e.__v_isReadonly)}function Rs(e){return!!(e&&e.__v_isShallow)}function Vc(e){return Zt(e)||Bn(e)}function oe(e){const t=e&&e.__v_raw;return t?oe(t):e}function Gs(e){return Ls(e,"__v_skip",!0),e}const kr=e=>ye(e)?Nt(e):e,$i=e=>ye(e)?Qn(e):e;function Fi(e){Qt&&mt&&(e=oe(e),Ic(e.dep||(e.dep=Li())))}function Hi(e,t){e=oe(e);const n=e.dep;n&&qa(n)}function Se(e){return!!(e&&e.__v_isRef===!0)}function ge(e){return Uc(e,!1)}function Di(e){return Uc(e,!0)}function Uc(e,t){return Se(e)?e:new ip(e,t)}class ip{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:oe(t),this._value=n?t:kr(t)}get value(){return Fi(this),this._value}set value(t){const n=this.__v_isShallow||Rs(t)||Bn(t);t=n?t:oe(t),xr(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:kr(t),Hi(this))}}function se(e){return Se(e)?e.value:e}const op={get:(e,t,n)=>se(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return Se(s)&&!Se(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Kc(e){return Zt(e)?e:new Proxy(e,op)}class lp{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Fi(this),()=>Hi(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function cp(e){return new lp(e)}function up(e){const t=W(e)?new Array(e.length):{};for(const n in e)t[n]=Wc(e,n);return t}class fp{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Id(oe(this._object),this._key)}}class dp{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function pp(e,t,n){return Se(e)?e:re(e)?new dp(e):ye(e)&&arguments.length>1?Wc(e,t,n):ge(e)}function Wc(e,t,n){const r=e[t];return Se(r)?r:new fp(e,t,n)}class mp{constructor(t,n,r,s){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new Pi(t,()=>{this._dirty||(this._dirty=!0,Hi(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=oe(this);return Fi(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function hp(e,t,n=!1){let r,s;const a=re(e);return a?(r=e,s=vt):(r=e.get,s=e.set),new mp(r,s,a||!s,n)}function en(e,t,n,r){let s;try{s=r?e(...r):e()}catch(a){Js(a,t,n)}return s}function lt(e,t,n,r){if(re(e)){const a=en(e,t,n,r);return a&&xc(a)&&a.catch(i=>{Js(i,t,n)}),a}const s=[];for(let a=0;a>>1;Sr(qe[r])Et&&qe.splice(t,1)}function bp(e){W(e)?Dn.push(...e):(!Rt||!Rt.includes(e,e.allowRecurse?dn+1:dn))&&Dn.push(e),Yc()}function Fo(e,t=Ar?Et+1:0){for(;tSr(n)-Sr(r)),dn=0;dne.id==null?1/0:e.id,wp=(e,t)=>{const n=Sr(e)-Sr(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Jc(e){Ya=!1,Ar=!0,qe.sort(wp);const t=vt;try{for(Et=0;EtLe(m)?m.trim():m)),f&&(s=n.map(Sc))}let o,l=r[o=ba(t)]||r[o=ba(St(t))];!l&&a&&(l=r[o=ba(En(t))]),l&<(l,e,6,s);const c=r[o+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[o])return;e.emitted[o]=!0,lt(c,e,6,s)}}function Xc(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const a=e.emits;let i={},o=!1;if(!re(e)){const l=c=>{const u=Xc(c,t,!0);u&&(o=!0,Te(i,u))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!a&&!o?(ye(e)&&r.set(e,null),null):(W(a)?a.forEach(l=>i[l]=null):Te(i,a),ye(e)&&r.set(e,i),i)}function Xs(e,t){return!e||!Ks(t)?!1:(t=t.slice(2).replace(/Once$/,""),le(e,t[0].toLowerCase()+t.slice(1))||le(e,En(t))||le(e,t))}let De=null,Qc=null;function Ms(e){const t=De;return De=e,Qc=e&&e.type.__scopeId||null,t}function Ye(e,t=De,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&Go(-1);const a=Ms(t);let i;try{i=e(...s)}finally{Ms(a),r._d&&Go(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function wa(e){const{type:t,vnode:n,proxy:r,withProxy:s,props:a,propsOptions:[i],slots:o,attrs:l,emit:c,render:u,renderCache:f,data:d,setupState:m,ctx:g,inheritAttrs:v}=e;let S,b;const _=Ms(e);try{if(n.shapeFlag&4){const x=s||r;S=_t(u.call(x,x,f,a,m,d,g)),b=l}else{const x=t;S=_t(x.length>1?x(a,{attrs:l,slots:o,emit:c}):x(a,null)),b=t.props?l:Ep(l)}}catch(x){gr.length=0,Js(x,e,1),S=pe(ct)}let P=S;if(b&&v!==!1){const x=Object.keys(b),{shapeFlag:F}=P;x.length&&F&7&&(i&&x.some(Ai)&&(b=xp(b,i)),P=rn(P,b))}return n.dirs&&(P=rn(P),P.dirs=P.dirs?P.dirs.concat(n.dirs):n.dirs),n.transition&&(P.transition=n.transition),S=P,Ms(_),S}const Ep=e=>{let t;for(const n in e)(n==="class"||n==="style"||Ks(n))&&((t||(t={}))[n]=e[n]);return t},xp=(e,t)=>{const n={};for(const r in e)(!Ai(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function kp(e,t,n){const{props:r,children:s,component:a}=e,{props:i,children:o,patchFlag:l}=t,c=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?Ho(r,i,c):!!i;if(l&8){const u=t.dynamicProps;for(let f=0;fe.__isSuspense;function Cp(e,t){t&&t.pendingBranch?W(e)?t.effects.push(...e):t.effects.push(e):bp(e)}function ji(e,t){return Vi(e,null,t)}const ns={};function ze(e,t,n){return Vi(e,t,n)}function Vi(e,t,{immediate:n,deep:r,flush:s,onTrack:a,onTrigger:i}=_e){var o;const l=Ti()===((o=Ie)==null?void 0:o.scope)?Ie:null;let c,u=!1,f=!1;if(Se(e)?(c=()=>e.value,u=Rs(e)):Zt(e)?(c=()=>e,r=!0):W(e)?(f=!0,u=e.some(x=>Zt(x)||Rs(x)),c=()=>e.map(x=>{if(Se(x))return x.value;if(Zt(x))return hn(x);if(re(x))return en(x,l,2)})):re(e)?t?c=()=>en(e,l,2):c=()=>{if(!(l&&l.isUnmounted))return d&&d(),lt(e,l,3,[m])}:c=vt,t&&r){const x=c;c=()=>hn(x())}let d,m=x=>{d=_.onStop=()=>{en(x,l,4)}},g;if(Pr)if(m=vt,t?n&<(t,l,3,[c(),f?[]:void 0,m]):c(),s==="sync"){const x=gm();g=x.__watcherHandles||(x.__watcherHandles=[])}else return vt;let v=f?new Array(e.length).fill(ns):ns;const S=()=>{if(_.active)if(t){const x=_.run();(r||u||(f?x.some((F,Z)=>xr(F,v[Z])):xr(x,v)))&&(d&&d(),lt(t,l,3,[x,v===ns?void 0:f&&v[0]===ns?[]:v,m]),v=x)}else _.run()};S.allowRecurse=!!t;let b;s==="sync"?b=S:s==="post"?b=()=>Qe(S,l&&l.suspense):(S.pre=!0,l&&(S.id=l.uid),b=()=>Bi(S));const _=new Pi(c,b);t?n?S():v=_.run():s==="post"?Qe(_.run.bind(_),l&&l.suspense):_.run();const P=()=>{_.stop(),l&&l.scope&&Si(l.scope.effects,_)};return g&&g.push(P),P}function Op(e,t,n){const r=this.proxy,s=Le(e)?e.includes(".")?Zc(r,e):()=>r[e]:e.bind(r,r);let a;re(t)?a=t:(a=t.handler,n=t);const i=Ie;jn(this);const o=Vi(s,a.bind(r),n);return i?jn(i):bn(),o}function Zc(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s{hn(n,t)});else if(Ac(e))for(const n in e)hn(e[n],t);return e}function eu(e,t){const n=De;if(n===null)return e;const r=ra(n)||n.proxy,s=e.dirs||(e.dirs=[]);for(let a=0;a{e.isMounted=!0}),cu(()=>{e.isUnmounting=!0}),e}const ot=[Function,Array],nu={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ot,onEnter:ot,onAfterEnter:ot,onEnterCancelled:ot,onBeforeLeave:ot,onLeave:ot,onAfterLeave:ot,onLeaveCancelled:ot,onBeforeAppear:ot,onAppear:ot,onAfterAppear:ot,onAppearCancelled:ot},Tp={name:"BaseTransition",props:nu,setup(e,{slots:t}){const n=er(),r=tu();let s;return()=>{const a=t.default&&Ui(t.default(),!0);if(!a||!a.length)return;let i=a[0];if(a.length>1){for(const v of a)if(v.type!==ct){i=v;break}}const o=oe(e),{mode:l}=o;if(r.isLeaving)return _a(i);const c=Do(i);if(!c)return _a(i);const u=Cr(c,o,r,n);Or(c,u);const f=n.subTree,d=f&&Do(f);let m=!1;const{getTransitionKey:g}=c.type;if(g){const v=g();s===void 0?s=v:v!==s&&(s=v,m=!0)}if(d&&d.type!==ct&&(!pn(c,d)||m)){const v=Cr(d,o,r,n);if(Or(d,v),l==="out-in")return r.isLeaving=!0,v.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},_a(i);l==="in-out"&&c.type!==ct&&(v.delayLeave=(S,b,_)=>{const P=ru(r,d);P[String(d.key)]=d,S._leaveCb=()=>{b(),S._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=_})}return i}}},Lp=Tp;function ru(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Cr(e,t,n,r){const{appear:s,mode:a,persisted:i=!1,onBeforeEnter:o,onEnter:l,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:f,onLeave:d,onAfterLeave:m,onLeaveCancelled:g,onBeforeAppear:v,onAppear:S,onAfterAppear:b,onAppearCancelled:_}=t,P=String(e.key),x=ru(n,e),F=(w,O)=>{w&<(w,r,9,O)},Z=(w,O)=>{const H=O[1];F(w,O),W(w)?w.every(R=>R.length<=1)&&H():w.length<=1&&H()},q={mode:a,persisted:i,beforeEnter(w){let O=o;if(!n.isMounted)if(s)O=v||o;else return;w._leaveCb&&w._leaveCb(!0);const H=x[P];H&&pn(e,H)&&H.el._leaveCb&&H.el._leaveCb(),F(O,[w])},enter(w){let O=l,H=c,R=u;if(!n.isMounted)if(s)O=S||l,H=b||c,R=_||u;else return;let N=!1;const V=w._enterCb=be=>{N||(N=!0,be?F(R,[w]):F(H,[w]),q.delayedLeave&&q.delayedLeave(),w._enterCb=void 0)};O?Z(O,[w,V]):V()},leave(w,O){const H=String(e.key);if(w._enterCb&&w._enterCb(!0),n.isUnmounting)return O();F(f,[w]);let R=!1;const N=w._leaveCb=V=>{R||(R=!0,O(),V?F(g,[w]):F(m,[w]),w._leaveCb=void 0,x[H]===e&&delete x[H])};x[H]=e,d?Z(d,[w,N]):N()},clone(w){return Cr(w,t,n,r)}};return q}function _a(e){if(Qs(e))return e=rn(e),e.children=null,e}function Do(e){return Qs(e)?e.children?e.children[0]:void 0:e}function Or(e,t){e.shapeFlag&6&&e.component?Or(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ui(e,t=!1,n){let r=[],s=0;for(let a=0;a1)for(let a=0;aTe({name:e.name},t,{setup:e}))():e}const mr=e=>!!e.type.__asyncLoader,Qs=e=>e.type.__isKeepAlive;function su(e,t){iu(e,"a",t)}function au(e,t){iu(e,"da",t)}function iu(e,t,n=Ie){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Zs(t,r,n),n){let s=n.parent;for(;s&&s.parent;)Qs(s.parent.vnode)&&Pp(r,t,n,s),s=s.parent}}function Pp(e,t,n,r){const s=Zs(t,e,r,!0);ea(()=>{Si(r[t],s)},n)}function Zs(e,t,n=Ie,r=!1){if(n){const s=n[e]||(n[e]=[]),a=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;Jn(),jn(n);const o=lt(t,n,e,i);return bn(),Xn(),o});return r?s.unshift(a):s.push(a),a}}const zt=e=>(t,n=Ie)=>(!Pr||e==="sp")&&Zs(e,(...r)=>t(...r),n),ou=zt("bm"),kn=zt("m"),Rp=zt("bu"),lu=zt("u"),cu=zt("bum"),ea=zt("um"),Mp=zt("sp"),Np=zt("rtg"),Ip=zt("rtc");function $p(e,t=Ie){Zs("ec",e,t)}const Ki="components";function je(e,t){return fu(Ki,e,!0,t)||e}const uu=Symbol.for("v-ndc");function Fp(e){return Le(e)?fu(Ki,e,!1)||e:e||uu}function fu(e,t,n=!0,r=!1){const s=De||Ie;if(s){const a=s.type;if(e===Ki){const o=pm(a,!1);if(o&&(o===t||o===St(t)||o===qs(St(t))))return a}const i=zo(s[e]||a[e],t)||zo(s.appContext[e],t);return!i&&r?a:i}}function zo(e,t){return e&&(e[t]||e[St(t)]||e[qs(St(t))])}function Wi(e,t,n,r){let s;const a=n&&n[r];if(W(e)||Le(e)){s=new Array(e.length);for(let i=0,o=e.length;it(i,o,void 0,a&&a[o]));else{const i=Object.keys(e);s=new Array(i.length);for(let o=0,l=i.length;oIs(t)?!(t.type===ct||t.type===Ne&&!du(t.children)):!0)?e:null}const Ga=e=>e?xu(e)?ra(e)||e.proxy:Ga(e.parent):null,hr=Te(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ga(e.parent),$root:e=>Ga(e.root),$emit:e=>e.emit,$options:e=>qi(e),$forceUpdate:e=>e.f||(e.f=()=>Bi(e.update)),$nextTick:e=>e.n||(e.n=Zn.bind(e.proxy)),$watch:e=>Op.bind(e)}),Ea=(e,t)=>e!==_e&&!e.__isScriptSetup&&le(e,t),Hp={get({_:e},t){const{ctx:n,setupState:r,data:s,props:a,accessCache:i,type:o,appContext:l}=e;let c;if(t[0]!=="$"){const m=i[t];if(m!==void 0)switch(m){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return a[t]}else{if(Ea(r,t))return i[t]=1,r[t];if(s!==_e&&le(s,t))return i[t]=2,s[t];if((c=e.propsOptions[0])&&le(c,t))return i[t]=3,a[t];if(n!==_e&&le(n,t))return i[t]=4,n[t];Ja&&(i[t]=0)}}const u=hr[t];let f,d;if(u)return t==="$attrs"&&tt(e,"get",t),u(e);if((f=o.__cssModules)&&(f=f[t]))return f;if(n!==_e&&le(n,t))return i[t]=4,n[t];if(d=l.config.globalProperties,le(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:a}=e;return Ea(s,t)?(s[t]=n,!0):r!==_e&&le(r,t)?(r[t]=n,!0):le(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(a[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:a}},i){let o;return!!n[i]||e!==_e&&le(e,i)||Ea(t,i)||(o=a[0])&&le(o,i)||le(r,i)||le(hr,i)||le(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:le(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Dp(){return zp().attrs}function zp(){const e=er();return e.setupContext||(e.setupContext=Au(e))}function Bo(e){return W(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Ja=!0;function Bp(e){const t=qi(e),n=e.proxy,r=e.ctx;Ja=!1,t.beforeCreate&&jo(t.beforeCreate,e,"bc");const{data:s,computed:a,methods:i,watch:o,provide:l,inject:c,created:u,beforeMount:f,mounted:d,beforeUpdate:m,updated:g,activated:v,deactivated:S,beforeDestroy:b,beforeUnmount:_,destroyed:P,unmounted:x,render:F,renderTracked:Z,renderTriggered:q,errorCaptured:w,serverPrefetch:O,expose:H,inheritAttrs:R,components:N,directives:V,filters:be}=t;if(c&&jp(c,r,null),i)for(const me in i){const ue=i[me];re(ue)&&(r[me]=ue.bind(n))}if(s){const me=s.call(n,n);ye(me)&&(e.data=Nt(me))}if(Ja=!0,a)for(const me in a){const ue=a[me],dt=re(ue)?ue.bind(n,n):re(ue.get)?ue.get.bind(n,n):vt,Ve=!re(ue)&&re(ue.set)?ue.set.bind(n):vt,it=ne({get:dt,set:Ve});Object.defineProperty(r,me,{enumerable:!0,configurable:!0,get:()=>it.value,set:Re=>it.value=Re})}if(o)for(const me in o)pu(o[me],r,n,me);if(l){const me=re(l)?l.call(n):l;Reflect.ownKeys(me).forEach(ue=>{Es(ue,me[ue])})}u&&jo(u,e,"c");function ae(me,ue){W(ue)?ue.forEach(dt=>me(dt.bind(n))):ue&&me(ue.bind(n))}if(ae(ou,f),ae(kn,d),ae(Rp,m),ae(lu,g),ae(su,v),ae(au,S),ae($p,w),ae(Ip,Z),ae(Np,q),ae(cu,_),ae(ea,x),ae(Mp,O),W(H))if(H.length){const me=e.exposed||(e.exposed={});H.forEach(ue=>{Object.defineProperty(me,ue,{get:()=>n[ue],set:dt=>n[ue]=dt})})}else e.exposed||(e.exposed={});F&&e.render===vt&&(e.render=F),R!=null&&(e.inheritAttrs=R),N&&(e.components=N),V&&(e.directives=V)}function jp(e,t,n=vt){W(e)&&(e=Xa(e));for(const r in e){const s=e[r];let a;ye(s)?"default"in s?a=et(s.from||r,s.default,!0):a=et(s.from||r):a=et(s),Se(a)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>a.value,set:i=>a.value=i}):t[r]=a}}function jo(e,t,n){lt(W(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function pu(e,t,n,r){const s=r.includes(".")?Zc(n,r):()=>n[r];if(Le(e)){const a=t[e];re(a)&&ze(s,a)}else if(re(e))ze(s,e.bind(n));else if(ye(e))if(W(e))e.forEach(a=>pu(a,t,n,r));else{const a=re(e.handler)?e.handler.bind(n):t[e.handler];re(a)&&ze(s,a,e)}}function qi(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:a,config:{optionMergeStrategies:i}}=e.appContext,o=a.get(t);let l;return o?l=o:!s.length&&!n&&!r?l=t:(l={},s.length&&s.forEach(c=>Ns(l,c,i,!0)),Ns(l,t,i)),ye(t)&&a.set(t,l),l}function Ns(e,t,n,r=!1){const{mixins:s,extends:a}=t;a&&Ns(e,a,n,!0),s&&s.forEach(i=>Ns(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const o=Vp[i]||n&&n[i];e[i]=o?o(e[i],t[i]):t[i]}return e}const Vp={data:Vo,props:Uo,emits:Uo,methods:dr,computed:dr,beforeCreate:Ge,created:Ge,beforeMount:Ge,mounted:Ge,beforeUpdate:Ge,updated:Ge,beforeDestroy:Ge,beforeUnmount:Ge,destroyed:Ge,unmounted:Ge,activated:Ge,deactivated:Ge,errorCaptured:Ge,serverPrefetch:Ge,components:dr,directives:dr,watch:Kp,provide:Vo,inject:Up};function Vo(e,t){return t?e?function(){return Te(re(e)?e.call(this,this):e,re(t)?t.call(this,this):t)}:t:e}function Up(e,t){return dr(Xa(e),Xa(t))}function Xa(e){if(W(e)){const t={};for(let n=0;n1)return n&&re(t)?t.call(r&&r.proxy):t}}function Yp(){return!!(Ie||De||Tr)}function Gp(e,t,n,r=!1){const s={},a={};Ls(a,na,1),e.propsDefaults=Object.create(null),hu(e,t,s,a);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:jc(s):e.type.props?e.props=s:e.props=a,e.attrs=a}function Jp(e,t,n,r){const{props:s,attrs:a,vnode:{patchFlag:i}}=e,o=oe(s),[l]=e.propsOptions;let c=!1;if((r||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let f=0;f{l=!0;const[d,m]=gu(f,t,!0);Te(i,d),m&&o.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!a&&!l)return ye(e)&&r.set(e,Fn),Fn;if(W(a))for(let u=0;u-1,m[1]=v<0||g-1||le(m,"default"))&&o.push(f)}}}const c=[i,o];return ye(e)&&r.set(e,c),c}function Ko(e){return e[0]!=="$"}function Wo(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function qo(e,t){return Wo(e)===Wo(t)}function Yo(e,t){return W(t)?t.findIndex(n=>qo(n,e)):re(t)&&qo(t,e)?0:-1}const vu=e=>e[0]==="_"||e==="$stable",Yi=e=>W(e)?e.map(_t):[_t(e)],Xp=(e,t,n)=>{if(t._n)return t;const r=Ye((...s)=>Yi(t(...s)),n);return r._c=!1,r},yu=(e,t,n)=>{const r=e._ctx;for(const s in e){if(vu(s))continue;const a=e[s];if(re(a))t[s]=Xp(s,a,r);else if(a!=null){const i=Yi(a);t[s]=()=>i}}},bu=(e,t)=>{const n=Yi(t);e.slots.default=()=>n},Qp=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=oe(t),Ls(t,"_",n)):yu(t,e.slots={})}else e.slots={},t&&bu(e,t);Ls(e.slots,na,1)},Zp=(e,t,n)=>{const{vnode:r,slots:s}=e;let a=!0,i=_e;if(r.shapeFlag&32){const o=t._;o?n&&o===1?a=!1:(Te(s,t),!n&&o===1&&delete s._):(a=!t.$stable,yu(t,s)),i=t}else t&&(bu(e,t),i={default:1});if(a)for(const o in s)!vu(o)&&!(o in i)&&delete s[o]};function Za(e,t,n,r,s=!1){if(W(e)){e.forEach((d,m)=>Za(d,t&&(W(t)?t[m]:t),n,r,s));return}if(mr(r)&&!s)return;const a=r.shapeFlag&4?ra(r.component)||r.component.proxy:r.el,i=s?null:a,{i:o,r:l}=e,c=t&&t.r,u=o.refs===_e?o.refs={}:o.refs,f=o.setupState;if(c!=null&&c!==l&&(Le(c)?(u[c]=null,le(f,c)&&(f[c]=null)):Se(c)&&(c.value=null)),re(l))en(l,o,12,[i,u]);else{const d=Le(l),m=Se(l);if(d||m){const g=()=>{if(e.f){const v=d?le(f,l)?f[l]:u[l]:l.value;s?W(v)&&Si(v,a):W(v)?v.includes(a)||v.push(a):d?(u[l]=[a],le(f,l)&&(f[l]=u[l])):(l.value=[a],e.k&&(u[e.k]=l.value))}else d?(u[l]=i,le(f,l)&&(f[l]=i)):m&&(l.value=i,e.k&&(u[e.k]=i))};i?(g.id=-1,Qe(g,n)):g()}}}const Qe=Cp;function em(e){return tm(e)}function tm(e,t){const n=Ua();n.__VUE__=!0;const{insert:r,remove:s,patchProp:a,createElement:i,createText:o,createComment:l,setText:c,setElementText:u,parentNode:f,nextSibling:d,setScopeId:m=vt,insertStaticContent:g}=e,v=(p,h,y,E=null,C=null,T=null,z=!1,M=null,I=!!h.dynamicChildren)=>{if(p===h)return;p&&!pn(p,h)&&(E=A(p),Re(p,C,T,!0),p=null),h.patchFlag===-2&&(I=!1,h.dynamicChildren=null);const{type:L,ref:J,shapeFlag:U}=h;switch(L){case ta:S(p,h,y,E);break;case ct:b(p,h,y,E);break;case xa:p==null&&_(h,y,E,z);break;case Ne:N(p,h,y,E,C,T,z,M,I);break;default:U&1?F(p,h,y,E,C,T,z,M,I):U&6?V(p,h,y,E,C,T,z,M,I):(U&64||U&128)&&L.process(p,h,y,E,C,T,z,M,I,$)}J!=null&&C&&Za(J,p&&p.ref,T,h||p,!h)},S=(p,h,y,E)=>{if(p==null)r(h.el=o(h.children),y,E);else{const C=h.el=p.el;h.children!==p.children&&c(C,h.children)}},b=(p,h,y,E)=>{p==null?r(h.el=l(h.children||""),y,E):h.el=p.el},_=(p,h,y,E)=>{[p.el,p.anchor]=g(p.children,h,y,E,p.el,p.anchor)},P=({el:p,anchor:h},y,E)=>{let C;for(;p&&p!==h;)C=d(p),r(p,y,E),p=C;r(h,y,E)},x=({el:p,anchor:h})=>{let y;for(;p&&p!==h;)y=d(p),s(p),p=y;s(h)},F=(p,h,y,E,C,T,z,M,I)=>{z=z||h.type==="svg",p==null?Z(h,y,E,C,T,z,M,I):O(p,h,C,T,z,M,I)},Z=(p,h,y,E,C,T,z,M)=>{let I,L;const{type:J,props:U,shapeFlag:X,transition:ee,dirs:ie}=p;if(I=p.el=i(p.type,T,U&&U.is,U),X&8?u(I,p.children):X&16&&w(p.children,I,null,E,C,T&&J!=="foreignObject",z,M),ie&&cn(p,null,E,"created"),q(I,p,p.scopeId,z,E),U){for(const ve in U)ve!=="value"&&!ws(ve)&&a(I,ve,null,U[ve],T,p.children,E,C,Ue);"value"in U&&a(I,"value",null,U.value),(L=U.onVnodeBeforeMount)&&wt(L,E,p)}ie&&cn(p,null,E,"beforeMount");const we=(!C||C&&!C.pendingBranch)&&ee&&!ee.persisted;we&&ee.beforeEnter(I),r(I,h,y),((L=U&&U.onVnodeMounted)||we||ie)&&Qe(()=>{L&&wt(L,E,p),we&&ee.enter(I),ie&&cn(p,null,E,"mounted")},C)},q=(p,h,y,E,C)=>{if(y&&m(p,y),E)for(let T=0;T{for(let L=I;L{const M=h.el=p.el;let{patchFlag:I,dynamicChildren:L,dirs:J}=h;I|=p.patchFlag&16;const U=p.props||_e,X=h.props||_e;let ee;y&&un(y,!1),(ee=X.onVnodeBeforeUpdate)&&wt(ee,y,h,p),J&&cn(h,p,y,"beforeUpdate"),y&&un(y,!0);const ie=C&&h.type!=="foreignObject";if(L?H(p.dynamicChildren,L,M,y,E,ie,T):z||ue(p,h,M,null,y,E,ie,T,!1),I>0){if(I&16)R(M,h,U,X,y,E,C);else if(I&2&&U.class!==X.class&&a(M,"class",null,X.class,C),I&4&&a(M,"style",U.style,X.style,C),I&8){const we=h.dynamicProps;for(let ve=0;ve{ee&&wt(ee,y,h,p),J&&cn(h,p,y,"updated")},E)},H=(p,h,y,E,C,T,z)=>{for(let M=0;M{if(y!==E){if(y!==_e)for(const M in y)!ws(M)&&!(M in E)&&a(p,M,y[M],null,z,h.children,C,T,Ue);for(const M in E){if(ws(M))continue;const I=E[M],L=y[M];I!==L&&M!=="value"&&a(p,M,L,I,z,h.children,C,T,Ue)}"value"in E&&a(p,"value",y.value,E.value)}},N=(p,h,y,E,C,T,z,M,I)=>{const L=h.el=p?p.el:o(""),J=h.anchor=p?p.anchor:o("");let{patchFlag:U,dynamicChildren:X,slotScopeIds:ee}=h;ee&&(M=M?M.concat(ee):ee),p==null?(r(L,y,E),r(J,y,E),w(h.children,y,J,C,T,z,M,I)):U>0&&U&64&&X&&p.dynamicChildren?(H(p.dynamicChildren,X,y,C,T,z,M),(h.key!=null||C&&h===C.subTree)&&wu(p,h,!0)):ue(p,h,y,J,C,T,z,M,I)},V=(p,h,y,E,C,T,z,M,I)=>{h.slotScopeIds=M,p==null?h.shapeFlag&512?C.ctx.activate(h,y,E,z,I):be(h,y,E,C,T,z,I):Ce(p,h,I)},be=(p,h,y,E,C,T,z)=>{const M=p.component=cm(p,E,C);if(Qs(p)&&(M.ctx.renderer=$),um(M),M.asyncDep){if(C&&C.registerDep(M,ae),!p.el){const I=M.subTree=pe(ct);b(null,I,h,y)}return}ae(M,p,h,y,C,T,z)},Ce=(p,h,y)=>{const E=h.component=p.component;if(kp(p,h,y))if(E.asyncDep&&!E.asyncResolved){me(E,h,y);return}else E.next=h,yp(E.update),E.update();else h.el=p.el,E.vnode=h},ae=(p,h,y,E,C,T,z)=>{const M=()=>{if(p.isMounted){let{next:J,bu:U,u:X,parent:ee,vnode:ie}=p,we=J,ve;un(p,!1),J?(J.el=ie.el,me(p,J,z)):J=ie,U&&_s(U),(ve=J.props&&J.props.onVnodeBeforeUpdate)&&wt(ve,ee,J,ie),un(p,!0);const Pe=wa(p),pt=p.subTree;p.subTree=Pe,v(pt,Pe,f(pt.el),A(pt),p,C,T),J.el=Pe.el,we===null&&Ap(p,Pe.el),X&&Qe(X,C),(ve=J.props&&J.props.onVnodeUpdated)&&Qe(()=>wt(ve,ee,J,ie),C)}else{let J;const{el:U,props:X}=h,{bm:ee,m:ie,parent:we}=p,ve=mr(h);if(un(p,!1),ee&&_s(ee),!ve&&(J=X&&X.onVnodeBeforeMount)&&wt(J,we,h),un(p,!0),U&&de){const Pe=()=>{p.subTree=wa(p),de(U,p.subTree,p,C,null)};ve?h.type.__asyncLoader().then(()=>!p.isUnmounted&&Pe()):Pe()}else{const Pe=p.subTree=wa(p);v(null,Pe,y,E,p,C,T),h.el=Pe.el}if(ie&&Qe(ie,C),!ve&&(J=X&&X.onVnodeMounted)){const Pe=h;Qe(()=>wt(J,we,Pe),C)}(h.shapeFlag&256||we&&mr(we.vnode)&&we.vnode.shapeFlag&256)&&p.a&&Qe(p.a,C),p.isMounted=!0,h=y=E=null}},I=p.effect=new Pi(M,()=>Bi(L),p.scope),L=p.update=()=>I.run();L.id=p.uid,un(p,!0),L()},me=(p,h,y)=>{h.component=p;const E=p.vnode.props;p.vnode=h,p.next=null,Jp(p,h.props,E,y),Zp(p,h.children,y),Jn(),Fo(),Xn()},ue=(p,h,y,E,C,T,z,M,I=!1)=>{const L=p&&p.children,J=p?p.shapeFlag:0,U=h.children,{patchFlag:X,shapeFlag:ee}=h;if(X>0){if(X&128){Ve(L,U,y,E,C,T,z,M,I);return}else if(X&256){dt(L,U,y,E,C,T,z,M,I);return}}ee&8?(J&16&&Ue(L,C,T),U!==L&&u(y,U)):J&16?ee&16?Ve(L,U,y,E,C,T,z,M,I):Ue(L,C,T,!0):(J&8&&u(y,""),ee&16&&w(U,y,E,C,T,z,M,I))},dt=(p,h,y,E,C,T,z,M,I)=>{p=p||Fn,h=h||Fn;const L=p.length,J=h.length,U=Math.min(L,J);let X;for(X=0;XJ?Ue(p,C,T,!0,!1,U):w(h,y,E,C,T,z,M,I,U)},Ve=(p,h,y,E,C,T,z,M,I)=>{let L=0;const J=h.length;let U=p.length-1,X=J-1;for(;L<=U&&L<=X;){const ee=p[L],ie=h[L]=I?Jt(h[L]):_t(h[L]);if(pn(ee,ie))v(ee,ie,y,null,C,T,z,M,I);else break;L++}for(;L<=U&&L<=X;){const ee=p[U],ie=h[X]=I?Jt(h[X]):_t(h[X]);if(pn(ee,ie))v(ee,ie,y,null,C,T,z,M,I);else break;U--,X--}if(L>U){if(L<=X){const ee=X+1,ie=eeX)for(;L<=U;)Re(p[L],C,T,!0),L++;else{const ee=L,ie=L,we=new Map;for(L=ie;L<=X;L++){const nt=h[L]=I?Jt(h[L]):_t(h[L]);nt.key!=null&&we.set(nt.key,L)}let ve,Pe=0;const pt=X-ie+1;let Sn=!1,ko=0;const ar=new Array(pt);for(L=0;L=pt){Re(nt,C,T,!0);continue}let bt;if(nt.key!=null)bt=we.get(nt.key);else for(ve=ie;ve<=X;ve++)if(ar[ve-ie]===0&&pn(nt,h[ve])){bt=ve;break}bt===void 0?Re(nt,C,T,!0):(ar[bt-ie]=L+1,bt>=ko?ko=bt:Sn=!0,v(nt,h[bt],y,null,C,T,z,M,I),Pe++)}const Ao=Sn?nm(ar):Fn;for(ve=Ao.length-1,L=pt-1;L>=0;L--){const nt=ie+L,bt=h[nt],So=nt+1{const{el:T,type:z,transition:M,children:I,shapeFlag:L}=p;if(L&6){it(p.component.subTree,h,y,E);return}if(L&128){p.suspense.move(h,y,E);return}if(L&64){z.move(p,h,y,$);return}if(z===Ne){r(T,h,y);for(let U=0;UM.enter(T),C);else{const{leave:U,delayLeave:X,afterLeave:ee}=M,ie=()=>r(T,h,y),we=()=>{U(T,()=>{ie(),ee&&ee()})};X?X(T,ie,we):we()}else r(T,h,y)},Re=(p,h,y,E=!1,C=!1)=>{const{type:T,props:z,ref:M,children:I,dynamicChildren:L,shapeFlag:J,patchFlag:U,dirs:X}=p;if(M!=null&&Za(M,null,y,p,!0),J&256){h.ctx.deactivate(p);return}const ee=J&1&&X,ie=!mr(p);let we;if(ie&&(we=z&&z.onVnodeBeforeUnmount)&&wt(we,h,p),J&6)Jr(p.component,y,E);else{if(J&128){p.suspense.unmount(y,E);return}ee&&cn(p,null,h,"beforeUnmount"),J&64?p.type.remove(p,h,y,C,$,E):L&&(T!==Ne||U>0&&U&64)?Ue(L,h,y,!1,!0):(T===Ne&&U&384||!C&&J&16)&&Ue(I,h,y),E&&jt(p)}(ie&&(we=z&&z.onVnodeUnmounted)||ee)&&Qe(()=>{we&&wt(we,h,p),ee&&cn(p,null,h,"unmounted")},y)},jt=p=>{const{type:h,el:y,anchor:E,transition:C}=p;if(h===Ne){Ot(y,E);return}if(h===xa){x(p);return}const T=()=>{s(y),C&&!C.persisted&&C.afterLeave&&C.afterLeave()};if(p.shapeFlag&1&&C&&!C.persisted){const{leave:z,delayLeave:M}=C,I=()=>z(y,T);M?M(p.el,T,I):I()}else T()},Ot=(p,h)=>{let y;for(;p!==h;)y=d(p),s(p),p=y;s(h)},Jr=(p,h,y)=>{const{bum:E,scope:C,update:T,subTree:z,um:M}=p;E&&_s(E),C.stop(),T&&(T.active=!1,Re(z,p,h,y)),M&&Qe(M,h),Qe(()=>{p.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&p.asyncDep&&!p.asyncResolved&&p.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},Ue=(p,h,y,E=!1,C=!1,T=0)=>{for(let z=T;zp.shapeFlag&6?A(p.component.subTree):p.shapeFlag&128?p.suspense.next():d(p.anchor||p.el),j=(p,h,y)=>{p==null?h._vnode&&Re(h._vnode,null,null,!0):v(h._vnode||null,p,h,null,null,null,y),Fo(),Gc(),h._vnode=p},$={p:v,um:Re,m:it,r:jt,mt:be,mc:w,pc:ue,pbc:H,n:A,o:e};let Y,de;return t&&([Y,de]=t($)),{render:j,hydrate:Y,createApp:qp(j,Y)}}function un({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function wu(e,t,n=!1){const r=e.children,s=t.children;if(W(r)&&W(s))for(let a=0;a>1,e[n[o]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,i=n[a-1];a-- >0;)n[a]=i,i=t[i];return n}const rm=e=>e.__isTeleport,Ne=Symbol.for("v-fgt"),ta=Symbol.for("v-txt"),ct=Symbol.for("v-cmt"),xa=Symbol.for("v-stc"),gr=[];let ht=null;function D(e=!1){gr.push(ht=e?null:[])}function sm(){gr.pop(),ht=gr[gr.length-1]||null}let Lr=1;function Go(e){Lr+=e}function _u(e){return e.dynamicChildren=Lr>0?ht||Fn:null,sm(),Lr>0&&ht&&ht.push(e),e}function G(e,t,n,r,s,a){return _u(Q(e,t,n,r,s,a,!0))}function Be(e,t,n,r,s){return _u(pe(e,t,n,r,s,!0))}function Is(e){return e?e.__v_isVNode===!0:!1}function pn(e,t){return e.type===t.type&&e.key===t.key}const na="__vInternal",Eu=({key:e})=>e??null,xs=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Le(e)||Se(e)||re(e)?{i:De,r:e,k:t,f:!!n}:e:null);function Q(e,t=null,n=null,r=0,s=null,a=e===Ne?0:1,i=!1,o=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Eu(t),ref:t&&xs(t),scopeId:Qc,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:De};return o?(Gi(l,n),a&128&&e.normalize(l)):n&&(l.shapeFlag|=Le(n)?8:16),Lr>0&&!i&&ht&&(l.patchFlag>0||a&6)&&l.patchFlag!==32&&ht.push(l),l}const pe=am;function am(e,t=null,n=null,r=0,s=null,a=!1){if((!e||e===uu)&&(e=ct),Is(e)){const o=rn(e,t,!0);return n&&Gi(o,n),Lr>0&&!a&&ht&&(o.shapeFlag&6?ht[ht.indexOf(e)]=o:ht.push(o)),o.patchFlag|=-2,o}if(mm(e)&&(e=e.__vccOpts),t){t=im(t);let{class:o,style:l}=t;o&&!Le(o)&&(t.class=xe(o)),ye(l)&&(Vc(l)&&!W(l)&&(l=Te({},l)),t.style=tn(l))}const i=Le(e)?1:Sp(e)?128:rm(e)?64:ye(e)?4:re(e)?2:0;return Q(e,t,n,r,s,i,a,!0)}function im(e){return e?Vc(e)||na in e?Te({},e):e:null}function rn(e,t,n=!1){const{props:r,ref:s,patchFlag:a,children:i}=e,o=t?Ji(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:o,key:o&&Eu(o),ref:t&&t.ref?n&&s?W(s)?s.concat(xs(t)):[s,xs(t)]:xs(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ne?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&rn(e.ssContent),ssFallback:e.ssFallback&&rn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function He(e=" ",t=0){return pe(ta,null,e,t)}function fe(e="",t=!1){return t?(D(),Be(ct,null,e)):pe(ct,null,e)}function _t(e){return e==null||typeof e=="boolean"?pe(ct):W(e)?pe(Ne,null,e.slice()):typeof e=="object"?Jt(e):pe(ta,null,String(e))}function Jt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:rn(e)}function Gi(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(W(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Gi(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(na in t)?t._ctx=De:s===3&&De&&(De.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else re(t)?(t={default:t,_ctx:De},n=32):(t=String(t),r&64?(n=16,t=[He(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ji(...e){const t={};for(let n=0;nIe||De;let Xi,Cn,Jo="__VUE_INSTANCE_SETTERS__";(Cn=Ua()[Jo])||(Cn=Ua()[Jo]=[]),Cn.push(e=>Ie=e),Xi=e=>{Cn.length>1?Cn.forEach(t=>t(e)):Cn[0](e)};const jn=e=>{Xi(e),e.scope.on()},bn=()=>{Ie&&Ie.scope.off(),Xi(null)};function xu(e){return e.vnode.shapeFlag&4}let Pr=!1;function um(e,t=!1){Pr=t;const{props:n,children:r}=e.vnode,s=xu(e);Gp(e,n,s,t),Qp(e,r);const a=s?fm(e,t):void 0;return Pr=!1,a}function fm(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Gs(new Proxy(e.ctx,Hp));const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?Au(e):null;jn(e),Jn();const a=en(r,e,0,[e.props,s]);if(Xn(),bn(),xc(a)){if(a.then(bn,bn),t)return a.then(i=>{Xo(e,i,t)}).catch(i=>{Js(i,e,0)});e.asyncDep=a}else Xo(e,a,t)}else ku(e,t)}function Xo(e,t,n){re(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ye(t)&&(e.setupState=Kc(t)),ku(e,n)}let Qo;function ku(e,t,n){const r=e.type;if(!e.render){if(!t&&Qo&&!r.render){const s=r.template||qi(e).template;if(s){const{isCustomElement:a,compilerOptions:i}=e.appContext.config,{delimiters:o,compilerOptions:l}=r,c=Te(Te({isCustomElement:a,delimiters:o},i),l);r.render=Qo(s,c)}}e.render=r.render||vt}jn(e),Jn(),Bp(e),Xn(),bn()}function dm(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return tt(e,"get","$attrs"),t[n]}}))}function Au(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return dm(e)},slots:e.slots,emit:e.emit,expose:t}}function ra(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Kc(Gs(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in hr)return hr[n](e)},has(t,n){return n in t||n in hr}}))}function pm(e,t=!0){return re(e)?e.displayName||e.name:e.name||t&&e.__name}function mm(e){return re(e)&&"__vccOpts"in e}const ne=(e,t)=>hp(e,t,Pr);function sa(e,t,n){const r=arguments.length;return r===2?ye(t)&&!W(t)?Is(t)?pe(e,null,[t]):pe(e,t):pe(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Is(n)&&(n=[n]),pe(e,t,n))}const hm=Symbol.for("v-scx"),gm=()=>et(hm),vm="3.3.4",ym="http://www.w3.org/2000/svg",mn=typeof document<"u"?document:null,Zo=mn&&mn.createElement("template"),bm={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t?mn.createElementNS(ym,e):mn.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>mn.createTextNode(e),createComment:e=>mn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>mn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,a){const i=n?n.previousSibling:t.lastChild;if(s&&(s===a||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===a||!(s=s.nextSibling)););else{Zo.innerHTML=r?`${e}`:e;const o=Zo.content;if(r){const l=o.firstChild;for(;l.firstChild;)o.appendChild(l.firstChild);o.removeChild(l)}t.insertBefore(o,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function wm(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function _m(e,t,n){const r=e.style,s=Le(n);if(n&&!s){if(t&&!Le(t))for(const a in t)n[a]==null&&ei(r,a,"");for(const a in n)ei(r,a,n[a])}else{const a=r.display;s?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=a)}}const el=/\s*!important$/;function ei(e,t,n){if(W(n))n.forEach(r=>ei(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Em(e,t);el.test(n)?e.setProperty(En(r),n.replace(el,""),"important"):e[r]=n}}const tl=["Webkit","Moz","ms"],ka={};function Em(e,t){const n=ka[t];if(n)return n;let r=St(t);if(r!=="filter"&&r in e)return ka[t]=r;r=qs(r);for(let s=0;sAa||(Om.then(()=>Aa=0),Aa=Date.now());function Lm(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;lt(Pm(r,n.value),t,5,[r])};return n.value=e,n.attached=Tm(),n}function Pm(e,t){if(W(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const sl=/^on[a-z]/,Rm=(e,t,n,r,s=!1,a,i,o,l)=>{t==="class"?wm(e,r,s):t==="style"?_m(e,n,r):Ks(t)?Ai(t)||Sm(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Mm(e,t,r,s))?km(e,t,r,a,i,o,l):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),xm(e,t,r,s))};function Mm(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&sl.test(t)&&re(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||sl.test(t)&&Le(n)?!1:t in e}const Ut="transition",ir="animation",Su=(e,{slots:t})=>sa(Lp,Ou(e),t);Su.displayName="Transition";const Cu={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Nm=Su.props=Te({},nu,Cu),fn=(e,t=[])=>{W(e)?e.forEach(n=>n(...t)):e&&e(...t)},al=e=>e?W(e)?e.some(t=>t.length>1):e.length>1:!1;function Ou(e){const t={};for(const N in e)N in Cu||(t[N]=e[N]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:a=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:o=`${n}-enter-to`,appearFromClass:l=a,appearActiveClass:c=i,appearToClass:u=o,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,g=Im(s),v=g&&g[0],S=g&&g[1],{onBeforeEnter:b,onEnter:_,onEnterCancelled:P,onLeave:x,onLeaveCancelled:F,onBeforeAppear:Z=b,onAppear:q=_,onAppearCancelled:w=P}=t,O=(N,V,be)=>{Yt(N,V?u:o),Yt(N,V?c:i),be&&be()},H=(N,V)=>{N._isLeaving=!1,Yt(N,f),Yt(N,m),Yt(N,d),V&&V()},R=N=>(V,be)=>{const Ce=N?q:_,ae=()=>O(V,N,be);fn(Ce,[V,ae]),il(()=>{Yt(V,N?l:a),Pt(V,N?u:o),al(Ce)||ol(V,r,v,ae)})};return Te(t,{onBeforeEnter(N){fn(b,[N]),Pt(N,a),Pt(N,i)},onBeforeAppear(N){fn(Z,[N]),Pt(N,l),Pt(N,c)},onEnter:R(!1),onAppear:R(!0),onLeave(N,V){N._isLeaving=!0;const be=()=>H(N,V);Pt(N,f),Lu(),Pt(N,d),il(()=>{N._isLeaving&&(Yt(N,f),Pt(N,m),al(x)||ol(N,r,S,be))}),fn(x,[N,be])},onEnterCancelled(N){O(N,!1),fn(P,[N])},onAppearCancelled(N){O(N,!0),fn(w,[N])},onLeaveCancelled(N){H(N),fn(F,[N])}})}function Im(e){if(e==null)return null;if(ye(e))return[Sa(e.enter),Sa(e.leave)];{const t=Sa(e);return[t,t]}}function Sa(e){return kd(e)}function Pt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Yt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function il(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let $m=0;function ol(e,t,n,r){const s=e._endId=++$m,a=()=>{s===e._endId&&r()};if(n)return setTimeout(a,n);const{type:i,timeout:o,propCount:l}=Tu(e,t);if(!i)return r();const c=i+"end";let u=0;const f=()=>{e.removeEventListener(c,d),a()},d=m=>{m.target===e&&++u>=l&&f()};setTimeout(()=>{u(n[g]||"").split(", "),s=r(`${Ut}Delay`),a=r(`${Ut}Duration`),i=ll(s,a),o=r(`${ir}Delay`),l=r(`${ir}Duration`),c=ll(o,l);let u=null,f=0,d=0;t===Ut?i>0&&(u=Ut,f=i,d=a.length):t===ir?c>0&&(u=ir,f=c,d=l.length):(f=Math.max(i,c),u=f>0?i>c?Ut:ir:null,d=u?u===Ut?a.length:l.length:0);const m=u===Ut&&/\b(transform|all)(,|$)/.test(r(`${Ut}Property`).toString());return{type:u,timeout:f,propCount:d,hasTransform:m}}function ll(e,t){for(;e.lengthcl(n)+cl(e[r])))}function cl(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Lu(){return document.body.offsetHeight}const Pu=new WeakMap,Ru=new WeakMap,Mu={name:"TransitionGroup",props:Te({},Nm,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=er(),r=tu();let s,a;return lu(()=>{if(!s.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!Bm(s[0].el,n.vnode.el,i))return;s.forEach(Hm),s.forEach(Dm);const o=s.filter(zm);Lu(),o.forEach(l=>{const c=l.el,u=c.style;Pt(c,i),u.transform=u.webkitTransform=u.transitionDuration="";const f=c._moveCb=d=>{d&&d.target!==c||(!d||/transform$/.test(d.propertyName))&&(c.removeEventListener("transitionend",f),c._moveCb=null,Yt(c,i))};c.addEventListener("transitionend",f)})}),()=>{const i=oe(e),o=Ou(i);let l=i.tag||Ne;s=a,a=t.default?Ui(t.default()):[];for(let c=0;cdelete e.mode;Mu.props;const Nu=Mu;function Hm(e){const t=e.el;t._moveCb&&t._moveCb(),t._enterCb&&t._enterCb()}function Dm(e){Ru.set(e,e.el.getBoundingClientRect())}function zm(e){const t=Pu.get(e),n=Ru.get(e),r=t.left-n.left,s=t.top-n.top;if(r||s){const a=e.el.style;return a.transform=a.webkitTransform=`translate(${r}px,${s}px)`,a.transitionDuration="0s",e}}function Bm(e,t,n){const r=e.cloneNode();e._vtc&&e._vtc.forEach(i=>{i.split(/\s+/).forEach(o=>o&&r.classList.remove(o))}),n.split(/\s+/).forEach(i=>i&&r.classList.add(i)),r.style.display="none";const s=t.nodeType===1?t:t.parentNode;s.appendChild(r);const{hasTransform:a}=Tu(r);return s.removeChild(r),a}const $s=e=>{const t=e.props["onUpdate:modelValue"]||!1;return W(t)?n=>_s(t,n):t},jm={deep:!0,created(e,t,n){e._assign=$s(n),Qi(e,"change",()=>{const r=e._modelValue,s=Rr(e),a=e.checked,i=e._assign;if(W(r)){const o=Oi(r,s),l=o!==-1;if(a&&!l)i(r.concat(s));else if(!a&&l){const c=[...r];c.splice(o,1),i(c)}}else if(Gn(r)){const o=new Set(r);a?o.add(s):o.delete(s),i(o)}else i(Iu(e,a))})},mounted:ul,beforeUpdate(e,t,n){e._assign=$s(n),ul(e,t,n)}};function ul(e,{value:t,oldValue:n},r){e._modelValue=t,W(t)?e.checked=Oi(t,r.props.value)>-1:Gn(t)?e.checked=t.has(r.props.value):t!==n&&(e.checked=jr(t,Iu(e,!0)))}const Vm={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const s=Gn(t);Qi(e,"change",()=>{const a=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Sc(Rr(i)):Rr(i));e._assign(e.multiple?s?new Set(a):a:a[0])}),e._assign=$s(r)},mounted(e,{value:t}){fl(e,t)},beforeUpdate(e,t,n){e._assign=$s(n)},updated(e,{value:t}){fl(e,t)}};function fl(e,t){const n=e.multiple;if(!(n&&!W(t)&&!Gn(t))){for(let r=0,s=e.options.length;r-1:a.selected=t.has(i);else if(jr(Rr(a),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Rr(e){return"_value"in e?e._value:e.value}function Iu(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Um=["ctrl","shift","alt","meta"],Km={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Um.some(n=>e[`${n}Key`]&&!t.includes(n))},aa=(e,t)=>(n,...r)=>{for(let s=0;sn=>{if(!("key"in n))return;const r=En(n.key);if(t.some(s=>s===r||Wm[s]===r))return e(n)},gy={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):or(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),or(e,!0),r.enter(e)):r.leave(e,()=>{or(e,!1)}):or(e,t))},beforeUnmount(e,{value:t}){or(e,t)}};function or(e,t){e.style.display=t?e._vod:"none"}const qm=Te({patchProp:Rm},bm);let dl;function Ym(){return dl||(dl=em(qm))}const Gm=(...e)=>{const t=Ym().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Jm(r);if(!s)return;const a=t._component;!re(a)&&!a.render&&!a.template&&(a.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,s instanceof SVGElement);return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t};function Jm(e){return Le(e)?document.querySelector(e):e}(function(){var e;try{if(typeof document<"u"){var t=document.createElement("style");t.nonce=(e=document.head.querySelector("meta[property=csp-nonce]"))==null?void 0:e.content,t.appendChild(document.createTextNode(".vue-notification-group{display:block;position:fixed;z-index:5000}.vue-notification-wrapper{display:block;overflow:hidden;width:100%;margin:0;padding:0}.notification-title{font-weight:600}.vue-notification-template{display:block;box-sizing:border-box;background:white;text-align:left}.vue-notification{display:block;box-sizing:border-box;text-align:left;font-size:12px;padding:10px;margin:0 5px 5px;color:#fff;background:#44A4FC;border-left:5px solid #187FE7}.vue-notification.warn{background:#ffb648;border-left-color:#f48a06}.vue-notification.error{background:#E54D42;border-left-color:#b82e24}.vue-notification.success{background:#68CD86;border-left-color:#42a85f}.vn-fade-enter-active,.vn-fade-leave-active,.vn-fade-move{transition:all .5s}.vn-fade-enter-from,.vn-fade-leave-to{opacity:0}")),document.head.appendChild(t)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}})();const $u=new Map;class Xm{constructor(t,n,r){this.remaining=n,this.callback=t,this.notifyItem=r,this.resume()}pause(){clearTimeout(this.notifyItem.timer),this.remaining-=Date.now()-this.start}resume(){this.start=Date.now(),clearTimeout(this.notifyItem.timer),this.notifyItem.timer=setTimeout(this.callback,this.remaining)}}function Qm(e){return{all:e=e||new Map,on:function(t,n){var r=e.get(t);r?r.push(n):e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&(n?r.splice(r.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var r=e.get(t);r&&r.slice().map(function(s){s(n)}),(r=e.get("*"))&&r.slice().map(function(s){s(t,n)})}}}const Fs=Qm(),Ca="[-+]?[0-9]*.?[0-9]+",pl=[{name:"px",regexp:new RegExp(`^${Ca}px$`)},{name:"%",regexp:new RegExp(`^${Ca}%$`)},{name:"px",regexp:new RegExp(`^${Ca}$`)}],Zm=e=>{if(e==="auto")return{type:e,value:0};for(let t=0;t{switch(typeof e){case"number":return{type:"px",value:e};case"string":return Zm(e);default:return{type:"",value:e}}},ml={x:new Set(["left","center","right"]),y:new Set(["top","bottom"])},th=(e=>()=>e++)(0),nh=e=>typeof e!="string"?[]:e.split(/\s+/gi).filter(Boolean),rh=e=>{typeof e=="string"&&(e=nh(e));let t=null,n=null;return e.forEach(r=>{ml.y.has(r)&&(n=r),ml.x.has(r)&&(t=r)}),{x:t,y:n}},Oa={position:["top","right"],cssAnimation:"vn-fade",velocityAnimation:{enter:e=>({height:[e.clientHeight,0],opacity:[1,0]}),leave:{height:0,opacity:[0,1]}}},sh=xn({__name:"VelocityGroup",emits:["enter","leave","after-leave"],setup(e,{emit:t}){const n=(a,i)=>{t("enter",a,i)},r=(a,i)=>{t("leave",a,i)},s=()=>{t("after-leave")};return(a,i)=>(D(),Be(Nu,{tag:"span",css:!1,onEnter:n,onLeave:r,onAfterLeave:s},{default:Ye(()=>[ln(a.$slots,"default")]),_:3}))}}),ah=xn({inheritAttrs:!1,__name:"CssGroup",props:{name:{}},setup(e){return(t,n)=>(D(),Be(Nu,{tag:"span",name:t.name},{default:Ye(()=>[ln(t.$slots,"default")]),_:3},8,["name"]))}}),ih=["data-id"],oh=["onClick"],lh=["innerHTML"],ch=["innerHTML"],uh={key:0,class:"notification-title"},fh={class:"notification-content"},dh=xn({__name:"Notifications",props:{group:{default:""},width:{default:300},reverse:{type:Boolean,default:!1},position:{default:Oa.position},classes:{default:"vue-notification"},animationType:{default:"css"},animation:{default:Oa.velocityAnimation},animationName:{default:Oa.cssAnimation},speed:{default:300},duration:{default:3e3},delay:{default:0},max:{default:1/0},ignoreDuplicates:{type:Boolean,default:!1},closeOnClick:{type:Boolean,default:!0},pauseOnHover:{type:Boolean,default:!1},dangerouslySetInnerHtml:{type:Boolean,default:!1}},emits:["click","destroy","start"],setup(e,{emit:t}){const n=e,r={IDLE:0,DESTROYED:2},s=ge([]),a=ge(null),i=ge($u.get("velocity")),o=ne(()=>n.animationType==="velocity"),l=ne(()=>o.value?sh:ah),c=ne(()=>s.value.filter(R=>R.state!==r.DESTROYED)),u=ne(()=>eh(n.width)),f=ne(()=>{const{x:R,y:N}=rh(n.position),V=u.value.value,be=u.value.type,Ce={width:V+be};return N&&(Ce[N]="0px"),R&&(R==="center"?Ce.left=`calc(50% - ${+V/2}${be})`:Ce[R]="0px"),Ce}),d=ne(()=>"bottom"in f.value),m=R=>{t("click",R),n.closeOnClick&&x(R)},g=()=>{var R;n.pauseOnHover&&((R=a.value)==null||R.pause())},v=()=>{var R;n.pauseOnHover&&((R=a.value)==null||R.resume())},S=(R={})=>{if(R.group||(R.group=""),R.data||(R.data={}),n.group!==R.group)return;if(R.clean||R.clear){Z();return}const N=typeof R.duration=="number"?R.duration:n.duration,V=typeof R.speed=="number"?R.speed:n.speed,be=typeof R.ignoreDuplicates=="boolean"?R.ignoreDuplicates:n.ignoreDuplicates,{title:Ce,text:ae,type:me,data:ue,id:dt}=R,Ve={id:dt||th(),title:Ce,text:ae,type:me,state:r.IDLE,speed:V,length:N+2*V,data:ue};N>=0&&(a.value=new Xm(()=>x(Ve),Ve.length,Ve));const it=n.reverse?!d.value:d.value;let Re=-1;const jt=c.value.some(Ot=>Ot.title===R.title&&Ot.text===R.text);(!be||!jt)&&(it?(s.value.push(Ve),t("start",Ve),c.value.length>n.max&&(Re=0)):(s.value.unshift(Ve),t("start",Ve),c.value.length>n.max&&(Re=c.value.length-1)),Re!==-1&&x(c.value[Re]))},b=R=>{F(R)},_=R=>["vue-notification-template",n.classes,R.type||""],P=R=>o.value?void 0:{transition:`all ${R.speed}ms`},x=R=>{clearTimeout(R.timer),R.state=r.DESTROYED,H(),t("destroy",R)},F=R=>{const N=s.value.find(V=>V.id===R);N&&x(N)},Z=()=>{c.value.forEach(x)},q=(R,N)=>{var V;const be=(V=n.animation)==null?void 0:V[R];return typeof be=="function"?be(N):be},w=(R,N)=>{if(!o.value)return;const V=q("enter",R);i.value(R,V,{duration:n.speed,complete:N})},O=(R,N)=>{if(!o.value)return;const V=q("leave",R);i.value(R,V,{duration:n.speed,complete:N})};function H(){s.value=s.value.filter(R=>R.state!==r.DESTROYED)}return kn(()=>{Fs.on("add",S),Fs.on("close",b)}),(R,N)=>(D(),G("div",{class:"vue-notification-group",style:tn(f.value)},[(D(),Be(Fp(l.value),{name:R.animationName,onEnter:w,onLeave:O,onAfterLeave:H},{default:Ye(()=>[(D(!0),G(Ne,null,Wi(c.value,V=>(D(),G("div",{key:V.id,class:"vue-notification-wrapper",style:tn(P(V)),"data-id":V.id,onMouseenter:g,onMouseleave:v},[ln(R.$slots,"body",{class:xe([R.classes,V.type]),item:V,close:()=>x(V)},()=>[Q("div",{class:xe(_(V)),onClick:be=>m(V)},[R.dangerouslySetInnerHtml?(D(),G(Ne,{key:0},[V.title?(D(),G("div",{key:0,class:"notification-title",innerHTML:V.title},null,8,lh)):fe("",!0),Q("div",{class:"notification-content",innerHTML:V.text},null,8,ch)],64)):(D(),G(Ne,{key:1},[V.title?(D(),G("div",uh,Ae(V.title),1)):fe("",!0),Q("div",fh,Ae(V.text),1)],64))],10,oh)])],44,ih))),128))]),_:3},40,["name"]))],4))}}),Zi=e=>{typeof e=="string"&&(e={title:"",text:e}),typeof e=="object"&&Fs.emit("add",e)};Zi.close=e=>{Fs.emit("close",e)};const Fu=()=>({notify:Zi});function ph(e,t={}){Object.entries(t).forEach(r=>$u.set(...r));const n=t.name||"notify";e.config.globalProperties["$"+n]=Zi,e.component(t.componentName||"Notifications",dh)}const mh={install:ph};/*! * vue-router v4.2.4 * (c) 2023 Eduardo San Martin Morote * @license MIT @@ -8,7 +8,7 @@ * @license MIT */let lf;const la=e=>lf=e,cf=Symbol();function ai(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var br;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(br||(br={}));function I1(){const e=Lc(!0),t=e.run(()=>ge({}));let n=[],r=[];const s=Gs({install(a){la(s),s._a=a,a.provide(cf,s),a.config.globalProperties.$pinia=s,r.forEach(i=>n.push(i)),r=[]},use(a){return!this._a&&!N1?r.push(a):n.push(a),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const uf=()=>{};function Ml(e,t,n,r=uf){e.push(t);const s=()=>{const a=e.indexOf(t);a>-1&&(e.splice(a,1),r())};return!n&&Ti()&&Pc(s),s}function On(e,...t){e.slice().forEach(n=>{n(...t)})}const $1=e=>e();function ii(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];ai(s)&&ai(r)&&e.hasOwnProperty(n)&&!Se(r)&&!Zt(r)?e[n]=ii(s,r):e[n]=r}return e}const F1=Symbol();function H1(e){return!ai(e)||!e.hasOwnProperty(F1)}const{assign:Gt}=Object;function D1(e){return!!(Se(e)&&e.effect)}function z1(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=up(n.state.value[e]);return Gt(u,a,Object.keys(i||{}).reduce((f,d)=>(f[d]=Gs(ne(()=>{la(n);const m=n._s.get(e);return i[d].call(m,m)})),f),{}))}return l=ff(e,c,t,n,r,!0),l}function ff(e,t,n={},r,s,a){let i;const o=Gt({actions:{}},n),l={deep:!0};let c,u,f=[],d=[],m;const g=r.state.value[e];!a&&!g&&(r.state.value[e]={}),ge({});let v;function S(w){let O;c=u=!1,typeof w=="function"?(w(r.state.value[e]),O={type:br.patchFunction,storeId:e,events:m}):(ii(r.state.value[e],w),O={type:br.patchObject,payload:w,storeId:e,events:m});const H=v=Symbol();Zn().then(()=>{v===H&&(c=!0)}),u=!0,On(f,O,r.state.value[e])}const b=a?function(){const{state:O}=n,H=O?O():{};this.$patch(R=>{Gt(R,H)})}:uf;function _(){i.stop(),f=[],d=[],r._s.delete(e)}function P(w,O){return function(){la(r);const H=Array.from(arguments),R=[],N=[];function V(ae){R.push(ae)}function be(ae){N.push(ae)}On(d,{args:H,name:w,store:F,after:V,onError:be});let Ce;try{Ce=O.apply(this&&this.$id===e?this:F,H)}catch(ae){throw On(N,ae),ae}return Ce instanceof Promise?Ce.then(ae=>(On(R,ae),ae)).catch(ae=>(On(N,ae),Promise.reject(ae))):(On(R,Ce),Ce)}}const x={_p:r,$id:e,$onAction:Ml.bind(null,d),$patch:S,$reset:b,$subscribe(w,O={}){const H=Ml(f,w,O.detached,()=>R()),R=i.run(()=>ze(()=>r.state.value[e],N=>{(O.flush==="sync"?u:c)&&w({storeId:e,type:br.direct,events:m},N)},Gt({},l,O)));return H},$dispose:_},F=Nt(x);r._s.set(e,F);const Z=r._a&&r._a.runWithContext||$1,q=r._e.run(()=>(i=Lc(),Z(()=>i.run(t))));for(const w in q){const O=q[w];if(Se(O)&&!D1(O)||Zt(O))a||(g&&H1(O)&&(Se(O)?O.value=g[w]:ii(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 Gt(F,q),Gt(oe(F),q),Object.defineProperty(F,"$state",{get:()=>r.state.value[e],set:w=>{S(O=>{Gt(O,w)})}}),r._p.forEach(w=>{Gt(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 Ur(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=Yp();return o=o||(c?et(cf,null):null),o&&la(o),o=lf,o._s.has(r)||(a?ff(r,t,s,o):z1(r,s,o)),o._s.get(r)}return i.$id=r,i}function df(e,t){return function(){return e.apply(t,arguments)}}const{toString:B1}=Object.prototype,{getPrototypeOf:ao}=Object,ca=(e=>t=>{const n=B1.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Ct=e=>(e=e.toLowerCase(),t=>ca(t)===e),ua=e=>t=>typeof t===e,{isArray:nr}=Array,Nr=ua("undefined");function j1(e){return e!==null&&!Nr(e)&&e.constructor!==null&&!Nr(e.constructor)&&ut(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const pf=Ct("ArrayBuffer");function V1(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&pf(e.buffer),t}const U1=ua("string"),ut=ua("function"),mf=ua("number"),fa=e=>e!==null&&typeof e=="object",K1=e=>e===!0||e===!1,ks=e=>{if(ca(e)!=="object")return!1;const t=ao(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},W1=Ct("Date"),q1=Ct("File"),Y1=Ct("Blob"),G1=Ct("FileList"),J1=e=>fa(e)&&ut(e.pipe),X1=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||ut(e.append)&&((t=ca(e))==="formdata"||t==="object"&&ut(e.toString)&&e.toString()==="[object FormData]"))},Q1=Ct("URLSearchParams"),Z1=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Kr(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),nr(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const gf=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global)(),vf=e=>!Nr(e)&&e!==gf;function oi(){const{caseless:e}=vf(this)&&this||{},t={},n=(r,s)=>{const a=e&&hf(t,s)||s;ks(t[a])&&ks(r)?t[a]=oi(t[a],r):ks(r)?t[a]=oi({},r):nr(r)?t[a]=r.slice():t[a]=r};for(let r=0,s=arguments.length;r(Kr(t,(s,a)=>{n&&ut(s)?e[a]=df(s,n):e[a]=s},{allOwnKeys:r}),e),t2=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),n2=(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)},r2=(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&&ao(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},s2=(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},a2=e=>{if(!e)return null;if(nr(e))return e;let t=e.length;if(!mf(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},i2=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&ao(Uint8Array)),o2=(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])}},l2=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},c2=Ct("HTMLFormElement"),u2=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),Nl=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),f2=Ct("RegExp"),yf=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};Kr(n,(s,a)=>{t(s,a,e)!==!1&&(r[a]=s)}),Object.defineProperties(e,r)},d2=e=>{yf(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+"'")})}})},p2=(e,t)=>{const n={},r=s=>{s.forEach(a=>{n[a]=!0})};return nr(e)?r(e):r(String(e).split(t)),n},m2=()=>{},h2=(e,t)=>(e=+e,Number.isFinite(e)?e:t),Ra="abcdefghijklmnopqrstuvwxyz",Il="0123456789",bf={DIGIT:Il,ALPHA:Ra,ALPHA_DIGIT:Ra+Ra.toUpperCase()+Il},g2=(e=16,t=bf.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function v2(e){return!!(e&&ut(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const y2=e=>{const t=new Array(10),n=(r,s)=>{if(fa(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[s]=r;const a=nr(r)?[]:{};return Kr(r,(i,o)=>{const l=n(i,s+1);!Nr(l)&&(a[o]=l)}),t[s]=void 0,a}}return r};return n(e,0)},b2=Ct("AsyncFunction"),w2=e=>e&&(fa(e)||ut(e))&&ut(e.then)&&ut(e.catch),k={isArray:nr,isArrayBuffer:pf,isBuffer:j1,isFormData:X1,isArrayBufferView:V1,isString:U1,isNumber:mf,isBoolean:K1,isObject:fa,isPlainObject:ks,isUndefined:Nr,isDate:W1,isFile:q1,isBlob:Y1,isRegExp:f2,isFunction:ut,isStream:J1,isURLSearchParams:Q1,isTypedArray:i2,isFileList:G1,forEach:Kr,merge:oi,extend:e2,trim:Z1,stripBOM:t2,inherits:n2,toFlatObject:r2,kindOf:ca,kindOfTest:Ct,endsWith:s2,toArray:a2,forEachEntry:o2,matchAll:l2,isHTMLForm:c2,hasOwnProperty:Nl,hasOwnProp:Nl,reduceDescriptors:yf,freezeMethods:d2,toObjectSet:p2,toCamelCase:u2,noop:m2,toFiniteNumber:h2,findKey:hf,global:gf,isContextDefined:vf,ALPHABET:bf,generateString:g2,isSpecCompliantForm:v2,toJSONObject:y2,isAsyncFn:b2,isThenable:w2};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 wf=ce.prototype,_f={};["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=>{_f[e]={value:e}});Object.defineProperties(ce,_f);Object.defineProperty(wf,"isAxiosError",{value:!0});ce.from=(e,t,n,r,s,a)=>{const i=Object.create(wf);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 _2=null;function li(e){return k.isPlainObject(e)||k.isArray(e)}function Ef(e){return k.endsWith(e,"[]")?e.slice(0,-2):e}function $l(e,t,n){return e?e.concat(t).map(function(s,a){return s=Ef(s),!n&&a?"["+s+"]":s}).join(n?".":""):t}function E2(e){return k.isArray(e)&&!e.some(li)}const x2=k.toFlatObject(k,{},null,function(t){return/^is[A-Z]/.test(t)});function da(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)&&E2(g)||(k.isFileList(g)||k.endsWith(v,"[]"))&&(b=k.toArray(g)))return v=Ef(v),b.forEach(function(P,x){!(k.isUndefined(P)||P===null)&&t.append(i===!0?$l([v],x,a):i===null?v:v+"[]",c(P))}),!1}return li(g)?!0:(t.append($l(S,v,a),c(g)),!1)}const f=[],d=Object.assign(x2,{defaultVisitor:u,convertValue:c,isVisitable:li});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 Fl(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function io(e,t){this._pairs=[],e&&da(e,this,t)}const xf=io.prototype;xf.append=function(t,n){this._pairs.push([t,n])};xf.toString=function(t){const n=t?function(r){return t.call(this,r,Fl)}:Fl;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function k2(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function kf(e,t,n){if(!t)return e;const r=n&&n.encode||k2,s=n&&n.serialize;let a;if(s?a=s(t,n):a=k.isURLSearchParams(t)?t.toString():new io(t,n).toString(r),a){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+a}return e}class A2{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 Hl=A2,Af={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},S2=typeof URLSearchParams<"u"?URLSearchParams:io,C2=typeof FormData<"u"?FormData:null,O2=typeof Blob<"u"?Blob:null,T2=(()=>{let e;return typeof navigator<"u"&&((e=navigator.product)==="ReactNative"||e==="NativeScript"||e==="NS")?!1:typeof window<"u"&&typeof document<"u"})(),L2=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),xt={isBrowser:!0,classes:{URLSearchParams:S2,FormData:C2,Blob:O2},isStandardBrowserEnv:T2,isStandardBrowserWebWorkerEnv:L2,protocols:["http","https","file","blob","url","data"]};function P2(e,t){return da(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 R2(e){return k.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function M2(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]=M2(s[i])),!o)}if(k.isFormData(e)&&k.isFunction(e.entries)){const n={};return k.forEachEntry(e,(r,s)=>{t(R2(r),s,n,0)}),n}return null}const N2={"Content-Type":void 0};function I2(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 pa={transitional:Af,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(Sf(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 P2(t,this.formSerializer).toString();if((o=k.isFileList(t))||r.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return da(o?{"files[]":t}:t,l&&new l,this.formSerializer)}}return a||s?(n.setContentType("application/json",!1),I2(t)):t}],transformResponse:[function(t){const n=this.transitional||pa.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){pa.headers[t]={}});k.forEach(["post","put","patch"],function(t){pa.headers[t]=k.merge(N2)});const oo=pa,$2=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"]),F2=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]&&$2[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},Dl=Symbol("internals");function cr(e){return e&&String(e).trim().toLowerCase()}function As(e){return e===!1||e==null?e:k.isArray(e)?e.map(As):String(e)}function H2(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 D2=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Ma(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 z2(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function B2(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 ma{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function a(o,l,c){const u=cr(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]=As(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())&&!D2(t)?i(F2(t),n):t!=null&&a(n,t,r),this}get(t,n){if(t=cr(t),t){const r=k.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return H2(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=cr(t),t){const r=k.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||Ma(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function a(i){if(i=cr(i),i){const o=k.findKey(r,i);o&&(!n||Ma(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||Ma(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]=As(s),delete n[a];return}const o=t?z2(a):String(a).trim();o!==a&&delete n[a],n[o]=As(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[Dl]=this[Dl]={accessors:{}}).accessors,s=this.prototype;function a(i){const o=cr(i);r[o]||(B2(s,i),r[o]=!0)}return k.isArray(t)?t.forEach(a):a(t),this}}ma.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);k.freezeMethods(ma.prototype);k.freezeMethods(ma);const It=ma;function Na(e,t){const n=this||oo,r=t||n,s=It.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 Cf(e){return!!(e&&e.__CANCEL__)}function Wr(e,t,n){ce.call(this,e??"canceled",ce.ERR_CANCELED,t,n),this.name="CanceledError"}k.inherits(Wr,ce,{__CANCEL__:!0});function j2(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 V2=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 U2(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function K2(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}function Of(e,t){return e&&!U2(t)?K2(e,t):t}const W2=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 q2(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function Y2(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 G2=typeof XMLHttpRequest<"u",J2=G2&&function(e){return new Promise(function(n,r){let s=e.data;const a=It.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=Of(e.baseURL,e.url);c.open(e.method.toUpperCase(),kf(u,e.params,e.paramsSerializer),!0),c.timeout=e.timeout;function f(){if(!c)return;const m=It.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};j2(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||Af;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||W2(u))&&e.xsrfCookieName&&V2.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",zl(e.onDownloadProgress,!0)),typeof e.onUploadProgress=="function"&&c.upload&&c.upload.addEventListener("progress",zl(e.onUploadProgress)),(e.cancelToken||e.signal)&&(o=m=>{c&&(r(!m||m.type?new Wr(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=q2(u);if(d&&xt.protocols.indexOf(d)===-1){r(new ce("Unsupported protocol "+d+":",ce.ERR_BAD_REQUEST,e));return}c.send(s||null)})},Ss={http:_2,xhr:J2};k.forEach(Ss,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const X2={getAdapter:e=>{e=k.isArray(e)?e:[e];const{length:t}=e;let n,r;for(let s=0;se instanceof It?e.toJSON():e;function Wn(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(jl(c),jl(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 Tf="1.4.0",lo={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{lo[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const Vl={};lo.transitional=function(t,n,r){function s(a,i){return"[Axios v"+Tf+"] 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&&!Vl[i]&&(Vl[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 Q2(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 ci={assertOptions:Q2,validators:lo},Wt=ci.validators;class zs{constructor(t){this.defaults=t,this.interceptors={request:new Hl,response:new Hl}}request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Wn(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:a}=n;r!==void 0&&ci.assertOptions(r,{silentJSONParsing:Wt.transitional(Wt.boolean),forcedJSONParsing:Wt.transitional(Wt.boolean),clarifyTimeoutError:Wt.transitional(Wt.boolean)},!1),s!=null&&(k.isFunction(s)?n.paramsSerializer={serialize:s}:ci.assertOptions(s,{encode:Wt.function,serialize:Wt.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=It.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=[Bl.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 Wr(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 co(function(s){t=s}),cancel:t}}}const Z2=co;function eg(e){return function(n){return e.apply(null,n)}}function tg(e){return k.isObject(e)&&e.isAxiosError===!0}const ui={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(ui).forEach(([e,t])=>{ui[t]=e});const ng=ui;function Lf(e){const t=new Cs(e),n=df(Cs.prototype.request,t);return k.extend(n,Cs.prototype,t,{allOwnKeys:!0}),k.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return Lf(Wn(e,s))},n}const $e=Lf(oo);$e.Axios=Cs;$e.CanceledError=Wr;$e.CancelToken=Z2;$e.isCancel=Cf;$e.VERSION=Tf;$e.toFormData=da;$e.AxiosError=ce;$e.Cancel=$e.CanceledError;$e.all=function(t){return Promise.all(t)};$e.spread=eg;$e.isAxiosError=tg;$e.mergeConfig=Wn;$e.AxiosHeaders=It;$e.formToJSON=e=>Sf(k.isHTMLForm(e)?new FormData(e):e);$e.HttpStatusCode=ng;$e.default=$e;const Ul=$e;function rg(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 sg(e,t,n){let r=e.split("|");const s=ag(r,t);if(s!==null)return s.trim();r=og(r);const a=rg(n,t);return r.length===1||!r[a]?r[0]:r[a]}function ag(e,t){for(const n of e){let r=ig(n,t);if(r!==null)return r}return null}function ig(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 og(e){return e.map(t=>t.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}const $a=(e,t,n={})=>{try{return e(t)}catch{return n}},Fa=async(e,t={})=>{try{return(await e).default||t}catch{return t}};function Kl(e){return e||lg()||cg()}function lg(){var e;return!!(typeof process<"u"&&((e=process.env)!=null&&e.LARAVEL_VUE_I18N_HAS_PHP))}function cg(){return typeof{VITE_LARAVEL_VUE_I18N_HAS_PHP:"true",BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}<"u"}const Mn=typeof window>"u";let Tn=null;const Wl={lang:!Mn&&document.documentElement.lang?document.documentElement.lang.replace("-","_"):null,fallbackLang:"en",fallbackMissingTranslations:!1,resolve:e=>new Promise(t=>t({default:{}})),onLoad:e=>{}},ug={shared:!0};function ql(e,t=!1){return Ze.getSharedInstance().loadLanguageAsync(e,t)}function Je(e,t={}){return Ze.getSharedInstance().trans(e,t)}function by(){return Ze.getSharedInstance().getActiveLanguage()}const fg={install(e,t={}){t={...ug,...t};const n=t.shared?Ze.getSharedInstance(t,!0):new Ze(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 Ze{constructor(t={}){this.activeMessages=Nt({}),this.fallbackMessages=Nt({}),this.reset=()=>{Ze.loaded=[],this.options=Wl;for(const[n]of Object.entries(this.activeMessages))this.activeMessages[n]=null;this===Tn&&(Tn=null)},this.options={...Wl,...t},this.options.fallbackMissingTranslations?this.loadFallbackLanguage():this.load()}setOptions(t={},n=!1){return this.options={...this.options,...t},n&&this.load(),this}load(){this[Mn?"loadLanguage":"loadLanguageAsync"](this.getActiveLanguage())}loadFallbackLanguage(){if(!Mn){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=Ze.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=Ze.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=$a(t,n)),Kl(Mn)?{default:{...r,...$a(t,`php_${n}`)}}:{default:r}}async resolveLangAsync(t,n){let r=$a(t,n);if(!(r instanceof Promise))return this.resolveLang(t,n,r);if(Kl(Mn)){const s=await Fa(t(`php_${n}`)),a=await Fa(r);return new Promise(i=>i({default:{...s,...a}}))}return new Promise(async s=>s({default:await Fa(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 Ze.loaded.push(a),this.setLanguage(a)}applyFallbackLanguage(t,n){for(const[r,s]of Object.entries(n))this.fallbackMessages[r]=s;Ze.loaded.push({lang:this.options.fallbackLang,messages:n})}setLanguage({lang:t,messages:n}){Mn||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()),Ze.loaded.some(n=>n.lang.replace(/[-_]/g,"-")===t.replace(/[-_]/g,"-"))}trans(t,n={}){return this.wTrans(t,n).value}wTrans(t,n={}){return ji(()=>{this.activeMessages[t]=this.findTranslation(t)||this.findTranslation(t.replace(/\//g,"."))||t}),ne(()=>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(),ne(()=>this.makeReplacements(sg(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 Nt(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(Tn==null?void 0:Tn.setOptions(t,n))||(Tn=new Ze(t))}}Ze.loaded=[];const{notify:Ln}=Fu(),At=Ur({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=Je("errors.auth_proxy_failed"),this.originalMessage=Je("errors.auth_proxy_failed_legend")):e.response.status===403?(this.message=Je("errors.unauthorized"),this.originalMessage=Je("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){qn.push({name:"404"})},error(e){this.parseError(e),qn.push({name:"genericError"})},info(e){Ln({type:"is-info",...e})},success(e){Ln({type:"is-success",...e})},warn(e){Ln({type:"is-warning",...e})},alert(e){Ln({type:"is-danger",...e})},action(e){Ln({type:"is-dark",...e})},clear(){Ln({clean:!0})}}}),rr=(e="api")=>{let t;const n=window.appConfig.subdirectory;e==="web"?t=n+"/":t=n+"/api/v1";const r=Ul.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 Ul.get("/refresh-csrf"),r.request(a)):(s.response.status===418&&ft().logout({kicked:!0}),s.response&&[407].includes(s.response.status)?(At().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?(At().notFound(),new Promise(()=>{})):(At().error(s),new Promise(()=>{})))}),r},dg=rr("web"),pg=rr("api"),Pf={logout(e={}){return dg.get("/user/logout",{...e})},async getCurrentUser(e={}){return pg.get("/user",{...e})}},Lt=rr("api"),as=rr("web"),mg={getPreferences(e={}){return Lt.get("/user/preferences",{...e})},updatePreference(e,t,n={}){return Lt.put("/user/preferences/"+e,{value:t},{...n})},getWebauthnDevices(e={}){return as.get("/webauthn/credentials",{...e})},revokeWebauthnDevice(e,t={}){return as.delete("/webauthn/credentials/"+e,{...t})},getPersonalAccessTokens(e={}){return as.get("/oauth/personal-access-tokens",{...e})},deletePersonalAccessToken(e,t={}){return as.delete("/oauth/personal-access-tokens/"+e,{...t})},getAll(e={}){return Lt.get("/users",{...e})},getById(e,t={}){return Lt.get("/users/"+e,{...t})},resetPassword(e,t={}){return Lt.patch("/users/"+e+"/password/reset",{},{...t})},delete(e,t={}){return Lt.delete("/users/"+e,{...t})},promote(e,t,n={}){return Lt.patch("/users/"+e+"/promote",t,{...n})},revokePATs(e,t={}){return Lt.delete("/users/"+e+"/pats",{...t})},revokeWebauthnCredentials(e,t={}){return Lt.delete("/users/"+e+"/credentials",{...t})}},Ke=rr("api"),is={getAll(e=!1,t={}){return Ke.get("/twofaccounts"+(e?"?withOtp=1":""),{...t})},getByIds(e,t=!1,n={}){return Ke.get("/twofaccounts?ids="+e+(t?"&withOtp=1":""),{...n})},get(e,t={}){return Ke.get("/twofaccounts/"+e,{...t})},preview(e,t={}){return Ke.post("/twofaccounts/preview",{uri:e},{...t})},getLogo(e,t={}){return Ke.post("/icons/default",{service:e},{...t})},deleteIcon(e,t={}){return Ke.delete("/icons/"+e,{...t})},getOtpById(e,t={}){return Ke.get("/twofaccounts/"+e+"/otp",{...t})},getOtpByUri(e,t={}){return Ke.post("/twofaccounts/otp",{uri:e},{...t})},getOtpByParams(e,t={}){return Ke.post("/twofaccounts/otp",e,{...t})},withdraw(e,t={}){return Ke.patch("/twofaccounts/withdraw?ids="+e.join(),{...t})},saveOrder(e,t={}){return Ke.post("/twofaccounts/reorder",{orderedIds:e},{...t})},batchDelete(e,t={}){return Ke.delete("/twofaccounts?ids="+e,{...t})},export(e,t={}){return Ke.get("/twofaccounts/export?ids="+e,{...t})},getQrcode(e,t={}){return Ke.get("/twofaccounts/"+e+"/qrcode",{...t})},migrate(e,t={}){return Ke.post("/twofaccounts/migration",{payload:e,withSecret:!0},{...t})},count(e={}){return Ke.get("/twofaccounts/count",{...e})}};var ur=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Rf={exports:{}};(function(e,t){(function(n,r){r()})(ur,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 ur=="object"&&ur.global===ur?ur: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})})(Rf);var hg=Rf.exports;const Mf=Ur({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 is.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(Je("twofaccounts.confirm.delete"))&&this.selectedIds.length>0&&await is.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(),At().success({text:Je("twofaccounts.accounts_deleted")})})},export(){is.export(this.selectedIds.join(),{responseType:"blob"}).then(e=>{var t=new Blob([e.data],{type:"application/json;charset=utf-8"});hg.saveAs.saveAs(t,"2fauth_export.json")})},saveOrder(){is.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)}}}),os=rr("api"),Yl={getAll(){return os.get("groups")},get(e,t={}){return os.get("/groups/"+e,{...t})},assign(e,t,n={}){return os.post("/groups/"+t+"/assign",{ids:e},{...n})},delete(e,t={}){return os.delete("/groups/"+e,{...t})}},gg=Ur({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:Je("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,At().success({text:Je("groups.group_name_saved")})):(this.items.push(e),At().success({text:Je("groups.group_successfully_created")}))},async fetch(){Math.floor(Date.now()-this.fetchedOn)>2e3&&(this.fetchedOn=Date.now(),await Yl.getAll().then(n=>{this.items=n.data}))},async delete(e){const t=ft();confirm(Je("groups.confirm.delete"))&&await Yl.delete(e).then(n=>{this.items=this.items.filter(r=>r.id!==e),At().success({text:Je("groups.group_successfully_deleted")}),parseInt(t.preferences.activeGroup)===e&&(t.preferences.activeGroup=0)})}}}),ft=Ur({id:"user",state:()=>({id:void 0,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=Mf(),t=gg();this.isAuthenticated?(await e.fetch(),t.fetch()):(e.$reset(),t.$reset())},logout(e={}){const{kicked:t}=e,n=At();if(this.$2fauth.config.proxyAuth)if(this.$2fauth.config.proxyLogoutUrl)location.assign(this.$2fauth.config.proxyLogoutUrl);else return!1;else Pf.logout({returnError:!0}).then(()=>{t&&(n.clear(),n.warn({text:Je("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(),qn.push({name:"login"})},applyTheme(){const e=sf({attribute:"data-theme"});e.value=this.preferences.theme=="system"?"auto":this.preferences.theme},applyLanguage(){const{isSupported:e,language:t}=af();ql(e?this.preferences.lang=="browser"?t.value.slice(0,2):this.preferences.lang:"en")},applyUserPrefs(){this.applyTheme(),this.applyLanguage()},refreshPreferences(){mg.getPreferences({returnError:!0}).then(e=>{e.data.forEach(t=>{this.preferences[t.key]=t.value})}).catch(e=>{At().alert({text:Je("errors.data_cannot_be_refreshed_from_server")})})}}}),vg=Object.freeze(Object.defineProperty({__proto__:null,useUserStore:ft},Symbol.toStringTag,{value:"Module"})),Nf=Ur({id:"appSettings",state:()=>({...window.appSettings}),actions:{}});async function Me({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r;s.isAuthenticated||await Pf.getCurrentUser({returnError:!0}).then(async a=>{const i=a.data;await s.loginAs({id:i.id,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 ls({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r,{notify:a}=r;if(s.isAdmin)n();else{let i=new Error("unauthorized");i.response.status=403,a.error(i)}}async function yg({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 bg({to:e,next:t,nextMiddleware:n,stores:r}){const{notify:s}=r;s.err==null&&!e.query.err?t({name:"accounts"}):n()}async function wg({to:e,next:t,nextMiddleware:n,stores:r}){const{appSettings:s}=r;s.disableRegistration?t({name:"notFound"}):n()}function We({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r,a=rf(s.$2fauth.prefix+"returnTo","accounts");a.value=e.name,n()}async function Pn({to:e,next:t,nextMiddleware:n,stores:r}){const{appSettings:s}=r;s.$2fauth.config.proxyAuth?t({name:"accounts"}):n()}const qn=h1({history:Rh(window.appConfig.subdirectory?window.appConfig.subdirectory:"/"),routes:[{path:"/start",name:"start",component:()=>te(()=>import("./Start-616d9df7.js"),["./Start-616d9df7.js","./Form-0a788c90.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/capture",name:"capture",component:()=>te(()=>import("./Capture-1f19a38b.js"),["./Capture-1f19a38b.js","./Form-0a788c90.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css","./QrContentDisplay-ea3c63ab.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/accounts",name:"accounts",component:()=>te(()=>import("./Accounts-7bc9693f.js"),["./Accounts-7bc9693f.js","./OtpDisplay-f582bb88.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css","./SearchBox-62743462.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,yg,We],watchedByKicker:!0},alias:"/"},{path:"/account/create",name:"createAccount",component:()=>te(()=>import("./CreateUpdate-016104d4.js"),["./CreateUpdate-016104d4.js","./Form-0a788c90.js","./OtpDisplay-f582bb88.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css","./QrContentDisplay-ea3c63ab.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/account/import",name:"importAccounts",component:()=>te(()=>import("./Import-058e3143.js"),["./Import-058e3143.js","./Form-0a788c90.js","./OtpDisplay-f582bb88.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/account/:twofaccountId/edit",name:"editAccount",component:()=>te(()=>import("./CreateUpdate-016104d4.js"),["./CreateUpdate-016104d4.js","./Form-0a788c90.js","./OtpDisplay-f582bb88.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css","./QrContentDisplay-ea3c63ab.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0},props:!0},{path:"/account/:twofaccountId/qrcode",name:"showQRcode",component:()=>te(()=>import("./QRcode-62f040ad.js"),["./QRcode-62f040ad.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/groups",name:"groups",component:()=>te(()=>import("./Groups-e3693e0e.js"),["./Groups-e3693e0e.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0},props:!0},{path:"/group/create",name:"createGroup",component:()=>te(()=>import("./CreateUpdate-db65145e.js"),["./CreateUpdate-db65145e.js","./Form-0a788c90.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/group/:groupId/edit",name:"editGroup",component:()=>te(()=>import("./CreateUpdate-db65145e.js"),["./CreateUpdate-db65145e.js","./Form-0a788c90.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0},props:!0},{path:"/settings/options",name:"settings.options",component:()=>te(()=>import("./Options-599918f8.js"),["./Options-599918f8.js","./SettingTabs-0b59e581.js"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0}},{path:"/settings/account",name:"settings.account",component:()=>te(()=>import("./Account-a7d249ba.js"),["./Account-a7d249ba.js","./Form-0a788c90.js","./SettingTabs-0b59e581.js"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0}},{path:"/settings/oauth",name:"settings.oauth.tokens",component:()=>te(()=>import("./OAuth-23b533cf.js"),["./OAuth-23b533cf.js","./Form-0a788c90.js","./SettingTabs-0b59e581.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0,props:!0}},{path:"/settings/webauthn/:credentialId/edit",name:"settings.webauthn.editCredential",component:()=>te(()=>import("./Edit-e1414c8a.js"),["./Edit-e1414c8a.js","./Form-0a788c90.js"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/settings/webauthn",name:"settings.webauthn.devices",component:()=>te(()=>import("./WebAuthn-3d2e0d09.js"),["./WebAuthn-3d2e0d09.js","./SettingTabs-0b59e581.js","./webauthnService-1f4ca5dc.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0}},{path:"/admin/app",name:"admin.appSetup",component:()=>te(()=>import("./AppSetup-45bab529.js"),["./AppSetup-45bab529.js","./AdminTabs-94ad3971.js","./CopyButton-643e0686.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users",name:"admin.users",component:()=>te(()=>import("./Users-e4ea6e38.js"),["./Users-e4ea6e38.js","./AdminTabs-94ad3971.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css","./SearchBox-62743462.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users/create",name:"admin.createUser",component:()=>te(()=>import("./Create-88a5e9ed.js"),["./Create-88a5e9ed.js","./Form-0a788c90.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users/:userId/manage",name:"admin.manageUser",component:()=>te(()=>import("./Manage-002185c7.js"),["./Manage-002185c7.js","./CopyButton-643e0686.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/login",name:"login",component:()=>te(()=>import("./Login-0aa69f71.js"),["./Login-0aa69f71.js","./Form-0a788c90.js","./webauthnService-1f4ca5dc.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/register",name:"register",component:()=>te(()=>import("./Register-9acf7d81.js"),["./Register-9acf7d81.js","./Form-0a788c90.js","./webauthnService-1f4ca5dc.js"],import.meta.url),meta:{middlewares:[Pn,wg,We],showAbout:!0}},{path:"/password/request",name:"password.request",component:()=>te(()=>import("./RequestReset-9775b58f.js"),["./RequestReset-9775b58f.js","./Form-0a788c90.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/user/password/reset",name:"password.reset",component:()=>te(()=>import("./Reset-4749a3f6.js"),["./Reset-4749a3f6.js","./Form-0a788c90.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/webauthn/lost",name:"webauthn.lost",component:()=>te(()=>import("./RequestReset-9775b58f.js"),["./RequestReset-9775b58f.js","./Form-0a788c90.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/webauthn/recover",name:"webauthn.recover",component:()=>te(()=>import("./Recover-d16991a5.js"),["./Recover-d16991a5.js","./Form-0a788c90.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/about",name:"about",component:()=>te(()=>import("./About-21528213.js"),[],import.meta.url),meta:{showAbout:!0,watchedByKicker:!0}},{path:"/error",name:"genericError",component:()=>te(()=>import("./Error-0e5b1508.js"),[],import.meta.url),meta:{middlewares:[bg],watchedByKicker:!0}},{path:"/404",name:"404",component:()=>te(()=>import("./Error-0e5b1508.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>te(()=>import("./Error-0e5b1508.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0}]});qn.beforeEach((e,t,n)=>{const r=e.meta.middlewares,s=ft(),a=Mf(),i=Nf(),o=At(),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:of(u,r,1)})});qn.afterEach((e,t)=>{e.meta.title=Je("titles."+e.name),document.title=e.meta.title});function Gl(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[Dl]=this[Dl]={accessors:{}}).accessors,s=this.prototype;function a(i){const o=cr(i);r[o]||(B2(s,i),r[o]=!0)}return k.isArray(t)?t.forEach(a):a(t),this}}ma.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);k.freezeMethods(ma.prototype);k.freezeMethods(ma);const It=ma;function Na(e,t){const n=this||oo,r=t||n,s=It.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 Cf(e){return!!(e&&e.__CANCEL__)}function Wr(e,t,n){ce.call(this,e??"canceled",ce.ERR_CANCELED,t,n),this.name="CanceledError"}k.inherits(Wr,ce,{__CANCEL__:!0});function j2(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 V2=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 U2(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function K2(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}function Of(e,t){return e&&!U2(t)?K2(e,t):t}const W2=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 q2(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function Y2(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 G2=typeof XMLHttpRequest<"u",J2=G2&&function(e){return new Promise(function(n,r){let s=e.data;const a=It.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=Of(e.baseURL,e.url);c.open(e.method.toUpperCase(),kf(u,e.params,e.paramsSerializer),!0),c.timeout=e.timeout;function f(){if(!c)return;const m=It.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};j2(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||Af;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||W2(u))&&e.xsrfCookieName&&V2.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",zl(e.onDownloadProgress,!0)),typeof e.onUploadProgress=="function"&&c.upload&&c.upload.addEventListener("progress",zl(e.onUploadProgress)),(e.cancelToken||e.signal)&&(o=m=>{c&&(r(!m||m.type?new Wr(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=q2(u);if(d&&xt.protocols.indexOf(d)===-1){r(new ce("Unsupported protocol "+d+":",ce.ERR_BAD_REQUEST,e));return}c.send(s||null)})},Ss={http:_2,xhr:J2};k.forEach(Ss,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const X2={getAdapter:e=>{e=k.isArray(e)?e:[e];const{length:t}=e;let n,r;for(let s=0;se instanceof It?e.toJSON():e;function Wn(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(jl(c),jl(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 Tf="1.4.0",lo={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{lo[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const Vl={};lo.transitional=function(t,n,r){function s(a,i){return"[Axios v"+Tf+"] 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&&!Vl[i]&&(Vl[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 Q2(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 ci={assertOptions:Q2,validators:lo},Wt=ci.validators;class zs{constructor(t){this.defaults=t,this.interceptors={request:new Hl,response:new Hl}}request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Wn(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:a}=n;r!==void 0&&ci.assertOptions(r,{silentJSONParsing:Wt.transitional(Wt.boolean),forcedJSONParsing:Wt.transitional(Wt.boolean),clarifyTimeoutError:Wt.transitional(Wt.boolean)},!1),s!=null&&(k.isFunction(s)?n.paramsSerializer={serialize:s}:ci.assertOptions(s,{encode:Wt.function,serialize:Wt.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=It.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=[Bl.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 Wr(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 co(function(s){t=s}),cancel:t}}}const Z2=co;function eg(e){return function(n){return e.apply(null,n)}}function tg(e){return k.isObject(e)&&e.isAxiosError===!0}const ui={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(ui).forEach(([e,t])=>{ui[t]=e});const ng=ui;function Lf(e){const t=new Cs(e),n=df(Cs.prototype.request,t);return k.extend(n,Cs.prototype,t,{allOwnKeys:!0}),k.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return Lf(Wn(e,s))},n}const $e=Lf(oo);$e.Axios=Cs;$e.CanceledError=Wr;$e.CancelToken=Z2;$e.isCancel=Cf;$e.VERSION=Tf;$e.toFormData=da;$e.AxiosError=ce;$e.Cancel=$e.CanceledError;$e.all=function(t){return Promise.all(t)};$e.spread=eg;$e.isAxiosError=tg;$e.mergeConfig=Wn;$e.AxiosHeaders=It;$e.formToJSON=e=>Sf(k.isHTMLForm(e)?new FormData(e):e);$e.HttpStatusCode=ng;$e.default=$e;const Ul=$e;function rg(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 sg(e,t,n){let r=e.split("|");const s=ag(r,t);if(s!==null)return s.trim();r=og(r);const a=rg(n,t);return r.length===1||!r[a]?r[0]:r[a]}function ag(e,t){for(const n of e){let r=ig(n,t);if(r!==null)return r}return null}function ig(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 og(e){return e.map(t=>t.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}const $a=(e,t,n={})=>{try{return e(t)}catch{return n}},Fa=async(e,t={})=>{try{return(await e).default||t}catch{return t}};function Kl(e){return e||lg()||cg()}function lg(){var e;return!!(typeof process<"u"&&((e=process.env)!=null&&e.LARAVEL_VUE_I18N_HAS_PHP))}function cg(){return typeof{VITE_LARAVEL_VUE_I18N_HAS_PHP:"true",BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}<"u"}const Mn=typeof window>"u";let Tn=null;const Wl={lang:!Mn&&document.documentElement.lang?document.documentElement.lang.replace("-","_"):null,fallbackLang:"en",fallbackMissingTranslations:!1,resolve:e=>new Promise(t=>t({default:{}})),onLoad:e=>{}},ug={shared:!0};function ql(e,t=!1){return Ze.getSharedInstance().loadLanguageAsync(e,t)}function Je(e,t={}){return Ze.getSharedInstance().trans(e,t)}function by(){return Ze.getSharedInstance().getActiveLanguage()}const fg={install(e,t={}){t={...ug,...t};const n=t.shared?Ze.getSharedInstance(t,!0):new Ze(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 Ze{constructor(t={}){this.activeMessages=Nt({}),this.fallbackMessages=Nt({}),this.reset=()=>{Ze.loaded=[],this.options=Wl;for(const[n]of Object.entries(this.activeMessages))this.activeMessages[n]=null;this===Tn&&(Tn=null)},this.options={...Wl,...t},this.options.fallbackMissingTranslations?this.loadFallbackLanguage():this.load()}setOptions(t={},n=!1){return this.options={...this.options,...t},n&&this.load(),this}load(){this[Mn?"loadLanguage":"loadLanguageAsync"](this.getActiveLanguage())}loadFallbackLanguage(){if(!Mn){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=Ze.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=Ze.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=$a(t,n)),Kl(Mn)?{default:{...r,...$a(t,`php_${n}`)}}:{default:r}}async resolveLangAsync(t,n){let r=$a(t,n);if(!(r instanceof Promise))return this.resolveLang(t,n,r);if(Kl(Mn)){const s=await Fa(t(`php_${n}`)),a=await Fa(r);return new Promise(i=>i({default:{...s,...a}}))}return new Promise(async s=>s({default:await Fa(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 Ze.loaded.push(a),this.setLanguage(a)}applyFallbackLanguage(t,n){for(const[r,s]of Object.entries(n))this.fallbackMessages[r]=s;Ze.loaded.push({lang:this.options.fallbackLang,messages:n})}setLanguage({lang:t,messages:n}){Mn||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()),Ze.loaded.some(n=>n.lang.replace(/[-_]/g,"-")===t.replace(/[-_]/g,"-"))}trans(t,n={}){return this.wTrans(t,n).value}wTrans(t,n={}){return ji(()=>{this.activeMessages[t]=this.findTranslation(t)||this.findTranslation(t.replace(/\//g,"."))||t}),ne(()=>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(),ne(()=>this.makeReplacements(sg(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 Nt(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(Tn==null?void 0:Tn.setOptions(t,n))||(Tn=new Ze(t))}}Ze.loaded=[];const{notify:Ln}=Fu(),At=Ur({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=Je("errors.auth_proxy_failed"),this.originalMessage=Je("errors.auth_proxy_failed_legend")):e.response.status===403?(this.message=Je("errors.unauthorized"),this.originalMessage=Je("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){qn.push({name:"404"})},error(e){this.parseError(e),qn.push({name:"genericError"})},info(e){Ln({type:"is-info",...e})},success(e){Ln({type:"is-success",...e})},warn(e){Ln({type:"is-warning",...e})},alert(e){Ln({type:"is-danger",...e})},action(e){Ln({type:"is-dark",...e})},clear(){Ln({clean:!0})}}}),rr=(e="api")=>{let t;const n=window.appConfig.subdirectory;e==="web"?t=n+"/":t=n+"/api/v1";const r=Ul.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 Ul.get("/refresh-csrf"),r.request(a)):(s.response.status===418&&ft().logout({kicked:!0}),s.response&&[407].includes(s.response.status)?(At().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?(At().notFound(),new Promise(()=>{})):(At().error(s),new Promise(()=>{})))}),r},dg=rr("web"),pg=rr("api"),Pf={logout(e={}){return dg.get("/user/logout",{...e})},async getCurrentUser(e={}){return pg.get("/user",{...e})}},Lt=rr("api"),as=rr("web"),mg={getPreferences(e={}){return Lt.get("/user/preferences",{...e})},updatePreference(e,t,n={}){return Lt.put("/user/preferences/"+e,{value:t},{...n})},getWebauthnDevices(e={}){return as.get("/webauthn/credentials",{...e})},revokeWebauthnDevice(e,t={}){return as.delete("/webauthn/credentials/"+e,{...t})},getPersonalAccessTokens(e={}){return as.get("/oauth/personal-access-tokens",{...e})},deletePersonalAccessToken(e,t={}){return as.delete("/oauth/personal-access-tokens/"+e,{...t})},getAll(e={}){return Lt.get("/users",{...e})},getById(e,t={}){return Lt.get("/users/"+e,{...t})},resetPassword(e,t={}){return Lt.patch("/users/"+e+"/password/reset",{},{...t})},delete(e,t={}){return Lt.delete("/users/"+e,{...t})},promote(e,t,n={}){return Lt.patch("/users/"+e+"/promote",t,{...n})},revokePATs(e,t={}){return Lt.delete("/users/"+e+"/pats",{...t})},revokeWebauthnCredentials(e,t={}){return Lt.delete("/users/"+e+"/credentials",{...t})}},Ke=rr("api"),is={getAll(e=!1,t={}){return Ke.get("/twofaccounts"+(e?"?withOtp=1":""),{...t})},getByIds(e,t=!1,n={}){return Ke.get("/twofaccounts?ids="+e+(t?"&withOtp=1":""),{...n})},get(e,t={}){return Ke.get("/twofaccounts/"+e,{...t})},preview(e,t={}){return Ke.post("/twofaccounts/preview",{uri:e},{...t})},getLogo(e,t={}){return Ke.post("/icons/default",{service:e},{...t})},deleteIcon(e,t={}){return Ke.delete("/icons/"+e,{...t})},getOtpById(e,t={}){return Ke.get("/twofaccounts/"+e+"/otp",{...t})},getOtpByUri(e,t={}){return Ke.post("/twofaccounts/otp",{uri:e},{...t})},getOtpByParams(e,t={}){return Ke.post("/twofaccounts/otp",e,{...t})},withdraw(e,t={}){return Ke.patch("/twofaccounts/withdraw?ids="+e.join(),{...t})},saveOrder(e,t={}){return Ke.post("/twofaccounts/reorder",{orderedIds:e},{...t})},batchDelete(e,t={}){return Ke.delete("/twofaccounts?ids="+e,{...t})},export(e,t={}){return Ke.get("/twofaccounts/export?ids="+e,{...t})},getQrcode(e,t={}){return Ke.get("/twofaccounts/"+e+"/qrcode",{...t})},migrate(e,t={}){return Ke.post("/twofaccounts/migration",{payload:e,withSecret:!0},{...t})},count(e={}){return Ke.get("/twofaccounts/count",{...e})}};var ur=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Rf={exports:{}};(function(e,t){(function(n,r){r()})(ur,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 ur=="object"&&ur.global===ur?ur: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})})(Rf);var hg=Rf.exports;const Mf=Ur({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 is.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(Je("twofaccounts.confirm.delete"))&&this.selectedIds.length>0&&await is.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(),At().success({text:Je("twofaccounts.accounts_deleted")})})},export(){is.export(this.selectedIds.join(),{responseType:"blob"}).then(e=>{var t=new Blob([e.data],{type:"application/json;charset=utf-8"});hg.saveAs.saveAs(t,"2fauth_export.json")})},saveOrder(){is.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)}}}),os=rr("api"),Yl={getAll(){return os.get("groups")},get(e,t={}){return os.get("/groups/"+e,{...t})},assign(e,t,n={}){return os.post("/groups/"+t+"/assign",{ids:e},{...n})},delete(e,t={}){return os.delete("/groups/"+e,{...t})}},gg=Ur({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:Je("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,At().success({text:Je("groups.group_name_saved")})):(this.items.push(e),At().success({text:Je("groups.group_successfully_created")}))},async fetch(){Math.floor(Date.now()-this.fetchedOn)>2e3&&(this.fetchedOn=Date.now(),await Yl.getAll().then(n=>{this.items=n.data}))},async delete(e){const t=ft();confirm(Je("groups.confirm.delete"))&&await Yl.delete(e).then(n=>{this.items=this.items.filter(r=>r.id!==e),At().success({text:Je("groups.group_successfully_deleted")}),parseInt(t.preferences.activeGroup)===e&&(t.preferences.activeGroup=0)})}}}),ft=Ur({id:"user",state:()=>({id:void 0,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=Mf(),t=gg();this.isAuthenticated?(await e.fetch(),t.fetch()):(e.$reset(),t.$reset())},logout(e={}){const{kicked:t}=e,n=At();if(this.$2fauth.config.proxyAuth)if(this.$2fauth.config.proxyLogoutUrl)location.assign(this.$2fauth.config.proxyLogoutUrl);else return!1;else Pf.logout({returnError:!0}).then(()=>{t&&(n.clear(),n.warn({text:Je("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(),qn.push({name:"login"})},applyTheme(){const e=sf({attribute:"data-theme"});e.value=this.preferences.theme=="system"?"auto":this.preferences.theme},applyLanguage(){const{isSupported:e,language:t}=af();ql(e?this.preferences.lang=="browser"?t.value.slice(0,2):this.preferences.lang:"en")},applyUserPrefs(){this.applyTheme(),this.applyLanguage()},refreshPreferences(){mg.getPreferences({returnError:!0}).then(e=>{e.data.forEach(t=>{this.preferences[t.key]=t.value})}).catch(e=>{At().alert({text:Je("errors.data_cannot_be_refreshed_from_server")})})}}}),vg=Object.freeze(Object.defineProperty({__proto__:null,useUserStore:ft},Symbol.toStringTag,{value:"Module"})),Nf=Ur({id:"appSettings",state:()=>({...window.appSettings}),actions:{}});async function Me({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r;s.isAuthenticated||await Pf.getCurrentUser({returnError:!0}).then(async a=>{const i=a.data;await s.loginAs({id:i.id,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 ls({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r,{notify:a}=r;if(s.isAdmin)n();else{let i=new Error("unauthorized");i.response.status=403,a.error(i)}}async function yg({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 bg({to:e,next:t,nextMiddleware:n,stores:r}){const{notify:s}=r;s.err==null&&!e.query.err?t({name:"accounts"}):n()}async function wg({to:e,next:t,nextMiddleware:n,stores:r}){const{appSettings:s}=r;s.disableRegistration?t({name:"notFound"}):n()}function We({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r,a=rf(s.$2fauth.prefix+"returnTo","accounts");a.value=e.name,n()}async function Pn({to:e,next:t,nextMiddleware:n,stores:r}){const{appSettings:s}=r;s.$2fauth.config.proxyAuth?t({name:"accounts"}):n()}const qn=h1({history:Rh(window.appConfig.subdirectory?window.appConfig.subdirectory:"/"),routes:[{path:"/start",name:"start",component:()=>te(()=>import("./Start-864a4d60.js"),["./Start-864a4d60.js","./Form-5283f7b6.js","./bus-7802a020.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/capture",name:"capture",component:()=>te(()=>import("./Capture-109ae9bf.js"),["./Capture-109ae9bf.js","./Form-5283f7b6.js","./Spinner-aea2b665.js","./Spinner-2c227a70.css","./QrContentDisplay-251465e5.js","./bus-7802a020.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/accounts",name:"accounts",component:()=>te(()=>import("./Accounts-f711dee9.js"),["./Accounts-f711dee9.js","./OtpDisplay-2108b98d.js","./Spinner-aea2b665.js","./Spinner-2c227a70.css","./SearchBox-cb8625ff.js","./bus-7802a020.js"],import.meta.url),meta:{middlewares:[Me,yg,We],watchedByKicker:!0},alias:"/"},{path:"/account/create",name:"createAccount",component:()=>te(()=>import("./CreateUpdate-f925f523.js"),["./CreateUpdate-f925f523.js","./Form-5283f7b6.js","./OtpDisplay-2108b98d.js","./Spinner-aea2b665.js","./Spinner-2c227a70.css","./QrContentDisplay-251465e5.js","./bus-7802a020.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/account/import",name:"importAccounts",component:()=>te(()=>import("./Import-8782f7b5.js"),["./Import-8782f7b5.js","./Form-5283f7b6.js","./OtpDisplay-2108b98d.js","./Spinner-aea2b665.js","./Spinner-2c227a70.css","./bus-7802a020.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/account/:twofaccountId/edit",name:"editAccount",component:()=>te(()=>import("./CreateUpdate-f925f523.js"),["./CreateUpdate-f925f523.js","./Form-5283f7b6.js","./OtpDisplay-2108b98d.js","./Spinner-aea2b665.js","./Spinner-2c227a70.css","./QrContentDisplay-251465e5.js","./bus-7802a020.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0},props:!0},{path:"/account/:twofaccountId/qrcode",name:"showQRcode",component:()=>te(()=>import("./QRcode-8e9b023f.js"),["./QRcode-8e9b023f.js","./Spinner-aea2b665.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/groups",name:"groups",component:()=>te(()=>import("./Groups-1660394b.js"),["./Groups-1660394b.js","./bus-7802a020.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0},props:!0},{path:"/group/create",name:"createGroup",component:()=>te(()=>import("./CreateUpdate-643179e3.js"),["./CreateUpdate-643179e3.js","./Form-5283f7b6.js","./bus-7802a020.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/group/:groupId/edit",name:"editGroup",component:()=>te(()=>import("./CreateUpdate-643179e3.js"),["./CreateUpdate-643179e3.js","./Form-5283f7b6.js","./bus-7802a020.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0},props:!0},{path:"/settings/options",name:"settings.options",component:()=>te(()=>import("./Options-86d2ee8a.js"),["./Options-86d2ee8a.js","./SettingTabs-708dbaa6.js"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0}},{path:"/settings/account",name:"settings.account",component:()=>te(()=>import("./Account-9176478b.js"),["./Account-9176478b.js","./Form-5283f7b6.js","./SettingTabs-708dbaa6.js"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0}},{path:"/settings/oauth",name:"settings.oauth.tokens",component:()=>te(()=>import("./OAuth-c85ae7fb.js"),["./OAuth-c85ae7fb.js","./Form-5283f7b6.js","./SettingTabs-708dbaa6.js","./Spinner-aea2b665.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0,props:!0}},{path:"/settings/webauthn/:credentialId/edit",name:"settings.webauthn.editCredential",component:()=>te(()=>import("./Edit-307bbb3b.js"),["./Edit-307bbb3b.js","./Form-5283f7b6.js"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/settings/webauthn",name:"settings.webauthn.devices",component:()=>te(()=>import("./WebAuthn-ee78af22.js"),["./WebAuthn-ee78af22.js","./SettingTabs-708dbaa6.js","./webauthnService-43ef310f.js","./Spinner-aea2b665.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0}},{path:"/admin/app",name:"admin.appSetup",component:()=>te(()=>import("./AppSetup-b7dcb9f9.js"),["./AppSetup-b7dcb9f9.js","./AdminTabs-7af3858b.js","./CopyButton-7a25d704.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users",name:"admin.users",component:()=>te(()=>import("./Users-422cc043.js"),["./Users-422cc043.js","./AdminTabs-7af3858b.js","./Spinner-aea2b665.js","./Spinner-2c227a70.css","./SearchBox-cb8625ff.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users/create",name:"admin.createUser",component:()=>te(()=>import("./Create-3febca8f.js"),["./Create-3febca8f.js","./Form-5283f7b6.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users/:userId/manage",name:"admin.manageUser",component:()=>te(()=>import("./Manage-83b1727c.js"),["./Manage-83b1727c.js","./CopyButton-7a25d704.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/login",name:"login",component:()=>te(()=>import("./Login-69c0645b.js"),["./Login-69c0645b.js","./Form-5283f7b6.js","./webauthnService-43ef310f.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/register",name:"register",component:()=>te(()=>import("./Register-ac041825.js"),["./Register-ac041825.js","./Form-5283f7b6.js","./webauthnService-43ef310f.js"],import.meta.url),meta:{middlewares:[Pn,wg,We],showAbout:!0}},{path:"/password/request",name:"password.request",component:()=>te(()=>import("./RequestReset-a2b01eb6.js"),["./RequestReset-a2b01eb6.js","./Form-5283f7b6.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/user/password/reset",name:"password.reset",component:()=>te(()=>import("./Reset-78a79c23.js"),["./Reset-78a79c23.js","./Form-5283f7b6.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/webauthn/lost",name:"webauthn.lost",component:()=>te(()=>import("./RequestReset-a2b01eb6.js"),["./RequestReset-a2b01eb6.js","./Form-5283f7b6.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/webauthn/recover",name:"webauthn.recover",component:()=>te(()=>import("./Recover-68154a1c.js"),["./Recover-68154a1c.js","./Form-5283f7b6.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/about",name:"about",component:()=>te(()=>import("./About-51085f4f.js"),[],import.meta.url),meta:{showAbout:!0,watchedByKicker:!0}},{path:"/error",name:"genericError",component:()=>te(()=>import("./Error-5d72db66.js"),[],import.meta.url),meta:{middlewares:[bg],watchedByKicker:!0}},{path:"/404",name:"404",component:()=>te(()=>import("./Error-5d72db66.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>te(()=>import("./Error-5d72db66.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0}]});qn.beforeEach((e,t,n)=>{const r=e.meta.middlewares,s=ft(),a=Mf(),i=Nf(),o=At(),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:of(u,r,1)})});qn.afterEach((e,t)=>{e.meta.title=Je("titles."+e.name),document.title=e.meta.title});function Gl(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 ke.head.insertBefore(t,r),e}}var Kg="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Dr(){for(var e=12,t="";e-- >0;)t+=Kg[Math.random()*62|0];return t}function sr(e){for(var t=[],n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function go(e){return e.classList?sr(e.classList):(e.getAttribute("class")||"").split(" ").filter(function(t){return t})}function Wf(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function Wg(e){return Object.keys(e||{}).reduce(function(t,n){return t+"".concat(n,'="').concat(Wf(e[n]),'" ')},"").trim()}function ha(e){return Object.keys(e||{}).reduce(function(t,n){return t+"".concat(n,": ").concat(e[n].trim(),";")},"")}function vo(e){return e.size!==kt.size||e.x!==kt.x||e.y!==kt.y||e.rotate!==kt.rotate||e.flipX||e.flipY}function qg(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 Yg(e){var t=e.transform,n=e.width,r=n===void 0?di:n,s=e.height,a=s===void 0?di:s,i=e.startCentered,o=i===void 0?!1:i,l="";return o&&Df?l+="translate(".concat(t.x/qt-r/2,"em, ").concat(t.y/qt-a/2,"em) "):o?l+="translate(calc(-50% + ".concat(t.x/qt,"em), calc(-50% + ").concat(t.y/qt,"em)) "):l+="translate(".concat(t.x/qt,"em, ").concat(t.y/qt,"em) "),l+="scale(".concat(t.size/qt*(t.flipX?-1:1),", ").concat(t.size/qt*(t.flipY?-1:1),") "),l+="rotate(".concat(t.rotate,"deg) "),l}var Gg=`: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 qf(){var e=zf,t=Bf,n=K.cssPrefix,r=K.replacementClass,s=Gg;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 nc=!1;function Ha(){K.autoAddCss&&!nc&&(Ug(qf()),nc=!0)}var Jg={mixout:function(){return{dom:{css:qf,insertCss:Ha}}},hooks:function(){return{beforeDOMElementCreation:function(){Ha()},beforeI2svg:function(){Ha()}}}},Ht=sn||{};Ht[Ft]||(Ht[Ft]={});Ht[Ft].styles||(Ht[Ft].styles={});Ht[Ft].hooks||(Ht[Ft].hooks={});Ht[Ft].shims||(Ht[Ft].shims=[]);var gt=Ht[Ft],Yf=[],Xg=function e(){ke.removeEventListener("DOMContentLoaded",e),js=1,Yf.map(function(t){return t()})},js=!1;Bt&&(js=(ke.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(ke.readyState),js||ke.addEventListener("DOMContentLoaded",Xg));function Qg(e){Bt&&(js?setTimeout(e,0):Yf.push(e))}function Gr(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"?Wf(e):"<".concat(t," ").concat(Wg(r),">").concat(a.map(Gr).join(""),"")}function rc(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}var Zg=function(t,n){return function(r,s,a,i){return t.call(n,r,s,a,i)}},Da=function(t,n,r,s){var a=Object.keys(t),i=a.length,o=s!==void 0?Zg(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 sc(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 hi(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,s=r===void 0?!1:r,a=sc(t);typeof gt.hooks.addPack=="function"&&!s?gt.hooks.addPack(e,sc(t)):gt.styles[e]=B(B({},gt.styles[e]||{}),a),e==="fas"&&hi("fa",t)}var hs,gs,vs,Nn=gt.styles,n0=gt.shims,r0=(hs={},Fe(hs,Ee,Object.values(Fr[Ee])),Fe(hs,Oe,Object.values(Fr[Oe])),hs),yo=null,Gf={},Jf={},Xf={},Qf={},Zf={},s0=(gs={},Fe(gs,Ee,Object.keys(Ir[Ee])),Fe(gs,Oe,Object.keys(Ir[Oe])),gs);function a0(e){return~Dg.indexOf(e)}function i0(e,t){var n=t.split("-"),r=n[0],s=n.slice(1).join("-");return r===e&&s!==""&&!a0(s)?s:null}var ed=function(){var t=function(a){return Da(Nn,function(i,o,l){return i[l]=Da(o,a,{}),i},{})};Gf=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}),Jf=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}),Zf=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 Nn||K.autoFetchSvg,r=Da(n0,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:{}});Xf=r.names,Qf=r.unicodes,yo=ga(K.styleDefault,{family:K.familyDefault})};Vg(function(e){yo=ga(e.styleDefault,{family:K.familyDefault})});ed();function bo(e,t){return(Gf[e]||{})[t]}function o0(e,t){return(Jf[e]||{})[t]}function vn(e,t){return(Zf[e]||{})[t]}function td(e){return Xf[e]||{prefix:null,iconName:null}}function l0(e){var t=Qf[e],n=bo("fas",e);return t||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function an(){return yo}var wo=function(){return{prefix:null,iconName:null,rest:[]}};function ga(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.family,r=n===void 0?Ee:n,s=Ir[r][e],a=$r[r][e]||$r[r][s],i=e in gt.styles?e:null;return a||i||null}var ac=(vs={},Fe(vs,Ee,Object.keys(Fr[Ee])),Fe(vs,Oe,Object.keys(Fr[Oe])),vs);function va(e){var t,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.skipLookups,s=r===void 0?!1:r,a=(t={},Fe(t,Ee,"".concat(K.cssPrefix,"-").concat(Ee)),Fe(t,Oe,"".concat(K.cssPrefix,"-").concat(Oe)),t),i=null,o=Ee;(e.includes(a[Ee])||e.some(function(c){return ac[Ee].includes(c)}))&&(o=Ee),(e.includes(a[Oe])||e.some(function(c){return ac[Oe].includes(c)}))&&(o=Oe);var l=e.reduce(function(c,u){var f=i0(K.cssPrefix,u);if(Nn[u]?(u=r0[o].includes(u)?Mg[o][u]:u,i=u,c.prefix=u):s0[o].indexOf(u)>-1?(i=u,c.prefix=ga(u,{family:o})):f?c.iconName=f:u!==K.replacementClass&&u!==a[Ee]&&u!==a[Oe]&&c.rest.push(u),!s&&c.prefix&&c.iconName){var d=i==="fa"?td(c.iconName):{},m=vn(c.prefix,c.iconName);d.prefix&&(i=null),c.iconName=d.iconName||m||c.iconName,c.prefix=d.prefix||c.prefix,c.prefix==="far"&&!Nn.far&&Nn.fas&&!K.autoFetchSvg&&(c.prefix="fas")}return c},wo());return(e.includes("fa-brands")||e.includes("fab"))&&(l.prefix="fab"),(e.includes("fa-duotone")||e.includes("fad"))&&(l.prefix="fad"),!l.prefix&&o===Oe&&(Nn.fass||K.autoFetchSvg)&&(l.prefix="fass",l.iconName=vn(l.prefix,l.iconName)||l.iconName),(l.prefix==="fa"||i==="fa")&&(l.prefix=an()||"fas"),l}var c0=function(){function e(){_g(this,e),this.definitions={}}return Eg(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}(),ic=[],In={},zn={},u0=Object.keys(zn);function f0(e,t){var n=t.mixoutsTo;return ic=e,In={},Object.keys(zn).forEach(function(r){u0.indexOf(r)===-1&&delete zn[r]}),ic.forEach(function(r){var s=r.mixout?r.mixout():{};if(Object.keys(s).forEach(function(i){typeof s[i]=="function"&&(n[i]=s[i]),Bs(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){In[i]||(In[i]=[]),In[i].push(a[i])})}r.provides&&r.provides(zn)}),n}function gi(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 Bt?(_n("beforeI2svg",t),Dt("pseudoElements2svg",t),Dt("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,Qg(function(){h0({autoReplaceSvgRoot:n}),_n("watch",t)})}},m0={icon:function(t){if(t===null)return null;if(Bs(t)==="object"&&t.prefix&&t.iconName)return{prefix:t.prefix,iconName:vn(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=ga(t[0]);return{prefix:r,iconName:vn(r,n)||n}}if(typeof t=="string"&&(t.indexOf("".concat(K.cssPrefix,"-"))>-1||t.match(Ng))){var s=va(t.split(" "),{skipLookups:!0});return{prefix:s.prefix||an(),iconName:vn(s.prefix,s.iconName)||s.iconName}}if(typeof t=="string"){var a=an();return{prefix:a,iconName:vn(a,t)||t}}}},at={noAuto:d0,config:K,dom:p0,parse:m0,library:nd,findIconDefinition:vi,toHtml:Gr},h0=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.autoReplaceSvgRoot,r=n===void 0?ke:n;(Object.keys(gt.styles).length>0||K.autoFetchSvg)&&Bt&&K.autoReplaceSvg&&at.dom.i2svg({node:r})};function ya(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map(function(r){return Gr(r)})}}),Object.defineProperty(e,"node",{get:function(){if(Bt){var r=ke.createElement("div");return r.innerHTML=e.html,r.children}}}),e}function g0(e){var t=e.children,n=e.main,r=e.mask,s=e.attributes,a=e.styles,i=e.transform;if(vo(i)&&n.found&&!r.found){var o=n.width,l=n.height,c={x:o/l/2,y:.5};s.style=ha(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 v0(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 _o(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[wn]=""),l&&(P.children.push({tag:"title",attributes:{id:P.attributes["aria-labelledby"]||"title-".concat(u||Dr())},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?Dt("generateAbstractMask",F)||{children:[],attributes:{}}:Dt("generateAbstractIcon",F)||{children:[],attributes:{}},q=Z.children,w=Z.attributes;return F.children=q,F.attributes=w,o?v0(F):g0(F)}function oc(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[wn]="");var u=B({},i.styles);vo(s)&&(u.transform=Yg({transform:s,startCentered:!0,width:n,height:r}),u["-webkit-transform"]=u.transform);var f=ha(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 y0(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=ha(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 za=gt.styles;function yi(e){var t=e[0],n=e[1],r=e.slice(4),s=uo(r,1),a=s[0],i=null;return Array.isArray(a)?i={tag:"g",attributes:{class:"".concat(K.cssPrefix,"-").concat(gn.GROUP)},children:[{tag:"path",attributes:{class:"".concat(K.cssPrefix,"-").concat(gn.SECONDARY),fill:"currentColor",d:a[0]}},{tag:"path",attributes:{class:"".concat(K.cssPrefix,"-").concat(gn.PRIMARY),fill:"currentColor",d:a[1]}}]}:i={tag:"path",attributes:{fill:"currentColor",d:a}},{found:!0,width:t,height:n,icon:i}}var b0={found:!1,width:512,height:512};function w0(e,t){!jf&&!K.showMissingIcons&&e&&console.error('Icon with name "'.concat(e,'" and prefix "').concat(t,'" is missing.'))}function bi(e,t){var n=t;return t==="fa"&&K.styleDefault!==null&&(t=an()),new Promise(function(r,s){if(Dt("missingIconAbstract"),n==="fa"){var a=td(e)||{};e=a.iconName||e,t=a.prefix||t}if(e&&t&&za[t]&&za[t][e]){var i=za[t][e];return r(yi(i))}w0(e,t),r(B(B({},b0),{},{icon:K.showMissingIcons&&e?Dt("missingIconAbstract")||{}:{}}))})}var lc=function(){},wi=K.measurePerformance&&cs&&cs.mark&&cs.measure?cs:{mark:lc,measure:lc},pr='FA "6.4.2"',_0=function(t){return wi.mark("".concat(pr," ").concat(t," begins")),function(){return rd(t)}},rd=function(t){wi.mark("".concat(pr," ").concat(t," ends")),wi.measure("".concat(pr," ").concat(t),"".concat(pr," ").concat(t," begins"),"".concat(pr," ").concat(t," ends"))},Eo={begin:_0,end:rd},Os=function(){};function cc(e){var t=e.getAttribute?e.getAttribute(wn):null;return typeof t=="string"}function E0(e){var t=e.getAttribute?e.getAttribute(po):null,n=e.getAttribute?e.getAttribute(mo):null;return t&&n}function x0(e){return e&&e.classList&&e.classList.contains&&e.classList.contains(K.replacementClass)}function k0(){if(K.autoReplaceSvg===!0)return Ts.replace;var e=Ts[K.autoReplaceSvg];return e||Ts.replace}function A0(e){return ke.createElementNS("http://www.w3.org/2000/svg",e)}function S0(e){return ke.createElement(e)}function sd(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.ceFn,r=n===void 0?e.tag==="svg"?A0:S0:n;if(typeof e=="string")return ke.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(sd(i,{ceFn:r}))}),s}function C0(e){var t=" ".concat(e.outerHTML," ");return t="".concat(t,"Font Awesome fontawesome.com "),t}var Ts={replace:function(t){var n=t[0];if(n.parentNode)if(t[1].forEach(function(s){n.parentNode.insertBefore(sd(s),n)}),n.getAttribute(wn)===null&&K.keepOriginalSource){var r=ke.createComment(C0(n));n.parentNode.replaceChild(r,n)}else n.remove()},nest:function(t){var n=t[0],r=t[1];if(~go(n).indexOf(K.replacementClass))return Ts.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 Gr(o)}).join(` `);n.setAttribute(wn,""),n.innerHTML=i}};function uc(e){e()}function ad(e,t){var n=typeof t=="function"?t:Os;if(e.length===0)n();else{var r=uc;K.mutateApproach===Pg&&(r=sn.requestAnimationFrame||uc),r(function(){var s=k0(),a=Eo.begin("mutate");e.map(s),a(),n()})}}var xo=!1;function id(){xo=!0}function _i(){xo=!1}var Vs=null;function fc(e){if(ec&&K.observeMutations){var t=e.treeCallback,n=t===void 0?Os:t,r=e.nodeCallback,s=r===void 0?Os:r,a=e.pseudoElementsCallback,i=a===void 0?Os:a,o=e.observeMutationsRoot,l=o===void 0?ke:o;Vs=new ec(function(c){if(!xo){var u=an();sr(c).forEach(function(f){if(f.type==="childList"&&f.addedNodes.length>0&&!cc(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"&&cc(f.target)&&~Hg.indexOf(f.attributeName))if(f.attributeName==="class"&&E0(f.target)){var d=va(go(f.target)),m=d.prefix,g=d.iconName;f.target.setAttribute(po,m||u),g&&f.target.setAttribute(mo,g)}else x0(f.target)&&s(f.target)})}}),Bt&&Vs.observe(l,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function O0(){Vs&&Vs.disconnect()}function T0(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 L0(e){var t=e.getAttribute("data-prefix"),n=e.getAttribute("data-icon"),r=e.innerText!==void 0?e.innerText.trim():"",s=va(go(e));return s.prefix||(s.prefix=an()),t&&n&&(s.prefix=t,s.iconName=n),s.iconName&&s.prefix||(s.prefix&&r.length>0&&(s.iconName=o0(s.prefix,e.innerText)||bo(s.prefix,mi(e.innerText))),!s.iconName&&K.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(s.iconName=e.firstChild.data)),s}function P0(e){var t=sr(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||Dr()):(t["aria-hidden"]="true",t.focusable="false")),t}function R0(){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 dc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},n=L0(e),r=n.iconName,s=n.prefix,a=n.rest,i=P0(e),o=gi("parseNodeAttributes",{},e),l=t.styleParser?T0(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 M0=gt.styles;function od(e){var t=K.autoReplaceSvg==="nest"?dc(e,{styleParser:!1}):dc(e);return~t.extra.classes.indexOf(Vf)?Dt("generateLayersText",e,t):Dt("generateSvgReplacementMutation",e,t)}var on=new Set;ho.map(function(e){on.add("fa-".concat(e))});Object.keys(Ir[Ee]).map(on.add.bind(on));Object.keys(Ir[Oe]).map(on.add.bind(on));on=qr(on);function pc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!Bt)return Promise.resolve();var n=ke.documentElement.classList,r=function(f){return n.add("".concat(tc,"-").concat(f))},s=function(f){return n.remove("".concat(tc,"-").concat(f))},a=K.autoFetchSvg?on:ho.map(function(u){return"fa-".concat(u)}).concat(Object.keys(M0));a.includes("fa")||a.push("fa");var i=[".".concat(Vf,":not([").concat(wn,"])")].concat(a.map(function(u){return".".concat(u,":not([").concat(wn,"])")})).join(", ");if(i.length===0)return Promise.resolve();var o=[];try{o=sr(e.querySelectorAll(i))}catch{}if(o.length>0)r("pending"),s("complete");else return Promise.resolve();var l=Eo.begin("onTree"),c=o.reduce(function(u,f){try{var d=od(f);d&&u.push(d)}catch(m){jf||m.name==="MissingIcon"&&console.error(m)}return u},[]);return new Promise(function(u,f){Promise.all(c).then(function(d){ad(d,function(){r("active"),r("complete"),s("pending"),typeof t=="function"&&t(),l(),u()})}).catch(function(d){l(),f(d)})})}function N0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;od(e).then(function(n){n&&ad([n],t)})}function I0(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(t||{}).icon?t:vi(t||{}),s=n.mask;return s&&(s=(s||{}).icon?s:vi(s||{})),e(r,B(B({},n),{},{mask:s}))}}var $0=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 ya(B({type:"icon"},t),function(){return _n("beforeDOMElementCreation",{iconDefinition:t,params:n}),K.autoA11y&&(d?_["aria-labelledby"]="".concat(K.replacementClass,"-title-").concat(g||Dr()):(_["aria-hidden"]="true",_.focusable="false")),_o({icons:{main:yi(q),mask:l?yi(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}})})}},F0={mixout:function(){return{icon:I0($0)}},hooks:function(){return{mutationObserverCallbacks:function(n){return n.treeCallback=pc,n.nodeCallback=N0,n}}},provides:function(t){t.i2svg=function(n){var r=n.node,s=r===void 0?ke:r,a=n.callback,i=a===void 0?function(){}:a;return pc(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([bi(s,o),u.iconName?bi(u.iconName,u.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(function(v){var S=uo(v,2),b=S[0],_=S[1];m([n,_o({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=ha(o);l.length>0&&(s.style=l);var c;return vo(i)&&(c=Dt("generateAbstractTransformGrouping",{main:a,transform:i,containerWidth:a.width,iconWidth:a.width})),r.push(c||a.icon),{children:r,attributes:s}}}},H0={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 ya({type:"layer"},function(){_n("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(qr(a)).join(" ")},children:i}]})}}}},D0={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 ya({type:"counter",content:n},function(){return _n("beforeDOMElementCreation",{content:n,params:r}),y0({content:n.toString(),title:a,extra:{attributes:c,styles:f,classes:["".concat(K.cssPrefix,"-layers-counter")].concat(qr(o))}})})}}}},z0={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 ya({type:"text",content:n},function(){return _n("beforeDOMElementCreation",{content:n,params:r}),oc({content:n,transform:B(B({},kt),a),title:o,extra:{attributes:f,styles:m,classes:["".concat(K.cssPrefix,"-layers-text")].concat(qr(c))}})})}}},provides:function(t){t.generateLayersText=function(n,r){var s=r.title,a=r.transform,i=r.extra,o=null,l=null;if(Df){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,oc({content:n.innerHTML,width:o,height:l,transform:a,title:s,extra:i,watchable:!0})])}}},B0=new RegExp('"',"ug"),mc=[1105920,1112319];function j0(e){var t=e.replace(B0,""),n=t0(t,0),r=n>=mc[0]&&n<=mc[1],s=t.length===2?t[0]===t[1]:!1;return{value:mi(s?t[0]:t),isSecondary:r||s}}function hc(e,t){var n="".concat(Lg).concat(t.replace(":","-"));return new Promise(function(r,s){if(e.getAttribute(n)!==null)return r();var a=sr(e.children),i=a.filter(function(q){return q.getAttribute(pi)===t})[0],o=sn.getComputedStyle(e,t),l=o.getPropertyValue("font-family").match(Ig),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])?Oe:Ee,m=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(l[2])?$r[d][l[2].toLowerCase()]:$g[d][c],g=j0(f),v=g.value,S=g.isSecondary,b=l[0].startsWith("FontAwesome"),_=bo(m,v),P=_;if(b){var x=l0(v);x.iconName&&x.prefix&&(_=x.iconName,m=x.prefix)}if(_&&!S&&(!i||i.getAttribute(po)!==m||i.getAttribute(mo)!==P)){e.setAttribute(n,P),i&&e.removeChild(i);var F=R0(),Z=F.extra;Z.attributes[pi]=t,bi(_,m).then(function(q){var w=_o(B(B({},F),{},{icons:{main:q,mask:wo()},prefix:m,iconName:P,extra:Z,watchable:!0})),O=ke.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 Gr(H)}).join(` -`),e.removeAttribute(n),r()}).catch(s)}else r()}else r()})}function V0(e){return Promise.all([hc(e,"::before"),hc(e,"::after")])}function U0(e){return e.parentNode!==document.head&&!~Rg.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(pi)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function gc(e){if(Bt)return new Promise(function(t,n){var r=sr(e.querySelectorAll("*")).filter(U0).map(V0),s=Eo.begin("searchPseudoElements");id(),Promise.all(r).then(function(){s(),_i(),t()}).catch(function(){s(),_i(),n()})})}var K0={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=gc,n}}},provides:function(t){t.pseudoElements2svg=function(n){var r=n.node,s=r===void 0?ke:r;K.searchPseudoElements&&gc(s)}}},vc=!1,W0={mixout:function(){return{dom:{unwatch:function(){id(),vc=!0}}}},hooks:function(){return{bootstrap:function(){fc(gi("mutationObserverCallbacks",{}))},noAuto:function(){O0()},watch:function(n){var r=n.observeMutationsRoot;vc?_i():fc(gi("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},yc=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)},q0={mixout:function(){return{parse:{transform:function(n){return yc(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-transform");return s&&(n.transform=yc(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)}]}]}}}},Ba={x:0,y:0,width:"100%",height:"100%"};function bc(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 Y0(e){return e.tag==="g"?e.children:[e]}var G0={hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-mask"),a=s?va(s.split(" ").map(function(i){return i.trim()})):wo();return a.prefix||(a.prefix=an()),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=qg({transform:l,containerWidth:f,iconWidth:c}),g={tag:"rect",attributes:B(B({},Ba),{},{fill:"white"})},v=u.children?{children:u.children.map(bc)}:{},S={tag:"g",attributes:B({},m.inner),children:[bc(B({tag:u.tag,attributes:B(B({},u.attributes),m.path)},v))]},b={tag:"g",attributes:B({},m.outer),children:[S]},_="mask-".concat(o||Dr()),P="clip-".concat(o||Dr()),x={tag:"mask",attributes:B(B({},Ba),{},{id:_,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[g,b]},F={tag:"defs",children:[{tag:"clipPath",attributes:{id:P},children:Y0(d)},x]};return r.push(F,{tag:"rect",attributes:B({fill:"currentColor","clip-path":"url(#".concat(P,")"),mask:"url(#".concat(_,")")},Ba)}),{children:r,attributes:s}}}},J0={provides:function(t){var n=!1;sn.matchMedia&&(n=sn.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}}}},X0={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}}}},Q0=[Jg,F0,H0,D0,z0,K0,W0,q0,G0,J0,X0];f0(Q0,{mixoutsTo:at});at.noAuto;at.config;var Z0=at.library;at.dom;var Ei=at.parse;at.findIconDefinition;at.toHtml;var ev=at.icon;at.layer;at.text;at.counter;function wc(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 Mt(e){for(var t=1;t=0)&&(n[s]=e[s]);return n}function nv(e,t){if(e==null)return{};var n=tv(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 rv=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ld={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 cd(l)}),s=Object.keys(e.attributes||{}).reduce(function(l,c){var u=e.attributes[c];switch(c){case"class":l.class=ov(u);break;case"style":l.style=iv(u);break;default:l.attrs[c]=u}return l},{attrs:{},class:{},style:{}});n.class;var a=n.style,i=a===void 0?{}:a,o=nv(n,av);return sa(e.tag,Mt(Mt(Mt({},t),{},{class:s.class,style:Mt(Mt({},s.style),i)},s.attrs),o),r)}var ud=!1;try{ud=!0}catch{}function lv(){if(!ud&&console&&typeof console.error=="function"){var e;(e=console).error.apply(e,arguments)}}function ja(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?Xe({},e,t):{}}function cv(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"},Xe(t,"fa-".concat(e.size),e.size!==null),Xe(t,"fa-rotate-".concat(e.rotation),e.rotation!==null),Xe(t,"fa-pull-".concat(e.pull),e.pull!==null),Xe(t,"fa-swap-opacity",e.swapOpacity),Xe(t,"fa-bounce",e.bounce),Xe(t,"fa-shake",e.shake),Xe(t,"fa-beat",e.beat),Xe(t,"fa-fade",e.fade),Xe(t,"fa-beat-fade",e.beatFade),Xe(t,"fa-flash",e.flash),Xe(t,"fa-spin-pulse",e.spinPulse),Xe(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 _c(e){if(e&&Us(e)==="object"&&e.prefix&&e.iconName&&e.icon)return e;if(Ei.icon)return Ei.icon(e);if(e===null)return null;if(Us(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 uv=xn({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=ne(function(){return _c(t.icon)}),a=ne(function(){return ja("classes",cv(t))}),i=ne(function(){return ja("transform",typeof t.transform=="string"?Ei.transform(t.transform):t.transform)}),o=ne(function(){return ja("mask",_c(t.mask))}),l=ne(function(){return ev(s.value,Mt(Mt(Mt(Mt({},a.value),i.value),o.value),{},{symbol:t.symbol,title:t.title}))});ze(l,function(u){if(!u)return lv("Could not find one or more icon(s)",s.value,o.value)},{immediate:!0});var c=ne(function(){return l.value?cd(l.value.abstract[0],{},r):null});return function(){return c.value}}}),fv={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"]},dv={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"]},pv=dv,mv={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"]},hv={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"]},gv={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"]},vv=gv,yv={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"]},bv=yv,wv={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"]},_v={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"]},Ev={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"]},xv={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"]},kv={prefix:"fas",iconName:"slash",icon:[640,512,[],"f715","M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z"]},Av={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"]},Sv=Av,Cv={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"]},Ov={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"]},Tv={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"]},Lv={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"]},Pv={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"]},Rv={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"]},Mv={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"]},Nv={prefix:"fas",iconName:"align-left",icon:[448,512,[],"f036","M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-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 448c0 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"]},Iv={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"]},$v=Iv,Fv={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"]},Hv=Fv,Dv={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"]},zv={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"]},Bv=zv,jv={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"]},Vv={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"]},Uv={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"]},Kv={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"]},Wv=Kv,qv={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"]},Yv={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"]},Gv=Yv,Jv={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"]},Xv=Jv,Qv={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"]},Zv=Qv,e4={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"]},t4={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"]},n4={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"]},r4=n4,s4={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"]},a4={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"]},i4={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"]},o4={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"]},l4={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"]},c4={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"]},u4=c4,f4={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"]},d4={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"]},p4={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"]},m4={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"]},h4={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"]},g4=h4,v4={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"]},y4={prefix:"far",iconName:"paper-plane",icon:[512,512,[61913],"f1d8","M16.1 260.2c-22.6 12.9-20.5 47.3 3.6 57.3L160 376V479.3c0 18.1 14.6 32.7 32.7 32.7c9.7 0 18.9-4.3 25.1-11.8l62-74.3 123.9 51.6c18.9 7.9 40.8-4.5 43.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448 256zm52.1 25.5L409.7 90.6 190.1 336l1.2 1L68.2 285.7zM403.3 425.4L236.7 355.9 450.8 116.6 403.3 425.4z"]},b4={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"]},w4={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"]};Z0.add(t4,u4,o4,Cv,Mv,p4,bv,r4,_v,Pv,Xv,Gv,hv,i4,b4,jv,Tv,pv,vv,Zv,Hv,wv,g4,Uv,xv,d4,Vv,Lv,e4,Bv,Sv,Rv,Ev,$v,Dv,Wv,qv,l4,f4,mv,Ov,m4,fv,a4,v4,s4,w4,y4,kv,Nv);const _4=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},E4={},x4={class:"columns is-centered"},k4={class:"form-column column is-two-thirds-tablet is-half-desktop is-half-widescreen is-one-third-fullhd"};function A4(e,t){return D(),G("div",x4,[Q("div",k4,[ln(e.$slots,"default")])])}const S4=_4(E4,[["render",A4]]),C4=["innerHTML"],O4=["innerHTML"],T4={__name:"FormWrapper",props:{title:{type:String,default:""},punchline:{type:String,default:""}},setup(e){return(t,n)=>{const r=je("ResponsiveWidthWrapper");return D(),Be(r,null,{default:Ye(()=>[e.title?(D(),G("h1",{key:0,class:"title has-text-grey-dark",innerHTML:t.$t(e.title)},null,8,C4)):fe("",!0),e.punchline?(D(),G("div",{key:1,id:"punchline",class:"block",innerHTML:t.$t(e.punchline)},null,8,O4)):fe("",!0),ln(t.$slots,"default")]),_:3})}}},L4={class:"main"},P4={key:0,class:"columns is-gapless"},R4={class:"column has-text-centered"},M4={class:"field is-grouped"},N4={key:1,class:"content has-text-centered"},I4={key:2,class:"content has-text-centered"},$4={key:1},F4={key:3,class:"content has-text-centered"},H4={key:0,class:"is-size-6"},D4={class:"has-text-weight-bold"},z4={key:1},B4={key:0},j4={key:0,class:"release-flag"},V4={key:1},U4={__name:"Footer",props:{showButtons:!0,internalFooterType:{type:String,default:"navLinks"}},setup(e){const t=Nf(),n=ft(),r=et("2fauth");function s(){confirm(Je("auth.confirm.logout"))&&n.logout()}return(a,i)=>{const o=je("router-link");return D(),G("footer",L4,[e.showButtons?(D(),G("div",P4,[Q("div",R4,[Q("div",M4,[ln(a.$slots,"default")])])])):fe("",!0),e.internalFooterType=="doneButton"?(D(),G("div",N4,[Q("button",{id:"lnkExitEdit",class:"button is-ghost is-like-text",onClick:i[0]||(i[0]=aa(l=>a.$emit("doneButtonClicked",!0),["stop"]))},Ae(a.$t("commons.done")),1)])):e.internalFooterType=="modal"?(D(),G("div",I4,[a.$route.name!="accounts"?(D(),Be(o,{key:0,id:"lnkBackToHome",to:{name:"accounts"},class:"has-text-grey"},{default:Ye(()=>[He(Ae(a.$t("commons.back_to_home")),1)]),_:1})):(D(),G("span",$4," "))])):(D(),G("div",F4,[a.$route.meta.showAbout===!0?(D(),G("div",H4,[pe(o,{id:"lnkAbout",to:{name:"about"},class:"has-text-grey"},{default:Ye(()=>[He(" 2FAuth – "),Q("span",D4,"v"+Ae(se(r).version),1)]),_:1})])):(D(),G("div",z4,[pe(o,{id:"lnkSettings",to:{name:"settings.options"},class:"has-text-grey"},{default:Ye(()=>[He(Ae(a.$t("settings.settings")),1)]),_:1},8,["to"]),se(n).isAdmin?(D(),G("span",B4,[He(" - "),pe(o,{id:"lnkAdmin",to:{name:"admin.appSetup"},class:"has-text-grey"},{default:Ye(()=>[He(Ae(a.$t("admin.admin")),1),se(t).latestRelease&&se(t).checkForUpdate?(D(),G("span",j4)):fe("",!0)]),_:1},8,["to"])])):fe("",!0),!se(r).config.proxyAuth||se(r).config.proxyAuth&&se(r).config.proxyLogoutUrl?(D(),G("span",V4,[He(" - "),Q("button",{id:"lnkSignOut",class:"button is-text is-like-text has-text-grey",onClick:s},Ae(a.$t("auth.sign_out")),1)])):fe("",!0)]))]))])}}},K4=["onClick"],W4={class:"modal-content"},q4={class:"section"},Y4={class:"columns is-centered"},G4={class:"column is-three-quarters"},J4={class:"modal-slot box has-text-centered is-shadowless"},X4={__name:"Modal",props:{modelValue:Boolean,closable:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,{notify:r}=Fu(),s=ne({get(){return n.modelValue},set(i){t("update:modelValue",i)}});function a(i){r({clean:!0}),s.value=!1}return(i,o)=>{const l=je("ButtonBackCloseCancel"),c=je("VueFooter");return D(),G("div",{class:xe(["modal modal-otp",{"is-active":se(s)}])},[Q("div",{class:"modal-background",onClick:aa(a,["stop"])},null,8,K4),Q("div",W4,[Q("section",q4,[Q("div",Y4,[Q("div",G4,[Q("div",J4,[ln(i.$slots,"default")])])])])]),n.closable?(D(),Be(c,{key:0,showButtons:!0,internalFooterType:"modal"},{default:Ye(()=>[pe(l,{action:"close",useLinkTag:!1,onClosed:a})]),_:1})):fe("",!0)],2)}}},Q4=["type","disabled"],Z4={__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)=>(D(),G("button",{type:e.nativeType,disabled:e.isLoading||e.isDisabled,class:xe({button:!0,[`${e.color}`]:!0,"is-loading":e.isLoading})},[ln(t.$slots,"default")],10,Q4))}},e3={key:0,class:"control"},t3={key:1,class:"control"},n3={__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;v1(),Ju();const r="button is-rounded"+(sf().value==="dark"&&!t.isText&&!t.isCapture?" is-dark":"")+(t.isText?" is-text":"")+(t.isCapture?" is-large is-warning":"");return(s,a)=>{const i=je("RouterLink");return e.useLinkTag?(D(),G("p",e3,[e.action=="close"?(D(),Be(i,{key:0,id:"btnClose",to:e.returnTo,class:xe(r),tabindex:"0",role:"button","aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:Ye(()=>[He(Ae(s.$t("commons.close")),1)]),_:1},8,["to","aria-label"])):e.action=="back"?(D(),Be(i,{key:1,id:"lnkBack",to:e.returnTo,class:xe(r),"aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:Ye(()=>[He(Ae(s.$t("commons.back")),1)]),_:1},8,["to","aria-label"])):e.action=="cancel"?(D(),Be(i,{key:2,id:"btnCancel",to:e.returnTo,class:xe(r)},{default:Ye(()=>[He(Ae(s.$t("commons.cancel")),1)]),_:1},8,["to"])):fe("",!0)])):(D(),G("p",t3,[e.action=="close"?(D(),G("button",{key:0,id:"btnClose",class:xe(r),onClick:a[0]||(a[0]=o=>s.$emit("closed")),type:"button"},Ae(s.$t("commons.close")),1)):fe("",!0),e.action=="cancel"?(D(),G("button",{key:1,id:"btnCancel",class:xe(r),onClick:a[1]||(a[1]=o=>s.$emit("canceled")),type:"button"},Ae(s.$t("commons.cancel")),1)):fe("",!0)]))}}},r3={role:"alert"},s3=["id","innerHTML"],a3={__name:"FieldError",props:{error:{type:String,required:!0},field:{type:String,required:!0},alertType:{type:String,default:"is-danger"}},setup(e){return(t,n)=>(D(),G("div",r3,[Q("p",{id:"valError"+e.field[0].toUpperCase()+e.field.toLowerCase().slice(1),class:xe(["help",e.alertType]),innerHTML:e.error},null,10,s3)]))}};function $n(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 wy(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 i3=["for","innerHTML"],o3=["disabled","id","type","value","placeholder","maxlength"],l3={key:0,class:"icon is-small is-left"},c3={key:1,class:"icon is-small is-right"},u3=["innerHTML"],f3=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},isIndented:Boolean,leftIcon:"",rightIcon:""},setup(e){const t=e,{inputId:n}=$n(t.inputType,t.fieldName);return(r,s)=>{const a=je("FontAwesomeIcon"),i=je("FieldError");return D(),G("div",{class:xe(["mb-3",{"pt-3":e.hasOffset,"is-flex":e.isIndented}])},[e.isIndented?(D(),G("div",{key:0,class:"mx-2 pr-1",style:tn({opacity:e.isDisabled?"0.5":"1"})},[pe(a,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):fe("",!0),Q("div",{class:xe(["field",{"is-flex-grow-5":e.isIndented}])},[Q("label",{for:se(n),class:"label",style:tn({opacity:e.isDisabled?"0.5":"1"}),innerHTML:r.$t(e.label)},null,12,i3),Q("div",{class:xe(["control",{"has-icons-left":e.leftIcon,"has-icons-right":e.rightIcon}])},[Q("input",Ji({disabled:e.isDisabled,id:se(n),type:e.inputType,class:"input",value:e.modelValue,placeholder:e.placeholder},r.$attrs,{onInput:s[0]||(s[0]=o=>r.$emit("update:modelValue",o.target.value)),onChange:s[1]||(s[1]=o=>r.$emit("change:modelValue",o.target.value)),maxlength:e.maxLength}),null,16,o3),e.leftIcon?(D(),G("span",l3,[pe(a,{icon:["fas",e.leftIcon],transform:"rotate-75",size:"xs"},null,8,["icon"])])):fe("",!0),e.rightIcon?(D(),G("span",c3,[pe(a,{icon:["fas",e.rightIcon],transform:"rotate-75",size:"xs"},null,8,["icon"])])):fe("",!0)],2),e.fieldError!=null?(D(),Be(i,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,u3)):fe("",!0)],2)],2)}}}),d3=["for","innerHTML"],p3={class:"control has-icons-right"},m3=["disabled","id","type","value","placeholder"],h3=["title"],g3=["title"],v3=["innerHTML"],y3=["innerHTML"],b3={key:3,class:"columns is-mobile is-size-7 mt-0"},w3={class:"column is-one-third"},_3={class:"has-text-weight-semibold"},E3=Q("br",null,null,-1),x3=Q("br",null,null,-1),k3={class:"column"},A3={class:"has-text-weight-semibold"},S3=Q("br",null,null,-1),C3=Q("br",null,null,-1),O3=Q("br",null,null,-1),T3=Q("br",null,null,-1),L3=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}=$n(t.inputType,t.fieldName),r=ge(t.inputType),s=ge(!1),a=ne(()=>/[a-z]/.test(t.modelValue)),i=ne(()=>/[A-Z]/.test(t.modelValue)),o=ne(()=>/[0-9]/.test(t.modelValue)),l=ne(()=>/[^A-Za-z0-9]/.test(t.modelValue)),c=ne(()=>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=je("font-awesome-icon"),v=je("FieldError");return D(),G("div",{class:xe(["field",{"pt-3":e.hasOffset}])},[Q("label",{for:se(n),class:"label",innerHTML:d.$t(e.label)},null,8,d3),Q("div",p3,[Q("input",Ji({disabled:e.isDisabled,id:se(n),type:se(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,m3),se(r)=="password"?(D(),G("span",{key:0,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[1]||(m[1]=ti(S=>f("text"),["enter"])),onClick:m[2]||(m[2]=S=>f("text")),title:d.$t("auth.forms.reveal_password")},[pe(g,{icon:["fas","eye-slash"]})],40,h3)):(D(),G("span",{key:1,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[3]||(m[3]=ti(S=>f("password"),["enter"])),onClick:m[4]||(m[4]=S=>f("password")),title:d.$t("auth.forms.hide_password")},[pe(g,{icon:["fas","eye"]})],40,g3))]),se(s)?(D(),G("p",{key:0,class:"help is-warning",innerHTML:d.$t("auth.forms.caps_lock_is_on")},null,8,v3)):fe("",!0),e.fieldError!=null?(D(),Be(v,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:2,class:"help",innerHTML:d.$t(e.help)},null,8,y3)):fe("",!0),e.showRules?(D(),G("div",b3,[Q("div",w3,[Q("span",_3,Ae(d.$t("auth.forms.mandatory_rules")),1),E3,Q("span",{class:xe(["is-underscored",{"is-dot":se(c)}]),id:"valPwdIsLongEnough"},null,2),He(Ae(d.$t("auth.forms.is_long_enough")),1),x3]),Q("div",k3,[Q("span",A3,Ae(d.$t("auth.forms.optional_rules_you_should_follow")),1),S3,Q("span",{class:xe(["is-underscored",{"is-dot":se(a)}]),id:"valPwdHasLowerCase"},null,2),He(Ae(d.$t("auth.forms.has_lower_case")),1),C3,Q("span",{class:xe(["is-underscored",{"is-dot":se(i)}]),id:"valPwdHasUpperCase"},null,2),He(Ae(d.$t("auth.forms.has_upper_case")),1),O3,Q("span",{class:xe(["is-underscored",{"is-dot":se(l)}]),id:"valPwdHasSpecialChar"},null,2),He(Ae(d.$t("auth.forms.has_special_char")),1),T3,Q("span",{class:xe(["is-underscored",{"is-dot":se(o)}]),id:"valPwdHasNumber"},null,2),He(Ae(d.$t("auth.forms.has_number")),1)])])):fe("",!0)],2)}}}),P3={class:"field"},R3=["innerHTML"],M3={class:"control"},N3={class:"select"},I3=["value"],$3=["innerHTML"],F3={__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=ge(e.modelValue);return(r,s)=>{const a=je("FieldError");return D(),G("div",P3,[Q("label",{class:"label",innerHTML:r.$t(e.label)},null,8,R3),Q("div",M3,[Q("div",N3,[eu(Q("select",{"onUpdate:modelValue":s[0]||(s[0]=i=>Se(n)?n.value=i:null),onChange:s[1]||(s[1]=i=>r.$emit("update:modelValue",i.target.value))},[(D(!0),G(Ne,null,Wi(e.options,i=>(D(),G("option",{value:i.value},Ae(r.$t(i.text)),9,I3))),256))],544),[[Vm,se(n)]])])]),e.fieldError!=null?(D(),Be(a,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,$3)):fe("",!0)])}}};function fd(e){var t;const n=st(e);return(t=n==null?void 0:n.$el)!=null?t:n}const zr=Vr?window:void 0;function xi(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=zr):[t,n,r,s]=e,!t)return no;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=ze(()=>[fd(t),st(s)],([u,f])=>{if(i(),!u)return;const d=Xu(f)?{...f}:f;a.push(...n.flatMap(m=>r.map(g=>o(u,m,g,d))))},{immediate:!0,flush:"post"}),c=()=>{l(),i()};return tr(c),c}const ys=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},bs="__vueuse_ssr_handlers__",H3=D3();function D3(){return bs in ys||(ys[bs]=ys[bs]||{}),ys[bs]}function dd(e,t){return H3[e]||t}function z3(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 B3={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()}},Ec="vueuse-storage";function j3(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=zr,eventFilter:d,onError:m=w=>{console.error(w)}}=r,g=(u?Di:ge)(t);if(!n)try{n=dd("getDefaultStorage",()=>{var w;return(w=zr)==null?void 0:w.localStorage})()}catch(w){m(w)}if(!n)return g;const v=st(t),S=z3(v),b=(s=r.serializer)!=null?s:B3[S],{pause:_,resume:P}=Zu(g,()=>x(g.value),{flush:a,deep:i,eventFilter:d});return f&&o&&(xi(f,"storage",q),xi(f,Ec,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(Ec,{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?Zn(P):P()}}}}}function V3(){const e=ge(!1);return er()&&kn(()=>{e.value=!0}),e}function U3(e){const t=V3();return ne(()=>(t.value,!!e()))}function K3(e,t={}){const{window:n=zr}=t,r=U3(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const a=ge(!1),i=c=>{a.value=c.matches},o=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},l=ji(()=>{r.value&&(o(),s=n.matchMedia(st(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),a.value=s.matches)});return tr(()=>{l(),o(),s=void 0}),a}function W3(e){return K3("(prefers-color-scheme: dark)",e)}function q3(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=zr,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=W3({window:s}),m=ne(()=>d.value?"dark":"light"),g=l||(i==null?ro(r):j3(i,r,a,{window:s,listenToStorageChanges:o})),v=ne(()=>g.value==="auto"?m.value:g.value),S=dd("updateHTMLAttrs",(x,F,Z)=>{const q=typeof x=="string"?s==null?void 0:s.document.querySelector(x):fd(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)}ze(v,_,{flush:"post",immediate:!0}),ef(()=>_(v.value));const P=ne({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 Y3=xn({name:"UseColorMode",props:["selector","attribute","modes","onChanged","storageKey","storage","emitAuto"],setup(e,{slots:t}){const n=q3(e),r=Nt({mode:n,system:n.system,store:n.store});return()=>{if(t.default)return t.default(r)}}});function Va(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function pd(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 J3(e,t=!1){const n=ge(t);let r=null,s;ze(ro(e),o=>{const l=Va(st(o));if(l){const c=l;s=c.style.overflow,n.value&&(c.style.overflow="hidden")}},{immediate:!0});const a=()=>{const o=Va(st(e));!o||n.value||(Pl&&(r=xi(o,"touchmove",l=>{G3(l)},{passive:!1})),o.style.overflow="hidden",n.value=!0)},i=()=>{const o=Va(st(e));!o||!n.value||(Pl&&(r==null||r()),o.style.overflow=s,n.value=!1)};return tr(i),ne({get(){return n.value},set(o){o?a():i()}})}function X3(){let e=!1;const t=ge(!1);return(n,r)=>{if(t.value=r.value,e)return;e=!0;const s=J3(n,r.value);ze(t,a=>s.value=a)}}X3();const Q3=["aria-labelledby"],Z3=["id","innerHTML"],ey={class:"is-toggle buttons"},ty=["id","aria-checked","disabled","onClick","title"],ny=["id","checked","value","disabled"],ry=["innerHTML"],sy=["innerHTML"],ay={__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=je("FontAwesomeIcon"),i=je("FieldError");return D(),G("div",{class:xe(["field",{"pt-3":e.hasOffset}]),role:"radiogroup","aria-labelledby":se($n)("label",e.fieldName).inputId},[e.label?(D(),G("label",{key:0,id:se($n)("label",e.fieldName).inputId,class:"label",innerHTML:r.$t(e.label)},null,8,Z3)):fe("",!0),Q("div",ey,[pe(se(Y3),null,{default:Ye(({mode:o})=>[(D(!0),G(Ne,null,Wi(e.choices,l=>(D(),G("button",{key:l.value,id:se($n)("button",e.fieldName+l.value).inputId,role:"radio",type:"button",class:xe(["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:aa(c=>n(l.value),["stop"]),title:l.title?l.title:""},[Q("input",{id:se($n)("radio",l.value).inputId,type:"radio",class:"is-hidden",checked:e.modelValue===l.value,value:l.value,disabled:e.isDisabled},null,8,ny),l.legend?(D(),G("span",{key:0,innerHTML:r.$t(l.legend),class:"is-block is-size-7"},null,8,ry)):fe("",!0),l.icon?(D(),Be(a,{key:1,icon:["fas",l.icon],class:"mr-2"},null,8,["icon"])):fe("",!0),He(" "+Ae(r.$t(l.text)),1)],10,ty))),128))]),_:1})]),e.fieldError!=null?(D(),Be(i,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:2,class:"help",innerHTML:r.$t(e.help)},null,8,sy)):fe("",!0)],10,Q3)}}},iy={class:"field is-flex"},oy=["id","name","disabled"],ly=["for","innerHTML","onKeypress"],cy=["innerHTML"],uy=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=Dp(),s=ne({get(){return n.modelValue},set(i){t("update:modelValue",i)}});function a(){r.disabled!=!0&&(s.value=!s.value)}return(i,o)=>{const l=je("FontAwesomeIcon");return D(),G("div",iy,[e.isIndented?(D(),G("div",{key:0,class:"mx-2 pr-1",style:tn({opacity:e.isDisabled?"0.5":"1"})},[pe(l,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):fe("",!0),Q("div",null,[eu(Q("input",{id:e.fieldName,type:"checkbox",name:e.fieldName,class:"is-checkradio is-info","onUpdate:modelValue":o[0]||(o[0]=c=>Se(s)?s.value=c:null),disabled:e.isDisabled},null,8,oy),[[jm,se(s)]]),Q("label",{tabindex:"0",for:e.fieldName,class:xe(["label",e.labelClass]),innerHTML:i.$t(e.label),onKeypress:ti(aa(a,["prevent"]),["space"])},null,42,ly),e.help?(D(),G("p",{key:0,class:"help",innerHTML:i.$t(e.help)},null,8,cy)):fe("",!0)])])}}}),fy={class:"field is-grouped"},dy={class:"control"},py={key:0,class:"control"},my={__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=je("VueButton"),s=je("RouterLink");return D(),G("div",fy,[Q("div",dy,[pe(r,{id:e.submitId,color:e.color,isLoading:e.isBusy,disabled:e.isDisabled},{default:Ye(()=>[He(Ae(t.$t(e.caption)),1)]),_:1},8,["id","color","isLoading","disabled"])]),e.showCancelButton?(D(),G("div",py,[pe(s,{id:e.cancelId,to:{name:e.cancelLandingView},class:"button is-text"},{default:Ye(()=>[He(Ae(t.$t("commons.cancel")),1)]),_:1},8,["id","to"])])):fe("",!0)])}}},hy={__name:"Kicker",props:{kickAfter:{type:Number,required:!0}},setup(e){const t=e,n=ft(),r=ge(["mousedown","scroll","keypress"]),s=ge(null);ze(()=>t.kickAfter,()=>{o()}),kn(()=>{r.value.forEach(function(c){window.addEventListener(c,o)},this),a()}),ea(()=>{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}},An=Gm(M1),md={prefix:"2fauth_",config:window.appConfig,version:window.appVersion,isDemoApp:window.isDemoApp,isTestingApp:window.isTestingApp,langs:window.appLocales};An.provide("2fauth",Qn(md));const hd=I1();hd.use(({store:e})=>{e.$2fauth=md});An.use(hd);An.use(qn);An.use(fg,{lang:document.documentElement.lang.substring(0,2),resolve:async e=>{const t=Object.assign({"../lang/php_bg.json":()=>te(()=>import("./php_bg-79a9a6b2.js"),[],import.meta.url),"../lang/php_de.json":()=>te(()=>import("./php_de-edabb7b3.js"),[],import.meta.url),"../lang/php_en.json":()=>te(()=>import("./php_en-65348e5a.js"),[],import.meta.url),"../lang/php_es.json":()=>te(()=>import("./php_es-8bc38a41.js"),[],import.meta.url),"../lang/php_fr.json":()=>te(()=>import("./php_fr-4e3a581d.js"),[],import.meta.url),"../lang/php_hi.json":()=>te(()=>import("./php_hi-631b366e.js"),[],import.meta.url),"../lang/php_id.json":()=>te(()=>import("./php_id-8aeb6da7.js"),[],import.meta.url),"../lang/php_it.json":()=>te(()=>import("./php_it-b90e26fa.js"),[],import.meta.url),"../lang/php_ja.json":()=>te(()=>import("./php_ja-bbda5fec.js"),[],import.meta.url),"../lang/php_ro.json":()=>te(()=>import("./php_ro-43bf93e4.js"),[],import.meta.url),"../lang/php_ru.json":()=>te(()=>import("./php_ru-e41b0033.js"),[],import.meta.url),"../lang/php_si.json":()=>te(()=>import("./php_si-85c4e7b8.js"),[],import.meta.url),"../lang/php_zh.json":()=>te(()=>import("./php_zh-7cc6d490.js"),[],import.meta.url)});if(e.includes("php_"))return await t[`../lang/${e}.json`]()}});An.use(mh);An.component("FontAwesomeIcon",uv).component("ResponsiveWidthWrapper",S4).component("FormWrapper",T4).component("VueFooter",U4).component("Modal",X4).component("VueButton",Z4).component("ButtonBackCloseCancel",n3).component("FieldError",a3).component("FormField",f3).component("FormPasswordField",L3).component("FormSelect",F3).component("FormToggle",ay).component("FormCheckbox",uy).component("FormButtons",my).component("Kicker",hy);An.mount("#app");ft().applyUserPrefs();export{ou as $,eu as A,gy as B,ln as C,aa as D,Se as E,Ne as F,Wi as G,Vm as H,Je as I,mg as J,is as K,Yl as L,Ti as M,Pc as N,er as O,Zn as P,et as Q,Nf as R,yy as S,gg as T,Y3 as U,Ji as V,jm as W,Su as X,wy as Y,$n as Z,Ju as _,ft as a,vy as a0,Ur as a1,rf as a2,by as a3,rr as a4,_4 as a5,At as b,Mf as c,Nt as d,je as e,D as f,G as g,Q as h,se as i,He as j,Be as k,fe as l,pe as m,xe as n,kn as o,Ye as p,xn as q,ge as r,ea as s,Ae as t,v1 as u,ne as v,ti as w,ze as x,up as y,tn as z}; +`),e.removeAttribute(n),r()}).catch(s)}else r()}else r()})}function V0(e){return Promise.all([hc(e,"::before"),hc(e,"::after")])}function U0(e){return e.parentNode!==document.head&&!~Rg.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(pi)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function gc(e){if(Bt)return new Promise(function(t,n){var r=sr(e.querySelectorAll("*")).filter(U0).map(V0),s=Eo.begin("searchPseudoElements");id(),Promise.all(r).then(function(){s(),_i(),t()}).catch(function(){s(),_i(),n()})})}var K0={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=gc,n}}},provides:function(t){t.pseudoElements2svg=function(n){var r=n.node,s=r===void 0?ke:r;K.searchPseudoElements&&gc(s)}}},vc=!1,W0={mixout:function(){return{dom:{unwatch:function(){id(),vc=!0}}}},hooks:function(){return{bootstrap:function(){fc(gi("mutationObserverCallbacks",{}))},noAuto:function(){O0()},watch:function(n){var r=n.observeMutationsRoot;vc?_i():fc(gi("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},yc=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)},q0={mixout:function(){return{parse:{transform:function(n){return yc(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-transform");return s&&(n.transform=yc(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)}]}]}}}},Ba={x:0,y:0,width:"100%",height:"100%"};function bc(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 Y0(e){return e.tag==="g"?e.children:[e]}var G0={hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-mask"),a=s?va(s.split(" ").map(function(i){return i.trim()})):wo();return a.prefix||(a.prefix=an()),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=qg({transform:l,containerWidth:f,iconWidth:c}),g={tag:"rect",attributes:B(B({},Ba),{},{fill:"white"})},v=u.children?{children:u.children.map(bc)}:{},S={tag:"g",attributes:B({},m.inner),children:[bc(B({tag:u.tag,attributes:B(B({},u.attributes),m.path)},v))]},b={tag:"g",attributes:B({},m.outer),children:[S]},_="mask-".concat(o||Dr()),P="clip-".concat(o||Dr()),x={tag:"mask",attributes:B(B({},Ba),{},{id:_,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[g,b]},F={tag:"defs",children:[{tag:"clipPath",attributes:{id:P},children:Y0(d)},x]};return r.push(F,{tag:"rect",attributes:B({fill:"currentColor","clip-path":"url(#".concat(P,")"),mask:"url(#".concat(_,")")},Ba)}),{children:r,attributes:s}}}},J0={provides:function(t){var n=!1;sn.matchMedia&&(n=sn.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}}}},X0={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}}}},Q0=[Jg,F0,H0,D0,z0,K0,W0,q0,G0,J0,X0];f0(Q0,{mixoutsTo:at});at.noAuto;at.config;var Z0=at.library;at.dom;var Ei=at.parse;at.findIconDefinition;at.toHtml;var ev=at.icon;at.layer;at.text;at.counter;function wc(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 Mt(e){for(var t=1;t=0)&&(n[s]=e[s]);return n}function nv(e,t){if(e==null)return{};var n=tv(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 rv=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ld={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 cd(l)}),s=Object.keys(e.attributes||{}).reduce(function(l,c){var u=e.attributes[c];switch(c){case"class":l.class=ov(u);break;case"style":l.style=iv(u);break;default:l.attrs[c]=u}return l},{attrs:{},class:{},style:{}});n.class;var a=n.style,i=a===void 0?{}:a,o=nv(n,av);return sa(e.tag,Mt(Mt(Mt({},t),{},{class:s.class,style:Mt(Mt({},s.style),i)},s.attrs),o),r)}var ud=!1;try{ud=!0}catch{}function lv(){if(!ud&&console&&typeof console.error=="function"){var e;(e=console).error.apply(e,arguments)}}function ja(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?Xe({},e,t):{}}function cv(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"},Xe(t,"fa-".concat(e.size),e.size!==null),Xe(t,"fa-rotate-".concat(e.rotation),e.rotation!==null),Xe(t,"fa-pull-".concat(e.pull),e.pull!==null),Xe(t,"fa-swap-opacity",e.swapOpacity),Xe(t,"fa-bounce",e.bounce),Xe(t,"fa-shake",e.shake),Xe(t,"fa-beat",e.beat),Xe(t,"fa-fade",e.fade),Xe(t,"fa-beat-fade",e.beatFade),Xe(t,"fa-flash",e.flash),Xe(t,"fa-spin-pulse",e.spinPulse),Xe(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 _c(e){if(e&&Us(e)==="object"&&e.prefix&&e.iconName&&e.icon)return e;if(Ei.icon)return Ei.icon(e);if(e===null)return null;if(Us(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 uv=xn({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=ne(function(){return _c(t.icon)}),a=ne(function(){return ja("classes",cv(t))}),i=ne(function(){return ja("transform",typeof t.transform=="string"?Ei.transform(t.transform):t.transform)}),o=ne(function(){return ja("mask",_c(t.mask))}),l=ne(function(){return ev(s.value,Mt(Mt(Mt(Mt({},a.value),i.value),o.value),{},{symbol:t.symbol,title:t.title}))});ze(l,function(u){if(!u)return lv("Could not find one or more icon(s)",s.value,o.value)},{immediate:!0});var c=ne(function(){return l.value?cd(l.value.abstract[0],{},r):null});return function(){return c.value}}}),fv={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"]},dv={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"]},pv=dv,mv={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"]},hv={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"]},gv={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"]},vv=gv,yv={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"]},bv=yv,wv={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"]},_v={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"]},Ev={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"]},xv={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"]},kv={prefix:"fas",iconName:"slash",icon:[640,512,[],"f715","M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z"]},Av={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"]},Sv=Av,Cv={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"]},Ov={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"]},Tv={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"]},Lv={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"]},Pv={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"]},Rv={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"]},Mv={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"]},Nv={prefix:"fas",iconName:"align-left",icon:[448,512,[],"f036","M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-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 448c0 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"]},Iv={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"]},$v=Iv,Fv={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"]},Hv=Fv,Dv={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"]},zv={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"]},Bv=zv,jv={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"]},Vv={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"]},Uv={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"]},Kv={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"]},Wv=Kv,qv={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"]},Yv={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"]},Gv=Yv,Jv={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"]},Xv=Jv,Qv={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"]},Zv=Qv,e4={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"]},t4={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"]},n4={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"]},r4=n4,s4={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"]},a4={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"]},i4={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"]},o4={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"]},l4={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"]},c4={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"]},u4=c4,f4={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"]},d4={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"]},p4={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"]},m4={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"]},h4={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"]},g4=h4,v4={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"]},y4={prefix:"far",iconName:"paper-plane",icon:[512,512,[61913],"f1d8","M16.1 260.2c-22.6 12.9-20.5 47.3 3.6 57.3L160 376V479.3c0 18.1 14.6 32.7 32.7 32.7c9.7 0 18.9-4.3 25.1-11.8l62-74.3 123.9 51.6c18.9 7.9 40.8-4.5 43.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448 256zm52.1 25.5L409.7 90.6 190.1 336l1.2 1L68.2 285.7zM403.3 425.4L236.7 355.9 450.8 116.6 403.3 425.4z"]},b4={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"]},w4={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"]};Z0.add(t4,u4,o4,Cv,Mv,p4,bv,r4,_v,Pv,Xv,Gv,hv,i4,b4,jv,Tv,pv,vv,Zv,Hv,wv,g4,Uv,xv,d4,Vv,Lv,e4,Bv,Sv,Rv,Ev,$v,Dv,Wv,qv,l4,f4,mv,Ov,m4,fv,a4,v4,s4,w4,y4,kv,Nv);const _4=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},E4={},x4={class:"columns is-centered"},k4={class:"form-column column is-two-thirds-tablet is-half-desktop is-half-widescreen is-one-third-fullhd"};function A4(e,t){return D(),G("div",x4,[Q("div",k4,[ln(e.$slots,"default")])])}const S4=_4(E4,[["render",A4]]),C4=["innerHTML"],O4=["innerHTML"],T4={__name:"FormWrapper",props:{title:{type:String,default:""},punchline:{type:String,default:""}},setup(e){return(t,n)=>{const r=je("ResponsiveWidthWrapper");return D(),Be(r,null,{default:Ye(()=>[e.title?(D(),G("h1",{key:0,class:"title has-text-grey-dark",innerHTML:t.$t(e.title)},null,8,C4)):fe("",!0),e.punchline?(D(),G("div",{key:1,id:"punchline",class:"block",innerHTML:t.$t(e.punchline)},null,8,O4)):fe("",!0),ln(t.$slots,"default")]),_:3})}}},L4={class:"main"},P4={key:0,class:"columns is-gapless"},R4={class:"column has-text-centered"},M4={class:"field is-grouped"},N4={key:1,class:"content has-text-centered"},I4={key:2,class:"content has-text-centered"},$4={key:1},F4={key:3,class:"content has-text-centered"},H4={key:0,class:"is-size-6"},D4={class:"has-text-weight-bold"},z4={key:1},B4={key:0},j4={key:0,class:"release-flag"},V4={key:1},U4={__name:"Footer",props:{showButtons:!0,internalFooterType:{type:String,default:"navLinks"}},setup(e){const t=Nf(),n=ft(),r=et("2fauth");function s(){confirm(Je("auth.confirm.logout"))&&n.logout()}return(a,i)=>{const o=je("router-link");return D(),G("footer",L4,[e.showButtons?(D(),G("div",P4,[Q("div",R4,[Q("div",M4,[ln(a.$slots,"default")])])])):fe("",!0),e.internalFooterType=="doneButton"?(D(),G("div",N4,[Q("button",{id:"lnkExitEdit",class:"button is-ghost is-like-text",onClick:i[0]||(i[0]=aa(l=>a.$emit("doneButtonClicked",!0),["stop"]))},Ae(a.$t("commons.done")),1)])):e.internalFooterType=="modal"?(D(),G("div",I4,[a.$route.name!="accounts"?(D(),Be(o,{key:0,id:"lnkBackToHome",to:{name:"accounts"},class:"has-text-grey"},{default:Ye(()=>[He(Ae(a.$t("commons.back_to_home")),1)]),_:1})):(D(),G("span",$4," "))])):(D(),G("div",F4,[a.$route.meta.showAbout===!0?(D(),G("div",H4,[pe(o,{id:"lnkAbout",to:{name:"about"},class:"has-text-grey"},{default:Ye(()=>[He(" 2FAuth – "),Q("span",D4,"v"+Ae(se(r).version),1)]),_:1})])):(D(),G("div",z4,[pe(o,{id:"lnkSettings",to:{name:"settings.options"},class:"has-text-grey"},{default:Ye(()=>[He(Ae(a.$t("settings.settings")),1)]),_:1},8,["to"]),se(n).isAdmin?(D(),G("span",B4,[He(" - "),pe(o,{id:"lnkAdmin",to:{name:"admin.appSetup"},class:"has-text-grey"},{default:Ye(()=>[He(Ae(a.$t("admin.admin")),1),se(t).latestRelease&&se(t).checkForUpdate?(D(),G("span",j4)):fe("",!0)]),_:1},8,["to"])])):fe("",!0),!se(r).config.proxyAuth||se(r).config.proxyAuth&&se(r).config.proxyLogoutUrl?(D(),G("span",V4,[He(" - "),Q("button",{id:"lnkSignOut",class:"button is-text is-like-text has-text-grey",onClick:s},Ae(a.$t("auth.sign_out")),1)])):fe("",!0)]))]))])}}},K4=["onClick"],W4={class:"modal-content"},q4={class:"section"},Y4={class:"columns is-centered"},G4={class:"column is-three-quarters"},J4={class:"modal-slot box has-text-centered is-shadowless"},X4={__name:"Modal",props:{modelValue:Boolean,closable:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,{notify:r}=Fu(),s=ne({get(){return n.modelValue},set(i){t("update:modelValue",i)}});function a(i){r({clean:!0}),s.value=!1}return(i,o)=>{const l=je("ButtonBackCloseCancel"),c=je("VueFooter");return D(),G("div",{class:xe(["modal modal-otp",{"is-active":se(s)}])},[Q("div",{class:"modal-background",onClick:aa(a,["stop"])},null,8,K4),Q("div",W4,[Q("section",q4,[Q("div",Y4,[Q("div",G4,[Q("div",J4,[ln(i.$slots,"default")])])])])]),n.closable?(D(),Be(c,{key:0,showButtons:!0,internalFooterType:"modal"},{default:Ye(()=>[pe(l,{action:"close",useLinkTag:!1,onClosed:a})]),_:1})):fe("",!0)],2)}}},Q4=["type","disabled"],Z4={__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)=>(D(),G("button",{type:e.nativeType,disabled:e.isLoading||e.isDisabled,class:xe({button:!0,[`${e.color}`]:!0,"is-loading":e.isLoading})},[ln(t.$slots,"default")],10,Q4))}},e3={key:0,class:"control"},t3={key:1,class:"control"},n3={__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;v1(),Ju();const r="button is-rounded"+(sf().value==="dark"&&!t.isText&&!t.isCapture?" is-dark":"")+(t.isText?" is-text":"")+(t.isCapture?" is-large is-warning":"");return(s,a)=>{const i=je("RouterLink");return e.useLinkTag?(D(),G("p",e3,[e.action=="close"?(D(),Be(i,{key:0,id:"btnClose",to:e.returnTo,class:xe(r),tabindex:"0",role:"button","aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:Ye(()=>[He(Ae(s.$t("commons.close")),1)]),_:1},8,["to","aria-label"])):e.action=="back"?(D(),Be(i,{key:1,id:"lnkBack",to:e.returnTo,class:xe(r),"aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:Ye(()=>[He(Ae(s.$t("commons.back")),1)]),_:1},8,["to","aria-label"])):e.action=="cancel"?(D(),Be(i,{key:2,id:"btnCancel",to:e.returnTo,class:xe(r)},{default:Ye(()=>[He(Ae(s.$t("commons.cancel")),1)]),_:1},8,["to"])):fe("",!0)])):(D(),G("p",t3,[e.action=="close"?(D(),G("button",{key:0,id:"btnClose",class:xe(r),onClick:a[0]||(a[0]=o=>s.$emit("closed")),type:"button"},Ae(s.$t("commons.close")),1)):fe("",!0),e.action=="cancel"?(D(),G("button",{key:1,id:"btnCancel",class:xe(r),onClick:a[1]||(a[1]=o=>s.$emit("canceled")),type:"button"},Ae(s.$t("commons.cancel")),1)):fe("",!0)]))}}},r3={role:"alert"},s3=["id","innerHTML"],a3={__name:"FieldError",props:{error:{type:String,required:!0},field:{type:String,required:!0},alertType:{type:String,default:"is-danger"}},setup(e){return(t,n)=>(D(),G("div",r3,[Q("p",{id:"valError"+e.field[0].toUpperCase()+e.field.toLowerCase().slice(1),class:xe(["help",e.alertType]),innerHTML:e.error},null,10,s3)]))}};function $n(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 wy(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 i3=["for","innerHTML"],o3=["disabled","id","type","value","placeholder","maxlength"],l3={key:0,class:"icon is-small is-left"},c3={key:1,class:"icon is-small is-right"},u3=["innerHTML"],f3=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},isIndented:Boolean,leftIcon:"",rightIcon:""},setup(e){const t=e,{inputId:n}=$n(t.inputType,t.fieldName);return(r,s)=>{const a=je("FontAwesomeIcon"),i=je("FieldError");return D(),G("div",{class:xe(["mb-3",{"pt-3":e.hasOffset,"is-flex":e.isIndented}])},[e.isIndented?(D(),G("div",{key:0,class:"mx-2 pr-1",style:tn({opacity:e.isDisabled?"0.5":"1"})},[pe(a,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):fe("",!0),Q("div",{class:xe(["field",{"is-flex-grow-5":e.isIndented}])},[Q("label",{for:se(n),class:"label",style:tn({opacity:e.isDisabled?"0.5":"1"}),innerHTML:r.$t(e.label)},null,12,i3),Q("div",{class:xe(["control",{"has-icons-left":e.leftIcon,"has-icons-right":e.rightIcon}])},[Q("input",Ji({disabled:e.isDisabled,id:se(n),type:e.inputType,class:"input",value:e.modelValue,placeholder:e.placeholder},r.$attrs,{onInput:s[0]||(s[0]=o=>r.$emit("update:modelValue",o.target.value)),onChange:s[1]||(s[1]=o=>r.$emit("change:modelValue",o.target.value)),maxlength:e.maxLength}),null,16,o3),e.leftIcon?(D(),G("span",l3,[pe(a,{icon:["fas",e.leftIcon],transform:"rotate-75",size:"xs"},null,8,["icon"])])):fe("",!0),e.rightIcon?(D(),G("span",c3,[pe(a,{icon:["fas",e.rightIcon],transform:"rotate-75",size:"xs"},null,8,["icon"])])):fe("",!0)],2),e.fieldError!=null?(D(),Be(i,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,u3)):fe("",!0)],2)],2)}}}),d3=["for","innerHTML"],p3={class:"control has-icons-right"},m3=["disabled","id","type","value","placeholder"],h3=["title"],g3=["title"],v3=["innerHTML"],y3=["innerHTML"],b3={key:3,class:"columns is-mobile is-size-7 mt-0"},w3={class:"column is-one-third"},_3={class:"has-text-weight-semibold"},E3=Q("br",null,null,-1),x3=Q("br",null,null,-1),k3={class:"column"},A3={class:"has-text-weight-semibold"},S3=Q("br",null,null,-1),C3=Q("br",null,null,-1),O3=Q("br",null,null,-1),T3=Q("br",null,null,-1),L3=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}=$n(t.inputType,t.fieldName),r=ge(t.inputType),s=ge(!1),a=ne(()=>/[a-z]/.test(t.modelValue)),i=ne(()=>/[A-Z]/.test(t.modelValue)),o=ne(()=>/[0-9]/.test(t.modelValue)),l=ne(()=>/[^A-Za-z0-9]/.test(t.modelValue)),c=ne(()=>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=je("font-awesome-icon"),v=je("FieldError");return D(),G("div",{class:xe(["field",{"pt-3":e.hasOffset}])},[Q("label",{for:se(n),class:"label",innerHTML:d.$t(e.label)},null,8,d3),Q("div",p3,[Q("input",Ji({disabled:e.isDisabled,id:se(n),type:se(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,m3),se(r)=="password"?(D(),G("span",{key:0,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[1]||(m[1]=ti(S=>f("text"),["enter"])),onClick:m[2]||(m[2]=S=>f("text")),title:d.$t("auth.forms.reveal_password")},[pe(g,{icon:["fas","eye-slash"]})],40,h3)):(D(),G("span",{key:1,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[3]||(m[3]=ti(S=>f("password"),["enter"])),onClick:m[4]||(m[4]=S=>f("password")),title:d.$t("auth.forms.hide_password")},[pe(g,{icon:["fas","eye"]})],40,g3))]),se(s)?(D(),G("p",{key:0,class:"help is-warning",innerHTML:d.$t("auth.forms.caps_lock_is_on")},null,8,v3)):fe("",!0),e.fieldError!=null?(D(),Be(v,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:2,class:"help",innerHTML:d.$t(e.help)},null,8,y3)):fe("",!0),e.showRules?(D(),G("div",b3,[Q("div",w3,[Q("span",_3,Ae(d.$t("auth.forms.mandatory_rules")),1),E3,Q("span",{class:xe(["is-underscored",{"is-dot":se(c)}]),id:"valPwdIsLongEnough"},null,2),He(Ae(d.$t("auth.forms.is_long_enough")),1),x3]),Q("div",k3,[Q("span",A3,Ae(d.$t("auth.forms.optional_rules_you_should_follow")),1),S3,Q("span",{class:xe(["is-underscored",{"is-dot":se(a)}]),id:"valPwdHasLowerCase"},null,2),He(Ae(d.$t("auth.forms.has_lower_case")),1),C3,Q("span",{class:xe(["is-underscored",{"is-dot":se(i)}]),id:"valPwdHasUpperCase"},null,2),He(Ae(d.$t("auth.forms.has_upper_case")),1),O3,Q("span",{class:xe(["is-underscored",{"is-dot":se(l)}]),id:"valPwdHasSpecialChar"},null,2),He(Ae(d.$t("auth.forms.has_special_char")),1),T3,Q("span",{class:xe(["is-underscored",{"is-dot":se(o)}]),id:"valPwdHasNumber"},null,2),He(Ae(d.$t("auth.forms.has_number")),1)])])):fe("",!0)],2)}}}),P3={class:"field"},R3=["innerHTML"],M3={class:"control"},N3={class:"select"},I3=["value"],$3=["innerHTML"],F3={__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=ge(e.modelValue);return(r,s)=>{const a=je("FieldError");return D(),G("div",P3,[Q("label",{class:"label",innerHTML:r.$t(e.label)},null,8,R3),Q("div",M3,[Q("div",N3,[eu(Q("select",{"onUpdate:modelValue":s[0]||(s[0]=i=>Se(n)?n.value=i:null),onChange:s[1]||(s[1]=i=>r.$emit("update:modelValue",i.target.value))},[(D(!0),G(Ne,null,Wi(e.options,i=>(D(),G("option",{value:i.value},Ae(r.$t(i.text)),9,I3))),256))],544),[[Vm,se(n)]])])]),e.fieldError!=null?(D(),Be(a,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,$3)):fe("",!0)])}}};function fd(e){var t;const n=st(e);return(t=n==null?void 0:n.$el)!=null?t:n}const zr=Vr?window:void 0;function xi(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=zr):[t,n,r,s]=e,!t)return no;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=ze(()=>[fd(t),st(s)],([u,f])=>{if(i(),!u)return;const d=Xu(f)?{...f}:f;a.push(...n.flatMap(m=>r.map(g=>o(u,m,g,d))))},{immediate:!0,flush:"post"}),c=()=>{l(),i()};return tr(c),c}const ys=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},bs="__vueuse_ssr_handlers__",H3=D3();function D3(){return bs in ys||(ys[bs]=ys[bs]||{}),ys[bs]}function dd(e,t){return H3[e]||t}function z3(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 B3={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()}},Ec="vueuse-storage";function j3(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=zr,eventFilter:d,onError:m=w=>{console.error(w)}}=r,g=(u?Di:ge)(t);if(!n)try{n=dd("getDefaultStorage",()=>{var w;return(w=zr)==null?void 0:w.localStorage})()}catch(w){m(w)}if(!n)return g;const v=st(t),S=z3(v),b=(s=r.serializer)!=null?s:B3[S],{pause:_,resume:P}=Zu(g,()=>x(g.value),{flush:a,deep:i,eventFilter:d});return f&&o&&(xi(f,"storage",q),xi(f,Ec,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(Ec,{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?Zn(P):P()}}}}}function V3(){const e=ge(!1);return er()&&kn(()=>{e.value=!0}),e}function U3(e){const t=V3();return ne(()=>(t.value,!!e()))}function K3(e,t={}){const{window:n=zr}=t,r=U3(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const a=ge(!1),i=c=>{a.value=c.matches},o=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},l=ji(()=>{r.value&&(o(),s=n.matchMedia(st(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),a.value=s.matches)});return tr(()=>{l(),o(),s=void 0}),a}function W3(e){return K3("(prefers-color-scheme: dark)",e)}function q3(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=zr,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=W3({window:s}),m=ne(()=>d.value?"dark":"light"),g=l||(i==null?ro(r):j3(i,r,a,{window:s,listenToStorageChanges:o})),v=ne(()=>g.value==="auto"?m.value:g.value),S=dd("updateHTMLAttrs",(x,F,Z)=>{const q=typeof x=="string"?s==null?void 0:s.document.querySelector(x):fd(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)}ze(v,_,{flush:"post",immediate:!0}),ef(()=>_(v.value));const P=ne({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 Y3=xn({name:"UseColorMode",props:["selector","attribute","modes","onChanged","storageKey","storage","emitAuto"],setup(e,{slots:t}){const n=q3(e),r=Nt({mode:n,system:n.system,store:n.store});return()=>{if(t.default)return t.default(r)}}});function Va(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function pd(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 J3(e,t=!1){const n=ge(t);let r=null,s;ze(ro(e),o=>{const l=Va(st(o));if(l){const c=l;s=c.style.overflow,n.value&&(c.style.overflow="hidden")}},{immediate:!0});const a=()=>{const o=Va(st(e));!o||n.value||(Pl&&(r=xi(o,"touchmove",l=>{G3(l)},{passive:!1})),o.style.overflow="hidden",n.value=!0)},i=()=>{const o=Va(st(e));!o||!n.value||(Pl&&(r==null||r()),o.style.overflow=s,n.value=!1)};return tr(i),ne({get(){return n.value},set(o){o?a():i()}})}function X3(){let e=!1;const t=ge(!1);return(n,r)=>{if(t.value=r.value,e)return;e=!0;const s=J3(n,r.value);ze(t,a=>s.value=a)}}X3();const Q3=["aria-labelledby"],Z3=["id","innerHTML"],ey={class:"is-toggle buttons"},ty=["id","aria-checked","disabled","onClick","title"],ny=["id","checked","value","disabled"],ry=["innerHTML"],sy=["innerHTML"],ay={__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=je("FontAwesomeIcon"),i=je("FieldError");return D(),G("div",{class:xe(["field",{"pt-3":e.hasOffset}]),role:"radiogroup","aria-labelledby":se($n)("label",e.fieldName).inputId},[e.label?(D(),G("label",{key:0,id:se($n)("label",e.fieldName).inputId,class:"label",innerHTML:r.$t(e.label)},null,8,Z3)):fe("",!0),Q("div",ey,[pe(se(Y3),null,{default:Ye(({mode:o})=>[(D(!0),G(Ne,null,Wi(e.choices,l=>(D(),G("button",{key:l.value,id:se($n)("button",e.fieldName+l.value).inputId,role:"radio",type:"button",class:xe(["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:aa(c=>n(l.value),["stop"]),title:l.title?l.title:""},[Q("input",{id:se($n)("radio",l.value).inputId,type:"radio",class:"is-hidden",checked:e.modelValue===l.value,value:l.value,disabled:e.isDisabled},null,8,ny),l.legend?(D(),G("span",{key:0,innerHTML:r.$t(l.legend),class:"is-block is-size-7"},null,8,ry)):fe("",!0),l.icon?(D(),Be(a,{key:1,icon:["fas",l.icon],class:"mr-2"},null,8,["icon"])):fe("",!0),He(" "+Ae(r.$t(l.text)),1)],10,ty))),128))]),_:1})]),e.fieldError!=null?(D(),Be(i,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:2,class:"help",innerHTML:r.$t(e.help)},null,8,sy)):fe("",!0)],10,Q3)}}},iy={class:"field is-flex"},oy=["id","name","disabled"],ly=["for","innerHTML","onKeypress"],cy=["innerHTML"],uy=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=Dp(),s=ne({get(){return n.modelValue},set(i){t("update:modelValue",i)}});function a(){r.disabled!=!0&&(s.value=!s.value)}return(i,o)=>{const l=je("FontAwesomeIcon");return D(),G("div",iy,[e.isIndented?(D(),G("div",{key:0,class:"mx-2 pr-1",style:tn({opacity:e.isDisabled?"0.5":"1"})},[pe(l,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):fe("",!0),Q("div",null,[eu(Q("input",{id:e.fieldName,type:"checkbox",name:e.fieldName,class:"is-checkradio is-info","onUpdate:modelValue":o[0]||(o[0]=c=>Se(s)?s.value=c:null),disabled:e.isDisabled},null,8,oy),[[jm,se(s)]]),Q("label",{tabindex:"0",for:e.fieldName,class:xe(["label",e.labelClass]),innerHTML:i.$t(e.label),onKeypress:ti(aa(a,["prevent"]),["space"])},null,42,ly),e.help?(D(),G("p",{key:0,class:"help",innerHTML:i.$t(e.help)},null,8,cy)):fe("",!0)])])}}}),fy={class:"field is-grouped"},dy={class:"control"},py={key:0,class:"control"},my={__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=je("VueButton"),s=je("RouterLink");return D(),G("div",fy,[Q("div",dy,[pe(r,{id:e.submitId,color:e.color,isLoading:e.isBusy,disabled:e.isDisabled},{default:Ye(()=>[He(Ae(t.$t(e.caption)),1)]),_:1},8,["id","color","isLoading","disabled"])]),e.showCancelButton?(D(),G("div",py,[pe(s,{id:e.cancelId,to:{name:e.cancelLandingView},class:"button is-text"},{default:Ye(()=>[He(Ae(t.$t("commons.cancel")),1)]),_:1},8,["id","to"])])):fe("",!0)])}}},hy={__name:"Kicker",props:{kickAfter:{type:Number,required:!0}},setup(e){const t=e,n=ft(),r=ge(["mousedown","scroll","keypress"]),s=ge(null);ze(()=>t.kickAfter,()=>{o()}),kn(()=>{r.value.forEach(function(c){window.addEventListener(c,o)},this),a()}),ea(()=>{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}},An=Gm(M1),md={prefix:"2fauth_",config:window.appConfig,version:window.appVersion,isDemoApp:window.isDemoApp,isTestingApp:window.isTestingApp,langs:window.appLocales};An.provide("2fauth",Qn(md));const hd=I1();hd.use(({store:e})=>{e.$2fauth=md});An.use(hd);An.use(qn);An.use(fg,{lang:document.documentElement.lang.substring(0,2),resolve:async e=>{const t=Object.assign({"../lang/php_bg.json":()=>te(()=>import("./php_bg-8c7ecc9c.js"),[],import.meta.url),"../lang/php_de.json":()=>te(()=>import("./php_de-51559ca9.js"),[],import.meta.url),"../lang/php_en.json":()=>te(()=>import("./php_en-74a0f48e.js"),[],import.meta.url),"../lang/php_es.json":()=>te(()=>import("./php_es-34404112.js"),[],import.meta.url),"../lang/php_fr.json":()=>te(()=>import("./php_fr-0fb6d7f6.js"),[],import.meta.url),"../lang/php_hi.json":()=>te(()=>import("./php_hi-a4de9620.js"),[],import.meta.url),"../lang/php_id.json":()=>te(()=>import("./php_id-48a5ef59.js"),[],import.meta.url),"../lang/php_it.json":()=>te(()=>import("./php_it-b9c12090.js"),[],import.meta.url),"../lang/php_ja.json":()=>te(()=>import("./php_ja-b8afbdc1.js"),[],import.meta.url),"../lang/php_ro.json":()=>te(()=>import("./php_ro-f956f1f2.js"),[],import.meta.url),"../lang/php_ru.json":()=>te(()=>import("./php_ru-d62a7157.js"),[],import.meta.url),"../lang/php_si.json":()=>te(()=>import("./php_si-a2441031.js"),[],import.meta.url),"../lang/php_tr.json":()=>te(()=>import("./php_tr-cbc04db3.js"),[],import.meta.url),"../lang/php_zh.json":()=>te(()=>import("./php_zh-9f8fe759.js"),[],import.meta.url)});if(e.includes("php_"))return await t[`../lang/${e}.json`]()}});An.use(mh);An.component("FontAwesomeIcon",uv).component("ResponsiveWidthWrapper",S4).component("FormWrapper",T4).component("VueFooter",U4).component("Modal",X4).component("VueButton",Z4).component("ButtonBackCloseCancel",n3).component("FieldError",a3).component("FormField",f3).component("FormPasswordField",L3).component("FormSelect",F3).component("FormToggle",ay).component("FormCheckbox",uy).component("FormButtons",my).component("Kicker",hy);An.mount("#app");ft().applyUserPrefs();export{ou as $,eu as A,gy as B,ln as C,aa as D,Se as E,Ne as F,Wi as G,Vm as H,Je as I,mg as J,is as K,Yl as L,Ti as M,Pc as N,er as O,Zn as P,et as Q,Nf as R,yy as S,gg as T,Y3 as U,Ji as V,jm as W,Su as X,wy as Y,$n as Z,Ju as _,ft as a,vy as a0,Ur as a1,rf as a2,by as a3,rr as a4,_4 as a5,At as b,Mf as c,Nt as d,je as e,D as f,G as g,Q as h,se as i,He as j,Be as k,fe as l,pe as m,xe as n,kn as o,Ye as p,xn as q,ge as r,ea as s,Ae as t,v1 as u,ne as v,ti as w,ze as x,up as y,tn as z}; diff --git a/public/build/assets/bus-ab2b6d74.js b/public/build/assets/bus-7802a020.js similarity index 75% rename from public/build/assets/bus-ab2b6d74.js rename to public/build/assets/bus-7802a020.js index b6b8db3e..87e3bafd 100644 --- a/public/build/assets/bus-ab2b6d74.js +++ b/public/build/assets/bus-7802a020.js @@ -1 +1 @@ -import{a1 as e}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - 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{a1 as e}from"./app-2d89b28f.js";/*! 2FAuth version 5.1.1 - 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-79a9a6b2.js b/public/build/assets/php_bg-8c7ecc9c.js similarity index 99% rename from public/build/assets/php_bg-79a9a6b2.js rename to public/build/assets/php_bg-8c7ecc9c.js index 3653eed0..f04bbe8b 100644 --- a/public/build/assets/php_bg-79a9a6b2.js +++ b/public/build/assets/php_bg-8c7ecc9c.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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 удостоверяване.

+/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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.webauthn.options":"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":"Нова парола","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_reset":"Password successfully reset","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.x_selected":":count selected","commons.name":"Име","commons.manage":"Управление","commons.done":"Готово","commons.new":"Нов","commons.back":"Назад","commons.move":"Премести","commons.export":"Експорт","commons.all":"Всички","commons.check_all":"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","commons.no_result":"No result","commons.information":"Information","commons.permissions":"Permissions","commons.send":"Send","commons.optimize":"Optimize","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","errors.data_cannot_be_refreshed_from_server":"Data cannot be refreshed from server","errors.no_pwd_reset_for_this_user_type":"Password reset unavailable for this user","groups.groups":"Групи","groups.create_group":"Създай нова група","groups.show_group_selector":"Покажи избора на групи","groups.hide_group_selector":"Скрий избора на групи","groups.select_accounts_to_show":"Избери група профили за показване","groups.x_accounts":":count accounts","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":"Български (Български)","languages.ja":"日本語 (японски)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Hello","notifications.test_email_settings.subject":"2FAuth test email","notifications.test_email_settings.reason":"You are receiving this email because you requested a test email to validate the email settings of your 2FAuth instance.","notifications.test_email_settings.success":"Good news, it works :)","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.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.clear_search_on_copy.label":"Clear Search on copy","settings.forms.clear_search_on_copy.help":"Empty the Search box right after a code has been copied to the clipboard","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.default_group.label":"Група по подразбиране","settings.forms.default_group.help":"Групата, към която са свързани новосъздадените акаунти","settings.forms.view_default_group_on_copy.label":"View default group on copy","settings.forms.view_default_group_on_copy.help":"Always return to the default group when an OTP is copied","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.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":"Относно","titles.admin.appSetup":"App setup","titles.admin.users":"Users management","titles.admin.createUser":"Create user","titles.admin.manageUser":"Manage user","twofaccounts.service":"Услуга","twofaccounts.account":"Профил","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.forms.spaces_are_ignored":"Unwanted spaces will be automatically removed","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.expected_format_for_direct_input":"Expected: A list of otpauth URI, one by line","twofaccounts.import.supported_migration_formats":"Поддържани формати за миграция","twofaccounts.import.qr_code":"QR код","twofaccounts.import.text_file":"Text file","twofaccounts.import.direct_input":"Direct input","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.email.ComplyWithEmailRestrictionPolicy":"This email address does not comply with the registration policy","validation.custom.email.IsValidEmailList":"All emails must be valid and separated with a pipe","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{e as default}; diff --git a/public/build/assets/php_de-51559ca9.js b/public/build/assets/php_de-51559ca9.js new file mode 100644 index 00000000..a8906312 --- /dev/null +++ b/public/build/assets/php_de-51559ca9.js @@ -0,0 +1,4 @@ +/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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.webauthn.options":"Options","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_reset":"Password successfully reset","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.x_selected":":count 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.check_all":"Alles","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","commons.no_result":"Kein Ergebnis","commons.information":"Information","commons.permissions":"Berechtigungen","commons.send":"Abschicken","commons.optimize":"Optimieren","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","errors.data_cannot_be_refreshed_from_server":"Daten können nicht vom Server aktualisiert werden","errors.no_pwd_reset_for_this_user_type":"Das Zurücksetzen des Passworts ist für diese Benutzer nicht verfügbar","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.x_accounts":":count Konten","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":"English (Englisch)","languages.fr":"Français (Französisch)","languages.de":"Deutsch (Deutsch)","languages.es":"Español (Spanisch)","languages.zh":"简体中文 (Vereinfachtes Chinesisch)","languages.ru":"Русский (Russisch)","languages.bg":"Български (Bulgarisch)","languages.ja":"日本語 (Japanisch)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Hello","notifications.test_email_settings.subject":"2FAuth test email","notifications.test_email_settings.reason":"You are receiving this email because you requested a test email to validate the email settings of your 2FAuth instance.","notifications.test_email_settings.success":"Good news, it works :)","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.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.clear_search_on_copy.label":"Suche beim Kopieren löschen","settings.forms.clear_search_on_copy.help":"Leeren das Suchfeld, nachdem ein Code in die Zwischenablage kopiert wurde","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.default_group.label":"Standardgruppe","settings.forms.default_group.help":"Die Gruppe, der neu erstellte Konten zugeordnet werden","settings.forms.view_default_group_on_copy.label":"Standardgruppe beim Kopieren anzeigen","settings.forms.view_default_group_on_copy.help":"Immer zur Standardgruppe zurückkehren, wenn ein OTP kopiert wird","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.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","titles.admin.appSetup":"App setup","titles.admin.users":"Benutzerverwaltung","titles.admin.createUser":"Benutzer erstellen","titles.admin.manageUser":"Benutzer verwalten","twofaccounts.service":"Dienst","twofaccounts.account":"Benutzerkonto","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.forms.spaces_are_ignored":"Ungewollte Leerzeichen werden automatisch entfernt","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.expected_format_for_direct_input":"Erwartet: Eine Liste der otpauth URI, eins pro Zeile","twofaccounts.import.supported_migration_formats":"Unterstütze Migrationsformate","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Textdatei","twofaccounts.import.direct_input":"Direkte Eingabe","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.email.ComplyWithEmailRestrictionPolicy":"Diese E-Mail-Adresse entspricht nicht den Registrierungsrichtlinien","validation.custom.email.IsValidEmailList":"Alle E-Mails müssen gültig und durch eine Pipe getrennt sein","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-edabb7b3.js b/public/build/assets/php_de-edabb7b3.js deleted file mode 100644 index b59239ee..00000000 --- a/public/build/assets/php_de-edabb7b3.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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.webauthn.options":"Options","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_reset":"Password successfully reset","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.x_selected":":count selected","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.check_all":"All","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","commons.no_result":"No result","commons.information":"Information","commons.permissions":"Permissions","commons.send":"Send","commons.optimize":"Optimize","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","errors.data_cannot_be_refreshed_from_server":"Data cannot be refreshed from server","errors.no_pwd_reset_for_this_user_type":"Password reset unavailable for this user","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.x_accounts":":count accounts","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":"English (Englisch)","languages.fr":"Français (Französisch)","languages.de":"Deutsch (Deutsch)","languages.es":"Español (Spanisch)","languages.zh":"简体中文 (Vereinfachtes Chinesisch)","languages.ru":"Русский (Russisch)","languages.bg":"Български (Bulgarisch)","languages.ja":"日本語 (Japanisch)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Hello","notifications.test_email_settings.subject":"2FAuth test email","notifications.test_email_settings.reason":"You are receiving this email because you requested a test email to validate the email settings of your 2FAuth instance.","notifications.test_email_settings.success":"Good news, it works :)","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.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.clear_search_on_copy.label":"Clear Search on copy","settings.forms.clear_search_on_copy.help":"Empty the Search box right after a code has been copied to the clipboard","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.default_group.label":"Standardgruppe","settings.forms.default_group.help":"Die Gruppe, der neu erstellte Konten zugeordnet werden","settings.forms.view_default_group_on_copy.label":"View default group on copy","settings.forms.view_default_group_on_copy.help":"Always return to the default group when an OTP is copied","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.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","titles.admin.appSetup":"App setup","titles.admin.users":"Users management","titles.admin.createUser":"Create user","titles.admin.manageUser":"Manage user","twofaccounts.service":"Dienst","twofaccounts.account":"Benutzerkonto","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.forms.spaces_are_ignored":"Unwanted spaces will be automatically removed","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.expected_format_for_direct_input":"Expected: A list of otpauth URI, one by line","twofaccounts.import.supported_migration_formats":"Unterstütze Migrationsformate","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Textdatei","twofaccounts.import.direct_input":"Direct input","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.email.ComplyWithEmailRestrictionPolicy":"This email address does not comply with the registration policy","validation.custom.email.IsValidEmailList":"All emails must be valid and separated with a pipe","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_en-65348e5a.js b/public/build/assets/php_en-74a0f48e.js similarity index 60% rename from public/build/assets/php_en-65348e5a.js rename to public/build/assets/php_en-74a0f48e.js index 087b2eed..95642e28 100644 --- a/public/build/assets/php_en-65348e5a.js +++ b/public/build/assets/php_en-74a0f48e.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.1.0 - 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.","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.","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.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","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.can":"The :attribute field contains an unauthorized value.","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.decimal":"The :attribute field must have :decimal decimal places.","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.extensions":"The :attribute field must have one of the following extensions: :values.","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.hex_color":"The :attribute field must be a valid hexadecimal color.","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.lowercase":"The :attribute field must be lowercase.","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.missing":"The :attribute field must be missing.","validation.missing_if":"The :attribute field must be missing when :other is :value.","validation.missing_unless":"The :attribute field must be missing unless :other is :value.","validation.missing_with":"The :attribute field must be missing when :values is present.","validation.missing_with_all":"The :attribute field must be missing when :values are present.","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.present_if":"The :attribute field must be present when :other is :value.","validation.present_unless":"The :attribute field must be present unless :other is :value.","validation.present_with":"The :attribute field must be present when :values is present.","validation.present_with_all":"The :attribute field must be present when :values are 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.uppercase":"The :attribute field must be uppercase.","validation.url":"The :attribute must be a valid URL.","validation.ulid":"The :attribute field must be a valid ULID.","validation.uuid":"The :attribute must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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.

+/*! 2FAuth version 5.1.1 - 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.","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.","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.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","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.can":"The :attribute field contains an unauthorized value.","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.decimal":"The :attribute field must have :decimal decimal places.","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.extensions":"The :attribute field must have one of the following extensions: :values.","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.hex_color":"The :attribute field must be a valid hexadecimal color.","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.lowercase":"The :attribute field must be lowercase.","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.missing":"The :attribute field must be missing.","validation.missing_if":"The :attribute field must be missing when :other is :value.","validation.missing_unless":"The :attribute field must be missing unless :other is :value.","validation.missing_with":"The :attribute field must be missing when :values is present.","validation.missing_with_all":"The :attribute field must be missing when :values are present.","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.present_if":"The :attribute field must be present when :other is :value.","validation.present_unless":"The :attribute field must be present unless :other is :value.","validation.present_with":"The :attribute field must be present when :values is present.","validation.present_with_all":"The :attribute field must be present when :values are 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.uppercase":"The :attribute field must be uppercase.","validation.url":"The :attribute must be a valid URL.","validation.ulid":"The :attribute field must be a valid ULID.","validation.uuid":"The :attribute must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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.

- 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.webauthn.options":"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_reset":"Password successfully reset","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.x_selected":":count 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.check_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","commons.no_result":"No result","commons.information":"Information","commons.permissions":"Permissions","commons.send":"Send","commons.optimize":"Optimize","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","errors.data_cannot_be_refreshed_from_server":"Data cannot be refreshed from server","errors.no_pwd_reset_for_this_user_type":"Password reset unavailable for this user","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.x_accounts":":count accounts","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 (English)","languages.fr":"Français (French)","languages.de":"Deutsch (German)","languages.es":"Español (Spanish)","languages.zh":"简体中文 (Chinese Simplified)","languages.ru":"Русский (Russian)","languages.bg":"Български (Bulgarian)","languages.ja":"日本語 (Japanese)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Hello","notifications.test_email_settings.subject":"2FAuth test email","notifications.test_email_settings.reason":"You are receiving this email because you requested a test email to validate the email settings of your 2FAuth instance.","notifications.test_email_settings.success":"Good news, it works :)","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.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.clear_search_on_copy.label":"Clear Search on copy","settings.forms.clear_search_on_copy.help":"Empty the Search box right after a code has been copied to the clipboard","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.default_group.label":"Default group","settings.forms.default_group.help":"The group to which the newly created accounts are associated","settings.forms.view_default_group_on_copy.label":"View default group on copy","settings.forms.view_default_group_on_copy.help":"Always return to the default group when an OTP is copied","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.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","titles.admin.appSetup":"App setup","titles.admin.users":"Users management","titles.admin.createUser":"Create user","titles.admin.manageUser":"Manage user","twofaccounts.service":"Service","twofaccounts.account":"Account","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.forms.spaces_are_ignored":"Unwanted spaces will be automatically removed","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.expected_format_for_direct_input":"Expected: A list of otpauth URI, one by line","twofaccounts.import.supported_migration_formats":"Supported migration formats","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Text file","twofaccounts.import.direct_input":"Direct input","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.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.email.ComplyWithEmailRestrictionPolicy":"This email address does not comply with the registration policy","validation.custom.email.IsValidEmailList":"All emails must be valid and separated with a pipe","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}; + 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.webauthn.options":"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_reset":"Password successfully reset","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.x_selected":":count 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.check_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","commons.no_result":"No result","commons.information":"Information","commons.permissions":"Permissions","commons.send":"Send","commons.optimize":"Optimize","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","errors.data_cannot_be_refreshed_from_server":"Data cannot be refreshed from server","errors.no_pwd_reset_for_this_user_type":"Password reset unavailable for this user","errors.app_key_is_not_set":"The APP_KEY environment variable is not set","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.x_accounts":":count accounts","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 (English)","languages.fr":"Français (French)","languages.de":"Deutsch (German)","languages.es":"Español (Spanish)","languages.zh":"简体中文 (Chinese Simplified)","languages.ru":"Русский (Russian)","languages.bg":"Български (Bulgarian)","languages.ja":"日本語 (Japanese)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Hello","notifications.test_email_settings.subject":"2FAuth test email","notifications.test_email_settings.reason":"You are receiving this email because you requested a test email to validate the email settings of your 2FAuth instance.","notifications.test_email_settings.success":"Good news, it works :)","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.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.clear_search_on_copy.label":"Clear Search on copy","settings.forms.clear_search_on_copy.help":"Empty the Search box right after a code has been copied to the clipboard","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.default_group.label":"Default group","settings.forms.default_group.help":"The group to which the newly created accounts are associated","settings.forms.view_default_group_on_copy.label":"View default group on copy","settings.forms.view_default_group_on_copy.help":"Always return to the default group when an OTP is copied","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.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","titles.admin.appSetup":"App setup","titles.admin.users":"Users management","titles.admin.createUser":"Create user","titles.admin.manageUser":"Manage user","twofaccounts.service":"Service","twofaccounts.account":"Account","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.forms.spaces_are_ignored":"Unwanted spaces will be automatically removed","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.expected_format_for_direct_input":"Expected: A list of otpauth URI, one by line","twofaccounts.import.supported_migration_formats":"Supported migration formats","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Text file","twofaccounts.import.direct_input":"Direct input","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.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.email.ComplyWithEmailRestrictionPolicy":"This email address does not comply with the registration policy","validation.custom.email.IsValidEmailList":"All emails must be valid and separated with a pipe","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_es-8bc38a41.js b/public/build/assets/php_es-34404112.js similarity index 99% rename from public/build/assets/php_es-8bc38a41.js rename to public/build/assets/php_es-34404112.js index f0b192f2..58b62227 100644 --- a/public/build/assets/php_es-8bc38a41.js +++ b/public/build/assets/php_es-34404112.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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":"También puede continuar con:","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.

+/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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":"También puede continuar con:","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.webauthn.options":"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":"Nueva contraseña","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_reset":"Password successfully reset","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":"Si siempre ha usado SSO para iniciar sesión, desconecte y use la función de restablecer la contraseña y así obtener una nueva y pueda rellenar este formulario.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Eliminar su cuenta de 2FAuth no tiene impacto en su cuenta SSO externa.","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.x_selected":":count seleccionados","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.check_all":"Todos","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":"Actualizar","commons.data_refreshed_to_reflect_server_changes":"Los datos han sido actualizados para reflejar los cambios en el lado del servidor","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":"Enviar","commons.default":"Por defecto","commons.back_to_home":"Volver al inicio","commons.nothing":"nada","commons.no_result":"No result","commons.information":"Information","commons.permissions":"Permissions","commons.send":"Send","commons.optimize":"Optimize","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":"Dispositivo ya registrado","errors.not_allowed_operation":"Operacion no permitida","errors.no_authenticator_support_specified_algorithms":"No existen autentificadores que soporten los algoritmos especificados","errors.authenticator_missing_discoverable_credential_support":"El autentificador no cuenta con soporte para credenciales detectables","errors.authenticator_missing_user_verification_support":"El autentificador no cuenta con soporte para la verificación de usuario","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":"El dominio de 2FAuth's no es un dominio válido","errors.user_id_not_between_1_64":"El ID de usuario no está entre 1 y 64 caracteres","errors.no_entry_was_of_type_public_key":'Ninguna entrada es del tipo "clave pública"',"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":"💀 Algo salió mal durante la obtención de datos","errors.check_failed_try_later":"Comprobación fallida, por favor inténtelo más tarde","errors.sso_disabled":"SSO está desactivado","errors.sso_bad_provider_setup":"Este proveedor SSO no está completamente configurado en su archivo .env","errors.sso_failed":"Autenticación mediante SSO rechazada","errors.sso_no_register":"Los registros están deshabilitados","errors.sso_email_already_used":"Ya existe una cuenta de usuario con la misma dirección de correo electrónico, pero no coincide con su ID de cuenta externa. No utilice SSO si ya se encuentra registrado en 2FAuth con este correo electrónico.","errors.account_managed_by_external_provider":"Cuenta administrada por un proveedor externo","errors.data_cannot_be_refreshed_from_server":"Los datos no se pueden actualizar desde el servidor","errors.no_pwd_reset_for_this_user_type":"Password reset unavailable for this user","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.x_accounts":":count cuentas","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":"English (Inglés)","languages.fr":"Français (Francés)","languages.de":"Deutsch (Alemán)","languages.es":"Español","languages.zh":"简体中文 (Chino Simplificado)","languages.ru":"Русский (ruso)","languages.bg":"Български (Búlgaro)","languages.ja":"日本語 (Japonés)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Hello","notifications.test_email_settings.subject":"2FAuth test email","notifications.test_email_settings.reason":"You are receiving this email because you requested a test email to validate the email settings of your 2FAuth instance.","notifications.test_email_settings.success":"Good news, it works :)","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.you_are_administrator":"Usted es un administrador","settings.account_linked_to_sso_x_provider":"Ha iniciado sesión a través de SSO usando su cuenta :provider. Su información no se puede cambiar aquí, sino en :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":'Muestra el OTP oculto',"settings.forms.reveal_dotted_otp.help":"Activa la capacidad de revelar temporalmente las contraseñas ocultas","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.clear_search_on_copy.label":"Clear Search on copy","settings.forms.clear_search_on_copy.help":"Empty the Search box right after a code has been copied to the clipboard","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.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.view_default_group_on_copy.label":"View default group on copy","settings.forms.view_default_group_on_copy.help":"Always return to the default group when an OTP is copied","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.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","titles.admin.appSetup":"App setup","titles.admin.users":"Users management","titles.admin.createUser":"Create user","titles.admin.manageUser":"Manage user","twofaccounts.service":"Servicio","twofaccounts.account":"Cuenta","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":"mostrar","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.forms.spaces_are_ignored":"Unwanted spaces will be automatically removed","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":"Normalmente se realiza haciendo clic en el icono de la cámara en o al lado de la barra de direcciones del navegador","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 la función Exportar de estas aplicaciones para obtener un recurso de migración como un código QR o un archivo JSON y luego cárguelo aquí.","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.expected_format_for_direct_input":"Expected: A list of otpauth URI, one by line","twofaccounts.import.supported_migration_formats":"Formatos de migración soportados","twofaccounts.import.qr_code":"Código QR","twofaccounts.import.text_file":"Fichero de texto","twofaccounts.import.direct_input":"Direct input","twofaccounts.import.plain_text":"Texto plano","twofaccounts.import.parsing_data":"Analizando datos...","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":"Las siguientes cuentas de 2FA fueron encontradas en el recurso de migración. Hasta ahora, ninguna de ellas ha sido añadida a 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Utilice los botones disponibles para guardarlos permanentemente en su colección de 2FA o descartarlos.","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 aceptarse 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.email.ComplyWithEmailRestrictionPolicy":"This email address does not comply with the registration policy","validation.custom.email.IsValidEmailList":"All emails must be valid and separated with a pipe","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_fr-4e3a581d.js b/public/build/assets/php_fr-0fb6d7f6.js similarity index 99% rename from public/build/assets/php_fr-4e3a581d.js rename to public/build/assets/php_fr-0fb6d7f6.js index 45b3486d..d5df0e73 100644 --- a/public/build/assets/php_fr-4e3a581d.js +++ b/public/build/assets/php_fr-0fb6d7f6.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"Configuration","admin.registrations":"Inscriptions","admin.users":"Utilisateurs","admin.users_legend":"Gérer les utilisateurs de votre instance ou créer de nouveaux utilisateurs.","admin.admin_settings":"Paramètres administrateur","admin.create_new_user":"Créer un utilisateur","admin.new_user":"Nouvel utilisateur","admin.search_user_placeholder":"nom d'utilisateur, email ...","admin.quick_filters_colons":"Filtres rapides :","admin.user_created":"Utilisateur créé avec succès","admin.confirm.delete_user":"Êtes-vous sûr de vouloir supprimer cet utilisateur ? Il est impossible de restaurer un utilisateur supprimé.","admin.confirm.request_password_reset":"Êtes-vous sûr de vouloir réinitialiser le mot de passe de cet utilisateur ?","admin.confirm.purge_password_reset_request":"Êtes-vous sûr de vouloir supprimer la demande ?","admin.confirm.delete_account":"Êtes-vous sûr de vouloir supprimer cet utilisateur ?","admin.confirm.edit_own_account":"Il s'agit de votre propre compte. Êtes-vous sûr ?","admin.confirm.change_admin_role":"Cela va grandement impacter les permissions de cet utilisateur. Êtes-vous sûr ?","admin.confirm.demote_own_account":"Vous ne serez plus administrateur. Vraiment sûr ?","admin.logs":"Logs","admin.administration_legend":"Les paramètres suivants sont généraux et s'appliquent à tous les utilisateurs.","admin.user_management":"Gestion de l'utilisateur","admin.oauth_provider":"Fournisseur OAuth","admin.account_bound_to_x_via_oauth":"Ce compte est lié à un compte :provider via OAuth","admin.last_seen_on_date":"Dernière connexion :date","admin.registered_on_date":"Inscription :date","admin.updated_on_date":"Dernière mise à jour :date","admin.access":"Accès","admin.password_requested_on_t":"Une demande de réinitialisation de mot de passe existe pour cet utilisateur (demande envoyée le :datetime). Cela signifie que l'utilisateur n'a pas encore changé son mot de passe, mais que le lien qu'il a reçu est toujours valide. Cette demande peut venir de l'utilisateur lui-même ou d'un administrateur.","admin.password_request_expired":"Une demande de réinitialisation de mot de passe existe pour cet utilisateur mais a expiré. Cela signifie que l'utilisateur n'a pas changé son mot de passe à temps. Cette demande peut venir de l'utilisateur lui-même ou d'un administrateur.","admin.resend_email":"Renvoyer l’email","admin.resend_email_title":"Renvoyer un email de réinitialisation du mot de passe à l'utilisateur","admin.resend_email_help":"Utilisez Renvoyer l'email pour renvoyer un nouvel email de réinitialisation de mot de passe à l'utilisateur afin qu'il puisse choisir un nouveau mot de passe. Renvoyer un nouvel email ne change pas le mot de passe actuel de l'utilisateur, toutes les demandes précédement envoyées seront révoquées.","admin.reset_password":"Réinitialiser le mdp","admin.reset_password_help":"Utilisez Réinitialiser le mdp pour forcer la réinitialisation du mot de passe immédiatement (cela va définir un mot de passe temporaire) avant d'envoyer un e-mail de réinitialisation de mot de passe à l'utilisateur. L'utilisateur pourra alors choisir un nouveau mot de passe personnalisé. Les demandes précédement envoyées seront révoquées.","admin.reset_password_title":"Réinitialiser le mot de passe de l'utilisateur","admin.password_successfully_reset":"Mot de passe réinitialisé avec succès","admin.user_has_x_active_pat":":count jeton(s) actif(s)","admin.user_has_x_security_devices":":count périphérique(s) de sécurité","admin.revoke_all_pat_for_user":"Révoquer tous les jetons de l'utilisateur","admin.revoke_all_devices_for_user":"Révoquer tous les périphériques de sécurité de l'utilisateur","admin.danger_zone":"Zone dangereuse","admin.delete_this_user_legend":"Le compte utilisateur sera supprimé ainsi que toutes ses données 2FA.","admin.this_is_not_soft_delete":"Il ne s'agit pas d'une désactivation, le compte ne sera pas récupérable.","admin.delete_this_user":"Supprimer l'utilisateur","admin.user_role_updated":"Rôle utilisateur mis à jour","admin.pats_succesfully_revoked":"Jetons de l'utilisateur révoqués avec succès","admin.security_devices_succesfully_revoked":"Périphériques de sécurité de l'utilisateur révoqués avec succès","admin.variables":"Variables","admin.cache_cleared":"Cache vidé","admin.cache_optimized":"Cache optimisé","admin.check_now":"Vérifier maintenant","admin.view_on_github":"Voir sur GitHub","admin.x_is_available":":version est disponible","admin.forms.use_encryption.label":"Protéger les données sensibles","admin.forms.use_encryption.help":"Les données sensibles, les secrets et les e-mails 2FA, sont stockés chiffrés dans la base de données. Assurez-vous de sauvegarder la valeur APP_KEY de votre fichier env (ou tout le fichier) car il sert de clé de chiffrement. Il n'y a aucun moyen de déchiffrer les données chiffrées sans cette clé.","admin.forms.restrict_registration.label":"Restreindre les inscriptions","admin.forms.restrict_registration.help":"Restreint la possibilité de s'inscrire à certaines adresses email seulement. Les deux règles peuvent être utilisées simultanément. Cette limitation est sans effet sur les inscriptions via SSO.","admin.forms.restrict_list.label":"Listes de filtrage","admin.forms.restrict_list.help":`Les adresses email dans cette liste seront autorisées à s'inscrire. Séparez les adresses avec le caractère "|"`,"admin.forms.restrict_rule.label":"Règle de filtrage","admin.forms.restrict_rule.help":"Les adresses emails validant cette expression régulière seront autorisées à s'inscrire","admin.forms.disable_registration.label":"Désactiver les inscriptions","admin.forms.disable_registration.help":"Empêche l'inscription de nouveaux utilisateurs. A moins que ce réglage ne soit surchargé (voir ci-après), cela affecte également l'inscription (c'est à dire la première connexion) via SSO","admin.forms.enable_sso.label":"Activer l'authentification unique (SSO)","admin.forms.enable_sso.help":"Permet aux visiteurs de s'authentifier avec un compte externe grâce à la méthode Single Sign-On","admin.forms.keep_sso_registration_enabled.label":"Garder l'inscription via SSO activée","admin.forms.keep_sso_registration_enabled.help":"Permet aux nouveaux utilisateurs de se connecter pour la première fois via SSO alors que les inscriptions sont désactivées","admin.forms.is_admin.label":"Est administrateur","admin.forms.is_admin.help":"Donne les droits d'administrateur à l'utilisateur. Les administrateurs peuvent gérer l'application, c'est à dire modifier ses paramètres et gérer ses utilisateurs. Un administrateur n'a aucun moyen de consulter les données 2FA d'un autre utilisateur ou de lui générer des codes.","admin.forms.test_email.label":"Test de la configuration Email","admin.forms.test_email.help":"Envoyez un email de test pour contrôler la capacité de votre instance à utiliser l'email. Il est important d'avoir une configuration fonctionnelle, sans quoi les utilisateurs ne pourront pas demander de réinitialisation de leur mot de passe par exemple.","admin.forms.test_email.email_will_be_send_to_x":`L'email sera envoyé à :email`,"admin.forms.cache_management.label":"Gestion du cache","admin.forms.cache_management.help":"Parfois le cache doit être effacé, par exemple après une modification de variable d'environnement ou une mise à jour. Vous pouvez le faire ici.","auth.failed":"Ces identifiants ne correspondent pas à nos enregistrements","auth.password":"Le mot de passe saisi est incorrect.","auth.throttle":"Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.","auth.sign_out":"Déconnexion","auth.sign_in":"Se connecter","auth.sign_in_using":"Se connecter en utilisant","auth.or_continue_with":"Vous pouvez aussi continuer avec :","auth.sign_in_using_security_device":"Se connecter en utilisant un périphérique de sécurité","auth.login_and_password":"login & mot de passe","auth.register":"Créer un compte","auth.welcome_to_2fauth":"Bienvenue sur 2FAuth","auth.autolock_triggered":"Verrouillage automatique déclenché","auth.autolock_triggered_punchline":"L'événement surveillé par la fonction de verrouillage automatique s'est déclenché. Vous avez été automatiquement déconnecté.","auth.already_authenticated":"Déjà authentifié","auth.authentication":"Authentification","auth.maybe_later":"Peut-être plus tard","auth.user_account_controlled_by_proxy":"Compte utilisateur mis à disposition par un proxy d'authentification.
Gérer le compte au niveau du proxy.","auth.auth_handled_by_proxy":"Authentification gérée par un proxy inverse, les paramètres ci-dessous sont désactivés.
Gérer l'authentification au niveau du proxy.","auth.confirm.logout":"Etes-vous sûrs de vouloir vous déconnecter ?","auth.confirm.revoke_device":"Voulez-vous vraiment supprimer cet appareil ?","auth.confirm.delete_account":"Voulez-vous vraiment supprimer votre compte ?","auth.webauthn.security_device":"un périphérique de sécurité","auth.webauthn.security_devices":"Périphériques de sécurité","auth.webauthn.security_devices_legend":"Périphériques d'authentification que vous pouvez utiliser pour vous connecter à 2FAuth, comme des clés de sécurité (ex : YubiKey) ou des smartphones dotés de capacités biométriques (ex : Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`Vous pouvez améliorer la sécurité de votre compte 2FAuth en activant l'authentification WebAuthn.

+/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"Configuration","admin.registrations":"Inscriptions","admin.users":"Utilisateurs","admin.users_legend":"Gérer les utilisateurs de votre instance ou créer de nouveaux utilisateurs.","admin.admin_settings":"Paramètres administrateur","admin.create_new_user":"Créer un utilisateur","admin.new_user":"Nouvel utilisateur","admin.search_user_placeholder":"nom d'utilisateur, email ...","admin.quick_filters_colons":"Filtres rapides :","admin.user_created":"Utilisateur créé avec succès","admin.confirm.delete_user":"Êtes-vous sûr de vouloir supprimer cet utilisateur ? Il est impossible de restaurer un utilisateur supprimé.","admin.confirm.request_password_reset":"Êtes-vous sûr de vouloir réinitialiser le mot de passe de cet utilisateur ?","admin.confirm.purge_password_reset_request":"Êtes-vous sûr de vouloir supprimer la demande ?","admin.confirm.delete_account":"Êtes-vous sûr de vouloir supprimer cet utilisateur ?","admin.confirm.edit_own_account":"Il s'agit de votre propre compte. Êtes-vous sûr ?","admin.confirm.change_admin_role":"Cela va grandement impacter les permissions de cet utilisateur. Êtes-vous sûr ?","admin.confirm.demote_own_account":"Vous ne serez plus administrateur. Vraiment sûr ?","admin.logs":"Logs","admin.administration_legend":"Les paramètres suivants sont généraux et s'appliquent à tous les utilisateurs.","admin.user_management":"Gestion de l'utilisateur","admin.oauth_provider":"Fournisseur OAuth","admin.account_bound_to_x_via_oauth":"Ce compte est lié à un compte :provider via OAuth","admin.last_seen_on_date":"Dernière connexion :date","admin.registered_on_date":"Inscription :date","admin.updated_on_date":"Dernière mise à jour :date","admin.access":"Accès","admin.password_requested_on_t":"Une demande de réinitialisation de mot de passe existe pour cet utilisateur (demande envoyée le :datetime). Cela signifie que l'utilisateur n'a pas encore changé son mot de passe, mais que le lien qu'il a reçu est toujours valide. Cette demande peut venir de l'utilisateur lui-même ou d'un administrateur.","admin.password_request_expired":"Une demande de réinitialisation de mot de passe existe pour cet utilisateur mais a expiré. Cela signifie que l'utilisateur n'a pas changé son mot de passe à temps. Cette demande peut venir de l'utilisateur lui-même ou d'un administrateur.","admin.resend_email":"Renvoyer l’email","admin.resend_email_title":"Renvoyer un email de réinitialisation du mot de passe à l'utilisateur","admin.resend_email_help":"Utilisez Renvoyer l'email pour renvoyer un nouvel email de réinitialisation de mot de passe à l'utilisateur afin qu'il puisse choisir un nouveau mot de passe. Renvoyer un nouvel email ne change pas le mot de passe actuel de l'utilisateur, toutes les demandes précédement envoyées seront révoquées.","admin.reset_password":"Réinitialiser le mdp","admin.reset_password_help":"Utilisez Réinitialiser le mdp pour forcer la réinitialisation du mot de passe immédiatement (cela va définir un mot de passe temporaire) avant d'envoyer un e-mail de réinitialisation de mot de passe à l'utilisateur. L'utilisateur pourra alors choisir un nouveau mot de passe personnalisé. Les demandes précédement envoyées seront révoquées.","admin.reset_password_title":"Réinitialiser le mot de passe de l'utilisateur","admin.password_successfully_reset":"Mot de passe réinitialisé avec succès","admin.user_has_x_active_pat":":count jeton(s) actif(s)","admin.user_has_x_security_devices":":count périphérique(s) de sécurité","admin.revoke_all_pat_for_user":"Révoquer tous les jetons de l'utilisateur","admin.revoke_all_devices_for_user":"Révoquer tous les périphériques de sécurité de l'utilisateur","admin.danger_zone":"Zone dangereuse","admin.delete_this_user_legend":"Le compte utilisateur sera supprimé ainsi que toutes ses données 2FA.","admin.this_is_not_soft_delete":"Il ne s'agit pas d'une désactivation, le compte ne sera pas récupérable.","admin.delete_this_user":"Supprimer l'utilisateur","admin.user_role_updated":"Rôle utilisateur mis à jour","admin.pats_succesfully_revoked":"Jetons de l'utilisateur révoqués avec succès","admin.security_devices_succesfully_revoked":"Périphériques de sécurité de l'utilisateur révoqués avec succès","admin.variables":"Variables","admin.cache_cleared":"Cache vidé","admin.cache_optimized":"Cache optimisé","admin.check_now":"Vérifier maintenant","admin.view_on_github":"Voir sur GitHub","admin.x_is_available":":version est disponible","admin.forms.use_encryption.label":"Protéger les données sensibles","admin.forms.use_encryption.help":"Les données sensibles, les secrets et les e-mails 2FA, sont stockés chiffrés dans la base de données. Assurez-vous de sauvegarder la valeur APP_KEY de votre fichier env (ou tout le fichier) car il sert de clé de chiffrement. Il n'y a aucun moyen de déchiffrer les données chiffrées sans cette clé.","admin.forms.restrict_registration.label":"Restreindre les inscriptions","admin.forms.restrict_registration.help":"Restreint la possibilité de s'inscrire à certaines adresses email seulement. Les deux règles peuvent être utilisées simultanément. Cette limitation est sans effet sur les inscriptions via SSO.","admin.forms.restrict_list.label":"Listes de filtrage","admin.forms.restrict_list.help":`Les adresses email dans cette liste seront autorisées à s'inscrire. Séparez les adresses avec le caractère "|"`,"admin.forms.restrict_rule.label":"Règle de filtrage","admin.forms.restrict_rule.help":"Les adresses emails validant cette expression régulière seront autorisées à s'inscrire","admin.forms.disable_registration.label":"Désactiver les inscriptions","admin.forms.disable_registration.help":"Empêche l'inscription de nouveaux utilisateurs. A moins que ce réglage ne soit surchargé (voir ci-après), cela affecte également l'inscription (c'est à dire la première connexion) via SSO","admin.forms.enable_sso.label":"Activer l'authentification unique (SSO)","admin.forms.enable_sso.help":"Permet aux visiteurs de s'authentifier avec un compte externe grâce à la méthode Single Sign-On","admin.forms.keep_sso_registration_enabled.label":"Garder l'inscription via SSO activée","admin.forms.keep_sso_registration_enabled.help":"Permet aux nouveaux utilisateurs de se connecter pour la première fois via SSO alors que les inscriptions sont désactivées","admin.forms.is_admin.label":"Est administrateur","admin.forms.is_admin.help":"Donne les droits d'administrateur à l'utilisateur. Les administrateurs peuvent gérer l'application, c'est à dire modifier ses paramètres et gérer ses utilisateurs. Un administrateur n'a aucun moyen de consulter les données 2FA d'un autre utilisateur ou de lui générer des codes.","admin.forms.test_email.label":"Test de la configuration Email","admin.forms.test_email.help":"Envoyez un email de test pour contrôler la capacité de votre instance à utiliser l'email. Il est important d'avoir une configuration fonctionnelle, sans quoi les utilisateurs ne pourront pas demander de réinitialisation de leur mot de passe par exemple.","admin.forms.test_email.email_will_be_send_to_x":`L'email sera envoyé à :email`,"admin.forms.cache_management.label":"Gestion du cache","admin.forms.cache_management.help":"Parfois le cache doit être effacé, par exemple après une modification de variable d'environnement ou une mise à jour. Vous pouvez le faire ici.","auth.failed":"Ces identifiants ne correspondent pas à nos enregistrements","auth.password":"Le mot de passe saisi est incorrect.","auth.throttle":"Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.","auth.sign_out":"Déconnexion","auth.sign_in":"Se connecter","auth.sign_in_using":"Se connecter en utilisant","auth.or_continue_with":"Vous pouvez aussi continuer avec :","auth.sign_in_using_security_device":"Se connecter en utilisant un périphérique de sécurité","auth.login_and_password":"login & mot de passe","auth.register":"Créer un compte","auth.welcome_to_2fauth":"Bienvenue sur 2FAuth","auth.autolock_triggered":"Verrouillage automatique déclenché","auth.autolock_triggered_punchline":"L'événement surveillé par la fonction de verrouillage automatique s'est déclenché. Vous avez été automatiquement déconnecté.","auth.already_authenticated":"Déjà authentifié","auth.authentication":"Authentification","auth.maybe_later":"Peut-être plus tard","auth.user_account_controlled_by_proxy":"Compte utilisateur mis à disposition par un proxy d'authentification.
Gérer le compte au niveau du proxy.","auth.auth_handled_by_proxy":"Authentification gérée par un proxy inverse, les paramètres ci-dessous sont désactivés.
Gérer l'authentification au niveau du proxy.","auth.confirm.logout":"Etes-vous sûrs de vouloir vous déconnecter ?","auth.confirm.revoke_device":"Voulez-vous vraiment supprimer cet appareil ?","auth.confirm.delete_account":"Voulez-vous vraiment supprimer votre compte ?","auth.webauthn.security_device":"un périphérique de sécurité","auth.webauthn.security_devices":"Périphériques de sécurité","auth.webauthn.security_devices_legend":"Périphériques d'authentification que vous pouvez utiliser pour vous connecter à 2FAuth, comme des clés de sécurité (ex : YubiKey) ou des smartphones dotés de capacités biométriques (ex : Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`Vous pouvez améliorer la sécurité de votre compte 2FAuth en activant l'authentification WebAuthn.

WebAuthn vous permet d'utiliser des appareils de confiance (comme des Yubikeys ou des smartphones dotés de capacités biométriques) pour vous connecter rapidement et de manière plus sécurisée.`,"auth.webauthn.use_security_device_to_sign_in":"Préparez-vous à vous authentifier en utilisant un de vos dispositifs de sécurité. Branchez votre clé, retirez votre masque ou vos gants, etc.","auth.webauthn.lost_your_device":"Vous avez perdu votre appareil ?","auth.webauthn.recover_your_account":"Récupérer votre compte","auth.webauthn.account_recovery":"Récupération du compte","auth.webauthn.recovery_punchline":"2FAuth vous enverra un lien de récupération à cette adresse e-mail. Cliquez sur le lien et suivez les instructions pour restaurer l'accès à votre compte.

Assurez-vous d'ouvrir l'e-mail depuis un appareil qui vous appartient ou que vous considérez de confiance.","auth.webauthn.send_recovery_link":"Envoyer le lien de récupération","auth.webauthn.account_recovery_email_sent":"E-mail de récupération du compte envoyé !","auth.webauthn.disable_all_security_devices":"Désactiver tous les périphériques de sécurité","auth.webauthn.disable_all_security_devices_help":"Tous vos périphériques de sécurité seront révoqués. Utilisez cette option si vous avez perdu un périphérique ou si sa sécurité a été compromise.","auth.webauthn.register_a_new_device":"Ajouter un nouveau périphérique","auth.webauthn.register_a_device":"Ajouter un périphérique","auth.webauthn.device_successfully_registered":"Périphérique enregistré avec succès","auth.webauthn.device_revoked":"Périphérique révoqué avec succès","auth.webauthn.revoking_a_device_is_permanent":"La révocation d'un périphérique est définitive","auth.webauthn.recover_account_instructions":"Pour récupérer votre compte, 2FAuth réinitialise certains paramètres Webauthn afin que vous puissiez vous connecter en utilisant votre adresse e-mail et votre mot de passe.","auth.webauthn.invalid_recovery_token":"Jeton de sécurité invalide","auth.webauthn.webauthn_login_disabled":"Connexion Webauthn désactivée","auth.webauthn.invalid_reset_token":"Ce jeton de réinitialisation n'est pas valide.","auth.webauthn.rename_device":"Renommer le périphérique","auth.webauthn.my_device":"Mon périphérique","auth.webauthn.unknown_device":"Périphérique inconnu","auth.webauthn.use_webauthn_only.label":"Utiliser uniquement WebAuthn","auth.webauthn.use_webauthn_only.help":`Faire de WebAuthn la seule méthode autorisée pour vous connecter à votre compte 2FAuth. Ceci est la configuration recommandée pour profiter de la sécurité améliorée de WebAuthn.

En cas de perte de votre périphérique, vous pourrez récupérer votre compte en réinitialisant cette option et en vous connectant à l'aide de votre adresse e-mail et de votre mot de passe.

Attention ! Le formulaire E-mail + Mot de passe restera disponible même si l'option est activée, mais il retournera systématiquement une réponse 'Échec de l'authentification'.`,"auth.webauthn.need_a_security_device_to_enable_options":"Définissez au moins un périphérique pour activer ces options","auth.webauthn.options":"Options","auth.forms.name":"Nom","auth.forms.login":"Connexion","auth.forms.webauthn_login":"Connexion WebAuthn","auth.forms.email":"Email","auth.forms.password":"Mot de passe","auth.forms.reveal_password":"Afficher le mot de passe","auth.forms.hide_password":"Masquer le mot de passe","auth.forms.confirm_password":"Confirmez le mot de passe","auth.forms.new_password":"Nouveau mot de passe","auth.forms.confirm_new_password":"Confirmez le nouveau mot de passe","auth.forms.dont_have_account_yet":"Pas encore de compte ?","auth.forms.already_register":"Déjà enregistré ?","auth.forms.authentication_failed":"Échec de l'authentification","auth.forms.forgot_your_password":"Mot de passe oublié ?","auth.forms.request_password_reset":"Réinitialisez-le","auth.forms.reset_your_password":"Réinitialiser votre mot de passe","auth.forms.reset_password":"Mot de passe oublié","auth.forms.disabled_in_demo":"Fonctionnalité désactivée en mode Démo","auth.forms.current_password.label":"Mot de passe actuel","auth.forms.current_password.help":"Indiquez votre mot de passe actuel pour confirmer qu'il s'agit bien de vous","auth.forms.change_password":"Modifier le mot de passe","auth.forms.send_password_reset_link":"Envoyer","auth.forms.password_successfully_reset":"Mot de passe réinitialisé avec succès","auth.forms.edit_account":"Mis à jour du profil","auth.forms.profile_saved":"Profil mis à jour avec succès !","auth.forms.welcome_to_demo_app_use_those_credentials":"Bienvenue sur la démo de 2FAuth.

Vous pouvez vous connecter en utilisant l'adresse email demo@2fauth.app et le mot de passe demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Bienvenue sur l'instance de test 2FAuth.

Utilisez l'adresse e-mail testing@2fauth.app et mot de passe password","auth.forms.register_punchline":"Bienvenue sur 2FAuth.
Vous avez besoin d'un compte pour aller plus loin, veuillez vous enregistrer.","auth.forms.reset_punchline":"2FAuth vous enverra un lien de réinitialisation de mot de passe à cette adresse. Cliquez sur le lien dans l'e-mail reçu pour définir un nouveau mot de passe.","auth.forms.name_this_device":"Nommer ce périphérique","auth.forms.delete_account":"Supprimer le compte","auth.forms.delete_your_account":"Supprimer votre compte","auth.forms.delete_your_account_and_reset_all_data":"Cela réinitialisera 2FAuth. Votre compte utilisateur sera supprimé ainsi que toutes les données 2FA. Il est impossible de restaurer des données réinitialisées.","auth.forms.reset_your_password_to_delete_your_account":"Si vous avez toujours utilisé SSO pour vous connecter, déconnectez-vous, puis utilisez la fonction de réinitialisation du mot de passe pour obtenir un mot de passe afin de remplir ce formulaire.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"La suppression de votre compte 2FAuth n'a aucun impact sur votre compte externe.","auth.forms.user_account_successfully_deleted":"Compte supprimé avec succès","auth.forms.has_lower_case":"Contient une minuscule","auth.forms.has_upper_case":"Contient une majuscule","auth.forms.has_special_char":"Contient un caractère spécial","auth.forms.has_number":"Contient un chiffre","auth.forms.is_long_enough":"Au moins 8 caractères","auth.forms.mandatory_rules":"Obligatoire","auth.forms.optional_rules_you_should_follow":"Recommandé (fortement)","auth.forms.caps_lock_is_on":"Verr Maj est activé","commons.cancel":"Annuler","commons.update":"Mettre à jour","commons.copy":"Copier","commons.copy_to_clipboard":"Copier","commons.copied_to_clipboard":"Copié dans le presse-papier","commons.profile":"Profil","commons.edit":"Modifier","commons.delete":"Supprimer","commons.disable":"Désactiver","commons.enable":"Activer","commons.create":"Créer","commons.save":"Enregistrer","commons.close":"Fermer","commons.clear":"Effacer","commons.clear_search":"Effacer la recherche","commons.demo_do_not_post_sensitive_data":"Site de démonstration, ne postez aucune donnée sensible","commons.testing_do_not_post_sensitive_data":"Site de test, ne postez aucune donnée sensible","commons.x_selected":":count sélectionné(s)","commons.name":"Nom","commons.manage":"Gérer","commons.done":"Terminé","commons.new":"Nouveau","commons.back":"Retour","commons.move":"Déplacer","commons.export":"Exporter","commons.all":"Tous","commons.check_all":"Tous","commons.select_all":"Tout sélectionner","commons.clear_selection":"Effacer la sélection","commons.sort_descending":"Trier par ordre décroissant","commons.sort_ascending":"Trier par ordre croissant","commons.rename":"Renommer","commons.new_name":"Nouveau nom","commons.options":"Options","commons.reload":"Actualiser","commons.refresh":"Actualiser","commons.data_refreshed_to_reflect_server_changes":"Les données ont été actualisées pour refléter les changements côté serveur","commons.generate":"Générer","commons.generating_otp":"Génération de l'OTP","commons.open_in_browser":"Ouvrir dans votre navigateur","commons.continue":"Continuer","commons.discard":"Retirer","commons.about":"À propos","commons.usefull_links":"Liens utiles","commons.environment":"Environnement","commons.credits":"Crédits","commons.2fauth_teaser":"Une web app pour gérer vos comptes avec double authentification (2FA) et générer leurs codes de sécurité","commons.made_with":"Fabriqué avec","commons.ui_icons_by":"Icônes par","commons.logos_by":"Logos par","commons.search":"Recherche","commons.resources":"Ressources","commons.check_for_update":"Rechercher les mises à jour","commons.check_for_update_help":"Vérifie automatiquement (une fois par semaine) et avertit quand une nouvelle version de 2FAuth est publiée sur Github","commons.you_are_up_to_date":"Cette instance est à jour","commons.2fauth_description":"Une web app pour gérer vos comptes avec double authentification (2FA) et générer leurs codes de sécurité","commons.image_of_qrcode_to_scan":"Image d'un QR code à scanner","commons.file":"Fichier","commons.or":"OU","commons.close_the_x_page":"Fermer la page {pagetitle}","commons.submit":"Envoyer","commons.default":"Défaut","commons.back_to_home":"Retour à l’accueil","commons.nothing":"rien","commons.no_result":"Aucun résultat","commons.information":"Information","commons.permissions":"Autorisations","commons.send":"Envoyer","commons.optimize":"Optimiser","errors.resource_not_found":"Ressource introuvable","errors.error_occured":"Une erreur est survenue :","errors.refresh":"Actualiser","errors.no_valid_otp":"Aucune donnée OTP valide dans ce QR code","errors.something_wrong_with_server":"Il y a un problème avec votre serveur","errors.Unable_to_decrypt_uri":"uri impossible à décoder","errors.not_a_supported_otp_type":"Ce format OTP n'est pas supporté pour le moment","errors.cannot_create_otp_without_secret":"Impossible de créer un OTP sans un secret","errors.data_of_qrcode_is_not_valid_URI":"Les données de ce code QR ne forment pas une URI OTP Auth valide. Le QR code contient :","errors.wrong_current_password":"Mot de passe actuel érroné, rien n\\a été modifié","errors.error_during_encryption":"Le chiffrement a échoué, votre base de données reste non protégée.","errors.error_during_decryption":"Le déchiffrement a échoué, votre base de données est toujours protégée. Ceci est principalement dû à un problème d'intégrité des données chiffrées pour un ou plusieurs comptes.","errors.qrcode_cannot_be_read":"Ce QR code est illisible","errors.too_many_ids":"trop d'IDs ont été inclus dans le paramètre de requête, max. 100 autorisés","errors.delete_user_setting_only":"Seuls les paramètres créés par l'utilisateur peuvent être supprimés","errors.indecipherable":"*indéchiffrable*","errors.cannot_decipher_secret":"Le secret ne peut pas être déchiffré. Ceci est généralement causé par une valeur APP_KEY incorrecte définie dans le fichier de configuration .env de 2Fauth ou des données corrompues dans la base de données.","errors.https_required":"Contexte HTTPS requis","errors.browser_does_not_support_webauthn":"Votre appareil ne supporte pas WebAuthn. Réessayez plus tard en utilisant un navigateur plus récent","errors.aborted_by_user":"Abandonné par l'utilisateur","errors.security_device_already_registered":"Périphérique déjà enregistré","errors.not_allowed_operation":"Opération non autorisée","errors.no_authenticator_support_specified_algorithms":"Aucun authentificateur ne supporte les algorithmes spécifiés","errors.authenticator_missing_discoverable_credential_support":"Identifiants découvrables non supportés par l'authentificateur","errors.authenticator_missing_user_verification_support":"Vérification de l'utilisateur non supportée par l'authentificateur","errors.unknown_error":"Erreur inconnue","errors.security_error_check_rpid":"Erreur de sécurité
Vérifiez votre variable d'environnement WEBAUTHN_ID","errors.2fauth_has_not_a_valid_domain":"Le domaine de l'instance 2FAuth n'est pas un domaine valide","errors.user_id_not_between_1_64":"L'identifiant utilisateur n'est pas compris entre 1 et 64 caractères","errors.no_entry_was_of_type_public_key":'Aucune entrée de type "public-key"',"errors.unsupported_with_reverseproxy":"Sans effet avec un proxy d'authentification","errors.user_deletion_failed":"La suppression du compte utilisateur a échoué, aucune donnée n'a été supprimée","errors.auth_proxy_failed":"Échec de l'authentification par le proxy","errors.auth_proxy_failed_legend":"2Fauth est configuré pour fonctionner derrière un proxy d'authentification, mais votre proxy ne retourne pas l'en-tête attendu. Vérifiez votre configuration et réessayez.","errors.invalid_x_migration":"Données :appname invalides ou illisibles","errors.invalid_2fa_data":"Données 2FA invalides","errors.unsupported_migration":"Les données ne correspondent à aucun format pris en charge","errors.unsupported_otp_type":"Type OTP non supporté","errors.encrypted_migration":"Non lisible, les données semblent chiffrées","errors.no_logo_found_for_x":"Aucun logo disponible pour {service}","errors.file_upload_failed":"Échec de téléchargement du fichier","errors.unauthorized":"Non autorisé","errors.unauthorized_legend":"Vous n'avez pas la permission de voir cette ressource ou d'effectuer cette action","errors.cannot_delete_the_only_admin":"Impossible de supprimer le seul compte administrateur","errors.error_during_data_fetching":"💀 Une erreur s'est produite lors de la récupération des données","errors.check_failed_try_later":"Échec de la vérification, veuillez réessayer plus tard","errors.sso_disabled":"SSO est désactivé","errors.sso_bad_provider_setup":"Ce fournisseur SSO n'est pas entièrement configuré dans votre fichier .env","errors.sso_failed":"Authentification via SSO refusée","errors.sso_no_register":"Les inscriptions sont désactivées","errors.sso_email_already_used":"Un compte utilisateur avec la même adresse e-mail existe déjà mais ne correspond pas à votre compte externe. N'utilisez pas SSO si vous êtes déjà inscrit sur 2FAuth avec cette adresse e-mail.","errors.account_managed_by_external_provider":"Compte géré par un fournisseur externe","errors.data_cannot_be_refreshed_from_server":"Les données ne peuvent être actualisées depuis le serveur","errors.no_pwd_reset_for_this_user_type":"Réinitialisation du mot de passe indisponible pour cet utilisateur","groups.groups":"Groupes","groups.create_group":"Créer un nouveau groupe","groups.show_group_selector":"Afficher le sélecteur de groupe","groups.hide_group_selector":"Masquer le sélecteur de groupe","groups.select_accounts_to_show":"Sélectionnez les comptes à afficher","groups.x_accounts":":count comptes","groups.manage_groups":"Gérer les groupes","groups.active_group":"Groupe actif","groups.manage_groups_legend":'Vous pouvez créer des groupes pour organiser vos comptes comme bon vous semble. Tous les comptes restent visibles dans le pseudo groupe nommé "Tous", quel que soit le groupe auquel ils appartiennent.',"groups.deleting_group_does_not_delete_accounts":"La suppression d'un groupe ne supprime pas les comptes","groups.move_selected_to":"Déplacer la sélection vers","groups.move_selected_to_group":"Déplacer la sélection dans un groupe","groups.no_group":"Aucun groupe","groups.change_group":"Changer de groupe","groups.group_successfully_created":"Groupe créé avec succès","groups.group_name_saved":"Nom du groupe enregistré","groups.group_successfully_deleted":"Groupe supprimé avec succès","groups.forms.new_group":"Nouveau groupe","groups.forms.new_name":"Nouveau nom","groups.forms.rename_group":"Renommer le groupe","groups.confirm.delete":"Êtes-vous sûr·e de vouloir supprimer ce groupe ?","languages.browser_preference":"Préférence du navigateur","languages.en":"English (Anglais)","languages.fr":"Français (Français)","languages.de":"Deutsch (Allemand)","languages.es":"Español (Espagnol)","languages.zh":"简体中文 (Chinois simplifié)","languages.ru":"Русский (russe)","languages.bg":"Български (Bulgare)","languages.ja":"日本語 (Japonais)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Bonjour","notifications.test_email_settings.subject":"Email de test 2FAuth","notifications.test_email_settings.reason":"Vous recevez cet email car vous avez demandé à vérifier le bon fonctionnement de l'envoi des emails sur votre instance 2FAuth.","notifications.test_email_settings.success":"Bonne nouvelle, ça fonctionne :)","pagination.previous":"« Précédent","pagination.next":"Suivant »","passwords.reset":"Votre mot de passe a été réinitialisé !","passwords.sent":"Nous vous avons envoyé par email le lien de réinitialisation du mot de passe !","passwords.throttled":"Veuillez patienter avant de réessayer.","passwords.token":"Ce jeton de réinitialisation du mot de passe n'est pas valide.","passwords.user":"Aucun utilisateur n'a été trouvé avec cette adresse email.","passwords.password":"Les mots de passe doivent contenir au moins huit caractères et être identiques.","settings.settings":"Réglages","settings.preferences":"Préférences","settings.account":"Compte","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Jetons","settings.options":"Options","settings.user_preferences":"Préférences utilisateur","settings.admin_settings":"Paramètres administrateur","settings.confirm.revoke":"Êtes-vous sûr(e) de vouloir révoquer ce jeton ?","settings.you_are_administrator":"Vous êtes administrateur","settings.account_linked_to_sso_x_provider":"Vous vous êtes connecté via SSO avec votre compte :provider. Vos informations ne peuvent être modifiées ici mais sur :provider.","settings.general":"General","settings.security":"Sécurité","settings.profile":"Profil","settings.change_password":"Changer le mot de passe","settings.personal_access_tokens":"Jetons d'accès personnel","settings.token_legend":"Les jetons d'accès personnels permettent à n'importe quelle application de s'authentifier à l'API 2Fauth. Vous devez fournir le jeton d'accès en tant que Bearer dans l'en-tête d'autorisation des requêtes de ces applications.","settings.generate_new_token":"Générer un nouveau jeton","settings.revoke":"Révoquer","settings.token_revoked":"Jeton révoqué avec succès","settings.revoking_a_token_is_permanent":"Révoquer un jeton est définitif","settings.make_sure_copy_token":"Copier votre jeton d'accès personnel dès maintenant. Vous ne pourrez pas l'afficher à nouveau !","settings.data_input":"Saisie des données","settings.forms.edit_settings":"Modifier les réglages","settings.forms.setting_saved":"Réglages sauvegardés","settings.forms.new_token":"Nouveau jeton","settings.forms.some_translation_are_missing":"Certaines traductions sont manquantes en utilisant la langue préférée du navigateur ?","settings.forms.help_translate_2fauth":"Aidez à traduire 2FAuth","settings.forms.language.label":"Langue","settings.forms.language.help":"Langue utilisée pour traduire l'interface utilisateur de 2FAuth. Les langues proposées sont complètes, vous pouvez les utiliser pour remplacer la langue de référence de votre navigateur.","settings.forms.show_otp_as_dot.label":"Afficher les mots de passe générés sous forme de point","settings.forms.show_otp_as_dot.help":"Remplace les caractères des mots de passe générés par des ●●● pour garantir leur confidentialité. N'affecte pas la fonction de copier/coller qui reste utilisable.","settings.forms.reveal_dotted_otp.label":'Révéler les OTPs masqués',"settings.forms.reveal_dotted_otp.help":"Permet à l'utilisateur de réveler temporairement les mots de passe masqués derrière des ●●●","settings.forms.close_otp_on_copy.label":'Cacher les mots de passe OTP copiés',"settings.forms.close_otp_on_copy.help":"Les mots de passe qui viennent d'être copiés ne restent pas visibles à l'écran","settings.forms.clear_search_on_copy.label":"Effacer la recherche après copie","settings.forms.clear_search_on_copy.help":"Vide le champ de recherche dès qu'un code a été copié dans le presse-papier","settings.forms.copy_otp_on_display.label":`Copier le mot de passe OTP dès qu'il s'affiche`,"settings.forms.copy_otp_on_display.help":`Copie automatiquement dans le presse-papier un mot de passe qui vient de s'afficher à l'écran. A cause de restrictions des navigateurs, seul le premier mot de passe TOTP à s'afficher est copié, pas les mots de passe successifs`,"settings.forms.use_basic_qrcode_reader.label":"Utiliser le lecteur de QR code basique","settings.forms.use_basic_qrcode_reader.help":"Si vous rencontrez des problèmes lors de la lecture des QR codes activez cette option pour utiliser un lecteur de QR code moins évolué mais plus largement compatible","settings.forms.display_mode.label":"Mode d'affichage","settings.forms.display_mode.help":"Change le mode d'affichage des comptes, soit sous forme de liste, soit sous forme de grille","settings.forms.password_format.label":"Mise en forme des mots de passe","settings.forms.password_format.help":"Modifie l'affichage des mots de passe en regroupement les chiffres afin de faciliter la lisibilité et leur mémorisation","settings.forms.pair":"par Paire","settings.forms.pair_legend":"Groupe les chiffres deux par deux","settings.forms.trio_legend":"Groupe les chiffres trois par trois","settings.forms.half_legend":"Sépare les chiffres en deux groupes égaux","settings.forms.trio":"par Trio","settings.forms.half":"par Moitié","settings.forms.grid":"Grille","settings.forms.list":"Liste","settings.forms.theme.label":"Thème","settings.forms.theme.help":"Forcer un thème spécifique ou appliquer le thème défini dans vos préférences système/navigateur","settings.forms.light":"Clair","settings.forms.dark":"Sombre","settings.forms.automatic":"Auto","settings.forms.show_accounts_icons.label":"Afficher les icônes","settings.forms.show_accounts_icons.help":"Affiche les icônes des comptes dans la vue principale","settings.forms.get_official_icons.label":"Récupérer les icônes officielles","settings.forms.get_official_icons.help":"(Essaie de) Récupère automatiquement l'icône officielle du service émetteur du compte 2FA lors de son ajout à 2FAuth","settings.forms.auto_lock.label":"Verrouillage automatique","settings.forms.auto_lock.help":"Déconnecte automatiquement l'utilisateur en cas d'inactivité. Est sans effet lorsque l'authentification est gérée par un proxy et qu'aucune URL de déconnexion personnalisée n'est configurée.","settings.forms.default_group.label":"Groupe par défaut","settings.forms.default_group.help":"Le groupe auquel sont associés les nouveaux comptes","settings.forms.view_default_group_on_copy.label":"Afficher le groupe par défaut après copie","settings.forms.view_default_group_on_copy.help":"Bascule systématiquement l'affichage sur le groupe par défaut dès qu'un code a été copié dans le presse-papier","settings.forms.useDirectCapture.label":"Saisie directe","settings.forms.useDirectCapture.help":"Choisissez si vous voulez être invité à choisir un mode de saisie parmi ceux disponibles ou si vous voulez utiliser directement le mode de saisie par défaut","settings.forms.defaultCaptureMode.label":"Mode de saisie par défaut","settings.forms.defaultCaptureMode.help":"Mode de saisie utilisé par défaut lorsque l'option Saisie directe est activée","settings.forms.remember_active_group.label":"Mémoriser le filtrage par groupe","settings.forms.remember_active_group.help":"Enregistre le dernier groupe affiché et le restaure lors de votre prochaine visite","settings.forms.otp_generation.label":"Affichage des mots de passe","settings.forms.otp_generation.help":'Définit quand et comment sont affichés les OTPs.
',"settings.forms.otp_generation_on_request":"Après un clic/tap","settings.forms.otp_generation_on_request_legend":"Seul, dans un écran dédié","settings.forms.otp_generation_on_request_title":"Cliquer sur un compte pour obtenir un mot de passe dans un écran dédié","settings.forms.otp_generation_on_home":"En permanence","settings.forms.otp_generation_on_home_legend":"Tous, sur l'écran d'accueil","settings.forms.otp_generation_on_home_title":"Montrer tous les mots de passe sur l'écran d'accueil sans aucune action de l'utilisateur","settings.forms.never":"Jamais","settings.forms.on_otp_copy":"Après copie d'un mot de passe","settings.forms.1_minutes":"Après 1 minute","settings.forms.5_minutes":"Après 5 minutes","settings.forms.10_minutes":"Après 10 minutes","settings.forms.15_minutes":"Après 15 minutes","settings.forms.30_minutes":"Après 30 minutes","settings.forms.1_hour":"Après 1 heure","settings.forms.1_day":"Après 1 journée","settings.forms.livescan":"Scanner avec la caméra","settings.forms.upload":"Téléchargement de QR code","settings.forms.advanced_form":"Formulaire avancé","titles.404":"Élément non trouvé","titles.start":"Nouveau compte","titles.capture":"Flash un QR code","titles.accounts":"Comptes","titles.createAccount":"Créez un compte","titles.importAccounts":"Importer des comptes","titles.editAccount":"Édition du compte","titles.showQRcode":"QR code du compte","titles.groups":"Groupes","titles.createGroup":"Créer un groupe","titles.editGroup":"Édition du groupe","titles.settings.options":"Options","titles.settings.account":"Compte utilisateur","titles.settings.oauth.tokens":"Jetons OAuth","titles.settings.oauth.generatePAT":"Nouveau jeton d'accès personnel","titles.settings.webauthn.editCredential":"Édition du périphérique","titles.settings.webauthn.devices":"Périphériques WebAuthn","titles.login":"Connexion","titles.register":"Inscription","titles.autolock":"Verrouillage automatique","titles.password.request":"Réinitialisation du mot de passe","titles.password.reset":"Nouveau mot de passe","titles.webauthn.lost":"Récupération du compte","titles.webauthn.recover":"Ajouter un nouveau périphérique","titles.flooded":"Trop de tentatives","titles.genericError":"Erreur","titles.about":"À propos","titles.admin.appSetup":"Configuration de l'application","titles.admin.users":"Gestion des utilisateurs","titles.admin.createUser":"Créer un utilisateur","titles.admin.manageUser":"Gestion de l'utilisateur","twofaccounts.service":"Service","twofaccounts.account":"Compte","twofaccounts.icon":"Icône","twofaccounts.icon_for_account_x_at_service_y":"Icône du compte {account} sur {service}","twofaccounts.icon_to_illustrate_the_account":"Icône qui illustre le compte","twofaccounts.remove_icon":"Supprimer l'icône","twofaccounts.no_account_here":"Aucun compte 2FA !","twofaccounts.add_first_account":"Choisissez une méthode et ajoutez votre premier compte","twofaccounts.use_full_form":"Ou utiliser le formulaire détaillé","twofaccounts.add_one":"Add one","twofaccounts.show_qrcode":"Afficher le QR code","twofaccounts.no_service":"- aucun service -","twofaccounts.account_created":"Compte créé avec succès","twofaccounts.account_updated":"Compte mis à jour avec succès","twofaccounts.accounts_deleted":"Compte·s supprimé·s avec succès","twofaccounts.accounts_moved":"Compte·s déplacé·s avec succès","twofaccounts.export_selected_to_json":"Télécharger un export json des comptes sélectionnés","twofaccounts.reveal":"révéler","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"Marc Dupont","twofaccounts.forms.new_account":"Nouveau compte","twofaccounts.forms.edit_account":"Modifier le compte","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Scanner un QR code","twofaccounts.forms.upload_qrcode":"Uploader un QR code","twofaccounts.forms.use_advanced_form":"Utiliser le formulaire avancé","twofaccounts.forms.prefill_using_qrcode":"Préremplir à l'aide d'un QR Code","twofaccounts.forms.use_qrcode.val":"Utiliser un QR code","twofaccounts.forms.use_qrcode.title":"Utiliser un QR code pour renseigner le formulaire d'un seul coup d'un seul","twofaccounts.forms.unlock.val":"Déverouiller","twofaccounts.forms.unlock.title":"Déverouiller le champ (à vos risques et périls)","twofaccounts.forms.lock.val":"Vérouiller","twofaccounts.forms.lock.title":"Vérouiller le champ","twofaccounts.forms.choose_image":"Télécharger","twofaccounts.forms.i_m_lucky":"J'ai de la chance","twofaccounts.forms.i_m_lucky_legend":`Le bouton "J'ai de la chance" essaie d'obtenir l'icône officielle du service renseigné. Entrez le nom exact du service, sans l'extension ".xyz" et avec la bonne orthographe. (fonctionnalité bêta)`,"twofaccounts.forms.test":"Tester","twofaccounts.forms.secret.label":"Secret","twofaccounts.forms.secret.help":"La clé utilisée pour générer vos codes de sécurité","twofaccounts.forms.plain_text":"Texte brut","twofaccounts.forms.otp_type.label":`Choisissez le type d'OTP à créer`,"twofaccounts.forms.otp_type.help":"Time-based OTP ou HMAC-based OTP ou Steam OTP","twofaccounts.forms.digits.label":"Nombre de chiffres","twofaccounts.forms.digits.help":"Le nombre de chiffres des codes de sécurité générés","twofaccounts.forms.algorithm.label":"Algorithme","twofaccounts.forms.algorithm.help":"L'algorithme utilisé pour sécuriser vos codes de sécurité","twofaccounts.forms.period.label":"Durée de validité","twofaccounts.forms.period.placeholder":"30 s par défaut","twofaccounts.forms.period.help":"La durée de validité des codes de sécurité générés, en seconde","twofaccounts.forms.counter.label":"Compteur","twofaccounts.forms.counter.placeholder":"0 par défaut","twofaccounts.forms.counter.help":"La valeur initiale du compteur","twofaccounts.forms.counter.help_lock":"Il est risqué de modifier le compteur car vous pouvez désynchroniser le compte avec le serveur de vérification du service. Utilisez l'icône cadenas pour activer la modification, mais seulement si vous savez ce que vous faites","twofaccounts.forms.image.label":"Image","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"L'URL d'une image externe à utiliser comme icône du compte","twofaccounts.forms.options_help":"Vous pouvez laisser les options suivantes non renseignées si vous ne savez pas comment les définir. Les valeurs les plus couramment utilisées seront appliquées.","twofaccounts.forms.alternative_methods":"Méthodes alternatives","twofaccounts.forms.spaces_are_ignored":"Les espaces indésirables seront automatiquement supprimés","twofaccounts.stream.live_scan_cant_start":"Le scanner ne peut pas démarrer :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth n'a pas la permission d'accéder à votre caméra","twofaccounts.stream.need_grant_permission.solution":"Vous devez autoriser l'utilisation de l'appareil photo de votre appareil. Si vous avez déjà refusé et que votre navigateur ne vous le demande plus, veuillez vous référer à la documentation du navigateur pour savoir comment accorder l’autorisation.","twofaccounts.stream.need_grant_permission.click_camera_icon":"Cela se fait généralement en cliquant sur une icône représentant une caméra barrée, dans ou à côté de la barre d'adresse du navigateur","twofaccounts.stream.not_readable.reason":"Impossible de charger le scanner","twofaccounts.stream.not_readable.solution":"La caméra est-elle déjà en cours d'utilisation ? Assurez-vous qu'aucune autre application n'utilise votre appareil photo et réessayez","twofaccounts.stream.no_cam_on_device.reason":"Votre équipement ne dispose pas de caméra","twofaccounts.stream.no_cam_on_device.solution":"Peut-être avez-vous oublié de brancher votre webcam","twofaccounts.stream.secured_context_required.reason":"Contexte sécurisé requis","twofaccounts.stream.secured_context_required.solution":"Une connexion sécurisée HTTPS est requise pour utiliser le scanner. Si vous exécutez 2FAuth depuis votre ordinateur, n'utilisez pas d'hôte virtuel autre que localhost","twofaccounts.stream.https_required":"HTTPS requis pour utiliser la caméra","twofaccounts.stream.camera_not_suitable.reason":"Votre équipement ne dispose pas d'une caméra adaptée","twofaccounts.stream.camera_not_suitable.solution":"Veuillez utiliser un autre appareil","twofaccounts.stream.stream_api_not_supported.reason":"L'API Stream n'est pas prise en charge dans ce navigateur","twofaccounts.stream.stream_api_not_supported.solution":"Vous devriez utiliser un navigateur moderne","twofaccounts.confirm.delete":"Etes-vous sûrs de vouloir supprimer le compte ?","twofaccounts.confirm.cancel":"Les données seront perdues, êtes-vous sûrs ?","twofaccounts.confirm.discard":"Êtes-vous sûrs de vouloir retirer ce compte ?","twofaccounts.confirm.discard_all":"Êtes-vous sûrs de vouloir retirer tous les comptes ?","twofaccounts.confirm.discard_duplicates":"Êtes-vous sûrs de vouloir retirer tous les doublons ?","twofaccounts.import.import":"Import","twofaccounts.import.to_import":"Importer","twofaccounts.import.import_legend":"2FAuth peut importer les données de diverses applications 2FA.
Utilisez la fonction d'exportation de ces applications pour obtenir une ressource de migration (un code QR ou un fichier) et chargez-la via une de ces méthodes.","twofaccounts.import.import_legend_afterpart":"Utilisez la fonction d'exportation de ces applications pour obtenir une ressource de migration, comme un code QR ou un fichier JSON, puis chargez-la ici.","twofaccounts.import.upload":"Upload","twofaccounts.import.scan":"Scan","twofaccounts.import.supported_formats_for_qrcode_upload":"Accepté : jpg, jpeg, png, bmp, gif, svg, ou webp","twofaccounts.import.supported_formats_for_file_upload":"Accepté : Texte brut, json, 2fas","twofaccounts.import.expected_format_for_direct_input":"Attendu : Une liste d'URI au format otpauth, une par ligne","twofaccounts.import.supported_migration_formats":"Formats de migration supportés","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Fichier texte","twofaccounts.import.direct_input":"Saisie directe","twofaccounts.import.plain_text":"Texte brut","twofaccounts.import.parsing_data":"Analyse des données...","twofaccounts.import.issuer":"Émetteur","twofaccounts.import.imported":"Importé","twofaccounts.import.failure":"Échec","twofaccounts.import.x_valid_accounts_found":"{count} comptes valides trouvés","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"Les comptes 2FA suivants ont été trouvés dans la ressource de migration. Pour l'instant aucun d'entre eux n'a été ajouté à 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Utilisez les boutons disponibles pour les enregistrer de façon permanente dans votre collection 2FA ou les retirer.","twofaccounts.import.import_all":"Tout importer","twofaccounts.import.import_this_account":"Importer ce compte","twofaccounts.import.discard_all":"Tout retirer","twofaccounts.import.discard_duplicates":"Retirer les doublons","twofaccounts.import.discard_this_account":"Retirer ce compte","twofaccounts.import.generate_a_test_password":"Générer un mot de passe de test","twofaccounts.import.possible_duplicate":"Un compte avec les mêmes informations existe déjà","twofaccounts.import.invalid_account":"- compte non valide -","twofaccounts.import.invalid_service":"- service non valide -","twofaccounts.import.do_not_set_password_or_encryption":"N'activez PAS la protection par mot de passe ou le chiffrement lorsque vous exportez des données (depuis une application 2FA) que vous comptez importer dans 2FAuth.","validation.accepted":"Le champ :attribute doit être accepté.","validation.accepted_if":"Le champ :attribute doit être accepté quand :other a la valeur :value.","validation.active_url":"Le champ :attribute n'est pas une URL valide.","validation.after":"Le champ :attribute doit être une date postérieure au :date.","validation.after_or_equal":"Le champ :attribute doit être une date postérieure ou égale au :date.","validation.alpha":"Le champ :attribute doit contenir uniquement des lettres.","validation.alpha_dash":"Le champ :attribute doit contenir uniquement des lettres, des chiffres et des tirets (hauts ou bas).","validation.alpha_num":"Le champ :attribute doit contenir uniquement des chiffres et des lettres.","validation.array":"Le champ :attribute doit être un tableau.","validation.before":"Le champ :attribute doit être une date antérieure au :date.","validation.before_or_equal":"Le champ :attribute doit être une date antérieure ou égale au :date.","validation.between.array":"Le tableau :attribute doit contenir entre :min et :max éléments.","validation.between.file":"La taille du fichier de :attribute doit être comprise entre :min et :max kilo-octets.","validation.between.numeric":"La valeur de :attribute doit être comprise entre :min et :max.","validation.between.string":"Le texte :attribute doit contenir entre :min et :max caractères.","validation.boolean":"Le champ :attribute doit être vrai ou faux.","validation.confirmed":"Le champ de confirmation :attribute ne correspond pas.","validation.current_password":"Le mot de passe est incorrect.","validation.date":"Le champ :attribute n'est pas une date valide.","validation.date_equals":"Le champ :attribute doit être une date égale à :date.","validation.date_format":"Le champ :attribute ne correspond pas au format :format.","validation.declined":"Le champ :attribute doit être décliné.","validation.declined_if":"Le champ :attribute doit être décliné quand :other a la valeur :value.","validation.different":"Les champs :attribute et :other doivent être différents.","validation.digits":"Le champ :attribute doit contenir :digits chiffres.","validation.digits_between":"Le champ :attribute doit contenir entre :min et :max chiffres.","validation.dimensions":"La taille de l'image :attribute n'est pas conforme.","validation.distinct":"Le champ :attribute a une valeur en double.","validation.doesnt_end_with":"Le champ :attribute ne peut pas se terminer par l'une de ces valeurs : :values.","validation.doesnt_start_with":"Le champ :attribute ne peut pas commencer par l'une de ces valeurs : :values.","validation.email":"Le champ :attribute doit être une adresse email valide.","validation.ends_with":"Le champ :attribute doit se terminer par une des valeurs suivantes : :values","validation.enum":"Le champ :attribute sélectionné n'est pas valide.","validation.exists":"Le champ :attribute sélectionné est invalide.","validation.file":"Le champ :attribute doit être un fichier.","validation.filled":"Le champ :attribute doit avoir une valeur.","validation.gt.array":"Le tableau :attribute doit contenir plus de :value éléments.","validation.gt.file":"La taille du fichier de :attribute doit être supérieure à :value kilo-octets.","validation.gt.numeric":"La valeur de :attribute doit être supérieure à :value.","validation.gt.string":"Le texte :attribute doit contenir plus de :value caractères.","validation.gte.array":"Le tableau :attribute doit contenir au moins :value éléments.","validation.gte.file":"La taille du fichier :attribute doit être supérieure ou égale à :value kilo-octets.","validation.gte.numeric":"La valeur de :attribute doit être supérieure ou égale à :value.","validation.gte.string":"Le texte :attribute doit contenir au moins :value caractères.","validation.image":"Le champ :attribute doit être une image.","validation.in":"Le champ :attribute est invalide.","validation.in_array":"Le champ :attribute n'existe pas dans :other.","validation.integer":"Le champ :attribute doit être un entier.","validation.ip":"Le champ :attribute doit être une adresse IP valide.","validation.ipv4":"Le champ :attribute doit être une adresse IPv4 valide.","validation.ipv6":"Le champ :attribute doit être une adresse IPv6 valide.","validation.json":"Le champ :attribute doit être un document JSON valide.","validation.lt.array":"Le tableau :attribute doit contenir moins de :value éléments.","validation.lt.file":"La taille du fichier de :attribute doit être inférieure à :value kilo-octets.","validation.lt.numeric":"La valeur de :attribute doit être inférieure à :value.","validation.lt.string":"Le texte :attribute doit contenir moins de :value caractères.","validation.lte.array":"Le tableau :attribute doit contenir au plus :value éléments.","validation.lte.file":"La taille du fichier :attribute doit être inférieure ou égale à :value kilo-octets.","validation.lte.numeric":"La valeur de :attribute doit être inférieure ou égale à :value.","validation.lte.string":"Le texte :attribute doit contenir au plus :value caractères.","validation.mac_address":"Le champ :attribute doit être une adresse MAC valide.","validation.max.array":":attribute ne doit pas dépasser :max éléments.","validation.max.file":":attribute ne doit pas excéder :max Ko.","validation.max.numeric":":attribute ne doit pas excéder :max.","validation.max.string":":attribute ne doit pas excéder :max caractères.","validation.max_digits":":attribute ne doit pas excéder :max chiffres.","validation.mimes":"Le champ :attribute doit être un fichier de type : :values.","validation.mimetypes":"Le champ :attribute doit être un fichier de type : :values.","validation.min.array":"Le tableau :attribute doit contenir au moins :min éléments.","validation.min.file":"La taille du fichier de :attribute doit être supérieure à :min kilo-octets.","validation.min.numeric":"La valeur de :attribute doit être supérieure ou égale à :min.","validation.min.string":"Le texte :attribute doit contenir au moins :min caractères.","validation.min_digits":":attribute doit avoir au moins :min chiffres.","validation.multiple_of":"La valeur de :attribute doit être un multiple de :value.","validation.not_in":"Le champ :attribute sélectionné n'est pas valide.","validation.not_regex":"Le format du champ :attribute n'est pas valide.","validation.numeric":"Le champ :attribute doit contenir un nombre.","validation.password.letters":":attribute doit contenir au moins une lettre.","validation.password.mixed":":attribute doit contenir au moins une majuscule et une minuscule.","validation.password.numbers":":attribute doit contenir au moins un nombre.","validation.password.symbols":":attribute doit contenir au moins un symbole.","validation.password.uncompromised":"Le champ :attribute est apparu dans une fuite de données, merci d'en choisir un différent.","validation.present":"Le champ :attribute doit être présent.","validation.prohibited":"Le champ :attribute est interdit.","validation.prohibited_if":"Le champ :attribute est interdit quand :other a la valeur :value.","validation.prohibited_unless":"Le champ :attribute est interdit à moins que :other est l'une des valeurs :values.","validation.prohibits":"Le champ :attribute interdit :other d'être présent.","validation.regex":"Le format du champ :attribute est invalide.","validation.required":"Le champ :attribute est obligatoire.","validation.required_array_keys":"Le champ :attribute doit contenir des entrées pour : :values.","validation.required_if":"Le champ :attribute est obligatoire quand la valeur de :other est :value.","validation.required_if_accepted":"Le champ :attribute est requis lorsque :other est accepté.","validation.required_unless":"Le champ :attribute est obligatoire sauf si :other est :values.","validation.required_with":"Le champ :attribute est obligatoire quand :values est présent.","validation.required_with_all":"Le champ :attribute est obligatoire quand :values sont présents.","validation.required_without":"Le champ :attribute est obligatoire quand :values n'est pas présent.","validation.required_without_all":"Le champ :attribute est requis quand aucun de :values n'est présent.","validation.same":"Les champs :attribute et :other doivent être identiques.","validation.size.array":"Le tableau :attribute doit contenir :size éléments.","validation.size.file":"La taille du fichier de :attribute doit être de :size kilo-octets.","validation.size.numeric":"La valeur de :attribute doit être :size.","validation.size.string":"Le texte de :attribute doit contenir :size caractères.","validation.starts_with":"Le champ :attribute doit commencer avec une des valeurs suivantes : :values","validation.string":"Le champ :attribute doit être une chaîne de caractères.","validation.timezone":":attribute doit être un fuseau horaire valide.","validation.unique":"La valeur du champ :attribute est déjà utilisée.","validation.uploaded":"Le fichier du champ :attribute n'a pu être téléversé.","validation.url":":attribute doit être une URL valide.","validation.uuid":"Le champ :attribute doit être un UUID valide","validation.single":"Lors de l'utilisation de :attribut, il doit être le seul paramètre dans le corps de la requête","validation.onlyCustomOtpWithUri":"Le paramètre uri doit être fourni seul ou seulement avec le paramètre 'custom_otp'","validation.custom.icon.image":"Les formats acceptés sont jpeg, png, bmp, gif, svg, or webp.","validation.custom.qrcode.image":"Les formats acceptés sont jpeg, png, bmp, gif, svg, or webp.","validation.custom.uri.regex":"Le champ :attribute n'est pas une URI otpauth valide.","validation.custom.otp_type.in":"Le champ :attribute n'est pas supporté.","validation.custom.email.exists":"Aucun compte utilisateur n'utilise cet email.","validation.custom.email.ComplyWithEmailRestrictionPolicy":"Cette adresse e-mail n'est pas conforme à la politique d'inscription","validation.custom.email.IsValidEmailList":"Tous les emails doivent être valides et séparés par le caractère '|' (pipe)","validation.custom.secret.isBase32Encoded":"Le :attribute doit être une chaîne encodée en base32","validation.custom.account.regex":"Le champ :attribute ne doit pas contenir de deux-points.","validation.custom.service.regex":"Le champ :attribute ne doit pas contenir de deux-points.","validation.custom.label.required":"L'URI doit avoir un label.","validation.custom.ids.regex":"Les IDs doivent être séparés par des virgules, sans virgule en fin de chaîne."};export{e as default}; diff --git a/public/build/assets/php_hi-631b366e.js b/public/build/assets/php_hi-a4de9620.js similarity index 99% rename from public/build/assets/php_hi-631b366e.js rename to public/build/assets/php_hi-a4de9620.js index e74cfdb4..9ea28578 100644 --- a/public/build/assets/php_hi-631b366e.js +++ b/public/build/assets/php_hi-a4de9620.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"ऐडमिन","admin.app_setup":"ऐप का सेटअप","admin.registrations":"रजिस्ट्रेशन","admin.users":"उपयोगकर्ता","admin.users_legend":"अपने इंस्टेंस पर पंजीकृत उपयोगकर्ताओं को प्रबंधित करें या नए बनाएं।","admin.admin_settings":"ऐड्मिन की सेटिंग","admin.create_new_user":"उपयोगकर्ता बनाइये","admin.new_user":"नया उपयोगकर्ता","admin.search_user_placeholder":"उपयोगकर्ता का नाम, ईमेल इत्यादि...","admin.quick_filters_colons":"जल्दी काम करने के लिए फ़िल्टर:","admin.user_created":"उपयोगकर्ता सफलतापूर्वक बनाया गया","admin.confirm.delete_user":"क्या आप वास्तव में इस उपयोगकर्ता को डिलीट करना चाहते हैं? फिर वापस नहीं जा पाएंगे।","admin.confirm.request_password_reset":"क्या आप वास्तव में इस उपयोगकर्ता का पासवर्ड रिसेट करना चाहते हैं?","admin.confirm.purge_password_reset_request":"क्या आप वाकई इस अनुरोध को रद्द करना चाहते हैं?","admin.confirm.delete_account":"क्या आप वाकई इस उपयोगकर्ता को हटाना चाहते हैं?","admin.confirm.edit_own_account":"यह आपका अपना अकाउंट है। क्या आप आश्वस्त हैं?","admin.confirm.change_admin_role":"इससे इस उपयोगकर्ता की अनुमतियों पर गंभीर प्रभाव पड़ेगा। क्या आप आश्वस्त हैं?","admin.confirm.demote_own_account":"आप अब ऐडमिनिस्ट्रेटर नहीं रहेंगे। वास्तव में आश्वस्त हैं?","admin.logs":"लॉग","admin.administration_legend":"निम्नलिखित सेटिंग ग्लोबल हैं और सभी उपयोगकरताओं पर लागू होंगी।","admin.user_management":"उपयोगकर्ता प्रबंधन","admin.oauth_provider":"OAuth प्रदाता","admin.account_bound_to_x_via_oauth":"यह अकाउंट OAuth के माध्यम से :provider अकाउंट से जुड़ा हुआ है","admin.last_seen_on_date":":date तारीख को अंतिम बार देखा गया","admin.registered_on_date":"रेजिस्ट्रेशन की तारीख :date","admin.updated_on_date":"अपडेट की तारीख :date","admin.access":"पहुँच","admin.password_requested_on_t":"इस उपयोगकर्ता के लिए एक पासवर्ड रीसेट अनुरोध मौजूद है (अनुरोध :datetime पर भेजा गया) जिसका अर्थ है कि उपयोगकर्ता ने अभी तक अपना पासवर्ड नहीं बदला है लेकिन उसे प्राप्त लिंक अभी भी मान्य है। यह स्वयं उपयोगकर्ता या किसी व्यवस्थापक का अनुरोध हो सकता है।","admin.password_request_expired":"इस उपयोगकर्ता के लिए एक पासवर्ड रीसेट अनुरोध मौजूद है पर अब मान्य नहीं है, जिसका अर्थ है कि उपयोगकर्ता ने अपना पासवर्ड नहीं बदला है। यह स्वयं उपयोगकर्ता या किसी व्यवस्थापक का अनुरोध हो सकता है।","admin.resend_email":"ईमेल दुबारा भेजें","admin.resend_email_title":"पासवर्ड रिसेट की ईमेल उपयोगकर्ता को दोबारा भेजें","admin.resend_email_help":"उपयोगकर्ता को नया पासवर्ड रीसेट ईमेल भेजने के लिए ईमेल पुनः भेजें का उपयोग करें ताकि वह एक नया पासवर्ड सेट कर सके। इससे उसका वर्तमान पासवर्ड वैसे ही रहेगा और पिछला कोई भी अनुरोध निरस्त कर दिया जाएगा।","admin.reset_password":"पासवर्ड रीसेट करें","admin.reset_password_help":"उपयोगकर्ता को पासवर्ड रीसेट ईमेल भेजने से पहले पासवर्ड रीसेट करने के लिए पासवर्ड रीसेट करें का उपयोग करें (यह एक अस्थायी पासवर्ड सेट करेगा) ताकि वह एक नया पासवर्ड सेट कर सके। कोई भी पिछला अनुरोध निरस्त कर दिया जाएगा।","admin.reset_password_title":"उपयोगकर्ता का पासवर्ड रिसेट करें","admin.password_successfully_reset":"पासवर्ड सफलता पूर्वक बदला गया।","admin.user_has_x_active_pat":":count सक्रिय टोकन","admin.user_has_x_security_devices":":count सुरक्षा डिवाइस (पास की)","admin.revoke_all_pat_for_user":"सभी उपयोगकर्ता टोकन निरस्त्र करें","admin.revoke_all_devices_for_user":"सभी उपयोगकर्ता डिवाइसेस निरस्त्र करें","admin.danger_zone":"खतरे का क्षेत्र","admin.delete_this_user_legend":"उपयोगकर्ता का अकाउंट डिलीट होगा और साथ ही उस का 2FA डेटा भी।","admin.this_is_not_soft_delete":"यह कोई सॉफ्ट डिलीट नहीं है, इसमें वापस जाना संभव नहीं है।","admin.delete_this_user":"इस उपयोगकर्ता को हटा दें","admin.user_role_updated":"उपयोगकर्ता का रोल अपडेट हो गया है","admin.pats_succesfully_revoked":"उपयोगकर्ता के PAT सफलतापूर्वक निरस्त्र कर दिए गए हैं","admin.security_devices_succesfully_revoked":"उपयोगकर्ता के सुरक्षा उपकरण सफलतापूर्वक निरस्त्र कर दिए गए हैं","admin.variables":"वेरिएबल","admin.cache_cleared":"कैश साफ कर दिया गया है","admin.cache_optimized":"कैश अनुकूलित","admin.check_now":"अब जांचें","admin.view_on_github":"गिटहब पर देखें","admin.x_is_available":":version संस्करण उपलब्ध है!","admin.forms.use_encryption.label":"संवेदनशील डेटा को सुरक्षित करें","admin.forms.use_encryption.help":"संवेदनशील डेटा, 2FA रहस्य और ईमेल, डेटाबेस में एन्क्रिप्टेड रूप में संग्रहीत किए जाते हैं। अपनी .env फ़ाइल के APP_KEY value का (या संपूर्ण फ़ाइल का) बैकअप लेना सुनिश्चित करें क्योंकि यह एन्क्रिप्शन की कुंजी के रूप में कार्य करता है। इस कुंजी के बिना एन्क्रिप्टेड डेटा को समझने का कोई तरीका नहीं है।","admin.forms.restrict_registration.label":"रेजिस्ट्रेशन पर प्रतिबंध लगाएं","admin.forms.restrict_registration.help":"रेजिस्ट्रेशन केवल सीमित ईमेल पतों के लिए ही उपलब्ध कराएं। दोनों नियमों का एक साथ उपयोग किया जा सकता है। इसका SSO के माध्यम से किए गए रेजिस्ट्रेशन पर कोई प्रभाव नहीं पड़ता है।","admin.forms.restrict_list.label":"फिल्टरों की सूची","admin.forms.restrict_list.help":'इस सूची में दी गई ईमेल को रेजिस्ट्रेशन की अनुमति दी जाएगी। एक पाइप सिम्बल ("|") से पते अलग करें',"admin.forms.restrict_rule.label":"फिल्टर करने के नियम","admin.forms.restrict_rule.help":"इस रेगुलर इक्स्प्रेशन से मेल खाने वाले ईमेल को रेजिस्ट्रेशन की अनुमति दी जाएगी","admin.forms.disable_registration.label":"रेजिस्ट्रेशन निष्क्रिय करें","admin.forms.disable_registration.help":"नए उपयोगकर्ता रेजिस्ट्रेशन रोकें। जब तक इसे ओवरराइड नहीं किया जाता (नीचे देखें), यह SSO को भी प्रभावित करता है, इसलिए नए उपयोगकर्ता SSO के माध्यम से साइन इन नहीं कर पाएंगे","admin.forms.enable_sso.label":"सिंगल साइन-ऑन (SSO) सक्रिय करें","admin.forms.enable_sso.help":"आगंतुकों को सिंगल साइन-ऑन योजना के माध्यम से बाहरी ID का उपयोग करके प्रमाणित करने की अनुमति दें","admin.forms.keep_sso_registration_enabled.label":"SSO द्वारा रेजिस्ट्रेशन को सक्रिय रखें","admin.forms.keep_sso_registration_enabled.help":"नए उपयोगकर्ताओं को SSO के माध्यम से पहली बार साइन इन करने की अनुमति दें जबकि रेजिस्ट्रेशन निष्क्रिय है","admin.forms.is_admin.label":"ऐडमिनिस्ट्रेटर है","admin.forms.is_admin.help":"उपयोगकर्ता को ऐडमिनिस्ट्रेटर के अधिकार दें. ऐडमिनिस्ट्रेटर के पास पूरे ऐप, यानी सेटिंग्स और अन्य उपयोगकर्ताओं को प्रबंधित करने की अनुमति है, लेकिन वे उन 2FA के लिए पासवर्ड उत्पन्न नहीं कर सकते हैं जो उनके पास नहीं है।","admin.forms.test_email.label":"ईमेल कॉन्फ़िगरेशन परीक्षण","admin.forms.test_email.help":"अपने इंस्टेंस के ईमेल कॉन्फ़िगरेशन को नियंत्रित करने के लिए एक परीक्षण ईमेल भेजें। कार्यशील कॉन्फ़िगरेशन होना महत्वपूर्ण है, अन्यथा उपयोगकर्ता रीसेट पासवर्ड का अनुरोध नहीं कर पाएंगे।","admin.forms.test_email.email_will_be_send_to_x":"ईमेल :email पर भेजा जाएगा","admin.forms.cache_management.label":"कैश का मैनेजमेन्ट","admin.forms.cache_management.help":"कभी-कभी कैश को साफ़ करने की आवश्यकता होती है, उदाहरण के लिए एनवायरनमेंट वेरीएबल में बदलाव या अपडेट के बाद। आप इसे यहां से कर सकते हैं.","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":`आप WebAuthn प्रमाणीकरण सक्षम करके अपने 2FAuth खाते की सुरक्षा बढ़ा सकते हैं।

+/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"ऐडमिन","admin.app_setup":"ऐप का सेटअप","admin.registrations":"रजिस्ट्रेशन","admin.users":"उपयोगकर्ता","admin.users_legend":"अपने इंस्टेंस पर पंजीकृत उपयोगकर्ताओं को प्रबंधित करें या नए बनाएं।","admin.admin_settings":"ऐड्मिन की सेटिंग","admin.create_new_user":"उपयोगकर्ता बनाइये","admin.new_user":"नया उपयोगकर्ता","admin.search_user_placeholder":"उपयोगकर्ता का नाम, ईमेल इत्यादि...","admin.quick_filters_colons":"जल्दी काम करने के लिए फ़िल्टर:","admin.user_created":"उपयोगकर्ता सफलतापूर्वक बनाया गया","admin.confirm.delete_user":"क्या आप वास्तव में इस उपयोगकर्ता को डिलीट करना चाहते हैं? फिर वापस नहीं जा पाएंगे।","admin.confirm.request_password_reset":"क्या आप वास्तव में इस उपयोगकर्ता का पासवर्ड रिसेट करना चाहते हैं?","admin.confirm.purge_password_reset_request":"क्या आप वाकई इस अनुरोध को रद्द करना चाहते हैं?","admin.confirm.delete_account":"क्या आप वाकई इस उपयोगकर्ता को हटाना चाहते हैं?","admin.confirm.edit_own_account":"यह आपका अपना अकाउंट है। क्या आप आश्वस्त हैं?","admin.confirm.change_admin_role":"इससे इस उपयोगकर्ता की अनुमतियों पर गंभीर प्रभाव पड़ेगा। क्या आप आश्वस्त हैं?","admin.confirm.demote_own_account":"आप अब ऐडमिनिस्ट्रेटर नहीं रहेंगे। वास्तव में आश्वस्त हैं?","admin.logs":"लॉग","admin.administration_legend":"निम्नलिखित सेटिंग ग्लोबल हैं और सभी उपयोगकरताओं पर लागू होंगी।","admin.user_management":"उपयोगकर्ता प्रबंधन","admin.oauth_provider":"OAuth प्रदाता","admin.account_bound_to_x_via_oauth":"यह अकाउंट OAuth के माध्यम से :provider अकाउंट से जुड़ा हुआ है","admin.last_seen_on_date":":date तारीख को अंतिम बार देखा गया","admin.registered_on_date":"रेजिस्ट्रेशन की तारीख :date","admin.updated_on_date":"अपडेट की तारीख :date","admin.access":"पहुँच","admin.password_requested_on_t":"इस उपयोगकर्ता के लिए एक पासवर्ड रीसेट अनुरोध मौजूद है (अनुरोध :datetime पर भेजा गया) जिसका अर्थ है कि उपयोगकर्ता ने अभी तक अपना पासवर्ड नहीं बदला है लेकिन उसे प्राप्त लिंक अभी भी मान्य है। यह स्वयं उपयोगकर्ता या किसी व्यवस्थापक का अनुरोध हो सकता है।","admin.password_request_expired":"इस उपयोगकर्ता के लिए एक पासवर्ड रीसेट अनुरोध मौजूद है पर अब मान्य नहीं है, जिसका अर्थ है कि उपयोगकर्ता ने अपना पासवर्ड नहीं बदला है। यह स्वयं उपयोगकर्ता या किसी व्यवस्थापक का अनुरोध हो सकता है।","admin.resend_email":"ईमेल दुबारा भेजें","admin.resend_email_title":"पासवर्ड रिसेट की ईमेल उपयोगकर्ता को दोबारा भेजें","admin.resend_email_help":"उपयोगकर्ता को नया पासवर्ड रीसेट ईमेल भेजने के लिए ईमेल पुनः भेजें का उपयोग करें ताकि वह एक नया पासवर्ड सेट कर सके। इससे उसका वर्तमान पासवर्ड वैसे ही रहेगा और पिछला कोई भी अनुरोध निरस्त कर दिया जाएगा।","admin.reset_password":"पासवर्ड रीसेट करें","admin.reset_password_help":"उपयोगकर्ता को पासवर्ड रीसेट ईमेल भेजने से पहले पासवर्ड रीसेट करने के लिए पासवर्ड रीसेट करें का उपयोग करें (यह एक अस्थायी पासवर्ड सेट करेगा) ताकि वह एक नया पासवर्ड सेट कर सके। कोई भी पिछला अनुरोध निरस्त कर दिया जाएगा।","admin.reset_password_title":"उपयोगकर्ता का पासवर्ड रिसेट करें","admin.password_successfully_reset":"पासवर्ड सफलता पूर्वक बदला गया।","admin.user_has_x_active_pat":":count सक्रिय टोकन","admin.user_has_x_security_devices":":count सुरक्षा डिवाइस (पास की)","admin.revoke_all_pat_for_user":"सभी उपयोगकर्ता टोकन निरस्त्र करें","admin.revoke_all_devices_for_user":"सभी उपयोगकर्ता डिवाइसेस निरस्त्र करें","admin.danger_zone":"खतरे का क्षेत्र","admin.delete_this_user_legend":"उपयोगकर्ता का अकाउंट डिलीट होगा और साथ ही उस का 2FA डेटा भी।","admin.this_is_not_soft_delete":"यह कोई सॉफ्ट डिलीट नहीं है, इसमें वापस जाना संभव नहीं है।","admin.delete_this_user":"इस उपयोगकर्ता को हटा दें","admin.user_role_updated":"उपयोगकर्ता का रोल अपडेट हो गया है","admin.pats_succesfully_revoked":"उपयोगकर्ता के PAT सफलतापूर्वक निरस्त्र कर दिए गए हैं","admin.security_devices_succesfully_revoked":"उपयोगकर्ता के सुरक्षा उपकरण सफलतापूर्वक निरस्त्र कर दिए गए हैं","admin.variables":"वेरिएबल","admin.cache_cleared":"कैश साफ कर दिया गया है","admin.cache_optimized":"कैश अनुकूलित","admin.check_now":"अब जांचें","admin.view_on_github":"गिटहब पर देखें","admin.x_is_available":":version संस्करण उपलब्ध है!","admin.forms.use_encryption.label":"संवेदनशील डेटा को सुरक्षित करें","admin.forms.use_encryption.help":"संवेदनशील डेटा, 2FA रहस्य और ईमेल, डेटाबेस में एन्क्रिप्टेड रूप में संग्रहीत किए जाते हैं। अपनी .env फ़ाइल के APP_KEY value का (या संपूर्ण फ़ाइल का) बैकअप लेना सुनिश्चित करें क्योंकि यह एन्क्रिप्शन की कुंजी के रूप में कार्य करता है। इस कुंजी के बिना एन्क्रिप्टेड डेटा को समझने का कोई तरीका नहीं है।","admin.forms.restrict_registration.label":"रेजिस्ट्रेशन पर प्रतिबंध लगाएं","admin.forms.restrict_registration.help":"रेजिस्ट्रेशन केवल सीमित ईमेल पतों के लिए ही उपलब्ध कराएं। दोनों नियमों का एक साथ उपयोग किया जा सकता है। इसका SSO के माध्यम से किए गए रेजिस्ट्रेशन पर कोई प्रभाव नहीं पड़ता है।","admin.forms.restrict_list.label":"फिल्टरों की सूची","admin.forms.restrict_list.help":'इस सूची में दी गई ईमेल को रेजिस्ट्रेशन की अनुमति दी जाएगी। एक पाइप सिम्बल ("|") से पते अलग करें',"admin.forms.restrict_rule.label":"फिल्टर करने के नियम","admin.forms.restrict_rule.help":"इस रेगुलर इक्स्प्रेशन से मेल खाने वाले ईमेल को रेजिस्ट्रेशन की अनुमति दी जाएगी","admin.forms.disable_registration.label":"रेजिस्ट्रेशन निष्क्रिय करें","admin.forms.disable_registration.help":"नए उपयोगकर्ता रेजिस्ट्रेशन रोकें। जब तक इसे ओवरराइड नहीं किया जाता (नीचे देखें), यह SSO को भी प्रभावित करता है, इसलिए नए उपयोगकर्ता SSO के माध्यम से साइन इन नहीं कर पाएंगे","admin.forms.enable_sso.label":"सिंगल साइन-ऑन (SSO) सक्रिय करें","admin.forms.enable_sso.help":"आगंतुकों को सिंगल साइन-ऑन योजना के माध्यम से बाहरी ID का उपयोग करके प्रमाणित करने की अनुमति दें","admin.forms.keep_sso_registration_enabled.label":"SSO द्वारा रेजिस्ट्रेशन को सक्रिय रखें","admin.forms.keep_sso_registration_enabled.help":"नए उपयोगकर्ताओं को SSO के माध्यम से पहली बार साइन इन करने की अनुमति दें जबकि रेजिस्ट्रेशन निष्क्रिय है","admin.forms.is_admin.label":"ऐडमिनिस्ट्रेटर है","admin.forms.is_admin.help":"उपयोगकर्ता को ऐडमिनिस्ट्रेटर के अधिकार दें. ऐडमिनिस्ट्रेटर के पास पूरे ऐप, यानी सेटिंग्स और अन्य उपयोगकर्ताओं को प्रबंधित करने की अनुमति है, लेकिन वे उन 2FA के लिए पासवर्ड उत्पन्न नहीं कर सकते हैं जो उनके पास नहीं है।","admin.forms.test_email.label":"ईमेल कॉन्फ़िगरेशन परीक्षण","admin.forms.test_email.help":"अपने इंस्टेंस के ईमेल कॉन्फ़िगरेशन को नियंत्रित करने के लिए एक परीक्षण ईमेल भेजें। कार्यशील कॉन्फ़िगरेशन होना महत्वपूर्ण है, अन्यथा उपयोगकर्ता रीसेट पासवर्ड का अनुरोध नहीं कर पाएंगे।","admin.forms.test_email.email_will_be_send_to_x":"ईमेल :email पर भेजा जाएगा","admin.forms.cache_management.label":"कैश का मैनेजमेन्ट","admin.forms.cache_management.help":"कभी-कभी कैश को साफ़ करने की आवश्यकता होती है, उदाहरण के लिए एनवायरनमेंट वेरीएबल में बदलाव या अपडेट के बाद। आप इसे यहां से कर सकते हैं.","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":`आप 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 कुछ 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.webauthn.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":"नया पासवर्ड","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_reset":"पासवर्ड सफलता पूर्वक बदला गया।","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":"आपका उपयोगकर्ता खाता और साथ ही आपका सभी 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":"क्लिपबोर्ड पर कॉपी हो गया I","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.x_selected":":count चुने गए","commons.name":"नाम","commons.manage":"प्रबंधन करें","commons.done":"समाप्त हुआ","commons.new":"नया","commons.back":"पीछे","commons.move":"खिसकाएँ","commons.export":"निर्यात करें","commons.all":"सब","commons.check_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":"लोगो सौजन्य से","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":"OR","commons.close_the_x_page":":pagetitle पेज को बंद करें","commons.submit":"जमा करें","commons.default":"पूर्व निर्धारित","commons.back_to_home":"मुख पृष्ठ पर वापस जाएं","commons.nothing":"कुछ नहीं","commons.no_result":"कोई परिणाम नहीं","commons.information":"जानकारी","commons.permissions":"अनुमतियां","commons.send":"भेजें","commons.optimize":"ऑप्‍टिमाइज़ करें","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":"रहस्य को समझा नहीं जा सकता. यह मुख्य रूप से 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":"उपयोगकर्ता आईडी 1 से 64 वर्णों के बीच नहीं थी","errors.no_entry_was_of_type_public_key":'कोई भी प्रविष्टि "public-key" प्रकार की नहीं थी',"errors.unsupported_with_reverseproxy":"ऑथ प्रॉक्सी का उपयोग करते समय लागू नहीं होता है","errors.user_deletion_failed":"उपयोगकर्ता के कहते को हटाना विफल रहा, कोई डेटा हटाया नहीं गया है","errors.auth_proxy_failed":"Proxy प्रमाणीकरण विफल रहा","errors.auth_proxy_failed_legend":"2Fauth को प्रमाणीकरण प्रॉक्सी के पीछे चलाने के लिए कॉन्फ़िगर किया गया है लेकिन आपकी प्रॉक्सी अपेक्षित हेडर वापस नहीं करती है। अपना कॉन्फ़िगरेशन जांचें और पुनः प्रयास करें।","errors.invalid_x_migration":"अमान्य या अपठनीय :appname डेटा","errors.invalid_2fa_data":"अमान्य 2FA डेटा","errors.unsupported_migration":"डेटा किसी भी समर्थित प्रारूप से मेल नहीं खाता","errors.unsupported_otp_type":"ओटीपी का प्रकार असमर्थित","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":"समान ईमेल पते वाला एक उपयोगकर्ता खाता पहले से मौजूद है लेकिन यह आपकी बाहरी खाता आईडी से मेल नहीं खाता है। यदि आप पहले से ही इस ईमेल के साथ 2FAuth पर पंजीकृत हैं तो SSO का उपयोग न करें।","errors.account_managed_by_external_provider":"खाता किसी बाहरी प्रदाता द्वारा प्रबंधित किया गया है","errors.data_cannot_be_refreshed_from_server":"सर्वर से डेटा रिफ्रेश नहीं किया जा सकता","errors.no_pwd_reset_for_this_user_type":"इस ईमेल के लिए पासवर्ड रीसेट नहीं किया जा सकता है।","groups.groups":"ग्रुप्स","groups.create_group":"नया ग्रुप बनाएँ","groups.show_group_selector":"ग्रुप सेलेक्टर दिखाएँ","groups.hide_group_selector":"ग्रुप सेलेक्टर छुपायें","groups.select_accounts_to_show":"दिखाने के लिए अकाउंट ग्रुप चुनें","groups.x_accounts":":count अकाउंट","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":"Български (बुल्गेरियन)","languages.ja":"日本語 (जापानी)","languages.hi":"हिंदी (हिंदी)","notifications.hello":"नमस्कार","notifications.test_email_settings.subject":"2FAuth की टेस्ट ईमेल","notifications.test_email_settings.reason":"आपको यह ईमेल इसलिए प्राप्त हुआ है क्योंकि आपने अपने 2FAuth इंस्टेंस की ईमेल सेटिंग्स को मान्य करने के लिए एक परीक्षण ईमेल का अनुरोध किया था।","notifications.test_email_settings.success":"बधाई हो! यह काम करता है :)","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.you_are_administrator":"आप एक व्यवस्थापक (ऐड्मिन) हैं","settings.account_linked_to_sso_x_provider":"आपने अपने :provider खाते का उपयोग करके SSO के माध्यम से साइन-इन किया है। आपकी जानकारी यहां :provider के अलावा नहीं बदली जा सकती।","settings.general":"सामान्य","settings.security":"सुरक्षा","settings.profile":"प्रोफ़ाइल","settings.change_password":"पासवर्ड बदलें","settings.personal_access_tokens":"प्रवेश के व्यक्तिगत टोकन","settings.token_legend":"व्यक्तिगत एक्सेस टोकन किसी भी ऐप को 2Fauth API को प्रमाणित करने की अनुमति देते हैं। आपको उपभोक्ता ऐप के अनुरोधों के प्राधिकरण हेडर में एक्सेस टोकन को बियरर टोकन के रूप में निर्दिष्ट करना चाहिए।","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.clear_search_on_copy.label":"कॉपी होने पर खोज मिटा दें","settings.forms.clear_search_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.default_group.label":"डिफ़ॉल्ट ग्रुप","settings.forms.default_group.help":"वह समूह जिससे नव निर्मित अकाउंट जुड़े हैं","settings.forms.view_default_group_on_copy.label":"कॉपी होने पर डिफ़ॉल्ट ग्रुप देखें","settings.forms.view_default_group_on_copy.help":"जब भी OTP कॉपी हो जाए तो हमेशा डिफ़ॉल्ट ग्रुप पर वापस आ जाएं","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.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":"१ मिनट बाद","settings.forms.5_minutes":"५ मिनट बाद","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":"बारे में","titles.admin.appSetup":"एप का सेटअप","titles.admin.users":"उपयोगकर्ता प्रबंधन","titles.admin.createUser":"उपयोगकर्ता बनाइये","titles.admin.manageUser":"उपयोगकर्ताओं को प्रतिबंधित करें","twofaccounts.service":"सर्विस","twofaccounts.account":"अकाउंट","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":"गूगल, ट्विटर, एप्पल","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 या स्टीम 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.forms.spaces_are_ignored":"अनावश्यक खाली अक्षर अपने आप निकाल दिए जाएंगे","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":"इस ब्राउज़र में स्ट्रीम 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":"स्वीकृत: Plain text, json, 2fas","twofaccounts.import.expected_format_for_direct_input":"अपेक्षित: otpauth URI की सूची, एक लाइन पर एक","twofaccounts.import.supported_migration_formats":"समर्थित माइग्रेशन फॉर्मैट","twofaccounts.import.qr_code":"QR कोड","twofaccounts.import.text_file":"टेक्स्ट फ़ाईल","twofaccounts.import.direct_input":"सीधे दर्ज करें","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":"जब :other :value हो तो :attribute को स्वीकार करना होगा।","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":":attibute :min और :max आइटम के बीच होनी चाहिए।","validation.between.file":":attibute :min और :max किलोबाइट्स के बीच होनी चाहिए।","validation.between.numeric":":attibute :min और :max के बीच होनी चाहिए।","validation.between.string":":attibute :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":"जब :other :value हो तो :attribute को अस्वीकार किया जाना चाहिए।","validation.different":":attribute और :other भिन्न होने चाहिए।","validation.digits":":attribute :digits अंकों का होना चाहिए।","validation.digits_between":":attibute :min और :max अंकों के बीच होना चाहिए।","validation.dimensions":":attribute के छवि आयाम मान्य नहीं हैं।","validation.distinct":":attribute फील्ड में डुप्लिकेट मान है।","validation.doesnt_end_with":":attribute निम्नलिखित में से किसी एक के साथ समाप्त नहीं हो सकता: :मान।","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 एक पूर्णांक(integer) होना चाहिए।","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 :values का मल्टिपल होना चाहिए।","validation.not_in":"चुना गया :attribute वैध नहीं है।","validation.not_regex":":attribute फॉर्मेट अमान्य है।","validation.numeric":":attribute एक संख्या होनी चाहिए।","validation.password.letters":":attribute में कम से कम एक अक्षर होना चाहिए।","validation.password.mixed":":attribute में कम से कम एक uppercase और एक lowecase अक्षर होना चाहिए।","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 किलोबाइट्स का होना चाहिए।","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 का उपयोग करते समय वह इस request के body में एकमात्र पैरामीटर होना चाहिए","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 एक वैध OTPAuth URI नहीं है।","validation.custom.otp_type.in":":attribute समर्थित नहीं है।","validation.custom.email.exists":"इस ईमेल का कोई अकाउंट नहीं पाया गया।","validation.custom.email.ComplyWithEmailRestrictionPolicy":"यह ईमेल पता रेजिस्ट्रेशन के नियम का पालन नहीं करता है","validation.custom.email.IsValidEmailList":"सभी ईमेल वैध होने चाहिए और पाइप सिम्बल (|) से अलग किए जाने चाहिए","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":"IDs को कॉमा से अलग किया जाना चाहिए, बिना अंतिम कॉमा के।"};export{t as default}; diff --git a/public/build/assets/php_id-48a5ef59.js b/public/build/assets/php_id-48a5ef59.js new file mode 100644 index 00000000..9f545d8d --- /dev/null +++ b/public/build/assets/php_id-48a5ef59.js @@ -0,0 +1,3 @@ +/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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.

+ 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.webauthn.options":"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_reset":"Password successfully reset","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.x_selected":":count 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.check_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","commons.no_result":"No result","commons.information":"Information","commons.permissions":"Permissions","commons.send":"Send","commons.optimize":"Optimize","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","errors.data_cannot_be_refreshed_from_server":"Data cannot be refreshed from server","errors.no_pwd_reset_for_this_user_type":"Password reset unavailable for this user","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.x_accounts":":count accounts","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":"English (English)","languages.fr":"Français (French)","languages.de":"Deutsch (German)","languages.es":"Español (Spanish)","languages.zh":"简体中文 (Chinese Simplified)","languages.ru":"Русский (Russian)","languages.bg":"Български (Bulgarian)","languages.ja":"日本語 (Japanese)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Hello","notifications.test_email_settings.subject":"2FAuth test email","notifications.test_email_settings.reason":"You are receiving this email because you requested a test email to validate the email settings of your 2FAuth instance.","notifications.test_email_settings.success":"Good news, it works :)","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.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.clear_search_on_copy.label":"Clear Search on copy","settings.forms.clear_search_on_copy.help":"Empty the Search box right after a code has been copied to the clipboard","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.default_group.label":"Default group","settings.forms.default_group.help":"The group to which the newly created accounts are associated","settings.forms.view_default_group_on_copy.label":"View default group on copy","settings.forms.view_default_group_on_copy.help":"Always return to the default group when an OTP is copied","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.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","titles.admin.appSetup":"App setup","titles.admin.users":"Users management","titles.admin.createUser":"Create user","titles.admin.manageUser":"Manage user","twofaccounts.service":"Layanan","twofaccounts.account":"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.forms.spaces_are_ignored":"Unwanted spaces will be automatically removed","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.expected_format_for_direct_input":"Expected: A list of otpauth URI, one by line","twofaccounts.import.supported_migration_formats":"Supported migration formats","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Text file","twofaccounts.import.direct_input":"Direct input","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.email.ComplyWithEmailRestrictionPolicy":"This email address does not comply with the registration policy","validation.custom.email.IsValidEmailList":"All emails must be valid and separated with a pipe","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_id-8aeb6da7.js b/public/build/assets/php_id-8aeb6da7.js deleted file mode 100644 index e9c3fb72..00000000 --- a/public/build/assets/php_id-8aeb6da7.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! 2FAuth version 5.1.0 - 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.

- 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-b90e26fa.js b/public/build/assets/php_it-b90e26fa.js deleted file mode 100644 index 52a51eeb..00000000 --- a/public/build/assets/php_it-b90e26fa.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! 2FAuth version 5.1.0 - 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_it-b9c12090.js b/public/build/assets/php_it-b9c12090.js new file mode 100644 index 00000000..c8c8c9ac --- /dev/null +++ b/public/build/assets/php_it-b9c12090.js @@ -0,0 +1,4 @@ +/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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.webauthn.options":"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_reset":"Password successfully reset","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":"Se hai sempre usato SSO per accedere, disconnettiti quindi utilizza la funzione di reset della password per ottenere una password in modo da poter compilare questo modulo.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"L'eliminazione del tuo account 2FAuth non influenza in alcun modo il tuo account SSO esterno.","auth.forms.user_account_successfully_deleted":"Account utente eliminato correttamente","auth.forms.has_lower_case":"Contiene minuscole","auth.forms.has_upper_case":"Contiene maiuscole","auth.forms.has_special_char":"Contiene caratteri speciali","auth.forms.has_number":"Contiene numeri","auth.forms.is_long_enough":"8 caratteri minimo","auth.forms.mandatory_rules":"Richiesto","auth.forms.optional_rules_you_should_follow":"Raccomandato (fortemente)","auth.forms.caps_lock_is_on":"Il blocco maiuscole è attivo","commons.cancel":"Annulla","commons.update":"Aggiorna","commons.copy":"Copia","commons.copy_to_clipboard":"Copia negli appunti","commons.copied_to_clipboard":"Copiato negli appunti","commons.profile":"Profilo","commons.edit":"Modifica","commons.delete":"Cancella","commons.disable":"Disattiva","commons.enable":"Attiva","commons.create":"Crea","commons.save":"Salva","commons.close":"Chiudi","commons.clear":"Pulisci","commons.clear_search":"Pulisci ricerca","commons.demo_do_not_post_sensitive_data":"Questa è un'app demo, non pubblicare alcun dato sensibile","commons.testing_do_not_post_sensitive_data":"Questa è un'app di test, non pubblicare alcun dato sensibile","commons.x_selected":":count selezionati","commons.name":"Nome","commons.manage":"Gestisci","commons.done":"Fatto","commons.new":"Nuovo","commons.back":"Indietro","commons.move":"Sposta","commons.export":"Esporta","commons.all":"Tutti","commons.check_all":"Tutti","commons.select_all":"Seleziona tutti","commons.clear_selection":"Annulla selezione","commons.sort_descending":"Ordine decrescente","commons.sort_ascending":"Ordine crescente","commons.rename":"Rinomina","commons.new_name":"Nuovo nome","commons.options":"Opzioni","commons.reload":"Ricaricare","commons.refresh":"Aggiorna","commons.data_refreshed_to_reflect_server_changes":"I dati sono stati aggiornati per rispecchiare le modifiche lato server","commons.generate":"Genera","commons.generating_otp":"Generando OTP","commons.open_in_browser":"Apri nel browser","commons.continue":"Continua","commons.discard":"Scarta","commons.about":"Informazioni","commons.usefull_links":"Link utili","commons.environment":"Ambiente","commons.credits":"Ringraziamenti","commons.2fauth_teaser":"Una web app per gestire i tuoi account di autenticazione a due fattori (2FA) e generarne i rispettivi codici di sicurezza","commons.made_with":"Creato con","commons.ui_icons_by":"Icone UI di","commons.logos_by":"Loghi di","commons.search":"Cerca","commons.resources":"Risorse","commons.check_for_update":"Controlla aggiornamenti","commons.check_for_update_help":"Controlla automaticamente (una volta a settimana) e avvisa quando viene pubblicata una nuova versione di 2FAuth su Github","commons.you_are_up_to_date":"Questa istanza è aggiornata","commons.2fauth_description":"Una web app per gestire i tuoi account di autenticazione a due fattori (2FA) e generarne i rispettivi codici di sicurezza","commons.image_of_qrcode_to_scan":"Immagine di un codice QR da scansionare","commons.file":"File","commons.or":"O","commons.close_the_x_page":"Chiudi la pagina :pagetitle","commons.submit":"Invia","commons.default":"Predefinito","commons.back_to_home":"Torna alla home","commons.nothing":"niente","commons.no_result":"No result","commons.information":"Information","commons.permissions":"Permissions","commons.send":"Send","commons.optimize":"Optimize","errors.resource_not_found":"Risorsa non trovata","errors.error_occured":"Si è verificato un errore:","errors.refresh":"Ricarica","errors.no_valid_otp":"Nessuna risorsa OTP valida in questo codice QR","errors.something_wrong_with_server":"Qualcosa non va con il tuo server","errors.Unable_to_decrypt_uri":"Impossibile decifrare uri","errors.not_a_supported_otp_type":"Questo formato OTP non è attualmente supportato","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","errors.data_cannot_be_refreshed_from_server":"Data cannot be refreshed from server","errors.no_pwd_reset_for_this_user_type":"Password reset unavailable for this user","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.x_accounts":":count account","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":"Preferenza del browser","languages.en":"English (English)","languages.fr":"Français (French)","languages.de":"Deutsch (German)","languages.es":"Español (Spanish)","languages.zh":"简体中文 (Chinese Simplified)","languages.ru":"Русский (Russian)","languages.bg":"Български (Bulgarian)","languages.ja":"日本語 (Japanese)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Hello","notifications.test_email_settings.subject":"2FAuth test email","notifications.test_email_settings.reason":"You are receiving this email because you requested a test email to validate the email settings of your 2FAuth instance.","notifications.test_email_settings.success":"Good news, it works :)","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":"La password deve contenere almeno otto caratteri e corrispondere alla conferma.","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.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.clear_search_on_copy.label":"Clear Search on copy","settings.forms.clear_search_on_copy.help":"Empty the Search box right after a code has been copied to the clipboard","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.default_group.label":"Default group","settings.forms.default_group.help":"The group to which the newly created accounts are associated","settings.forms.view_default_group_on_copy.label":"View default group on copy","settings.forms.view_default_group_on_copy.help":"Always return to the default group when an OTP is copied","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.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","titles.admin.appSetup":"App setup","titles.admin.users":"Users management","titles.admin.createUser":"Create user","titles.admin.manageUser":"Manage user","twofaccounts.service":"Service","twofaccounts.account":"Account","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.forms.spaces_are_ignored":"Unwanted spaces will be automatically removed","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.expected_format_for_direct_input":"Expected: A list of otpauth URI, one by line","twofaccounts.import.supported_migration_formats":"Supported migration formats","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Text file","twofaccounts.import.direct_input":"Direct input","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.email.ComplyWithEmailRestrictionPolicy":"This email address does not comply with the registration policy","validation.custom.email.IsValidEmailList":"All emails must be valid and separated with a pipe","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_ja-bbda5fec.js b/public/build/assets/php_ja-b8afbdc1.js similarity index 99% rename from public/build/assets/php_ja-bbda5fec.js rename to public/build/assets/php_ja-b8afbdc1.js index 9713ffbf..f1bac8a1 100644 --- a/public/build/assets/php_ja-bbda5fec.js +++ b/public/build/assets/php_ja-b8afbdc1.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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":"IDとパスワード","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":`WebAuthn 認証を利用して、2FAuth アカウントのセキュリティを強化することができます。

+/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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":"IDとパスワード","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":`WebAuthn 認証を利用して、2FAuth アカウントのセキュリティを強化することができます。

WebAuthn を使用すると、信頼できるデバイス(Yubikey や生体認証機能が付いたスマートフォンなど)を使用して迅速かつ安全にログインできます。`,"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":"以下のオプションを有効にするには、1 つ以上デバイスを登録してください","auth.webauthn.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":"新しいパスワード","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_reset":"Password successfully reset","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":"あなたのアカウントとすべての 2 要素認証データが削除されます。元に戻すことはできません。","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.x_selected":":count 件選択中","commons.name":"名前","commons.manage":"管理","commons.done":"完了する","commons.new":"追加","commons.back":"戻る","commons.move":"移動","commons.export":"エクスポート","commons.all":"すべて","commons.check_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":"あなたの2要素認証 (2FA) アカウントを管理し、セキュリティコードを生成するウェブアプリ","commons.made_with":"フレームワーク:","commons.ui_icons_by":"UIアイコン:","commons.logos_by":"ロゴ:","commons.search":"検索","commons.resources":"参照","commons.check_for_update":"更新を確認する","commons.check_for_update_help":"2FAuth の新バージョンが GitHub で公開されているか自動(週 1 回)で確認し、通知します","commons.you_are_up_to_date":"最新版を使用しています","commons.2fauth_description":"あなたの2要素認証 (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":"なし","commons.no_result":"No result","commons.information":"Information","commons.permissions":"Permissions","commons.send":"Send","commons.optimize":"Optimize","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認証URIではありません。QRコードの内容:","errors.wrong_current_password":"現在のパスワードが間違っています。変更は行われていません","errors.error_during_encryption":"暗号化に失敗しました。データベースの保護は行われていません","errors.error_during_decryption":"復号に失敗しました。データベースは暗号化されたままです。1 つ以上のアカウントの暗号化データが壊れている可能性が高いです。","errors.qrcode_cannot_be_read":"このQRコードは読み取れません","errors.too_many_ids":"クエリパラメータに一度に含まれるIDidが多すぎます。上限は 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":"認証システムが識別子つき認証情報 (discoverable credential) に対応していません","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":"ユーザー ID は 1 文字以上 64 文字以内でなければなりません","errors.no_entry_was_of_type_public_key":'"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":"無効な 2 要素認証データです","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":"同じメールアドレスを持つユーザーアカウントは既に存在しますが、あなたの外部アカウントIDと一致しません。 このアドレスで 2FAuth に登録済みの場合は、SSOを使用しないでください。","errors.account_managed_by_external_provider":"外部プロバイダが管理するアカウント","errors.data_cannot_be_refreshed_from_server":"データをサーバーから更新できません","errors.no_pwd_reset_for_this_user_type":"Password reset unavailable for this user","groups.groups":"グループ","groups.create_group":"新しいグループを作成","groups.show_group_selector":"グループ選択を開く","groups.hide_group_selector":"グループ選択を閉じる","groups.select_accounts_to_show":"表示するグループを選ぶ","groups.x_accounts":"アカウント数 :count","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":"Български (ブルガリア語)","languages.ja":"日本語 (日本語)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Hello","notifications.test_email_settings.subject":"2FAuth test email","notifications.test_email_settings.reason":"You are receiving this email because you requested a test email to validate the email settings of your 2FAuth instance.","notifications.test_email_settings.success":"Good news, it works :)","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.you_are_administrator":"あなたは管理者です","settings.account_linked_to_sso_x_provider":"あなたは :provider アカウントのSSO経由でサインインしています。ここでは、: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 のUIを表示するための言語。リストにある言語は翻訳済みです。いずれかを選択してブラウザ設定を上書きできます。","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.clear_search_on_copy.label":"Clear Search on copy","settings.forms.clear_search_on_copy.help":"Empty the Search box right after a code has been copied to the clipboard","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":"2 桁ずつ","settings.forms.pair_legend":"数字を 2 桁ずつ区切る","settings.forms.trio_legend":"数字を 3 桁ずつ区切る","settings.forms.half_legend":"数字を前半と後半に区切る","settings.forms.trio":"3 桁ずつ","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.default_group.label":"既定のグループ","settings.forms.default_group.help":"新規作成したアカウントが所属するグループ","settings.forms.view_default_group_on_copy.label":"View default group on copy","settings.forms.view_default_group_on_copy.help":"Always return to the default group when an OTP is copied","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.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":"このアプリについて","titles.admin.appSetup":"App setup","titles.admin.users":"Users management","titles.admin.createUser":"Create user","titles.admin.manageUser":"Manage user","twofaccounts.service":"サービス","twofaccounts.account":"アカウント","twofaccounts.icon":"アイコン","twofaccounts.icon_for_account_x_at_service_y":":service の :account アカウント用アイコン","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":"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.forms.spaces_are_ignored":"Unwanted spaces will be automatically removed","twofaccounts.stream.live_scan_cant_start":"スキャンできません (´・ω・`)","twofaccounts.stream.need_grant_permission.reason":"カメラへのアクセス権限がありません","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":"さまざまな 2 要素認証アプリから 2FAuth にデータを取り込めます。","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.expected_format_for_direct_input":"Expected: A list of otpauth URI, one by line","twofaccounts.import.supported_migration_formats":"対応する移行用フォーマット","twofaccounts.import.qr_code":"QRコード","twofaccounts.import.text_file":"テキストファイル","twofaccounts.import.direct_input":"Direct input","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":"移行データから以下の 2 要素認証アカウントが抽出されました。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":"2 要素認証アプリからデータをエクスポートする際にパスワード保護や暗号化をかけないでください。2FAuth で読み込めなくなります。","validation.accepted":":attributeを承認してください。","validation.accepted_if":":otherが:valueの場合、:attributeを有効にする必要があります。","validation.active_url":":attributeは、有効なURLではありません。","validation.after":":attributeには、:dateより後の日付を指定してください。","validation.after_or_equal":":attributeには、:date以降の日付を指定してください。","validation.alpha":":attributeには、半角英字('A-Z', 'a-z')のみ使用できます。","validation.alpha_dash":":attributeには、半角の英数字('A-Z', 'a-z', '0-9')、ハイフン(-)、下線(_)のみ使用できます。","validation.alpha_num":":attributeには、半角英数字('A-Z', 'a-z', '0-9')のみ使用できます。","validation.array":":attributeには、配列を指定してください。","validation.before":":attributeには、:dateより前の日付を指定してください。","validation.before_or_equal":":attributeには、:date以前の日付を指定してください。","validation.between.array":":attributeの項目は、:min個から:max個にしてください。","validation.between.file":":attributeには、:min KBから:max KBまでのサイズのファイルを指定してください。","validation.between.numeric":":attributeには、:minから、:maxまでの数字を指定してください。","validation.between.string":":attributeは、:min文字から:max文字にしてください。","validation.boolean":":attributeには、'true'か'false'を指定してください。","validation.confirmed":":attributeと:attribute確認が一致しません。","validation.current_password":"パスワードが違います。","validation.date":":attributeは、正しい日付ではありません。","validation.date_equals":":attributeは:dateに等しい日付でなければなりません。","validation.date_format":":attributeの形式は、':format'と合いません。","validation.declined":":attributeを拒否する必要があります。","validation.declined_if":":otherが:valueの場合、:attributeを無効にする必要があります。","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 キロバイト以上でなければなりません。","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 キロバイト以下でなければなりません。","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には、英字を 1 文字以上含める必要があります。","validation.password.mixed":":attributeには、大文字と小文字をそれぞれ1文字以上含める必要があります。","validation.password.numbers":":attributeには、数字を 1 文字以上含める必要があります。","validation.password.symbols":":attributeには、記号を 1 文字以上含める必要があります。","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, webp です。","validation.custom.qrcode.image":"サポートされている形式は jpeg, png, bmp, gif, svg, webp です。","validation.custom.uri.regex":":attributeは、有効な otpauth uri ではありません。","validation.custom.otp_type.in":":attributeはサポートされていません。","validation.custom.email.exists":"このメールアドレスを使用するアカウントは見つかりませんでした。","validation.custom.email.ComplyWithEmailRestrictionPolicy":"This email address does not comply with the registration policy","validation.custom.email.IsValidEmailList":"All emails must be valid and separated with a pipe","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_ro-43bf93e4.js b/public/build/assets/php_ro-43bf93e4.js deleted file mode 100644 index d0197cc7..00000000 --- a/public/build/assets/php_ro-43bf93e4.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! 2FAuth version 5.1.0 - 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.

- 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_ro-f956f1f2.js b/public/build/assets/php_ro-f956f1f2.js new file mode 100644 index 00000000..d2a62e73 --- /dev/null +++ b/public/build/assets/php_ro-f956f1f2.js @@ -0,0 +1,4 @@ +/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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.

+ 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.webauthn.options":"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_reset":"Password successfully reset","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.x_selected":":count 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.check_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","commons.no_result":"No result","commons.information":"Information","commons.permissions":"Permissions","commons.send":"Send","commons.optimize":"Optimize","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","errors.data_cannot_be_refreshed_from_server":"Data cannot be refreshed from server","errors.no_pwd_reset_for_this_user_type":"Password reset unavailable for this user","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.x_accounts":":count accounts","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 (English)","languages.fr":"Français (French)","languages.de":"Deutsch (German)","languages.es":"Español (Spanish)","languages.zh":"简体中文 (Chinese Simplified)","languages.ru":"Русский (Russian)","languages.bg":"Български (Bulgarian)","languages.ja":"日本語 (Japanese)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Hello","notifications.test_email_settings.subject":"2FAuth test email","notifications.test_email_settings.reason":"You are receiving this email because you requested a test email to validate the email settings of your 2FAuth instance.","notifications.test_email_settings.success":"Good news, it works :)","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.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.clear_search_on_copy.label":"Clear Search on copy","settings.forms.clear_search_on_copy.help":"Empty the Search box right after a code has been copied to the clipboard","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.default_group.label":"Default group","settings.forms.default_group.help":"The group to which the newly created accounts are associated","settings.forms.view_default_group_on_copy.label":"View default group on copy","settings.forms.view_default_group_on_copy.help":"Always return to the default group when an OTP is copied","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.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","titles.admin.appSetup":"App setup","titles.admin.users":"Users management","titles.admin.createUser":"Create user","titles.admin.manageUser":"Manage user","twofaccounts.service":"Service","twofaccounts.account":"Account","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.forms.spaces_are_ignored":"Unwanted spaces will be automatically removed","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.expected_format_for_direct_input":"Expected: A list of otpauth URI, one by line","twofaccounts.import.supported_migration_formats":"Supported migration formats","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Text file","twofaccounts.import.direct_input":"Direct input","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.email.ComplyWithEmailRestrictionPolicy":"This email address does not comply with the registration policy","validation.custom.email.IsValidEmailList":"All emails must be valid and separated with a pipe","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-e41b0033.js b/public/build/assets/php_ru-d62a7157.js similarity index 99% rename from public/build/assets/php_ru-e41b0033.js rename to public/build/assets/php_ru-d62a7157.js index 9a9b57b0..cc22a5b8 100644 --- a/public/build/assets/php_ru-e41b0033.js +++ b/public/build/assets/php_ru-d62a7157.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"Администратор","admin.app_setup":"Настройки приложения","admin.registrations":"Регистрации","admin.users":"Пользователи","admin.users_legend":"Управление пользователями, зарегистрированными на вашем экземпляре приложения или создание новых.","admin.admin_settings":"Административные настройки","admin.create_new_user":"Создать пользователя","admin.new_user":"Новый пользователь","admin.search_user_placeholder":"Имя пользователя, email...","admin.quick_filters_colons":"Быстрые фильтры:","admin.user_created":"пользователь успешно создан","admin.confirm.delete_user":"Вы уверены, что хотите удалить этого пользователя? Это действие невозможно отменить.","admin.confirm.request_password_reset":"Вы уверены, что хотите сбросить пароль этого пользователя?","admin.confirm.purge_password_reset_request":"Вы уверены, что хотите удалить заявку?","admin.confirm.delete_account":"Вы действительно хотите удалить этого пользователя?","admin.confirm.edit_own_account":"Это ваша собственная учётная запись. Вы уверены?","admin.confirm.change_admin_role":"Это будет иметь серьезные последствия для разрешений этого пользователя. Вы уверены?","admin.confirm.demote_own_account":"Вы больше не будете администратором. Вы уверены?","admin.logs":"Журналы","admin.administration_legend":"Следующие настройки являются глобальными и будут применены ко всем пользователям.","admin.user_management":"Управление пользователем","admin.oauth_provider":"Провайдер OAuth","admin.account_bound_to_x_via_oauth":"Эта учётная запись привязана к учётной записи :provider через OAuth","admin.last_seen_on_date":"Последнее посещение: :date","admin.registered_on_date":"Дата регистрации: :date","admin.updated_on_date":"Дата последнего обновления: :date","admin.access":"Доступ","admin.password_requested_on_t":"Запрос на сброс пароля уже существует для этого пользователя (отправлен :date), что означает, что пользователь еще не изменил свой пароль, но ссылка, которую он получил, всё ещё является действительной. Это может быть запрос как от самого пользователя, так и от администратора.","admin.password_request_expired":"Запрос на сброс пароля уже существует для этого пользователя, но срок его действия истёк, что означает, что пользователь не успел изменить свой пароль вовремя. Это мог быть запрос как от самого пользователя, так и от администратора.","admin.resend_email":"Отправить письмо еще раз","admin.resend_email_title":"Отправить письмо для сброса пароля пользователю ещё раз","admin.resend_email_help":"Используйте Отправить письмо ещё раз , чтобы отправить пользователю новое письмо для сброса пароля. Это не изменит текущий пароль, а предыдущий запрос для сброса пароля будет аннулирован.","admin.reset_password":"Сбросить пароль","admin.reset_password_help":"Используйте Сбросить пароля для принудительного сброса пароля (это установит временный пароль) перед отправкой пользователю письма для сброса пароля, чтобы он мог установить новый пароль. Предыдущий запрос для сброса пароля будет аннулирован.","admin.reset_password_title":"Сбросить пароль пользователя","admin.password_successfully_reset":"Пароль успешно сброшен","admin.user_has_x_active_pat":":count активных токен(ов)","admin.user_has_x_security_devices":":count устройств(о) безопасности (passkeys)","admin.revoke_all_pat_for_user":"Отозвать все токены пользователя","admin.revoke_all_devices_for_user":"Отменить все устройства безопасности пользователя","admin.danger_zone":"ОСТОРОЖНО!!!","admin.delete_this_user_legend":"Учётная запись пользователя будет удалена, а также все её данные 2FA.","admin.this_is_not_soft_delete":"Это не мягкое удаление, это действие невозможно отменить.","admin.delete_this_user":"Удалить этого пользователя","admin.user_role_updated":"Роль пользователя обновлена","admin.pats_succesfully_revoked":"Персональные токены доступа пользователя успешно отозваны","admin.security_devices_succesfully_revoked":"Устройства безопасности пользователя успешно отозваны","admin.variables":"Переменные","admin.cache_cleared":"Кэш очищен","admin.cache_optimized":"Кэш оптимизирован","admin.check_now":"Проверить","admin.view_on_github":"Посмотреть на GitHub","admin.x_is_available":"Новая версия :version доступна","admin.forms.use_encryption.label":"Защитить конфиденциальные данные","admin.forms.use_encryption.help":"Конфиденциальные данные, секреты 2FA и адреса email хранятся в зашифрованном виде в базе данных. Убедитесь, что у вас есть резервная копия значения APP_KEY вашего .env файла (или весь файл) так как оно служит в качестве ключа шифрования. Не существует способа расшифровки данных без этого ключа.","admin.forms.restrict_registration.label":"Ограничить регистрацию","admin.forms.restrict_registration.help":"Сделайте регистрацию доступной только для ограниченного диапазона адресов электронной почты. Оба правила могут использоваться одновременно. Это не влияет на регистрацию через SSO.","admin.forms.restrict_list.label":"Список фильтрации","admin.forms.restrict_list.help":'Регистрация будет доступна для адресов электронной почты из этого списка. Разделяйте адреса символом вертикальной черты ("|")',"admin.forms.restrict_rule.label":"Правила фильтрации","admin.forms.restrict_rule.help":"Регистрация будет доступна для адресов электронной почты, удовлетворяющих регулярному выражению","admin.forms.disable_registration.label":"Отключить регистрацию","admin.forms.disable_registration.help":"Запретить регистрацию новых пользователей. Если не переопределено (см. ниже), это также влияет на SSO, так что новые пользователи не смогут войти через SSO","admin.forms.enable_sso.label":"Включить Single Sign-On (SSO)","admin.forms.enable_sso.help":"Разрешить посетителям аутентифицироваться с использованием внешнего ID через схему Single Sign-On","admin.forms.keep_sso_registration_enabled.label":"Сохранить SSO регистрацию включенной","admin.forms.keep_sso_registration_enabled.help":"Разрешить новым пользователям входить в систему впервые через SSO, пока регистрация отключена","admin.forms.is_admin.label":"Администратор","admin.forms.is_admin.help":"Даёт пользователю права администратора. Администраторы имеют разрешения на управление всем приложением, то есть настройками и другими пользователями, но не могут генерировать пароли для 2FA, которыми они не владеют.","admin.forms.test_email.label":"Тест конфигурации электронной почты","admin.forms.test_email.help":"Отправить тестовое письмо для проверки конфигурации электронной почты вашего экземпляра 2FAuth. Важно иметь работающую конфигурацию, иначе пользователи не смогут запросить пароль для сброса.","admin.forms.test_email.email_will_be_send_to_x":'Письмо будет отправлено на адрес :email',"admin.forms.cache_management.label":"Управление кэшем","admin.forms.cache_management.help":"Иногда кэш должен быть очищен, например, после изменения переменных окружения или обновления приложения. Вы можете сделать это отсюда.","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.

+/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"Администратор","admin.app_setup":"Настройки приложения","admin.registrations":"Регистрации","admin.users":"Пользователи","admin.users_legend":"Управление пользователями, зарегистрированными на вашем экземпляре приложения или создание новых.","admin.admin_settings":"Административные настройки","admin.create_new_user":"Создать пользователя","admin.new_user":"Новый пользователь","admin.search_user_placeholder":"Имя пользователя, email...","admin.quick_filters_colons":"Быстрые фильтры:","admin.user_created":"пользователь успешно создан","admin.confirm.delete_user":"Вы уверены, что хотите удалить этого пользователя? Это действие невозможно отменить.","admin.confirm.request_password_reset":"Вы уверены, что хотите сбросить пароль этого пользователя?","admin.confirm.purge_password_reset_request":"Вы уверены, что хотите удалить заявку?","admin.confirm.delete_account":"Вы действительно хотите удалить этого пользователя?","admin.confirm.edit_own_account":"Это ваша собственная учётная запись. Вы уверены?","admin.confirm.change_admin_role":"Это будет иметь серьезные последствия для разрешений этого пользователя. Вы уверены?","admin.confirm.demote_own_account":"Вы больше не будете администратором. Вы уверены?","admin.logs":"Журналы","admin.administration_legend":"Следующие настройки являются глобальными и будут применены ко всем пользователям.","admin.user_management":"Управление пользователем","admin.oauth_provider":"Провайдер OAuth","admin.account_bound_to_x_via_oauth":"Эта учётная запись привязана к учётной записи :provider через OAuth","admin.last_seen_on_date":"Последнее посещение: :date","admin.registered_on_date":"Дата регистрации: :date","admin.updated_on_date":"Дата последнего обновления: :date","admin.access":"Доступ","admin.password_requested_on_t":"Запрос на сброс пароля уже существует для этого пользователя (отправлен :date), что означает, что пользователь еще не изменил свой пароль, но ссылка, которую он получил, всё ещё является действительной. Это может быть запрос как от самого пользователя, так и от администратора.","admin.password_request_expired":"Запрос на сброс пароля уже существует для этого пользователя, но срок его действия истёк, что означает, что пользователь не успел изменить свой пароль вовремя. Это мог быть запрос как от самого пользователя, так и от администратора.","admin.resend_email":"Отправить письмо еще раз","admin.resend_email_title":"Отправить письмо для сброса пароля пользователю ещё раз","admin.resend_email_help":"Используйте Отправить письмо ещё раз , чтобы отправить пользователю новое письмо для сброса пароля. Это не изменит текущий пароль, а предыдущий запрос для сброса пароля будет аннулирован.","admin.reset_password":"Сбросить пароль","admin.reset_password_help":"Используйте Сбросить пароля для принудительного сброса пароля (это установит временный пароль) перед отправкой пользователю письма для сброса пароля, чтобы он мог установить новый пароль. Предыдущий запрос для сброса пароля будет аннулирован.","admin.reset_password_title":"Сбросить пароль пользователя","admin.password_successfully_reset":"Пароль успешно сброшен","admin.user_has_x_active_pat":":count активных токен(ов)","admin.user_has_x_security_devices":":count устройств(о) безопасности (passkeys)","admin.revoke_all_pat_for_user":"Отозвать все токены пользователя","admin.revoke_all_devices_for_user":"Отменить все устройства безопасности пользователя","admin.danger_zone":"ОСТОРОЖНО!!!","admin.delete_this_user_legend":"Учётная запись пользователя будет удалена, а также все её данные 2FA.","admin.this_is_not_soft_delete":"Это не мягкое удаление, это действие невозможно отменить.","admin.delete_this_user":"Удалить этого пользователя","admin.user_role_updated":"Роль пользователя обновлена","admin.pats_succesfully_revoked":"Персональные токены доступа пользователя успешно отозваны","admin.security_devices_succesfully_revoked":"Устройства безопасности пользователя успешно отозваны","admin.variables":"Переменные","admin.cache_cleared":"Кэш очищен","admin.cache_optimized":"Кэш оптимизирован","admin.check_now":"Проверить","admin.view_on_github":"Посмотреть на GitHub","admin.x_is_available":"Новая версия :version доступна","admin.forms.use_encryption.label":"Защитить конфиденциальные данные","admin.forms.use_encryption.help":"Конфиденциальные данные, секреты 2FA и адреса email хранятся в зашифрованном виде в базе данных. Убедитесь, что у вас есть резервная копия значения APP_KEY вашего .env файла (или весь файл) так как оно служит в качестве ключа шифрования. Не существует способа расшифровки данных без этого ключа.","admin.forms.restrict_registration.label":"Ограничить регистрацию","admin.forms.restrict_registration.help":"Сделайте регистрацию доступной только для ограниченного диапазона адресов электронной почты. Оба правила могут использоваться одновременно. Это не влияет на регистрацию через SSO.","admin.forms.restrict_list.label":"Список фильтрации","admin.forms.restrict_list.help":'Регистрация будет доступна для адресов электронной почты из этого списка. Разделяйте адреса символом вертикальной черты ("|")',"admin.forms.restrict_rule.label":"Правила фильтрации","admin.forms.restrict_rule.help":"Регистрация будет доступна для адресов электронной почты, удовлетворяющих регулярному выражению","admin.forms.disable_registration.label":"Отключить регистрацию","admin.forms.disable_registration.help":"Запретить регистрацию новых пользователей. Если не переопределено (см. ниже), это также влияет на SSO, так что новые пользователи не смогут войти через SSO","admin.forms.enable_sso.label":"Включить Single Sign-On (SSO)","admin.forms.enable_sso.help":"Разрешить посетителям аутентифицироваться с использованием внешнего ID через схему Single Sign-On","admin.forms.keep_sso_registration_enabled.label":"Сохранить SSO регистрацию включенной","admin.forms.keep_sso_registration_enabled.help":"Разрешить новым пользователям входить в систему впервые через SSO, пока регистрация отключена","admin.forms.is_admin.label":"Администратор","admin.forms.is_admin.help":"Даёт пользователю права администратора. Администраторы имеют разрешения на управление всем приложением, то есть настройками и другими пользователями, но не могут генерировать пароли для 2FA, которыми они не владеют.","admin.forms.test_email.label":"Тест конфигурации электронной почты","admin.forms.test_email.help":"Отправить тестовое письмо для проверки конфигурации электронной почты вашего экземпляра 2FAuth. Важно иметь работающую конфигурацию, иначе пользователи не смогут запросить пароль для сброса.","admin.forms.test_email.email_will_be_send_to_x":'Письмо будет отправлено на адрес :email',"admin.forms.cache_management.label":"Управление кэшем","admin.forms.cache_management.help":"Иногда кэш должен быть очищен, например, после изменения переменных окружения или обновления приложения. Вы можете сделать это отсюда.","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.webauthn.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_reset":"Пароль успешно сброшен","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.x_selected":"Выбрано :count","commons.name":"Имя","commons.manage":"Управление","commons.done":"Готово","commons.new":"Новый","commons.back":"Назад","commons.move":"Переместить","commons.export":"Экспорт","commons.all":"Все","commons.check_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":"ничего","commons.no_result":"Нет результатов","commons.information":"Информация","commons.permissions":"Разрешения","commons.send":"Отправить","commons.optimize":"Оптимизировать","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":"Ваше устройство не поддерживает 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","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":"Учётная запись управляется внешним провайдером","errors.data_cannot_be_refreshed_from_server":"Не удалось обновить данные с сервера","errors.no_pwd_reset_for_this_user_type":"Для этого пользователя сброс пароля недоступен","groups.groups":"Группы","groups.create_group":"Создать новую группу","groups.show_group_selector":"Показать выбор групп","groups.hide_group_selector":"Скрыть выбор группы","groups.select_accounts_to_show":"Выберите группу учётных записей для отображения","groups.x_accounts":"учётных записей: :count","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":"Български (Болгарский)","languages.ja":"日本語 (Японский)","languages.hi":"हिंदी (Хинди)","notifications.hello":"Привет","notifications.test_email_settings.subject":"Тестовое письмо 2FAuth","notifications.test_email_settings.reason":"Вы получили это письмо, потому что вы запросили тестовое письмо, чтобы проверить настройки электронной почты вашего экземпляра 2FAuth.","notifications.test_email_settings.success":"Хорошие новости! Всё работает! :-)","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.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.clear_search_on_copy.label":"Очистить поиск при копировании","settings.forms.clear_search_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.default_group.label":"Группа по умолчанию","settings.forms.default_group.help":"Группа, к которой будут привязаны новые учётные данные","settings.forms.view_default_group_on_copy.label":"Показывать группу по умолчанию при копировании","settings.forms.view_default_group_on_copy.help":"Всегда возвращаться в группу по умолчанию когда код OTP скопирован","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.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":"О программе","titles.admin.appSetup":"Настройки приложения","titles.admin.users":"Управление пользователями","titles.admin.createUser":"Создать пользователя","titles.admin.manageUser":"Управление пользователем","twofaccounts.service":"Сервис","twofaccounts.account":"Учётная запись","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.forms.spaces_are_ignored":"Нежелательные пробелы будут автоматически удалены","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.expected_format_for_direct_input":"Ожидается: список OTPAuth URI, по одной в строке","twofaccounts.import.supported_migration_formats":"Поддерживаемые форматы миграции","twofaccounts.import.qr_code":"QR-код","twofaccounts.import.text_file":"Текстовый файл","twofaccounts.import.direct_input":"Быстрый ввод","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.email.ComplyWithEmailRestrictionPolicy":"Этот адрес электронной почты не соответствует условиям регистрации","validation.custom.email.IsValidEmailList":"Все адреса электронной почты должны быть действительными и разделены вертикальной чертой","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_si-85c4e7b8.js b/public/build/assets/php_si-85c4e7b8.js deleted file mode 100644 index 74dc9299..00000000 --- a/public/build/assets/php_si-85c4e7b8.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! 2FAuth version 5.1.0 - 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.

- 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_si-a2441031.js b/public/build/assets/php_si-a2441031.js new file mode 100644 index 00000000..789245cc --- /dev/null +++ b/public/build/assets/php_si-a2441031.js @@ -0,0 +1,4 @@ +/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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.

+ 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.webauthn.options":"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":"නව මුරපදය","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_reset":"Password successfully reset","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.x_selected":":count selected","commons.name":"නම","commons.manage":"Manage","commons.done":"Done","commons.new":"නව","commons.back":"ආපසු","commons.move":"Move","commons.export":"Export","commons.all":"සියල්ල","commons.check_all":"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","commons.no_result":"No result","commons.information":"Information","commons.permissions":"Permissions","commons.send":"Send","commons.optimize":"Optimize","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","errors.data_cannot_be_refreshed_from_server":"Data cannot be refreshed from server","errors.no_pwd_reset_for_this_user_type":"Password reset unavailable for this user","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.x_accounts":":count accounts","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":"English (English)","languages.fr":"Français (French)","languages.de":"Deutsch (German)","languages.es":"Español (Spanish)","languages.zh":"简体中文 (Chinese Simplified)","languages.ru":"Русский (Russian)","languages.bg":"Български (Bulgarian)","languages.ja":"日本語 (Japanese)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Hello","notifications.test_email_settings.subject":"2FAuth test email","notifications.test_email_settings.reason":"You are receiving this email because you requested a test email to validate the email settings of your 2FAuth instance.","notifications.test_email_settings.success":"Good news, it works :)","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.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.clear_search_on_copy.label":"Clear Search on copy","settings.forms.clear_search_on_copy.help":"Empty the Search box right after a code has been copied to the clipboard","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.default_group.label":"Default group","settings.forms.default_group.help":"The group to which the newly created accounts are associated","settings.forms.view_default_group_on_copy.label":"View default group on copy","settings.forms.view_default_group_on_copy.help":"Always return to the default group when an OTP is copied","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.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","titles.admin.appSetup":"App setup","titles.admin.users":"Users management","titles.admin.createUser":"Create user","titles.admin.manageUser":"Manage user","twofaccounts.service":"සේවාව","twofaccounts.account":"ගිණුම","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.forms.spaces_are_ignored":"Unwanted spaces will be automatically removed","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.expected_format_for_direct_input":"Expected: A list of otpauth URI, one by line","twofaccounts.import.supported_migration_formats":"Supported migration formats","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Text file","twofaccounts.import.direct_input":"Direct input","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.email.ComplyWithEmailRestrictionPolicy":"This email address does not comply with the registration policy","validation.custom.email.IsValidEmailList":"All emails must be valid and separated with a pipe","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_tr-cbc04db3.js b/public/build/assets/php_tr-cbc04db3.js new file mode 100644 index 00000000..3696fef9 --- /dev/null +++ b/public/build/assets/php_tr-cbc04db3.js @@ -0,0 +1,4 @@ +/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","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.

+ 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.webauthn.options":"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_reset":"Password successfully reset","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.x_selected":":count 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.check_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","commons.no_result":"No result","commons.information":"Information","commons.permissions":"Permissions","commons.send":"Send","commons.optimize":"Optimize","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","errors.data_cannot_be_refreshed_from_server":"Data cannot be refreshed from server","errors.no_pwd_reset_for_this_user_type":"Password reset unavailable for this user","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.x_accounts":":count accounts","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":"Tarayıcı tercihleri","languages.en":"English (English)","languages.fr":"Français (French)","languages.de":"Deutsch (German)","languages.es":"Español (Spanish)","languages.zh":"简体中文 (Chinese Simplified)","languages.ru":"Русский (Russian)","languages.bg":"Български (Bulgarian)","languages.ja":"日本語 (Japanese)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Hello","notifications.test_email_settings.subject":"2FAuth test email","notifications.test_email_settings.reason":"You are receiving this email because you requested a test email to validate the email settings of your 2FAuth instance.","notifications.test_email_settings.success":"Good news, it works :)","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Şifreniz sıfırlandı!","passwords.sent":"E-posta adresinize şifre sıfırlama bağlantısı gönderdik!","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.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.clear_search_on_copy.label":"Clear Search on copy","settings.forms.clear_search_on_copy.help":"Empty the Search box right after a code has been copied to the clipboard","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.default_group.label":"Default group","settings.forms.default_group.help":"The group to which the newly created accounts are associated","settings.forms.view_default_group_on_copy.label":"View default group on copy","settings.forms.view_default_group_on_copy.help":"Always return to the default group when an OTP is copied","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.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","titles.admin.appSetup":"App setup","titles.admin.users":"Users management","titles.admin.createUser":"Create user","titles.admin.manageUser":"Manage user","twofaccounts.service":"Service","twofaccounts.account":"Account","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.forms.spaces_are_ignored":"Unwanted spaces will be automatically removed","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.expected_format_for_direct_input":"Expected: A list of otpauth URI, one by line","twofaccounts.import.supported_migration_formats":"Supported migration formats","twofaccounts.import.qr_code":"QR Code","twofaccounts.import.text_file":"Text file","twofaccounts.import.direct_input":"Direct input","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.email.ComplyWithEmailRestrictionPolicy":"This email address does not comply with the registration policy","validation.custom.email.IsValidEmailList":"All emails must be valid and separated with a pipe","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-7cc6d490.js b/public/build/assets/php_zh-9f8fe759.js similarity index 88% rename from public/build/assets/php_zh-7cc6d490.js rename to public/build/assets/php_zh-9f8fe759.js index 3315c32a..53ade003 100644 --- a/public/build/assets/php_zh-7cc6d490.js +++ b/public/build/assets/php_zh-9f8fe759.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"管理员","admin.app_setup":"应用设置","admin.registrations":"注册","admin.users":"用户","admin.users_legend":"管理在您的实例上注册的用户或创建新的用户。","admin.admin_settings":"管理员设置","admin.create_new_user":"创建新用户","admin.new_user":"新用户","admin.search_user_placeholder":"用户名,电子邮件...","admin.quick_filters_colons":"快速筛选:","admin.user_created":"用户创建成功","admin.confirm.delete_user":"您确定要删除这个用户吗?没有回头路。","admin.confirm.request_password_reset":"您确定要重置此用户的密码吗?","admin.confirm.purge_password_reset_request":"您确定要清除请求吗?","admin.confirm.delete_account":"您确定要删除该用户吗?","admin.confirm.edit_own_account":"这是您自己的帐户。您确定吗?","admin.confirm.change_admin_role":"这将会对此用户的权限产生重大影响。您确定吗?","admin.confirm.demote_own_account":"您将不再是管理员。真的确定吗?","admin.logs":"日志","admin.administration_legend":"以下设置是全局设置,适用于所有用户。","admin.user_management":"用户管理","admin.oauth_provider":"OAuth 提供者","admin.account_bound_to_x_via_oauth":"此帐户通过 OAuth 绑定到 :provider 帐户","admin.last_seen_on_date":"最后活跃::date","admin.registered_on_date":"注册于 :date","admin.updated_on_date":"更新于 :date","admin.access":"访问","admin.password_requested_on_t":"存在此用户的密码重置请求 (在 :datetime 发出的请求) 意味着该用户尚未更改其密码,但他收到的链接仍然有效。 此请求可能来自用户本人或管理员。","admin.password_request_expired":"存在此用户的密码重置请求但已过期,意味着用户并未及时更改密码。此请求可能来自用户本人或管理员。","admin.resend_email":"重新发送电子邮件","admin.resend_email_title":"重新发送密码重置邮件给用户","admin.resend_email_help":"使用 重新发送电子邮件 向用户发送新密码重置邮件,以便他可以设置新密码。 这将保留当前密码,且之前的请求都将被撤销。","admin.reset_password":"重置密码","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.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.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"有时缓存需要清除,例如在更改环境变量或更新后。您可以在此处这样做。","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 账户的安全性。

+/*! 2FAuth version 5.1.1 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"管理员","admin.app_setup":"应用设置","admin.registrations":"注册","admin.users":"用户","admin.users_legend":"管理在您的实例上注册的用户或创建新的用户。","admin.admin_settings":"管理员设置","admin.create_new_user":"创建新用户","admin.new_user":"新用户","admin.search_user_placeholder":"用户名,电子邮件...","admin.quick_filters_colons":"快速筛选:","admin.user_created":"用户创建成功","admin.confirm.delete_user":"您确定要删除这个用户吗?没有回头路。","admin.confirm.request_password_reset":"您确定要重置此用户的密码吗?","admin.confirm.purge_password_reset_request":"您确定要清除请求吗?","admin.confirm.delete_account":"您确定要删除该用户吗?","admin.confirm.edit_own_account":"这是您自己的帐户。您确定吗?","admin.confirm.change_admin_role":"这将会对此用户的权限产生重大影响。您确定吗?","admin.confirm.demote_own_account":"您将不再是管理员。真的确定吗?","admin.logs":"日志","admin.administration_legend":"以下设置是全局设置,适用于所有用户。","admin.user_management":"用户管理","admin.oauth_provider":"OAuth 提供者","admin.account_bound_to_x_via_oauth":"此帐户通过 OAuth 绑定到 :provider 帐户","admin.last_seen_on_date":"最后活跃::date","admin.registered_on_date":"注册于 :date","admin.updated_on_date":"更新于 :date","admin.access":"访问","admin.password_requested_on_t":"存在此用户的密码重置请求 (在 :datetime 发出的请求) 意味着该用户尚未更改其密码,但他收到的链接仍然有效。 此请求可能来自用户本人或管理员。","admin.password_request_expired":"存在此用户的密码重置请求但已过期,意味着用户并未及时更改密码。此请求可能来自用户本人或管理员。","admin.resend_email":"重新发送电子邮件","admin.resend_email_title":"重新发送密码重置邮件给用户","admin.resend_email_help":"使用 重新发送电子邮件 向用户发送新密码重置邮件,以便他可以设置新密码。 这将保留当前密码,且之前的请求都将被撤销。","admin.reset_password":"重置密码","admin.reset_password_help":"使用 重置密码 来强制重置密码 (这将会以临时密码覆盖用户当前密码),以便用户可以设置新密码。之前的请求都将被撤销。","admin.reset_password_title":"重置用户的密码","admin.password_successfully_reset":"密码重置成功","admin.user_has_x_active_pat":":count 个有效的令牌","admin.user_has_x_security_devices":":count 个安全设备 (安全钥匙)","admin.revoke_all_pat_for_user":"吊销用户的所有令牌","admin.revoke_all_devices_for_user":"吊销用户的所有安全设备","admin.danger_zone":"危险选项","admin.delete_this_user_legend":"用户帐户及其所有2FA 数据将被删除。","admin.this_is_not_soft_delete":"这不是软删除,没有退路。","admin.delete_this_user":"删除这个用户","admin.user_role_updated":"用户角色已更新","admin.pats_succesfully_revoked":"用户的令牌已成功吊销。","admin.security_devices_succesfully_revoked":"用户的安全设备已成功吊销。","admin.variables":"变量","admin.cache_cleared":"已清除缓存","admin.cache_optimized":"已优化缓存","admin.check_now":"立即检查","admin.view_on_github":"在 GitHub 上查看","admin.x_is_available":"新版本 :version 可用!","admin.forms.use_encryption.label":"保护敏感数据","admin.forms.use_encryption.help":"敏感数据、2FA 秘钥和电子邮件会被加密存储在数据库中。请务必备份您在 .env 中设置的 APP_KEY 的值(或备份整个文件)。没有此密钥将无法解码已加密的数据。","admin.forms.restrict_registration.label":"限制注册","admin.forms.restrict_registration.help":"只允许有限范围的电子邮件地址进行注册。这两条规则都可以同时使用。这对通过SSO进行注册没有影响。","admin.forms.restrict_list.label":"过滤列表","admin.forms.restrict_list.help":'此列表中的电子邮件将被允许注册。用管道分隔("|")',"admin.forms.restrict_rule.label":"过滤规则","admin.forms.restrict_rule.help":"与此正则表达式匹配的电子邮件将被允许注册","admin.forms.disable_registration.label":"禁用注册","admin.forms.disable_registration.help":"防止新用户注册。除非被覆盖(见下文),否则这也会影响到SSO,所以新用户将无法通过 SSO 登录","admin.forms.enable_sso.label":"启用单点登录 (SSO)","admin.forms.enable_sso.help":"允许访问者通过单点登录方案使用外部ID进行身份验证","admin.forms.keep_sso_registration_enabled.label":"保持启用 SSO 注册","admin.forms.keep_sso_registration_enabled.help":"在注册已禁用时允许新用户通过 SSO 登录","admin.forms.is_admin.label":"管理员","admin.forms.is_admin.help":"授予用户管理员权限。管理员有权管理整个应用,如: 设置和其他用户,但不能生成不属于他们的2FA 密码。","admin.forms.test_email.label":"电子邮件配置测试","admin.forms.test_email.help":"发送测试邮件来控制您的实例的电子邮件配置。 有一个正常的工作配置是很必要的,否则用户将无法请求重置密码。","admin.forms.test_email.email_will_be_send_to_x":'电子邮件将被发送到 :email',"admin.forms.cache_management.label":"缓存管理","admin.forms.cache_management.help":"有时缓存需要清除,例如在更改环境变量或更新后。您可以在此处这样做。","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.webauthn.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":"新密码","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_reset":"密码重置成功。","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.x_selected":"已选择:count个","commons.name":"名称","commons.manage":"管理","commons.done":"完成","commons.new":"新建","commons.back":"返回","commons.move":"移动","commons.export":"导出","commons.all":"全部","commons.check_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":"无","commons.no_result":"无结果","commons.information":"信息","commons.permissions":"权限","commons.send":"发送","commons.optimize":"优化","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":"由外部提供商管理的帐户","errors.data_cannot_be_refreshed_from_server":"无法从服务器刷新数据","errors.no_pwd_reset_for_this_user_type":"此用户无法重置密码","groups.groups":"组","groups.create_group":"创建新组","groups.show_group_selector":"显示分组选择器","groups.hide_group_selector":"隐藏分组选择器","groups.select_accounts_to_show":"选择要显示的帐户分组","groups.x_accounts":":count个帐户","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":"Български (保加利亚语)","languages.ja":"日本語 (日本人)","languages.hi":"हिंदी (印地语)","notifications.hello":"您好","notifications.test_email_settings.subject":"2FAuth 测试电子邮件","notifications.test_email_settings.reason":"您收到这封邮件是因为您请求了一封测试电子邮件来验证您的2FAuth 实例的电子邮件设置。","notifications.test_email_settings.success":"好消息是,它正常工作:)","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.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.clear_search_on_copy.label":"复制后清空搜索框","settings.forms.clear_search_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.default_group.label":"默认分组","settings.forms.default_group.help":"新创建的账户所关联的分组","settings.forms.view_default_group_on_copy.label":"在复制后查看默认组","settings.forms.view_default_group_on_copy.help":"复制OTP后总是返回到默认组","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.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":"关于","titles.admin.appSetup":"应用设置","titles.admin.users":"用户管理","titles.admin.createUser":"创建用户","titles.admin.manageUser":"管理用户","twofaccounts.service":"服务","twofaccounts.account":"账户","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.forms.spaces_are_ignored":"不需要的空格将被自动删除","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.expected_format_for_direct_input":"应为:一个 otpauth URI 的列表,一行一个","twofaccounts.import.supported_migration_formats":"支持的迁移格式","twofaccounts.import.qr_code":"二维码","twofaccounts.import.text_file":"文本文件","twofaccounts.import.direct_input":"直接输入","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.email.ComplyWithEmailRestrictionPolicy":"此电子邮件地址不符合注册策略","validation.custom.email.IsValidEmailList":"所有电子邮件必须是有效的并用管道符隔开","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/webauthnService-1f4ca5dc.js b/public/build/assets/webauthnService-43ef310f.js similarity index 98% rename from public/build/assets/webauthnService-1f4ca5dc.js rename to public/build/assets/webauthnService-43ef310f.js index 1c898d00..1a5cb96a 100644 --- a/public/build/assets/webauthnService-1f4ca5dc.js +++ b/public/build/assets/webauthnService-43ef310f.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{a4 as f}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - 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{a4 as f}from"./app-2d89b28f.js";/*! 2FAuth version 5.1.1 - 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 8337eff8..9c49d90f 100644 --- a/public/build/manifest.json +++ b/public/build/manifest.json @@ -3,66 +3,66 @@ "file": "assets/Spinner-2c227a70.css", "src": "Spinner.css" }, - "_AdminTabs-94ad3971.js": { - "file": "assets/AdminTabs-94ad3971.js", + "_AdminTabs-7af3858b.js": { + "file": "assets/AdminTabs-7af3858b.js", "imports": [ "resources/js/app.js" ] }, - "_CopyButton-643e0686.js": { - "file": "assets/CopyButton-643e0686.js", + "_CopyButton-7a25d704.js": { + "file": "assets/CopyButton-7a25d704.js", "imports": [ "resources/js/app.js" ] }, - "_Form-0a788c90.js": { - "file": "assets/Form-0a788c90.js", + "_Form-5283f7b6.js": { + "file": "assets/Form-5283f7b6.js", "imports": [ "resources/js/app.js" ] }, - "_OtpDisplay-f582bb88.js": { - "file": "assets/OtpDisplay-f582bb88.js", + "_OtpDisplay-2108b98d.js": { + "file": "assets/OtpDisplay-2108b98d.js", "imports": [ "resources/js/app.js", - "_Spinner-bfa27d3a.js" + "_Spinner-aea2b665.js" ] }, - "_QrContentDisplay-ea3c63ab.js": { - "file": "assets/QrContentDisplay-ea3c63ab.js", + "_QrContentDisplay-251465e5.js": { + "file": "assets/QrContentDisplay-251465e5.js", "imports": [ "resources/js/app.js" ] }, - "_SearchBox-62743462.js": { - "file": "assets/SearchBox-62743462.js", + "_SearchBox-cb8625ff.js": { + "file": "assets/SearchBox-cb8625ff.js", "imports": [ "resources/js/app.js" ] }, - "_SettingTabs-0b59e581.js": { - "file": "assets/SettingTabs-0b59e581.js", + "_SettingTabs-708dbaa6.js": { + "file": "assets/SettingTabs-708dbaa6.js", "imports": [ "resources/js/app.js" ] }, - "_Spinner-bfa27d3a.js": { + "_Spinner-aea2b665.js": { "css": [ "assets/Spinner-2c227a70.css" ], - "file": "assets/Spinner-bfa27d3a.js", + "file": "assets/Spinner-aea2b665.js", "imports": [ "resources/js/app.js" ] }, - "_bus-ab2b6d74.js": { - "file": "assets/bus-ab2b6d74.js", + "_bus-7802a020.js": { + "file": "assets/bus-7802a020.js", "imports": [ "resources/js/app.js" ] }, - "_webauthnService-1f4ca5dc.js": { - "file": "assets/webauthnService-1f4ca5dc.js", + "_webauthnService-43ef310f.js": { + "file": "assets/webauthnService-43ef310f.js", "imports": [ "resources/js/app.js" ] @@ -117,14 +117,15 @@ "resources/lang/php_ro.json", "resources/lang/php_ru.json", "resources/lang/php_si.json", + "resources/lang/php_tr.json", "resources/lang/php_zh.json" ], - "file": "assets/app-60af1d1a.js", + "file": "assets/app-2d89b28f.js", "isEntry": true, "src": "resources/js/app.js" }, "resources/js/views/About.vue": { - "file": "assets/About-21528213.js", + "file": "assets/About-51085f4f.js", "imports": [ "resources/js/app.js" ], @@ -132,7 +133,7 @@ "src": "resources/js/views/About.vue" }, "resources/js/views/Error.vue": { - "file": "assets/Error-0e5b1508.js", + "file": "assets/Error-5d72db66.js", "imports": [ "resources/js/app.js" ], @@ -140,290 +141,295 @@ "src": "resources/js/views/Error.vue" }, "resources/js/views/Start.vue": { - "file": "assets/Start-616d9df7.js", + "file": "assets/Start-864a4d60.js", "imports": [ "resources/js/app.js", - "_Form-0a788c90.js", - "_bus-ab2b6d74.js" + "_Form-5283f7b6.js", + "_bus-7802a020.js" ], "isDynamicEntry": true, "src": "resources/js/views/Start.vue" }, "resources/js/views/admin/AppSetup.vue": { - "file": "assets/AppSetup-45bab529.js", + "file": "assets/AppSetup-b7dcb9f9.js", "imports": [ - "_AdminTabs-94ad3971.js", + "_AdminTabs-7af3858b.js", "resources/js/app.js", - "_CopyButton-643e0686.js" + "_CopyButton-7a25d704.js" ], "isDynamicEntry": true, "src": "resources/js/views/admin/AppSetup.vue" }, "resources/js/views/admin/Users.vue": { - "file": "assets/Users-e4ea6e38.js", + "file": "assets/Users-422cc043.js", "imports": [ - "_AdminTabs-94ad3971.js", + "_AdminTabs-7af3858b.js", "resources/js/app.js", - "_Spinner-bfa27d3a.js", - "_SearchBox-62743462.js" + "_Spinner-aea2b665.js", + "_SearchBox-cb8625ff.js" ], "isDynamicEntry": true, "src": "resources/js/views/admin/Users.vue" }, "resources/js/views/admin/users/Create.vue": { - "file": "assets/Create-88a5e9ed.js", + "file": "assets/Create-3febca8f.js", "imports": [ "resources/js/app.js", - "_Form-0a788c90.js" + "_Form-5283f7b6.js" ], "isDynamicEntry": true, "src": "resources/js/views/admin/users/Create.vue" }, "resources/js/views/admin/users/Manage.vue": { - "file": "assets/Manage-002185c7.js", + "file": "assets/Manage-83b1727c.js", "imports": [ - "_CopyButton-643e0686.js", + "_CopyButton-7a25d704.js", "resources/js/app.js" ], "isDynamicEntry": true, "src": "resources/js/views/admin/users/Manage.vue" }, "resources/js/views/auth/Login.vue": { - "file": "assets/Login-0aa69f71.js", + "file": "assets/Login-69c0645b.js", "imports": [ "resources/js/app.js", - "_Form-0a788c90.js", - "_webauthnService-1f4ca5dc.js" + "_Form-5283f7b6.js", + "_webauthnService-43ef310f.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/Login.vue" }, "resources/js/views/auth/Register.vue": { - "file": "assets/Register-9acf7d81.js", + "file": "assets/Register-ac041825.js", "imports": [ "resources/js/app.js", - "_Form-0a788c90.js", - "_webauthnService-1f4ca5dc.js" + "_Form-5283f7b6.js", + "_webauthnService-43ef310f.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/Register.vue" }, "resources/js/views/auth/RequestReset.vue": { - "file": "assets/RequestReset-9775b58f.js", + "file": "assets/RequestReset-a2b01eb6.js", "imports": [ "resources/js/app.js", - "_Form-0a788c90.js" + "_Form-5283f7b6.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/RequestReset.vue" }, "resources/js/views/auth/password/Reset.vue": { - "file": "assets/Reset-4749a3f6.js", + "file": "assets/Reset-78a79c23.js", "imports": [ "resources/js/app.js", - "_Form-0a788c90.js" + "_Form-5283f7b6.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/password/Reset.vue" }, "resources/js/views/auth/webauthn/Recover.vue": { - "file": "assets/Recover-d16991a5.js", + "file": "assets/Recover-68154a1c.js", "imports": [ "resources/js/app.js", - "_Form-0a788c90.js" + "_Form-5283f7b6.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/webauthn/Recover.vue" }, "resources/js/views/groups/CreateUpdate.vue": { - "file": "assets/CreateUpdate-db65145e.js", + "file": "assets/CreateUpdate-643179e3.js", "imports": [ "resources/js/app.js", - "_Form-0a788c90.js", - "_bus-ab2b6d74.js" + "_Form-5283f7b6.js", + "_bus-7802a020.js" ], "isDynamicEntry": true, "src": "resources/js/views/groups/CreateUpdate.vue" }, "resources/js/views/groups/Groups.vue": { - "file": "assets/Groups-e3693e0e.js", + "file": "assets/Groups-1660394b.js", "imports": [ "resources/js/app.js", - "_bus-ab2b6d74.js" + "_bus-7802a020.js" ], "isDynamicEntry": true, "src": "resources/js/views/groups/Groups.vue" }, "resources/js/views/settings/Account.vue": { - "file": "assets/Account-a7d249ba.js", + "file": "assets/Account-9176478b.js", "imports": [ "resources/js/app.js", - "_Form-0a788c90.js", - "_SettingTabs-0b59e581.js" + "_Form-5283f7b6.js", + "_SettingTabs-708dbaa6.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/Account.vue" }, "resources/js/views/settings/Credentials/Edit.vue": { - "file": "assets/Edit-e1414c8a.js", + "file": "assets/Edit-307bbb3b.js", "imports": [ "resources/js/app.js", - "_Form-0a788c90.js" + "_Form-5283f7b6.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/Credentials/Edit.vue" }, "resources/js/views/settings/OAuth.vue": { - "file": "assets/OAuth-23b533cf.js", + "file": "assets/OAuth-c85ae7fb.js", "imports": [ "resources/js/app.js", - "_Form-0a788c90.js", - "_SettingTabs-0b59e581.js", - "_Spinner-bfa27d3a.js" + "_Form-5283f7b6.js", + "_SettingTabs-708dbaa6.js", + "_Spinner-aea2b665.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/OAuth.vue" }, "resources/js/views/settings/Options.vue": { - "file": "assets/Options-599918f8.js", + "file": "assets/Options-86d2ee8a.js", "imports": [ - "_SettingTabs-0b59e581.js", + "_SettingTabs-708dbaa6.js", "resources/js/app.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/Options.vue" }, "resources/js/views/settings/WebAuthn.vue": { - "file": "assets/WebAuthn-3d2e0d09.js", + "file": "assets/WebAuthn-ee78af22.js", "imports": [ "resources/js/app.js", - "_SettingTabs-0b59e581.js", - "_webauthnService-1f4ca5dc.js", - "_Spinner-bfa27d3a.js" + "_SettingTabs-708dbaa6.js", + "_webauthnService-43ef310f.js", + "_Spinner-aea2b665.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/WebAuthn.vue" }, "resources/js/views/twofaccounts/Accounts.vue": { - "file": "assets/Accounts-7bc9693f.js", + "file": "assets/Accounts-f711dee9.js", "imports": [ "resources/js/app.js", - "_OtpDisplay-f582bb88.js", - "_SearchBox-62743462.js", - "_bus-ab2b6d74.js", - "_Spinner-bfa27d3a.js" + "_OtpDisplay-2108b98d.js", + "_SearchBox-cb8625ff.js", + "_bus-7802a020.js", + "_Spinner-aea2b665.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/Accounts.vue" }, "resources/js/views/twofaccounts/Capture.vue": { - "file": "assets/Capture-1f19a38b.js", + "file": "assets/Capture-109ae9bf.js", "imports": [ "resources/js/app.js", - "_Form-0a788c90.js", - "_Spinner-bfa27d3a.js", - "_QrContentDisplay-ea3c63ab.js", - "_bus-ab2b6d74.js" + "_Form-5283f7b6.js", + "_Spinner-aea2b665.js", + "_QrContentDisplay-251465e5.js", + "_bus-7802a020.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/Capture.vue" }, "resources/js/views/twofaccounts/CreateUpdate.vue": { - "file": "assets/CreateUpdate-016104d4.js", + "file": "assets/CreateUpdate-f925f523.js", "imports": [ "resources/js/app.js", - "_Form-0a788c90.js", - "_OtpDisplay-f582bb88.js", - "_QrContentDisplay-ea3c63ab.js", - "_bus-ab2b6d74.js", - "_Spinner-bfa27d3a.js" + "_Form-5283f7b6.js", + "_OtpDisplay-2108b98d.js", + "_QrContentDisplay-251465e5.js", + "_bus-7802a020.js", + "_Spinner-aea2b665.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/CreateUpdate.vue" }, "resources/js/views/twofaccounts/Import.vue": { - "file": "assets/Import-058e3143.js", + "file": "assets/Import-8782f7b5.js", "imports": [ "resources/js/app.js", - "_Form-0a788c90.js", - "_OtpDisplay-f582bb88.js", - "_Spinner-bfa27d3a.js", - "_bus-ab2b6d74.js" + "_Form-5283f7b6.js", + "_OtpDisplay-2108b98d.js", + "_Spinner-aea2b665.js", + "_bus-7802a020.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/Import.vue" }, "resources/js/views/twofaccounts/QRcode.vue": { - "file": "assets/QRcode-62f040ad.js", + "file": "assets/QRcode-8e9b023f.js", "imports": [ "resources/js/app.js", - "_Spinner-bfa27d3a.js" + "_Spinner-aea2b665.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/QRcode.vue" }, "resources/lang/php_bg.json": { - "file": "assets/php_bg-79a9a6b2.js", + "file": "assets/php_bg-8c7ecc9c.js", "isDynamicEntry": true, "src": "resources/lang/php_bg.json" }, "resources/lang/php_de.json": { - "file": "assets/php_de-edabb7b3.js", + "file": "assets/php_de-51559ca9.js", "isDynamicEntry": true, "src": "resources/lang/php_de.json" }, "resources/lang/php_en.json": { - "file": "assets/php_en-65348e5a.js", + "file": "assets/php_en-74a0f48e.js", "isDynamicEntry": true, "src": "resources/lang/php_en.json" }, "resources/lang/php_es.json": { - "file": "assets/php_es-8bc38a41.js", + "file": "assets/php_es-34404112.js", "isDynamicEntry": true, "src": "resources/lang/php_es.json" }, "resources/lang/php_fr.json": { - "file": "assets/php_fr-4e3a581d.js", + "file": "assets/php_fr-0fb6d7f6.js", "isDynamicEntry": true, "src": "resources/lang/php_fr.json" }, "resources/lang/php_hi.json": { - "file": "assets/php_hi-631b366e.js", + "file": "assets/php_hi-a4de9620.js", "isDynamicEntry": true, "src": "resources/lang/php_hi.json" }, "resources/lang/php_id.json": { - "file": "assets/php_id-8aeb6da7.js", + "file": "assets/php_id-48a5ef59.js", "isDynamicEntry": true, "src": "resources/lang/php_id.json" }, "resources/lang/php_it.json": { - "file": "assets/php_it-b90e26fa.js", + "file": "assets/php_it-b9c12090.js", "isDynamicEntry": true, "src": "resources/lang/php_it.json" }, "resources/lang/php_ja.json": { - "file": "assets/php_ja-bbda5fec.js", + "file": "assets/php_ja-b8afbdc1.js", "isDynamicEntry": true, "src": "resources/lang/php_ja.json" }, "resources/lang/php_ro.json": { - "file": "assets/php_ro-43bf93e4.js", + "file": "assets/php_ro-f956f1f2.js", "isDynamicEntry": true, "src": "resources/lang/php_ro.json" }, "resources/lang/php_ru.json": { - "file": "assets/php_ru-e41b0033.js", + "file": "assets/php_ru-d62a7157.js", "isDynamicEntry": true, "src": "resources/lang/php_ru.json" }, "resources/lang/php_si.json": { - "file": "assets/php_si-85c4e7b8.js", + "file": "assets/php_si-a2441031.js", "isDynamicEntry": true, "src": "resources/lang/php_si.json" }, + "resources/lang/php_tr.json": { + "file": "assets/php_tr-cbc04db3.js", + "isDynamicEntry": true, + "src": "resources/lang/php_tr.json" + }, "resources/lang/php_zh.json": { - "file": "assets/php_zh-7cc6d490.js", + "file": "assets/php_zh-9f8fe759.js", "isDynamicEntry": true, "src": "resources/lang/php_zh.json" }