From dbdb4d62ae3a5df16f492576a7ef549e0e09da6d Mon Sep 17 00:00:00 2001 From: Bubka <858858+Bubka@users.noreply.github.com> Date: Mon, 18 Nov 2024 13:04:30 +0100 Subject: [PATCH] Rebuild assets --- .../{About-BFfeZAkk.js => About-BzKiptnW.js} | 2 +- public/build/assets/Access-B2ymsfLm.js | 1 - public/build/assets/Access-KiYVHBfV.js | 1 + ...gRyksdg.js => AccessLogViewer-ATsuzUAw.js} | 2 +- public/build/assets/Account-Bgfza_Db.js | 1 - public/build/assets/Account-Bvea0oZ6.js | 1 + public/build/assets/Accounts-C-25Qy2v.js | 6 + public/build/assets/Accounts-DNDVqAqR.js | 6 - ...Tabs-Bc7uXBY-.js => AdminTabs-CAsvsm7h.js} | 2 +- public/build/assets/AppSetup-D27COJPH.js | 1 + public/build/assets/AppSetup-Dt_jr1xm.js | 1 - .../{Auth-DmixUfoW.js => Auth-BknZQPI-.js} | 2 +- public/build/assets/Capture-Bb1sXPdR.js | 3 - public/build/assets/Capture-CIhtAWpt.js | 3 + public/build/assets/CopyButton-C1eOxUvy.js | 1 + public/build/assets/CopyButton-CNDtpSH2.js | 1 - public/build/assets/Create-CLPvbaW4.js | 1 + public/build/assets/Create-DbNLDpJC.js | 1 - public/build/assets/CreateUpdate-3ZZroKyC.js | 1 - ...e-Dr-XnMyq.js => CreateUpdate-BlUdhaWn.js} | 2 +- public/build/assets/CreateUpdate-DXqb6Ftc.js | 1 + .../{Edit-BM1fyA7o.js => Edit-BxX3QJ9W.js} | 2 +- public/build/assets/Error-DAFLfN3j.js | 1 - public/build/assets/Error-rNpmSIEZ.js | 1 + .../{Form-BGrUTood.js => Form-o2lWAB-o.js} | 2 +- public/build/assets/Groups-BMQ6YoNp.js | 1 - public/build/assets/Groups-CF7f2juX.js | 1 + ...{Import-BZd8Em5d.js => Import-C-7ayGrw.js} | 2 +- public/build/assets/Login-WJZFRbSm.js | 1 + public/build/assets/Login-lFqZsVye.js | 1 - public/build/assets/Manage-BKPFyA7n.js | 1 + public/build/assets/Manage-BdbniM-Y.js | 1 - public/build/assets/OAuth-C-a66RBn.js | 1 - public/build/assets/OAuth-ulCTA84H.js | 1 + ...ptions--WfZObkz.js => Options-C3TqQdMf.js} | 2 +- public/build/assets/OtpDisplay-D1Cg2JBE.js | 1 + public/build/assets/OtpDisplay-D2QMFFL_.js | 1 - public/build/assets/QRcode-CqE9jHmd.js | 1 + public/build/assets/QRcode-CsChMItc.js | 1 - ...rCu47Q.js => QrContentDisplay-CyBGNU2O.js} | 2 +- ...ecover-CMvlsTFQ.js => Recover-CcODwxy9.js} | 2 +- public/build/assets/Register-D9YDPq8h.js | 1 + public/build/assets/Register-hMMU0w6y.js | 1 - public/build/assets/RequestReset-CO9hDqHp.js | 1 - public/build/assets/RequestReset-HGpvuoDE.js | 1 + .../{Reset-BohGQRDz.js => Reset-BVOhauTi.js} | 2 +- ...hBox-B-38rGG5.js => SearchBox-Bwo0E13W.js} | 2 +- ...bs-D1fgIcyl.js => SettingTabs-DdogXjnE.js} | 2 +- public/build/assets/Spinner--6H_UWmB.css | 1 - public/build/assets/Spinner-DHClvaFf.js | 1 - public/build/assets/Spinner-WULdfd4I.js | 1 + public/build/assets/Spinner-i1QgfgLP.css | 1 + .../{Start-DbpLb5Lz.js => Start-Buh1NwyJ.js} | 2 +- public/build/assets/Users-B46w5pfw.js | 1 + public/build/assets/Users-Bxf3ihka.js | 1 - ...Authn-DBHOBJJ_.js => WebAuthn-DJ0oaQu-.js} | 2 +- public/build/assets/app-CuhK3jij.js | 799 ++++++++++++++++++ public/build/assets/app-D4Udf6Mm.js | 794 ----------------- .../{app-CLbIVRQ8.css => app-DCHjhP3L.css} | 0 .../assets/appSettingsUpdater-B1wtRdsR.js | 1 - .../assets/appSettingsUpdater-DcxdiO4R.js | 1 + .../{bus-RVphoWuw.js => bus-BalNs30H.js} | 2 +- ...{php_pl-B0Klhp6o.js => php_ar-DkAJ05Mp.js} | 6 +- ...{php_bg-Chd5OZr1.js => php_bg-CoUSxAMd.js} | 6 +- ...{php_da-jT2uuqIL.js => php_da-Dktu4lBQ.js} | 6 +- ...{php_de-CoKrWjgn.js => php_de-CaMBnB2D.js} | 6 +- ...{php_en-BiQ_FnWP.js => php_en-DiZe0RSj.js} | 6 +- ...{php_es-Bb5PmW6j.js => php_es-D_CFd2fo.js} | 6 +- ...{php_fr-BnJxw11S.js => php_fr-We9OMs7M.js} | 6 +- ...{php_hi-DmYSenvU.js => php_hi--xvyUCAZ.js} | 6 +- ...{php_id-DEbtNpni.js => php_id-C14Zr-Zf.js} | 4 +- ...{php_it-DUEGlYzS.js => php_it-mlyMaB1o.js} | 6 +- ...{php_ja-BeClXwe_.js => php_ja-xY6Xx06P.js} | 6 +- ...{php_ko-Rddsr2Bj.js => php_ko-C-kMOHRA.js} | 8 +- ...{php_nl-D9GiR4OO.js => php_nl-DM5HSo8G.js} | 6 +- ...{php_ar-B0Klhp6o.js => php_pl-DkAJ05Mp.js} | 6 +- ...{php_pt-DucI-Yi_.js => php_pt-DHeV0kB3.js} | 36 +- ...{php_ro-dfeCo_fC.js => php_ro-Cgf1xQ8g.js} | 6 +- ...{php_ru-CC34pEtg.js => php_ru-BHhdv2c6.js} | 6 +- ...{php_si-DuIH0_oO.js => php_si-B2vyVoN1.js} | 6 +- ...{php_tr-CkDfHBb5.js => php_tr-nxKVoDL2.js} | 6 +- ...{php_zh-CiLNc0zd.js => php_zh-Da1G_uNl.js} | 6 +- .../build/assets/webauthnService-B01mQIOV.js | 1 + .../build/assets/webauthnService-DqgceQ2G.js | 1 - public/build/manifest.json | 270 +++--- 85 files changed, 1055 insertions(+), 1050 deletions(-) rename public/build/assets/{About-BFfeZAkk.js => About-BzKiptnW.js} (78%) delete mode 100644 public/build/assets/Access-B2ymsfLm.js create mode 100644 public/build/assets/Access-KiYVHBfV.js rename public/build/assets/{AccessLogViewer-mgRyksdg.js => AccessLogViewer-ATsuzUAw.js} (93%) delete mode 100644 public/build/assets/Account-Bgfza_Db.js create mode 100644 public/build/assets/Account-Bvea0oZ6.js create mode 100644 public/build/assets/Accounts-C-25Qy2v.js delete mode 100644 public/build/assets/Accounts-DNDVqAqR.js rename public/build/assets/{AdminTabs-Bc7uXBY-.js => AdminTabs-CAsvsm7h.js} (79%) create mode 100644 public/build/assets/AppSetup-D27COJPH.js delete mode 100644 public/build/assets/AppSetup-Dt_jr1xm.js rename public/build/assets/{Auth-DmixUfoW.js => Auth-BknZQPI-.js} (80%) delete mode 100644 public/build/assets/Capture-Bb1sXPdR.js create mode 100644 public/build/assets/Capture-CIhtAWpt.js create mode 100644 public/build/assets/CopyButton-C1eOxUvy.js delete mode 100644 public/build/assets/CopyButton-CNDtpSH2.js create mode 100644 public/build/assets/Create-CLPvbaW4.js delete mode 100644 public/build/assets/Create-DbNLDpJC.js delete mode 100644 public/build/assets/CreateUpdate-3ZZroKyC.js rename public/build/assets/{CreateUpdate-Dr-XnMyq.js => CreateUpdate-BlUdhaWn.js} (81%) create mode 100644 public/build/assets/CreateUpdate-DXqb6Ftc.js rename public/build/assets/{Edit-BM1fyA7o.js => Edit-BxX3QJ9W.js} (64%) delete mode 100644 public/build/assets/Error-DAFLfN3j.js create mode 100644 public/build/assets/Error-rNpmSIEZ.js rename public/build/assets/{Form-BGrUTood.js => Form-o2lWAB-o.js} (98%) delete mode 100644 public/build/assets/Groups-BMQ6YoNp.js create mode 100644 public/build/assets/Groups-CF7f2juX.js rename public/build/assets/{Import-BZd8Em5d.js => Import-C-7ayGrw.js} (70%) create mode 100644 public/build/assets/Login-WJZFRbSm.js delete mode 100644 public/build/assets/Login-lFqZsVye.js create mode 100644 public/build/assets/Manage-BKPFyA7n.js delete mode 100644 public/build/assets/Manage-BdbniM-Y.js delete mode 100644 public/build/assets/OAuth-C-a66RBn.js create mode 100644 public/build/assets/OAuth-ulCTA84H.js rename public/build/assets/{Options--WfZObkz.js => Options-C3TqQdMf.js} (98%) create mode 100644 public/build/assets/OtpDisplay-D1Cg2JBE.js delete mode 100644 public/build/assets/OtpDisplay-D2QMFFL_.js create mode 100644 public/build/assets/QRcode-CqE9jHmd.js delete mode 100644 public/build/assets/QRcode-CsChMItc.js rename public/build/assets/{QrContentDisplay-C6rCu47Q.js => QrContentDisplay-CyBGNU2O.js} (87%) rename public/build/assets/{Recover-CMvlsTFQ.js => Recover-CcODwxy9.js} (74%) create mode 100644 public/build/assets/Register-D9YDPq8h.js delete mode 100644 public/build/assets/Register-hMMU0w6y.js delete mode 100644 public/build/assets/RequestReset-CO9hDqHp.js create mode 100644 public/build/assets/RequestReset-HGpvuoDE.js rename public/build/assets/{Reset-BohGQRDz.js => Reset-BVOhauTi.js} (57%) rename public/build/assets/{SearchBox-B-38rGG5.js => SearchBox-Bwo0E13W.js} (63%) rename public/build/assets/{SettingTabs-D1fgIcyl.js => SettingTabs-DdogXjnE.js} (69%) delete mode 100644 public/build/assets/Spinner--6H_UWmB.css delete mode 100644 public/build/assets/Spinner-DHClvaFf.js create mode 100644 public/build/assets/Spinner-WULdfd4I.js create mode 100644 public/build/assets/Spinner-i1QgfgLP.css rename public/build/assets/{Start-DbpLb5Lz.js => Start-Buh1NwyJ.js} (58%) create mode 100644 public/build/assets/Users-B46w5pfw.js delete mode 100644 public/build/assets/Users-Bxf3ihka.js rename public/build/assets/{WebAuthn-DBHOBJJ_.js => WebAuthn-DJ0oaQu-.js} (68%) create mode 100644 public/build/assets/app-CuhK3jij.js delete mode 100644 public/build/assets/app-D4Udf6Mm.js rename public/build/assets/{app-CLbIVRQ8.css => app-DCHjhP3L.css} (100%) delete mode 100644 public/build/assets/appSettingsUpdater-B1wtRdsR.js create mode 100644 public/build/assets/appSettingsUpdater-DcxdiO4R.js rename public/build/assets/{bus-RVphoWuw.js => bus-BalNs30H.js} (77%) rename public/build/assets/{php_pl-B0Klhp6o.js => php_ar-DkAJ05Mp.js} (99%) rename public/build/assets/{php_bg-Chd5OZr1.js => php_bg-CoUSxAMd.js} (99%) rename public/build/assets/{php_da-jT2uuqIL.js => php_da-Dktu4lBQ.js} (99%) rename public/build/assets/{php_de-CoKrWjgn.js => php_de-CaMBnB2D.js} (99%) rename public/build/assets/{php_en-BiQ_FnWP.js => php_en-DiZe0RSj.js} (99%) rename public/build/assets/{php_es-Bb5PmW6j.js => php_es-D_CFd2fo.js} (99%) rename public/build/assets/{php_fr-BnJxw11S.js => php_fr-We9OMs7M.js} (99%) rename public/build/assets/{php_hi-DmYSenvU.js => php_hi--xvyUCAZ.js} (99%) rename public/build/assets/{php_id-DEbtNpni.js => php_id-C14Zr-Zf.js} (99%) rename public/build/assets/{php_it-DUEGlYzS.js => php_it-mlyMaB1o.js} (99%) rename public/build/assets/{php_ja-BeClXwe_.js => php_ja-xY6Xx06P.js} (99%) rename public/build/assets/{php_ko-Rddsr2Bj.js => php_ko-C-kMOHRA.js} (99%) rename public/build/assets/{php_nl-D9GiR4OO.js => php_nl-DM5HSo8G.js} (99%) rename public/build/assets/{php_ar-B0Klhp6o.js => php_pl-DkAJ05Mp.js} (99%) rename public/build/assets/{php_pt-DucI-Yi_.js => php_pt-DHeV0kB3.js} (99%) rename public/build/assets/{php_ro-dfeCo_fC.js => php_ro-Cgf1xQ8g.js} (99%) rename public/build/assets/{php_ru-CC34pEtg.js => php_ru-BHhdv2c6.js} (99%) rename public/build/assets/{php_si-DuIH0_oO.js => php_si-B2vyVoN1.js} (99%) rename public/build/assets/{php_tr-CkDfHBb5.js => php_tr-nxKVoDL2.js} (99%) rename public/build/assets/{php_zh-CiLNc0zd.js => php_zh-Da1G_uNl.js} (99%) create mode 100644 public/build/assets/webauthnService-B01mQIOV.js delete mode 100644 public/build/assets/webauthnService-DqgceQ2G.js diff --git a/public/build/assets/About-BFfeZAkk.js b/public/build/assets/About-BzKiptnW.js similarity index 78% rename from public/build/assets/About-BFfeZAkk.js rename to public/build/assets/About-BzKiptnW.js index 564d1154..df5339a4 100644 --- a/public/build/assets/About-BFfeZAkk.js +++ b/public/build/assets/About-BzKiptnW.js @@ -1 +1 @@ -import{h as b,k as i,p as k,l as r,m as g,e as s,t,j as o,n as c,g as e,f as h,U as u,L as C}from"./app-D4Udf6Mm.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 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),L=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),v={class:"title is-5 has-text-grey-light"},I={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),H={__name:"About",setup(U){const _=C("2fauth"),d=k().options.history.state.back;return(a,Y)=>{const l=r("FontAwesomeIcon"),p=r("ButtonBackCloseCancel"),m=r("VueFooter"),f=r("ResponsiveWidthWrapper");return g(),b(f,null,{default:i(()=>[s("h1",B,t(a.$t("commons.about")),1),s("p",F,[o(h(u),null,{default:i(({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,L,s("h2",v,t(a.$t("commons.resources")),1),s("div",I,[o(h(u),null,{default:i(({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:i(()=>[o(p,{returnTo:{path:h(d)},action:"back"},null,8,["returnTo"])]),_:1})]),_:1})}}};export{H as default}; +import{L 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-CuhK3jij.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 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),L=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),v={class:"title is-5 has-text-grey-light"},I={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),H={__name:"About",setup(U){const _=b("2fauth"),d=k().options.history.state.back;return(a,Y)=>{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,L,s("h2",v,t(a.$t("commons.resources")),1),s("div",I,[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{H as default}; diff --git a/public/build/assets/Access-B2ymsfLm.js b/public/build/assets/Access-B2ymsfLm.js deleted file mode 100644 index f3b5622b..00000000 --- a/public/build/assets/Access-B2ymsfLm.js +++ /dev/null @@ -1 +0,0 @@ -import{_}from"./AccessLogViewer-mgRyksdg.js";import{o as f,r as h,I as B,h as I,k as u,l as o,m as g,e as c,t as r,f as k,j as t,p as v}from"./app-D4Udf6Mm.js";import{u as C}from"./bus-RVphoWuw.js";import"./SearchBox-B-38rGG5.js";import"./Spinner-DHClvaFf.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const b={class:"title has-text-grey-dark"},y={class:"block is-size-7-mobile"},T={__name:"Access",props:{userId:[Number,String]},setup(i){const l=C();v(),f(async()=>{m()});const e=i,a=h(l.username??"");function m(){B.getById(e.userId,{returnError:!0}).then(s=>{a.value=s.data.info.name})}return(s,S)=>{const n=o("ButtonBackCloseCancel"),d=o("VueFooter"),p=o("ResponsiveWidthWrapper");return g(),I(p,null,{default:u(()=>[c("h1",b,r(s.$t("titles.admin.logs.access")),1),c("div",y,r(s.$t("admin.access_log_legend_for_user",{username:k(a)}))+" (#"+r(e.userId)+") ",1),t(_,{userId:e.userId,lastOnly:!1,showSearch:!0,period:1},null,8,["userId"]),t(d,{showButtons:!0},{default:u(()=>[t(n,{returnTo:{name:"admin.manageUser",params:{userId:e.userId}},action:"back"},null,8,["returnTo"]),t(n,{returnTo:{name:"accounts"},action:"close"})]),_:1})]),_:1})}}};export{T as default}; diff --git a/public/build/assets/Access-KiYVHBfV.js b/public/build/assets/Access-KiYVHBfV.js new file mode 100644 index 00000000..d39f4837 --- /dev/null +++ b/public/build/assets/Access-KiYVHBfV.js @@ -0,0 +1 @@ +import{_}from"./AccessLogViewer-ATsuzUAw.js";import{u as f,o as h,r as B,I,e as o,f as g,k,p as u,h as c,t as r,i as v,m as t}from"./app-CuhK3jij.js";import{u as C}from"./bus-BalNs30H.js";import"./SearchBox-Bwo0E13W.js";import"./Spinner-WULdfd4I.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const b={class:"title has-text-grey-dark"},y={class:"block is-size-7-mobile"},T={__name:"Access",props:{userId:[Number,String]},setup(i){const l=C();f(),h(async()=>{m()});const e=i,a=B(l.username??"");function m(){I.getById(e.userId,{returnError:!0}).then(s=>{a.value=s.data.info.name})}return(s,S)=>{const n=o("ButtonBackCloseCancel"),d=o("VueFooter"),p=o("ResponsiveWidthWrapper");return g(),k(p,null,{default:u(()=>[c("h1",b,r(s.$t("titles.admin.logs.access")),1),c("div",y,r(s.$t("admin.access_log_legend_for_user",{username:v(a)}))+" (#"+r(e.userId)+") ",1),t(_,{userId:e.userId,lastOnly:!1,showSearch:!0,period:1},null,8,["userId"]),t(d,{showButtons:!0},{default:u(()=>[t(n,{returnTo:{name:"admin.manageUser",params:{userId:e.userId}},action:"back"},null,8,["returnTo"]),t(n,{returnTo:{name:"accounts"},action:"close"})]),_:1})]),_:1})}}};export{T as default}; diff --git a/public/build/assets/AccessLogViewer-mgRyksdg.js b/public/build/assets/AccessLogViewer-ATsuzUAw.js similarity index 93% rename from public/build/assets/AccessLogViewer-mgRyksdg.js rename to public/build/assets/AccessLogViewer-ATsuzUAw.js index b0988857..e15fe957 100644 --- a/public/build/assets/AccessLogViewer-mgRyksdg.js +++ b/public/build/assets/AccessLogViewer-ATsuzUAw.js @@ -1 +1 @@ -import{_ as O}from"./SearchBox-B-38rGG5.js";import{a as E,L as j,r as f,x as z,o as U,I as P,l as J,m as r,d as l,h as R,f as n,D as q,i as C,e as o,n as c,t as i,j as a,F as x,E as G,k as A,g as w,a7 as K,U as Q}from"./app-D4Udf6Mm.js";import{S as W}from"./Spinner-DHClvaFf.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const X={key:1,class:"level is-mobile mb-2"},Z={class:"level-item has-text-centered"},ee={class:"buttons"},se=["title"],te=["title"],oe=["title"],ne=["title"],re=["title"],ie=["title"],le={key:2},ae=["innerHTML"],de=["innerHTML"],ce=["innerHTML"],ue=["innerHTML"],he={class:"light-or-darker"},me={class:"light-or-darker"},_e={class:"light-or-darker"},ge={key:3,class:"mt-4"},fe={key:4,class:"mt-5 pl-3"},be={__name:"AccessLogViewer",props:{userId:[Number,String],lastOnly:Boolean,showSearch:Boolean,period:{type:[Number,String],default:12}},emits:["has-more-entries"],setup(T,{emit:N}){const H=E(),I=j("2fauth"),h=T,d={aMonth:1,threeMonths:3,halfYear:6,aYear:12},u=f([]),v=f(!1),p=f(""),m=f(h.period),g=f(!0),B=N,$=z(()=>u.value.filter(e=>JSON.stringify(e).toString().toLowerCase().includes(p.value)));U(()=>{L()});function y(e){m.value=e,L()}function F(){g.value=!1,S()}function S(){u.value.sort((e,t)=>e.id>t.id?1:-1)}function V(){g.value=!0,M()}function M(){u.value.sort((e,t)=>e.id{u.value=t.data,u.value.length>3&&h.lastOnly&&(B("has-more-entries"),u.value.pop()),g.value==!0?M():S()}).catch(t=>{H.error(t)}).finally(()=>{v.value=!1})}const Y=e=>{switch(e){case"phone":return"mobile-screen";case"tablet":return"tablet-screen-button";default:return"display"}},D=e=>!e.login_at&&e.logout_at,b=e=>!e.login_successful&&!e.logout_at;return(e,t)=>{const _=J("FontAwesomeIcon");return r(),l(x,null,[h.showSearch?(r(),R(O,{key:0,keyword:n(p),"onUpdate:keyword":t[0]||(t[0]=s=>q(p)?p.value=s:null),hasNoBackground:!0},null,8,["keyword"])):C("",!0),h.showSearch?(r(),l("nav",X,[o("div",Z,[o("div",ee,[o("button",{id:"btnShowOneMonth",title:e.$t("admin.show_last_month_log"),onClick:t[1]||(t[1]=s=>y(d.aMonth)),class:c([{"has-text-grey":n(m)!==d.aMonth},"button is-ghost p-1"])},i(e.$t("commons.one_month")),11,se),o("button",{id:"btnShowThreeMonths",title:e.$t("admin.show_three_months_log"),onClick:t[2]||(t[2]=s=>y(d.threeMonths)),class:c([{"has-text-grey":n(m)!==d.threeMonths},"button is-ghost p-1"])},i(e.$t("commons.x_month",{x:"3"})),11,te),o("button",{id:"btnShowSixMonths",title:e.$t("admin.show_six_months_log"),onClick:t[3]||(t[3]=s=>y(d.halfYear)),class:c([{"has-text-grey":n(m)!==d.halfYear},"button is-ghost p-1"])},i(e.$t("commons.x_month",{x:"6"})),11,oe),o("button",{id:"btnShowOneYear",title:e.$t("admin.show_one_year_log"),onClick:t[4]||(t[4]=s=>y(d.aYear)),class:c([{"has-text-grey":n(m)!==d.aYear},"button is-ghost p-1 mr-5"])},i(e.$t("commons.one_year")),11,ne),o("button",{id:"btnSortLogDesc",onClick:V,title:e.$t("admin.sort_by_date_desc"),class:c([{"has-text-grey":!n(g)},"button p-1 is-ghost"])},[a(_,{icon:["fas","arrow-up-long"],flip:"vertical"}),a(_,{icon:["far","calendar"]})],10,re),o("button",{id:"btnSortLogAsc",onClick:F,title:e.$t("admin.sort_by_date_asc"),class:c([{"has-text-grey":n(g)},"button p-1 is-ghost"])},[a(_,{icon:["fas","arrow-up-long"]}),a(_,{icon:["far","calendar"]})],10,ie)])])])):C("",!0),n($).length>0?(r(),l("div",le,[(r(!0),l(x,null,G(n($),s=>(r(),l("div",{key:s.id,class:"list-item is-size-6 is-size-7-mobile has-text-grey is-flex is-justify-content-space-between"},[a(n(Q),null,{default:A(({mode:k})=>[o("div",null,[o("div",null,[b(s)?(r(),l("span",{key:0,innerHTML:e.$t("admin.failed_login_on",{login_at:s.login_at})},null,8,ae)):D(s)?(r(),l("span",{key:1,innerHTML:e.$t("admin.successful_logout_on",{login_at:s.logout_at})},null,8,de)):n(I).config.proxyAuth?(r(),l("span",{key:2,innerHTML:e.$t("admin.viewed_on",{login_at:s.login_at})},null,8,ce)):(r(),l("span",{key:3,innerHTML:e.$t("admin.successful_login_on",{login_at:s.login_at})},null,8,ue))]),o("div",null,[w(i(e.$t("commons.IP"))+": ",1),o("span",he,i(s.ip_address),1),w(" - "+i(e.$t("commons.browser"))+": ",1),o("span",me,i(s.browser),1),w(" - "+i(e.$t("commons.operating_system_short"))+": ",1),o("span",_e,i(s.platform),1)])]),o("div",{class:c([k=="dark"?"has-text-grey-darker":"has-text-grey-lighter","is-align-self-center"])},[a(n(K),{class:"fa-2x width-1-5x"},{default:A(()=>[a(_,{icon:["fas",Y(s.device)],transform:"grow-6","fixed-width":""},null,8,["icon"]),a(_,{icon:["fas",b(s)?"times":"check"],transform:"shrink-7"+(s.device=="desktop"?" up-2":""),class:c(b(s)?"has-text-danger"+(k=="dark"?"-dark":""):"has-text-success"+(k=="dark"?"-dark":"")),"fixed-width":""},null,8,["icon","transform","class"])]),_:2},1024)],2)]),_:2},1024)]))),128))])):n(u).length==0?(r(),l("div",ge,i(e.$t("commons.no_entry_yet")),1)):(r(),l("div",fe,i(e.$t("commons.no_result")),1)),a(W,{isVisible:n(v)},null,8,["isVisible"])],64)}}};export{be as _}; +import{_ as O}from"./SearchBox-Bwo0E13W.js";import{b as E,L as j,r as f,x as z,o as U,I as P,e as J,f as r,g as l,k as R,i as n,D as q,l as C,h as o,n as c,t as i,m as a,F as x,E as G,p as A,j as w,a8 as K,U as Q}from"./app-CuhK3jij.js";import{S as W}from"./Spinner-WULdfd4I.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const X={key:1,class:"level is-mobile mb-2"},Z={class:"level-item has-text-centered"},ee={class:"buttons"},se=["title"],te=["title"],oe=["title"],ne=["title"],re=["title"],ie=["title"],le={key:2},ae=["innerHTML"],de=["innerHTML"],ce=["innerHTML"],ue=["innerHTML"],he={class:"light-or-darker"},me={class:"light-or-darker"},_e={class:"light-or-darker"},ge={key:3,class:"mt-4"},fe={key:4,class:"mt-5 pl-3"},be={__name:"AccessLogViewer",props:{userId:[Number,String],lastOnly:Boolean,showSearch:Boolean,period:{type:[Number,String],default:12}},emits:["has-more-entries"],setup(T,{emit:N}){const H=E(),I=j("2fauth"),h=T,d={aMonth:1,threeMonths:3,halfYear:6,aYear:12},u=f([]),v=f(!1),p=f(""),m=f(h.period),g=f(!0),B=N,$=z(()=>u.value.filter(e=>JSON.stringify(e).toString().toLowerCase().includes(p.value)));U(()=>{L()});function y(e){m.value=e,L()}function F(){g.value=!1,S()}function S(){u.value.sort((e,t)=>e.id>t.id?1:-1)}function V(){g.value=!0,M()}function M(){u.value.sort((e,t)=>e.id{u.value=t.data,u.value.length>3&&h.lastOnly&&(B("has-more-entries"),u.value.pop()),g.value==!0?M():S()}).catch(t=>{H.error(t)}).finally(()=>{v.value=!1})}const Y=e=>{switch(e){case"phone":return"mobile-screen";case"tablet":return"tablet-screen-button";default:return"display"}},D=e=>!e.login_at&&e.logout_at,b=e=>!e.login_successful&&!e.logout_at;return(e,t)=>{const _=J("FontAwesomeIcon");return r(),l(x,null,[h.showSearch?(r(),R(O,{key:0,keyword:n(p),"onUpdate:keyword":t[0]||(t[0]=s=>q(p)?p.value=s:null),hasNoBackground:!0},null,8,["keyword"])):C("",!0),h.showSearch?(r(),l("nav",X,[o("div",Z,[o("div",ee,[o("button",{id:"btnShowOneMonth",title:e.$t("admin.show_last_month_log"),onClick:t[1]||(t[1]=s=>y(d.aMonth)),class:c([{"has-text-grey":n(m)!==d.aMonth},"button is-ghost p-1"])},i(e.$t("commons.one_month")),11,se),o("button",{id:"btnShowThreeMonths",title:e.$t("admin.show_three_months_log"),onClick:t[2]||(t[2]=s=>y(d.threeMonths)),class:c([{"has-text-grey":n(m)!==d.threeMonths},"button is-ghost p-1"])},i(e.$t("commons.x_month",{x:"3"})),11,te),o("button",{id:"btnShowSixMonths",title:e.$t("admin.show_six_months_log"),onClick:t[3]||(t[3]=s=>y(d.halfYear)),class:c([{"has-text-grey":n(m)!==d.halfYear},"button is-ghost p-1"])},i(e.$t("commons.x_month",{x:"6"})),11,oe),o("button",{id:"btnShowOneYear",title:e.$t("admin.show_one_year_log"),onClick:t[4]||(t[4]=s=>y(d.aYear)),class:c([{"has-text-grey":n(m)!==d.aYear},"button is-ghost p-1 mr-5"])},i(e.$t("commons.one_year")),11,ne),o("button",{id:"btnSortLogDesc",onClick:V,title:e.$t("admin.sort_by_date_desc"),class:c([{"has-text-grey":!n(g)},"button p-1 is-ghost"])},[a(_,{icon:["fas","arrow-up-long"],flip:"vertical"}),a(_,{icon:["far","calendar"]})],10,re),o("button",{id:"btnSortLogAsc",onClick:F,title:e.$t("admin.sort_by_date_asc"),class:c([{"has-text-grey":n(g)},"button p-1 is-ghost"])},[a(_,{icon:["fas","arrow-up-long"]}),a(_,{icon:["far","calendar"]})],10,ie)])])])):C("",!0),n($).length>0?(r(),l("div",le,[(r(!0),l(x,null,G(n($),s=>(r(),l("div",{key:s.id,class:"list-item is-size-6 is-size-7-mobile has-text-grey is-flex is-justify-content-space-between"},[a(n(Q),null,{default:A(({mode:k})=>[o("div",null,[o("div",null,[b(s)?(r(),l("span",{key:0,innerHTML:e.$t("admin.failed_login_on",{login_at:s.login_at})},null,8,ae)):D(s)?(r(),l("span",{key:1,innerHTML:e.$t("admin.successful_logout_on",{login_at:s.logout_at})},null,8,de)):n(I).config.proxyAuth?(r(),l("span",{key:2,innerHTML:e.$t("admin.viewed_on",{login_at:s.login_at})},null,8,ce)):(r(),l("span",{key:3,innerHTML:e.$t("admin.successful_login_on",{login_at:s.login_at})},null,8,ue))]),o("div",null,[w(i(e.$t("commons.IP"))+": ",1),o("span",he,i(s.ip_address),1),w(" - "+i(e.$t("commons.browser"))+": ",1),o("span",me,i(s.browser),1),w(" - "+i(e.$t("commons.operating_system_short"))+": ",1),o("span",_e,i(s.platform),1)])]),o("div",{class:c([k=="dark"?"has-text-grey-darker":"has-text-grey-lighter","is-align-self-center"])},[a(n(K),{class:"fa-2x width-1-5x"},{default:A(()=>[a(_,{icon:["fas",Y(s.device)],transform:"grow-6","fixed-width":""},null,8,["icon"]),a(_,{icon:["fas",b(s)?"times":"check"],transform:"shrink-7"+(s.device=="desktop"?" up-2":""),class:c(b(s)?"has-text-danger"+(k=="dark"?"-dark":""):"has-text-success"+(k=="dark"?"-dark":"")),"fixed-width":""},null,8,["icon","transform","class"])]),_:2},1024)],2)]),_:2},1024)]))),128))])):n(u).length==0?(r(),l("div",ge,i(e.$t("commons.no_entry_yet")),1)):(r(),l("div",fe,i(e.$t("commons.no_result")),1)),a(W,{isVisible:n(v)},null,8,["isVisible"])],64)}}};export{be as _}; diff --git a/public/build/assets/Account-Bgfza_Db.js b/public/build/assets/Account-Bgfza_Db.js deleted file mode 100644 index 5210c925..00000000 --- a/public/build/assets/Account-Bgfza_Db.js +++ /dev/null @@ -1 +0,0 @@ -import{u as C,a as U,a1 as S,c as y,a0 as K,d as _,j as a,e as n,k as E,L,l as p,m as w,f as s,t as u,i as g,C as b,p as D,H as V}from"./app-D4Udf6Mm.js";import{F as v}from"./Form-BGrUTood.js";import{_ as R}from"./SettingTabs-D1fgIcyl.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const H={class:"options-tabs"},M={key:0,class:"notification is-warning"},W={key:1,class:"notification is-info has-text-centered"},j=["innerHTML"],z={class:"title is-4 has-text-grey-light"},I=["disabled"],q={class:"title is-4 pt-6 has-text-grey-light"},G=["disabled"],J={class:"title is-4 pt-6 has-text-danger"},O={class:"field is-size-7-mobile"},Q={class:"block"},X=["disabled"],oe={__name:"Account",setup(Y){const c=L("2fauth"),d=C(),i=U(),F=D(),x=S(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 K(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"),k=p("ButtonBackCloseCancel"),A=p("VueFooter");return w(),_("div",null,[a(R,{activeTab:"settings.account"},null,8,["activeTab"]),n("div",H,[a(N,null,{default:E(()=>[s(d).isAdmin?(w(),_("div",M,u(r.$t("settings.you_are_administrator")),1)):g("",!0),s(d).oauth_provider?(w(),_("div",W,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,I)],32),n("form",{onSubmit:b(P,["prevent"]),onKeydown:e[7]||(e[7]=o=>s(t).onKeydown(o))},[n("h4",q,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,G)],32),n("form",{id:"frmDeleteAccount",onSubmit:b($,["prevent"]),onKeydown:e[9]||(e[9]=o=>s(m).onKeydown(o))},[n("h4",J,u(r.$t("auth.forms.delete_account")),1),n("div",O,[n("p",Q,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,X)],32)]),_:1})]),a(A,{showButtons:!0},{default:E(()=>[a(k,{returnTo:{name:s(x)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{oe as default}; diff --git a/public/build/assets/Account-Bvea0oZ6.js b/public/build/assets/Account-Bvea0oZ6.js new file mode 100644 index 00000000..95cc73ed --- /dev/null +++ b/public/build/assets/Account-Bvea0oZ6.js @@ -0,0 +1 @@ +import{L as C,a as U,b as S,u as K,a2 as L,d as y,a1 as D,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,C as b,H as V}from"./app-CuhK3jij.js";import{F as v}from"./Form-o2lWAB-o.js";import{_ as R}from"./SettingTabs-DdogXjnE.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const H={class:"options-tabs"},M={key:0,class:"notification is-warning"},W={key:1,class:"notification is-info has-text-centered"},j=["innerHTML"],z={class:"title is-4 has-text-grey-light"},I=["disabled"],q={class:"title is-4 pt-6 has-text-grey-light"},G=["disabled"],J={class:"title is-4 pt-6 has-text-danger"},O={class:"field is-size-7-mobile"},Q={class:"block"},X=["disabled"],oe={__name:"Account",setup(Y){const c=C("2fauth"),d=U(),i=S(),F=K(),x=L(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 D(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"),k=p("ButtonBackCloseCancel"),A=p("VueFooter");return _(),w("div",null,[a(R,{activeTab:"settings.account"},null,8,["activeTab"]),n("div",H,[a(N,null,{default:E(()=>[s(d).isAdmin?(_(),w("div",M,u(r.$t("settings.you_are_administrator")),1)):g("",!0),s(d).oauth_provider?(_(),w("div",W,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,I)],32),n("form",{onSubmit:b(P,["prevent"]),onKeydown:e[7]||(e[7]=o=>s(t).onKeydown(o))},[n("h4",q,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,G)],32),n("form",{id:"frmDeleteAccount",onSubmit:b($,["prevent"]),onKeydown:e[9]||(e[9]=o=>s(m).onKeydown(o))},[n("h4",J,u(r.$t("auth.forms.delete_account")),1),n("div",O,[n("p",Q,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,X)],32)]),_:1})]),a(A,{showButtons:!0},{default:E(()=>[a(k,{returnTo:{name:s(x)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{oe as default}; diff --git a/public/build/assets/Accounts-C-25Qy2v.js b/public/build/assets/Accounts-C-25Qy2v.js new file mode 100644 index 00000000..9805db95 --- /dev/null +++ b/public/build/assets/Accounts-C-25Qy2v.js @@ -0,0 +1,6 @@ +import{a as Ft,e as ie,f as y,g as C,h as g,F as Qe,E as ct,m as k,p as P,n as W,t as I,i as p,U as De,j as Re,I as gn,r as te,J as it,K as vn,y as bn,u as Rt,k as ye,l as z,L as Jt,M as _n,N as wn,O as yn,D as Ye,P as Yt,Q as rt,R as En,b as Sn,S as Dn,T as kn,c as Cn,V as $n,s as _t,x as Tn,o as On,H as wt,C as Te,W as In,z as yt,X as An,w as Et,Y as Xe,A as zt,Z as Mn}from"./app-CuhK3jij.js";import{_ as xn,a as Pn,b as Nn}from"./OtpDisplay-D1Cg2JBE.js";import{_ as Fn}from"./SearchBox-Bwo0E13W.js";import{u as Rn}from"./bus-BalNs30H.js";import"./Spinner-WULdfd4I.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const Bn={id:"groupSwitch",class:"container groups"},Gn={class:"columns is-centered"},Ln={class:"column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},Xn={class:"columns is-multiline"},Yn=["onClick"],zn={class:"columns is-centered"},Un={class:"column has-text-centered"},Hn={__name:"GroupSwitch",props:{showGroupSwitch:Boolean,groups:Array},emits:["update:showGroupSwitch"],setup(o,{emit:e}){const n=Ft(),t=e;function i(r){n.preferences.activeGroup=r,n.preferences.rememberActiveGroup&&gn.updatePreference("activeGroup",r),t("update:showGroupSwitch",!1)}return(r,s)=>{const l=ie("RouterLink"),u=ie("ButtonBackCloseCancel"),a=ie("VueFooter");return y(),C("div",Bn,[g("div",Gn,[g("div",Ln,[g("div",Xn,[(y(!0),C(Qe,null,ct(o.groups,f=>(y(),C("div",{class:"column is-full",key:f.id},[k(p(De),null,{default:P(({mode:c})=>[g("button",{class:W(["button is-fullwidth",{"is-dark has-text-light is-outlined":c=="dark"}]),onClick:E=>i(f.id)},I(f.name),11,Yn)]),_:2},1024)]))),128))]),g("div",zn,[g("div",Un,[k(l,{to:{name:"groups"}},{default:P(()=>[Re(I(r.$t("groups.manage_groups")),1)]),_:1})])])])]),k(a,{showButtons:!0},{default:P(()=>[k(u,{action:"close",useLinkTag:!1,onClosed:s[0]||(s[0]=f=>r.$emit("update:showGroupSwitch",!1))})]),_:1})])}}},qn={class:"container group-selector"},Wn={class:"columns is-centered is-multiline"},Vn={class:"column is-full has-text-centered"},jn={class:"column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},Kn={class:"columns is-multiline"},Qn=["onClick"],Zn={key:0,class:"is-italic"},Jn={key:1},eo={class:"columns is-centered"},to={class:"column has-text-centered"},no={class:"control"},oo={__name:"DestinationGroupSelector",props:{showDestinationGroupSelector:Boolean,selectedAccountsIds:Array,groups:Array},emits:["update:showDestinationGroupSelector","accounts-moved"],setup(o,{emit:e}){const n=o,t=te(null),i=e;async function r(){t.value===0?await it.withdraw(n.selectedAccountsIds):await vn.assign(n.selectedAccountsIds,t.value),i("accounts-moved")}return(s,l)=>{const u=ie("RouterLink"),a=ie("ButtonBackCloseCancel"),f=ie("VueFooter");return y(),C("div",qn,[g("div",Wn,[g("div",Vn,I(s.$t("groups.move_selected_to")),1),g("div",jn,[g("div",Kn,[(y(!0),C(Qe,null,ct(o.groups,c=>(y(),C("div",{class:"column is-full",key:c.id},[k(p(De),null,{default:P(({mode:E})=>[g("button",{class:W(["button is-fullwidth",{"is-link":p(t)===c.id,"is-dark has-text-light is-outlined":E=="dark"}]),onClick:D=>t.value=c.id},[c.id===0?(y(),C("span",Zn,I(s.$t("groups.no_group")),1)):(y(),C("span",Jn,I(c.name),1))],10,Qn)]),_:2},1024)]))),128))]),g("div",eo,[g("div",to,[k(u,{to:{name:"groups"}},{default:P(()=>[Re(I(s.$t("groups.manage_groups")),1)]),_:1})])])])]),k(f,{showButtons:!0},{default:P(()=>[g("p",no,[g("button",{class:"button is-link is-rounded",onClick:r},I(s.$t("commons.move")),1)]),k(a,{action:"cancel",useLinkTag:!1,onCanceled:l[0]||(l[0]=c=>s.$emit("update:showDestinationGroupSelector",!1))})]),_:1})])}}},io={class:"toolbar has-text-centered"},ro={class:"columns"},so={class:"column has-nowrap px-0"},ao={class:"has-text-grey mr-1"},lo=["title"],uo=["title"],co=["title"],fo=["title"],po={__name:"Toolbar",props:{selectedCount:Number},setup(o){return(e,n)=>{const t=ie("FontAwesomeIcon");return y(),C("div",io,[g("div",ro,[g("div",so,[g("span",ao,I(e.$t("commons.x_selected",{count:o.selectedCount})),1),g("button",{id:"btnUnselectAll",onClick:n[0]||(n[0]=i=>e.$emit("clear-selected")),class:"clear-selection delete mr-4",style:bn({visibility:o.selectedCount>0?"visible":"hidden"}),title:e.$t("commons.clear_selection")},null,12,lo),g("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")},[g("span",null,I(e.$t("commons.check_all")),1),k(t,{class:"ml-1",icon:["fas","check-square"]})],8,uo),g("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")},[k(t,{icon:["fas","sort-alpha-down"]})],8,co),g("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")},[k(t,{icon:["fas","sort-alpha-up"]})],8,fo)])])])}}},ho={key:0,class:"control"},mo={class:"icon is-small"},go={key:1,class:"control"},vo={key:2,class:"control"},bo=["disabled","title"],_o={key:3,class:"control"},wo=["disabled"],yo={key:4,class:"control"},Eo=["disabled","title"],So={__name:"ActionButtons",props:{inManagementMode:Boolean,areDisabled:Boolean},emits:["update:inManagementMode","move-button-clicked","delete-button-clicked","export-button-clicked"],setup(o,{emit:e}){const n=Rt(),t=Ft();function i(){t.preferences.useDirectCapture&&t.preferences.defaultCaptureMode==="advancedForm"?n.push({name:"createAccount"}):t.preferences.useDirectCapture&&t.preferences.defaultCaptureMode==="livescan"?n.push({name:"capture"}):n.push({name:"start"})}return(r,s)=>{const l=ie("FontAwesomeIcon");return y(),ye(p(De),null,{default:P(({mode:u})=>[o.inManagementMode?z("",!0):(y(),C("p",ho,[g("button",{class:"button is-link is-rounded is-focus",onClick:i},[g("span",null,I(r.$t("commons.new")),1),g("span",mo,[k(l,{icon:["fas","qrcode"]})])])])),o.inManagementMode?z("",!0):(y(),C("p",go,[g("button",{id:"btnManage",class:W(["button is-rounded",{"is-dark":u=="dark"}]),onClick:s[0]||(s[0]=a=>r.$emit("update:inManagementMode",!0))},I(r.$t("commons.manage")),3)])),o.inManagementMode?(y(),C("p",vo,[g("button",{id:"btnMove",disabled:o.areDisabled,class:W(["button is-rounded",[{"is-outlined":u=="dark"||o.areDisabled},o.areDisabled?"is-dark":"is-link"]]),onClick:s[1]||(s[1]=a=>r.$emit("move-button-clicked")),title:r.$t("groups.move_selected_to_group")},I(r.$t("commons.move")),11,bo)])):z("",!0),o.inManagementMode?(y(),C("p",_o,[g("button",{id:"btnDelete",disabled:o.areDisabled,class:W(["button is-rounded",[{"is-outlined":u=="dark"||o.areDisabled},o.areDisabled?"is-dark":"is-link"]]),onClick:s[2]||(s[2]=a=>r.$emit("delete-button-clicked"))},I(r.$t("commons.delete")),11,wo)])):z("",!0),o.inManagementMode?(y(),C("p",yo,[g("button",{id:"btnExport",disabled:o.areDisabled,class:W(["button is-rounded",[{"is-outlined":u=="dark"||o.areDisabled},o.areDisabled?"is-dark":"is-link"]]),onClick:s[3]||(s[3]=a=>r.$emit("export-button-clicked")),title:r.$t("twofaccounts.export_selected_accounts")},I(r.$t("commons.export")),11,Eo)])):z("",!0)]),_:1})}}},Do={class:"block"},ko={class:"has-text-weight-bold has-text-grey"},Co={class:"is-size-7-mobile"},$o=["href"],To=["title"],Oo={class:"block"},Io={class:"has-text-weight-bold has-text-grey"},Ao={class:"is-size-7-mobile"},Mo=["title"],xo={__name:"ExportButtons",emits:["export-twofauth-format","export-otpauth-format"],setup(o,{emit:e}){Rt();const n=Jt("2fauth");return(t,i)=>(y(),C(Qe,null,[g("div",Do,[k(p(De),null,{default:P(({mode:r})=>[g("p",ko,I(t.$t("twofaccounts.twofauth_export_format_sub")),1)]),_:1}),g("p",Co,[Re(I(t.$t("twofaccounts.twofauth_export_format_desc"))+" "+I(t.$t("twofaccounts.twofauth_export_format_url"))+" ",1),g("a",{id:"lnkExportSchemaUrl",class:"is-link",tabindex:"0",href:p(n).urls.exportSchemaUrl,target:"_blank"},I(t.$t("twofaccounts.twofauth_export_schema")),9,$o)]),g("button",{id:"btnExport2FAuth",class:"button is-link is-rounded is-focus my-3",onClick:i[0]||(i[0]=r=>t.$emit("export-twofauth-format")),title:t.$t("twofaccounts.twofauth_export_format_sub")},I(t.$t("twofaccounts.twofauth_export_format")),9,To)]),g("div",Oo,[g("p",Io,I(t.$t("twofaccounts.otpauth_export_format_sub")),1),g("p",Ao,I(t.$t("twofaccounts.otpauth_export_format_desc")),1),g("button",{id:"btnExportOtpauth",class:"button is-link is-rounded is-focus my-3",onClick:i[1]||(i[1]=r=>t.$emit("export-otpauth-format")),title:t.$t("twofaccounts.otpauth_export_format_sub")},I(t.$t("twofaccounts.otpauth_export_format")),9,Mo)])],64))}};/**! + * Sortable 1.15.2 + * @author RubaXa + * @author owenm + * @license MIT + */function Ut(o,e){var n=Object.keys(o);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(o);e&&(t=t.filter(function(i){return Object.getOwnPropertyDescriptor(o,i).enumerable})),n.push.apply(n,t)}return n}function he(o){for(var e=1;e=0)&&(n[i]=o[i]);return n}function Fo(o,e){if(o==null)return{};var n=No(o,e),t,i;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(o,t)&&(n[t]=o[t])}return n}var Ro="1.15.2";function ge(o){if(typeof window<"u"&&window.navigator)return!!navigator.userAgent.match(o)}var be=ge(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Ze=ge(/Edge/i),Ht=ge(/firefox/i),qe=ge(/safari/i)&&!ge(/chrome/i)&&!ge(/android/i),en=ge(/iP(ad|od|hone)/i),tn=ge(/chrome/i)&&ge(/android/i),nn={capture:!1,passive:!1};function O(o,e,n){o.addEventListener(e,n,!be&&nn)}function T(o,e,n){o.removeEventListener(e,n,!be&&nn)}function ft(o,e){if(e){if(e[0]===">"&&(e=e.substring(1)),o)try{if(o.matches)return o.matches(e);if(o.msMatchesSelector)return o.msMatchesSelector(e);if(o.webkitMatchesSelector)return o.webkitMatchesSelector(e)}catch{return!1}return!1}}function Bo(o){return o.host&&o!==document&&o.host.nodeType?o.host:o.parentNode}function de(o,e,n,t){if(o){n=n||document;do{if(e!=null&&(e[0]===">"?o.parentNode===n&&ft(o,e):ft(o,e))||t&&o===n)return o;if(o===n)break}while(o=Bo(o))}return null}var qt=/\s+/g;function ne(o,e,n){if(o&&e)if(o.classList)o.classList[n?"add":"remove"](e);else{var t=(" "+o.className+" ").replace(qt," ").replace(" "+e+" "," ");o.className=(t+(n?" "+e:"")).replace(qt," ")}}function b(o,e,n){var t=o&&o.style;if(t){if(n===void 0)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(o,""):o.currentStyle&&(n=o.currentStyle),e===void 0?n:n[e];!(e in t)&&e.indexOf("webkit")===-1&&(e="-webkit-"+e),t[e]=n+(typeof n=="string"?"":"px")}}function Be(o,e){var n="";if(typeof o=="string")n=o;else do{var t=b(o,"transform");t&&t!=="none"&&(n=t+" "+n)}while(!e&&(o=o.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function on(o,e,n){if(o){var t=o.getElementsByTagName(e),i=0,r=t.length;if(n)for(;i=r:s=i<=r,!s)return t;if(t===pe())break;t=ke(t,!1)}return!1}function Ge(o,e,n,t){for(var i=0,r=0,s=o.children;r2&&arguments[2]!==void 0?arguments[2]:{},i=t.evt,r=Fo(t,qo);Je.pluginEvent.bind(_)(e,n,he({dragEl:d,parentEl:x,ghostEl:w,rootEl:A,nextEl:Ae,lastDownEl:at,cloneEl:M,cloneHidden:Se,dragStarted:ze,putSortable:Y,activeSortable:_.active,originalEvent:i,oldIndex:Fe,oldDraggableIndex:Ve,newIndex:oe,newDraggableIndex:Ee,hideGhostForTarget:fn,unhideGhostForTarget:pn,cloneNowHidden:function(){Se=!0},cloneNowShown:function(){Se=!1},dispatchSortableEvent:function(l){j({sortable:n,name:l,originalEvent:i})}},r))};function j(o){Ho(he({putSortable:Y,cloneEl:M,targetEl:d,rootEl:A,oldIndex:Fe,oldDraggableIndex:Ve,newIndex:oe,newDraggableIndex:Ee},o))}var d,x,w,A,Ae,at,M,Se,Fe,oe,Ve,Ee,et,Y,Ne=!1,pt=!1,ht=[],Oe,ue,kt,Ct,jt,Kt,ze,Pe,je,Ke=!1,tt=!1,lt,q,$t=[],Mt=!1,mt=[],vt=typeof document<"u",nt=en,Qt=Ze||be?"cssFloat":"float",Wo=vt&&!tn&&!en&&"draggable"in document.createElement("div"),un=function(){if(vt){if(be)return!1;var o=document.createElement("x");return o.style.cssText="pointer-events:auto",o.style.pointerEvents==="auto"}}(),dn=function(e,n){var t=b(e),i=parseInt(t.width)-parseInt(t.paddingLeft)-parseInt(t.paddingRight)-parseInt(t.borderLeftWidth)-parseInt(t.borderRightWidth),r=Ge(e,0,n),s=Ge(e,1,n),l=r&&b(r),u=s&&b(s),a=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+R(r).width,f=u&&parseInt(u.marginLeft)+parseInt(u.marginRight)+R(s).width;if(t.display==="flex")return t.flexDirection==="column"||t.flexDirection==="column-reverse"?"vertical":"horizontal";if(t.display==="grid")return t.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(r&&l.float&&l.float!=="none"){var c=l.float==="left"?"left":"right";return s&&(u.clear==="both"||u.clear===c)?"vertical":"horizontal"}return r&&(l.display==="block"||l.display==="flex"||l.display==="table"||l.display==="grid"||a>=i&&t[Qt]==="none"||s&&t[Qt]==="none"&&a+f>i)?"vertical":"horizontal"},Vo=function(e,n,t){var i=t?e.left:e.top,r=t?e.right:e.bottom,s=t?e.width:e.height,l=t?n.left:n.top,u=t?n.right:n.bottom,a=t?n.width:n.height;return i===l||r===u||i+s/2===l+a/2},jo=function(e,n){var t;return ht.some(function(i){var r=i[re].options.emptyInsertThreshold;if(!(!r||Bt(i))){var s=R(i),l=e>=s.left-r&&e<=s.right+r,u=n>=s.top-r&&n<=s.bottom+r;if(l&&u)return t=i}}),t},cn=function(e){function n(r,s){return function(l,u,a,f){var c=l.options.group.name&&u.options.group.name&&l.options.group.name===u.options.group.name;if(r==null&&(s||c))return!0;if(r==null||r===!1)return!1;if(s&&r==="clone")return r;if(typeof r=="function")return n(r(l,u,a,f),s)(l,u,a,f);var E=(s?l:u).options.group.name;return r===!0||typeof r=="string"&&r===E||r.join&&r.indexOf(E)>-1}}var t={},i=e.group;(!i||st(i)!="object")&&(i={name:i}),t.name=i.name,t.checkPull=n(i.pull,!0),t.checkPut=n(i.put),t.revertClone=i.revertClone,e.group=t},fn=function(){!un&&w&&b(w,"display","none")},pn=function(){!un&&w&&b(w,"display","")};vt&&!tn&&document.addEventListener("click",function(o){if(pt)return o.preventDefault(),o.stopPropagation&&o.stopPropagation(),o.stopImmediatePropagation&&o.stopImmediatePropagation(),pt=!1,!1},!0);var Ie=function(e){if(d){e=e.touches?e.touches[0]:e;var n=jo(e.clientX,e.clientY);if(n){var t={};for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);t.target=t.rootEl=n,t.preventDefault=void 0,t.stopPropagation=void 0,n[re]._onDragOver(t)}}},Ko=function(e){d&&d.parentNode[re]._isOutsideThisEl(e.target)};function _(o,e){if(!(o&&o.nodeType&&o.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(o));this.el=o,this.options=e=ve({},e),o[re]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(o.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return dn(o,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(s,l){s.setData("Text",l.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:_.supportPointer!==!1&&"PointerEvent"in window&&!qe,emptyInsertThreshold:5};Je.initializePlugins(this,o,n);for(var t in n)!(t in e)&&(e[t]=n[t]);cn(e);for(var i in this)i.charAt(0)==="_"&&typeof this[i]=="function"&&(this[i]=this[i].bind(this));this.nativeDraggable=e.forceFallback?!1:Wo,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?O(o,"pointerdown",this._onTapStart):(O(o,"mousedown",this._onTapStart),O(o,"touchstart",this._onTapStart)),this.nativeDraggable&&(O(o,"dragover",this),O(o,"dragenter",this)),ht.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),ve(this,Yo())}_.prototype={constructor:_,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(Pe=null)},_getDirection:function(e,n){return typeof this.options.direction=="function"?this.options.direction.call(this,e,n,d):this.options.direction},_onTapStart:function(e){if(e.cancelable){var n=this,t=this.el,i=this.options,r=i.preventOnFilter,s=e.type,l=e.touches&&e.touches[0]||e.pointerType&&e.pointerType==="touch"&&e,u=(l||e).target,a=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||u,f=i.filter;if(ii(t),!d&&!(/mousedown|pointerdown/.test(s)&&e.button!==0||i.disabled)&&!a.isContentEditable&&!(!this.nativeDraggable&&qe&&u&&u.tagName.toUpperCase()==="SELECT")&&(u=de(u,i.draggable,t,!1),!(u&&u.animated)&&at!==u)){if(Fe=ae(u),Ve=ae(u,i.draggable),typeof f=="function"){if(f.call(this,e,u,this)){j({sortable:n,rootEl:a,name:"filter",targetEl:u,toEl:t,fromEl:t}),Q("filter",n,{evt:e}),r&&e.cancelable&&e.preventDefault();return}}else if(f&&(f=f.split(",").some(function(c){if(c=de(a,c.trim(),t,!1),c)return j({sortable:n,rootEl:c,name:"filter",targetEl:u,fromEl:t,toEl:t}),Q("filter",n,{evt:e}),!0}),f)){r&&e.cancelable&&e.preventDefault();return}i.handle&&!de(a,i.handle,t,!1)||this._prepareDragStart(e,l,u)}}},_prepareDragStart:function(e,n,t){var i=this,r=i.el,s=i.options,l=r.ownerDocument,u;if(t&&!d&&t.parentNode===r){var a=R(t);if(A=r,d=t,x=d.parentNode,Ae=d.nextSibling,at=t,et=s.group,_.dragged=d,Oe={target:d,clientX:(n||e).clientX,clientY:(n||e).clientY},jt=Oe.clientX-a.left,Kt=Oe.clientY-a.top,this._lastX=(n||e).clientX,this._lastY=(n||e).clientY,d.style["will-change"]="all",u=function(){if(Q("delayEnded",i,{evt:e}),_.eventCanceled){i._onDrop();return}i._disableDelayedDragEvents(),!Ht&&i.nativeDraggable&&(d.draggable=!0),i._triggerDragStart(e,n),j({sortable:i,name:"choose",originalEvent:e}),ne(d,s.chosenClass,!0)},s.ignore.split(",").forEach(function(f){on(d,f.trim(),Tt)}),O(l,"dragover",Ie),O(l,"mousemove",Ie),O(l,"touchmove",Ie),O(l,"mouseup",i._onDrop),O(l,"touchend",i._onDrop),O(l,"touchcancel",i._onDrop),Ht&&this.nativeDraggable&&(this.options.touchStartThreshold=4,d.draggable=!0),Q("delayStart",this,{evt:e}),s.delay&&(!s.delayOnTouchOnly||n)&&(!this.nativeDraggable||!(Ze||be))){if(_.eventCanceled){this._onDrop();return}O(l,"mouseup",i._disableDelayedDrag),O(l,"touchend",i._disableDelayedDrag),O(l,"touchcancel",i._disableDelayedDrag),O(l,"mousemove",i._delayedDragTouchMoveHandler),O(l,"touchmove",i._delayedDragTouchMoveHandler),s.supportPointer&&O(l,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(u,s.delay)}else u()}},_delayedDragTouchMoveHandler:function(e){var n=e.touches?e.touches[0]:e;Math.max(Math.abs(n.clientX-this._lastX),Math.abs(n.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){d&&Tt(d),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;T(e,"mouseup",this._disableDelayedDrag),T(e,"touchend",this._disableDelayedDrag),T(e,"touchcancel",this._disableDelayedDrag),T(e,"mousemove",this._delayedDragTouchMoveHandler),T(e,"touchmove",this._delayedDragTouchMoveHandler),T(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,n){n=n||e.pointerType=="touch"&&e,!this.nativeDraggable||n?this.options.supportPointer?O(document,"pointermove",this._onTouchMove):n?O(document,"touchmove",this._onTouchMove):O(document,"mousemove",this._onTouchMove):(O(d,"dragend",this),O(A,"dragstart",this._onDragStart));try{document.selection?ut(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,n){if(Ne=!1,A&&d){Q("dragStarted",this,{evt:n}),this.nativeDraggable&&O(document,"dragover",Ko);var t=this.options;!e&&ne(d,t.dragClass,!1),ne(d,t.ghostClass,!0),_.active=this,e&&this._appendGhost(),j({sortable:this,name:"start",originalEvent:n})}else this._nulling()},_emulateDragOver:function(){if(ue){this._lastX=ue.clientX,this._lastY=ue.clientY,fn();for(var e=document.elementFromPoint(ue.clientX,ue.clientY),n=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(ue.clientX,ue.clientY),e!==n);)n=e;if(d.parentNode[re]._isOutsideThisEl(e),n)do{if(n[re]){var t=void 0;if(t=n[re]._onDragOver({clientX:ue.clientX,clientY:ue.clientY,target:e,rootEl:n}),t&&!this.options.dragoverBubble)break}e=n}while(n=n.parentNode);pn()}},_onTouchMove:function(e){if(Oe){var n=this.options,t=n.fallbackTolerance,i=n.fallbackOffset,r=e.touches?e.touches[0]:e,s=w&&Be(w,!0),l=w&&s&&s.a,u=w&&s&&s.d,a=nt&&q&&Vt(q),f=(r.clientX-Oe.clientX+i.x)/(l||1)+(a?a[0]-$t[0]:0)/(l||1),c=(r.clientY-Oe.clientY+i.y)/(u||1)+(a?a[1]-$t[1]:0)/(u||1);if(!_.active&&!Ne){if(t&&Math.max(Math.abs(r.clientX-this._lastX),Math.abs(r.clientY-this._lastY))=0&&(j({rootEl:x,name:"add",toEl:x,fromEl:A,originalEvent:e}),j({sortable:this,name:"remove",toEl:x,originalEvent:e}),j({rootEl:x,name:"sort",toEl:x,fromEl:A,originalEvent:e}),j({sortable:this,name:"sort",toEl:x,originalEvent:e})),Y&&Y.save()):oe!==Fe&&oe>=0&&(j({sortable:this,name:"update",toEl:x,originalEvent:e}),j({sortable:this,name:"sort",toEl:x,originalEvent:e})),_.active&&((oe==null||oe===-1)&&(oe=Fe,Ee=Ve),j({sortable:this,name:"end",toEl:x,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){Q("nulling",this),A=d=x=w=Ae=M=at=Se=Oe=ue=ze=oe=Ee=Fe=Ve=Pe=je=Y=et=_.dragged=_.ghost=_.clone=_.active=null,mt.forEach(function(e){e.checked=!0}),mt.length=kt=Ct=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":d&&(this._onDragOver(e),Qo(e));break;case"selectstart":e.preventDefault();break}},toArray:function(){for(var e=[],n,t=this.el.children,i=0,r=t.length,s=this.options;ii.right+r||o.clientY>t.bottom&&o.clientX>t.left:o.clientY>i.bottom+r||o.clientX>t.right&&o.clientY>t.top}function ti(o,e,n,t,i,r,s,l){var u=t?o.clientY:o.clientX,a=t?n.height:n.width,f=t?n.top:n.left,c=t?n.bottom:n.right,E=!1;if(!s){if(l&<f+a*r/2:uc-lt)return-je}else if(u>f+a*(1-i)/2&&uc-a*r/2)?u>f+a/2?1:-1:0}function ni(o){return ae(d){mn(e,f.oldIndex,f.newIndex)}},l=()=>{const f=typeof o=="string"?i==null?void 0:i.querySelector(o):yn(o);!f||t!==void 0||(t=new _(f,{...s,...r}))},u=()=>{t==null||t.destroy(),t=void 0},a=(f,c)=>{if(c!==void 0)t==null||t.option(f,c);else return t==null?void 0:t.option(f)};return _n(l),wn(u),{stop:u,start:l,option:a}}function mn(o,e,n){const t=Ye(o),i=t?[...Yt(o)]:Yt(o);if(n>=0&&n{i.splice(n,0,r),t&&(o.value=i)})}}const ai={key:2,class:"header"},li={class:"columns is-gapless is-mobile is-centered"},ui={class:"column is-three-quarters-mobile is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},di={key:1,class:"has-text-centered"},ci={class:"columns"},fi={key:0,class:"column"},pi=["title"],hi={key:1,class:"column"},mi=["title"],gi={key:3},vi={class:"accounts"},bi={class:"tfa-container"},_i={key:0,class:"tfa-cell tfa-checkbox"},wi={class:"field"},yi=["id","value","name"],Ei=["for","onKeypress"],Si=["onClick","onKeyup"],Di={class:"tfa-text has-ellipsis"},ki=["src"],Ci=["src"],$i={class:"has-ellipsis is-family-primary is-size-6 is-size-7-mobile has-text-grey"},Ti={class:"has-text-right"},Oi={key:0},Ii={key:0,class:"has-nowrap has-text-grey has-text-centered is-size-5"},Ai=["onClick","onKeyup","title"],Mi={key:1},xi=["onClick","title"],Pi={class:"has-text-right"},Ni=["onClick"],Fi={key:0,class:"tfa-cell tfa-edit has-text-grey"},Ri={key:0,class:"drag-handle tfa-cell tfa-dots has-text-grey"},zi={__name:"Accounts",setup(o){const e=Jt("2fauth"),n=Rt(),t=Sn(),i=Ft(),r=Rn(),s=Dn(),{copy:l,copied:u}=kn({legacy:!0}),a=Cn(),f=$n(),c=te(!1),E=te(!1),D=te(!1),S=te(!1);te(!1);const $=te(!1),L=te(null),K=te(null),B=te(null),X=te({otp_type:"",account:"",service:"",icon:""}),U=te([]),le=te([]);_t(c,v=>{var m;v==!1&&((m=B.value)==null||m.clearOTP())}),_t(()=>a.items,v=>{r.inManagementMode&&ce()}),_t(()=>r.inManagementMode,v=>{v&&ce()});const Z=Tn(()=>!a.isEmpty&&!D.value&&!S.value);On(async()=>{i.preferences.getOtpOnRequest?a.fetch().then(()=>{a.backendWasNewer&&t.info({text:wt("commons.data_refreshed_to_reflect_server_changes"),duration:1e4})}):we(),f.fetch()});function ce(){si("#dv",a.filtered,{animation:200,handle:".drag-handle",onUpdate:v=>{const m=a.filtered[v.oldIndex].id,G=a.items.findIndex(ee=>ee.id==m);mn(a.items,G,v.newIndex),rt(()=>{a.saveOrder()})}})}function Ce(){a.fetch(),a.selectNone(),S.value=!1,t.success({text:wt("twofaccounts.accounts_moved")})}function H(v){X.value.otp_type=v.otp_type,X.value.service=v.service,X.value.account=v.account,X.value.icon=v.icon,rt().then(()=>{c.value=!0,B.value.show(v.id)})}function _e(v){r.inManagementMode?a.select(v.id):!i.preferences.getOtpOnRequest&&v.otp_type.includes("totp")?J(v.otp.password):H(v)}function J(v){l(v),u&&(i.preferences.kickUserAfter==-1&&i.logout({kicked:!0}),i.preferences.clearSearchOnCopy&&(a.filter=""),i.preferences.viewDefaultGroupOnCopy&&(i.preferences.activeGroup=i.preferences.defaultGroup==-1?i.preferences.activeGroup:i.preferences.defaultGroup),t.success({text:wt("commons.copied_to_clipboard")}))}async function $e(v){it.getOtpById(v.id).then(m=>{let G=m.data;if(J(G.password),G.otp_type=="hotp"){let ee=accounts.value.find(V=>V.id==v.id);ee!=null&&(ee.counter=G.counter)}})}function se(v,m){le.value.filter(G=>G.props.period==v||v==null).forEach(G=>{G.turnOn(m)})}function me(v){le.value.filter(m=>m.props.period==v||v==null).forEach(m=>{m.turnOff()})}async function we(v){$.value=!0,me(v);let m;v==null?(L.value=-1,m=it.getAll(!0)):(L.value=v,m=it.getByIds(a.accountIdsWithPeriod(v).join(","),!0)),m.then(G=>{let ee=0;G.data.forEach(V=>{if(V.otp_type==="totp"){const Le=a.items.findIndex(bt=>bt.id===V.id);a.items[Le]==null?a.items.push(V):a.items[Le].otp=V.otp,ee=V.otp.generated_at}}),U.value.forEach(V=>{(V.props.period==v||v==null)&&rt().then(()=>{V.startLoop(ee)})})}).finally(()=>{$.value=!1,L.value=null})}async function fe(){await a.deleteSelected(),a.isEmpty&&(r.inManagementMode=!1,n.push({name:"start"}))}function Me(){r.inManagementMode=!1,a.selectNone()}return(v,m)=>{const G=ie("FontAwesomeIcon"),ee=ie("Modal"),V=ie("font-awesome-icon"),Le=ie("RouterLink"),bt=ie("VueFooter");return y(),C("div",null,[p(D)?(y(),ye(Hn,{key:0,showGroupSwitch:p(D),"onUpdate:showGroupSwitch":m[0]||(m[0]=h=>Ye(D)?D.value=h:null),groups:p(f).items,"onUpdate:groups":m[1]||(m[1]=h=>p(f).items=h)},null,8,["showGroupSwitch","groups"])):z("",!0),p(S)?(y(),ye(oo,{key:1,showDestinationGroupSelector:p(S),"onUpdate:showDestinationGroupSelector":m[2]||(m[2]=h=>Ye(S)?S.value=h:null),selectedAccountsIds:p(a).selectedIds,"onUpdate:selectedAccountsIds":m[3]||(m[3]=h=>p(a).selectedIds=h),groups:p(f).items,onAccountsMoved:Ce},null,8,["showDestinationGroupSelector","selectedAccountsIds","groups"])):z("",!0),p(Z)||p(D)?(y(),C("div",ai,[g("div",li,[g("div",ui,[k(Fn,{keyword:p(a).filter,"onUpdate:keyword":m[4]||(m[4]=h=>p(a).filter=h)},null,8,["keyword"]),p(r).inManagementMode?(y(),ye(po,{key:0,selectedCount:p(a).selectedCount,onClearSelected:m[5]||(m[5]=h=>p(a).selectNone()),onSelectAll:m[6]||(m[6]=h=>p(a).selectAll()),onSortAsc:m[7]||(m[7]=h=>p(a).sortAsc()),onSortDesc:m[8]||(m[8]=h=>p(a).sortDesc())},null,8,["selectedCount"])):(y(),C("div",di,[g("div",ci,[k(p(De),null,{default:P(({mode:h})=>[p(D)?(y(),C("div",fi,[g("button",{id:"btnHideGroupSwitch",title:v.$t("groups.hide_group_selector"),tabindex:"1",class:W(["button is-text is-like-text",{"has-text-grey":h!="dark"}]),onClick:m[9]||(m[9]=Te(N=>D.value=!p(D),["stop"]))},I(v.$t("groups.select_accounts_to_show")),11,pi)])):(y(),C("div",hi,[g("button",{id:"btnShowGroupSwitch",title:v.$t("groups.show_group_selector"),tabindex:"1",class:W(["button is-text is-like-text",{"has-text-grey":h!="dark"}]),onClick:m[10]||(m[10]=Te(N=>D.value=!p(D),["stop"]))},[Re(I(p(f).current)+" ("+I(p(a).filteredCount)+")  ",1),k(G,{icon:["fas","caret-down"]})],10,mi)]))]),_:1})])]))])])])):z("",!0),k(ee,{modelValue:p(E),"onUpdate:modelValue":m[13]||(m[13]=h=>Ye(E)?E.value=h:null),isFullHeight:!0},{default:P(()=>[k(xo,{onExportTwofauthFormat:m[11]||(m[11]=h=>p(a).export()),onExportOtpauthFormat:m[12]||(m[12]=h=>p(a).export("otpauth"))})]),_:1},8,["modelValue"]),k(ee,{modelValue:p(c),"onUpdate:modelValue":m[16]||(m[16]=h=>Ye(c)?c.value=h:null)},{default:P(()=>[k(xn,In({ref_key:"otpDisplay",ref:B},p(X),{onPleaseCloseMe:m[14]||(m[14]=h=>c.value=!1),onPleaseClearSearch:m[15]||(m[15]=h=>p(a).filter="")}),null,16)]),_:1},8,["modelValue"]),p(i).preferences.getOtpOnRequest?z("",!0):(y(),C("span",gi,[(y(!0),C(Qe,null,ct(p(a).periods,h=>(y(),ye(Pn,{key:h.period,autostart:!1,period:h.period,generated_at:h.generated_at,onLoopEnded:N=>we(h.period),onLoopStarted:N=>se(h.period,N),onSteppedUp:N=>se(h.period,N),ref_for:!0,ref_key:"looperRefs",ref:U},null,8,["period","generated_at","onLoopEnded","onLoopStarted","onSteppedUp"]))),128))])),p(Z)?(y(),C("div",{key:4,class:W(["container",p(r).inManagementMode?"is-edit-mode":""])},[g("div",vi,[g("span",{id:"dv",class:W(["columns is-multiline",{"is-centered":p(i).preferences.displayMode==="grid"}])},[(y(!0),C(Qe,null,ct(p(a).filtered,h=>(y(),C("div",{class:W([[p(i).preferences.displayMode==="grid"?"tfa-grid":"tfa-list"],"column is-narrow"]),key:h.id},[g("div",bi,[k(Xe,{name:"slideCheckbox"},{default:P(()=>[p(r).inManagementMode?(y(),C("div",_i,[g("div",wi,[k(p(De),null,{default:P(({mode:N})=>[yt(g("input",{class:W(["is-checkradio is-small",N=="dark"?"is-white":"is-info"]),id:"ckb_"+h.id,value:h.id,type:"checkbox",name:"ckb_"+h.id,"onUpdate:modelValue":m[17]||(m[17]=Xt=>p(a).selectedIds=Xt)},null,10,yi),[[An,p(a).selectedIds]])]),_:2},1024),g("label",{tabindex:"0",for:"ckb_"+h.id,onKeypress:Et(Te(N=>p(a).select(h.id),["prevent"]),["space"])},null,40,Ei)])])):z("",!0)]),_:2},1024),g("div",{tabindex:"0",class:"tfa-cell tfa-content is-size-3 is-size-4-mobile",onClick:[Te(N=>_e(h),["exact"]),Te(N=>$e(h),["ctrl"])],onKeyup:Et(N=>_e(h),["enter"]),role:"button"},[g("div",Di,[h.icon&&p(i).preferences.showAccountsIcons?(y(),C("img",{key:0,role:"presentation",class:"tfa-icon",src:p(e).config.subdirectory+"/storage/icons/"+h.icon,alt:""},null,8,ki)):h.icon==null&&p(i).preferences.showAccountsIcons?(y(),C("img",{key:1,role:"presentation",class:"tfa-icon",src:p(e).config.subdirectory+"/storage/noicon.svg",alt:""},null,8,Ci)):z("",!0),Re(" "+I(h.service?h.service:v.$t("twofaccounts.no_service")),1),p(s).useEncryption&&h.account===v.$t("errors.indecipherable")?(y(),ye(G,{key:2,class:"has-text-danger is-size-5 ml-2",icon:["fas","exclamation-circle"]})):z("",!0),g("span",$i,I(h.account),1)])],40,Si),k(Xe,{name:"popLater"},{default:P(()=>[yt(g("div",Ti,[h.otp!=null?(y(),C("span",Oi,[p($)==!0&&(p(L)==-1||p(L)==h.period)?(y(),C("span",Ii,[k(G,{icon:["fas","circle-notch"],spin:""})])):(y(),C("span",{key:1,class:"always-on-otp is-clickable has-nowrap has-text-grey is-size-5 ml-4",onClick:N=>J(h.otp.password),onKeyup:Et(N=>J(h.otp.password),["enter"]),title:v.$t("commons.copy_to_clipboard")},I(p(Mn)(h.otp.password,p(i).preferences.showOtpAsDot&&p(i).preferences.revealDottedOTP&&p(K)==h.id)),41,Ai)),h.otp_type.includes("totp")?(y(),ye(Nn,{key:2,class:W("condensed"),ref_for:!0,ref_key:"dotsRefs",ref:le,period:h.period},null,8,["period"])):z("",!0)])):(y(),C("span",Mi,[k(p(De),null,{default:P(({mode:N})=>[g("button",{class:W(["button tag",N=="dark"?"is-dark":"is-white"]),onClick:Xt=>H(h),title:v.$t("twofaccounts.import.import_this_account")},I(v.$t("commons.generate")),11,xi)]),_:2},1024)]))],512),[[zt,p(i).preferences.getOtpOnRequest==!1&&!p(r).inManagementMode]])]),_:2},1024),p(i).preferences.showOtpAsDot&&p(i).preferences.revealDottedOTP?(y(),ye(Xe,{key:0,name:"popLater"},{default:P(()=>[yt(g("div",Pi,[p(K)==h.id?(y(),C("button",{key:0,class:"pr-0 button is-ghost has-text-grey-dark",onClick:m[18]||(m[18]=Te(N=>K.value=null,["stop"]))},[k(V,{icon:["fas","eye"]})])):(y(),C("button",{key:1,class:"pr-0 button is-ghost has-text-grey-dark",onClick:Te(N=>K.value=h.id,["stop"])},[k(V,{icon:["fas","eye-slash"]})],8,Ni))],512),[[zt,p(i).preferences.getOtpOnRequest==!1&&!p(r).inManagementMode]])]),_:2},1024)):z("",!0),k(Xe,{name:"fadeInOut"},{default:P(()=>[p(r).inManagementMode?(y(),C("div",Fi,[k(p(De),null,{default:P(({mode:N})=>[k(Le,{to:{name:"editAccount",params:{twofaccountId:h.id}},class:W(["tag is-rounded mr-1",N=="dark"?"is-dark":"is-white"])},{default:P(()=>[Re(I(v.$t("commons.edit")),1)]),_:2},1032,["to","class"]),k(Le,{to:{name:"showQRcode",params:{twofaccountId:h.id}},class:W(["tag is-rounded",N=="dark"?"is-dark":"is-white"]),title:v.$t("twofaccounts.show_qrcode")},{default:P(()=>[k(G,{icon:["fas","qrcode"]})]),_:2},1032,["to","class","title"])]),_:2},1024)])):z("",!0)]),_:2},1024),k(Xe,{name:"fadeInOut"},{default:P(()=>[p(r).inManagementMode?(y(),C("div",Ri,[k(G,{icon:["fas","bars"]})])):z("",!0)]),_:1})])],2))),128))],2)]),k(bt,{showButtons:!0,internalFooterType:p(r).inManagementMode&&!p(S)?"doneButton":"navLinks",onDoneButtonClicked:Me},{default:P(()=>[k(So,{inManagementMode:p(r).inManagementMode,"onUpdate:inManagementMode":m[19]||(m[19]=h=>p(r).inManagementMode=h),areDisabled:p(a).hasNoneSelected,onMoveButtonClicked:m[20]||(m[20]=h=>S.value=!0),onDeleteButtonClicked:fe,onExportButtonClicked:m[21]||(m[21]=h=>E.value=!0)},null,8,["inManagementMode","areDisabled"])]),_:1},8,["internalFooterType"])],2)):z("",!0)])}}};export{zi as default}; diff --git a/public/build/assets/Accounts-DNDVqAqR.js b/public/build/assets/Accounts-DNDVqAqR.js deleted file mode 100644 index 31352649..00000000 --- a/public/build/assets/Accounts-DNDVqAqR.js +++ /dev/null @@ -1,6 +0,0 @@ -import{u as Ft,m as y,d as C,e as g,F as Qe,E as ct,j as k,k as P,n as W,t as I,f as p,U as De,g as Re,I as gn,l as ie,r as te,J as it,K as vn,y as bn,p as Rt,h as ye,i as z,L as Jt,M as _n,N as wn,D as Ye,O as Yt,P as rt,Q as yn,a as En,R as Sn,S as Dn,b as kn,T as Cn,s as _t,x as $n,o as Tn,H as wt,C as Te,V as On,z as yt,W as In,w as Et,X as Xe,A as zt,Y as An}from"./app-D4Udf6Mm.js";import{_ as Mn,a as xn,b as Pn}from"./OtpDisplay-D2QMFFL_.js";import{_ as Nn}from"./SearchBox-B-38rGG5.js";import{u as Fn}from"./bus-RVphoWuw.js";import"./Spinner-DHClvaFf.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const Rn={id:"groupSwitch",class:"container groups"},Bn={class:"columns is-centered"},Gn={class:"column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},Ln={class:"columns is-multiline"},Xn=["onClick"],Yn={class:"columns is-centered"},zn={class:"column has-text-centered"},Un={__name:"GroupSwitch",props:{showGroupSwitch:Boolean,groups:Array},emits:["update:showGroupSwitch"],setup(o,{emit:e}){const n=Ft(),t=e;function i(r){n.preferences.activeGroup=r,n.preferences.rememberActiveGroup&&gn.updatePreference("activeGroup",r),t("update:showGroupSwitch",!1)}return(r,s)=>{const l=ie("RouterLink"),u=ie("ButtonBackCloseCancel"),a=ie("VueFooter");return y(),C("div",Rn,[g("div",Bn,[g("div",Gn,[g("div",Ln,[(y(!0),C(Qe,null,ct(o.groups,f=>(y(),C("div",{class:"column is-full",key:f.id},[k(p(De),null,{default:P(({mode:c})=>[g("button",{class:W(["button is-fullwidth",{"is-dark has-text-light is-outlined":c=="dark"}]),onClick:E=>i(f.id)},I(f.name),11,Xn)]),_:2},1024)]))),128))]),g("div",Yn,[g("div",zn,[k(l,{to:{name:"groups"}},{default:P(()=>[Re(I(r.$t("groups.manage_groups")),1)]),_:1})])])])]),k(a,{showButtons:!0},{default:P(()=>[k(u,{action:"close",useLinkTag:!1,onClosed:s[0]||(s[0]=f=>r.$emit("update:showGroupSwitch",!1))})]),_:1})])}}},Hn={class:"container group-selector"},qn={class:"columns is-centered is-multiline"},Wn={class:"column is-full has-text-centered"},Vn={class:"column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},jn={class:"columns is-multiline"},Kn=["onClick"],Qn={key:0,class:"is-italic"},Zn={key:1},Jn={class:"columns is-centered"},eo={class:"column has-text-centered"},to={class:"control"},no={__name:"DestinationGroupSelector",props:{showDestinationGroupSelector:Boolean,selectedAccountsIds:Array,groups:Array},emits:["update:showDestinationGroupSelector","accounts-moved"],setup(o,{emit:e}){const n=o,t=te(null),i=e;async function r(){t.value===0?await it.withdraw(n.selectedAccountsIds):await vn.assign(n.selectedAccountsIds,t.value),i("accounts-moved")}return(s,l)=>{const u=ie("RouterLink"),a=ie("ButtonBackCloseCancel"),f=ie("VueFooter");return y(),C("div",Hn,[g("div",qn,[g("div",Wn,I(s.$t("groups.move_selected_to")),1),g("div",Vn,[g("div",jn,[(y(!0),C(Qe,null,ct(o.groups,c=>(y(),C("div",{class:"column is-full",key:c.id},[k(p(De),null,{default:P(({mode:E})=>[g("button",{class:W(["button is-fullwidth",{"is-link":p(t)===c.id,"is-dark has-text-light is-outlined":E=="dark"}]),onClick:D=>t.value=c.id},[c.id===0?(y(),C("span",Qn,I(s.$t("groups.no_group")),1)):(y(),C("span",Zn,I(c.name),1))],10,Kn)]),_:2},1024)]))),128))]),g("div",Jn,[g("div",eo,[k(u,{to:{name:"groups"}},{default:P(()=>[Re(I(s.$t("groups.manage_groups")),1)]),_:1})])])])]),k(f,{showButtons:!0},{default:P(()=>[g("p",to,[g("button",{class:"button is-link is-rounded",onClick:r},I(s.$t("commons.move")),1)]),k(a,{action:"cancel",useLinkTag:!1,onCanceled:l[0]||(l[0]=c=>s.$emit("update:showDestinationGroupSelector",!1))})]),_:1})])}}},oo={class:"toolbar has-text-centered"},io={class:"columns"},ro={class:"column has-nowrap px-0"},so={class:"has-text-grey mr-1"},ao=["title"],lo=["title"],uo=["title"],co=["title"],fo={__name:"Toolbar",props:{selectedCount:Number},setup(o){return(e,n)=>{const t=ie("FontAwesomeIcon");return y(),C("div",oo,[g("div",io,[g("div",ro,[g("span",so,I(e.$t("commons.x_selected",{count:o.selectedCount})),1),g("button",{id:"btnUnselectAll",onClick:n[0]||(n[0]=i=>e.$emit("clear-selected")),class:"clear-selection delete mr-4",style:bn({visibility:o.selectedCount>0?"visible":"hidden"}),title:e.$t("commons.clear_selection")},null,12,ao),g("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")},[g("span",null,I(e.$t("commons.check_all")),1),k(t,{class:"ml-1",icon:["fas","check-square"]})],8,lo),g("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")},[k(t,{icon:["fas","sort-alpha-down"]})],8,uo),g("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")},[k(t,{icon:["fas","sort-alpha-up"]})],8,co)])])])}}},po={key:0,class:"control"},ho={class:"icon is-small"},mo={key:1,class:"control"},go={key:2,class:"control"},vo=["disabled","title"],bo={key:3,class:"control"},_o=["disabled"],wo={key:4,class:"control"},yo=["disabled","title"],Eo={__name:"ActionButtons",props:{inManagementMode:Boolean,areDisabled:Boolean},emits:["update:inManagementMode","move-button-clicked","delete-button-clicked","export-button-clicked"],setup(o,{emit:e}){const n=Rt(),t=Ft();function i(){t.preferences.useDirectCapture&&t.preferences.defaultCaptureMode==="advancedForm"?n.push({name:"createAccount"}):t.preferences.useDirectCapture&&t.preferences.defaultCaptureMode==="livescan"?n.push({name:"capture"}):n.push({name:"start"})}return(r,s)=>{const l=ie("FontAwesomeIcon");return y(),ye(p(De),null,{default:P(({mode:u})=>[o.inManagementMode?z("",!0):(y(),C("p",po,[g("button",{class:"button is-link is-rounded is-focus",onClick:i},[g("span",null,I(r.$t("commons.new")),1),g("span",ho,[k(l,{icon:["fas","qrcode"]})])])])),o.inManagementMode?z("",!0):(y(),C("p",mo,[g("button",{id:"btnManage",class:W(["button is-rounded",{"is-dark":u=="dark"}]),onClick:s[0]||(s[0]=a=>r.$emit("update:inManagementMode",!0))},I(r.$t("commons.manage")),3)])),o.inManagementMode?(y(),C("p",go,[g("button",{id:"btnMove",disabled:o.areDisabled,class:W(["button is-rounded",[{"is-outlined":u=="dark"||o.areDisabled},o.areDisabled?"is-dark":"is-link"]]),onClick:s[1]||(s[1]=a=>r.$emit("move-button-clicked")),title:r.$t("groups.move_selected_to_group")},I(r.$t("commons.move")),11,vo)])):z("",!0),o.inManagementMode?(y(),C("p",bo,[g("button",{id:"btnDelete",disabled:o.areDisabled,class:W(["button is-rounded",[{"is-outlined":u=="dark"||o.areDisabled},o.areDisabled?"is-dark":"is-link"]]),onClick:s[2]||(s[2]=a=>r.$emit("delete-button-clicked"))},I(r.$t("commons.delete")),11,_o)])):z("",!0),o.inManagementMode?(y(),C("p",wo,[g("button",{id:"btnExport",disabled:o.areDisabled,class:W(["button is-rounded",[{"is-outlined":u=="dark"||o.areDisabled},o.areDisabled?"is-dark":"is-link"]]),onClick:s[3]||(s[3]=a=>r.$emit("export-button-clicked")),title:r.$t("twofaccounts.export_selected_accounts")},I(r.$t("commons.export")),11,yo)])):z("",!0)]),_:1})}}},So={class:"block"},Do={class:"has-text-weight-bold has-text-grey"},ko={class:"is-size-7-mobile"},Co=["href"],$o=["title"],To={class:"block"},Oo={class:"has-text-weight-bold has-text-grey"},Io={class:"is-size-7-mobile"},Ao=["title"],Mo={__name:"ExportButtons",emits:["export-twofauth-format","export-otpauth-format"],setup(o,{emit:e}){Rt();const n=Jt("2fauth");return(t,i)=>(y(),C(Qe,null,[g("div",So,[k(p(De),null,{default:P(({mode:r})=>[g("p",Do,I(t.$t("twofaccounts.twofauth_export_format_sub")),1)]),_:1}),g("p",ko,[Re(I(t.$t("twofaccounts.twofauth_export_format_desc"))+" "+I(t.$t("twofaccounts.twofauth_export_format_url"))+" ",1),g("a",{id:"lnkExportSchemaUrl",class:"is-link",tabindex:"0",href:p(n).urls.exportSchemaUrl,target:"_blank"},I(t.$t("twofaccounts.twofauth_export_schema")),9,Co)]),g("button",{id:"btnExport2FAuth",class:"button is-link is-rounded is-focus my-3",onClick:i[0]||(i[0]=r=>t.$emit("export-twofauth-format")),title:t.$t("twofaccounts.twofauth_export_format_sub")},I(t.$t("twofaccounts.twofauth_export_format")),9,$o)]),g("div",To,[g("p",Oo,I(t.$t("twofaccounts.otpauth_export_format_sub")),1),g("p",Io,I(t.$t("twofaccounts.otpauth_export_format_desc")),1),g("button",{id:"btnExportOtpauth",class:"button is-link is-rounded is-focus my-3",onClick:i[1]||(i[1]=r=>t.$emit("export-otpauth-format")),title:t.$t("twofaccounts.otpauth_export_format_sub")},I(t.$t("twofaccounts.otpauth_export_format")),9,Ao)])],64))}};/**! - * Sortable 1.15.2 - * @author RubaXa - * @author owenm - * @license MIT - */function Ut(o,e){var n=Object.keys(o);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(o);e&&(t=t.filter(function(i){return Object.getOwnPropertyDescriptor(o,i).enumerable})),n.push.apply(n,t)}return n}function he(o){for(var e=1;e=0)&&(n[i]=o[i]);return n}function No(o,e){if(o==null)return{};var n=Po(o,e),t,i;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(o,t)&&(n[t]=o[t])}return n}var Fo="1.15.2";function ge(o){if(typeof window<"u"&&window.navigator)return!!navigator.userAgent.match(o)}var be=ge(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Ze=ge(/Edge/i),Ht=ge(/firefox/i),qe=ge(/safari/i)&&!ge(/chrome/i)&&!ge(/android/i),en=ge(/iP(ad|od|hone)/i),tn=ge(/chrome/i)&&ge(/android/i),nn={capture:!1,passive:!1};function O(o,e,n){o.addEventListener(e,n,!be&&nn)}function T(o,e,n){o.removeEventListener(e,n,!be&&nn)}function ft(o,e){if(e){if(e[0]===">"&&(e=e.substring(1)),o)try{if(o.matches)return o.matches(e);if(o.msMatchesSelector)return o.msMatchesSelector(e);if(o.webkitMatchesSelector)return o.webkitMatchesSelector(e)}catch{return!1}return!1}}function Ro(o){return o.host&&o!==document&&o.host.nodeType?o.host:o.parentNode}function de(o,e,n,t){if(o){n=n||document;do{if(e!=null&&(e[0]===">"?o.parentNode===n&&ft(o,e):ft(o,e))||t&&o===n)return o;if(o===n)break}while(o=Ro(o))}return null}var qt=/\s+/g;function ne(o,e,n){if(o&&e)if(o.classList)o.classList[n?"add":"remove"](e);else{var t=(" "+o.className+" ").replace(qt," ").replace(" "+e+" "," ");o.className=(t+(n?" "+e:"")).replace(qt," ")}}function b(o,e,n){var t=o&&o.style;if(t){if(n===void 0)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(o,""):o.currentStyle&&(n=o.currentStyle),e===void 0?n:n[e];!(e in t)&&e.indexOf("webkit")===-1&&(e="-webkit-"+e),t[e]=n+(typeof n=="string"?"":"px")}}function Be(o,e){var n="";if(typeof o=="string")n=o;else do{var t=b(o,"transform");t&&t!=="none"&&(n=t+" "+n)}while(!e&&(o=o.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function on(o,e,n){if(o){var t=o.getElementsByTagName(e),i=0,r=t.length;if(n)for(;i=r,!s)return t;if(t===pe())break;t=ke(t,!1)}return!1}function Ge(o,e,n,t){for(var i=0,r=0,s=o.children;r2&&arguments[2]!==void 0?arguments[2]:{},i=t.evt,r=No(t,Ho);Je.pluginEvent.bind(_)(e,n,he({dragEl:d,parentEl:x,ghostEl:w,rootEl:A,nextEl:Ae,lastDownEl:at,cloneEl:M,cloneHidden:Se,dragStarted:ze,putSortable:Y,activeSortable:_.active,originalEvent:i,oldIndex:Fe,oldDraggableIndex:Ve,newIndex:oe,newDraggableIndex:Ee,hideGhostForTarget:fn,unhideGhostForTarget:pn,cloneNowHidden:function(){Se=!0},cloneNowShown:function(){Se=!1},dispatchSortableEvent:function(l){j({sortable:n,name:l,originalEvent:i})}},r))};function j(o){Uo(he({putSortable:Y,cloneEl:M,targetEl:d,rootEl:A,oldIndex:Fe,oldDraggableIndex:Ve,newIndex:oe,newDraggableIndex:Ee},o))}var d,x,w,A,Ae,at,M,Se,Fe,oe,Ve,Ee,et,Y,Ne=!1,pt=!1,ht=[],Oe,ue,kt,Ct,jt,Kt,ze,Pe,je,Ke=!1,tt=!1,lt,q,$t=[],Mt=!1,mt=[],vt=typeof document<"u",nt=en,Qt=Ze||be?"cssFloat":"float",qo=vt&&!tn&&!en&&"draggable"in document.createElement("div"),un=function(){if(vt){if(be)return!1;var o=document.createElement("x");return o.style.cssText="pointer-events:auto",o.style.pointerEvents==="auto"}}(),dn=function(e,n){var t=b(e),i=parseInt(t.width)-parseInt(t.paddingLeft)-parseInt(t.paddingRight)-parseInt(t.borderLeftWidth)-parseInt(t.borderRightWidth),r=Ge(e,0,n),s=Ge(e,1,n),l=r&&b(r),u=s&&b(s),a=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+R(r).width,f=u&&parseInt(u.marginLeft)+parseInt(u.marginRight)+R(s).width;if(t.display==="flex")return t.flexDirection==="column"||t.flexDirection==="column-reverse"?"vertical":"horizontal";if(t.display==="grid")return t.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(r&&l.float&&l.float!=="none"){var c=l.float==="left"?"left":"right";return s&&(u.clear==="both"||u.clear===c)?"vertical":"horizontal"}return r&&(l.display==="block"||l.display==="flex"||l.display==="table"||l.display==="grid"||a>=i&&t[Qt]==="none"||s&&t[Qt]==="none"&&a+f>i)?"vertical":"horizontal"},Wo=function(e,n,t){var i=t?e.left:e.top,r=t?e.right:e.bottom,s=t?e.width:e.height,l=t?n.left:n.top,u=t?n.right:n.bottom,a=t?n.width:n.height;return i===l||r===u||i+s/2===l+a/2},Vo=function(e,n){var t;return ht.some(function(i){var r=i[re].options.emptyInsertThreshold;if(!(!r||Bt(i))){var s=R(i),l=e>=s.left-r&&e<=s.right+r,u=n>=s.top-r&&n<=s.bottom+r;if(l&&u)return t=i}}),t},cn=function(e){function n(r,s){return function(l,u,a,f){var c=l.options.group.name&&u.options.group.name&&l.options.group.name===u.options.group.name;if(r==null&&(s||c))return!0;if(r==null||r===!1)return!1;if(s&&r==="clone")return r;if(typeof r=="function")return n(r(l,u,a,f),s)(l,u,a,f);var E=(s?l:u).options.group.name;return r===!0||typeof r=="string"&&r===E||r.join&&r.indexOf(E)>-1}}var t={},i=e.group;(!i||st(i)!="object")&&(i={name:i}),t.name=i.name,t.checkPull=n(i.pull,!0),t.checkPut=n(i.put),t.revertClone=i.revertClone,e.group=t},fn=function(){!un&&w&&b(w,"display","none")},pn=function(){!un&&w&&b(w,"display","")};vt&&!tn&&document.addEventListener("click",function(o){if(pt)return o.preventDefault(),o.stopPropagation&&o.stopPropagation(),o.stopImmediatePropagation&&o.stopImmediatePropagation(),pt=!1,!1},!0);var Ie=function(e){if(d){e=e.touches?e.touches[0]:e;var n=Vo(e.clientX,e.clientY);if(n){var t={};for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);t.target=t.rootEl=n,t.preventDefault=void 0,t.stopPropagation=void 0,n[re]._onDragOver(t)}}},jo=function(e){d&&d.parentNode[re]._isOutsideThisEl(e.target)};function _(o,e){if(!(o&&o.nodeType&&o.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(o));this.el=o,this.options=e=ve({},e),o[re]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(o.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return dn(o,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(s,l){s.setData("Text",l.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:_.supportPointer!==!1&&"PointerEvent"in window&&!qe,emptyInsertThreshold:5};Je.initializePlugins(this,o,n);for(var t in n)!(t in e)&&(e[t]=n[t]);cn(e);for(var i in this)i.charAt(0)==="_"&&typeof this[i]=="function"&&(this[i]=this[i].bind(this));this.nativeDraggable=e.forceFallback?!1:qo,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?O(o,"pointerdown",this._onTapStart):(O(o,"mousedown",this._onTapStart),O(o,"touchstart",this._onTapStart)),this.nativeDraggable&&(O(o,"dragover",this),O(o,"dragenter",this)),ht.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),ve(this,Xo())}_.prototype={constructor:_,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(Pe=null)},_getDirection:function(e,n){return typeof this.options.direction=="function"?this.options.direction.call(this,e,n,d):this.options.direction},_onTapStart:function(e){if(e.cancelable){var n=this,t=this.el,i=this.options,r=i.preventOnFilter,s=e.type,l=e.touches&&e.touches[0]||e.pointerType&&e.pointerType==="touch"&&e,u=(l||e).target,a=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||u,f=i.filter;if(oi(t),!d&&!(/mousedown|pointerdown/.test(s)&&e.button!==0||i.disabled)&&!a.isContentEditable&&!(!this.nativeDraggable&&qe&&u&&u.tagName.toUpperCase()==="SELECT")&&(u=de(u,i.draggable,t,!1),!(u&&u.animated)&&at!==u)){if(Fe=ae(u),Ve=ae(u,i.draggable),typeof f=="function"){if(f.call(this,e,u,this)){j({sortable:n,rootEl:a,name:"filter",targetEl:u,toEl:t,fromEl:t}),Q("filter",n,{evt:e}),r&&e.cancelable&&e.preventDefault();return}}else if(f&&(f=f.split(",").some(function(c){if(c=de(a,c.trim(),t,!1),c)return j({sortable:n,rootEl:c,name:"filter",targetEl:u,fromEl:t,toEl:t}),Q("filter",n,{evt:e}),!0}),f)){r&&e.cancelable&&e.preventDefault();return}i.handle&&!de(a,i.handle,t,!1)||this._prepareDragStart(e,l,u)}}},_prepareDragStart:function(e,n,t){var i=this,r=i.el,s=i.options,l=r.ownerDocument,u;if(t&&!d&&t.parentNode===r){var a=R(t);if(A=r,d=t,x=d.parentNode,Ae=d.nextSibling,at=t,et=s.group,_.dragged=d,Oe={target:d,clientX:(n||e).clientX,clientY:(n||e).clientY},jt=Oe.clientX-a.left,Kt=Oe.clientY-a.top,this._lastX=(n||e).clientX,this._lastY=(n||e).clientY,d.style["will-change"]="all",u=function(){if(Q("delayEnded",i,{evt:e}),_.eventCanceled){i._onDrop();return}i._disableDelayedDragEvents(),!Ht&&i.nativeDraggable&&(d.draggable=!0),i._triggerDragStart(e,n),j({sortable:i,name:"choose",originalEvent:e}),ne(d,s.chosenClass,!0)},s.ignore.split(",").forEach(function(f){on(d,f.trim(),Tt)}),O(l,"dragover",Ie),O(l,"mousemove",Ie),O(l,"touchmove",Ie),O(l,"mouseup",i._onDrop),O(l,"touchend",i._onDrop),O(l,"touchcancel",i._onDrop),Ht&&this.nativeDraggable&&(this.options.touchStartThreshold=4,d.draggable=!0),Q("delayStart",this,{evt:e}),s.delay&&(!s.delayOnTouchOnly||n)&&(!this.nativeDraggable||!(Ze||be))){if(_.eventCanceled){this._onDrop();return}O(l,"mouseup",i._disableDelayedDrag),O(l,"touchend",i._disableDelayedDrag),O(l,"touchcancel",i._disableDelayedDrag),O(l,"mousemove",i._delayedDragTouchMoveHandler),O(l,"touchmove",i._delayedDragTouchMoveHandler),s.supportPointer&&O(l,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(u,s.delay)}else u()}},_delayedDragTouchMoveHandler:function(e){var n=e.touches?e.touches[0]:e;Math.max(Math.abs(n.clientX-this._lastX),Math.abs(n.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){d&&Tt(d),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;T(e,"mouseup",this._disableDelayedDrag),T(e,"touchend",this._disableDelayedDrag),T(e,"touchcancel",this._disableDelayedDrag),T(e,"mousemove",this._delayedDragTouchMoveHandler),T(e,"touchmove",this._delayedDragTouchMoveHandler),T(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,n){n=n||e.pointerType=="touch"&&e,!this.nativeDraggable||n?this.options.supportPointer?O(document,"pointermove",this._onTouchMove):n?O(document,"touchmove",this._onTouchMove):O(document,"mousemove",this._onTouchMove):(O(d,"dragend",this),O(A,"dragstart",this._onDragStart));try{document.selection?ut(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,n){if(Ne=!1,A&&d){Q("dragStarted",this,{evt:n}),this.nativeDraggable&&O(document,"dragover",jo);var t=this.options;!e&&ne(d,t.dragClass,!1),ne(d,t.ghostClass,!0),_.active=this,e&&this._appendGhost(),j({sortable:this,name:"start",originalEvent:n})}else this._nulling()},_emulateDragOver:function(){if(ue){this._lastX=ue.clientX,this._lastY=ue.clientY,fn();for(var e=document.elementFromPoint(ue.clientX,ue.clientY),n=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(ue.clientX,ue.clientY),e!==n);)n=e;if(d.parentNode[re]._isOutsideThisEl(e),n)do{if(n[re]){var t=void 0;if(t=n[re]._onDragOver({clientX:ue.clientX,clientY:ue.clientY,target:e,rootEl:n}),t&&!this.options.dragoverBubble)break}e=n}while(n=n.parentNode);pn()}},_onTouchMove:function(e){if(Oe){var n=this.options,t=n.fallbackTolerance,i=n.fallbackOffset,r=e.touches?e.touches[0]:e,s=w&&Be(w,!0),l=w&&s&&s.a,u=w&&s&&s.d,a=nt&&q&&Vt(q),f=(r.clientX-Oe.clientX+i.x)/(l||1)+(a?a[0]-$t[0]:0)/(l||1),c=(r.clientY-Oe.clientY+i.y)/(u||1)+(a?a[1]-$t[1]:0)/(u||1);if(!_.active&&!Ne){if(t&&Math.max(Math.abs(r.clientX-this._lastX),Math.abs(r.clientY-this._lastY))=0&&(j({rootEl:x,name:"add",toEl:x,fromEl:A,originalEvent:e}),j({sortable:this,name:"remove",toEl:x,originalEvent:e}),j({rootEl:x,name:"sort",toEl:x,fromEl:A,originalEvent:e}),j({sortable:this,name:"sort",toEl:x,originalEvent:e})),Y&&Y.save()):oe!==Fe&&oe>=0&&(j({sortable:this,name:"update",toEl:x,originalEvent:e}),j({sortable:this,name:"sort",toEl:x,originalEvent:e})),_.active&&((oe==null||oe===-1)&&(oe=Fe,Ee=Ve),j({sortable:this,name:"end",toEl:x,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){Q("nulling",this),A=d=x=w=Ae=M=at=Se=Oe=ue=ze=oe=Ee=Fe=Ve=Pe=je=Y=et=_.dragged=_.ghost=_.clone=_.active=null,mt.forEach(function(e){e.checked=!0}),mt.length=kt=Ct=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":d&&(this._onDragOver(e),Ko(e));break;case"selectstart":e.preventDefault();break}},toArray:function(){for(var e=[],n,t=this.el.children,i=0,r=t.length,s=this.options;ii.right+r||o.clientY>t.bottom&&o.clientX>t.left:o.clientY>i.bottom+r||o.clientX>t.right&&o.clientY>t.top}function ei(o,e,n,t,i,r,s,l){var u=t?o.clientY:o.clientX,a=t?n.height:n.width,f=t?n.top:n.left,c=t?n.bottom:n.right,E=!1;if(!s){if(l&<f+a*r/2:uc-lt)return-je}else if(u>f+a*(1-i)/2&&uc-a*r/2)?u>f+a/2?1:-1:0}function ti(o){return ae(d){mn(e,f.oldIndex,f.newIndex)}},l=()=>{const f=i==null?void 0:i.querySelector(o);!f||t!==void 0||(t=new _(f,{...s,...r}))},u=()=>{t==null||t.destroy(),t=void 0},a=(f,c)=>{if(c!==void 0)t==null||t.option(f,c);else return t==null?void 0:t.option(f)};return _n(l),wn(u),{stop:u,start:l,option:a}}function mn(o,e,n){const t=Ye(o),i=t?[...Yt(o)]:Yt(o);if(n>=0&&n{i.splice(n,0,r),t&&(o.value=i)})}}const si={key:2,class:"header"},ai={class:"columns is-gapless is-mobile is-centered"},li={class:"column is-three-quarters-mobile is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},ui={key:1,class:"has-text-centered"},di={class:"columns"},ci={key:0,class:"column"},fi=["title"],pi={key:1,class:"column"},hi=["title"],mi={key:3},gi={class:"accounts"},vi={class:"tfa-container"},bi={key:0,class:"tfa-cell tfa-checkbox"},_i={class:"field"},wi=["id","value","name"],yi=["for","onKeypress"],Ei=["onClick","onKeyup"],Si={class:"tfa-text has-ellipsis"},Di=["src"],ki=["src"],Ci={class:"has-ellipsis is-family-primary is-size-6 is-size-7-mobile has-text-grey"},$i={class:"has-text-right"},Ti={key:0},Oi={key:0,class:"has-nowrap has-text-grey has-text-centered is-size-5"},Ii=["onClick","onKeyup","title"],Ai={key:1},Mi=["onClick","title"],xi={class:"has-text-right"},Pi=["onClick"],Ni={key:0,class:"tfa-cell tfa-edit has-text-grey"},Fi={key:0,class:"drag-handle tfa-cell tfa-dots has-text-grey"},Yi={__name:"Accounts",setup(o){const e=Jt("2fauth"),n=Rt(),t=En(),i=Ft(),r=Fn(),s=Sn(),{copy:l,copied:u}=Dn({legacy:!0}),a=kn(),f=Cn(),c=te(!1),E=te(!1),D=te(!1),S=te(!1);te(!1);const $=te(!1),L=te(null),K=te(null),B=te(null),X=te({otp_type:"",account:"",service:"",icon:""}),U=te([]),le=te([]);_t(c,v=>{var m;v==!1&&((m=B.value)==null||m.clearOTP())}),_t(()=>a.items,v=>{r.inManagementMode&&ce()}),_t(()=>r.inManagementMode,v=>{v&&ce()});const Z=$n(()=>!a.isEmpty&&!D.value&&!S.value);Tn(async()=>{i.preferences.getOtpOnRequest?a.fetch().then(()=>{a.backendWasNewer&&t.info({text:wt("commons.data_refreshed_to_reflect_server_changes"),duration:1e4})}):we(),f.fetch()});function ce(){ri("#dv",a.filtered,{animation:200,handle:".drag-handle",onUpdate:v=>{const m=a.filtered[v.oldIndex].id,G=a.items.findIndex(ee=>ee.id==m);mn(a.items,G,v.newIndex),rt(()=>{a.saveOrder()})}})}function Ce(){a.fetch(),a.selectNone(),S.value=!1,t.success({text:wt("twofaccounts.accounts_moved")})}function H(v){X.value.otp_type=v.otp_type,X.value.service=v.service,X.value.account=v.account,X.value.icon=v.icon,rt().then(()=>{c.value=!0,B.value.show(v.id)})}function _e(v){r.inManagementMode?a.select(v.id):!i.preferences.getOtpOnRequest&&v.otp_type.includes("totp")?J(v.otp.password):H(v)}function J(v){l(v),u&&(i.preferences.kickUserAfter==-1&&i.logout({kicked:!0}),i.preferences.clearSearchOnCopy&&(a.filter=""),i.preferences.viewDefaultGroupOnCopy&&(i.preferences.activeGroup=i.preferences.defaultGroup==-1?i.preferences.activeGroup:i.preferences.defaultGroup),t.success({text:wt("commons.copied_to_clipboard")}))}async function $e(v){it.getOtpById(v.id).then(m=>{let G=m.data;if(J(G.password),G.otp_type=="hotp"){let ee=accounts.value.find(V=>V.id==v.id);ee!=null&&(ee.counter=G.counter)}})}function se(v,m){le.value.filter(G=>G.props.period==v||v==null).forEach(G=>{G.turnOn(m)})}function me(v){le.value.filter(m=>m.props.period==v||v==null).forEach(m=>{m.turnOff()})}async function we(v){$.value=!0,me(v);let m;v==null?(L.value=-1,m=it.getAll(!0)):(L.value=v,m=it.getByIds(a.accountIdsWithPeriod(v).join(","),!0)),m.then(G=>{let ee=0;G.data.forEach(V=>{if(V.otp_type==="totp"){const Le=a.items.findIndex(bt=>bt.id===V.id);a.items[Le]==null?a.items.push(V):a.items[Le].otp=V.otp,ee=V.otp.generated_at}}),U.value.forEach(V=>{(V.props.period==v||v==null)&&rt().then(()=>{V.startLoop(ee)})})}).finally(()=>{$.value=!1,L.value=null})}async function fe(){await a.deleteSelected(),a.isEmpty&&(r.inManagementMode=!1,n.push({name:"start"}))}function Me(){r.inManagementMode=!1,a.selectNone()}return(v,m)=>{const G=ie("FontAwesomeIcon"),ee=ie("Modal"),V=ie("font-awesome-icon"),Le=ie("RouterLink"),bt=ie("VueFooter");return y(),C("div",null,[p(D)?(y(),ye(Un,{key:0,showGroupSwitch:p(D),"onUpdate:showGroupSwitch":m[0]||(m[0]=h=>Ye(D)?D.value=h:null),groups:p(f).items,"onUpdate:groups":m[1]||(m[1]=h=>p(f).items=h)},null,8,["showGroupSwitch","groups"])):z("",!0),p(S)?(y(),ye(no,{key:1,showDestinationGroupSelector:p(S),"onUpdate:showDestinationGroupSelector":m[2]||(m[2]=h=>Ye(S)?S.value=h:null),selectedAccountsIds:p(a).selectedIds,"onUpdate:selectedAccountsIds":m[3]||(m[3]=h=>p(a).selectedIds=h),groups:p(f).items,onAccountsMoved:Ce},null,8,["showDestinationGroupSelector","selectedAccountsIds","groups"])):z("",!0),p(Z)||p(D)?(y(),C("div",si,[g("div",ai,[g("div",li,[k(Nn,{keyword:p(a).filter,"onUpdate:keyword":m[4]||(m[4]=h=>p(a).filter=h)},null,8,["keyword"]),p(r).inManagementMode?(y(),ye(fo,{key:0,selectedCount:p(a).selectedCount,onClearSelected:m[5]||(m[5]=h=>p(a).selectNone()),onSelectAll:m[6]||(m[6]=h=>p(a).selectAll()),onSortAsc:m[7]||(m[7]=h=>p(a).sortAsc()),onSortDesc:m[8]||(m[8]=h=>p(a).sortDesc())},null,8,["selectedCount"])):(y(),C("div",ui,[g("div",di,[k(p(De),null,{default:P(({mode:h})=>[p(D)?(y(),C("div",ci,[g("button",{id:"btnHideGroupSwitch",title:v.$t("groups.hide_group_selector"),tabindex:"1",class:W(["button is-text is-like-text",{"has-text-grey":h!="dark"}]),onClick:m[9]||(m[9]=Te(N=>D.value=!p(D),["stop"]))},I(v.$t("groups.select_accounts_to_show")),11,fi)])):(y(),C("div",pi,[g("button",{id:"btnShowGroupSwitch",title:v.$t("groups.show_group_selector"),tabindex:"1",class:W(["button is-text is-like-text",{"has-text-grey":h!="dark"}]),onClick:m[10]||(m[10]=Te(N=>D.value=!p(D),["stop"]))},[Re(I(p(f).current)+" ("+I(p(a).filteredCount)+")  ",1),k(G,{icon:["fas","caret-down"]})],10,hi)]))]),_:1})])]))])])])):z("",!0),k(ee,{modelValue:p(E),"onUpdate:modelValue":m[13]||(m[13]=h=>Ye(E)?E.value=h:null),isFullHeight:!0},{default:P(()=>[k(Mo,{onExportTwofauthFormat:m[11]||(m[11]=h=>p(a).export()),onExportOtpauthFormat:m[12]||(m[12]=h=>p(a).export("otpauth"))})]),_:1},8,["modelValue"]),k(ee,{modelValue:p(c),"onUpdate:modelValue":m[16]||(m[16]=h=>Ye(c)?c.value=h:null)},{default:P(()=>[k(Mn,On({ref_key:"otpDisplay",ref:B},p(X),{onPleaseCloseMe:m[14]||(m[14]=h=>c.value=!1),onPleaseClearSearch:m[15]||(m[15]=h=>p(a).filter="")}),null,16)]),_:1},8,["modelValue"]),p(i).preferences.getOtpOnRequest?z("",!0):(y(),C("span",mi,[(y(!0),C(Qe,null,ct(p(a).periods,h=>(y(),ye(xn,{key:h.period,autostart:!1,period:h.period,generated_at:h.generated_at,onLoopEnded:N=>we(h.period),onLoopStarted:N=>se(h.period,N),onSteppedUp:N=>se(h.period,N),ref_for:!0,ref_key:"looperRefs",ref:U},null,8,["period","generated_at","onLoopEnded","onLoopStarted","onSteppedUp"]))),128))])),p(Z)?(y(),C("div",{key:4,class:W(["container",p(r).inManagementMode?"is-edit-mode":""])},[g("div",gi,[g("span",{id:"dv",class:W(["columns is-multiline",{"is-centered":p(i).preferences.displayMode==="grid"}])},[(y(!0),C(Qe,null,ct(p(a).filtered,h=>(y(),C("div",{class:W([[p(i).preferences.displayMode==="grid"?"tfa-grid":"tfa-list"],"column is-narrow"]),key:h.id},[g("div",vi,[k(Xe,{name:"slideCheckbox"},{default:P(()=>[p(r).inManagementMode?(y(),C("div",bi,[g("div",_i,[k(p(De),null,{default:P(({mode:N})=>[yt(g("input",{class:W(["is-checkradio is-small",N=="dark"?"is-white":"is-info"]),id:"ckb_"+h.id,value:h.id,type:"checkbox",name:"ckb_"+h.id,"onUpdate:modelValue":m[17]||(m[17]=Xt=>p(a).selectedIds=Xt)},null,10,wi),[[In,p(a).selectedIds]])]),_:2},1024),g("label",{tabindex:"0",for:"ckb_"+h.id,onKeypress:Et(Te(N=>p(a).select(h.id),["prevent"]),["space"])},null,40,yi)])])):z("",!0)]),_:2},1024),g("div",{tabindex:"0",class:"tfa-cell tfa-content is-size-3 is-size-4-mobile",onClick:[Te(N=>_e(h),["exact"]),Te(N=>$e(h),["ctrl"])],onKeyup:Et(N=>_e(h),["enter"]),role:"button"},[g("div",Si,[h.icon&&p(i).preferences.showAccountsIcons?(y(),C("img",{key:0,role:"presentation",class:"tfa-icon",src:p(e).config.subdirectory+"/storage/icons/"+h.icon,alt:""},null,8,Di)):h.icon==null&&p(i).preferences.showAccountsIcons?(y(),C("img",{key:1,role:"presentation",class:"tfa-icon",src:p(e).config.subdirectory+"/storage/noicon.svg",alt:""},null,8,ki)):z("",!0),Re(" "+I(h.service?h.service:v.$t("twofaccounts.no_service")),1),p(s).useEncryption&&h.account===v.$t("errors.indecipherable")?(y(),ye(G,{key:2,class:"has-text-danger is-size-5 ml-2",icon:["fas","exclamation-circle"]})):z("",!0),g("span",Ci,I(h.account),1)])],40,Ei),k(Xe,{name:"popLater"},{default:P(()=>[yt(g("div",$i,[h.otp!=null?(y(),C("span",Ti,[p($)==!0&&(p(L)==-1||p(L)==h.period)?(y(),C("span",Oi,[k(G,{icon:["fas","circle-notch"],spin:""})])):(y(),C("span",{key:1,class:"always-on-otp is-clickable has-nowrap has-text-grey is-size-5 ml-4",onClick:N=>J(h.otp.password),onKeyup:Et(N=>J(h.otp.password),["enter"]),title:v.$t("commons.copy_to_clipboard")},I(p(An)(h.otp.password,p(i).preferences.showOtpAsDot&&p(i).preferences.revealDottedOTP&&p(K)==h.id)),41,Ii)),h.otp_type.includes("totp")?(y(),ye(Pn,{key:2,class:W("condensed"),ref_for:!0,ref_key:"dotsRefs",ref:le,period:h.period},null,8,["period"])):z("",!0)])):(y(),C("span",Ai,[k(p(De),null,{default:P(({mode:N})=>[g("button",{class:W(["button tag",N=="dark"?"is-dark":"is-white"]),onClick:Xt=>H(h),title:v.$t("twofaccounts.import.import_this_account")},I(v.$t("commons.generate")),11,Mi)]),_:2},1024)]))],512),[[zt,p(i).preferences.getOtpOnRequest==!1&&!p(r).inManagementMode]])]),_:2},1024),p(i).preferences.showOtpAsDot&&p(i).preferences.revealDottedOTP?(y(),ye(Xe,{key:0,name:"popLater"},{default:P(()=>[yt(g("div",xi,[p(K)==h.id?(y(),C("button",{key:0,class:"pr-0 button is-ghost has-text-grey-dark",onClick:m[18]||(m[18]=Te(N=>K.value=null,["stop"]))},[k(V,{icon:["fas","eye"]})])):(y(),C("button",{key:1,class:"pr-0 button is-ghost has-text-grey-dark",onClick:Te(N=>K.value=h.id,["stop"])},[k(V,{icon:["fas","eye-slash"]})],8,Pi))],512),[[zt,p(i).preferences.getOtpOnRequest==!1&&!p(r).inManagementMode]])]),_:2},1024)):z("",!0),k(Xe,{name:"fadeInOut"},{default:P(()=>[p(r).inManagementMode?(y(),C("div",Ni,[k(p(De),null,{default:P(({mode:N})=>[k(Le,{to:{name:"editAccount",params:{twofaccountId:h.id}},class:W(["tag is-rounded mr-1",N=="dark"?"is-dark":"is-white"])},{default:P(()=>[Re(I(v.$t("commons.edit")),1)]),_:2},1032,["to","class"]),k(Le,{to:{name:"showQRcode",params:{twofaccountId:h.id}},class:W(["tag is-rounded",N=="dark"?"is-dark":"is-white"]),title:v.$t("twofaccounts.show_qrcode")},{default:P(()=>[k(G,{icon:["fas","qrcode"]})]),_:2},1032,["to","class","title"])]),_:2},1024)])):z("",!0)]),_:2},1024),k(Xe,{name:"fadeInOut"},{default:P(()=>[p(r).inManagementMode?(y(),C("div",Fi,[k(G,{icon:["fas","bars"]})])):z("",!0)]),_:1})])],2))),128))],2)]),k(bt,{showButtons:!0,internalFooterType:p(r).inManagementMode&&!p(S)?"doneButton":"navLinks",onDoneButtonClicked:Me},{default:P(()=>[k(Eo,{inManagementMode:p(r).inManagementMode,"onUpdate:inManagementMode":m[19]||(m[19]=h=>p(r).inManagementMode=h),areDisabled:p(a).hasNoneSelected,onMoveButtonClicked:m[20]||(m[20]=h=>S.value=!0),onDeleteButtonClicked:fe,onExportButtonClicked:m[21]||(m[21]=h=>E.value=!0)},null,8,["inManagementMode","areDisabled"])]),_:1},8,["internalFooterType"])],2)):z("",!0)])}}};export{Yi as default}; diff --git a/public/build/assets/AdminTabs-Bc7uXBY-.js b/public/build/assets/AdminTabs-CAsvsm7h.js similarity index 79% rename from public/build/assets/AdminTabs-Bc7uXBY-.js rename to public/build/assets/AdminTabs-CAsvsm7h.js index 95b158c0..6bddbc97 100644 --- a/public/build/assets/AdminTabs-Bc7uXBY-.js +++ b/public/build/assets/AdminTabs-CAsvsm7h.js @@ -1 +1 @@ -import{r as u,l as t,m as a,d as s,j as n,k as i,e as o,F as _,E as v,f as h,n as f,g as k,t as w}from"./app-D4Udf6Mm.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const T={class:"options-header"},b={class:"tabs is-centered is-fullwidth"},W={__name:"AdminTabs",props:{activeTab:{type:String,default:""}},setup(r){const d=u([{name:"admin.app_setup",view:"admin.appSetup",id:"lnkTabApp"},{name:"admin.auth",view:"admin.auth",id:"lnkTabAuth"},{name:"admin.users",view:"admin.users",id:"lnkTabUsers"}]),p=r;return(l,g)=>{const c=t("RouterLink"),m=t("ResponsiveWidthWrapper");return a(),s("div",T,[n(m,null,{default:i(()=>[o("div",b,[o("ul",null,[(a(!0),s(_,null,v(h(d),e=>(a(),s("li",{key:e.view,class:f({"is-active":e.view===p.activeTab})},[n(c,{id:e.id,to:{name:e.view}},{default:i(()=>[k(w(l.$t(e.name)),1)]),_:2},1032,["id","to"])],2))),128))])])]),_:1})])}}};export{W as _}; +import{r as u,e as t,f as a,g as s,m as n,p as i,h as o,F as _,E as v,i as h,n as f,j as k,t as w}from"./app-CuhK3jij.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const T={class:"options-header"},b={class:"tabs is-centered is-fullwidth"},W={__name:"AdminTabs",props:{activeTab:{type:String,default:""}},setup(r){const d=u([{name:"admin.app_setup",view:"admin.appSetup",id:"lnkTabApp"},{name:"admin.auth",view:"admin.auth",id:"lnkTabAuth"},{name:"admin.users",view:"admin.users",id:"lnkTabUsers"}]),p=r;return(l,g)=>{const c=t("RouterLink"),m=t("ResponsiveWidthWrapper");return a(),s("div",T,[n(m,null,{default:i(()=>[o("div",b,[o("ul",null,[(a(!0),s(_,null,v(h(d),e=>(a(),s("li",{key:e.view,class:f({"is-active":e.view===p.activeTab})},[n(c,{id:e.id,to:{name:e.view}},{default:i(()=>[k(w(l.$t(e.name)),1)]),_:2},1032,["id","to"])],2))),128))])])]),_:1})])}}};export{W as _}; diff --git a/public/build/assets/AppSetup-D27COJPH.js b/public/build/assets/AppSetup-D27COJPH.js new file mode 100644 index 00000000..9ffbe8e5 --- /dev/null +++ b/public/build/assets/AppSetup-D27COJPH.js @@ -0,0 +1 @@ +import{_ as D}from"./AdminTabs-CAsvsm7h.js";import{a4 as P,S as V,r as f,e as p,f as u,g as d,h as e,n as T,i as s,t as n,m as o,p as F,j as k,l as M,U as W,L as j,a as q,b as S,a2 as G,a1 as J,o as K,F as O,E as Q,H as X}from"./app-CuhK3jij.js";import{u as w}from"./appSettingsUpdater-DcxdiO4R.js";import{_ as Y}from"./CopyButton-C1eOxUvy.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const v=P("web"),$={getSystemInfos(i={}){return v.get("system/infos",{...i})},getLastRelease(i={}){return v.get("system/latestRelease",{...i})},sendTestEmail(i={}){return v.post("system/test-email",{...i})},clearCache(i={}){return v.get("system/clear-cache",{...i})},optimize(i={}){return v.get("system/optimize",{...i})}},Z={class:"columns is-mobile is-vcentered"},ee={class:"column is-narrow"},se={class:"column"},te=e("span",{class:"release-flag"},null,-1),ne={class:"is-size-7",href:"https://github.com/Bubka/2FAuth/releases"},ae={key:1,class:"has-text-grey"},oe={key:2,class:"has-text-grey"},le={__name:"VersionChecker",setup(i){const m=V(),b=f(!1),_=f();async function c(){b.value=!0,_.value=void 0,await $.getLastRelease({returnError:!0}).then(r=>{m.latestRelease=r.data.newRelease,_.value=r.data.newRelease===null?null:r.data.newRelease===!1}).catch(()=>{_.value=null}),b.value=!1}return(r,h)=>{const g=p("FontAwesomeIcon");return u(),d("div",Z,[e("div",ee,[e("button",{type:"button",class:T([s(b)?"is-loading":"","button is-link is-rounded is-small"]),onClick:c},n(r.$t("admin.check_now")),3)]),e("div",se,[o(s(W),null,{default:F(({mode:y})=>[s(m).latestRelease?(u(),d("span",{key:0,class:T(["mt-2",y=="dark"?"has-text-warning":"has-text-warning-dark"])},[te,k(n(r.$t("admin.x_is_available",{version:s(m).latestRelease}))+" ",1),e("a",ne,n(r.$t("admin.view_on_github")),1)],2)):M("",!0),s(_)?(u(),d("span",ae,[o(g,{icon:["fas","check"],class:"mr-1 has-text-success"}),k(" "+n(r.$t("commons.you_are_up_to_date")),1)])):s(_)===null?(u(),d("span",oe,[o(g,{icon:["fas","times"],class:"mr-1 has-text-danger"}),k(n(r.$t("errors.check_failed_try_later")),1)])):M("",!0)]),_:1})])])}}},ie={class:"options-tabs"},re={class:"title is-4 pt-4 has-text-grey-light"},ce={class:"field"},ue=["innerHTML"],de=["innerHTML"],me=["innerHTML"],_e={class:"columns is-mobile is-vcentered"},he={class:"column is-narrow"},pe={class:"icon is-small"},fe={class:"field"},be=["innerHTML"],ge=["innerHTML"],ye={class:"title is-4 pt-5 has-text-grey-light"},ve={class:"title is-4 pt-5 has-text-grey-light"},ke={class:"title is-4 pt-5 has-text-grey-light"},$e={class:"field"},Te=["innerHTML"],Ce=["innerHTML"],Le={class:"field mb-5 is-grouped"},we={class:"control"},Fe={class:"field"},Me=["innerHTML"],He={key:0,class:"about-debug box is-family-monospace is-size-7"},Ie=["value"],Se={class:"has-text-grey"},Ve={key:1,class:"about-debug box is-family-monospace is-size-7 has-text-warning-dark"},Ae={__name:"AppSetup",setup(i){const m=j("2fauth"),b=q(),_=S(),c=V(),r=G(m.prefix+"returnTo","accounts"),h=f(),g=f(null),y=f(!1),C=f(!1),E=m.config.subdirectory+"/up",U=location.hostname+m.config.subdirectory+"/up";function R(){y.value=!0,$.sendTestEmail().finally(()=>{y.value=!1})}function B(){C.value=!0,$.clearCache().then(t=>{S().success({type:"is-success",text:X("admin.cache_cleared")})}).finally(()=>{C.value=!1})}return J(t=>{t.name.startsWith("admin.")||_.clear()}),K(async()=>{await c.fetch(),$.getSystemInfos({returnError:!0}).then(t=>{h.value=t.data.common}).catch(()=>{h.value=null})}),(t,l)=>{const L=p("FormCheckbox"),A=p("FontAwesomeIcon"),N=p("FormWrapper"),x=p("ButtonBackCloseCancel"),z=p("VueFooter");return u(),d("div",null,[o(D,{activeTab:"admin.appSetup"}),e("div",ie,[o(N,null,{default:F(()=>{var H;return[e("form",null,[e("h4",re,n(t.$t("settings.general")),1),o(L,{modelValue:s(c).checkForUpdate,"onUpdate:modelValue":[l[0]||(l[0]=a=>s(c).checkForUpdate=a),l[1]||(l[1]=a=>s(w)("checkForUpdate",a))],fieldName:"checkForUpdate",label:"commons.check_for_update",help:"commons.check_for_update_help"},null,8,["modelValue"]),o(le),e("div",ce,[e("label",{class:"label",innerHTML:t.$t("admin.forms.test_email.label")},null,8,ue),e("p",{class:"help",innerHTML:t.$t("admin.forms.test_email.help")},null,8,de),e("p",{class:"help",innerHTML:t.$t("admin.forms.test_email.email_will_be_send_to_x",{email:s(b).email})},null,8,me)]),e("div",_e,[e("div",he,[e("button",{type:"button",class:T([s(y)?"is-loading":"","button is-link is-rounded is-small"]),onClick:R},[e("span",pe,[o(A,{icon:["far","paper-plane"]})]),e("span",null,n(t.$t("commons.send")),1)],2)])]),e("div",fe,[e("label",{class:"label",innerHTML:t.$t("admin.forms.health_endpoint.label")},null,8,be),e("p",{class:"help",innerHTML:t.$t("admin.forms.health_endpoint.help")},null,8,ge)]),e("div",{class:"field mb-5"},[e("a",{target:"_blank",href:E},n(U))]),e("h4",ye,n(t.$t("admin.storage")),1),o(L,{modelValue:s(c).storeIconsInDatabase,"onUpdate:modelValue":[l[2]||(l[2]=a=>s(c).storeIconsInDatabase=a),l[3]||(l[3]=a=>s(w)("storeIconsInDatabase",a))],fieldName:"storeIconsInDatabase",label:"admin.forms.store_icon_to_database.label",help:"admin.forms.store_icon_to_database.help"},null,8,["modelValue"]),e("h4",ve,n(t.$t("settings.security")),1),o(L,{modelValue:s(c).useEncryption,"onUpdate:modelValue":[l[4]||(l[4]=a=>s(c).useEncryption=a),l[5]||(l[5]=a=>s(w)("useEncryption",a))],fieldName:"useEncryption",label:"admin.forms.use_encryption.label",help:"admin.forms.use_encryption.help"},null,8,["modelValue"])]),e("h4",ke,n(t.$t("commons.environment")),1),e("div",$e,[e("label",{class:"label",innerHTML:t.$t("admin.forms.cache_management.label")},null,8,Te),e("p",{class:"help",innerHTML:t.$t("admin.forms.cache_management.help")},null,8,Ce)]),e("div",Le,[e("p",we,[e("button",{type:"button",class:T([s(C)?"is-loading":"","button is-link is-rounded is-small"]),onClick:B},n(t.$t("commons.clear")),3)])]),e("div",Fe,[e("label",{class:"label",innerHTML:t.$t("admin.variables")},null,8,Me)]),s(h)?(u(),d("div",He,[o(Y,{id:"btnCopyEnvVars",token:(H=s(g))==null?void 0:H.innerText},null,8,["token"]),e("ul",{ref_key:"listInfos",ref:g,id:"listInfos"},[(u(!0),d(O,null,Q(s(h),(a,I)=>(u(),d("li",{value:a,key:I},[e("b",null,n(I),1),k(": "),e("span",Se,n(a),1)],8,Ie))),128))],512)])):s(h)===null?(u(),d("div",Ve,n(t.$t("errors.error_during_data_fetching")),1)):M("",!0)]}),_:1})]),o(z,{showButtons:!0},{default:F(()=>[o(x,{returnTo:{name:s(r)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{Ae as default}; diff --git a/public/build/assets/AppSetup-Dt_jr1xm.js b/public/build/assets/AppSetup-Dt_jr1xm.js deleted file mode 100644 index 4d942758..00000000 --- a/public/build/assets/AppSetup-Dt_jr1xm.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as D}from"./AdminTabs-Bc7uXBY-.js";import{a3 as P,R as S,r as f,l as p,m as u,d,e,n as T,f as s,t as n,j as o,k as F,g as k,i as M,U as W,u as j,a as V,a1 as q,a0 as G,o as J,L as K,F as O,E as Q,H as X}from"./app-D4Udf6Mm.js";import{u as w}from"./appSettingsUpdater-B1wtRdsR.js";import{_ as Y}from"./CopyButton-CNDtpSH2.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const v=P("web"),$={getSystemInfos(i={}){return v.get("system/infos",{...i})},getLastRelease(i={}){return v.get("system/latestRelease",{...i})},sendTestEmail(i={}){return v.post("system/test-email",{...i})},clearCache(i={}){return v.get("system/clear-cache",{...i})},optimize(i={}){return v.get("system/optimize",{...i})}},Z={class:"columns is-mobile is-vcentered"},ee={class:"column is-narrow"},se={class:"column"},te=e("span",{class:"release-flag"},null,-1),ne={class:"is-size-7",href:"https://github.com/Bubka/2FAuth/releases"},ae={key:1,class:"has-text-grey"},oe={key:2,class:"has-text-grey"},le={__name:"VersionChecker",setup(i){const m=S(),b=f(!1),_=f();async function c(){b.value=!0,_.value=void 0,await $.getLastRelease({returnError:!0}).then(r=>{m.latestRelease=r.data.newRelease,_.value=r.data.newRelease===null?null:r.data.newRelease===!1}).catch(()=>{_.value=null}),b.value=!1}return(r,h)=>{const g=p("FontAwesomeIcon");return u(),d("div",Z,[e("div",ee,[e("button",{type:"button",class:T([s(b)?"is-loading":"","button is-link is-rounded is-small"]),onClick:c},n(r.$t("admin.check_now")),3)]),e("div",se,[o(s(W),null,{default:F(({mode:y})=>[s(m).latestRelease?(u(),d("span",{key:0,class:T(["mt-2",y=="dark"?"has-text-warning":"has-text-warning-dark"])},[te,k(n(r.$t("admin.x_is_available",{version:s(m).latestRelease}))+" ",1),e("a",ne,n(r.$t("admin.view_on_github")),1)],2)):M("",!0),s(_)?(u(),d("span",ae,[o(g,{icon:["fas","check"],class:"mr-1 has-text-success"}),k(" "+n(r.$t("commons.you_are_up_to_date")),1)])):s(_)===null?(u(),d("span",oe,[o(g,{icon:["fas","times"],class:"mr-1 has-text-danger"}),k(n(r.$t("errors.check_failed_try_later")),1)])):M("",!0)]),_:1})])])}}},ie={class:"options-tabs"},re={class:"title is-4 pt-4 has-text-grey-light"},ce={class:"field"},ue=["innerHTML"],de=["innerHTML"],me=["innerHTML"],_e={class:"columns is-mobile is-vcentered"},he={class:"column is-narrow"},pe={class:"icon is-small"},fe={class:"field"},be=["innerHTML"],ge=["innerHTML"],ye={class:"title is-4 pt-5 has-text-grey-light"},ve={class:"title is-4 pt-5 has-text-grey-light"},ke={class:"title is-4 pt-5 has-text-grey-light"},$e={class:"field"},Te=["innerHTML"],Ce=["innerHTML"],Le={class:"field mb-5 is-grouped"},we={class:"control"},Fe={class:"field"},Me=["innerHTML"],He={key:0,class:"about-debug box is-family-monospace is-size-7"},Ie=["value"],Ve={class:"has-text-grey"},Se={key:1,class:"about-debug box is-family-monospace is-size-7 has-text-warning-dark"},Ae={__name:"AppSetup",setup(i){const m=K("2fauth"),b=j(),_=V(),c=S(),r=q(m.prefix+"returnTo","accounts"),h=f(),g=f(null),y=f(!1),C=f(!1),E=m.config.subdirectory+"/up",R=location.hostname+m.config.subdirectory+"/up";function U(){y.value=!0,$.sendTestEmail().finally(()=>{y.value=!1})}function B(){C.value=!0,$.clearCache().then(t=>{V().success({type:"is-success",text:X("admin.cache_cleared")})}).finally(()=>{C.value=!1})}return G(t=>{t.name.startsWith("admin.")||_.clear()}),J(async()=>{await c.fetch(),$.getSystemInfos({returnError:!0}).then(t=>{h.value=t.data.common}).catch(()=>{h.value=null})}),(t,l)=>{const L=p("FormCheckbox"),A=p("FontAwesomeIcon"),N=p("FormWrapper"),x=p("ButtonBackCloseCancel"),z=p("VueFooter");return u(),d("div",null,[o(D,{activeTab:"admin.appSetup"}),e("div",ie,[o(N,null,{default:F(()=>{var H;return[e("form",null,[e("h4",re,n(t.$t("settings.general")),1),o(L,{modelValue:s(c).checkForUpdate,"onUpdate:modelValue":[l[0]||(l[0]=a=>s(c).checkForUpdate=a),l[1]||(l[1]=a=>s(w)("checkForUpdate",a))],fieldName:"checkForUpdate",label:"commons.check_for_update",help:"commons.check_for_update_help"},null,8,["modelValue"]),o(le),e("div",ce,[e("label",{class:"label",innerHTML:t.$t("admin.forms.test_email.label")},null,8,ue),e("p",{class:"help",innerHTML:t.$t("admin.forms.test_email.help")},null,8,de),e("p",{class:"help",innerHTML:t.$t("admin.forms.test_email.email_will_be_send_to_x",{email:s(b).email})},null,8,me)]),e("div",_e,[e("div",he,[e("button",{type:"button",class:T([s(y)?"is-loading":"","button is-link is-rounded is-small"]),onClick:U},[e("span",pe,[o(A,{icon:["far","paper-plane"]})]),e("span",null,n(t.$t("commons.send")),1)],2)])]),e("div",fe,[e("label",{class:"label",innerHTML:t.$t("admin.forms.health_endpoint.label")},null,8,be),e("p",{class:"help",innerHTML:t.$t("admin.forms.health_endpoint.help")},null,8,ge)]),e("div",{class:"field mb-5"},[e("a",{target:"_blank",href:E},n(R))]),e("h4",ye,n(t.$t("admin.storage")),1),o(L,{modelValue:s(c).storeIconsInDatabase,"onUpdate:modelValue":[l[2]||(l[2]=a=>s(c).storeIconsInDatabase=a),l[3]||(l[3]=a=>s(w)("storeIconsInDatabase",a))],fieldName:"storeIconsInDatabase",label:"admin.forms.store_icon_to_database.label",help:"admin.forms.store_icon_to_database.help"},null,8,["modelValue"]),e("h4",ve,n(t.$t("settings.security")),1),o(L,{modelValue:s(c).useEncryption,"onUpdate:modelValue":[l[4]||(l[4]=a=>s(c).useEncryption=a),l[5]||(l[5]=a=>s(w)("useEncryption",a))],fieldName:"useEncryption",label:"admin.forms.use_encryption.label",help:"admin.forms.use_encryption.help"},null,8,["modelValue"])]),e("h4",ke,n(t.$t("commons.environment")),1),e("div",$e,[e("label",{class:"label",innerHTML:t.$t("admin.forms.cache_management.label")},null,8,Te),e("p",{class:"help",innerHTML:t.$t("admin.forms.cache_management.help")},null,8,Ce)]),e("div",Le,[e("p",we,[e("button",{type:"button",class:T([s(C)?"is-loading":"","button is-link is-rounded is-small"]),onClick:B},n(t.$t("commons.clear")),3)])]),e("div",Fe,[e("label",{class:"label",innerHTML:t.$t("admin.variables")},null,8,Me)]),s(h)?(u(),d("div",He,[o(Y,{id:"btnCopyEnvVars",token:(H=s(g))==null?void 0:H.innerText},null,8,["token"]),e("ul",{ref_key:"listInfos",ref:g,id:"listInfos"},[(u(!0),d(O,null,Q(s(h),(a,I)=>(u(),d("li",{value:a,key:I},[e("b",null,n(I),1),k(": "),e("span",Ve,n(a),1)],8,Ie))),128))],512)])):s(h)===null?(u(),d("div",Se,n(t.$t("errors.error_during_data_fetching")),1)):M("",!0)]}),_:1})]),o(z,{showButtons:!0},{default:F(()=>[o(x,{returnTo:{name:s(r)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{Ae as default}; diff --git a/public/build/assets/Auth-DmixUfoW.js b/public/build/assets/Auth-BknZQPI-.js similarity index 80% rename from public/build/assets/Auth-DmixUfoW.js rename to public/build/assets/Auth-BknZQPI-.js index f350d7d2..a0dac73e 100644 --- a/public/build/assets/Auth-DmixUfoW.js +++ b/public/build/assets/Auth-BknZQPI-.js @@ -1 +1 @@ -import{_ as y}from"./AdminTabs-Bc7uXBY-.js";import{a as h,R as k,a1 as D,r as E,a0 as C,o as F,d as N,j as i,e as u,k as f,L as v,l as n,m as B,t as g,f as s,a6 as L,H as U}from"./app-D4Udf6Mm.js";import{u as a}from"./appSettingsUpdater-B1wtRdsR.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const x={class:"options-tabs"},I={class:"title is-4 pt-4 has-text-grey-light"},O={class:"title is-4 pt-4 has-text-grey-light"},W={__name:"Auth",setup(T){const V=v("2fauth"),m=h(),l=k(),R=D(V.prefix+"returnTo","accounts"),d=E({restrictList:null,restrictRule:null});async function p(r,e){if(d.value[r]=null,e=="")L.delete(r,{returnError:!0}).then(o=>{l[r]="",m.success({type:"is-success",text:U("settings.forms.setting_saved")})}).catch(o=>{o.response.status!==404&&m.error(o)});else{const{error:o}=await a(r,e,!0);o&&(d.value[r]=o.response.data.message)}}return C(r=>{r.name.startsWith("admin.")||m.clear()}),F(async()=>{await l.fetch()}),(r,e)=>{const o=n("FormCheckbox"),b=n("FormField"),c=n("FormWrapper"),S=n("ButtonBackCloseCancel"),_=n("VueFooter");return B(),N("div",null,[i(y,{activeTab:"admin.auth"}),u("div",x,[i(c,null,{default:f(()=>[u("form",null,[u("h4",I,g(r.$t("admin.single_sign_on")),1),i(o,{modelValue:s(l).enableSso,"onUpdate:modelValue":[e[0]||(e[0]=t=>s(l).enableSso=t),e[1]||(e[1]=t=>s(a)("enableSso",t))],fieldName:"enableSso",label:"admin.forms.enable_sso.label",help:"admin.forms.enable_sso.help"},null,8,["modelValue"]),i(o,{modelValue:s(l).useSsoOnly,"onUpdate:modelValue":[e[2]||(e[2]=t=>s(l).useSsoOnly=t),e[3]||(e[3]=t=>s(a)("useSsoOnly",t))],fieldName:"useSsoOnly",label:"admin.forms.use_sso_only.label",help:"admin.forms.use_sso_only.help",isDisabled:!s(l).enableSso,isIndented:!0},null,8,["modelValue","isDisabled"]),u("h4",O,g(r.$t("admin.registrations")),1),i(o,{modelValue:s(l).restrictRegistration,"onUpdate:modelValue":[e[4]||(e[4]=t=>s(l).restrictRegistration=t),e[5]||(e[5]=t=>s(a)("restrictRegistration",t))],fieldName:"restrictRegistration",isDisabled:s(l).disableRegistration,label:"admin.forms.restrict_registration.label",help:"admin.forms.restrict_registration.help"},null,8,["modelValue","isDisabled"]),i(b,{modelValue:s(l).restrictList,"onUpdate:modelValue":e[6]||(e[6]=t=>s(l).restrictList=t),"onChange:modelValue":e[7]||(e[7]=t=>p("restrictList",t)),fieldError:s(d).restrictList,fieldName:"restrictList",isDisabled:!s(l).restrictRegistration||s(l).disableRegistration,label:"admin.forms.restrict_list.label",help:"admin.forms.restrict_list.help",isIndented:!0},null,8,["modelValue","fieldError","isDisabled"]),i(b,{modelValue:s(l).restrictRule,"onUpdate:modelValue":e[8]||(e[8]=t=>s(l).restrictRule=t),"onChange:modelValue":e[9]||(e[9]=t=>p("restrictRule",t)),fieldError:s(d).restrictRule,fieldName:"restrictRule",isDisabled:!s(l).restrictRegistration||s(l).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(o,{modelValue:s(l).disableRegistration,"onUpdate:modelValue":[e[10]||(e[10]=t=>s(l).disableRegistration=t),e[11]||(e[11]=t=>s(a)("disableRegistration",t))],fieldName:"disableRegistration",label:"admin.forms.disable_registration.label",help:"admin.forms.disable_registration.help"},null,8,["modelValue"]),i(o,{modelValue:s(l).keepSsoRegistrationEnabled,"onUpdate:modelValue":[e[12]||(e[12]=t=>s(l).keepSsoRegistrationEnabled=t),e[13]||(e[13]=t=>s(a)("keepSsoRegistrationEnabled",t))],fieldName:"keepSsoRegistrationEnabled",isDisabled:!s(l).enableSso||!s(l).disableRegistration,label:"admin.forms.keep_sso_registration_enabled.label",help:"admin.forms.keep_sso_registration_enabled.help",isIndented:!0},null,8,["modelValue","isDisabled"])])]),_:1})]),i(_,{showButtons:!0},{default:f(()=>[i(S,{returnTo:{name:s(R)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{W as default}; +import{_ as h}from"./AdminTabs-CAsvsm7h.js";import{L as y,b as k,S as D,a2 as E,r as C,a1 as F,o as N,e as n,f as v,g as B,m as i,h as u,p as f,t as g,i as s,a7 as L,H as U}from"./app-CuhK3jij.js";import{u as a}from"./appSettingsUpdater-DcxdiO4R.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const x={class:"options-tabs"},I={class:"title is-4 pt-4 has-text-grey-light"},O={class:"title is-4 pt-4 has-text-grey-light"},W={__name:"Auth",setup(T){const V=y("2fauth"),m=k(),l=D(),c=E(V.prefix+"returnTo","accounts"),d=C({restrictList:null,restrictRule:null});async function p(r,e){if(d.value[r]=null,e=="")L.delete(r,{returnError:!0}).then(o=>{l[r]="",m.success({type:"is-success",text:U("settings.forms.setting_saved")})}).catch(o=>{o.response.status!==404&&m.error(o)});else{const{error:o}=await a(r,e,!0);o&&(d.value[r]=o.response.data.message)}}return F(r=>{r.name.startsWith("admin.")||m.clear()}),N(async()=>{await l.fetch()}),(r,e)=>{const o=n("FormCheckbox"),b=n("FormField"),R=n("FormWrapper"),S=n("ButtonBackCloseCancel"),_=n("VueFooter");return v(),B("div",null,[i(h,{activeTab:"admin.auth"}),u("div",x,[i(R,null,{default:f(()=>[u("form",null,[u("h4",I,g(r.$t("admin.single_sign_on")),1),i(o,{modelValue:s(l).enableSso,"onUpdate:modelValue":[e[0]||(e[0]=t=>s(l).enableSso=t),e[1]||(e[1]=t=>s(a)("enableSso",t))],fieldName:"enableSso",label:"admin.forms.enable_sso.label",help:"admin.forms.enable_sso.help"},null,8,["modelValue"]),i(o,{modelValue:s(l).useSsoOnly,"onUpdate:modelValue":[e[2]||(e[2]=t=>s(l).useSsoOnly=t),e[3]||(e[3]=t=>s(a)("useSsoOnly",t))],fieldName:"useSsoOnly",label:"admin.forms.use_sso_only.label",help:"admin.forms.use_sso_only.help",isDisabled:!s(l).enableSso,isIndented:!0},null,8,["modelValue","isDisabled"]),u("h4",O,g(r.$t("admin.registrations")),1),i(o,{modelValue:s(l).restrictRegistration,"onUpdate:modelValue":[e[4]||(e[4]=t=>s(l).restrictRegistration=t),e[5]||(e[5]=t=>s(a)("restrictRegistration",t))],fieldName:"restrictRegistration",isDisabled:s(l).disableRegistration,label:"admin.forms.restrict_registration.label",help:"admin.forms.restrict_registration.help"},null,8,["modelValue","isDisabled"]),i(b,{modelValue:s(l).restrictList,"onUpdate:modelValue":e[6]||(e[6]=t=>s(l).restrictList=t),"onChange:modelValue":e[7]||(e[7]=t=>p("restrictList",t)),fieldError:s(d).restrictList,fieldName:"restrictList",isDisabled:!s(l).restrictRegistration||s(l).disableRegistration,label:"admin.forms.restrict_list.label",help:"admin.forms.restrict_list.help",isIndented:!0},null,8,["modelValue","fieldError","isDisabled"]),i(b,{modelValue:s(l).restrictRule,"onUpdate:modelValue":e[8]||(e[8]=t=>s(l).restrictRule=t),"onChange:modelValue":e[9]||(e[9]=t=>p("restrictRule",t)),fieldError:s(d).restrictRule,fieldName:"restrictRule",isDisabled:!s(l).restrictRegistration||s(l).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(o,{modelValue:s(l).disableRegistration,"onUpdate:modelValue":[e[10]||(e[10]=t=>s(l).disableRegistration=t),e[11]||(e[11]=t=>s(a)("disableRegistration",t))],fieldName:"disableRegistration",label:"admin.forms.disable_registration.label",help:"admin.forms.disable_registration.help"},null,8,["modelValue"]),i(o,{modelValue:s(l).keepSsoRegistrationEnabled,"onUpdate:modelValue":[e[12]||(e[12]=t=>s(l).keepSsoRegistrationEnabled=t),e[13]||(e[13]=t=>s(a)("keepSsoRegistrationEnabled",t))],fieldName:"keepSsoRegistrationEnabled",isDisabled:!s(l).enableSso||!s(l).disableRegistration,label:"admin.forms.keep_sso_registration_enabled.label",help:"admin.forms.keep_sso_registration_enabled.help",isIndented:!0},null,8,["modelValue","isDisabled"])])]),_:1})]),i(_,{showButtons:!0},{default:f(()=>[i(S,{returnTo:{name:s(c)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{W as default}; diff --git a/public/build/assets/Capture-Bb1sXPdR.js b/public/build/assets/Capture-Bb1sXPdR.js deleted file mode 100644 index c84756e4..00000000 --- a/public/build/assets/Capture-Bb1sXPdR.js +++ /dev/null @@ -1,3 +0,0 @@ -import{q as So,r as ne,s as Be,o as Wr,v as Po,x as Ut,m as ue,d as ge,e as I,y as Eo,z as Ht,A as Ur,B as Oo,a as Ao,c as Mo,f as Z,t as Se,j as pe,k as Lt,C as xo,h as _r,i as Tr,D as $r,F as Sr,E as ko,G as Do,l as Nt,n as Pr,U as Er,p as jo,H as Or}from"./app-D4Udf6Mm.js";import{F as Ro}from"./Form-BGrUTood.js";import{S as Fo}from"./Spinner-DHClvaFf.js";import{_ as Io}from"./QrContentDisplay-C6rCu47Q.js";import{u as Wo}from"./bus-RVphoWuw.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */var Lr=(r,i,a)=>{if(!i.has(r))throw TypeError("Cannot "+a)},Ar=(r,i,a)=>(Lr(r,i,"read from private field"),a?a.call(r):i.get(r)),Uo=(r,i,a)=>{if(i.has(r))throw TypeError("Cannot add the same private member more than once");i instanceof WeakSet?i.add(r):i.set(r,a)},Lo=(r,i,a,c)=>(Lr(r,i,"write to private field"),i.set(r,a),a);const Nr=[["aztec","Aztec"],["code_128","Code128"],["code_39","Code39"],["code_93","Code93"],["codabar","Codabar"],["databar","DataBar"],["databar_expanded","DataBarExpanded"],["data_matrix","DataMatrix"],["dx_film_edge","DXFilmEdge"],["ean_13","EAN-13"],["ean_8","EAN-8"],["itf","ITF"],["maxi_code","MaxiCode"],["micro_qr_code","MicroQRCode"],["pdf417","PDF417"],["qr_code","QRCode"],["rm_qr_code","rMQRCode"],["upc_a","UPC-A"],["upc_e","UPC-E"],["linear_codes","Linear-Codes"],["matrix_codes","Matrix-Codes"]],No=[...Nr,["unknown"]].map(r=>r[0]),lt=new Map(Nr);function Ho(r){for(const[i,a]of lt)if(r===a)return i;return"unknown"}function Vo(r){if(Hr(r))return{width:r.naturalWidth,height:r.naturalHeight};if(Vr(r))return{width:r.width.baseVal.value,height:r.height.baseVal.value};if(Br(r))return{width:r.videoWidth,height:r.videoHeight};if(Gr(r))return{width:r.width,height:r.height};if(Jr(r))return{width:r.displayWidth,height:r.displayHeight};if(zr(r))return{width:r.width,height:r.height};if(qr(r))return{width:r.width,height:r.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 Hr(r){try{return r instanceof HTMLImageElement}catch{return!1}}function Vr(r){try{return r instanceof SVGImageElement}catch{return!1}}function Br(r){try{return r instanceof HTMLVideoElement}catch{return!1}}function zr(r){try{return r instanceof HTMLCanvasElement}catch{return!1}}function Gr(r){try{return r instanceof ImageBitmap}catch{return!1}}function qr(r){try{return r instanceof OffscreenCanvas}catch{return!1}}function Jr(r){try{return r instanceof VideoFrame}catch{return!1}}function Yr(r){try{return r instanceof Blob}catch{return!1}}function Bo(r){try{return r instanceof ImageData}catch{return!1}}function zo(r,i){try{const a=new OffscreenCanvas(r,i);if(a.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return a;throw void 0}catch{const c=document.createElement("canvas");return c.width=r,c.height=i,c}}async function Qr(r){if(Hr(r)&&!await Yo(r))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(Vr(r)&&!await Qo(r))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(Jr(r)&&Xo(r))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(Br(r)&&(r.readyState===0||r.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(Gr(r)&&Zo(r))throw new DOMException("The image source is detached.","InvalidStateError");const{width:i,height:a}=Vo(r);if(i===0||a===0)return null;const c=zo(i,a).getContext("2d");c.drawImage(r,0,0);try{return c.getImageData(0,0,i,a)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Go(r){let i;try{if(globalThis.createImageBitmap)i=await createImageBitmap(r);else if(globalThis.Image){i=new Image;let a="";try{a=URL.createObjectURL(r),i.src=a,await i.decode()}finally{URL.revokeObjectURL(a)}}else return r}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await Qr(i)}function qo(r){const{width:i,height:a}=r;if(i===0||a===0)return null;const c=r.getContext("2d");try{return c.getImageData(0,0,i,a)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Jo(r){if(Yr(r))return await Go(r);if(Bo(r)){if(Ko(r))throw new DOMException("The image data has been detached.","InvalidStateError");return r}return zr(r)||qr(r)?qo(r):await Qr(r)}async function Yo(r){try{return await r.decode(),!0}catch{return!1}}async function Qo(r){var i;try{return await((i=r.decode)==null?void 0:i.call(r)),!0}catch{return!1}}function Xo(r){return r.format===null}function Ko(r){return r.data.buffer.byteLength===0}function Zo(r){return r.width===0&&r.height===0}function Mr(r,i){return r instanceof DOMException?new DOMException(`${i}: ${r.message}`,r.name):r instanceof Error?new r.constructor(`${i}: ${r.message}`):new Error(`${i}: ${r}`)}const xr=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function ei(r){return r.join("|")}function ti(r){const i=kr(r);let a=0,c=xr.length-1;for(;a<=c;){const f=Math.floor((a+c)/2),m=xr[f],v=kr(m);if(v===i)return m;v{const a=r.match(/_(.+?)\.wasm$/);return a?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${a[1]}/${r}`:i+r}};let Dr=new WeakMap;function Bt(r,i){var a;const c=Dr.get(r);if(c!=null&&c.modulePromise&&i===void 0)return c.modulePromise;const f=(a=c==null?void 0:c.moduleOverrides)!=null?a:ci,m=r({...f});return Dr.set(r,{moduleOverrides:f,modulePromise:m}),m}async function ui(r,i,a=De){const c={...De,...a},f=await Bt(r),{size:m}=i,v=new Uint8Array(await i.arrayBuffer()),C=f._malloc(m);f.HEAPU8.set(v,C);const h=f.readBarcodesFromImage(C,m,Xr(f,c));f._free(C);const w=[];for(let _=0;_{var r=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(i={}){var a=i,c,f;a.ready=new Promise((e,t)=>{c=e,f=t});var m=Object.assign({},a),v="./this.program",C=typeof window=="object",h=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var w="";function _(e){return a.locateFile?a.locateFile(e,w):w+e}var b;(C||h)&&(h?w=self.location.href:typeof document<"u"&&document.currentScript&&(w=document.currentScript.src),r&&(w=r),w.indexOf("blob:")!==0?w=w.substr(0,w.replace(/[?#].*/,"").lastIndexOf("/")+1):w="",h&&(b=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)})),a.print||console.log.bind(console);var D=a.printErr||console.error.bind(console);Object.assign(a,m),m=null,a.arguments&&a.arguments,a.thisProgram&&(v=a.thisProgram),a.quit&&a.quit;var j;a.wasmBinary&&(j=a.wasmBinary),typeof WebAssembly!="object"&&te("no native wasm support detected");var k,W=!1,L,P,F,x,S,A,N,ae;function Pe(){var e=k.buffer;a.HEAP8=L=new Int8Array(e),a.HEAP16=F=new Int16Array(e),a.HEAPU8=P=new Uint8Array(e),a.HEAPU16=x=new Uint16Array(e),a.HEAP32=S=new Int32Array(e),a.HEAPU32=A=new Uint32Array(e),a.HEAPF32=N=new Float32Array(e),a.HEAPF64=ae=new Float64Array(e)}var Ee=[],je=[],Re=[];function Ge(){if(a.preRun)for(typeof a.preRun=="function"&&(a.preRun=[a.preRun]);a.preRun.length;)mt(a.preRun.shift());bt(Ee)}function ht(){bt(je)}function pt(){if(a.postRun)for(typeof a.postRun=="function"&&(a.postRun=[a.postRun]);a.postRun.length;)Fe(a.postRun.shift());bt(Re)}function mt(e){Ee.unshift(e)}function vt(e){je.unshift(e)}function Fe(e){Re.unshift(e)}var ie=0,_e=null;function yt(e){var t;ie++,(t=a.monitorRunDependencies)===null||t===void 0||t.call(a,ie)}function ve(e){var t;if(ie--,(t=a.monitorRunDependencies)===null||t===void 0||t.call(a,ie),ie==0&&_e){var n=_e;_e=null,n()}}function te(e){var t;(t=a.onAbort)===null||t===void 0||t.call(a,e),e="Aborted("+e+")",D(e),W=!0,e+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(e);throw f(n),n}var gt="data:application/octet-stream;base64,",qe=e=>e.startsWith(gt),ye;ye="zxing_reader.wasm",qe(ye)||(ye=_(ye));function Je(e){if(e==ye&&j)return new Uint8Array(j);if(b)return b(e);throw"both async and sync fetching of the wasm failed"}function wt(e){return!j&&(C||h)&&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(()=>Je(e)):Promise.resolve().then(()=>Je(e))}function Ye(e,t,n){return wt(e).then(o=>WebAssembly.instantiate(o,t)).then(o=>o).then(n,o=>{D(`failed to asynchronously prepare wasm: ${o}`),te(o)})}function pn(e,t,n,o){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!qe(t)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(s=>{var u=WebAssembly.instantiateStreaming(s,n);return u.then(o,function(l){return D(`wasm streaming compile failed: ${l}`),D("falling back to ArrayBuffer instantiation"),Ye(t,n,o)})}):Ye(t,n,o)}function mn(){var e={a:ro};function t(o,s){return Y=o.exports,k=Y.ia,Pe(),tr=Y.ma,vt(Y.ja),ve(),Y}yt();function n(o){t(o.instance)}if(a.instantiateWasm)try{return a.instantiateWasm(e,t)}catch(o){D(`Module.instantiateWasm callback failed with error: ${o}`),f(o)}return pn(j,ye,e,n).catch(f),{}}var bt=e=>{for(;e.length>0;)e.shift()(a)};a.noExitRuntime;var Qe=[],Xe=0,vn=e=>{var t=new Ct(e);return t.get_caught()||(t.set_caught(!0),Xe--),t.set_rethrown(!1),Qe.push(t),mr(t.excPtr),t.get_exception_ptr()},de=0,yn=()=>{H(0,0);var e=Qe.pop();pr(e.excPtr),de=0};function Ct(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,L[this.ptr+12>>0]=t},this.get_caught=function(){return L[this.ptr+12>>0]!=0},this.set_rethrown=function(t){t=t?1:0,L[this.ptr+13>>0]=t},this.get_rethrown=function(){return L[this.ptr+13>>0]!=0},this.init=function(t,n){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(n)},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=yr(this.get_type());if(t)return A[this.excPtr>>2];var n=this.get_adjusted_ptr();return n!==0?n:this.excPtr}}var gn=e=>{throw de||(de=e),de},_t=e=>{var t=de;if(!t)return Ve(0),0;var n=new Ct(t);n.set_adjusted_ptr(t);var o=n.get_type();if(!o)return Ve(0),t;for(var s in e){var u=e[s];if(u===0||u===o)break;var l=n.ptr+16;if(vr(u,o,l))return Ve(u),t}return Ve(o),t},wn=()=>_t([]),bn=e=>_t([e]),Cn=(e,t)=>_t([e,t]),_n=()=>{var e=Qe.pop();e||te("no exception to throw");var t=e.excPtr;throw e.get_rethrown()||(Qe.push(e),e.set_rethrown(!0),e.set_caught(!1),Xe++),de=t,de},Tn=(e,t,n)=>{var o=new Ct(e);throw o.init(t,n),de=e,Xe++,de},$n=()=>Xe,Ke={},Tt=e=>{for(;e.length;){var t=e.pop(),n=e.pop();n(t)}};function $t(e){return this.fromWireType(S[e>>2])}var Oe={},Te={},Ze={},Gt,et=e=>{throw new Gt(e)},$e=(e,t,n)=>{e.forEach(function(d){Ze[d]=t});function o(d){var p=n(d);p.length!==e.length&&et("Mismatched type converter count");for(var g=0;g{Te.hasOwnProperty(d)?s[p]=Te[d]:(u.push(d),Oe.hasOwnProperty(d)||(Oe[d]=[]),Oe[d].push(()=>{s[p]=Te[d],++l,l===u.length&&o(s)}))}),u.length===0&&o(s)},Sn=e=>{var t=Ke[e];delete Ke[e];var n=t.rawConstructor,o=t.rawDestructor,s=t.fields,u=s.map(l=>l.getterReturnType).concat(s.map(l=>l.setterArgumentType));$e([e],u,l=>{var d={};return s.forEach((p,g)=>{var T=p.fieldName,E=l[g],O=p.getter,M=p.getterContext,V=l[g+s.length],q=p.setter,U=p.setterContext;d[T]={read:K=>E.fromWireType(O(M,K)),write:(K,y)=>{var $=[];q(U,K,V.toWireType($,y)),Tt($)}}}),[{name:t.name,fromWireType:p=>{var g={};for(var T in d)g[T]=d[T].read(p);return o(p),g},toWireType:(p,g)=>{for(var T in d)if(!(T in g))throw new TypeError(`Missing field: "${T}"`);var E=n();for(T in d)d[T].write(E,g[T]);return p!==null&&p.push(o,E),E},argPackAdvance:ce,readValueFromPointer:$t,destructorFunction:o}]})},Pn=(e,t,n,o,s)=>{},En=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);qt=e},qt,X=e=>{for(var t="",n=e;P[n];)t+=qt[P[n++]];return t},Ae,R=e=>{throw new Ae(e)};function On(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var o=t.name;if(e||R(`type "${o}" must have a positive integer typeid pointer`),Te.hasOwnProperty(e)){if(n.ignoreDuplicateRegistrations)return;R(`Cannot register type '${o}' twice`)}if(Te[e]=t,delete Ze[e],Oe.hasOwnProperty(e)){var s=Oe[e];delete Oe[e],s.forEach(u=>u())}}function se(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return On(e,t,n)}var ce=8,An=(e,t,n,o)=>{t=X(t),se(e,{name:t,fromWireType:function(s){return!!s},toWireType:function(s,u){return u?n:o},argPackAdvance:ce,readValueFromPointer:function(s){return this.fromWireType(P[s])},destructorFunction:null})},Mn=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),St=e=>{function t(n){return n.$$.ptrType.registeredClass.name}R(t(e)+" instance already deleted")},Pt=!1,Jt=e=>{},xn=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Yt=e=>{e.count.value-=1;var t=e.count.value===0;t&&xn(e)},Qt=(e,t,n)=>{if(t===n)return e;if(n.baseClass===void 0)return null;var o=Qt(e,t,n.baseClass);return o===null?null:n.downcast(o)},Xt={},kn=()=>Object.keys(Ue).length,Dn=()=>{var e=[];for(var t in Ue)Ue.hasOwnProperty(t)&&e.push(Ue[t]);return e},Ie=[],Et=()=>{for(;Ie.length;){var e=Ie.pop();e.$$.deleteScheduled=!1,e.delete()}},We,jn=e=>{We=e,Ie.length&&We&&We(Et)},Rn=()=>{a.getInheritedInstanceCount=kn,a.getLiveInheritedInstances=Dn,a.flushPendingDeletes=Et,a.setDelayFunction=jn},Ue={},Fn=(e,t)=>{for(t===void 0&&R("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},In=(e,t)=>(t=Fn(e,t),Ue[t]),tt=(e,t)=>{(!t.ptrType||!t.ptr)&&et("makeClassHandle requires ptr and ptrType");var n=!!t.smartPtrType,o=!!t.smartPtr;return n!==o&&et("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Le(Object.create(e,{$$:{value:t,writable:!0}}))};function Wn(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var n=In(this.registeredClass,t);if(n!==void 0){if(n.$$.count.value===0)return n.$$.ptr=t,n.$$.smartPtr=e,n.clone();var o=n.clone();return this.destructor(e),o}function s(){return this.isSmartPointer?tt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):tt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var u=this.registeredClass.getActualType(t),l=Xt[u];if(!l)return s.call(this);var d;this.isConst?d=l.constPointerType:d=l.pointerType;var p=Qt(t,this.registeredClass,d.registeredClass);return p===null?s.call(this):this.isSmartPointer?tt(d.registeredClass.instancePrototype,{ptrType:d,ptr:p,smartPtrType:this,smartPtr:e}):tt(d.registeredClass.instancePrototype,{ptrType:d,ptr:p})}var Le=e=>typeof FinalizationRegistry>"u"?(Le=t=>t,e):(Pt=new FinalizationRegistry(t=>{Yt(t.$$)}),Le=t=>{var n=t.$$,o=!!n.smartPtr;if(o){var s={$$:n};Pt.register(t,s,t)}return t},Jt=t=>Pt.unregister(t),Le(e)),Un=()=>{Object.assign(rt.prototype,{isAliasOf(e){if(!(this instanceof rt)||!(e instanceof rt))return!1;var t=this.$$.ptrType.registeredClass,n=this.$$.ptr;e.$$=e.$$;for(var o=e.$$.ptrType.registeredClass,s=e.$$.ptr;t.baseClass;)n=t.upcast(n),t=t.baseClass;for(;o.baseClass;)s=o.upcast(s),o=o.baseClass;return t===o&&n===s},clone(){if(this.$$.ptr||St(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Le(Object.create(Object.getPrototypeOf(this),{$$:{value:Mn(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||St(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&R("Object already scheduled for deletion"),Jt(this),Yt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||St(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&R("Object already scheduled for deletion"),Ie.push(this),Ie.length===1&&We&&We(Et),this.$$.deleteScheduled=!0,this}})};function rt(){}var Ne=(e,t)=>Object.defineProperty(t,"name",{value:e}),Kt=(e,t,n)=>{if(e[t].overloadTable===void 0){var o=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||R(`Function '${n}' 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[o.argCount]=o}},Ot=(e,t,n)=>{a.hasOwnProperty(e)?((n===void 0||a[e].overloadTable!==void 0&&a[e].overloadTable[n]!==void 0)&&R(`Cannot register public name '${e}' twice`),Kt(a,e,e),a.hasOwnProperty(n)&&R(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`),a[e].overloadTable[n]=t):(a[e]=t,n!==void 0&&(a[e].numArguments=n))},Ln=48,Nn=57,Hn=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var t=e.charCodeAt(0);return t>=Ln&&t<=Nn?`_${e}`:e};function Vn(e,t,n,o,s,u,l,d){this.name=e,this.constructor=t,this.instancePrototype=n,this.rawDestructor=o,this.baseClass=s,this.getActualType=u,this.upcast=l,this.downcast=d,this.pureVirtualFunctions=[]}var At=(e,t,n)=>{for(;t!==n;)t.upcast||R(`Expected null or instance of ${n.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Bn(e,t){if(t===null)return this.isReference&&R(`null is not a valid ${this.name}`),0;t.$$||R(`Cannot pass "${jt(t)}" as a ${this.name}`),t.$$.ptr||R(`Cannot pass deleted object as a pointer of type ${this.name}`);var n=t.$$.ptrType.registeredClass,o=At(t.$$.ptr,n,this.registeredClass);return o}function zn(e,t){var n;if(t===null)return this.isReference&&R(`null is not a valid ${this.name}`),this.isSmartPointer?(n=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,n),n):0;(!t||!t.$$)&&R(`Cannot pass "${jt(t)}" as a ${this.name}`),t.$$.ptr||R(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&R(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var o=t.$$.ptrType.registeredClass;if(n=At(t.$$.ptr,o,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&R("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?n=t.$$.smartPtr:R(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:n=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)n=t.$$.smartPtr;else{var s=t.clone();n=this.rawShare(n,fe.toHandle(()=>s.delete())),e!==null&&e.push(this.rawDestructor,n)}break;default:R("Unsupporting sharing policy")}return n}function Gn(e,t){if(t===null)return this.isReference&&R(`null is not a valid ${this.name}`),0;t.$$||R(`Cannot pass "${jt(t)}" as a ${this.name}`),t.$$.ptr||R(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&R(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var n=t.$$.ptrType.registeredClass,o=At(t.$$.ptr,n,this.registeredClass);return o}function Zt(e){return this.fromWireType(A[e>>2])}var qn=()=>{Object.assign(nt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){var t;(t=this.rawDestructor)===null||t===void 0||t.call(this,e)},argPackAdvance:ce,readValueFromPointer:Zt,deleteObject(e){e!==null&&e.delete()},fromWireType:Wn})};function nt(e,t,n,o,s,u,l,d,p,g,T){this.name=e,this.registeredClass=t,this.isReference=n,this.isConst=o,this.isSmartPointer=s,this.pointeeType=u,this.sharingPolicy=l,this.rawGetPointee=d,this.rawConstructor=p,this.rawShare=g,this.rawDestructor=T,!s&&t.baseClass===void 0?o?(this.toWireType=Bn,this.destructorFunction=null):(this.toWireType=Gn,this.destructorFunction=null):this.toWireType=zn}var er=(e,t,n)=>{a.hasOwnProperty(e)||et("Replacing nonexistant public symbol"),a[e].overloadTable!==void 0&&n!==void 0?a[e].overloadTable[n]=t:(a[e]=t,a[e].argCount=n)},Jn=(e,t,n)=>{var o=a["dynCall_"+e];return n&&n.length?o.apply(null,[t].concat(n)):o.call(null,t)},at=[],tr,B=e=>{var t=at[e];return t||(e>=at.length&&(at.length=e+1),at[e]=t=tr.get(e)),t},Yn=(e,t,n)=>{if(e.includes("j"))return Jn(e,t,n);var o=B(t).apply(null,n);return o},Qn=(e,t)=>{var n=[];return function(){return n.length=0,Object.assign(n,arguments),Yn(e,t,n)}},oe=(e,t)=>{e=X(e);function n(){return e.includes("j")?Qn(e,t):B(t)}var o=n();return typeof o!="function"&&R(`unknown function pointer with signature ${e}: ${t}`),o},Xn=(e,t)=>{var n=Ne(t,function(o){this.name=t,this.message=o;var s=new Error(o).stack;s!==void 0&&(this.stack=this.toString()+` -`+s.replace(/^Error(:[^\n]*)?\n/,""))});return n.prototype=Object.create(e.prototype),n.prototype.constructor=n,n.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},n},rr,nr=e=>{var t=hr(e),n=X(t);return he(t),n},ot=(e,t)=>{var n=[],o={};function s(u){if(!o[u]&&!Te[u]){if(Ze[u]){Ze[u].forEach(s);return}n.push(u),o[u]=!0}}throw t.forEach(s),new rr(`${e}: `+n.map(nr).join([", "]))},Kn=(e,t,n,o,s,u,l,d,p,g,T,E,O)=>{T=X(T),u=oe(s,u),d&&(d=oe(l,d)),g&&(g=oe(p,g)),O=oe(E,O);var M=Hn(T);Ot(M,function(){ot(`Cannot construct ${T} due to unbound types`,[o])}),$e([e,t,n],o?[o]:[],function(V){V=V[0];var q,U;o?(q=V.registeredClass,U=q.instancePrototype):U=rt.prototype;var K=Ne(T,function(){if(Object.getPrototypeOf(this)!==y)throw new Ae("Use 'new' to construct "+T);if($.constructor_body===void 0)throw new Ae(T+" has no accessible constructor");var Cr=$.constructor_body[arguments.length];if(Cr===void 0)throw new Ae(`Tried to invoke ctor of ${T} with invalid number of parameters (${arguments.length}) - expected (${Object.keys($.constructor_body).toString()}) parameters instead!`);return Cr.apply(this,arguments)}),y=Object.create(U,{constructor:{value:K}});K.prototype=y;var $=new Vn(T,K,y,O,q,u,d,g);if($.baseClass){var J,Q;(Q=(J=$.baseClass).__derivedClasses)!==null&&Q!==void 0||(J.__derivedClasses=[]),$.baseClass.__derivedClasses.push($)}var Me=new nt(T,$,!0,!1,!1),ct=new nt(T+"*",$,!1,!1,!1),br=new nt(T+" const*",$,!1,!0,!1);return Xt[e]={pointerType:ct,constPointerType:br},er(M,K),[Me,ct,br]})},Mt=(e,t)=>{for(var n=[],o=0;o>2]);return n};function Zn(e){for(var t=1;t{var l=Mt(t,n);s=oe(o,s),$e([],[e],function(d){d=d[0];var p=`constructor ${d.name}`;if(d.registeredClass.constructor_body===void 0&&(d.registeredClass.constructor_body=[]),d.registeredClass.constructor_body[t-1]!==void 0)throw new Ae(`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]=()=>{ot(`Cannot construct ${d.name} due to unbound types`,l)},$e([],l,g=>(g.splice(1,0,null),d.registeredClass.constructor_body[t-1]=xt(p,g,null,s,u),[])),[]})},ar=e=>{e=e.trim();const t=e.indexOf("(");return t!==-1?e.substr(0,t):e},ta=(e,t,n,o,s,u,l,d,p)=>{var g=Mt(n,o);t=X(t),t=ar(t),u=oe(s,u),$e([],[e],function(T){T=T[0];var E=`${T.name}.${t}`;t.startsWith("@@")&&(t=Symbol[t.substring(2)]),d&&T.registeredClass.pureVirtualFunctions.push(t);function O(){ot(`Cannot call ${E} due to unbound types`,g)}var M=T.registeredClass.instancePrototype,V=M[t];return V===void 0||V.overloadTable===void 0&&V.className!==T.name&&V.argCount===n-2?(O.argCount=n-2,O.className=T.name,M[t]=O):(Kt(M,t,E),M[t].overloadTable[n-2]=O),$e([],g,function(q){var U=xt(E,q,T,u,l);return M[t].overloadTable===void 0?(U.argCount=n-2,M[t]=U):M[t].overloadTable[n-2]=U,[]}),[]})};function ra(){Object.assign(or.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 or(){this.allocated=[void 0],this.freelist=[]}var re=new or,kt=e=>{e>=re.reserved&&--re.get(e).refcount===0&&re.free(e)},na=()=>{for(var e=0,t=re.reserved;t{re.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),re.reserved=re.allocated.length,a.count_emval_handles=na},fe={toValue:e=>(e||R("Cannot use deleted val. handle = "+e),re.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 re.allocate({refcount:1,value:e})}}},oa=(e,t)=>{t=X(t),se(e,{name:t,fromWireType:n=>{var o=fe.toValue(n);return kt(n),o},toWireType:(n,o)=>fe.toHandle(o),argPackAdvance:ce,readValueFromPointer:$t,destructorFunction:null})},ia=(e,t,n)=>{switch(t){case 1:return n?function(o){return this.fromWireType(L[o>>0])}:function(o){return this.fromWireType(P[o>>0])};case 2:return n?function(o){return this.fromWireType(F[o>>1])}:function(o){return this.fromWireType(x[o>>1])};case 4:return n?function(o){return this.fromWireType(S[o>>2])}:function(o){return this.fromWireType(A[o>>2])};default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},sa=(e,t,n,o)=>{t=X(t);function s(){}s.values={},se(e,{name:t,constructor:s,fromWireType:function(u){return this.constructor.values[u]},toWireType:(u,l)=>l.value,argPackAdvance:ce,readValueFromPointer:ia(t,n,o),destructorFunction:null}),Ot(t,s)},Dt=(e,t)=>{var n=Te[e];return n===void 0&&R(t+" has unknown type "+nr(e)),n},ca=(e,t,n)=>{var o=Dt(e,"enum");t=X(t);var s=o.constructor,u=Object.create(o.constructor.prototype,{value:{value:n},constructor:{value:Ne(`${o.name}_${t}`,function(){})}});s.values[n]=u,s[t]=u},jt=e=>{if(e===null)return"null";var t=typeof e;return t==="object"||t==="array"||t==="function"?e.toString():""+e},ua=(e,t)=>{switch(t){case 4:return function(n){return this.fromWireType(N[n>>2])};case 8:return function(n){return this.fromWireType(ae[n>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},la=(e,t,n)=>{t=X(t),se(e,{name:t,fromWireType:o=>o,toWireType:(o,s)=>s,argPackAdvance:ce,readValueFromPointer:ua(t,n),destructorFunction:null})},da=(e,t,n,o,s,u,l)=>{var d=Mt(t,n);e=X(e),e=ar(e),s=oe(o,s),Ot(e,function(){ot(`Cannot call ${e} due to unbound types`,d)},t-1),$e([],d,function(p){var g=[p[0],null].concat(p.slice(1));return er(e,xt(e,g,null,s,u),t-1),[]})},fa=(e,t,n)=>{switch(t){case 1:return n?o=>L[o>>0]:o=>P[o>>0];case 2:return n?o=>F[o>>1]:o=>x[o>>1];case 4:return n?o=>S[o>>2]:o=>A[o>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},ha=(e,t,n,o,s)=>{t=X(t);var u=T=>T;if(o===0){var l=32-8*n;u=T=>T<>>l}var d=t.includes("unsigned"),p=(T,E)=>{},g;d?g=function(T,E){return p(E,this.name),E>>>0}:g=function(T,E){return p(E,this.name),E},se(e,{name:t,fromWireType:u,toWireType:g,argPackAdvance:ce,readValueFromPointer:fa(t,n,o!==0),destructorFunction:null})},pa=(e,t,n)=>{var o=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],s=o[t];function u(l){var d=A[l>>2],p=A[l+4>>2];return new s(L.buffer,p,d)}n=X(n),se(e,{name:n,fromWireType:u,argPackAdvance:ce,readValueFromPointer:u},{ignoreDuplicateRegistrations:!0})},ir=(e,t,n,o)=>{if(!(o>0))return 0;for(var s=n,u=n+o-1,l=0;l=55296&&d<=57343){var p=e.charCodeAt(++l);d=65536+((d&1023)<<10)|p&1023}if(d<=127){if(n>=u)break;t[n++]=d}else if(d<=2047){if(n+1>=u)break;t[n++]=192|d>>6,t[n++]=128|d&63}else if(d<=65535){if(n+2>=u)break;t[n++]=224|d>>12,t[n++]=128|d>>6&63,t[n++]=128|d&63}else{if(n+3>=u)break;t[n++]=240|d>>18,t[n++]=128|d>>12&63,t[n++]=128|d>>6&63,t[n++]=128|d&63}}return t[n]=0,n-s},ma=(e,t,n)=>ir(e,P,t,n),sr=e=>{for(var t=0,n=0;n=55296&&o<=57343?(t+=4,++n):t+=3}return t},cr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,va=(e,t,n)=>{for(var o=t+n,s=t;e[s]&&!(s>=o);)++s;if(s-t>16&&e.buffer&&cr)return cr.decode(e.subarray(t,s));for(var u="";t>10,56320|g&1023)}}return u},Rt=(e,t)=>e?va(P,e,t):"",ya=(e,t)=>{t=X(t);var n=t==="std::string";se(e,{name:t,fromWireType(o){var s=A[o>>2],u=o+4,l;if(n)for(var d=u,p=0;p<=s;++p){var g=u+p;if(p==s||P[g]==0){var T=g-d,E=Rt(d,T);l===void 0?l=E:(l+="\0",l+=E),d=g+1}}else{for(var O=new Array(s),p=0;p>2]=u,n&&l)ma(s,p,u+1);else if(l)for(var g=0;g255&&(he(p),R("String has UTF-16 code units that do not fit in 8 bits")),P[p+g]=T}else for(var g=0;g{for(var n=e,o=n>>1,s=o+t/2;!(o>=s)&&x[o];)++o;if(n=o<<1,n-e>32&&ur)return ur.decode(P.subarray(e,n));for(var u="",l=0;!(l>=t/2);++l){var d=F[e+l*2>>1];if(d==0)break;u+=String.fromCharCode(d)}return u},wa=(e,t,n)=>{var o;if((o=n)!==null&&o!==void 0||(n=2147483647),n<2)return 0;n-=2;for(var s=t,u=n>1]=d,t+=2}return F[t>>1]=0,t-s},ba=e=>e.length*2,Ca=(e,t)=>{for(var n=0,o="";!(n>=t/4);){var s=S[e+n*4>>2];if(s==0)break;if(++n,s>=65536){var u=s-65536;o+=String.fromCharCode(55296|u>>10,56320|u&1023)}else o+=String.fromCharCode(s)}return o},_a=(e,t,n)=>{var o;if((o=n)!==null&&o!==void 0||(n=2147483647),n<4)return 0;for(var s=t,u=s+n-4,l=0;l=55296&&d<=57343){var p=e.charCodeAt(++l);d=65536+((d&1023)<<10)|p&1023}if(S[t>>2]=d,t+=4,t+4>u)break}return S[t>>2]=0,t-s},Ta=e=>{for(var t=0,n=0;n=55296&&o<=57343&&++n,t+=4}return t},$a=(e,t,n)=>{n=X(n);var o,s,u,l,d;t===2?(o=ga,s=wa,l=ba,u=()=>x,d=1):t===4&&(o=Ca,s=_a,l=Ta,u=()=>A,d=2),se(e,{name:n,fromWireType:p=>{for(var g=A[p>>2],T=u(),E,O=p+4,M=0;M<=g;++M){var V=p+4+M*t;if(M==g||T[V>>d]==0){var q=V-O,U=o(O,q);E===void 0?E=U:(E+="\0",E+=U),O=V+t}}return he(p),E},toWireType:(p,g)=>{typeof g!="string"&&R(`Cannot pass non-string to C++ string type ${n}`);var T=l(g),E=Wt(4+T+t);return A[E>>2]=T>>d,s(g,E+4,T+t),p!==null&&p.push(he,E),E},argPackAdvance:ce,readValueFromPointer:$t,destructorFunction(p){he(p)}})},Sa=(e,t,n,o,s,u)=>{Ke[e]={name:X(t),rawConstructor:oe(n,o),rawDestructor:oe(s,u),fields:[]}},Pa=(e,t,n,o,s,u,l,d,p,g)=>{Ke[e].fields.push({fieldName:X(t),getterReturnType:n,getter:oe(o,s),getterContext:u,setterArgumentType:l,setter:oe(d,p),setterContext:g})},Ea=(e,t)=>{t=X(t),se(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType:()=>{},toWireType:(n,o)=>{}})},Ft=[],Oa=(e,t,n,o)=>(e=Ft[e],t=fe.toValue(t),e(null,t,n,o)),Aa={},Ma=e=>{var t=Aa[e];return t===void 0?X(e):t},lr=()=>{if(typeof globalThis=="object")return globalThis;function e(t){t.$$$embind_global$$$=t;var n=typeof $$$embind_global$$$=="object"&&t.$$$embind_global$$$==t;return n||delete t.$$$embind_global$$$,n}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.")},xa=e=>e===0?fe.toHandle(lr()):(e=Ma(e),fe.toHandle(lr()[e])),ka=e=>{var t=Ft.length;return Ft.push(e),t},Da=(e,t)=>{for(var n=new Array(e),o=0;o>2],"parameter "+o);return n},ja=Reflect.construct,Ra=(e,t,n)=>{var o=[],s=e.toWireType(o,n);return o.length&&(A[t>>2]=fe.toHandle(o)),s},Fa=(e,t,n)=>{var o=Da(e,t),s=o.shift();e--;var u=new Array(e),l=(p,g,T,E)=>{for(var O=0,M=0;Mp.name).join(", ")}) => ${s.name}>`;return ka(Ne(d,l))},Ia=e=>{e>4&&(re.get(e).refcount+=1)},Wa=e=>{var t=fe.toValue(e);Tt(t),kt(e)},Ua=(e,t)=>{e=Dt(e,"_emval_take_value");var n=e.readValueFromPointer(t);return fe.toHandle(n)},La=()=>{te("")},Na=(e,t,n)=>P.copyWithin(e,t,t+n),Ha=()=>2147483648,Va=e=>{var t=k.buffer,n=(e-t.byteLength+65535)/65536;try{return k.grow(n),Pe(),1}catch{}},Ba=e=>{var t=P.length;e>>>=0;var n=Ha();if(e>n)return!1;for(var o=(p,g)=>p+(g-p%g)%g,s=1;s<=4;s*=2){var u=t*(1+.2/s);u=Math.min(u,e+100663296);var l=Math.min(n,o(Math.max(e,u),65536)),d=Va(l);if(d)return!0}return!1},It={},za=()=>v||"./this.program",He=()=>{if(!He.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,_:za()};for(var n in It)It[n]===void 0?delete t[n]:t[n]=It[n];var o=[];for(var n in t)o.push(`${n}=${t[n]}`);He.strings=o}return He.strings},Ga=(e,t)=>{for(var n=0;n>0]=e.charCodeAt(n);L[t>>0]=0},qa=(e,t)=>{var n=0;return He().forEach((o,s)=>{var u=t+n;A[e+s*4>>2]=u,Ga(o,u),n+=o.length+1}),0},Ja=(e,t)=>{var n=He();A[e>>2]=n.length;var o=0;return n.forEach(s=>o+=s.length+1),A[t>>2]=o,0},Ya=e=>e,it=e=>e%4===0&&(e%100!==0||e%400===0),Qa=(e,t)=>{for(var n=0,o=0;o<=t;n+=e[o++]);return n},dr=[31,29,31,30,31,30,31,31,30,31,30,31],fr=[31,28,31,30,31,30,31,31,30,31,30,31],Xa=(e,t)=>{for(var n=new Date(e.getTime());t>0;){var o=it(n.getFullYear()),s=n.getMonth(),u=(o?dr:fr)[s];if(t>u-n.getDate())t-=u-n.getDate()+1,n.setDate(1),s<11?n.setMonth(s+1):(n.setMonth(0),n.setFullYear(n.getFullYear()+1));else return n.setDate(n.getDate()+t),n}return n};function Ka(e,t,n){var o=sr(e)+1,s=new Array(o);return ir(e,s,0,s.length),s}var Za=(e,t)=>{L.set(e,t)},eo=(e,t,n,o)=>{var s=A[o+40>>2],u={tm_sec:S[o>>2],tm_min:S[o+4>>2],tm_hour:S[o+8>>2],tm_mday:S[o+12>>2],tm_mon:S[o+16>>2],tm_year:S[o+20>>2],tm_wday:S[o+24>>2],tm_yday:S[o+28>>2],tm_isdst:S[o+32>>2],tm_gmtoff:S[o+36>>2],tm_zone:s?Rt(s):""},l=Rt(n),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 p in d)l=l.replace(new RegExp(p,"g"),d[p]);var g=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],T=["January","February","March","April","May","June","July","August","September","October","November","December"];function E(y,$,J){for(var Q=typeof y=="number"?y.toString():y||"";Q.length<$;)Q=J[0]+Q;return Q}function O(y,$){return E(y,$,"0")}function M(y,$){function J(Me){return Me<0?-1:Me>0?1:0}var Q;return(Q=J(y.getFullYear()-$.getFullYear()))===0&&(Q=J(y.getMonth()-$.getMonth()))===0&&(Q=J(y.getDate()-$.getDate())),Q}function V(y){switch(y.getDay()){case 0:return new Date(y.getFullYear()-1,11,29);case 1:return y;case 2:return new Date(y.getFullYear(),0,3);case 3:return new Date(y.getFullYear(),0,2);case 4:return new Date(y.getFullYear(),0,1);case 5:return new Date(y.getFullYear()-1,11,31);case 6:return new Date(y.getFullYear()-1,11,30)}}function q(y){var $=Xa(new Date(y.tm_year+1900,0,1),y.tm_yday),J=new Date($.getFullYear(),0,4),Q=new Date($.getFullYear()+1,0,4),Me=V(J),ct=V(Q);return M(Me,$)<=0?M(ct,$)<=0?$.getFullYear()+1:$.getFullYear():$.getFullYear()-1}var U={"%a":y=>g[y.tm_wday].substring(0,3),"%A":y=>g[y.tm_wday],"%b":y=>T[y.tm_mon].substring(0,3),"%B":y=>T[y.tm_mon],"%C":y=>{var $=y.tm_year+1900;return O($/100|0,2)},"%d":y=>O(y.tm_mday,2),"%e":y=>E(y.tm_mday,2," "),"%g":y=>q(y).toString().substring(2),"%G":y=>q(y),"%H":y=>O(y.tm_hour,2),"%I":y=>{var $=y.tm_hour;return $==0?$=12:$>12&&($-=12),O($,2)},"%j":y=>O(y.tm_mday+Qa(it(y.tm_year+1900)?dr:fr,y.tm_mon-1),3),"%m":y=>O(y.tm_mon+1,2),"%M":y=>O(y.tm_min,2),"%n":()=>` -`,"%p":y=>y.tm_hour>=0&&y.tm_hour<12?"AM":"PM","%S":y=>O(y.tm_sec,2),"%t":()=>" ","%u":y=>y.tm_wday||7,"%U":y=>{var $=y.tm_yday+7-y.tm_wday;return O(Math.floor($/7),2)},"%V":y=>{var $=Math.floor((y.tm_yday+7-(y.tm_wday+6)%7)/7);if((y.tm_wday+371-y.tm_yday-2)%7<=2&&$++,$){if($==53){var J=(y.tm_wday+371-y.tm_yday)%7;J!=4&&(J!=3||!it(y.tm_year))&&($=1)}}else{$=52;var Q=(y.tm_wday+7-y.tm_yday-1)%7;(Q==4||Q==5&&it(y.tm_year%400-1))&&$++}return O($,2)},"%w":y=>y.tm_wday,"%W":y=>{var $=y.tm_yday+7-(y.tm_wday+6)%7;return O(Math.floor($/7),2)},"%y":y=>(y.tm_year+1900).toString().substring(2),"%Y":y=>y.tm_year+1900,"%z":y=>{var $=y.tm_gmtoff,J=$>=0;return $=Math.abs($)/60,$=$/60*100+$%60,(J?"+":"-")+("0000"+$).slice(-4)},"%Z":y=>y.tm_zone,"%%":()=>"%"};l=l.replace(/%%/g,"\0\0");for(var p in U)l.includes(p)&&(l=l.replace(new RegExp(p,"g"),U[p](u)));l=l.replace(/\0\0/g,"%");var K=Ka(l);return K.length>t?0:(Za(K,e),K.length-1)},to=(e,t,n,o,s)=>eo(e,t,n,o);Gt=a.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},En(),Ae=a.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Un(),Rn(),qn(),rr=a.UnboundTypeError=Xn(Error,"UnboundTypeError"),ra(),aa();var ro={s:vn,u:yn,b:wn,g:bn,q:Cn,J:_n,f:Tn,V:$n,d:gn,da:Sn,Q:Pn,_:An,ca:Kn,ba:ea,w:ta,Y:oa,x:sa,h:ca,L:la,M:da,t:ha,o:pa,K:ya,C:$a,A:Sa,ea:Pa,$:Ea,R:Oa,ha:kt,fa:xa,Z:Fa,N:Ia,O:Wa,aa:Ua,B:La,X:Na,W:Ba,T:qa,U:Ja,E:wo,D:so,F:go,n:bo,a:no,e:uo,m:io,k:fo,H:vo,v:po,G:yo,z:_o,P:$o,l:lo,j:co,c:oo,p:ao,I:mo,r:Co,i:ho,y:To,ga:Ya,S:to},Y=mn(),he=a._free=e=>(he=a._free=Y.ka)(e),Wt=a._malloc=e=>(Wt=a._malloc=Y.la)(e),hr=e=>(hr=Y.na)(e),H=(e,t)=>(H=Y.oa)(e,t),Ve=e=>(Ve=Y.pa)(e),z=()=>(z=Y.qa)(),G=e=>(G=Y.ra)(e),pr=e=>(pr=Y.sa)(e),mr=e=>(mr=Y.ta)(e),vr=(e,t,n)=>(vr=Y.ua)(e,t,n),yr=e=>(yr=Y.va)(e);a.dynCall_viijii=(e,t,n,o,s,u,l)=>(a.dynCall_viijii=Y.wa)(e,t,n,o,s,u,l);var gr=a.dynCall_jiiii=(e,t,n,o,s)=>(gr=a.dynCall_jiiii=Y.xa)(e,t,n,o,s);a.dynCall_iiiiij=(e,t,n,o,s,u,l)=>(a.dynCall_iiiiij=Y.ya)(e,t,n,o,s,u,l),a.dynCall_iiiiijj=(e,t,n,o,s,u,l,d,p)=>(a.dynCall_iiiiijj=Y.za)(e,t,n,o,s,u,l,d,p),a.dynCall_iiiiiijj=(e,t,n,o,s,u,l,d,p,g)=>(a.dynCall_iiiiiijj=Y.Aa)(e,t,n,o,s,u,l,d,p,g);function no(e,t){var n=z();try{return B(e)(t)}catch(o){if(G(n),o!==o+0)throw o;H(1,0)}}function ao(e,t,n,o){var s=z();try{B(e)(t,n,o)}catch(u){if(G(s),u!==u+0)throw u;H(1,0)}}function oo(e,t,n){var o=z();try{B(e)(t,n)}catch(s){if(G(o),s!==s+0)throw s;H(1,0)}}function io(e,t,n,o){var s=z();try{return B(e)(t,n,o)}catch(u){if(G(s),u!==u+0)throw u;H(1,0)}}function so(e,t,n,o,s){var u=z();try{return B(e)(t,n,o,s)}catch(l){if(G(u),l!==l+0)throw l;H(1,0)}}function co(e,t){var n=z();try{B(e)(t)}catch(o){if(G(n),o!==o+0)throw o;H(1,0)}}function uo(e,t,n){var o=z();try{return B(e)(t,n)}catch(s){if(G(o),s!==s+0)throw s;H(1,0)}}function lo(e){var t=z();try{B(e)()}catch(n){if(G(t),n!==n+0)throw n;H(1,0)}}function fo(e,t,n,o,s){var u=z();try{return B(e)(t,n,o,s)}catch(l){if(G(u),l!==l+0)throw l;H(1,0)}}function ho(e,t,n,o,s,u,l,d,p,g,T){var E=z();try{B(e)(t,n,o,s,u,l,d,p,g,T)}catch(O){if(G(E),O!==O+0)throw O;H(1,0)}}function po(e,t,n,o,s,u,l){var d=z();try{return B(e)(t,n,o,s,u,l)}catch(p){if(G(d),p!==p+0)throw p;H(1,0)}}function mo(e,t,n,o,s){var u=z();try{B(e)(t,n,o,s)}catch(l){if(G(u),l!==l+0)throw l;H(1,0)}}function vo(e,t,n,o,s,u){var l=z();try{return B(e)(t,n,o,s,u)}catch(d){if(G(l),d!==d+0)throw d;H(1,0)}}function yo(e,t,n,o,s,u,l,d){var p=z();try{return B(e)(t,n,o,s,u,l,d)}catch(g){if(G(p),g!==g+0)throw g;H(1,0)}}function go(e,t,n,o){var s=z();try{return B(e)(t,n,o)}catch(u){if(G(s),u!==u+0)throw u;H(1,0)}}function wo(e,t,n,o){var s=z();try{return B(e)(t,n,o)}catch(u){if(G(s),u!==u+0)throw u;H(1,0)}}function bo(e){var t=z();try{return B(e)()}catch(n){if(G(t),n!==n+0)throw n;H(1,0)}}function Co(e,t,n,o,s,u,l,d){var p=z();try{B(e)(t,n,o,s,u,l,d)}catch(g){if(G(p),g!==g+0)throw g;H(1,0)}}function _o(e,t,n,o,s,u,l,d,p,g,T,E){var O=z();try{return B(e)(t,n,o,s,u,l,d,p,g,T,E)}catch(M){if(G(O),M!==M+0)throw M;H(1,0)}}function To(e,t,n,o,s,u,l,d,p,g,T,E,O,M,V,q){var U=z();try{B(e)(t,n,o,s,u,l,d,p,g,T,E,O,M,V,q)}catch(K){if(G(U),K!==K+0)throw K;H(1,0)}}function $o(e,t,n,o,s){var u=z();try{return gr(e,t,n,o,s)}catch(l){if(G(u),l!==l+0)throw l;H(1,0)}}var st;_e=function e(){st||wr(),st||(_e=e)};function wr(){if(ie>0||(Ge(),ie>0))return;function e(){st||(st=!0,a.calledRun=!0,!W&&(ht(),c(a),a.onRuntimeInitialized&&a.onRuntimeInitialized(),pt()))}a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1),e()},1)):e()}if(a.preInit)for(typeof a.preInit=="function"&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.pop()();return wr(),i.ready}})();function di(r){return Bt(zt,r)}async function fi(r,i){return ui(zt,r,i)}async function hi(r,i){return li(zt,r,i)}var ze;class Zr extends EventTarget{constructor(i={}){var a;super(),Uo(this,ze,void 0);try{const c=(a=i==null?void 0:i.formats)==null?void 0:a.filter(f=>f!=="unknown");if((c==null?void 0:c.length)===0)throw new TypeError("Hint option provided, but is empty.");c==null||c.forEach(f=>{if(!lt.has(f))throw new TypeError(`Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${f}' is not a valid enum value of type BarcodeFormat.`)}),Lo(this,ze,c??[]),di().then(f=>{this.dispatchEvent(new CustomEvent("load",{detail:f}))}).catch(f=>{this.dispatchEvent(new CustomEvent("error",{detail:f}))})}catch(c){throw Mr(c,"Failed to construct 'BarcodeDetector'")}}static async getSupportedFormats(){return No.filter(i=>i!=="unknown")}async detect(i){try{const a=await Jo(i);if(a===null)return[];let c;try{Yr(a)?c=await fi(a,{tryHarder:!0,formats:Ar(this,ze).map(f=>lt.get(f))}):c=await hi(a,{tryHarder:!0,formats:Ar(this,ze).map(f=>lt.get(f))})}catch(f){throw console.error(f),new DOMException("Barcode detection service unavailable.","NotSupportedError")}return c.map(f=>{const{topLeft:{x:m,y:v},topRight:{x:C,y:h},bottomLeft:{x:w,y:_},bottomRight:{x:b,y:D}}=f.position,j=Math.min(m,C,w,b),k=Math.min(v,h,_,D),W=Math.max(m,C,w,b),L=Math.max(v,h,_,D);return{boundingBox:new DOMRectReadOnly(j,k,W-j,L-k),rawValue:f.text,format:Ho(f.format),cornerPoints:[{x:m,y:v},{x:C,y:h},{x:b,y:D},{x:w,y:_}]}})}catch(a){throw Mr(a,"Failed to execute 'detect' on 'BarcodeDetector'")}}}ze=new WeakMap;const en=(r,i,a="error")=>{let c,f;const m=new Promise((v,C)=>{c=v,f=C,r.addEventListener(i,c),r.addEventListener(a,f)});return m.finally(()=>{r.removeEventListener(i,c),r.removeEventListener(a,f)}),m},jr=r=>new Promise(i=>setTimeout(i,r));class tn extends Error{constructor(){super("this browser has no Stream API support"),this.name="StreamApiNotSupportedError"}}class pi extends Error{constructor(){super("camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP."),this.name="InsecureContextError"}}class mi extends Error{constructor(){super("Loading camera stream timed out after 3 seconds. If you are on iOS in PWA mode, this is a known issue (see https://github.com/gruhn/vue-qrcode-reader/issues/298)"),this.name="StreamLoadTimeoutError"}}let Vt;const vi=r=>{Vt=new Zr({formats:r})},yi=async(r,{detectHandler:i,locateHandler:a,minDelay:c,formats:f})=>{Vt=new Zr({formats:f});const m=v=>async C=>{if(r.readyState>1){const{lastScanned:h,contentBefore:w,lastScanHadContent:_}=v;if(C-h!w.includes(W.rawValue));D&&i(b);const j=b.length>0;j&&a(b),!j&&_&&a(b);const k={lastScanned:C,lastScanHadContent:j,contentBefore:D?b.map(W=>W.rawValue):w};window.requestAnimationFrame(m(k))}}};m({lastScanned:performance.now(),contentBefore:[],lastScanHadContent:!1})(performance.now())};var rn={},ee={};Object.defineProperty(ee,"__esModule",{value:!0});ee.compactObject=on;ee.deprecated=Pi;var gi=ee.detectBrowser=Ei;ee.disableLog=Ti;ee.disableWarnings=$i;ee.extractVersion=dt;ee.filterStats=Oi;ee.log=Si;ee.walkStats=ft;ee.wrapPeerConnectionEvent=_i;function wi(r,i,a){return i=bi(i),i in r?Object.defineProperty(r,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):r[i]=a,r}function bi(r){var i=Ci(r,"string");return be(i)==="symbol"?i:String(i)}function Ci(r,i){if(be(r)!=="object"||r===null)return r;var a=r[Symbol.toPrimitive];if(a!==void 0){var c=a.call(r,i||"default");if(be(c)!=="object")return c;throw new TypeError("@@toPrimitive must return a primitive value.")}return(i==="string"?String:Number)(r)}function be(r){"@babel/helpers - typeof";return be=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},be(r)}var nn=!0,an=!0;function dt(r,i,a){var c=r.match(i);return c&&c.length>=a&&parseInt(c[a],10)}function _i(r,i,a){if(r.RTCPeerConnection){var c=r.RTCPeerConnection.prototype,f=c.addEventListener;c.addEventListener=function(v,C){if(v!==i)return f.apply(this,arguments);var h=function(w){var _=a(w);_&&(C.handleEvent?C.handleEvent(_):C(_))};return this._eventMap=this._eventMap||{},this._eventMap[i]||(this._eventMap[i]=new Map),this._eventMap[i].set(C,h),f.apply(this,[v,h])};var m=c.removeEventListener;c.removeEventListener=function(v,C){if(v!==i||!this._eventMap||!this._eventMap[i])return m.apply(this,arguments);if(!this._eventMap[i].has(C))return m.apply(this,arguments);var h=this._eventMap[i].get(C);return this._eventMap[i].delete(C),this._eventMap[i].size===0&&delete this._eventMap[i],Object.keys(this._eventMap).length===0&&delete this._eventMap,m.apply(this,[v,h])},Object.defineProperty(c,"on"+i,{get:function(){return this["_on"+i]},set:function(v){this["_on"+i]&&(this.removeEventListener(i,this["_on"+i]),delete this["_on"+i]),v&&this.addEventListener(i,this["_on"+i]=v)},enumerable:!0,configurable:!0})}}function Ti(r){return typeof r!="boolean"?new Error("Argument type: "+be(r)+". Please use a boolean."):(nn=r,r?"adapter.js logging disabled":"adapter.js logging enabled")}function $i(r){return typeof r!="boolean"?new Error("Argument type: "+be(r)+". Please use a boolean."):(an=!r,"adapter.js deprecation warnings "+(r?"disabled":"enabled"))}function Si(){if((typeof window>"u"?"undefined":be(window))==="object"){if(nn)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Pi(r,i){an&&console.warn(r+" is deprecated, please use "+i+" instead.")}function Ei(r){var i={browser:null,version:null};if(typeof r>"u"||!r.navigator||!r.navigator.userAgent)return i.browser="Not a browser.",i;var a=r.navigator;if(a.mozGetUserMedia)i.browser="firefox",i.version=dt(a.userAgent,/Firefox\/(\d+)\./,1);else if(a.webkitGetUserMedia||r.isSecureContext===!1&&r.webkitRTCPeerConnection)i.browser="chrome",i.version=dt(a.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(r.RTCPeerConnection&&a.userAgent.match(/AppleWebKit\/(\d+)\./))i.browser="safari",i.version=dt(a.userAgent,/AppleWebKit\/(\d+)\./,1),i.supportsUnifiedPlan=r.RTCRtpTransceiver&&"currentDirection"in r.RTCRtpTransceiver.prototype;else return i.browser="Not a supported browser.",i;return i}function Rr(r){return Object.prototype.toString.call(r)==="[object Object]"}function on(r){return Rr(r)?Object.keys(r).reduce(function(i,a){var c=Rr(r[a]),f=c?on(r[a]):r[a],m=c&&!Object.keys(f).length;return f===void 0||m?i:Object.assign(i,wi({},a,f))},{}):r}function ft(r,i,a){!i||a.has(i.id)||(a.set(i.id,i),Object.keys(i).forEach(function(c){c.endsWith("Id")?ft(r,r.get(i[c]),a):c.endsWith("Ids")&&i[c].forEach(function(f){ft(r,r.get(f),a)})}))}function Oi(r,i,a){var c=a?"outbound-rtp":"inbound-rtp",f=new Map;if(i===null)return f;var m=[];return r.forEach(function(v){v.type==="track"&&v.trackIdentifier===i.id&&m.push(v)}),m.forEach(function(v){r.forEach(function(C){C.type===c&&C.trackId===v.id&&ft(r,C,f)})}),f}Object.defineProperty(rn,"__esModule",{value:!0});var Ai=rn.shimGetUserMedia=ki,Mi=xi(ee);function sn(r){if(typeof WeakMap!="function")return null;var i=new WeakMap,a=new WeakMap;return(sn=function(c){return c?a:i})(r)}function xi(r,i){if(r&&r.__esModule)return r;if(r===null||we(r)!=="object"&&typeof r!="function")return{default:r};var a=sn(i);if(a&&a.has(r))return a.get(r);var c={},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var m in r)if(m!=="default"&&Object.prototype.hasOwnProperty.call(r,m)){var v=f?Object.getOwnPropertyDescriptor(r,m):null;v&&(v.get||v.set)?Object.defineProperty(c,m,v):c[m]=r[m]}return c.default=r,a&&a.set(r,c),c}function we(r){"@babel/helpers - typeof";return we=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},we(r)}var Fr=Mi.log;function ki(r,i){var a=r&&r.navigator;if(a.mediaDevices){var c=function(h){if(we(h)!=="object"||h.mandatory||h.optional)return h;var w={};return Object.keys(h).forEach(function(_){if(!(_==="require"||_==="advanced"||_==="mediaSource")){var b=we(h[_])==="object"?h[_]:{ideal:h[_]};b.exact!==void 0&&typeof b.exact=="number"&&(b.min=b.max=b.exact);var D=function(k,W){return k?k+W.charAt(0).toUpperCase()+W.slice(1):W==="deviceId"?"sourceId":W};if(b.ideal!==void 0){w.optional=w.optional||[];var j={};typeof b.ideal=="number"?(j[D("min",_)]=b.ideal,w.optional.push(j),j={},j[D("max",_)]=b.ideal,w.optional.push(j)):(j[D("",_)]=b.ideal,w.optional.push(j))}b.exact!==void 0&&typeof b.exact!="number"?(w.mandatory=w.mandatory||{},w.mandatory[D("",_)]=b.exact):["min","max"].forEach(function(k){b[k]!==void 0&&(w.mandatory=w.mandatory||{},w.mandatory[D(k,_)]=b[k])})}}),h.advanced&&(w.optional=(w.optional||[]).concat(h.advanced)),w},f=function(h,w){if(i.version>=61)return w(h);if(h=JSON.parse(JSON.stringify(h)),h&&we(h.audio)==="object"){var _=function(k,W,L){W in k&&!(L in k)&&(k[L]=k[W],delete k[W])};h=JSON.parse(JSON.stringify(h)),_(h.audio,"autoGainControl","googAutoGainControl"),_(h.audio,"noiseSuppression","googNoiseSuppression"),h.audio=c(h.audio)}if(h&&we(h.video)==="object"){var b=h.video.facingMode;b=b&&(we(b)==="object"?b:{ideal:b});var D=i.version<66;if(b&&(b.exact==="user"||b.exact==="environment"||b.ideal==="user"||b.ideal==="environment")&&!(a.mediaDevices.getSupportedConstraints&&a.mediaDevices.getSupportedConstraints().facingMode&&!D)){delete h.video.facingMode;var j;if(b.exact==="environment"||b.ideal==="environment"?j=["back","rear"]:(b.exact==="user"||b.ideal==="user")&&(j=["front"]),j)return a.mediaDevices.enumerateDevices().then(function(k){k=k.filter(function(L){return L.kind==="videoinput"});var W=k.find(function(L){return j.some(function(P){return L.label.toLowerCase().includes(P)})});return!W&&k.length&&j.includes("back")&&(W=k[k.length-1]),W&&(h.video.deviceId=b.exact?{exact:W.deviceId}:{ideal:W.deviceId}),h.video=c(h.video),Fr("chrome: "+JSON.stringify(h)),w(h)})}h.video=c(h.video)}return Fr("chrome: "+JSON.stringify(h)),w(h)},m=function(h){return i.version>=64?h:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[h.name]||h.name,message:h.message,constraint:h.constraint||h.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}},v=function(h,w,_){f(h,function(b){a.webkitGetUserMedia(b,w,function(D){_&&_(m(D))})})};if(a.getUserMedia=v.bind(a),a.mediaDevices.getUserMedia){var C=a.mediaDevices.getUserMedia.bind(a.mediaDevices);a.mediaDevices.getUserMedia=function(h){return f(h,function(w){return C(w).then(function(_){if(w.audio&&!_.getAudioTracks().length||w.video&&!_.getVideoTracks().length)throw _.getTracks().forEach(function(b){b.stop()}),new DOMException("","NotFoundError");return _},function(_){return Promise.reject(m(_))})})}}}}var cn={};Object.defineProperty(cn,"__esModule",{value:!0});var Di=cn.shimGetUserMedia=Fi,ji=Ri(ee);function un(r){if(typeof WeakMap!="function")return null;var i=new WeakMap,a=new WeakMap;return(un=function(c){return c?a:i})(r)}function Ri(r,i){if(r&&r.__esModule)return r;if(r===null||xe(r)!=="object"&&typeof r!="function")return{default:r};var a=un(i);if(a&&a.has(r))return a.get(r);var c={},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var m in r)if(m!=="default"&&Object.prototype.hasOwnProperty.call(r,m)){var v=f?Object.getOwnPropertyDescriptor(r,m):null;v&&(v.get||v.set)?Object.defineProperty(c,m,v):c[m]=r[m]}return c.default=r,a&&a.set(r,c),c}function xe(r){"@babel/helpers - typeof";return xe=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},xe(r)}function Fi(r,i){var a=r&&r.navigator,c=r&&r.MediaStreamTrack;if(a.getUserMedia=function(h,w,_){ji.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),a.mediaDevices.getUserMedia(h).then(w,_)},!(i.version>55&&"autoGainControl"in a.mediaDevices.getSupportedConstraints())){var f=function(h,w,_){w in h&&!(_ in h)&&(h[_]=h[w],delete h[w])},m=a.mediaDevices.getUserMedia.bind(a.mediaDevices);if(a.mediaDevices.getUserMedia=function(h){return xe(h)==="object"&&xe(h.audio)==="object"&&(h=JSON.parse(JSON.stringify(h)),f(h.audio,"autoGainControl","mozAutoGainControl"),f(h.audio,"noiseSuppression","mozNoiseSuppression")),m(h)},c&&c.prototype.getSettings){var v=c.prototype.getSettings;c.prototype.getSettings=function(){var h=v.apply(this,arguments);return f(h,"mozAutoGainControl","autoGainControl"),f(h,"mozNoiseSuppression","noiseSuppression"),h}}if(c&&c.prototype.applyConstraints){var C=c.prototype.applyConstraints;c.prototype.applyConstraints=function(h){return this.kind==="audio"&&xe(h)==="object"&&(h=JSON.parse(JSON.stringify(h)),f(h,"autoGainControl","mozAutoGainControl"),f(h,"noiseSuppression","mozNoiseSuppression")),C.apply(this,[h])}}}}var le={};Object.defineProperty(le,"__esModule",{value:!0});le.shimAudioContext=Gi;le.shimCallbacksAPI=Ni;le.shimConstraints=fn;le.shimCreateOfferLegacy=zi;var Ii=le.shimGetUserMedia=Hi;le.shimLocalStreamsAPI=Ui;le.shimRTCIceServerUrls=Vi;le.shimRemoteStreamsAPI=Li;le.shimTrackEventTransceiver=Bi;var ln=Wi(ee);function dn(r){if(typeof WeakMap!="function")return null;var i=new WeakMap,a=new WeakMap;return(dn=function(c){return c?a:i})(r)}function Wi(r,i){if(r&&r.__esModule)return r;if(r===null||Ce(r)!=="object"&&typeof r!="function")return{default:r};var a=dn(i);if(a&&a.has(r))return a.get(r);var c={},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var m in r)if(m!=="default"&&Object.prototype.hasOwnProperty.call(r,m)){var v=f?Object.getOwnPropertyDescriptor(r,m):null;v&&(v.get||v.set)?Object.defineProperty(c,m,v):c[m]=r[m]}return c.default=r,a&&a.set(r,c),c}function Ce(r){"@babel/helpers - typeof";return Ce=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},Ce(r)}function Ui(r){if(!(Ce(r)!=="object"||!r.RTCPeerConnection)){if("getLocalStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in r.RTCPeerConnection.prototype)){var i=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addStream=function(a){var c=this;this._localStreams||(this._localStreams=[]),this._localStreams.includes(a)||this._localStreams.push(a),a.getAudioTracks().forEach(function(f){return i.call(c,f,a)}),a.getVideoTracks().forEach(function(f){return i.call(c,f,a)})},r.RTCPeerConnection.prototype.addTrack=function(a){for(var c=this,f=arguments.length,m=new Array(f>1?f-1:0),v=1;v=0)){a._remoteStreams.push(f);var m=new Event("addstream");m.stream=f,a.dispatchEvent(m)}})}),i.apply(a,arguments)}}}function Ni(r){if(!(Ce(r)!=="object"||!r.RTCPeerConnection)){var i=r.RTCPeerConnection.prototype,a=i.createOffer,c=i.createAnswer,f=i.setLocalDescription,m=i.setRemoteDescription,v=i.addIceCandidate;i.createOffer=function(h,w){var _=arguments.length>=2?arguments[2]:arguments[0],b=a.apply(this,[_]);return w?(b.then(h,w),Promise.resolve()):b},i.createAnswer=function(h,w){var _=arguments.length>=2?arguments[2]:arguments[0],b=c.apply(this,[_]);return w?(b.then(h,w),Promise.resolve()):b};var C=function(h,w,_){var b=f.apply(this,[h]);return _?(b.then(w,_),Promise.resolve()):b};i.setLocalDescription=C,C=function(h,w,_){var b=m.apply(this,[h]);return _?(b.then(w,_),Promise.resolve()):b},i.setRemoteDescription=C,C=function(h,w,_){var b=v.apply(this,[h]);return _?(b.then(w,_),Promise.resolve()):b},i.addIceCandidate=C}}function Hi(r){var i=r&&r.navigator;if(i.mediaDevices&&i.mediaDevices.getUserMedia){var a=i.mediaDevices,c=a.getUserMedia.bind(a);i.mediaDevices.getUserMedia=function(f){return c(fn(f))}}!i.getUserMedia&&i.mediaDevices&&i.mediaDevices.getUserMedia&&(i.getUserMedia=(function(f,m,v){i.mediaDevices.getUserMedia(f).then(m,v)}).bind(i))}function fn(r){return r&&r.video!==void 0?Object.assign({},r,{video:ln.compactObject(r.video)}):r}function Vi(r){if(r.RTCPeerConnection){var i=r.RTCPeerConnection;r.RTCPeerConnection=function(a,c){if(a&&a.iceServers){for(var f=[],m=0;m{let i=!1,a;return(...c)=>(i||(a=r(c),i=!0),a)};function me(r,i){if(r===!1)throw new Error(i??"assertion failure")}const Ji=qi(()=>{const r=gi(window);switch(r.browser){case"chrome":Ai(window,r);break;case"firefox":Di(window,r);break;case"safari":Ii(window,r);break;default:throw new tn}});let ke=Promise.resolve({type:"stop",data:{}});async function Ir(r,i,a){var c,f,m;if(window.isSecureContext!==!0)throw new pi;if(((c=navigator==null?void 0:navigator.mediaDevices)==null?void 0:c.getUserMedia)===void 0)throw new tn;Ji();const v=await navigator.mediaDevices.getUserMedia({audio:!1,video:i});r.srcObject!==void 0?r.srcObject=v:r.mozSrcObject!==void 0?r.mozSrcObject=v:window.URL.createObjectURL?r.src=window.URL.createObjectURL(v):window.webkitURL?r.src=window.webkitURL.createObjectURL(v):r.src=v.id,r.play(),await Promise.race([en(r,"loadeddata"),jr(3e3).then(()=>{throw new mi})]),await jr(500);const[C]=v.getVideoTracks(),h=(m=(f=C==null?void 0:C.getCapabilities)==null?void 0:f.call(C))!=null?m:{};let w=!1;return a&&h.torch&&(await C.applyConstraints({advanced:[{torch:!0}]}),w=!0),{type:"start",data:{videoEl:r,stream:v,capabilities:h,constraints:i,isTorchOn:w}}}async function Yi(r,{constraints:i,torch:a,restart:c=!1}){ke=ke.then(m=>{if(m.type==="start"){const{data:{videoEl:v,stream:C,constraints:h,isTorchOn:w}}=m;return!c&&r===v&&i===h&&a===w?m:hn(v,C,w).then(()=>Ir(r,i,a))}return Ir(r,i,a)});const f=await ke;if(f.type==="stop")throw new Error("Something went wrong with the camera task queue (start task).");return f.data.capabilities}async function hn(r,i,a){r.src="",r.srcObject=null,r.load(),await en(r,"error");for(const c of i.getTracks())a!=null||await c.applyConstraints({advanced:[{torch:!1}]}),i.removeTrack(c),c.stop();return{type:"stop",data:{}}}async function ut(){if(ke=ke.then(r=>{if(r.type==="stop")return r;const{data:{videoEl:i,stream:a,isTorchOn:c}}=r;return hn(i,a,c)}),(await ke).type==="start")throw new Error("Something went wrong with the camera task queue (stop task).")}const Qi=So({__name:"QrcodeStream",props:{constraints:{type:Object,default(){return{facingMode:"environment"}}},formats:{type:Array,default:()=>["qr_code"]},paused:{type:Boolean,default:!1},torch:{type:Boolean,default:!1},track:{type:Function}},emits:["detect","camera-on","camera-off","error"],setup(r,{emit:i}){const a=r,c=i,f=ne(a.constraints),m=ne(a.formats);Be(()=>a.constraints,(x,S)=>{JSON.stringify(x)!==JSON.stringify(S)&&(f.value=x)},{deep:!0}),Be(()=>a.formats,(x,S)=>{JSON.stringify(x)!==JSON.stringify(S)&&(m.value=x)},{deep:!0});const v=ne(),C=ne(),h=ne(),w=ne(!1),_=ne(!1);Wr(()=>{_.value=!0}),Po(()=>{ut()});const b=Ut(()=>({torch:a.torch,constraints:f.value,shouldStream:_.value&&!a.paused}));Be(b,async x=>{const S=h.value;me(S!==void 0,"cameraSettings watcher should never be triggered when component is not mounted. Thus video element should always be defined.");const A=v.value;me(A!==void 0,"cameraSettings watcher should never be triggered when component is not mounted. Thus canvas should always be defined.");const N=A.getContext("2d");if(me(N!==null,"if cavnas is defined, canvas 2d context should also be non-null"),x.shouldStream){ut(),w.value=!1;try{const ae=await Yi(S,x);_.value?(w.value=!0,c("camera-on",ae)):await ut()}catch(ae){c("error",ae)}}else A.width=S.videoWidth,A.height=S.videoHeight,N.drawImage(S,0,0,S.videoWidth,S.videoHeight),ut(),w.value=!1,c("camera-off")},{deep:!0}),Be(m,x=>{_.value&&vi(x)});const D=Ut(()=>b.value.shouldStream&&w.value);Be(D,x=>{if(x){me(v.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus pause frame canvas is defined"),j(v.value),me(C.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus tracking canvas is defined"),j(C.value);const S=()=>a.track===void 0?500:40;me(h.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus video element is defined"),yi(h.value,{detectHandler:A=>c("detect",A),formats:m.value,locateHandler:k,minDelay:S()})}});const j=x=>{const S=x.getContext("2d");me(S!==null,"canvas 2d context should always be non-null"),S.clearRect(0,0,x.width,x.height)},k=x=>{const S=C.value;me(S!==void 0,"onLocate handler should only be called when component is mounted. Thus tracking canvas is always defined.");const A=h.value;if(me(A!==void 0,"onLocate handler should only be called when component is mounted. Thus video element is always defined."),x.length===0||a.track===void 0)j(S);else{const N=A.offsetWidth,ae=A.offsetHeight,Pe=A.videoWidth,Ee=A.videoHeight,je=Math.max(N/Pe,ae/Ee),Re=Pe*je,Ge=Ee*je,ht=Re/Pe,pt=Ge/Ee,mt=(N-Re)/2,vt=(ae-Ge)/2,Fe=({x:ve,y:te})=>({x:Math.floor(ve*ht),y:Math.floor(te*pt)}),ie=({x:ve,y:te})=>({x:Math.floor(ve+mt),y:Math.floor(te+vt)}),_e=x.map(ve=>{const{boundingBox:te,cornerPoints:gt}=ve,{x:qe,y:ye}=ie(Fe({x:te.x,y:te.y})),{x:Je,y:wt}=Fe({x:te.width,y:te.height});return{...ve,cornerPoints:gt.map(Ye=>ie(Fe(Ye))),boundingBox:DOMRectReadOnly.fromRect({x:qe,y:ye,width:Je,height:wt})}});S.width=A.offsetWidth,S.height=A.offsetHeight;const yt=S.getContext("2d");a.track(_e,yt)}},W={width:"100%",height:"100%",position:"relative","z-index":"0"},L={width:"100%",height:"100%",position:"absolute",top:"0",left:"0"},P={width:"100%",height:"100%","object-fit":"cover"},F=Ut(()=>D.value?P:{...P,visibility:"hidden",position:"absolute"});return(x,S)=>(ue(),ge("div",{style:W},[I("video",{ref_key:"videoRef",ref:h,style:Eo(F.value),autoplay:"",muted:"",playsinline:""},null,4),Ht(I("canvas",{id:"qrcode-stream-pause-frame",ref_key:"pauseFrameRef",ref:v,style:P},null,512),[[Ur,!D.value]]),I("canvas",{id:"qrcode-stream-tracking-layer",ref_key:"trackingLayerRef",ref:C,style:L},null,512),I("div",{style:L},[Oo(x.$slots,"default")])]))}}),Xi={class:"modal is-active"},Ki=I("div",{class:"modal-background"},null,-1),Zi={class:"modal-content"},es={class:"section"},ts={class:"columns is-centered"},rs={class:"column is-three-quarters"},ns={class:"modal-slot has-text-centered is-shadowless"},as={key:0},os={class:"block is-size-5"},is={key:0},ss={class:"is-size-7 mb-3"},cs={class:"is-size-7 mb-3"},us={class:"addressbar columns is-mobile is-gapless"},ls={class:"column is-narrow has-text-left circled"},ds=I("div",{class:"column has-text-left ml-3"}," http://my.2fauth.app/... ",-1),fs={class:"column is-narrow has-text-right"},hs={key:1,class:"is-size-7"},ps={class:"fullscreen-streamer"},ms={key:1,class:"field has-addons has-addons-centered mt-3"},vs={class:"control has-icons-left"},ys={class:"select"},gs=["value"],ws={class:"icon is-small is-left"},bs={class:"fullscreen-footer"},Ps={__name:"Capture",setup(r){const i=jo(),a=Wo(),c=Ao(),f=ne(!1),m=ne(null),v=ne([]),C=ne(""),h=Mo(new Ro({qrcode:null,uri:""})),w=ne(!1);Wr(async()=>{var P;(P=navigator.mediaDevices)!=null&&P.enumerateDevices?await navigator.mediaDevices.enumerateDevices().then(F=>{v.value=F.filter(({kind:x})=>x==="videoinput"),v.value.length>0?m.value=v.value[0]:C.value="no_cam_on_device"}).catch(F=>{_(F)}):C.value="secured_context_required"});const _=P=>{P.name==="NotAllowedError"?C.value="need_grant_permission":P.name==="NotFoundError"?C.value="no_cam_on_device":P.name==="NotSupportedError"||P.name==="InsecureContextError"?C.value="secured_context_required":P.name==="NotReadableError"?C.value="not_readable":P.name==="OverconstrainedError"?C.value="camera_not_suitable":P.name==="StreamApiNotSupportedError"?C.value="stream_api_not_supported":c.error(P)},b=async P=>{const[F]=P;h.uri=F.rawValue,h.uri?h.uri.slice(0,33).toLowerCase()=="otpauth-migration://offline?data="?(a.migrationUri=h.uri,i.push({name:"importAccounts"})):h.uri.slice(0,15).toLowerCase()!=="otpauth://totp/"&&h.uri.slice(0,15).toLowerCase()!=="otpauth://hotp/"?(w.value=!0,c.warn({text:Or("errors.no_valid_otp")})):(a.decodedUri=h.uri,i.push({name:"createAccount"})):c.warn({text:Or("errors.qrcode_cannot_be_read")})};function D(P){f.value=!0}function j(P){f.value=!1}function k(){i.go(-1)}const W=(P,F)=>{for(const x of P){const[S,...A]=x.cornerPoints;F.strokeStyle="red",F.beginPath(),F.moveTo(S.x,S.y);for(const{x:N,y:ae}of A)F.lineTo(N,ae);F.lineTo(S.x,S.y),F.closePath(),F.stroke()}};function L(){location.reload()}return(P,F)=>{const x=Nt("FontAwesomeIcon"),S=Nt("ButtonBackCloseCancel"),A=Nt("modal");return ue(),ge(Sr,null,[I("div",Xi,[Ki,I("div",Zi,[I("section",es,[I("div",ts,[I("div",rs,[I("div",ns,[Z(C)?(ue(),ge("div",as,[I("p",os,Se(P.$t("twofaccounts.stream.live_scan_cant_start")),1),pe(Z(Er),null,{default:Lt(({mode:N})=>[I("p",{class:Pr(["block",{"has-text-light":N=="dark"}])},Se(P.$t("twofaccounts.stream."+Z(C)+".reason")),3)]),_:1}),Z(C)=="need_grant_permission"?(ue(),ge("div",is,[I("p",ss,Se(P.$t("twofaccounts.stream.need_grant_permission.solution")),1),I("p",cs,Se(P.$t("twofaccounts.stream.need_grant_permission.click_camera_icon")),1),I("div",us,[I("div",ls,[pe(x,{icon:["fas","lock"],class:"ml-1",size:"xs"}),pe(x,{icon:["fas","video-slash"],class:"ml-3",size:"xs"})]),ds,I("div",fs,[pe(x,{icon:["far","star"],class:"mr-1"})])]),I("p",null,[I("a",{onClick:xo(L,["stop"])},Se(P.$t("commons.refresh")),1)])])):(ue(),ge("p",hs,Se(P.$t("twofaccounts.stream."+Z(C)+".solution")),1))])):(ue(),_r(Z(Er),{key:1},{default:Lt(({mode:N})=>[I("span",{class:Pr(["is-size-4",N=="dark"?"has-text-light":"has-text-grey-dark"])},[pe(Fo,{isVisible:!0,type:"raw",class:"is-size-1"})],2)]),_:1}))])])])])]),Ht(I("div",ps,[Z(m)!==null?(ue(),_r(Z(Qi),{key:0,track:W,onDetect:b,onError:_,onCameraOn:D,onCameraOff:j})):Tr("",!0),Z(f)&&Z(v).length>1?(ue(),ge("div",ms,[I("p",vs,[I("span",ys,[Ht(I("select",{"onUpdate:modelValue":F[0]||(F[0]=N=>$r(m)?m.value=N:null)},[(ue(!0),ge(Sr,null,ko(Z(v),N=>(ue(),ge("option",{key:N.label,value:N},Se(N.label?N.label:P.$t("commons.default")),9,gs))),128))],512),[[Do,Z(m)]])]),I("span",ws,[pe(x,{icon:["fas","camera"]})])])])):Tr("",!0)],512),[[Ur,!Z(C)]]),I("div",bs,[pe(S,{action:"cancel",isCapture:!0,useLinkTag:!1,onCanceled:F[1]||(F[1]=N=>k())})])]),pe(A,{modelValue:Z(w),"onUpdate:modelValue":F[2]||(F[2]=N=>$r(w)?w.value=N:null)},{default:Lt(()=>[pe(Io,{qrContent:Z(h).uri},null,8,["qrContent"])]),_:1},8,["modelValue"])],64)}}};export{Ps as default}; diff --git a/public/build/assets/Capture-CIhtAWpt.js b/public/build/assets/Capture-CIhtAWpt.js new file mode 100644 index 00000000..a6243f5e --- /dev/null +++ b/public/build/assets/Capture-CIhtAWpt.js @@ -0,0 +1,3 @@ +import{q as So,r as ne,s as Be,o as Wr,v as Po,x as Ut,f as ue,g as ge,h as I,y as Eo,z as Ht,A as Ur,B as Oo,u as Ao,b as Mo,d as xo,e as Lt,i as Z,t as Se,m as pe,p as Nt,C as ko,k as _r,l as Tr,D as $r,F as Sr,E as Do,G as jo,n as Pr,U as Er,H as Or}from"./app-CuhK3jij.js";import{F as Ro}from"./Form-o2lWAB-o.js";import{S as Fo}from"./Spinner-WULdfd4I.js";import{_ as Io}from"./QrContentDisplay-CyBGNU2O.js";import{u as Wo}from"./bus-BalNs30H.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */var Lr=(r,i,a)=>{if(!i.has(r))throw TypeError("Cannot "+a)},Ar=(r,i,a)=>(Lr(r,i,"read from private field"),a?a.call(r):i.get(r)),Uo=(r,i,a)=>{if(i.has(r))throw TypeError("Cannot add the same private member more than once");i instanceof WeakSet?i.add(r):i.set(r,a)},Lo=(r,i,a,c)=>(Lr(r,i,"write to private field"),c?c.call(r,a):i.set(r,a),a);const Nr=[["aztec","Aztec"],["code_128","Code128"],["code_39","Code39"],["code_93","Code93"],["codabar","Codabar"],["databar","DataBar"],["databar_expanded","DataBarExpanded"],["data_matrix","DataMatrix"],["dx_film_edge","DXFilmEdge"],["ean_13","EAN-13"],["ean_8","EAN-8"],["itf","ITF"],["maxi_code","MaxiCode"],["micro_qr_code","MicroQRCode"],["pdf417","PDF417"],["qr_code","QRCode"],["rm_qr_code","rMQRCode"],["upc_a","UPC-A"],["upc_e","UPC-E"],["linear_codes","Linear-Codes"],["matrix_codes","Matrix-Codes"]],No=[...Nr,["unknown"]].map(r=>r[0]),lt=new Map(Nr);function Ho(r){for(const[i,a]of lt)if(r===a)return i;return"unknown"}function Vo(r){if(Hr(r))return{width:r.naturalWidth,height:r.naturalHeight};if(Vr(r))return{width:r.width.baseVal.value,height:r.height.baseVal.value};if(Br(r))return{width:r.videoWidth,height:r.videoHeight};if(Gr(r))return{width:r.width,height:r.height};if(Jr(r))return{width:r.displayWidth,height:r.displayHeight};if(zr(r))return{width:r.width,height:r.height};if(qr(r))return{width:r.width,height:r.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 Hr(r){try{return r instanceof HTMLImageElement}catch{return!1}}function Vr(r){try{return r instanceof SVGImageElement}catch{return!1}}function Br(r){try{return r instanceof HTMLVideoElement}catch{return!1}}function zr(r){try{return r instanceof HTMLCanvasElement}catch{return!1}}function Gr(r){try{return r instanceof ImageBitmap}catch{return!1}}function qr(r){try{return r instanceof OffscreenCanvas}catch{return!1}}function Jr(r){try{return r instanceof VideoFrame}catch{return!1}}function Yr(r){try{return r instanceof Blob}catch{return!1}}function Bo(r){try{return r instanceof ImageData}catch{return!1}}function zo(r,i){try{const a=new OffscreenCanvas(r,i);if(a.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return a;throw void 0}catch{const c=document.createElement("canvas");return c.width=r,c.height=i,c}}async function Qr(r){if(Hr(r)&&!await Yo(r))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(Vr(r)&&!await Qo(r))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(Jr(r)&&Xo(r))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(Br(r)&&(r.readyState===0||r.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(Gr(r)&&Zo(r))throw new DOMException("The image source is detached.","InvalidStateError");const{width:i,height:a}=Vo(r);if(i===0||a===0)return null;const c=zo(i,a).getContext("2d");c.drawImage(r,0,0);try{return c.getImageData(0,0,i,a)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Go(r){let i;try{if(globalThis.createImageBitmap)i=await createImageBitmap(r);else if(globalThis.Image){i=new Image;let a="";try{a=URL.createObjectURL(r),i.src=a,await i.decode()}finally{URL.revokeObjectURL(a)}}else return r}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await Qr(i)}function qo(r){const{width:i,height:a}=r;if(i===0||a===0)return null;const c=r.getContext("2d");try{return c.getImageData(0,0,i,a)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Jo(r){if(Yr(r))return await Go(r);if(Bo(r)){if(Ko(r))throw new DOMException("The image data has been detached.","InvalidStateError");return r}return zr(r)||qr(r)?qo(r):await Qr(r)}async function Yo(r){try{return await r.decode(),!0}catch{return!1}}async function Qo(r){var i;try{return await((i=r.decode)==null?void 0:i.call(r)),!0}catch{return!1}}function Xo(r){return r.format===null}function Ko(r){return r.data.buffer.byteLength===0}function Zo(r){return r.width===0&&r.height===0}function Mr(r,i){return r instanceof DOMException?new DOMException(`${i}: ${r.message}`,r.name):r instanceof Error?new r.constructor(`${i}: ${r.message}`):new Error(`${i}: ${r}`)}const xr=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function ei(r){return r.join("|")}function ti(r){const i=kr(r);let a=0,c=xr.length-1;for(;a<=c;){const f=Math.floor((a+c)/2),m=xr[f],v=kr(m);if(v===i)return m;v{const a=r.match(/_(.+?)\.wasm$/);return a?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${a[1]}/${r}`:i+r}};let Dr=new WeakMap;function Bt(r,i){var a;const c=Dr.get(r);if(c!=null&&c.modulePromise&&(i===void 0||Object.is(i,c.moduleOverrides)))return c.modulePromise;const f=(a=i??(c==null?void 0:c.moduleOverrides))!=null?a:ci,m=r({...f});return Dr.set(r,{moduleOverrides:f,modulePromise:m}),m}async function ui(r,i,a=De){const c={...De,...a},f=await Bt(r),{size:m}=i,v=new Uint8Array(await i.arrayBuffer()),C=f._malloc(m);f.HEAPU8.set(v,C);const h=f.readBarcodesFromImage(C,m,Xr(f,c));f._free(C);const w=[];for(let _=0;_{var r=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(i={}){var a=i,c,f;a.ready=new Promise((e,t)=>{c=e,f=t});var m=Object.assign({},a),v="./this.program",C=typeof window=="object",h=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var w="";function _(e){return a.locateFile?a.locateFile(e,w):w+e}var b;(C||h)&&(h?w=self.location.href:typeof document<"u"&&document.currentScript&&(w=document.currentScript.src),r&&(w=r),w.indexOf("blob:")!==0?w=w.substr(0,w.replace(/[?#].*/,"").lastIndexOf("/")+1):w="",h&&(b=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)})),a.print||console.log.bind(console);var D=a.printErr||console.error.bind(console);Object.assign(a,m),m=null,a.arguments&&a.arguments,a.thisProgram&&(v=a.thisProgram),a.quit&&a.quit;var j;a.wasmBinary&&(j=a.wasmBinary),typeof WebAssembly!="object"&&te("no native wasm support detected");var k,W=!1,L,P,F,x,S,A,N,ae;function Pe(){var e=k.buffer;a.HEAP8=L=new Int8Array(e),a.HEAP16=F=new Int16Array(e),a.HEAPU8=P=new Uint8Array(e),a.HEAPU16=x=new Uint16Array(e),a.HEAP32=S=new Int32Array(e),a.HEAPU32=A=new Uint32Array(e),a.HEAPF32=N=new Float32Array(e),a.HEAPF64=ae=new Float64Array(e)}var Ee=[],je=[],Re=[];function Ge(){if(a.preRun)for(typeof a.preRun=="function"&&(a.preRun=[a.preRun]);a.preRun.length;)mt(a.preRun.shift());bt(Ee)}function ht(){bt(je)}function pt(){if(a.postRun)for(typeof a.postRun=="function"&&(a.postRun=[a.postRun]);a.postRun.length;)Fe(a.postRun.shift());bt(Re)}function mt(e){Ee.unshift(e)}function vt(e){je.unshift(e)}function Fe(e){Re.unshift(e)}var ie=0,_e=null;function yt(e){var t;ie++,(t=a.monitorRunDependencies)===null||t===void 0||t.call(a,ie)}function ve(e){var t;if(ie--,(t=a.monitorRunDependencies)===null||t===void 0||t.call(a,ie),ie==0&&_e){var n=_e;_e=null,n()}}function te(e){var t;(t=a.onAbort)===null||t===void 0||t.call(a,e),e="Aborted("+e+")",D(e),W=!0,e+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(e);throw f(n),n}var gt="data:application/octet-stream;base64,",qe=e=>e.startsWith(gt),ye;ye="zxing_reader.wasm",qe(ye)||(ye=_(ye));function Je(e){if(e==ye&&j)return new Uint8Array(j);if(b)return b(e);throw"both async and sync fetching of the wasm failed"}function wt(e){return!j&&(C||h)&&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(()=>Je(e)):Promise.resolve().then(()=>Je(e))}function Ye(e,t,n){return wt(e).then(o=>WebAssembly.instantiate(o,t)).then(o=>o).then(n,o=>{D(`failed to asynchronously prepare wasm: ${o}`),te(o)})}function pn(e,t,n,o){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!qe(t)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(s=>{var u=WebAssembly.instantiateStreaming(s,n);return u.then(o,function(l){return D(`wasm streaming compile failed: ${l}`),D("falling back to ArrayBuffer instantiation"),Ye(t,n,o)})}):Ye(t,n,o)}function mn(){var e={a:ro};function t(o,s){return Y=o.exports,k=Y.ia,Pe(),tr=Y.ma,vt(Y.ja),ve(),Y}yt();function n(o){t(o.instance)}if(a.instantiateWasm)try{return a.instantiateWasm(e,t)}catch(o){D(`Module.instantiateWasm callback failed with error: ${o}`),f(o)}return pn(j,ye,e,n).catch(f),{}}var bt=e=>{for(;e.length>0;)e.shift()(a)};a.noExitRuntime;var Qe=[],Xe=0,vn=e=>{var t=new Ct(e);return t.get_caught()||(t.set_caught(!0),Xe--),t.set_rethrown(!1),Qe.push(t),mr(t.excPtr),t.get_exception_ptr()},de=0,yn=()=>{H(0,0);var e=Qe.pop();pr(e.excPtr),de=0};function Ct(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,L[this.ptr+12>>0]=t},this.get_caught=function(){return L[this.ptr+12>>0]!=0},this.set_rethrown=function(t){t=t?1:0,L[this.ptr+13>>0]=t},this.get_rethrown=function(){return L[this.ptr+13>>0]!=0},this.init=function(t,n){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(n)},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=yr(this.get_type());if(t)return A[this.excPtr>>2];var n=this.get_adjusted_ptr();return n!==0?n:this.excPtr}}var gn=e=>{throw de||(de=e),de},_t=e=>{var t=de;if(!t)return Ve(0),0;var n=new Ct(t);n.set_adjusted_ptr(t);var o=n.get_type();if(!o)return Ve(0),t;for(var s in e){var u=e[s];if(u===0||u===o)break;var l=n.ptr+16;if(vr(u,o,l))return Ve(u),t}return Ve(o),t},wn=()=>_t([]),bn=e=>_t([e]),Cn=(e,t)=>_t([e,t]),_n=()=>{var e=Qe.pop();e||te("no exception to throw");var t=e.excPtr;throw e.get_rethrown()||(Qe.push(e),e.set_rethrown(!0),e.set_caught(!1),Xe++),de=t,de},Tn=(e,t,n)=>{var o=new Ct(e);throw o.init(t,n),de=e,Xe++,de},$n=()=>Xe,Ke={},Tt=e=>{for(;e.length;){var t=e.pop(),n=e.pop();n(t)}};function $t(e){return this.fromWireType(S[e>>2])}var Oe={},Te={},Ze={},Gt,et=e=>{throw new Gt(e)},$e=(e,t,n)=>{e.forEach(function(d){Ze[d]=t});function o(d){var p=n(d);p.length!==e.length&&et("Mismatched type converter count");for(var g=0;g{Te.hasOwnProperty(d)?s[p]=Te[d]:(u.push(d),Oe.hasOwnProperty(d)||(Oe[d]=[]),Oe[d].push(()=>{s[p]=Te[d],++l,l===u.length&&o(s)}))}),u.length===0&&o(s)},Sn=e=>{var t=Ke[e];delete Ke[e];var n=t.rawConstructor,o=t.rawDestructor,s=t.fields,u=s.map(l=>l.getterReturnType).concat(s.map(l=>l.setterArgumentType));$e([e],u,l=>{var d={};return s.forEach((p,g)=>{var T=p.fieldName,E=l[g],O=p.getter,M=p.getterContext,V=l[g+s.length],q=p.setter,U=p.setterContext;d[T]={read:K=>E.fromWireType(O(M,K)),write:(K,y)=>{var $=[];q(U,K,V.toWireType($,y)),Tt($)}}}),[{name:t.name,fromWireType:p=>{var g={};for(var T in d)g[T]=d[T].read(p);return o(p),g},toWireType:(p,g)=>{for(var T in d)if(!(T in g))throw new TypeError(`Missing field: "${T}"`);var E=n();for(T in d)d[T].write(E,g[T]);return p!==null&&p.push(o,E),E},argPackAdvance:ce,readValueFromPointer:$t,destructorFunction:o}]})},Pn=(e,t,n,o,s)=>{},En=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);qt=e},qt,X=e=>{for(var t="",n=e;P[n];)t+=qt[P[n++]];return t},Ae,R=e=>{throw new Ae(e)};function On(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var o=t.name;if(e||R(`type "${o}" must have a positive integer typeid pointer`),Te.hasOwnProperty(e)){if(n.ignoreDuplicateRegistrations)return;R(`Cannot register type '${o}' twice`)}if(Te[e]=t,delete Ze[e],Oe.hasOwnProperty(e)){var s=Oe[e];delete Oe[e],s.forEach(u=>u())}}function se(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return On(e,t,n)}var ce=8,An=(e,t,n,o)=>{t=X(t),se(e,{name:t,fromWireType:function(s){return!!s},toWireType:function(s,u){return u?n:o},argPackAdvance:ce,readValueFromPointer:function(s){return this.fromWireType(P[s])},destructorFunction:null})},Mn=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),St=e=>{function t(n){return n.$$.ptrType.registeredClass.name}R(t(e)+" instance already deleted")},Pt=!1,Jt=e=>{},xn=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Yt=e=>{e.count.value-=1;var t=e.count.value===0;t&&xn(e)},Qt=(e,t,n)=>{if(t===n)return e;if(n.baseClass===void 0)return null;var o=Qt(e,t,n.baseClass);return o===null?null:n.downcast(o)},Xt={},kn=()=>Object.keys(Ue).length,Dn=()=>{var e=[];for(var t in Ue)Ue.hasOwnProperty(t)&&e.push(Ue[t]);return e},Ie=[],Et=()=>{for(;Ie.length;){var e=Ie.pop();e.$$.deleteScheduled=!1,e.delete()}},We,jn=e=>{We=e,Ie.length&&We&&We(Et)},Rn=()=>{a.getInheritedInstanceCount=kn,a.getLiveInheritedInstances=Dn,a.flushPendingDeletes=Et,a.setDelayFunction=jn},Ue={},Fn=(e,t)=>{for(t===void 0&&R("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},In=(e,t)=>(t=Fn(e,t),Ue[t]),tt=(e,t)=>{(!t.ptrType||!t.ptr)&&et("makeClassHandle requires ptr and ptrType");var n=!!t.smartPtrType,o=!!t.smartPtr;return n!==o&&et("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Le(Object.create(e,{$$:{value:t,writable:!0}}))};function Wn(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var n=In(this.registeredClass,t);if(n!==void 0){if(n.$$.count.value===0)return n.$$.ptr=t,n.$$.smartPtr=e,n.clone();var o=n.clone();return this.destructor(e),o}function s(){return this.isSmartPointer?tt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):tt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var u=this.registeredClass.getActualType(t),l=Xt[u];if(!l)return s.call(this);var d;this.isConst?d=l.constPointerType:d=l.pointerType;var p=Qt(t,this.registeredClass,d.registeredClass);return p===null?s.call(this):this.isSmartPointer?tt(d.registeredClass.instancePrototype,{ptrType:d,ptr:p,smartPtrType:this,smartPtr:e}):tt(d.registeredClass.instancePrototype,{ptrType:d,ptr:p})}var Le=e=>typeof FinalizationRegistry>"u"?(Le=t=>t,e):(Pt=new FinalizationRegistry(t=>{Yt(t.$$)}),Le=t=>{var n=t.$$,o=!!n.smartPtr;if(o){var s={$$:n};Pt.register(t,s,t)}return t},Jt=t=>Pt.unregister(t),Le(e)),Un=()=>{Object.assign(rt.prototype,{isAliasOf(e){if(!(this instanceof rt)||!(e instanceof rt))return!1;var t=this.$$.ptrType.registeredClass,n=this.$$.ptr;e.$$=e.$$;for(var o=e.$$.ptrType.registeredClass,s=e.$$.ptr;t.baseClass;)n=t.upcast(n),t=t.baseClass;for(;o.baseClass;)s=o.upcast(s),o=o.baseClass;return t===o&&n===s},clone(){if(this.$$.ptr||St(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Le(Object.create(Object.getPrototypeOf(this),{$$:{value:Mn(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||St(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&R("Object already scheduled for deletion"),Jt(this),Yt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||St(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&R("Object already scheduled for deletion"),Ie.push(this),Ie.length===1&&We&&We(Et),this.$$.deleteScheduled=!0,this}})};function rt(){}var Ne=(e,t)=>Object.defineProperty(t,"name",{value:e}),Kt=(e,t,n)=>{if(e[t].overloadTable===void 0){var o=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||R(`Function '${n}' 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[o.argCount]=o}},Ot=(e,t,n)=>{a.hasOwnProperty(e)?((n===void 0||a[e].overloadTable!==void 0&&a[e].overloadTable[n]!==void 0)&&R(`Cannot register public name '${e}' twice`),Kt(a,e,e),a.hasOwnProperty(n)&&R(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`),a[e].overloadTable[n]=t):(a[e]=t,n!==void 0&&(a[e].numArguments=n))},Ln=48,Nn=57,Hn=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var t=e.charCodeAt(0);return t>=Ln&&t<=Nn?`_${e}`:e};function Vn(e,t,n,o,s,u,l,d){this.name=e,this.constructor=t,this.instancePrototype=n,this.rawDestructor=o,this.baseClass=s,this.getActualType=u,this.upcast=l,this.downcast=d,this.pureVirtualFunctions=[]}var At=(e,t,n)=>{for(;t!==n;)t.upcast||R(`Expected null or instance of ${n.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Bn(e,t){if(t===null)return this.isReference&&R(`null is not a valid ${this.name}`),0;t.$$||R(`Cannot pass "${jt(t)}" as a ${this.name}`),t.$$.ptr||R(`Cannot pass deleted object as a pointer of type ${this.name}`);var n=t.$$.ptrType.registeredClass,o=At(t.$$.ptr,n,this.registeredClass);return o}function zn(e,t){var n;if(t===null)return this.isReference&&R(`null is not a valid ${this.name}`),this.isSmartPointer?(n=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,n),n):0;(!t||!t.$$)&&R(`Cannot pass "${jt(t)}" as a ${this.name}`),t.$$.ptr||R(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&R(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var o=t.$$.ptrType.registeredClass;if(n=At(t.$$.ptr,o,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&R("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?n=t.$$.smartPtr:R(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:n=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)n=t.$$.smartPtr;else{var s=t.clone();n=this.rawShare(n,fe.toHandle(()=>s.delete())),e!==null&&e.push(this.rawDestructor,n)}break;default:R("Unsupporting sharing policy")}return n}function Gn(e,t){if(t===null)return this.isReference&&R(`null is not a valid ${this.name}`),0;t.$$||R(`Cannot pass "${jt(t)}" as a ${this.name}`),t.$$.ptr||R(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&R(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var n=t.$$.ptrType.registeredClass,o=At(t.$$.ptr,n,this.registeredClass);return o}function Zt(e){return this.fromWireType(A[e>>2])}var qn=()=>{Object.assign(nt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){var t;(t=this.rawDestructor)===null||t===void 0||t.call(this,e)},argPackAdvance:ce,readValueFromPointer:Zt,deleteObject(e){e!==null&&e.delete()},fromWireType:Wn})};function nt(e,t,n,o,s,u,l,d,p,g,T){this.name=e,this.registeredClass=t,this.isReference=n,this.isConst=o,this.isSmartPointer=s,this.pointeeType=u,this.sharingPolicy=l,this.rawGetPointee=d,this.rawConstructor=p,this.rawShare=g,this.rawDestructor=T,!s&&t.baseClass===void 0?o?(this.toWireType=Bn,this.destructorFunction=null):(this.toWireType=Gn,this.destructorFunction=null):this.toWireType=zn}var er=(e,t,n)=>{a.hasOwnProperty(e)||et("Replacing nonexistant public symbol"),a[e].overloadTable!==void 0&&n!==void 0?a[e].overloadTable[n]=t:(a[e]=t,a[e].argCount=n)},Jn=(e,t,n)=>{var o=a["dynCall_"+e];return n&&n.length?o.apply(null,[t].concat(n)):o.call(null,t)},at=[],tr,B=e=>{var t=at[e];return t||(e>=at.length&&(at.length=e+1),at[e]=t=tr.get(e)),t},Yn=(e,t,n)=>{if(e.includes("j"))return Jn(e,t,n);var o=B(t).apply(null,n);return o},Qn=(e,t)=>{var n=[];return function(){return n.length=0,Object.assign(n,arguments),Yn(e,t,n)}},oe=(e,t)=>{e=X(e);function n(){return e.includes("j")?Qn(e,t):B(t)}var o=n();return typeof o!="function"&&R(`unknown function pointer with signature ${e}: ${t}`),o},Xn=(e,t)=>{var n=Ne(t,function(o){this.name=t,this.message=o;var s=new Error(o).stack;s!==void 0&&(this.stack=this.toString()+` +`+s.replace(/^Error(:[^\n]*)?\n/,""))});return n.prototype=Object.create(e.prototype),n.prototype.constructor=n,n.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},n},rr,nr=e=>{var t=hr(e),n=X(t);return he(t),n},ot=(e,t)=>{var n=[],o={};function s(u){if(!o[u]&&!Te[u]){if(Ze[u]){Ze[u].forEach(s);return}n.push(u),o[u]=!0}}throw t.forEach(s),new rr(`${e}: `+n.map(nr).join([", "]))},Kn=(e,t,n,o,s,u,l,d,p,g,T,E,O)=>{T=X(T),u=oe(s,u),d&&(d=oe(l,d)),g&&(g=oe(p,g)),O=oe(E,O);var M=Hn(T);Ot(M,function(){ot(`Cannot construct ${T} due to unbound types`,[o])}),$e([e,t,n],o?[o]:[],function(V){V=V[0];var q,U;o?(q=V.registeredClass,U=q.instancePrototype):U=rt.prototype;var K=Ne(T,function(){if(Object.getPrototypeOf(this)!==y)throw new Ae("Use 'new' to construct "+T);if($.constructor_body===void 0)throw new Ae(T+" has no accessible constructor");var Cr=$.constructor_body[arguments.length];if(Cr===void 0)throw new Ae(`Tried to invoke ctor of ${T} with invalid number of parameters (${arguments.length}) - expected (${Object.keys($.constructor_body).toString()}) parameters instead!`);return Cr.apply(this,arguments)}),y=Object.create(U,{constructor:{value:K}});K.prototype=y;var $=new Vn(T,K,y,O,q,u,d,g);if($.baseClass){var J,Q;(Q=(J=$.baseClass).__derivedClasses)!==null&&Q!==void 0||(J.__derivedClasses=[]),$.baseClass.__derivedClasses.push($)}var Me=new nt(T,$,!0,!1,!1),ct=new nt(T+"*",$,!1,!1,!1),br=new nt(T+" const*",$,!1,!0,!1);return Xt[e]={pointerType:ct,constPointerType:br},er(M,K),[Me,ct,br]})},Mt=(e,t)=>{for(var n=[],o=0;o>2]);return n};function Zn(e){for(var t=1;t{var l=Mt(t,n);s=oe(o,s),$e([],[e],function(d){d=d[0];var p=`constructor ${d.name}`;if(d.registeredClass.constructor_body===void 0&&(d.registeredClass.constructor_body=[]),d.registeredClass.constructor_body[t-1]!==void 0)throw new Ae(`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]=()=>{ot(`Cannot construct ${d.name} due to unbound types`,l)},$e([],l,g=>(g.splice(1,0,null),d.registeredClass.constructor_body[t-1]=xt(p,g,null,s,u),[])),[]})},ar=e=>{e=e.trim();const t=e.indexOf("(");return t!==-1?e.substr(0,t):e},ta=(e,t,n,o,s,u,l,d,p)=>{var g=Mt(n,o);t=X(t),t=ar(t),u=oe(s,u),$e([],[e],function(T){T=T[0];var E=`${T.name}.${t}`;t.startsWith("@@")&&(t=Symbol[t.substring(2)]),d&&T.registeredClass.pureVirtualFunctions.push(t);function O(){ot(`Cannot call ${E} due to unbound types`,g)}var M=T.registeredClass.instancePrototype,V=M[t];return V===void 0||V.overloadTable===void 0&&V.className!==T.name&&V.argCount===n-2?(O.argCount=n-2,O.className=T.name,M[t]=O):(Kt(M,t,E),M[t].overloadTable[n-2]=O),$e([],g,function(q){var U=xt(E,q,T,u,l);return M[t].overloadTable===void 0?(U.argCount=n-2,M[t]=U):M[t].overloadTable[n-2]=U,[]}),[]})};function ra(){Object.assign(or.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 or(){this.allocated=[void 0],this.freelist=[]}var re=new or,kt=e=>{e>=re.reserved&&--re.get(e).refcount===0&&re.free(e)},na=()=>{for(var e=0,t=re.reserved;t{re.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),re.reserved=re.allocated.length,a.count_emval_handles=na},fe={toValue:e=>(e||R("Cannot use deleted val. handle = "+e),re.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 re.allocate({refcount:1,value:e})}}},oa=(e,t)=>{t=X(t),se(e,{name:t,fromWireType:n=>{var o=fe.toValue(n);return kt(n),o},toWireType:(n,o)=>fe.toHandle(o),argPackAdvance:ce,readValueFromPointer:$t,destructorFunction:null})},ia=(e,t,n)=>{switch(t){case 1:return n?function(o){return this.fromWireType(L[o>>0])}:function(o){return this.fromWireType(P[o>>0])};case 2:return n?function(o){return this.fromWireType(F[o>>1])}:function(o){return this.fromWireType(x[o>>1])};case 4:return n?function(o){return this.fromWireType(S[o>>2])}:function(o){return this.fromWireType(A[o>>2])};default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},sa=(e,t,n,o)=>{t=X(t);function s(){}s.values={},se(e,{name:t,constructor:s,fromWireType:function(u){return this.constructor.values[u]},toWireType:(u,l)=>l.value,argPackAdvance:ce,readValueFromPointer:ia(t,n,o),destructorFunction:null}),Ot(t,s)},Dt=(e,t)=>{var n=Te[e];return n===void 0&&R(t+" has unknown type "+nr(e)),n},ca=(e,t,n)=>{var o=Dt(e,"enum");t=X(t);var s=o.constructor,u=Object.create(o.constructor.prototype,{value:{value:n},constructor:{value:Ne(`${o.name}_${t}`,function(){})}});s.values[n]=u,s[t]=u},jt=e=>{if(e===null)return"null";var t=typeof e;return t==="object"||t==="array"||t==="function"?e.toString():""+e},ua=(e,t)=>{switch(t){case 4:return function(n){return this.fromWireType(N[n>>2])};case 8:return function(n){return this.fromWireType(ae[n>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},la=(e,t,n)=>{t=X(t),se(e,{name:t,fromWireType:o=>o,toWireType:(o,s)=>s,argPackAdvance:ce,readValueFromPointer:ua(t,n),destructorFunction:null})},da=(e,t,n,o,s,u,l)=>{var d=Mt(t,n);e=X(e),e=ar(e),s=oe(o,s),Ot(e,function(){ot(`Cannot call ${e} due to unbound types`,d)},t-1),$e([],d,function(p){var g=[p[0],null].concat(p.slice(1));return er(e,xt(e,g,null,s,u),t-1),[]})},fa=(e,t,n)=>{switch(t){case 1:return n?o=>L[o>>0]:o=>P[o>>0];case 2:return n?o=>F[o>>1]:o=>x[o>>1];case 4:return n?o=>S[o>>2]:o=>A[o>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},ha=(e,t,n,o,s)=>{t=X(t);var u=T=>T;if(o===0){var l=32-8*n;u=T=>T<>>l}var d=t.includes("unsigned"),p=(T,E)=>{},g;d?g=function(T,E){return p(E,this.name),E>>>0}:g=function(T,E){return p(E,this.name),E},se(e,{name:t,fromWireType:u,toWireType:g,argPackAdvance:ce,readValueFromPointer:fa(t,n,o!==0),destructorFunction:null})},pa=(e,t,n)=>{var o=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],s=o[t];function u(l){var d=A[l>>2],p=A[l+4>>2];return new s(L.buffer,p,d)}n=X(n),se(e,{name:n,fromWireType:u,argPackAdvance:ce,readValueFromPointer:u},{ignoreDuplicateRegistrations:!0})},ir=(e,t,n,o)=>{if(!(o>0))return 0;for(var s=n,u=n+o-1,l=0;l=55296&&d<=57343){var p=e.charCodeAt(++l);d=65536+((d&1023)<<10)|p&1023}if(d<=127){if(n>=u)break;t[n++]=d}else if(d<=2047){if(n+1>=u)break;t[n++]=192|d>>6,t[n++]=128|d&63}else if(d<=65535){if(n+2>=u)break;t[n++]=224|d>>12,t[n++]=128|d>>6&63,t[n++]=128|d&63}else{if(n+3>=u)break;t[n++]=240|d>>18,t[n++]=128|d>>12&63,t[n++]=128|d>>6&63,t[n++]=128|d&63}}return t[n]=0,n-s},ma=(e,t,n)=>ir(e,P,t,n),sr=e=>{for(var t=0,n=0;n=55296&&o<=57343?(t+=4,++n):t+=3}return t},cr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,va=(e,t,n)=>{for(var o=t+n,s=t;e[s]&&!(s>=o);)++s;if(s-t>16&&e.buffer&&cr)return cr.decode(e.subarray(t,s));for(var u="";t>10,56320|g&1023)}}return u},Rt=(e,t)=>e?va(P,e,t):"",ya=(e,t)=>{t=X(t);var n=t==="std::string";se(e,{name:t,fromWireType(o){var s=A[o>>2],u=o+4,l;if(n)for(var d=u,p=0;p<=s;++p){var g=u+p;if(p==s||P[g]==0){var T=g-d,E=Rt(d,T);l===void 0?l=E:(l+="\0",l+=E),d=g+1}}else{for(var O=new Array(s),p=0;p>2]=u,n&&l)ma(s,p,u+1);else if(l)for(var g=0;g255&&(he(p),R("String has UTF-16 code units that do not fit in 8 bits")),P[p+g]=T}else for(var g=0;g{for(var n=e,o=n>>1,s=o+t/2;!(o>=s)&&x[o];)++o;if(n=o<<1,n-e>32&&ur)return ur.decode(P.subarray(e,n));for(var u="",l=0;!(l>=t/2);++l){var d=F[e+l*2>>1];if(d==0)break;u+=String.fromCharCode(d)}return u},wa=(e,t,n)=>{var o;if((o=n)!==null&&o!==void 0||(n=2147483647),n<2)return 0;n-=2;for(var s=t,u=n>1]=d,t+=2}return F[t>>1]=0,t-s},ba=e=>e.length*2,Ca=(e,t)=>{for(var n=0,o="";!(n>=t/4);){var s=S[e+n*4>>2];if(s==0)break;if(++n,s>=65536){var u=s-65536;o+=String.fromCharCode(55296|u>>10,56320|u&1023)}else o+=String.fromCharCode(s)}return o},_a=(e,t,n)=>{var o;if((o=n)!==null&&o!==void 0||(n=2147483647),n<4)return 0;for(var s=t,u=s+n-4,l=0;l=55296&&d<=57343){var p=e.charCodeAt(++l);d=65536+((d&1023)<<10)|p&1023}if(S[t>>2]=d,t+=4,t+4>u)break}return S[t>>2]=0,t-s},Ta=e=>{for(var t=0,n=0;n=55296&&o<=57343&&++n,t+=4}return t},$a=(e,t,n)=>{n=X(n);var o,s,u,l,d;t===2?(o=ga,s=wa,l=ba,u=()=>x,d=1):t===4&&(o=Ca,s=_a,l=Ta,u=()=>A,d=2),se(e,{name:n,fromWireType:p=>{for(var g=A[p>>2],T=u(),E,O=p+4,M=0;M<=g;++M){var V=p+4+M*t;if(M==g||T[V>>d]==0){var q=V-O,U=o(O,q);E===void 0?E=U:(E+="\0",E+=U),O=V+t}}return he(p),E},toWireType:(p,g)=>{typeof g!="string"&&R(`Cannot pass non-string to C++ string type ${n}`);var T=l(g),E=Wt(4+T+t);return A[E>>2]=T>>d,s(g,E+4,T+t),p!==null&&p.push(he,E),E},argPackAdvance:ce,readValueFromPointer:$t,destructorFunction(p){he(p)}})},Sa=(e,t,n,o,s,u)=>{Ke[e]={name:X(t),rawConstructor:oe(n,o),rawDestructor:oe(s,u),fields:[]}},Pa=(e,t,n,o,s,u,l,d,p,g)=>{Ke[e].fields.push({fieldName:X(t),getterReturnType:n,getter:oe(o,s),getterContext:u,setterArgumentType:l,setter:oe(d,p),setterContext:g})},Ea=(e,t)=>{t=X(t),se(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType:()=>{},toWireType:(n,o)=>{}})},Ft=[],Oa=(e,t,n,o)=>(e=Ft[e],t=fe.toValue(t),e(null,t,n,o)),Aa={},Ma=e=>{var t=Aa[e];return t===void 0?X(e):t},lr=()=>{if(typeof globalThis=="object")return globalThis;function e(t){t.$$$embind_global$$$=t;var n=typeof $$$embind_global$$$=="object"&&t.$$$embind_global$$$==t;return n||delete t.$$$embind_global$$$,n}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.")},xa=e=>e===0?fe.toHandle(lr()):(e=Ma(e),fe.toHandle(lr()[e])),ka=e=>{var t=Ft.length;return Ft.push(e),t},Da=(e,t)=>{for(var n=new Array(e),o=0;o>2],"parameter "+o);return n},ja=Reflect.construct,Ra=(e,t,n)=>{var o=[],s=e.toWireType(o,n);return o.length&&(A[t>>2]=fe.toHandle(o)),s},Fa=(e,t,n)=>{var o=Da(e,t),s=o.shift();e--;var u=new Array(e),l=(p,g,T,E)=>{for(var O=0,M=0;Mp.name).join(", ")}) => ${s.name}>`;return ka(Ne(d,l))},Ia=e=>{e>4&&(re.get(e).refcount+=1)},Wa=e=>{var t=fe.toValue(e);Tt(t),kt(e)},Ua=(e,t)=>{e=Dt(e,"_emval_take_value");var n=e.readValueFromPointer(t);return fe.toHandle(n)},La=()=>{te("")},Na=(e,t,n)=>P.copyWithin(e,t,t+n),Ha=()=>2147483648,Va=e=>{var t=k.buffer,n=(e-t.byteLength+65535)/65536;try{return k.grow(n),Pe(),1}catch{}},Ba=e=>{var t=P.length;e>>>=0;var n=Ha();if(e>n)return!1;for(var o=(p,g)=>p+(g-p%g)%g,s=1;s<=4;s*=2){var u=t*(1+.2/s);u=Math.min(u,e+100663296);var l=Math.min(n,o(Math.max(e,u),65536)),d=Va(l);if(d)return!0}return!1},It={},za=()=>v||"./this.program",He=()=>{if(!He.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,_:za()};for(var n in It)It[n]===void 0?delete t[n]:t[n]=It[n];var o=[];for(var n in t)o.push(`${n}=${t[n]}`);He.strings=o}return He.strings},Ga=(e,t)=>{for(var n=0;n>0]=e.charCodeAt(n);L[t>>0]=0},qa=(e,t)=>{var n=0;return He().forEach((o,s)=>{var u=t+n;A[e+s*4>>2]=u,Ga(o,u),n+=o.length+1}),0},Ja=(e,t)=>{var n=He();A[e>>2]=n.length;var o=0;return n.forEach(s=>o+=s.length+1),A[t>>2]=o,0},Ya=e=>e,it=e=>e%4===0&&(e%100!==0||e%400===0),Qa=(e,t)=>{for(var n=0,o=0;o<=t;n+=e[o++]);return n},dr=[31,29,31,30,31,30,31,31,30,31,30,31],fr=[31,28,31,30,31,30,31,31,30,31,30,31],Xa=(e,t)=>{for(var n=new Date(e.getTime());t>0;){var o=it(n.getFullYear()),s=n.getMonth(),u=(o?dr:fr)[s];if(t>u-n.getDate())t-=u-n.getDate()+1,n.setDate(1),s<11?n.setMonth(s+1):(n.setMonth(0),n.setFullYear(n.getFullYear()+1));else return n.setDate(n.getDate()+t),n}return n};function Ka(e,t,n){var o=n>0?n:sr(e)+1,s=new Array(o),u=ir(e,s,0,s.length);return t&&(s.length=u),s}var Za=(e,t)=>{L.set(e,t)},eo=(e,t,n,o)=>{var s=A[o+40>>2],u={tm_sec:S[o>>2],tm_min:S[o+4>>2],tm_hour:S[o+8>>2],tm_mday:S[o+12>>2],tm_mon:S[o+16>>2],tm_year:S[o+20>>2],tm_wday:S[o+24>>2],tm_yday:S[o+28>>2],tm_isdst:S[o+32>>2],tm_gmtoff:S[o+36>>2],tm_zone:s?Rt(s):""},l=Rt(n),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 p in d)l=l.replace(new RegExp(p,"g"),d[p]);var g=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],T=["January","February","March","April","May","June","July","August","September","October","November","December"];function E(y,$,J){for(var Q=typeof y=="number"?y.toString():y||"";Q.length<$;)Q=J[0]+Q;return Q}function O(y,$){return E(y,$,"0")}function M(y,$){function J(Me){return Me<0?-1:Me>0?1:0}var Q;return(Q=J(y.getFullYear()-$.getFullYear()))===0&&(Q=J(y.getMonth()-$.getMonth()))===0&&(Q=J(y.getDate()-$.getDate())),Q}function V(y){switch(y.getDay()){case 0:return new Date(y.getFullYear()-1,11,29);case 1:return y;case 2:return new Date(y.getFullYear(),0,3);case 3:return new Date(y.getFullYear(),0,2);case 4:return new Date(y.getFullYear(),0,1);case 5:return new Date(y.getFullYear()-1,11,31);case 6:return new Date(y.getFullYear()-1,11,30)}}function q(y){var $=Xa(new Date(y.tm_year+1900,0,1),y.tm_yday),J=new Date($.getFullYear(),0,4),Q=new Date($.getFullYear()+1,0,4),Me=V(J),ct=V(Q);return M(Me,$)<=0?M(ct,$)<=0?$.getFullYear()+1:$.getFullYear():$.getFullYear()-1}var U={"%a":y=>g[y.tm_wday].substring(0,3),"%A":y=>g[y.tm_wday],"%b":y=>T[y.tm_mon].substring(0,3),"%B":y=>T[y.tm_mon],"%C":y=>{var $=y.tm_year+1900;return O($/100|0,2)},"%d":y=>O(y.tm_mday,2),"%e":y=>E(y.tm_mday,2," "),"%g":y=>q(y).toString().substring(2),"%G":y=>q(y),"%H":y=>O(y.tm_hour,2),"%I":y=>{var $=y.tm_hour;return $==0?$=12:$>12&&($-=12),O($,2)},"%j":y=>O(y.tm_mday+Qa(it(y.tm_year+1900)?dr:fr,y.tm_mon-1),3),"%m":y=>O(y.tm_mon+1,2),"%M":y=>O(y.tm_min,2),"%n":()=>` +`,"%p":y=>y.tm_hour>=0&&y.tm_hour<12?"AM":"PM","%S":y=>O(y.tm_sec,2),"%t":()=>" ","%u":y=>y.tm_wday||7,"%U":y=>{var $=y.tm_yday+7-y.tm_wday;return O(Math.floor($/7),2)},"%V":y=>{var $=Math.floor((y.tm_yday+7-(y.tm_wday+6)%7)/7);if((y.tm_wday+371-y.tm_yday-2)%7<=2&&$++,$){if($==53){var J=(y.tm_wday+371-y.tm_yday)%7;J!=4&&(J!=3||!it(y.tm_year))&&($=1)}}else{$=52;var Q=(y.tm_wday+7-y.tm_yday-1)%7;(Q==4||Q==5&&it(y.tm_year%400-1))&&$++}return O($,2)},"%w":y=>y.tm_wday,"%W":y=>{var $=y.tm_yday+7-(y.tm_wday+6)%7;return O(Math.floor($/7),2)},"%y":y=>(y.tm_year+1900).toString().substring(2),"%Y":y=>y.tm_year+1900,"%z":y=>{var $=y.tm_gmtoff,J=$>=0;return $=Math.abs($)/60,$=$/60*100+$%60,(J?"+":"-")+("0000"+$).slice(-4)},"%Z":y=>y.tm_zone,"%%":()=>"%"};l=l.replace(/%%/g,"\0\0");for(var p in U)l.includes(p)&&(l=l.replace(new RegExp(p,"g"),U[p](u)));l=l.replace(/\0\0/g,"%");var K=Ka(l,!1);return K.length>t?0:(Za(K,e),K.length-1)},to=(e,t,n,o,s)=>eo(e,t,n,o);Gt=a.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},En(),Ae=a.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Un(),Rn(),qn(),rr=a.UnboundTypeError=Xn(Error,"UnboundTypeError"),ra(),aa();var ro={s:vn,u:yn,b:wn,g:bn,q:Cn,J:_n,f:Tn,V:$n,d:gn,da:Sn,Q:Pn,_:An,ca:Kn,ba:ea,w:ta,Y:oa,x:sa,h:ca,L:la,M:da,t:ha,o:pa,K:ya,C:$a,A:Sa,ea:Pa,$:Ea,R:Oa,ha:kt,fa:xa,Z:Fa,N:Ia,O:Wa,aa:Ua,B:La,X:Na,W:Ba,T:qa,U:Ja,E:wo,D:so,F:go,n:bo,a:no,e:uo,m:io,k:fo,H:vo,v:po,G:yo,z:_o,P:$o,l:lo,j:co,c:oo,p:ao,I:mo,r:Co,i:ho,y:To,ga:Ya,S:to},Y=mn(),he=a._free=e=>(he=a._free=Y.ka)(e),Wt=a._malloc=e=>(Wt=a._malloc=Y.la)(e),hr=e=>(hr=Y.na)(e),H=(e,t)=>(H=Y.oa)(e,t),Ve=e=>(Ve=Y.pa)(e),z=()=>(z=Y.qa)(),G=e=>(G=Y.ra)(e),pr=e=>(pr=Y.sa)(e),mr=e=>(mr=Y.ta)(e),vr=(e,t,n)=>(vr=Y.ua)(e,t,n),yr=e=>(yr=Y.va)(e);a.dynCall_viijii=(e,t,n,o,s,u,l)=>(a.dynCall_viijii=Y.wa)(e,t,n,o,s,u,l);var gr=a.dynCall_jiiii=(e,t,n,o,s)=>(gr=a.dynCall_jiiii=Y.xa)(e,t,n,o,s);a.dynCall_iiiiij=(e,t,n,o,s,u,l)=>(a.dynCall_iiiiij=Y.ya)(e,t,n,o,s,u,l),a.dynCall_iiiiijj=(e,t,n,o,s,u,l,d,p)=>(a.dynCall_iiiiijj=Y.za)(e,t,n,o,s,u,l,d,p),a.dynCall_iiiiiijj=(e,t,n,o,s,u,l,d,p,g)=>(a.dynCall_iiiiiijj=Y.Aa)(e,t,n,o,s,u,l,d,p,g);function no(e,t){var n=z();try{return B(e)(t)}catch(o){if(G(n),o!==o+0)throw o;H(1,0)}}function ao(e,t,n,o){var s=z();try{B(e)(t,n,o)}catch(u){if(G(s),u!==u+0)throw u;H(1,0)}}function oo(e,t,n){var o=z();try{B(e)(t,n)}catch(s){if(G(o),s!==s+0)throw s;H(1,0)}}function io(e,t,n,o){var s=z();try{return B(e)(t,n,o)}catch(u){if(G(s),u!==u+0)throw u;H(1,0)}}function so(e,t,n,o,s){var u=z();try{return B(e)(t,n,o,s)}catch(l){if(G(u),l!==l+0)throw l;H(1,0)}}function co(e,t){var n=z();try{B(e)(t)}catch(o){if(G(n),o!==o+0)throw o;H(1,0)}}function uo(e,t,n){var o=z();try{return B(e)(t,n)}catch(s){if(G(o),s!==s+0)throw s;H(1,0)}}function lo(e){var t=z();try{B(e)()}catch(n){if(G(t),n!==n+0)throw n;H(1,0)}}function fo(e,t,n,o,s){var u=z();try{return B(e)(t,n,o,s)}catch(l){if(G(u),l!==l+0)throw l;H(1,0)}}function ho(e,t,n,o,s,u,l,d,p,g,T){var E=z();try{B(e)(t,n,o,s,u,l,d,p,g,T)}catch(O){if(G(E),O!==O+0)throw O;H(1,0)}}function po(e,t,n,o,s,u,l){var d=z();try{return B(e)(t,n,o,s,u,l)}catch(p){if(G(d),p!==p+0)throw p;H(1,0)}}function mo(e,t,n,o,s){var u=z();try{B(e)(t,n,o,s)}catch(l){if(G(u),l!==l+0)throw l;H(1,0)}}function vo(e,t,n,o,s,u){var l=z();try{return B(e)(t,n,o,s,u)}catch(d){if(G(l),d!==d+0)throw d;H(1,0)}}function yo(e,t,n,o,s,u,l,d){var p=z();try{return B(e)(t,n,o,s,u,l,d)}catch(g){if(G(p),g!==g+0)throw g;H(1,0)}}function go(e,t,n,o){var s=z();try{return B(e)(t,n,o)}catch(u){if(G(s),u!==u+0)throw u;H(1,0)}}function wo(e,t,n,o){var s=z();try{return B(e)(t,n,o)}catch(u){if(G(s),u!==u+0)throw u;H(1,0)}}function bo(e){var t=z();try{return B(e)()}catch(n){if(G(t),n!==n+0)throw n;H(1,0)}}function Co(e,t,n,o,s,u,l,d){var p=z();try{B(e)(t,n,o,s,u,l,d)}catch(g){if(G(p),g!==g+0)throw g;H(1,0)}}function _o(e,t,n,o,s,u,l,d,p,g,T,E){var O=z();try{return B(e)(t,n,o,s,u,l,d,p,g,T,E)}catch(M){if(G(O),M!==M+0)throw M;H(1,0)}}function To(e,t,n,o,s,u,l,d,p,g,T,E,O,M,V,q){var U=z();try{B(e)(t,n,o,s,u,l,d,p,g,T,E,O,M,V,q)}catch(K){if(G(U),K!==K+0)throw K;H(1,0)}}function $o(e,t,n,o,s){var u=z();try{return gr(e,t,n,o,s)}catch(l){if(G(u),l!==l+0)throw l;H(1,0)}}var st;_e=function e(){st||wr(),st||(_e=e)};function wr(){if(ie>0||(Ge(),ie>0))return;function e(){st||(st=!0,a.calledRun=!0,!W&&(ht(),c(a),a.onRuntimeInitialized&&a.onRuntimeInitialized(),pt()))}a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1),e()},1)):e()}if(a.preInit)for(typeof a.preInit=="function"&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.pop()();return wr(),i.ready}})();function di(r){return Bt(zt,r)}async function fi(r,i){return ui(zt,r,i)}async function hi(r,i){return li(zt,r,i)}var ze;class Zr extends EventTarget{constructor(i={}){var a;super(),Uo(this,ze,void 0);try{const c=(a=i==null?void 0:i.formats)==null?void 0:a.filter(f=>f!=="unknown");if((c==null?void 0:c.length)===0)throw new TypeError("Hint option provided, but is empty.");c==null||c.forEach(f=>{if(!lt.has(f))throw new TypeError(`Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${f}' is not a valid enum value of type BarcodeFormat.`)}),Lo(this,ze,c??[]),di().then(f=>{this.dispatchEvent(new CustomEvent("load",{detail:f}))}).catch(f=>{this.dispatchEvent(new CustomEvent("error",{detail:f}))})}catch(c){throw Mr(c,"Failed to construct 'BarcodeDetector'")}}static async getSupportedFormats(){return No.filter(i=>i!=="unknown")}async detect(i){try{const a=await Jo(i);if(a===null)return[];let c;try{Yr(a)?c=await fi(a,{tryHarder:!0,formats:Ar(this,ze).map(f=>lt.get(f))}):c=await hi(a,{tryHarder:!0,formats:Ar(this,ze).map(f=>lt.get(f))})}catch(f){throw console.error(f),new DOMException("Barcode detection service unavailable.","NotSupportedError")}return c.map(f=>{const{topLeft:{x:m,y:v},topRight:{x:C,y:h},bottomLeft:{x:w,y:_},bottomRight:{x:b,y:D}}=f.position,j=Math.min(m,C,w,b),k=Math.min(v,h,_,D),W=Math.max(m,C,w,b),L=Math.max(v,h,_,D);return{boundingBox:new DOMRectReadOnly(j,k,W-j,L-k),rawValue:f.text,format:Ho(f.format),cornerPoints:[{x:m,y:v},{x:C,y:h},{x:b,y:D},{x:w,y:_}]}})}catch(a){throw Mr(a,"Failed to execute 'detect' on 'BarcodeDetector'")}}}ze=new WeakMap;const en=(r,i,a="error")=>{let c,f;const m=new Promise((v,C)=>{c=v,f=C,r.addEventListener(i,c),r.addEventListener(a,f)});return m.finally(()=>{r.removeEventListener(i,c),r.removeEventListener(a,f)}),m},jr=r=>new Promise(i=>setTimeout(i,r));class tn extends Error{constructor(){super("this browser has no Stream API support"),this.name="StreamApiNotSupportedError"}}class pi extends Error{constructor(){super("camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP."),this.name="InsecureContextError"}}class mi extends Error{constructor(){super("Loading camera stream timed out after 3 seconds. If you are on iOS in PWA mode, this is a known issue (see https://github.com/gruhn/vue-qrcode-reader/issues/298)"),this.name="StreamLoadTimeoutError"}}let Vt;const vi=r=>{Vt=new Zr({formats:r})},yi=async(r,{detectHandler:i,locateHandler:a,minDelay:c,formats:f})=>{Vt=new Zr({formats:f});const m=v=>async C=>{if(r.readyState>1){const{lastScanned:h,contentBefore:w,lastScanHadContent:_}=v;if(C-h!w.includes(W.rawValue));D&&i(b);const j=b.length>0;j&&a(b),!j&&_&&a(b);const k={lastScanned:C,lastScanHadContent:j,contentBefore:D?b.map(W=>W.rawValue):w};window.requestAnimationFrame(m(k))}}};m({lastScanned:performance.now(),contentBefore:[],lastScanHadContent:!1})(performance.now())};var rn={},ee={};Object.defineProperty(ee,"__esModule",{value:!0});ee.compactObject=on;ee.deprecated=Pi;var gi=ee.detectBrowser=Ei;ee.disableLog=Ti;ee.disableWarnings=$i;ee.extractVersion=dt;ee.filterStats=Oi;ee.log=Si;ee.walkStats=ft;ee.wrapPeerConnectionEvent=_i;function wi(r,i,a){return i=bi(i),i in r?Object.defineProperty(r,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):r[i]=a,r}function bi(r){var i=Ci(r,"string");return be(i)==="symbol"?i:String(i)}function Ci(r,i){if(be(r)!=="object"||r===null)return r;var a=r[Symbol.toPrimitive];if(a!==void 0){var c=a.call(r,i||"default");if(be(c)!=="object")return c;throw new TypeError("@@toPrimitive must return a primitive value.")}return(i==="string"?String:Number)(r)}function be(r){"@babel/helpers - typeof";return be=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},be(r)}var nn=!0,an=!0;function dt(r,i,a){var c=r.match(i);return c&&c.length>=a&&parseInt(c[a],10)}function _i(r,i,a){if(r.RTCPeerConnection){var c=r.RTCPeerConnection.prototype,f=c.addEventListener;c.addEventListener=function(v,C){if(v!==i)return f.apply(this,arguments);var h=function(w){var _=a(w);_&&(C.handleEvent?C.handleEvent(_):C(_))};return this._eventMap=this._eventMap||{},this._eventMap[i]||(this._eventMap[i]=new Map),this._eventMap[i].set(C,h),f.apply(this,[v,h])};var m=c.removeEventListener;c.removeEventListener=function(v,C){if(v!==i||!this._eventMap||!this._eventMap[i])return m.apply(this,arguments);if(!this._eventMap[i].has(C))return m.apply(this,arguments);var h=this._eventMap[i].get(C);return this._eventMap[i].delete(C),this._eventMap[i].size===0&&delete this._eventMap[i],Object.keys(this._eventMap).length===0&&delete this._eventMap,m.apply(this,[v,h])},Object.defineProperty(c,"on"+i,{get:function(){return this["_on"+i]},set:function(v){this["_on"+i]&&(this.removeEventListener(i,this["_on"+i]),delete this["_on"+i]),v&&this.addEventListener(i,this["_on"+i]=v)},enumerable:!0,configurable:!0})}}function Ti(r){return typeof r!="boolean"?new Error("Argument type: "+be(r)+". Please use a boolean."):(nn=r,r?"adapter.js logging disabled":"adapter.js logging enabled")}function $i(r){return typeof r!="boolean"?new Error("Argument type: "+be(r)+". Please use a boolean."):(an=!r,"adapter.js deprecation warnings "+(r?"disabled":"enabled"))}function Si(){if((typeof window>"u"?"undefined":be(window))==="object"){if(nn)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Pi(r,i){an&&console.warn(r+" is deprecated, please use "+i+" instead.")}function Ei(r){var i={browser:null,version:null};if(typeof r>"u"||!r.navigator||!r.navigator.userAgent)return i.browser="Not a browser.",i;var a=r.navigator;if(a.mozGetUserMedia)i.browser="firefox",i.version=dt(a.userAgent,/Firefox\/(\d+)\./,1);else if(a.webkitGetUserMedia||r.isSecureContext===!1&&r.webkitRTCPeerConnection)i.browser="chrome",i.version=dt(a.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(r.RTCPeerConnection&&a.userAgent.match(/AppleWebKit\/(\d+)\./))i.browser="safari",i.version=dt(a.userAgent,/AppleWebKit\/(\d+)\./,1),i.supportsUnifiedPlan=r.RTCRtpTransceiver&&"currentDirection"in r.RTCRtpTransceiver.prototype;else return i.browser="Not a supported browser.",i;return i}function Rr(r){return Object.prototype.toString.call(r)==="[object Object]"}function on(r){return Rr(r)?Object.keys(r).reduce(function(i,a){var c=Rr(r[a]),f=c?on(r[a]):r[a],m=c&&!Object.keys(f).length;return f===void 0||m?i:Object.assign(i,wi({},a,f))},{}):r}function ft(r,i,a){!i||a.has(i.id)||(a.set(i.id,i),Object.keys(i).forEach(function(c){c.endsWith("Id")?ft(r,r.get(i[c]),a):c.endsWith("Ids")&&i[c].forEach(function(f){ft(r,r.get(f),a)})}))}function Oi(r,i,a){var c=a?"outbound-rtp":"inbound-rtp",f=new Map;if(i===null)return f;var m=[];return r.forEach(function(v){v.type==="track"&&v.trackIdentifier===i.id&&m.push(v)}),m.forEach(function(v){r.forEach(function(C){C.type===c&&C.trackId===v.id&&ft(r,C,f)})}),f}Object.defineProperty(rn,"__esModule",{value:!0});var Ai=rn.shimGetUserMedia=ki,Mi=xi(ee);function sn(r){if(typeof WeakMap!="function")return null;var i=new WeakMap,a=new WeakMap;return(sn=function(c){return c?a:i})(r)}function xi(r,i){if(!i&&r&&r.__esModule)return r;if(r===null||we(r)!=="object"&&typeof r!="function")return{default:r};var a=sn(i);if(a&&a.has(r))return a.get(r);var c={},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var m in r)if(m!=="default"&&Object.prototype.hasOwnProperty.call(r,m)){var v=f?Object.getOwnPropertyDescriptor(r,m):null;v&&(v.get||v.set)?Object.defineProperty(c,m,v):c[m]=r[m]}return c.default=r,a&&a.set(r,c),c}function we(r){"@babel/helpers - typeof";return we=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},we(r)}var Fr=Mi.log;function ki(r,i){var a=r&&r.navigator;if(a.mediaDevices){var c=function(h){if(we(h)!=="object"||h.mandatory||h.optional)return h;var w={};return Object.keys(h).forEach(function(_){if(!(_==="require"||_==="advanced"||_==="mediaSource")){var b=we(h[_])==="object"?h[_]:{ideal:h[_]};b.exact!==void 0&&typeof b.exact=="number"&&(b.min=b.max=b.exact);var D=function(k,W){return k?k+W.charAt(0).toUpperCase()+W.slice(1):W==="deviceId"?"sourceId":W};if(b.ideal!==void 0){w.optional=w.optional||[];var j={};typeof b.ideal=="number"?(j[D("min",_)]=b.ideal,w.optional.push(j),j={},j[D("max",_)]=b.ideal,w.optional.push(j)):(j[D("",_)]=b.ideal,w.optional.push(j))}b.exact!==void 0&&typeof b.exact!="number"?(w.mandatory=w.mandatory||{},w.mandatory[D("",_)]=b.exact):["min","max"].forEach(function(k){b[k]!==void 0&&(w.mandatory=w.mandatory||{},w.mandatory[D(k,_)]=b[k])})}}),h.advanced&&(w.optional=(w.optional||[]).concat(h.advanced)),w},f=function(h,w){if(i.version>=61)return w(h);if(h=JSON.parse(JSON.stringify(h)),h&&we(h.audio)==="object"){var _=function(k,W,L){W in k&&!(L in k)&&(k[L]=k[W],delete k[W])};h=JSON.parse(JSON.stringify(h)),_(h.audio,"autoGainControl","googAutoGainControl"),_(h.audio,"noiseSuppression","googNoiseSuppression"),h.audio=c(h.audio)}if(h&&we(h.video)==="object"){var b=h.video.facingMode;b=b&&(we(b)==="object"?b:{ideal:b});var D=i.version<66;if(b&&(b.exact==="user"||b.exact==="environment"||b.ideal==="user"||b.ideal==="environment")&&!(a.mediaDevices.getSupportedConstraints&&a.mediaDevices.getSupportedConstraints().facingMode&&!D)){delete h.video.facingMode;var j;if(b.exact==="environment"||b.ideal==="environment"?j=["back","rear"]:(b.exact==="user"||b.ideal==="user")&&(j=["front"]),j)return a.mediaDevices.enumerateDevices().then(function(k){k=k.filter(function(L){return L.kind==="videoinput"});var W=k.find(function(L){return j.some(function(P){return L.label.toLowerCase().includes(P)})});return!W&&k.length&&j.includes("back")&&(W=k[k.length-1]),W&&(h.video.deviceId=b.exact?{exact:W.deviceId}:{ideal:W.deviceId}),h.video=c(h.video),Fr("chrome: "+JSON.stringify(h)),w(h)})}h.video=c(h.video)}return Fr("chrome: "+JSON.stringify(h)),w(h)},m=function(h){return i.version>=64?h:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[h.name]||h.name,message:h.message,constraint:h.constraint||h.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}},v=function(h,w,_){f(h,function(b){a.webkitGetUserMedia(b,w,function(D){_&&_(m(D))})})};if(a.getUserMedia=v.bind(a),a.mediaDevices.getUserMedia){var C=a.mediaDevices.getUserMedia.bind(a.mediaDevices);a.mediaDevices.getUserMedia=function(h){return f(h,function(w){return C(w).then(function(_){if(w.audio&&!_.getAudioTracks().length||w.video&&!_.getVideoTracks().length)throw _.getTracks().forEach(function(b){b.stop()}),new DOMException("","NotFoundError");return _},function(_){return Promise.reject(m(_))})})}}}}var cn={};Object.defineProperty(cn,"__esModule",{value:!0});var Di=cn.shimGetUserMedia=Fi,ji=Ri(ee);function un(r){if(typeof WeakMap!="function")return null;var i=new WeakMap,a=new WeakMap;return(un=function(c){return c?a:i})(r)}function Ri(r,i){if(!i&&r&&r.__esModule)return r;if(r===null||xe(r)!=="object"&&typeof r!="function")return{default:r};var a=un(i);if(a&&a.has(r))return a.get(r);var c={},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var m in r)if(m!=="default"&&Object.prototype.hasOwnProperty.call(r,m)){var v=f?Object.getOwnPropertyDescriptor(r,m):null;v&&(v.get||v.set)?Object.defineProperty(c,m,v):c[m]=r[m]}return c.default=r,a&&a.set(r,c),c}function xe(r){"@babel/helpers - typeof";return xe=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},xe(r)}function Fi(r,i){var a=r&&r.navigator,c=r&&r.MediaStreamTrack;if(a.getUserMedia=function(h,w,_){ji.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),a.mediaDevices.getUserMedia(h).then(w,_)},!(i.version>55&&"autoGainControl"in a.mediaDevices.getSupportedConstraints())){var f=function(h,w,_){w in h&&!(_ in h)&&(h[_]=h[w],delete h[w])},m=a.mediaDevices.getUserMedia.bind(a.mediaDevices);if(a.mediaDevices.getUserMedia=function(h){return xe(h)==="object"&&xe(h.audio)==="object"&&(h=JSON.parse(JSON.stringify(h)),f(h.audio,"autoGainControl","mozAutoGainControl"),f(h.audio,"noiseSuppression","mozNoiseSuppression")),m(h)},c&&c.prototype.getSettings){var v=c.prototype.getSettings;c.prototype.getSettings=function(){var h=v.apply(this,arguments);return f(h,"mozAutoGainControl","autoGainControl"),f(h,"mozNoiseSuppression","noiseSuppression"),h}}if(c&&c.prototype.applyConstraints){var C=c.prototype.applyConstraints;c.prototype.applyConstraints=function(h){return this.kind==="audio"&&xe(h)==="object"&&(h=JSON.parse(JSON.stringify(h)),f(h,"autoGainControl","mozAutoGainControl"),f(h,"noiseSuppression","mozNoiseSuppression")),C.apply(this,[h])}}}}var le={};Object.defineProperty(le,"__esModule",{value:!0});le.shimAudioContext=Gi;le.shimCallbacksAPI=Ni;le.shimConstraints=fn;le.shimCreateOfferLegacy=zi;var Ii=le.shimGetUserMedia=Hi;le.shimLocalStreamsAPI=Ui;le.shimRTCIceServerUrls=Vi;le.shimRemoteStreamsAPI=Li;le.shimTrackEventTransceiver=Bi;var ln=Wi(ee);function dn(r){if(typeof WeakMap!="function")return null;var i=new WeakMap,a=new WeakMap;return(dn=function(c){return c?a:i})(r)}function Wi(r,i){if(!i&&r&&r.__esModule)return r;if(r===null||Ce(r)!=="object"&&typeof r!="function")return{default:r};var a=dn(i);if(a&&a.has(r))return a.get(r);var c={},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var m in r)if(m!=="default"&&Object.prototype.hasOwnProperty.call(r,m)){var v=f?Object.getOwnPropertyDescriptor(r,m):null;v&&(v.get||v.set)?Object.defineProperty(c,m,v):c[m]=r[m]}return c.default=r,a&&a.set(r,c),c}function Ce(r){"@babel/helpers - typeof";return Ce=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},Ce(r)}function Ui(r){if(!(Ce(r)!=="object"||!r.RTCPeerConnection)){if("getLocalStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in r.RTCPeerConnection.prototype)){var i=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addStream=function(a){var c=this;this._localStreams||(this._localStreams=[]),this._localStreams.includes(a)||this._localStreams.push(a),a.getAudioTracks().forEach(function(f){return i.call(c,f,a)}),a.getVideoTracks().forEach(function(f){return i.call(c,f,a)})},r.RTCPeerConnection.prototype.addTrack=function(a){for(var c=this,f=arguments.length,m=new Array(f>1?f-1:0),v=1;v=0)){a._remoteStreams.push(f);var m=new Event("addstream");m.stream=f,a.dispatchEvent(m)}})}),i.apply(a,arguments)}}}function Ni(r){if(!(Ce(r)!=="object"||!r.RTCPeerConnection)){var i=r.RTCPeerConnection.prototype,a=i.createOffer,c=i.createAnswer,f=i.setLocalDescription,m=i.setRemoteDescription,v=i.addIceCandidate;i.createOffer=function(h,w){var _=arguments.length>=2?arguments[2]:arguments[0],b=a.apply(this,[_]);return w?(b.then(h,w),Promise.resolve()):b},i.createAnswer=function(h,w){var _=arguments.length>=2?arguments[2]:arguments[0],b=c.apply(this,[_]);return w?(b.then(h,w),Promise.resolve()):b};var C=function(h,w,_){var b=f.apply(this,[h]);return _?(b.then(w,_),Promise.resolve()):b};i.setLocalDescription=C,C=function(h,w,_){var b=m.apply(this,[h]);return _?(b.then(w,_),Promise.resolve()):b},i.setRemoteDescription=C,C=function(h,w,_){var b=v.apply(this,[h]);return _?(b.then(w,_),Promise.resolve()):b},i.addIceCandidate=C}}function Hi(r){var i=r&&r.navigator;if(i.mediaDevices&&i.mediaDevices.getUserMedia){var a=i.mediaDevices,c=a.getUserMedia.bind(a);i.mediaDevices.getUserMedia=function(f){return c(fn(f))}}!i.getUserMedia&&i.mediaDevices&&i.mediaDevices.getUserMedia&&(i.getUserMedia=(function(f,m,v){i.mediaDevices.getUserMedia(f).then(m,v)}).bind(i))}function fn(r){return r&&r.video!==void 0?Object.assign({},r,{video:ln.compactObject(r.video)}):r}function Vi(r){if(r.RTCPeerConnection){var i=r.RTCPeerConnection;r.RTCPeerConnection=function(a,c){if(a&&a.iceServers){for(var f=[],m=0;m{let i=!1,a;return(...c)=>(i||(a=r(c),i=!0),a)};function me(r,i){if(r===!1)throw new Error(i??"assertion failure")}const Ji=qi(()=>{const r=gi(window);switch(r.browser){case"chrome":Ai(window,r);break;case"firefox":Di(window,r);break;case"safari":Ii(window,r);break;default:throw new tn}});let ke=Promise.resolve({type:"stop",data:{}});async function Ir(r,i,a){var c,f,m;if(window.isSecureContext!==!0)throw new pi;if(((c=navigator==null?void 0:navigator.mediaDevices)==null?void 0:c.getUserMedia)===void 0)throw new tn;Ji();const v=await navigator.mediaDevices.getUserMedia({audio:!1,video:i});r.srcObject!==void 0?r.srcObject=v:r.mozSrcObject!==void 0?r.mozSrcObject=v:window.URL.createObjectURL?r.src=window.URL.createObjectURL(v):window.webkitURL?r.src=window.webkitURL.createObjectURL(v):r.src=v.id,r.play(),await Promise.race([en(r,"loadeddata"),jr(3e3).then(()=>{throw new mi})]),await jr(500);const[C]=v.getVideoTracks(),h=(m=(f=C==null?void 0:C.getCapabilities)==null?void 0:f.call(C))!=null?m:{};let w=!1;return a&&h.torch&&(await C.applyConstraints({advanced:[{torch:!0}]}),w=!0),{type:"start",data:{videoEl:r,stream:v,capabilities:h,constraints:i,isTorchOn:w}}}async function Yi(r,{constraints:i,torch:a,restart:c=!1}){ke=ke.then(m=>{if(m.type==="start"){const{data:{videoEl:v,stream:C,constraints:h,isTorchOn:w}}=m;return!c&&r===v&&i===h&&a===w?m:hn(v,C,w).then(()=>Ir(r,i,a))}return Ir(r,i,a)});const f=await ke;if(f.type==="stop")throw new Error("Something went wrong with the camera task queue (start task).");return f.data.capabilities}async function hn(r,i,a){r.src="",r.srcObject=null,r.load(),await en(r,"error");for(const c of i.getTracks())a!=null||await c.applyConstraints({advanced:[{torch:!1}]}),i.removeTrack(c),c.stop();return{type:"stop",data:{}}}async function ut(){if(ke=ke.then(r=>{if(r.type==="stop")return r;const{data:{videoEl:i,stream:a,isTorchOn:c}}=r;return hn(i,a,c)}),(await ke).type==="start")throw new Error("Something went wrong with the camera task queue (stop task).")}const Qi=So({__name:"QrcodeStream",props:{constraints:{type:Object,default(){return{facingMode:"environment"}}},formats:{type:Array,default:()=>["qr_code"]},paused:{type:Boolean,default:!1},torch:{type:Boolean,default:!1},track:{type:Function}},emits:["detect","camera-on","camera-off","error"],setup(r,{emit:i}){const a=r,c=i,f=ne(a.constraints),m=ne(a.formats);Be(()=>a.constraints,(x,S)=>{JSON.stringify(x)!==JSON.stringify(S)&&(f.value=x)},{deep:!0}),Be(()=>a.formats,(x,S)=>{JSON.stringify(x)!==JSON.stringify(S)&&(m.value=x)},{deep:!0});const v=ne(),C=ne(),h=ne(),w=ne(!1),_=ne(!1);Wr(()=>{_.value=!0}),Po(()=>{ut()});const b=Ut(()=>({torch:a.torch,constraints:f.value,shouldStream:_.value&&!a.paused}));Be(b,async x=>{const S=h.value;me(S!==void 0,"cameraSettings watcher should never be triggered when component is not mounted. Thus video element should always be defined.");const A=v.value;me(A!==void 0,"cameraSettings watcher should never be triggered when component is not mounted. Thus canvas should always be defined.");const N=A.getContext("2d");if(me(N!==null,"if cavnas is defined, canvas 2d context should also be non-null"),x.shouldStream){ut(),w.value=!1;try{const ae=await Yi(S,x);_.value?(w.value=!0,c("camera-on",ae)):await ut()}catch(ae){c("error",ae)}}else A.width=S.videoWidth,A.height=S.videoHeight,N.drawImage(S,0,0,S.videoWidth,S.videoHeight),ut(),w.value=!1,c("camera-off")},{deep:!0}),Be(m,x=>{_.value&&vi(x)});const D=Ut(()=>b.value.shouldStream&&w.value);Be(D,x=>{if(x){me(v.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus pause frame canvas is defined"),j(v.value),me(C.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus tracking canvas is defined"),j(C.value);const S=()=>a.track===void 0?500:40;me(h.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus video element is defined"),yi(h.value,{detectHandler:A=>c("detect",A),formats:m.value,locateHandler:k,minDelay:S()})}});const j=x=>{const S=x.getContext("2d");me(S!==null,"canvas 2d context should always be non-null"),S.clearRect(0,0,x.width,x.height)},k=x=>{const S=C.value;me(S!==void 0,"onLocate handler should only be called when component is mounted. Thus tracking canvas is always defined.");const A=h.value;if(me(A!==void 0,"onLocate handler should only be called when component is mounted. Thus video element is always defined."),x.length===0||a.track===void 0)j(S);else{const N=A.offsetWidth,ae=A.offsetHeight,Pe=A.videoWidth,Ee=A.videoHeight,je=Math.max(N/Pe,ae/Ee),Re=Pe*je,Ge=Ee*je,ht=Re/Pe,pt=Ge/Ee,mt=(N-Re)/2,vt=(ae-Ge)/2,Fe=({x:ve,y:te})=>({x:Math.floor(ve*ht),y:Math.floor(te*pt)}),ie=({x:ve,y:te})=>({x:Math.floor(ve+mt),y:Math.floor(te+vt)}),_e=x.map(ve=>{const{boundingBox:te,cornerPoints:gt}=ve,{x:qe,y:ye}=ie(Fe({x:te.x,y:te.y})),{x:Je,y:wt}=Fe({x:te.width,y:te.height});return{...ve,cornerPoints:gt.map(Ye=>ie(Fe(Ye))),boundingBox:DOMRectReadOnly.fromRect({x:qe,y:ye,width:Je,height:wt})}});S.width=A.offsetWidth,S.height=A.offsetHeight;const yt=S.getContext("2d");a.track(_e,yt)}},W={width:"100%",height:"100%",position:"relative","z-index":"0"},L={width:"100%",height:"100%",position:"absolute",top:"0",left:"0"},P={width:"100%",height:"100%","object-fit":"cover"},F=Ut(()=>D.value?P:{...P,visibility:"hidden",position:"absolute"});return(x,S)=>(ue(),ge("div",{style:W},[I("video",{ref_key:"videoRef",ref:h,style:Eo(F.value),autoplay:"",muted:"",playsinline:""},null,4),Ht(I("canvas",{id:"qrcode-stream-pause-frame",ref_key:"pauseFrameRef",ref:v,style:P},null,512),[[Ur,!D.value]]),I("canvas",{id:"qrcode-stream-tracking-layer",ref_key:"trackingLayerRef",ref:C,style:L},null,512),I("div",{style:L},[Oo(x.$slots,"default")])]))}}),Xi={class:"modal is-active"},Ki=I("div",{class:"modal-background"},null,-1),Zi={class:"modal-content"},es={class:"section"},ts={class:"columns is-centered"},rs={class:"column is-three-quarters"},ns={class:"modal-slot has-text-centered is-shadowless"},as={key:0},os={class:"block is-size-5"},is={key:0},ss={class:"is-size-7 mb-3"},cs={class:"is-size-7 mb-3"},us={class:"addressbar columns is-mobile is-gapless"},ls={class:"column is-narrow has-text-left circled"},ds=I("div",{class:"column has-text-left ml-3"}," http://my.2fauth.app/... ",-1),fs={class:"column is-narrow has-text-right"},hs={key:1,class:"is-size-7"},ps={class:"fullscreen-streamer"},ms={key:1,class:"field has-addons has-addons-centered mt-3"},vs={class:"control has-icons-left"},ys={class:"select"},gs=["value"],ws={class:"icon is-small is-left"},bs={class:"fullscreen-footer"},Ps={__name:"Capture",setup(r){const i=Ao(),a=Wo(),c=Mo(),f=ne(!1),m=ne(null),v=ne([]),C=ne(""),h=xo(new Ro({qrcode:null,uri:""})),w=ne(!1);Wr(async()=>{var P;(P=navigator.mediaDevices)!=null&&P.enumerateDevices?await navigator.mediaDevices.enumerateDevices().then(F=>{v.value=F.filter(({kind:x})=>x==="videoinput"),v.value.length>0?m.value=v.value[0]:C.value="no_cam_on_device"}).catch(F=>{_(F)}):C.value="secured_context_required"});const _=P=>{P.name==="NotAllowedError"?C.value="need_grant_permission":P.name==="NotFoundError"?C.value="no_cam_on_device":P.name==="NotSupportedError"||P.name==="InsecureContextError"?C.value="secured_context_required":P.name==="NotReadableError"?C.value="not_readable":P.name==="OverconstrainedError"?C.value="camera_not_suitable":P.name==="StreamApiNotSupportedError"?C.value="stream_api_not_supported":c.error(P)},b=async P=>{const[F]=P;h.uri=F.rawValue,h.uri?h.uri.slice(0,33).toLowerCase()=="otpauth-migration://offline?data="?(a.migrationUri=h.uri,i.push({name:"importAccounts"})):h.uri.slice(0,15).toLowerCase()!=="otpauth://totp/"&&h.uri.slice(0,15).toLowerCase()!=="otpauth://hotp/"?(w.value=!0,c.warn({text:Or("errors.no_valid_otp")})):(a.decodedUri=h.uri,i.push({name:"createAccount"})):c.warn({text:Or("errors.qrcode_cannot_be_read")})};function D(P){f.value=!0}function j(P){f.value=!1}function k(){i.go(-1)}const W=(P,F)=>{for(const x of P){const[S,...A]=x.cornerPoints;F.strokeStyle="red",F.beginPath(),F.moveTo(S.x,S.y);for(const{x:N,y:ae}of A)F.lineTo(N,ae);F.lineTo(S.x,S.y),F.closePath(),F.stroke()}};function L(){location.reload()}return(P,F)=>{const x=Lt("FontAwesomeIcon"),S=Lt("ButtonBackCloseCancel"),A=Lt("modal");return ue(),ge(Sr,null,[I("div",Xi,[Ki,I("div",Zi,[I("section",es,[I("div",ts,[I("div",rs,[I("div",ns,[Z(C)?(ue(),ge("div",as,[I("p",os,Se(P.$t("twofaccounts.stream.live_scan_cant_start")),1),pe(Z(Er),null,{default:Nt(({mode:N})=>[I("p",{class:Pr(["block",{"has-text-light":N=="dark"}])},Se(P.$t("twofaccounts.stream."+Z(C)+".reason")),3)]),_:1}),Z(C)=="need_grant_permission"?(ue(),ge("div",is,[I("p",ss,Se(P.$t("twofaccounts.stream.need_grant_permission.solution")),1),I("p",cs,Se(P.$t("twofaccounts.stream.need_grant_permission.click_camera_icon")),1),I("div",us,[I("div",ls,[pe(x,{icon:["fas","lock"],class:"ml-1",size:"xs"}),pe(x,{icon:["fas","video-slash"],class:"ml-3",size:"xs"})]),ds,I("div",fs,[pe(x,{icon:["far","star"],class:"mr-1"})])]),I("p",null,[I("a",{onClick:ko(L,["stop"])},Se(P.$t("commons.refresh")),1)])])):(ue(),ge("p",hs,Se(P.$t("twofaccounts.stream."+Z(C)+".solution")),1))])):(ue(),_r(Z(Er),{key:1},{default:Nt(({mode:N})=>[I("span",{class:Pr(["is-size-4",N=="dark"?"has-text-light":"has-text-grey-dark"])},[pe(Fo,{isVisible:!0,type:"raw",class:"is-size-1"})],2)]),_:1}))])])])])]),Ht(I("div",ps,[Z(m)!==null?(ue(),_r(Z(Qi),{key:0,track:W,onDetect:b,onError:_,onCameraOn:D,onCameraOff:j})):Tr("",!0),Z(f)&&Z(v).length>1?(ue(),ge("div",ms,[I("p",vs,[I("span",ys,[Ht(I("select",{"onUpdate:modelValue":F[0]||(F[0]=N=>$r(m)?m.value=N:null)},[(ue(!0),ge(Sr,null,Do(Z(v),N=>(ue(),ge("option",{key:N.label,value:N},Se(N.label?N.label:P.$t("commons.default")),9,gs))),128))],512),[[jo,Z(m)]])]),I("span",ws,[pe(x,{icon:["fas","camera"]})])])])):Tr("",!0)],512),[[Ur,!Z(C)]]),I("div",bs,[pe(S,{action:"cancel",isCapture:!0,useLinkTag:!1,onCanceled:F[1]||(F[1]=N=>k())})])]),pe(A,{modelValue:Z(w),"onUpdate:modelValue":F[2]||(F[2]=N=>$r(w)?w.value=N:null)},{default:Nt(()=>[pe(Io,{qrContent:Z(h).uri},null,8,["qrContent"])]),_:1},8,["modelValue"])],64)}}};export{Ps as default}; diff --git a/public/build/assets/CopyButton-C1eOxUvy.js b/public/build/assets/CopyButton-C1eOxUvy.js new file mode 100644 index 00000000..a6b23526 --- /dev/null +++ b/public/build/assets/CopyButton-C1eOxUvy.js @@ -0,0 +1 @@ +import{b as r,T as p,e as l,f as m,g as _,m as u,C as b,H as d}from"./app-CuhK3jij.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const y=["aria-label","title"],C={__name:"CopyButton",props:{token:String},setup(e){const s=r(),{copy:n}=p({legacy:!0}),c=e;function a(){n(c.token),s.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/CopyButton-CNDtpSH2.js b/public/build/assets/CopyButton-CNDtpSH2.js deleted file mode 100644 index 552f1842..00000000 --- a/public/build/assets/CopyButton-CNDtpSH2.js +++ /dev/null @@ -1 +0,0 @@ -import{a as r,S as l,l as p,m,d as _,j as u,C as d,H as b}from"./app-D4Udf6Mm.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const y=["aria-label","title"],C={__name:"CopyButton",props:{token:String},setup(e){const s=r(),{copy:n}=l({legacy:!0}),c=e;function a(){n(c.token),s.success({text:b("commons.copied_to_clipboard")})}return(o,t)=>{const i=p("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]=d(f=>a(),["stop"]))},[u(i,{icon:["fas","copy"]})],8,y)}}};export{C as _}; diff --git a/public/build/assets/Create-CLPvbaW4.js b/public/build/assets/Create-CLPvbaW4.js new file mode 100644 index 00000000..4e149abc --- /dev/null +++ b/public/build/assets/Create-CLPvbaW4.js @@ -0,0 +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,C as B,H as C}from"./app-CuhK3jij.js";import{F as h}from"./Form-o2lWAB-o.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const v={__name:"Create",setup(E){const m=_(),l=F(),e=V(new h({name:"",email:"",password:"",password_confirmation:"",is_admin:!1}));async function i(d){e.password_confirmation=e.password,e.post("/api/v1/users").then(a=>{const t=a.data;m.success({text:C("admin.user_created")}),l.push({name:"admin.manageUser",params:{userId:t.info.id}})})}return(d,a)=>{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:a[4]||(a[4]=s=>o(e).onKeydown(s))},[r(t,{modelValue:o(e).name,"onUpdate:modelValue":a[0]||(a[0]=s=>o(e).name=s),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":a[1]||(a[1]=s=>o(e).email=s),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":a[2]||(a[2]=s=>o(e).password=s),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":a[3]||(a[3]=s=>o(e).is_admin=s),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"])],32)]),_:1}),r(w)])}}};export{v as default}; diff --git a/public/build/assets/Create-DbNLDpJC.js b/public/build/assets/Create-DbNLDpJC.js deleted file mode 100644 index f18a13cb..00000000 --- a/public/build/assets/Create-DbNLDpJC.js +++ /dev/null @@ -1 +0,0 @@ -import{a as _,c as F,d as V,j as r,k as b,l as n,m as y,e as g,f as o,C as x,p as B,H as C}from"./app-D4Udf6Mm.js";import{F as E}from"./Form-BGrUTood.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const k={__name:"Create",setup(N){const l=_(),m=B(),e=F(new E({name:"",email:"",password:"",password_confirmation:"",is_admin:!1}));async function i(d){e.password_confirmation=e.password,e.post("/api/v1/users").then(a=>{const t=a.data;l.success({text:C("admin.user_created")}),m.push({name:"admin.manageUser",params:{userId:t.info.id}})})}return(d,a)=>{const t=n("FormField"),u=n("FormPasswordField"),p=n("FormCheckbox"),f=n("FormButtons"),c=n("FormWrapper"),w=n("VueFooter");return y(),V("div",null,[r(c,{title:"admin.new_user"},{default:b(()=>[g("form",{onSubmit:x(i,["prevent"]),onKeydown:a[4]||(a[4]=s=>o(e).onKeydown(s))},[r(t,{modelValue:o(e).name,"onUpdate:modelValue":a[0]||(a[0]=s=>o(e).name=s),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":a[1]||(a[1]=s=>o(e).email=s),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":a[2]||(a[2]=s=>o(e).password=s),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":a[3]||(a[3]=s=>o(e).is_admin=s),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"])],32)]),_:1}),r(w)])}}};export{k as default}; diff --git a/public/build/assets/CreateUpdate-3ZZroKyC.js b/public/build/assets/CreateUpdate-3ZZroKyC.js deleted file mode 100644 index ca550c30..00000000 --- a/public/build/assets/CreateUpdate-3ZZroKyC.js +++ /dev/null @@ -1 +0,0 @@ -import{T as v,x as w,c as _,$ as h,K as y,h as N,k as C,f as t,_ as E,l as m,m as I,e as V,j as i,C as S,p as $}from"./app-D4Udf6Mm.js";import{F as k}from"./Form-BGrUTood.js";import{u as K}from"./bus-RVphoWuw.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const U={__name:"CreateUpdate",props:{groupId:[Number,String]},setup(c){const p=v(),d=$(),l=E(),s=K(),a=c,r=w(()=>a.groupId!=null),o=_(new k({name:""}));h(()=>{l.name=="editGroup"&&(s.editedGroupName?(o.name=s.editedGroupName,s.editedGroupName=void 0):y.get(a.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/"+a.groupId).then(e=>{p.addOrEdit(e.data),d.push({name:"groups"})})}return(e,n)=>{const F=m("FormField"),b=m("FormButtons"),G=m("FormWrapper");return I(),N(G,{title:t(r)?e.$t("groups.forms.rename_group"):e.$t("groups.forms.new_group")},{default:C(()=>[V("form",{onSubmit:S(f,["prevent"]),onKeydown:n[1]||(n[1]=u=>t(o).onKeydown(u))},[i(F,{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(b,{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"])],32)]),_:1},8,["title"])}}};export{U as default}; diff --git a/public/build/assets/CreateUpdate-Dr-XnMyq.js b/public/build/assets/CreateUpdate-BlUdhaWn.js similarity index 81% rename from public/build/assets/CreateUpdate-Dr-XnMyq.js rename to public/build/assets/CreateUpdate-BlUdhaWn.js index 079a7ce3..bc98e74f 100644 --- a/public/build/assets/CreateUpdate-Dr-XnMyq.js +++ b/public/build/assets/CreateUpdate-BlUdhaWn.js @@ -1 +1 @@ -import{Z as Ne,r as d,l as h,m as a,d as u,e as s,f as e,n as $,V as G,h as b,k as y,C as O,j as r,U as R,i as c,F as ce,u as qe,b as De,a as Pe,c as se,x as Ve,o as He,J as T,P as ne,s as Q,D as ae,E as Ee,_ as Ke,t as k,g as $e,w as Fe,L as Qe,p as Ge,T as Re,H as M}from"./app-D4Udf6Mm.js";import{F as re}from"./Form-BGrUTood.js";import{_ as ie}from"./OtpDisplay-D2QMFFL_.js";import{_ as je}from"./QrContentDisplay-C6rCu47Q.js";import{u as ze}from"./bus-RVphoWuw.js";import"./Spinner-DHClvaFf.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const We=["for","innerHTML"],Je=["disabled","id","type","value","placeholder","maxlength"],Ze={key:0,class:"control"},Xe=["title"],Ye={class:"icon"},eo={key:1,class:"control"},oo=["title"],to={class:"icon has-text-danger"},lo=["innerHTML"],Ie=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:j}){const g=p,{inputId:q}=Ne(g.inputType,g.fieldName),m=d(g.isDisabled||g.isEditMode),F=d(!1),x=d(0),w=j;function o(f){let v=f.target.value;g.modelModifiers.trimAll&&(v=v.replace(/\s+/g,"")),w("update:modelValue",v)}function S(f){let v=f.target.value;F.value=v.includes(" "),w("update:modelValue",v)}function E(f){F.value=f.target.value.includes(" "),x.value+=1}return(f,v)=>{const D=h("FontAwesomeIcon"),P=h("FieldError");return a(),u(ce,null,[s("label",{for:e(q),class:"label",innerHTML:f.$t(p.label)},null,8,We),s("div",{class:$(["field has-addons mb-0",{"pt-3":p.hasOffset}])},[s("div",{class:$(["control",{"is-expanded":p.isExpanded}])},[(a(),u("input",G({key:e(x),disabled:e(m),id:e(q),type:p.inputType,class:"input",value:p.modelValue,placeholder:p.placeholder},f.$attrs,{onInput:S,onChange:o,onBlur:E,maxlength:p.maxLength}),null,16,Je))],2),p.isEditMode?(a(),b(e(R),{key:0},{default:y(({mode:V})=>[e(m)?(a(),u("div",Ze,[s("button",{type:"button",class:$(["button field-lock",{"is-dark":V=="dark"}]),onClick:v[0]||(v[0]=O(i=>m.value=!1,["stop"])),title:f.$t("twofaccounts.forms.unlock.title")},[s("span",Ye,[r(D,{icon:["fas","lock"]})])],10,Xe)])):(a(),u("div",eo,[s("button",{type:"button",class:$(["button field-unlock",{"is-dark":V=="dark"}]),onClick:v[1]||(v[1]=O(i=>m.value=!0,["stop"])),title:f.$t("twofaccounts.forms.lock.title")},[s("span",to,[r(D,{icon:["fas","lock-open"]})])],10,oo)]))]),_:1})):c("",!0)],2),e(F)?(a(),b(P,{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(P,{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,lo)):c("",!0)],64)}}}),so={class:"container preview has-text-centered"},no={class:"columns is-mobile"},ao={class:"column"},ro={key:1,class:"add-icon-button"},io={class:"columns is-mobile",role:"alert"},co={key:0,class:"column"},uo={class:"columns is-mobile"},fo={class:"column quickform-footer"},po={class:"field is-grouped is-grouped-centered"},mo={class:"control"},vo={key:0,class:"field is-grouped"},ho={class:"control"},go=["title"],_o={class:"file-cta"},yo={class:"file-icon"},wo={class:"file-label"},bo={class:"label"},ko={class:"field is-grouped"},Vo={key:0,class:"control"},Eo={class:"icon is-small"},$o={class:"control is-flex"},Fo={class:"file-cta"},Io={class:"file-icon"},Co={class:"file-label"},To=["src","alt"],Mo=["aria-label"],xo={class:"field"},So=["innerHTML"],Lo={key:3},Ao={key:0},Oo={class:"title is-4 mt-5 mb-2"},Uo={class:"help mb-4"},Bo={class:"control"},No={key:0,class:"control"},Go={__name:"CreateUpdate",props:{twofaccountId:[Number,String]},setup(p){const j=Qe("2fauth"),g=Ge(),q=Ke(),m=qe(),F=De(),x=ze(),w=Pe(),o=se(new re({service:"",account:"",otp_type:"",icon:"",group_id:m.preferences.defaultGroup==-1?m.preferences.activeGroup:m.preferences.defaultGroup,secret:"",algorithm:"",digits:null,counter:null,period:null,image:""})),S=se(new re({qrcode:null})),E=se(new re({icon:null})),f=d({otp_type:"",account:"",service:"",icon:""}),v=[{text:"TOTP",value:"totp"},{text:"HOTP",value:"hotp"},{text:"STEAM",value:"steamtotp"}],D=[{text:"6",value:6},{text:"7",value:7},{text:"8",value:8},{text:"9",value:9},{text:"10",value:10}],P=[{text:"sha1",value:"sha1"},{text:"sha256",value:"sha256"},{text:"sha512",value:"sha512"},{text:"md5",value:"md5"}],V=d(),i=d(""),U=d(!1),L=d(!1),B=d(!1),N=d(!1),I=d(!1),z=d(!1),W=d(null),J=d(null),H=d(null),Z=d(null),ue=d(null),de=d(null),fe=d(null),X=p,_=Ve(()=>X.twofaccountId!=null),pe=Ve(()=>Re().items.map(t=>({text:t.id>0?t.name:"- "+M("groups.no_group")+" -",value:t.id})));He(()=>{q.name=="editAccount"?T.get(X.twofaccountId).then(t=>{o.fill(t.data),o.group_id==null&&(o.group_id=0),o.setOriginal(),i.value=o.icon,N.value=!0}):x.decodedUri?(V.value=x.decodedUri,x.decodedUri=null,m.preferences.AutoSaveQrcodedAccount?T.storeFromUri(V.value).then(t=>{xe(t.data)}).catch(t=>{t.response.data.errors.uri&&(L.value=!0,N.value=!0)}):T.preview(V.value).then(t=>{o.fill(t.data),i.value=t.data.icon?t.data.icon:"",U.value=!0,ne().then(()=>{H.value.show()})}).catch(t=>{t.response.data.errors.uri&&(L.value=!0,N.value=!0)})):N.value=!0}),Q(i,t=>{U.value&&ne().then(()=>{H.value.icon=t})}),Q(I,t=>{var l,A;t==!1&&((l=Z.value)==null||l.clearOTP(),(A=H.value)==null||A.clearOTP())}),Q(B,t=>{var l;t==!1&&((l=J.value)==null||l.clearOTP(),g.push({name:"accounts"}))}),Q(()=>o.otp_type,(t,l)=>{t==="steamtotp"?(o.service="Steam",ye()):l==="steamtotp"&&(o.service="",C())});function Ce(){_.value?Te():me()}async function me(){o.icon=i.value;const{data:t}=await o.post("/api/v1/twofaccounts");o.errors.any()===!1&&(F.items.push(t),w.success({text:M("twofaccounts.account_created")}),g.push({name:"accounts"}))}async function Te(){if(i.value!==o.icon){let l="";l=o.icon,o.icon=i.value,i.value=l,C()}const{data:t}=await o.put("/api/v1/twofaccounts/"+X.twofaccountId);if(o.errors.any()===!1){const l=F.items.findIndex(A=>A.id===t.id);F.items.splice(l,1,t),w.success({text:M("twofaccounts.account_updated")}),g.push({name:"accounts"})}}function Me(){o.clear(),I.value=!0,Z.value.show()}function xe(t){f.value.otp_type=t.otp_type,f.value.service=t.service,f.value.account=t.account,f.value.icon=t.icon,ne().then(()=>{B.value=!0,J.value.show(t.id)})}function ve(){o.hasChanged()||i.value!=o.icon?confirm(M("twofaccounts.confirm.cancel"))===!0&&((!_.value||i.value!=o.icon)&&C(),g.push({name:"accounts"})):g.push({name:"accounts"})}function he(){C(),E.icon=W.value.files[0],E.upload("/api/v1/icons",{returnError:!0}).then(t=>{i.value=t.data.filename,U.value&&(o.icon=i.value)}).catch(t=>{t.response.status!==422&&w.alert({text:t.response.data.message})})}function C(){_.value?i.value&&(i.value!==o.icon&&T.deleteIcon(i.value),i.value=""):i.value&&(T.deleteIcon(i.value),i.value="",U.value&&(o.icon=""))}function ge(t){o.counter=t.nextHotpCounter}function _e(t){o.errors.set(o.extractErrors(t))}function Se(){S.qrcode=de.value.files[0],S.upload("/api/v1/qrcode/decode",{returnError:!0}).then(t=>{V.value=t.data.data,T.preview(V.value,{returnError:!0}).then(l=>{o.fill(l.data),i.value=l.data.icon?l.data.icon:null}).catch(l=>{l.response.status===422?l.response.data.errors.uri?L.value=!0:w.alert({text:M(l.response.data.message)}):w.error(l)})}).catch(t=>{t.response.status!==422&&w.alert({text:t.response.data.message})})}function ye(){m.preferences.getOfficialIcons&&(z.value=!0,T.getLogo(o.service,{returnError:!0}).then(t=>{t.status===201?(C(),i.value=t.data.filename):w.warn({text:M("errors.no_logo_found_for_x",{service:we(o.service)})})}).catch(()=>{w.warn({text:M("errors.no_logo_found_for_x",{service:we(o.service)})})}).finally(()=>{z.value=!1}))}function we(t){return t.replace(/(<([^> ]+)>)/ig,"")}return(t,l)=>{const A=h("Modal"),Y=h("FieldError"),K=h("FontAwesomeIcon"),ee=h("VueButton"),be=h("ButtonBackCloseCancel"),oe=h("FormField"),Le=h("FormSelect"),te=h("FormToggle"),Ae=h("VueFooter"),ke=h("modal"),Oe=h("FormWrapper");return a(),u("div",null,[e(m).preferences.AutoSaveQrcodedAccount?(a(),b(A,{key:0,modelValue:e(B),"onUpdate:modelValue":l[1]||(l[1]=n=>ae(B)?B.value=n:null)},{default:y(()=>[r(ie,G({ref_key:"OtpDisplayForAutoSave",ref:J},e(f),{onPleaseCloseMe:l[0]||(l[0]=n=>e(g).push({name:"accounts"}))}),null,16)]),_:1},8,["modelValue"])):c("",!0),!e(_)&&e(U)?(a(),u("form",{key:1,onSubmit:O(me,["prevent"]),onKeydown:l[3]||(l[3]=n=>e(o).onKeydown(n))},[s("div",so,[s("div",no,[s("div",ao,[e(E).errors.hasAny("icon")?(a(),b(Y,{key:0,error:e(E).errors.get("icon"),field:"icon",class:"help-for-file"},null,8,["error"])):c("",!0),e(i)?c("",!0):(a(),u("label",ro,[s("input",{class:"file-input",type:"file",accept:"image/*",onChange:he,ref_key:"iconInput",ref:W},null,544),r(K,{icon:["fas","image"],size:"2x"})])),e(i)?(a(),u("button",{key:2,class:"delete delete-icon-button is-medium",onClick:O(C,["prevent"])})):c("",!0),r(ie,G({ref_key:"OtpDisplayForQuickForm",ref:H},e(o).data(),{onIncrementHotp:ge,onValidationError:_e,onPleaseCloseMe:l[2]||(l[2]=n=>I.value=!1)}),null,16)])]),s("div",io,[e(o).errors.any()?(a(),u("div",co,[(a(!0),u(ce,null,Ee(e(o).errors.errors,(n,le)=>(a(),u("p",{key:le,class:"help is-danger"},[s("ul",null,[(a(!0),u(ce,null,Ee(n,(Ue,Be)=>(a(),u("li",{key:Be},k(Ue),1))),128))])]))),128))])):c("",!0)]),s("div",uo,[s("div",fo,[s("div",po,[s("div",mo,[r(ee,{isLoading:e(o).isBusy},{default:y(()=>[$e(k(t.$t("commons.save")),1)]),_:1},8,["isLoading"])]),r(be,{action:"cancel",isText:!0,isRounded:!1,useLinkTag:!1,onCanceled:ve})])])])])],32)):c("",!0),e(N)?(a(),b(Oe,{key:2,title:t.$t(e(_)?"twofaccounts.forms.edit_account":"twofaccounts.forms.new_account")},{default:y(()=>[s("form",{onSubmit:O(Ce,["prevent"]),onKeydown:l[15]||(l[15]=n=>e(o).onKeydown(n))},[e(_)?c("",!0):(a(),u("div",vo,[s("div",ho,[r(e(R),null,{default:y(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:$(["file is-small",{"is-black":n=="dark"}]),onKeyup:l[4]||(l[4]=Fe(le=>e(ue).click(),["enter"]))},[s("label",{class:"file-label",title:t.$t("twofaccounts.forms.use_qrcode.title"),ref_key:"qrcodeInputLabel",ref:ue},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:Se,ref_key:"qrcodeInput",ref:de},null,544),s("span",_o,[s("span",yo,[r(K,{icon:["fas","qrcode"],size:"lg"})]),s("span",wo,k(t.$t("twofaccounts.forms.prefill_using_qrcode")),1)])],8,go)],34)]),_:1})])])),e(S).errors.hasAny("qrcode")?(a(),b(Y,{key:1,error:e(S).errors.get("qrcode"),field:"qrcode",class:"help-for-file"},null,8,["error"])):c("",!0),r(oe,{modelValue:e(o).service,"onUpdate:modelValue":l[5]||(l[5]=n=>e(o).service=n),fieldName:"service",fieldError:e(o).errors.get("email"),isDisabled:e(o).otp_type==="steamtotp",label:"twofaccounts.service",placeholder:t.$t("twofaccounts.forms.service.placeholder"),autofocus:""},null,8,["modelValue","fieldError","isDisabled","placeholder"]),r(oe,{modelValue:e(o).account,"onUpdate:modelValue":l[6]||(l[6]=n=>e(o).account=n),fieldName:"account",fieldError:e(o).errors.get("account"),label:"twofaccounts.account",placeholder:t.$t("twofaccounts.forms.account.placeholder")},null,8,["modelValue","fieldError","placeholder"]),s("label",bo,k(t.$t("twofaccounts.icon")),1),s("div",ko,[e(m).preferences.getOfficialIcons?(a(),u("div",Vo,[r(e(R),null,{default:y(({mode:n})=>[r(ee,{onClick:ye,color:n=="dark"?"is-dark":"",nativeType:"button","is-loading":e(z),isDisabled:!e(o).service},{default:y(()=>[s("span",Eo,[r(K,{icon:["fas","globe"]})]),s("span",null,k(t.$t("twofaccounts.forms.i_m_lucky")),1)]),_:2},1032,["color","is-loading","isDisabled"])]),_:1})])):c("",!0),s("div",$o,[r(e(R),null,{default:y(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:$(["file mr-3",n=="dark"?"is-dark":"is-white"]),onKeyup:l[7]||(l[7]=Fe(le=>e(fe).click(),["enter"]))},[s("label",{class:"file-label",ref_key:"iconInputLabel",ref:fe},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:he,ref_key:"iconInput",ref:W},null,544),s("span",Fo,[s("span",Io,[r(K,{icon:["fas","upload"]})]),s("span",Co,k(t.$t("twofaccounts.forms.choose_image")),1)])],512)],34),e(i)?(a(),u("span",{key:0,class:$(["tag is-large",n=="dark"?"is-dark":"is-white"])},[s("img",{class:"icon-preview",src:e(j).config.subdirectory+"/storage/icons/"+e(i),alt:t.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,To),s("button",{class:"clear-selection delete is-small",onClick:O(C,["prevent"]),"aria-label":t.$t("twofaccounts.remove_icon")},null,8,Mo)],2)):c("",!0)]),_:1})])]),s("div",xo,[e(E).errors.hasAny("icon")?(a(),b(Y,{key:0,error:e(E).errors.get("icon"),field:"icon",class:"help-for-file"},null,8,["error"])):c("",!0),e(m).preferences.getOfficialIcons?(a(),u("p",{key:1,class:"help",innerHTML:t.$t("twofaccounts.forms.i_m_lucky_legend")},null,8,So)):c("",!0)]),e(pe).length>0?(a(),b(Le,{key:2,modelValue:e(o).group_id,"onUpdate:modelValue":l[8]||(l[8]=n=>e(o).group_id=n),options:e(pe),fieldName:"group_id",label:"twofaccounts.forms.group.label",help:"twofaccounts.forms.group.help"},null,8,["modelValue","options"])):c("",!0),r(te,{modelValue:e(o).otp_type,"onUpdate:modelValue":l[9]||(l[9]=n=>e(o).otp_type=n),isDisabled:e(_),choices:v,fieldName:"otp_type",fieldError:e(o).errors.get("otp_type"),label:"twofaccounts.forms.otp_type.label",help:"twofaccounts.forms.otp_type.help",hasOffset:!0},null,8,["modelValue","isDisabled","fieldError"]),e(o).otp_type!=""?(a(),u("div",Lo,[r(Ie,{isEditMode:e(_),modelValue:e(o).secret,"onUpdate:modelValue":l[10]||(l[10]=n=>e(o).secret=n),modelModifiers:{trimAll:!0},fieldName:"secret",fieldError:e(o).errors.get("secret"),label:"twofaccounts.forms.secret.label",help:"twofaccounts.forms.secret.help"},null,8,["isEditMode","modelValue","fieldError"]),e(o).otp_type!=="steamtotp"?(a(),u("div",Ao,[s("h2",Oo,k(t.$t("commons.options")),1),s("p",Uo,k(t.$t("twofaccounts.forms.options_help")),1),r(te,{modelValue:e(o).digits,"onUpdate:modelValue":l[11]||(l[11]=n=>e(o).digits=n),choices:D,fieldName:"digits",fieldError:e(o).errors.get("digits"),label:"twofaccounts.forms.digits.label",help:"twofaccounts.forms.digits.help"},null,8,["modelValue","fieldError"]),r(te,{modelValue:e(o).algorithm,"onUpdate:modelValue":l[12]||(l[12]=n=>e(o).algorithm=n),choices:P,fieldName:"algorithm",fieldError:e(o).errors.get("algorithm"),label:"twofaccounts.forms.algorithm.label",help:"twofaccounts.forms.algorithm.help"},null,8,["modelValue","fieldError"]),e(o).otp_type==="totp"?(a(),b(oe,{key:0,pattern:"[0-9]{1,4}",class:$("is-third-width-field"),modelValue:e(o).period,"onUpdate:modelValue":l[13]||(l[13]=n=>e(o).period=n),fieldName:"period",fieldError:e(o).errors.get("period"),label:"twofaccounts.forms.period.label",help:"twofaccounts.forms.period.help",placeholder:t.$t("twofaccounts.forms.period.placeholder")},null,8,["modelValue","fieldError","placeholder"])):c("",!0),e(o).otp_type==="hotp"?(a(),b(Ie,{key:1,pattern:"[0-9]{1,4}",isEditMode:e(_),isExpanded:!1,modelValue:e(o).counter,"onUpdate:modelValue":l[14]||(l[14]=n=>e(o).counter=n),fieldName:"counter",fieldError:e(o).errors.get("counter"),label:"twofaccounts.forms.counter.label",placeholder:t.$t("twofaccounts.forms.counter.placeholder"),help:e(_)?"twofaccounts.forms.counter.help_lock":"twofaccounts.forms.counter.help"},null,8,["isEditMode","modelValue","fieldError","placeholder","help"])):c("",!0)])):c("",!0)])):c("",!0),r(Ae,{showButtons:!0},{default:y(()=>[s("p",Bo,[r(ee,{id:e(_)?"btnUpdate":"btnCreate",isLoading:e(o).isBusy,class:"is-rounded"},{default:y(()=>[$e(k(e(_)?t.$t("commons.save"):t.$t("commons.create")),1)]),_:1},8,["id","isLoading"])]),e(o).otp_type&&e(o).secret?(a(),u("p",No,[s("button",{id:"btnPreview",type:"button",class:"button is-success is-rounded",onClick:Me},k(t.$t("twofaccounts.forms.test")),1)])):c("",!0),r(be,{action:"cancel",useLinkTag:!1,onCanceled:ve})]),_:1})],32),r(ke,{modelValue:e(I),"onUpdate:modelValue":l[17]||(l[17]=n=>ae(I)?I.value=n:null)},{default:y(()=>[r(ie,G({ref_key:"OtpDisplayForAdvancedForm",ref:Z},e(o).data(),{onIncrementHotp:ge,onValidationError:_e,onPleaseCloseMe:l[16]||(l[16]=n=>I.value=!1)}),null,16)]),_:1},8,["modelValue"])]),_:1},8,["title"])):c("",!0),r(ke,{modelValue:e(L),"onUpdate:modelValue":l[18]||(l[18]=n=>ae(L)?L.value=n:null)},{default:y(()=>[r(je,{qrContent:e(V)},null,8,["qrContent"])]),_:1},8,["modelValue"])])}}};export{Go as default}; +import{_ as Ne,r as d,e as h,f as a,g as u,h as s,i as e,n as E,W as G,k as b,p as y,C as O,m as r,U as R,l as c,F as ce,L as qe,u as De,$ as Pe,a as He,c as Ke,b as Qe,d as se,x as Ve,o as Ge,J as T,Q as ne,s as Q,D as ae,E as $e,V as Re,H as M,t as k,j as Ee,w as Fe}from"./app-CuhK3jij.js";import{F as re}from"./Form-o2lWAB-o.js";import{_ as ie}from"./OtpDisplay-D1Cg2JBE.js";import{_ as je}from"./QrContentDisplay-CyBGNU2O.js";import{u as ze}from"./bus-BalNs30H.js";import"./Spinner-WULdfd4I.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const We=["for","innerHTML"],Je=["disabled","id","type","value","placeholder","maxlength"],Xe={key:0,class:"control"},Ye=["title"],Ze={class:"icon"},eo={key:1,class:"control"},oo=["title"],to={class:"icon has-text-danger"},lo=["innerHTML"],Ie=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:j}){const g=p,{inputId:q}=Ne(g.inputType,g.fieldName),m=d(g.isDisabled||g.isEditMode),F=d(!1),x=d(0),w=j;function o(f){let v=f.target.value;g.modelModifiers.trimAll&&(v=v.replace(/\s+/g,"")),w("update:modelValue",v)}function S(f){let v=f.target.value;F.value=v.includes(" "),w("update:modelValue",v)}function $(f){F.value=f.target.value.includes(" "),x.value+=1}return(f,v)=>{const D=h("FontAwesomeIcon"),P=h("FieldError");return a(),u(ce,null,[s("label",{for:e(q),class:"label",innerHTML:f.$t(p.label)},null,8,We),s("div",{class:E(["field has-addons mb-0",{"pt-3":p.hasOffset}])},[s("div",{class:E(["control",{"is-expanded":p.isExpanded}])},[(a(),u("input",G({key:e(x),disabled:e(m),id:e(q),type:p.inputType,class:"input",value:p.modelValue,placeholder:p.placeholder},f.$attrs,{onInput:S,onChange:o,onBlur:$,maxlength:p.maxLength}),null,16,Je))],2),p.isEditMode?(a(),b(e(R),{key:0},{default:y(({mode:V})=>[e(m)?(a(),u("div",Xe,[s("button",{type:"button",class:E(["button field-lock",{"is-dark":V=="dark"}]),onClick:v[0]||(v[0]=O(i=>m.value=!1,["stop"])),title:f.$t("twofaccounts.forms.unlock.title")},[s("span",Ze,[r(D,{icon:["fas","lock"]})])],10,Ye)])):(a(),u("div",eo,[s("button",{type:"button",class:E(["button field-unlock",{"is-dark":V=="dark"}]),onClick:v[1]||(v[1]=O(i=>m.value=!0,["stop"])),title:f.$t("twofaccounts.forms.lock.title")},[s("span",to,[r(D,{icon:["fas","lock-open"]})])],10,oo)]))]),_:1})):c("",!0)],2),e(F)?(a(),b(P,{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(P,{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,lo)):c("",!0)],64)}}}),so={class:"container preview has-text-centered"},no={class:"columns is-mobile"},ao={class:"column"},ro={key:1,class:"add-icon-button"},io={class:"columns is-mobile",role:"alert"},co={key:0,class:"column"},uo={class:"columns is-mobile"},fo={class:"column quickform-footer"},po={class:"field is-grouped is-grouped-centered"},mo={class:"control"},vo={key:0,class:"field is-grouped"},ho={class:"control"},go=["title"],_o={class:"file-cta"},yo={class:"file-icon"},wo={class:"file-label"},bo={class:"label"},ko={class:"field is-grouped"},Vo={key:0,class:"control"},$o={class:"icon is-small"},Eo={class:"control is-flex"},Fo={class:"file-cta"},Io={class:"file-icon"},Co={class:"file-label"},To=["src","alt"],Mo=["aria-label"],xo={class:"field"},So=["innerHTML"],Lo={key:3},Ao={key:0},Oo={class:"title is-4 mt-5 mb-2"},Uo={class:"help mb-4"},Bo={class:"control"},No={key:0,class:"control"},Go={__name:"CreateUpdate",props:{twofaccountId:[Number,String]},setup(p){const j=qe("2fauth"),g=De(),q=Pe(),m=He(),F=Ke(),x=ze(),w=Qe(),o=se(new re({service:"",account:"",otp_type:"",icon:"",group_id:m.preferences.defaultGroup==-1?m.preferences.activeGroup:m.preferences.defaultGroup,secret:"",algorithm:"",digits:null,counter:null,period:null,image:""})),S=se(new re({qrcode:null})),$=se(new re({icon:null})),f=d({otp_type:"",account:"",service:"",icon:""}),v=[{text:"TOTP",value:"totp"},{text:"HOTP",value:"hotp"},{text:"STEAM",value:"steamtotp"}],D=[{text:"6",value:6},{text:"7",value:7},{text:"8",value:8},{text:"9",value:9},{text:"10",value:10}],P=[{text:"sha1",value:"sha1"},{text:"sha256",value:"sha256"},{text:"sha512",value:"sha512"},{text:"md5",value:"md5"}],V=d(),i=d(""),U=d(!1),L=d(!1),B=d(!1),N=d(!1),I=d(!1),z=d(!1),W=d(null),J=d(null),H=d(null),X=d(null),ue=d(null),de=d(null),fe=d(null),Y=p,_=Ve(()=>Y.twofaccountId!=null),pe=Ve(()=>Re().items.map(t=>({text:t.id>0?t.name:"- "+M("groups.no_group")+" -",value:t.id})));Ge(()=>{q.name=="editAccount"?T.get(Y.twofaccountId).then(t=>{o.fill(t.data),o.group_id==null&&(o.group_id=0),o.setOriginal(),i.value=o.icon,N.value=!0}):x.decodedUri?(V.value=x.decodedUri,x.decodedUri=null,m.preferences.AutoSaveQrcodedAccount?T.storeFromUri(V.value).then(t=>{xe(t.data)}).catch(t=>{t.response.data.errors.uri&&(L.value=!0,N.value=!0)}):T.preview(V.value).then(t=>{o.fill(t.data),i.value=t.data.icon?t.data.icon:"",U.value=!0,ne().then(()=>{H.value.show()})}).catch(t=>{t.response.data.errors.uri&&(L.value=!0,N.value=!0)})):N.value=!0}),Q(i,t=>{U.value&&ne().then(()=>{H.value.icon=t})}),Q(I,t=>{var l,A;t==!1&&((l=X.value)==null||l.clearOTP(),(A=H.value)==null||A.clearOTP())}),Q(B,t=>{var l;t==!1&&((l=J.value)==null||l.clearOTP(),g.push({name:"accounts"}))}),Q(()=>o.otp_type,(t,l)=>{t==="steamtotp"?(o.service="Steam",ye()):l==="steamtotp"&&(o.service="",C())});function Ce(){_.value?Te():me()}async function me(){o.icon=i.value;const{data:t}=await o.post("/api/v1/twofaccounts");o.errors.any()===!1&&(F.items.push(t),w.success({text:M("twofaccounts.account_created")}),g.push({name:"accounts"}))}async function Te(){if(i.value!==o.icon){let l="";l=o.icon,o.icon=i.value,i.value=l,C()}const{data:t}=await o.put("/api/v1/twofaccounts/"+Y.twofaccountId);if(o.errors.any()===!1){const l=F.items.findIndex(A=>A.id===t.id);F.items.splice(l,1,t),w.success({text:M("twofaccounts.account_updated")}),g.push({name:"accounts"})}}function Me(){o.clear(),I.value=!0,X.value.show()}function xe(t){f.value.otp_type=t.otp_type,f.value.service=t.service,f.value.account=t.account,f.value.icon=t.icon,ne().then(()=>{B.value=!0,J.value.show(t.id)})}function ve(){o.hasChanged()||i.value!=o.icon?confirm(M("twofaccounts.confirm.cancel"))===!0&&((!_.value||i.value!=o.icon)&&C(),g.push({name:"accounts"})):g.push({name:"accounts"})}function he(){C(),$.icon=W.value.files[0],$.upload("/api/v1/icons",{returnError:!0}).then(t=>{i.value=t.data.filename,U.value&&(o.icon=i.value)}).catch(t=>{t.response.status!==422&&w.alert({text:t.response.data.message})})}function C(){_.value?i.value&&(i.value!==o.icon&&T.deleteIcon(i.value),i.value=""):i.value&&(T.deleteIcon(i.value),i.value="",U.value&&(o.icon=""))}function ge(t){o.counter=t.nextHotpCounter}function _e(t){o.errors.set(o.extractErrors(t))}function Se(){S.qrcode=de.value.files[0],S.upload("/api/v1/qrcode/decode",{returnError:!0}).then(t=>{V.value=t.data.data,T.preview(V.value,{returnError:!0}).then(l=>{o.fill(l.data),i.value=l.data.icon?l.data.icon:null}).catch(l=>{l.response.status===422?l.response.data.errors.uri?L.value=!0:w.alert({text:M(l.response.data.message)}):w.error(l)})}).catch(t=>{t.response.status!==422&&w.alert({text:t.response.data.message})})}function ye(){m.preferences.getOfficialIcons&&(z.value=!0,T.getLogo(o.service,{returnError:!0}).then(t=>{t.status===201?(C(),i.value=t.data.filename):w.warn({text:M("errors.no_logo_found_for_x",{service:we(o.service)})})}).catch(()=>{w.warn({text:M("errors.no_logo_found_for_x",{service:we(o.service)})})}).finally(()=>{z.value=!1}))}function we(t){return t.replace(/(<([^> ]+)>)/ig,"")}return(t,l)=>{const A=h("Modal"),Z=h("FieldError"),K=h("FontAwesomeIcon"),ee=h("VueButton"),be=h("ButtonBackCloseCancel"),oe=h("FormField"),Le=h("FormSelect"),te=h("FormToggle"),Ae=h("VueFooter"),ke=h("modal"),Oe=h("FormWrapper");return a(),u("div",null,[e(m).preferences.AutoSaveQrcodedAccount?(a(),b(A,{key:0,modelValue:e(B),"onUpdate:modelValue":l[1]||(l[1]=n=>ae(B)?B.value=n:null)},{default:y(()=>[r(ie,G({ref_key:"OtpDisplayForAutoSave",ref:J},e(f),{onPleaseCloseMe:l[0]||(l[0]=n=>e(g).push({name:"accounts"}))}),null,16)]),_:1},8,["modelValue"])):c("",!0),!e(_)&&e(U)?(a(),u("form",{key:1,onSubmit:O(me,["prevent"]),onKeydown:l[3]||(l[3]=n=>e(o).onKeydown(n))},[s("div",so,[s("div",no,[s("div",ao,[e($).errors.hasAny("icon")?(a(),b(Z,{key:0,error:e($).errors.get("icon"),field:"icon",class:"help-for-file"},null,8,["error"])):c("",!0),e(i)?c("",!0):(a(),u("label",ro,[s("input",{class:"file-input",type:"file",accept:"image/*",onChange:he,ref_key:"iconInput",ref:W},null,544),r(K,{icon:["fas","image"],size:"2x"})])),e(i)?(a(),u("button",{key:2,class:"delete delete-icon-button is-medium",onClick:O(C,["prevent"])})):c("",!0),r(ie,G({ref_key:"OtpDisplayForQuickForm",ref:H},e(o).data(),{onIncrementHotp:ge,onValidationError:_e,onPleaseCloseMe:l[2]||(l[2]=n=>I.value=!1)}),null,16)])]),s("div",io,[e(o).errors.any()?(a(),u("div",co,[(a(!0),u(ce,null,$e(e(o).errors.errors,(n,le)=>(a(),u("p",{key:le,class:"help is-danger"},[s("ul",null,[(a(!0),u(ce,null,$e(n,(Ue,Be)=>(a(),u("li",{key:Be},k(Ue),1))),128))])]))),128))])):c("",!0)]),s("div",uo,[s("div",fo,[s("div",po,[s("div",mo,[r(ee,{isLoading:e(o).isBusy},{default:y(()=>[Ee(k(t.$t("commons.save")),1)]),_:1},8,["isLoading"])]),r(be,{action:"cancel",isText:!0,isRounded:!1,useLinkTag:!1,onCanceled:ve})])])])])],32)):c("",!0),e(N)?(a(),b(Oe,{key:2,title:t.$t(e(_)?"twofaccounts.forms.edit_account":"twofaccounts.forms.new_account")},{default:y(()=>[s("form",{onSubmit:O(Ce,["prevent"]),onKeydown:l[15]||(l[15]=n=>e(o).onKeydown(n))},[e(_)?c("",!0):(a(),u("div",vo,[s("div",ho,[r(e(R),null,{default:y(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:E(["file is-small",{"is-black":n=="dark"}]),onKeyup:l[4]||(l[4]=Fe(le=>e(ue).click(),["enter"]))},[s("label",{class:"file-label",title:t.$t("twofaccounts.forms.use_qrcode.title"),ref_key:"qrcodeInputLabel",ref:ue},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:Se,ref_key:"qrcodeInput",ref:de},null,544),s("span",_o,[s("span",yo,[r(K,{icon:["fas","qrcode"],size:"lg"})]),s("span",wo,k(t.$t("twofaccounts.forms.prefill_using_qrcode")),1)])],8,go)],34)]),_:1})])])),e(S).errors.hasAny("qrcode")?(a(),b(Z,{key:1,error:e(S).errors.get("qrcode"),field:"qrcode",class:"help-for-file"},null,8,["error"])):c("",!0),r(oe,{modelValue:e(o).service,"onUpdate:modelValue":l[5]||(l[5]=n=>e(o).service=n),fieldName:"service",fieldError:e(o).errors.get("email"),isDisabled:e(o).otp_type==="steamtotp",label:"twofaccounts.service",placeholder:t.$t("twofaccounts.forms.service.placeholder"),autofocus:""},null,8,["modelValue","fieldError","isDisabled","placeholder"]),r(oe,{modelValue:e(o).account,"onUpdate:modelValue":l[6]||(l[6]=n=>e(o).account=n),fieldName:"account",fieldError:e(o).errors.get("account"),label:"twofaccounts.account",placeholder:t.$t("twofaccounts.forms.account.placeholder")},null,8,["modelValue","fieldError","placeholder"]),s("label",bo,k(t.$t("twofaccounts.icon")),1),s("div",ko,[e(m).preferences.getOfficialIcons?(a(),u("div",Vo,[r(e(R),null,{default:y(({mode:n})=>[r(ee,{onClick:ye,color:n=="dark"?"is-dark":"",nativeType:"button","is-loading":e(z),isDisabled:!e(o).service},{default:y(()=>[s("span",$o,[r(K,{icon:["fas","globe"]})]),s("span",null,k(t.$t("twofaccounts.forms.i_m_lucky")),1)]),_:2},1032,["color","is-loading","isDisabled"])]),_:1})])):c("",!0),s("div",Eo,[r(e(R),null,{default:y(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:E(["file mr-3",n=="dark"?"is-dark":"is-white"]),onKeyup:l[7]||(l[7]=Fe(le=>e(fe).click(),["enter"]))},[s("label",{class:"file-label",ref_key:"iconInputLabel",ref:fe},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:he,ref_key:"iconInput",ref:W},null,544),s("span",Fo,[s("span",Io,[r(K,{icon:["fas","upload"]})]),s("span",Co,k(t.$t("twofaccounts.forms.choose_image")),1)])],512)],34),e(i)?(a(),u("span",{key:0,class:E(["tag is-large",n=="dark"?"is-dark":"is-white"])},[s("img",{class:"icon-preview",src:e(j).config.subdirectory+"/storage/icons/"+e(i),alt:t.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,To),s("button",{class:"clear-selection delete is-small",onClick:O(C,["prevent"]),"aria-label":t.$t("twofaccounts.remove_icon")},null,8,Mo)],2)):c("",!0)]),_:1})])]),s("div",xo,[e($).errors.hasAny("icon")?(a(),b(Z,{key:0,error:e($).errors.get("icon"),field:"icon",class:"help-for-file"},null,8,["error"])):c("",!0),e(m).preferences.getOfficialIcons?(a(),u("p",{key:1,class:"help",innerHTML:t.$t("twofaccounts.forms.i_m_lucky_legend")},null,8,So)):c("",!0)]),e(pe).length>0?(a(),b(Le,{key:2,modelValue:e(o).group_id,"onUpdate:modelValue":l[8]||(l[8]=n=>e(o).group_id=n),options:e(pe),fieldName:"group_id",label:"twofaccounts.forms.group.label",help:"twofaccounts.forms.group.help"},null,8,["modelValue","options"])):c("",!0),r(te,{modelValue:e(o).otp_type,"onUpdate:modelValue":l[9]||(l[9]=n=>e(o).otp_type=n),isDisabled:e(_),choices:v,fieldName:"otp_type",fieldError:e(o).errors.get("otp_type"),label:"twofaccounts.forms.otp_type.label",help:"twofaccounts.forms.otp_type.help",hasOffset:!0},null,8,["modelValue","isDisabled","fieldError"]),e(o).otp_type!=""?(a(),u("div",Lo,[r(Ie,{isEditMode:e(_),modelValue:e(o).secret,"onUpdate:modelValue":l[10]||(l[10]=n=>e(o).secret=n),modelModifiers:{trimAll:!0},fieldName:"secret",fieldError:e(o).errors.get("secret"),label:"twofaccounts.forms.secret.label",help:"twofaccounts.forms.secret.help"},null,8,["isEditMode","modelValue","fieldError"]),e(o).otp_type!=="steamtotp"?(a(),u("div",Ao,[s("h2",Oo,k(t.$t("commons.options")),1),s("p",Uo,k(t.$t("twofaccounts.forms.options_help")),1),r(te,{modelValue:e(o).digits,"onUpdate:modelValue":l[11]||(l[11]=n=>e(o).digits=n),choices:D,fieldName:"digits",fieldError:e(o).errors.get("digits"),label:"twofaccounts.forms.digits.label",help:"twofaccounts.forms.digits.help"},null,8,["modelValue","fieldError"]),r(te,{modelValue:e(o).algorithm,"onUpdate:modelValue":l[12]||(l[12]=n=>e(o).algorithm=n),choices:P,fieldName:"algorithm",fieldError:e(o).errors.get("algorithm"),label:"twofaccounts.forms.algorithm.label",help:"twofaccounts.forms.algorithm.help"},null,8,["modelValue","fieldError"]),e(o).otp_type==="totp"?(a(),b(oe,{key:0,pattern:"[0-9]{1,4}",class:E("is-third-width-field"),modelValue:e(o).period,"onUpdate:modelValue":l[13]||(l[13]=n=>e(o).period=n),fieldName:"period",fieldError:e(o).errors.get("period"),label:"twofaccounts.forms.period.label",help:"twofaccounts.forms.period.help",placeholder:t.$t("twofaccounts.forms.period.placeholder")},null,8,["modelValue","fieldError","placeholder"])):c("",!0),e(o).otp_type==="hotp"?(a(),b(Ie,{key:1,pattern:"[0-9]{1,4}",isEditMode:e(_),isExpanded:!1,modelValue:e(o).counter,"onUpdate:modelValue":l[14]||(l[14]=n=>e(o).counter=n),fieldName:"counter",fieldError:e(o).errors.get("counter"),label:"twofaccounts.forms.counter.label",placeholder:t.$t("twofaccounts.forms.counter.placeholder"),help:e(_)?"twofaccounts.forms.counter.help_lock":"twofaccounts.forms.counter.help"},null,8,["isEditMode","modelValue","fieldError","placeholder","help"])):c("",!0)])):c("",!0)])):c("",!0),r(Ae,{showButtons:!0},{default:y(()=>[s("p",Bo,[r(ee,{id:e(_)?"btnUpdate":"btnCreate",isLoading:e(o).isBusy,class:"is-rounded"},{default:y(()=>[Ee(k(e(_)?t.$t("commons.save"):t.$t("commons.create")),1)]),_:1},8,["id","isLoading"])]),e(o).otp_type&&e(o).secret?(a(),u("p",No,[s("button",{id:"btnPreview",type:"button",class:"button is-success is-rounded",onClick:Me},k(t.$t("twofaccounts.forms.test")),1)])):c("",!0),r(be,{action:"cancel",useLinkTag:!1,onCanceled:ve})]),_:1})],32),r(ke,{modelValue:e(I),"onUpdate:modelValue":l[17]||(l[17]=n=>ae(I)?I.value=n:null)},{default:y(()=>[r(ie,G({ref_key:"OtpDisplayForAdvancedForm",ref:X},e(o).data(),{onIncrementHotp:ge,onValidationError:_e,onPleaseCloseMe:l[16]||(l[16]=n=>I.value=!1)}),null,16)]),_:1},8,["modelValue"])]),_:1},8,["title"])):c("",!0),r(ke,{modelValue:e(L),"onUpdate:modelValue":l[18]||(l[18]=n=>ae(L)?L.value=n:null)},{default:y(()=>[r(je,{qrContent:e(V)},null,8,["qrContent"])]),_:1},8,["modelValue"])])}}};export{Go as default}; diff --git a/public/build/assets/CreateUpdate-DXqb6Ftc.js b/public/build/assets/CreateUpdate-DXqb6Ftc.js new file mode 100644 index 00000000..00f32329 --- /dev/null +++ b/public/build/assets/CreateUpdate-DXqb6Ftc.js @@ -0,0 +1 @@ +import{V as v,u as w,$ as h,x as y,d as N,a0 as V,K as _,e as m,f as C,k as E,p as I,i as t,h as S,m as i,C as $}from"./app-CuhK3jij.js";import{F as k}from"./Form-o2lWAB-o.js";import{u as K}from"./bus-BalNs30H.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const U={__name:"CreateUpdate",props:{groupId:[Number,String]},setup(c){const p=v(),d=w(),l=h(),s=K(),a=c,r=y(()=>a.groupId!=null),o=N(new k({name:""}));V(()=>{l.name=="editGroup"&&(s.editedGroupName?(o.name=s.editedGroupName,s.editedGroupName=void 0):_.get(a.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/"+a.groupId).then(e=>{p.addOrEdit(e.data),d.push({name:"groups"})})}return(e,n)=>{const F=m("FormField"),b=m("FormButtons"),G=m("FormWrapper");return C(),E(G,{title:t(r)?e.$t("groups.forms.rename_group"):e.$t("groups.forms.new_group")},{default:I(()=>[S("form",{onSubmit:$(f,["prevent"]),onKeydown:n[1]||(n[1]=u=>t(o).onKeydown(u))},[i(F,{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(b,{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"])],32)]),_:1},8,["title"])}}};export{U as default}; diff --git a/public/build/assets/Edit-BM1fyA7o.js b/public/build/assets/Edit-BxX3QJ9W.js similarity index 64% rename from public/build/assets/Edit-BM1fyA7o.js rename to public/build/assets/Edit-BxX3QJ9W.js index e00f76dd..163ad4e8 100644 --- a/public/build/assets/Edit-BM1fyA7o.js +++ b/public/build/assets/Edit-BxX3QJ9W.js @@ -1 +1 @@ -import{a as h,c as _,H as s,h as y,k as b,l as a,m as F,e as v,j as r,f as t,C as B,p as g}from"./app-D4Udf6Mm.js";import{F as C}from"./Form-BGrUTood.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const E={__name:"Edit",props:{credentialId:{type:String,default:""}},setup(i){const u=g(),m=h(),e=_(new C({name:s("auth.webauthn.my_device")})),c=i;function d(){e.patch("/webauthn/credentials/"+c.credentialId+"/name").then(()=>{m.success({text:s("auth.webauthn.device_successfully_registered")}),u.push({name:"settings.webauthn.devices"})})}return(l,n)=>{const p=a("FormField"),f=a("FormButtons"),w=a("FormWrapper");return F(),y(w,{title:"auth.webauthn.rename_device"},{default:b(()=>[v("form",{onSubmit:B(d,["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"])],32)]),_:1})}}};export{E as default}; +import{u as h,b as _,d as b,H as s,e as a,f as y,k as F,p as v,h as B,m as r,i as t,C as g}from"./app-CuhK3jij.js";import{F as C}from"./Form-o2lWAB-o.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const E={__name:"Edit",props:{credentialId:{type:String,default:""}},setup(i){const u=h(),m=_(),e=b(new C({name:s("auth.webauthn.my_device")})),d=i;function c(){e.patch("/webauthn/credentials/"+d.credentialId+"/name").then(()=>{m.success({text:s("auth.webauthn.device_successfully_registered")}),u.push({name:"settings.webauthn.devices"})})}return(l,n)=>{const p=a("FormField"),f=a("FormButtons"),w=a("FormWrapper");return y(),F(w,{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"])],32)]),_:1})}}};export{E as default}; diff --git a/public/build/assets/Error-DAFLfN3j.js b/public/build/assets/Error-DAFLfN3j.js deleted file mode 100644 index be52e7c5..00000000 --- a/public/build/assets/Error-DAFLfN3j.js +++ /dev/null @@ -1 +0,0 @@ -import{a as y,r as b,x as k,s as V,o as w,H as v,d as r,j as N,k as x,f as e,D as B,_ as M,l as $,m as t,e as l,t as n,i as c,g as q,p as C}from"./app-D4Udf6Mm.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const D={key:0,class:"error-message"},R=l("p",{class:"error-404"},null,-1),E={key:1,class:"error-message"},F=l("p",{class:"error-generic"},null,-1),H={key:0,class:"has-text-grey-lighter"},S={key:1,class:"has-text-grey-lighter"},j={key:2,class:"is-size-7 is-family-code"},z=l("br",null,null,-1),U={__name:"Error",props:{closable:{type:Boolean,default:!0}},setup(m){const s=y(),d=C(),a=M(),u=b(!0),p=k(()=>!1),_=m;V(u,o=>{o==!1&&g()}),w(()=>{a.query.err&&(s.message=v("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=$("modal");return t(),r("div",null,[N(h,{modelValue:e(u),"onUpdate:modelValue":i[0]||(i[0]=f=>B(u)?u.value=f:null),closable:_.closable},{default:x(()=>[o.$route.name=="404"||o.$route.name=="notFound"?(t(),r("div",D,[R,l("p",null,n(o.$t("errors.resource_not_found")),1)])):(t(),r("div",E,[F,l("p",null,n(o.$t("errors.error_occured")),1),e(s).message?(t(),r("p",H,n(e(s).message),1)):c("",!0),e(s).originalMessage?(t(),r("p",S,n(e(s).originalMessage),1)):c("",!0),e(p)&&e(s).debug?(t(),r("p",j,[z,q(n(e(s).debug),1)])):c("",!0)]))]),_:1},8,["modelValue","closable"])])}}};export{U as default}; diff --git a/public/build/assets/Error-rNpmSIEZ.js b/public/build/assets/Error-rNpmSIEZ.js new file mode 100644 index 00000000..95e0a7c8 --- /dev/null +++ b/public/build/assets/Error-rNpmSIEZ.js @@ -0,0 +1 @@ +import{b as y,u as b,$ as k,r as V,x as w,s as v,o as N,H as $,e as x,f as r,g as t,m as B,p as M,i as e,D as q,h as l,t as n,l as c,j as C}from"./app-CuhK3jij.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const D={key:0,class:"error-message"},R=l("p",{class:"error-404"},null,-1),E={key:1,class:"error-message"},F=l("p",{class:"error-generic"},null,-1),H={key:0,class:"has-text-grey-lighter"},S={key:1,class:"has-text-grey-lighter"},j={key:2,class:"is-size-7 is-family-code"},z=l("br",null,null,-1),U={__name:"Error",props:{closable:{type:Boolean,default:!0}},setup(m){const s=y(),d=b(),a=k(),u=V(!0),p=w(()=>!1),_=m;v(u,o=>{o==!1&&g()}),N(()=>{a.query.err&&(s.message=$("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=x("modal");return r(),t("div",null,[B(h,{modelValue:e(u),"onUpdate:modelValue":i[0]||(i[0]=f=>q(u)?u.value=f:null),closable:_.closable},{default:M(()=>[o.$route.name=="404"||o.$route.name=="notFound"?(r(),t("div",D,[R,l("p",null,n(o.$t("errors.resource_not_found")),1)])):(r(),t("div",E,[F,l("p",null,n(o.$t("errors.error_occured")),1),e(s).message?(r(),t("p",H,n(e(s).message),1)):c("",!0),e(s).originalMessage?(r(),t("p",S,n(e(s).originalMessage),1)):c("",!0),e(p)&&e(s).debug?(r(),t("p",j,[z,C(n(e(s).debug),1)])):c("",!0)]))]),_:1},8,["modelValue","closable"])])}}};export{U as default}; diff --git a/public/build/assets/Form-BGrUTood.js b/public/build/assets/Form-o2lWAB-o.js similarity index 98% rename from public/build/assets/Form-BGrUTood.js rename to public/build/assets/Form-o2lWAB-o.js index 9acbac75..6dafd710 100644 --- a/public/build/assets/Form-BGrUTood.js +++ b/public/build/assets/Form-o2lWAB-o.js @@ -1 +1 @@ -import{a3 as l}from"./app-D4Udf6Mm.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 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-CuhK3jij.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 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-BMQ6YoNp.js b/public/build/assets/Groups-BMQ6YoNp.js deleted file mode 100644 index bfec95ac..00000000 --- a/public/build/assets/Groups-BMQ6YoNp.js +++ /dev/null @@ -1 +0,0 @@ -import{T as C,r as $,o as w,a0 as z,h as b,k as c,l,m as u,e as o,t as a,j as s,g as _,f as i,d as m,F,E as G,n as R,U as V,i as h,p as E}from"./app-D4Udf6Mm.js";import{u as N}from"./bus-RVphoWuw.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 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){E();const t=C(),f=N(),p=$(!1);return w(async()=>{p.value=t.isEmpty,await t.fetch().finally(()=>{p.value=!1})}),z((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=l("FontAwesomeIcon"),d=l("RouterLink"),k=l("ButtonBackCloseCancel"),y=l("VueFooter"),v=l("ResponsiveWidthWrapper");return u(),b(v,null,{default:c(()=>[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:c(()=>[s(n,{icon:["fas","plus-circle"]}),_(" "+a(e.$t("groups.create_group")),1)]),_:1})]),i(t).isEmpty?h("",!0):(u(),m("div",W,[(u(!0),m(F,null,G(i(t).withoutTheAllGroup,r=>(u(),m("div",{key:r.id,class:"group-item is-size-5 is-size-6-mobile"},[_(a(r.name)+" ",1),s(i(V),null,{default:c(({mode:B})=>[o("button",{class:R(["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:c(()=>[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?(u(),m("div",S,[o("span",U,[s(n,{icon:["fas","spinner"],spin:""})])])):h("",!0),s(y,{showButtons:!0},{default:c(()=>[s(k,{returnTo:{name:"accounts"},action:"close"})]),_:1})]),_:1})}}};export{J as default}; diff --git a/public/build/assets/Groups-CF7f2juX.js b/public/build/assets/Groups-CF7f2juX.js new file mode 100644 index 00000000..840709d4 --- /dev/null +++ b/public/build/assets/Groups-CF7f2juX.js @@ -0,0 +1 @@ +import{u as C,V as $,r as w,o as z,a1 as b,e as c,f as l,k as F,p as u,h as o,t as a,m as s,j as _,i,g as m,F as G,E as V,n as R,U as E,l as h}from"./app-CuhK3jij.js";import{u as N}from"./bus-BalNs30H.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const I={class:"title has-text-grey-dark"},L={class:"is-size-7-mobile"},W={class:"mt-3 mb-6"},A={key:0},T=["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=N(),p=w(!1);return z(async()=>{p.value=t.isEmpty,await t.fetch().finally(()=>{p.value=!1})}),b((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(),F(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",W,[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",A,[(l(!0),m(G,null,V(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(E),null,{default:u(({mode:B})=>[o("button",{class:R(["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,T)]),_: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-BZd8Em5d.js b/public/build/assets/Import-C-7ayGrw.js similarity index 70% rename from public/build/assets/Import-BZd8Em5d.js rename to public/build/assets/Import-C-7ayGrw.js index efe53b6a..ecf1e7a5 100644 --- a/public/build/assets/Import-BZd8Em5d.js +++ b/public/build/assets/Import-C-7ayGrw.js @@ -1 +1 @@ -import{Z as ft,l as v,m as n,d as r,y as mt,j as a,i as f,e as t,f as l,n as C,V as Z,h as P,a as pt,u as ht,b as _t,r as k,c as O,H as p,x as D,s as vt,o as gt,J as yt,k as w,D as W,t as i,U as q,g as _,w as G,C as kt,F as K,E as Q,L as wt,P as bt}from"./app-D4Udf6Mm.js";import{F as H}from"./Form-BGrUTood.js";import{_ as $t}from"./OtpDisplay-D2QMFFL_.js";import{S as Ct}from"./Spinner-DHClvaFf.js";import{u as xt}from"./bus-RVphoWuw.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 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 I=d,{inputId:m}=ft(I.inputType,I.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)}}}),Vt={class:"title has-text-grey-dark"},Et={key:0},It={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"},Jt={class:"block"},Wt={class:"card"},Gt={class:"card-content"},Kt={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={class:"title is-5 has-text-grey-dark"},pe={class:"block is-size-7-mobile"},he={class:"table is-size-7-mobile is-fullwidth"},_e=t("thead",null,[t("tr",null,[t("th"),t("th",null,"Plain text"),t("th",null,"QR code"),t("th",null,"JSON")])],-1),ve=t("th",null,"Google Authenticator",-1),ge=t("td",null,null,-1),ye=t("td",null,null,-1),ke=t("th",null,"Aegis Auth",-1),we=t("td",null,null,-1),be=t("th",null,"2FAS auth",-1),$e=t("td",null,null,-1),Ce=t("td",null,null,-1),xe=t("th",null,"FreeOTP+",-1),Ae=t("td",null,null,-1),Fe=t("td",null,null,-1),Se=t("th",null,"2FAuth",-1),ze=t("td",null,null,-1),Ve=t("td",null,null,-1),Ee={key:1},Ie={key:2},Te={class:"block is-size-7-mobile"},qe={class:"mb-2"},Ne={class:"is-flex is-justify-content-space-between"},Be=["onClick","title"],Le=["src"],Me={key:1,class:"is-flex-grow-1 has-ellipsis"},Oe={key:2,class:"tags is-flex-wrap-nowrap"},De=["onClick","title"],He=["onClick","title"],Pe={key:3,class:"has-nowrap"},Ue={key:0,class:"has-text-success"},Re={key:1,class:"has-text-danger"},je={class:"is-size-6 is-size-7-mobile"},Je={class:"is-family-primary has-text-grey"},We={key:0,class:"has-text-danger"},Ge={key:1,class:"has-text-warning"},Ke={key:2},Qe={key:0,class:"mt-2 is-size-7 is-pulled-right"},Ze={key:1,class:"mt-2 is-size-7 is-pulled-right"},Xe={key:0,class:"control"},ls={__name:"Import",setup(d){const I=wt("2fauth"),m=pt(),h=ht(),g=xt(),N=_t(),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})),V=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),E=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);vt(A,e=>{var s;e==!1&&((s=b.value)==null||s.clearOTP())}),gt(()=>{g.migrationUri&&(L(g.migrationUri),g.migrationUri=null)});async function L(e){y.value=!0,await yt.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(){V.clear(),y.value=!0,V.qrcode=B.value.files[0],V.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:E.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"),J=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",Vt,i(e.$t("twofaccounts.import.import")),1),!l(y)&&l(c).length==0?(n(),r("div",Et,[t("div",It,[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(V).errors.hasAny("qrcode")?(n(),P(J,{key:0,error:l(V).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]=G(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",Jt,[t("div",Wt,[t("div",Gt,[t("div",Kt,[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(J,{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]=G(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=>W(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:kt(nt,["stop"])},i(e.$t("commons.submit")),1)])])])])]),t("h2",me,i(e.$t("twofaccounts.import.supported_migration_formats")),1),t("div",pe,[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",he,[_e,t("tbody",null,[t("tr",null,[ve,ge,t("td",null,[a(u,{icon:["fas","circle-check"]})]),ye]),t("tr",null,[ke,t("td",null,[a(u,{icon:["fas","circle-check"]})]),we,t("td",null,[a(u,{icon:["fas","circle-check"]})])]),t("tr",null,[be,$e,Ce,t("td",null,[a(u,{icon:["fas","circle-check"]})])]),t("tr",null,[xe,t("td",null,[a(u,{icon:["fas","circle-check"]})]),Ae,Fe]),t("tr",null,[Se,ze,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",Ie,[t("div",Te,[t("p",qe,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(K,null,Q(l(c),(o,M)=>(n(),r("div",{key:o.name,class:"group-item is-size-5 is-size-6-mobile"},[t("div",Ne,[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,role:"presentation",class:"import-icon",src:l(I).config.subdirectory+"/storage/icons/"+o.icon,alt:""},null,8,Le)):f("",!0),_(" "+i(o.account),1)],8,Be)):(n(),r("div",Me,i(o.account),1)),o.imported===-1?(n(),r("div",Oe,[a(l(q),null,{default:w(({mode:F})=>[t("button",{class:C(["button tag",{"is-dark has-text-grey-light":F=="dark"}]),onClick:Ye=>et(M),title:e.$t("twofaccounts.import.discard_this_account")},[a(u,{icon:["fas","trash"]})],10,De)]),_: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,He)):f("",!0)])):(n(),r("div",Pe,[o.imported===1?(n(),r("span",Ue,[_(i(e.$t("twofaccounts.import.imported"))+" ",1),a(u,{icon:["fas","check"]})])):(n(),r("span",Re,[_(i(e.$t("twofaccounts.import.failure"))+" ",1),a(u,{icon:["fas","times"]})]))]))]),t("div",je,[t("div",Je,i(e.$t("twofaccounts.import.issuer"))+": "+i(o.service),1),o.id===-2?(n(),r("div",We,[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",Ge,[a(u,{class:"mr-1",icon:["fas","exclamation-circle"]}),_(i(e.$t("twofaccounts.import.possible_duplicate")),1)])):f("",!0),o.errors?(n(),r("ul",Ke,[(n(!0),r(K,null,Q(o.errors,F=>(n(),r("li",{key:F,class:"has-text-danger"},i(F),1))),128))])):f("",!0)])]))),128)),l(E)>0?(n(),r("div",Qe,[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",Ze,[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(E)>0?(n(),r("p",Xe,[t("button",{class:"button is-link is-rounded is-focus",onClick:st},[t("span",null,i(e.$t("twofaccounts.import.import_all"))+" ("+i(l(E))+")",1)])])):f("",!0),a(rt,{returnTo:{name:"accounts"},action:l(E)>0?"cancel":"close"},null,8,["action"])]),_:1})]),_:1}),a(ut,{modelValue:l(A),"onUpdate:modelValue":s[9]||(s[9]=o=>W(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{ls as default}; +import{_ as ft,e as v,f as n,g as r,y as mt,m as a,l as f,h as t,i as l,n as C,W as X,k as U,L as pt,b as ht,a as _t,c as vt,r as k,d as O,H as p,x as D,s as gt,o as yt,J as kt,p as w,D as W,t as i,U as q,j as _,w as G,C as wt,F as K,E as Q,Q as bt}from"./app-CuhK3jij.js";import{F as H}from"./Form-o2lWAB-o.js";import{_ as $t}from"./OtpDisplay-D1Cg2JBE.js";import{S as Ct}from"./Spinner-WULdfd4I.js";import{u as xt}from"./bus-BalNs30H.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 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 T=d,{inputId:m}=ft(T.inputType,T.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",X({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(),U(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)}}}),Et={class:"title has-text-grey-dark"},It={key:0},Tt={class:"block is-size-7-mobile"},Vt={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"},Ut={class:"media-content"},Pt=["innerHTML"],Rt={class:"subtitle is-6 is-size-7-mobile"},jt={class:"card-footer"},Jt={class:"block"},Wt={class:"card"},Gt={class:"card-content"},Kt={class:"media"},Qt={class:"media-left"},Xt={class:"image is-32x32"},Yt={class:"media-content"},Zt={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={class:"title is-5 has-text-grey-dark"},pe={class:"block is-size-7-mobile"},he={class:"table is-size-7-mobile is-fullwidth"},_e=t("thead",null,[t("tr",null,[t("th"),t("th",null,"Plain text"),t("th",null,"QR code"),t("th",null,"JSON")])],-1),ve=t("th",null,"Google Authenticator",-1),ge=t("td",null,null,-1),ye=t("td",null,null,-1),ke=t("th",null,"Aegis Auth",-1),we=t("td",null,null,-1),be=t("th",null,"2FAS auth",-1),$e=t("td",null,null,-1),Ce=t("td",null,null,-1),xe=t("th",null,"FreeOTP+",-1),Ae=t("td",null,null,-1),Fe=t("td",null,null,-1),Se=t("th",null,"2FAuth",-1),ze=t("td",null,null,-1),Ee=t("td",null,null,-1),Ie={key:1},Te={key:2},Ve={class:"block is-size-7-mobile"},qe={class:"mb-2"},Ne={class:"is-flex is-justify-content-space-between"},Be=["onClick","title"],Le=["src"],Me={key:1,class:"is-flex-grow-1 has-ellipsis"},Oe={key:2,class:"tags is-flex-wrap-nowrap"},De=["onClick","title"],He=["onClick","title"],Ue={key:3,class:"has-nowrap"},Pe={key:0,class:"has-text-success"},Re={key:1,class:"has-text-danger"},je={class:"is-size-6 is-size-7-mobile"},Je={class:"is-family-primary has-text-grey"},We={key:0,class:"has-text-danger"},Ge={key:1,class:"has-text-warning"},Ke={key:2},Qe={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"},ls={__name:"Import",setup(d){const T=pt("2fauth"),m=ht(),h=_t(),g=xt(),N=vt(),b=k(null),$=k(null),B=k(null),x=k(null),V=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})),E=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),I=D(()=>c.value.filter(e=>e.imported==-1&&e.id>-2).length),P=D(()=>c.value.filter(e=>e.id===-1&&e.imported===-1).length),Y=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=V.value=null}).catch(s=>{m.alert({text:p(s.response.data.message)})}),y.value=!1}function Z(){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(){E.clear(),y.value=!0,E.qrcode=B.value.files[0],E.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:I.value})})}function nt(){V.value=null,x.value?L(x.value):V.value=p("validation.required",{attribute:"Direct input"})}return(e,s)=>{const u=v("FontAwesomeIcon"),J=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",Et,i(e.$t("twofaccounts.import.import")),1),!l(y)&&l(c).length==0?(n(),r("div",It,[t("div",Tt,[t("p",Vt,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",Ut,[t("p",{class:"title is-5 has-text-grey",innerHTML:e.$t("twofaccounts.import.qr_code")},null,8,Pt),t("p",Rt,i(e.$t("twofaccounts.import.supported_formats_for_qrcode_upload")),1)])]),l(E).errors.hasAny("qrcode")?(n(),U(J,{key:0,error:l(E).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]=G(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",Jt,[t("div",Wt,[t("div",Gt,[t("div",Kt,[t("div",Qt,[t("figure",Xt,[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",Yt,[t("p",Zt,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(),U(J,{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]=G(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=>W(x)?x.value=o:null),fieldError:l(V),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")),1)])])])])]),t("h2",me,i(e.$t("twofaccounts.import.supported_migration_formats")),1),t("div",pe,[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",he,[_e,t("tbody",null,[t("tr",null,[ve,ge,t("td",null,[a(u,{icon:["fas","circle-check"]})]),ye]),t("tr",null,[ke,t("td",null,[a(u,{icon:["fas","circle-check"]})]),we,t("td",null,[a(u,{icon:["fas","circle-check"]})])]),t("tr",null,[be,$e,Ce,t("td",null,[a(u,{icon:["fas","circle-check"]})])]),t("tr",null,[xe,t("td",null,[a(u,{icon:["fas","circle-check"]})]),Ae,Fe]),t("tr",null,[Se,ze,Ee,t("td",null,[a(u,{icon:["fas","circle-check"]})])])])])])):l(y)&&l(c).length===0?(n(),r("div",Ie,[a(Ct,{type:"fullscreen-overlay",isVisible:!0,message:"twofaccounts.import.parsing_data"},null,8,["message"])])):(n(),r("div",Te,[t("div",Ve,[t("p",qe,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(K,null,Q(l(c),(o,M)=>(n(),r("div",{key:o.name,class:"group-item is-size-5 is-size-6-mobile"},[t("div",Ne,[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,role:"presentation",class:"import-icon",src:l(T).config.subdirectory+"/storage/icons/"+o.icon,alt:""},null,8,Le)):f("",!0),_(" "+i(o.account),1)],8,Be)):(n(),r("div",Me,i(o.account),1)),o.imported===-1?(n(),r("div",Oe,[a(l(q),null,{default:w(({mode:F})=>[t("button",{class:C(["button tag",{"is-dark has-text-grey-light":F=="dark"}]),onClick:Ze=>et(M),title:e.$t("twofaccounts.import.discard_this_account")},[a(u,{icon:["fas","trash"]})],10,De)]),_: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,He)):f("",!0)])):(n(),r("div",Ue,[o.imported===1?(n(),r("span",Pe,[_(i(e.$t("twofaccounts.import.imported"))+" ",1),a(u,{icon:["fas","check"]})])):(n(),r("span",Re,[_(i(e.$t("twofaccounts.import.failure"))+" ",1),a(u,{icon:["fas","times"]})]))]))]),t("div",je,[t("div",Je,i(e.$t("twofaccounts.import.issuer"))+": "+i(o.service),1),o.id===-2?(n(),r("div",We,[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",Ge,[a(u,{class:"mr-1",icon:["fas","exclamation-circle"]}),_(i(e.$t("twofaccounts.import.possible_duplicate")),1)])):f("",!0),o.errors?(n(),r("ul",Ke,[(n(!0),r(K,null,Q(o.errors,F=>(n(),r("li",{key:F,class:"has-text-danger"},i(F),1))),128))])):f("",!0)])]))),128)),l(I)>0?(n(),r("div",Qe,[l(P)?(n(),r("button",{key:0,onClick:s[3]||(s[3]=o=>Z()),class:"has-text-grey button is-small is-ghost"},i(e.$t("twofaccounts.import.discard_duplicates"))+" ("+i(l(P))+")",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(Y)==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(I)>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(I))+")",1)])])):f("",!0),a(rt,{returnTo:{name:"accounts"},action:l(I)>0?"cancel":"close"},null,8,["action"])]),_:1})]),_:1}),a(ut,{modelValue:l(A),"onUpdate:modelValue":s[9]||(s[9]=o=>W(A)?A.value=o:null)},{default:w(()=>[a($t,X({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{ls as default}; diff --git a/public/build/assets/Login-WJZFRbSm.js b/public/build/assets/Login-WJZFRbSm.js new file mode 100644 index 00000000..a8116907 --- /dev/null +++ b/public/build/assets/Login-WJZFRbSm.js @@ -0,0 +1 @@ +import{e as v,f as n,g as l,j as _,t as i,m,L as D,u as U,a as P,b as q,S as z,a2 as G,d as J,r as E,o as Q,i as t,k as b,p as f,l as c,F as g,h as o,C as O,w as V,E as M,n as R,H as L}from"./app-CuhK3jij.js";import{F as X}from"./Form-o2lWAB-o.js";import{w as Y}from"./webauthnService-B01mQIOV.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const Z=["id","href"],H={__name:"SsoConnectLink",props:{provider:{type:String,default:"unknown"}},setup(A){const r=A,w={unknown:{collection:"fa",icon:"globe"},github:{collection:"fab",icon:"github-alt"},openid:{collection:"fab",icon:"openid"}};return(k,h)=>{const d=v("FontAwesomeIcon");return n(),l("a",{id:"lnkSignWith"+r.provider,class:"button is-link",href:"socialite/redirect/"+r.provider},[_(i(k.$t("auth.sso_providers."+r.provider))+" ",1),m(d,{class:"ml-2",icon:[w[r.provider].collection,w[r.provider].icon]},null,8,["icon"])],8,Z)}}},x=["innerHTML"],ee={class:"field"},te={class:"nav-links"},se={key:0,class:"mt-4"},ne={key:1,class:"columns mt-4 is-variable is-1"},oe={class:"column is-narrow py-1"},ie={class:"column py-1"},ae={class:"buttons"},le=["innerHTML"],re=["innerHTML"],ue={class:"nav-links"},de={class:""},ce={class:""},_e={key:2,class:"buttons mt-4"},me={key:3,class:"is-italic"},he={class:"nav-links"},pe=["href"],fe=["innerHTML"],ge=["innerHTML"],ve=["innerHTML"],ye={class:"nav-links"},be=["aria-label"],we={key:0,class:"mt-4"},ke={key:1,class:"columns mt-4 is-variable is-1"},$e={class:"column is-narrow py-1"},Se={class:"column py-1"},Le={class:"buttons"},Me={__name:"Login",setup(A){const r=D("2fauth"),w=U(),k=P(),h=q(),d=z(),B=k.preferences.useWebauthnOnly?!0:G(r.prefix+"showWebauthnForm",!1),u=J(new X({email:"",password:""})),F=E(!1),p=E();Q(()=>{d.enableSso==!0&&d.useSsoOnly==!0?p.value="sso":B.value==!0?p.value="webauthn":p.value="legacy"});function y(e){u.clear(),p.value=e,B.value=p.value=="webauthn"}function K(e){h.clear(),u.post("/user/login",{returnError:!0}).then(async s=>{await k.loginAs({id:s.data.id,name:s.data.name,email:s.data.email,oauth_provider:s.data.oauth_provider,authenticated_by_proxy:!1,preferences:s.data.preferences,isAdmin:s.data.is_admin}),w.push({name:"accounts"})}).catch(s=>{s.response.status===401?h.alert({text:L("auth.forms.authentication_failed"),duration:1e4}):s.response.status!==422&&h.error(s)})}function N(){h.clear(),u.clear(),F.value=!0,Y.authenticate(u.email).then(async e=>{await k.loginAs({id:e.data.id,name:e.data.name,email:e.data.email,oauth_provider:e.data.oauth_provider,authenticated_by_proxy:!1,preferences:e.data.preferences,isAdmin:e.data.is_admin}),w.push({name:"accounts"})}).catch(e=>{"webauthn"in e?e.name=="is-warning"?h.warn({text:L(e.message)}):h.alert({text:L(e.message)}):e.response.status===401?h.alert({text:L("auth.forms.authentication_failed"),duration:1e4}):e.response.status==422?u.errors.set(u.extractErrors(e.response)):h.error(e)}).finally(()=>{F.value=!1})}return(e,s)=>{const W=v("FormField"),C=v("FormButtons"),S=v("RouterLink"),T=v("FormWrapper"),I=v("FormPasswordField"),j=v("VueFooter");return n(),l(g,null,[t(p)=="webauthn"?(n(),b(T,{key:0,title:"auth.forms.webauthn_login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[t(d).enableSso==!0&&t(d).useSsoOnly==!0?(n(),l("div",{key:0,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.forms.sso_only_form_restricted_to_admin")},null,8,x)):c("",!0),o("div",ee,i(e.$t("auth.webauthn.use_security_device_to_sign_in")),1),o("form",{id:"frmWebauthnLogin",onSubmit:O(N,["prevent"]),onKeydown:s[1]||(s[1]=a=>t(u).onKeydown(a))},[m(W,{modelValue:t(u).email,"onUpdate:modelValue":s[0]||(s[0]=a=>t(u).email=a),fieldName:"email",fieldError:t(u).errors.get("email"),inputType:"email",label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),m(C,{isBusy:t(F),caption:"commons.continue",submitId:"btnContinue"},null,8,["isBusy"])],32),o("div",te,[o("p",null,[_(i(e.$t("auth.webauthn.lost_your_device"))+"  ",1),m(S,{id:"lnkRecoverAccount",to:{name:"webauthn.lost"},class:"is-link"},{default:f(()=>[_(i(e.$t("auth.webauthn.recover_your_account")),1)]),_:1},8,["to"])]),o("p",null,[_(i(e.$t("auth.sign_in_using"))+"  ",1),o("a",{id:"lnkSignWithLegacy",role:"button",class:"is-link",onKeyup:s[2]||(s[2]=V(a=>y("legacy"),["enter"])),onClick:s[3]||(s[3]=a=>y("legacy")),tabindex:"0"},i(e.$t("auth.login_and_password")),33)]),t(d).disableRegistration==!1&&t(d).useSsoOnly==!1?(n(),l("p",se,[_(i(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),m(S,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[_(i(e.$t("auth.register")),1)]),_:1})])):c("",!0),t(d).enableSso==!0&&Object.values(t(r).config.sso).includes(!0)?(n(),l("div",ne,[o("div",oe,i(e.$t("auth.or_continue_with")),1),o("div",ie,[o("div",ae,[(n(!0),l(g,null,M(t(r).config.sso,(a,$)=>(n(),l(g,null,[a?(n(),b(H,{key:0,class:R("is-outlined is-small"),provider:$},null,8,["provider"])):c("",!0)],64))),256))])])])):c("",!0)])]),_:1})):t(p)=="sso"?(n(),b(T,{key:1,title:"auth.forms.sso_login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[t(r).isDemoApp?(n(),l("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,le)):c("",!0),t(r).isTestingApp?(n(),l("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,re)):c("",!0),o("div",ue,[o("p",de,i(e.$t("auth.password_login_and_webauthn_are_disabled")),1),o("p",ce,i(e.$t("auth.sign_in_using_sso")),1)]),Object.values(t(r).config.sso).includes(!0)?(n(),l("div",_e,[(n(!0),l(g,null,M(t(r).config.sso,(a,$)=>(n(),l(g,null,[a?(n(),b(H,{key:0,provider:$},null,8,["provider"])):c("",!0)],64))),256))])):(n(),l("p",me,"- "+i(e.$t("auth.no_provider"))+" -",1)),o("div",he,[o("p",null,[_(i(e.$t("auth.no_sso_provider_or_provider_is_missing"))+"  ",1),o("a",{id:"lnkSsoDocs",class:"is-link",tabindex:"0",href:t(r).urls.ssoDocUrl,target:"_blank"},i(e.$t("auth.see_how_to_enable_sso")),9,pe)]),o("p",null,[_(i(e.$t("auth.if_administrator"))+"  ",1),o("a",{id:"lnkSignWithLegacy",role:"button",class:"is-link",onKeyup:s[4]||(s[4]=V(a=>y("legacy"),["enter"])),onClick:s[5]||(s[5]=a=>y("legacy")),tabindex:"0"},i(e.$t("auth.sign_in_here")),33)])])]),_:1})):t(p)=="legacy"?(n(),b(T,{key:2,title:"auth.forms.login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[t(r).isDemoApp?(n(),l("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,fe)):c("",!0),t(r).isTestingApp?(n(),l("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,ge)):c("",!0),t(d).enableSso==!0&&t(d).useSsoOnly==!0?(n(),l("div",{key:2,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.forms.sso_only_form_restricted_to_admin")},null,8,ve)):c("",!0),o("form",{id:"frmLegacyLogin",onSubmit:O(K,["prevent"]),onKeydown:s[8]||(s[8]=a=>t(u).onKeydown(a))},[m(W,{modelValue:t(u).email,"onUpdate:modelValue":s[6]||(s[6]=a=>t(u).email=a),fieldName:"email",fieldError:t(u).errors.get("email"),inputType:"email",label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),m(I,{modelValue:t(u).password,"onUpdate:modelValue":s[7]||(s[7]=a=>t(u).password=a),fieldName:"password",fieldError:t(u).errors.get("password"),label:"auth.forms.password"},null,8,["modelValue","fieldError"]),m(C,{isBusy:t(u).isBusy,caption:"auth.sign_in",submitId:"btnSignIn"},null,8,["isBusy"])],32),o("div",ye,[o("p",null,[_(i(e.$t("auth.forms.forgot_your_password"))+"  ",1),m(S,{id:"lnkResetPwd",to:{name:"password.request"},class:"is-link","aria-label":e.$t("auth.forms.reset_your_password")},{default:f(()=>[_(i(e.$t("auth.forms.request_password_reset")),1)]),_:1},8,["to","aria-label"])]),o("p",null,[_(i(e.$t("auth.sign_in_using"))+"  ",1),o("a",{id:"lnkSignWithWebauthn",role:"button",class:"is-link",onKeyup:s[9]||(s[9]=V(a=>y("webauthn"),["enter"])),onClick:s[10]||(s[10]=a=>y("webauthn")),tabindex:"0","aria-label":e.$t("auth.sign_in_using_security_device")},i(e.$t("auth.webauthn.security_device")),41,be)]),t(d).disableRegistration==!1&&t(d).useSsoOnly==!1?(n(),l("p",we,[_(i(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),m(S,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[_(i(e.$t("auth.register")),1)]),_:1})])):c("",!0),t(d).enableSso&&Object.values(t(r).config.sso).includes(!0)?(n(),l("div",ke,[o("div",$e,i(e.$t("auth.or_continue_with")),1),o("div",Se,[o("div",Le,[(n(!0),l(g,null,M(t(r).config.sso,(a,$)=>(n(),l(g,null,[a?(n(),b(H,{key:0,class:R("is-outlined is-small"),provider:$},null,8,["provider"])):c("",!0)],64))),256))])])])):c("",!0)])]),_:1})):c("",!0),m(j)],64)}}};export{Me as default}; diff --git a/public/build/assets/Login-lFqZsVye.js b/public/build/assets/Login-lFqZsVye.js deleted file mode 100644 index 59adfbdd..00000000 --- a/public/build/assets/Login-lFqZsVye.js +++ /dev/null @@ -1 +0,0 @@ -import{l as v,m as n,d as l,g as _,t as i,j as m,u as D,a as U,R as P,a1 as q,c as z,r as E,o as G,f as t,h as w,k as f,i as c,F as g,L as J,e as o,C as R,w as V,E as M,n as O,p as Q,H as L}from"./app-D4Udf6Mm.js";import{F as X}from"./Form-BGrUTood.js";import{w as Y}from"./webauthnService-DqgceQ2G.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const Z=["id","href"],H={__name:"SsoConnectLink",props:{provider:{type:String,default:"unknown"}},setup(A){const r=A,b={unknown:{collection:"fa",icon:"globe"},github:{collection:"fab",icon:"github-alt"},openid:{collection:"fab",icon:"openid"}};return(k,h)=>{const d=v("FontAwesomeIcon");return n(),l("a",{id:"lnkSignWith"+r.provider,class:"button is-link",href:"socialite/redirect/"+r.provider},[_(i(k.$t("auth.sso_providers."+r.provider))+" ",1),m(d,{class:"ml-2",icon:[b[r.provider].collection,b[r.provider].icon]},null,8,["icon"])],8,Z)}}},x=["innerHTML"],ee={class:"field"},te={class:"nav-links"},se={key:0,class:"mt-4"},ne={key:1,class:"columns mt-4 is-variable is-1"},oe={class:"column is-narrow py-1"},ie={class:"column py-1"},ae={class:"buttons"},le=["innerHTML"],re=["innerHTML"],ue={class:"nav-links"},de={class:""},ce={class:""},_e={key:2,class:"buttons mt-4"},me={key:3,class:"is-italic"},he={class:"nav-links"},pe=["href"],fe=["innerHTML"],ge=["innerHTML"],ve=["innerHTML"],ye={class:"nav-links"},we=["aria-label"],be={key:0,class:"mt-4"},ke={key:1,class:"columns mt-4 is-variable is-1"},$e={class:"column is-narrow py-1"},Se={class:"column py-1"},Le={class:"buttons"},Me={__name:"Login",setup(A){const r=J("2fauth"),b=Q(),k=D(),h=U(),d=P(),B=k.preferences.useWebauthnOnly?!0:q(r.prefix+"showWebauthnForm",!1),u=z(new X({email:"",password:""})),F=E(!1),p=E();G(()=>{d.enableSso==!0&&d.useSsoOnly==!0?p.value="sso":B.value==!0?p.value="webauthn":p.value="legacy"});function y(e){u.clear(),p.value=e,B.value=p.value=="webauthn"}function K(e){h.clear(),u.post("/user/login",{returnError:!0}).then(async s=>{await k.loginAs({id:s.data.id,name:s.data.name,email:s.data.email,oauth_provider:s.data.oauth_provider,authenticated_by_proxy:!1,preferences:s.data.preferences,isAdmin:s.data.is_admin}),b.push({name:"accounts"})}).catch(s=>{s.response.status===401?h.alert({text:L("auth.forms.authentication_failed"),duration:1e4}):s.response.status!==422&&h.error(s)})}function N(){h.clear(),u.clear(),F.value=!0,Y.authenticate(u.email).then(async e=>{await k.loginAs({id:e.data.id,name:e.data.name,email:e.data.email,oauth_provider:e.data.oauth_provider,authenticated_by_proxy:!1,preferences:e.data.preferences,isAdmin:e.data.is_admin}),b.push({name:"accounts"})}).catch(e=>{"webauthn"in e?e.name=="is-warning"?h.warn({text:L(e.message)}):h.alert({text:L(e.message)}):e.response.status===401?h.alert({text:L("auth.forms.authentication_failed"),duration:1e4}):e.response.status==422?u.errors.set(u.extractErrors(e.response)):h.error(e)}).finally(()=>{F.value=!1})}return(e,s)=>{const W=v("FormField"),C=v("FormButtons"),S=v("RouterLink"),T=v("FormWrapper"),I=v("FormPasswordField"),j=v("VueFooter");return n(),l(g,null,[t(p)=="webauthn"?(n(),w(T,{key:0,title:"auth.forms.webauthn_login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[t(d).enableSso==!0&&t(d).useSsoOnly==!0?(n(),l("div",{key:0,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.forms.sso_only_form_restricted_to_admin")},null,8,x)):c("",!0),o("div",ee,i(e.$t("auth.webauthn.use_security_device_to_sign_in")),1),o("form",{id:"frmWebauthnLogin",onSubmit:R(N,["prevent"]),onKeydown:s[1]||(s[1]=a=>t(u).onKeydown(a))},[m(W,{modelValue:t(u).email,"onUpdate:modelValue":s[0]||(s[0]=a=>t(u).email=a),fieldName:"email",fieldError:t(u).errors.get("email"),inputType:"email",label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),m(C,{isBusy:t(F),caption:"commons.continue",submitId:"btnContinue"},null,8,["isBusy"])],32),o("div",te,[o("p",null,[_(i(e.$t("auth.webauthn.lost_your_device"))+"  ",1),m(S,{id:"lnkRecoverAccount",to:{name:"webauthn.lost"},class:"is-link"},{default:f(()=>[_(i(e.$t("auth.webauthn.recover_your_account")),1)]),_:1},8,["to"])]),o("p",null,[_(i(e.$t("auth.sign_in_using"))+"  ",1),o("a",{id:"lnkSignWithLegacy",role:"button",class:"is-link",onKeyup:s[2]||(s[2]=V(a=>y("legacy"),["enter"])),onClick:s[3]||(s[3]=a=>y("legacy")),tabindex:"0"},i(e.$t("auth.login_and_password")),33)]),t(d).disableRegistration==!1&&t(d).useSsoOnly==!1?(n(),l("p",se,[_(i(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),m(S,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[_(i(e.$t("auth.register")),1)]),_:1})])):c("",!0),t(d).enableSso==!0&&Object.values(t(r).config.sso).includes(!0)?(n(),l("div",ne,[o("div",oe,i(e.$t("auth.or_continue_with")),1),o("div",ie,[o("div",ae,[(n(!0),l(g,null,M(t(r).config.sso,(a,$)=>(n(),l(g,null,[a?(n(),w(H,{key:0,class:O("is-outlined is-small"),provider:$},null,8,["provider"])):c("",!0)],64))),256))])])])):c("",!0)])]),_:1})):t(p)=="sso"?(n(),w(T,{key:1,title:"auth.forms.sso_login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[t(r).isDemoApp?(n(),l("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,le)):c("",!0),t(r).isTestingApp?(n(),l("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,re)):c("",!0),o("div",ue,[o("p",de,i(e.$t("auth.password_login_and_webauthn_are_disabled")),1),o("p",ce,i(e.$t("auth.sign_in_using_sso")),1)]),Object.values(t(r).config.sso).includes(!0)?(n(),l("div",_e,[(n(!0),l(g,null,M(t(r).config.sso,(a,$)=>(n(),l(g,null,[a?(n(),w(H,{key:0,provider:$},null,8,["provider"])):c("",!0)],64))),256))])):(n(),l("p",me,"- "+i(e.$t("auth.no_provider"))+" -",1)),o("div",he,[o("p",null,[_(i(e.$t("auth.no_sso_provider_or_provider_is_missing"))+"  ",1),o("a",{id:"lnkSsoDocs",class:"is-link",tabindex:"0",href:t(r).urls.ssoDocUrl,target:"_blank"},i(e.$t("auth.see_how_to_enable_sso")),9,pe)]),o("p",null,[_(i(e.$t("auth.if_administrator"))+"  ",1),o("a",{id:"lnkSignWithLegacy",role:"button",class:"is-link",onKeyup:s[4]||(s[4]=V(a=>y("legacy"),["enter"])),onClick:s[5]||(s[5]=a=>y("legacy")),tabindex:"0"},i(e.$t("auth.sign_in_here")),33)])])]),_:1})):t(p)=="legacy"?(n(),w(T,{key:2,title:"auth.forms.login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[t(r).isDemoApp?(n(),l("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,fe)):c("",!0),t(r).isTestingApp?(n(),l("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,ge)):c("",!0),t(d).enableSso==!0&&t(d).useSsoOnly==!0?(n(),l("div",{key:2,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.forms.sso_only_form_restricted_to_admin")},null,8,ve)):c("",!0),o("form",{id:"frmLegacyLogin",onSubmit:R(K,["prevent"]),onKeydown:s[8]||(s[8]=a=>t(u).onKeydown(a))},[m(W,{modelValue:t(u).email,"onUpdate:modelValue":s[6]||(s[6]=a=>t(u).email=a),fieldName:"email",fieldError:t(u).errors.get("email"),inputType:"email",label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),m(I,{modelValue:t(u).password,"onUpdate:modelValue":s[7]||(s[7]=a=>t(u).password=a),fieldName:"password",fieldError:t(u).errors.get("password"),label:"auth.forms.password"},null,8,["modelValue","fieldError"]),m(C,{isBusy:t(u).isBusy,caption:"auth.sign_in",submitId:"btnSignIn"},null,8,["isBusy"])],32),o("div",ye,[o("p",null,[_(i(e.$t("auth.forms.forgot_your_password"))+"  ",1),m(S,{id:"lnkResetPwd",to:{name:"password.request"},class:"is-link","aria-label":e.$t("auth.forms.reset_your_password")},{default:f(()=>[_(i(e.$t("auth.forms.request_password_reset")),1)]),_:1},8,["to","aria-label"])]),o("p",null,[_(i(e.$t("auth.sign_in_using"))+"  ",1),o("a",{id:"lnkSignWithWebauthn",role:"button",class:"is-link",onKeyup:s[9]||(s[9]=V(a=>y("webauthn"),["enter"])),onClick:s[10]||(s[10]=a=>y("webauthn")),tabindex:"0","aria-label":e.$t("auth.sign_in_using_security_device")},i(e.$t("auth.webauthn.security_device")),41,we)]),t(d).disableRegistration==!1&&t(d).useSsoOnly==!1?(n(),l("p",be,[_(i(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),m(S,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[_(i(e.$t("auth.register")),1)]),_:1})])):c("",!0),t(d).enableSso&&Object.values(t(r).config.sso).includes(!0)?(n(),l("div",ke,[o("div",$e,i(e.$t("auth.or_continue_with")),1),o("div",Se,[o("div",Le,[(n(!0),l(g,null,M(t(r).config.sso,(a,$)=>(n(),l(g,null,[a?(n(),w(H,{key:0,class:O("is-outlined is-small"),provider:$},null,8,["provider"])):c("",!0)],64))),256))])])])):c("",!0)])]),_:1})):c("",!0),m(j)],64)}}};export{Me as default}; diff --git a/public/build/assets/Manage-BKPFyA7n.js b/public/build/assets/Manage-BKPFyA7n.js new file mode 100644 index 00000000..dee40d5d --- /dev/null +++ b/public/build/assets/Manage-BKPFyA7n.js @@ -0,0 +1 @@ +import{_ as D}from"./CopyButton-C1eOxUvy.js";import{_ as O}from"./AccessLogViewer-ATsuzUAw.js";import{b as Q,u as Y,a as G,L as J,r as b,o as K,I as h,e as f,f as o,k as X,p as m,h as s,t as n,i,g as r,m as d,n as p,j as k,U as v,l as _,F as Z,E as ee,H as u,Q as M}from"./app-CuhK3jij.js";import{u as se}from"./bus-BalNs30H.js";import"./SearchBox-Bwo0E13W.js";import"./Spinner-WULdfd4I.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const te={class:"title has-text-grey-dark mb-6"},ie={key:0,class:"has-text-centered"},ne={class:"is-size-4"},ae={key:1},oe={class:"has-text-weight-light has-text-grey-dark is-pulled-right"},re={class:"subtitle is-6 block"},le={key:0,class:"notification is-dark is-size-7-mobile has-text-centered"},de={class:"block is-size-6 is-size-7-mobile has-text-grey"},ce={class:"block"},ue={key:1,class:"title is-4 has-text-grey-light"},_e={key:2,class:"block"},me={class:"list-item is-size-6 is-size-6-mobile has-text-grey"},he={class:"mb-3 is-flex is-justify-content-space-between"},fe={class:"has-text-weight-bold"},pe={class:"tags ml-3 is-right"},ke=["title"],ge=["title"],be={class:"is-size-7 is-size-7-mobile has-text-grey-dark"},ve=["innerHTML"],ye=["innerHTML"],we=["innerHTML"],$e=["innerHTML"],xe={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"},Ce={class:"is-block is-family-primary has-text-grey-dark"},Te={key:0},Le={class:"tags ml-3 is-right"},Fe=["title"],Me={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"},Ie={class:"is-block has-text-grey-dark"},Ee={key:0},He={class:"tags ml-3 is-right"},Ue=["title"],Ve={class:"block"},Pe={class:"title is-5 has-text-grey-light mb-2"},Ne={key:3,class:"block is-size-6 is-size-7-mobile has-text-grey"},Se={class:"title is-4 has-text-grey-light"},je={class:"about-debug box is-family-monospace is-size-7"},Ae=["value"],qe={class:"has-text-grey"},Re={class:"title is-4 has-text-danger"},We={class:"is-left-bordered-danger"},De={class:"block is-size-6 is-size-7-mobile"},Oe={class:"is-block has-text-grey has-text-weight-bold"},Ze={__name:"Manage",props:{userId:[Number,String]},setup(B){const c=Q(),I=Y(),$=G(),E=se(),x=J("2fauth"),y=b(!1),t=b(null),z=b(null),C=b(!1),w=B;K(async()=>{await H()});async function H(){y.value=!0,h.getById(w.userId,{returnError:!0}).then(e=>{t.value=e.data,E.username=t.value.info.name}).catch(e=>{c.error(e)}).finally(()=>{y.value=!1})}async function U(){if(!g())return!1;confirm(u("admin.confirm.purge_password_reset_request"))===!0&&(await h.resendPasswordEmail(t.value.info.id),t.value.password_reset=null)}async function V(){if(!g())return!1;confirm(u("admin.confirm.request_password_reset"))===!0&&h.resetPassword(t.value.info.id,{returnError:!0}).then(e=>{t.value=e.data,c.success({text:u("admin.password_successfully_reset")})}).catch(e=>{e.response.status===400?c.alert({text:e.response.data.reason}):c.error(e)})}function P(e){if(!confirm(u("admin.confirm.change_admin_role"))){M().then(()=>{t.value.info.is_admin=!e});return}if(e===!1&&t.value.info.id===$.id&&!confirm(u("admin.confirm.demote_own_account"))){M().then(()=>{t.value.info.is_admin=!0});return}h.promote(t.value.info.id,{is_admin:e},{returnError:!0}).then(l=>{t.value.info.is_admin=l.data.info.is_admin,c.success({text:u("admin.user_role_updated")})}).catch(l=>{l.response.status===403?(c.alert({text:l.response.data.message}),t.value.info.is_admin=!0):c.error(l.response)})}function N(){if(!g())return!1;confirm(u("admin.confirm.delete_account"))&&h.delete(t.value.info.id,{returnError:!0}).then(e=>{c.success({text:u("auth.forms.user_account_successfully_deleted")}),I.push({name:"admin.users"})}).catch(e=>{e.response.status===403?c.alert({text:e.response.data.message}):c.error(e.response)})}function S(){if(!g())return!1;h.revokePATs(t.value.info.id).then(e=>{t.value.valid_personal_access_tokens=0,c.success({text:u("admin.pats_succesfully_revoked")})})}function g(){return!(t.value.info.id===$.id&&!confirm(u("admin.confirm.edit_own_account")))}return(e,l)=>{const j=f("FontAwesomeIcon"),A=f("FormCheckbox"),q=f("router-link"),T=f("ButtonBackCloseCancel"),R=f("VueFooter"),W=f("ResponsiveWidthWrapper");return o(),X(W,null,{default:m(()=>{var L;return[s("h1",te,n(e.$t("admin.user_management")),1),i(y)||!i(t)?(o(),r("div",ie,[s("span",ne,[d(j,{icon:["fas","spinner"],spin:""})])])):(o(),r("div",ae,[s("div",{class:p(["mb-6",i(t).info.is_admin?"is-left-bordered-warning":"is-left-bordered-link"])},[d(i(v),null,{default:m(({mode:a})=>[s("p",{class:p(["title is-4",{"has-text-grey-lighter":a=="dark"}])},[s("span",oe,"#"+n(i(t).info.id),1),k(n(i(t).info.name),1)],2)]),_:1}),s("p",re,n(i(t).info.email),1)],2),i(t).info.oauth_provider?(o(),r("div",le,n(e.$t("admin.account_bound_to_x_via_oauth",{provider:i(t).info.oauth_provider})),1)):_("",!0),s("div",de,n(e.$t("admin.registered_on_date",{date:i(t).info.created_at}))+" - "+n(e.$t("admin.last_seen_on_date",{date:i(t).info.last_seen_at})),1),s("div",ce,[d(A,{modelValue:i(t).info.is_admin,"onUpdate:modelValue":[l[0]||(l[0]=a=>i(t).info.is_admin=a),l[1]||(l[1]=a=>P(a===!0))],fieldName:"is_admin",label:"admin.forms.is_admin.label",help:"admin.forms.is_admin.help"},null,8,["modelValue"])]),i(x).config.proxyAuth?_("",!0):(o(),r("h2",ue,n(e.$t("admin.access")),1)),i(x).config.proxyAuth?_("",!0):(o(),r("div",_e,[s("div",me,[s("div",he,[s("div",null,[s("span",fe,n(e.$t("auth.forms.password")),1)]),s("div",null,[s("div",pe,[d(i(v),null,{default:m(({mode:a})=>[i(t).password_reset?(o(),r("button",{key:0,class:p(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:U,title:e.$t("admin.resend_email_title")},n(e.$t("admin.resend_email")),11,ke)):_("",!0),s("button",{class:p(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:V,title:e.$t("admin.reset_password_title")},n(e.$t("admin.reset_password")),11,ge)]),_:1})])])]),s("div",be,[i(t).password_reset===0?(o(),r("span",{key:0,innerHTML:e.$t("admin.password_request_expired"),class:"is-block block"},null,8,ve)):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,ye)):_("",!0),i(t).password_reset?(o(),r("span",{key:2,innerHTML:e.$t("admin.resend_email_help"),class:"is-block block"},null,8,we)):_("",!0),s("span",{innerHTML:e.$t("admin.reset_password_help"),class:"is-block block"},null,8,$e)])]),s("div",xe,[s("div",null,[s("span",ze,n(e.$t("settings.personal_access_tokens")),1),s("span",Ce,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",Te,[s("div",Le,[d(i(v),null,{default:m(({mode:a})=>[s("button",{class:p(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:S,title:e.$t("admin.revoke_all_pat_for_user")},n(e.$t("settings.revoke")),11,Fe)]),_:1})])])):_("",!0)]),s("div",Me,[s("div",null,[s("span",Be,n(e.$t("auth.webauthn.security_devices")),1),s("span",Ie,n(e.$t("admin.user_has_x_security_devices",{count:i(t).webauthn_credentials})),1)]),i(t).webauthn_credentials>0?(o(),r("div",Ee,[s("div",He,[d(i(v),null,{default:m(({mode:a})=>[s("button",{class:p(["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,Ue)]),_:1})])])):_("",!0)])])),s("div",Ve,[s("h3",Pe,n(e.$t("admin.last_accesses")),1),d(O,{userId:w.userId,lastOnly:!0,onHasMoreEntries:l[2]||(l[2]=a=>C.value=!0)},null,8,["userId"])]),i(C)?(o(),r("div",Ne,[k(n(e.$t("admin.access_log_has_more_entries"))+" ",1),d(q,{id:"lnkFullLogs",to:{name:"admin.logs.access",params:{userId:w.userId}}},{default:m(()=>[k(n(e.$t("admin.see_full_log"))+". ",1)]),_:1},8,["to"])])):_("",!0),s("h2",Se,n(e.$t("settings.preferences")),1),s("div",je,[d(D,{id:"btnCopyEnvVars",token:(L=i(z))==null?void 0:L.innerText},null,8,["token"]),s("ul",{ref_key:"listUserPreferences",ref:z,id:"listUserPreferences"},[(o(!0),r(Z,null,ee(i(t).info.preferences,(a,F)=>(o(),r("li",{value:a,key:F},[s("b",null,n(F),1),k(": "),s("span",qe,n(a),1)],8,Ae))),128))],512)]),s("h2",Re,n(e.$t("admin.danger_zone")),1),s("div",We,[s("div",De,[k(n(e.$t("admin.delete_this_user_legend"))+" ",1),s("span",Oe,n(e.$t("admin.this_is_not_soft_delete")),1)]),s("button",{class:"button is-danger",onClick:N,title:"delete"},n(e.$t("admin.delete_this_user")),1)])])),d(R,{showButtons:!0},{default:m(()=>[d(T,{returnTo:{name:"admin.users"},action:"back"},null,8,["returnTo"]),d(T,{returnTo:{name:"accounts"},action:"close"})]),_:1})]}),_:1})}}};export{Ze as default}; diff --git a/public/build/assets/Manage-BdbniM-Y.js b/public/build/assets/Manage-BdbniM-Y.js deleted file mode 100644 index 19f04b6d..00000000 --- a/public/build/assets/Manage-BdbniM-Y.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as D}from"./CopyButton-CNDtpSH2.js";import{_ as O}from"./AccessLogViewer-mgRyksdg.js";import{a as Y,u as G,r as b,o as J,I as h,h as K,k as m,l as f,m as o,e as s,t as n,f as i,d as r,j as d,n as p,g as k,U as v,i as _,F as Q,E as X,p as Z,L as ee,H as u,P as M}from"./app-D4Udf6Mm.js";import{u as se}from"./bus-RVphoWuw.js";import"./SearchBox-B-38rGG5.js";import"./Spinner-DHClvaFf.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const te={class:"title has-text-grey-dark mb-6"},ie={key:0,class:"has-text-centered"},ne={class:"is-size-4"},ae={key:1},oe={class:"has-text-weight-light has-text-grey-dark is-pulled-right"},re={class:"subtitle is-6 block"},le={key:0,class:"notification is-dark is-size-7-mobile has-text-centered"},de={class:"block is-size-6 is-size-7-mobile has-text-grey"},ce={class:"block"},ue={key:1,class:"title is-4 has-text-grey-light"},_e={key:2,class:"block"},me={class:"list-item is-size-6 is-size-6-mobile has-text-grey"},he={class:"mb-3 is-flex is-justify-content-space-between"},fe={class:"has-text-weight-bold"},pe={class:"tags ml-3 is-right"},ke=["title"],ge=["title"],be={class:"is-size-7 is-size-7-mobile has-text-grey-dark"},ve=["innerHTML"],ye=["innerHTML"],we=["innerHTML"],$e=["innerHTML"],xe={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"},Ce={class:"is-block is-family-primary has-text-grey-dark"},Te={key:0},Le={class:"tags ml-3 is-right"},Fe=["title"],Me={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"},Ie={class:"is-block has-text-grey-dark"},Ee={key:0},He={class:"tags ml-3 is-right"},Pe=["title"],Ue={class:"block"},Ve={class:"title is-5 has-text-grey-light mb-2"},Ne={key:3,class:"block is-size-6 is-size-7-mobile has-text-grey"},Se={class:"title is-4 has-text-grey-light"},je={class:"about-debug box is-family-monospace is-size-7"},Ae=["value"],qe={class:"has-text-grey"},Re={class:"title is-4 has-text-danger"},We={class:"is-left-bordered-danger"},De={class:"block is-size-6 is-size-7-mobile"},Oe={class:"is-block has-text-grey has-text-weight-bold"},Ze={__name:"Manage",props:{userId:[Number,String]},setup(B){const c=Y(),I=Z(),$=G(),E=se(),x=ee("2fauth"),y=b(!1),t=b(null),z=b(null),C=b(!1),w=B;J(async()=>{await H()});async function H(){y.value=!0,h.getById(w.userId,{returnError:!0}).then(e=>{t.value=e.data,E.username=t.value.info.name}).catch(e=>{c.error(e)}).finally(()=>{y.value=!1})}async function P(){if(!g())return!1;confirm(u("admin.confirm.purge_password_reset_request"))===!0&&(await h.resendPasswordEmail(t.value.info.id),t.value.password_reset=null)}async function U(){if(!g())return!1;confirm(u("admin.confirm.request_password_reset"))===!0&&h.resetPassword(t.value.info.id,{returnError:!0}).then(e=>{t.value=e.data,c.success({text:u("admin.password_successfully_reset")})}).catch(e=>{e.response.status===400?c.alert({text:e.response.data.reason}):c.error(e)})}function V(e){if(!confirm(u("admin.confirm.change_admin_role"))){M().then(()=>{t.value.info.is_admin=!e});return}if(e===!1&&t.value.info.id===$.id&&!confirm(u("admin.confirm.demote_own_account"))){M().then(()=>{t.value.info.is_admin=!0});return}h.promote(t.value.info.id,{is_admin:e},{returnError:!0}).then(l=>{t.value.info.is_admin=l.data.info.is_admin,c.success({text:u("admin.user_role_updated")})}).catch(l=>{l.response.status===403?(c.alert({text:l.response.data.message}),t.value.info.is_admin=!0):c.error(l.response)})}function N(){if(!g())return!1;confirm(u("admin.confirm.delete_account"))&&h.delete(t.value.info.id,{returnError:!0}).then(e=>{c.success({text:u("auth.forms.user_account_successfully_deleted")}),I.push({name:"admin.users"})}).catch(e=>{e.response.status===403?c.alert({text:e.response.data.message}):c.error(e.response)})}function S(){if(!g())return!1;h.revokePATs(t.value.info.id).then(e=>{t.value.valid_personal_access_tokens=0,c.success({text:u("admin.pats_succesfully_revoked")})})}function g(){return!(t.value.info.id===$.id&&!confirm(u("admin.confirm.edit_own_account")))}return(e,l)=>{const j=f("FontAwesomeIcon"),A=f("FormCheckbox"),q=f("router-link"),T=f("ButtonBackCloseCancel"),R=f("VueFooter"),W=f("ResponsiveWidthWrapper");return o(),K(W,null,{default:m(()=>{var L;return[s("h1",te,n(e.$t("admin.user_management")),1),i(y)||!i(t)?(o(),r("div",ie,[s("span",ne,[d(j,{icon:["fas","spinner"],spin:""})])])):(o(),r("div",ae,[s("div",{class:p(["mb-6",i(t).info.is_admin?"is-left-bordered-warning":"is-left-bordered-link"])},[d(i(v),null,{default:m(({mode:a})=>[s("p",{class:p(["title is-4",{"has-text-grey-lighter":a=="dark"}])},[s("span",oe,"#"+n(i(t).info.id),1),k(n(i(t).info.name),1)],2)]),_:1}),s("p",re,n(i(t).info.email),1)],2),i(t).info.oauth_provider?(o(),r("div",le,n(e.$t("admin.account_bound_to_x_via_oauth",{provider:i(t).info.oauth_provider})),1)):_("",!0),s("div",de,n(e.$t("admin.registered_on_date",{date:i(t).info.created_at}))+" - "+n(e.$t("admin.last_seen_on_date",{date:i(t).info.last_seen_at})),1),s("div",ce,[d(A,{modelValue:i(t).info.is_admin,"onUpdate:modelValue":[l[0]||(l[0]=a=>i(t).info.is_admin=a),l[1]||(l[1]=a=>V(a===!0))],fieldName:"is_admin",label:"admin.forms.is_admin.label",help:"admin.forms.is_admin.help"},null,8,["modelValue"])]),i(x).config.proxyAuth?_("",!0):(o(),r("h2",ue,n(e.$t("admin.access")),1)),i(x).config.proxyAuth?_("",!0):(o(),r("div",_e,[s("div",me,[s("div",he,[s("div",null,[s("span",fe,n(e.$t("auth.forms.password")),1)]),s("div",null,[s("div",pe,[d(i(v),null,{default:m(({mode:a})=>[i(t).password_reset?(o(),r("button",{key:0,class:p(["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,ke)):_("",!0),s("button",{class:p(["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,ge)]),_:1})])])]),s("div",be,[i(t).password_reset===0?(o(),r("span",{key:0,innerHTML:e.$t("admin.password_request_expired"),class:"is-block block"},null,8,ve)):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,ye)):_("",!0),i(t).password_reset?(o(),r("span",{key:2,innerHTML:e.$t("admin.resend_email_help"),class:"is-block block"},null,8,we)):_("",!0),s("span",{innerHTML:e.$t("admin.reset_password_help"),class:"is-block block"},null,8,$e)])]),s("div",xe,[s("div",null,[s("span",ze,n(e.$t("settings.personal_access_tokens")),1),s("span",Ce,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",Te,[s("div",Le,[d(i(v),null,{default:m(({mode:a})=>[s("button",{class:p(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:S,title:e.$t("admin.revoke_all_pat_for_user")},n(e.$t("settings.revoke")),11,Fe)]),_:1})])])):_("",!0)]),s("div",Me,[s("div",null,[s("span",Be,n(e.$t("auth.webauthn.security_devices")),1),s("span",Ie,n(e.$t("admin.user_has_x_security_devices",{count:i(t).webauthn_credentials})),1)]),i(t).webauthn_credentials>0?(o(),r("div",Ee,[s("div",He,[d(i(v),null,{default:m(({mode:a})=>[s("button",{class:p(["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,Pe)]),_:1})])])):_("",!0)])])),s("div",Ue,[s("h3",Ve,n(e.$t("admin.last_accesses")),1),d(O,{userId:w.userId,lastOnly:!0,onHasMoreEntries:l[2]||(l[2]=a=>C.value=!0)},null,8,["userId"])]),i(C)?(o(),r("div",Ne,[k(n(e.$t("admin.access_log_has_more_entries"))+" ",1),d(q,{id:"lnkFullLogs",to:{name:"admin.logs.access",params:{userId:w.userId}}},{default:m(()=>[k(n(e.$t("admin.see_full_log"))+". ",1)]),_:1},8,["to"])])):_("",!0),s("h2",Se,n(e.$t("settings.preferences")),1),s("div",je,[d(D,{id:"btnCopyEnvVars",token:(L=i(z))==null?void 0:L.innerText},null,8,["token"]),s("ul",{ref_key:"listUserPreferences",ref:z,id:"listUserPreferences"},[(o(!0),r(Q,null,X(i(t).info.preferences,(a,F)=>(o(),r("li",{value:a,key:F},[s("b",null,n(F),1),k(": "),s("span",qe,n(a),1)],8,Ae))),128))],512)]),s("h2",Re,n(e.$t("admin.danger_zone")),1),s("div",We,[s("div",De,[k(n(e.$t("admin.delete_this_user_legend"))+" ",1),s("span",Oe,n(e.$t("admin.this_is_not_soft_delete")),1)]),s("button",{class:"button is-danger",onClick:N,title:"delete"},n(e.$t("admin.delete_this_user")),1)])])),d(R,{showButtons:!0},{default:m(()=>[d(T,{returnTo:{name:"admin.users"},action:"back"},null,8,["returnTo"]),d(T,{returnTo:{name:"accounts"},action:"close"})]),_:1})]}),_:1})}}};export{Ze as default}; diff --git a/public/build/assets/OAuth-C-a66RBn.js b/public/build/assets/OAuth-C-a66RBn.js deleted file mode 100644 index ad578b53..00000000 --- a/public/build/assets/OAuth-C-a66RBn.js +++ /dev/null @@ -1 +0,0 @@ -import{a as D,u as G,a1 as R,S as q,r as v,x as J,o as Q,c as X,I as x,a0 as Y,d as r,j as a,e as o,k as _,f as s,i as d,L as Z,l as m,m as i,t as n,w as ee,g,F as se,E as te,h as oe,U as ne,n as A,C as z,H as y}from"./app-D4Udf6Mm.js";import{F as ae}from"./Form-BGrUTood.js";import{_ as ie}from"./SettingTabs-D1fgIcyl.js";import{S as le}from"./Spinner-DHClvaFf.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const re={class:"options-tabs"},ce={key:0,class:"notification is-warning has-text-centered"},ue=["innerHTML"],de={class:"title is-4 has-text-grey-light"},_e={class:"is-size-7-mobile"},me={class:"mt-3"},pe={key:2},ve={class:"tags is-pulled-right"},fe=["onClick"],he=["onClick","title"],ke={key:1,class:"is-size-7-mobile is-size-6 my-3"},ge={key:2,class:"pat is-family-monospace is-size-6 is-size-7-mobile has-text-success"},ye={class:"mt-2 is-size-7 is-pulled-right"},be={key:0,class:"is-overlay modal-otp modal-background"},Te={class:"main-section"},Ce={class:"field is-grouped"},we={class:"control"},Fe={class:"control"},Ae={__name:"OAuth",setup($e){const E=Z("2fauth"),p=D(),b=G(),L=R(E.prefix+"returnTo","accounts"),{copy:M}=q({legacy:!0}),c=v([]),T=v(!1),f=v(!1),h=v(null),C=v(null),w=J(()=>appSettings.enableSso&&appSettings.useSsoOnly||b.authenticated_by_proxy);Q(()=>{F()});const u=X(new ae({name:""}));function F(){T.value=!0,x.getPersonalAccessTokens({returnError:!0}).then(e=>{c.value=[],e.data.forEach(l=>{l.id===C.value?(l.value=h.value,c.value.unshift(l)):c.value.push(l)})}).catch(e=>{e.response.status===405||p.error(e)}).finally(()=>{T.value=!1,C.value=null,h.value=null})}function $(){I(),w.value?p.warn({text:y("errors.unsupported_with_reverseproxy")}):f.value=!0}function N(){u.post("/oauth/personal-access-tokens").then(e=>{h.value=e.data.accessToken,C.value=e.data.token.id,F(),f.value=!1,u.reset()})}function P(e){confirm(y("settings.confirm.revoke"))&&x.deletePersonalAccessToken(e).then(l=>{c.value=c.value.filter(k=>k.id!==e),p.success({text:y("settings.token_revoked")})})}function I(){c.value.forEach(e=>{e.value=null}),h.value=null}function K(e){M(e),p.success({text:y("commons.copied_to_clipboard")})}function U(){f.value=!1,u.reset()}return Y(e=>{e.name.startsWith("settings.")||p.clear()}),(e,l)=>{const k=m("FontAwesomeIcon"),H=m("ButtonBackCloseCancel"),O=m("VueFooter"),V=m("FormWrapper"),W=m("FormField"),B=m("VueButton");return i(),r("div",null,[a(ie,{activeTab:"settings.oauth.tokens"},null,8,["activeTab"]),o("div",re,[a(V,null,{default:_(()=>[s(w)&&s(b).oauth_provider?(i(),r("div",ce,n(e.$t("auth.sso_only_x_settings_are_disabled",{auth_method:"OAuth"})),1)):d("",!0),s(w)&&s(b).authenticated_by_proxy?(i(),r("div",{key:1,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.auth_handled_by_proxy")},null,8,ue)):d("",!0),o("h4",de,n(e.$t("settings.personal_access_tokens")),1),o("div",_e,n(e.$t("settings.token_legend")),1),o("div",me,[o("a",{tabindex:"0",class:"is-link",onClick:$,onKeyup:ee($,["enter"])},[a(k,{icon:["fas","plus-circle"]}),g(" "+n(e.$t("settings.generate_new_token")),1)],32)]),s(c).length>0?(i(),r("div",pe,[(i(!0),r(se,null,te(s(c),t=>(i(),r("div",{key:t.id,class:"group-item is-size-5 is-size-6-mobile"},[t.value?(i(),oe(k,{key:0,class:"has-text-success",icon:["fas","check"]})):d("",!0),g(" "+n(t.name)+" ",1),o("div",ve,[a(s(ne),null,{default:_(({mode:S})=>[t.value?(i(),r("button",{key:0,class:A(["button tag",{"is-link":S!="dark"}]),onClick:z(j=>K(t.value),["stop"])},n(e.$t("commons.copy")),11,fe)):d("",!0),o("button",{class:A(["button tag",S==="dark"?"is-dark":"is-white"]),onClick:j=>P(t.id),title:e.$t("settings.revoke")},n(e.$t("settings.revoke")),11,he)]),_:2},1024)]),t.value?(i(),r("span",ke,n(e.$t("settings.make_sure_copy_token")),1)):d("",!0),t.value?(i(),r("span",ge,n(t.value),1)):d("",!0)]))),128)),o("div",ye,n(e.$t("settings.revoking_a_token_is_permanent")),1)])):d("",!0),a(le,{isVisible:s(T)&&s(c).length===0},null,8,["isVisible"]),a(O,{showButtons:!0},{default:_(()=>[a(H,{returnTo:{name:s(L)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})]),s(f)?(i(),r("div",be,[o("main",Te,[a(V,{title:"settings.forms.new_token"},{default:_(()=>[o("form",{onSubmit:z(N,["prevent"]),onKeydown:l[1]||(l[1]=t=>s(u).onKeydown(t))},[a(W,{modelValue:s(u).name,"onUpdate:modelValue":l[0]||(l[0]=t=>s(u).name=t),fieldName:"name",fieldError:s(u).errors.get("name"),inputType:"text",label:"commons.name",autofocus:""},null,8,["modelValue","fieldError"]),o("div",Ce,[o("div",we,[a(B,{id:"btnGenerateToken",isLoading:s(u).isBusy},{default:_(()=>[g(n(e.$t("commons.generate")),1)]),_:1},8,["isLoading"])]),o("div",Fe,[a(B,{onClick:U,nativeType:"button",id:"btnCancel",color:"is-text"},{default:_(()=>[g(n(e.$t("commons.cancel")),1)]),_:1})])])],32)]),_:1})])])):d("",!0)])}}};export{Ae as default}; diff --git a/public/build/assets/OAuth-ulCTA84H.js b/public/build/assets/OAuth-ulCTA84H.js new file mode 100644 index 00000000..11e6ec49 --- /dev/null +++ b/public/build/assets/OAuth-ulCTA84H.js @@ -0,0 +1 @@ +import{L as D,b as G,a as R,a2 as q,T as J,r as v,x as Q,o as X,d as Y,I as x,a1 as Z,e as _,f as a,g as r,m as i,h as o,p as m,i as s,l as d,t as n,w as ee,j as g,F as se,E as te,k as oe,U as ne,n as A,C as z,H as y}from"./app-CuhK3jij.js";import{F as ae}from"./Form-o2lWAB-o.js";import{_ as ie}from"./SettingTabs-DdogXjnE.js";import{S as le}from"./Spinner-WULdfd4I.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const re={class:"options-tabs"},ce={key:0,class:"notification is-warning has-text-centered"},ue=["innerHTML"],de={class:"title is-4 has-text-grey-light"},_e={class:"is-size-7-mobile"},me={class:"mt-3"},pe={key:2},ve={class:"tags is-pulled-right"},fe=["onClick"],he=["onClick","title"],ke={key:1,class:"is-size-7-mobile is-size-6 my-3"},ge={key:2,class:"pat is-family-monospace is-size-6 is-size-7-mobile has-text-success"},ye={class:"mt-2 is-size-7 is-pulled-right"},be={key:0,class:"is-overlay modal-otp modal-background"},Te={class:"main-section"},Ce={class:"field is-grouped"},we={class:"control"},Fe={class:"control"},Ae={__name:"OAuth",setup($e){const E=D("2fauth"),p=G(),b=R(),L=q(E.prefix+"returnTo","accounts"),{copy:M}=J({legacy:!0}),c=v([]),T=v(!1),f=v(!1),h=v(null),C=v(null),w=Q(()=>appSettings.enableSso&&appSettings.useSsoOnly||b.authenticated_by_proxy);X(()=>{F()});const u=Y(new ae({name:""}));function F(){T.value=!0,x.getPersonalAccessTokens({returnError:!0}).then(e=>{c.value=[],e.data.forEach(l=>{l.id===C.value?(l.value=h.value,c.value.unshift(l)):c.value.push(l)})}).catch(e=>{e.response.status===405||p.error(e)}).finally(()=>{T.value=!1,C.value=null,h.value=null})}function $(){I(),w.value?p.warn({text:y("errors.unsupported_with_reverseproxy")}):f.value=!0}function N(){u.post("/oauth/personal-access-tokens").then(e=>{h.value=e.data.accessToken,C.value=e.data.token.id,F(),f.value=!1,u.reset()})}function P(e){confirm(y("settings.confirm.revoke"))&&x.deletePersonalAccessToken(e).then(l=>{c.value=c.value.filter(k=>k.id!==e),p.success({text:y("settings.token_revoked")})})}function I(){c.value.forEach(e=>{e.value=null}),h.value=null}function K(e){M(e),p.success({text:y("commons.copied_to_clipboard")})}function U(){f.value=!1,u.reset()}return Z(e=>{e.name.startsWith("settings.")||p.clear()}),(e,l)=>{const k=_("FontAwesomeIcon"),H=_("ButtonBackCloseCancel"),O=_("VueFooter"),V=_("FormWrapper"),W=_("FormField"),B=_("VueButton");return a(),r("div",null,[i(ie,{activeTab:"settings.oauth.tokens"},null,8,["activeTab"]),o("div",re,[i(V,null,{default:m(()=>[s(w)&&s(b).oauth_provider?(a(),r("div",ce,n(e.$t("auth.sso_only_x_settings_are_disabled",{auth_method:"OAuth"})),1)):d("",!0),s(w)&&s(b).authenticated_by_proxy?(a(),r("div",{key:1,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.auth_handled_by_proxy")},null,8,ue)):d("",!0),o("h4",de,n(e.$t("settings.personal_access_tokens")),1),o("div",_e,n(e.$t("settings.token_legend")),1),o("div",me,[o("a",{tabindex:"0",class:"is-link",onClick:$,onKeyup:ee($,["enter"])},[i(k,{icon:["fas","plus-circle"]}),g(" "+n(e.$t("settings.generate_new_token")),1)],32)]),s(c).length>0?(a(),r("div",pe,[(a(!0),r(se,null,te(s(c),t=>(a(),r("div",{key:t.id,class:"group-item is-size-5 is-size-6-mobile"},[t.value?(a(),oe(k,{key:0,class:"has-text-success",icon:["fas","check"]})):d("",!0),g(" "+n(t.name)+" ",1),o("div",ve,[i(s(ne),null,{default:m(({mode:S})=>[t.value?(a(),r("button",{key:0,class:A(["button tag",{"is-link":S!="dark"}]),onClick:z(j=>K(t.value),["stop"])},n(e.$t("commons.copy")),11,fe)):d("",!0),o("button",{class:A(["button tag",S==="dark"?"is-dark":"is-white"]),onClick:j=>P(t.id),title:e.$t("settings.revoke")},n(e.$t("settings.revoke")),11,he)]),_:2},1024)]),t.value?(a(),r("span",ke,n(e.$t("settings.make_sure_copy_token")),1)):d("",!0),t.value?(a(),r("span",ge,n(t.value),1)):d("",!0)]))),128)),o("div",ye,n(e.$t("settings.revoking_a_token_is_permanent")),1)])):d("",!0),i(le,{isVisible:s(T)&&s(c).length===0},null,8,["isVisible"]),i(O,{showButtons:!0},{default:m(()=>[i(H,{returnTo:{name:s(L)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})]),s(f)?(a(),r("div",be,[o("main",Te,[i(V,{title:"settings.forms.new_token"},{default:m(()=>[o("form",{onSubmit:z(N,["prevent"]),onKeydown:l[1]||(l[1]=t=>s(u).onKeydown(t))},[i(W,{modelValue:s(u).name,"onUpdate:modelValue":l[0]||(l[0]=t=>s(u).name=t),fieldName:"name",fieldError:s(u).errors.get("name"),inputType:"text",label:"commons.name",autofocus:""},null,8,["modelValue","fieldError"]),o("div",Ce,[o("div",we,[i(B,{id:"btnGenerateToken",isLoading:s(u).isBusy},{default:m(()=>[g(n(e.$t("commons.generate")),1)]),_:1},8,["isLoading"])]),o("div",Fe,[i(B,{onClick:U,nativeType:"button",id:"btnCancel",color:"is-text"},{default:m(()=>[g(n(e.$t("commons.cancel")),1)]),_:1})])])],32)]),_:1})])])):d("",!0)])}}};export{Ae as default}; diff --git a/public/build/assets/Options--WfZObkz.js b/public/build/assets/Options-C3TqQdMf.js similarity index 98% rename from public/build/assets/Options--WfZObkz.js rename to public/build/assets/Options-C3TqQdMf.js index 42c4e9c1..55cc7601 100644 --- a/public/build/assets/Options--WfZObkz.js +++ b/public/build/assets/Options-C3TqQdMf.js @@ -1 +1 @@ -import{_ as I}from"./SettingTabs-D1fgIcyl.js";import{u as D,T,a as d,a1 as U,r as O,x as K,o as L,a0 as G,d as R,j as r,e as n,k as p,L as j,l as c,m as z,t as A,f as t,g as f,I as F,H,a2 as q}from"./app-D4Udf6Mm.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */let J=[{text:"Africa/Abidjan",value:"Africa/Abidjan"},{text:"Africa/Accra",value:"Africa/Accra"},{text:"Africa/Addis_Ababa",value:"Africa/Addis_Ababa"},{text:"Africa/Algiers",value:"Africa/Algiers"},{text:"Africa/Asmara",value:"Africa/Asmara"},{text:"Africa/Asmera",value:"Africa/Asmera"},{text:"Africa/Bamako",value:"Africa/Bamako"},{text:"Africa/Bangui",value:"Africa/Bangui"},{text:"Africa/Banjul",value:"Africa/Banjul"},{text:"Africa/Bissau",value:"Africa/Bissau"},{text:"Africa/Blantyre",value:"Africa/Blantyre"},{text:"Africa/Brazzaville",value:"Africa/Brazzaville"},{text:"Africa/Bujumbura",value:"Africa/Bujumbura"},{text:"Africa/Cairo",value:"Africa/Cairo"},{text:"Africa/Casablanca",value:"Africa/Casablanca"},{text:"Africa/Ceuta",value:"Africa/Ceuta"},{text:"Africa/Conakry",value:"Africa/Conakry"},{text:"Africa/Dakar",value:"Africa/Dakar"},{text:"Africa/Dar_es_Salaam",value:"Africa/Dar_es_Salaam"},{text:"Africa/Djibouti",value:"Africa/Djibouti"},{text:"Africa/Douala",value:"Africa/Douala"},{text:"Africa/El_Aaiun",value:"Africa/El_Aaiun"},{text:"Africa/Freetown",value:"Africa/Freetown"},{text:"Africa/Gaborone",value:"Africa/Gaborone"},{text:"Africa/Harare",value:"Africa/Harare"},{text:"Africa/Johannesburg",value:"Africa/Johannesburg"},{text:"Africa/Juba",value:"Africa/Juba"},{text:"Africa/Kampala",value:"Africa/Kampala"},{text:"Africa/Khartoum",value:"Africa/Khartoum"},{text:"Africa/Kigali",value:"Africa/Kigali"},{text:"Africa/Kinshasa",value:"Africa/Kinshasa"},{text:"Africa/Lagos",value:"Africa/Lagos"},{text:"Africa/Libreville",value:"Africa/Libreville"},{text:"Africa/Lome",value:"Africa/Lome"},{text:"Africa/Luanda",value:"Africa/Luanda"},{text:"Africa/Lubumbashi",value:"Africa/Lubumbashi"},{text:"Africa/Lusaka",value:"Africa/Lusaka"},{text:"Africa/Malabo",value:"Africa/Malabo"},{text:"Africa/Maputo",value:"Africa/Maputo"},{text:"Africa/Maseru",value:"Africa/Maseru"},{text:"Africa/Mbabane",value:"Africa/Mbabane"},{text:"Africa/Mogadishu",value:"Africa/Mogadishu"},{text:"Africa/Monrovia",value:"Africa/Monrovia"},{text:"Africa/Nairobi",value:"Africa/Nairobi"},{text:"Africa/Ndjamena",value:"Africa/Ndjamena"},{text:"Africa/Niamey",value:"Africa/Niamey"},{text:"Africa/Nouakchott",value:"Africa/Nouakchott"},{text:"Africa/Ouagadougou",value:"Africa/Ouagadougou"},{text:"Africa/Porto-Novo",value:"Africa/Porto-Novo"},{text:"Africa/Sao_Tome",value:"Africa/Sao_Tome"},{text:"Africa/Timbuktu",value:"Africa/Timbuktu"},{text:"Africa/Tripoli",value:"Africa/Tripoli"},{text:"Africa/Tunis",value:"Africa/Tunis"},{text:"Africa/Windhoek",value:"Africa/Windhoek"},{text:"America/Adak",value:"America/Adak"},{text:"America/Anchorage",value:"America/Anchorage"},{text:"America/Anguilla",value:"America/Anguilla"},{text:"America/Antigua",value:"America/Antigua"},{text:"America/Araguaina",value:"America/Araguaina"},{text:"America/Argentina/Buenos_Aires",value:"America/Argentina/Buenos_Aires"},{text:"America/Argentina/Catamarca",value:"America/Argentina/Catamarca"},{text:"America/Argentina/ComodRivadavia",value:"America/Argentina/ComodRivadavia"},{text:"America/Argentina/Cordoba",value:"America/Argentina/Cordoba"},{text:"America/Argentina/Jujuy",value:"America/Argentina/Jujuy"},{text:"America/Argentina/La_Rioja",value:"America/Argentina/La_Rioja"},{text:"America/Argentina/Mendoza",value:"America/Argentina/Mendoza"},{text:"America/Argentina/Rio_Gallegos",value:"America/Argentina/Rio_Gallegos"},{text:"America/Argentina/Salta",value:"America/Argentina/Salta"},{text:"America/Argentina/San_Juan",value:"America/Argentina/San_Juan"},{text:"America/Argentina/San_Luis",value:"America/Argentina/San_Luis"},{text:"America/Argentina/Tucuman",value:"America/Argentina/Tucuman"},{text:"America/Argentina/Ushuaia",value:"America/Argentina/Ushuaia"},{text:"America/Aruba",value:"America/Aruba"},{text:"America/Asuncion",value:"America/Asuncion"},{text:"America/Atikokan",value:"America/Atikokan"},{text:"America/Atka",value:"America/Atka"},{text:"America/Bahia",value:"America/Bahia"},{text:"America/Bahia_Banderas",value:"America/Bahia_Banderas"},{text:"America/Barbados",value:"America/Barbados"},{text:"America/Belem",value:"America/Belem"},{text:"America/Belize",value:"America/Belize"},{text:"America/Blanc-Sablon",value:"America/Blanc-Sablon"},{text:"America/Boa_Vista",value:"America/Boa_Vista"},{text:"America/Bogota",value:"America/Bogota"},{text:"America/Boise",value:"America/Boise"},{text:"America/Buenos_Aires",value:"America/Buenos_Aires"},{text:"America/Cambridge_Bay",value:"America/Cambridge_Bay"},{text:"America/Campo_Grande",value:"America/Campo_Grande"},{text:"America/Cancun",value:"America/Cancun"},{text:"America/Caracas",value:"America/Caracas"},{text:"America/Catamarca",value:"America/Catamarca"},{text:"America/Cayenne",value:"America/Cayenne"},{text:"America/Cayman",value:"America/Cayman"},{text:"America/Chicago",value:"America/Chicago"},{text:"America/Chihuahua",value:"America/Chihuahua"},{text:"America/Ciudad_Juarez",value:"America/Ciudad_Juarez"},{text:"America/Coral_Harbour",value:"America/Coral_Harbour"},{text:"America/Cordoba",value:"America/Cordoba"},{text:"America/Costa_Rica",value:"America/Costa_Rica"},{text:"America/Creston",value:"America/Creston"},{text:"America/Cuiaba",value:"America/Cuiaba"},{text:"America/Curacao",value:"America/Curacao"},{text:"America/Danmarkshavn",value:"America/Danmarkshavn"},{text:"America/Dawson",value:"America/Dawson"},{text:"America/Dawson_Creek",value:"America/Dawson_Creek"},{text:"America/Denver",value:"America/Denver"},{text:"America/Detroit",value:"America/Detroit"},{text:"America/Dominica",value:"America/Dominica"},{text:"America/Edmonton",value:"America/Edmonton"},{text:"America/Eirunepe",value:"America/Eirunepe"},{text:"America/El_Salvador",value:"America/El_Salvador"},{text:"America/Ensenada",value:"America/Ensenada"},{text:"America/Fort_Nelson",value:"America/Fort_Nelson"},{text:"America/Fort_Wayne",value:"America/Fort_Wayne"},{text:"America/Fortaleza",value:"America/Fortaleza"},{text:"America/Glace_Bay",value:"America/Glace_Bay"},{text:"America/Godthab",value:"America/Godthab"},{text:"America/Goose_Bay",value:"America/Goose_Bay"},{text:"America/Grand_Turk",value:"America/Grand_Turk"},{text:"America/Grenada",value:"America/Grenada"},{text:"America/Guadeloupe",value:"America/Guadeloupe"},{text:"America/Guatemala",value:"America/Guatemala"},{text:"America/Guayaquil",value:"America/Guayaquil"},{text:"America/Guyana",value:"America/Guyana"},{text:"America/Halifax",value:"America/Halifax"},{text:"America/Havana",value:"America/Havana"},{text:"America/Hermosillo",value:"America/Hermosillo"},{text:"America/Indiana/Indianapolis",value:"America/Indiana/Indianapolis"},{text:"America/Indiana/Knox",value:"America/Indiana/Knox"},{text:"America/Indiana/Marengo",value:"America/Indiana/Marengo"},{text:"America/Indiana/Petersburg",value:"America/Indiana/Petersburg"},{text:"America/Indiana/Tell_City",value:"America/Indiana/Tell_City"},{text:"America/Indiana/Vevay",value:"America/Indiana/Vevay"},{text:"America/Indiana/Vincennes",value:"America/Indiana/Vincennes"},{text:"America/Indiana/Winamac",value:"America/Indiana/Winamac"},{text:"America/Indianapolis",value:"America/Indianapolis"},{text:"America/Inuvik",value:"America/Inuvik"},{text:"America/Iqaluit",value:"America/Iqaluit"},{text:"America/Jamaica",value:"America/Jamaica"},{text:"America/Jujuy",value:"America/Jujuy"},{text:"America/Juneau",value:"America/Juneau"},{text:"America/Kentucky/Louisville",value:"America/Kentucky/Louisville"},{text:"America/Kentucky/Monticello",value:"America/Kentucky/Monticello"},{text:"America/Knox_IN",value:"America/Knox_IN"},{text:"America/Kralendijk",value:"America/Kralendijk"},{text:"America/La_Paz",value:"America/La_Paz"},{text:"America/Lima",value:"America/Lima"},{text:"America/Los_Angeles",value:"America/Los_Angeles"},{text:"America/Louisville",value:"America/Louisville"},{text:"America/Lower_Princes",value:"America/Lower_Princes"},{text:"America/Maceio",value:"America/Maceio"},{text:"America/Managua",value:"America/Managua"},{text:"America/Manaus",value:"America/Manaus"},{text:"America/Marigot",value:"America/Marigot"},{text:"America/Martinique",value:"America/Martinique"},{text:"America/Matamoros",value:"America/Matamoros"},{text:"America/Mazatlan",value:"America/Mazatlan"},{text:"America/Mendoza",value:"America/Mendoza"},{text:"America/Menominee",value:"America/Menominee"},{text:"America/Merida",value:"America/Merida"},{text:"America/Metlakatla",value:"America/Metlakatla"},{text:"America/Mexico_City",value:"America/Mexico_City"},{text:"America/Miquelon",value:"America/Miquelon"},{text:"America/Moncton",value:"America/Moncton"},{text:"America/Monterrey",value:"America/Monterrey"},{text:"America/Montevideo",value:"America/Montevideo"},{text:"America/Montreal",value:"America/Montreal"},{text:"America/Montserrat",value:"America/Montserrat"},{text:"America/Nassau",value:"America/Nassau"},{text:"America/New_York",value:"America/New_York"},{text:"America/Nipigon",value:"America/Nipigon"},{text:"America/Nome",value:"America/Nome"},{text:"America/Noronha",value:"America/Noronha"},{text:"America/North_Dakota/Beulah",value:"America/North_Dakota/Beulah"},{text:"America/North_Dakota/Center",value:"America/North_Dakota/Center"},{text:"America/North_Dakota/New_Salem",value:"America/North_Dakota/New_Salem"},{text:"America/Nuuk",value:"America/Nuuk"},{text:"America/Ojinaga",value:"America/Ojinaga"},{text:"America/Panama",value:"America/Panama"},{text:"America/Pangnirtung",value:"America/Pangnirtung"},{text:"America/Paramaribo",value:"America/Paramaribo"},{text:"America/Phoenix",value:"America/Phoenix"},{text:"America/Port-au-Prince",value:"America/Port-au-Prince"},{text:"America/Port_of_Spain",value:"America/Port_of_Spain"},{text:"America/Porto_Acre",value:"America/Porto_Acre"},{text:"America/Porto_Velho",value:"America/Porto_Velho"},{text:"America/Puerto_Rico",value:"America/Puerto_Rico"},{text:"America/Punta_Arenas",value:"America/Punta_Arenas"},{text:"America/Rainy_River",value:"America/Rainy_River"},{text:"America/Rankin_Inlet",value:"America/Rankin_Inlet"},{text:"America/Recife",value:"America/Recife"},{text:"America/Regina",value:"America/Regina"},{text:"America/Resolute",value:"America/Resolute"},{text:"America/Rio_Branco",value:"America/Rio_Branco"},{text:"America/Rosario",value:"America/Rosario"},{text:"America/Santa_Isabel",value:"America/Santa_Isabel"},{text:"America/Santarem",value:"America/Santarem"},{text:"America/Santiago",value:"America/Santiago"},{text:"America/Santo_Domingo",value:"America/Santo_Domingo"},{text:"America/Sao_Paulo",value:"America/Sao_Paulo"},{text:"America/Scoresbysund",value:"America/Scoresbysund"},{text:"America/Shiprock",value:"America/Shiprock"},{text:"America/Sitka",value:"America/Sitka"},{text:"America/St_Barthelemy",value:"America/St_Barthelemy"},{text:"America/St_Johns",value:"America/St_Johns"},{text:"America/St_Kitts",value:"America/St_Kitts"},{text:"America/St_Lucia",value:"America/St_Lucia"},{text:"America/St_Thomas",value:"America/St_Thomas"},{text:"America/St_Vincent",value:"America/St_Vincent"},{text:"America/Swift_Current",value:"America/Swift_Current"},{text:"America/Tegucigalpa",value:"America/Tegucigalpa"},{text:"America/Thule",value:"America/Thule"},{text:"America/Thunder_Bay",value:"America/Thunder_Bay"},{text:"America/Tijuana",value:"America/Tijuana"},{text:"America/Toronto",value:"America/Toronto"},{text:"America/Tortola",value:"America/Tortola"},{text:"America/Vancouver",value:"America/Vancouver"},{text:"America/Virgin",value:"America/Virgin"},{text:"America/Whitehorse",value:"America/Whitehorse"},{text:"America/Winnipeg",value:"America/Winnipeg"},{text:"America/Yakutat",value:"America/Yakutat"},{text:"America/Yellowknife",value:"America/Yellowknife"},{text:"Antarctica/Casey",value:"Antarctica/Casey"},{text:"Antarctica/Davis",value:"Antarctica/Davis"},{text:"Antarctica/DumontDUrville",value:"Antarctica/DumontDUrville"},{text:"Antarctica/Macquarie",value:"Antarctica/Macquarie"},{text:"Antarctica/Mawson",value:"Antarctica/Mawson"},{text:"Antarctica/McMurdo",value:"Antarctica/McMurdo"},{text:"Antarctica/Palmer",value:"Antarctica/Palmer"},{text:"Antarctica/Rothera",value:"Antarctica/Rothera"},{text:"Antarctica/South_Pole",value:"Antarctica/South_Pole"},{text:"Antarctica/Syowa",value:"Antarctica/Syowa"},{text:"Antarctica/Troll",value:"Antarctica/Troll"},{text:"Antarctica/Vostok",value:"Antarctica/Vostok"},{text:"Arctic/Longyearbyen",value:"Arctic/Longyearbyen"},{text:"Asia/Aden",value:"Asia/Aden"},{text:"Asia/Almaty",value:"Asia/Almaty"},{text:"Asia/Amman",value:"Asia/Amman"},{text:"Asia/Anadyr",value:"Asia/Anadyr"},{text:"Asia/Aqtau",value:"Asia/Aqtau"},{text:"Asia/Aqtobe",value:"Asia/Aqtobe"},{text:"Asia/Ashgabat",value:"Asia/Ashgabat"},{text:"Asia/Ashkhabad",value:"Asia/Ashkhabad"},{text:"Asia/Atyrau",value:"Asia/Atyrau"},{text:"Asia/Baghdad",value:"Asia/Baghdad"},{text:"Asia/Bahrain",value:"Asia/Bahrain"},{text:"Asia/Baku",value:"Asia/Baku"},{text:"Asia/Bangkok",value:"Asia/Bangkok"},{text:"Asia/Barnaul",value:"Asia/Barnaul"},{text:"Asia/Beirut",value:"Asia/Beirut"},{text:"Asia/Bishkek",value:"Asia/Bishkek"},{text:"Asia/Brunei",value:"Asia/Brunei"},{text:"Asia/Calcutta",value:"Asia/Calcutta"},{text:"Asia/Chita",value:"Asia/Chita"},{text:"Asia/Choibalsan",value:"Asia/Choibalsan"},{text:"Asia/Chongqing",value:"Asia/Chongqing"},{text:"Asia/Chungking",value:"Asia/Chungking"},{text:"Asia/Colombo",value:"Asia/Colombo"},{text:"Asia/Dacca",value:"Asia/Dacca"},{text:"Asia/Damascus",value:"Asia/Damascus"},{text:"Asia/Dhaka",value:"Asia/Dhaka"},{text:"Asia/Dili",value:"Asia/Dili"},{text:"Asia/Dubai",value:"Asia/Dubai"},{text:"Asia/Dushanbe",value:"Asia/Dushanbe"},{text:"Asia/Famagusta",value:"Asia/Famagusta"},{text:"Asia/Gaza",value:"Asia/Gaza"},{text:"Asia/Harbin",value:"Asia/Harbin"},{text:"Asia/Hebron",value:"Asia/Hebron"},{text:"Asia/Ho_Chi_Minh",value:"Asia/Ho_Chi_Minh"},{text:"Asia/Hong_Kong",value:"Asia/Hong_Kong"},{text:"Asia/Hovd",value:"Asia/Hovd"},{text:"Asia/Irkutsk",value:"Asia/Irkutsk"},{text:"Asia/Istanbul",value:"Asia/Istanbul"},{text:"Asia/Jakarta",value:"Asia/Jakarta"},{text:"Asia/Jayapura",value:"Asia/Jayapura"},{text:"Asia/Jerusalem",value:"Asia/Jerusalem"},{text:"Asia/Kabul",value:"Asia/Kabul"},{text:"Asia/Kamchatka",value:"Asia/Kamchatka"},{text:"Asia/Karachi",value:"Asia/Karachi"},{text:"Asia/Kashgar",value:"Asia/Kashgar"},{text:"Asia/Kathmandu",value:"Asia/Kathmandu"},{text:"Asia/Katmandu",value:"Asia/Katmandu"},{text:"Asia/Khandyga",value:"Asia/Khandyga"},{text:"Asia/Kolkata",value:"Asia/Kolkata"},{text:"Asia/Krasnoyarsk",value:"Asia/Krasnoyarsk"},{text:"Asia/Kuala_Lumpur",value:"Asia/Kuala_Lumpur"},{text:"Asia/Kuching",value:"Asia/Kuching"},{text:"Asia/Kuwait",value:"Asia/Kuwait"},{text:"Asia/Macao",value:"Asia/Macao"},{text:"Asia/Macau",value:"Asia/Macau"},{text:"Asia/Magadan",value:"Asia/Magadan"},{text:"Asia/Makassar",value:"Asia/Makassar"},{text:"Asia/Manila",value:"Asia/Manila"},{text:"Asia/Muscat",value:"Asia/Muscat"},{text:"Asia/Nicosia",value:"Asia/Nicosia"},{text:"Asia/Novokuznetsk",value:"Asia/Novokuznetsk"},{text:"Asia/Novosibirsk",value:"Asia/Novosibirsk"},{text:"Asia/Omsk",value:"Asia/Omsk"},{text:"Asia/Oral",value:"Asia/Oral"},{text:"Asia/Phnom_Penh",value:"Asia/Phnom_Penh"},{text:"Asia/Pontianak",value:"Asia/Pontianak"},{text:"Asia/Pyongyang",value:"Asia/Pyongyang"},{text:"Asia/Qatar",value:"Asia/Qatar"},{text:"Asia/Qostanay",value:"Asia/Qostanay"},{text:"Asia/Qyzylorda",value:"Asia/Qyzylorda"},{text:"Asia/Rangoon",value:"Asia/Rangoon"},{text:"Asia/Riyadh",value:"Asia/Riyadh"},{text:"Asia/Saigon",value:"Asia/Saigon"},{text:"Asia/Sakhalin",value:"Asia/Sakhalin"},{text:"Asia/Samarkand",value:"Asia/Samarkand"},{text:"Asia/Seoul",value:"Asia/Seoul"},{text:"Asia/Shanghai",value:"Asia/Shanghai"},{text:"Asia/Singapore",value:"Asia/Singapore"},{text:"Asia/Srednekolymsk",value:"Asia/Srednekolymsk"},{text:"Asia/Taipei",value:"Asia/Taipei"},{text:"Asia/Tashkent",value:"Asia/Tashkent"},{text:"Asia/Tbilisi",value:"Asia/Tbilisi"},{text:"Asia/Tehran",value:"Asia/Tehran"},{text:"Asia/Tel_Aviv",value:"Asia/Tel_Aviv"},{text:"Asia/Thimbu",value:"Asia/Thimbu"},{text:"Asia/Thimphu",value:"Asia/Thimphu"},{text:"Asia/Tokyo",value:"Asia/Tokyo"},{text:"Asia/Tomsk",value:"Asia/Tomsk"},{text:"Asia/Ujung_Pandang",value:"Asia/Ujung_Pandang"},{text:"Asia/Ulaanbaatar",value:"Asia/Ulaanbaatar"},{text:"Asia/Ulan_Bator",value:"Asia/Ulan_Bator"},{text:"Asia/Urumqi",value:"Asia/Urumqi"},{text:"Asia/Ust-Nera",value:"Asia/Ust-Nera"},{text:"Asia/Vientiane",value:"Asia/Vientiane"},{text:"Asia/Vladivostok",value:"Asia/Vladivostok"},{text:"Asia/Yakutsk",value:"Asia/Yakutsk"},{text:"Asia/Yangon",value:"Asia/Yangon"},{text:"Asia/Yekaterinburg",value:"Asia/Yekaterinburg"},{text:"Asia/Yerevan",value:"Asia/Yerevan"},{text:"Atlantic/Azores",value:"Atlantic/Azores"},{text:"Atlantic/Bermuda",value:"Atlantic/Bermuda"},{text:"Atlantic/Canary",value:"Atlantic/Canary"},{text:"Atlantic/Cape_Verde",value:"Atlantic/Cape_Verde"},{text:"Atlantic/Faeroe",value:"Atlantic/Faeroe"},{text:"Atlantic/Faroe",value:"Atlantic/Faroe"},{text:"Atlantic/Jan_Mayen",value:"Atlantic/Jan_Mayen"},{text:"Atlantic/Madeira",value:"Atlantic/Madeira"},{text:"Atlantic/Reykjavik",value:"Atlantic/Reykjavik"},{text:"Atlantic/South_Georgia",value:"Atlantic/South_Georgia"},{text:"Atlantic/St_Helena",value:"Atlantic/St_Helena"},{text:"Atlantic/Stanley",value:"Atlantic/Stanley"},{text:"Australia/ACT",value:"Australia/ACT"},{text:"Australia/Adelaide",value:"Australia/Adelaide"},{text:"Australia/Brisbane",value:"Australia/Brisbane"},{text:"Australia/Broken_Hill",value:"Australia/Broken_Hill"},{text:"Australia/Canberra",value:"Australia/Canberra"},{text:"Australia/Currie",value:"Australia/Currie"},{text:"Australia/Darwin",value:"Australia/Darwin"},{text:"Australia/Eucla",value:"Australia/Eucla"},{text:"Australia/Hobart",value:"Australia/Hobart"},{text:"Australia/LHI",value:"Australia/LHI"},{text:"Australia/Lindeman",value:"Australia/Lindeman"},{text:"Australia/Lord_Howe",value:"Australia/Lord_Howe"},{text:"Australia/Melbourne",value:"Australia/Melbourne"},{text:"Australia/NSW",value:"Australia/NSW"},{text:"Australia/North",value:"Australia/North"},{text:"Australia/Perth",value:"Australia/Perth"},{text:"Australia/Queensland",value:"Australia/Queensland"},{text:"Australia/South",value:"Australia/South"},{text:"Australia/Sydney",value:"Australia/Sydney"},{text:"Australia/Tasmania",value:"Australia/Tasmania"},{text:"Australia/Victoria",value:"Australia/Victoria"},{text:"Australia/West",value:"Australia/West"},{text:"Australia/Yancowinna",value:"Australia/Yancowinna"},{text:"Brazil/Acre",value:"Brazil/Acre"},{text:"Brazil/DeNoronha",value:"Brazil/DeNoronha"},{text:"Brazil/East",value:"Brazil/East"},{text:"Brazil/West",value:"Brazil/West"},{text:"Canada/Atlantic",value:"Canada/Atlantic"},{text:"Canada/Central",value:"Canada/Central"},{text:"Canada/Eastern",value:"Canada/Eastern"},{text:"Canada/Mountain",value:"Canada/Mountain"},{text:"Canada/Newfoundland",value:"Canada/Newfoundland"},{text:"Canada/Pacific",value:"Canada/Pacific"},{text:"Canada/Saskatchewan",value:"Canada/Saskatchewan"},{text:"Canada/Yukon",value:"Canada/Yukon"},{text:"Chile/Continental",value:"Chile/Continental"},{text:"Chile/EasterIsland",value:"Chile/EasterIsland"},{text:"Cuba",value:"Cuba"},{text:"Egypt",value:"Egypt"},{text:"Eire",value:"Eire"},{text:"Europe/Amsterdam",value:"Europe/Amsterdam"},{text:"Europe/Andorra",value:"Europe/Andorra"},{text:"Europe/Astrakhan",value:"Europe/Astrakhan"},{text:"Europe/Athens",value:"Europe/Athens"},{text:"Europe/Belfast",value:"Europe/Belfast"},{text:"Europe/Belgrade",value:"Europe/Belgrade"},{text:"Europe/Berlin",value:"Europe/Berlin"},{text:"Europe/Bratislava",value:"Europe/Bratislava"},{text:"Europe/Brussels",value:"Europe/Brussels"},{text:"Europe/Bucharest",value:"Europe/Bucharest"},{text:"Europe/Budapest",value:"Europe/Budapest"},{text:"Europe/Busingen",value:"Europe/Busingen"},{text:"Europe/Chisinau",value:"Europe/Chisinau"},{text:"Europe/Copenhagen",value:"Europe/Copenhagen"},{text:"Europe/Dublin",value:"Europe/Dublin"},{text:"Europe/Gibraltar",value:"Europe/Gibraltar"},{text:"Europe/Guernsey",value:"Europe/Guernsey"},{text:"Europe/Helsinki",value:"Europe/Helsinki"},{text:"Europe/Isle_of_Man",value:"Europe/Isle_of_Man"},{text:"Europe/Istanbul",value:"Europe/Istanbul"},{text:"Europe/Jersey",value:"Europe/Jersey"},{text:"Europe/Kaliningrad",value:"Europe/Kaliningrad"},{text:"Europe/Kiev",value:"Europe/Kiev"},{text:"Europe/Kirov",value:"Europe/Kirov"},{text:"Europe/Kyiv",value:"Europe/Kyiv"},{text:"Europe/Lisbon",value:"Europe/Lisbon"},{text:"Europe/Ljubljana",value:"Europe/Ljubljana"},{text:"Europe/London",value:"Europe/London"},{text:"Europe/Luxembourg",value:"Europe/Luxembourg"},{text:"Europe/Madrid",value:"Europe/Madrid"},{text:"Europe/Malta",value:"Europe/Malta"},{text:"Europe/Mariehamn",value:"Europe/Mariehamn"},{text:"Europe/Minsk",value:"Europe/Minsk"},{text:"Europe/Monaco",value:"Europe/Monaco"},{text:"Europe/Moscow",value:"Europe/Moscow"},{text:"Europe/Nicosia",value:"Europe/Nicosia"},{text:"Europe/Oslo",value:"Europe/Oslo"},{text:"Europe/Paris",value:"Europe/Paris"},{text:"Europe/Podgorica",value:"Europe/Podgorica"},{text:"Europe/Prague",value:"Europe/Prague"},{text:"Europe/Riga",value:"Europe/Riga"},{text:"Europe/Rome",value:"Europe/Rome"},{text:"Europe/Samara",value:"Europe/Samara"},{text:"Europe/San_Marino",value:"Europe/San_Marino"},{text:"Europe/Sarajevo",value:"Europe/Sarajevo"},{text:"Europe/Saratov",value:"Europe/Saratov"},{text:"Europe/Simferopol",value:"Europe/Simferopol"},{text:"Europe/Skopje",value:"Europe/Skopje"},{text:"Europe/Sofia",value:"Europe/Sofia"},{text:"Europe/Stockholm",value:"Europe/Stockholm"},{text:"Europe/Tallinn",value:"Europe/Tallinn"},{text:"Europe/Tirane",value:"Europe/Tirane"},{text:"Europe/Tiraspol",value:"Europe/Tiraspol"},{text:"Europe/Ulyanovsk",value:"Europe/Ulyanovsk"},{text:"Europe/Uzhgorod",value:"Europe/Uzhgorod"},{text:"Europe/Vaduz",value:"Europe/Vaduz"},{text:"Europe/Vatican",value:"Europe/Vatican"},{text:"Europe/Vienna",value:"Europe/Vienna"},{text:"Europe/Vilnius",value:"Europe/Vilnius"},{text:"Europe/Volgograd",value:"Europe/Volgograd"},{text:"Europe/Warsaw",value:"Europe/Warsaw"},{text:"Europe/Zagreb",value:"Europe/Zagreb"},{text:"Europe/Zaporozhye",value:"Europe/Zaporozhye"},{text:"Europe/Zurich",value:"Europe/Zurich"},{text:"Hongkong",value:"Hongkong"},{text:"Iceland",value:"Iceland"},{text:"Indian/Antananarivo",value:"Indian/Antananarivo"},{text:"Indian/Chagos",value:"Indian/Chagos"},{text:"Indian/Christmas",value:"Indian/Christmas"},{text:"Indian/Cocos",value:"Indian/Cocos"},{text:"Indian/Comoro",value:"Indian/Comoro"},{text:"Indian/Kerguelen",value:"Indian/Kerguelen"},{text:"Indian/Mahe",value:"Indian/Mahe"},{text:"Indian/Maldives",value:"Indian/Maldives"},{text:"Indian/Mauritius",value:"Indian/Mauritius"},{text:"Indian/Mayotte",value:"Indian/Mayotte"},{text:"Indian/Reunion",value:"Indian/Reunion"},{text:"Iran",value:"Iran"},{text:"Israel",value:"Israel"},{text:"Jamaica",value:"Jamaica"},{text:"Japan",value:"Japan"},{text:"Kwajalein",value:"Kwajalein"},{text:"Libya",value:"Libya"},{text:"Mexico/BajaNorte",value:"Mexico/BajaNorte"},{text:"Mexico/BajaSur",value:"Mexico/BajaSur"},{text:"Mexico/General",value:"Mexico/General"},{text:"Navajo",value:"Navajo"},{text:"Pacific/Apia",value:"Pacific/Apia"},{text:"Pacific/Auckland",value:"Pacific/Auckland"},{text:"Pacific/Bougainville",value:"Pacific/Bougainville"},{text:"Pacific/Chatham",value:"Pacific/Chatham"},{text:"Pacific/Chuuk",value:"Pacific/Chuuk"},{text:"Pacific/Easter",value:"Pacific/Easter"},{text:"Pacific/Efate",value:"Pacific/Efate"},{text:"Pacific/Enderbury",value:"Pacific/Enderbury"},{text:"Pacific/Fakaofo",value:"Pacific/Fakaofo"},{text:"Pacific/Fiji",value:"Pacific/Fiji"},{text:"Pacific/Funafuti",value:"Pacific/Funafuti"},{text:"Pacific/Galapagos",value:"Pacific/Galapagos"},{text:"Pacific/Gambier",value:"Pacific/Gambier"},{text:"Pacific/Guadalcanal",value:"Pacific/Guadalcanal"},{text:"Pacific/Guam",value:"Pacific/Guam"},{text:"Pacific/Honolulu",value:"Pacific/Honolulu"},{text:"Pacific/Johnston",value:"Pacific/Johnston"},{text:"Pacific/Kanton",value:"Pacific/Kanton"},{text:"Pacific/Kiritimati",value:"Pacific/Kiritimati"},{text:"Pacific/Kosrae",value:"Pacific/Kosrae"},{text:"Pacific/Kwajalein",value:"Pacific/Kwajalein"},{text:"Pacific/Majuro",value:"Pacific/Majuro"},{text:"Pacific/Marquesas",value:"Pacific/Marquesas"},{text:"Pacific/Midway",value:"Pacific/Midway"},{text:"Pacific/Nauru",value:"Pacific/Nauru"},{text:"Pacific/Niue",value:"Pacific/Niue"},{text:"Pacific/Norfolk",value:"Pacific/Norfolk"},{text:"Pacific/Noumea",value:"Pacific/Noumea"},{text:"Pacific/Pago_Pago",value:"Pacific/Pago_Pago"},{text:"Pacific/Palau",value:"Pacific/Palau"},{text:"Pacific/Pitcairn",value:"Pacific/Pitcairn"},{text:"Pacific/Pohnpei",value:"Pacific/Pohnpei"},{text:"Pacific/Ponape",value:"Pacific/Ponape"},{text:"Pacific/Port_Moresby",value:"Pacific/Port_Moresby"},{text:"Pacific/Rarotonga",value:"Pacific/Rarotonga"},{text:"Pacific/Saipan",value:"Pacific/Saipan"},{text:"Pacific/Samoa",value:"Pacific/Samoa"},{text:"Pacific/Tahiti",value:"Pacific/Tahiti"},{text:"Pacific/Tarawa",value:"Pacific/Tarawa"},{text:"Pacific/Tongatapu",value:"Pacific/Tongatapu"},{text:"Pacific/Truk",value:"Pacific/Truk"},{text:"Pacific/Wake",value:"Pacific/Wake"},{text:"Pacific/Wallis",value:"Pacific/Wallis"},{text:"Pacific/Yap",value:"Pacific/Yap"},{text:"Poland",value:"Poland"},{text:"Portugal",value:"Portugal"},{text:"Singapore",value:"Singapore"},{text:"Turkey",value:"Turkey"},{text:"US/Alaska",value:"US/Alaska"},{text:"US/Aleutian",value:"US/Aleutian"},{text:"US/Arizona",value:"US/Arizona"},{text:"US/Central",value:"US/Central"},{text:"US/East-Indiana",value:"US/East-Indiana"},{text:"US/Eastern",value:"US/Eastern"},{text:"US/Hawaii",value:"US/Hawaii"},{text:"US/Indiana-Starke",value:"US/Indiana-Starke"},{text:"US/Michigan",value:"US/Michigan"},{text:"US/Mountain",value:"US/Mountain"},{text:"US/Pacific",value:"US/Pacific"},{text:"US/Samoa",value:"US/Samoa"},{text:"UTC",value:"UTC"},{text:"Zulu",value:"Zulu"}];const W={class:"options-tabs"},Y={class:"block"},Q={class:"title is-4 has-text-grey-light"},$={class:"field help"},Z={class:"ml-2",href:"https://crowdin.com/project/2fauth"},X={class:"title is-4 pt-4 has-text-grey-light"},ee={class:"title is-4 pt-4 has-text-grey-light"},ae={class:"title is-4 pt-4 has-text-grey-light"},te={class:"title is-4 pt-4 has-text-grey-light"},ue={__name:"Options",setup(ie){const v=j("2fauth"),i=D(),g=T(),_=d(),h=U(v.prefix+"returnTo","accounts"),b=[{text:"settings.forms.grid",value:"grid",icon:"th"},{text:"settings.forms.list",value:"list",icon:"list"}],k=[{text:"settings.forms.light",value:"light",icon:"sun"},{text:"settings.forms.dark",value:"dark",icon:"moon"},{text:"settings.forms.automatic",value:"system",icon:"desktop"}],y=[{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"}],P=[{text:"settings.forms.never",value:0},{text:"settings.forms.on_otp_copy",value:-1},{text:"settings.forms.1_minutes",value:1},{text:"settings.forms.5_minutes",value:5},{text:"settings.forms.10_minutes",value:10},{text:"settings.forms.15_minutes",value:15},{text:"settings.forms.30_minutes",value:30},{text:"settings.forms.1_hour",value:60},{text:"settings.forms.1_day",value:1440}],C=[{text:"settings.forms.never",value:0},{text:"settings.forms.1_minutes",value:1},{text:"settings.forms.2_minutes",value:2},{text:"settings.forms.5_minutes",value:5}],x=O([{text:"groups.no_group",value:0},{text:"groups.active_group",value:-1}]),E=[{text:"settings.forms.livescan",value:"livescan"},{text:"settings.forms.upload",value:"upload"},{text:"settings.forms.advanced_form",value:"advancedForm"}],S=[{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"}],M=K(()=>{let u=[{text:"languages.browser_preference",value:"browser"}];for(const e of v.langs)u.push({text:"languages."+e,value:e});return u});L(()=>{g.items.forEach(u=>{u.id>0&&x.value.push({text:u.name,value:u.id})}),i.refreshPreferences()});function l(u,e){F.updatePreference(u,e).then(s=>{d().success({type:"is-success",text:H("settings.forms.setting_saved")}),u==="lang"&&q()!==e?i.applyLanguage():u==="theme"&&i.applyTheme()})}return G(u=>{u.name.startsWith("settings.")||_.clear()}),(u,e)=>{const s=c("FormSelect"),B=c("FontAwesomeIcon"),m=c("FormToggle"),o=c("FormCheckbox"),V=c("FormWrapper"),N=c("ButtonBackCloseCancel"),w=c("VueFooter");return z(),R("div",null,[r(I,{activeTab:"settings.options"}),n("div",W,[r(V,null,{default:p(()=>[n("form",null,[n("div",Y,[n("h4",Q,A(u.$t("settings.general")),1),r(s,{modelValue:t(i).preferences.lang,"onUpdate:modelValue":[e[0]||(e[0]=a=>t(i).preferences.lang=a),e[1]||(e[1]=a=>l("lang",a))],options:t(M),fieldName:"lang",label:"settings.forms.language.label",help:"settings.forms.language.help"},null,8,["modelValue","options"]),n("div",$,[f(A(u.$t("settings.forms.some_translation_are_missing"))+" ",1),n("a",Z,[f(A(u.$t("settings.forms.help_translate_2fauth"))+" ",1),r(B,{icon:["fas","external-link-alt"]})])]),r(s,{modelValue:t(i).preferences.timezone,"onUpdate:modelValue":[e[2]||(e[2]=a=>t(i).preferences.timezone=a),e[3]||(e[3]=a=>l("timezone",a))],options:t(J),fieldName:"timezone",label:"settings.forms.timezone.label",help:"settings.forms.timezone.help"},null,8,["modelValue","options"]),r(m,{modelValue:t(i).preferences.displayMode,"onUpdate:modelValue":[e[4]||(e[4]=a=>t(i).preferences.displayMode=a),e[5]||(e[5]=a=>l("displayMode",a))],choices:b,fieldName:"displayMode",label:"settings.forms.display_mode.label",help:"settings.forms.display_mode.help"},null,8,["modelValue"]),r(m,{modelValue:t(i).preferences.theme,"onUpdate:modelValue":[e[6]||(e[6]=a=>t(i).preferences.theme=a),e[7]||(e[7]=a=>l("theme",a))],choices:k,fieldName:"theme",label:"settings.forms.theme.label",help:"settings.forms.theme.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.showAccountsIcons,"onUpdate:modelValue":[e[8]||(e[8]=a=>t(i).preferences.showAccountsIcons=a),e[9]||(e[9]=a=>l("showAccountsIcons",a))],fieldName:"showAccountsIcons",label:"settings.forms.show_accounts_icons.label",help:"settings.forms.show_accounts_icons.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.getOfficialIcons,"onUpdate:modelValue":[e[10]||(e[10]=a=>t(i).preferences.getOfficialIcons=a),e[11]||(e[11]=a=>l("getOfficialIcons",a))],fieldName:"getOfficialIcons",label:"settings.forms.get_official_icons.label",help:"settings.forms.get_official_icons.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.formatPassword,"onUpdate:modelValue":[e[12]||(e[12]=a=>t(i).preferences.formatPassword=a),e[13]||(e[13]=a=>l("formatPassword",a))],fieldName:"formatPassword",label:"settings.forms.password_format.label",help:"settings.forms.password_format.help"},null,8,["modelValue"]),r(m,{modelValue:t(i).preferences.formatPasswordBy,"onUpdate:modelValue":[e[14]||(e[14]=a=>t(i).preferences.formatPasswordBy=a),e[15]||(e[15]=a=>l("formatPasswordBy",a))],choices:y,fieldName:"formatPasswordBy",isDisabled:!t(i).preferences.formatPassword},null,8,["modelValue","isDisabled"]),r(o,{modelValue:t(i).preferences.clearSearchOnCopy,"onUpdate:modelValue":[e[16]||(e[16]=a=>t(i).preferences.clearSearchOnCopy=a),e[17]||(e[17]=a=>l("clearSearchOnCopy",a))],fieldName:"clearSearchOnCopy",label:"settings.forms.clear_search_on_copy.label",help:"settings.forms.clear_search_on_copy.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.sortCaseSensitive,"onUpdate:modelValue":[e[18]||(e[18]=a=>t(i).preferences.sortCaseSensitive=a),e[19]||(e[19]=a=>l("sortCaseSensitive",a))],fieldName:"sortCaseSensitive",label:"settings.forms.sort_case_sensitive.label",help:"settings.forms.sort_case_sensitive.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.showEmailInFooter,"onUpdate:modelValue":[e[20]||(e[20]=a=>t(i).preferences.showEmailInFooter=a),e[21]||(e[21]=a=>l("showEmailInFooter",a))],fieldName:"showEmailInFooter",label:"settings.forms.show_email_in_footer.label",help:"settings.forms.show_email_in_footer.help"},null,8,["modelValue"]),n("h4",X,A(u.$t("groups.groups")),1),r(s,{modelValue:t(i).preferences.defaultGroup,"onUpdate:modelValue":[e[22]||(e[22]=a=>t(i).preferences.defaultGroup=a),e[23]||(e[23]=a=>l("defaultGroup",a))],options:t(x),fieldName:"defaultGroup",label:"settings.forms.default_group.label",help:"settings.forms.default_group.help"},null,8,["modelValue","options"]),r(o,{modelValue:t(i).preferences.rememberActiveGroup,"onUpdate:modelValue":[e[24]||(e[24]=a=>t(i).preferences.rememberActiveGroup=a),e[25]||(e[25]=a=>l("rememberActiveGroup",a))],fieldName:"rememberActiveGroup",label:"settings.forms.remember_active_group.label",help:"settings.forms.remember_active_group.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.viewDefaultGroupOnCopy,"onUpdate:modelValue":[e[26]||(e[26]=a=>t(i).preferences.viewDefaultGroupOnCopy=a),e[27]||(e[27]=a=>l("viewDefaultGroupOnCopy",a))],fieldName:"viewDefaultGroupOnCopy",label:"settings.forms.view_default_group_on_copy.label",help:"settings.forms.view_default_group_on_copy.help"},null,8,["modelValue"]),n("h4",ee,A(u.$t("settings.security")),1),r(s,{modelValue:t(i).preferences.kickUserAfter,"onUpdate:modelValue":[e[28]||(e[28]=a=>t(i).preferences.kickUserAfter=a),e[29]||(e[29]=a=>l("kickUserAfter",a))],options:P,fieldName:"kickUserAfter",label:"settings.forms.auto_lock.label",help:"settings.forms.auto_lock.help"},null,8,["modelValue"]),r(m,{modelValue:t(i).preferences.getOtpOnRequest,"onUpdate:modelValue":[e[30]||(e[30]=a=>t(i).preferences.getOtpOnRequest=a),e[31]||(e[31]=a=>l("getOtpOnRequest",a))],choices:S,fieldName:"getOtpOnRequest",label:"settings.forms.otp_generation.label",help:"settings.forms.otp_generation.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.closeOtpOnCopy,"onUpdate:modelValue":[e[32]||(e[32]=a=>t(i).preferences.closeOtpOnCopy=a),e[33]||(e[33]=a=>l("closeOtpOnCopy",a))],fieldName:"closeOtpOnCopy",label:"settings.forms.close_otp_on_copy.label",help:"settings.forms.close_otp_on_copy.help",isDisabled:!t(i).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),r(s,{modelValue:t(i).preferences.autoCloseTimeout,"onUpdate:modelValue":[e[34]||(e[34]=a=>t(i).preferences.autoCloseTimeout=a),e[35]||(e[35]=a=>l("autoCloseTimeout",a))],options:C,fieldName:"autoCloseTimeout",label:"settings.forms.auto_close_timeout.label",help:"settings.forms.auto_close_timeout.help",isDisabled:!t(i).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),r(o,{modelValue:t(i).preferences.copyOtpOnDisplay,"onUpdate:modelValue":[e[36]||(e[36]=a=>t(i).preferences.copyOtpOnDisplay=a),e[37]||(e[37]=a=>l("copyOtpOnDisplay",a))],fieldName:"copyOtpOnDisplay",label:"settings.forms.copy_otp_on_display.label",help:"settings.forms.copy_otp_on_display.help",isDisabled:!t(i).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),r(o,{modelValue:t(i).preferences.showOtpAsDot,"onUpdate:modelValue":[e[38]||(e[38]=a=>t(i).preferences.showOtpAsDot=a),e[39]||(e[39]=a=>l("showOtpAsDot",a))],fieldName:"showOtpAsDot",label:"settings.forms.show_otp_as_dot.label",help:"settings.forms.show_otp_as_dot.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.revealDottedOTP,"onUpdate:modelValue":[e[40]||(e[40]=a=>t(i).preferences.revealDottedOTP=a),e[41]||(e[41]=a=>l("revealDottedOTP",a))],fieldName:"revealDottedOTP",label:"settings.forms.reveal_dotted_otp.label",help:"settings.forms.reveal_dotted_otp.help",isDisabled:!t(i).preferences.showOtpAsDot,isIndented:!0},null,8,["modelValue","isDisabled"]),n("h4",ae,A(u.$t("settings.notifications")),1),r(o,{modelValue:t(i).preferences.notifyOnNewAuthDevice,"onUpdate:modelValue":[e[42]||(e[42]=a=>t(i).preferences.notifyOnNewAuthDevice=a),e[43]||(e[43]=a=>l("notifyOnNewAuthDevice",a))],fieldName:"notifyOnNewAuthDevice",label:"settings.forms.notify_on_new_auth_device.label",help:"settings.forms.notify_on_new_auth_device.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.notifyOnFailedLogin,"onUpdate:modelValue":[e[44]||(e[44]=a=>t(i).preferences.notifyOnFailedLogin=a),e[45]||(e[45]=a=>l("notifyOnFailedLogin",a))],fieldName:"notifyOnFailedLogin",label:"settings.forms.notify_on_failed_login.label",help:"settings.forms.notify_on_failed_login.help"},null,8,["modelValue"]),n("h4",te,A(u.$t("settings.data_input")),1),r(o,{modelValue:t(i).preferences.AutoSaveQrcodedAccount,"onUpdate:modelValue":[e[46]||(e[46]=a=>t(i).preferences.AutoSaveQrcodedAccount=a),e[47]||(e[47]=a=>l("AutoSaveQrcodedAccount",a))],fieldName:"AutoSaveQrcodedAccount",label:"settings.forms.auto_save_qrcoded_account.label",help:"settings.forms.auto_save_qrcoded_account.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.useBasicQrcodeReader,"onUpdate:modelValue":[e[48]||(e[48]=a=>t(i).preferences.useBasicQrcodeReader=a),e[49]||(e[49]=a=>l("useBasicQrcodeReader",a))],fieldName:"useBasicQrcodeReader",label:"settings.forms.use_basic_qrcode_reader.label",help:"settings.forms.use_basic_qrcode_reader.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.useDirectCapture,"onUpdate:modelValue":[e[50]||(e[50]=a=>t(i).preferences.useDirectCapture=a),e[51]||(e[51]=a=>l("useDirectCapture",a))],fieldName:"useDirectCapture",label:"settings.forms.useDirectCapture.label",help:"settings.forms.useDirectCapture.help"},null,8,["modelValue"]),r(s,{modelValue:t(i).preferences.defaultCaptureMode,"onUpdate:modelValue":[e[52]||(e[52]=a=>t(i).preferences.defaultCaptureMode=a),e[53]||(e[53]=a=>l("defaultCaptureMode",a))],options:E,fieldName:"defaultCaptureMode",label:"settings.forms.defaultCaptureMode.label",help:"settings.forms.defaultCaptureMode.help",isDisabled:!t(i).preferences.useDirectCapture,isIndented:!0},null,8,["modelValue","isDisabled"])])])]),_:1})]),r(w,{showButtons:!0},{default:p(()=>[r(N,{returnTo:{name:t(h)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{ue as default}; +import{_ as I}from"./SettingTabs-DdogXjnE.js";import{L as D,a as T,V as U,b as d,a2 as O,r as K,x as L,o as G,a1 as R,e as c,f as j,g as z,m as r,h as n,p,t as A,i as t,j as f,I as F,H,a3 as q}from"./app-CuhK3jij.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */let J=[{text:"Africa/Abidjan",value:"Africa/Abidjan"},{text:"Africa/Accra",value:"Africa/Accra"},{text:"Africa/Addis_Ababa",value:"Africa/Addis_Ababa"},{text:"Africa/Algiers",value:"Africa/Algiers"},{text:"Africa/Asmara",value:"Africa/Asmara"},{text:"Africa/Asmera",value:"Africa/Asmera"},{text:"Africa/Bamako",value:"Africa/Bamako"},{text:"Africa/Bangui",value:"Africa/Bangui"},{text:"Africa/Banjul",value:"Africa/Banjul"},{text:"Africa/Bissau",value:"Africa/Bissau"},{text:"Africa/Blantyre",value:"Africa/Blantyre"},{text:"Africa/Brazzaville",value:"Africa/Brazzaville"},{text:"Africa/Bujumbura",value:"Africa/Bujumbura"},{text:"Africa/Cairo",value:"Africa/Cairo"},{text:"Africa/Casablanca",value:"Africa/Casablanca"},{text:"Africa/Ceuta",value:"Africa/Ceuta"},{text:"Africa/Conakry",value:"Africa/Conakry"},{text:"Africa/Dakar",value:"Africa/Dakar"},{text:"Africa/Dar_es_Salaam",value:"Africa/Dar_es_Salaam"},{text:"Africa/Djibouti",value:"Africa/Djibouti"},{text:"Africa/Douala",value:"Africa/Douala"},{text:"Africa/El_Aaiun",value:"Africa/El_Aaiun"},{text:"Africa/Freetown",value:"Africa/Freetown"},{text:"Africa/Gaborone",value:"Africa/Gaborone"},{text:"Africa/Harare",value:"Africa/Harare"},{text:"Africa/Johannesburg",value:"Africa/Johannesburg"},{text:"Africa/Juba",value:"Africa/Juba"},{text:"Africa/Kampala",value:"Africa/Kampala"},{text:"Africa/Khartoum",value:"Africa/Khartoum"},{text:"Africa/Kigali",value:"Africa/Kigali"},{text:"Africa/Kinshasa",value:"Africa/Kinshasa"},{text:"Africa/Lagos",value:"Africa/Lagos"},{text:"Africa/Libreville",value:"Africa/Libreville"},{text:"Africa/Lome",value:"Africa/Lome"},{text:"Africa/Luanda",value:"Africa/Luanda"},{text:"Africa/Lubumbashi",value:"Africa/Lubumbashi"},{text:"Africa/Lusaka",value:"Africa/Lusaka"},{text:"Africa/Malabo",value:"Africa/Malabo"},{text:"Africa/Maputo",value:"Africa/Maputo"},{text:"Africa/Maseru",value:"Africa/Maseru"},{text:"Africa/Mbabane",value:"Africa/Mbabane"},{text:"Africa/Mogadishu",value:"Africa/Mogadishu"},{text:"Africa/Monrovia",value:"Africa/Monrovia"},{text:"Africa/Nairobi",value:"Africa/Nairobi"},{text:"Africa/Ndjamena",value:"Africa/Ndjamena"},{text:"Africa/Niamey",value:"Africa/Niamey"},{text:"Africa/Nouakchott",value:"Africa/Nouakchott"},{text:"Africa/Ouagadougou",value:"Africa/Ouagadougou"},{text:"Africa/Porto-Novo",value:"Africa/Porto-Novo"},{text:"Africa/Sao_Tome",value:"Africa/Sao_Tome"},{text:"Africa/Timbuktu",value:"Africa/Timbuktu"},{text:"Africa/Tripoli",value:"Africa/Tripoli"},{text:"Africa/Tunis",value:"Africa/Tunis"},{text:"Africa/Windhoek",value:"Africa/Windhoek"},{text:"America/Adak",value:"America/Adak"},{text:"America/Anchorage",value:"America/Anchorage"},{text:"America/Anguilla",value:"America/Anguilla"},{text:"America/Antigua",value:"America/Antigua"},{text:"America/Araguaina",value:"America/Araguaina"},{text:"America/Argentina/Buenos_Aires",value:"America/Argentina/Buenos_Aires"},{text:"America/Argentina/Catamarca",value:"America/Argentina/Catamarca"},{text:"America/Argentina/ComodRivadavia",value:"America/Argentina/ComodRivadavia"},{text:"America/Argentina/Cordoba",value:"America/Argentina/Cordoba"},{text:"America/Argentina/Jujuy",value:"America/Argentina/Jujuy"},{text:"America/Argentina/La_Rioja",value:"America/Argentina/La_Rioja"},{text:"America/Argentina/Mendoza",value:"America/Argentina/Mendoza"},{text:"America/Argentina/Rio_Gallegos",value:"America/Argentina/Rio_Gallegos"},{text:"America/Argentina/Salta",value:"America/Argentina/Salta"},{text:"America/Argentina/San_Juan",value:"America/Argentina/San_Juan"},{text:"America/Argentina/San_Luis",value:"America/Argentina/San_Luis"},{text:"America/Argentina/Tucuman",value:"America/Argentina/Tucuman"},{text:"America/Argentina/Ushuaia",value:"America/Argentina/Ushuaia"},{text:"America/Aruba",value:"America/Aruba"},{text:"America/Asuncion",value:"America/Asuncion"},{text:"America/Atikokan",value:"America/Atikokan"},{text:"America/Atka",value:"America/Atka"},{text:"America/Bahia",value:"America/Bahia"},{text:"America/Bahia_Banderas",value:"America/Bahia_Banderas"},{text:"America/Barbados",value:"America/Barbados"},{text:"America/Belem",value:"America/Belem"},{text:"America/Belize",value:"America/Belize"},{text:"America/Blanc-Sablon",value:"America/Blanc-Sablon"},{text:"America/Boa_Vista",value:"America/Boa_Vista"},{text:"America/Bogota",value:"America/Bogota"},{text:"America/Boise",value:"America/Boise"},{text:"America/Buenos_Aires",value:"America/Buenos_Aires"},{text:"America/Cambridge_Bay",value:"America/Cambridge_Bay"},{text:"America/Campo_Grande",value:"America/Campo_Grande"},{text:"America/Cancun",value:"America/Cancun"},{text:"America/Caracas",value:"America/Caracas"},{text:"America/Catamarca",value:"America/Catamarca"},{text:"America/Cayenne",value:"America/Cayenne"},{text:"America/Cayman",value:"America/Cayman"},{text:"America/Chicago",value:"America/Chicago"},{text:"America/Chihuahua",value:"America/Chihuahua"},{text:"America/Ciudad_Juarez",value:"America/Ciudad_Juarez"},{text:"America/Coral_Harbour",value:"America/Coral_Harbour"},{text:"America/Cordoba",value:"America/Cordoba"},{text:"America/Costa_Rica",value:"America/Costa_Rica"},{text:"America/Creston",value:"America/Creston"},{text:"America/Cuiaba",value:"America/Cuiaba"},{text:"America/Curacao",value:"America/Curacao"},{text:"America/Danmarkshavn",value:"America/Danmarkshavn"},{text:"America/Dawson",value:"America/Dawson"},{text:"America/Dawson_Creek",value:"America/Dawson_Creek"},{text:"America/Denver",value:"America/Denver"},{text:"America/Detroit",value:"America/Detroit"},{text:"America/Dominica",value:"America/Dominica"},{text:"America/Edmonton",value:"America/Edmonton"},{text:"America/Eirunepe",value:"America/Eirunepe"},{text:"America/El_Salvador",value:"America/El_Salvador"},{text:"America/Ensenada",value:"America/Ensenada"},{text:"America/Fort_Nelson",value:"America/Fort_Nelson"},{text:"America/Fort_Wayne",value:"America/Fort_Wayne"},{text:"America/Fortaleza",value:"America/Fortaleza"},{text:"America/Glace_Bay",value:"America/Glace_Bay"},{text:"America/Godthab",value:"America/Godthab"},{text:"America/Goose_Bay",value:"America/Goose_Bay"},{text:"America/Grand_Turk",value:"America/Grand_Turk"},{text:"America/Grenada",value:"America/Grenada"},{text:"America/Guadeloupe",value:"America/Guadeloupe"},{text:"America/Guatemala",value:"America/Guatemala"},{text:"America/Guayaquil",value:"America/Guayaquil"},{text:"America/Guyana",value:"America/Guyana"},{text:"America/Halifax",value:"America/Halifax"},{text:"America/Havana",value:"America/Havana"},{text:"America/Hermosillo",value:"America/Hermosillo"},{text:"America/Indiana/Indianapolis",value:"America/Indiana/Indianapolis"},{text:"America/Indiana/Knox",value:"America/Indiana/Knox"},{text:"America/Indiana/Marengo",value:"America/Indiana/Marengo"},{text:"America/Indiana/Petersburg",value:"America/Indiana/Petersburg"},{text:"America/Indiana/Tell_City",value:"America/Indiana/Tell_City"},{text:"America/Indiana/Vevay",value:"America/Indiana/Vevay"},{text:"America/Indiana/Vincennes",value:"America/Indiana/Vincennes"},{text:"America/Indiana/Winamac",value:"America/Indiana/Winamac"},{text:"America/Indianapolis",value:"America/Indianapolis"},{text:"America/Inuvik",value:"America/Inuvik"},{text:"America/Iqaluit",value:"America/Iqaluit"},{text:"America/Jamaica",value:"America/Jamaica"},{text:"America/Jujuy",value:"America/Jujuy"},{text:"America/Juneau",value:"America/Juneau"},{text:"America/Kentucky/Louisville",value:"America/Kentucky/Louisville"},{text:"America/Kentucky/Monticello",value:"America/Kentucky/Monticello"},{text:"America/Knox_IN",value:"America/Knox_IN"},{text:"America/Kralendijk",value:"America/Kralendijk"},{text:"America/La_Paz",value:"America/La_Paz"},{text:"America/Lima",value:"America/Lima"},{text:"America/Los_Angeles",value:"America/Los_Angeles"},{text:"America/Louisville",value:"America/Louisville"},{text:"America/Lower_Princes",value:"America/Lower_Princes"},{text:"America/Maceio",value:"America/Maceio"},{text:"America/Managua",value:"America/Managua"},{text:"America/Manaus",value:"America/Manaus"},{text:"America/Marigot",value:"America/Marigot"},{text:"America/Martinique",value:"America/Martinique"},{text:"America/Matamoros",value:"America/Matamoros"},{text:"America/Mazatlan",value:"America/Mazatlan"},{text:"America/Mendoza",value:"America/Mendoza"},{text:"America/Menominee",value:"America/Menominee"},{text:"America/Merida",value:"America/Merida"},{text:"America/Metlakatla",value:"America/Metlakatla"},{text:"America/Mexico_City",value:"America/Mexico_City"},{text:"America/Miquelon",value:"America/Miquelon"},{text:"America/Moncton",value:"America/Moncton"},{text:"America/Monterrey",value:"America/Monterrey"},{text:"America/Montevideo",value:"America/Montevideo"},{text:"America/Montreal",value:"America/Montreal"},{text:"America/Montserrat",value:"America/Montserrat"},{text:"America/Nassau",value:"America/Nassau"},{text:"America/New_York",value:"America/New_York"},{text:"America/Nipigon",value:"America/Nipigon"},{text:"America/Nome",value:"America/Nome"},{text:"America/Noronha",value:"America/Noronha"},{text:"America/North_Dakota/Beulah",value:"America/North_Dakota/Beulah"},{text:"America/North_Dakota/Center",value:"America/North_Dakota/Center"},{text:"America/North_Dakota/New_Salem",value:"America/North_Dakota/New_Salem"},{text:"America/Nuuk",value:"America/Nuuk"},{text:"America/Ojinaga",value:"America/Ojinaga"},{text:"America/Panama",value:"America/Panama"},{text:"America/Pangnirtung",value:"America/Pangnirtung"},{text:"America/Paramaribo",value:"America/Paramaribo"},{text:"America/Phoenix",value:"America/Phoenix"},{text:"America/Port-au-Prince",value:"America/Port-au-Prince"},{text:"America/Port_of_Spain",value:"America/Port_of_Spain"},{text:"America/Porto_Acre",value:"America/Porto_Acre"},{text:"America/Porto_Velho",value:"America/Porto_Velho"},{text:"America/Puerto_Rico",value:"America/Puerto_Rico"},{text:"America/Punta_Arenas",value:"America/Punta_Arenas"},{text:"America/Rainy_River",value:"America/Rainy_River"},{text:"America/Rankin_Inlet",value:"America/Rankin_Inlet"},{text:"America/Recife",value:"America/Recife"},{text:"America/Regina",value:"America/Regina"},{text:"America/Resolute",value:"America/Resolute"},{text:"America/Rio_Branco",value:"America/Rio_Branco"},{text:"America/Rosario",value:"America/Rosario"},{text:"America/Santa_Isabel",value:"America/Santa_Isabel"},{text:"America/Santarem",value:"America/Santarem"},{text:"America/Santiago",value:"America/Santiago"},{text:"America/Santo_Domingo",value:"America/Santo_Domingo"},{text:"America/Sao_Paulo",value:"America/Sao_Paulo"},{text:"America/Scoresbysund",value:"America/Scoresbysund"},{text:"America/Shiprock",value:"America/Shiprock"},{text:"America/Sitka",value:"America/Sitka"},{text:"America/St_Barthelemy",value:"America/St_Barthelemy"},{text:"America/St_Johns",value:"America/St_Johns"},{text:"America/St_Kitts",value:"America/St_Kitts"},{text:"America/St_Lucia",value:"America/St_Lucia"},{text:"America/St_Thomas",value:"America/St_Thomas"},{text:"America/St_Vincent",value:"America/St_Vincent"},{text:"America/Swift_Current",value:"America/Swift_Current"},{text:"America/Tegucigalpa",value:"America/Tegucigalpa"},{text:"America/Thule",value:"America/Thule"},{text:"America/Thunder_Bay",value:"America/Thunder_Bay"},{text:"America/Tijuana",value:"America/Tijuana"},{text:"America/Toronto",value:"America/Toronto"},{text:"America/Tortola",value:"America/Tortola"},{text:"America/Vancouver",value:"America/Vancouver"},{text:"America/Virgin",value:"America/Virgin"},{text:"America/Whitehorse",value:"America/Whitehorse"},{text:"America/Winnipeg",value:"America/Winnipeg"},{text:"America/Yakutat",value:"America/Yakutat"},{text:"America/Yellowknife",value:"America/Yellowknife"},{text:"Antarctica/Casey",value:"Antarctica/Casey"},{text:"Antarctica/Davis",value:"Antarctica/Davis"},{text:"Antarctica/DumontDUrville",value:"Antarctica/DumontDUrville"},{text:"Antarctica/Macquarie",value:"Antarctica/Macquarie"},{text:"Antarctica/Mawson",value:"Antarctica/Mawson"},{text:"Antarctica/McMurdo",value:"Antarctica/McMurdo"},{text:"Antarctica/Palmer",value:"Antarctica/Palmer"},{text:"Antarctica/Rothera",value:"Antarctica/Rothera"},{text:"Antarctica/South_Pole",value:"Antarctica/South_Pole"},{text:"Antarctica/Syowa",value:"Antarctica/Syowa"},{text:"Antarctica/Troll",value:"Antarctica/Troll"},{text:"Antarctica/Vostok",value:"Antarctica/Vostok"},{text:"Arctic/Longyearbyen",value:"Arctic/Longyearbyen"},{text:"Asia/Aden",value:"Asia/Aden"},{text:"Asia/Almaty",value:"Asia/Almaty"},{text:"Asia/Amman",value:"Asia/Amman"},{text:"Asia/Anadyr",value:"Asia/Anadyr"},{text:"Asia/Aqtau",value:"Asia/Aqtau"},{text:"Asia/Aqtobe",value:"Asia/Aqtobe"},{text:"Asia/Ashgabat",value:"Asia/Ashgabat"},{text:"Asia/Ashkhabad",value:"Asia/Ashkhabad"},{text:"Asia/Atyrau",value:"Asia/Atyrau"},{text:"Asia/Baghdad",value:"Asia/Baghdad"},{text:"Asia/Bahrain",value:"Asia/Bahrain"},{text:"Asia/Baku",value:"Asia/Baku"},{text:"Asia/Bangkok",value:"Asia/Bangkok"},{text:"Asia/Barnaul",value:"Asia/Barnaul"},{text:"Asia/Beirut",value:"Asia/Beirut"},{text:"Asia/Bishkek",value:"Asia/Bishkek"},{text:"Asia/Brunei",value:"Asia/Brunei"},{text:"Asia/Calcutta",value:"Asia/Calcutta"},{text:"Asia/Chita",value:"Asia/Chita"},{text:"Asia/Choibalsan",value:"Asia/Choibalsan"},{text:"Asia/Chongqing",value:"Asia/Chongqing"},{text:"Asia/Chungking",value:"Asia/Chungking"},{text:"Asia/Colombo",value:"Asia/Colombo"},{text:"Asia/Dacca",value:"Asia/Dacca"},{text:"Asia/Damascus",value:"Asia/Damascus"},{text:"Asia/Dhaka",value:"Asia/Dhaka"},{text:"Asia/Dili",value:"Asia/Dili"},{text:"Asia/Dubai",value:"Asia/Dubai"},{text:"Asia/Dushanbe",value:"Asia/Dushanbe"},{text:"Asia/Famagusta",value:"Asia/Famagusta"},{text:"Asia/Gaza",value:"Asia/Gaza"},{text:"Asia/Harbin",value:"Asia/Harbin"},{text:"Asia/Hebron",value:"Asia/Hebron"},{text:"Asia/Ho_Chi_Minh",value:"Asia/Ho_Chi_Minh"},{text:"Asia/Hong_Kong",value:"Asia/Hong_Kong"},{text:"Asia/Hovd",value:"Asia/Hovd"},{text:"Asia/Irkutsk",value:"Asia/Irkutsk"},{text:"Asia/Istanbul",value:"Asia/Istanbul"},{text:"Asia/Jakarta",value:"Asia/Jakarta"},{text:"Asia/Jayapura",value:"Asia/Jayapura"},{text:"Asia/Jerusalem",value:"Asia/Jerusalem"},{text:"Asia/Kabul",value:"Asia/Kabul"},{text:"Asia/Kamchatka",value:"Asia/Kamchatka"},{text:"Asia/Karachi",value:"Asia/Karachi"},{text:"Asia/Kashgar",value:"Asia/Kashgar"},{text:"Asia/Kathmandu",value:"Asia/Kathmandu"},{text:"Asia/Katmandu",value:"Asia/Katmandu"},{text:"Asia/Khandyga",value:"Asia/Khandyga"},{text:"Asia/Kolkata",value:"Asia/Kolkata"},{text:"Asia/Krasnoyarsk",value:"Asia/Krasnoyarsk"},{text:"Asia/Kuala_Lumpur",value:"Asia/Kuala_Lumpur"},{text:"Asia/Kuching",value:"Asia/Kuching"},{text:"Asia/Kuwait",value:"Asia/Kuwait"},{text:"Asia/Macao",value:"Asia/Macao"},{text:"Asia/Macau",value:"Asia/Macau"},{text:"Asia/Magadan",value:"Asia/Magadan"},{text:"Asia/Makassar",value:"Asia/Makassar"},{text:"Asia/Manila",value:"Asia/Manila"},{text:"Asia/Muscat",value:"Asia/Muscat"},{text:"Asia/Nicosia",value:"Asia/Nicosia"},{text:"Asia/Novokuznetsk",value:"Asia/Novokuznetsk"},{text:"Asia/Novosibirsk",value:"Asia/Novosibirsk"},{text:"Asia/Omsk",value:"Asia/Omsk"},{text:"Asia/Oral",value:"Asia/Oral"},{text:"Asia/Phnom_Penh",value:"Asia/Phnom_Penh"},{text:"Asia/Pontianak",value:"Asia/Pontianak"},{text:"Asia/Pyongyang",value:"Asia/Pyongyang"},{text:"Asia/Qatar",value:"Asia/Qatar"},{text:"Asia/Qostanay",value:"Asia/Qostanay"},{text:"Asia/Qyzylorda",value:"Asia/Qyzylorda"},{text:"Asia/Rangoon",value:"Asia/Rangoon"},{text:"Asia/Riyadh",value:"Asia/Riyadh"},{text:"Asia/Saigon",value:"Asia/Saigon"},{text:"Asia/Sakhalin",value:"Asia/Sakhalin"},{text:"Asia/Samarkand",value:"Asia/Samarkand"},{text:"Asia/Seoul",value:"Asia/Seoul"},{text:"Asia/Shanghai",value:"Asia/Shanghai"},{text:"Asia/Singapore",value:"Asia/Singapore"},{text:"Asia/Srednekolymsk",value:"Asia/Srednekolymsk"},{text:"Asia/Taipei",value:"Asia/Taipei"},{text:"Asia/Tashkent",value:"Asia/Tashkent"},{text:"Asia/Tbilisi",value:"Asia/Tbilisi"},{text:"Asia/Tehran",value:"Asia/Tehran"},{text:"Asia/Tel_Aviv",value:"Asia/Tel_Aviv"},{text:"Asia/Thimbu",value:"Asia/Thimbu"},{text:"Asia/Thimphu",value:"Asia/Thimphu"},{text:"Asia/Tokyo",value:"Asia/Tokyo"},{text:"Asia/Tomsk",value:"Asia/Tomsk"},{text:"Asia/Ujung_Pandang",value:"Asia/Ujung_Pandang"},{text:"Asia/Ulaanbaatar",value:"Asia/Ulaanbaatar"},{text:"Asia/Ulan_Bator",value:"Asia/Ulan_Bator"},{text:"Asia/Urumqi",value:"Asia/Urumqi"},{text:"Asia/Ust-Nera",value:"Asia/Ust-Nera"},{text:"Asia/Vientiane",value:"Asia/Vientiane"},{text:"Asia/Vladivostok",value:"Asia/Vladivostok"},{text:"Asia/Yakutsk",value:"Asia/Yakutsk"},{text:"Asia/Yangon",value:"Asia/Yangon"},{text:"Asia/Yekaterinburg",value:"Asia/Yekaterinburg"},{text:"Asia/Yerevan",value:"Asia/Yerevan"},{text:"Atlantic/Azores",value:"Atlantic/Azores"},{text:"Atlantic/Bermuda",value:"Atlantic/Bermuda"},{text:"Atlantic/Canary",value:"Atlantic/Canary"},{text:"Atlantic/Cape_Verde",value:"Atlantic/Cape_Verde"},{text:"Atlantic/Faeroe",value:"Atlantic/Faeroe"},{text:"Atlantic/Faroe",value:"Atlantic/Faroe"},{text:"Atlantic/Jan_Mayen",value:"Atlantic/Jan_Mayen"},{text:"Atlantic/Madeira",value:"Atlantic/Madeira"},{text:"Atlantic/Reykjavik",value:"Atlantic/Reykjavik"},{text:"Atlantic/South_Georgia",value:"Atlantic/South_Georgia"},{text:"Atlantic/St_Helena",value:"Atlantic/St_Helena"},{text:"Atlantic/Stanley",value:"Atlantic/Stanley"},{text:"Australia/ACT",value:"Australia/ACT"},{text:"Australia/Adelaide",value:"Australia/Adelaide"},{text:"Australia/Brisbane",value:"Australia/Brisbane"},{text:"Australia/Broken_Hill",value:"Australia/Broken_Hill"},{text:"Australia/Canberra",value:"Australia/Canberra"},{text:"Australia/Currie",value:"Australia/Currie"},{text:"Australia/Darwin",value:"Australia/Darwin"},{text:"Australia/Eucla",value:"Australia/Eucla"},{text:"Australia/Hobart",value:"Australia/Hobart"},{text:"Australia/LHI",value:"Australia/LHI"},{text:"Australia/Lindeman",value:"Australia/Lindeman"},{text:"Australia/Lord_Howe",value:"Australia/Lord_Howe"},{text:"Australia/Melbourne",value:"Australia/Melbourne"},{text:"Australia/NSW",value:"Australia/NSW"},{text:"Australia/North",value:"Australia/North"},{text:"Australia/Perth",value:"Australia/Perth"},{text:"Australia/Queensland",value:"Australia/Queensland"},{text:"Australia/South",value:"Australia/South"},{text:"Australia/Sydney",value:"Australia/Sydney"},{text:"Australia/Tasmania",value:"Australia/Tasmania"},{text:"Australia/Victoria",value:"Australia/Victoria"},{text:"Australia/West",value:"Australia/West"},{text:"Australia/Yancowinna",value:"Australia/Yancowinna"},{text:"Brazil/Acre",value:"Brazil/Acre"},{text:"Brazil/DeNoronha",value:"Brazil/DeNoronha"},{text:"Brazil/East",value:"Brazil/East"},{text:"Brazil/West",value:"Brazil/West"},{text:"Canada/Atlantic",value:"Canada/Atlantic"},{text:"Canada/Central",value:"Canada/Central"},{text:"Canada/Eastern",value:"Canada/Eastern"},{text:"Canada/Mountain",value:"Canada/Mountain"},{text:"Canada/Newfoundland",value:"Canada/Newfoundland"},{text:"Canada/Pacific",value:"Canada/Pacific"},{text:"Canada/Saskatchewan",value:"Canada/Saskatchewan"},{text:"Canada/Yukon",value:"Canada/Yukon"},{text:"Chile/Continental",value:"Chile/Continental"},{text:"Chile/EasterIsland",value:"Chile/EasterIsland"},{text:"Cuba",value:"Cuba"},{text:"Egypt",value:"Egypt"},{text:"Eire",value:"Eire"},{text:"Europe/Amsterdam",value:"Europe/Amsterdam"},{text:"Europe/Andorra",value:"Europe/Andorra"},{text:"Europe/Astrakhan",value:"Europe/Astrakhan"},{text:"Europe/Athens",value:"Europe/Athens"},{text:"Europe/Belfast",value:"Europe/Belfast"},{text:"Europe/Belgrade",value:"Europe/Belgrade"},{text:"Europe/Berlin",value:"Europe/Berlin"},{text:"Europe/Bratislava",value:"Europe/Bratislava"},{text:"Europe/Brussels",value:"Europe/Brussels"},{text:"Europe/Bucharest",value:"Europe/Bucharest"},{text:"Europe/Budapest",value:"Europe/Budapest"},{text:"Europe/Busingen",value:"Europe/Busingen"},{text:"Europe/Chisinau",value:"Europe/Chisinau"},{text:"Europe/Copenhagen",value:"Europe/Copenhagen"},{text:"Europe/Dublin",value:"Europe/Dublin"},{text:"Europe/Gibraltar",value:"Europe/Gibraltar"},{text:"Europe/Guernsey",value:"Europe/Guernsey"},{text:"Europe/Helsinki",value:"Europe/Helsinki"},{text:"Europe/Isle_of_Man",value:"Europe/Isle_of_Man"},{text:"Europe/Istanbul",value:"Europe/Istanbul"},{text:"Europe/Jersey",value:"Europe/Jersey"},{text:"Europe/Kaliningrad",value:"Europe/Kaliningrad"},{text:"Europe/Kiev",value:"Europe/Kiev"},{text:"Europe/Kirov",value:"Europe/Kirov"},{text:"Europe/Kyiv",value:"Europe/Kyiv"},{text:"Europe/Lisbon",value:"Europe/Lisbon"},{text:"Europe/Ljubljana",value:"Europe/Ljubljana"},{text:"Europe/London",value:"Europe/London"},{text:"Europe/Luxembourg",value:"Europe/Luxembourg"},{text:"Europe/Madrid",value:"Europe/Madrid"},{text:"Europe/Malta",value:"Europe/Malta"},{text:"Europe/Mariehamn",value:"Europe/Mariehamn"},{text:"Europe/Minsk",value:"Europe/Minsk"},{text:"Europe/Monaco",value:"Europe/Monaco"},{text:"Europe/Moscow",value:"Europe/Moscow"},{text:"Europe/Nicosia",value:"Europe/Nicosia"},{text:"Europe/Oslo",value:"Europe/Oslo"},{text:"Europe/Paris",value:"Europe/Paris"},{text:"Europe/Podgorica",value:"Europe/Podgorica"},{text:"Europe/Prague",value:"Europe/Prague"},{text:"Europe/Riga",value:"Europe/Riga"},{text:"Europe/Rome",value:"Europe/Rome"},{text:"Europe/Samara",value:"Europe/Samara"},{text:"Europe/San_Marino",value:"Europe/San_Marino"},{text:"Europe/Sarajevo",value:"Europe/Sarajevo"},{text:"Europe/Saratov",value:"Europe/Saratov"},{text:"Europe/Simferopol",value:"Europe/Simferopol"},{text:"Europe/Skopje",value:"Europe/Skopje"},{text:"Europe/Sofia",value:"Europe/Sofia"},{text:"Europe/Stockholm",value:"Europe/Stockholm"},{text:"Europe/Tallinn",value:"Europe/Tallinn"},{text:"Europe/Tirane",value:"Europe/Tirane"},{text:"Europe/Tiraspol",value:"Europe/Tiraspol"},{text:"Europe/Ulyanovsk",value:"Europe/Ulyanovsk"},{text:"Europe/Uzhgorod",value:"Europe/Uzhgorod"},{text:"Europe/Vaduz",value:"Europe/Vaduz"},{text:"Europe/Vatican",value:"Europe/Vatican"},{text:"Europe/Vienna",value:"Europe/Vienna"},{text:"Europe/Vilnius",value:"Europe/Vilnius"},{text:"Europe/Volgograd",value:"Europe/Volgograd"},{text:"Europe/Warsaw",value:"Europe/Warsaw"},{text:"Europe/Zagreb",value:"Europe/Zagreb"},{text:"Europe/Zaporozhye",value:"Europe/Zaporozhye"},{text:"Europe/Zurich",value:"Europe/Zurich"},{text:"Hongkong",value:"Hongkong"},{text:"Iceland",value:"Iceland"},{text:"Indian/Antananarivo",value:"Indian/Antananarivo"},{text:"Indian/Chagos",value:"Indian/Chagos"},{text:"Indian/Christmas",value:"Indian/Christmas"},{text:"Indian/Cocos",value:"Indian/Cocos"},{text:"Indian/Comoro",value:"Indian/Comoro"},{text:"Indian/Kerguelen",value:"Indian/Kerguelen"},{text:"Indian/Mahe",value:"Indian/Mahe"},{text:"Indian/Maldives",value:"Indian/Maldives"},{text:"Indian/Mauritius",value:"Indian/Mauritius"},{text:"Indian/Mayotte",value:"Indian/Mayotte"},{text:"Indian/Reunion",value:"Indian/Reunion"},{text:"Iran",value:"Iran"},{text:"Israel",value:"Israel"},{text:"Jamaica",value:"Jamaica"},{text:"Japan",value:"Japan"},{text:"Kwajalein",value:"Kwajalein"},{text:"Libya",value:"Libya"},{text:"Mexico/BajaNorte",value:"Mexico/BajaNorte"},{text:"Mexico/BajaSur",value:"Mexico/BajaSur"},{text:"Mexico/General",value:"Mexico/General"},{text:"Navajo",value:"Navajo"},{text:"Pacific/Apia",value:"Pacific/Apia"},{text:"Pacific/Auckland",value:"Pacific/Auckland"},{text:"Pacific/Bougainville",value:"Pacific/Bougainville"},{text:"Pacific/Chatham",value:"Pacific/Chatham"},{text:"Pacific/Chuuk",value:"Pacific/Chuuk"},{text:"Pacific/Easter",value:"Pacific/Easter"},{text:"Pacific/Efate",value:"Pacific/Efate"},{text:"Pacific/Enderbury",value:"Pacific/Enderbury"},{text:"Pacific/Fakaofo",value:"Pacific/Fakaofo"},{text:"Pacific/Fiji",value:"Pacific/Fiji"},{text:"Pacific/Funafuti",value:"Pacific/Funafuti"},{text:"Pacific/Galapagos",value:"Pacific/Galapagos"},{text:"Pacific/Gambier",value:"Pacific/Gambier"},{text:"Pacific/Guadalcanal",value:"Pacific/Guadalcanal"},{text:"Pacific/Guam",value:"Pacific/Guam"},{text:"Pacific/Honolulu",value:"Pacific/Honolulu"},{text:"Pacific/Johnston",value:"Pacific/Johnston"},{text:"Pacific/Kanton",value:"Pacific/Kanton"},{text:"Pacific/Kiritimati",value:"Pacific/Kiritimati"},{text:"Pacific/Kosrae",value:"Pacific/Kosrae"},{text:"Pacific/Kwajalein",value:"Pacific/Kwajalein"},{text:"Pacific/Majuro",value:"Pacific/Majuro"},{text:"Pacific/Marquesas",value:"Pacific/Marquesas"},{text:"Pacific/Midway",value:"Pacific/Midway"},{text:"Pacific/Nauru",value:"Pacific/Nauru"},{text:"Pacific/Niue",value:"Pacific/Niue"},{text:"Pacific/Norfolk",value:"Pacific/Norfolk"},{text:"Pacific/Noumea",value:"Pacific/Noumea"},{text:"Pacific/Pago_Pago",value:"Pacific/Pago_Pago"},{text:"Pacific/Palau",value:"Pacific/Palau"},{text:"Pacific/Pitcairn",value:"Pacific/Pitcairn"},{text:"Pacific/Pohnpei",value:"Pacific/Pohnpei"},{text:"Pacific/Ponape",value:"Pacific/Ponape"},{text:"Pacific/Port_Moresby",value:"Pacific/Port_Moresby"},{text:"Pacific/Rarotonga",value:"Pacific/Rarotonga"},{text:"Pacific/Saipan",value:"Pacific/Saipan"},{text:"Pacific/Samoa",value:"Pacific/Samoa"},{text:"Pacific/Tahiti",value:"Pacific/Tahiti"},{text:"Pacific/Tarawa",value:"Pacific/Tarawa"},{text:"Pacific/Tongatapu",value:"Pacific/Tongatapu"},{text:"Pacific/Truk",value:"Pacific/Truk"},{text:"Pacific/Wake",value:"Pacific/Wake"},{text:"Pacific/Wallis",value:"Pacific/Wallis"},{text:"Pacific/Yap",value:"Pacific/Yap"},{text:"Poland",value:"Poland"},{text:"Portugal",value:"Portugal"},{text:"Singapore",value:"Singapore"},{text:"Turkey",value:"Turkey"},{text:"US/Alaska",value:"US/Alaska"},{text:"US/Aleutian",value:"US/Aleutian"},{text:"US/Arizona",value:"US/Arizona"},{text:"US/Central",value:"US/Central"},{text:"US/East-Indiana",value:"US/East-Indiana"},{text:"US/Eastern",value:"US/Eastern"},{text:"US/Hawaii",value:"US/Hawaii"},{text:"US/Indiana-Starke",value:"US/Indiana-Starke"},{text:"US/Michigan",value:"US/Michigan"},{text:"US/Mountain",value:"US/Mountain"},{text:"US/Pacific",value:"US/Pacific"},{text:"US/Samoa",value:"US/Samoa"},{text:"UTC",value:"UTC"},{text:"Zulu",value:"Zulu"}];const W={class:"options-tabs"},Y={class:"block"},Q={class:"title is-4 has-text-grey-light"},$={class:"field help"},Z={class:"ml-2",href:"https://crowdin.com/project/2fauth"},X={class:"title is-4 pt-4 has-text-grey-light"},ee={class:"title is-4 pt-4 has-text-grey-light"},ae={class:"title is-4 pt-4 has-text-grey-light"},te={class:"title is-4 pt-4 has-text-grey-light"},ue={__name:"Options",setup(ie){const v=D("2fauth"),i=T(),g=U(),_=d(),h=O(v.prefix+"returnTo","accounts"),b=[{text:"settings.forms.grid",value:"grid",icon:"th"},{text:"settings.forms.list",value:"list",icon:"list"}],k=[{text:"settings.forms.light",value:"light",icon:"sun"},{text:"settings.forms.dark",value:"dark",icon:"moon"},{text:"settings.forms.automatic",value:"system",icon:"desktop"}],y=[{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"}],P=[{text:"settings.forms.never",value:0},{text:"settings.forms.on_otp_copy",value:-1},{text:"settings.forms.1_minutes",value:1},{text:"settings.forms.5_minutes",value:5},{text:"settings.forms.10_minutes",value:10},{text:"settings.forms.15_minutes",value:15},{text:"settings.forms.30_minutes",value:30},{text:"settings.forms.1_hour",value:60},{text:"settings.forms.1_day",value:1440}],C=[{text:"settings.forms.never",value:0},{text:"settings.forms.1_minutes",value:1},{text:"settings.forms.2_minutes",value:2},{text:"settings.forms.5_minutes",value:5}],x=K([{text:"groups.no_group",value:0},{text:"groups.active_group",value:-1}]),E=[{text:"settings.forms.livescan",value:"livescan"},{text:"settings.forms.upload",value:"upload"},{text:"settings.forms.advanced_form",value:"advancedForm"}],S=[{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"}],M=L(()=>{let u=[{text:"languages.browser_preference",value:"browser"}];for(const e of v.langs)u.push({text:"languages."+e,value:e});return u});G(()=>{g.items.forEach(u=>{u.id>0&&x.value.push({text:u.name,value:u.id})}),i.refreshPreferences()});function l(u,e){F.updatePreference(u,e).then(s=>{d().success({type:"is-success",text:H("settings.forms.setting_saved")}),u==="lang"&&q()!==e?i.applyLanguage():u==="theme"&&i.applyTheme()})}return R(u=>{u.name.startsWith("settings.")||_.clear()}),(u,e)=>{const s=c("FormSelect"),B=c("FontAwesomeIcon"),m=c("FormToggle"),o=c("FormCheckbox"),V=c("FormWrapper"),N=c("ButtonBackCloseCancel"),w=c("VueFooter");return j(),z("div",null,[r(I,{activeTab:"settings.options"}),n("div",W,[r(V,null,{default:p(()=>[n("form",null,[n("div",Y,[n("h4",Q,A(u.$t("settings.general")),1),r(s,{modelValue:t(i).preferences.lang,"onUpdate:modelValue":[e[0]||(e[0]=a=>t(i).preferences.lang=a),e[1]||(e[1]=a=>l("lang",a))],options:t(M),fieldName:"lang",label:"settings.forms.language.label",help:"settings.forms.language.help"},null,8,["modelValue","options"]),n("div",$,[f(A(u.$t("settings.forms.some_translation_are_missing"))+" ",1),n("a",Z,[f(A(u.$t("settings.forms.help_translate_2fauth"))+" ",1),r(B,{icon:["fas","external-link-alt"]})])]),r(s,{modelValue:t(i).preferences.timezone,"onUpdate:modelValue":[e[2]||(e[2]=a=>t(i).preferences.timezone=a),e[3]||(e[3]=a=>l("timezone",a))],options:t(J),fieldName:"timezone",label:"settings.forms.timezone.label",help:"settings.forms.timezone.help"},null,8,["modelValue","options"]),r(m,{modelValue:t(i).preferences.displayMode,"onUpdate:modelValue":[e[4]||(e[4]=a=>t(i).preferences.displayMode=a),e[5]||(e[5]=a=>l("displayMode",a))],choices:b,fieldName:"displayMode",label:"settings.forms.display_mode.label",help:"settings.forms.display_mode.help"},null,8,["modelValue"]),r(m,{modelValue:t(i).preferences.theme,"onUpdate:modelValue":[e[6]||(e[6]=a=>t(i).preferences.theme=a),e[7]||(e[7]=a=>l("theme",a))],choices:k,fieldName:"theme",label:"settings.forms.theme.label",help:"settings.forms.theme.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.showAccountsIcons,"onUpdate:modelValue":[e[8]||(e[8]=a=>t(i).preferences.showAccountsIcons=a),e[9]||(e[9]=a=>l("showAccountsIcons",a))],fieldName:"showAccountsIcons",label:"settings.forms.show_accounts_icons.label",help:"settings.forms.show_accounts_icons.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.getOfficialIcons,"onUpdate:modelValue":[e[10]||(e[10]=a=>t(i).preferences.getOfficialIcons=a),e[11]||(e[11]=a=>l("getOfficialIcons",a))],fieldName:"getOfficialIcons",label:"settings.forms.get_official_icons.label",help:"settings.forms.get_official_icons.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.formatPassword,"onUpdate:modelValue":[e[12]||(e[12]=a=>t(i).preferences.formatPassword=a),e[13]||(e[13]=a=>l("formatPassword",a))],fieldName:"formatPassword",label:"settings.forms.password_format.label",help:"settings.forms.password_format.help"},null,8,["modelValue"]),r(m,{modelValue:t(i).preferences.formatPasswordBy,"onUpdate:modelValue":[e[14]||(e[14]=a=>t(i).preferences.formatPasswordBy=a),e[15]||(e[15]=a=>l("formatPasswordBy",a))],choices:y,fieldName:"formatPasswordBy",isDisabled:!t(i).preferences.formatPassword},null,8,["modelValue","isDisabled"]),r(o,{modelValue:t(i).preferences.clearSearchOnCopy,"onUpdate:modelValue":[e[16]||(e[16]=a=>t(i).preferences.clearSearchOnCopy=a),e[17]||(e[17]=a=>l("clearSearchOnCopy",a))],fieldName:"clearSearchOnCopy",label:"settings.forms.clear_search_on_copy.label",help:"settings.forms.clear_search_on_copy.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.sortCaseSensitive,"onUpdate:modelValue":[e[18]||(e[18]=a=>t(i).preferences.sortCaseSensitive=a),e[19]||(e[19]=a=>l("sortCaseSensitive",a))],fieldName:"sortCaseSensitive",label:"settings.forms.sort_case_sensitive.label",help:"settings.forms.sort_case_sensitive.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.showEmailInFooter,"onUpdate:modelValue":[e[20]||(e[20]=a=>t(i).preferences.showEmailInFooter=a),e[21]||(e[21]=a=>l("showEmailInFooter",a))],fieldName:"showEmailInFooter",label:"settings.forms.show_email_in_footer.label",help:"settings.forms.show_email_in_footer.help"},null,8,["modelValue"]),n("h4",X,A(u.$t("groups.groups")),1),r(s,{modelValue:t(i).preferences.defaultGroup,"onUpdate:modelValue":[e[22]||(e[22]=a=>t(i).preferences.defaultGroup=a),e[23]||(e[23]=a=>l("defaultGroup",a))],options:t(x),fieldName:"defaultGroup",label:"settings.forms.default_group.label",help:"settings.forms.default_group.help"},null,8,["modelValue","options"]),r(o,{modelValue:t(i).preferences.rememberActiveGroup,"onUpdate:modelValue":[e[24]||(e[24]=a=>t(i).preferences.rememberActiveGroup=a),e[25]||(e[25]=a=>l("rememberActiveGroup",a))],fieldName:"rememberActiveGroup",label:"settings.forms.remember_active_group.label",help:"settings.forms.remember_active_group.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.viewDefaultGroupOnCopy,"onUpdate:modelValue":[e[26]||(e[26]=a=>t(i).preferences.viewDefaultGroupOnCopy=a),e[27]||(e[27]=a=>l("viewDefaultGroupOnCopy",a))],fieldName:"viewDefaultGroupOnCopy",label:"settings.forms.view_default_group_on_copy.label",help:"settings.forms.view_default_group_on_copy.help"},null,8,["modelValue"]),n("h4",ee,A(u.$t("settings.security")),1),r(s,{modelValue:t(i).preferences.kickUserAfter,"onUpdate:modelValue":[e[28]||(e[28]=a=>t(i).preferences.kickUserAfter=a),e[29]||(e[29]=a=>l("kickUserAfter",a))],options:P,fieldName:"kickUserAfter",label:"settings.forms.auto_lock.label",help:"settings.forms.auto_lock.help"},null,8,["modelValue"]),r(m,{modelValue:t(i).preferences.getOtpOnRequest,"onUpdate:modelValue":[e[30]||(e[30]=a=>t(i).preferences.getOtpOnRequest=a),e[31]||(e[31]=a=>l("getOtpOnRequest",a))],choices:S,fieldName:"getOtpOnRequest",label:"settings.forms.otp_generation.label",help:"settings.forms.otp_generation.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.closeOtpOnCopy,"onUpdate:modelValue":[e[32]||(e[32]=a=>t(i).preferences.closeOtpOnCopy=a),e[33]||(e[33]=a=>l("closeOtpOnCopy",a))],fieldName:"closeOtpOnCopy",label:"settings.forms.close_otp_on_copy.label",help:"settings.forms.close_otp_on_copy.help",isDisabled:!t(i).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),r(s,{modelValue:t(i).preferences.autoCloseTimeout,"onUpdate:modelValue":[e[34]||(e[34]=a=>t(i).preferences.autoCloseTimeout=a),e[35]||(e[35]=a=>l("autoCloseTimeout",a))],options:C,fieldName:"autoCloseTimeout",label:"settings.forms.auto_close_timeout.label",help:"settings.forms.auto_close_timeout.help",isDisabled:!t(i).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),r(o,{modelValue:t(i).preferences.copyOtpOnDisplay,"onUpdate:modelValue":[e[36]||(e[36]=a=>t(i).preferences.copyOtpOnDisplay=a),e[37]||(e[37]=a=>l("copyOtpOnDisplay",a))],fieldName:"copyOtpOnDisplay",label:"settings.forms.copy_otp_on_display.label",help:"settings.forms.copy_otp_on_display.help",isDisabled:!t(i).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),r(o,{modelValue:t(i).preferences.showOtpAsDot,"onUpdate:modelValue":[e[38]||(e[38]=a=>t(i).preferences.showOtpAsDot=a),e[39]||(e[39]=a=>l("showOtpAsDot",a))],fieldName:"showOtpAsDot",label:"settings.forms.show_otp_as_dot.label",help:"settings.forms.show_otp_as_dot.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.revealDottedOTP,"onUpdate:modelValue":[e[40]||(e[40]=a=>t(i).preferences.revealDottedOTP=a),e[41]||(e[41]=a=>l("revealDottedOTP",a))],fieldName:"revealDottedOTP",label:"settings.forms.reveal_dotted_otp.label",help:"settings.forms.reveal_dotted_otp.help",isDisabled:!t(i).preferences.showOtpAsDot,isIndented:!0},null,8,["modelValue","isDisabled"]),n("h4",ae,A(u.$t("settings.notifications")),1),r(o,{modelValue:t(i).preferences.notifyOnNewAuthDevice,"onUpdate:modelValue":[e[42]||(e[42]=a=>t(i).preferences.notifyOnNewAuthDevice=a),e[43]||(e[43]=a=>l("notifyOnNewAuthDevice",a))],fieldName:"notifyOnNewAuthDevice",label:"settings.forms.notify_on_new_auth_device.label",help:"settings.forms.notify_on_new_auth_device.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.notifyOnFailedLogin,"onUpdate:modelValue":[e[44]||(e[44]=a=>t(i).preferences.notifyOnFailedLogin=a),e[45]||(e[45]=a=>l("notifyOnFailedLogin",a))],fieldName:"notifyOnFailedLogin",label:"settings.forms.notify_on_failed_login.label",help:"settings.forms.notify_on_failed_login.help"},null,8,["modelValue"]),n("h4",te,A(u.$t("settings.data_input")),1),r(o,{modelValue:t(i).preferences.AutoSaveQrcodedAccount,"onUpdate:modelValue":[e[46]||(e[46]=a=>t(i).preferences.AutoSaveQrcodedAccount=a),e[47]||(e[47]=a=>l("AutoSaveQrcodedAccount",a))],fieldName:"AutoSaveQrcodedAccount",label:"settings.forms.auto_save_qrcoded_account.label",help:"settings.forms.auto_save_qrcoded_account.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.useBasicQrcodeReader,"onUpdate:modelValue":[e[48]||(e[48]=a=>t(i).preferences.useBasicQrcodeReader=a),e[49]||(e[49]=a=>l("useBasicQrcodeReader",a))],fieldName:"useBasicQrcodeReader",label:"settings.forms.use_basic_qrcode_reader.label",help:"settings.forms.use_basic_qrcode_reader.help"},null,8,["modelValue"]),r(o,{modelValue:t(i).preferences.useDirectCapture,"onUpdate:modelValue":[e[50]||(e[50]=a=>t(i).preferences.useDirectCapture=a),e[51]||(e[51]=a=>l("useDirectCapture",a))],fieldName:"useDirectCapture",label:"settings.forms.useDirectCapture.label",help:"settings.forms.useDirectCapture.help"},null,8,["modelValue"]),r(s,{modelValue:t(i).preferences.defaultCaptureMode,"onUpdate:modelValue":[e[52]||(e[52]=a=>t(i).preferences.defaultCaptureMode=a),e[53]||(e[53]=a=>l("defaultCaptureMode",a))],options:E,fieldName:"defaultCaptureMode",label:"settings.forms.defaultCaptureMode.label",help:"settings.forms.defaultCaptureMode.help",isDisabled:!t(i).preferences.useDirectCapture,isIndented:!0},null,8,["modelValue","isDisabled"])])])]),_:1})]),r(w,{showButtons:!0},{default:p(()=>[r(N,{returnTo:{name:t(h)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{ue as default}; diff --git a/public/build/assets/OtpDisplay-D1Cg2JBE.js b/public/build/assets/OtpDisplay-D1Cg2JBE.js new file mode 100644 index 00000000..619d73c5 --- /dev/null +++ b/public/build/assets/OtpDisplay-D1Cg2JBE.js @@ -0,0 +1 @@ +import{r as a,x as N,o as W,v as ne,f as l,g as d,F as se,E as ae,i as s,n as P,a as re,b as ue,L as le,T as ie,$ as ce,s as pe,e as fe,h as x,l as M,m as z,p as ve,t as C,w as de,Z as me,U as ye,z as J,A as Q,k as E,C as _e,J as I,H as G,Q as Z}from"./app-CuhK3jij.js";import{S as ge}from"./Spinner-WULdfd4I.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const he={__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(T,{expose:b,emit:m}){const o=T,i=a(null),w=a(null),O=a(null),y=a(null),c=a(null),u=N(()=>i.value%o.period),r=N(()=>o.period-u.value),p=N(()=>o.period/o.step_count),k=N(()=>{let f=u.value*o.step_count/o.period;return Math.floor(f)+0}),e=m,_=(f=null)=>{g(),i.value=f??o.generated_at,e("loop-started",k.value),c.value=k.value,w.value=setTimeout(function(){g(),e("loop-ended")},r.value*1e3);let h=Math.ceil(u.value/p.value)*p.value-u.value;O.value=setTimeout(function(){h>0&&(c.value+=1,e("stepped-up",c.value)),y.value=setInterval(function(){c.value+=1,e("stepped-up",c.value)},p.value*1e3)},h*1e3)},g=()=>{clearTimeout(w.value),clearTimeout(O.value),clearInterval(y.value),c.value=i.value=null};return W(()=>{o.autostart==!0&&_()}),ne(()=>{g()}),b({startLoop:_,clearLooper:g,props:o}),(f,h)=>(l(),d("div"))}},we=["data-is-active"],Te={__name:"Dots",props:{stepCount:{type:Number,default:10},initialIndex:{type:Number,default:null},period:{type:Number,default:null}},setup(T,{expose:b}){const m=T,o=a(0),i=N(()=>o.value==-1);function w(y){o.value=y{isNaN(m.initialIndex)||w(m.initialIndex)}),b({turnOn:w,turnOff:O,props:m}),(y,c)=>(l(),d("ul",{class:P(["dots",{off:s(i)}])},[(l(!0),d(se,null,ae(T.stepCount,u=>(l(),d("li",{key:u,"data-is-active":u==s(o)?!0:null},null,8,we))),128))],2))}},Oe=["src","alt"],ke=["title"],Se={key:1,tabindex:"0",class:"otp is-size-1"},xe={key:0,class:"mt-3"},Ne={__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(T,{expose:b,emit:m}){const o=re(),i=ue(),w=le("2fauth"),{copy:O,copied:y}=ie({legacy:!0}),c=ce(),u=m,r=T,p=a(null),k=a(null),e=a({otp_type:"",account:"",service:"",icon:"",secret:"",digits:null,algorithm:"",period:null,counter:null,image:""}),_=a(""),g=a(null),f=a(!1),h=a(!1),S=a(!1),L=a(),B=a(),V=a(),F=a(null);pe(()=>r.icon,n=>{n!=null&&(e.value.icon=n)});const X=async n=>{if(S.value=!1,e.value.otp_type=r.otp_type,e.value.account=r.account,e.value.service=r.service,e.value.icon=r.icon,e.value.secret=r.secret,e.value.digits=r.digits,e.value.algorithm=r.algorithm,e.value.period=r.period,e.value.counter=r.counter,q(),n){p.value=n;const{data:t}=await I.get(p.value);e.value.service=t.service,e.value.account=t.account,e.value.icon=t.icon,e.value.otp_type=t.otp_type,D(t.otp_type)&&t.counter&&(e.value.counter=t.counter)}else r.uri?(k.value=r.uri,e.value.otp_type=r.uri.slice(0,15).toLowerCase()==="otpauth://totp/"?"totp":"hotp"):r.secret?!A(e.value.otp_type)&&!D(e.value.otp_type)&&i.error(new Error(G("errors.not_a_supported_otp_type"))):i.error(new Error(G("errors.cannot_create_otp_without_secret")));try{await H(),ee(),o.preferences.getOtpOnRequest&&parseInt(o.preferences.autoCloseTimeout)>0&&te()}catch{$()}};async function H(){q(),await Y().then(n=>{let t=n.data;_.value=t.password,o.preferences.copyOtpOnDisplay&&U(t.password),A(t.otp_type)?(g.value=t.generated_at,e.value.period=t.period,f.value=!0,Z().then(()=>{B.value.startLoop()})):D(t.otp_type)&&(e.value.counter=t.counter,u("increment-hotp",{nextHotpCounter:t.counter,nextUri:t.uri}))}).catch(n=>{n.response.status===422&&u("validation-error",n.response)}).finally(()=>{h.value=!1})}function q(){h.value=!0,L.value.turnOff()}function Y(){return p.value?I.getOtpById(p.value):k.value?I.getOtpByUri(k.value):I.getOtpByParams(e.value)}function K(){u("please-close-me"),S.value=!1,$()}function $(){var n;p.value=e.value.counter=g.value=null,e.value.service=e.value.account=e.value.icon=e.value.otp_type=e.value.secret="",_.value="... ...",f.value=!1,clearTimeout(F.value),(n=B.value)==null||n.clearLooper()}function ee(){Z().then(()=>{var n;(n=V.value)==null||n.focus()})}function U(n,t){O(n.replace(/ /g,"")),y&&(o.preferences.kickUserAfter==-1&&(t||!1)===!0&&c.name!="importAccounts"?o.logout({kicked:!0}):o.preferences.closeOtpOnCopy&&(t||!1)===!0&&K(),o.preferences.clearSearchOnCopy&&u("please-clear-search"),o.preferences.viewDefaultGroupOnCopy&&(o.preferences.activeGroup=o.preferences.defaultGroup==-1?o.preferences.activeGroup:o.preferences.defaultGroup),i.success({text:G("commons.copied_to_clipboard")}))}function A(n){return n==="totp"||n==="steamtotp"}function D(n){return n==="hotp"}function R(n){L.value.turnOn(n)}b({show:X,clearOTP:$});function te(){let n=parseInt(o.preferences.autoCloseTimeout);F.value=setTimeout(function(){K()},n*60*1e3)}return(n,t)=>{const j=fe("font-awesome-icon");return l(),d("div",null,[x("figure",{class:P(["image is-64x64",{"no-icon":!s(e).icon}]),style:{display:"inline-block"}},[s(e).icon?(l(),d("img",{key:0,src:s(w).config.subdirectory+"/storage/icons/"+s(e).icon,alt:n.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,Oe)):M("",!0)],2),z(s(ye),null,{default:ve(({mode:v})=>[x("p",{class:P(["is-size-4 has-ellipsis",v=="dark"?"has-text-grey-light":"has-text-grey"])},C(s(e).service),3),x("p",{class:P(["is-size-6 has-ellipsis",v=="dark"?"has-text-grey":"has-text-grey-light"])},C(s(e).account),3),x("p",null,[s(h)?(l(),d("span",Se,[z(ge,{isVisible:s(h),type:"raw"},null,8,["isVisible"])])):(l(),d("span",{key:0,id:"otp",role:"log",ref_key:"otpSpanTag",ref:V,tabindex:"0",class:P(["otp is-size-1 is-clickable px-3",v=="dark"?"has-text-white":"has-text-grey-dark"]),onClick:t[0]||(t[0]=oe=>U(s(_),!0)),onKeyup:t[1]||(t[1]=de(oe=>U(s(_),!0),["enter"])),title:n.$t("commons.copy_to_clipboard")},C(s(me)(s(_),s(o).preferences.showOtpAsDot&&s(o).preferences.revealDottedOTP&&s(S))),43,ke))])]),_:1}),J(z(Te,{ref_key:"dots",ref:L},null,512),[[Q,A(s(e).otp_type)]]),J(x("p",null,C(n.$t("twofaccounts.forms.counter.label"))+": "+C(s(e).counter),513),[[Q,D(s(e).otp_type)]]),s(o).preferences.showOtpAsDot&&s(o).preferences.revealDottedOTP?(l(),d("p",xe,[x("button",{class:"button is-ghost has-text-grey-dark",onClick:t[2]||(t[2]=_e(v=>S.value=!s(S),["stop"]))},[s(S)?(l(),E(j,{key:0,icon:["fas","eye"]})):(l(),E(j,{key:1,icon:["fas","eye-slash"]}))])])):M("",!0),s(f)?(l(),E(he,{key:1,period:s(e).period,generated_at:s(g),autostart:!1,onLoopEnded:t[3]||(t[3]=v=>H()),onLoopStarted:t[4]||(t[4]=v=>R(v)),onSteppedUp:t[5]||(t[5]=v=>R(v)),ref_key:"totpLooper",ref:B},null,8,["period","generated_at"])):M("",!0)])}}};export{Ne as _,he as a,Te as b}; diff --git a/public/build/assets/OtpDisplay-D2QMFFL_.js b/public/build/assets/OtpDisplay-D2QMFFL_.js deleted file mode 100644 index 23b51173..00000000 --- a/public/build/assets/OtpDisplay-D2QMFFL_.js +++ /dev/null @@ -1 +0,0 @@ -import{r as a,x as N,o as W,v as ne,m as l,d,F as se,E as ae,f as s,n as P,u as re,a as ue,S as le,s as ie,e as x,i as M,j as z,k as ce,t as C,w as pe,Y as fe,U as ve,z as J,A as Y,h as E,C as de,L as me,_ as ye,J as I,H as G,P as Q,l as _e}from"./app-D4Udf6Mm.js";import{S as ge}from"./Spinner-DHClvaFf.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const he={__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(O,{expose:b,emit:m}){const o=O,i=a(null),w=a(null),T=a(null),y=a(null),c=a(null),u=N(()=>i.value%o.period),r=N(()=>o.period-u.value),p=N(()=>o.period/o.step_count),k=N(()=>{let f=u.value*o.step_count/o.period;return Math.floor(f)+0}),e=m,_=(f=null)=>{g(),i.value=f??o.generated_at,e("loop-started",k.value),c.value=k.value,w.value=setTimeout(function(){g(),e("loop-ended")},r.value*1e3);let h=Math.ceil(u.value/p.value)*p.value-u.value;T.value=setTimeout(function(){h>0&&(c.value+=1,e("stepped-up",c.value)),y.value=setInterval(function(){c.value+=1,e("stepped-up",c.value)},p.value*1e3)},h*1e3)},g=()=>{clearTimeout(w.value),clearTimeout(T.value),clearInterval(y.value),c.value=i.value=null};return W(()=>{o.autostart==!0&&_()}),ne(()=>{g()}),b({startLoop:_,clearLooper:g,props:o}),(f,h)=>(l(),d("div"))}},we=["data-is-active"],Oe={__name:"Dots",props:{stepCount:{type:Number,default:10},initialIndex:{type:Number,default:null},period:{type:Number,default:null}},setup(O,{expose:b}){const m=O,o=a(0),i=N(()=>o.value==-1);function w(y){o.value=y{isNaN(m.initialIndex)||w(m.initialIndex)}),b({turnOn:w,turnOff:T,props:m}),(y,c)=>(l(),d("ul",{class:P(["dots",{off:s(i)}])},[(l(!0),d(se,null,ae(O.stepCount,u=>(l(),d("li",{key:u,"data-is-active":u==s(o)?!0:null},null,8,we))),128))],2))}},Te=["src","alt"],ke=["title"],Se={key:1,tabindex:"0",class:"otp is-size-1"},xe={key:0,class:"mt-3"},Ne={__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(O,{expose:b,emit:m}){const o=re(),i=ue(),w=me("2fauth"),{copy:T,copied:y}=le({legacy:!0}),c=ye(),u=m,r=O,p=a(null),k=a(null),e=a({otp_type:"",account:"",service:"",icon:"",secret:"",digits:null,algorithm:"",period:null,counter:null,image:""}),_=a(""),g=a(null),f=a(!1),h=a(!1),S=a(!1),L=a(),B=a(),V=a(),F=a(null);ie(()=>r.icon,n=>{n!=null&&(e.value.icon=n)});const X=async n=>{if(S.value=!1,e.value.otp_type=r.otp_type,e.value.account=r.account,e.value.service=r.service,e.value.icon=r.icon,e.value.secret=r.secret,e.value.digits=r.digits,e.value.algorithm=r.algorithm,e.value.period=r.period,e.value.counter=r.counter,j(),n){p.value=n;const{data:t}=await I.get(p.value);e.value.service=t.service,e.value.account=t.account,e.value.icon=t.icon,e.value.otp_type=t.otp_type,D(t.otp_type)&&t.counter&&(e.value.counter=t.counter)}else r.uri?(k.value=r.uri,e.value.otp_type=r.uri.slice(0,15).toLowerCase()==="otpauth://totp/"?"totp":"hotp"):r.secret?!A(e.value.otp_type)&&!D(e.value.otp_type)&&i.error(new Error(G("errors.not_a_supported_otp_type"))):i.error(new Error(G("errors.cannot_create_otp_without_secret")));try{await H(),ee(),o.preferences.getOtpOnRequest&&parseInt(o.preferences.autoCloseTimeout)>0&&te()}catch{$()}};async function H(){j(),await Z().then(n=>{let t=n.data;_.value=t.password,o.preferences.copyOtpOnDisplay&&U(t.password),A(t.otp_type)?(g.value=t.generated_at,e.value.period=t.period,f.value=!0,Q().then(()=>{B.value.startLoop()})):D(t.otp_type)&&(e.value.counter=t.counter,u("increment-hotp",{nextHotpCounter:t.counter,nextUri:t.uri}))}).catch(n=>{n.response.status===422&&u("validation-error",n.response)}).finally(()=>{h.value=!1})}function j(){h.value=!0,L.value.turnOff()}function Z(){return p.value?I.getOtpById(p.value):k.value?I.getOtpByUri(k.value):I.getOtpByParams(e.value)}function q(){u("please-close-me"),S.value=!1,$()}function $(){var n;p.value=e.value.counter=g.value=null,e.value.service=e.value.account=e.value.icon=e.value.otp_type=e.value.secret="",_.value="... ...",f.value=!1,clearTimeout(F.value),(n=B.value)==null||n.clearLooper()}function ee(){Q().then(()=>{var n;(n=V.value)==null||n.focus()})}function U(n,t){T(n.replace(/ /g,"")),y&&(o.preferences.kickUserAfter==-1&&(t||!1)===!0&&c.name!="importAccounts"?o.logout({kicked:!0}):o.preferences.closeOtpOnCopy&&(t||!1)===!0&&q(),o.preferences.clearSearchOnCopy&&u("please-clear-search"),o.preferences.viewDefaultGroupOnCopy&&(o.preferences.activeGroup=o.preferences.defaultGroup==-1?o.preferences.activeGroup:o.preferences.defaultGroup),i.success({text:G("commons.copied_to_clipboard")}))}function A(n){return n==="totp"||n==="steamtotp"}function D(n){return n==="hotp"}function K(n){L.value.turnOn(n)}b({show:X,clearOTP:$});function te(){let n=parseInt(o.preferences.autoCloseTimeout);F.value=setTimeout(function(){q()},n*60*1e3)}return(n,t)=>{const R=_e("font-awesome-icon");return l(),d("div",null,[x("figure",{class:P(["image is-64x64",{"no-icon":!s(e).icon}]),style:{display:"inline-block"}},[s(e).icon?(l(),d("img",{key:0,src:s(w).config.subdirectory+"/storage/icons/"+s(e).icon,alt:n.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,Te)):M("",!0)],2),z(s(ve),null,{default:ce(({mode:v})=>[x("p",{class:P(["is-size-4 has-ellipsis",v=="dark"?"has-text-grey-light":"has-text-grey"])},C(s(e).service),3),x("p",{class:P(["is-size-6 has-ellipsis",v=="dark"?"has-text-grey":"has-text-grey-light"])},C(s(e).account),3),x("p",null,[s(h)?(l(),d("span",Se,[z(ge,{isVisible:s(h),type:"raw"},null,8,["isVisible"])])):(l(),d("span",{key:0,id:"otp",role:"log",ref_key:"otpSpanTag",ref:V,tabindex:"0",class:P(["otp is-size-1 is-clickable px-3",v=="dark"?"has-text-white":"has-text-grey-dark"]),onClick:t[0]||(t[0]=oe=>U(s(_),!0)),onKeyup:t[1]||(t[1]=pe(oe=>U(s(_),!0),["enter"])),title:n.$t("commons.copy_to_clipboard")},C(s(fe)(s(_),s(o).preferences.showOtpAsDot&&s(o).preferences.revealDottedOTP&&s(S))),43,ke))])]),_:1}),J(z(Oe,{ref_key:"dots",ref:L},null,512),[[Y,A(s(e).otp_type)]]),J(x("p",null,C(n.$t("twofaccounts.forms.counter.label"))+": "+C(s(e).counter),513),[[Y,D(s(e).otp_type)]]),s(o).preferences.showOtpAsDot&&s(o).preferences.revealDottedOTP?(l(),d("p",xe,[x("button",{class:"button is-ghost has-text-grey-dark",onClick:t[2]||(t[2]=de(v=>S.value=!s(S),["stop"]))},[s(S)?(l(),E(R,{key:0,icon:["fas","eye"]})):(l(),E(R,{key:1,icon:["fas","eye-slash"]}))])])):M("",!0),s(f)?(l(),E(he,{key:1,period:s(e).period,generated_at:s(g),autostart:!1,onLoopEnded:t[3]||(t[3]=v=>H()),onLoopStarted:t[4]||(t[4]=v=>K(v)),onSteppedUp:t[5]||(t[5]=v=>K(v)),ref_key:"totpLooper",ref:B},null,8,["period","generated_at"])):M("",!0)])}}};export{Ne as _,he as a,Oe as b}; diff --git a/public/build/assets/QRcode-CqE9jHmd.js b/public/build/assets/QRcode-CqE9jHmd.js new file mode 100644 index 00000000..013293f4 --- /dev/null +++ b/public/build/assets/QRcode-CqE9jHmd.js @@ -0,0 +1 @@ +import{u as _,$ as m,r as p,a0 as f,J as h,e as c,f as n,g as r,h as a,i as t,l as B,m as s,p as g}from"./app-CuhK3jij.js";import{S as k}from"./Spinner-WULdfd4I.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 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/QRcode-CsChMItc.js b/public/build/assets/QRcode-CsChMItc.js deleted file mode 100644 index 7dbad686..00000000 --- a/public/build/assets/QRcode-CsChMItc.js +++ /dev/null @@ -1 +0,0 @@ -import{r as _,$ as m,J as p,d as c,e as a,f as t,i as f,j as s,k as h,_ as B,l as n,m as r,p as k}from"./app-D4Udf6Mm.js";import{S as g}from"./Spinner-DHClvaFf.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 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){k();const l=B(),e=_();m(()=>{i()});async function i(){const{data:o}=await p.getQrcode(l.params.twofaccountId);e.value=o.qrcode}return(o,R)=>{const d=n("ButtonBackCloseCancel"),u=n("VueFooter");return r(),c("div",v,[C,a("div",V,[a("p",w,[t(e)?(r(),c("img",{key:0,src:t(e),class:"has-background-light",alt:o.$t("commons.image_of_qrcode_to_scan")},null,8,b)):f("",!0),s(g,{isVisible:!t(e),type:"raw",class:"is-size-1"},null,8,["isVisible"])])]),s(u,{showButtons:!0,internalFooterType:"modal"},{default:h(()=>[s(d,{returnTo:{name:"accounts"},action:"close"})]),_:1})])}}};export{F as default}; diff --git a/public/build/assets/QrContentDisplay-C6rCu47Q.js b/public/build/assets/QrContentDisplay-CyBGNU2O.js similarity index 87% rename from public/build/assets/QrContentDisplay-C6rCu47Q.js rename to public/build/assets/QrContentDisplay-CyBGNU2O.js index bb074130..534d7d2f 100644 --- a/public/build/assets/QrContentDisplay-C6rCu47Q.js +++ b/public/build/assets/QrContentDisplay-CyBGNU2O.js @@ -1 +1 @@ -import{S as C,a as _,l as v,m as a,d as r,e as o,t as s,f,H as c,C as w,i as l,j as h,F as y}from"./app-D4Udf6Mm.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const g=o("div",{class:"too-bad"},null,-1),q={class:"block"},$={class:"block mb-6 light-or-darker"},E={key:0,class:"block has-text-link"},B={class:"button is-link is-outlined is-rounded"},F={class:"icon is-small"},N={__name:"QrContentDisplay",props:{qrContent:String},setup(e){const{copy:d}=C({legacy:!0}),u=_();function m(t){var n=/^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/,i=new RegExp(n);return i.test(t)}function b(t){const n=document.createElement("a");n.setAttribute("href",t),n.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))}function k(t){d(t),u.success({text:c("commons.copied_to_clipboard")})}return(t,n)=>{const i=v("FontAwesomeIcon");return a(),r(y,null,[g,o("div",q,s(t.$t("errors.data_of_qrcode_is_not_valid_URI")),1),o("div",$,s(e.qrContent?e.qrContent:"["+("trans"in t?t.trans:f(c))("commons.nothing")+"]"),1),e.qrContent?(a(),r("div",E,[o("button",{class:"button is-link is-outlined is-rounded",onClick:n[0]||(n[0]=w(p=>k(e.qrContent),["stop"]))},s(t.$t("commons.copy_to_clipboard")),1)])):l("",!0),m(e.qrContent)?(a(),r("div",{key:1,class:"block has-text-link",onClick:n[1]||(n[1]=p=>b(e.qrContent))},[o("button",B,[o("span",null,s(t.$t("commons.open_in_browser")),1),o("span",F,[h(i,{icon:["fas","external-link-alt"]})])])])):l("",!0)],64)}}};export{N as _}; +import{T as C,b as _,e as v,f as a,g as r,h as o,t as s,i as f,H as c,C as w,l,m as h,F as y}from"./app-CuhK3jij.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const g=o("div",{class:"too-bad"},null,-1),q={class:"block"},$={class:"block mb-6 light-or-darker"},E={key:0,class:"block has-text-link"},B={class:"button is-link is-outlined is-rounded"},F={class:"icon is-small"},N={__name:"QrContentDisplay",props:{qrContent:String},setup(e){const{copy:d}=C({legacy:!0}),u=_();function m(t){var n=/^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/,i=new RegExp(n);return i.test(t)}function b(t){const n=document.createElement("a");n.setAttribute("href",t),n.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))}function k(t){d(t),u.success({text:c("commons.copied_to_clipboard")})}return(t,n)=>{const i=v("FontAwesomeIcon");return a(),r(y,null,[g,o("div",q,s(t.$t("errors.data_of_qrcode_is_not_valid_URI")),1),o("div",$,s(e.qrContent?e.qrContent:"["+("trans"in t?t.trans:f(c))("commons.nothing")+"]"),1),e.qrContent?(a(),r("div",E,[o("button",{class:"button is-link is-outlined is-rounded",onClick:n[0]||(n[0]=w(p=>k(e.qrContent),["stop"]))},s(t.$t("commons.copy_to_clipboard")),1)])):l("",!0),m(e.qrContent)?(a(),r("div",{key:1,class:"block has-text-link",onClick:n[1]||(n[1]=p=>b(e.qrContent))},[o("button",B,[o("span",null,s(t.$t("commons.open_in_browser")),1),o("span",F,[h(i,{icon:["fas","external-link-alt"]})])])])):l("",!0)],64)}}};export{N as _}; diff --git a/public/build/assets/Recover-CMvlsTFQ.js b/public/build/assets/Recover-CcODwxy9.js similarity index 74% rename from public/build/assets/Recover-CMvlsTFQ.js rename to public/build/assets/Recover-CcODwxy9.js index 749d353c..de53153b 100644 --- a/public/build/assets/Recover-CMvlsTFQ.js +++ b/public/build/assets/Recover-CcODwxy9.js @@ -1 +1 @@ -import{a as V,a1 as B,c as g,a0 as R,h as $,k as d,L as C,_ as N,l as a,m as L,e as u,C as q,f as s,j as l,g as c,t as p,p as A,H as D}from"./app-D4Udf6Mm.js";import{F as S}from"./Form-BGrUTood.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const W={class:"field"},j={__name:"Recover",setup(x){const m=C("2fauth"),r=V(),f=A(),i=N(),h=B(m.prefix+"showWebauthnForm",!1),o=g(new S({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:D("auth.forms.authentication_failed"),duration:-1}):e.response.status===422?r.alert({text:e.response.data.message,duration:-1}):r.error(e)})}return R(()=>{r.clear()}),(t,e)=>{const w=a("FormCheckbox"),b=a("FormPasswordField"),v=a("RouterLink"),F=a("FormButtons"),k=a("VueFooter"),y=a("FormWrapper");return L(),$(y,{title:t.$t("auth.webauthn.account_recovery"),punchline:t.$t("auth.webauthn.recover_account_instructions")},{default:d(()=>[u("div",null,[u("form",{onSubmit:q(_,["prevent"]),onKeydown:e[2]||(e[2]=n=>s(o).onKeydown(n))},[l(w,{modelValue:s(o).revokeAll,"onUpdate:modelValue":e[0]||(e[0]=n=>s(o).revokeAll=n),fieldName:"revokeAll",label:"auth.webauthn.disable_all_security_devices",help:"auth.webauthn.disable_all_security_devices_help"},null,8,["modelValue"]),l(b,{modelValue:s(o).password,"onUpdate:modelValue":e[1]||(e[1]=n=>s(o).password=n),fieldName:"password",fieldError:s(o).errors.get("password"),autocomplete:"current-password",showRules:!1,label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),u("div",W,[u("p",null,[c(p(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(p(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"])],32)]),l(k)]),_:1},8,["title","punchline"])}}};export{j as default}; +import{L as V,b as B,u as R,$ as g,a2 as $,d as C,a1 as N,e as a,f as L,k as q,p as d,h as u,C as A,i as s,m as l,j as c,t as p,H as D}from"./app-CuhK3jij.js";import{F as S}from"./Form-o2lWAB-o.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const W={class:"field"},j={__name:"Recover",setup(x){const m=V("2fauth"),r=B(),f=R(),i=g(),h=$(m.prefix+"showWebauthnForm",!1),o=C(new S({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:D("auth.forms.authentication_failed"),duration:-1}):e.response.status===422?r.alert({text:e.response.data.message,duration:-1}):r.error(e)})}return N(()=>{r.clear()}),(t,e)=>{const w=a("FormCheckbox"),b=a("FormPasswordField"),v=a("RouterLink"),F=a("FormButtons"),k=a("VueFooter"),y=a("FormWrapper");return L(),q(y,{title:t.$t("auth.webauthn.account_recovery"),punchline:t.$t("auth.webauthn.recover_account_instructions")},{default:d(()=>[u("div",null,[u("form",{onSubmit:A(_,["prevent"]),onKeydown:e[2]||(e[2]=n=>s(o).onKeydown(n))},[l(w,{modelValue:s(o).revokeAll,"onUpdate:modelValue":e[0]||(e[0]=n=>s(o).revokeAll=n),fieldName:"revokeAll",label:"auth.webauthn.disable_all_security_devices",help:"auth.webauthn.disable_all_security_devices_help"},null,8,["modelValue"]),l(b,{modelValue:s(o).password,"onUpdate:modelValue":e[1]||(e[1]=n=>s(o).password=n),fieldName:"password",fieldError:s(o).errors.get("password"),autocomplete:"current-password",showRules:!1,label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),u("div",W,[u("p",null,[c(p(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(p(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"])],32)]),l(k)]),_:1},8,["title","punchline"])}}};export{j as default}; diff --git a/public/build/assets/Register-D9YDPq8h.js b/public/build/assets/Register-D9YDPq8h.js new file mode 100644 index 00000000..f73781c2 --- /dev/null +++ b/public/build/assets/Register-D9YDPq8h.js @@ -0,0 +1 @@ +import{a as L,b as T,u as K,r as F,d as k,a1 as U,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,C as B,H as I}from"./app-CuhK3jij.js";import{F as D}from"./Form-o2lWAB-o.js";import{w as W}from"./webauthnService-B01mQIOV.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const P={key:0,class:"field"},M={id:"lblDeviceRegistrationSuccess",class:"label mb-5"},j={key:1,class:"field is-grouped"},A={class:"control"},H={class:"control"},J={class:"nav-links"},G={__name:"Register",setup(O){const b=L(),m=T(),R=K(),w=F(!1),f=F(null),s=k(new D({name:"",email:"",password:"",password_confirmation:""})),r=k(new D({name:""}));async function N(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 E(){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 S(o){r.patch("/webauthn/credentials/"+f.value+"/name").then(()=>{m.success({text:I("auth.webauthn.device_successfully_registered")}),R.push({name:"accounts"})})}return U(()=>{m.clear()}),(o,e)=>{const $=l("font-awesome-icon"),h=l("FormField"),g=l("FormButtons"),y=l("RouterLink"),v=l("FormWrapper"),x=l("FormPasswordField"),C=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:B(S,["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"])],32)])):(u(),_("div",j,[i("div",A,[i("button",{type:"button",id:"btnRegisterNewDevice",onClick:e[2]||(e[2]=a=>E()),class:"button is-link"},d(o.$t("auth.webauthn.register_a_device")),1)]),i("div",H,[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:B(N,["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"])],32),i("div",J,[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(C)])}}};export{G as default}; diff --git a/public/build/assets/Register-hMMU0w6y.js b/public/build/assets/Register-hMMU0w6y.js deleted file mode 100644 index f8ce551e..00000000 --- a/public/build/assets/Register-hMMU0w6y.js +++ /dev/null @@ -1 +0,0 @@ -import{u as L,a as T,r as F,c as k,a0 as K,d as _,f as t,h as V,k as c,j as n,l,m as u,e as i,g as p,t as d,C as B,p as U,H as I}from"./app-D4Udf6Mm.js";import{F as D}from"./Form-BGrUTood.js";import{w as W}from"./webauthnService-DqgceQ2G.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const P={key:0,class:"field"},M={id:"lblDeviceRegistrationSuccess",class:"label mb-5"},j={key:1,class:"field is-grouped"},A={class:"control"},H={class:"control"},J={class:"nav-links"},G={__name:"Register",setup(O){const b=L(),m=T(),R=U(),w=F(!1),f=F(null),s=k(new D({name:"",email:"",password:"",password_confirmation:""})),r=k(new D({name:""}));async function N(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 E(){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 S(o){r.patch("/webauthn/credentials/"+f.value+"/name").then(()=>{m.success({text:I("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"),C=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:B(S,["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"])],32)])):(u(),_("div",j,[i("div",A,[i("button",{type:"button",id:"btnRegisterNewDevice",onClick:e[2]||(e[2]=a=>E()),class:"button is-link"},d(o.$t("auth.webauthn.register_a_device")),1)]),i("div",H,[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:B(N,["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"])],32),i("div",J,[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(C)])}}};export{G as default}; diff --git a/public/build/assets/RequestReset-CO9hDqHp.js b/public/build/assets/RequestReset-CO9hDqHp.js deleted file mode 100644 index 454a1503..00000000 --- a/public/build/assets/RequestReset-CO9hDqHp.js +++ /dev/null @@ -1 +0,0 @@ -import{a as f,c as h,a0 as _,h as w,k as F,_ as b,l as r,m as y,e as B,j as l,f as s,C as V}from"./app-D4Udf6Mm.js";import{F as v}from"./Form-BGrUTood.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const C={__name:"RequestReset",setup(R){const o=f(),a=b().name=="webauthn.lost",t=h(new v({email:""}));function i(n){o.clear(),t.post(a?"/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 _(()=>{o.clear()}),(n,e)=>{const m=r("FormField"),c=r("FormButtons"),d=r("VueFooter"),p=r("FormWrapper");return y(),w(p,{title:n.$t(a?"auth.webauthn.account_recovery":"auth.forms.reset_password"),punchline:n.$t(a?"auth.webauthn.recovery_punchline":"auth.forms.reset_punchline")},{default:F(()=>[B("form",{onSubmit:V(i,["prevent"]),onKeydown:e[1]||(e[1]=u=>s(t).onKeydown(u))},[l(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"]),l(c,{submitId:"btnSendResetPwd",isBusy:s(t).isBusy,caption:n.$t(a?"auth.webauthn.send_recovery_link":"auth.forms.send_password_reset_link"),showCancelButton:!0,cancelLandingView:"login"},null,8,["isBusy","caption"])],32),l(d)]),_:1},8,["title","punchline"])}}};export{C as default}; diff --git a/public/build/assets/RequestReset-HGpvuoDE.js b/public/build/assets/RequestReset-HGpvuoDE.js new file mode 100644 index 00000000..ab3df26b --- /dev/null +++ b/public/build/assets/RequestReset-HGpvuoDE.js @@ -0,0 +1 @@ +import{b as f,$ as h,d as _,a1 as w,e as r,f as F,k as b,p as y,h as B,m as i,i as s,C as V}from"./app-CuhK3jij.js";import{F as v}from"./Form-o2lWAB-o.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const C={__name:"RequestReset",setup(R){const o=f(),n=h().name=="webauthn.lost",t=_(new v({email:""}));function l(a){o.clear(),t.post(n?"/webauthn/lost":"/user/password/lost",{returnError:!0}).then(e=>{o.success({text:e.data.message,duration:-1})}).catch(e=>{e.response.data.requestFailed?o.alert({text:e.response.data.requestFailed,duration:-1}):e.response.status!==422&&o.error(e)})}return w(()=>{o.clear()}),(a,e)=>{const m=r("FormField"),c=r("FormButtons"),d=r("VueFooter"),p=r("FormWrapper");return F(),b(p,{title:a.$t(n?"auth.webauthn.account_recovery":"auth.forms.reset_password"),punchline:a.$t(n?"auth.webauthn.recovery_punchline":"auth.forms.reset_punchline")},{default:y(()=>[B("form",{onSubmit:V(l,["prevent"]),onKeydown:e[1]||(e[1]=u=>s(t).onKeydown(u))},[i(m,{modelValue:s(t).email,"onUpdate:modelValue":e[0]||(e[0]=u=>s(t).email=u),fieldName:"email",fieldError:s(t).errors.get("email"),label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),i(c,{submitId:"btnSendResetPwd",isBusy:s(t).isBusy,caption:a.$t(n?"auth.webauthn.send_recovery_link":"auth.forms.send_password_reset_link"),showCancelButton:!0,cancelLandingView:"login"},null,8,["isBusy","caption"])],32),i(d)]),_:1},8,["title","punchline"])}}};export{C as default}; diff --git a/public/build/assets/Reset-BohGQRDz.js b/public/build/assets/Reset-BVOhauTi.js similarity index 57% rename from public/build/assets/Reset-BohGQRDz.js rename to public/build/assets/Reset-BVOhauTi.js index 1def7340..6bc8e651 100644 --- a/public/build/assets/Reset-BohGQRDz.js +++ b/public/build/assets/Reset-BVOhauTi.js @@ -1 +1 @@ -import{a as B,r as b,c as R,a0 as h,h as i,k as c,_ as E,l as s,m as l,e as N,j as d,f as t,i as m,g as C,t as v,C as P,p as L}from"./app-D4Udf6Mm.js";import{F as x}from"./Form-BGrUTood.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const D={__name:"Reset",setup(S){const a=B();L();const p=E(),u=b(!0),e=R(new x({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 h(()=>{a.clear()}),(n,o)=>{const w=s("FormField"),_=s("FormPasswordField"),F=s("FieldError"),k=s("FormButtons"),y=s("RouterLink"),V=s("VueFooter"),g=s("FormWrapper");return l(),i(g,{title:n.$t("auth.forms.new_password")},{default:c(()=>[N("form",{onSubmit:P(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?(l(),i(F,{key:0,error:t(e).errors.get("token"),field:t(e).token},null,8,["error","field"])):m("",!0),t(u)?(l(),i(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):(l(),i(y,{key:2,id:"btnContinue",to:{name:"accounts"},class:"button is-link"},{default:c(()=>[C(v(n.$t("commons.continue")),1)]),_:1}))],32),d(V)]),_:1},8,["title"])}}};export{D as default}; +import{b as B,u as b,$ as R,r as h,d as E,a1 as N,e as s,f as i,k as l,p as c,h as C,m as d,i as t,l as m,j as v,t as P,C as L}from"./app-CuhK3jij.js";import{F as $}from"./Form-o2lWAB-o.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const D={__name:"Reset",setup(x){const a=B();b();const p=R(),u=h(!0),e=E(new $({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"),g=s("FormWrapper");return i(),l(g,{title:n.$t("auth.forms.new_password")},{default:c(()=>[C("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(()=>[v(P(n.$t("commons.continue")),1)]),_:1}))],32),d(V)]),_:1},8,["title"])}}};export{D as default}; diff --git a/public/build/assets/SearchBox-B-38rGG5.js b/public/build/assets/SearchBox-Bwo0E13W.js similarity index 63% rename from public/build/assets/SearchBox-B-38rGG5.js rename to public/build/assets/SearchBox-Bwo0E13W.js index 8e076efd..209c6c39 100644 --- a/public/build/assets/SearchBox-B-38rGG5.js +++ b/public/build/assets/SearchBox-Bwo0E13W.js @@ -1 +1 @@ -import{r as d,o as u,v as h,m as n,d as c,e as a,n as m,h as k,l as p}from"./app-D4Udf6Mm.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const y={role:"search",class:"field"},f={class:"control has-icons-right"},v=["aria-label","title","placeholder","value"],w={class:"icon is-small is-right"},g=["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=p("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:m(["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",w,[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,g)):(n(),k(i,{key:1,icon:["fas","search"]}))])])])}}};export{b as _}; +import{r as d,o as u,v as h,e as m,f as n,g as c,h as a,n as k,k as p}from"./app-CuhK3jij.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 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-D1fgIcyl.js b/public/build/assets/SettingTabs-DdogXjnE.js similarity index 69% rename from public/build/assets/SettingTabs-D1fgIcyl.js rename to public/build/assets/SettingTabs-DdogXjnE.js index 711a187f..caa39952 100644 --- a/public/build/assets/SettingTabs-D1fgIcyl.js +++ b/public/build/assets/SettingTabs-DdogXjnE.js @@ -1 +1 @@ -import{r as m,l as n,m as t,d as s,j as a,k as i,e as o,F as v,E as _,f as h,n as g,g as k,t as w}from"./app-D4Udf6Mm.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 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=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"}]),l=r;return(d,T)=>{const u=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(c),e=>(t(),s("li",{key:e.view,class:g({"is-active":e.view===l.activeTab})},[a(u,{id:e.id,to:{name:e.view}},{default:i(()=>[k(w(d.$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,E as _,i as h,n as g,j as w,t as k}from"./app-CuhK3jij.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 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=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"}]),l=r;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(c),e=>(t(),s("li",{key:e.view,class:g({"is-active":e.view===l.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--6H_UWmB.css b/public/build/assets/Spinner--6H_UWmB.css deleted file mode 100644 index ed25ff54..00000000 --- a/public/build/assets/Spinner--6H_UWmB.css +++ /dev/null @@ -1 +0,0 @@ -.spinner-container[data-v-247a4fa7],.spinner-overlay-container[data-v-247a4fa7]{text-align:center;z-index:100000;position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center}.spinner-container[data-v-247a4fa7],.spinner-overlay-container[data-v-247a4fa7]{top:25%;height:50%}.spinner[data-v-247a4fa7]{display:block} diff --git a/public/build/assets/Spinner-DHClvaFf.js b/public/build/assets/Spinner-DHClvaFf.js deleted file mode 100644 index 12910ca0..00000000 --- a/public/build/assets/Spinner-DHClvaFf.js +++ /dev/null @@ -1 +0,0 @@ -import{a5 as p,m as n,d as t,e,j as a,t as c,i as r,h as l,l as d}from"./app-D4Udf6Mm.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 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"},S={key:3,class:"has-text-centered mt-6"},g={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=d("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(),l(i,{key:2,icon:["fas","spinner"],spin:""})):(n(),t("div",S,[e("span",g,[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/Spinner-WULdfd4I.js b/public/build/assets/Spinner-WULdfd4I.js new file mode 100644 index 00000000..e722d685 --- /dev/null +++ b/public/build/assets/Spinner-WULdfd4I.js @@ -0,0 +1 @@ +import{a6 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-CuhK3jij.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 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"},k={id:"icnSpinner",class:"is-size-4"},S={__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",k,[a(i,{icon:["fas","spinner"],spin:""})])]))])):r("",!0)}}},V=p(S,[["__scopeId","data-v-56b21d53"]]);export{V as S}; diff --git a/public/build/assets/Spinner-i1QgfgLP.css b/public/build/assets/Spinner-i1QgfgLP.css new file mode 100644 index 00000000..b937b88e --- /dev/null +++ b/public/build/assets/Spinner-i1QgfgLP.css @@ -0,0 +1 @@ +.spinner-container[data-v-56b21d53],.spinner-overlay-container[data-v-56b21d53]{text-align:center;z-index:100000;position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center}.spinner-container[data-v-56b21d53],.spinner-overlay-container[data-v-56b21d53]{top:25%;height:50%}.spinner[data-v-56b21d53]{display:block} diff --git a/public/build/assets/Start-DbpLb5Lz.js b/public/build/assets/Start-Buh1NwyJ.js similarity index 58% rename from public/build/assets/Start-DbpLb5Lz.js rename to public/build/assets/Start-Buh1NwyJ.js index 5cec120f..f942da19 100644 --- a/public/build/assets/Start-DbpLb5Lz.js +++ b/public/build/assets/Start-Buh1NwyJ.js @@ -1 +1 @@ -import{u as V,a as x,b as A,r as w,c as E,o as N,d as l,e as t,n as R,f as o,g as a,t as s,w as C,h as B,i as m,j as k,k as _,l as d,m as r,p as S}from"./app-D4Udf6Mm.js";import{F as U}from"./Form-BGrUTood.js";import{u as K}from"./bus-RVphoWuw.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const Q={class:"container has-text-centered"},T={class:"columns quick-uploader"},D=t("br",null,null,-1),M={class:"column is-full quick-uploader-button"},j={class:"quick-uploader-centerer"},z={class:"column is-full"},G={class:"block light-or-darker"},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 f=S(),u=V(),b=K(),g=x(),h=A(),p=w(null),c=w(null),i=E(new U({qrcode:null,inputFormat:"fileUpload"}));function v(){i.clear(),i.qrcode=p.value.files[0],i.upload("/api/v1/qrcode/decode",{returnError:!0}).then(e=>{e.data.data.slice(0,33).toLowerCase()==="otpauth-migration://offline?data="?(b.migrationUri=e.data.data,f.push({name:"importAccounts"})):(b.decodedUri=e.data.data,f.push({name:"createAccount"}))}).catch(e=>{e.response.status!==422&&g.alert({text:e.response.data.message})})}function $(){f.push({name:"capture"})}return N(()=>{u.preferences.useDirectCapture&&u.preferences.defaultCaptureMode==="upload"&&c.value.click()}),(e,n)=>{const F=d("FieldError"),q=d("RouterLink"),I=d("ButtonBackCloseCancel"),L=d("VueFooter");return r(),l("div",Q,[t("div",T,[t("div",{class:R(["column is-full quick-uploader-header",{"is-invisible":o(h).count!==0}])},[a(s(e.$t("twofaccounts.no_account_here")),1),D,a(" "+s(e.$t("twofaccounts.add_first_account")),1)],2),t("div",M,[t("div",j,[o(u).preferences.useBasicQrcodeReader?(r(),l("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]=C(y=>o(c).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:v,ref_key:"qrcodeInput",ref:p},null,544),a(" "+s(e.$t("twofaccounts.forms.upload_qrcode")),1)],544)):(r(),l("button",{key:1,class:"button is-link is-medium is-rounded is-main",onClick:n[1]||(n[1]=y=>$())},s(e.$t("twofaccounts.forms.scan_qrcode")),1))]),o(i).errors.hasAny("qrcode")?(r(),B(F,{key:0,error:o(i).errors.get("qrcode"),field:"qrcode"},null,8,["error"])):m("",!0)]),t("div",z,[t("div",G,s(e.$t("twofaccounts.forms.alternative_methods")),1),o(u).preferences.useBasicQrcodeReader?m("",!0):(r(),l("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]=C(y=>o(c).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:v,ref_key:"qrcodeInput",ref:p},null,544),a(" "+s(e.$t("twofaccounts.forms.upload_qrcode")),1)],544)])),t("div",J,[k(q,{class:"button is-link is-outlined is-rounded",to:{name:"createAccount"}},{default:_(()=>[a(s(e.$t("twofaccounts.forms.use_advanced_form")),1)]),_:1})]),t("div",O,[k(q,{id:"btnImport",class:"button is-link is-outlined is-rounded",to:{name:"importAccounts"}},{default:_(()=>[a(s(e.$t("twofaccounts.import.import")),1)]),_:1})])])]),k(L,{showButtons:!0},{default:_(()=>[o(h).isEmpty?m("",!0):(r(),B(I,{key:0,returnTo:{name:"accounts"},action:"back"}))]),_:1})])}}};export{Z as default}; +import{u as V,a as x,b as A,c as E,r as w,d as N,o as R,e as l,f as a,g as d,h as t,n as S,i as o,j as r,t as s,w as C,k as B,l as m,m as k,p as _}from"./app-CuhK3jij.js";import{F as U}from"./Form-o2lWAB-o.js";import{u as K}from"./bus-BalNs30H.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const Q={class:"container has-text-centered"},T={class:"columns quick-uploader"},D=t("br",null,null,-1),M={class:"column is-full quick-uploader-button"},j={class:"quick-uploader-centerer"},z={class:"column is-full"},G={class:"block light-or-darker"},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 f=V(),u=x(),b=K(),g=A(),h=E(),p=w(null),c=w(null),i=N(new U({qrcode:null,inputFormat:"fileUpload"}));function v(){i.clear(),i.qrcode=p.value.files[0],i.upload("/api/v1/qrcode/decode",{returnError:!0}).then(e=>{e.data.data.slice(0,33).toLowerCase()==="otpauth-migration://offline?data="?(b.migrationUri=e.data.data,f.push({name:"importAccounts"})):(b.decodedUri=e.data.data,f.push({name:"createAccount"}))}).catch(e=>{e.response.status!==422&&g.alert({text:e.response.data.message})})}function $(){f.push({name:"capture"})}return R(()=>{u.preferences.useDirectCapture&&u.preferences.defaultCaptureMode==="upload"&&c.value.click()}),(e,n)=>{const F=l("FieldError"),q=l("RouterLink"),I=l("ButtonBackCloseCancel"),L=l("VueFooter");return a(),d("div",Q,[t("div",T,[t("div",{class:S(["column is-full quick-uploader-header",{"is-invisible":o(h).count!==0}])},[r(s(e.$t("twofaccounts.no_account_here")),1),D,r(" "+s(e.$t("twofaccounts.add_first_account")),1)],2),t("div",M,[t("div",j,[o(u).preferences.useBasicQrcodeReader?(a(),d("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]=C(y=>o(c).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:v,ref_key:"qrcodeInput",ref:p},null,544),r(" "+s(e.$t("twofaccounts.forms.upload_qrcode")),1)],544)):(a(),d("button",{key:1,class:"button is-link is-medium is-rounded is-main",onClick:n[1]||(n[1]=y=>$())},s(e.$t("twofaccounts.forms.scan_qrcode")),1))]),o(i).errors.hasAny("qrcode")?(a(),B(F,{key:0,error:o(i).errors.get("qrcode"),field:"qrcode"},null,8,["error"])):m("",!0)]),t("div",z,[t("div",G,s(e.$t("twofaccounts.forms.alternative_methods")),1),o(u).preferences.useBasicQrcodeReader?m("",!0):(a(),d("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]=C(y=>o(c).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:v,ref_key:"qrcodeInput",ref:p},null,544),r(" "+s(e.$t("twofaccounts.forms.upload_qrcode")),1)],544)])),t("div",J,[k(q,{class:"button is-link is-outlined is-rounded",to:{name:"createAccount"}},{default:_(()=>[r(s(e.$t("twofaccounts.forms.use_advanced_form")),1)]),_:1})]),t("div",O,[k(q,{id:"btnImport",class:"button is-link is-outlined is-rounded",to:{name:"importAccounts"}},{default:_(()=>[r(s(e.$t("twofaccounts.import.import")),1)]),_:1})])])]),k(L,{showButtons:!0},{default:_(()=>[o(h).isEmpty?m("",!0):(a(),B(I,{key:0,returnTo:{name:"accounts"},action:"back"}))]),_:1})])}}};export{Z as default}; diff --git a/public/build/assets/Users-B46w5pfw.js b/public/build/assets/Users-B46w5pfw.js new file mode 100644 index 00000000..6869b097 --- /dev/null +++ b/public/build/assets/Users-B46w5pfw.js @@ -0,0 +1 @@ +import{_ as j}from"./AdminTabs-CAsvsm7h.js";import{L as I,b as N,a2 as S,r as k,x as $,o as T,I as E,a1 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,D as O,F as W,E as D,U as F,n as y,l as x}from"./app-CuhK3jij.js";import{S as M}from"./Spinner-WULdfd4I.js";import{_ as Z}from"./SearchBox-Bwo0E13W.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const q={class:"options-tabs"},G={class:"title is-4 has-text-grey-light"},H={class:"is-size-7-mobile"},J={class:"mb-6 mt-3"},K={class:"columns"},P={class:"column pb-0"},Q={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 A=I("2fauth"),w=N(),L=S(A.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});T(()=>{z()});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 z(){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",q,[n(V,null,{default:h(()=>[t("h4",G,i(e.$t("admin.users")),1),t("div",H,i(e.$t("admin.users_legend")),1),t("div",J,[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",K,[t("div",P,[n(Z,{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",Q,[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,D(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)):x("",!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)):x("",!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-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(M,{isVisible:r(g)&&r(f).length===0},null,8,["isVisible"]),n(U,{showButtons:!0},{default:h(()=>[n(l,{returnTo:{name:r(L)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})])])}}};export{he as default}; diff --git a/public/build/assets/Users-Bxf3ihka.js b/public/build/assets/Users-Bxf3ihka.js deleted file mode 100644 index bac1c615..00000000 --- a/public/build/assets/Users-Bxf3ihka.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as j}from"./AdminTabs-Bc7uXBY-.js";import{a as I,a1 as N,r as b,x as $,o as S,I as T,a0 as E,d as u,j as n,e as t,k as h,L as R,l as p,m,t as i,g as B,f as r,D as O,F as W,E as D,U as F,n as y,i as x}from"./app-D4Udf6Mm.js";import{S as M}from"./Spinner-DHClvaFf.js";import{_ as Z}from"./SearchBox-B-38rGG5.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const q={class:"options-tabs"},G={class:"title is-4 has-text-grey-light"},H={class:"is-size-7-mobile"},J={class:"mb-6 mt-3"},K={class:"columns"},P={class:"column pb-0"},Q={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 A=R("2fauth"),w=I(),L=N(A.prefix+"returnTo","accounts"),f=b([]),a=b(""),g=b(!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});S(()=>{z()});function k(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 z(){g.value=!0,T.getAll({returnError:!0}).then(e=>{f.value=e.data}).catch(e=>{w.error(e)}).finally(()=>{g.value=!1})}return E(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 m(),u("div",null,[n(j,{activeTab:"admin.users"}),t("div",q,[n(V,null,{default:h(()=>[t("h4",G,i(e.$t("admin.users")),1),t("div",H,i(e.$t("admin.users_legend")),1),t("div",J,[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",K,[t("div",P,[n(Z,{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",Q,[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=>k("admin:1"))},"admin"),t("button",{class:"button is-small is-ghost p-0",onClick:s[2]||(s[2]=o=>k("oauth:github"))},"github"),t("button",{class:"button is-small is-ghost p-0",onClick:s[3]||(s[3]=o=>k("oauth:openid"))},"openId")])])]),r(C).length>0?(m(),u("div",te,[(m(!0),u(W,null,D(r(C),o=>(m(),u("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?(m(),u("span",{key:0,class:y(["tag is-rounded has-text-warning-dark",v=="dark"?"has-background-black-bis":"has-background-grey-lighter"])},"admin",2)):x("",!0),o.oauth_provider?(m(),u("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)):x("",!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-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))])):(m(),u("div",le,i(e.$t("commons.no_result")),1)),n(M,{isVisible:r(g)&&r(f).length===0},null,8,["isVisible"]),n(U,{showButtons:!0},{default:h(()=>[n(l,{returnTo:{name:r(L)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})])])}}};export{he as default}; diff --git a/public/build/assets/WebAuthn-DBHOBJJ_.js b/public/build/assets/WebAuthn-DJ0oaQu-.js similarity index 68% rename from public/build/assets/WebAuthn-DBHOBJJ_.js rename to public/build/assets/WebAuthn-DJ0oaQu-.js index 3270b62f..c87c47c2 100644 --- a/public/build/assets/WebAuthn-DBHOBJJ_.js +++ b/public/build/assets/WebAuthn-DJ0oaQu-.js @@ -1 +1 @@ -import{u as z,R as A,a as L,a1 as M,r as k,x as U,o as E,s as H,I as b,a0 as I,d as c,j as r,e as s,k as v,L as R,l as _,m as h,f as t,t as a,i as g,w as j,g as C,F as K,E as J,U as P,n as q,p as G,H as u}from"./app-D4Udf6Mm.js";import{_ as Q}from"./SettingTabs-D1fgIcyl.js";import{w as X}from"./webauthnService-DqgceQ2G.js";import{S as Y}from"./Spinner-DHClvaFf.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const Z={class:"options-tabs"},ee={key:0,class:"notification is-warning has-text-centered"},te=["innerHTML"],se={class:"title is-4 has-text-grey-light"},ne={class:"is-size-7-mobile"},ae={class:"mt-3"},oe={key:2,class:"field"},ie=["onClick","title"],re={class:"mt-2 is-size-7 is-pulled-right"},ue={class:"title is-4 pt-6 has-text-grey-light"},le={class:"field"},me={__name:"WebAuthn",setup(ce){const x=R("2fauth"),o=z(),y=A(),n=L(),S=G(),W=M(x.prefix+"returnTo","accounts"),i=k([]),f=k(!1),p=U(()=>y.enableSso&&y.useSsoOnly||o.authenticated_by_proxy);E(()=>{V()}),H(()=>o.preferences.useWebauthnOnly,()=>{b.updatePreference("useWebauthnOnly",o.preferences.useWebauthnOnly).then(e=>{n.success({text:u("settings.forms.setting_saved")})})});function w(){if(p.value==!0)return n.warn({text:u("errors.unsupported_with_reverseproxy")}),!1;X.register().then(e=>{S.push({name:"settings.webauthn.editCredential",params:{credentialId:JSON.parse(e.config.data).id}})}).catch(e=>{var l;"webauthn"in e?e.name=="is-warning"?n.warn({text:u(e.message)}):n.alert({text:u(e.message)}):((l=e.response)==null?void 0:l.status)===422?n.alert({text:e.response.data.message}):n.error(e)})}function $(e){confirm(u("auth.confirm.revoke_device"))&&b.revokeWebauthnDevice(e).then(l=>{i.value=i.value.filter(m=>m.id!==e),i.value.length==0&&(o.preferences.useWebauthnOnly=!1),n.success({text:u("auth.webauthn.device_revoked")})})}function F(e){return e.alias?e.alias:u("auth.webauthn.my_device")+" (#"+e.id.substring(0,10)+")"}function V(){f.value=!0,b.getWebauthnDevices({returnError:!0}).then(e=>{i.value=e.data}).catch(e=>{e.response.status===405||n.error(e)}).finally(()=>{f.value=!1})}return I(e=>{e.name.startsWith("settings.")||n.clear()}),(e,l)=>{const m=_("FontAwesomeIcon"),B=_("FormCheckbox"),O=_("ButtonBackCloseCancel"),T=_("VueFooter"),N=_("FormWrapper");return h(),c("div",null,[r(Q,{activeTab:"settings.webauthn.devices"},null,8,["activeTab"]),s("div",Z,[r(N,null,{default:v(()=>[t(p)&&t(o).oauth_provider?(h(),c("div",ee,a(e.$t("auth.sso_only_x_settings_are_disabled",{auth_method:"WebAuthn"})),1)):g("",!0),t(p)&&t(o).authenticated_by_proxy?(h(),c("div",{key:1,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.auth_handled_by_proxy")},null,8,te)):g("",!0),s("h4",se,a(e.$t("auth.webauthn.security_devices")),1),s("div",ne,a(e.$t("auth.webauthn.security_devices_legend")),1),s("div",ae,[s("a",{tabindex:"0",onClick:w,onKeyup:j(w,["enter"])},[r(m,{icon:["fas","plus-circle"]}),C(" "+a(e.$t("auth.webauthn.register_a_new_device")),1)],32)]),t(i).length>0?(h(),c("div",oe,[(h(!0),c(K,null,J(t(i),d=>(h(),c("div",{key:d.id,class:"group-item is-size-5 is-size-6-mobile"},[C(a(F(d))+" ",1),r(t(P),null,{default:v(({mode:D})=>[s("button",{class:q(["button tag is-pulled-right",D==="dark"?"is-dark":"is-white"]),onClick:he=>$(d.id),title:e.$t("settings.revoke")},a(e.$t("settings.revoke")),11,ie)]),_:2},1024)]))),128)),s("div",re,a(e.$t("auth.webauthn.revoking_a_device_is_permanent")),1)])):g("",!0),r(Y,{isVisible:t(f)&&t(i).length===0},null,8,["isVisible"]),s("h4",ue,a(e.$t("auth.webauthn.options")),1),s("div",le,a(e.$t("auth.webauthn.need_a_security_device_to_enable_options")),1),s("form",null,[r(B,{modelValue:t(o).preferences.useWebauthnOnly,"onUpdate:modelValue":l[0]||(l[0]=d=>t(o).preferences.useWebauthnOnly=d),fieldName:"useWebauthnOnly",label:"auth.webauthn.use_webauthn_only.label",help:"auth.webauthn.use_webauthn_only.help",isDisabled:t(p)||t(i).length===0},null,8,["modelValue","isDisabled"])]),r(T,{showButtons:!0},{default:v(()=>[r(O,{returnTo:{name:t(W)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})])])}}};export{me as default}; +import{L as z,a as A,S as L,b as M,u as U,a2 as E,r as k,x as H,o as I,s as j,I as b,a1 as K,e as _,f as c,g as h,m as r,h as s,p as v,i as t,t as a,l as g,w as R,j as C,F as J,E as P,U as q,n as G,H as u}from"./app-CuhK3jij.js";import{_ as Q}from"./SettingTabs-DdogXjnE.js";import{w as X}from"./webauthnService-B01mQIOV.js";import{S as Y}from"./Spinner-WULdfd4I.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const Z={class:"options-tabs"},ee={key:0,class:"notification is-warning has-text-centered"},te=["innerHTML"],se={class:"title is-4 has-text-grey-light"},ne={class:"is-size-7-mobile"},ae={class:"mt-3"},oe={key:2,class:"field"},ie=["onClick","title"],re={class:"mt-2 is-size-7 is-pulled-right"},ue={class:"title is-4 pt-6 has-text-grey-light"},le={class:"field"},me={__name:"WebAuthn",setup(ce){const S=z("2fauth"),o=A(),y=L(),n=M(),x=U(),W=E(S.prefix+"returnTo","accounts"),i=k([]),f=k(!1),p=H(()=>y.enableSso&&y.useSsoOnly||o.authenticated_by_proxy);I(()=>{V()}),j(()=>o.preferences.useWebauthnOnly,()=>{b.updatePreference("useWebauthnOnly",o.preferences.useWebauthnOnly).then(e=>{n.success({text:u("settings.forms.setting_saved")})})});function w(){if(p.value==!0)return n.warn({text:u("errors.unsupported_with_reverseproxy")}),!1;X.register().then(e=>{x.push({name:"settings.webauthn.editCredential",params:{credentialId:JSON.parse(e.config.data).id}})}).catch(e=>{var l;"webauthn"in e?e.name=="is-warning"?n.warn({text:u(e.message)}):n.alert({text:u(e.message)}):((l=e.response)==null?void 0:l.status)===422?n.alert({text:e.response.data.message}):n.error(e)})}function $(e){confirm(u("auth.confirm.revoke_device"))&&b.revokeWebauthnDevice(e).then(l=>{i.value=i.value.filter(m=>m.id!==e),i.value.length==0&&(o.preferences.useWebauthnOnly=!1),n.success({text:u("auth.webauthn.device_revoked")})})}function F(e){return e.alias?e.alias:u("auth.webauthn.my_device")+" (#"+e.id.substring(0,10)+")"}function V(){f.value=!0,b.getWebauthnDevices({returnError:!0}).then(e=>{i.value=e.data}).catch(e=>{e.response.status===405||n.error(e)}).finally(()=>{f.value=!1})}return K(e=>{e.name.startsWith("settings.")||n.clear()}),(e,l)=>{const m=_("FontAwesomeIcon"),B=_("FormCheckbox"),O=_("ButtonBackCloseCancel"),T=_("VueFooter"),N=_("FormWrapper");return c(),h("div",null,[r(Q,{activeTab:"settings.webauthn.devices"},null,8,["activeTab"]),s("div",Z,[r(N,null,{default:v(()=>[t(p)&&t(o).oauth_provider?(c(),h("div",ee,a(e.$t("auth.sso_only_x_settings_are_disabled",{auth_method:"WebAuthn"})),1)):g("",!0),t(p)&&t(o).authenticated_by_proxy?(c(),h("div",{key:1,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.auth_handled_by_proxy")},null,8,te)):g("",!0),s("h4",se,a(e.$t("auth.webauthn.security_devices")),1),s("div",ne,a(e.$t("auth.webauthn.security_devices_legend")),1),s("div",ae,[s("a",{tabindex:"0",onClick:w,onKeyup:R(w,["enter"])},[r(m,{icon:["fas","plus-circle"]}),C(" "+a(e.$t("auth.webauthn.register_a_new_device")),1)],32)]),t(i).length>0?(c(),h("div",oe,[(c(!0),h(J,null,P(t(i),d=>(c(),h("div",{key:d.id,class:"group-item is-size-5 is-size-6-mobile"},[C(a(F(d))+" ",1),r(t(q),null,{default:v(({mode:D})=>[s("button",{class:G(["button tag is-pulled-right",D==="dark"?"is-dark":"is-white"]),onClick:he=>$(d.id),title:e.$t("settings.revoke")},a(e.$t("settings.revoke")),11,ie)]),_:2},1024)]))),128)),s("div",re,a(e.$t("auth.webauthn.revoking_a_device_is_permanent")),1)])):g("",!0),r(Y,{isVisible:t(f)&&t(i).length===0},null,8,["isVisible"]),s("h4",ue,a(e.$t("auth.webauthn.options")),1),s("div",le,a(e.$t("auth.webauthn.need_a_security_device_to_enable_options")),1),s("form",null,[r(B,{modelValue:t(o).preferences.useWebauthnOnly,"onUpdate:modelValue":l[0]||(l[0]=d=>t(o).preferences.useWebauthnOnly=d),fieldName:"useWebauthnOnly",label:"auth.webauthn.use_webauthn_only.label",help:"auth.webauthn.use_webauthn_only.help",isDisabled:t(p)||t(i).length===0},null,8,["modelValue","isDisabled"])]),r(T,{showButtons:!0},{default:v(()=>[r(O,{returnTo:{name:t(W)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})])])}}};export{me as default}; diff --git a/public/build/assets/app-CuhK3jij.js b/public/build/assets/app-CuhK3jij.js new file mode 100644 index 00000000..7da29cc9 --- /dev/null +++ b/public/build/assets/app-CuhK3jij.js @@ -0,0 +1,799 @@ +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = ["./Start-Buh1NwyJ.js","./Form-o2lWAB-o.js","./bus-BalNs30H.js","./Capture-CIhtAWpt.js","./Spinner-WULdfd4I.js","./Spinner-i1QgfgLP.css","./QrContentDisplay-CyBGNU2O.js","./Accounts-C-25Qy2v.js","./OtpDisplay-D1Cg2JBE.js","./SearchBox-Bwo0E13W.js","./CreateUpdate-BlUdhaWn.js","./Import-C-7ayGrw.js","./QRcode-CqE9jHmd.js","./Groups-CF7f2juX.js","./CreateUpdate-DXqb6Ftc.js","./Options-C3TqQdMf.js","./SettingTabs-DdogXjnE.js","./Account-Bvea0oZ6.js","./OAuth-ulCTA84H.js","./Edit-BxX3QJ9W.js","./WebAuthn-DJ0oaQu-.js","./webauthnService-B01mQIOV.js","./AppSetup-D27COJPH.js","./AdminTabs-CAsvsm7h.js","./appSettingsUpdater-DcxdiO4R.js","./CopyButton-C1eOxUvy.js","./Auth-BknZQPI-.js","./Users-B46w5pfw.js","./Create-CLPvbaW4.js","./Manage-BKPFyA7n.js","./AccessLogViewer-ATsuzUAw.js","./Access-KiYVHBfV.js","./Login-WJZFRbSm.js","./Register-D9YDPq8h.js","./RequestReset-HGpvuoDE.js","./Reset-BVOhauTi.js","./Recover-CcODwxy9.js"] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} +/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const $d="modulepreload",Hd=function(e,t){return new URL(e,t).href},$o={},Z=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){const a=document.getElementsByTagName("link"),i=document.querySelector("meta[property=csp-nonce]"),o=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));s=Promise.all(n.map(l=>{if(l=Hd(l,r),l in $o)return;$o[l]=!0;const u=l.endsWith(".css"),c=u?'[rel="stylesheet"]':"";if(!!r)for(let m=a.length-1;m>=0;m--){const g=a[m];if(g.href===l&&(!u||g.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${c}`))return;const d=document.createElement("link");if(d.rel=u?"stylesheet":$d,u||(d.as="script",d.crossOrigin=""),d.href=l,o&&d.setAttribute("nonce",o),document.head.appendChild(d),u)return new Promise((m,g)=>{d.addEventListener("load",m),d.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(a=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=a,window.dispatchEvent(i),!i.defaultPrevented)throw a})};/** +* @vue/shared v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function $i(e,t){const n=new Set(e.split(","));return t?r=>n.has(r.toLowerCase()):r=>n.has(r)}const _e={},jn=[],ut=()=>{},Fd=()=>!1,Qs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Hi=e=>e.startsWith("onUpdate:"),Ie=Object.assign,Fi=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Dd=Object.prototype.hasOwnProperty,fe=(e,t)=>Dd.call(e,t),X=Array.isArray,Bn=e=>qr(e)==="[object Map]",rr=e=>qr(e)==="[object Set]",Ho=e=>qr(e)==="[object Date]",ae=e=>typeof e=="function",Ne=e=>typeof e=="string",rn=e=>typeof e=="symbol",ye=e=>e!==null&&typeof e=="object",$c=e=>(ye(e)||ae(e))&&ae(e.then)&&ae(e.catch),Hc=Object.prototype.toString,qr=e=>Hc.call(e),zd=e=>qr(e).slice(8,-1),Fc=e=>qr(e)==="[object Object]",Di=e=>Ne(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,br=$i(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Zs=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Vd=/-(\w)/g,Ct=Zs(e=>e.replace(Vd,(t,n)=>n?n.toUpperCase():"")),jd=/\B([A-Z])/g,xn=Zs(e=>e.replace(jd,"-$1").toLowerCase()),ea=Zs(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ca=Zs(e=>e?`on${ea(e)}`:""),sn=(e,t)=>!Object.is(e,t),Os=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},zi=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Bd=e=>{const t=Ne(e)?Number(e):NaN;return isNaN(t)?e:t};let Fo;const Dc=()=>Fo||(Fo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function an(e){if(X(e)){const t={};for(let n=0;n{if(n){const r=n.split(Kd);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Se(e){let t="";if(Ne(e))t=e;else if(X(e))for(let n=0;nGr(n,t))}const we=e=>Ne(e)?e:e==null?"":X(e)||ye(e)&&(e.toString===Hc||!ae(e.toString))?JSON.stringify(e,Vc,2):String(e),Vc=(e,t)=>t&&t.__v_isRef?Vc(e,t.value):Bn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],a)=>(n[Oa(r,a)+" =>"]=s,n),{})}:rr(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Oa(n))}:rn(t)?Oa(t):ye(t)&&!X(t)&&!Fc(t)?String(t):t,Oa=(e,t="")=>{var n;return rn(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let at;class jc{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=at,!t&&at&&(this.index=(at.scopes||(at.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=at;try{return at=this,t()}finally{at=n}}}on(){at=this}off(){at=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),kn()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=en,n=wn;try{return en=!0,wn=this,this._runnings++,Do(this),this.fn()}finally{zo(this),this._runnings--,wn=n,en=t}}stop(){var t;this.active&&(Do(this),zo(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Qd(e){return e.value}function Do(e){e._trackId++,e._depsLength=0}function zo(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Fs=new WeakMap,_n=Symbol(""),ri=Symbol("");function rt(e,t,n){if(en&&wn){let r=Fs.get(e);r||Fs.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=Yc(()=>r.delete(n))),qc(wn,s)}}function It(e,t,n,r,s,a){const i=Fs.get(e);if(!i)return;let o=[];if(t==="clear")o=[...i.values()];else if(n==="length"&&X(e)){const l=Number(r);i.forEach((u,c)=>{(c==="length"||!rn(c)&&c>=l)&&o.push(u)})}else switch(n!==void 0&&o.push(i.get(n)),t){case"add":X(e)?Di(n)&&o.push(i.get("length")):(o.push(i.get(_n)),Bn(e)&&o.push(i.get(ri)));break;case"delete":X(e)||(o.push(i.get(_n)),Bn(e)&&o.push(i.get(ri)));break;case"set":Bn(e)&&o.push(i.get(_n));break}Ui();for(const l of o)l&&Gc(l,4);Ki()}function Zd(e,t){var n;return(n=Fs.get(e))==null?void 0:n.get(t)}const ep=$i("__proto__,__v_isRef,__isVue"),Jc=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(rn)),Vo=tp();function tp(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=ce(this);for(let a=0,i=this.length;a{e[t]=function(...n){An(),Ui();const r=ce(this)[t].apply(this,n);return Ki(),kn(),r}}),e}function np(e){const t=ce(this);return rt(t,"has",e),t.hasOwnProperty(e)}class Xc{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,a=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return a;if(n==="__v_raw")return r===(s?a?hp:tu:a?eu:Zc).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=X(t);if(!s){if(i&&fe(Vo,n))return Reflect.get(Vo,n,r);if(n==="hasOwnProperty")return np}const o=Reflect.get(t,n,r);return(rn(n)?Jc.has(n):ep(n))||(s||rt(t,"get",n),a)?o:Le(o)?i&&Di(n)?o:o.value:ye(o)?s?sr(o):Nt(o):o}}class Qc extends Xc{constructor(t=!1){super(!1,t)}set(t,n,r,s){let a=t[n];if(!this._isShallow){const l=Gn(a);if(!Ds(r)&&!Gn(r)&&(a=ce(a),r=ce(r)),!X(t)&&Le(a)&&!Le(r))return l?!1:(a.value=r,!0)}const i=X(t)&&Di(n)?Number(n)e,ta=e=>Reflect.getPrototypeOf(e);function ss(e,t,n=!1,r=!1){e=e.__v_raw;const s=ce(e),a=ce(t);n||(sn(t,a)&&rt(s,"get",t),rt(s,"get",a));const{has:i}=ta(s),o=r?Wi:n?Yi:Lr;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 as(e,t=!1){const n=this.__v_raw,r=ce(n),s=ce(e);return t||(sn(e,s)&&rt(r,"has",e),rt(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function is(e,t=!1){return e=e.__v_raw,!t&&rt(ce(e),"iterate",_n),Reflect.get(e,"size",e)}function jo(e){e=ce(e);const t=ce(this);return ta(t).has.call(t,e)||(t.add(e),It(t,"add",e,e)),this}function Bo(e,t){t=ce(t);const n=ce(this),{has:r,get:s}=ta(n);let a=r.call(n,e);a||(e=ce(e),a=r.call(n,e));const i=s.call(n,e);return n.set(e,t),a?sn(t,i)&&It(n,"set",e,t):It(n,"add",e,t),this}function Uo(e){const t=ce(this),{has:n,get:r}=ta(t);let s=n.call(t,e);s||(e=ce(e),s=n.call(t,e)),r&&r.call(t,e);const a=t.delete(e);return s&&It(t,"delete",e,void 0),a}function Ko(){const e=ce(this),t=e.size!==0,n=e.clear();return t&&It(e,"clear",void 0,void 0),n}function os(e,t){return function(r,s){const a=this,i=a.__v_raw,o=ce(i),l=t?Wi:e?Yi:Lr;return!e&&rt(o,"iterate",_n),i.forEach((u,c)=>r.call(s,l(u),l(c),a))}}function ls(e,t,n){return function(...r){const s=this.__v_raw,a=ce(s),i=Bn(a),o=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,u=s[e](...r),c=n?Wi:t?Yi:Lr;return!t&&rt(a,"iterate",l?ri:_n),{next(){const{value:f,done:d}=u.next();return d?{value:f,done:d}:{value:o?[c(f[0]),c(f[1])]:c(f),done:d}},[Symbol.iterator](){return this}}}}function jt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function op(){const e={get(a){return ss(this,a)},get size(){return is(this)},has:as,add:jo,set:Bo,delete:Uo,clear:Ko,forEach:os(!1,!1)},t={get(a){return ss(this,a,!1,!0)},get size(){return is(this)},has:as,add:jo,set:Bo,delete:Uo,clear:Ko,forEach:os(!1,!0)},n={get(a){return ss(this,a,!0)},get size(){return is(this,!0)},has(a){return as.call(this,a,!0)},add:jt("add"),set:jt("set"),delete:jt("delete"),clear:jt("clear"),forEach:os(!0,!1)},r={get(a){return ss(this,a,!0,!0)},get size(){return is(this,!0)},has(a){return as.call(this,a,!0)},add:jt("add"),set:jt("set"),delete:jt("delete"),clear:jt("clear"),forEach:os(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(a=>{e[a]=ls(a,!1,!1),n[a]=ls(a,!0,!1),t[a]=ls(a,!1,!0),r[a]=ls(a,!0,!0)}),[e,n,t,r]}const[lp,cp,up,fp]=op();function qi(e,t){const n=t?e?fp:up:e?cp:lp;return(r,s,a)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(fe(n,s)&&s in r?n:r,s,a)}const dp={get:qi(!1,!1)},pp={get:qi(!1,!0)},mp={get:qi(!0,!1)},Zc=new WeakMap,eu=new WeakMap,tu=new WeakMap,hp=new WeakMap;function gp(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function vp(e){return e.__v_skip||!Object.isExtensible(e)?0:gp(zd(e))}function Nt(e){return Gn(e)?e:Gi(e,!1,sp,dp,Zc)}function nu(e){return Gi(e,!1,ip,pp,eu)}function sr(e){return Gi(e,!0,ap,mp,tu)}function Gi(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=vp(e);if(i===0)return e;const o=new Proxy(e,i===2?r:n);return s.set(e,o),o}function tn(e){return Gn(e)?tn(e.__v_raw):!!(e&&e.__v_isReactive)}function Gn(e){return!!(e&&e.__v_isReadonly)}function Ds(e){return!!(e&&e.__v_isShallow)}function ru(e){return tn(e)||Gn(e)}function ce(e){const t=e&&e.__v_raw;return t?ce(t):e}function na(e){return Object.isExtensible(e)&&Hs(e,"__v_skip",!0),e}const Lr=e=>ye(e)?Nt(e):e,Yi=e=>ye(e)?sr(e):e;class su{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Bi(()=>t(this._value),()=>wr(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=ce(this);return(!t._cacheable||t.effect.dirty)&&sn(t._value,t._value=t.effect.run())&&wr(t,4),Ji(t),t.effect._dirtyLevel>=2&&wr(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function yp(e,t,n=!1){let r,s;const a=ae(e);return a?(r=e,s=ut):(r=e.get,s=e.set),new su(r,s,a||!s,n)}function Ji(e){var t;en&&wn&&(e=ce(e),qc(wn,(t=e.dep)!=null?t:e.dep=Yc(()=>e.dep=void 0,e instanceof su?e:void 0)))}function wr(e,t=4,n){e=ce(e);const r=e.dep;r&&Gc(r,t)}function Le(e){return!!(e&&e.__v_isRef===!0)}function he(e){return au(e,!1)}function Xi(e){return au(e,!0)}function au(e,t){return Le(e)?e:new bp(e,t)}class bp{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:ce(t),this._value=n?t:Lr(t)}get value(){return Ji(this),this._value}set value(t){const n=this.__v_isShallow||Ds(t)||Gn(t);t=n?t:ce(t),sn(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Lr(t),wr(this,4))}}function Y(e){return Le(e)?e.value:e}const wp={get:(e,t,n)=>Y(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return Le(s)&&!Le(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function iu(e){return tn(e)?e:new Proxy(e,wp)}class _p{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Ji(this),()=>wr(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function Ep(e){return new _p(e)}function Sp(e){const t=X(e)?new Array(e.length):{};for(const n in e)t[n]=ou(e,n);return t}class xp{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 Zd(ce(this._object),this._key)}}class Ap{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function kp(e,t,n){return Le(e)?e:ae(e)?new Ap(e):ye(e)&&arguments.length>1?ou(e,t,n):he(e)}function ou(e,t,n){const r=e[t];return Le(r)?r:new xp(e,t,n)}/** +* @vue/runtime-core v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function nn(e,t,n,r){try{return r?e(...r):e()}catch(s){ra(s,t,n)}}function ft(e,t,n,r){if(ae(e)){const a=nn(e,t,n,r);return a&&$c(a)&&a.catch(i=>{ra(i,t,n)}),a}const s=[];for(let a=0;a>>1,s=Ye[r],a=Pr(s);axt&&Ye.splice(t,1)}function Tp(e){X(e)?Un.push(...e):(!Yt||!Yt.includes(e,e.allowRecurse?hn+1:hn))&&Un.push(e),cu()}function Wo(e,t,n=Tr?xt+1:0){for(;nPr(n)-Pr(r));if(Un.length=0,Yt){Yt.push(...t);return}for(Yt=t,hn=0;hne.id==null?1/0:e.id,Pp=(e,t)=>{const n=Pr(e)-Pr(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function fu(e){si=!1,Tr=!0,Ye.sort(Pp);try{for(xt=0;xtNe(m)?m.trim():m)),f&&(s=n.map(zi))}let o,l=r[o=Ca(t)]||r[o=Ca(Ct(t))];!l&&a&&(l=r[o=Ca(xn(t))]),l&&ft(l,e,6,s);const u=r[o+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[o])return;e.emitted[o]=!0,ft(u,e,6,s)}}function du(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(!ae(e)){const l=u=>{const c=du(u,t,!0);c&&(o=!0,Ie(i,c))};!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):(X(a)?a.forEach(l=>i[l]=null):Ie(i,a),ye(e)&&r.set(e,i),i)}function sa(e,t){return!e||!Qs(t)?!1:(t=t.slice(2).replace(/Once$/,""),fe(e,t[0].toLowerCase()+t.slice(1))||fe(e,xn(t))||fe(e,t))}let Me=null,pu=null;function zs(e){const t=Me;return Me=e,pu=e&&e.type.__scopeId||null,t}function qe(e,t=Me,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&sl(-1);const a=zs(t);let i;try{i=e(...s)}finally{zs(a),r._d&&sl(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function La(e){const{type:t,vnode:n,proxy:r,withProxy:s,props:a,propsOptions:[i],slots:o,attrs:l,emit:u,render:c,renderCache:f,data:d,setupState:m,ctx:g,inheritAttrs:v}=e;let _,b;const y=zs(e);try{if(n.shapeFlag&4){const T=s||r,N=T;_=St(c.call(N,T,f,a,m,d,g)),b=l}else{const T=t;_=St(T.length>1?T(a,{attrs:l,slots:o,emit:u}):T(a,null)),b=t.props?l:Mp(l)}}catch(T){Sr.length=0,ra(T,e,1),_=ne(dt)}let k=_;if(b&&v!==!1){const T=Object.keys(b),{shapeFlag:N}=k;T.length&&N&7&&(i&&T.some(Hi)&&(b=Ip(b,i)),k=on(k,b))}return n.dirs&&(k=on(k),k.dirs=k.dirs?k.dirs.concat(n.dirs):n.dirs),n.transition&&(k.transition=n.transition),_=k,zs(y),_}const Mp=e=>{let t;for(const n in e)(n==="class"||n==="style"||Qs(n))&&((t||(t={}))[n]=e[n]);return t},Ip=(e,t)=>{const n={};for(const r in e)(!Hi(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Np(e,t,n){const{props:r,children:s,component:a}=e,{props:i,children:o,patchFlag:l}=t,u=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?qo(r,i,u):!!i;if(l&8){const c=t.dynamicProps;for(let f=0;fe.__isSuspense;function zp(e,t){t&&t.pendingBranch?X(e)?t.effects.push(...e):t.effects.push(e):Tp(e)}const Vp=Symbol.for("v-scx"),jp=()=>nt(Vp);function eo(e,t){return to(e,null,t)}const cs={};function je(e,t,n){return to(e,t,n)}function to(e,t,{immediate:n,deep:r,flush:s,once:a,onTrack:i,onTrigger:o}=_e){if(t&&a){const V=t;t=(...G)=>{V(...G),N()}}const l=Ve,u=V=>r===!0?V:vn(V,r===!1?1:void 0);let c,f=!1,d=!1;if(Le(e)?(c=()=>e.value,f=Ds(e)):tn(e)?(c=()=>u(e),f=!0):X(e)?(d=!0,f=e.some(V=>tn(V)||Ds(V)),c=()=>e.map(V=>{if(Le(V))return V.value;if(tn(V))return u(V);if(ae(V))return nn(V,l,2)})):ae(e)?t?c=()=>nn(e,l,2):c=()=>(m&&m(),ft(e,l,3,[g])):c=ut,t&&r){const V=c;c=()=>vn(V())}let m,g=V=>{m=k.onStop=()=>{nn(V,l,4),m=k.onStop=void 0}},v;if(ua)if(g=ut,t?n&&ft(t,l,3,[c(),d?[]:void 0,g]):c(),s==="sync"){const V=jp();v=V.__watcherHandles||(V.__watcherHandles=[])}else return ut;let _=d?new Array(e.length).fill(cs):cs;const b=()=>{if(!(!k.active||!k.dirty))if(t){const V=k.run();(r||f||(d?V.some((G,P)=>sn(G,_[P])):sn(V,_)))&&(m&&m(),ft(t,l,3,[V,_===cs?void 0:d&&_[0]===cs?[]:_,g]),_=V)}else k.run()};b.allowRecurse=!!t;let y;s==="sync"?y=b:s==="post"?y=()=>tt(b,l&&l.suspense):(b.pre=!0,l&&(b.id=l.uid),y=()=>Zi(b));const k=new Bi(c,ut,y),T=ji(),N=()=>{k.stop(),T&&Fi(T.effects,k)};return t?n?b():_=k.run():s==="post"?tt(k.run.bind(k),l&&l.suspense):k.run(),v&&v.push(N),N}function Bp(e,t,n){const r=this.proxy,s=Ne(e)?e.includes(".")?hu(r,e):()=>r[e]:e.bind(r,r);let a;ae(t)?a=t:(a=t.handler,n=t);const i=Yr(this),o=to(s,a.bind(r),n);return i(),o}function hu(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s0){if(n>=t)return e;n++}if(r=r||new Set,r.has(e))return e;if(r.add(e),Le(e))vn(e.value,t,n,r);else if(X(e))for(let s=0;s{vn(s,t,n,r)});else if(Fc(e))for(const s in e)vn(e[s],t,n,r);return e}function gu(e,t){if(Me===null)return e;const n=fa(Me)||Me.proxy,r=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),Au(()=>{e.isUnmounting=!0}),e}const ct=[Function,Array],yu={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ct,onEnter:ct,onAfterEnter:ct,onEnterCancelled:ct,onBeforeLeave:ct,onLeave:ct,onAfterLeave:ct,onLeaveCancelled:ct,onBeforeAppear:ct,onAppear:ct,onAfterAppear:ct,onAppearCancelled:ct},Up={name:"BaseTransition",props:yu,setup(e,{slots:t}){const n=ar(),r=vu();return()=>{const s=t.default&&no(t.default(),!0);if(!s||!s.length)return;let a=s[0];if(s.length>1){for(const d of s)if(d.type!==dt){a=d;break}}const i=ce(e),{mode:o}=i;if(r.isLeaving)return Ta(a);const l=Yo(a);if(!l)return Ta(a);const u=Rr(l,i,r,n);Mr(l,u);const c=n.subTree,f=c&&Yo(c);if(f&&f.type!==dt&&!gn(l,f)){const d=Rr(f,i,r,n);if(Mr(f,d),o==="out-in")return r.isLeaving=!0,d.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Ta(a);o==="in-out"&&l.type!==dt&&(d.delayLeave=(m,g,v)=>{const _=bu(r,f);_[String(f.key)]=f,m[Jt]=()=>{g(),m[Jt]=void 0,delete u.delayedLeave},u.delayedLeave=v})}return a}}},Kp=Up;function bu(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 Rr(e,t,n,r){const{appear:s,mode:a,persisted:i=!1,onBeforeEnter:o,onEnter:l,onAfterEnter:u,onEnterCancelled:c,onBeforeLeave:f,onLeave:d,onAfterLeave:m,onLeaveCancelled:g,onBeforeAppear:v,onAppear:_,onAfterAppear:b,onAppearCancelled:y}=t,k=String(e.key),T=bu(n,e),N=(P,H)=>{P&&ft(P,r,9,H)},V=(P,H)=>{const x=H[1];N(P,H),X(P)?P.every(E=>E.length<=1)&&x():P.length<=1&&x()},G={mode:a,persisted:i,beforeEnter(P){let H=o;if(!n.isMounted)if(s)H=v||o;else return;P[Jt]&&P[Jt](!0);const x=T[k];x&&gn(e,x)&&x.el[Jt]&&x.el[Jt](),N(H,[P])},enter(P){let H=l,x=u,E=c;if(!n.isMounted)if(s)H=_||l,x=b||u,E=y||c;else return;let C=!1;const te=P[us]=be=>{C||(C=!0,be?N(E,[P]):N(x,[P]),G.delayedLeave&&G.delayedLeave(),P[us]=void 0)};H?V(H,[P,te]):te()},leave(P,H){const x=String(e.key);if(P[us]&&P[us](!0),n.isUnmounting)return H();N(f,[P]);let E=!1;const C=P[Jt]=te=>{E||(E=!0,H(),te?N(g,[P]):N(m,[P]),P[Jt]=void 0,T[x]===e&&delete T[x])};T[x]=e,d?V(d,[P,C]):C()},clone(P){return Rr(P,t,n,r)}};return G}function Ta(e){if(aa(e))return e=on(e),e.children=null,e}function Yo(e){return aa(e)?e.children?e.children[0]:void 0:e}function Mr(e,t){e.shapeFlag&6&&e.component?Mr(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 no(e,t=!1,n){let r=[],s=0;for(let a=0;a1)for(let a=0;a!!e.type.__asyncLoader,aa=e=>e.type.__isKeepAlive;function wu(e,t){Eu(e,"a",t)}function _u(e,t){Eu(e,"da",t)}function Eu(e,t,n=Ve){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(ia(t,r,n),n){let s=n.parent;for(;s&&s.parent;)aa(s.parent.vnode)&&Wp(r,t,n,s),s=s.parent}}function Wp(e,t,n,r){const s=ia(t,e,r,!0);oa(()=>{Fi(r[t],s)},n)}function ia(e,t,n=Ve,r=!1){if(n){const s=n[e]||(n[e]=[]),a=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;An();const o=Yr(n),l=ft(t,n,e,i);return o(),kn(),l});return r?s.unshift(a):s.push(a),a}}const zt=e=>(t,n=Ve)=>(!ua||e==="sp")&&ia(e,(...r)=>t(...r),n),Su=zt("bm"),On=zt("m"),qp=zt("bu"),xu=zt("u"),Au=zt("bum"),oa=zt("um"),Gp=zt("sp"),Yp=zt("rtg"),Jp=zt("rtc");function Xp(e,t=Ve){ia("ec",e,t)}function ku(e,t,n,r){let s;const a=n&&n[r];if(X(e)||Ne(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;oNr(t)?!(t.type===dt||t.type===ze&&!Cu(t.children)):!0)?e:null}const ai=e=>e?Du(e)?fa(e)||e.proxy:ai(e.parent):null,Er=Ie(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=>ai(e.parent),$root:e=>ai(e.root),$emit:e=>e.emit,$options:e=>ro(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Zi(e.update)}),$nextTick:e=>e.n||(e.n=Cn.bind(e.proxy)),$watch:e=>Bp.bind(e)}),Pa=(e,t)=>e!==_e&&!e.__isScriptSetup&&fe(e,t),Qp={get({_:e},t){const{ctx:n,setupState:r,data:s,props:a,accessCache:i,type:o,appContext:l}=e;let u;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(Pa(r,t))return i[t]=1,r[t];if(s!==_e&&fe(s,t))return i[t]=2,s[t];if((u=e.propsOptions[0])&&fe(u,t))return i[t]=3,a[t];if(n!==_e&&fe(n,t))return i[t]=4,n[t];ii&&(i[t]=0)}}const c=Er[t];let f,d;if(c)return t==="$attrs"&&rt(e,"get",t),c(e);if((f=o.__cssModules)&&(f=f[t]))return f;if(n!==_e&&fe(n,t))return i[t]=4,n[t];if(d=l.config.globalProperties,fe(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:a}=e;return Pa(s,t)?(s[t]=n,!0):r!==_e&&fe(r,t)?(r[t]=n,!0):fe(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&&fe(e,i)||Pa(t,i)||(o=a[0])&&fe(o,i)||fe(r,i)||fe(Er,i)||fe(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:fe(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Zp(){return em().attrs}function em(){const e=ar();return e.setupContext||(e.setupContext=Vu(e))}function Jo(e){return X(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ii=!0;function tm(e){const t=ro(e),n=e.proxy,r=e.ctx;ii=!1,t.beforeCreate&&Xo(t.beforeCreate,e,"bc");const{data:s,computed:a,methods:i,watch:o,provide:l,inject:u,created:c,beforeMount:f,mounted:d,beforeUpdate:m,updated:g,activated:v,deactivated:_,beforeDestroy:b,beforeUnmount:y,destroyed:k,unmounted:T,render:N,renderTracked:V,renderTriggered:G,errorCaptured:P,serverPrefetch:H,expose:x,inheritAttrs:E,components:C,directives:te,filters:be}=t;if(u&&nm(u,r,null),i)for(const pe in i){const de=i[pe];ae(de)&&(r[pe]=de.bind(n))}if(s){const pe=s.call(n,n);ye(pe)&&(e.data=Nt(pe))}if(ii=!0,a)for(const pe in a){const de=a[pe],mt=ae(de)?de.bind(n,n):ae(de.get)?de.get.bind(n,n):ut,Ue=!ae(de)&&ae(de.set)?de.set.bind(n):ut,lt=se({get:mt,set:Ue});Object.defineProperty(r,pe,{enumerable:!0,configurable:!0,get:()=>lt.value,set:$e=>lt.value=$e})}if(o)for(const pe in o)Ou(o[pe],r,n,pe);if(l){const pe=ae(l)?l.call(n):l;Reflect.ownKeys(pe).forEach(de=>{Ls(de,pe[de])})}c&&Xo(c,e,"c");function ie(pe,de){X(de)?de.forEach(mt=>pe(mt.bind(n))):de&&pe(de.bind(n))}if(ie(Su,f),ie(On,d),ie(qp,m),ie(xu,g),ie(wu,v),ie(_u,_),ie(Xp,P),ie(Jp,V),ie(Yp,G),ie(Au,y),ie(oa,T),ie(Gp,H),X(x))if(x.length){const pe=e.exposed||(e.exposed={});x.forEach(de=>{Object.defineProperty(pe,de,{get:()=>n[de],set:mt=>n[de]=mt})})}else e.exposed||(e.exposed={});N&&e.render===ut&&(e.render=N),E!=null&&(e.inheritAttrs=E),C&&(e.components=C),te&&(e.directives=te)}function nm(e,t,n=ut){X(e)&&(e=oi(e));for(const r in e){const s=e[r];let a;ye(s)?"default"in s?a=nt(s.from||r,s.default,!0):a=nt(s.from||r):a=nt(s),Le(a)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>a.value,set:i=>a.value=i}):t[r]=a}}function Xo(e,t,n){ft(X(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ou(e,t,n,r){const s=r.includes(".")?hu(n,r):()=>n[r];if(Ne(e)){const a=t[e];ae(a)&&je(s,a)}else if(ae(e))je(s,e.bind(n));else if(ye(e))if(X(e))e.forEach(a=>Ou(a,t,n,r));else{const a=ae(e.handler)?e.handler.bind(n):t[e.handler];ae(a)&&je(s,a,e)}}function ro(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(u=>Vs(l,u,i,!0)),Vs(l,t,i)),ye(t)&&a.set(t,l),l}function Vs(e,t,n,r=!1){const{mixins:s,extends:a}=t;a&&Vs(e,a,n,!0),s&&s.forEach(i=>Vs(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const o=rm[i]||n&&n[i];e[i]=o?o(e[i],t[i]):t[i]}return e}const rm={data:Qo,props:Zo,emits:Zo,methods:vr,computed:vr,beforeCreate:Qe,created:Qe,beforeMount:Qe,mounted:Qe,beforeUpdate:Qe,updated:Qe,beforeDestroy:Qe,beforeUnmount:Qe,destroyed:Qe,unmounted:Qe,activated:Qe,deactivated:Qe,errorCaptured:Qe,serverPrefetch:Qe,components:vr,directives:vr,watch:am,provide:Qo,inject:sm};function Qo(e,t){return t?e?function(){return Ie(ae(e)?e.call(this,this):e,ae(t)?t.call(this,this):t)}:t:e}function sm(e,t){return vr(oi(e),oi(t))}function oi(e){if(X(e)){const t={};for(let n=0;n1)return n&&ae(t)?t.call(r&&r.proxy):t}}function lm(){return!!(Ve||Me||Kn)}function cm(e,t,n,r=!1){const s={},a={};Hs(a,ca,1),e.propsDefaults=Object.create(null),Tu(e,t,s,a);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:nu(s):e.type.props?e.props=s:e.props=a,e.attrs=a}function um(e,t,n,r){const{props:s,attrs:a,vnode:{patchFlag:i}}=e,o=ce(s),[l]=e.propsOptions;let u=!1;if((r||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let f=0;f{l=!0;const[d,m]=Pu(f,t,!0);Ie(i,d),m&&o.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!a&&!l)return ye(e)&&r.set(e,jn),jn;if(X(a))for(let c=0;c-1,m[1]=v<0||g-1||fe(m,"default"))&&o.push(f)}}}const u=[i,o];return ye(e)&&r.set(e,u),u}function el(e){return e[0]!=="$"&&!br(e)}function tl(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function nl(e,t){return tl(e)===tl(t)}function rl(e,t){return X(t)?t.findIndex(n=>nl(n,e)):ae(t)&&nl(t,e)?0:-1}const Ru=e=>e[0]==="_"||e==="$stable",so=e=>X(e)?e.map(St):[St(e)],fm=(e,t,n)=>{if(t._n)return t;const r=qe((...s)=>so(t(...s)),n);return r._c=!1,r},Mu=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Ru(s))continue;const a=e[s];if(ae(a))t[s]=fm(s,a,r);else if(a!=null){const i=so(a);t[s]=()=>i}}},Iu=(e,t)=>{const n=so(t);e.slots.default=()=>n},dm=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=ce(t),Hs(t,"_",n)):Mu(t,e.slots={})}else e.slots={},t&&Iu(e,t);Hs(e.slots,ca,1)},pm=(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:(Ie(s,t),!n&&o===1&&delete s._):(a=!t.$stable,Mu(t,s)),i=t}else t&&(Iu(e,t),i={default:1});if(a)for(const o in s)!Ru(o)&&i[o]==null&&delete s[o]};function ci(e,t,n,r,s=!1){if(X(e)){e.forEach((d,m)=>ci(d,t&&(X(t)?t[m]:t),n,r,s));return}if(_r(r)&&!s)return;const a=r.shapeFlag&4?fa(r.component)||r.component.proxy:r.el,i=s?null:a,{i:o,r:l}=e,u=t&&t.r,c=o.refs===_e?o.refs={}:o.refs,f=o.setupState;if(u!=null&&u!==l&&(Ne(u)?(c[u]=null,fe(f,u)&&(f[u]=null)):Le(u)&&(u.value=null)),ae(l))nn(l,o,12,[i,c]);else{const d=Ne(l),m=Le(l);if(d||m){const g=()=>{if(e.f){const v=d?fe(f,l)?f[l]:c[l]:l.value;s?X(v)&&Fi(v,a):X(v)?v.includes(a)||v.push(a):d?(c[l]=[a],fe(f,l)&&(f[l]=c[l])):(l.value=[a],e.k&&(c[e.k]=l.value))}else d?(c[l]=i,fe(f,l)&&(f[l]=i)):m&&(l.value=i,e.k&&(c[e.k]=i))};i?(g.id=-1,tt(g,n)):g()}}}const tt=zp;function mm(e){return hm(e)}function hm(e,t){const n=Dc();n.__VUE__=!0;const{insert:r,remove:s,patchProp:a,createElement:i,createText:o,createComment:l,setText:u,setElementText:c,parentNode:f,nextSibling:d,setScopeId:m=ut,insertStaticContent:g}=e,v=(p,h,w,L=null,S=null,I=null,z=void 0,M=null,$=!!h.dynamicChildren)=>{if(p===h)return;p&&!gn(p,h)&&(L=O(p),$e(p,S,I,!0),p=null),h.patchFlag===-2&&($=!1,h.dynamicChildren=null);const{type:R,ref:U,shapeFlag:ee}=h;switch(R){case la:_(p,h,w,L);break;case dt:b(p,h,w,L);break;case Ma:p==null&&y(h,w,L,z);break;case ze:C(p,h,w,L,S,I,z,M,$);break;default:ee&1?N(p,h,w,L,S,I,z,M,$):ee&6?te(p,h,w,L,S,I,z,M,$):(ee&64||ee&128)&&R.process(p,h,w,L,S,I,z,M,$,W)}U!=null&&S&&ci(U,p&&p.ref,I,h||p,!h)},_=(p,h,w,L)=>{if(p==null)r(h.el=o(h.children),w,L);else{const S=h.el=p.el;h.children!==p.children&&u(S,h.children)}},b=(p,h,w,L)=>{p==null?r(h.el=l(h.children||""),w,L):h.el=p.el},y=(p,h,w,L)=>{[p.el,p.anchor]=g(p.children,h,w,L,p.el,p.anchor)},k=({el:p,anchor:h},w,L)=>{let S;for(;p&&p!==h;)S=d(p),r(p,w,L),p=S;r(h,w,L)},T=({el:p,anchor:h})=>{let w;for(;p&&p!==h;)w=d(p),s(p),p=w;s(h)},N=(p,h,w,L,S,I,z,M,$)=>{h.type==="svg"?z="svg":h.type==="math"&&(z="mathml"),p==null?V(h,w,L,S,I,z,M,$):H(p,h,S,I,z,M,$)},V=(p,h,w,L,S,I,z,M)=>{let $,R;const{props:U,shapeFlag:ee,transition:J,dirs:re}=p;if($=p.el=i(p.type,I,U&&U.is,U),ee&8?c($,p.children):ee&16&&P(p.children,$,null,L,S,Ra(p,I),z,M),re&&dn(p,null,L,"created"),G($,p,p.scopeId,z,L),U){for(const ve in U)ve!=="value"&&!br(ve)&&a($,ve,null,U[ve],I,p.children,L,S,Ke);"value"in U&&a($,"value",null,U.value,I),(R=U.onVnodeBeforeMount)&&_t(R,L,p)}re&&dn(p,null,L,"beforeMount");const oe=gm(S,J);oe&&J.beforeEnter($),r($,h,w),((R=U&&U.onVnodeMounted)||oe||re)&&tt(()=>{R&&_t(R,L,p),oe&&J.enter($),re&&dn(p,null,L,"mounted")},S)},G=(p,h,w,L,S)=>{if(w&&m(p,w),L)for(let I=0;I{for(let R=$;R{const M=h.el=p.el;let{patchFlag:$,dynamicChildren:R,dirs:U}=h;$|=p.patchFlag&16;const ee=p.props||_e,J=h.props||_e;let re;if(w&&pn(w,!1),(re=J.onVnodeBeforeUpdate)&&_t(re,w,h,p),U&&dn(h,p,w,"beforeUpdate"),w&&pn(w,!0),R?x(p.dynamicChildren,R,M,w,L,Ra(h,S),I):z||de(p,h,M,null,w,L,Ra(h,S),I,!1),$>0){if($&16)E(M,h,ee,J,w,L,S);else if($&2&&ee.class!==J.class&&a(M,"class",null,J.class,S),$&4&&a(M,"style",ee.style,J.style,S),$&8){const oe=h.dynamicProps;for(let ve=0;ve{re&&_t(re,w,h,p),U&&dn(h,p,w,"updated")},L)},x=(p,h,w,L,S,I,z)=>{for(let M=0;M{if(w!==L){if(w!==_e)for(const M in w)!br(M)&&!(M in L)&&a(p,M,w[M],null,z,h.children,S,I,Ke);for(const M in L){if(br(M))continue;const $=L[M],R=w[M];$!==R&&M!=="value"&&a(p,M,R,$,z,h.children,S,I,Ke)}"value"in L&&a(p,"value",w.value,L.value,z)}},C=(p,h,w,L,S,I,z,M,$)=>{const R=h.el=p?p.el:o(""),U=h.anchor=p?p.anchor:o("");let{patchFlag:ee,dynamicChildren:J,slotScopeIds:re}=h;re&&(M=M?M.concat(re):re),p==null?(r(R,w,L),r(U,w,L),P(h.children||[],w,U,S,I,z,M,$)):ee>0&&ee&64&&J&&p.dynamicChildren?(x(p.dynamicChildren,J,w,S,I,z,M),(h.key!=null||S&&h===S.subTree)&&Nu(p,h,!0)):de(p,h,w,U,S,I,z,M,$)},te=(p,h,w,L,S,I,z,M,$)=>{h.slotScopeIds=M,p==null?h.shapeFlag&512?S.ctx.activate(h,w,L,z,$):be(h,w,L,S,I,z,$):Ce(p,h,$)},be=(p,h,w,L,S,I,z)=>{const M=p.component=xm(p,L,S);if(aa(p)&&(M.ctx.renderer=W),Am(M),M.asyncDep){if(S&&S.registerDep(M,ie),!p.el){const $=M.subTree=ne(dt);b(null,$,h,w)}}else ie(M,p,h,w,S,I,z)},Ce=(p,h,w)=>{const L=h.component=p.component;if(Np(p,h,w))if(L.asyncDep&&!L.asyncResolved){pe(L,h,w);return}else L.next=h,Lp(L.update),L.effect.dirty=!0,L.update();else h.el=p.el,L.vnode=h},ie=(p,h,w,L,S,I,z)=>{const M=()=>{if(p.isMounted){let{next:U,bu:ee,u:J,parent:re,vnode:oe}=p;{const Pn=$u(p);if(Pn){U&&(U.el=oe.el,pe(p,U,z)),Pn.asyncDep.then(()=>{p.isUnmounted||M()});return}}let ve=U,ke;pn(p,!1),U?(U.el=oe.el,pe(p,U,z)):U=oe,ee&&Os(ee),(ke=U.props&&U.props.onVnodeBeforeUpdate)&&_t(ke,re,U,oe),pn(p,!0);const De=La(p),ht=p.subTree;p.subTree=De,v(ht,De,f(ht.el),O(ht),p,S,I),U.el=De.el,ve===null&&$p(p,De.el),J&&tt(J,S),(ke=U.props&&U.props.onVnodeUpdated)&&tt(()=>_t(ke,re,U,oe),S)}else{let U;const{el:ee,props:J}=h,{bm:re,m:oe,parent:ve}=p,ke=_r(h);if(pn(p,!1),re&&Os(re),!ke&&(U=J&&J.onVnodeBeforeMount)&&_t(U,ve,h),pn(p,!0),ee&&Ae){const De=()=>{p.subTree=La(p),Ae(ee,p.subTree,p,S,null)};ke?h.type.__asyncLoader().then(()=>!p.isUnmounted&&De()):De()}else{const De=p.subTree=La(p);v(null,De,w,L,p,S,I),h.el=De.el}if(oe&&tt(oe,S),!ke&&(U=J&&J.onVnodeMounted)){const De=h;tt(()=>_t(U,ve,De),S)}(h.shapeFlag&256||ve&&_r(ve.vnode)&&ve.vnode.shapeFlag&256)&&p.a&&tt(p.a,S),p.isMounted=!0,h=w=L=null}},$=p.effect=new Bi(M,ut,()=>Zi(R),p.scope),R=p.update=()=>{$.dirty&&$.run()};R.id=p.uid,pn(p,!0),R()},pe=(p,h,w)=>{h.component=p;const L=p.vnode.props;p.vnode=h,p.next=null,um(p,h.props,L,w),pm(p,h.children,w),An(),Wo(p),kn()},de=(p,h,w,L,S,I,z,M,$=!1)=>{const R=p&&p.children,U=p?p.shapeFlag:0,ee=h.children,{patchFlag:J,shapeFlag:re}=h;if(J>0){if(J&128){Ue(R,ee,w,L,S,I,z,M,$);return}else if(J&256){mt(R,ee,w,L,S,I,z,M,$);return}}re&8?(U&16&&Ke(R,S,I),ee!==R&&c(w,ee)):U&16?re&16?Ue(R,ee,w,L,S,I,z,M,$):Ke(R,S,I,!0):(U&8&&c(w,""),re&16&&P(ee,w,L,S,I,z,M,$))},mt=(p,h,w,L,S,I,z,M,$)=>{p=p||jn,h=h||jn;const R=p.length,U=h.length,ee=Math.min(R,U);let J;for(J=0;JU?Ke(p,S,I,!0,!1,ee):P(h,w,L,S,I,z,M,$,ee)},Ue=(p,h,w,L,S,I,z,M,$)=>{let R=0;const U=h.length;let ee=p.length-1,J=U-1;for(;R<=ee&&R<=J;){const re=p[R],oe=h[R]=$?Xt(h[R]):St(h[R]);if(gn(re,oe))v(re,oe,w,null,S,I,z,M,$);else break;R++}for(;R<=ee&&R<=J;){const re=p[ee],oe=h[J]=$?Xt(h[J]):St(h[J]);if(gn(re,oe))v(re,oe,w,null,S,I,z,M,$);else break;ee--,J--}if(R>ee){if(R<=J){const re=J+1,oe=reJ)for(;R<=ee;)$e(p[R],S,I,!0),R++;else{const re=R,oe=R,ve=new Map;for(R=oe;R<=J;R++){const st=h[R]=$?Xt(h[R]):St(h[R]);st.key!=null&&ve.set(st.key,R)}let ke,De=0;const ht=J-oe+1;let Pn=!1,Mo=0;const ur=new Array(ht);for(R=0;R=ht){$e(st,S,I,!0);continue}let wt;if(st.key!=null)wt=ve.get(st.key);else for(ke=oe;ke<=J;ke++)if(ur[ke-oe]===0&&gn(st,h[ke])){wt=ke;break}wt===void 0?$e(st,S,I,!0):(ur[wt-oe]=R+1,wt>=Mo?Mo=wt:Pn=!0,v(st,h[wt],w,null,S,I,z,M,$),De++)}const Io=Pn?vm(ur):jn;for(ke=Io.length-1,R=ht-1;R>=0;R--){const st=oe+R,wt=h[st],No=st+1{const{el:I,type:z,transition:M,children:$,shapeFlag:R}=p;if(R&6){lt(p.component.subTree,h,w,L);return}if(R&128){p.suspense.move(h,w,L);return}if(R&64){z.move(p,h,w,W);return}if(z===ze){r(I,h,w);for(let ee=0;ee<$.length;ee++)lt($[ee],h,w,L);r(p.anchor,h,w);return}if(z===Ma){k(p,h,w);return}if(L!==2&&R&1&&M)if(L===0)M.beforeEnter(I),r(I,h,w),tt(()=>M.enter(I),S);else{const{leave:ee,delayLeave:J,afterLeave:re}=M,oe=()=>r(I,h,w),ve=()=>{ee(I,()=>{oe(),re&&re()})};J?J(I,oe,ve):ve()}else r(I,h,w)},$e=(p,h,w,L=!1,S=!1)=>{const{type:I,props:z,ref:M,children:$,dynamicChildren:R,shapeFlag:U,patchFlag:ee,dirs:J}=p;if(M!=null&&ci(M,null,w,p,!0),U&256){h.ctx.deactivate(p);return}const re=U&1&&J,oe=!_r(p);let ve;if(oe&&(ve=z&&z.onVnodeBeforeUnmount)&&_t(ve,h,p),U&6)rs(p.component,w,L);else{if(U&128){p.suspense.unmount(w,L);return}re&&dn(p,null,h,"beforeUnmount"),U&64?p.type.remove(p,h,w,S,W,L):R&&(I!==ze||ee>0&&ee&64)?Ke(R,h,w,!1,!0):(I===ze&&ee&384||!S&&U&16)&&Ke($,h,w),L&&Lt(p)}(oe&&(ve=z&&z.onVnodeUnmounted)||re)&&tt(()=>{ve&&_t(ve,h,p),re&&dn(p,null,h,"unmounted")},w)},Lt=p=>{const{type:h,el:w,anchor:L,transition:S}=p;if(h===ze){Tt(w,L);return}if(h===Ma){T(p);return}const I=()=>{s(w),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(p.shapeFlag&1&&S&&!S.persisted){const{leave:z,delayLeave:M}=S,$=()=>z(w,I);M?M(p.el,I,$):$()}else I()},Tt=(p,h)=>{let w;for(;p!==h;)w=d(p),s(p),p=w;s(h)},rs=(p,h,w)=>{const{bum:L,scope:S,update:I,subTree:z,um:M}=p;L&&Os(L),S.stop(),I&&(I.active=!1,$e(z,p,h,w)),M&&tt(M,h),tt(()=>{p.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&p.asyncDep&&!p.asyncResolved&&p.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},Ke=(p,h,w,L=!1,S=!1,I=0)=>{for(let z=I;zp.shapeFlag&6?O(p.component.subTree):p.shapeFlag&128?p.suspense.next():d(p.anchor||p.el);let B=!1;const D=(p,h,w)=>{p==null?h._vnode&&$e(h._vnode,null,null,!0):v(h._vnode||null,p,h,null,null,null,w),B||(B=!0,Wo(),uu(),B=!1),h._vnode=p},W={p:v,um:$e,m:lt,r:Lt,mt:be,mc:P,pc:de,pbc:x,n:O,o:e};let me,Ae;return t&&([me,Ae]=t(W)),{render:D,hydrate:me,createApp:om(D,me)}}function Ra({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function pn({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function gm(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Nu(e,t,n=!1){const r=e.children,s=t.children;if(X(r)&&X(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}function $u(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:$u(t)}const ym=e=>e.__isTeleport,ze=Symbol.for("v-fgt"),la=Symbol.for("v-txt"),dt=Symbol.for("v-cmt"),Ma=Symbol.for("v-stc"),Sr=[];let gt=null;function F(e=!1){Sr.push(gt=e?null:[])}function bm(){Sr.pop(),gt=Sr[Sr.length-1]||null}let Ir=1;function sl(e){Ir+=e}function Hu(e){return e.dynamicChildren=Ir>0?gt||jn:null,bm(),Ir>0&>&>.push(e),e}function q(e,t,n,r,s,a){return Hu(Q(e,t,n,r,s,a,!0))}function Xe(e,t,n,r,s){return Hu(ne(e,t,n,r,s,!0))}function Nr(e){return e?e.__v_isVNode===!0:!1}function gn(e,t){return e.type===t.type&&e.key===t.key}const ca="__vInternal",Fu=({key:e})=>e??null,Ts=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Ne(e)||Le(e)||ae(e)?{i:Me,r:e,k:t,f:!!n}:e:null);function Q(e,t=null,n=null,r=0,s=null,a=e===ze?0:1,i=!1,o=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Fu(t),ref:t&&Ts(t),scopeId:pu,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:Me};return o?(ao(l,n),a&128&&e.normalize(l)):n&&(l.shapeFlag|=Ne(n)?8:16),Ir>0&&!i&>&&(l.patchFlag>0||a&6)&&l.patchFlag!==32&>.push(l),l}const ne=wm;function wm(e,t=null,n=null,r=0,s=null,a=!1){if((!e||e===Hp)&&(e=dt),Nr(e)){const o=on(e,t,!0);return n&&ao(o,n),Ir>0&&!a&>&&(o.shapeFlag&6?gt[gt.indexOf(e)]=o:gt.push(o)),o.patchFlag|=-2,o}if(Lm(e)&&(e=e.__vccOpts),t){t=_m(t);let{class:o,style:l}=t;o&&!Ne(o)&&(t.class=Se(o)),ye(l)&&(ru(l)&&!X(l)&&(l=Ie({},l)),t.style=an(l))}const i=Ne(e)?1:Dp(e)?128:ym(e)?64:ye(e)?4:ae(e)?2:0;return Q(e,t,n,r,s,i,a,!0)}function _m(e){return e?ru(e)||ca in e?Ie({},e):e:null}function on(e,t,n=!1){const{props:r,ref:s,patchFlag:a,children:i}=e,o=t?io(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:o,key:o&&Fu(o),ref:t&&t.ref?n&&s?X(s)?s.concat(Ts(t)):[s,Ts(t)]:Ts(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!==ze?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&&on(e.ssContent),ssFallback:e.ssFallback&&on(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Re(e=" ",t=0){return ne(la,null,e,t)}function le(e="",t=!1){return t?(F(),Xe(dt,null,e)):ne(dt,null,e)}function St(e){return e==null||typeof e=="boolean"?ne(dt):X(e)?ne(ze,null,e.slice()):typeof e=="object"?Xt(e):ne(la,null,String(e))}function Xt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:on(e)}function ao(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(X(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),ao(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(ca in t)?t._ctx=Me:s===3&&Me&&(Me.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ae(t)?(t={default:t,_ctx:Me},n=32):(t=String(t),r&64?(n=16,t=[Re(t)]):n=8);e.children=t,e.shapeFlag|=n}function io(...e){const t={};for(let n=0;nVe||Me;let js,ui;{const e=Dc(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),a=>{s.length>1?s.forEach(i=>i(a)):s[0](a)}};js=t("__VUE_INSTANCE_SETTERS__",n=>Ve=n),ui=t("__VUE_SSR_SETTERS__",n=>ua=n)}const Yr=e=>{const t=Ve;return js(e),e.scope.on(),()=>{e.scope.off(),js(t)}},al=()=>{Ve&&Ve.scope.off(),js(null)};function Du(e){return e.vnode.shapeFlag&4}let ua=!1;function Am(e,t=!1){t&&ui(t);const{props:n,children:r}=e.vnode,s=Du(e);cm(e,n,s,t),dm(e,r);const a=s?km(e,t):void 0;return t&&ui(!1),a}function km(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=na(new Proxy(e.ctx,Qp));const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?Vu(e):null,a=Yr(e);An();const i=nn(r,e,0,[e.props,s]);if(kn(),a(),$c(i)){if(i.then(al,al),t)return i.then(o=>{il(e,o,t)}).catch(o=>{ra(o,e,0)});e.asyncDep=i}else il(e,i,t)}else zu(e,t)}function il(e,t,n){ae(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ye(t)&&(e.setupState=iu(t)),zu(e,n)}let ol;function zu(e,t,n){const r=e.type;if(!e.render){if(!t&&ol&&!r.render){const s=r.template||ro(e).template;if(s){const{isCustomElement:a,compilerOptions:i}=e.appContext.config,{delimiters:o,compilerOptions:l}=r,u=Ie(Ie({isCustomElement:a,delimiters:o},i),l);r.render=ol(s,u)}}e.render=r.render||ut}{const s=Yr(e);An();try{tm(e)}finally{kn(),s()}}}function Cm(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return rt(e,"get","$attrs"),t[n]}}))}function Vu(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Cm(e)},slots:e.slots,emit:e.emit,expose:t}}function fa(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(iu(na(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Er)return Er[n](e)},has(t,n){return n in t||n in Er}}))}function Om(e,t=!0){return ae(e)?e.displayName||e.name:e.name||t&&e.__name}function Lm(e){return ae(e)&&"__vccOpts"in e}const se=(e,t)=>yp(e,t,ua);function Jr(e,t,n){const r=arguments.length;return r===2?ye(t)&&!X(t)?Nr(t)?ne(e,null,[t]):ne(e,t):ne(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Nr(n)&&(n=[n]),ne(e,t,n))}const Tm="3.4.21";/** +* @vue/runtime-dom v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Pm="http://www.w3.org/2000/svg",Rm="http://www.w3.org/1998/Math/MathML",Qt=typeof document<"u"?document:null,ll=Qt&&Qt.createElement("template"),Mm={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==="svg"?Qt.createElementNS(Pm,e):t==="mathml"?Qt.createElementNS(Rm,e):Qt.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Qt.createTextNode(e),createComment:e=>Qt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Qt.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{ll.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const o=ll.content;if(r==="svg"||r==="mathml"){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]}},Bt="transition",fr="animation",Jn=Symbol("_vtc"),ju=(e,{slots:t})=>Jr(Kp,Uu(e),t);ju.displayName="Transition";const Bu={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},Im=ju.props=Ie({},yu,Bu),mn=(e,t=[])=>{X(e)?e.forEach(n=>n(...t)):e&&e(...t)},cl=e=>e?X(e)?e.some(t=>t.length>1):e.length>1:!1;function Uu(e){const t={};for(const C in e)C in Bu||(t[C]=e[C]);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:u=i,appearToClass:c=o,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,g=Nm(s),v=g&&g[0],_=g&&g[1],{onBeforeEnter:b,onEnter:y,onEnterCancelled:k,onLeave:T,onLeaveCancelled:N,onBeforeAppear:V=b,onAppear:G=y,onAppearCancelled:P=k}=t,H=(C,te,be)=>{qt(C,te?c:o),qt(C,te?u:i),be&&be()},x=(C,te)=>{C._isLeaving=!1,qt(C,f),qt(C,m),qt(C,d),te&&te()},E=C=>(te,be)=>{const Ce=C?G:y,ie=()=>H(te,C,be);mn(Ce,[te,ie]),ul(()=>{qt(te,C?l:a),Rt(te,C?c:o),cl(Ce)||fl(te,r,v,ie)})};return Ie(t,{onBeforeEnter(C){mn(b,[C]),Rt(C,a),Rt(C,i)},onBeforeAppear(C){mn(V,[C]),Rt(C,l),Rt(C,u)},onEnter:E(!1),onAppear:E(!0),onLeave(C,te){C._isLeaving=!0;const be=()=>x(C,te);Rt(C,f),Wu(),Rt(C,d),ul(()=>{C._isLeaving&&(qt(C,f),Rt(C,m),cl(T)||fl(C,r,_,be))}),mn(T,[C,be])},onEnterCancelled(C){H(C,!1),mn(k,[C])},onAppearCancelled(C){H(C,!0),mn(P,[C])},onLeaveCancelled(C){x(C),mn(N,[C])}})}function Nm(e){if(e==null)return null;if(ye(e))return[Ia(e.enter),Ia(e.leave)];{const t=Ia(e);return[t,t]}}function Ia(e){return Bd(e)}function Rt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Jn]||(e[Jn]=new Set)).add(t)}function qt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Jn];n&&(n.delete(t),n.size||(e[Jn]=void 0))}function ul(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let $m=0;function fl(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}=Ku(e,t);if(!i)return r();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,d),a()},d=m=>{m.target===e&&++c>=l&&f()};setTimeout(()=>{c(n[g]||"").split(", "),s=r(`${Bt}Delay`),a=r(`${Bt}Duration`),i=dl(s,a),o=r(`${fr}Delay`),l=r(`${fr}Duration`),u=dl(o,l);let c=null,f=0,d=0;t===Bt?i>0&&(c=Bt,f=i,d=a.length):t===fr?u>0&&(c=fr,f=u,d=l.length):(f=Math.max(i,u),c=f>0?i>u?Bt:fr:null,d=c?c===Bt?a.length:l.length:0);const m=c===Bt&&/\b(transform|all)(,|$)/.test(r(`${Bt}Property`).toString());return{type:c,timeout:f,propCount:d,hasTransform:m}}function dl(e,t){for(;e.lengthpl(n)+pl(e[r])))}function pl(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Wu(){return document.body.offsetHeight}function Hm(e,t,n){const r=e[Jn];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Bs=Symbol("_vod"),qu=Symbol("_vsh"),Q3={beforeMount(e,{value:t},{transition:n}){e[Bs]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):dr(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),dr(e,!0),r.enter(e)):r.leave(e,()=>{dr(e,!1)}):dr(e,t))},beforeUnmount(e,{value:t}){dr(e,t)}};function dr(e,t){e.style.display=t?e[Bs]:"none",e[qu]=!t}const Fm=Symbol(""),Dm=/(^|;)\s*display\s*:/;function zm(e,t,n){const r=e.style,s=Ne(n);let a=!1;if(n&&!s){if(t)if(Ne(t))for(const i of t.split(";")){const o=i.slice(0,i.indexOf(":")).trim();n[o]==null&&Ps(r,o,"")}else for(const i in t)n[i]==null&&Ps(r,i,"");for(const i in n)i==="display"&&(a=!0),Ps(r,i,n[i])}else if(s){if(t!==n){const i=r[Fm];i&&(n+=";"+i),r.cssText=n,a=Dm.test(n)}}else t&&e.removeAttribute("style");Bs in e&&(e[Bs]=a?r.display:"",e[qu]&&(r.display="none"))}const ml=/\s*!important$/;function Ps(e,t,n){if(X(n))n.forEach(r=>Ps(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Vm(e,t);ml.test(n)?e.setProperty(xn(r),n.replace(ml,""),"important"):e[r]=n}}const hl=["Webkit","Moz","ms"],Na={};function Vm(e,t){const n=Na[t];if(n)return n;let r=Ct(t);if(r!=="filter"&&r in e)return Na[t]=r;r=ea(r);for(let s=0;s$a||(qm.then(()=>$a=0),$a=Date.now());function Ym(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;ft(Jm(r,n.value),t,5,[r])};return n.value=e,n.attached=Gm(),n}function Jm(e,t){if(X(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 bl=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Xm=(e,t,n,r,s,a,i,o,l)=>{const u=s==="svg";t==="class"?Hm(e,r,u):t==="style"?zm(e,n,r):Qs(t)?Hi(t)||Km(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Qm(e,t,r,u))?Bm(e,t,r,a,i,o,l):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),jm(e,t,r,u))};function Qm(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&bl(t)&&ae(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return bl(t)&&Ne(n)?!1:t in e}const Gu=new WeakMap,Yu=new WeakMap,Us=Symbol("_moveCb"),wl=Symbol("_enterCb"),Ju={name:"TransitionGroup",props:Ie({},Im,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=ar(),r=vu();let s,a;return xu(()=>{if(!s.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!rh(s[0].el,n.vnode.el,i))return;s.forEach(eh),s.forEach(th);const o=s.filter(nh);Wu(),o.forEach(l=>{const u=l.el,c=u.style;Rt(u,i),c.transform=c.webkitTransform=c.transitionDuration="";const f=u[Us]=d=>{d&&d.target!==u||(!d||/transform$/.test(d.propertyName))&&(u.removeEventListener("transitionend",f),u[Us]=null,qt(u,i))};u.addEventListener("transitionend",f)})}),()=>{const i=ce(e),o=Uu(i);let l=i.tag||ze;s=a,a=t.default?no(t.default()):[];for(let u=0;udelete e.mode;Ju.props;const Xu=Ju;function eh(e){const t=e.el;t[Us]&&t[Us](),t[wl]&&t[wl]()}function th(e){Yu.set(e,e.el.getBoundingClientRect())}function nh(e){const t=Gu.get(e),n=Yu.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 rh(e,t,n){const r=e.cloneNode(),s=e[Jn];s&&s.forEach(o=>{o.split(/\s+/).forEach(l=>l&&r.classList.remove(l))}),n.split(/\s+/).forEach(o=>o&&r.classList.add(o)),r.style.display="none";const a=t.nodeType===1?t:t.parentNode;a.appendChild(r);const{hasTransform:i}=Ku(r);return a.removeChild(r),i}const Ks=e=>{const t=e.props["onUpdate:modelValue"]||!1;return X(t)?n=>Os(t,n):t},Wn=Symbol("_assign"),sh={deep:!0,created(e,t,n){e[Wn]=Ks(n),oo(e,"change",()=>{const r=e._modelValue,s=$r(e),a=e.checked,i=e[Wn];if(X(r)){const o=Vi(r,s),l=o!==-1;if(a&&!l)i(r.concat(s));else if(!a&&l){const u=[...r];u.splice(o,1),i(u)}}else if(rr(r)){const o=new Set(r);a?o.add(s):o.delete(s),i(o)}else i(Qu(e,a))})},mounted:_l,beforeUpdate(e,t,n){e[Wn]=Ks(n),_l(e,t,n)}};function _l(e,{value:t,oldValue:n},r){e._modelValue=t,X(t)?e.checked=Vi(t,r.props.value)>-1:rr(t)?e.checked=t.has(r.props.value):t!==n&&(e.checked=Gr(t,Qu(e,!0)))}const ah={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const s=rr(t);oo(e,"change",()=>{const a=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?zi($r(i)):$r(i));e[Wn](e.multiple?s?new Set(a):a:a[0]),e._assigning=!0,Cn(()=>{e._assigning=!1})}),e[Wn]=Ks(r)},mounted(e,{value:t,modifiers:{number:n}}){El(e,t,n)},beforeUpdate(e,t,n){e[Wn]=Ks(n)},updated(e,{value:t,modifiers:{number:n}}){e._assigning||El(e,t,n)}};function El(e,t,n){const r=e.multiple,s=X(t);if(!(r&&!s&&!rr(t))){for(let a=0,i=e.options.length;a-1}else o.selected=t.has(l);else if(Gr($r(o),t)){e.selectedIndex!==a&&(e.selectedIndex=a);return}}!r&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function $r(e){return"_value"in e?e._value:e.value}function Qu(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const ih=["ctrl","shift","alt","meta"],oh={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)=>ih.some(n=>e[`${n}Key`]&&!t.includes(n))},da=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...a)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const a=xn(s.key);if(t.some(i=>i===a||lh[i]===a))return e(s)})},ch=Ie({patchProp:Xm},Mm);let Sl;function uh(){return Sl||(Sl=mm(ch))}const fh=(...e)=>{const t=uh().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=ph(r);if(!s)return;const a=t._component;!ae(a)&&!a.render&&!a.template&&(a.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,dh(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t};function dh(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ph(e){return Ne(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 Zu=new Map;class mh{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 hh(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 Ws=hh(),Ha="[-+]?[0-9]*.?[0-9]+",xl=[{name:"px",regexp:new RegExp(`^${Ha}px$`)},{name:"%",regexp:new RegExp(`^${Ha}%$`)},{name:"px",regexp:new RegExp(`^${Ha}$`)}],gh=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 gh(e);default:return{type:"",value:e}}},Al={x:new Set(["left","center","right"]),y:new Set(["top","bottom"])},yh=(e=>()=>e++)(0),bh=e=>typeof e!="string"?[]:e.split(/\s+/gi).filter(Boolean),wh=e=>{typeof e=="string"&&(e=bh(e));let t=null,n=null;return e.forEach(r=>{Al.y.has(r)&&(n=r),Al.x.has(r)&&(t=r)}),{x:t,y:n}},Fa={position:["top","right"],cssAnimation:"vn-fade",velocityAnimation:{enter:e=>({height:[e.clientHeight,0],opacity:[1,0]}),leave:{height:0,opacity:[0,1]}}},_h=fn({name:"velocity-group",inheritAttrs:!1,props:{name:{type:String,default:""}},emits:{enter:(e,t)=>!0,leave:(e,t)=>!0,afterLeave:()=>!0},setup:(e,{slots:t,emit:n})=>{const r=(i,o)=>{n("enter",i,o)},s=(i,o)=>{n("leave",i,o)},a=()=>{n("afterLeave")};return()=>ne(Xu,{tag:"div",css:!1,name:e.name,onEnter:r,onLeave:s,onAfterLeave:a},{default:()=>{var i;return[(i=t.default)==null?void 0:i.call(t)]}})}}),Eh=fn({name:"css-group",inheritAttrs:!1,props:{name:{type:String,default:""}},setup:(e,{slots:t})=>()=>ne(Xu,{tag:"div",name:e.name},{default:()=>{var n;return[(n=t.default)==null?void 0:n.call(t)]}})});function Sh(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Nr(e)}const fs={IDLE:0,DESTROYED:2},xh=fn({name:"notifications",props:{group:{type:String,default:""},width:{type:[Number,String],default:300},reverse:{type:Boolean,default:!1},position:{type:[String,Array],default:()=>Fa.position},classes:{type:[String,Array],default:"vue-notification"},animationType:{type:String,default:"css",validator(e){return e==="css"||e==="velocity"}},animation:{type:Object,default(){return Fa.velocityAnimation}},animationName:{type:String,default:Fa.cssAnimation},speed:{type:Number,default:300},duration:{type:Number,default:3e3},delay:{type:Number,default:0},max:{type:Number,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:e=>!0,destroy:e=>!0,start:e=>!0},slots:Object,setup:(e,{emit:t,slots:n,expose:r})=>{const s=he([]),a=he(null),i=Zu.get("velocity"),o=se(()=>e.animationType==="velocity"),l=se(()=>o.value?_h:Eh),u=se(()=>s.value.filter(E=>E.state!==fs.DESTROYED)),c=se(()=>vh(e.width)),f=se(()=>{const{x:E,y:C}=wh(e.position),te=c.value.value,be=c.value.type,Ce={width:te+be};return C&&(Ce[C]="0px"),E&&(E==="center"?Ce.left=`calc(50% - ${+te/2}${be})`:Ce[E]="0px"),Ce}),d=se(()=>"bottom"in f.value),m=E=>{t("click",E),e.closeOnClick&&T(E)},g=()=>{var E;e.pauseOnHover&&((E=a.value)==null||E.pause())},v=()=>{var E;e.pauseOnHover&&((E=a.value)==null||E.resume())},_=(E={})=>{if(E.group||(E.group=""),E.data||(E.data={}),e.group!==E.group)return;if(E.clean||E.clear){V();return}const C=typeof E.duration=="number"?E.duration:e.duration,te=typeof E.speed=="number"?E.speed:e.speed,be=typeof E.ignoreDuplicates=="boolean"?E.ignoreDuplicates:e.ignoreDuplicates,{title:Ce,text:ie,type:pe,data:de,id:mt}=E,Ue={id:mt||yh(),title:Ce,text:ie,type:pe,state:fs.IDLE,speed:te,length:C+2*te,data:de,duplicates:0};C>=0&&(a.value=new mh(()=>T(Ue),Ue.length,Ue));const lt=e.reverse?!d.value:d.value;let $e=-1;const Lt=u.value.find(Tt=>Tt.title===E.title&&Tt.text===E.text);if(be&&Lt){Lt.duplicates++;return}lt?(s.value.push(Ue),t("start",Ue),u.value.length>e.max&&($e=0)):(s.value.unshift(Ue),t("start",Ue),u.value.length>e.max&&($e=u.value.length-1)),$e!==-1&&T(u.value[$e])},b=E=>{N(E)},y=E=>["vue-notification-template",e.classes,E.type||""],k=E=>o.value?void 0:{transition:`all ${E.speed}ms`},T=E=>{clearTimeout(E.timer),E.state=fs.DESTROYED,x(),t("destroy",E)},N=E=>{const C=s.value.find(te=>te.id===E);C&&T(C)},V=()=>{u.value.forEach(T)},G=(E,C)=>{var te;const be=(te=e.animation)==null?void 0:te[E];return typeof be=="function"?be(C):be},P=(E,C)=>{if(!o.value)return;const te=G("enter",E);i(E,te,{duration:e.speed,complete:C})},H=(E,C)=>{if(!o.value)return;const te=G("leave",E);i(E,te,{duration:e.speed,complete:C})};function x(){s.value=s.value.filter(E=>E.state!==fs.DESTROYED)}return On(()=>{Ws.on("add",_),Ws.on("close",b)}),()=>{let E;return ne("div",{class:"vue-notification-group",style:f.value},[ne(l.value,{name:e.animationName,onEnter:P,onLeave:H,onAfterLeave:x},Sh(E=u.value.map(C=>ne("div",{key:C.id,class:"vue-notification-wrapper",style:k(C),"data-id":C.id,onMouseenter:g,onMouseleave:v},[n.body?n.body({item:C,class:[e.classes,C.type],close:()=>T(C)}):ne("div",{class:y(C),onClick:()=>m(C)},[e.dangerouslySetInnerHtml?ne(ze,null,[C.title?ne("div",{class:"notification-title",innerHTML:C.title},null):null,ne("div",{class:"notification-content",innerHTML:C.text},null)]):ne(ze,null,[C.title?ne("div",{class:"notification-title"},[C.title]):null,ne("div",{class:"notification-content"},[C.text])])])])))?E:{default:()=>[E]})])}}}),lo=e=>{typeof e=="string"&&(e={title:"",text:e}),typeof e=="object"&&Ws.emit("add",e)};lo.close=e=>{Ws.emit("close",e)};const ef=()=>({notify:lo}),Ah="Notifications";function kh(e,t={}){Object.entries(t).forEach(r=>Zu.set(...r));const n=t.name||"notify";e.config.globalProperties["$"+n]=lo,e.component(t.componentName||Ah,xh)}const Ch={install:kh};/*! + * vue-router v4.3.0 + * (c) 2024 Eduardo San Martin Morote + * @license MIT + */const Hn=typeof document<"u";function Oh(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ge=Object.assign;function Da(e,t){const n={};for(const r in t){const s=t[r];n[r]=bt(s)?s.map(e):e(s)}return n}const xr=()=>{},bt=Array.isArray,tf=/#/g,Lh=/&/g,Th=/\//g,Ph=/=/g,Rh=/\?/g,nf=/\+/g,Mh=/%5B/g,Ih=/%5D/g,rf=/%5E/g,Nh=/%60/g,sf=/%7B/g,$h=/%7C/g,af=/%7D/g,Hh=/%20/g;function co(e){return encodeURI(""+e).replace($h,"|").replace(Mh,"[").replace(Ih,"]")}function Fh(e){return co(e).replace(sf,"{").replace(af,"}").replace(rf,"^")}function di(e){return co(e).replace(nf,"%2B").replace(Hh,"+").replace(tf,"%23").replace(Lh,"%26").replace(Nh,"`").replace(sf,"{").replace(af,"}").replace(rf,"^")}function Dh(e){return di(e).replace(Ph,"%3D")}function zh(e){return co(e).replace(tf,"%23").replace(Rh,"%3F")}function Vh(e){return e==null?"":zh(e).replace(Th,"%2F")}function Hr(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const jh=/\/$/,Bh=e=>e.replace(jh,"");function za(e,t,n="/"){let r,s={},a="",i="";const o=t.indexOf("#");let l=t.indexOf("?");return o=0&&(l=-1),l>-1&&(r=t.slice(0,l),a=t.slice(l+1,o>-1?o:t.length),s=e(a)),o>-1&&(r=r||t.slice(0,o),i=t.slice(o,t.length)),r=qh(r??t,n),{fullPath:r+(a&&"?")+a+i,path:r,query:s,hash:Hr(i)}}function Uh(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function kl(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Kh(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&Xn(t.matched[r],n.matched[s])&&of(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Xn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function of(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Wh(e[n],t[n]))return!1;return!0}function Wh(e,t){return bt(e)?Cl(e,t):bt(t)?Cl(t,e):e===t}function Cl(e,t){return bt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function qh(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let a=n.length-1,i,o;for(i=0;i1&&a--;else break;return n.slice(0,a).join("/")+"/"+r.slice(i).join("/")}var Fr;(function(e){e.pop="pop",e.push="push"})(Fr||(Fr={}));var Ar;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Ar||(Ar={}));function Gh(e){if(!e)if(Hn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Bh(e)}const Yh=/^[^#]+#/;function Jh(e,t){return e.replace(Yh,"#")+t}function Xh(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const pa=()=>({left:window.scrollX,top:window.scrollY});function Qh(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Xh(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Ol(e,t){return(history.state?history.state.position-t:-1)+e}const pi=new Map;function Zh(e,t){pi.set(e,t)}function e1(e){const t=pi.get(e);return pi.delete(e),t}let t1=()=>location.protocol+"//"+location.host;function lf(e,t){const{pathname:n,search:r,hash:s}=t,a=e.indexOf("#");if(a>-1){let o=s.includes(e.slice(a))?e.slice(a).length:1,l=s.slice(o);return l[0]!=="/"&&(l="/"+l),kl(l,"")}return kl(n,e)+r+s}function n1(e,t,n,r){let s=[],a=[],i=null;const o=({state:d})=>{const m=lf(e,location),g=n.value,v=t.value;let _=0;if(d){if(n.value=m,t.value=d,i&&i===g){i=null;return}_=v?d.position-v.position:0}else r(m);s.forEach(b=>{b(n.value,g,{delta:_,type:Fr.pop,direction:_?_>0?Ar.forward:Ar.back:Ar.unknown})})};function l(){i=n.value}function u(d){s.push(d);const m=()=>{const g=s.indexOf(d);g>-1&&s.splice(g,1)};return a.push(m),m}function c(){const{history:d}=window;d.state&&d.replaceState(ge({},d.state,{scroll:pa()}),"")}function f(){for(const d of a)d();a=[],window.removeEventListener("popstate",o),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",o),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:l,listen:u,destroy:f}}function Ll(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?pa():null}}function r1(e){const{history:t,location:n}=window,r={value:lf(e,n)},s={value:t.state};s.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(l,u,c){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:t1()+e+l;try{t[c?"replaceState":"pushState"](u,"",d),s.value=u}catch(m){console.error(m),n[c?"replace":"assign"](d)}}function i(l,u){const c=ge({},t.state,Ll(s.value.back,l,s.value.forward,!0),u,{position:s.value.position});a(l,c,!0),r.value=l}function o(l,u){const c=ge({},s.value,t.state,{forward:l,scroll:pa()});a(c.current,c,!0);const f=ge({},Ll(r.value,l,null),{position:c.position+1},u);a(l,f,!1),r.value=l}return{location:r,state:s,push:o,replace:i}}function s1(e){e=Gh(e);const t=r1(e),n=n1(e,t.state,t.location,t.replace);function r(a,i=!0){i||n.pauseListeners(),history.go(a)}const s=ge({location:"",base:e,go:r,createHref:Jh.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function a1(e){return typeof e=="string"||e&&typeof e=="object"}function cf(e){return typeof e=="string"||typeof e=="symbol"}const Ut={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},uf=Symbol("");var Tl;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Tl||(Tl={}));function Qn(e,t){return ge(new Error,{type:e,[uf]:!0},t)}function Pt(e,t){return e instanceof Error&&uf in e&&(t==null||!!(e.type&t))}const Pl="[^/]+?",i1={sensitive:!1,strict:!1,start:!0,end:!0},o1=/[.+*?^${}()[\]/\\]/g;function l1(e,t){const n=ge({},i1,t),r=[];let s=n.start?"^":"";const a=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(s+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function u1(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const f1={type:0,value:""},d1=/[a-zA-Z0-9_]/;function p1(e){if(!e)return[[]];if(e==="/")return[[f1]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${u}": ${m}`)}let n=0,r=n;const s=[];let a;function i(){a&&s.push(a),a=[]}let o=0,l,u="",c="";function f(){u&&(n===0?a.push({type:0,value:u}):n===1||n===2||n===3?(a.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=l}for(;o{i(y)}:xr}function i(c){if(cf(c)){const f=r.get(c);f&&(r.delete(c),n.splice(n.indexOf(f),1),f.children.forEach(i),f.alias.forEach(i))}else{const f=n.indexOf(c);f>-1&&(n.splice(f,1),c.record.name&&r.delete(c.record.name),c.children.forEach(i),c.alias.forEach(i))}}function o(){return n}function l(c){let f=0;for(;f=0&&(c.record.path!==n[f].record.path||!ff(c,n[f]));)f++;n.splice(f,0,c),c.record.name&&!Il(c)&&r.set(c.record.name,c)}function u(c,f){let d,m={},g,v;if("name"in c&&c.name){if(d=r.get(c.name),!d)throw Qn(1,{location:c});v=d.record.name,m=ge(Ml(f.params,d.keys.filter(y=>!y.optional).concat(d.parent?d.parent.keys.filter(y=>y.optional):[]).map(y=>y.name)),c.params&&Ml(c.params,d.keys.map(y=>y.name))),g=d.stringify(m)}else if(c.path!=null)g=c.path,d=n.find(y=>y.re.test(g)),d&&(m=d.parse(g),v=d.record.name);else{if(d=f.name?r.get(f.name):n.find(y=>y.re.test(f.path)),!d)throw Qn(1,{location:c,currentLocation:f});v=d.record.name,m=ge({},f.params,c.params),g=d.stringify(m)}const _=[];let b=d;for(;b;)_.unshift(b.record),b=b.parent;return{name:v,path:g,params:m,matched:_,meta:y1(_)}}return e.forEach(c=>a(c)),{addRoute:a,resolve:u,removeRoute:i,getRoutes:o,getRecordMatcher:s}}function Ml(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function g1(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:v1(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function v1(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Il(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function y1(e){return e.reduce((t,n)=>ge(t,n.meta),{})}function Nl(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function ff(e,t){return t.children.some(n=>n===e||ff(e,n))}function b1(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sa&&di(a)):[r&&di(r)]).forEach(a=>{a!==void 0&&(t+=(t.length?"&":"")+n,a!=null&&(t+="="+a))})}return t}function w1(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=bt(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const df=Symbol(""),Hl=Symbol(""),ma=Symbol(""),uo=Symbol(""),mi=Symbol("");function pr(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function _1(e,t,n){const r=()=>{e[t].delete(n)};oa(r),_u(r),wu(()=>{e[t].add(n)}),e[t].add(n)}function Z3(e){const t=nt(df,{}).value;t&&_1(t,"leaveGuards",e)}function Zt(e,t,n,r,s,a=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((o,l)=>{const u=d=>{d===!1?l(Qn(4,{from:n,to:t})):d instanceof Error?l(d):a1(d)?l(Qn(2,{from:t,to:d})):(i&&r.enterCallbacks[s]===i&&typeof d=="function"&&i.push(d),o())},c=a(()=>e.call(r&&r.instances[s],t,n,u));let f=Promise.resolve(c);e.length<3&&(f=f.then(u)),f.catch(d=>l(d))})}function Va(e,t,n,r,s=a=>a()){const a=[];for(const i of e)for(const o in i.components){let l=i.components[o];if(!(t!=="beforeRouteEnter"&&!i.instances[o]))if(E1(l)){const c=(l.__vccOpts||l)[t];c&&a.push(Zt(c,n,r,i,o,s))}else{let u=l();a.push(()=>u.then(c=>{if(!c)return Promise.reject(new Error(`Couldn't resolve component "${o}" at "${i.path}"`));const f=Oh(c)?c.default:c;i.components[o]=f;const m=(f.__vccOpts||f)[t];return m&&Zt(m,n,r,i,o,s)()}))}}return a}function E1(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Fl(e){const t=nt(ma),n=nt(uo),r=se(()=>t.resolve(Y(e.to))),s=se(()=>{const{matched:l}=r.value,{length:u}=l,c=l[u-1],f=n.matched;if(!c||!f.length)return-1;const d=f.findIndex(Xn.bind(null,c));if(d>-1)return d;const m=Dl(l[u-2]);return u>1&&Dl(c)===m&&f[f.length-1].path!==m?f.findIndex(Xn.bind(null,l[u-2])):d}),a=se(()=>s.value>-1&&k1(n.params,r.value.params)),i=se(()=>s.value>-1&&s.value===n.matched.length-1&&of(n.params,r.value.params));function o(l={}){return A1(l)?t[Y(e.replace)?"replace":"push"](Y(e.to)).catch(xr):Promise.resolve()}return{route:r,href:se(()=>r.value.href),isActive:a,isExactActive:i,navigate:o}}const S1=fn({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Fl,setup(e,{slots:t}){const n=Nt(Fl(e)),{options:r}=nt(ma),s=se(()=>({[zl(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[zl(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const a=t.default&&t.default(n);return e.custom?a:Jr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},a)}}}),x1=S1;function A1(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function k1(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!bt(s)||s.length!==r.length||r.some((a,i)=>a!==s[i]))return!1}return!0}function Dl(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const zl=(e,t,n)=>e??t??n,C1=fn({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=nt(mi),s=se(()=>e.route||r.value),a=nt(Hl,0),i=se(()=>{let u=Y(a);const{matched:c}=s.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),o=se(()=>s.value.matched[i.value]);Ls(Hl,se(()=>i.value+1)),Ls(df,o),Ls(mi,s);const l=he();return je(()=>[l.value,o.value,e.name],([u,c,f],[d,m,g])=>{c&&(c.instances[f]=u,m&&m!==c&&u&&u===d&&(c.leaveGuards.size||(c.leaveGuards=m.leaveGuards),c.updateGuards.size||(c.updateGuards=m.updateGuards))),u&&c&&(!m||!Xn(c,m)||!d)&&(c.enterCallbacks[f]||[]).forEach(v=>v(u))},{flush:"post"}),()=>{const u=s.value,c=e.name,f=o.value,d=f&&f.components[c];if(!d)return Vl(n.default,{Component:d,route:u});const m=f.props[c],g=m?m===!0?u.params:typeof m=="function"?m(u):m:null,_=Jr(d,ge({},g,t,{onVnodeUnmounted:b=>{b.component.isUnmounted&&(f.instances[c]=null)},ref:l}));return Vl(n.default,{Component:_,route:u})||_}}});function Vl(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const pf=C1;function O1(e){const t=h1(e.routes,e),n=e.parseQuery||b1,r=e.stringifyQuery||$l,s=e.history,a=pr(),i=pr(),o=pr(),l=Xi(Ut);let u=Ut;Hn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=Da.bind(null,O=>""+O),f=Da.bind(null,Vh),d=Da.bind(null,Hr);function m(O,B){let D,W;return cf(O)?(D=t.getRecordMatcher(O),W=B):W=O,t.addRoute(W,D)}function g(O){const B=t.getRecordMatcher(O);B&&t.removeRoute(B)}function v(){return t.getRoutes().map(O=>O.record)}function _(O){return!!t.getRecordMatcher(O)}function b(O,B){if(B=ge({},B||l.value),typeof O=="string"){const h=za(n,O,B.path),w=t.resolve({path:h.path},B),L=s.createHref(h.fullPath);return ge(h,w,{params:d(w.params),hash:Hr(h.hash),redirectedFrom:void 0,href:L})}let D;if(O.path!=null)D=ge({},O,{path:za(n,O.path,B.path).path});else{const h=ge({},O.params);for(const w in h)h[w]==null&&delete h[w];D=ge({},O,{params:f(h)}),B.params=f(B.params)}const W=t.resolve(D,B),me=O.hash||"";W.params=c(d(W.params));const Ae=Uh(r,ge({},O,{hash:Fh(me),path:W.path})),p=s.createHref(Ae);return ge({fullPath:Ae,hash:me,query:r===$l?w1(O.query):O.query||{}},W,{redirectedFrom:void 0,href:p})}function y(O){return typeof O=="string"?za(n,O,l.value.path):ge({},O)}function k(O,B){if(u!==O)return Qn(8,{from:B,to:O})}function T(O){return G(O)}function N(O){return T(ge(y(O),{replace:!0}))}function V(O){const B=O.matched[O.matched.length-1];if(B&&B.redirect){const{redirect:D}=B;let W=typeof D=="function"?D(O):D;return typeof W=="string"&&(W=W.includes("?")||W.includes("#")?W=y(W):{path:W},W.params={}),ge({query:O.query,hash:O.hash,params:W.path!=null?{}:O.params},W)}}function G(O,B){const D=u=b(O),W=l.value,me=O.state,Ae=O.force,p=O.replace===!0,h=V(D);if(h)return G(ge(y(h),{state:typeof h=="object"?ge({},me,h.state):me,force:Ae,replace:p}),B||D);const w=D;w.redirectedFrom=B;let L;return!Ae&&Kh(r,W,D)&&(L=Qn(16,{to:w,from:W}),lt(W,W,!0,!1)),(L?Promise.resolve(L):x(w,W)).catch(S=>Pt(S)?Pt(S,2)?S:Ue(S):de(S,w,W)).then(S=>{if(S){if(Pt(S,2))return G(ge({replace:p},y(S.to),{state:typeof S.to=="object"?ge({},me,S.to.state):me,force:Ae}),B||w)}else S=C(w,W,!0,p,me);return E(w,W,S),S})}function P(O,B){const D=k(O,B);return D?Promise.reject(D):Promise.resolve()}function H(O){const B=Tt.values().next().value;return B&&typeof B.runWithContext=="function"?B.runWithContext(O):O()}function x(O,B){let D;const[W,me,Ae]=L1(O,B);D=Va(W.reverse(),"beforeRouteLeave",O,B);for(const h of W)h.leaveGuards.forEach(w=>{D.push(Zt(w,O,B))});const p=P.bind(null,O,B);return D.push(p),Ke(D).then(()=>{D=[];for(const h of a.list())D.push(Zt(h,O,B));return D.push(p),Ke(D)}).then(()=>{D=Va(me,"beforeRouteUpdate",O,B);for(const h of me)h.updateGuards.forEach(w=>{D.push(Zt(w,O,B))});return D.push(p),Ke(D)}).then(()=>{D=[];for(const h of Ae)if(h.beforeEnter)if(bt(h.beforeEnter))for(const w of h.beforeEnter)D.push(Zt(w,O,B));else D.push(Zt(h.beforeEnter,O,B));return D.push(p),Ke(D)}).then(()=>(O.matched.forEach(h=>h.enterCallbacks={}),D=Va(Ae,"beforeRouteEnter",O,B,H),D.push(p),Ke(D))).then(()=>{D=[];for(const h of i.list())D.push(Zt(h,O,B));return D.push(p),Ke(D)}).catch(h=>Pt(h,8)?h:Promise.reject(h))}function E(O,B,D){o.list().forEach(W=>H(()=>W(O,B,D)))}function C(O,B,D,W,me){const Ae=k(O,B);if(Ae)return Ae;const p=B===Ut,h=Hn?history.state:{};D&&(W||p?s.replace(O.fullPath,ge({scroll:p&&h&&h.scroll},me)):s.push(O.fullPath,me)),l.value=O,lt(O,B,D,p),Ue()}let te;function be(){te||(te=s.listen((O,B,D)=>{if(!rs.listening)return;const W=b(O),me=V(W);if(me){G(ge(me,{replace:!0}),W).catch(xr);return}u=W;const Ae=l.value;Hn&&Zh(Ol(Ae.fullPath,D.delta),pa()),x(W,Ae).catch(p=>Pt(p,12)?p:Pt(p,2)?(G(p.to,W).then(h=>{Pt(h,20)&&!D.delta&&D.type===Fr.pop&&s.go(-1,!1)}).catch(xr),Promise.reject()):(D.delta&&s.go(-D.delta,!1),de(p,W,Ae))).then(p=>{p=p||C(W,Ae,!1),p&&(D.delta&&!Pt(p,8)?s.go(-D.delta,!1):D.type===Fr.pop&&Pt(p,20)&&s.go(-1,!1)),E(W,Ae,p)}).catch(xr)}))}let Ce=pr(),ie=pr(),pe;function de(O,B,D){Ue(O);const W=ie.list();return W.length?W.forEach(me=>me(O,B,D)):console.error(O),Promise.reject(O)}function mt(){return pe&&l.value!==Ut?Promise.resolve():new Promise((O,B)=>{Ce.add([O,B])})}function Ue(O){return pe||(pe=!O,be(),Ce.list().forEach(([B,D])=>O?D(O):B()),Ce.reset()),O}function lt(O,B,D,W){const{scrollBehavior:me}=e;if(!Hn||!me)return Promise.resolve();const Ae=!D&&e1(Ol(O.fullPath,0))||(W||!D)&&history.state&&history.state.scroll||null;return Cn().then(()=>me(O,B,Ae)).then(p=>p&&Qh(p)).catch(p=>de(p,O,B))}const $e=O=>s.go(O);let Lt;const Tt=new Set,rs={currentRoute:l,listening:!0,addRoute:m,removeRoute:g,hasRoute:_,getRoutes:v,resolve:b,options:e,push:T,replace:N,go:$e,back:()=>$e(-1),forward:()=>$e(1),beforeEach:a.add,beforeResolve:i.add,afterEach:o.add,onError:ie.add,isReady:mt,install(O){const B=this;O.component("RouterLink",x1),O.component("RouterView",pf),O.config.globalProperties.$router=B,Object.defineProperty(O.config.globalProperties,"$route",{enumerable:!0,get:()=>Y(l)}),Hn&&!Lt&&l.value===Ut&&(Lt=!0,T(s.location).catch(me=>{}));const D={};for(const me in Ut)Object.defineProperty(D,me,{get:()=>l.value[me],enumerable:!0});O.provide(ma,B),O.provide(uo,nu(D)),O.provide(mi,l);const W=O.unmount;Tt.add(O),O.unmount=function(){Tt.delete(O),Tt.size<1&&(u=Ut,te&&te(),te=null,l.value=Ut,Lt=!1,pe=!1),W()}}};function Ke(O){return O.reduce((B,D)=>B.then(()=>H(D)),Promise.resolve())}return rs}function L1(e,t){const n=[],r=[],s=[],a=Math.max(t.matched.length,e.matched.length);for(let i=0;iXn(u,o))?r.push(o):n.push(o));const l=e.matched[i];l&&(t.matched.find(u=>Xn(u,l))||s.push(l))}return[n,r,s]}function T1(){return nt(ma)}function mf(){return nt(uo)}function ir(e){return ji()?(Uc(e),!0):!1}function it(e){return typeof e=="function"?e():Y(e)}const or=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const P1=Object.prototype.toString,hf=e=>P1.call(e)==="[object Object]",fo=()=>{},jl=R1();function R1(){var e,t;return or&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function M1(e,t){function n(...r){return new Promise((s,a)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(a)})}return n}const gf=e=>e();function I1(e=gf){const t=he(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...a)=>{t.value&&e(...a)};return{isActive:sr(t),pause:n,resume:r,eventFilter:s}}function N1(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const r=t;t=void 0,r&&await r},n}function $1(e){return e||ar()}function po(...e){if(e.length!==1)return kp(...e);const t=e[0];return typeof t=="function"?sr(Ep(()=>({get:t,set:fo}))):he(t)}function H1(e,t,n={}){const{eventFilter:r=gf,...s}=n;return je(e,M1(r,t),s)}function vf(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:a,pause:i,resume:o,isActive:l}=I1(r);return{stop:H1(e,t,{...s,eventFilter:a}),pause:i,resume:o,isActive:l}}function ha(e,t=!0,n){$1()?On(e,n):t?e():Cn(e)}function F1(e,t,n={}){const{immediate:r=!0}=n,s=he(!1);let a=null;function i(){a&&(clearTimeout(a),a=null)}function o(){s.value=!1,i()}function l(...u){i(),s.value=!0,a=setTimeout(()=>{s.value=!1,a=null,e(...u)},it(t))}return r&&(s.value=!0,or&&l()),ir(o),{isPending:sr(s),start:l,stop:o}}function yf(e){var t;const n=it(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Zn=or?window:void 0,eb=or?window.document:void 0,bf=or?window.navigator:void 0;function Dr(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Zn):[t,n,r,s]=e,!t)return fo;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const a=[],i=()=>{a.forEach(c=>c()),a.length=0},o=(c,f,d,m)=>(c.addEventListener(f,d,m),()=>c.removeEventListener(f,d,m)),l=je(()=>[yf(t),it(s)],([c,f])=>{if(i(),!c)return;const d=hf(f)?{...f}:f;a.push(...n.flatMap(m=>r.map(g=>o(c,m,g,d))))},{immediate:!0,flush:"post"}),u=()=>{l(),i()};return ir(u),u}function D1(){const e=he(!1),t=ar();return t&&On(()=>{e.value=!0},t),e}function ga(e){const t=D1();return se(()=>(t.value,!!e()))}function z1(e,t={}){const{window:n=Zn}=t,r=ga(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const a=he(!1),i=u=>{a.value=u.matches},o=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},l=eo(()=>{r.value&&(o(),s=n.matchMedia(it(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),a.value=s.matches)});return ir(()=>{l(),o(),s=void 0}),a}function Bl(e,t={}){const{controls:n=!1,navigator:r=bf}=t,s=ga(()=>r&&"permissions"in r);let a;const i=typeof e=="string"?{name:e}:e,o=he(),l=()=>{a&&(o.value=a.state)},u=N1(async()=>{if(s.value){if(!a)try{a=await r.permissions.query(i),Dr(a,"change",l),l()}catch{o.value="prompt"}return a}});return u(),n?{state:o,isSupported:s,query:u}:o}function tb(e={}){const{navigator:t=bf,read:n=!1,source:r,copiedDuring:s=1500,legacy:a=!1}=e,i=ga(()=>t&&"clipboard"in t),o=Bl("clipboard-read"),l=Bl("clipboard-write"),u=se(()=>i.value||a),c=he(""),f=he(!1),d=F1(()=>f.value=!1,s);function m(){i.value&&b(o.value)?t.clipboard.readText().then(y=>{c.value=y}):c.value=_()}u.value&&n&&Dr(["copy","cut"],m);async function g(y=it(r)){u.value&&y!=null&&(i.value&&b(l.value)?await t.clipboard.writeText(y):v(y),c.value=y,f.value=!0,d.start())}function v(y){const k=document.createElement("textarea");k.value=y??"",k.style.position="absolute",k.style.opacity="0",document.body.appendChild(k),k.select(),document.execCommand("copy"),k.remove()}function _(){var y,k,T;return(T=(k=(y=document==null?void 0:document.getSelection)==null?void 0:y.call(document))==null?void 0:k.toString())!=null?T:""}function b(y){return y==="granted"||y==="prompt"}return{isSupported:u,text:c,copied:f,copy:g}}const ds=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ps="__vueuse_ssr_handlers__",V1=j1();function j1(){return ps in ds||(ds[ps]=ds[ps]||{}),ds[ps]}function wf(e,t){return V1[e]||t}function B1(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 U1={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()}},Ul="vueuse-storage";function _f(e,t,n,r={}){var s;const{flush:a="pre",deep:i=!0,listenToStorageChanges:o=!0,writeDefaults:l=!0,mergeDefaults:u=!1,shallow:c,window:f=Zn,eventFilter:d,onError:m=x=>{console.error(x)},initOnMounted:g}=r,v=(c?Xi:he)(typeof t=="function"?t():t);if(!n)try{n=wf("getDefaultStorage",()=>{var x;return(x=Zn)==null?void 0:x.localStorage})()}catch(x){m(x)}if(!n)return v;const _=it(t),b=B1(_),y=(s=r.serializer)!=null?s:U1[b],{pause:k,resume:T}=vf(v,()=>V(v.value),{flush:a,deep:i,eventFilter:d});f&&o&&ha(()=>{Dr(f,"storage",P),Dr(f,Ul,H),g&&P()}),g||P();function N(x,E){f&&f.dispatchEvent(new CustomEvent(Ul,{detail:{key:e,oldValue:x,newValue:E,storageArea:n}}))}function V(x){try{const E=n.getItem(e);if(x==null)N(E,null),n.removeItem(e);else{const C=y.write(x);E!==C&&(n.setItem(e,C),N(E,C))}}catch(E){m(E)}}function G(x){const E=x?x.newValue:n.getItem(e);if(E==null)return l&&_!=null&&n.setItem(e,y.write(_)),_;if(!x&&u){const C=y.read(E);return typeof u=="function"?u(C,_):b==="object"&&!Array.isArray(C)?{..._,...C}:C}else return typeof E!="string"?E:y.read(E)}function P(x){if(!(x&&x.storageArea!==n)){if(x&&x.key==null){v.value=_;return}if(!(x&&x.key!==e)){k();try{(x==null?void 0:x.newValue)!==y.write(v.value)&&(v.value=G(x))}catch(E){m(E)}finally{x?Cn(T):T()}}}}function H(x){P(x.detail)}return v}function K1(e){return z1("(prefers-color-scheme: dark)",e)}function Ef(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Zn,storage:a,storageKey:i="vueuse-color-scheme",listenToStorageChanges:o=!0,storageRef:l,emitAuto:u,disableTransition:c=!0}=e,f={auto:"",light:"light",dark:"dark",...e.modes||{}},d=K1({window:s}),m=se(()=>d.value?"dark":"light"),g=l||(i==null?po(r):_f(i,r,a,{window:s,listenToStorageChanges:o})),v=se(()=>g.value==="auto"?m.value:g.value),_=wf("updateHTMLAttrs",(T,N,V)=>{const G=typeof T=="string"?s==null?void 0:s.document.querySelector(T):yf(T);if(!G)return;let P;if(c&&(P=s.document.createElement("style"),P.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(P)),N==="class"){const H=V.split(/\s/g);Object.values(f).flatMap(x=>(x||"").split(/\s/g)).filter(Boolean).forEach(x=>{H.includes(x)?G.classList.add(x):G.classList.remove(x)})}else G.setAttribute(N,V);c&&(s.getComputedStyle(P).opacity,document.head.removeChild(P))});function b(T){var N;_(t,n,(N=f[T])!=null?N:T)}function y(T){e.onChanged?e.onChanged(T,b):b(T)}je(v,y,{flush:"post",immediate:!0}),ha(()=>y(v.value));const k=se({get(){return u?g.value:v.value},set(T){g.value=T}});try{return Object.assign(k,{store:g,system:m,state:v})}catch{return k}}function Sf(e={}){const{window:t=Zn}=e,n=t==null?void 0:t.navigator,r=ga(()=>n&&"language"in n),s=he(n==null?void 0:n.language);return Dr(t,"languagechange",()=>{n&&(s.value=n.language)}),{isSupported:r,language:s}}const W1={class:"main-section"},q1={__name:"App",setup(e){const t=mf(),n=he(null),r=he(null),s=he(t.meta.watchedByKicker);return je(()=>t.name,()=>{s.value=t.meta.watchedByKicker}),Su(async()=>{const{useUserStore:a}=await Z(()=>Promise.resolve().then(()=>Pg),void 0,import.meta.url),{language:i}=Sf(),o=a();r.value=parseInt(o.preferences.kickUserAfter),n.value=o.isAuthenticated,je(()=>o.preferences.kickUserAfter,()=>{r.value=parseInt(o.preferences.kickUserAfter)}),je(()=>o.isAuthenticated,()=>{n.value=o.isAuthenticated}),je(i,()=>{o.applyLanguage()})}),(a,i)=>{const o=He("notifications"),l=He("kicker");return F(),q(ze,null,[ne(o,{id:"vueNotification",role:"alert",width:"100%",position:"top",duration:4e3,speed:0,max:1,classes:"notification notification-banner is-radiusless"}),Q("main",W1,[ne(Y(pf))]),Y(n)&&Y(r)>0&&Y(s)?(F(),Xe(l,{key:0,kickAfter:Y(r)},null,8,["kickAfter"])):le("",!0)],64)}}};function xf(e,t,n){const r=t[n];return r?()=>{r({...e,nextMiddleware:xf(e,t,n+1)})}:e.next}var G1=!1;/*! + * pinia v2.1.7 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */let Af;const va=e=>Af=e,kf=Symbol();function hi(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var kr;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(kr||(kr={}));function Y1(){const e=Bc(!0),t=e.run(()=>he({}));let n=[],r=[];const s=na({install(a){va(s),s._a=a,a.provide(kf,s),a.config.globalProperties.$pinia=s,r.forEach(i=>n.push(i)),r=[]},use(a){return!this._a&&!G1?r.push(a):n.push(a),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const Cf=()=>{};function Kl(e,t,n,r=Cf){e.push(t);const s=()=>{const a=e.indexOf(t);a>-1&&(e.splice(a,1),r())};return!n&&ji()&&Uc(s),s}function Rn(e,...t){e.slice().forEach(n=>{n(...t)})}const J1=e=>e();function gi(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];hi(s)&&hi(r)&&e.hasOwnProperty(n)&&!Le(r)&&!tn(r)?e[n]=gi(s,r):e[n]=r}return e}const X1=Symbol();function Q1(e){return!hi(e)||!e.hasOwnProperty(X1)}const{assign:Gt}=Object;function Z1(e){return!!(Le(e)&&e.effect)}function e2(e,t,n,r){const{state:s,actions:a,getters:i}=t,o=n.state.value[e];let l;function u(){o||(n.state.value[e]=s?s():{});const c=Sp(n.state.value[e]);return Gt(c,a,Object.keys(i||{}).reduce((f,d)=>(f[d]=na(se(()=>{va(n);const m=n._s.get(e);return i[d].call(m,m)})),f),{}))}return l=Of(e,u,t,n,r,!0),l}function Of(e,t,n={},r,s,a){let i;const o=Gt({actions:{}},n),l={deep:!0};let u,c,f=[],d=[],m;const g=r.state.value[e];!a&&!g&&(r.state.value[e]={}),he({});let v;function _(P){let H;u=c=!1,typeof P=="function"?(P(r.state.value[e]),H={type:kr.patchFunction,storeId:e,events:m}):(gi(r.state.value[e],P),H={type:kr.patchObject,payload:P,storeId:e,events:m});const x=v=Symbol();Cn().then(()=>{v===x&&(u=!0)}),c=!0,Rn(f,H,r.state.value[e])}const b=a?function(){const{state:H}=n,x=H?H():{};this.$patch(E=>{Gt(E,x)})}:Cf;function y(){i.stop(),f=[],d=[],r._s.delete(e)}function k(P,H){return function(){va(r);const x=Array.from(arguments),E=[],C=[];function te(ie){E.push(ie)}function be(ie){C.push(ie)}Rn(d,{args:x,name:P,store:N,after:te,onError:be});let Ce;try{Ce=H.apply(this&&this.$id===e?this:N,x)}catch(ie){throw Rn(C,ie),ie}return Ce instanceof Promise?Ce.then(ie=>(Rn(E,ie),ie)).catch(ie=>(Rn(C,ie),Promise.reject(ie))):(Rn(E,Ce),Ce)}}const T={_p:r,$id:e,$onAction:Kl.bind(null,d),$patch:_,$reset:b,$subscribe(P,H={}){const x=Kl(f,P,H.detached,()=>E()),E=i.run(()=>je(()=>r.state.value[e],C=>{(H.flush==="sync"?c:u)&&P({storeId:e,type:kr.direct,events:m},C)},Gt({},l,H)));return x},$dispose:y},N=Nt(T);r._s.set(e,N);const G=(r._a&&r._a.runWithContext||J1)(()=>r._e.run(()=>(i=Bc()).run(t)));for(const P in G){const H=G[P];if(Le(H)&&!Z1(H)||tn(H))a||(g&&Q1(H)&&(Le(H)?H.value=g[P]:gi(H,g[P])),r.state.value[e][P]=H);else if(typeof H=="function"){const x=k(P,H);G[P]=x,o.actions[P]=H}}return Gt(N,G),Gt(ce(N),G),Object.defineProperty(N,"$state",{get:()=>r.state.value[e],set:P=>{_(H=>{Gt(H,P)})}}),r._p.forEach(P=>{Gt(N,i.run(()=>P({store:N,app:r._a,pinia:r,options:o})))}),g&&a&&n.hydrate&&n.hydrate(N.$state,g),u=!0,c=!0,N}function Xr(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 u=lm();return o=o||(u?nt(kf,null):null),o&&va(o),o=Af,o._s.has(r)||(a?Of(r,t,s,o):e2(r,s,o)),o._s.get(r)}return i.$id=r,i}function Lf(e,t){return function(){return e.apply(t,arguments)}}const{toString:t2}=Object.prototype,{getPrototypeOf:mo}=Object,ya=(e=>t=>{const n=t2.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Ot=e=>(e=e.toLowerCase(),t=>ya(t)===e),ba=e=>t=>typeof t===e,{isArray:lr}=Array,zr=ba("undefined");function n2(e){return e!==null&&!zr(e)&&e.constructor!==null&&!zr(e.constructor)&&pt(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Tf=Ot("ArrayBuffer");function r2(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Tf(e.buffer),t}const s2=ba("string"),pt=ba("function"),Pf=ba("number"),wa=e=>e!==null&&typeof e=="object",a2=e=>e===!0||e===!1,Rs=e=>{if(ya(e)!=="object")return!1;const t=mo(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},i2=Ot("Date"),o2=Ot("File"),l2=Ot("Blob"),c2=Ot("FileList"),u2=e=>wa(e)&&pt(e.pipe),f2=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||pt(e.append)&&((t=ya(e))==="formdata"||t==="object"&&pt(e.toString)&&e.toString()==="[object FormData]"))},d2=Ot("URLSearchParams"),p2=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Qr(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),lr(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const Mf=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,If=e=>!zr(e)&&e!==Mf;function vi(){const{caseless:e}=If(this)&&this||{},t={},n=(r,s)=>{const a=e&&Rf(t,s)||s;Rs(t[a])&&Rs(r)?t[a]=vi(t[a],r):Rs(r)?t[a]=vi({},r):lr(r)?t[a]=r.slice():t[a]=r};for(let r=0,s=arguments.length;r(Qr(t,(s,a)=>{n&&pt(s)?e[a]=Lf(s,n):e[a]=s},{allOwnKeys:r}),e),h2=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),g2=(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)},v2=(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&&mo(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},y2=(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},b2=e=>{if(!e)return null;if(lr(e))return e;let t=e.length;if(!Pf(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},w2=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&mo(Uint8Array)),_2=(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])}},E2=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},S2=Ot("HTMLFormElement"),x2=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),Wl=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),A2=Ot("RegExp"),Nf=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};Qr(n,(s,a)=>{let i;(i=t(s,a,e))!==!1&&(r[a]=i||s)}),Object.defineProperties(e,r)},k2=e=>{Nf(e,(t,n)=>{if(pt(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(pt(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+"'")})}})},C2=(e,t)=>{const n={},r=s=>{s.forEach(a=>{n[a]=!0})};return lr(e)?r(e):r(String(e).split(t)),n},O2=()=>{},L2=(e,t)=>(e=+e,Number.isFinite(e)?e:t),ja="abcdefghijklmnopqrstuvwxyz",ql="0123456789",$f={DIGIT:ql,ALPHA:ja,ALPHA_DIGIT:ja+ja.toUpperCase()+ql},T2=(e=16,t=$f.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function P2(e){return!!(e&&pt(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const R2=e=>{const t=new Array(10),n=(r,s)=>{if(wa(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[s]=r;const a=lr(r)?[]:{};return Qr(r,(i,o)=>{const l=n(i,s+1);!zr(l)&&(a[o]=l)}),t[s]=void 0,a}}return r};return n(e,0)},M2=Ot("AsyncFunction"),I2=e=>e&&(wa(e)||pt(e))&&pt(e.then)&&pt(e.catch),A={isArray:lr,isArrayBuffer:Tf,isBuffer:n2,isFormData:f2,isArrayBufferView:r2,isString:s2,isNumber:Pf,isBoolean:a2,isObject:wa,isPlainObject:Rs,isUndefined:zr,isDate:i2,isFile:o2,isBlob:l2,isRegExp:A2,isFunction:pt,isStream:u2,isURLSearchParams:d2,isTypedArray:w2,isFileList:c2,forEach:Qr,merge:vi,extend:m2,trim:p2,stripBOM:h2,inherits:g2,toFlatObject:v2,kindOf:ya,kindOfTest:Ot,endsWith:y2,toArray:b2,forEachEntry:_2,matchAll:E2,isHTMLForm:S2,hasOwnProperty:Wl,hasOwnProp:Wl,reduceDescriptors:Nf,freezeMethods:k2,toObjectSet:C2,toCamelCase:x2,noop:O2,toFiniteNumber:L2,findKey:Rf,global:Mf,isContextDefined:If,ALPHABET:$f,generateString:T2,isSpecCompliantForm:P2,toJSONObject:R2,isAsyncFn:M2,isThenable:I2};function ue(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)}A.inherits(ue,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:A.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Hf=ue.prototype,Ff={};["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=>{Ff[e]={value:e}});Object.defineProperties(ue,Ff);Object.defineProperty(Hf,"isAxiosError",{value:!0});ue.from=(e,t,n,r,s,a)=>{const i=Object.create(Hf);return A.toFlatObject(e,i,function(l){return l!==Error.prototype},o=>o!=="isAxiosError"),ue.call(i,e.message,t,n,r,s),i.cause=e,i.name=e.name,a&&Object.assign(i,a),i};const N2=null;function yi(e){return A.isPlainObject(e)||A.isArray(e)}function Df(e){return A.endsWith(e,"[]")?e.slice(0,-2):e}function Gl(e,t,n){return e?e.concat(t).map(function(s,a){return s=Df(s),!n&&a?"["+s+"]":s}).join(n?".":""):t}function $2(e){return A.isArray(e)&&!e.some(yi)}const H2=A.toFlatObject(A,{},null,function(t){return/^is[A-Z]/.test(t)});function _a(e,t,n){if(!A.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=A.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(v,_){return!A.isUndefined(_[v])});const r=n.metaTokens,s=n.visitor||c,a=n.dots,i=n.indexes,l=(n.Blob||typeof Blob<"u"&&Blob)&&A.isSpecCompliantForm(t);if(!A.isFunction(s))throw new TypeError("visitor must be a function");function u(g){if(g===null)return"";if(A.isDate(g))return g.toISOString();if(!l&&A.isBlob(g))throw new ue("Blob is not supported. Use a Buffer instead.");return A.isArrayBuffer(g)||A.isTypedArray(g)?l&&typeof Blob=="function"?new Blob([g]):Buffer.from(g):g}function c(g,v,_){let b=g;if(g&&!_&&typeof g=="object"){if(A.endsWith(v,"{}"))v=r?v:v.slice(0,-2),g=JSON.stringify(g);else if(A.isArray(g)&&$2(g)||(A.isFileList(g)||A.endsWith(v,"[]"))&&(b=A.toArray(g)))return v=Df(v),b.forEach(function(k,T){!(A.isUndefined(k)||k===null)&&t.append(i===!0?Gl([v],T,a):i===null?v:v+"[]",u(k))}),!1}return yi(g)?!0:(t.append(Gl(_,v,a),u(g)),!1)}const f=[],d=Object.assign(H2,{defaultVisitor:c,convertValue:u,isVisitable:yi});function m(g,v){if(!A.isUndefined(g)){if(f.indexOf(g)!==-1)throw Error("Circular reference detected in "+v.join("."));f.push(g),A.forEach(g,function(b,y){(!(A.isUndefined(b)||b===null)&&s.call(t,b,A.isString(y)?y.trim():y,v,d))===!0&&m(b,v?v.concat(y):[y])}),f.pop()}}if(!A.isObject(e))throw new TypeError("data must be an object");return m(e),t}function Yl(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function ho(e,t){this._pairs=[],e&&_a(e,this,t)}const zf=ho.prototype;zf.append=function(t,n){this._pairs.push([t,n])};zf.toString=function(t){const n=t?function(r){return t.call(this,r,Yl)}:Yl;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function F2(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Vf(e,t,n){if(!t)return e;const r=n&&n.encode||F2,s=n&&n.serialize;let a;if(s?a=s(t,n):a=A.isURLSearchParams(t)?t.toString():new ho(t,n).toString(r),a){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+a}return e}class Jl{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){A.forEach(this.handlers,function(r){r!==null&&t(r)})}}const jf={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},D2=typeof URLSearchParams<"u"?URLSearchParams:ho,z2=typeof FormData<"u"?FormData:null,V2=typeof Blob<"u"?Blob:null,j2={isBrowser:!0,classes:{URLSearchParams:D2,FormData:z2,Blob:V2},protocols:["http","https","file","blob","url","data"]},Bf=typeof window<"u"&&typeof document<"u",B2=(e=>Bf&&["ReactNative","NativeScript","NS"].indexOf(e)<0)(typeof navigator<"u"&&navigator.product),U2=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",K2=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Bf,hasStandardBrowserEnv:B2,hasStandardBrowserWebWorkerEnv:U2},Symbol.toStringTag,{value:"Module"})),At={...K2,...j2};function W2(e,t){return _a(e,new At.classes.URLSearchParams,Object.assign({visitor:function(n,r,s,a){return At.isNode&&A.isBuffer(n)?(this.append(r,n.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)}},t))}function q2(e){return A.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function G2(e){const t={},n=Object.keys(e);let r;const s=n.length;let a;for(r=0;r=n.length;return i=!i&&A.isArray(s)?s.length:i,l?(A.hasOwnProp(s,i)?s[i]=[s[i],r]:s[i]=r,!o):((!s[i]||!A.isObject(s[i]))&&(s[i]=[]),t(n,r,s[i],a)&&A.isArray(s[i])&&(s[i]=G2(s[i])),!o)}if(A.isFormData(e)&&A.isFunction(e.entries)){const n={};return A.forEachEntry(e,(r,s)=>{t(q2(r),s,n,0)}),n}return null}function Y2(e,t,n){if(A.isString(e))try{return(t||JSON.parse)(e),A.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const go={transitional:jf,adapter:["xhr","http"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,a=A.isObject(t);if(a&&A.isHTMLForm(t)&&(t=new FormData(t)),A.isFormData(t))return s?JSON.stringify(Uf(t)):t;if(A.isArrayBuffer(t)||A.isBuffer(t)||A.isStream(t)||A.isFile(t)||A.isBlob(t))return t;if(A.isArrayBufferView(t))return t.buffer;if(A.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 W2(t,this.formSerializer).toString();if((o=A.isFileList(t))||r.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return _a(o?{"files[]":t}:t,l&&new l,this.formSerializer)}}return a||s?(n.setContentType("application/json",!1),Y2(t)):t}],transformResponse:[function(t){const n=this.transitional||go.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(t&&A.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"?ue.from(o,ue.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:At.classes.FormData,Blob:At.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};A.forEach(["delete","get","head","post","put","patch"],e=>{go.headers[e]={}});const vo=go,J2=A.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"]),X2=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]&&J2[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},Xl=Symbol("internals");function mr(e){return e&&String(e).trim().toLowerCase()}function Ms(e){return e===!1||e==null?e:A.isArray(e)?e.map(Ms):String(e)}function Q2(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 Z2=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Ba(e,t,n,r,s){if(A.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!A.isString(t)){if(A.isString(r))return t.indexOf(r)!==-1;if(A.isRegExp(r))return r.test(t)}}function eg(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function tg(e,t){const n=A.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 Ea{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function a(o,l,u){const c=mr(l);if(!c)throw new Error("header name must be a non-empty string");const f=A.findKey(s,c);(!f||s[f]===void 0||u===!0||u===void 0&&s[f]!==!1)&&(s[f||l]=Ms(o))}const i=(o,l)=>A.forEach(o,(u,c)=>a(u,c,l));return A.isPlainObject(t)||t instanceof this.constructor?i(t,n):A.isString(t)&&(t=t.trim())&&!Z2(t)?i(X2(t),n):t!=null&&a(n,t,r),this}get(t,n){if(t=mr(t),t){const r=A.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return Q2(s);if(A.isFunction(n))return n.call(this,s,r);if(A.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=mr(t),t){const r=A.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||Ba(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function a(i){if(i=mr(i),i){const o=A.findKey(r,i);o&&(!n||Ba(r,r[o],o,n))&&(delete r[o],s=!0)}}return A.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||Ba(this,this[a],a,t,!0))&&(delete this[a],s=!0)}return s}normalize(t){const n=this,r={};return A.forEach(this,(s,a)=>{const i=A.findKey(r,a);if(i){n[i]=Ms(s),delete n[a];return}const o=t?eg(a):String(a).trim();o!==a&&delete n[a],n[o]=Ms(s),r[o]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return A.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&A.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[Xl]=this[Xl]={accessors:{}}).accessors,s=this.prototype;function a(i){const o=mr(i);r[o]||(tg(s,i),r[o]=!0)}return A.isArray(t)?t.forEach(a):a(t),this}}Ea.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);A.reduceDescriptors(Ea.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});A.freezeMethods(Ea);const $t=Ea;function Ua(e,t){const n=this||vo,r=t||n,s=$t.from(r.headers);let a=r.data;return A.forEach(e,function(o){a=o.call(n,a,s.normalize(),t?t.status:void 0)}),s.normalize(),a}function Kf(e){return!!(e&&e.__CANCEL__)}function Zr(e,t,n){ue.call(this,e??"canceled",ue.ERR_CANCELED,t,n),this.name="CanceledError"}A.inherits(Zr,ue,{__CANCEL__:!0});function ng(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new ue("Request failed with status code "+n.status,[ue.ERR_BAD_REQUEST,ue.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}const rg=At.hasStandardBrowserEnv?{write(e,t,n,r,s,a){const i=[e+"="+encodeURIComponent(t)];A.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),A.isString(r)&&i.push("path="+r),A.isString(s)&&i.push("domain="+s),a===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function sg(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function ag(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Wf(e,t){return e&&!sg(t)?ag(e,t):t}const ig=At.hasStandardBrowserEnv?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=A.isString(i)?s(i):i;return o.protocol===r.protocol&&o.host===r.host}}():function(){return function(){return!0}}();function og(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function lg(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 u=Date.now(),c=r[a];i||(i=u),n[s]=l,r[s]=u;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),u-i{const a=s.loaded,i=s.lengthComputable?s.total:void 0,o=a-n,l=r(o),u=a<=i;n=a;const c={loaded:a,total:i,progress:i?a/i:void 0,bytes:o,rate:l||void 0,estimated:l&&i&&u?(i-a)/l:void 0,event:s};c[t?"download":"upload"]=!0,e(c)}}const cg=typeof XMLHttpRequest<"u",ug=cg&&function(e){return new Promise(function(n,r){let s=e.data;const a=$t.from(e.headers).normalize();let{responseType:i,withXSRFToken:o}=e,l;function u(){e.cancelToken&&e.cancelToken.unsubscribe(l),e.signal&&e.signal.removeEventListener("abort",l)}let c;if(A.isFormData(s)){if(At.hasStandardBrowserEnv||At.hasStandardBrowserWebWorkerEnv)a.setContentType(!1);else if((c=a.getContentType())!==!1){const[v,..._]=c?c.split(";").map(b=>b.trim()).filter(Boolean):[];a.setContentType([v||"multipart/form-data",..._].join("; "))}}let f=new XMLHttpRequest;if(e.auth){const v=e.auth.username||"",_=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";a.set("Authorization","Basic "+btoa(v+":"+_))}const d=Wf(e.baseURL,e.url);f.open(e.method.toUpperCase(),Vf(d,e.params,e.paramsSerializer),!0),f.timeout=e.timeout;function m(){if(!f)return;const v=$t.from("getAllResponseHeaders"in f&&f.getAllResponseHeaders()),b={data:!i||i==="text"||i==="json"?f.responseText:f.response,status:f.status,statusText:f.statusText,headers:v,config:e,request:f};ng(function(k){n(k),u()},function(k){r(k),u()},b),f=null}if("onloadend"in f?f.onloadend=m:f.onreadystatechange=function(){!f||f.readyState!==4||f.status===0&&!(f.responseURL&&f.responseURL.indexOf("file:")===0)||setTimeout(m)},f.onabort=function(){f&&(r(new ue("Request aborted",ue.ECONNABORTED,e,f)),f=null)},f.onerror=function(){r(new ue("Network Error",ue.ERR_NETWORK,e,f)),f=null},f.ontimeout=function(){let _=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const b=e.transitional||jf;e.timeoutErrorMessage&&(_=e.timeoutErrorMessage),r(new ue(_,b.clarifyTimeoutError?ue.ETIMEDOUT:ue.ECONNABORTED,e,f)),f=null},At.hasStandardBrowserEnv&&(o&&A.isFunction(o)&&(o=o(e)),o||o!==!1&&ig(d))){const v=e.xsrfHeaderName&&e.xsrfCookieName&&rg.read(e.xsrfCookieName);v&&a.set(e.xsrfHeaderName,v)}s===void 0&&a.setContentType(null),"setRequestHeader"in f&&A.forEach(a.toJSON(),function(_,b){f.setRequestHeader(b,_)}),A.isUndefined(e.withCredentials)||(f.withCredentials=!!e.withCredentials),i&&i!=="json"&&(f.responseType=e.responseType),typeof e.onDownloadProgress=="function"&&f.addEventListener("progress",Ql(e.onDownloadProgress,!0)),typeof e.onUploadProgress=="function"&&f.upload&&f.upload.addEventListener("progress",Ql(e.onUploadProgress)),(e.cancelToken||e.signal)&&(l=v=>{f&&(r(!v||v.type?new Zr(null,e,f):v),f.abort(),f=null)},e.cancelToken&&e.cancelToken.subscribe(l),e.signal&&(e.signal.aborted?l():e.signal.addEventListener("abort",l)));const g=og(d);if(g&&At.protocols.indexOf(g)===-1){r(new ue("Unsupported protocol "+g+":",ue.ERR_BAD_REQUEST,e));return}f.send(s||null)})},bi={http:N2,xhr:ug};A.forEach(bi,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Zl=e=>`- ${e}`,fg=e=>A.isFunction(e)||e===null||e===!1,qf={getAdapter:e=>{e=A.isArray(e)?e:[e];const{length:t}=e;let n,r;const s={};for(let a=0;a`adapter ${o} `+(l===!1?"is not supported by the environment":"is not available in the build"));let i=t?a.length>1?`since : +`+a.map(Zl).join(` +`):" "+Zl(a[0]):"as no adapter specified";throw new ue("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return r},adapters:bi};function Ka(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Zr(null,e)}function ec(e){return Ka(e),e.headers=$t.from(e.headers),e.data=Ua.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),qf.getAdapter(e.adapter||vo.adapter)(e).then(function(r){return Ka(e),r.data=Ua.call(e,e.transformResponse,r),r.headers=$t.from(r.headers),r},function(r){return Kf(r)||(Ka(e),r&&r.response&&(r.response.data=Ua.call(e,e.transformResponse,r.response),r.response.headers=$t.from(r.response.headers))),Promise.reject(r)})}const tc=e=>e instanceof $t?{...e}:e;function er(e,t){t=t||{};const n={};function r(u,c,f){return A.isPlainObject(u)&&A.isPlainObject(c)?A.merge.call({caseless:f},u,c):A.isPlainObject(c)?A.merge({},c):A.isArray(c)?c.slice():c}function s(u,c,f){if(A.isUndefined(c)){if(!A.isUndefined(u))return r(void 0,u,f)}else return r(u,c,f)}function a(u,c){if(!A.isUndefined(c))return r(void 0,c)}function i(u,c){if(A.isUndefined(c)){if(!A.isUndefined(u))return r(void 0,u)}else return r(void 0,c)}function o(u,c,f){if(f in t)return r(u,c);if(f in e)return r(void 0,u)}const l={url:a,method:a,data:a,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken: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:(u,c)=>s(tc(u),tc(c),!0)};return A.forEach(Object.keys(Object.assign({},e,t)),function(c){const f=l[c]||s,d=f(e[c],t[c],c);A.isUndefined(d)&&f!==o||(n[c]=d)}),n}const Gf="1.6.8",yo={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{yo[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const nc={};yo.transitional=function(t,n,r){function s(a,i){return"[Axios v"+Gf+"] Transitional option '"+a+"'"+i+(r?". "+r:"")}return(a,i,o)=>{if(t===!1)throw new ue(s(i," has been removed"+(n?" in "+n:"")),ue.ERR_DEPRECATED);return n&&!nc[i]&&(nc[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 dg(e,t,n){if(typeof e!="object")throw new ue("options must be an object",ue.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 ue("option "+a+" must be "+l,ue.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new ue("Unknown option "+a,ue.ERR_BAD_OPTION)}}const wi={assertOptions:dg,validators:yo},Kt=wi.validators;class qs{constructor(t){this.defaults=t,this.interceptors={request:new Jl,response:new Jl}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s;Error.captureStackTrace?Error.captureStackTrace(s={}):s=new Error;const a=s.stack?s.stack.replace(/^.+\n/,""):"";r.stack?a&&!String(r.stack).endsWith(a.replace(/^.+\n.+\n/,""))&&(r.stack+=` +`+a):r.stack=a}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=er(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:a}=n;r!==void 0&&wi.assertOptions(r,{silentJSONParsing:Kt.transitional(Kt.boolean),forcedJSONParsing:Kt.transitional(Kt.boolean),clarifyTimeoutError:Kt.transitional(Kt.boolean)},!1),s!=null&&(A.isFunction(s)?n.paramsSerializer={serialize:s}:wi.assertOptions(s,{encode:Kt.function,serialize:Kt.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=a&&A.merge(a.common,a[n.method]);a&&A.forEach(["delete","get","head","post","put","patch","common"],g=>{delete a[g]}),n.headers=$t.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 u=[];this.interceptors.response.forEach(function(v){u.push(v.fulfilled,v.rejected)});let c,f=0,d;if(!l){const g=[ec.bind(this),void 0];for(g.unshift.apply(g,o),g.push.apply(g,u),d=g.length,c=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 Zr(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 bo(function(s){t=s}),cancel:t}}}const pg=bo;function mg(e){return function(n){return e.apply(null,n)}}function hg(e){return A.isObject(e)&&e.isAxiosError===!0}const _i={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(_i).forEach(([e,t])=>{_i[t]=e});const gg=_i;function Yf(e){const t=new Is(e),n=Lf(Is.prototype.request,t);return A.extend(n,Is.prototype,t,{allOwnKeys:!0}),A.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return Yf(er(e,s))},n}const Pe=Yf(vo);Pe.Axios=Is;Pe.CanceledError=Zr;Pe.CancelToken=pg;Pe.isCancel=Kf;Pe.VERSION=Gf;Pe.toFormData=_a;Pe.AxiosError=ue;Pe.Cancel=Pe.CanceledError;Pe.all=function(t){return Promise.all(t)};Pe.spread=mg;Pe.isAxiosError=hg;Pe.mergeConfig=er;Pe.AxiosHeaders=$t;Pe.formToJSON=e=>Uf(A.isHTMLForm(e)?new FormData(e):e);Pe.getAdapter=qf.getAdapter;Pe.HttpStatusCode=gg;Pe.default=Pe;function vg(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 yg(e,t,n){let r=e.split("|");const s=bg(r,t);if(s!==null)return s.trim();r=_g(r);const a=vg(n,t);return r.length===1||!r[a]?r[0]:r[a]}function bg(e,t){for(const n of e){let r=wg(n,t);if(r!==null)return r}return null}function wg(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 _g(e){return e.map(t=>t.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}const Wa=(e,t,n={})=>{try{return e(t)}catch{return n}},qa=async(e,t={})=>{try{return(await e).default||t}catch{return t}};var Eg={VITE_PUSHER_APP_KEY:"",VITE_PUSHER_APP_CLUSTER:"mt1",VITE_LARAVEL_VUE_I18N_HAS_PHP:"true",BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1};function rc(e){return e||Sg()||xg()}function Sg(){return typeof process<"u"}function xg(){return typeof Eg<"u"}const Fn=typeof window>"u";let Mn=null;const sc={lang:!Fn&&document.documentElement.lang?document.documentElement.lang.replace("-","_"):null,fallbackLang:"en",fallbackMissingTranslations:!1,resolve:e=>new Promise(t=>t({default:{}})),onLoad:e=>{}},Ag={shared:!0};function ac(e,t=!1){return Ze.getSharedInstance().loadLanguageAsync(e,t)}function Je(e,t={}){return Ze.getSharedInstance().trans(e,t)}function nb(){return Ze.getSharedInstance().getActiveLanguage()}const kg={install(e,t={}){t={...Ag,...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=sc;for(const[n]of Object.entries(this.activeMessages))this.activeMessages[n]=null;this===Mn&&(Mn=null)},this.options={...sc,...t},this.options.fallbackMissingTranslations?this.loadFallbackLanguage():this.load()}setOptions(t={},n=!1){return this.options={...this.options,...t},n&&this.load(),this}load(){this[Fn?"loadLanguage":"loadLanguageAsync"](this.getActiveLanguage())}loadFallbackLanguage(){if(!Fn){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=Wa(t,n)),rc(Fn)?{default:{...r,...Wa(t,`php_${n}`)}}:{default:r}}async resolveLangAsync(t,n){let r=Wa(t,n);if(!(r instanceof Promise))return this.resolveLang(t,n,r);if(rc(Fn)){const s=await qa(t(`php_${n}`)),a=await qa(r);return new Promise(i=>i({default:{...s,...a}}))}return new Promise(async s=>s({default:await qa(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 this.addLoadedLang(a),this.setLanguage(a)}applyFallbackLanguage(t,n){for(const[r,s]of Object.entries(n))this.fallbackMessages[r]=s;this.addLoadedLang({lang:this.options.fallbackLang,messages:n})}addLoadedLang(t){const n=Ze.loaded.findIndex(r=>r.lang===t.lang);if(n!==-1){Ze.loaded[n]=t;return}Ze.loaded.push(t)}setLanguage({lang:t,messages:n}){Fn||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.isValid(n[r])||this.activeMessages[r]===r)&&(this.activeMessages[r]=s);for(const[r]of Object.entries(this.activeMessages))!this.isValid(n[r])&&!this.isValid(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 eo(()=>{let r=this.findTranslation(t);this.isValid(r)||(r=this.findTranslation(t.replace(/\//g,"."))),this.activeMessages[t]=this.isValid(r)?r:t}),se(()=>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(),se(()=>this.makeReplacements(yg(s.value,n,this.options.lang),r))}findTranslation(t){if(this.isValid(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}isValid(t){return t!=null}static getSharedInstance(t,n=!1){return(Mn==null?void 0:Mn.setOptions(t,n))||(Mn=new Ze(t))}}Ze.loaded=[];const{notify:In}=ef(),yt=Xr({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){tr.push({name:"404"})},error(e){this.parseError(e),tr.push({name:"genericError"})},info(e){In({type:"is-info",...e})},success(e){In({type:"is-success",...e})},warn(e){In({type:"is-warning",...e})},alert(e){In({type:"is-danger",...e})},action(e){In({type:"is-dark",...e})},clear(){In({clean:!0})}}}),Ln=(e="api")=>{let t;const n=window.appConfig.subdirectory;e==="web"?t=n+"/":t=n+"/api/v1";const r=Pe.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 Pe.get("/refresh-csrf"),r.request(a)):(s.response.status===418&&Ge().logout({kicked:!0}),s.response&&[407].includes(s.response.status)?(yt().error(s),new Promise(()=>{})):s.config.hasOwnProperty("returnError")&&s.config.returnError===!0||(s.response&&[401].includes(s.response.status)&&Ge().tossOut(),s.response.status===422)?Promise.reject(s):s.response.status===404?(yt().notFound(),new Promise(()=>{})):(yt().error(s),new Promise(()=>{})))}),r},Cg=Ln("web"),Og=Ln("api"),Jf={logout(e={}){return Cg.get("/user/logout",{...e})},async getCurrentUser(e={}){return Og.get("/user",{...e})}},Et=Ln("api"),ms=Ln("web"),Lg={getPreferences(e={}){return Et.get("/user/preferences",{...e})},updatePreference(e,t,n={}){return Et.put("/user/preferences/"+e,{value:t},{...n})},getWebauthnDevices(e={}){return ms.get("/webauthn/credentials",{...e})},revokeWebauthnDevice(e,t={}){return ms.delete("/webauthn/credentials/"+e,{...t})},getPersonalAccessTokens(e={}){return ms.get("/oauth/personal-access-tokens",{...e})},deletePersonalAccessToken(e,t={}){return ms.delete("/oauth/personal-access-tokens/"+e,{...t})},getAll(e={}){return Et.get("/users",{...e})},getById(e,t={}){return Et.get("/users/"+e,{...t})},resetPassword(e,t={}){return Et.patch("/users/"+e+"/password/reset",{},{...t})},delete(e,t={}){return Et.delete("/users/"+e,{...t})},promote(e,t,n={}){return Et.patch("/users/"+e+"/promote",t,{...n})},revokePATs(e,t={}){return Et.delete("/users/"+e+"/pats",{...t})},revokeWebauthnCredentials(e,t={}){return Et.delete("/users/"+e+"/credentials",{...t})},getauthentications(e,t=12,n,r={}){return Et.get("/users/"+e+"/authentications?period="+t+(n?"&limit="+n:""),{...r})}};function Dn(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 rb(e,t=!1){const n=Ge();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 Be=Ln("api"),hr={getAll(e=!1,t={}){return Be.get("/twofaccounts"+(e?"?withOtp=1":""),{...t})},getByIds(e,t=!1,n={}){return Be.get("/twofaccounts?ids="+e+(t?"&withOtp=1":""),{...n})},get(e,t={}){return Be.get("/twofaccounts/"+e,{...t})},preview(e,t={}){return Be.post("/twofaccounts/preview",{uri:e},{...t})},storeFromUri(e,t={}){return Be.post("/twofaccounts",{uri:e},{...t})},getLogo(e,t={}){return Be.post("/icons/default",{service:e},{...t})},deleteIcon(e,t={}){return Be.delete("/icons/"+e,{...t})},getOtpById(e,t={}){return Be.get("/twofaccounts/"+e+"/otp",{...t})},getOtpByUri(e,t={}){return Be.post("/twofaccounts/otp",{uri:e},{...t})},getOtpByParams(e,t={}){return Be.post("/twofaccounts/otp",e,{...t})},withdraw(e,t={}){return Be.patch("/twofaccounts/withdraw?ids="+e.join(),{...t})},saveOrder(e,t={}){return Be.post("/twofaccounts/reorder",{orderedIds:e},{...t})},batchDelete(e,t={}){return Be.delete("/twofaccounts?ids="+e,{...t})},export(e,t,n={}){return Be.get("/twofaccounts/export?ids="+e+(t?"&otpauth=1":""),{...n})},getQrcode(e,t={}){return Be.get("/twofaccounts/"+e+"/qrcode",{...t})},migrate(e,t={}){return Be.post("/twofaccounts/migration",{payload:e,withSecret:!0},{...t})},count(e={}){return Be.get("/twofaccounts/count",{...e})}};var gr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Xf={exports:{}};(function(e,t){(function(n,r){r()})(gr,function(){function n(u,c){return typeof c>"u"?c={autoBom:!1}:typeof c!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),c={autoBom:!c}),c.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(u.type)?new Blob(["\uFEFF",u],{type:u.type}):u}function r(u,c,f){var d=new XMLHttpRequest;d.open("GET",u),d.responseType="blob",d.onload=function(){l(d.response,c,f)},d.onerror=function(){console.error("could not download file")},d.send()}function s(u){var c=new XMLHttpRequest;c.open("HEAD",u,!1);try{c.send()}catch{}return 200<=c.status&&299>=c.status}function a(u){try{u.dispatchEvent(new MouseEvent("click"))}catch{var c=document.createEvent("MouseEvents");c.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),u.dispatchEvent(c)}}var i=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof gr=="object"&&gr.global===gr?gr: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(u,c,f){var d=i.URL||i.webkitURL,m=document.createElement("a");c=c||u.name||"download",m.download=c,m.rel="noopener",typeof u=="string"?(m.href=u,m.origin===location.origin?a(m):s(m.href)?r(u,c,f):a(m,m.target="_blank")):(m.href=d.createObjectURL(u),setTimeout(function(){d.revokeObjectURL(m.href)},4e4),setTimeout(function(){a(m)},0))}:"msSaveOrOpenBlob"in navigator?function(u,c,f){if(c=c||u.name||"download",typeof u!="string")navigator.msSaveOrOpenBlob(n(u,f),c);else if(s(u))r(u,c,f);else{var d=document.createElement("a");d.href=u,d.target="_blank",setTimeout(function(){a(d)})}}:function(u,c,f,d){if(d=d||open("","_blank"),d&&(d.document.title=d.document.body.innerText="downloading..."),typeof u=="string")return r(u,c,f);var m=u.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 _=new FileReader;_.onloadend=function(){var k=_.result;k=v?k:k.replace(/^data:[^;]*;/,"data:attachment/file;"),d?d.location.href=k:location=k,d=null},_.readAsDataURL(u)}else{var b=i.URL||i.webkitURL,y=b.createObjectURL(u);d?d.location=y:location.href=y,d=null,setTimeout(function(){b.revokeObjectURL(y)},4e4)}});i.saveAs=l.saveAs=l,e.exports=l})})(Xf);var ic=Xf.exports;const Qf=Xr({id:"twofaccounts",state:()=>({items:[],selectedIds:[],filter:"",backendWasNewer:!1,fetchedOn:null}),getters:{filtered(e){const t=Ge();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 hr.getAll(!Ge().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 hr.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(),yt().success({text:Je("twofaccounts.accounts_deleted")})})},export(e="2fauth"){e=="otpauth"?hr.export(this.selectedIds.join(),!0).then(t=>{let n=[];t.data.data.forEach(s=>{n.push(s.uri)});var r=new Blob([n.join(` +`)],{type:"text/plain;charset=utf-8"});ic.saveAs.saveAs(r,"2fauth_export_otpauth.txt")}):hr.export(this.selectedIds.join(),!1,{responseType:"blob"}).then(t=>{var n=new Blob([t.data],{type:"application/json;charset=utf-8"});ic.saveAs.saveAs(n,"2fauth_export.json")})},saveOrder(){hr.saveOrder(this.orderedIds)},sortAsc(){this.items.sort(function(e,t){return Ge().preferences.sortCaseSensitive?e.service.normalize("NFD").replace(/[\u0300-\u036f]/g,"")>t.service.normalize("NFD").replace(/[\u0300-\u036f]/g,"")?1:-1:e.service.localeCompare(t.service,Ge().preferences.lang)}),this.saveOrder()},sortDesc(){this.items.sort(function(e,t){return Ge().preferences.sortCaseSensitive?e.service.normalize("NFD").replace(/[\u0300-\u036f]/g,"")t.period==e).map(t=>t.id)}}}),hs=Ln("api"),oc={getAll(){return hs.get("groups")},get(e,t={}){return hs.get("/groups/"+e,{...t})},assign(e,t,n={}){return hs.post("/groups/"+t+"/assign",{ids:e},{...n})},delete(e,t={}){return hs.delete("/groups/"+e,{...t})}},Tg=Xr({id:"groups",state:()=>({items:[],fetchedOn:null}),getters:{current(e){const t=e.items.find(n=>n.id===parseInt(Ge().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,yt().success({text:Je("groups.group_name_saved")})):(this.items.push(e),yt().success({text:Je("groups.group_successfully_created")}))},async fetch(){Math.floor(Date.now()-this.fetchedOn)>2e3&&(this.fetchedOn=Date.now(),await oc.getAll().then(n=>{this.items=n.data}))},async delete(e){const t=Ge();confirm(Je("groups.confirm.delete"))&&await oc.delete(e).then(n=>{this.items=this.items.filter(r=>r.id!==e),yt().success({text:Je("groups.group_successfully_deleted")}),parseInt(t.preferences.activeGroup)===e&&(t.preferences.activeGroup=0)})}}}),Ge=Xr({id:"user",state:()=>({id:void 0,name:void 0,email:void 0,oauth_provider:void 0,authenticated_by_proxy: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=Qf(),t=Tg();this.isAuthenticated?(await e.fetch(),t.fetch()):(e.$reset(),t.$reset())},logout(e={}){const{kicked:t}=e,n=yt();if(this.$2fauth.config.proxyAuth)if(this.$2fauth.config.proxyLogoutUrl)location.assign(this.$2fauth.config.proxyLogoutUrl);else return!1;else Jf.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(),tr.push({name:"login"})},applyTheme(){const e=Ef({attribute:"data-theme"});e.value=this.preferences.theme=="system"?"auto":this.preferences.theme},applyLanguage(){const{isSupported:e,language:t}=Sf();ac(e?this.preferences.lang=="browser"?t.value.slice(0,2):this.preferences.lang:"en")},applyUserPrefs(){this.applyTheme(),this.applyLanguage()},refreshPreferences(){Lg.getPreferences({returnError:!0}).then(e=>{e.data.forEach(t=>{this.preferences[t.key]=t.value})}).catch(e=>{yt().alert({text:Je("errors.data_cannot_be_refreshed_from_server")})})}}}),Pg=Object.freeze(Object.defineProperty({__proto__:null,useUserStore:Ge},Symbol.toStringTag,{value:"Module"})),Ga=Ln("api"),Rg={getAll(e={}){return Ga.get("/settings",{...e})},update(e,t,n={}){return Ga.put("/settings/"+e,{value:t},{...n})},delete(e,t={}){return Ga.delete("/settings/"+e,{...t})}},Zf=Xr({id:"appSettings",state:()=>({...window.appSettings}),actions:{async fetch(){Rg.getAll({returnError:!0}).then(e=>{e.data.forEach(t=>{this[t.key]=t.value})}).catch(e=>{yt().alert({text:Je("errors.data_cannot_be_refreshed_from_server")})})}}});async function Te({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r;s.isAuthenticated||await Jf.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,authenticated_by_proxy:i.authenticated_by_proxy,preferences:i.preferences,isAdmin:i.is_admin})}).catch(a=>{}),s.isAuthenticated?n():t({name:"login"})}async function Nn({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 Mg({to:e,next:t,nextMiddleware:n,stores:r}){const{twofaccounts:s}=r;s.isEmpty?await s.fetch().then(()=>{s.isEmpty?t({name:"start"}):n()}):n()}function Ig({to:e,next:t,nextMiddleware:n,stores:r}){const{notify:s}=r;s.err==null&&!e.query.err?t({name:"accounts"}):n()}async function Ng({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=_f(s.$2fauth.prefix+"returnTo","accounts");a.value=e.name,n()}async function $n({to:e,next:t,nextMiddleware:n,stores:r}){const{appSettings:s}=r;s.$2fauth.config.proxyAuth?t({name:"accounts"}):n()}const tr=O1({history:s1(window.appConfig.subdirectory?window.appConfig.subdirectory:"/"),routes:[{path:"/start",name:"start",component:()=>Z(()=>import("./Start-Buh1NwyJ.js"),__vite__mapDeps([0,1,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0}},{path:"/capture",name:"capture",component:()=>Z(()=>import("./Capture-CIhtAWpt.js"),__vite__mapDeps([3,1,4,5,6,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0}},{path:"/accounts",name:"accounts",component:()=>Z(()=>import("./Accounts-C-25Qy2v.js"),__vite__mapDeps([7,8,4,5,9,2]),import.meta.url),meta:{middlewares:[Te,Mg,We],watchedByKicker:!0},alias:"/"},{path:"/account/create",name:"createAccount",component:()=>Z(()=>import("./CreateUpdate-BlUdhaWn.js"),__vite__mapDeps([10,1,8,4,5,6,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0}},{path:"/account/import",name:"importAccounts",component:()=>Z(()=>import("./Import-C-7ayGrw.js"),__vite__mapDeps([11,1,8,4,5,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0}},{path:"/account/:twofaccountId/edit",name:"editAccount",component:()=>Z(()=>import("./CreateUpdate-BlUdhaWn.js"),__vite__mapDeps([10,1,8,4,5,6,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0},props:!0},{path:"/account/:twofaccountId/qrcode",name:"showQRcode",component:()=>Z(()=>import("./QRcode-CqE9jHmd.js"),__vite__mapDeps([12,4,5]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0}},{path:"/groups",name:"groups",component:()=>Z(()=>import("./Groups-CF7f2juX.js"),__vite__mapDeps([13,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0},props:!0},{path:"/group/create",name:"createGroup",component:()=>Z(()=>import("./CreateUpdate-DXqb6Ftc.js"),__vite__mapDeps([14,1,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0}},{path:"/group/:groupId/edit",name:"editGroup",component:()=>Z(()=>import("./CreateUpdate-DXqb6Ftc.js"),__vite__mapDeps([14,1,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0},props:!0},{path:"/settings/options",name:"settings.options",component:()=>Z(()=>import("./Options-C3TqQdMf.js"),__vite__mapDeps([15,16]),import.meta.url),meta:{middlewares:[Te],watchedByKicker:!0,showAbout:!0}},{path:"/settings/account",name:"settings.account",component:()=>Z(()=>import("./Account-Bvea0oZ6.js"),__vite__mapDeps([17,1,16]),import.meta.url),meta:{middlewares:[Te],watchedByKicker:!0,showAbout:!0}},{path:"/settings/oauth",name:"settings.oauth.tokens",component:()=>Z(()=>import("./OAuth-ulCTA84H.js"),__vite__mapDeps([18,1,16,4,5]),import.meta.url),meta:{middlewares:[Te],watchedByKicker:!0,showAbout:!0,props:!0}},{path:"/settings/webauthn/:credentialId/edit",name:"settings.webauthn.editCredential",component:()=>Z(()=>import("./Edit-BxX3QJ9W.js"),__vite__mapDeps([19,1]),import.meta.url),meta:{middlewares:[Te],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/settings/webauthn",name:"settings.webauthn.devices",component:()=>Z(()=>import("./WebAuthn-DJ0oaQu-.js"),__vite__mapDeps([20,16,21,4,5]),import.meta.url),meta:{middlewares:[Te],watchedByKicker:!0,showAbout:!0}},{path:"/admin/app",name:"admin.appSetup",component:()=>Z(()=>import("./AppSetup-D27COJPH.js"),__vite__mapDeps([22,23,24,25]),import.meta.url),meta:{middlewares:[Te,Nn],watchedByKicker:!0,showAbout:!0}},{path:"/admin/auth",name:"admin.auth",component:()=>Z(()=>import("./Auth-BknZQPI-.js"),__vite__mapDeps([26,23,24]),import.meta.url),meta:{middlewares:[Te,Nn],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users",name:"admin.users",component:()=>Z(()=>import("./Users-B46w5pfw.js"),__vite__mapDeps([27,23,4,5,9]),import.meta.url),meta:{middlewares:[Te,Nn],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users/create",name:"admin.createUser",component:()=>Z(()=>import("./Create-CLPvbaW4.js"),__vite__mapDeps([28,1]),import.meta.url),meta:{middlewares:[Te,Nn],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users/:userId/manage",name:"admin.manageUser",component:()=>Z(()=>import("./Manage-BKPFyA7n.js"),__vite__mapDeps([29,25,30,9,4,5,2]),import.meta.url),meta:{middlewares:[Te,Nn],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/admin/logs/:userId/access",name:"admin.logs.access",component:()=>Z(()=>import("./Access-KiYVHBfV.js"),__vite__mapDeps([31,30,9,4,5,2]),import.meta.url),meta:{middlewares:[Te,Nn],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/login",name:"login",component:()=>Z(()=>import("./Login-WJZFRbSm.js"),__vite__mapDeps([32,1,21]),import.meta.url),meta:{middlewares:[$n,We],showAbout:!0}},{path:"/register",name:"register",component:()=>Z(()=>import("./Register-D9YDPq8h.js"),__vite__mapDeps([33,1,21]),import.meta.url),meta:{middlewares:[$n,Ng,We],showAbout:!0}},{path:"/password/request",name:"password.request",component:()=>Z(()=>import("./RequestReset-HGpvuoDE.js"),__vite__mapDeps([34,1]),import.meta.url),meta:{middlewares:[$n,We],showAbout:!0}},{path:"/user/password/reset",name:"password.reset",component:()=>Z(()=>import("./Reset-BVOhauTi.js"),__vite__mapDeps([35,1]),import.meta.url),meta:{middlewares:[$n,We],showAbout:!0}},{path:"/webauthn/lost",name:"webauthn.lost",component:()=>Z(()=>import("./RequestReset-HGpvuoDE.js"),__vite__mapDeps([34,1]),import.meta.url),meta:{middlewares:[$n,We],showAbout:!0}},{path:"/webauthn/recover",name:"webauthn.recover",component:()=>Z(()=>import("./Recover-CcODwxy9.js"),__vite__mapDeps([36,1]),import.meta.url),meta:{middlewares:[$n,We],showAbout:!0}},{path:"/about",name:"about",component:()=>Z(()=>import("./About-BzKiptnW.js"),[],import.meta.url),meta:{showAbout:!0,watchedByKicker:!0}},{path:"/error",name:"genericError",component:()=>Z(()=>import("./Error-rNpmSIEZ.js"),[],import.meta.url),meta:{middlewares:[Ig],watchedByKicker:!0}},{path:"/404",name:"404",component:()=>Z(()=>import("./Error-rNpmSIEZ.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>Z(()=>import("./Error-rNpmSIEZ.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0}]});tr.beforeEach((e,t,n)=>{const r=e.meta.middlewares,s=Ge(),a=Qf(),i=Zf(),o=yt(),c={to:e,from:t,next:n,nextMiddleware:{},stores:{user:s,twofaccounts:a,appSettings:i,notify:o}};if(!r)return n();r[0]({...c,nextMiddleware:xf(c,r,1)})});tr.afterEach((e,t)=>{e.meta.title=Je("titles."+e.name),document.title=e.meta.title});function lc(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 j(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n-1;s--){var a=n[s],i=(a.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(i)>-1&&(r=a)}return xe.head.insertBefore(t,r),e}}var i0="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Kr(){for(var e=12,t="";e-- >0;)t+=i0[Math.random()*62|0];return t}function cr(e){for(var t=[],n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function Ao(e){return e.classList?cr(e.classList):(e.getAttribute("class")||"").split(" ").filter(function(t){return t})}function fd(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function o0(e){return Object.keys(e||{}).reduce(function(t,n){return t+"".concat(n,'="').concat(fd(e[n]),'" ')},"").trim()}function Sa(e){return Object.keys(e||{}).reduce(function(t,n){return t+"".concat(n,": ").concat(e[n].trim(),";")},"")}function ko(e){return e.size!==kt.size||e.x!==kt.x||e.y!==kt.y||e.rotate!==kt.rotate||e.flipX||e.flipY}function l0(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)},u={transform:"translate(".concat(r/2*-1," -256)")};return{outer:s,inner:l,path:u}}function c0(e){var t=e.transform,n=e.width,r=n===void 0?Si:n,s=e.height,a=s===void 0?Si:s,i=e.startCentered,o=i===void 0?!1:i,l="";return o&&sd?l+="translate(".concat(t.x/Wt-r/2,"em, ").concat(t.y/Wt-a/2,"em) "):o?l+="translate(calc(-50% + ".concat(t.x/Wt,"em), calc(-50% + ").concat(t.y/Wt,"em)) "):l+="translate(".concat(t.x/Wt,"em, ").concat(t.y/Wt,"em) "),l+="scale(".concat(t.size/Wt*(t.flipX?-1:1),", ").concat(t.size/Wt*(t.flipY?-1:1),") "),l+="rotate(".concat(t.rotate,"deg) "),l}var u0=`:root, :host { + --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid"; + --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular"; + --fa-font-light: normal 300 1em/1 "Font Awesome 6 Light"; + --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin"; + --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone"; + --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-regular: normal 400 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-light: normal 300 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-thin: normal 100 1em/1 "Font Awesome 6 Sharp"; + --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"; +} + +svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa { + overflow: visible; + box-sizing: content-box; +} + +.svg-inline--fa { + display: var(--fa-display, inline-block); + height: 1em; + overflow: visible; + vertical-align: -0.125em; +} +.svg-inline--fa.fa-2xs { + vertical-align: 0.1em; +} +.svg-inline--fa.fa-xs { + vertical-align: 0em; +} +.svg-inline--fa.fa-sm { + vertical-align: -0.0714285705em; +} +.svg-inline--fa.fa-lg { + vertical-align: -0.2em; +} +.svg-inline--fa.fa-xl { + vertical-align: -0.25em; +} +.svg-inline--fa.fa-2xl { + vertical-align: -0.3125em; +} +.svg-inline--fa.fa-pull-left { + margin-right: var(--fa-pull-margin, 0.3em); + width: auto; +} +.svg-inline--fa.fa-pull-right { + margin-left: var(--fa-pull-margin, 0.3em); + width: auto; +} +.svg-inline--fa.fa-li { + width: var(--fa-li-width, 2em); + top: 0.25em; +} +.svg-inline--fa.fa-fw { + width: var(--fa-fw-width, 1.25em); +} + +.fa-layers svg.svg-inline--fa { + bottom: 0; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; +} + +.fa-layers-counter, .fa-layers-text { + display: inline-block; + position: absolute; + text-align: center; +} + +.fa-layers { + display: inline-block; + height: 1em; + position: relative; + text-align: center; + vertical-align: -0.125em; + width: 1em; +} +.fa-layers svg.svg-inline--fa { + -webkit-transform-origin: center center; + transform-origin: center center; +} + +.fa-layers-text { + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + -webkit-transform-origin: center center; + transform-origin: center center; +} + +.fa-layers-counter { + background-color: var(--fa-counter-background-color, #ff253a); + border-radius: var(--fa-counter-border-radius, 1em); + box-sizing: border-box; + color: var(--fa-inverse, #fff); + line-height: var(--fa-counter-line-height, 1); + max-width: var(--fa-counter-max-width, 5em); + min-width: var(--fa-counter-min-width, 1.5em); + overflow: hidden; + padding: var(--fa-counter-padding, 0.25em 0.5em); + right: var(--fa-right, 0); + text-overflow: ellipsis; + top: var(--fa-top, 0); + -webkit-transform: scale(var(--fa-counter-scale, 0.25)); + transform: scale(var(--fa-counter-scale, 0.25)); + -webkit-transform-origin: top right; + transform-origin: top right; +} + +.fa-layers-bottom-right { + bottom: var(--fa-bottom, 0); + right: var(--fa-right, 0); + top: auto; + -webkit-transform: scale(var(--fa-layers-scale, 0.25)); + transform: scale(var(--fa-layers-scale, 0.25)); + -webkit-transform-origin: bottom right; + transform-origin: bottom right; +} + +.fa-layers-bottom-left { + bottom: var(--fa-bottom, 0); + left: var(--fa-left, 0); + right: auto; + top: auto; + -webkit-transform: scale(var(--fa-layers-scale, 0.25)); + transform: scale(var(--fa-layers-scale, 0.25)); + -webkit-transform-origin: bottom left; + transform-origin: bottom left; +} + +.fa-layers-top-right { + top: var(--fa-top, 0); + right: var(--fa-right, 0); + -webkit-transform: scale(var(--fa-layers-scale, 0.25)); + transform: scale(var(--fa-layers-scale, 0.25)); + -webkit-transform-origin: top right; + transform-origin: top right; +} + +.fa-layers-top-left { + left: var(--fa-left, 0); + right: auto; + top: var(--fa-top, 0); + -webkit-transform: scale(var(--fa-layers-scale, 0.25)); + transform: scale(var(--fa-layers-scale, 0.25)); + -webkit-transform-origin: top left; + transform-origin: top left; +} + +.fa-1x { + font-size: 1em; +} + +.fa-2x { + font-size: 2em; +} + +.fa-3x { + font-size: 3em; +} + +.fa-4x { + font-size: 4em; +} + +.fa-5x { + font-size: 5em; +} + +.fa-6x { + font-size: 6em; +} + +.fa-7x { + font-size: 7em; +} + +.fa-8x { + font-size: 8em; +} + +.fa-9x { + font-size: 9em; +} + +.fa-10x { + font-size: 10em; +} + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; +} + +.fa-xs { + font-size: 0.75em; + line-height: 0.0833333337em; + vertical-align: 0.125em; +} + +.fa-sm { + font-size: 0.875em; + line-height: 0.0714285718em; + vertical-align: 0.0535714295em; +} + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; +} + +.fa-xl { + font-size: 1.5em; + line-height: 0.0416666682em; + vertical-align: -0.125em; +} + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; +} + +.fa-fw { + text-align: center; + width: 1.25em; +} + +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; +} +.fa-ul > li { + position: relative; +} + +.fa-li { + left: calc(var(--fa-li-width, 2em) * -1); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; +} + +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); +} + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); +} + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); +} + +.fa-beat { + -webkit-animation-name: fa-beat; + animation-name: fa-beat; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); +} + +.fa-bounce { + -webkit-animation-name: fa-bounce; + animation-name: fa-bounce; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); +} + +.fa-fade { + -webkit-animation-name: fa-fade; + animation-name: fa-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); +} + +.fa-beat-fade { + -webkit-animation-name: fa-beat-fade; + animation-name: fa-beat-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); +} + +.fa-flip { + -webkit-animation-name: fa-flip; + animation-name: fa-flip; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); +} + +.fa-shake { + -webkit-animation-name: fa-shake; + animation-name: fa-shake; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); +} + +.fa-spin { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 2s); + animation-duration: var(--fa-animation-duration, 2s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); +} + +.fa-spin-reverse { + --fa-animation-direction: reverse; +} + +.fa-pulse, +.fa-spin-pulse { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); + animation-timing-function: var(--fa-animation-timing, steps(8)); +} + +@media (prefers-reduced-motion: reduce) { + .fa-beat, +.fa-bounce, +.fa-fade, +.fa-beat-fade, +.fa-flip, +.fa-pulse, +.fa-shake, +.fa-spin, +.fa-spin-pulse { + -webkit-animation-delay: -1ms; + animation-delay: -1ms; + -webkit-animation-duration: 1ms; + animation-duration: 1ms; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + -webkit-transition-delay: 0s; + transition-delay: 0s; + -webkit-transition-duration: 0s; + transition-duration: 0s; + } +} +@-webkit-keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); + } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); + } +} +@keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); + } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); + } +} +@-webkit-keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); + } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); + } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); + } +} +@keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); + } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); + } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); + } +} +@-webkit-keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); + } +} +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); + } +} +@-webkit-keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); + } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); + } +} +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); + } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); + } +} +@-webkit-keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + } +} +@keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + } +} +@-webkit-keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); + } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); + } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); + } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); + } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); + } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); + } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); + } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); + } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } +} +@keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); + } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); + } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); + } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); + } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); + } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); + } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); + } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); + } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +.fa-rotate-90 { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} + +.fa-rotate-180 { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} + +.fa-rotate-270 { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); +} + +.fa-flip-horizontal { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.fa-flip-vertical { + -webkit-transform: scale(1, -1); + transform: scale(1, -1); +} + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); +} + +.fa-rotate-by { + -webkit-transform: rotate(var(--fa-rotate-angle, none)); + transform: rotate(var(--fa-rotate-angle, none)); +} + +.fa-stack { + display: inline-block; + vertical-align: middle; + height: 2em; + position: relative; + width: 2.5em; +} + +.fa-stack-1x, +.fa-stack-2x { + bottom: 0; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; + z-index: var(--fa-stack-z-index, auto); +} + +.svg-inline--fa.fa-stack-1x { + height: 1em; + width: 1.25em; +} +.svg-inline--fa.fa-stack-2x { + height: 2em; + width: 2.5em; +} + +.fa-inverse { + color: var(--fa-inverse, #fff); +} + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.svg-inline--fa .fa-primary { + fill: var(--fa-primary-color, currentColor); + opacity: var(--fa-primary-opacity, 1); +} + +.svg-inline--fa .fa-secondary { + fill: var(--fa-secondary-color, currentColor); + opacity: var(--fa-secondary-opacity, 0.4); +} + +.svg-inline--fa.fa-swap-opacity .fa-primary { + opacity: var(--fa-secondary-opacity, 0.4); +} + +.svg-inline--fa.fa-swap-opacity .fa-secondary { + opacity: var(--fa-primary-opacity, 1); +} + +.svg-inline--fa mask .fa-primary, +.svg-inline--fa mask .fa-secondary { + fill: black; +} + +.fad.fa-inverse, +.fa-duotone.fa-inverse { + color: var(--fa-inverse, #fff); +}`;function dd(){var e=ad,t=id,n=K.cssPrefix,r=K.replacementClass,s=u0;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 hc=!1;function Ya(){K.autoAddCss&&!hc&&(a0(dd()),hc=!0)}var f0={mixout:function(){return{dom:{css:dd,insertCss:Ya}}},hooks:function(){return{beforeDOMElementCreation:function(){Ya()},beforeI2svg:function(){Ya()}}}},Ft=ln||{};Ft[Ht]||(Ft[Ht]={});Ft[Ht].styles||(Ft[Ht].styles={});Ft[Ht].hooks||(Ft[Ht].hooks={});Ft[Ht].shims||(Ft[Ht].shims=[]);var vt=Ft[Ht],pd=[],d0=function e(){xe.removeEventListener("DOMContentLoaded",e),Ys=1,pd.map(function(t){return t()})},Ys=!1;Vt&&(Ys=(xe.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(xe.readyState),Ys||xe.addEventListener("DOMContentLoaded",d0));function p0(e){Vt&&(Ys?setTimeout(e,0):pd.push(e))}function ns(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"?fd(e):"<".concat(t," ").concat(o0(r),">").concat(a.map(ns).join(""),"")}function gc(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}var m0=function(t,n){return function(r,s,a,i){return t.call(n,r,s,a,i)}},Ja=function(t,n,r,s){var a=Object.keys(t),i=a.length,o=s!==void 0?m0(n,s):n,l,u,c;for(r===void 0?(l=1,c=t[a[0]]):(l=0,c=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 vc(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 ki(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,s=r===void 0?!1:r,a=vc(t);typeof vt.hooks.addPack=="function"&&!s?vt.hooks.addPack(e,vc(t)):vt.styles[e]=j(j({},vt.styles[e]||{}),a),e==="fas"&&ki("fa",t)}var Es,Ss,xs,zn=vt.styles,v0=vt.shims,y0=(Es={},Fe(Es,Ee,Object.values(Br[Ee])),Fe(Es,Oe,Object.values(Br[Oe])),Es),Co=null,md={},hd={},gd={},vd={},yd={},b0=(Ss={},Fe(Ss,Ee,Object.keys(Vr[Ee])),Fe(Ss,Oe,Object.keys(Vr[Oe])),Ss);function w0(e){return~e0.indexOf(e)}function _0(e,t){var n=t.split("-"),r=n[0],s=n.slice(1).join("-");return r===e&&s!==""&&!w0(s)?s:null}var bd=function(){var t=function(a){return Ja(zn,function(i,o,l){return i[l]=Ja(o,a,{}),i},{})};md=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}),hd=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}),yd=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 zn||K.autoFetchSvg,r=Ja(v0,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:{}});gd=r.names,vd=r.unicodes,Co=xa(K.styleDefault,{family:K.familyDefault})};s0(function(e){Co=xa(e.styleDefault,{family:K.familyDefault})});bd();function Oo(e,t){return(md[e]||{})[t]}function E0(e,t){return(hd[e]||{})[t]}function bn(e,t){return(yd[e]||{})[t]}function wd(e){return gd[e]||{prefix:null,iconName:null}}function S0(e){var t=vd[e],n=Oo("fas",e);return t||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function cn(){return Co}var Lo=function(){return{prefix:null,iconName:null,rest:[]}};function xa(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.family,r=n===void 0?Ee:n,s=Vr[r][e],a=jr[r][e]||jr[r][s],i=e in vt.styles?e:null;return a||i||null}var yc=(xs={},Fe(xs,Ee,Object.keys(Br[Ee])),Fe(xs,Oe,Object.keys(Br[Oe])),xs);function Aa(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(u){return yc[Ee].includes(u)}))&&(o=Ee),(e.includes(a[Oe])||e.some(function(u){return yc[Oe].includes(u)}))&&(o=Oe);var l=e.reduce(function(u,c){var f=_0(K.cssPrefix,c);if(zn[c]?(c=y0[o].includes(c)?Gg[o][c]:c,i=c,u.prefix=c):b0[o].indexOf(c)>-1?(i=c,u.prefix=xa(c,{family:o})):f?u.iconName=f:c!==K.replacementClass&&c!==a[Ee]&&c!==a[Oe]&&u.rest.push(c),!s&&u.prefix&&u.iconName){var d=i==="fa"?wd(u.iconName):{},m=bn(u.prefix,u.iconName);d.prefix&&(i=null),u.iconName=d.iconName||m||u.iconName,u.prefix=d.prefix||u.prefix,u.prefix==="far"&&!zn.far&&zn.fas&&!K.autoFetchSvg&&(u.prefix="fas")}return u},Lo());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&&(zn.fass||K.autoFetchSvg)&&(l.prefix="fass",l.iconName=bn(l.prefix,l.iconName)||l.iconName),(l.prefix==="fa"||i==="fa")&&(l.prefix=cn()||"fas"),l}var x0=function(){function e(){$g(this,e),this.definitions={}}return Hg(e,[{key:"add",value:function(){for(var n=this,r=arguments.length,s=new Array(r),a=0;a0&&c.forEach(function(f){typeof f=="string"&&(n[o][f]=u)}),n[o][l]=u}),n}}]),e}(),bc=[],Vn={},qn={},A0=Object.keys(qn);function k0(e,t){var n=t.mixoutsTo;return bc=e,Vn={},Object.keys(qn).forEach(function(r){A0.indexOf(r)===-1&&delete qn[r]}),bc.forEach(function(r){var s=r.mixout?r.mixout():{};if(Object.keys(s).forEach(function(i){typeof s[i]=="function"&&(n[i]=s[i]),Gs(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){Vn[i]||(Vn[i]=[]),Vn[i].push(a[i])})}r.provides&&r.provides(qn)}),n}function Ci(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 Vt?(Sn("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,p0(function(){T0({autoReplaceSvgRoot:n}),Sn("watch",t)})}},L0={icon:function(t){if(t===null)return null;if(Gs(t)==="object"&&t.prefix&&t.iconName)return{prefix:t.prefix,iconName:bn(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=xa(t[0]);return{prefix:r,iconName:bn(r,n)||n}}if(typeof t=="string"&&(t.indexOf("".concat(K.cssPrefix,"-"))>-1||t.match(Yg))){var s=Aa(t.split(" "),{skipLookups:!0});return{prefix:s.prefix||cn(),iconName:bn(s.prefix,s.iconName)||s.iconName}}if(typeof t=="string"){var a=cn();return{prefix:a,iconName:bn(a,t)||t}}}},ot={noAuto:C0,config:K,dom:O0,parse:L0,library:_d,findIconDefinition:Oi,toHtml:ns},T0=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.autoReplaceSvgRoot,r=n===void 0?xe:n;(Object.keys(vt.styles).length>0||K.autoFetchSvg)&&Vt&&K.autoReplaceSvg&&ot.dom.i2svg({node:r})};function ka(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map(function(r){return ns(r)})}}),Object.defineProperty(e,"node",{get:function(){if(Vt){var r=xe.createElement("div");return r.innerHTML=e.html,r.children}}}),e}function P0(e){var t=e.children,n=e.main,r=e.mask,s=e.attributes,a=e.styles,i=e.transform;if(ko(i)&&n.found&&!r.found){var o=n.width,l=n.height,u={x:o/l/2,y:.5};s.style=Sa(j(j({},a),{},{"transform-origin":"".concat(u.x+i.x/16,"em ").concat(u.y+i.y/16,"em")}))}return[{tag:"svg",attributes:s,children:t}]}function R0(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:j(j({},s),{},{id:i}),children:r}]}]}function To(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,u=e.maskId,c=e.titleId,f=e.extra,d=e.watchable,m=d===void 0?!1:d,g=r.found?r:n,v=g.width,_=g.height,b=s==="fak",y=[K.replacementClass,a?"".concat(K.cssPrefix,"-").concat(a):""].filter(function(H){return f.classes.indexOf(H)===-1}).filter(function(H){return H!==""||!!H}).concat(f.classes).join(" "),k={children:[],attributes:j(j({},f.attributes),{},{"data-prefix":s,"data-icon":a,class:y,role:f.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(v," ").concat(_)})},T=b&&!~f.classes.indexOf("fa-fw")?{width:"".concat(v/_*16*.0625,"em")}:{};m&&(k.attributes[En]=""),l&&(k.children.push({tag:"title",attributes:{id:k.attributes["aria-labelledby"]||"title-".concat(c||Kr())},children:[l]}),delete k.attributes.title);var N=j(j({},k),{},{prefix:s,iconName:a,main:n,mask:r,maskId:u,transform:i,symbol:o,styles:j(j({},T),f.styles)}),V=r.found&&n.found?Dt("generateAbstractMask",N)||{children:[],attributes:{}}:Dt("generateAbstractIcon",N)||{children:[],attributes:{}},G=V.children,P=V.attributes;return N.children=G,N.attributes=P,o?R0(N):P0(N)}function wc(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,u=j(j(j({},i.attributes),a?{title:a}:{}),{},{class:i.classes.join(" ")});l&&(u[En]="");var c=j({},i.styles);ko(s)&&(c.transform=c0({transform:s,startCentered:!0,width:n,height:r}),c["-webkit-transform"]=c.transform);var f=Sa(c);f.length>0&&(u.style=f);var d=[];return d.push({tag:"span",attributes:u,children:[t]}),a&&d.push({tag:"span",attributes:{class:"sr-only"},children:[a]}),d}function M0(e){var t=e.content,n=e.title,r=e.extra,s=j(j(j({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),a=Sa(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 Xa=vt.styles;function Li(e){var t=e[0],n=e[1],r=e.slice(4),s=wo(r,1),a=s[0],i=null;return Array.isArray(a)?i={tag:"g",attributes:{class:"".concat(K.cssPrefix,"-").concat(yn.GROUP)},children:[{tag:"path",attributes:{class:"".concat(K.cssPrefix,"-").concat(yn.SECONDARY),fill:"currentColor",d:a[0]}},{tag:"path",attributes:{class:"".concat(K.cssPrefix,"-").concat(yn.PRIMARY),fill:"currentColor",d:a[1]}}]}:i={tag:"path",attributes:{fill:"currentColor",d:a}},{found:!0,width:t,height:n,icon:i}}var I0={found:!1,width:512,height:512};function N0(e,t){!od&&!K.showMissingIcons&&e&&console.error('Icon with name "'.concat(e,'" and prefix "').concat(t,'" is missing.'))}function Ti(e,t){var n=t;return t==="fa"&&K.styleDefault!==null&&(t=cn()),new Promise(function(r,s){if(Dt("missingIconAbstract"),n==="fa"){var a=wd(e)||{};e=a.iconName||e,t=a.prefix||t}if(e&&t&&Xa[t]&&Xa[t][e]){var i=Xa[t][e];return r(Li(i))}N0(e,t),r(j(j({},I0),{},{icon:K.showMissingIcons&&e?Dt("missingIconAbstract")||{}:{}}))})}var _c=function(){},Pi=K.measurePerformance&&gs&&gs.mark&&gs.measure?gs:{mark:_c,measure:_c},yr='FA "6.5.1"',$0=function(t){return Pi.mark("".concat(yr," ").concat(t," begins")),function(){return Ed(t)}},Ed=function(t){Pi.mark("".concat(yr," ").concat(t," ends")),Pi.measure("".concat(yr," ").concat(t),"".concat(yr," ").concat(t," begins"),"".concat(yr," ").concat(t," ends"))},Po={begin:$0,end:Ed},Ns=function(){};function Ec(e){var t=e.getAttribute?e.getAttribute(En):null;return typeof t=="string"}function H0(e){var t=e.getAttribute?e.getAttribute(Eo):null,n=e.getAttribute?e.getAttribute(So):null;return t&&n}function F0(e){return e&&e.classList&&e.classList.contains&&e.classList.contains(K.replacementClass)}function D0(){if(K.autoReplaceSvg===!0)return $s.replace;var e=$s[K.autoReplaceSvg];return e||$s.replace}function z0(e){return xe.createElementNS("http://www.w3.org/2000/svg",e)}function V0(e){return xe.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"?z0:V0:n;if(typeof e=="string")return xe.createTextNode(e);var s=r(e.tag);Object.keys(e.attributes||[]).forEach(function(i){s.setAttribute(i,e.attributes[i])});var a=e.children||[];return a.forEach(function(i){s.appendChild(Sd(i,{ceFn:r}))}),s}function j0(e){var t=" ".concat(e.outerHTML," ");return t="".concat(t,"Font Awesome fontawesome.com "),t}var $s={replace:function(t){var n=t[0];if(n.parentNode)if(t[1].forEach(function(s){n.parentNode.insertBefore(Sd(s),n)}),n.getAttribute(En)===null&&K.keepOriginalSource){var r=xe.createComment(j0(n));n.parentNode.replaceChild(r,n)}else n.remove()},nest:function(t){var n=t[0],r=t[1];if(~Ao(n).indexOf(K.replacementClass))return $s.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 ns(o)}).join(` +`);n.setAttribute(En,""),n.innerHTML=i}};function Sc(e){e()}function xd(e,t){var n=typeof t=="function"?t:Ns;if(e.length===0)n();else{var r=Sc;K.mutateApproach===Wg&&(r=ln.requestAnimationFrame||Sc),r(function(){var s=D0(),a=Po.begin("mutate");e.map(s),a(),n()})}}var Ro=!1;function Ad(){Ro=!0}function Ri(){Ro=!1}var Js=null;function xc(e){if(pc&&K.observeMutations){var t=e.treeCallback,n=t===void 0?Ns:t,r=e.nodeCallback,s=r===void 0?Ns:r,a=e.pseudoElementsCallback,i=a===void 0?Ns:a,o=e.observeMutationsRoot,l=o===void 0?xe:o;Js=new pc(function(u){if(!Ro){var c=cn();cr(u).forEach(function(f){if(f.type==="childList"&&f.addedNodes.length>0&&!Ec(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"&&Ec(f.target)&&~Zg.indexOf(f.attributeName))if(f.attributeName==="class"&&H0(f.target)){var d=Aa(Ao(f.target)),m=d.prefix,g=d.iconName;f.target.setAttribute(Eo,m||c),g&&f.target.setAttribute(So,g)}else F0(f.target)&&s(f.target)})}}),Vt&&Js.observe(l,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function B0(){Js&&Js.disconnect()}function U0(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 K0(e){var t=e.getAttribute("data-prefix"),n=e.getAttribute("data-icon"),r=e.innerText!==void 0?e.innerText.trim():"",s=Aa(Ao(e));return s.prefix||(s.prefix=cn()),t&&n&&(s.prefix=t,s.iconName=n),s.iconName&&s.prefix||(s.prefix&&r.length>0&&(s.iconName=E0(s.prefix,e.innerText)||Oo(s.prefix,Ai(e.innerText))),!s.iconName&&K.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(s.iconName=e.firstChild.data)),s}function W0(e){var t=cr(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||Kr()):(t["aria-hidden"]="true",t.focusable="false")),t}function q0(){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 Ac(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},n=K0(e),r=n.iconName,s=n.prefix,a=n.rest,i=W0(e),o=Ci("parseNodeAttributes",{},e),l=t.styleParser?U0(e):[];return j({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 G0=vt.styles;function kd(e){var t=K.autoReplaceSvg==="nest"?Ac(e,{styleParser:!1}):Ac(e);return~t.extra.classes.indexOf(ld)?Dt("generateLayersText",e,t):Dt("generateSvgReplacementMutation",e,t)}var un=new Set;xo.map(function(e){un.add("fa-".concat(e))});Object.keys(Vr[Ee]).map(un.add.bind(un));Object.keys(Vr[Oe]).map(un.add.bind(un));un=es(un);function kc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!Vt)return Promise.resolve();var n=xe.documentElement.classList,r=function(f){return n.add("".concat(mc,"-").concat(f))},s=function(f){return n.remove("".concat(mc,"-").concat(f))},a=K.autoFetchSvg?un:xo.map(function(c){return"fa-".concat(c)}).concat(Object.keys(G0));a.includes("fa")||a.push("fa");var i=[".".concat(ld,":not([").concat(En,"])")].concat(a.map(function(c){return".".concat(c,":not([").concat(En,"])")})).join(", ");if(i.length===0)return Promise.resolve();var o=[];try{o=cr(e.querySelectorAll(i))}catch{}if(o.length>0)r("pending"),s("complete");else return Promise.resolve();var l=Po.begin("onTree"),u=o.reduce(function(c,f){try{var d=kd(f);d&&c.push(d)}catch(m){od||m.name==="MissingIcon"&&console.error(m)}return c},[]);return new Promise(function(c,f){Promise.all(u).then(function(d){xd(d,function(){r("active"),r("complete"),s("pending"),typeof t=="function"&&t(),l(),c()})}).catch(function(d){l(),f(d)})})}function Y0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;kd(e).then(function(n){n&&xd([n],t)})}function J0(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(t||{}).icon?t:Oi(t||{}),s=n.mask;return s&&(s=(s||{}).icon?s:Oi(s||{})),e(r,j(j({},n),{},{mask:s}))}}var X0=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,u=n.maskId,c=u===void 0?null:u,f=n.title,d=f===void 0?null:f,m=n.titleId,g=m===void 0?null:m,v=n.classes,_=v===void 0?[]:v,b=n.attributes,y=b===void 0?{}:b,k=n.styles,T=k===void 0?{}:k;if(t){var N=t.prefix,V=t.iconName,G=t.icon;return ka(j({type:"icon"},t),function(){return Sn("beforeDOMElementCreation",{iconDefinition:t,params:n}),K.autoA11y&&(d?y["aria-labelledby"]="".concat(K.replacementClass,"-title-").concat(g||Kr()):(y["aria-hidden"]="true",y.focusable="false")),To({icons:{main:Li(G),mask:l?Li(l.icon):{found:!1,width:null,height:null,icon:{}}},prefix:N,iconName:V,transform:j(j({},kt),s),symbol:i,title:d,maskId:c,titleId:g,extra:{attributes:y,styles:T,classes:_}})})}},Q0={mixout:function(){return{icon:J0(X0)}},hooks:function(){return{mutationObserverCallbacks:function(n){return n.treeCallback=kc,n.nodeCallback=Y0,n}}},provides:function(t){t.i2svg=function(n){var r=n.node,s=r===void 0?xe:r,a=n.callback,i=a===void 0?function(){}:a;return kc(s,i)},t.generateSvgReplacementMutation=function(n,r){var s=r.iconName,a=r.title,i=r.titleId,o=r.prefix,l=r.transform,u=r.symbol,c=r.mask,f=r.maskId,d=r.extra;return new Promise(function(m,g){Promise.all([Ti(s,o),c.iconName?Ti(c.iconName,c.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(function(v){var _=wo(v,2),b=_[0],y=_[1];m([n,To({icons:{main:b,mask:y},prefix:o,iconName:s,transform:l,symbol:u,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=Sa(o);l.length>0&&(s.style=l);var u;return ko(i)&&(u=Dt("generateAbstractTransformGrouping",{main:a,transform:i,containerWidth:a.width,iconWidth:a.width})),r.push(u||a.icon),{children:r,attributes:s}}}},Z0={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 ka({type:"layer"},function(){Sn("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(es(a)).join(" ")},children:i}]})}}}},ev={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,u=l===void 0?{}:l,c=r.styles,f=c===void 0?{}:c;return ka({type:"counter",content:n},function(){return Sn("beforeDOMElementCreation",{content:n,params:r}),M0({content:n.toString(),title:a,extra:{attributes:u,styles:f,classes:["".concat(K.cssPrefix,"-layers-counter")].concat(es(o))}})})}}}},tv={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,u=l===void 0?[]:l,c=r.attributes,f=c===void 0?{}:c,d=r.styles,m=d===void 0?{}:d;return ka({type:"text",content:n},function(){return Sn("beforeDOMElementCreation",{content:n,params:r}),wc({content:n,transform:j(j({},kt),a),title:o,extra:{attributes:f,styles:m,classes:["".concat(K.cssPrefix,"-layers-text")].concat(es(u))}})})}}},provides:function(t){t.generateLayersText=function(n,r){var s=r.title,a=r.transform,i=r.extra,o=null,l=null;if(sd){var u=parseInt(getComputedStyle(n).fontSize,10),c=n.getBoundingClientRect();o=c.width/u,l=c.height/u}return K.autoA11y&&!s&&(i.attributes["aria-hidden"]="true"),Promise.resolve([n,wc({content:n.innerHTML,width:o,height:l,transform:a,title:s,extra:i,watchable:!0})])}}},nv=new RegExp('"',"ug"),Cc=[1105920,1112319];function rv(e){var t=e.replace(nv,""),n=g0(t,0),r=n>=Cc[0]&&n<=Cc[1],s=t.length===2?t[0]===t[1]:!1;return{value:Ai(s?t[0]:t),isSecondary:r||s}}function Oc(e,t){var n="".concat(Kg).concat(t.replace(":","-"));return new Promise(function(r,s){if(e.getAttribute(n)!==null)return r();var a=cr(e.children),i=a.filter(function(G){return G.getAttribute(xi)===t})[0],o=ln.getComputedStyle(e,t),l=o.getPropertyValue("font-family").match(Jg),u=o.getPropertyValue("font-weight"),c=o.getPropertyValue("content");if(i&&!l)return e.removeChild(i),r();if(l&&c!=="none"&&c!==""){var f=o.getPropertyValue("content"),d=~["Sharp"].indexOf(l[2])?Oe:Ee,m=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(l[2])?jr[d][l[2].toLowerCase()]:Xg[d][u],g=rv(f),v=g.value,_=g.isSecondary,b=l[0].startsWith("FontAwesome"),y=Oo(m,v),k=y;if(b){var T=S0(v);T.iconName&&T.prefix&&(y=T.iconName,m=T.prefix)}if(y&&!_&&(!i||i.getAttribute(Eo)!==m||i.getAttribute(So)!==k)){e.setAttribute(n,k),i&&e.removeChild(i);var N=q0(),V=N.extra;V.attributes[xi]=t,Ti(y,m).then(function(G){var P=To(j(j({},N),{},{icons:{main:G,mask:Lo()},prefix:m,iconName:k,extra:V,watchable:!0})),H=xe.createElementNS("http://www.w3.org/2000/svg","svg");t==="::before"?e.insertBefore(H,e.firstChild):e.appendChild(H),H.outerHTML=P.map(function(x){return ns(x)}).join(` +`),e.removeAttribute(n),r()}).catch(s)}else r()}else r()})}function sv(e){return Promise.all([Oc(e,"::before"),Oc(e,"::after")])}function av(e){return e.parentNode!==document.head&&!~qg.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(xi)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function Lc(e){if(Vt)return new Promise(function(t,n){var r=cr(e.querySelectorAll("*")).filter(av).map(sv),s=Po.begin("searchPseudoElements");Ad(),Promise.all(r).then(function(){s(),Ri(),t()}).catch(function(){s(),Ri(),n()})})}var iv={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=Lc,n}}},provides:function(t){t.pseudoElements2svg=function(n){var r=n.node,s=r===void 0?xe:r;K.searchPseudoElements&&Lc(s)}}},Tc=!1,ov={mixout:function(){return{dom:{unwatch:function(){Ad(),Tc=!0}}}},hooks:function(){return{bootstrap:function(){xc(Ci("mutationObserverCallbacks",{}))},noAuto:function(){B0()},watch:function(n){var r=n.observeMutationsRoot;Tc?Ri():xc(Ci("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},Pc=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)},lv={mixout:function(){return{parse:{transform:function(n){return Pc(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-transform");return s&&(n.transform=Pc(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,") "),u="scale(".concat(s.size/16*(s.flipX?-1:1),", ").concat(s.size/16*(s.flipY?-1:1),") "),c="rotate(".concat(s.rotate," 0 0)"),f={transform:"".concat(l," ").concat(u," ").concat(c)},d={transform:"translate(".concat(i/2*-1," -256)")},m={outer:o,inner:f,path:d};return{tag:"g",attributes:j({},m.outer),children:[{tag:"g",attributes:j({},m.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:j(j({},r.icon.attributes),m.path)}]}]}}}},Qa={x:0,y:0,width:"100%",height:"100%"};function Rc(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 cv(e){return e.tag==="g"?e.children:[e]}var uv={hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-mask"),a=s?Aa(s.split(" ").map(function(i){return i.trim()})):Lo();return a.prefix||(a.prefix=cn()),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,u=a.width,c=a.icon,f=i.width,d=i.icon,m=l0({transform:l,containerWidth:f,iconWidth:u}),g={tag:"rect",attributes:j(j({},Qa),{},{fill:"white"})},v=c.children?{children:c.children.map(Rc)}:{},_={tag:"g",attributes:j({},m.inner),children:[Rc(j({tag:c.tag,attributes:j(j({},c.attributes),m.path)},v))]},b={tag:"g",attributes:j({},m.outer),children:[_]},y="mask-".concat(o||Kr()),k="clip-".concat(o||Kr()),T={tag:"mask",attributes:j(j({},Qa),{},{id:y,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[g,b]},N={tag:"defs",children:[{tag:"clipPath",attributes:{id:k},children:cv(d)},T]};return r.push(N,{tag:"rect",attributes:j({fill:"currentColor","clip-path":"url(#".concat(k,")"),mask:"url(#".concat(y,")")},Qa)}),{children:r,attributes:s}}}},fv={provides:function(t){var n=!1;ln.matchMedia&&(n=ln.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:j(j({},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=j(j({},a),{},{attributeName:"opacity"}),o={tag:"circle",attributes:j(j({},s),{},{cx:"256",cy:"364",r:"28"}),children:[]};return n||o.children.push({tag:"animate",attributes:j(j({},a),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:j(j({},i),{},{values:"1;0;1;1;0;1;"})}),r.push(o),r.push({tag:"path",attributes:j(j({},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:j(j({},i),{},{values:"1;0;0;0;0;1;"})}]}),n||r.push({tag:"path",attributes:j(j({},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:j(j({},i),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:r}}}},dv={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}}}},pv=[f0,Q0,Z0,ev,tv,iv,ov,lv,uv,fv,dv];k0(pv,{mixoutsTo:ot});ot.noAuto;var mv=ot.config,hv=ot.library;ot.dom;var Mi=ot.parse;ot.findIconDefinition;ot.toHtml;var gv=ot.icon;ot.layer;ot.text;ot.counter;function Mc(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 yv(e,t){if(e==null)return{};var n=vv(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}function bv(e){return wv(e)||_v(e)||Ev(e)||Sv()}function wv(e){if(Array.isArray(e))return Ii(e)}function _v(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function Ev(e,t){if(e){if(typeof e=="string")return Ii(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ii(e,t)}}function Ii(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&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 Od(l)}),s=Object.keys(e.attributes||{}).reduce(function(l,u){var c=e.attributes[u];switch(u){case"class":l.class=Tv(c);break;case"style":l.style=Lv(c);break;default:l.attrs[u]=c}return l},{attrs:{},class:{},style:{}});n.class;var a=n.style,i=a===void 0?{}:a,o=yv(n,Ov);return Jr(e.tag,Mt(Mt(Mt({},t),{},{class:s.class,style:Mt(Mt({},s.style),i)},s.attrs),o),r)}var Ld=!1;try{Ld=!0}catch{}function Pv(){if(!Ld&&console&&typeof console.error=="function"){var e;(e=console).error.apply(e,arguments)}}function Za(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?et({},e,t):{}}function Rv(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"},et(t,"fa-".concat(e.size),e.size!==null),et(t,"fa-rotate-".concat(e.rotation),e.rotation!==null),et(t,"fa-pull-".concat(e.pull),e.pull!==null),et(t,"fa-swap-opacity",e.swapOpacity),et(t,"fa-bounce",e.bounce),et(t,"fa-shake",e.shake),et(t,"fa-beat",e.beat),et(t,"fa-fade",e.fade),et(t,"fa-beat-fade",e.beatFade),et(t,"fa-flash",e.flash),et(t,"fa-spin-pulse",e.spinPulse),et(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 Ic(e){if(e&&Xs(e)==="object"&&e.prefix&&e.iconName&&e.icon)return e;if(Mi.icon)return Mi.icon(e);if(e===null)return null;if(Xs(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 Mv=fn({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},maskId:{type: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},titleId:{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=se(function(){return Ic(t.icon)}),a=se(function(){return Za("classes",Rv(t))}),i=se(function(){return Za("transform",typeof t.transform=="string"?Mi.transform(t.transform):t.transform)}),o=se(function(){return Za("mask",Ic(t.mask))}),l=se(function(){return gv(s.value,Mt(Mt(Mt(Mt({},a.value),i.value),o.value),{},{symbol:t.symbol,title:t.title,titleId:t.titleId,maskId:t.maskId}))});je(l,function(c){if(!c)return Pv("Could not find one or more icon(s)",s.value,o.value)},{immediate:!0});var u=se(function(){return l.value?Od(l.value.abstract[0],{},r):null});return function(){return u.value}}}),sb=fn({name:"FontAwesomeLayers",props:{fixedWidth:{type:Boolean,default:!1}},setup:function(t,n){var r=n.slots,s=mv.familyPrefix,a=se(function(){return["".concat(s,"-layers")].concat(bv(t.fixedWidth?["".concat(s,"-fw")]:[]))});return function(){return Jr("div",{class:a.value},r.default?r.default():[])}}}),Iv={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"]},Nv={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"]},$v=Nv,Hv={prefix:"fas",iconName:"arrow-up-long",icon:[384,512,["long-arrow-up"],"f176","M214.6 9.4c-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 109.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z"]},Fv={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"]},Dv={prefix:"fas",iconName:"tablet-screen-button",icon:[448,512,["tablet-alt"],"f3fa","M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM256 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64H64V384H384V64z"]},zv={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"]},Vv={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"]},jv=Vv,Bv={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"]},Uv=Bv,Kv={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"]},Wv={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"]},qv={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"]},Gv={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"]},Yv={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"]},Jv={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"]},Xv=Jv,Qv={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"]},Zv={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"]},e4={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"]},t4={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"]},n4={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"]},r4={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"]},s4={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"]},a4={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"]},i4={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"]},o4=i4,l4={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"]},c4=l4,u4={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"]},f4={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"]},d4=f4,p4={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"]},m4={prefix:"fas",iconName:"mobile-screen",icon:[384,512,["mobile-android-alt"],"f3cf","M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM144 448c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160c-8.8 0-16 7.2-16 16zM304 64H80V384H304V64z"]},h4={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"]},g4={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"]},v4={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"]},y4=v4,b4={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"]},w4={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"]},_4=w4,E4={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"]},S4=E4,x4={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"]},A4=x4,k4={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"]},C4={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"]},O4={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"]},L4=O4,T4={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"]},P4={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"]},R4={prefix:"fas",iconName:"display",icon:[576,512,[],"e163","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 64V352H64V64H512z"]},M4={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"]},I4={prefix:"fas",iconName:"qrcode",icon:[448,512,[],"f029","M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zM64 96v64h64V96H64zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336zm64 16v64h64V352H64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm80 64H320v64h64V96zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V304zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z"]},N4={prefix:"fas",iconName:"moon",icon:[384,512,[127769,9214],"f186","M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z"]},$4={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"]},H4=$4,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"]},z4={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"]},V4={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"]},j4={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"]},B4=j4,U4={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.7 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"]},K4={prefix:"far",iconName:"calendar",icon:[448,512,[128197,128198],"f133","M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192H400V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192z"]},W4={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"]},q4={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"]},G4={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"]};hv.add(C4,H4,I4,Qv,s4,z4,Uv,L4,Wv,n4,S4,_4,zv,M4,q4,p4,e4,$v,jv,A4,c4,Kv,B4,g4,Gv,D4,h4,t4,k4,d4,Xv,r4,qv,o4,u4,y4,b4,N4,F4,Fv,Zv,V4,Iv,P4,U4,T4,G4,W4,Yv,a4,m4,Dv,R4,K4,Hv);const Y4=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},J4={},X4={class:"columns is-centered"},Q4={class:"form-column column is-two-thirds-tablet is-half-desktop is-half-widescreen is-one-third-fullhd"};function Z4(e,t){return F(),q("div",X4,[Q("div",Q4,[Yn(e.$slots,"default")])])}const ey=Y4(J4,[["render",Z4]]),ty=["innerHTML"],ny=["innerHTML"],ry={__name:"FormWrapper",props:{title:{type:String,default:""},punchline:{type:String,default:""}},setup(e){return(t,n)=>{const r=He("ResponsiveWidthWrapper");return F(),Xe(r,null,{default:qe(()=>[e.title?(F(),q("h1",{key:0,class:"title has-text-grey-dark",innerHTML:t.$t(e.title)},null,8,ty)):le("",!0),e.punchline?(F(),q("div",{key:1,id:"punchline",class:"block",innerHTML:t.$t(e.punchline)},null,8,ny)):le("",!0),Yn(t.$slots,"default")]),_:3})}}};function Td(e){var t;const n=it(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Wr=or?window:void 0;function Ni(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Wr):[t,n,r,s]=e,!t)return fo;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const a=[],i=()=>{a.forEach(c=>c()),a.length=0},o=(c,f,d,m)=>(c.addEventListener(f,d,m),()=>c.removeEventListener(f,d,m)),l=je(()=>[Td(t),it(s)],([c,f])=>{if(i(),!c)return;const d=hf(f)?{...f}:f;a.push(...n.flatMap(m=>r.map(g=>o(c,m,g,d))))},{immediate:!0,flush:"post"}),u=()=>{l(),i()};return ir(u),u}const As=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ks="__vueuse_ssr_handlers__",sy=ay();function ay(){return ks in As||(As[ks]=As[ks]||{}),As[ks]}function Pd(e,t){return sy[e]||t}function iy(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 oy={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()}},Nc="vueuse-storage";function ly(e,t,n,r={}){var s;const{flush:a="pre",deep:i=!0,listenToStorageChanges:o=!0,writeDefaults:l=!0,mergeDefaults:u=!1,shallow:c,window:f=Wr,eventFilter:d,onError:m=x=>{console.error(x)},initOnMounted:g}=r,v=(c?Xi:he)(typeof t=="function"?t():t);if(!n)try{n=Pd("getDefaultStorage",()=>{var x;return(x=Wr)==null?void 0:x.localStorage})()}catch(x){m(x)}if(!n)return v;const _=it(t),b=iy(_),y=(s=r.serializer)!=null?s:oy[b],{pause:k,resume:T}=vf(v,()=>V(v.value),{flush:a,deep:i,eventFilter:d});f&&o&&ha(()=>{Ni(f,"storage",P),Ni(f,Nc,H),g&&P()}),g||P();function N(x,E){f&&f.dispatchEvent(new CustomEvent(Nc,{detail:{key:e,oldValue:x,newValue:E,storageArea:n}}))}function V(x){try{const E=n.getItem(e);if(x==null)N(E,null),n.removeItem(e);else{const C=y.write(x);E!==C&&(n.setItem(e,C),N(E,C))}}catch(E){m(E)}}function G(x){const E=x?x.newValue:n.getItem(e);if(E==null)return l&&_!=null&&n.setItem(e,y.write(_)),_;if(!x&&u){const C=y.read(E);return typeof u=="function"?u(C,_):b==="object"&&!Array.isArray(C)?{..._,...C}:C}else return typeof E!="string"?E:y.read(E)}function P(x){if(!(x&&x.storageArea!==n)){if(x&&x.key==null){v.value=_;return}if(!(x&&x.key!==e)){k();try{(x==null?void 0:x.newValue)!==y.write(v.value)&&(v.value=G(x))}catch(E){m(E)}finally{x?Cn(T):T()}}}}function H(x){P(x.detail)}return v}function cy(){const e=he(!1),t=ar();return t&&On(()=>{e.value=!0},t),e}function uy(e){const t=cy();return se(()=>(t.value,!!e()))}function fy(e,t={}){const{window:n=Wr}=t,r=uy(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const a=he(!1),i=u=>{a.value=u.matches},o=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},l=eo(()=>{r.value&&(o(),s=n.matchMedia(it(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),a.value=s.matches)});return ir(()=>{l(),o(),s=void 0}),a}function dy(e){return fy("(prefers-color-scheme: dark)",e)}function py(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Wr,storage:a,storageKey:i="vueuse-color-scheme",listenToStorageChanges:o=!0,storageRef:l,emitAuto:u,disableTransition:c=!0}=e,f={auto:"",light:"light",dark:"dark",...e.modes||{}},d=dy({window:s}),m=se(()=>d.value?"dark":"light"),g=l||(i==null?po(r):ly(i,r,a,{window:s,listenToStorageChanges:o})),v=se(()=>g.value==="auto"?m.value:g.value),_=Pd("updateHTMLAttrs",(T,N,V)=>{const G=typeof T=="string"?s==null?void 0:s.document.querySelector(T):Td(T);if(!G)return;let P;if(c&&(P=s.document.createElement("style"),P.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(P)),N==="class"){const H=V.split(/\s/g);Object.values(f).flatMap(x=>(x||"").split(/\s/g)).filter(Boolean).forEach(x=>{H.includes(x)?G.classList.add(x):G.classList.remove(x)})}else G.setAttribute(N,V);c&&(s.getComputedStyle(P).opacity,document.head.removeChild(P))});function b(T){var N;_(t,n,(N=f[T])!=null?N:T)}function y(T){e.onChanged?e.onChanged(T,b):b(T)}je(v,y,{flush:"post",immediate:!0}),ha(()=>y(v.value));const k=se({get(){return u?g.value:v.value},set(T){g.value=T}});try{return Object.assign(k,{store:g,system:m,state:v})}catch{return k}}const Rd=fn({name:"UseColorMode",props:["selector","attribute","modes","onChanged","storageKey","storage","emitAuto"],setup(e,{slots:t}){const n=py(e),r=Nt({mode:n,system:n.system,store:n.store});return()=>{if(t.default)return t.default(r)}}});function ei(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Md(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const Cs=new WeakMap;function hy(e,t=!1){const n=he(t);let r=null;je(po(e),i=>{const o=ei(it(i));if(o){const l=o;Cs.get(l)||Cs.set(l,l.style.overflow),n.value&&(l.style.overflow="hidden")}},{immediate:!0});const s=()=>{const i=ei(it(e));!i||n.value||(jl&&(r=Ni(i,"touchmove",o=>{my(o)},{passive:!1})),i.style.overflow="hidden",n.value=!0)},a=()=>{var i;const o=ei(it(e));!o||!n.value||(jl&&(r==null||r()),o.style.overflow=(i=Cs.get(o))!=null?i:"",Cs.delete(o),n.value=!1)};return ir(a),se({get(){return n.value},set(i){i?s():a()}})}function gy(){let e=!1;const t=he(!1);return(n,r)=>{if(t.value=r.value,e)return;e=!0;const s=hy(n,r.value);je(t,a=>s.value=a)}}gy();const vy={key:0,class:"columns is-gapless"},yy={class:"column has-text-centered"},by={class:"field is-grouped"},wy={key:1,class:"content has-text-centered"},_y={key:2,class:"content has-text-centered"},Ey={key:1},Sy={key:3,class:"content has-text-centered"},xy={key:0},Ay={class:"has-text-weight-bold"},ky={key:1},Cy={key:0,class:"ml-0 mt-1"},Oy={class:"column"},Ly={key:0,class:"column"},Ty={key:0,class:"release-flag"},Py={key:1,class:"column"},Ry={key:0,class:"release-flag"},My={class:"mx-2 has-ellipsis"},Iy={key:2},Ny={key:0},$y={key:0,class:"release-flag"},Hy={key:1},Fy={__name:"Footer",props:{showButtons:!0,internalFooterType:{type:String,default:"navLinks"}},setup(e){const t=Zf(),n=Ge(),r=nt("2fauth"),s=he(!1);function a(){confirm(Je("auth.confirm.logout"))&&n.logout()}return(i,o)=>{const l=He("router-link"),u=He("FontAwesomeIcon");return F(),q("footer",{class:Se(["main",{menu:Y(s)}])},[e.showButtons&&!Y(s)?(F(),q("div",vy,[Q("div",yy,[Q("div",by,[Yn(i.$slots,"default")])])])):le("",!0),e.internalFooterType=="doneButton"?(F(),q("div",wy,[Q("button",{id:"lnkExitEdit",class:"button is-ghost is-like-text",onClick:o[0]||(o[0]=da(c=>i.$emit("doneButtonClicked",!0),["stop"]))},we(i.$t("commons.done")),1)])):e.internalFooterType=="modal"?(F(),q("div",_y,[i.$route.name!="accounts"?(F(),Xe(l,{key:0,id:"lnkBackToHome",to:{name:"accounts"},class:"has-text-grey"},{default:qe(()=>[Re(we(i.$t("commons.back_to_home")),1)]),_:1})):(F(),q("span",Ey," "))])):(F(),q("div",Sy,[i.$route.meta.showAbout===!0?(F(),q("div",xy,[ne(l,{id:"lnkAbout",to:{name:"about"},class:"has-text-grey"},{default:qe(()=>[Re(" 2FAuth – "),Q("span",Ay,"v"+we(Y(r).version),1)]),_:1})])):Y(n).preferences.showEmailInFooter?(F(),q("div",ky,[Y(s)==!0?(F(),q("ul",Cy,[Q("li",Oy,[ne(l,{id:"lnkSettings",to:{name:"settings.options"}},{default:qe(()=>[Re(we(i.$t("settings.settings")),1)]),_:1},8,["to"])]),Y(n).isAdmin?(F(),q("li",Ly,[ne(l,{id:"lnkAdmin",to:{name:"admin.appSetup"}},{default:qe(()=>[Y(t).latestRelease&&Y(t).checkForUpdate?(F(),q("span",Ty)):le("",!0),Re(" "+we(i.$t("admin.admin_panel")),1)]),_:1},8,["to"])])):le("",!0),!Y(r).config.proxyAuth||Y(r).config.proxyAuth&&Y(r).config.proxyLogoutUrl?(F(),q("li",Py,[ne(Y(Rd),null,{default:qe(({mode:c})=>[Q("button",{id:"lnkSignOut",class:Se(["button is-text is-like-text",c=="dark"?"has-text-grey-lighter":"has-text-grey-darker"]),onClick:a},we(i.$t("auth.sign_out")),3)]),_:1})])):le("",!0)])):le("",!0),Q("button",{type:"button",id:"btnEmailMenu",onClick:o[1]||(o[1]=c=>s.value=!Y(s)),class:"button is-text is-like-text has-text-grey",style:{width:"100%"}},[Y(t).latestRelease&&Y(t).checkForUpdate?(F(),q("span",Ry)):le("",!0),Q("span",My,we(Y(n).email),1),Y(s)?(F(),Xe(u,{key:2,icon:["fas","times"],class:"mr-2"})):(F(),Xe(u,{key:1,icon:["fas","bars"],class:"mr-2"}))])])):(F(),q("div",Iy,[ne(l,{id:"lnkSettings",to:{name:"settings.options"},class:"has-text-grey"},{default:qe(()=>[Re(we(i.$t("settings.settings")),1)]),_:1},8,["to"]),Y(n).isAdmin?(F(),q("span",Ny,[Re(" - "),ne(l,{id:"lnkAdmin",to:{name:"admin.appSetup"},class:"has-text-grey"},{default:qe(()=>[Re(we(i.$t("admin.admin")),1),Y(t).latestRelease&&Y(t).checkForUpdate?(F(),q("span",$y)):le("",!0)]),_:1},8,["to"])])):le("",!0),!Y(r).config.proxyAuth||Y(r).config.proxyAuth&&Y(r).config.proxyLogoutUrl?(F(),q("span",Hy,[Re(" - "),Q("button",{id:"lnkSignOut",class:"button is-text is-like-text has-text-grey",onClick:a},we(i.$t("auth.sign_out")),1)])):le("",!0)]))]))],2)}}},Dy={key:0,class:"modal-content modal-with-footer"},zy={class:"modal-slot p-4 has-text-centered"},Vy={key:1,class:"modal-content modal-with-footer"},jy={class:"section"},By={class:"columns is-centered"},Uy={class:"column is-three-quarters"},Ky={class:"modal-slot box has-text-centered is-shadowless"},Wy={__name:"Modal",props:{modelValue:Boolean,closable:{type:Boolean,default:!0},isFullHeight:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:t}){const{notify:n}=ef(),r=e,s=t,a=se({get(){return r.modelValue},set(o){s("update:modelValue",o)}});function i(o){n({clean:!0}),a.value=!1}return(o,l)=>{const u=He("ButtonBackCloseCancel"),c=He("VueFooter");return F(),q("div",{class:Se(["modal modal-otp",{"is-active":Y(a)}])},[Q("div",{class:"modal-background",onClick:da(i,["stop"])}),e.isFullHeight?(F(),q("div",Dy,[Q("div",zy,[Yn(o.$slots,"default")])])):(F(),q("div",Vy,[Q("section",jy,[Q("div",By,[Q("div",Uy,[Q("div",Ky,[Yn(o.$slots,"default")])])])])])),r.closable?(F(),Xe(c,{key:2,showButtons:!0,internalFooterType:"modal"},{default:qe(()=>[ne(u,{action:"close",useLinkTag:!1,onClosed:i})]),_:1})):le("",!0)],2)}}},qy=["type","disabled"],Gy={__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)=>(F(),q("button",{type:e.nativeType,disabled:e.isLoading||e.isDisabled,class:Se({button:!0,[`${e.color}`]:!0,"is-loading":e.isLoading})},[Yn(t.$slots,"default")],10,qy))}},Yy={key:0,class:"control"},Jy={key:1,class:"control"},Xy={__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},isRounded:{type:Boolean,default:!0}},setup(e){T1(),mf();const t=Ef(),n=e,r="button"+(t.value==="dark"&&!n.isText&&!n.isCapture?" is-dark":"")+(n.isText?" is-text":"")+(n.isCapture?" is-large is-warning":"")+(n.isRounded?" is-rounded":"");return(s,a)=>{const i=He("RouterLink");return e.useLinkTag?(F(),q("p",Yy,[e.action=="close"?(F(),Xe(i,{key:0,id:"btnClose",to:e.returnTo,class:Se(r),tabindex:"0",role:"button","aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:qe(()=>[Re(we(s.$t("commons.close")),1)]),_:1},8,["to","aria-label"])):e.action=="back"?(F(),Xe(i,{key:1,id:"lnkBack",to:e.returnTo,class:Se(r),"aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:qe(()=>[Re(we(s.$t("commons.back")),1)]),_:1},8,["to","aria-label"])):e.action=="cancel"?(F(),Xe(i,{key:2,id:"btnCancel",to:e.returnTo,class:Se(r)},{default:qe(()=>[Re(we(s.$t("commons.cancel")),1)]),_:1},8,["to"])):le("",!0)])):(F(),q("p",Jy,[e.action=="close"?(F(),q("button",{key:0,id:"btnClose",class:Se(r),onClick:a[0]||(a[0]=o=>s.$emit("closed")),type:"button"},we(s.$t("commons.close")),1)):le("",!0),e.action=="cancel"?(F(),q("button",{key:1,id:"btnCancel",class:Se(r),onClick:a[1]||(a[1]=o=>s.$emit("canceled")),type:"button"},we(s.$t("commons.cancel")),1)):le("",!0)]))}}},Qy={role:"alert"},Zy=["id","innerHTML"],e3={__name:"FieldError",props:{error:{type:String,required:!0},field:{type:String,required:!0},alertType:{type:String,default:"is-danger"}},setup(e){return(t,n)=>(F(),q("div",Qy,[Q("p",{id:"valError"+e.field[0].toUpperCase()+e.field.toLowerCase().slice(1),class:Se(["help",e.alertType]),innerHTML:e.error},null,10,Zy)]))}},t3=["for","innerHTML"],n3=["disabled","id","type","value","placeholder","maxlength"],r3={key:0,class:"icon is-small is-left"},s3={key:1,class:"icon is-small is-right"},a3=["innerHTML"],i3=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}=Dn(t.inputType,t.fieldName);return(r,s)=>{const a=He("FontAwesomeIcon"),i=He("FieldError");return F(),q("div",{class:Se(["mb-3",{"pt-3":e.hasOffset,"is-flex":e.isIndented}])},[e.isIndented?(F(),q("div",{key:0,class:"mx-2 pr-1",style:an({opacity:e.isDisabled?"0.5":"1"})},[ne(a,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):le("",!0),Q("div",{class:Se(["field",{"is-flex-grow-5":e.isIndented}])},[Q("label",{for:Y(n),class:"label",style:an({opacity:e.isDisabled?"0.5":"1"}),innerHTML:r.$t(e.label)},null,12,t3),Q("div",{class:Se(["control",{"has-icons-left":e.leftIcon,"has-icons-right":e.rightIcon}])},[Q("input",io({disabled:e.isDisabled,id:Y(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,n3),e.leftIcon?(F(),q("span",r3,[ne(a,{icon:["fas",e.leftIcon],transform:"rotate-75",size:"xs"},null,8,["icon"])])):le("",!0),e.rightIcon?(F(),q("span",s3,[ne(a,{icon:["fas",e.rightIcon],transform:"rotate-75",size:"xs"},null,8,["icon"])])):le("",!0)],2),e.fieldError!=null?(F(),Xe(i,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):le("",!0),e.help?(F(),q("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,a3)):le("",!0)],2)],2)}}}),o3=["for","innerHTML"],l3={class:"control has-icons-right"},c3=["disabled","id","type","value","placeholder"],u3=["title"],f3=["title"],d3=["innerHTML"],p3=["innerHTML"],m3={key:3,class:"columns is-mobile is-size-7 mt-0"},h3={class:"column is-one-third"},g3={class:"has-text-weight-semibold"},v3=Q("br",null,null,-1),y3=Q("br",null,null,-1),b3={class:"column"},w3={class:"has-text-weight-semibold"},_3=Q("br",null,null,-1),E3=Q("br",null,null,-1),S3=Q("br",null,null,-1),x3=Q("br",null,null,-1),A3=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}=Dn(t.inputType,t.fieldName),r=he(t.inputType),s=he(!1),a=se(()=>/[a-z]/.test(t.modelValue)),i=se(()=>/[A-Z]/.test(t.modelValue)),o=se(()=>/[0-9]/.test(t.modelValue)),l=se(()=>/[^A-Za-z0-9]/.test(t.modelValue)),u=se(()=>t.modelValue.length>=8);function c(d){s.value=!!d.getModifierState("CapsLock")}function f(d){r.value!=d&&(r.value=d)}return(d,m)=>{const g=He("font-awesome-icon"),v=He("FieldError");return F(),q("div",{class:Se(["field",{"pt-3":e.hasOffset}])},[Q("label",{for:Y(n),class:"label",innerHTML:d.$t(e.label)},null,8,o3),Q("div",l3,[Q("input",io({disabled:e.isDisabled,id:Y(n),type:Y(r),class:"input",value:e.modelValue,placeholder:e.placeholder},d.$attrs,{onInput:m[0]||(m[0]=_=>d.$emit("update:modelValue",_.target.value)),onKeyup:c}),null,16,c3),Y(r)=="password"?(F(),q("span",{key:0,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[1]||(m[1]=fi(_=>f("text"),["enter"])),onClick:m[2]||(m[2]=_=>f("text")),title:d.$t("auth.forms.reveal_password")},[ne(g,{icon:["fas","eye-slash"]})],40,u3)):(F(),q("span",{key:1,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[3]||(m[3]=fi(_=>f("password"),["enter"])),onClick:m[4]||(m[4]=_=>f("password")),title:d.$t("auth.forms.hide_password")},[ne(g,{icon:["fas","eye"]})],40,f3))]),Y(s)?(F(),q("p",{key:0,class:"help is-warning",innerHTML:d.$t("auth.forms.caps_lock_is_on")},null,8,d3)):le("",!0),e.fieldError!=null?(F(),Xe(v,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):le("",!0),e.help?(F(),q("p",{key:2,class:"help",innerHTML:d.$t(e.help)},null,8,p3)):le("",!0),e.showRules?(F(),q("div",m3,[Q("div",h3,[Q("span",g3,we(d.$t("auth.forms.mandatory_rules")),1),v3,Q("span",{class:Se(["is-underscored",{"is-dot":Y(u)}]),id:"valPwdIsLongEnough"},null,2),Re(we(d.$t("auth.forms.is_long_enough")),1),y3]),Q("div",b3,[Q("span",w3,we(d.$t("auth.forms.optional_rules_you_should_follow")),1),_3,Q("span",{class:Se(["is-underscored",{"is-dot":Y(a)}]),id:"valPwdHasLowerCase"},null,2),Re(we(d.$t("auth.forms.has_lower_case")),1),E3,Q("span",{class:Se(["is-underscored",{"is-dot":Y(i)}]),id:"valPwdHasUpperCase"},null,2),Re(we(d.$t("auth.forms.has_upper_case")),1),S3,Q("span",{class:Se(["is-underscored",{"is-dot":Y(l)}]),id:"valPwdHasSpecialChar"},null,2),Re(we(d.$t("auth.forms.has_special_char")),1),x3,Q("span",{class:Se(["is-underscored",{"is-dot":Y(o)}]),id:"valPwdHasNumber"},null,2),Re(we(d.$t("auth.forms.has_number")),1)])])):le("",!0)],2)}}}),k3={class:"field is-flex"},C3=["innerHTML"],O3={class:"control"},L3={class:"select"},T3=["disabled"],P3=["value"],R3=["innerHTML"],M3={__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:""},isIndented:Boolean,isDisabled:Boolean},setup(e){const n=he(e.modelValue);return(r,s)=>{const a=He("FontAwesomeIcon"),i=He("FieldError");return F(),q("div",k3,[e.isIndented?(F(),q("div",{key:0,class:"mx-2 pr-1",style:an({opacity:e.isDisabled?"0.5":"1"})},[ne(a,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):le("",!0),Q("div",null,[Q("label",{class:"label",innerHTML:r.$t(e.label),style:an({opacity:e.isDisabled?"0.5":"1"})},null,12,C3),Q("div",O3,[Q("div",L3,[gu(Q("select",{"onUpdate:modelValue":s[0]||(s[0]=o=>Le(n)?n.value=o:null),onChange:s[1]||(s[1]=o=>r.$emit("update:modelValue",o.target.value)),disabled:e.isDisabled},[(F(!0),q(ze,null,ku(e.options,o=>(F(),q("option",{value:o.value},we(r.$t(o.text)),9,P3))),256))],40,T3),[[ah,Y(n)]])])]),e.fieldError!=null?(F(),Xe(i,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):le("",!0),e.help?(F(),q("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,R3)):le("",!0)])])}}},I3=["aria-labelledby"],N3=["id","innerHTML"],$3={class:"is-toggle buttons"},H3=["id","aria-checked","disabled","onClick","title"],F3=["id","checked","value","disabled"],D3=["innerHTML"],z3=["innerHTML"],V3={__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}){const n=t;function r(s){n("update:modelValue",s)}return(s,a)=>{const i=He("FontAwesomeIcon"),o=He("FieldError");return F(),q("div",{class:Se(["field",{"pt-3":e.hasOffset}]),role:"radiogroup","aria-labelledby":Y(Dn)("label",e.fieldName).inputId},[e.label?(F(),q("label",{key:0,id:Y(Dn)("label",e.fieldName).inputId,class:"label",innerHTML:s.$t(e.label)},null,8,N3)):le("",!0),Q("div",$3,[ne(Y(Rd),null,{default:qe(({mode:l})=>[(F(!0),q(ze,null,ku(e.choices,u=>(F(),q("button",{key:u.value,id:Y(Dn)("button",e.fieldName+u.value).inputId,role:"radio",type:"button",class:Se(["button",{"is-link":e.modelValue===u.value,"is-dark":l==="dark","is-multiline":u.legend}]),"aria-checked":e.modelValue===u.value,disabled:e.isDisabled,onClick:da(c=>r(u.value),["stop"]),title:u.title?u.title:""},[Q("input",{id:Y(Dn)("radio",u.value).inputId,type:"radio",class:"is-hidden",checked:e.modelValue===u.value,value:u.value,disabled:e.isDisabled},null,8,F3),u.legend?(F(),q("span",{key:0,innerHTML:s.$t(u.legend),class:"is-block is-size-7"},null,8,D3)):le("",!0),u.icon?(F(),Xe(i,{key:1,icon:["fas",u.icon],class:"mr-2"},null,8,["icon"])):le("",!0),Re(" "+we(s.$t(u.text)),1)],10,H3))),128))]),_:1})]),e.fieldError!=null?(F(),Xe(o,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):le("",!0),e.help?(F(),q("p",{key:2,class:"help",innerHTML:s.$t(e.help)},null,8,z3)):le("",!0)],10,I3)}}},j3={class:"field is-flex"},B3=["id","name","disabled"],U3=["for","innerHTML","onKeypress"],K3=["innerHTML"],W3=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=t,s=Zp(),a=se({get(){return n.modelValue},set(o){r("update:modelValue",o)}});function i(){s.disabled!=!0&&(a.value=!a.value)}return(o,l)=>{const u=He("FontAwesomeIcon");return F(),q("div",j3,[e.isIndented?(F(),q("div",{key:0,class:"mx-2 pr-1",style:an({opacity:e.isDisabled?"0.5":"1"})},[ne(u,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):le("",!0),Q("div",null,[gu(Q("input",{id:e.fieldName,type:"checkbox",name:e.fieldName,class:"is-checkradio is-info","onUpdate:modelValue":l[0]||(l[0]=c=>Le(a)?a.value=c:null),disabled:e.isDisabled},null,8,B3),[[sh,Y(a)]]),Q("label",{tabindex:"0",for:e.fieldName,class:Se(["label",e.labelClass]),innerHTML:o.$t(e.label),onKeypress:fi(da(i,["prevent"]),["space"])},null,42,U3),e.help?(F(),q("p",{key:0,class:"help",innerHTML:o.$t(e.help)},null,8,K3)):le("",!0)])])}}}),q3={class:"field is-grouped"},G3={class:"control"},Y3={key:0,class:"control"},J3={__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=He("VueButton"),s=He("RouterLink");return F(),q("div",q3,[Q("div",G3,[ne(r,{id:e.submitId,color:e.color,isLoading:e.isBusy,disabled:e.isDisabled},{default:qe(()=>[Re(we(t.$t(e.caption)),1)]),_:1},8,["id","color","isLoading","disabled"])]),e.showCancelButton?(F(),q("div",Y3,[ne(s,{id:e.cancelId,to:{name:e.cancelLandingView},class:"button is-text"},{default:qe(()=>[Re(we(t.$t("commons.cancel")),1)]),_:1},8,["id","to"])])):le("",!0)])}}},X3={__name:"Kicker",props:{kickAfter:{type:Number,required:!0}},setup(e){const t=Ge(),n=he(["mousedown","scroll","keypress"]),r=he(null),s=e;je(()=>s.kickAfter,()=>{o()}),On(()=>{n.value.forEach(function(u){window.addEventListener(u,o)},this),a()}),oa(()=>{n.value.forEach(function(u){window.removeEventListener(u,o)},this),l()});function a(){r.value=setTimeout(i,s.kickAfter*60*1e3)}function i(){clearTimeout(r.value),t.logout({kicked:!0})}function o(){l(),a()}function l(){clearTimeout(r.value)}return(u,c)=>null}},Tn=fh(q1),Id={prefix:"2fauth_",config:window.appConfig,version:window.appVersion,isDemoApp:window.isDemoApp,isTestingApp:window.isTestingApp,langs:window.appLocales,urls:window.urls};Tn.provide("2fauth",sr(Id));const Nd=Y1();Nd.use(({store:e})=>{e.$2fauth=Id});Tn.use(Nd);Tn.use(tr);Tn.use(kg,{lang:document.documentElement.lang.substring(0,2),resolve:async e=>{const t=Object.assign({"../lang/php_ar.json":()=>Z(()=>import("./php_ar-DkAJ05Mp.js"),[],import.meta.url),"../lang/php_bg.json":()=>Z(()=>import("./php_bg-CoUSxAMd.js"),[],import.meta.url),"../lang/php_da.json":()=>Z(()=>import("./php_da-Dktu4lBQ.js"),[],import.meta.url),"../lang/php_de.json":()=>Z(()=>import("./php_de-CaMBnB2D.js"),[],import.meta.url),"../lang/php_en.json":()=>Z(()=>import("./php_en-DiZe0RSj.js"),[],import.meta.url),"../lang/php_es.json":()=>Z(()=>import("./php_es-D_CFd2fo.js"),[],import.meta.url),"../lang/php_fr.json":()=>Z(()=>import("./php_fr-We9OMs7M.js"),[],import.meta.url),"../lang/php_hi.json":()=>Z(()=>import("./php_hi--xvyUCAZ.js"),[],import.meta.url),"../lang/php_id.json":()=>Z(()=>import("./php_id-C14Zr-Zf.js"),[],import.meta.url),"../lang/php_it.json":()=>Z(()=>import("./php_it-mlyMaB1o.js"),[],import.meta.url),"../lang/php_ja.json":()=>Z(()=>import("./php_ja-xY6Xx06P.js"),[],import.meta.url),"../lang/php_ko.json":()=>Z(()=>import("./php_ko-C-kMOHRA.js"),[],import.meta.url),"../lang/php_nl.json":()=>Z(()=>import("./php_nl-DM5HSo8G.js"),[],import.meta.url),"../lang/php_pl.json":()=>Z(()=>import("./php_pl-DkAJ05Mp.js"),[],import.meta.url),"../lang/php_pt.json":()=>Z(()=>import("./php_pt-DHeV0kB3.js"),[],import.meta.url),"../lang/php_ro.json":()=>Z(()=>import("./php_ro-Cgf1xQ8g.js"),[],import.meta.url),"../lang/php_ru.json":()=>Z(()=>import("./php_ru-BHhdv2c6.js"),[],import.meta.url),"../lang/php_si.json":()=>Z(()=>import("./php_si-B2vyVoN1.js"),[],import.meta.url),"../lang/php_tr.json":()=>Z(()=>import("./php_tr-nxKVoDL2.js"),[],import.meta.url),"../lang/php_zh.json":()=>Z(()=>import("./php_zh-Da1G_uNl.js"),[],import.meta.url)});if(e.includes("php_"))return await t[`../lang/${e}.json`]()}});Tn.use(Ch);Tn.component("FontAwesomeIcon",Mv).component("ResponsiveWidthWrapper",ey).component("FormWrapper",ry).component("VueFooter",Fy).component("Modal",Wy).component("VueButton",Gy).component("ButtonBackCloseCancel",Xy).component("FieldError",e3).component("FormField",i3).component("FormPasswordField",A3).component("FormSelect",M3).component("FormToggle",V3).component("FormCheckbox",W3).component("FormButtons",J3).component("Kicker",X3);Tn.mount("#app");Ge().applyUserPrefs();export{mf as $,Q3 as A,Yn as B,da as C,Le as D,ku as E,ze as F,ah as G,Je as H,Lg as I,hr as J,oc as K,nt as L,ha as M,ir as N,yf as O,it as P,Cn as Q,eb as R,Zf as S,tb as T,Rd as U,Tg as V,io as W,sh as X,ju as Y,rb as Z,Dn as _,Ge as a,Su as a0,Z3 as a1,_f as a2,nb as a3,Ln as a4,Xr as a5,Y4 as a6,Rg as a7,sb as a8,yt as b,Qf as c,Nt as d,He as e,F as f,q as g,Q as h,Y as i,Re as j,Xe as k,le as l,ne as m,Se as n,On as o,qe as p,fn as q,he as r,je as s,we as t,T1 as u,oa as v,fi as w,se as x,an as y,gu as z}; diff --git a/public/build/assets/app-D4Udf6Mm.js b/public/build/assets/app-D4Udf6Mm.js deleted file mode 100644 index 72ddc6ef..00000000 --- a/public/build/assets/app-D4Udf6Mm.js +++ /dev/null @@ -1,794 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Start-DbpLb5Lz.js","./Form-BGrUTood.js","./bus-RVphoWuw.js","./Capture-Bb1sXPdR.js","./Spinner-DHClvaFf.js","./Spinner--6H_UWmB.css","./QrContentDisplay-C6rCu47Q.js","./Accounts-DNDVqAqR.js","./OtpDisplay-D2QMFFL_.js","./SearchBox-B-38rGG5.js","./CreateUpdate-Dr-XnMyq.js","./Import-BZd8Em5d.js","./QRcode-CsChMItc.js","./Groups-BMQ6YoNp.js","./CreateUpdate-3ZZroKyC.js","./Options--WfZObkz.js","./SettingTabs-D1fgIcyl.js","./Account-Bgfza_Db.js","./OAuth-C-a66RBn.js","./Edit-BM1fyA7o.js","./WebAuthn-DBHOBJJ_.js","./webauthnService-DqgceQ2G.js","./AppSetup-Dt_jr1xm.js","./AdminTabs-Bc7uXBY-.js","./appSettingsUpdater-B1wtRdsR.js","./CopyButton-CNDtpSH2.js","./Auth-DmixUfoW.js","./Users-Bxf3ihka.js","./Create-DbNLDpJC.js","./Manage-BdbniM-Y.js","./AccessLogViewer-mgRyksdg.js","./Access-B2ymsfLm.js","./Login-lFqZsVye.js","./Register-hMMU0w6y.js","./RequestReset-CO9hDqHp.js","./Reset-BohGQRDz.js","./Recover-CMvlsTFQ.js"])))=>i.map(i=>d[i]); -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const jd="modulepreload",Bd=function(e,t){return new URL(e,t).href},Fi={},Z=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){const o=document.getElementsByTagName("link"),i=document.querySelector("meta[property=csp-nonce]"),l=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));s=Promise.allSettled(n.map(c=>{if(c=Bd(c,r),c in Fi)return;Fi[c]=!0;const u=c.endsWith(".css"),f=u?'[rel="stylesheet"]':"";if(!!r)for(let g=o.length-1;g>=0;g--){const b=o[g];if(b.href===c&&(!u||b.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${f}`))return;const m=document.createElement("link");if(m.rel=u?"stylesheet":jd,u||(m.as="script"),m.crossOrigin="",m.href=c,l&&m.setAttribute("nonce",l),document.head.appendChild(m),u)return new Promise((g,b)=>{m.addEventListener("load",g),m.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${c}`)))})}))}function a(o){const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o}return s.then(o=>{for(const i of o||[])i.status==="rejected"&&a(i.reason);return t().catch(a)})};/** -* @vue/shared v3.4.21 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function zo(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const _e={},Kn=[],pt=()=>{},Ud=()=>!1,ta=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Vo=e=>e.startsWith("onUpdate:"),Ie=Object.assign,jo=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Kd=Object.prototype.hasOwnProperty,fe=(e,t)=>Kd.call(e,t),X=Array.isArray,Wn=e=>Jr(e)==="[object Map]",ar=e=>Jr(e)==="[object Set]",Di=e=>Jr(e)==="[object Date]",ae=e=>typeof e=="function",Ne=e=>typeof e=="string",rn=e=>typeof e=="symbol",ye=e=>e!==null&&typeof e=="object",Vc=e=>(ye(e)||ae(e))&&ae(e.then)&&ae(e.catch),jc=Object.prototype.toString,Jr=e=>jc.call(e),Wd=e=>Jr(e).slice(8,-1),Bc=e=>Jr(e)==="[object Object]",Bo=e=>Ne(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Er=zo(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),na=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},qd=/-(\w)/g,Tt=na(e=>e.replace(qd,(t,n)=>n?n.toUpperCase():"")),Gd=/\B([A-Z])/g,Cn=na(e=>e.replace(Gd,"-$1").toLowerCase()),ra=na(e=>e.charAt(0).toUpperCase()+e.slice(1)),La=na(e=>e?`on${ra(e)}`:""),sn=(e,t)=>!Object.is(e,t),Rs=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Uo=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Yd=e=>{const t=Ne(e)?Number(e):NaN;return isNaN(t)?e:t};let zi;const Uc=()=>zi||(zi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function an(e){if(X(e)){const t={};for(let n=0;n{if(n){const r=n.split(Xd);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Se(e){let t="";if(Ne(e))t=e;else if(X(e))for(let n=0;nXr(n,t))}const we=e=>Ne(e)?e:e==null?"":X(e)||ye(e)&&(e.toString===jc||!ae(e.toString))?JSON.stringify(e,Wc,2):String(e),Wc=(e,t)=>t&&t.__v_isRef?Wc(e,t.value):Wn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],a)=>(n[Ra(r,a)+" =>"]=s,n),{})}:ar(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Ra(n))}:rn(t)?Ra(t):ye(t)&&!X(t)&&!Bc(t)?String(t):t,Ra=(e,t="")=>{var n;return rn(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.4.21 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let it;class qc{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=it,!t&&it&&(this.index=(it.scopes||(it.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=it;try{return it=this,t()}finally{it=n}}}on(){it=this}off(){it=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),Tn()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=en,n=_n;try{return en=!0,_n=this,this._runnings++,Vi(this),this.fn()}finally{ji(this),this._runnings--,_n=n,en=t}}stop(){var t;this.active&&(Vi(this),ji(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function sp(e){return e.value}function Vi(e){e._trackId++,e._depsLength=0}function ji(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},zs=new WeakMap,En=Symbol(""),oo=Symbol("");function at(e,t,n){if(en&&_n){let r=zs.get(e);r||zs.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=eu(()=>r.delete(n))),Qc(_n,s)}}function Nt(e,t,n,r,s,a){const o=zs.get(e);if(!o)return;let i=[];if(t==="clear")i=[...o.values()];else if(n==="length"&&X(e)){const l=Number(r);o.forEach((c,u)=>{(u==="length"||!rn(u)&&u>=l)&&i.push(c)})}else switch(n!==void 0&&i.push(o.get(n)),t){case"add":X(e)?Bo(n)&&i.push(o.get("length")):(i.push(o.get(En)),Wn(e)&&i.push(o.get(oo)));break;case"delete":X(e)||(i.push(o.get(En)),Wn(e)&&i.push(o.get(oo)));break;case"set":Wn(e)&&i.push(o.get(En));break}Go();for(const l of i)l&&Zc(l,4);Yo()}function ap(e,t){var n;return(n=zs.get(e))==null?void 0:n.get(t)}const op=zo("__proto__,__v_isRef,__isVue"),tu=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(rn)),Bi=ip();function ip(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=ue(this);for(let a=0,o=this.length;a{e[t]=function(...n){On(),Go();const r=ue(this)[t].apply(this,n);return Yo(),Tn(),r}}),e}function lp(e){const t=ue(this);return at(t,"has",e),t.hasOwnProperty(e)}class nu{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,a=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return a;if(n==="__v_raw")return r===(s?a?_p:ou:a?au:su).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const o=X(t);if(!s){if(o&&fe(Bi,n))return Reflect.get(Bi,n,r);if(n==="hasOwnProperty")return lp}const i=Reflect.get(t,n,r);return(rn(n)?tu.has(n):op(n))||(s||at(t,"get",n),a)?i:Le(i)?o&&Bo(n)?i:i.value:ye(i)?s?or(i):$t(i):i}}class ru extends nu{constructor(t=!1){super(!1,t)}set(t,n,r,s){let a=t[n];if(!this._isShallow){const l=Xn(a);if(!Vs(r)&&!Xn(r)&&(a=ue(a),r=ue(r)),!X(t)&&Le(a)&&!Le(r))return l?!1:(a.value=r,!0)}const o=X(t)&&Bo(n)?Number(n)e,sa=e=>Reflect.getPrototypeOf(e);function is(e,t,n=!1,r=!1){e=e.__v_raw;const s=ue(e),a=ue(t);n||(sn(t,a)&&at(s,"get",t),at(s,"get",a));const{has:o}=sa(s),i=r?Jo:n?Zo:Pr;if(o.call(s,t))return i(e.get(t));if(o.call(s,a))return i(e.get(a));e!==s&&e.get(t)}function ls(e,t=!1){const n=this.__v_raw,r=ue(n),s=ue(e);return t||(sn(e,s)&&at(r,"has",e),at(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function cs(e,t=!1){return e=e.__v_raw,!t&&at(ue(e),"iterate",En),Reflect.get(e,"size",e)}function Ui(e){e=ue(e);const t=ue(this);return sa(t).has.call(t,e)||(t.add(e),Nt(t,"add",e,e)),this}function Ki(e,t){t=ue(t);const n=ue(this),{has:r,get:s}=sa(n);let a=r.call(n,e);a||(e=ue(e),a=r.call(n,e));const o=s.call(n,e);return n.set(e,t),a?sn(t,o)&&Nt(n,"set",e,t):Nt(n,"add",e,t),this}function Wi(e){const t=ue(this),{has:n,get:r}=sa(t);let s=n.call(t,e);s||(e=ue(e),s=n.call(t,e)),r&&r.call(t,e);const a=t.delete(e);return s&&Nt(t,"delete",e,void 0),a}function qi(){const e=ue(this),t=e.size!==0,n=e.clear();return t&&Nt(e,"clear",void 0,void 0),n}function us(e,t){return function(r,s){const a=this,o=a.__v_raw,i=ue(o),l=t?Jo:e?Zo:Pr;return!e&&at(i,"iterate",En),o.forEach((c,u)=>r.call(s,l(c),l(u),a))}}function fs(e,t,n){return function(...r){const s=this.__v_raw,a=ue(s),o=Wn(a),i=e==="entries"||e===Symbol.iterator&&o,l=e==="keys"&&o,c=s[e](...r),u=n?Jo:t?Zo:Pr;return!t&&at(a,"iterate",l?oo:En),{next(){const{value:f,done:d}=c.next();return d?{value:f,done:d}:{value:i?[u(f[0]),u(f[1])]:u(f),done:d}},[Symbol.iterator](){return this}}}}function jt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function pp(){const e={get(a){return is(this,a)},get size(){return cs(this)},has:ls,add:Ui,set:Ki,delete:Wi,clear:qi,forEach:us(!1,!1)},t={get(a){return is(this,a,!1,!0)},get size(){return cs(this)},has:ls,add:Ui,set:Ki,delete:Wi,clear:qi,forEach:us(!1,!0)},n={get(a){return is(this,a,!0)},get size(){return cs(this,!0)},has(a){return ls.call(this,a,!0)},add:jt("add"),set:jt("set"),delete:jt("delete"),clear:jt("clear"),forEach:us(!0,!1)},r={get(a){return is(this,a,!0,!0)},get size(){return cs(this,!0)},has(a){return ls.call(this,a,!0)},add:jt("add"),set:jt("set"),delete:jt("delete"),clear:jt("clear"),forEach:us(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(a=>{e[a]=fs(a,!1,!1),n[a]=fs(a,!0,!1),t[a]=fs(a,!1,!0),r[a]=fs(a,!0,!0)}),[e,n,t,r]}const[mp,hp,gp,vp]=pp();function Xo(e,t){const n=t?e?vp:gp:e?hp:mp;return(r,s,a)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(fe(n,s)&&s in r?n:r,s,a)}const yp={get:Xo(!1,!1)},bp={get:Xo(!1,!0)},wp={get:Xo(!0,!1)},su=new WeakMap,au=new WeakMap,ou=new WeakMap,_p=new WeakMap;function Ep(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Sp(e){return e.__v_skip||!Object.isExtensible(e)?0:Ep(Wd(e))}function $t(e){return Xn(e)?e:Qo(e,!1,up,yp,su)}function iu(e){return Qo(e,!1,dp,bp,au)}function or(e){return Qo(e,!0,fp,wp,ou)}function Qo(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 o=Sp(e);if(o===0)return e;const i=new Proxy(e,o===2?r:n);return s.set(e,i),i}function tn(e){return Xn(e)?tn(e.__v_raw):!!(e&&e.__v_isReactive)}function Xn(e){return!!(e&&e.__v_isReadonly)}function Vs(e){return!!(e&&e.__v_isShallow)}function lu(e){return tn(e)||Xn(e)}function ue(e){const t=e&&e.__v_raw;return t?ue(t):e}function aa(e){return Object.isExtensible(e)&&Ds(e,"__v_skip",!0),e}const Pr=e=>ye(e)?$t(e):e,Zo=e=>ye(e)?or(e):e;class cu{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new qo(()=>t(this._value),()=>Sr(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=ue(this);return(!t._cacheable||t.effect.dirty)&&sn(t._value,t._value=t.effect.run())&&Sr(t,4),ei(t),t.effect._dirtyLevel>=2&&Sr(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function xp(e,t,n=!1){let r,s;const a=ae(e);return a?(r=e,s=pt):(r=e.get,s=e.set),new cu(r,s,a||!s,n)}function ei(e){var t;en&&_n&&(e=ue(e),Qc(_n,(t=e.dep)!=null?t:e.dep=eu(()=>e.dep=void 0,e instanceof cu?e:void 0)))}function Sr(e,t=4,n){e=ue(e);const r=e.dep;r&&Zc(r,t)}function Le(e){return!!(e&&e.__v_isRef===!0)}function me(e){return uu(e,!1)}function ti(e){return uu(e,!0)}function uu(e,t){return Le(e)?e:new Ap(e,t)}class Ap{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:ue(t),this._value=n?t:Pr(t)}get value(){return ei(this),this._value}set value(t){const n=this.__v_isShallow||Vs(t)||Xn(t);t=n?t:ue(t),sn(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Pr(t),Sr(this,4))}}function Y(e){return Le(e)?e.value:e}const kp={get:(e,t,n)=>Y(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return Le(s)&&!Le(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function fu(e){return tn(e)?e:new Proxy(e,kp)}class Cp{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>ei(this),()=>Sr(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function Op(e){return new Cp(e)}function Tp(e){const t=X(e)?new Array(e.length):{};for(const n in e)t[n]=du(e,n);return t}class Lp{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 ap(ue(this._object),this._key)}}class Rp{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Pp(e,t,n){return Le(e)?e:ae(e)?new Rp(e):ye(e)&&arguments.length>1?du(e,t,n):me(e)}function du(e,t,n){const r=e[t];return Le(r)?r:new Lp(e,t,n)}/** -* @vue/runtime-core v3.4.21 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function nn(e,t,n,r){try{return r?e(...r):e()}catch(s){oa(s,t,n)}}function mt(e,t,n,r){if(ae(e)){const a=nn(e,t,n,r);return a&&Vc(a)&&a.catch(o=>{oa(o,t,n)}),a}const s=[];for(let a=0;a>>1,s=Ye[r],a=Ir(s);aCt&&Ye.splice(t,1)}function $p(e){X(e)?qn.push(...e):(!Yt||!Yt.includes(e,e.allowRecurse?hn+1:hn))&&qn.push(e),mu()}function Gi(e,t,n=Mr?Ct+1:0){for(;nIr(n)-Ir(r));if(qn.length=0,Yt){Yt.push(...t);return}for(Yt=t,hn=0;hne.id==null?1/0:e.id,Hp=(e,t)=>{const n=Ir(e)-Ir(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function gu(e){io=!1,Mr=!0,Ye.sort(Hp);try{for(Ct=0;CtNe(m)?m.trim():m)),f&&(s=n.map(Uo))}let i,l=r[i=La(t)]||r[i=La(Tt(t))];!l&&a&&(l=r[i=La(Cn(t))]),l&&mt(l,e,6,s);const c=r[i+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,mt(c,e,6,s)}}function vu(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const a=e.emits;let o={},i=!1;if(!ae(e)){const l=c=>{const u=vu(c,t,!0);u&&(i=!0,Ie(o,u))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!a&&!i?(ye(e)&&r.set(e,null),null):(X(a)?a.forEach(l=>o[l]=null):Ie(o,a),ye(e)&&r.set(e,o),o)}function ia(e,t){return!e||!ta(t)?!1:(t=t.slice(2).replace(/Once$/,""),fe(e,t[0].toLowerCase()+t.slice(1))||fe(e,Cn(t))||fe(e,t))}let Me=null,yu=null;function js(e){const t=Me;return Me=e,yu=e&&e.type.__scopeId||null,t}function qe(e,t=Me,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&ol(-1);const a=js(t);let o;try{o=e(...s)}finally{js(a),r._d&&ol(1)}return o};return r._n=!0,r._c=!0,r._d=!0,r}function Pa(e){const{type:t,vnode:n,proxy:r,withProxy:s,props:a,propsOptions:[o],slots:i,attrs:l,emit:c,render:u,renderCache:f,data:d,setupState:m,ctx:g,inheritAttrs:b}=e;let w,y;const v=js(e);try{if(n.shapeFlag&4){const C=s||r,R=C;w=kt(u.call(R,C,f,a,m,d,g)),y=l}else{const C=t;w=kt(C.length>1?C(a,{attrs:l,slots:i,emit:c}):C(a,null)),y=t.props?l:Dp(l)}}catch(C){kr.length=0,oa(C,e,1),w=ne(ht)}let S=w;if(y&&b!==!1){const C=Object.keys(y),{shapeFlag:R}=S;C.length&&R&7&&(o&&C.some(Vo)&&(y=zp(y,o)),S=on(S,y))}return n.dirs&&(S=on(S),S.dirs=S.dirs?S.dirs.concat(n.dirs):n.dirs),n.transition&&(S.transition=n.transition),w=S,js(v),w}const Dp=e=>{let t;for(const n in e)(n==="class"||n==="style"||ta(n))&&((t||(t={}))[n]=e[n]);return t},zp=(e,t)=>{const n={};for(const r in e)(!Vo(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Vp(e,t,n){const{props:r,children:s,component:a}=e,{props:o,children:i,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?Yi(r,o,c):!!o;if(l&8){const u=t.dynamicProps;for(let f=0;fe.__isSuspense;function qp(e,t){t&&t.pendingBranch?X(e)?t.effects.push(...e):t.effects.push(e):$p(e)}const Gp=Symbol.for("v-scx"),Yp=()=>nt(Gp);function si(e,t){return ai(e,null,t)}const ds={};function je(e,t,n){return ai(e,t,n)}function ai(e,t,{immediate:n,deep:r,flush:s,once:a,onTrack:o,onTrigger:i}=_e){if(t&&a){const $=t;t=(...K)=>{$(...K),R()}}const l=Ve,c=$=>r===!0?$:vn($,r===!1?1:void 0);let u,f=!1,d=!1;if(Le(e)?(u=()=>e.value,f=Vs(e)):tn(e)?(u=()=>c(e),f=!0):X(e)?(d=!0,f=e.some($=>tn($)||Vs($)),u=()=>e.map($=>{if(Le($))return $.value;if(tn($))return c($);if(ae($))return nn($,l,2)})):ae(e)?t?u=()=>nn(e,l,2):u=()=>(m&&m(),mt(e,l,3,[g])):u=pt,t&&r){const $=u;u=()=>vn($())}let m,g=$=>{m=S.onStop=()=>{nn($,l,4),m=S.onStop=void 0}},b;if(pa)if(g=pt,t?n&&mt(t,l,3,[u(),d?[]:void 0,g]):u(),s==="sync"){const $=Yp();b=$.__watcherHandles||($.__watcherHandles=[])}else return pt;let w=d?new Array(e.length).fill(ds):ds;const y=()=>{if(!(!S.active||!S.dirty))if(t){const $=S.run();(r||f||(d?$.some((K,P)=>sn(K,w[P])):sn($,w)))&&(m&&m(),mt(t,l,3,[$,w===ds?void 0:d&&w[0]===ds?[]:w,g]),w=$)}else S.run()};y.allowRecurse=!!t;let v;s==="sync"?v=y:s==="post"?v=()=>tt(y,l&&l.suspense):(y.pre=!0,l&&(y.id=l.uid),v=()=>ri(y));const S=new qo(u,pt,v),C=Wo(),R=()=>{S.stop(),C&&jo(C.effects,S)};return t?n?y():w=S.run():s==="post"?tt(S.run.bind(S),l&&l.suspense):S.run(),b&&b.push(R),R}function Jp(e,t,n){const r=this.proxy,s=Ne(e)?e.includes(".")?bu(r,e):()=>r[e]:e.bind(r,r);let a;ae(t)?a=t:(a=t.handler,n=t);const o=Qr(this),i=ai(s,a.bind(r),n);return o(),i}function bu(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s0){if(n>=t)return e;n++}if(r=r||new Set,r.has(e))return e;if(r.add(e),Le(e))vn(e.value,t,n,r);else if(X(e))for(let s=0;s{vn(s,t,n,r)});else if(Bc(e))for(const s in e)vn(e[s],t,n,r);return e}function wu(e,t){if(Me===null)return e;const n=ma(Me)||Me.proxy,r=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),Tu(()=>{e.isUnmounting=!0}),e}const dt=[Function,Array],Eu={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:dt,onEnter:dt,onAfterEnter:dt,onEnterCancelled:dt,onBeforeLeave:dt,onLeave:dt,onAfterLeave:dt,onLeaveCancelled:dt,onBeforeAppear:dt,onAppear:dt,onAfterAppear:dt,onAppearCancelled:dt},Xp={name:"BaseTransition",props:Eu,setup(e,{slots:t}){const n=ir(),r=_u();return()=>{const s=t.default&&oi(t.default(),!0);if(!s||!s.length)return;let a=s[0];if(s.length>1){for(const d of s)if(d.type!==ht){a=d;break}}const o=ue(e),{mode:i}=o;if(r.isLeaving)return Ma(a);const l=Xi(a);if(!l)return Ma(a);const c=Nr(l,o,r,n);$r(l,c);const u=n.subTree,f=u&&Xi(u);if(f&&f.type!==ht&&!gn(l,f)){const d=Nr(f,o,r,n);if($r(f,d),i==="out-in")return r.isLeaving=!0,d.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Ma(a);i==="in-out"&&l.type!==ht&&(d.delayLeave=(m,g,b)=>{const w=Su(r,f);w[String(f.key)]=f,m[Jt]=()=>{g(),m[Jt]=void 0,delete c.delayedLeave},c.delayedLeave=b})}return a}}},Qp=Xp;function Su(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 Nr(e,t,n,r){const{appear:s,mode:a,persisted:o=!1,onBeforeEnter:i,onEnter:l,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:f,onLeave:d,onAfterLeave:m,onLeaveCancelled:g,onBeforeAppear:b,onAppear:w,onAfterAppear:y,onAppearCancelled:v}=t,S=String(e.key),C=Su(n,e),R=(P,D)=>{P&&mt(P,r,9,D)},$=(P,D)=>{const k=D[1];R(P,D),X(P)?P.every(x=>x.length<=1)&&k():P.length<=1&&k()},K={mode:a,persisted:o,beforeEnter(P){let D=i;if(!n.isMounted)if(s)D=b||i;else return;P[Jt]&&P[Jt](!0);const k=C[S];k&&gn(e,k)&&k.el[Jt]&&k.el[Jt](),R(D,[P])},enter(P){let D=l,k=c,x=u;if(!n.isMounted)if(s)D=w||l,k=y||c,x=v||u;else return;let O=!1;const te=P[ps]=be=>{O||(O=!0,be?R(x,[P]):R(k,[P]),K.delayedLeave&&K.delayedLeave(),P[ps]=void 0)};D?$(D,[P,te]):te()},leave(P,D){const k=String(e.key);if(P[ps]&&P[ps](!0),n.isUnmounting)return D();R(f,[P]);let x=!1;const O=P[Jt]=te=>{x||(x=!0,D(),te?R(g,[P]):R(m,[P]),P[Jt]=void 0,C[k]===e&&delete C[k])};C[k]=e,d?$(d,[P,O]):O()},clone(P){return Nr(P,t,n,r)}};return K}function Ma(e){if(la(e))return e=on(e),e.children=null,e}function Xi(e){return la(e)?e.children?e.children[0]:void 0:e}function $r(e,t){e.shapeFlag&6&&e.component?$r(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 oi(e,t=!1,n){let r=[],s=0;for(let a=0;a1)for(let a=0;a!!e.type.__asyncLoader,la=e=>e.type.__isKeepAlive;function xu(e,t){ku(e,"a",t)}function Au(e,t){ku(e,"da",t)}function ku(e,t,n=Ve){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(ca(t,r,n),n){let s=n.parent;for(;s&&s.parent;)la(s.parent.vnode)&&Zp(r,t,n,s),s=s.parent}}function Zp(e,t,n,r){const s=ca(t,e,r,!0);ua(()=>{jo(r[t],s)},n)}function ca(e,t,n=Ve,r=!1){if(n){const s=n[e]||(n[e]=[]),a=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;On();const i=Qr(n),l=mt(t,n,e,o);return i(),Tn(),l});return r?s.unshift(a):s.push(a),a}}const zt=e=>(t,n=Ve)=>(!pa||e==="sp")&&ca(e,(...r)=>t(...r),n),Cu=zt("bm"),Rn=zt("m"),em=zt("bu"),Ou=zt("u"),Tu=zt("bum"),ua=zt("um"),tm=zt("sp"),nm=zt("rtg"),rm=zt("rtc");function sm(e,t=Ve){ca("ec",e,t)}function Lu(e,t,n,r){let s;const a=n;if(X(e)||Ne(e)){s=new Array(e.length);for(let o=0,i=e.length;ot(o,i,void 0,a));else{const o=Object.keys(e);s=new Array(o.length);for(let i=0,l=o.length;iFr(t)?!(t.type===ht||t.type===ze&&!Ru(t.children)):!0)?e:null}const lo=e=>e?Bu(e)?ma(e)||e.proxy:lo(e.parent):null,Ar=Ie(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=>lo(e.parent),$root:e=>lo(e.root),$emit:e=>e.emit,$options:e=>ii(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,ri(e.update)}),$nextTick:e=>e.n||(e.n=Ln.bind(e.proxy)),$watch:e=>Jp.bind(e)}),Ia=(e,t)=>e!==_e&&!e.__isScriptSetup&&fe(e,t),am={get({_:e},t){const{ctx:n,setupState:r,data:s,props:a,accessCache:o,type:i,appContext:l}=e;let c;if(t[0]!=="$"){const m=o[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(Ia(r,t))return o[t]=1,r[t];if(s!==_e&&fe(s,t))return o[t]=2,s[t];if((c=e.propsOptions[0])&&fe(c,t))return o[t]=3,a[t];if(n!==_e&&fe(n,t))return o[t]=4,n[t];co&&(o[t]=0)}}const u=Ar[t];let f,d;if(u)return t==="$attrs"&&at(e,"get",t),u(e);if((f=i.__cssModules)&&(f=f[t]))return f;if(n!==_e&&fe(n,t))return o[t]=4,n[t];if(d=l.config.globalProperties,fe(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:a}=e;return Ia(s,t)?(s[t]=n,!0):r!==_e&&fe(r,t)?(r[t]=n,!0):fe(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}},o){let i;return!!n[o]||e!==_e&&fe(e,o)||Ia(t,o)||(i=a[0])&&fe(i,o)||fe(r,o)||fe(Ar,o)||fe(s.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:fe(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function om(){return im().attrs}function im(){const e=ir();return e.setupContext||(e.setupContext=Ku(e))}function Qi(e){return X(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let co=!0;function lm(e){const t=ii(e),n=e.proxy,r=e.ctx;co=!1,t.beforeCreate&&Zi(t.beforeCreate,e,"bc");const{data:s,computed:a,methods:o,watch:i,provide:l,inject:c,created:u,beforeMount:f,mounted:d,beforeUpdate:m,updated:g,activated:b,deactivated:w,beforeDestroy:y,beforeUnmount:v,destroyed:S,unmounted:C,render:R,renderTracked:$,renderTriggered:K,errorCaptured:P,serverPrefetch:D,expose:k,inheritAttrs:x,components:O,directives:te,filters:be}=t;if(c&&cm(c,r,null),o)for(const pe in o){const de=o[pe];ae(de)&&(r[pe]=de.bind(n))}if(s){const pe=s.call(n,n);ye(pe)&&(e.data=$t(pe))}if(co=!0,a)for(const pe in a){const de=a[pe],gt=ae(de)?de.bind(n,n):ae(de.get)?de.get.bind(n,n):pt,Ue=!ae(de)&&ae(de.set)?de.set.bind(n):pt,ft=se({get:gt,set:Ue});Object.defineProperty(r,pe,{enumerable:!0,configurable:!0,get:()=>ft.value,set:$e=>ft.value=$e})}if(i)for(const pe in i)Pu(i[pe],r,n,pe);if(l){const pe=ae(l)?l.call(n):l;Reflect.ownKeys(pe).forEach(de=>{Ps(de,pe[de])})}u&&Zi(u,e,"c");function ie(pe,de){X(de)?de.forEach(gt=>pe(gt.bind(n))):de&&pe(de.bind(n))}if(ie(Cu,f),ie(Rn,d),ie(em,m),ie(Ou,g),ie(xu,b),ie(Au,w),ie(sm,P),ie(rm,$),ie(nm,K),ie(Tu,v),ie(ua,C),ie(tm,D),X(k))if(k.length){const pe=e.exposed||(e.exposed={});k.forEach(de=>{Object.defineProperty(pe,de,{get:()=>n[de],set:gt=>n[de]=gt})})}else e.exposed||(e.exposed={});R&&e.render===pt&&(e.render=R),x!=null&&(e.inheritAttrs=x),O&&(e.components=O),te&&(e.directives=te)}function cm(e,t,n=pt){X(e)&&(e=uo(e));for(const r in e){const s=e[r];let a;ye(s)?"default"in s?a=nt(s.from||r,s.default,!0):a=nt(s.from||r):a=nt(s),Le(a)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>a.value,set:o=>a.value=o}):t[r]=a}}function Zi(e,t,n){mt(X(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Pu(e,t,n,r){const s=r.includes(".")?bu(n,r):()=>n[r];if(Ne(e)){const a=t[e];ae(a)&&je(s,a)}else if(ae(e))je(s,e.bind(n));else if(ye(e))if(X(e))e.forEach(a=>Pu(a,t,n,r));else{const a=ae(e.handler)?e.handler.bind(n):t[e.handler];ae(a)&&je(s,a,e)}}function ii(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,i=a.get(t);let l;return i?l=i:!s.length&&!n&&!r?l=t:(l={},s.length&&s.forEach(c=>Bs(l,c,o,!0)),Bs(l,t,o)),ye(t)&&a.set(t,l),l}function Bs(e,t,n,r=!1){const{mixins:s,extends:a}=t;a&&Bs(e,a,n,!0),s&&s.forEach(o=>Bs(e,o,n,!0));for(const o in t)if(!(r&&o==="expose")){const i=um[o]||n&&n[o];e[o]=i?i(e[o],t[o]):t[o]}return e}const um={data:el,props:tl,emits:tl,methods:wr,computed:wr,beforeCreate:Qe,created:Qe,beforeMount:Qe,mounted:Qe,beforeUpdate:Qe,updated:Qe,beforeDestroy:Qe,beforeUnmount:Qe,destroyed:Qe,unmounted:Qe,activated:Qe,deactivated:Qe,errorCaptured:Qe,serverPrefetch:Qe,components:wr,directives:wr,watch:dm,provide:el,inject:fm};function el(e,t){return t?e?function(){return Ie(ae(e)?e.call(this,this):e,ae(t)?t.call(this,this):t)}:t:e}function fm(e,t){return wr(uo(e),uo(t))}function uo(e){if(X(e)){const t={};for(let n=0;n1)return n&&ae(t)?t.call(r&&r.proxy):t}}function hm(){return!!(Ve||Me||Gn)}function gm(e,t,n,r=!1){const s={},a={};Ds(a,da,1),e.propsDefaults=Object.create(null),Iu(e,t,s,a);for(const o in e.propsOptions[0])o in s||(s[o]=void 0);n?e.props=r?s:iu(s):e.type.props?e.props=s:e.props=a,e.attrs=a}function vm(e,t,n,r){const{props:s,attrs:a,vnode:{patchFlag:o}}=e,i=ue(s),[l]=e.propsOptions;let c=!1;if((r||o>0)&&!(o&16)){if(o&8){const u=e.vnode.dynamicProps;for(let f=0;f{l=!0;const[d,m]=Nu(f,t,!0);Ie(o,d),m&&i.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,Kn),Kn;if(X(a))for(let u=0;u-1,m[1]=b<0||g-1||fe(m,"default"))&&i.push(f)}}}const c=[o,i];return ye(e)&&r.set(e,c),c}function nl(e){return e[0]!=="$"&&!Er(e)}function rl(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function sl(e,t){return rl(e)===rl(t)}function al(e,t){return X(t)?t.findIndex(n=>sl(n,e)):ae(t)&&sl(t,e)?0:-1}const $u=e=>e[0]==="_"||e==="$stable",li=e=>X(e)?e.map(kt):[kt(e)],ym=(e,t,n)=>{if(t._n)return t;const r=qe((...s)=>li(t(...s)),n);return r._c=!1,r},Hu=(e,t,n)=>{const r=e._ctx;for(const s in e){if($u(s))continue;const a=e[s];if(ae(a))t[s]=ym(s,a,r);else if(a!=null){const o=li(a);t[s]=()=>o}}},Fu=(e,t)=>{const n=li(t);e.slots.default=()=>n},bm=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=ue(t),Ds(t,"_",n)):Hu(t,e.slots={})}else e.slots={},t&&Fu(e,t);Ds(e.slots,da,1)},wm=(e,t,n)=>{const{vnode:r,slots:s}=e;let a=!0,o=_e;if(r.shapeFlag&32){const i=t._;i?n&&i===1?a=!1:(Ie(s,t),!n&&i===1&&delete s._):(a=!t.$stable,Hu(t,s)),o=t}else t&&(Fu(e,t),o={default:1});if(a)for(const i in s)!$u(i)&&o[i]==null&&delete s[i]};function po(e,t,n,r,s=!1){if(X(e)){e.forEach((d,m)=>po(d,t&&(X(t)?t[m]:t),n,r,s));return}if(xr(r)&&!s)return;const a=r.shapeFlag&4?ma(r.component)||r.component.proxy:r.el,o=s?null:a,{i,r:l}=e,c=t&&t.r,u=i.refs===_e?i.refs={}:i.refs,f=i.setupState;if(c!=null&&c!==l&&(Ne(c)?(u[c]=null,fe(f,c)&&(f[c]=null)):Le(c)&&(c.value=null)),ae(l))nn(l,i,12,[o,u]);else{const d=Ne(l),m=Le(l);if(d||m){const g=()=>{if(e.f){const b=d?fe(f,l)?f[l]:u[l]:l.value;s?X(b)&&jo(b,a):X(b)?b.includes(a)||b.push(a):d?(u[l]=[a],fe(f,l)&&(f[l]=u[l])):(l.value=[a],e.k&&(u[e.k]=l.value))}else d?(u[l]=o,fe(f,l)&&(f[l]=o)):m&&(l.value=o,e.k&&(u[e.k]=o))};o?(g.id=-1,tt(g,n)):g()}}}const tt=qp;function _m(e){return Em(e)}function Em(e,t){const n=Uc();n.__VUE__=!0;const{insert:r,remove:s,patchProp:a,createElement:o,createText:i,createComment:l,setText:c,setElementText:u,parentNode:f,nextSibling:d,setScopeId:m=pt,insertStaticContent:g}=e,b=(p,h,_,L=null,A=null,N=null,V=void 0,I=null,H=!!h.dynamicChildren)=>{if(p===h)return;p&&!gn(p,h)&&(L=T(p),$e(p,A,N,!0),p=null),h.patchFlag===-2&&(H=!1,h.dynamicChildren=null);const{type:M,ref:U,shapeFlag:ee}=h;switch(M){case fa:w(p,h,_,L);break;case ht:y(p,h,_,L);break;case $a:p==null&&v(h,_,L,V);break;case ze:O(p,h,_,L,A,N,V,I,H);break;default:ee&1?R(p,h,_,L,A,N,V,I,H):ee&6?te(p,h,_,L,A,N,V,I,H):(ee&64||ee&128)&&M.process(p,h,_,L,A,N,V,I,H,q)}U!=null&&A&&po(U,p&&p.ref,N,h||p,!h)},w=(p,h,_,L)=>{if(p==null)r(h.el=i(h.children),_,L);else{const A=h.el=p.el;h.children!==p.children&&c(A,h.children)}},y=(p,h,_,L)=>{p==null?r(h.el=l(h.children||""),_,L):h.el=p.el},v=(p,h,_,L)=>{[p.el,p.anchor]=g(p.children,h,_,L,p.el,p.anchor)},S=({el:p,anchor:h},_,L)=>{let A;for(;p&&p!==h;)A=d(p),r(p,_,L),p=A;r(h,_,L)},C=({el:p,anchor:h})=>{let _;for(;p&&p!==h;)_=d(p),s(p),p=_;s(h)},R=(p,h,_,L,A,N,V,I,H)=>{h.type==="svg"?V="svg":h.type==="math"&&(V="mathml"),p==null?$(h,_,L,A,N,V,I,H):D(p,h,A,N,V,I,H)},$=(p,h,_,L,A,N,V,I)=>{let H,M;const{props:U,shapeFlag:ee,transition:J,dirs:re}=p;if(H=p.el=o(p.type,N,U&&U.is,U),ee&8?u(H,p.children):ee&16&&P(p.children,H,null,L,A,Na(p,N),V,I),re&&dn(p,null,L,"created"),K(H,p,p.scopeId,V,L),U){for(const ve in U)ve!=="value"&&!Er(ve)&&a(H,ve,null,U[ve],N,p.children,L,A,Ke);"value"in U&&a(H,"value",null,U.value,N),(M=U.onVnodeBeforeMount)&&xt(M,L,p)}re&&dn(p,null,L,"beforeMount");const le=Sm(A,J);le&&J.beforeEnter(H),r(H,h,_),((M=U&&U.onVnodeMounted)||le||re)&&tt(()=>{M&&xt(M,L,p),le&&J.enter(H),re&&dn(p,null,L,"mounted")},A)},K=(p,h,_,L,A)=>{if(_&&m(p,_),L)for(let N=0;N{for(let M=H;M{const I=h.el=p.el;let{patchFlag:H,dynamicChildren:M,dirs:U}=h;H|=p.patchFlag&16;const ee=p.props||_e,J=h.props||_e;let re;if(_&&pn(_,!1),(re=J.onVnodeBeforeUpdate)&&xt(re,_,h,p),U&&dn(h,p,_,"beforeUpdate"),_&&pn(_,!0),M?k(p.dynamicChildren,M,I,_,L,Na(h,A),N):V||de(p,h,I,null,_,L,Na(h,A),N,!1),H>0){if(H&16)x(I,h,ee,J,_,L,A);else if(H&2&&ee.class!==J.class&&a(I,"class",null,J.class,A),H&4&&a(I,"style",ee.style,J.style,A),H&8){const le=h.dynamicProps;for(let ve=0;ve{re&&xt(re,_,h,p),U&&dn(h,p,_,"updated")},L)},k=(p,h,_,L,A,N,V)=>{for(let I=0;I{if(_!==L){if(_!==_e)for(const I in _)!Er(I)&&!(I in L)&&a(p,I,_[I],null,V,h.children,A,N,Ke);for(const I in L){if(Er(I))continue;const H=L[I],M=_[I];H!==M&&I!=="value"&&a(p,I,M,H,V,h.children,A,N,Ke)}"value"in L&&a(p,"value",_.value,L.value,V)}},O=(p,h,_,L,A,N,V,I,H)=>{const M=h.el=p?p.el:i(""),U=h.anchor=p?p.anchor:i("");let{patchFlag:ee,dynamicChildren:J,slotScopeIds:re}=h;re&&(I=I?I.concat(re):re),p==null?(r(M,_,L),r(U,_,L),P(h.children||[],_,U,A,N,V,I,H)):ee>0&&ee&64&&J&&p.dynamicChildren?(k(p.dynamicChildren,J,_,A,N,V,I),(h.key!=null||A&&h===A.subTree)&&Du(p,h,!0)):de(p,h,_,U,A,N,V,I,H)},te=(p,h,_,L,A,N,V,I,H)=>{h.slotScopeIds=I,p==null?h.shapeFlag&512?A.ctx.activate(h,_,L,V,H):be(h,_,L,A,N,V,H):Ce(p,h,H)},be=(p,h,_,L,A,N,V)=>{const I=p.component=Rm(p,L,A);if(la(p)&&(I.ctx.renderer=q),Pm(I),I.asyncDep){if(A&&A.registerDep(I,ie),!p.el){const H=I.subTree=ne(ht);y(null,H,h,_)}}else ie(I,p,h,_,A,N,V)},Ce=(p,h,_)=>{const L=h.component=p.component;if(Vp(p,h,_))if(L.asyncDep&&!L.asyncResolved){pe(L,h,_);return}else L.next=h,Np(L.update),L.effect.dirty=!0,L.update();else h.el=p.el,L.vnode=h},ie=(p,h,_,L,A,N,V)=>{const I=()=>{if(p.isMounted){let{next:U,bu:ee,u:J,parent:re,vnode:le}=p;{const In=zu(p);if(In){U&&(U.el=le.el,pe(p,U,V)),In.asyncDep.then(()=>{p.isUnmounted||I()});return}}let ve=U,Ae;pn(p,!1),U?(U.el=le.el,pe(p,U,V)):U=le,ee&&Rs(ee),(Ae=U.props&&U.props.onVnodeBeforeUpdate)&&xt(Ae,re,U,le),pn(p,!0);const De=Pa(p),vt=p.subTree;p.subTree=De,b(vt,De,f(vt.el),T(vt),p,A,N),U.el=De.el,ve===null&&jp(p,De.el),J&&tt(J,A),(Ae=U.props&&U.props.onVnodeUpdated)&&tt(()=>xt(Ae,re,U,le),A)}else{let U;const{el:ee,props:J}=h,{bm:re,m:le,parent:ve}=p,Ae=xr(h);if(pn(p,!1),re&&Rs(re),!Ae&&(U=J&&J.onVnodeBeforeMount)&&xt(U,ve,h),pn(p,!0),ee&&ke){const De=()=>{p.subTree=Pa(p),ke(ee,p.subTree,p,A,null)};Ae?h.type.__asyncLoader().then(()=>!p.isUnmounted&&De()):De()}else{const De=p.subTree=Pa(p);b(null,De,_,L,p,A,N),h.el=De.el}if(le&&tt(le,A),!Ae&&(U=J&&J.onVnodeMounted)){const De=h;tt(()=>xt(U,ve,De),A)}(h.shapeFlag&256||ve&&xr(ve.vnode)&&ve.vnode.shapeFlag&256)&&p.a&&tt(p.a,A),p.isMounted=!0,h=_=L=null}},H=p.effect=new qo(I,pt,()=>ri(M),p.scope),M=p.update=()=>{H.dirty&&H.run()};M.id=p.uid,pn(p,!0),M()},pe=(p,h,_)=>{h.component=p;const L=p.vnode.props;p.vnode=h,p.next=null,vm(p,h.props,L,_),wm(p,h.children,_),On(),Gi(p),Tn()},de=(p,h,_,L,A,N,V,I,H=!1)=>{const M=p&&p.children,U=p?p.shapeFlag:0,ee=h.children,{patchFlag:J,shapeFlag:re}=h;if(J>0){if(J&128){Ue(M,ee,_,L,A,N,V,I,H);return}else if(J&256){gt(M,ee,_,L,A,N,V,I,H);return}}re&8?(U&16&&Ke(M,A,N),ee!==M&&u(_,ee)):U&16?re&16?Ue(M,ee,_,L,A,N,V,I,H):Ke(M,A,N,!0):(U&8&&u(_,""),re&16&&P(ee,_,L,A,N,V,I,H))},gt=(p,h,_,L,A,N,V,I,H)=>{p=p||Kn,h=h||Kn;const M=p.length,U=h.length,ee=Math.min(M,U);let J;for(J=0;JU?Ke(p,A,N,!0,!1,ee):P(h,_,L,A,N,V,I,H,ee)},Ue=(p,h,_,L,A,N,V,I,H)=>{let M=0;const U=h.length;let ee=p.length-1,J=U-1;for(;M<=ee&&M<=J;){const re=p[M],le=h[M]=H?Xt(h[M]):kt(h[M]);if(gn(re,le))b(re,le,_,null,A,N,V,I,H);else break;M++}for(;M<=ee&&M<=J;){const re=p[ee],le=h[J]=H?Xt(h[J]):kt(h[J]);if(gn(re,le))b(re,le,_,null,A,N,V,I,H);else break;ee--,J--}if(M>ee){if(M<=J){const re=J+1,le=reJ)for(;M<=ee;)$e(p[M],A,N,!0),M++;else{const re=M,le=M,ve=new Map;for(M=le;M<=J;M++){const ot=h[M]=H?Xt(h[M]):kt(h[M]);ot.key!=null&&ve.set(ot.key,M)}let Ae,De=0;const vt=J-le+1;let In=!1,Ni=0;const pr=new Array(vt);for(M=0;M=vt){$e(ot,A,N,!0);continue}let St;if(ot.key!=null)St=ve.get(ot.key);else for(Ae=le;Ae<=J;Ae++)if(pr[Ae-le]===0&&gn(ot,h[Ae])){St=Ae;break}St===void 0?$e(ot,A,N,!0):(pr[St-le]=M+1,St>=Ni?Ni=St:In=!0,b(ot,h[St],_,null,A,N,V,I,H),De++)}const $i=In?xm(pr):Kn;for(Ae=$i.length-1,M=vt-1;M>=0;M--){const ot=le+M,St=h[ot],Hi=ot+1{const{el:N,type:V,transition:I,children:H,shapeFlag:M}=p;if(M&6){ft(p.component.subTree,h,_,L);return}if(M&128){p.suspense.move(h,_,L);return}if(M&64){V.move(p,h,_,q);return}if(V===ze){r(N,h,_);for(let ee=0;eeI.enter(N),A);else{const{leave:ee,delayLeave:J,afterLeave:re}=I,le=()=>r(N,h,_),ve=()=>{ee(N,()=>{le(),re&&re()})};J?J(N,le,ve):ve()}else r(N,h,_)},$e=(p,h,_,L=!1,A=!1)=>{const{type:N,props:V,ref:I,children:H,dynamicChildren:M,shapeFlag:U,patchFlag:ee,dirs:J}=p;if(I!=null&&po(I,null,_,p,!0),U&256){h.ctx.deactivate(p);return}const re=U&1&&J,le=!xr(p);let ve;if(le&&(ve=V&&V.onVnodeBeforeUnmount)&&xt(ve,h,p),U&6)os(p.component,_,L);else{if(U&128){p.suspense.unmount(_,L);return}re&&dn(p,null,h,"beforeUnmount"),U&64?p.type.remove(p,h,_,A,q,L):M&&(N!==ze||ee>0&&ee&64)?Ke(M,h,_,!1,!0):(N===ze&&ee&384||!A&&U&16)&&Ke(H,h,_),L&&Lt(p)}(le&&(ve=V&&V.onVnodeUnmounted)||re)&&tt(()=>{ve&&xt(ve,h,p),re&&dn(p,null,h,"unmounted")},_)},Lt=p=>{const{type:h,el:_,anchor:L,transition:A}=p;if(h===ze){Rt(_,L);return}if(h===$a){C(p);return}const N=()=>{s(_),A&&!A.persisted&&A.afterLeave&&A.afterLeave()};if(p.shapeFlag&1&&A&&!A.persisted){const{leave:V,delayLeave:I}=A,H=()=>V(_,N);I?I(p.el,N,H):H()}else N()},Rt=(p,h)=>{let _;for(;p!==h;)_=d(p),s(p),p=_;s(h)},os=(p,h,_)=>{const{bum:L,scope:A,update:N,subTree:V,um:I}=p;L&&Rs(L),A.stop(),N&&(N.active=!1,$e(V,p,h,_)),I&&tt(I,h),tt(()=>{p.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&p.asyncDep&&!p.asyncResolved&&p.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},Ke=(p,h,_,L=!1,A=!1,N=0)=>{for(let V=N;Vp.shapeFlag&6?T(p.component.subTree):p.shapeFlag&128?p.suspense.next():d(p.anchor||p.el);let B=!1;const z=(p,h,_)=>{p==null?h._vnode&&$e(h._vnode,null,null,!0):b(h._vnode||null,p,h,null,null,null,_),B||(B=!0,Gi(),hu(),B=!1),h._vnode=p},q={p:b,um:$e,m:ft,r:Lt,mt:be,mc:P,pc:de,pbc:k,n:T,o:e};let he,ke;return{render:z,hydrate:he,createApp:mm(z,he)}}function Na({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function pn({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Sm(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Du(e,t,n=!1){const r=e.children,s=t.children;if(X(r)&&X(s))for(let a=0;a>1,e[n[i]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,o=n[a-1];a-- >0;)n[a]=o,o=t[o];return n}function zu(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:zu(t)}const Am=e=>e.__isTeleport,ze=Symbol.for("v-fgt"),fa=Symbol.for("v-txt"),ht=Symbol.for("v-cmt"),$a=Symbol.for("v-stc"),kr=[];let yt=null;function F(e=!1){kr.push(yt=e?null:[])}function km(){kr.pop(),yt=kr[kr.length-1]||null}let Hr=1;function ol(e){Hr+=e}function Vu(e){return e.dynamicChildren=Hr>0?yt||Kn:null,km(),Hr>0&&yt&&yt.push(e),e}function G(e,t,n,r,s,a){return Vu(Q(e,t,n,r,s,a,!0))}function Xe(e,t,n,r,s){return Vu(ne(e,t,n,r,s,!0))}function Fr(e){return e?e.__v_isVNode===!0:!1}function gn(e,t){return e.type===t.type&&e.key===t.key}const da="__vInternal",ju=({key:e})=>e??null,Ms=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Ne(e)||Le(e)||ae(e)?{i:Me,r:e,k:t,f:!!n}:e:null);function Q(e,t=null,n=null,r=0,s=null,a=e===ze?0:1,o=!1,i=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ju(t),ref:t&&Ms(t),scopeId:yu,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:Me};return i?(ci(l,n),a&128&&e.normalize(l)):n&&(l.shapeFlag|=Ne(n)?8:16),Hr>0&&!o&&yt&&(l.patchFlag>0||a&6)&&l.patchFlag!==32&&yt.push(l),l}const ne=Cm;function Cm(e,t=null,n=null,r=0,s=null,a=!1){if((!e||e===Up)&&(e=ht),Fr(e)){const i=on(e,t,!0);return n&&ci(i,n),Hr>0&&!a&&yt&&(i.shapeFlag&6?yt[yt.indexOf(e)]=i:yt.push(i)),i.patchFlag|=-2,i}if($m(e)&&(e=e.__vccOpts),t){t=Om(t);let{class:i,style:l}=t;i&&!Ne(i)&&(t.class=Se(i)),ye(l)&&(lu(l)&&!X(l)&&(l=Ie({},l)),t.style=an(l))}const o=Ne(e)?1:Wp(e)?128:Am(e)?64:ye(e)?4:ae(e)?2:0;return Q(e,t,n,r,s,o,a,!0)}function Om(e){return e?lu(e)||da in e?Ie({},e):e:null}function on(e,t,n=!1){const{props:r,ref:s,patchFlag:a,children:o}=e,i=t?ui(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:i,key:i&&ju(i),ref:t&&t.ref?n&&s?X(s)?s.concat(Ms(t)):[s,Ms(t)]:Ms(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ze?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&&on(e.ssContent),ssFallback:e.ssFallback&&on(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Pe(e=" ",t=0){return ne(fa,null,e,t)}function ce(e="",t=!1){return t?(F(),Xe(ht,null,e)):ne(ht,null,e)}function kt(e){return e==null||typeof e=="boolean"?ne(ht):X(e)?ne(ze,null,e.slice()):typeof e=="object"?Xt(e):ne(fa,null,String(e))}function Xt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:on(e)}function ci(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(X(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),ci(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(da in t)?t._ctx=Me:s===3&&Me&&(Me.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ae(t)?(t={default:t,_ctx:Me},n=32):(t=String(t),r&64?(n=16,t=[Pe(t)]):n=8);e.children=t,e.shapeFlag|=n}function ui(...e){const t={};for(let n=0;nVe||Me;let Us,mo;{const e=Uc(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),a=>{s.length>1?s.forEach(o=>o(a)):s[0](a)}};Us=t("__VUE_INSTANCE_SETTERS__",n=>Ve=n),mo=t("__VUE_SSR_SETTERS__",n=>pa=n)}const Qr=e=>{const t=Ve;return Us(e),e.scope.on(),()=>{e.scope.off(),Us(t)}},il=()=>{Ve&&Ve.scope.off(),Us(null)};function Bu(e){return e.vnode.shapeFlag&4}let pa=!1;function Pm(e,t=!1){t&&mo(t);const{props:n,children:r}=e.vnode,s=Bu(e);gm(e,n,s,t),bm(e,r);const a=s?Mm(e,t):void 0;return t&&mo(!1),a}function Mm(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=aa(new Proxy(e.ctx,am));const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?Ku(e):null,a=Qr(e);On();const o=nn(r,e,0,[e.props,s]);if(Tn(),a(),Vc(o)){if(o.then(il,il),t)return o.then(i=>{ll(e,i,t)}).catch(i=>{oa(i,e,0)});e.asyncDep=o}else ll(e,o,t)}else Uu(e,t)}function ll(e,t,n){ae(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ye(t)&&(e.setupState=fu(t)),Uu(e,n)}let cl;function Uu(e,t,n){const r=e.type;if(!e.render){if(!t&&cl&&!r.render){const s=r.template||ii(e).template;if(s){const{isCustomElement:a,compilerOptions:o}=e.appContext.config,{delimiters:i,compilerOptions:l}=r,c=Ie(Ie({isCustomElement:a,delimiters:i},o),l);r.render=cl(s,c)}}e.render=r.render||pt}{const s=Qr(e);On();try{lm(e)}finally{Tn(),s()}}}function Im(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return at(e,"get","$attrs"),t[n]}}))}function Ku(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Im(e)},slots:e.slots,emit:e.emit,expose:t}}function ma(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(fu(aa(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ar)return Ar[n](e)},has(t,n){return n in t||n in Ar}}))}function Nm(e,t=!0){return ae(e)?e.displayName||e.name:e.name||t&&e.__name}function $m(e){return ae(e)&&"__vccOpts"in e}const se=(e,t)=>xp(e,t,pa);function Zr(e,t,n){const r=arguments.length;return r===2?ye(t)&&!X(t)?Fr(t)?ne(e,null,[t]):ne(e,t):ne(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Fr(n)&&(n=[n]),ne(e,t,n))}const Hm="3.4.21";/** -* @vue/runtime-dom v3.4.21 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const Fm="http://www.w3.org/2000/svg",Dm="http://www.w3.org/1998/Math/MathML",Qt=typeof document<"u"?document:null,ul=Qt&&Qt.createElement("template"),zm={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==="svg"?Qt.createElementNS(Fm,e):t==="mathml"?Qt.createElementNS(Dm,e):Qt.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Qt.createTextNode(e),createComment:e=>Qt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Qt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,a){const o=n?n.previousSibling:t.lastChild;if(s&&(s===a||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===a||!(s=s.nextSibling)););else{ul.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const i=ul.content;if(r==="svg"||r==="mathml"){const l=i.firstChild;for(;l.firstChild;)i.appendChild(l.firstChild);i.removeChild(l)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Bt="transition",mr="animation",Zn=Symbol("_vtc"),Wu=(e,{slots:t})=>Zr(Qp,Gu(e),t);Wu.displayName="Transition";const qu={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},Vm=Wu.props=Ie({},Eu,qu),mn=(e,t=[])=>{X(e)?e.forEach(n=>n(...t)):e&&e(...t)},fl=e=>e?X(e)?e.some(t=>t.length>1):e.length>1:!1;function Gu(e){const t={};for(const O in e)O in qu||(t[O]=e[O]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:a=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:i=`${n}-enter-to`,appearFromClass:l=a,appearActiveClass:c=o,appearToClass:u=i,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,g=jm(s),b=g&&g[0],w=g&&g[1],{onBeforeEnter:y,onEnter:v,onEnterCancelled:S,onLeave:C,onLeaveCancelled:R,onBeforeAppear:$=y,onAppear:K=v,onAppearCancelled:P=S}=t,D=(O,te,be)=>{qt(O,te?u:i),qt(O,te?c:o),be&&be()},k=(O,te)=>{O._isLeaving=!1,qt(O,f),qt(O,m),qt(O,d),te&&te()},x=O=>(te,be)=>{const Ce=O?K:v,ie=()=>D(te,O,be);mn(Ce,[te,ie]),dl(()=>{qt(te,O?l:a),Mt(te,O?u:i),fl(Ce)||pl(te,r,b,ie)})};return Ie(t,{onBeforeEnter(O){mn(y,[O]),Mt(O,a),Mt(O,o)},onBeforeAppear(O){mn($,[O]),Mt(O,l),Mt(O,c)},onEnter:x(!1),onAppear:x(!0),onLeave(O,te){O._isLeaving=!0;const be=()=>k(O,te);Mt(O,f),Ju(),Mt(O,d),dl(()=>{O._isLeaving&&(qt(O,f),Mt(O,m),fl(C)||pl(O,r,w,be))}),mn(C,[O,be])},onEnterCancelled(O){D(O,!1),mn(S,[O])},onAppearCancelled(O){D(O,!0),mn(P,[O])},onLeaveCancelled(O){k(O),mn(R,[O])}})}function jm(e){if(e==null)return null;if(ye(e))return[Ha(e.enter),Ha(e.leave)];{const t=Ha(e);return[t,t]}}function Ha(e){return Yd(e)}function Mt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Zn]||(e[Zn]=new Set)).add(t)}function qt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Zn];n&&(n.delete(t),n.size||(e[Zn]=void 0))}function dl(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Bm=0;function pl(e,t,n,r){const s=e._endId=++Bm,a=()=>{s===e._endId&&r()};if(n)return setTimeout(a,n);const{type:o,timeout:i,propCount:l}=Yu(e,t);if(!o)return r();const c=o+"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(`${Bt}Delay`),a=r(`${Bt}Duration`),o=ml(s,a),i=r(`${mr}Delay`),l=r(`${mr}Duration`),c=ml(i,l);let u=null,f=0,d=0;t===Bt?o>0&&(u=Bt,f=o,d=a.length):t===mr?c>0&&(u=mr,f=c,d=l.length):(f=Math.max(o,c),u=f>0?o>c?Bt:mr:null,d=u?u===Bt?a.length:l.length:0);const m=u===Bt&&/\b(transform|all)(,|$)/.test(r(`${Bt}Property`).toString());return{type:u,timeout:f,propCount:d,hasTransform:m}}function ml(e,t){for(;e.lengthhl(n)+hl(e[r])))}function hl(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Ju(){return document.body.offsetHeight}function Um(e,t,n){const r=e[Zn];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ks=Symbol("_vod"),Xu=Symbol("_vsh"),yb={beforeMount(e,{value:t},{transition:n}){e[Ks]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):hr(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),hr(e,!0),r.enter(e)):r.leave(e,()=>{hr(e,!1)}):hr(e,t))},beforeUnmount(e,{value:t}){hr(e,t)}};function hr(e,t){e.style.display=t?e[Ks]:"none",e[Xu]=!t}const Km=Symbol(""),Wm=/(^|;)\s*display\s*:/;function qm(e,t,n){const r=e.style,s=Ne(n);let a=!1;if(n&&!s){if(t)if(Ne(t))for(const o of t.split(";")){const i=o.slice(0,o.indexOf(":")).trim();n[i]==null&&Is(r,i,"")}else for(const o in t)n[o]==null&&Is(r,o,"");for(const o in n)o==="display"&&(a=!0),Is(r,o,n[o])}else if(s){if(t!==n){const o=r[Km];o&&(n+=";"+o),r.cssText=n,a=Wm.test(n)}}else t&&e.removeAttribute("style");Ks in e&&(e[Ks]=a?r.display:"",e[Xu]&&(r.display="none"))}const gl=/\s*!important$/;function Is(e,t,n){if(X(n))n.forEach(r=>Is(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Gm(e,t);gl.test(n)?e.setProperty(Cn(r),n.replace(gl,""),"important"):e[r]=n}}const vl=["Webkit","Moz","ms"],Fa={};function Gm(e,t){const n=Fa[t];if(n)return n;let r=Tt(t);if(r!=="filter"&&r in e)return Fa[t]=r;r=ra(r);for(let s=0;sDa||(eh.then(()=>Da=0),Da=Date.now());function nh(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;mt(rh(r,n.value),t,5,[r])};return n.value=e,n.attached=th(),n}function rh(e,t){if(X(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 _l=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,sh=(e,t,n,r,s,a,o,i,l)=>{const c=s==="svg";t==="class"?Um(e,r,c):t==="style"?qm(e,n,r):ta(t)?Vo(t)||Qm(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ah(e,t,r,c))?Jm(e,t,r,a,o,i,l):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Ym(e,t,r,c))};function ah(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&_l(t)&&ae(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return _l(t)&&Ne(n)?!1:t in e}const Qu=new WeakMap,Zu=new WeakMap,Ws=Symbol("_moveCb"),El=Symbol("_enterCb"),ef={name:"TransitionGroup",props:Ie({},Vm,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=ir(),r=_u();let s,a;return Ou(()=>{if(!s.length)return;const o=e.moveClass||`${e.name||"v"}-move`;if(!uh(s[0].el,n.vnode.el,o))return;s.forEach(ih),s.forEach(lh);const i=s.filter(ch);Ju(),i.forEach(l=>{const c=l.el,u=c.style;Mt(c,o),u.transform=u.webkitTransform=u.transitionDuration="";const f=c[Ws]=d=>{d&&d.target!==c||(!d||/transform$/.test(d.propertyName))&&(c.removeEventListener("transitionend",f),c[Ws]=null,qt(c,o))};c.addEventListener("transitionend",f)})}),()=>{const o=ue(e),i=Gu(o);let l=o.tag||ze;s=a,a=t.default?oi(t.default()):[];for(let c=0;cdelete e.mode;ef.props;const tf=ef;function ih(e){const t=e.el;t[Ws]&&t[Ws](),t[El]&&t[El]()}function lh(e){Zu.set(e,e.el.getBoundingClientRect())}function ch(e){const t=Qu.get(e),n=Zu.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 uh(e,t,n){const r=e.cloneNode(),s=e[Zn];s&&s.forEach(i=>{i.split(/\s+/).forEach(l=>l&&r.classList.remove(l))}),n.split(/\s+/).forEach(i=>i&&r.classList.add(i)),r.style.display="none";const a=t.nodeType===1?t:t.parentNode;a.appendChild(r);const{hasTransform:o}=Yu(r);return a.removeChild(r),o}const qs=e=>{const t=e.props["onUpdate:modelValue"]||!1;return X(t)?n=>Rs(t,n):t},Yn=Symbol("_assign"),fh={deep:!0,created(e,t,n){e[Yn]=qs(n),fi(e,"change",()=>{const r=e._modelValue,s=Dr(e),a=e.checked,o=e[Yn];if(X(r)){const i=Ko(r,s),l=i!==-1;if(a&&!l)o(r.concat(s));else if(!a&&l){const c=[...r];c.splice(i,1),o(c)}}else if(ar(r)){const i=new Set(r);a?i.add(s):i.delete(s),o(i)}else o(nf(e,a))})},mounted:Sl,beforeUpdate(e,t,n){e[Yn]=qs(n),Sl(e,t,n)}};function Sl(e,{value:t,oldValue:n},r){e._modelValue=t,X(t)?e.checked=Ko(t,r.props.value)>-1:ar(t)?e.checked=t.has(r.props.value):t!==n&&(e.checked=Xr(t,nf(e,!0)))}const dh={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const s=ar(t);fi(e,"change",()=>{const a=Array.prototype.filter.call(e.options,o=>o.selected).map(o=>n?Uo(Dr(o)):Dr(o));e[Yn](e.multiple?s?new Set(a):a:a[0]),e._assigning=!0,Ln(()=>{e._assigning=!1})}),e[Yn]=qs(r)},mounted(e,{value:t,modifiers:{number:n}}){xl(e,t,n)},beforeUpdate(e,t,n){e[Yn]=qs(n)},updated(e,{value:t,modifiers:{number:n}}){e._assigning||xl(e,t,n)}};function xl(e,t,n){const r=e.multiple,s=X(t);if(!(r&&!s&&!ar(t))){for(let a=0,o=e.options.length;a-1}else i.selected=t.has(l);else if(Xr(Dr(i),t)){e.selectedIndex!==a&&(e.selectedIndex=a);return}}!r&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Dr(e){return"_value"in e?e._value:e.value}function nf(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const ph=["ctrl","shift","alt","meta"],mh={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)=>ph.some(n=>e[`${n}Key`]&&!t.includes(n))},ha=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...a)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const a=Cn(s.key);if(t.some(o=>o===a||hh[o]===a))return e(s)})},gh=Ie({patchProp:sh},zm);let Al;function vh(){return Al||(Al=_m(gh))}const yh=(...e)=>{const t=vh().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=wh(r);if(!s)return;const a=t._component;!ae(a)&&!a.render&&!a.template&&(a.template=s.innerHTML),s.innerHTML="";const o=n(s,!1,bh(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),o},t};function bh(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function wh(e){return Ne(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 rf=new Map;class _h{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 Eh(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 Gs=Eh(),za="[-+]?[0-9]*.?[0-9]+",kl=[{name:"px",regexp:new RegExp(`^${za}px$`)},{name:"%",regexp:new RegExp(`^${za}%$`)},{name:"px",regexp:new RegExp(`^${za}$`)}],Sh=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 Sh(e);default:return{type:"",value:e}}},Cl={x:new Set(["left","center","right"]),y:new Set(["top","bottom"])},Ah=(e=>()=>e++)(0),kh=e=>typeof e!="string"?[]:e.split(/\s+/gi).filter(Boolean),Ch=e=>{typeof e=="string"&&(e=kh(e));let t=null,n=null;return e.forEach(r=>{Cl.y.has(r)&&(n=r),Cl.x.has(r)&&(t=r)}),{x:t,y:n}},Va={position:["top","right"],cssAnimation:"vn-fade",velocityAnimation:{enter:e=>({height:[e.clientHeight,0],opacity:[1,0]}),leave:{height:0,opacity:[0,1]}}},Oh=fn({name:"velocity-group",inheritAttrs:!1,props:{name:{type:String,default:""}},emits:{enter:(e,t)=>!0,leave:(e,t)=>!0,afterLeave:()=>!0},setup:(e,{slots:t,emit:n})=>{const r=(o,i)=>{n("enter",o,i)},s=(o,i)=>{n("leave",o,i)},a=()=>{n("afterLeave")};return()=>ne(tf,{tag:"div",css:!1,name:e.name,onEnter:r,onLeave:s,onAfterLeave:a},{default:()=>{var o;return[(o=t.default)==null?void 0:o.call(t)]}})}}),Th=fn({name:"css-group",inheritAttrs:!1,props:{name:{type:String,default:""}},setup:(e,{slots:t})=>()=>ne(tf,{tag:"div",name:e.name},{default:()=>{var n;return[(n=t.default)==null?void 0:n.call(t)]}})});function Lh(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!Fr(e)}const ms={IDLE:0,DESTROYED:2},Rh=fn({name:"notifications",props:{group:{type:String,default:""},width:{type:[Number,String],default:300},reverse:{type:Boolean,default:!1},position:{type:[String,Array],default:()=>Va.position},classes:{type:[String,Array],default:"vue-notification"},animationType:{type:String,default:"css",validator(e){return e==="css"||e==="velocity"}},animation:{type:Object,default(){return Va.velocityAnimation}},animationName:{type:String,default:Va.cssAnimation},speed:{type:Number,default:300},duration:{type:Number,default:3e3},delay:{type:Number,default:0},max:{type:Number,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:e=>!0,destroy:e=>!0,start:e=>!0},slots:Object,setup:(e,{emit:t,slots:n,expose:r})=>{const s=me([]),a=me(null),o=rf.get("velocity"),i=se(()=>e.animationType==="velocity"),l=se(()=>i.value?Oh:Th),c=se(()=>s.value.filter(x=>x.state!==ms.DESTROYED)),u=se(()=>xh(e.width)),f=se(()=>{const{x,y:O}=Ch(e.position),te=u.value.value,be=u.value.type,Ce={width:te+be};return O&&(Ce[O]="0px"),x&&(x==="center"?Ce.left=`calc(50% - ${+te/2}${be})`:Ce[x]="0px"),Ce}),d=se(()=>"bottom"in f.value),m=x=>{t("click",x),e.closeOnClick&&C(x)},g=()=>{var x;e.pauseOnHover&&((x=a.value)==null||x.pause())},b=()=>{var x;e.pauseOnHover&&((x=a.value)==null||x.resume())},w=(x={})=>{if(x.group||(x.group=""),x.data||(x.data={}),e.group!==x.group)return;if(x.clean||x.clear){$();return}const O=typeof x.duration=="number"?x.duration:e.duration,te=typeof x.speed=="number"?x.speed:e.speed,be=typeof x.ignoreDuplicates=="boolean"?x.ignoreDuplicates:e.ignoreDuplicates,{title:Ce,text:ie,type:pe,data:de,id:gt}=x,Ue={id:gt||Ah(),title:Ce,text:ie,type:pe,state:ms.IDLE,speed:te,length:O+2*te,data:de,duplicates:0};O>=0&&(a.value=new _h(()=>C(Ue),Ue.length,Ue));const ft=e.reverse?!d.value:d.value;let $e=-1;const Lt=c.value.find(Rt=>Rt.title===x.title&&Rt.text===x.text);if(be&&Lt){Lt.duplicates++;return}ft?(s.value.push(Ue),t("start",Ue),c.value.length>e.max&&($e=0)):(s.value.unshift(Ue),t("start",Ue),c.value.length>e.max&&($e=c.value.length-1)),$e!==-1&&C(c.value[$e])},y=x=>{R(x)},v=x=>["vue-notification-template",e.classes,x.type||""],S=x=>i.value?void 0:{transition:`all ${x.speed}ms`},C=x=>{clearTimeout(x.timer),x.state=ms.DESTROYED,k(),t("destroy",x)},R=x=>{const O=s.value.find(te=>te.id===x);O&&C(O)},$=()=>{c.value.forEach(C)},K=(x,O)=>{var te;const be=(te=e.animation)==null?void 0:te[x];return typeof be=="function"?be(O):be},P=(x,O)=>{if(!i.value)return;const te=K("enter",x);o(x,te,{duration:e.speed,complete:O})},D=(x,O)=>{if(!i.value)return;const te=K("leave",x);o(x,te,{duration:e.speed,complete:O})};function k(){s.value=s.value.filter(x=>x.state!==ms.DESTROYED)}return Rn(()=>{Gs.on("add",w),Gs.on("close",y)}),()=>{let x;return ne("div",{class:"vue-notification-group",style:f.value},[ne(l.value,{name:e.animationName,onEnter:P,onLeave:D,onAfterLeave:k},Lh(x=c.value.map(O=>ne("div",{key:O.id,class:"vue-notification-wrapper",style:S(O),"data-id":O.id,onMouseenter:g,onMouseleave:b},[n.body?n.body({item:O,class:[e.classes,O.type],close:()=>C(O)}):ne("div",{class:v(O),onClick:()=>m(O)},[e.dangerouslySetInnerHtml?ne(ze,null,[O.title?ne("div",{class:"notification-title",innerHTML:O.title},null):null,ne("div",{class:"notification-content",innerHTML:O.text},null)]):ne(ze,null,[O.title?ne("div",{class:"notification-title"},[O.title]):null,ne("div",{class:"notification-content"},[O.text])])])])))?x:{default:()=>[x]})])}}}),di=e=>{typeof e=="string"&&(e={title:"",text:e}),typeof e=="object"&&Gs.emit("add",e)};di.close=e=>{Gs.emit("close",e)};const sf=()=>({notify:di}),Ph="Notifications";function Mh(e,t={}){Object.entries(t).forEach(r=>rf.set(...r));const n=t.name||"notify";e.config.globalProperties["$"+n]=di,e.component(t.componentName||Ph,Rh)}const Ih={install:Mh};/*! - * vue-router v4.3.0 - * (c) 2024 Eduardo San Martin Morote - * @license MIT - */const zn=typeof document<"u";function Nh(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ge=Object.assign;function ja(e,t){const n={};for(const r in t){const s=t[r];n[r]=_t(s)?s.map(e):e(s)}return n}const Cr=()=>{},_t=Array.isArray,af=/#/g,$h=/&/g,Hh=/\//g,Fh=/=/g,Dh=/\?/g,of=/\+/g,zh=/%5B/g,Vh=/%5D/g,lf=/%5E/g,jh=/%60/g,cf=/%7B/g,Bh=/%7C/g,uf=/%7D/g,Uh=/%20/g;function pi(e){return encodeURI(""+e).replace(Bh,"|").replace(zh,"[").replace(Vh,"]")}function Kh(e){return pi(e).replace(cf,"{").replace(uf,"}").replace(lf,"^")}function go(e){return pi(e).replace(of,"%2B").replace(Uh,"+").replace(af,"%23").replace($h,"%26").replace(jh,"`").replace(cf,"{").replace(uf,"}").replace(lf,"^")}function Wh(e){return go(e).replace(Fh,"%3D")}function qh(e){return pi(e).replace(af,"%23").replace(Dh,"%3F")}function Gh(e){return e==null?"":qh(e).replace(Hh,"%2F")}function zr(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const Yh=/\/$/,Jh=e=>e.replace(Yh,"");function Ba(e,t,n="/"){let r,s={},a="",o="";const i=t.indexOf("#");let l=t.indexOf("?");return i=0&&(l=-1),l>-1&&(r=t.slice(0,l),a=t.slice(l+1,i>-1?i:t.length),s=e(a)),i>-1&&(r=r||t.slice(0,i),o=t.slice(i,t.length)),r=e1(r??t,n),{fullPath:r+(a&&"?")+a+o,path:r,query:s,hash:zr(o)}}function Xh(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Ol(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Qh(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&er(t.matched[r],n.matched[s])&&ff(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function er(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function ff(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Zh(e[n],t[n]))return!1;return!0}function Zh(e,t){return _t(e)?Tl(e,t):_t(t)?Tl(t,e):e===t}function Tl(e,t){return _t(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function e1(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let a=n.length-1,o,i;for(o=0;o1&&a--;else break;return n.slice(0,a).join("/")+"/"+r.slice(o).join("/")}var Vr;(function(e){e.pop="pop",e.push="push"})(Vr||(Vr={}));var Or;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Or||(Or={}));function t1(e){if(!e)if(zn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Jh(e)}const n1=/^[^#]+#/;function r1(e,t){return e.replace(n1,"#")+t}function s1(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const ga=()=>({left:window.scrollX,top:window.scrollY});function a1(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=s1(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Ll(e,t){return(history.state?history.state.position-t:-1)+e}const vo=new Map;function o1(e,t){vo.set(e,t)}function i1(e){const t=vo.get(e);return vo.delete(e),t}let l1=()=>location.protocol+"//"+location.host;function df(e,t){const{pathname:n,search:r,hash:s}=t,a=e.indexOf("#");if(a>-1){let i=s.includes(e.slice(a))?e.slice(a).length:1,l=s.slice(i);return l[0]!=="/"&&(l="/"+l),Ol(l,"")}return Ol(n,e)+r+s}function c1(e,t,n,r){let s=[],a=[],o=null;const i=({state:d})=>{const m=df(e,location),g=n.value,b=t.value;let w=0;if(d){if(n.value=m,t.value=d,o&&o===g){o=null;return}w=b?d.position-b.position:0}else r(m);s.forEach(y=>{y(n.value,g,{delta:w,type:Vr.pop,direction:w?w>0?Or.forward:Or.back:Or.unknown})})};function l(){o=n.value}function c(d){s.push(d);const m=()=>{const g=s.indexOf(d);g>-1&&s.splice(g,1)};return a.push(m),m}function u(){const{history:d}=window;d.state&&d.replaceState(ge({},d.state,{scroll:ga()}),"")}function f(){for(const d of a)d();a=[],window.removeEventListener("popstate",i),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",i),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:l,listen:c,destroy:f}}function Rl(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?ga():null}}function u1(e){const{history:t,location:n}=window,r={value:df(e,n)},s={value:t.state};s.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(l,c,u){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:l1()+e+l;try{t[u?"replaceState":"pushState"](c,"",d),s.value=c}catch(m){console.error(m),n[u?"replace":"assign"](d)}}function o(l,c){const u=ge({},t.state,Rl(s.value.back,l,s.value.forward,!0),c,{position:s.value.position});a(l,u,!0),r.value=l}function i(l,c){const u=ge({},s.value,t.state,{forward:l,scroll:ga()});a(u.current,u,!0);const f=ge({},Rl(r.value,l,null),{position:u.position+1},c);a(l,f,!1),r.value=l}return{location:r,state:s,push:i,replace:o}}function f1(e){e=t1(e);const t=u1(e),n=c1(e,t.state,t.location,t.replace);function r(a,o=!0){o||n.pauseListeners(),history.go(a)}const s=ge({location:"",base:e,go:r,createHref:r1.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function d1(e){return typeof e=="string"||e&&typeof e=="object"}function pf(e){return typeof e=="string"||typeof e=="symbol"}const Ut={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},mf=Symbol("");var Pl;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Pl||(Pl={}));function tr(e,t){return ge(new Error,{type:e,[mf]:!0},t)}function Pt(e,t){return e instanceof Error&&mf in e&&(t==null||!!(e.type&t))}const Ml="[^/]+?",p1={sensitive:!1,strict:!1,start:!0,end:!0},m1=/[.+*?^${}()[\]/\\]/g;function h1(e,t){const n=ge({},p1,t),r=[];let s=n.start?"^":"";const a=[];for(const c of e){const u=c.length?[]:[90];n.strict&&!c.length&&(s+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function v1(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const y1={type:0,value:""},b1=/[a-zA-Z0-9_]/;function w1(e){if(!e)return[[]];if(e==="/")return[[y1]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${c}": ${m}`)}let n=0,r=n;const s=[];let a;function o(){a&&s.push(a),a=[]}let i=0,l,c="",u="";function f(){c&&(n===0?a.push({type:0,value:c}):n===1||n===2||n===3?(a.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:c,regexp:u,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),c="")}function d(){c+=l}for(;i{o(v)}:Cr}function o(u){if(pf(u)){const f=r.get(u);f&&(r.delete(u),n.splice(n.indexOf(f),1),f.children.forEach(o),f.alias.forEach(o))}else{const f=n.indexOf(u);f>-1&&(n.splice(f,1),u.record.name&&r.delete(u.record.name),u.children.forEach(o),u.alias.forEach(o))}}function i(){return n}function l(u){let f=0;for(;f=0&&(u.record.path!==n[f].record.path||!hf(u,n[f]));)f++;n.splice(f,0,u),u.record.name&&!$l(u)&&r.set(u.record.name,u)}function c(u,f){let d,m={},g,b;if("name"in u&&u.name){if(d=r.get(u.name),!d)throw tr(1,{location:u});b=d.record.name,m=ge(Nl(f.params,d.keys.filter(v=>!v.optional).concat(d.parent?d.parent.keys.filter(v=>v.optional):[]).map(v=>v.name)),u.params&&Nl(u.params,d.keys.map(v=>v.name))),g=d.stringify(m)}else if(u.path!=null)g=u.path,d=n.find(v=>v.re.test(g)),d&&(m=d.parse(g),b=d.record.name);else{if(d=f.name?r.get(f.name):n.find(v=>v.re.test(f.path)),!d)throw tr(1,{location:u,currentLocation:f});b=d.record.name,m=ge({},f.params,u.params),g=d.stringify(m)}const w=[];let y=d;for(;y;)w.unshift(y.record),y=y.parent;return{name:b,path:g,params:m,matched:w,meta:A1(w)}}return e.forEach(u=>a(u)),{addRoute:a,resolve:c,removeRoute:o,getRoutes:i,getRecordMatcher:s}}function Nl(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function S1(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:x1(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function x1(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function $l(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function A1(e){return e.reduce((t,n)=>ge(t,n.meta),{})}function Hl(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function hf(e,t){return t.children.some(n=>n===e||hf(e,n))}function k1(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sa&&go(a)):[r&&go(r)]).forEach(a=>{a!==void 0&&(t+=(t.length?"&":"")+n,a!=null&&(t+="="+a))})}return t}function C1(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=_t(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const gf=Symbol(""),Dl=Symbol(""),va=Symbol(""),mi=Symbol(""),yo=Symbol("");function gr(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function O1(e,t,n){const r=()=>{e[t].delete(n)};ua(r),Au(r),xu(()=>{e[t].add(n)}),e[t].add(n)}function bb(e){const t=nt(gf,{}).value;t&&O1(t,"leaveGuards",e)}function Zt(e,t,n,r,s,a=o=>o()){const o=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((i,l)=>{const c=d=>{d===!1?l(tr(4,{from:n,to:t})):d instanceof Error?l(d):d1(d)?l(tr(2,{from:t,to:d})):(o&&r.enterCallbacks[s]===o&&typeof d=="function"&&o.push(d),i())},u=a(()=>e.call(r&&r.instances[s],t,n,c));let f=Promise.resolve(u);e.length<3&&(f=f.then(c)),f.catch(d=>l(d))})}function Ua(e,t,n,r,s=a=>a()){const a=[];for(const o of e)for(const i in o.components){let l=o.components[i];if(!(t!=="beforeRouteEnter"&&!o.instances[i]))if(T1(l)){const u=(l.__vccOpts||l)[t];u&&a.push(Zt(u,n,r,o,i,s))}else{let c=l();a.push(()=>c.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${i}" at "${o.path}"`));const f=Nh(u)?u.default:u;o.components[i]=f;const m=(f.__vccOpts||f)[t];return m&&Zt(m,n,r,o,i,s)()}))}}return a}function T1(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function zl(e){const t=nt(va),n=nt(mi),r=se(()=>t.resolve(Y(e.to))),s=se(()=>{const{matched:l}=r.value,{length:c}=l,u=l[c-1],f=n.matched;if(!u||!f.length)return-1;const d=f.findIndex(er.bind(null,u));if(d>-1)return d;const m=Vl(l[c-2]);return c>1&&Vl(u)===m&&f[f.length-1].path!==m?f.findIndex(er.bind(null,l[c-2])):d}),a=se(()=>s.value>-1&&M1(n.params,r.value.params)),o=se(()=>s.value>-1&&s.value===n.matched.length-1&&ff(n.params,r.value.params));function i(l={}){return P1(l)?t[Y(e.replace)?"replace":"push"](Y(e.to)).catch(Cr):Promise.resolve()}return{route:r,href:se(()=>r.value.href),isActive:a,isExactActive:o,navigate:i}}const L1=fn({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:zl,setup(e,{slots:t}){const n=$t(zl(e)),{options:r}=nt(va),s=se(()=>({[jl(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[jl(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const a=t.default&&t.default(n);return e.custom?a:Zr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},a)}}}),R1=L1;function P1(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function M1(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!_t(s)||s.length!==r.length||r.some((a,o)=>a!==s[o]))return!1}return!0}function Vl(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const jl=(e,t,n)=>e??t??n,I1=fn({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=nt(yo),s=se(()=>e.route||r.value),a=nt(Dl,0),o=se(()=>{let c=Y(a);const{matched:u}=s.value;let f;for(;(f=u[c])&&!f.components;)c++;return c}),i=se(()=>s.value.matched[o.value]);Ps(Dl,se(()=>o.value+1)),Ps(gf,i),Ps(yo,s);const l=me();return je(()=>[l.value,i.value,e.name],([c,u,f],[d,m,g])=>{u&&(u.instances[f]=c,m&&m!==u&&c&&c===d&&(u.leaveGuards.size||(u.leaveGuards=m.leaveGuards),u.updateGuards.size||(u.updateGuards=m.updateGuards))),c&&u&&(!m||!er(u,m)||!d)&&(u.enterCallbacks[f]||[]).forEach(b=>b(c))},{flush:"post"}),()=>{const c=s.value,u=e.name,f=i.value,d=f&&f.components[u];if(!d)return Bl(n.default,{Component:d,route:c});const m=f.props[u],g=m?m===!0?c.params:typeof m=="function"?m(c):m:null,w=Zr(d,ge({},g,t,{onVnodeUnmounted:y=>{y.component.isUnmounted&&(f.instances[u]=null)},ref:l}));return Bl(n.default,{Component:w,route:c})||w}}});function Bl(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const vf=I1;function N1(e){const t=E1(e.routes,e),n=e.parseQuery||k1,r=e.stringifyQuery||Fl,s=e.history,a=gr(),o=gr(),i=gr(),l=ti(Ut);let c=Ut;zn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=ja.bind(null,T=>""+T),f=ja.bind(null,Gh),d=ja.bind(null,zr);function m(T,B){let z,q;return pf(T)?(z=t.getRecordMatcher(T),q=B):q=T,t.addRoute(q,z)}function g(T){const B=t.getRecordMatcher(T);B&&t.removeRoute(B)}function b(){return t.getRoutes().map(T=>T.record)}function w(T){return!!t.getRecordMatcher(T)}function y(T,B){if(B=ge({},B||l.value),typeof T=="string"){const h=Ba(n,T,B.path),_=t.resolve({path:h.path},B),L=s.createHref(h.fullPath);return ge(h,_,{params:d(_.params),hash:zr(h.hash),redirectedFrom:void 0,href:L})}let z;if(T.path!=null)z=ge({},T,{path:Ba(n,T.path,B.path).path});else{const h=ge({},T.params);for(const _ in h)h[_]==null&&delete h[_];z=ge({},T,{params:f(h)}),B.params=f(B.params)}const q=t.resolve(z,B),he=T.hash||"";q.params=u(d(q.params));const ke=Xh(r,ge({},T,{hash:Kh(he),path:q.path})),p=s.createHref(ke);return ge({fullPath:ke,hash:he,query:r===Fl?C1(T.query):T.query||{}},q,{redirectedFrom:void 0,href:p})}function v(T){return typeof T=="string"?Ba(n,T,l.value.path):ge({},T)}function S(T,B){if(c!==T)return tr(8,{from:B,to:T})}function C(T){return K(T)}function R(T){return C(ge(v(T),{replace:!0}))}function $(T){const B=T.matched[T.matched.length-1];if(B&&B.redirect){const{redirect:z}=B;let q=typeof z=="function"?z(T):z;return typeof q=="string"&&(q=q.includes("?")||q.includes("#")?q=v(q):{path:q},q.params={}),ge({query:T.query,hash:T.hash,params:q.path!=null?{}:T.params},q)}}function K(T,B){const z=c=y(T),q=l.value,he=T.state,ke=T.force,p=T.replace===!0,h=$(z);if(h)return K(ge(v(h),{state:typeof h=="object"?ge({},he,h.state):he,force:ke,replace:p}),B||z);const _=z;_.redirectedFrom=B;let L;return!ke&&Qh(r,q,z)&&(L=tr(16,{to:_,from:q}),ft(q,q,!0,!1)),(L?Promise.resolve(L):k(_,q)).catch(A=>Pt(A)?Pt(A,2)?A:Ue(A):de(A,_,q)).then(A=>{if(A){if(Pt(A,2))return K(ge({replace:p},v(A.to),{state:typeof A.to=="object"?ge({},he,A.to.state):he,force:ke}),B||_)}else A=O(_,q,!0,p,he);return x(_,q,A),A})}function P(T,B){const z=S(T,B);return z?Promise.reject(z):Promise.resolve()}function D(T){const B=Rt.values().next().value;return B&&typeof B.runWithContext=="function"?B.runWithContext(T):T()}function k(T,B){let z;const[q,he,ke]=$1(T,B);z=Ua(q.reverse(),"beforeRouteLeave",T,B);for(const h of q)h.leaveGuards.forEach(_=>{z.push(Zt(_,T,B))});const p=P.bind(null,T,B);return z.push(p),Ke(z).then(()=>{z=[];for(const h of a.list())z.push(Zt(h,T,B));return z.push(p),Ke(z)}).then(()=>{z=Ua(he,"beforeRouteUpdate",T,B);for(const h of he)h.updateGuards.forEach(_=>{z.push(Zt(_,T,B))});return z.push(p),Ke(z)}).then(()=>{z=[];for(const h of ke)if(h.beforeEnter)if(_t(h.beforeEnter))for(const _ of h.beforeEnter)z.push(Zt(_,T,B));else z.push(Zt(h.beforeEnter,T,B));return z.push(p),Ke(z)}).then(()=>(T.matched.forEach(h=>h.enterCallbacks={}),z=Ua(ke,"beforeRouteEnter",T,B,D),z.push(p),Ke(z))).then(()=>{z=[];for(const h of o.list())z.push(Zt(h,T,B));return z.push(p),Ke(z)}).catch(h=>Pt(h,8)?h:Promise.reject(h))}function x(T,B,z){i.list().forEach(q=>D(()=>q(T,B,z)))}function O(T,B,z,q,he){const ke=S(T,B);if(ke)return ke;const p=B===Ut,h=zn?history.state:{};z&&(q||p?s.replace(T.fullPath,ge({scroll:p&&h&&h.scroll},he)):s.push(T.fullPath,he)),l.value=T,ft(T,B,z,p),Ue()}let te;function be(){te||(te=s.listen((T,B,z)=>{if(!os.listening)return;const q=y(T),he=$(q);if(he){K(ge(he,{replace:!0}),q).catch(Cr);return}c=q;const ke=l.value;zn&&o1(Ll(ke.fullPath,z.delta),ga()),k(q,ke).catch(p=>Pt(p,12)?p:Pt(p,2)?(K(p.to,q).then(h=>{Pt(h,20)&&!z.delta&&z.type===Vr.pop&&s.go(-1,!1)}).catch(Cr),Promise.reject()):(z.delta&&s.go(-z.delta,!1),de(p,q,ke))).then(p=>{p=p||O(q,ke,!1),p&&(z.delta&&!Pt(p,8)?s.go(-z.delta,!1):z.type===Vr.pop&&Pt(p,20)&&s.go(-1,!1)),x(q,ke,p)}).catch(Cr)}))}let Ce=gr(),ie=gr(),pe;function de(T,B,z){Ue(T);const q=ie.list();return q.length?q.forEach(he=>he(T,B,z)):console.error(T),Promise.reject(T)}function gt(){return pe&&l.value!==Ut?Promise.resolve():new Promise((T,B)=>{Ce.add([T,B])})}function Ue(T){return pe||(pe=!T,be(),Ce.list().forEach(([B,z])=>T?z(T):B()),Ce.reset()),T}function ft(T,B,z,q){const{scrollBehavior:he}=e;if(!zn||!he)return Promise.resolve();const ke=!z&&i1(Ll(T.fullPath,0))||(q||!z)&&history.state&&history.state.scroll||null;return Ln().then(()=>he(T,B,ke)).then(p=>p&&a1(p)).catch(p=>de(p,T,B))}const $e=T=>s.go(T);let Lt;const Rt=new Set,os={currentRoute:l,listening:!0,addRoute:m,removeRoute:g,hasRoute:w,getRoutes:b,resolve:y,options:e,push:C,replace:R,go:$e,back:()=>$e(-1),forward:()=>$e(1),beforeEach:a.add,beforeResolve:o.add,afterEach:i.add,onError:ie.add,isReady:gt,install(T){const B=this;T.component("RouterLink",R1),T.component("RouterView",vf),T.config.globalProperties.$router=B,Object.defineProperty(T.config.globalProperties,"$route",{enumerable:!0,get:()=>Y(l)}),zn&&!Lt&&l.value===Ut&&(Lt=!0,C(s.location).catch(he=>{}));const z={};for(const he in Ut)Object.defineProperty(z,he,{get:()=>l.value[he],enumerable:!0});T.provide(va,B),T.provide(mi,iu(z)),T.provide(yo,l);const q=T.unmount;Rt.add(T),T.unmount=function(){Rt.delete(T),Rt.size<1&&(c=Ut,te&&te(),te=null,l.value=Ut,Lt=!1,pe=!1),q()}}};function Ke(T){return T.reduce((B,z)=>B.then(()=>D(z)),Promise.resolve())}return os}function $1(e,t){const n=[],r=[],s=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;oer(c,i))?r.push(i):n.push(i));const l=e.matched[o];l&&(t.matched.find(c=>er(c,l))||s.push(l))}return[n,r,s]}function H1(){return nt(va)}function yf(){return nt(mi)}function lr(e){return Wo()?(Yc(e),!0):!1}function lt(e){return typeof e=="function"?e():Y(e)}const cr=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const F1=Object.prototype.toString,bf=e=>F1.call(e)==="[object Object]",hi=()=>{},Ul=D1();function D1(){var e,t;return cr&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function z1(e,t){function n(...r){return new Promise((s,a)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(a)})}return n}const wf=e=>e();function V1(e=wf){const t=me(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...a)=>{t.value&&e(...a)};return{isActive:or(t),pause:n,resume:r,eventFilter:s}}function j1(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const r=t;t=void 0,r&&await r},n}function B1(e){return ir()}function gi(...e){if(e.length!==1)return Pp(...e);const t=e[0];return typeof t=="function"?or(Op(()=>({get:t,set:hi}))):me(t)}function U1(e,t,n={}){const{eventFilter:r=wf,...s}=n;return je(e,z1(r,t),s)}function _f(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:a,pause:o,resume:i,isActive:l}=V1(r);return{stop:U1(e,t,{...s,eventFilter:a}),pause:o,resume:i,isActive:l}}function ya(e,t=!0,n){B1()?Rn(e,n):t?e():Ln(e)}function K1(e,t,n={}){const{immediate:r=!0}=n,s=me(!1);let a=null;function o(){a&&(clearTimeout(a),a=null)}function i(){s.value=!1,o()}function l(...c){o(),s.value=!0,a=setTimeout(()=>{s.value=!1,a=null,e(...c)},lt(t))}return r&&(s.value=!0,cr&&l()),lr(i),{isPending:or(s),start:l,stop:i}}function Ef(e){var t;const n=lt(e);return(t=n==null?void 0:n.$el)!=null?t:n}const nr=cr?window:void 0,wb=cr?window.document:void 0,Sf=cr?window.navigator:void 0;function jr(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=nr):[t,n,r,s]=e,!t)return hi;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const a=[],o=()=>{a.forEach(u=>u()),a.length=0},i=(u,f,d,m)=>(u.addEventListener(f,d,m),()=>u.removeEventListener(f,d,m)),l=je(()=>[Ef(t),lt(s)],([u,f])=>{if(o(),!u)return;const d=bf(f)?{...f}:f;a.push(...n.flatMap(m=>r.map(g=>i(u,m,g,d))))},{immediate:!0,flush:"post"}),c=()=>{l(),o()};return lr(c),c}function W1(){const e=me(!1),t=ir();return t&&Rn(()=>{e.value=!0},t),e}function ba(e){const t=W1();return se(()=>(t.value,!!e()))}function q1(e,t={}){const{window:n=nr}=t,r=ba(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const a=me(!1),o=c=>{a.value=c.matches},i=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",o):s.removeListener(o))},l=si(()=>{r.value&&(i(),s=n.matchMedia(lt(e)),"addEventListener"in s?s.addEventListener("change",o):s.addListener(o),a.value=s.matches)});return lr(()=>{l(),i(),s=void 0}),a}function Kl(e,t={}){const{controls:n=!1,navigator:r=Sf}=t,s=ba(()=>r&&"permissions"in r);let a;const o=typeof e=="string"?{name:e}:e,i=me(),l=()=>{a&&(i.value=a.state)},c=j1(async()=>{if(s.value){if(!a)try{a=await r.permissions.query(o),jr(a,"change",l),l()}catch{i.value="prompt"}return a}});return c(),n?{state:i,isSupported:s,query:c}:i}function _b(e={}){const{navigator:t=Sf,read:n=!1,source:r,copiedDuring:s=1500,legacy:a=!1}=e,o=ba(()=>t&&"clipboard"in t),i=Kl("clipboard-read"),l=Kl("clipboard-write"),c=se(()=>o.value||a),u=me(""),f=me(!1),d=K1(()=>f.value=!1,s);function m(){o.value&&y(i.value)?t.clipboard.readText().then(v=>{u.value=v}):u.value=w()}c.value&&n&&jr(["copy","cut"],m);async function g(v=lt(r)){c.value&&v!=null&&(o.value&&y(l.value)?await t.clipboard.writeText(v):b(v),u.value=v,f.value=!0,d.start())}function b(v){const S=document.createElement("textarea");S.value=v??"",S.style.position="absolute",S.style.opacity="0",document.body.appendChild(S),S.select(),document.execCommand("copy"),S.remove()}function w(){var v,S,C;return(C=(S=(v=document==null?void 0:document.getSelection)==null?void 0:v.call(document))==null?void 0:S.toString())!=null?C:""}function y(v){return v==="granted"||v==="prompt"}return{isSupported:c,text:u,copied:f,copy:g}}const hs=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},gs="__vueuse_ssr_handlers__",G1=Y1();function Y1(){return gs in hs||(hs[gs]=hs[gs]||{}),hs[gs]}function xf(e,t){return G1[e]||t}function J1(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 X1={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()}},Wl="vueuse-storage";function Af(e,t,n,r={}){var s;const{flush:a="pre",deep:o=!0,listenToStorageChanges:i=!0,writeDefaults:l=!0,mergeDefaults:c=!1,shallow:u,window:f=nr,eventFilter:d,onError:m=k=>{console.error(k)},initOnMounted:g}=r,b=(u?ti:me)(typeof t=="function"?t():t);if(!n)try{n=xf("getDefaultStorage",()=>{var k;return(k=nr)==null?void 0:k.localStorage})()}catch(k){m(k)}if(!n)return b;const w=lt(t),y=J1(w),v=(s=r.serializer)!=null?s:X1[y],{pause:S,resume:C}=_f(b,()=>$(b.value),{flush:a,deep:o,eventFilter:d});f&&i&&ya(()=>{jr(f,"storage",P),jr(f,Wl,D),g&&P()}),g||P();function R(k,x){f&&f.dispatchEvent(new CustomEvent(Wl,{detail:{key:e,oldValue:k,newValue:x,storageArea:n}}))}function $(k){try{const x=n.getItem(e);if(k==null)R(x,null),n.removeItem(e);else{const O=v.write(k);x!==O&&(n.setItem(e,O),R(x,O))}}catch(x){m(x)}}function K(k){const x=k?k.newValue:n.getItem(e);if(x==null)return l&&w!=null&&n.setItem(e,v.write(w)),w;if(!k&&c){const O=v.read(x);return typeof c=="function"?c(O,w):y==="object"&&!Array.isArray(O)?{...w,...O}:O}else return typeof x!="string"?x:v.read(x)}function P(k){if(!(k&&k.storageArea!==n)){if(k&&k.key==null){b.value=w;return}if(!(k&&k.key!==e)){S();try{(k==null?void 0:k.newValue)!==v.write(b.value)&&(b.value=K(k))}catch(x){m(x)}finally{k?Ln(C):C()}}}}function D(k){P(k.detail)}return b}function Q1(e){return q1("(prefers-color-scheme: dark)",e)}function kf(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=nr,storage:a,storageKey:o="vueuse-color-scheme",listenToStorageChanges:i=!0,storageRef:l,emitAuto:c,disableTransition:u=!0}=e,f={auto:"",light:"light",dark:"dark",...e.modes||{}},d=Q1({window:s}),m=se(()=>d.value?"dark":"light"),g=l||(o==null?gi(r):Af(o,r,a,{window:s,listenToStorageChanges:i})),b=se(()=>g.value==="auto"?m.value:g.value),w=xf("updateHTMLAttrs",(C,R,$)=>{const K=typeof C=="string"?s==null?void 0:s.document.querySelector(C):Ef(C);if(!K)return;let P;if(u&&(P=s.document.createElement("style"),P.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(P)),R==="class"){const D=$.split(/\s/g);Object.values(f).flatMap(k=>(k||"").split(/\s/g)).filter(Boolean).forEach(k=>{D.includes(k)?K.classList.add(k):K.classList.remove(k)})}else K.setAttribute(R,$);u&&(s.getComputedStyle(P).opacity,document.head.removeChild(P))});function y(C){var R;w(t,n,(R=f[C])!=null?R:C)}function v(C){e.onChanged?e.onChanged(C,y):y(C)}je(b,v,{flush:"post",immediate:!0}),ya(()=>v(b.value));const S=se({get(){return c?g.value:b.value},set(C){g.value=C}});try{return Object.assign(S,{store:g,system:m,state:b})}catch{return S}}function Cf(e={}){const{window:t=nr}=e,n=t==null?void 0:t.navigator,r=ba(()=>n&&"language"in n),s=me(n==null?void 0:n.language);return jr(t,"languagechange",()=>{n&&(s.value=n.language)}),{isSupported:r,language:s}}const Z1={class:"main-section"},eg={__name:"App",setup(e){const t=yf(),n=me(null),r=me(null),s=me(t.meta.watchedByKicker);return je(()=>t.name,()=>{s.value=t.meta.watchedByKicker}),Cu(async()=>{const{useUserStore:a}=await Z(async()=>{const{useUserStore:l}=await Promise.resolve().then(()=>X2);return{useUserStore:l}},void 0,import.meta.url),{language:o}=Cf(),i=a();r.value=parseInt(i.preferences.kickUserAfter),n.value=i.isAuthenticated,je(()=>i.preferences.kickUserAfter,()=>{r.value=parseInt(i.preferences.kickUserAfter)}),je(()=>i.isAuthenticated,()=>{n.value=i.isAuthenticated}),je(o,()=>{i.applyLanguage()})}),(a,o)=>{const i=He("notifications"),l=He("kicker");return F(),G(ze,null,[ne(i,{id:"vueNotification",role:"alert",width:"100%",position:"top",duration:4e3,speed:0,max:1,classes:"notification notification-banner is-radiusless"}),Q("main",Z1,[ne(Y(vf))]),Y(n)&&Y(r)>0&&Y(s)?(F(),Xe(l,{key:0,kickAfter:Y(r)},null,8,["kickAfter"])):ce("",!0)],64)}}};function Of(e,t,n){const r=t[n];return r?()=>{r({...e,nextMiddleware:Of(e,t,n+1)})}:e.next}var tg=!1;/*! - * pinia v2.1.7 - * (c) 2023 Eduardo San Martin Morote - * @license MIT - */let Tf;const wa=e=>Tf=e,Lf=Symbol();function ql(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Tr;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Tr||(Tr={}));function ng(){const e=Gc(!0),t=e.run(()=>me({}));let n=[],r=[];const s=aa({install(a){wa(s),s._a=a,a.provide(Lf,s),a.config.globalProperties.$pinia=s,r.forEach(o=>n.push(o)),r=[]},use(a){return!this._a&&!tg?r.push(a):n.push(a),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const rg=()=>{};function Gl(e,t,n,r=rg){e.push(t);const s=()=>{const a=e.indexOf(t);a>-1&&(e.splice(a,1),r())};return!n&&Wo()&&Yc(s),s}function Nn(e,...t){e.slice().forEach(n=>{n(...t)})}const sg=e=>e();function Rf(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];ql(s)&&ql(r)&&e.hasOwnProperty(n)&&!Le(r)&&!tn(r)?e[n]=Rf(s,r):e[n]=r}return e}const{assign:Gt}=Object;function ag(e){return!!(Le(e)&&e.effect)}function og(e,t,n,r){const{state:s,actions:a,getters:o}=t,i=n.state.value[e];let l;function c(){i||(n.state.value[e]=s?s():{});const u=Tp(n.state.value[e]);return Gt(u,a,Object.keys(o||{}).reduce((f,d)=>(f[d]=aa(se(()=>{wa(n);const m=n._s.get(e);return o[d].call(m,m)})),f),{}))}return l=ig(e,c,t,n,r,!0),l}function ig(e,t,n={},r,s,a){let o;const i=Gt({actions:{}},n),l={deep:!0};let c,u,f=[],d=[],m;const g=r.state.value[e];me({});let b;function w(P){let D;c=u=!1,typeof P=="function"?(P(r.state.value[e]),D={type:Tr.patchFunction,storeId:e,events:m}):(Rf(r.state.value[e],P),D={type:Tr.patchObject,payload:P,storeId:e,events:m});const k=b=Symbol();Ln().then(()=>{b===k&&(c=!0)}),u=!0,Nn(f,D,r.state.value[e])}const y=function(){const{state:D}=n,k=D?D():{};this.$patch(x=>{Gt(x,k)})};function v(){o.stop(),f=[],d=[],r._s.delete(e)}function S(P,D){return function(){wa(r);const k=Array.from(arguments),x=[],O=[];function te(ie){x.push(ie)}function be(ie){O.push(ie)}Nn(d,{args:k,name:P,store:R,after:te,onError:be});let Ce;try{Ce=D.apply(this&&this.$id===e?this:R,k)}catch(ie){throw Nn(O,ie),ie}return Ce instanceof Promise?Ce.then(ie=>(Nn(x,ie),ie)).catch(ie=>(Nn(O,ie),Promise.reject(ie))):(Nn(x,Ce),Ce)}}const C={_p:r,$id:e,$onAction:Gl.bind(null,d),$patch:w,$reset:y,$subscribe(P,D={}){const k=Gl(f,P,D.detached,()=>x()),x=o.run(()=>je(()=>r.state.value[e],O=>{(D.flush==="sync"?u:c)&&P({storeId:e,type:Tr.direct,events:m},O)},Gt({},l,D)));return k},$dispose:v},R=$t(C);r._s.set(e,R);const K=(r._a&&r._a.runWithContext||sg)(()=>r._e.run(()=>(o=Gc()).run(t)));for(const P in K){const D=K[P];if(!(Le(D)&&!ag(D)||tn(D))){if(typeof D=="function"){const k=S(P,D);K[P]=k,i.actions[P]=D}}}return Gt(R,K),Gt(ue(R),K),Object.defineProperty(R,"$state",{get:()=>r.state.value[e],set:P=>{w(D=>{Gt(D,P)})}}),r._p.forEach(P=>{Gt(R,o.run(()=>P({store:R,app:r._a,pinia:r,options:i})))}),g&&a&&n.hydrate&&n.hydrate(R.$state,g),c=!0,u=!0,R}function es(e,t,n){let r,s;typeof e=="string"?(r=e,s=t):(s=e,r=e.id);function a(o,i){const l=hm();return o=o||(l?nt(Lf,null):null),o&&wa(o),o=Tf,o._s.has(r)||og(r,s,o),o._s.get(r)}return a.$id=r,a}function Pf(e,t){return function(){return e.apply(t,arguments)}}const{toString:lg}=Object.prototype,{getPrototypeOf:vi}=Object,_a=(e=>t=>{const n=lg.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Et=e=>(e=e.toLowerCase(),t=>_a(t)===e),Ea=e=>t=>typeof t===e,{isArray:ur}=Array,Br=Ea("undefined");function cg(e){return e!==null&&!Br(e)&&e.constructor!==null&&!Br(e.constructor)&&ct(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Mf=Et("ArrayBuffer");function ug(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Mf(e.buffer),t}const fg=Ea("string"),ct=Ea("function"),If=Ea("number"),Sa=e=>e!==null&&typeof e=="object",dg=e=>e===!0||e===!1,Ns=e=>{if(_a(e)!=="object")return!1;const t=vi(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},pg=Et("Date"),mg=Et("File"),hg=Et("Blob"),gg=Et("FileList"),vg=e=>Sa(e)&&ct(e.pipe),yg=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||ct(e.append)&&((t=_a(e))==="formdata"||t==="object"&&ct(e.toString)&&e.toString()==="[object FormData]"))},bg=Et("URLSearchParams"),[wg,_g,Eg,Sg]=["ReadableStream","Request","Response","Headers"].map(Et),xg=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function ts(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),ur(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const yn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,$f=e=>!Br(e)&&e!==yn;function bo(){const{caseless:e}=$f(this)&&this||{},t={},n=(r,s)=>{const a=e&&Nf(t,s)||s;Ns(t[a])&&Ns(r)?t[a]=bo(t[a],r):Ns(r)?t[a]=bo({},r):ur(r)?t[a]=r.slice():t[a]=r};for(let r=0,s=arguments.length;r(ts(t,(s,a)=>{n&&ct(s)?e[a]=Pf(s,n):e[a]=s},{allOwnKeys:r}),e),kg=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Cg=(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)},Og=(e,t,n,r)=>{let s,a,o;const i={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),a=s.length;a-- >0;)o=s[a],(!r||r(o,e,t))&&!i[o]&&(t[o]=e[o],i[o]=!0);e=n!==!1&&vi(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Tg=(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},Lg=e=>{if(!e)return null;if(ur(e))return e;let t=e.length;if(!If(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},Rg=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&vi(Uint8Array)),Pg=(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])}},Mg=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},Ig=Et("HTMLFormElement"),Ng=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),Yl=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),$g=Et("RegExp"),Hf=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};ts(n,(s,a)=>{let o;(o=t(s,a,e))!==!1&&(r[a]=o||s)}),Object.defineProperties(e,r)},Hg=e=>{Hf(e,(t,n)=>{if(ct(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(ct(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+"'")})}})},Fg=(e,t)=>{const n={},r=s=>{s.forEach(a=>{n[a]=!0})};return ur(e)?r(e):r(String(e).split(t)),n},Dg=()=>{},zg=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t,Ka="abcdefghijklmnopqrstuvwxyz",Jl="0123456789",Ff={DIGIT:Jl,ALPHA:Ka,ALPHA_DIGIT:Ka+Ka.toUpperCase()+Jl},Vg=(e=16,t=Ff.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function jg(e){return!!(e&&ct(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const Bg=e=>{const t=new Array(10),n=(r,s)=>{if(Sa(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[s]=r;const a=ur(r)?[]:{};return ts(r,(o,i)=>{const l=n(o,s+1);!Br(l)&&(a[i]=l)}),t[s]=void 0,a}}return r};return n(e,0)},Ug=Et("AsyncFunction"),Kg=e=>e&&(Sa(e)||ct(e))&&ct(e.then)&&ct(e.catch),Df=((e,t)=>e?setImmediate:t?((n,r)=>(yn.addEventListener("message",({source:s,data:a})=>{s===yn&&a===n&&r.length&&r.shift()()},!1),s=>{r.push(s),yn.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",ct(yn.postMessage)),Wg=typeof queueMicrotask<"u"?queueMicrotask.bind(yn):typeof process<"u"&&process.nextTick||Df,E={isArray:ur,isArrayBuffer:Mf,isBuffer:cg,isFormData:yg,isArrayBufferView:ug,isString:fg,isNumber:If,isBoolean:dg,isObject:Sa,isPlainObject:Ns,isReadableStream:wg,isRequest:_g,isResponse:Eg,isHeaders:Sg,isUndefined:Br,isDate:pg,isFile:mg,isBlob:hg,isRegExp:$g,isFunction:ct,isStream:vg,isURLSearchParams:bg,isTypedArray:Rg,isFileList:gg,forEach:ts,merge:bo,extend:Ag,trim:xg,stripBOM:kg,inherits:Cg,toFlatObject:Og,kindOf:_a,kindOfTest:Et,endsWith:Tg,toArray:Lg,forEachEntry:Pg,matchAll:Mg,isHTMLForm:Ig,hasOwnProperty:Yl,hasOwnProp:Yl,reduceDescriptors:Hf,freezeMethods:Hg,toObjectSet:Fg,toCamelCase:Ng,noop:Dg,toFiniteNumber:zg,findKey:Nf,global:yn,isContextDefined:$f,ALPHABET:Ff,generateString:Vg,isSpecCompliantForm:jg,toJSONObject:Bg,isAsyncFn:Ug,isThenable:Kg,setImmediate:Df,asap:Wg};function oe(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,this.status=s.status?s.status:null)}E.inherits(oe,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:E.toJSONObject(this.config),code:this.code,status:this.status}}});const zf=oe.prototype,Vf={};["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=>{Vf[e]={value:e}});Object.defineProperties(oe,Vf);Object.defineProperty(zf,"isAxiosError",{value:!0});oe.from=(e,t,n,r,s,a)=>{const o=Object.create(zf);return E.toFlatObject(e,o,function(l){return l!==Error.prototype},i=>i!=="isAxiosError"),oe.call(o,e.message,t,n,r,s),o.cause=e,o.name=e.name,a&&Object.assign(o,a),o};const qg=null;function wo(e){return E.isPlainObject(e)||E.isArray(e)}function jf(e){return E.endsWith(e,"[]")?e.slice(0,-2):e}function Xl(e,t,n){return e?e.concat(t).map(function(s,a){return s=jf(s),!n&&a?"["+s+"]":s}).join(n?".":""):t}function Gg(e){return E.isArray(e)&&!e.some(wo)}const Yg=E.toFlatObject(E,{},null,function(t){return/^is[A-Z]/.test(t)});function xa(e,t,n){if(!E.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=E.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(b,w){return!E.isUndefined(w[b])});const r=n.metaTokens,s=n.visitor||u,a=n.dots,o=n.indexes,l=(n.Blob||typeof Blob<"u"&&Blob)&&E.isSpecCompliantForm(t);if(!E.isFunction(s))throw new TypeError("visitor must be a function");function c(g){if(g===null)return"";if(E.isDate(g))return g.toISOString();if(!l&&E.isBlob(g))throw new oe("Blob is not supported. Use a Buffer instead.");return E.isArrayBuffer(g)||E.isTypedArray(g)?l&&typeof Blob=="function"?new Blob([g]):Buffer.from(g):g}function u(g,b,w){let y=g;if(g&&!w&&typeof g=="object"){if(E.endsWith(b,"{}"))b=r?b:b.slice(0,-2),g=JSON.stringify(g);else if(E.isArray(g)&&Gg(g)||(E.isFileList(g)||E.endsWith(b,"[]"))&&(y=E.toArray(g)))return b=jf(b),y.forEach(function(S,C){!(E.isUndefined(S)||S===null)&&t.append(o===!0?Xl([b],C,a):o===null?b:b+"[]",c(S))}),!1}return wo(g)?!0:(t.append(Xl(w,b,a),c(g)),!1)}const f=[],d=Object.assign(Yg,{defaultVisitor:u,convertValue:c,isVisitable:wo});function m(g,b){if(!E.isUndefined(g)){if(f.indexOf(g)!==-1)throw Error("Circular reference detected in "+b.join("."));f.push(g),E.forEach(g,function(y,v){(!(E.isUndefined(y)||y===null)&&s.call(t,y,E.isString(v)?v.trim():v,b,d))===!0&&m(y,b?b.concat(v):[v])}),f.pop()}}if(!E.isObject(e))throw new TypeError("data must be an object");return m(e),t}function Ql(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function yi(e,t){this._pairs=[],e&&xa(e,this,t)}const Bf=yi.prototype;Bf.append=function(t,n){this._pairs.push([t,n])};Bf.toString=function(t){const n=t?function(r){return t.call(this,r,Ql)}:Ql;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function Jg(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Uf(e,t,n){if(!t)return e;const r=n&&n.encode||Jg,s=n&&n.serialize;let a;if(s?a=s(t,n):a=E.isURLSearchParams(t)?t.toString():new yi(t,n).toString(r),a){const o=e.indexOf("#");o!==-1&&(e=e.slice(0,o)),e+=(e.indexOf("?")===-1?"?":"&")+a}return e}class Zl{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){E.forEach(this.handlers,function(r){r!==null&&t(r)})}}const Kf={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Xg=typeof URLSearchParams<"u"?URLSearchParams:yi,Qg=typeof FormData<"u"?FormData:null,Zg=typeof Blob<"u"?Blob:null,e2={isBrowser:!0,classes:{URLSearchParams:Xg,FormData:Qg,Blob:Zg},protocols:["http","https","file","blob","url","data"]},bi=typeof window<"u"&&typeof document<"u",_o=typeof navigator=="object"&&navigator||void 0,t2=bi&&(!_o||["ReactNative","NativeScript","NS"].indexOf(_o.product)<0),n2=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",r2=bi&&window.location.href||"http://localhost",s2=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:bi,hasStandardBrowserEnv:t2,hasStandardBrowserWebWorkerEnv:n2,navigator:_o,origin:r2},Symbol.toStringTag,{value:"Module"})),rt={...s2,...e2};function a2(e,t){return xa(e,new rt.classes.URLSearchParams,Object.assign({visitor:function(n,r,s,a){return rt.isNode&&E.isBuffer(n)?(this.append(r,n.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)}},t))}function o2(e){return E.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function i2(e){const t={},n=Object.keys(e);let r;const s=n.length;let a;for(r=0;r=n.length;return o=!o&&E.isArray(s)?s.length:o,l?(E.hasOwnProp(s,o)?s[o]=[s[o],r]:s[o]=r,!i):((!s[o]||!E.isObject(s[o]))&&(s[o]=[]),t(n,r,s[o],a)&&E.isArray(s[o])&&(s[o]=i2(s[o])),!i)}if(E.isFormData(e)&&E.isFunction(e.entries)){const n={};return E.forEachEntry(e,(r,s)=>{t(o2(r),s,n,0)}),n}return null}function l2(e,t,n){if(E.isString(e))try{return(t||JSON.parse)(e),E.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(0,JSON.stringify)(e)}const ns={transitional:Kf,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,a=E.isObject(t);if(a&&E.isHTMLForm(t)&&(t=new FormData(t)),E.isFormData(t))return s?JSON.stringify(Wf(t)):t;if(E.isArrayBuffer(t)||E.isBuffer(t)||E.isStream(t)||E.isFile(t)||E.isBlob(t)||E.isReadableStream(t))return t;if(E.isArrayBufferView(t))return t.buffer;if(E.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let i;if(a){if(r.indexOf("application/x-www-form-urlencoded")>-1)return a2(t,this.formSerializer).toString();if((i=E.isFileList(t))||r.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return xa(i?{"files[]":t}:t,l&&new l,this.formSerializer)}}return a||s?(n.setContentType("application/json",!1),l2(t)):t}],transformResponse:[function(t){const n=this.transitional||ns.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(E.isResponse(t)||E.isReadableStream(t))return t;if(t&&E.isString(t)&&(r&&!this.responseType||s)){const o=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(i){if(o)throw i.name==="SyntaxError"?oe.from(i,oe.ERR_BAD_RESPONSE,this,null,this.response):i}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:rt.classes.FormData,Blob:rt.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};E.forEach(["delete","get","head","post","put","patch"],e=>{ns.headers[e]={}});const c2=E.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"]),u2=e=>{const t={};let n,r,s;return e&&e.split(` -`).forEach(function(o){s=o.indexOf(":"),n=o.substring(0,s).trim().toLowerCase(),r=o.substring(s+1).trim(),!(!n||t[n]&&c2[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},ec=Symbol("internals");function vr(e){return e&&String(e).trim().toLowerCase()}function $s(e){return e===!1||e==null?e:E.isArray(e)?e.map($s):String(e)}function f2(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 Wa(e,t,n,r,s){if(E.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!E.isString(t)){if(E.isString(r))return t.indexOf(r)!==-1;if(E.isRegExp(r))return r.test(t)}}function p2(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function m2(e,t){const n=E.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,a,o){return this[r].call(this,t,s,a,o)},configurable:!0})})}class st{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function a(i,l,c){const u=vr(l);if(!u)throw new Error("header name must be a non-empty string");const f=E.findKey(s,u);(!f||s[f]===void 0||c===!0||c===void 0&&s[f]!==!1)&&(s[f||l]=$s(i))}const o=(i,l)=>E.forEach(i,(c,u)=>a(c,u,l));if(E.isPlainObject(t)||t instanceof this.constructor)o(t,n);else if(E.isString(t)&&(t=t.trim())&&!d2(t))o(u2(t),n);else if(E.isHeaders(t))for(const[i,l]of t.entries())a(l,i,r);else t!=null&&a(n,t,r);return this}get(t,n){if(t=vr(t),t){const r=E.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return f2(s);if(E.isFunction(n))return n.call(this,s,r);if(E.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=vr(t),t){const r=E.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||Wa(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function a(o){if(o=vr(o),o){const i=E.findKey(r,o);i&&(!n||Wa(r,r[i],i,n))&&(delete r[i],s=!0)}}return E.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||Wa(this,this[a],a,t,!0))&&(delete this[a],s=!0)}return s}normalize(t){const n=this,r={};return E.forEach(this,(s,a)=>{const o=E.findKey(r,a);if(o){n[o]=$s(s),delete n[a];return}const i=t?p2(a):String(a).trim();i!==a&&delete n[a],n[i]=$s(s),r[i]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return E.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&E.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[ec]=this[ec]={accessors:{}}).accessors,s=this.prototype;function a(o){const i=vr(o);r[i]||(m2(s,o),r[i]=!0)}return E.isArray(t)?t.forEach(a):a(t),this}}st.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);E.reduceDescriptors(st.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});E.freezeMethods(st);function qa(e,t){const n=this||ns,r=t||n,s=st.from(r.headers);let a=r.data;return E.forEach(e,function(i){a=i.call(n,a,s.normalize(),t?t.status:void 0)}),s.normalize(),a}function qf(e){return!!(e&&e.__CANCEL__)}function fr(e,t,n){oe.call(this,e??"canceled",oe.ERR_CANCELED,t,n),this.name="CanceledError"}E.inherits(fr,oe,{__CANCEL__:!0});function Gf(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new oe("Request failed with status code "+n.status,[oe.ERR_BAD_REQUEST,oe.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function h2(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function g2(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,a=0,o;return t=t!==void 0?t:1e3,function(l){const c=Date.now(),u=r[a];o||(o=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-o{n=u,s=null,a&&(clearTimeout(a),a=null),e.apply(null,c)};return[(...c)=>{const u=Date.now(),f=u-n;f>=r?o(c,u):(s=c,a||(a=setTimeout(()=>{a=null,o(s)},r-f)))},()=>s&&o(s)]}const Ys=(e,t,n=3)=>{let r=0;const s=g2(50,250);return v2(a=>{const o=a.loaded,i=a.lengthComputable?a.total:void 0,l=o-r,c=s(l),u=o<=i;r=o;const f={loaded:o,total:i,progress:i?o/i:void 0,bytes:l,rate:c||void 0,estimated:c&&i&&u?(i-o)/c:void 0,event:a,lengthComputable:i!=null,[t?"download":"upload"]:!0};e(f)},n)},tc=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},nc=e=>(...t)=>E.asap(()=>e(...t)),y2=rt.hasStandardBrowserEnv?function(){const t=rt.navigator&&/(msie|trident)/i.test(rt.navigator.userAgent),n=document.createElement("a");let r;function s(a){let o=a;return t&&(n.setAttribute("href",o),o=n.href),n.setAttribute("href",o),{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(o){const i=E.isString(o)?s(o):o;return i.protocol===r.protocol&&i.host===r.host}}():function(){return function(){return!0}}(),b2=rt.hasStandardBrowserEnv?{write(e,t,n,r,s,a){const o=[e+"="+encodeURIComponent(t)];E.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),E.isString(r)&&o.push("path="+r),E.isString(s)&&o.push("domain="+s),a===!0&&o.push("secure"),document.cookie=o.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function w2(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function _2(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Yf(e,t){return e&&!w2(t)?_2(e,t):t}const rc=e=>e instanceof st?{...e}:e;function xn(e,t){t=t||{};const n={};function r(c,u,f){return E.isPlainObject(c)&&E.isPlainObject(u)?E.merge.call({caseless:f},c,u):E.isPlainObject(u)?E.merge({},u):E.isArray(u)?u.slice():u}function s(c,u,f){if(E.isUndefined(u)){if(!E.isUndefined(c))return r(void 0,c,f)}else return r(c,u,f)}function a(c,u){if(!E.isUndefined(u))return r(void 0,u)}function o(c,u){if(E.isUndefined(u)){if(!E.isUndefined(c))return r(void 0,c)}else return r(void 0,u)}function i(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:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:i,headers:(c,u)=>s(rc(c),rc(u),!0)};return E.forEach(Object.keys(Object.assign({},e,t)),function(u){const f=l[u]||s,d=f(e[u],t[u],u);E.isUndefined(d)&&f!==i||(n[u]=d)}),n}const Jf=e=>{const t=xn({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:a,headers:o,auth:i}=t;t.headers=o=st.from(o),t.url=Uf(Yf(t.baseURL,t.url),e.params,e.paramsSerializer),i&&o.set("Authorization","Basic "+btoa((i.username||"")+":"+(i.password?unescape(encodeURIComponent(i.password)):"")));let l;if(E.isFormData(n)){if(rt.hasStandardBrowserEnv||rt.hasStandardBrowserWebWorkerEnv)o.setContentType(void 0);else if((l=o.getContentType())!==!1){const[c,...u]=l?l.split(";").map(f=>f.trim()).filter(Boolean):[];o.setContentType([c||"multipart/form-data",...u].join("; "))}}if(rt.hasStandardBrowserEnv&&(r&&E.isFunction(r)&&(r=r(t)),r||r!==!1&&y2(t.url))){const c=s&&a&&b2.read(a);c&&o.set(s,c)}return t},E2=typeof XMLHttpRequest<"u",S2=E2&&function(e){return new Promise(function(n,r){const s=Jf(e);let a=s.data;const o=st.from(s.headers).normalize();let{responseType:i,onUploadProgress:l,onDownloadProgress:c}=s,u,f,d,m,g;function b(){m&&m(),g&&g(),s.cancelToken&&s.cancelToken.unsubscribe(u),s.signal&&s.signal.removeEventListener("abort",u)}let w=new XMLHttpRequest;w.open(s.method.toUpperCase(),s.url,!0),w.timeout=s.timeout;function y(){if(!w)return;const S=st.from("getAllResponseHeaders"in w&&w.getAllResponseHeaders()),R={data:!i||i==="text"||i==="json"?w.responseText:w.response,status:w.status,statusText:w.statusText,headers:S,config:e,request:w};Gf(function(K){n(K),b()},function(K){r(K),b()},R),w=null}"onloadend"in w?w.onloadend=y:w.onreadystatechange=function(){!w||w.readyState!==4||w.status===0&&!(w.responseURL&&w.responseURL.indexOf("file:")===0)||setTimeout(y)},w.onabort=function(){w&&(r(new oe("Request aborted",oe.ECONNABORTED,e,w)),w=null)},w.onerror=function(){r(new oe("Network Error",oe.ERR_NETWORK,e,w)),w=null},w.ontimeout=function(){let C=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const R=s.transitional||Kf;s.timeoutErrorMessage&&(C=s.timeoutErrorMessage),r(new oe(C,R.clarifyTimeoutError?oe.ETIMEDOUT:oe.ECONNABORTED,e,w)),w=null},a===void 0&&o.setContentType(null),"setRequestHeader"in w&&E.forEach(o.toJSON(),function(C,R){w.setRequestHeader(R,C)}),E.isUndefined(s.withCredentials)||(w.withCredentials=!!s.withCredentials),i&&i!=="json"&&(w.responseType=s.responseType),c&&([d,g]=Ys(c,!0),w.addEventListener("progress",d)),l&&w.upload&&([f,m]=Ys(l),w.upload.addEventListener("progress",f),w.upload.addEventListener("loadend",m)),(s.cancelToken||s.signal)&&(u=S=>{w&&(r(!S||S.type?new fr(null,e,w):S),w.abort(),w=null)},s.cancelToken&&s.cancelToken.subscribe(u),s.signal&&(s.signal.aborted?u():s.signal.addEventListener("abort",u)));const v=h2(s.url);if(v&&rt.protocols.indexOf(v)===-1){r(new oe("Unsupported protocol "+v+":",oe.ERR_BAD_REQUEST,e));return}w.send(a||null)})},x2=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const a=function(c){if(!s){s=!0,i();const u=c instanceof Error?c:this.reason;r.abort(u instanceof oe?u:new fr(u instanceof Error?u.message:u))}};let o=t&&setTimeout(()=>{o=null,a(new oe(`timeout ${t} of ms exceeded`,oe.ETIMEDOUT))},t);const i=()=>{e&&(o&&clearTimeout(o),o=null,e.forEach(c=>{c.unsubscribe?c.unsubscribe(a):c.removeEventListener("abort",a)}),e=null)};e.forEach(c=>c.addEventListener("abort",a));const{signal:l}=r;return l.unsubscribe=()=>E.asap(i),l}},A2=function*(e,t){let n=e.byteLength;if(n{const s=k2(e,t);let a=0,o,i=l=>{o||(o=!0,r&&r(l))};return new ReadableStream({async pull(l){try{const{done:c,value:u}=await s.next();if(c){i(),l.close();return}let f=u.byteLength;if(n){let d=a+=f;n(d)}l.enqueue(new Uint8Array(u))}catch(c){throw i(c),c}},cancel(l){return i(l),s.return()}},{highWaterMark:2})},Aa=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",Xf=Aa&&typeof ReadableStream=="function",O2=Aa&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),Qf=(e,...t)=>{try{return!!e(...t)}catch{return!1}},T2=Xf&&Qf(()=>{let e=!1;const t=new Request(rt.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),ac=64*1024,Eo=Xf&&Qf(()=>E.isReadableStream(new Response("").body)),Js={stream:Eo&&(e=>e.body)};Aa&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!Js[t]&&(Js[t]=E.isFunction(e[t])?n=>n[t]():(n,r)=>{throw new oe(`Response type '${t}' is not supported`,oe.ERR_NOT_SUPPORT,r)})})})(new Response);const L2=async e=>{if(e==null)return 0;if(E.isBlob(e))return e.size;if(E.isSpecCompliantForm(e))return(await new Request(rt.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(E.isArrayBufferView(e)||E.isArrayBuffer(e))return e.byteLength;if(E.isURLSearchParams(e)&&(e=e+""),E.isString(e))return(await O2(e)).byteLength},R2=async(e,t)=>{const n=E.toFiniteNumber(e.getContentLength());return n??L2(t)},P2=Aa&&(async e=>{let{url:t,method:n,data:r,signal:s,cancelToken:a,timeout:o,onDownloadProgress:i,onUploadProgress:l,responseType:c,headers:u,withCredentials:f="same-origin",fetchOptions:d}=Jf(e);c=c?(c+"").toLowerCase():"text";let m=x2([s,a&&a.toAbortSignal()],o),g;const b=m&&m.unsubscribe&&(()=>{m.unsubscribe()});let w;try{if(l&&T2&&n!=="get"&&n!=="head"&&(w=await R2(u,r))!==0){let R=new Request(t,{method:"POST",body:r,duplex:"half"}),$;if(E.isFormData(r)&&($=R.headers.get("content-type"))&&u.setContentType($),R.body){const[K,P]=tc(w,Ys(nc(l)));r=sc(R.body,ac,K,P)}}E.isString(f)||(f=f?"include":"omit");const y="credentials"in Request.prototype;g=new Request(t,{...d,signal:m,method:n.toUpperCase(),headers:u.normalize().toJSON(),body:r,duplex:"half",credentials:y?f:void 0});let v=await fetch(g);const S=Eo&&(c==="stream"||c==="response");if(Eo&&(i||S&&b)){const R={};["status","statusText","headers"].forEach(D=>{R[D]=v[D]});const $=E.toFiniteNumber(v.headers.get("content-length")),[K,P]=i&&tc($,Ys(nc(i),!0))||[];v=new Response(sc(v.body,ac,K,()=>{P&&P(),b&&b()}),R)}c=c||"text";let C=await Js[E.findKey(Js,c)||"text"](v,e);return!S&&b&&b(),await new Promise((R,$)=>{Gf(R,$,{data:C,headers:st.from(v.headers),status:v.status,statusText:v.statusText,config:e,request:g})})}catch(y){throw b&&b(),y&&y.name==="TypeError"&&/fetch/i.test(y.message)?Object.assign(new oe("Network Error",oe.ERR_NETWORK,e,g),{cause:y.cause||y}):oe.from(y,y&&y.code,e,g)}}),So={http:qg,xhr:S2,fetch:P2};E.forEach(So,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const oc=e=>`- ${e}`,M2=e=>E.isFunction(e)||e===null||e===!1,Zf={getAdapter:e=>{e=E.isArray(e)?e:[e];const{length:t}=e;let n,r;const s={};for(let a=0;a`adapter ${i} `+(l===!1?"is not supported by the environment":"is not available in the build"));let o=t?a.length>1?`since : -`+a.map(oc).join(` -`):" "+oc(a[0]):"as no adapter specified";throw new oe("There is no suitable adapter to dispatch the request "+o,"ERR_NOT_SUPPORT")}return r},adapters:So};function Ga(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new fr(null,e)}function ic(e){return Ga(e),e.headers=st.from(e.headers),e.data=qa.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Zf.getAdapter(e.adapter||ns.adapter)(e).then(function(r){return Ga(e),r.data=qa.call(e,e.transformResponse,r),r.headers=st.from(r.headers),r},function(r){return qf(r)||(Ga(e),r&&r.response&&(r.response.data=qa.call(e,e.transformResponse,r.response),r.response.headers=st.from(r.response.headers))),Promise.reject(r)})}const ed="1.7.7",wi={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{wi[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const lc={};wi.transitional=function(t,n,r){function s(a,o){return"[Axios v"+ed+"] Transitional option '"+a+"'"+o+(r?". "+r:"")}return(a,o,i)=>{if(t===!1)throw new oe(s(o," has been removed"+(n?" in "+n:"")),oe.ERR_DEPRECATED);return n&&!lc[o]&&(lc[o]=!0,console.warn(s(o," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(a,o,i):!0}};function I2(e,t,n){if(typeof e!="object")throw new oe("options must be an object",oe.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const a=r[s],o=t[a];if(o){const i=e[a],l=i===void 0||o(i,a,e);if(l!==!0)throw new oe("option "+a+" must be "+l,oe.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new oe("Unknown option "+a,oe.ERR_BAD_OPTION)}}const xo={assertOptions:I2,validators:wi},Kt=xo.validators;class Sn{constructor(t){this.defaults=t,this.interceptors={request:new Zl,response:new Zl}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s;Error.captureStackTrace?Error.captureStackTrace(s={}):s=new Error;const a=s.stack?s.stack.replace(/^.+\n/,""):"";try{r.stack?a&&!String(r.stack).endsWith(a.replace(/^.+\n.+\n/,""))&&(r.stack+=` -`+a):r.stack=a}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=xn(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:a}=n;r!==void 0&&xo.assertOptions(r,{silentJSONParsing:Kt.transitional(Kt.boolean),forcedJSONParsing:Kt.transitional(Kt.boolean),clarifyTimeoutError:Kt.transitional(Kt.boolean)},!1),s!=null&&(E.isFunction(s)?n.paramsSerializer={serialize:s}:xo.assertOptions(s,{encode:Kt.function,serialize:Kt.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let o=a&&E.merge(a.common,a[n.method]);a&&E.forEach(["delete","get","head","post","put","patch","common"],g=>{delete a[g]}),n.headers=st.concat(o,a);const i=[];let l=!0;this.interceptors.request.forEach(function(b){typeof b.runWhen=="function"&&b.runWhen(n)===!1||(l=l&&b.synchronous,i.unshift(b.fulfilled,b.rejected))});const c=[];this.interceptors.response.forEach(function(b){c.push(b.fulfilled,b.rejected)});let u,f=0,d;if(!l){const g=[ic.bind(this),void 0];for(g.unshift.apply(g,i),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 o=new Promise(i=>{r.subscribe(i),a=i}).then(s);return o.cancel=function(){r.unsubscribe(a)},o},t(function(a,o,i){r.reason||(r.reason=new fr(a,o,i),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)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new _i(function(s){t=s}),cancel:t}}}function N2(e){return function(n){return e.apply(null,n)}}function $2(e){return E.isObject(e)&&e.isAxiosError===!0}const Ao={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(Ao).forEach(([e,t])=>{Ao[t]=e});function td(e){const t=new Sn(e),n=Pf(Sn.prototype.request,t);return E.extend(n,Sn.prototype,t,{allOwnKeys:!0}),E.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return td(xn(e,s))},n}const Re=td(ns);Re.Axios=Sn;Re.CanceledError=fr;Re.CancelToken=_i;Re.isCancel=qf;Re.VERSION=ed;Re.toFormData=xa;Re.AxiosError=oe;Re.Cancel=Re.CanceledError;Re.all=function(t){return Promise.all(t)};Re.spread=N2;Re.isAxiosError=$2;Re.mergeConfig=xn;Re.AxiosHeaders=st;Re.formToJSON=e=>Wf(E.isHTMLForm(e)?new FormData(e):e);Re.getAdapter=Zf.getAdapter;Re.HttpStatusCode=Ao;Re.default=Re;function H2(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 F2(e,t,n){let r=e.split("|");const s=D2(r,t);if(s!==null)return s.trim();r=V2(r);const a=H2(n,t);return r.length===1||!r[a]?r[0]:r[a]}function D2(e,t){for(const n of e){let r=z2(n,t);if(r!==null)return r}return null}function z2(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,o]=r.split(",");if(o==="*"&&t>=parseFloat(a))return s;if(a==="*"&&t<=parseFloat(o))return s;if(t>=parseFloat(a)&&t<=parseFloat(o))return s}return parseFloat(r)===t?s:null}function V2(e){return e.map(t=>t.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}const Ya=(e,t,n={})=>{try{return e(t)}catch{return n}},Ja=async(e,t={})=>{try{return(await e).default||t}catch{return t}},j2={BASE_URL:"./",DEV:!1,MODE:"production",PROD:!0,SSR:!1,VITE_LARAVEL_VUE_I18N_HAS_PHP:"true"};function cc(e){return e||B2()||U2()}function B2(){return typeof process<"u"}function U2(){return typeof j2<"u"}const Vn=typeof window>"u";let $n=null;const uc={lang:!Vn&&document.documentElement.lang?document.documentElement.lang.replace("-","_"):null,fallbackLang:"en",fallbackMissingTranslations:!1,resolve:e=>new Promise(t=>t({default:{}})),onLoad:e=>{}},K2={shared:!0};function fc(e,t=!1){return Ze.getSharedInstance().loadLanguageAsync(e,t)}function Je(e,t={}){return Ze.getSharedInstance().trans(e,t)}function Eb(){return Ze.getSharedInstance().getActiveLanguage()}const W2={install(e,t={}){t={...K2,...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=$t({}),this.fallbackMessages=$t({}),this.reset=()=>{Ze.loaded=[],this.options=uc;for(const[n]of Object.entries(this.activeMessages))this.activeMessages[n]=null;this===$n&&($n=null)},this.options={...uc,...t},this.options.fallbackMissingTranslations?this.loadFallbackLanguage():this.load()}setOptions(t={},n=!1){return this.options={...this.options,...t},n&&this.load(),this}load(){this[Vn?"loadLanguage":"loadLanguageAsync"](this.getActiveLanguage())}loadFallbackLanguage(){if(!Vn){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(o=>o.lang===t);return s?Promise.resolve(this.setLanguage(s)):new Promise((o,i)=>{this.abortController.signal.addEventListener("abort",()=>{o()}),this.resolveLangAsync(this.options.resolve,t).then(({default:l})=>{o(this.applyLanguage(t,l,n,this.loadLanguageAsync))})})}resolveLang(t,n,r={}){return Object.keys(r).length||(r=Ya(t,n)),cc(Vn)?{default:{...r,...Ya(t,`php_${n}`)}}:{default:r}}async resolveLangAsync(t,n){let r=Ya(t,n);if(!(r instanceof Promise))return this.resolveLang(t,n,r);if(cc(Vn)){const s=await Ja(t(`php_${n}`)),a=await Ja(r);return new Promise(o=>o({default:{...s,...a}}))}return new Promise(async s=>s({default:await Ja(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,o=>o==="-"?"_":"-"),!0,!0);if(t!==this.options.fallbackLang)return s.call(this,this.options.fallbackLang,!1,!0)}const a={lang:t,messages:n};return this.addLoadedLang(a),this.setLanguage(a)}applyFallbackLanguage(t,n){for(const[r,s]of Object.entries(n))this.fallbackMessages[r]=s;this.addLoadedLang({lang:this.options.fallbackLang,messages:n})}addLoadedLang(t){const n=Ze.loaded.findIndex(r=>r.lang===t.lang);if(n!==-1){Ze.loaded[n]=t;return}Ze.loaded.push(t)}setLanguage({lang:t,messages:n}){Vn||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.isValid(n[r])||this.activeMessages[r]===r)&&(this.activeMessages[r]=s);for(const[r]of Object.entries(this.activeMessages))!this.isValid(n[r])&&!this.isValid(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 si(()=>{let r=this.findTranslation(t);this.isValid(r)||(r=this.findTranslation(t.replace(/\//g,"."))),this.activeMessages[t]=this.isValid(r)?r:t}),se(()=>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(),se(()=>this.makeReplacements(F2(s.value,n,this.options.lang),r))}findTranslation(t){if(this.isValid(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 $t(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}isValid(t){return t!=null}static getSharedInstance(t,n=!1){return($n==null?void 0:$n.setOptions(t,n))||($n=new Ze(t))}}Ze.loaded=[];const{notify:Hn}=sf(),wt=es({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){rr.push({name:"404"})},error(e){this.parseError(e),rr.push({name:"genericError"})},info(e){Hn({type:"is-info",...e})},success(e){Hn({type:"is-success",...e})},warn(e){Hn({type:"is-warning",...e})},alert(e){Hn({type:"is-danger",...e})},action(e){Hn({type:"is-dark",...e})},clear(){Hn({clean:!0})}}}),Pn=(e="api")=>{let t;const n=window.appConfig.subdirectory;e==="web"?t=n+"/":t=n+"/api/v1";const r=Re.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 Re.get("/refresh-csrf"),r.request(a)):(s.response.status===418&&Ge().logout({kicked:!0}),s.response&&[407].includes(s.response.status)?(wt().error(s),new Promise(()=>{})):s.config.hasOwnProperty("returnError")&&s.config.returnError===!0||(s.response&&[401].includes(s.response.status)&&Ge().tossOut(),s.response.status===422)?Promise.reject(s):s.response.status===404?(wt().notFound(),new Promise(()=>{})):(wt().error(s),new Promise(()=>{})))}),r},q2=Pn("web"),G2=Pn("api"),nd={logout(e={}){return q2.get("/user/logout",{...e})},async getCurrentUser(e={}){return G2.get("/user",{...e})}},At=Pn("api"),vs=Pn("web"),Y2={getPreferences(e={}){return At.get("/user/preferences",{...e})},updatePreference(e,t,n={}){return At.put("/user/preferences/"+e,{value:t},{...n})},getWebauthnDevices(e={}){return vs.get("/webauthn/credentials",{...e})},revokeWebauthnDevice(e,t={}){return vs.delete("/webauthn/credentials/"+e,{...t})},getPersonalAccessTokens(e={}){return vs.get("/oauth/personal-access-tokens",{...e})},deletePersonalAccessToken(e,t={}){return vs.delete("/oauth/personal-access-tokens/"+e,{...t})},getAll(e={}){return At.get("/users",{...e})},getById(e,t={}){return At.get("/users/"+e,{...t})},resetPassword(e,t={}){return At.patch("/users/"+e+"/password/reset",{},{...t})},delete(e,t={}){return At.delete("/users/"+e,{...t})},promote(e,t,n={}){return At.patch("/users/"+e+"/promote",t,{...n})},revokePATs(e,t={}){return At.delete("/users/"+e+"/pats",{...t})},revokeWebauthnCredentials(e,t={}){return At.delete("/users/"+e+"/credentials",{...t})},getauthentications(e,t=12,n,r={}){return At.get("/users/"+e+"/authentications?period="+t+(n?"&limit="+n:""),{...r})}};function jn(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 Sb(e,t=!1){const n=Ge();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 Be=Pn("api"),yr={getAll(e=!1,t={}){return Be.get("/twofaccounts"+(e?"?withOtp=1":""),{...t})},getByIds(e,t=!1,n={}){return Be.get("/twofaccounts?ids="+e+(t?"&withOtp=1":""),{...n})},get(e,t={}){return Be.get("/twofaccounts/"+e,{...t})},preview(e,t={}){return Be.post("/twofaccounts/preview",{uri:e},{...t})},storeFromUri(e,t={}){return Be.post("/twofaccounts",{uri:e},{...t})},getLogo(e,t={}){return Be.post("/icons/default",{service:e},{...t})},deleteIcon(e,t={}){return Be.delete("/icons/"+e,{...t})},getOtpById(e,t={}){return Be.get("/twofaccounts/"+e+"/otp",{...t})},getOtpByUri(e,t={}){return Be.post("/twofaccounts/otp",{uri:e},{...t})},getOtpByParams(e,t={}){return Be.post("/twofaccounts/otp",e,{...t})},withdraw(e,t={}){return Be.patch("/twofaccounts/withdraw?ids="+e.join(),{...t})},saveOrder(e,t={}){return Be.post("/twofaccounts/reorder",{orderedIds:e},{...t})},batchDelete(e,t={}){return Be.delete("/twofaccounts?ids="+e,{...t})},export(e,t,n={}){return Be.get("/twofaccounts/export?ids="+e+(t?"&otpauth=1":""),{...n})},getQrcode(e,t={}){return Be.get("/twofaccounts/"+e+"/qrcode",{...t})},migrate(e,t={}){return Be.post("/twofaccounts/migration",{payload:e,withSecret:!0},{...t})},count(e={}){return Be.get("/twofaccounts/count",{...e})}};var br=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},rd={exports:{}};(function(e,t){(function(n,r){r()})(br,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 o=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof br=="object"&&br.global===br?br:void 0,i=o.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),l=o.saveAs||(typeof window!="object"||window!==o?function(){}:"download"in HTMLAnchorElement.prototype&&!i?function(c,u,f){var d=o.URL||o.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(o.HTMLElement)||o.safari,b=/CriOS\/[\d]+/.test(navigator.userAgent);if((b||m&&g||i)&&typeof FileReader<"u"){var w=new FileReader;w.onloadend=function(){var S=w.result;S=b?S:S.replace(/^data:[^;]*;/,"data:attachment/file;"),d?d.location.href=S:location=S,d=null},w.readAsDataURL(c)}else{var y=o.URL||o.webkitURL,v=y.createObjectURL(c);d?d.location=v:location.href=v,d=null,setTimeout(function(){y.revokeObjectURL(v)},4e4)}});o.saveAs=l.saveAs=l,e.exports=l})})(rd);var dc=rd.exports;const sd=es({id:"twofaccounts",state:()=>({items:[],selectedIds:[],filter:"",backendWasNewer:!1,fetchedOn:null}),getters:{filtered(e){const t=Ge();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 yr.getAll(!Ge().preferences.getOtpOnRequest).then(r=>{e&&(this.backendWasNewer=r.data.length!==this.items.length,this.items.forEach(s=>{let a=r.data.find(o=>o.id===s.id);if(a==null){this.backendWasNewer=!0;return}for(const o in s)if(o!=="otp"&&s[o]!=a[o]){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 yr.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(),wt().success({text:Je("twofaccounts.accounts_deleted")})})},export(e="2fauth"){e=="otpauth"?yr.export(this.selectedIds.join(),!0).then(t=>{let n=[];t.data.data.forEach(s=>{n.push(s.uri)});var r=new Blob([n.join(` -`)],{type:"text/plain;charset=utf-8"});dc.saveAs.saveAs(r,"2fauth_export_otpauth.txt")}):yr.export(this.selectedIds.join(),!1,{responseType:"blob"}).then(t=>{var n=new Blob([t.data],{type:"application/json;charset=utf-8"});dc.saveAs.saveAs(n,"2fauth_export.json")})},saveOrder(){yr.saveOrder(this.orderedIds)},sortAsc(){this.items.sort(function(e,t){return Ge().preferences.sortCaseSensitive?e.service.normalize("NFD").replace(/[\u0300-\u036f]/g,"")>t.service.normalize("NFD").replace(/[\u0300-\u036f]/g,"")?1:-1:e.service.localeCompare(t.service,Ge().preferences.lang)}),this.saveOrder()},sortDesc(){this.items.sort(function(e,t){return Ge().preferences.sortCaseSensitive?e.service.normalize("NFD").replace(/[\u0300-\u036f]/g,"")t.period==e).map(t=>t.id)}}}),ys=Pn("api"),pc={getAll(){return ys.get("groups")},get(e,t={}){return ys.get("/groups/"+e,{...t})},assign(e,t,n={}){return ys.post("/groups/"+t+"/assign",{ids:e},{...n})},delete(e,t={}){return ys.delete("/groups/"+e,{...t})}},J2=es({id:"groups",state:()=>({items:[],fetchedOn:null}),getters:{current(e){const t=e.items.find(n=>n.id===parseInt(Ge().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,wt().success({text:Je("groups.group_name_saved")})):(this.items.push(e),wt().success({text:Je("groups.group_successfully_created")}))},async fetch(){Math.floor(Date.now()-this.fetchedOn)>2e3&&(this.fetchedOn=Date.now(),await pc.getAll().then(n=>{this.items=n.data}))},async delete(e){const t=Ge();confirm(Je("groups.confirm.delete"))&&await pc.delete(e).then(n=>{this.items=this.items.filter(r=>r.id!==e),wt().success({text:Je("groups.group_successfully_deleted")}),parseInt(t.preferences.activeGroup)===e&&(t.preferences.activeGroup=0)})}}}),Ge=es({id:"user",state:()=>({id:void 0,name:void 0,email:void 0,oauth_provider:void 0,authenticated_by_proxy: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=sd(),t=J2();this.isAuthenticated?(await e.fetch(),t.fetch()):(e.$reset(),t.$reset())},logout(e={}){const{kicked:t}=e,n=wt();if(this.$2fauth.config.proxyAuth)if(this.$2fauth.config.proxyLogoutUrl)location.assign(this.$2fauth.config.proxyLogoutUrl);else return!1;else nd.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(),rr.push({name:"login"})},applyTheme(){const e=kf({attribute:"data-theme"});e.value=this.preferences.theme=="system"?"auto":this.preferences.theme},applyLanguage(){const{isSupported:e,language:t}=Cf();fc(e?this.preferences.lang=="browser"?t.value.slice(0,2):this.preferences.lang:"en")},applyUserPrefs(){this.applyTheme(),this.applyLanguage()},refreshPreferences(){Y2.getPreferences({returnError:!0}).then(e=>{e.data.forEach(t=>{this.preferences[t.key]=t.value})}).catch(e=>{wt().alert({text:Je("errors.data_cannot_be_refreshed_from_server")})})}}}),X2=Object.freeze(Object.defineProperty({__proto__:null,useUserStore:Ge},Symbol.toStringTag,{value:"Module"})),Xa=Pn("api"),Q2={getAll(e={}){return Xa.get("/settings",{...e})},update(e,t,n={}){return Xa.put("/settings/"+e,{value:t},{...n})},delete(e,t={}){return Xa.delete("/settings/"+e,{...t})}},ad=es({id:"appSettings",state:()=>({...window.appSettings}),actions:{async fetch(){Q2.getAll({returnError:!0}).then(e=>{e.data.forEach(t=>{this[t.key]=t.value})}).catch(e=>{wt().alert({text:Je("errors.data_cannot_be_refreshed_from_server")})})}}});async function Te({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r;s.isAuthenticated||await nd.getCurrentUser({returnError:!0}).then(async a=>{const o=a.data;await s.loginAs({id:o.id,name:o.name,email:o.email,oauth_provider:o.oauth_provider,authenticated_by_proxy:o.authenticated_by_proxy,preferences:o.preferences,isAdmin:o.is_admin})}).catch(a=>{}),s.isAuthenticated?n():t({name:"login"})}async function Fn({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r,{notify:a}=r;if(s.isAdmin)n();else{let o=new Error("unauthorized");o.response.status=403,a.error(o)}}async function Z2({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 e0({to:e,next:t,nextMiddleware:n,stores:r}){const{notify:s}=r;s.err==null&&!e.query.err?t({name:"accounts"}):n()}async function t0({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=Af(s.$2fauth.prefix+"returnTo","accounts");a.value=e.name,n()}async function Dn({to:e,next:t,nextMiddleware:n,stores:r}){const{appSettings:s}=r;s.$2fauth.config.proxyAuth?t({name:"accounts"}):n()}const rr=N1({history:f1(window.appConfig.subdirectory?window.appConfig.subdirectory:"/"),routes:[{path:"/start",name:"start",component:()=>Z(()=>import("./Start-DbpLb5Lz.js"),__vite__mapDeps([0,1,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0}},{path:"/capture",name:"capture",component:()=>Z(()=>import("./Capture-Bb1sXPdR.js"),__vite__mapDeps([3,1,4,5,6,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0}},{path:"/accounts",name:"accounts",component:()=>Z(()=>import("./Accounts-DNDVqAqR.js"),__vite__mapDeps([7,8,4,5,9,2]),import.meta.url),meta:{middlewares:[Te,Z2,We],watchedByKicker:!0},alias:"/"},{path:"/account/create",name:"createAccount",component:()=>Z(()=>import("./CreateUpdate-Dr-XnMyq.js"),__vite__mapDeps([10,1,8,4,5,6,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0}},{path:"/account/import",name:"importAccounts",component:()=>Z(()=>import("./Import-BZd8Em5d.js"),__vite__mapDeps([11,1,8,4,5,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0}},{path:"/account/:twofaccountId/edit",name:"editAccount",component:()=>Z(()=>import("./CreateUpdate-Dr-XnMyq.js"),__vite__mapDeps([10,1,8,4,5,6,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0},props:!0},{path:"/account/:twofaccountId/qrcode",name:"showQRcode",component:()=>Z(()=>import("./QRcode-CsChMItc.js"),__vite__mapDeps([12,4,5]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0}},{path:"/groups",name:"groups",component:()=>Z(()=>import("./Groups-BMQ6YoNp.js"),__vite__mapDeps([13,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0},props:!0},{path:"/group/create",name:"createGroup",component:()=>Z(()=>import("./CreateUpdate-3ZZroKyC.js"),__vite__mapDeps([14,1,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0}},{path:"/group/:groupId/edit",name:"editGroup",component:()=>Z(()=>import("./CreateUpdate-3ZZroKyC.js"),__vite__mapDeps([14,1,2]),import.meta.url),meta:{middlewares:[Te,We],watchedByKicker:!0},props:!0},{path:"/settings/options",name:"settings.options",component:()=>Z(()=>import("./Options--WfZObkz.js"),__vite__mapDeps([15,16]),import.meta.url),meta:{middlewares:[Te],watchedByKicker:!0,showAbout:!0}},{path:"/settings/account",name:"settings.account",component:()=>Z(()=>import("./Account-Bgfza_Db.js"),__vite__mapDeps([17,1,16]),import.meta.url),meta:{middlewares:[Te],watchedByKicker:!0,showAbout:!0}},{path:"/settings/oauth",name:"settings.oauth.tokens",component:()=>Z(()=>import("./OAuth-C-a66RBn.js"),__vite__mapDeps([18,1,16,4,5]),import.meta.url),meta:{middlewares:[Te],watchedByKicker:!0,showAbout:!0,props:!0}},{path:"/settings/webauthn/:credentialId/edit",name:"settings.webauthn.editCredential",component:()=>Z(()=>import("./Edit-BM1fyA7o.js"),__vite__mapDeps([19,1]),import.meta.url),meta:{middlewares:[Te],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/settings/webauthn",name:"settings.webauthn.devices",component:()=>Z(()=>import("./WebAuthn-DBHOBJJ_.js"),__vite__mapDeps([20,16,21,4,5]),import.meta.url),meta:{middlewares:[Te],watchedByKicker:!0,showAbout:!0}},{path:"/admin/app",name:"admin.appSetup",component:()=>Z(()=>import("./AppSetup-Dt_jr1xm.js"),__vite__mapDeps([22,23,24,25]),import.meta.url),meta:{middlewares:[Te,Fn],watchedByKicker:!0,showAbout:!0}},{path:"/admin/auth",name:"admin.auth",component:()=>Z(()=>import("./Auth-DmixUfoW.js"),__vite__mapDeps([26,23,24]),import.meta.url),meta:{middlewares:[Te,Fn],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users",name:"admin.users",component:()=>Z(()=>import("./Users-Bxf3ihka.js"),__vite__mapDeps([27,23,4,5,9]),import.meta.url),meta:{middlewares:[Te,Fn],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users/create",name:"admin.createUser",component:()=>Z(()=>import("./Create-DbNLDpJC.js"),__vite__mapDeps([28,1]),import.meta.url),meta:{middlewares:[Te,Fn],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users/:userId/manage",name:"admin.manageUser",component:()=>Z(()=>import("./Manage-BdbniM-Y.js"),__vite__mapDeps([29,25,30,9,4,5,2]),import.meta.url),meta:{middlewares:[Te,Fn],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/admin/logs/:userId/access",name:"admin.logs.access",component:()=>Z(()=>import("./Access-B2ymsfLm.js"),__vite__mapDeps([31,30,9,4,5,2]),import.meta.url),meta:{middlewares:[Te,Fn],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/login",name:"login",component:()=>Z(()=>import("./Login-lFqZsVye.js"),__vite__mapDeps([32,1,21]),import.meta.url),meta:{middlewares:[Dn,We],showAbout:!0}},{path:"/register",name:"register",component:()=>Z(()=>import("./Register-hMMU0w6y.js"),__vite__mapDeps([33,1,21]),import.meta.url),meta:{middlewares:[Dn,t0,We],showAbout:!0}},{path:"/password/request",name:"password.request",component:()=>Z(()=>import("./RequestReset-CO9hDqHp.js"),__vite__mapDeps([34,1]),import.meta.url),meta:{middlewares:[Dn,We],showAbout:!0}},{path:"/user/password/reset",name:"password.reset",component:()=>Z(()=>import("./Reset-BohGQRDz.js"),__vite__mapDeps([35,1]),import.meta.url),meta:{middlewares:[Dn,We],showAbout:!0}},{path:"/webauthn/lost",name:"webauthn.lost",component:()=>Z(()=>import("./RequestReset-CO9hDqHp.js"),__vite__mapDeps([34,1]),import.meta.url),meta:{middlewares:[Dn,We],showAbout:!0}},{path:"/webauthn/recover",name:"webauthn.recover",component:()=>Z(()=>import("./Recover-CMvlsTFQ.js"),__vite__mapDeps([36,1]),import.meta.url),meta:{middlewares:[Dn,We],showAbout:!0}},{path:"/about",name:"about",component:()=>Z(()=>import("./About-BFfeZAkk.js"),[],import.meta.url),meta:{showAbout:!0,watchedByKicker:!0}},{path:"/error",name:"genericError",component:()=>Z(()=>import("./Error-DAFLfN3j.js"),[],import.meta.url),meta:{middlewares:[e0],watchedByKicker:!0}},{path:"/404",name:"404",component:()=>Z(()=>import("./Error-DAFLfN3j.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>Z(()=>import("./Error-DAFLfN3j.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0}]});rr.beforeEach((e,t,n)=>{const r=e.meta.middlewares,s=Ge(),a=sd(),o=ad(),i=wt(),u={to:e,from:t,next:n,nextMiddleware:{},stores:{user:s,twofaccounts:a,appSettings:o,notify:i}};if(!r)return n();r[0]({...u,nextMiddleware:Of(u,r,1)})});rr.afterEach((e,t)=>{e.meta.title=Je("titles."+e.name),document.title=e.meta.title});function mc(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 j(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],o=(a.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(o)>-1&&(r=a)}return xe.head.insertBefore(t,r),e}}var C0="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Gr(){for(var e=12,t="";e-- >0;)t+=C0[Math.random()*62|0];return t}function dr(e){for(var t=[],n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function Ci(e){return e.classList?dr(e.classList):(e.getAttribute("class")||"").split(" ").filter(function(t){return t})}function vd(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function O0(e){return Object.keys(e||{}).reduce(function(t,n){return t+"".concat(n,'="').concat(vd(e[n]),'" ')},"").trim()}function ka(e){return Object.keys(e||{}).reduce(function(t,n){return t+"".concat(n,": ").concat(e[n].trim(),";")},"")}function Oi(e){return e.size!==Ot.size||e.x!==Ot.x||e.y!==Ot.y||e.rotate!==Ot.rotate||e.flipX||e.flipY}function T0(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,") "),o="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),i="rotate(".concat(t.rotate," 0 0)"),l={transform:"".concat(a," ").concat(o," ").concat(i)},c={transform:"translate(".concat(r/2*-1," -256)")};return{outer:s,inner:l,path:c}}function L0(e){var t=e.transform,n=e.width,r=n===void 0?Co:n,s=e.height,a=s===void 0?Co:s,o=e.startCentered,i=o===void 0?!1:o,l="";return i&&ud?l+="translate(".concat(t.x/Wt-r/2,"em, ").concat(t.y/Wt-a/2,"em) "):i?l+="translate(calc(-50% + ".concat(t.x/Wt,"em), calc(-50% + ").concat(t.y/Wt,"em)) "):l+="translate(".concat(t.x/Wt,"em, ").concat(t.y/Wt,"em) "),l+="scale(".concat(t.size/Wt*(t.flipX?-1:1),", ").concat(t.size/Wt*(t.flipY?-1:1),") "),l+="rotate(".concat(t.rotate,"deg) "),l}var R0=`:root, :host { - --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid"; - --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular"; - --fa-font-light: normal 300 1em/1 "Font Awesome 6 Light"; - --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin"; - --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone"; - --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp"; - --fa-font-sharp-regular: normal 400 1em/1 "Font Awesome 6 Sharp"; - --fa-font-sharp-light: normal 300 1em/1 "Font Awesome 6 Sharp"; - --fa-font-sharp-thin: normal 100 1em/1 "Font Awesome 6 Sharp"; - --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"; -} - -svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa { - overflow: visible; - box-sizing: content-box; -} - -.svg-inline--fa { - display: var(--fa-display, inline-block); - height: 1em; - overflow: visible; - vertical-align: -0.125em; -} -.svg-inline--fa.fa-2xs { - vertical-align: 0.1em; -} -.svg-inline--fa.fa-xs { - vertical-align: 0em; -} -.svg-inline--fa.fa-sm { - vertical-align: -0.0714285705em; -} -.svg-inline--fa.fa-lg { - vertical-align: -0.2em; -} -.svg-inline--fa.fa-xl { - vertical-align: -0.25em; -} -.svg-inline--fa.fa-2xl { - vertical-align: -0.3125em; -} -.svg-inline--fa.fa-pull-left { - margin-right: var(--fa-pull-margin, 0.3em); - width: auto; -} -.svg-inline--fa.fa-pull-right { - margin-left: var(--fa-pull-margin, 0.3em); - width: auto; -} -.svg-inline--fa.fa-li { - width: var(--fa-li-width, 2em); - top: 0.25em; -} -.svg-inline--fa.fa-fw { - width: var(--fa-fw-width, 1.25em); -} - -.fa-layers svg.svg-inline--fa { - bottom: 0; - left: 0; - margin: auto; - position: absolute; - right: 0; - top: 0; -} - -.fa-layers-counter, .fa-layers-text { - display: inline-block; - position: absolute; - text-align: center; -} - -.fa-layers { - display: inline-block; - height: 1em; - position: relative; - text-align: center; - vertical-align: -0.125em; - width: 1em; -} -.fa-layers svg.svg-inline--fa { - -webkit-transform-origin: center center; - transform-origin: center center; -} - -.fa-layers-text { - left: 50%; - top: 50%; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - -webkit-transform-origin: center center; - transform-origin: center center; -} - -.fa-layers-counter { - background-color: var(--fa-counter-background-color, #ff253a); - border-radius: var(--fa-counter-border-radius, 1em); - box-sizing: border-box; - color: var(--fa-inverse, #fff); - line-height: var(--fa-counter-line-height, 1); - max-width: var(--fa-counter-max-width, 5em); - min-width: var(--fa-counter-min-width, 1.5em); - overflow: hidden; - padding: var(--fa-counter-padding, 0.25em 0.5em); - right: var(--fa-right, 0); - text-overflow: ellipsis; - top: var(--fa-top, 0); - -webkit-transform: scale(var(--fa-counter-scale, 0.25)); - transform: scale(var(--fa-counter-scale, 0.25)); - -webkit-transform-origin: top right; - transform-origin: top right; -} - -.fa-layers-bottom-right { - bottom: var(--fa-bottom, 0); - right: var(--fa-right, 0); - top: auto; - -webkit-transform: scale(var(--fa-layers-scale, 0.25)); - transform: scale(var(--fa-layers-scale, 0.25)); - -webkit-transform-origin: bottom right; - transform-origin: bottom right; -} - -.fa-layers-bottom-left { - bottom: var(--fa-bottom, 0); - left: var(--fa-left, 0); - right: auto; - top: auto; - -webkit-transform: scale(var(--fa-layers-scale, 0.25)); - transform: scale(var(--fa-layers-scale, 0.25)); - -webkit-transform-origin: bottom left; - transform-origin: bottom left; -} - -.fa-layers-top-right { - top: var(--fa-top, 0); - right: var(--fa-right, 0); - -webkit-transform: scale(var(--fa-layers-scale, 0.25)); - transform: scale(var(--fa-layers-scale, 0.25)); - -webkit-transform-origin: top right; - transform-origin: top right; -} - -.fa-layers-top-left { - left: var(--fa-left, 0); - right: auto; - top: var(--fa-top, 0); - -webkit-transform: scale(var(--fa-layers-scale, 0.25)); - transform: scale(var(--fa-layers-scale, 0.25)); - -webkit-transform-origin: top left; - transform-origin: top left; -} - -.fa-1x { - font-size: 1em; -} - -.fa-2x { - font-size: 2em; -} - -.fa-3x { - font-size: 3em; -} - -.fa-4x { - font-size: 4em; -} - -.fa-5x { - font-size: 5em; -} - -.fa-6x { - font-size: 6em; -} - -.fa-7x { - font-size: 7em; -} - -.fa-8x { - font-size: 8em; -} - -.fa-9x { - font-size: 9em; -} - -.fa-10x { - font-size: 10em; -} - -.fa-2xs { - font-size: 0.625em; - line-height: 0.1em; - vertical-align: 0.225em; -} - -.fa-xs { - font-size: 0.75em; - line-height: 0.0833333337em; - vertical-align: 0.125em; -} - -.fa-sm { - font-size: 0.875em; - line-height: 0.0714285718em; - vertical-align: 0.0535714295em; -} - -.fa-lg { - font-size: 1.25em; - line-height: 0.05em; - vertical-align: -0.075em; -} - -.fa-xl { - font-size: 1.5em; - line-height: 0.0416666682em; - vertical-align: -0.125em; -} - -.fa-2xl { - font-size: 2em; - line-height: 0.03125em; - vertical-align: -0.1875em; -} - -.fa-fw { - text-align: center; - width: 1.25em; -} - -.fa-ul { - list-style-type: none; - margin-left: var(--fa-li-margin, 2.5em); - padding-left: 0; -} -.fa-ul > li { - position: relative; -} - -.fa-li { - left: calc(var(--fa-li-width, 2em) * -1); - position: absolute; - text-align: center; - width: var(--fa-li-width, 2em); - line-height: inherit; -} - -.fa-border { - border-color: var(--fa-border-color, #eee); - border-radius: var(--fa-border-radius, 0.1em); - border-style: var(--fa-border-style, solid); - border-width: var(--fa-border-width, 0.08em); - padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); -} - -.fa-pull-left { - float: left; - margin-right: var(--fa-pull-margin, 0.3em); -} - -.fa-pull-right { - float: right; - margin-left: var(--fa-pull-margin, 0.3em); -} - -.fa-beat { - -webkit-animation-name: fa-beat; - animation-name: fa-beat; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); - animation-timing-function: var(--fa-animation-timing, ease-in-out); -} - -.fa-bounce { - -webkit-animation-name: fa-bounce; - animation-name: fa-bounce; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); -} - -.fa-fade { - -webkit-animation-name: fa-fade; - animation-name: fa-fade; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); -} - -.fa-beat-fade { - -webkit-animation-name: fa-beat-fade; - animation-name: fa-beat-fade; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); -} - -.fa-flip { - -webkit-animation-name: fa-flip; - animation-name: fa-flip; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); - animation-timing-function: var(--fa-animation-timing, ease-in-out); -} - -.fa-shake { - -webkit-animation-name: fa-shake; - animation-name: fa-shake; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, linear); - animation-timing-function: var(--fa-animation-timing, linear); -} - -.fa-spin { - -webkit-animation-name: fa-spin; - animation-name: fa-spin; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 2s); - animation-duration: var(--fa-animation-duration, 2s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, linear); - animation-timing-function: var(--fa-animation-timing, linear); -} - -.fa-spin-reverse { - --fa-animation-direction: reverse; -} - -.fa-pulse, -.fa-spin-pulse { - -webkit-animation-name: fa-spin; - animation-name: fa-spin; - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); - animation-timing-function: var(--fa-animation-timing, steps(8)); -} - -@media (prefers-reduced-motion: reduce) { - .fa-beat, -.fa-bounce, -.fa-fade, -.fa-beat-fade, -.fa-flip, -.fa-pulse, -.fa-shake, -.fa-spin, -.fa-spin-pulse { - -webkit-animation-delay: -1ms; - animation-delay: -1ms; - -webkit-animation-duration: 1ms; - animation-duration: 1ms; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; - -webkit-transition-delay: 0s; - transition-delay: 0s; - -webkit-transition-duration: 0s; - transition-duration: 0s; - } -} -@-webkit-keyframes fa-beat { - 0%, 90% { - -webkit-transform: scale(1); - transform: scale(1); - } - 45% { - -webkit-transform: scale(var(--fa-beat-scale, 1.25)); - transform: scale(var(--fa-beat-scale, 1.25)); - } -} -@keyframes fa-beat { - 0%, 90% { - -webkit-transform: scale(1); - transform: scale(1); - } - 45% { - -webkit-transform: scale(var(--fa-beat-scale, 1.25)); - transform: scale(var(--fa-beat-scale, 1.25)); - } -} -@-webkit-keyframes fa-bounce { - 0% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); - } - 10% { - -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); - } - 30% { - -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); - } - 50% { - -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); - } - 57% { - -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - } - 64% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); - } - 100% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); - } -} -@keyframes fa-bounce { - 0% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); - } - 10% { - -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); - } - 30% { - -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); - } - 50% { - -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); - } - 57% { - -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - } - 64% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); - } - 100% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); - } -} -@-webkit-keyframes fa-fade { - 50% { - opacity: var(--fa-fade-opacity, 0.4); - } -} -@keyframes fa-fade { - 50% { - opacity: var(--fa-fade-opacity, 0.4); - } -} -@-webkit-keyframes fa-beat-fade { - 0%, 100% { - opacity: var(--fa-beat-fade-opacity, 0.4); - -webkit-transform: scale(1); - transform: scale(1); - } - 50% { - opacity: 1; - -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); - transform: scale(var(--fa-beat-fade-scale, 1.125)); - } -} -@keyframes fa-beat-fade { - 0%, 100% { - opacity: var(--fa-beat-fade-opacity, 0.4); - -webkit-transform: scale(1); - transform: scale(1); - } - 50% { - opacity: 1; - -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); - transform: scale(var(--fa-beat-fade-scale, 1.125)); - } -} -@-webkit-keyframes fa-flip { - 50% { - -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); - transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); - } -} -@keyframes fa-flip { - 50% { - -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); - transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); - } -} -@-webkit-keyframes fa-shake { - 0% { - -webkit-transform: rotate(-15deg); - transform: rotate(-15deg); - } - 4% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); - } - 8%, 24% { - -webkit-transform: rotate(-18deg); - transform: rotate(-18deg); - } - 12%, 28% { - -webkit-transform: rotate(18deg); - transform: rotate(18deg); - } - 16% { - -webkit-transform: rotate(-22deg); - transform: rotate(-22deg); - } - 20% { - -webkit-transform: rotate(22deg); - transform: rotate(22deg); - } - 32% { - -webkit-transform: rotate(-12deg); - transform: rotate(-12deg); - } - 36% { - -webkit-transform: rotate(12deg); - transform: rotate(12deg); - } - 40%, 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } -} -@keyframes fa-shake { - 0% { - -webkit-transform: rotate(-15deg); - transform: rotate(-15deg); - } - 4% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); - } - 8%, 24% { - -webkit-transform: rotate(-18deg); - transform: rotate(-18deg); - } - 12%, 28% { - -webkit-transform: rotate(18deg); - transform: rotate(18deg); - } - 16% { - -webkit-transform: rotate(-22deg); - transform: rotate(-22deg); - } - 20% { - -webkit-transform: rotate(22deg); - transform: rotate(22deg); - } - 32% { - -webkit-transform: rotate(-12deg); - transform: rotate(-12deg); - } - 36% { - -webkit-transform: rotate(12deg); - transform: rotate(12deg); - } - 40%, 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } -} -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} -.fa-rotate-90 { - -webkit-transform: rotate(90deg); - transform: rotate(90deg); -} - -.fa-rotate-180 { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); -} - -.fa-rotate-270 { - -webkit-transform: rotate(270deg); - transform: rotate(270deg); -} - -.fa-flip-horizontal { - -webkit-transform: scale(-1, 1); - transform: scale(-1, 1); -} - -.fa-flip-vertical { - -webkit-transform: scale(1, -1); - transform: scale(1, -1); -} - -.fa-flip-both, -.fa-flip-horizontal.fa-flip-vertical { - -webkit-transform: scale(-1, -1); - transform: scale(-1, -1); -} - -.fa-rotate-by { - -webkit-transform: rotate(var(--fa-rotate-angle, none)); - transform: rotate(var(--fa-rotate-angle, none)); -} - -.fa-stack { - display: inline-block; - vertical-align: middle; - height: 2em; - position: relative; - width: 2.5em; -} - -.fa-stack-1x, -.fa-stack-2x { - bottom: 0; - left: 0; - margin: auto; - position: absolute; - right: 0; - top: 0; - z-index: var(--fa-stack-z-index, auto); -} - -.svg-inline--fa.fa-stack-1x { - height: 1em; - width: 1.25em; -} -.svg-inline--fa.fa-stack-2x { - height: 2em; - width: 2.5em; -} - -.fa-inverse { - color: var(--fa-inverse, #fff); -} - -.sr-only, -.fa-sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.sr-only-focusable:not(:focus), -.fa-sr-only-focusable:not(:focus) { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.svg-inline--fa .fa-primary { - fill: var(--fa-primary-color, currentColor); - opacity: var(--fa-primary-opacity, 1); -} - -.svg-inline--fa .fa-secondary { - fill: var(--fa-secondary-color, currentColor); - opacity: var(--fa-secondary-opacity, 0.4); -} - -.svg-inline--fa.fa-swap-opacity .fa-primary { - opacity: var(--fa-secondary-opacity, 0.4); -} - -.svg-inline--fa.fa-swap-opacity .fa-secondary { - opacity: var(--fa-primary-opacity, 1); -} - -.svg-inline--fa mask .fa-primary, -.svg-inline--fa mask .fa-secondary { - fill: black; -} - -.fad.fa-inverse, -.fa-duotone.fa-inverse { - color: var(--fa-inverse, #fff); -}`;function yd(){var e=fd,t=dd,n=W.cssPrefix,r=W.replacementClass,s=R0;if(n!==e||r!==t){var a=new RegExp("\\.".concat(e,"\\-"),"g"),o=new RegExp("\\--".concat(e,"\\-"),"g"),i=new RegExp("\\.".concat(t),"g");s=s.replace(a,".".concat(n,"-")).replace(o,"--".concat(n,"-")).replace(i,".".concat(r))}return s}var wc=!1;function Qa(){W.autoAddCss&&!wc&&(k0(yd()),wc=!0)}var P0={mixout:function(){return{dom:{css:yd,insertCss:Qa}}},hooks:function(){return{beforeDOMElementCreation:function(){Qa()},beforeI2svg:function(){Qa()}}}},Ft=ln||{};Ft[Ht]||(Ft[Ht]={});Ft[Ht].styles||(Ft[Ht].styles={});Ft[Ht].hooks||(Ft[Ht].hooks={});Ft[Ht].shims||(Ft[Ht].shims=[]);var bt=Ft[Ht],bd=[],M0=function e(){xe.removeEventListener("DOMContentLoaded",e),Qs=1,bd.map(function(t){return t()})},Qs=!1;Vt&&(Qs=(xe.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(xe.readyState),Qs||xe.addEventListener("DOMContentLoaded",M0));function I0(e){Vt&&(Qs?setTimeout(e,0):bd.push(e))}function as(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"?vd(e):"<".concat(t," ").concat(O0(r),">").concat(a.map(as).join(""),"")}function _c(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}var Za=function(t,n,r,s){var a=Object.keys(t),o=a.length,i=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 Ec(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 Lo(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,s=r===void 0?!1:r,a=Ec(t);typeof bt.hooks.addPack=="function"&&!s?bt.hooks.addPack(e,Ec(t)):bt.styles[e]=j(j({},bt.styles[e]||{}),a),e==="fas"&&Lo("fa",t)}var As,ks,Cs,Bn=bt.styles,H0=bt.shims,F0=(As={},Fe(As,Ee,Object.values(Wr[Ee])),Fe(As,Oe,Object.values(Wr[Oe])),As),Ti=null,wd={},_d={},Ed={},Sd={},xd={},D0=(ks={},Fe(ks,Ee,Object.keys(Ur[Ee])),Fe(ks,Oe,Object.keys(Ur[Oe])),ks);function z0(e){return~_0.indexOf(e)}function V0(e,t){var n=t.split("-"),r=n[0],s=n.slice(1).join("-");return r===e&&s!==""&&!z0(s)?s:null}var Ad=function(){var t=function(a){return Za(Bn,function(o,i,l){return o[l]=Za(i,a,{}),o},{})};wd=t(function(s,a,o){if(a[3]&&(s[a[3]]=o),a[2]){var i=a[2].filter(function(l){return typeof l=="number"});i.forEach(function(l){s[l.toString(16)]=o})}return s}),_d=t(function(s,a,o){if(s[o]=o,a[2]){var i=a[2].filter(function(l){return typeof l=="string"});i.forEach(function(l){s[l]=o})}return s}),xd=t(function(s,a,o){var i=a[2];return s[o]=o,i.forEach(function(l){s[l]=o}),s});var n="far"in Bn||W.autoFetchSvg,r=Za(H0,function(s,a){var o=a[0],i=a[1],l=a[2];return i==="far"&&!n&&(i="fas"),typeof o=="string"&&(s.names[o]={prefix:i,iconName:l}),typeof o=="number"&&(s.unicodes[o.toString(16)]={prefix:i,iconName:l}),s},{names:{},unicodes:{}});Ed=r.names,Sd=r.unicodes,Ti=Ca(W.styleDefault,{family:W.familyDefault})};A0(function(e){Ti=Ca(e.styleDefault,{family:W.familyDefault})});Ad();function Li(e,t){return(wd[e]||{})[t]}function j0(e,t){return(_d[e]||{})[t]}function wn(e,t){return(xd[e]||{})[t]}function kd(e){return Ed[e]||{prefix:null,iconName:null}}function B0(e){var t=Sd[e],n=Li("fas",e);return t||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function cn(){return Ti}var Ri=function(){return{prefix:null,iconName:null,rest:[]}};function Ca(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.family,r=n===void 0?Ee:n,s=Ur[r][e],a=Kr[r][e]||Kr[r][s],o=e in bt.styles?e:null;return a||o||null}var Sc=(Cs={},Fe(Cs,Ee,Object.keys(Wr[Ee])),Fe(Cs,Oe,Object.keys(Wr[Oe])),Cs);function Oa(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(W.cssPrefix,"-").concat(Ee)),Fe(t,Oe,"".concat(W.cssPrefix,"-").concat(Oe)),t),o=null,i=Ee;(e.includes(a[Ee])||e.some(function(c){return Sc[Ee].includes(c)}))&&(i=Ee),(e.includes(a[Oe])||e.some(function(c){return Sc[Oe].includes(c)}))&&(i=Oe);var l=e.reduce(function(c,u){var f=V0(W.cssPrefix,u);if(Bn[u]?(u=F0[i].includes(u)?h0[i][u]:u,o=u,c.prefix=u):D0[i].indexOf(u)>-1?(o=u,c.prefix=Ca(u,{family:i})):f?c.iconName=f:u!==W.replacementClass&&u!==a[Ee]&&u!==a[Oe]&&c.rest.push(u),!s&&c.prefix&&c.iconName){var d=o==="fa"?kd(c.iconName):{},m=wn(c.prefix,c.iconName);d.prefix&&(o=null),c.iconName=d.iconName||m||c.iconName,c.prefix=d.prefix||c.prefix,c.prefix==="far"&&!Bn.far&&Bn.fas&&!W.autoFetchSvg&&(c.prefix="fas")}return c},Ri());return(e.includes("fa-brands")||e.includes("fab"))&&(l.prefix="fab"),(e.includes("fa-duotone")||e.includes("fad"))&&(l.prefix="fad"),!l.prefix&&i===Oe&&(Bn.fass||W.autoFetchSvg)&&(l.prefix="fass",l.iconName=wn(l.prefix,l.iconName)||l.iconName),(l.prefix==="fa"||o==="fa")&&(l.prefix=cn()||"fas"),l}var U0=function(){function e(){n0(this,e),this.definitions={}}return s0(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[i][f]=c)}),n[i][l]=c}),n}}]),e}(),xc=[],Un={},Jn={},K0=Object.keys(Jn);function W0(e,t){var n=t.mixoutsTo;return xc=e,Un={},Object.keys(Jn).forEach(function(r){K0.indexOf(r)===-1&&delete Jn[r]}),xc.forEach(function(r){var s=r.mixout?r.mixout():{};if(Object.keys(s).forEach(function(o){typeof s[o]=="function"&&(n[o]=s[o]),Xs(s[o])==="object"&&Object.keys(s[o]).forEach(function(i){n[o]||(n[o]={}),n[o][i]=s[o][i]})}),r.hooks){var a=r.hooks();Object.keys(a).forEach(function(o){Un[o]||(Un[o]=[]),Un[o].push(a[o])})}r.provides&&r.provides(Jn)}),n}function Ro(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 Vt?(kn("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;W.autoReplaceSvg===!1&&(W.autoReplaceSvg=!0),W.observeMutations=!0,I0(function(){J0({autoReplaceSvgRoot:n}),kn("watch",t)})}},Y0={icon:function(t){if(t===null)return null;if(Xs(t)==="object"&&t.prefix&&t.iconName)return{prefix:t.prefix,iconName:wn(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=Ca(t[0]);return{prefix:r,iconName:wn(r,n)||n}}if(typeof t=="string"&&(t.indexOf("".concat(W.cssPrefix,"-"))>-1||t.match(g0))){var s=Oa(t.split(" "),{skipLookups:!0});return{prefix:s.prefix||cn(),iconName:wn(s.prefix,s.iconName)||s.iconName}}if(typeof t=="string"){var a=cn();return{prefix:a,iconName:wn(a,t)||t}}}},ut={noAuto:q0,config:W,dom:G0,parse:Y0,library:Cd,findIconDefinition:Po,toHtml:as},J0=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.autoReplaceSvgRoot,r=n===void 0?xe:n;(Object.keys(bt.styles).length>0||W.autoFetchSvg)&&Vt&&W.autoReplaceSvg&&ut.dom.i2svg({node:r})};function Ta(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map(function(r){return as(r)})}}),Object.defineProperty(e,"node",{get:function(){if(Vt){var r=xe.createElement("div");return r.innerHTML=e.html,r.children}}}),e}function X0(e){var t=e.children,n=e.main,r=e.mask,s=e.attributes,a=e.styles,o=e.transform;if(Oi(o)&&n.found&&!r.found){var i=n.width,l=n.height,c={x:i/l/2,y:.5};s.style=ka(j(j({},a),{},{"transform-origin":"".concat(c.x+o.x/16,"em ").concat(c.y+o.y/16,"em")}))}return[{tag:"svg",attributes:s,children:t}]}function Q0(e){var t=e.prefix,n=e.iconName,r=e.children,s=e.attributes,a=e.symbol,o=a===!0?"".concat(t,"-").concat(W.cssPrefix,"-").concat(n):a;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:j(j({},s),{},{id:o}),children:r}]}]}function Pi(e){var t=e.icons,n=t.main,r=t.mask,s=e.prefix,a=e.iconName,o=e.transform,i=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,b=g.width,w=g.height,y=s==="fak",v=[W.replacementClass,a?"".concat(W.cssPrefix,"-").concat(a):""].filter(function(D){return f.classes.indexOf(D)===-1}).filter(function(D){return D!==""||!!D}).concat(f.classes).join(" "),S={children:[],attributes:j(j({},f.attributes),{},{"data-prefix":s,"data-icon":a,class:v,role:f.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(b," ").concat(w)})},C=y&&!~f.classes.indexOf("fa-fw")?{width:"".concat(b/w*16*.0625,"em")}:{};m&&(S.attributes[An]=""),l&&(S.children.push({tag:"title",attributes:{id:S.attributes["aria-labelledby"]||"title-".concat(u||Gr())},children:[l]}),delete S.attributes.title);var R=j(j({},S),{},{prefix:s,iconName:a,main:n,mask:r,maskId:c,transform:o,symbol:i,styles:j(j({},C),f.styles)}),$=r.found&&n.found?Dt("generateAbstractMask",R)||{children:[],attributes:{}}:Dt("generateAbstractIcon",R)||{children:[],attributes:{}},K=$.children,P=$.attributes;return R.children=K,R.attributes=P,i?Q0(R):X0(R)}function Ac(e){var t=e.content,n=e.width,r=e.height,s=e.transform,a=e.title,o=e.extra,i=e.watchable,l=i===void 0?!1:i,c=j(j(j({},o.attributes),a?{title:a}:{}),{},{class:o.classes.join(" ")});l&&(c[An]="");var u=j({},o.styles);Oi(s)&&(u.transform=L0({transform:s,startCentered:!0,width:n,height:r}),u["-webkit-transform"]=u.transform);var f=ka(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 Z0(e){var t=e.content,n=e.title,r=e.extra,s=j(j(j({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),a=ka(r.styles);a.length>0&&(s.style=a);var o=[];return o.push({tag:"span",attributes:s,children:[t]}),n&&o.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),o}var eo=bt.styles;function Mo(e){var t=e[0],n=e[1],r=e.slice(4),s=Ei(r,1),a=s[0],o=null;return Array.isArray(a)?o={tag:"g",attributes:{class:"".concat(W.cssPrefix,"-").concat(bn.GROUP)},children:[{tag:"path",attributes:{class:"".concat(W.cssPrefix,"-").concat(bn.SECONDARY),fill:"currentColor",d:a[0]}},{tag:"path",attributes:{class:"".concat(W.cssPrefix,"-").concat(bn.PRIMARY),fill:"currentColor",d:a[1]}}]}:o={tag:"path",attributes:{fill:"currentColor",d:a}},{found:!0,width:t,height:n,icon:o}}var ev={found:!1,width:512,height:512};function tv(e,t){!pd&&!W.showMissingIcons&&e&&console.error('Icon with name "'.concat(e,'" and prefix "').concat(t,'" is missing.'))}function Io(e,t){var n=t;return t==="fa"&&W.styleDefault!==null&&(t=cn()),new Promise(function(r,s){if(Dt("missingIconAbstract"),n==="fa"){var a=kd(e)||{};e=a.iconName||e,t=a.prefix||t}if(e&&t&&eo[t]&&eo[t][e]){var o=eo[t][e];return r(Mo(o))}tv(e,t),r(j(j({},ev),{},{icon:W.showMissingIcons&&e?Dt("missingIconAbstract")||{}:{}}))})}var kc=function(){},No=W.measurePerformance&&bs&&bs.mark&&bs.measure?bs:{mark:kc,measure:kc},_r='FA "6.5.1"',nv=function(t){return No.mark("".concat(_r," ").concat(t," begins")),function(){return Od(t)}},Od=function(t){No.mark("".concat(_r," ").concat(t," ends")),No.measure("".concat(_r," ").concat(t),"".concat(_r," ").concat(t," begins"),"".concat(_r," ").concat(t," ends"))},Mi={begin:nv,end:Od},Hs=function(){};function Cc(e){var t=e.getAttribute?e.getAttribute(An):null;return typeof t=="string"}function rv(e){var t=e.getAttribute?e.getAttribute(xi):null,n=e.getAttribute?e.getAttribute(Ai):null;return t&&n}function sv(e){return e&&e.classList&&e.classList.contains&&e.classList.contains(W.replacementClass)}function av(){if(W.autoReplaceSvg===!0)return Fs.replace;var e=Fs[W.autoReplaceSvg];return e||Fs.replace}function ov(e){return xe.createElementNS("http://www.w3.org/2000/svg",e)}function iv(e){return xe.createElement(e)}function Td(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.ceFn,r=n===void 0?e.tag==="svg"?ov:iv:n;if(typeof e=="string")return xe.createTextNode(e);var s=r(e.tag);Object.keys(e.attributes||[]).forEach(function(o){s.setAttribute(o,e.attributes[o])});var a=e.children||[];return a.forEach(function(o){s.appendChild(Td(o,{ceFn:r}))}),s}function lv(e){var t=" ".concat(e.outerHTML," ");return t="".concat(t,"Font Awesome fontawesome.com "),t}var Fs={replace:function(t){var n=t[0];if(n.parentNode)if(t[1].forEach(function(s){n.parentNode.insertBefore(Td(s),n)}),n.getAttribute(An)===null&&W.keepOriginalSource){var r=xe.createComment(lv(n));n.parentNode.replaceChild(r,n)}else n.remove()},nest:function(t){var n=t[0],r=t[1];if(~Ci(n).indexOf(W.replacementClass))return Fs.replace(t);var s=new RegExp("".concat(W.cssPrefix,"-.*"));if(delete r[0].attributes.id,r[0].attributes.class){var a=r[0].attributes.class.split(" ").reduce(function(i,l){return l===W.replacementClass||l.match(s)?i.toSvg.push(l):i.toNode.push(l),i},{toNode:[],toSvg:[]});r[0].attributes.class=a.toSvg.join(" "),a.toNode.length===0?n.removeAttribute("class"):n.setAttribute("class",a.toNode.join(" "))}var o=r.map(function(i){return as(i)}).join(` -`);n.setAttribute(An,""),n.innerHTML=o}};function Oc(e){e()}function Ld(e,t){var n=typeof t=="function"?t:Hs;if(e.length===0)n();else{var r=Oc;W.mutateApproach===p0&&(r=ln.requestAnimationFrame||Oc),r(function(){var s=av(),a=Mi.begin("mutate");e.map(s),a(),n()})}}var Ii=!1;function Rd(){Ii=!0}function $o(){Ii=!1}var Zs=null;function Tc(e){if(yc&&W.observeMutations){var t=e.treeCallback,n=t===void 0?Hs:t,r=e.nodeCallback,s=r===void 0?Hs:r,a=e.pseudoElementsCallback,o=a===void 0?Hs:a,i=e.observeMutationsRoot,l=i===void 0?xe:i;Zs=new yc(function(c){if(!Ii){var u=cn();dr(c).forEach(function(f){if(f.type==="childList"&&f.addedNodes.length>0&&!Cc(f.addedNodes[0])&&(W.searchPseudoElements&&o(f.target),n(f.target)),f.type==="attributes"&&f.target.parentNode&&W.searchPseudoElements&&o(f.target.parentNode),f.type==="attributes"&&Cc(f.target)&&~w0.indexOf(f.attributeName))if(f.attributeName==="class"&&rv(f.target)){var d=Oa(Ci(f.target)),m=d.prefix,g=d.iconName;f.target.setAttribute(xi,m||u),g&&f.target.setAttribute(Ai,g)}else sv(f.target)&&s(f.target)})}}),Vt&&Zs.observe(l,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function cv(){Zs&&Zs.disconnect()}function uv(e){var t=e.getAttribute("style"),n=[];return t&&(n=t.split(";").reduce(function(r,s){var a=s.split(":"),o=a[0],i=a.slice(1);return o&&i.length>0&&(r[o]=i.join(":").trim()),r},{})),n}function fv(e){var t=e.getAttribute("data-prefix"),n=e.getAttribute("data-icon"),r=e.innerText!==void 0?e.innerText.trim():"",s=Oa(Ci(e));return s.prefix||(s.prefix=cn()),t&&n&&(s.prefix=t,s.iconName=n),s.iconName&&s.prefix||(s.prefix&&r.length>0&&(s.iconName=j0(s.prefix,e.innerText)||Li(s.prefix,To(e.innerText))),!s.iconName&&W.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(s.iconName=e.firstChild.data)),s}function dv(e){var t=dr(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 W.autoA11y&&(n?t["aria-labelledby"]="".concat(W.replacementClass,"-title-").concat(r||Gr()):(t["aria-hidden"]="true",t.focusable="false")),t}function pv(){return{iconName:null,title:null,titleId:null,prefix:null,transform:Ot,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function Lc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},n=fv(e),r=n.iconName,s=n.prefix,a=n.rest,o=dv(e),i=Ro("parseNodeAttributes",{},e),l=t.styleParser?uv(e):[];return j({iconName:r,title:e.getAttribute("title"),titleId:e.getAttribute("data-fa-title-id"),prefix:s,transform:Ot,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:a,styles:l,attributes:o}},i)}var mv=bt.styles;function Pd(e){var t=W.autoReplaceSvg==="nest"?Lc(e,{styleParser:!1}):Lc(e);return~t.extra.classes.indexOf(md)?Dt("generateLayersText",e,t):Dt("generateSvgReplacementMutation",e,t)}var un=new Set;ki.map(function(e){un.add("fa-".concat(e))});Object.keys(Ur[Ee]).map(un.add.bind(un));Object.keys(Ur[Oe]).map(un.add.bind(un));un=rs(un);function Rc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!Vt)return Promise.resolve();var n=xe.documentElement.classList,r=function(f){return n.add("".concat(bc,"-").concat(f))},s=function(f){return n.remove("".concat(bc,"-").concat(f))},a=W.autoFetchSvg?un:ki.map(function(u){return"fa-".concat(u)}).concat(Object.keys(mv));a.includes("fa")||a.push("fa");var o=[".".concat(md,":not([").concat(An,"])")].concat(a.map(function(u){return".".concat(u,":not([").concat(An,"])")})).join(", ");if(o.length===0)return Promise.resolve();var i=[];try{i=dr(e.querySelectorAll(o))}catch{}if(i.length>0)r("pending"),s("complete");else return Promise.resolve();var l=Mi.begin("onTree"),c=i.reduce(function(u,f){try{var d=Pd(f);d&&u.push(d)}catch(m){pd||m.name==="MissingIcon"&&console.error(m)}return u},[]);return new Promise(function(u,f){Promise.all(c).then(function(d){Ld(d,function(){r("active"),r("complete"),s("pending"),typeof t=="function"&&t(),l(),u()})}).catch(function(d){l(),f(d)})})}function hv(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;Pd(e).then(function(n){n&&Ld([n],t)})}function gv(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(t||{}).icon?t:Po(t||{}),s=n.mask;return s&&(s=(s||{}).icon?s:Po(s||{})),e(r,j(j({},n),{},{mask:s}))}}var vv=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.transform,s=r===void 0?Ot:r,a=n.symbol,o=a===void 0?!1:a,i=n.mask,l=i===void 0?null:i,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,b=n.classes,w=b===void 0?[]:b,y=n.attributes,v=y===void 0?{}:y,S=n.styles,C=S===void 0?{}:S;if(t){var R=t.prefix,$=t.iconName,K=t.icon;return Ta(j({type:"icon"},t),function(){return kn("beforeDOMElementCreation",{iconDefinition:t,params:n}),W.autoA11y&&(d?v["aria-labelledby"]="".concat(W.replacementClass,"-title-").concat(g||Gr()):(v["aria-hidden"]="true",v.focusable="false")),Pi({icons:{main:Mo(K),mask:l?Mo(l.icon):{found:!1,width:null,height:null,icon:{}}},prefix:R,iconName:$,transform:j(j({},Ot),s),symbol:o,title:d,maskId:u,titleId:g,extra:{attributes:v,styles:C,classes:w}})})}},yv={mixout:function(){return{icon:gv(vv)}},hooks:function(){return{mutationObserverCallbacks:function(n){return n.treeCallback=Rc,n.nodeCallback=hv,n}}},provides:function(t){t.i2svg=function(n){var r=n.node,s=r===void 0?xe:r,a=n.callback,o=a===void 0?function(){}:a;return Rc(s,o)},t.generateSvgReplacementMutation=function(n,r){var s=r.iconName,a=r.title,o=r.titleId,i=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([Io(s,i),u.iconName?Io(u.iconName,u.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(function(b){var w=Ei(b,2),y=w[0],v=w[1];m([n,Pi({icons:{main:y,mask:v},prefix:i,iconName:s,transform:l,symbol:c,maskId:f,title:a,titleId:o,extra:d,watchable:!0})])}).catch(g)})},t.generateAbstractIcon=function(n){var r=n.children,s=n.attributes,a=n.main,o=n.transform,i=n.styles,l=ka(i);l.length>0&&(s.style=l);var c;return Oi(o)&&(c=Dt("generateAbstractTransformGrouping",{main:a,transform:o,containerWidth:a.width,iconWidth:a.width})),r.push(c||a.icon),{children:r,attributes:s}}}},bv={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 Ta({type:"layer"},function(){kn("beforeDOMElementCreation",{assembler:n,params:r});var o=[];return n(function(i){Array.isArray(i)?i.map(function(l){o=o.concat(l.abstract)}):o=o.concat(i.abstract)}),[{tag:"span",attributes:{class:["".concat(W.cssPrefix,"-layers")].concat(rs(a)).join(" ")},children:o}]})}}}},wv={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,o=r.classes,i=o===void 0?[]:o,l=r.attributes,c=l===void 0?{}:l,u=r.styles,f=u===void 0?{}:u;return Ta({type:"counter",content:n},function(){return kn("beforeDOMElementCreation",{content:n,params:r}),Z0({content:n.toString(),title:a,extra:{attributes:c,styles:f,classes:["".concat(W.cssPrefix,"-layers-counter")].concat(rs(i))}})})}}}},_v={mixout:function(){return{text:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=r.transform,a=s===void 0?Ot:s,o=r.title,i=o===void 0?null:o,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 Ta({type:"text",content:n},function(){return kn("beforeDOMElementCreation",{content:n,params:r}),Ac({content:n,transform:j(j({},Ot),a),title:i,extra:{attributes:f,styles:m,classes:["".concat(W.cssPrefix,"-layers-text")].concat(rs(c))}})})}}},provides:function(t){t.generateLayersText=function(n,r){var s=r.title,a=r.transform,o=r.extra,i=null,l=null;if(ud){var c=parseInt(getComputedStyle(n).fontSize,10),u=n.getBoundingClientRect();i=u.width/c,l=u.height/c}return W.autoA11y&&!s&&(o.attributes["aria-hidden"]="true"),Promise.resolve([n,Ac({content:n.innerHTML,width:i,height:l,transform:a,title:s,extra:o,watchable:!0})])}}},Ev=new RegExp('"',"ug"),Pc=[1105920,1112319];function Sv(e){var t=e.replace(Ev,""),n=$0(t,0),r=n>=Pc[0]&&n<=Pc[1],s=t.length===2?t[0]===t[1]:!1;return{value:To(s?t[0]:t),isSecondary:r||s}}function Mc(e,t){var n="".concat(d0).concat(t.replace(":","-"));return new Promise(function(r,s){if(e.getAttribute(n)!==null)return r();var a=dr(e.children),o=a.filter(function(K){return K.getAttribute(Oo)===t})[0],i=ln.getComputedStyle(e,t),l=i.getPropertyValue("font-family").match(v0),c=i.getPropertyValue("font-weight"),u=i.getPropertyValue("content");if(o&&!l)return e.removeChild(o),r();if(l&&u!=="none"&&u!==""){var f=i.getPropertyValue("content"),d=~["Sharp"].indexOf(l[2])?Oe:Ee,m=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(l[2])?Kr[d][l[2].toLowerCase()]:y0[d][c],g=Sv(f),b=g.value,w=g.isSecondary,y=l[0].startsWith("FontAwesome"),v=Li(m,b),S=v;if(y){var C=B0(b);C.iconName&&C.prefix&&(v=C.iconName,m=C.prefix)}if(v&&!w&&(!o||o.getAttribute(xi)!==m||o.getAttribute(Ai)!==S)){e.setAttribute(n,S),o&&e.removeChild(o);var R=pv(),$=R.extra;$.attributes[Oo]=t,Io(v,m).then(function(K){var P=Pi(j(j({},R),{},{icons:{main:K,mask:Ri()},prefix:m,iconName:S,extra:$,watchable:!0})),D=xe.createElementNS("http://www.w3.org/2000/svg","svg");t==="::before"?e.insertBefore(D,e.firstChild):e.appendChild(D),D.outerHTML=P.map(function(k){return as(k)}).join(` -`),e.removeAttribute(n),r()}).catch(s)}else r()}else r()})}function xv(e){return Promise.all([Mc(e,"::before"),Mc(e,"::after")])}function Av(e){return e.parentNode!==document.head&&!~m0.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(Oo)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function Ic(e){if(Vt)return new Promise(function(t,n){var r=dr(e.querySelectorAll("*")).filter(Av).map(xv),s=Mi.begin("searchPseudoElements");Rd(),Promise.all(r).then(function(){s(),$o(),t()}).catch(function(){s(),$o(),n()})})}var kv={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=Ic,n}}},provides:function(t){t.pseudoElements2svg=function(n){var r=n.node,s=r===void 0?xe:r;W.searchPseudoElements&&Ic(s)}}},Nc=!1,Cv={mixout:function(){return{dom:{unwatch:function(){Rd(),Nc=!0}}}},hooks:function(){return{bootstrap:function(){Tc(Ro("mutationObserverCallbacks",{}))},noAuto:function(){cv()},watch:function(n){var r=n.observeMutationsRoot;Nc?$o():Tc(Ro("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},$c=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("-"),o=a[0],i=a.slice(1).join("-");if(o&&i==="h")return r.flipX=!0,r;if(o&&i==="v")return r.flipY=!0,r;if(i=parseFloat(i),isNaN(i))return r;switch(o){case"grow":r.size=r.size+i;break;case"shrink":r.size=r.size-i;break;case"left":r.x=r.x-i;break;case"right":r.x=r.x+i;break;case"up":r.y=r.y-i;break;case"down":r.y=r.y+i;break;case"rotate":r.rotate=r.rotate+i;break}return r},n)},Ov={mixout:function(){return{parse:{transform:function(n){return $c(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-transform");return s&&(n.transform=$c(s)),n}}},provides:function(t){t.generateAbstractTransformGrouping=function(n){var r=n.main,s=n.transform,a=n.containerWidth,o=n.iconWidth,i={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(o/2*-1," -256)")},m={outer:i,inner:f,path:d};return{tag:"g",attributes:j({},m.outer),children:[{tag:"g",attributes:j({},m.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:j(j({},r.icon.attributes),m.path)}]}]}}}},to={x:0,y:0,width:"100%",height:"100%"};function Hc(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 Tv(e){return e.tag==="g"?e.children:[e]}var Lv={hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-mask"),a=s?Oa(s.split(" ").map(function(o){return o.trim()})):Ri();return a.prefix||(a.prefix=cn()),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,o=n.mask,i=n.maskId,l=n.transform,c=a.width,u=a.icon,f=o.width,d=o.icon,m=T0({transform:l,containerWidth:f,iconWidth:c}),g={tag:"rect",attributes:j(j({},to),{},{fill:"white"})},b=u.children?{children:u.children.map(Hc)}:{},w={tag:"g",attributes:j({},m.inner),children:[Hc(j({tag:u.tag,attributes:j(j({},u.attributes),m.path)},b))]},y={tag:"g",attributes:j({},m.outer),children:[w]},v="mask-".concat(i||Gr()),S="clip-".concat(i||Gr()),C={tag:"mask",attributes:j(j({},to),{},{id:v,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[g,y]},R={tag:"defs",children:[{tag:"clipPath",attributes:{id:S},children:Tv(d)},C]};return r.push(R,{tag:"rect",attributes:j({fill:"currentColor","clip-path":"url(#".concat(S,")"),mask:"url(#".concat(v,")")},to)}),{children:r,attributes:s}}}},Rv={provides:function(t){var n=!1;ln.matchMedia&&(n=ln.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:j(j({},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 o=j(j({},a),{},{attributeName:"opacity"}),i={tag:"circle",attributes:j(j({},s),{},{cx:"256",cy:"364",r:"28"}),children:[]};return n||i.children.push({tag:"animate",attributes:j(j({},a),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:j(j({},o),{},{values:"1;0;1;1;0;1;"})}),r.push(i),r.push({tag:"path",attributes:j(j({},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:j(j({},o),{},{values:"1;0;0;0;0;1;"})}]}),n||r.push({tag:"path",attributes:j(j({},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:j(j({},o),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:r}}}},Pv={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}}}},Mv=[P0,yv,bv,wv,_v,kv,Cv,Ov,Lv,Rv,Pv];W0(Mv,{mixoutsTo:ut});ut.noAuto;var Iv=ut.config,Nv=ut.library;ut.dom;var Ho=ut.parse;ut.findIconDefinition;ut.toHtml;var $v=ut.icon;ut.layer;ut.text;ut.counter;function Fc(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 It(e){for(var t=1;t=0)&&(n[s]=e[s]);return n}function Fv(e,t){if(e==null)return{};var n=Hv(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}function Dv(e){return zv(e)||Vv(e)||jv(e)||Bv()}function zv(e){if(Array.isArray(e))return Fo(e)}function Vv(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function jv(e,t){if(e){if(typeof e=="string")return Fo(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Fo(e,t)}}function Fo(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string")return e;var r=(e.children||[]).map(function(l){return Id(l)}),s=Object.keys(e.attributes||{}).reduce(function(l,c){var u=e.attributes[c];switch(c){case"class":l.class=Jv(u);break;case"style":l.style=Yv(u);break;default:l.attrs[c]=u}return l},{attrs:{},class:{},style:{}});n.class;var a=n.style,o=a===void 0?{}:a,i=Fv(n,Gv);return Zr(e.tag,It(It(It({},t),{},{class:s.class,style:It(It({},s.style),o)},s.attrs),i),r)}var Nd=!1;try{Nd=!0}catch{}function Xv(){if(!Nd&&console&&typeof console.error=="function"){var e;(e=console).error.apply(e,arguments)}}function no(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?et({},e,t):{}}function Qv(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"},et(t,"fa-".concat(e.size),e.size!==null),et(t,"fa-rotate-".concat(e.rotation),e.rotation!==null),et(t,"fa-pull-".concat(e.pull),e.pull!==null),et(t,"fa-swap-opacity",e.swapOpacity),et(t,"fa-bounce",e.bounce),et(t,"fa-shake",e.shake),et(t,"fa-beat",e.beat),et(t,"fa-fade",e.fade),et(t,"fa-beat-fade",e.beatFade),et(t,"fa-flash",e.flash),et(t,"fa-spin-pulse",e.spinPulse),et(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 Dc(e){if(e&&ea(e)==="object"&&e.prefix&&e.iconName&&e.icon)return e;if(Ho.icon)return Ho.icon(e);if(e===null)return null;if(ea(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 Zv=fn({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},maskId:{type: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},titleId:{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=se(function(){return Dc(t.icon)}),a=se(function(){return no("classes",Qv(t))}),o=se(function(){return no("transform",typeof t.transform=="string"?Ho.transform(t.transform):t.transform)}),i=se(function(){return no("mask",Dc(t.mask))}),l=se(function(){return $v(s.value,It(It(It(It({},a.value),o.value),i.value),{},{symbol:t.symbol,title:t.title,titleId:t.titleId,maskId:t.maskId}))});je(l,function(u){if(!u)return Xv("Could not find one or more icon(s)",s.value,i.value)},{immediate:!0});var c=se(function(){return l.value?Id(l.value.abstract[0],{},r):null});return function(){return c.value}}}),xb=fn({name:"FontAwesomeLayers",props:{fixedWidth:{type:Boolean,default:!1}},setup:function(t,n){var r=n.slots,s=Iv.familyPrefix,a=se(function(){return["".concat(s,"-layers")].concat(Dv(t.fixedWidth?["".concat(s,"-fw")]:[]))});return function(){return Zr("div",{class:a.value},r.default?r.default():[])}}}),e4={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"]},t4={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"]},n4=t4,r4={prefix:"fas",iconName:"arrow-up-long",icon:[384,512,["long-arrow-up"],"f176","M214.6 9.4c-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 109.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z"]},s4={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"]},a4={prefix:"fas",iconName:"tablet-screen-button",icon:[448,512,["tablet-alt"],"f3fa","M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM256 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64H64V384H384V64z"]},o4={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"]},i4={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"]},l4=i4,c4={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"]},u4=c4,f4={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"]},d4={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"]},p4={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"]},m4={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"]},h4={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"]},g4={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"]},v4=g4,y4={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"]},b4={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"]},w4={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"]},_4={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"]},E4={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"]},S4={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"]},x4={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"]},A4={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"]},k4={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"]},C4=k4,O4={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"]},T4=O4,L4={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"]},R4={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"]},P4=R4,M4={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"]},I4={prefix:"fas",iconName:"mobile-screen",icon:[384,512,["mobile-android-alt"],"f3cf","M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM144 448c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160c-8.8 0-16 7.2-16 16zM304 64H80V384H304V64z"]},N4={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"]},$4={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"]},H4={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"]},F4=H4,D4={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"]},z4={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"]},V4=z4,j4={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"]},B4=j4,U4={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"]},K4=U4,W4={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"]},q4={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"]},G4={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"]},Y4=G4,J4={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"]},X4={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"]},Q4={prefix:"fas",iconName:"display",icon:[576,512,[],"e163","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 64V352H64V64H512z"]},Z4={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"]},ey={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"]},ty={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"]},ny={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"]},ry=ny,sy={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"]},ay={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"]},oy={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"]},iy={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"]},ly={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"]},cy=ly,uy={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.7 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"]},fy={prefix:"far",iconName:"calendar",icon:[448,512,[128197,128198],"f133","M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192H400V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192z"]},dy={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"]},py={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"]},my={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"]};Nv.add(q4,ry,ey,y4,x4,oy,u4,Y4,d4,E4,B4,V4,o4,Z4,py,M4,w4,n4,l4,K4,T4,f4,cy,$4,m4,ay,N4,_4,W4,P4,v4,S4,p4,C4,L4,F4,D4,ty,sy,s4,b4,iy,e4,X4,uy,J4,my,dy,h4,A4,I4,a4,Q4,fy,r4);const hy=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},gy={},vy={class:"columns is-centered"},yy={class:"form-column column is-two-thirds-tablet is-half-desktop is-half-widescreen is-one-third-fullhd"};function by(e,t){return F(),G("div",vy,[Q("div",yy,[Qn(e.$slots,"default")])])}const wy=hy(gy,[["render",by]]),_y=["innerHTML"],Ey=["innerHTML"],Sy={__name:"FormWrapper",props:{title:{type:String,default:""},punchline:{type:String,default:""}},setup(e){return(t,n)=>{const r=He("ResponsiveWidthWrapper");return F(),Xe(r,null,{default:qe(()=>[e.title?(F(),G("h1",{key:0,class:"title has-text-grey-dark",innerHTML:t.$t(e.title)},null,8,_y)):ce("",!0),e.punchline?(F(),G("div",{key:1,id:"punchline",class:"block",innerHTML:t.$t(e.punchline)},null,8,Ey)):ce("",!0),Qn(t.$slots,"default")]),_:3})}}};function $d(e){var t;const n=lt(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Yr=cr?window:void 0;function Do(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Yr):[t,n,r,s]=e,!t)return hi;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const a=[],o=()=>{a.forEach(u=>u()),a.length=0},i=(u,f,d,m)=>(u.addEventListener(f,d,m),()=>u.removeEventListener(f,d,m)),l=je(()=>[$d(t),lt(s)],([u,f])=>{if(o(),!u)return;const d=bf(f)?{...f}:f;a.push(...n.flatMap(m=>r.map(g=>i(u,m,g,d))))},{immediate:!0,flush:"post"}),c=()=>{l(),o()};return lr(c),c}const Os=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Ts="__vueuse_ssr_handlers__",xy=Ay();function Ay(){return Ts in Os||(Os[Ts]=Os[Ts]||{}),Os[Ts]}function Hd(e,t){return xy[e]||t}function ky(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 Cy={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()}},zc="vueuse-storage";function Oy(e,t,n,r={}){var s;const{flush:a="pre",deep:o=!0,listenToStorageChanges:i=!0,writeDefaults:l=!0,mergeDefaults:c=!1,shallow:u,window:f=Yr,eventFilter:d,onError:m=k=>{console.error(k)},initOnMounted:g}=r,b=(u?ti:me)(typeof t=="function"?t():t);if(!n)try{n=Hd("getDefaultStorage",()=>{var k;return(k=Yr)==null?void 0:k.localStorage})()}catch(k){m(k)}if(!n)return b;const w=lt(t),y=ky(w),v=(s=r.serializer)!=null?s:Cy[y],{pause:S,resume:C}=_f(b,()=>$(b.value),{flush:a,deep:o,eventFilter:d});f&&i&&ya(()=>{Do(f,"storage",P),Do(f,zc,D),g&&P()}),g||P();function R(k,x){f&&f.dispatchEvent(new CustomEvent(zc,{detail:{key:e,oldValue:k,newValue:x,storageArea:n}}))}function $(k){try{const x=n.getItem(e);if(k==null)R(x,null),n.removeItem(e);else{const O=v.write(k);x!==O&&(n.setItem(e,O),R(x,O))}}catch(x){m(x)}}function K(k){const x=k?k.newValue:n.getItem(e);if(x==null)return l&&w!=null&&n.setItem(e,v.write(w)),w;if(!k&&c){const O=v.read(x);return typeof c=="function"?c(O,w):y==="object"&&!Array.isArray(O)?{...w,...O}:O}else return typeof x!="string"?x:v.read(x)}function P(k){if(!(k&&k.storageArea!==n)){if(k&&k.key==null){b.value=w;return}if(!(k&&k.key!==e)){S();try{(k==null?void 0:k.newValue)!==v.write(b.value)&&(b.value=K(k))}catch(x){m(x)}finally{k?Ln(C):C()}}}}function D(k){P(k.detail)}return b}function Ty(){const e=me(!1),t=ir();return t&&Rn(()=>{e.value=!0},t),e}function Ly(e){const t=Ty();return se(()=>(t.value,!!e()))}function Ry(e,t={}){const{window:n=Yr}=t,r=Ly(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const a=me(!1),o=c=>{a.value=c.matches},i=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",o):s.removeListener(o))},l=si(()=>{r.value&&(i(),s=n.matchMedia(lt(e)),"addEventListener"in s?s.addEventListener("change",o):s.addListener(o),a.value=s.matches)});return lr(()=>{l(),i(),s=void 0}),a}function Py(e){return Ry("(prefers-color-scheme: dark)",e)}function My(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Yr,storage:a,storageKey:o="vueuse-color-scheme",listenToStorageChanges:i=!0,storageRef:l,emitAuto:c,disableTransition:u=!0}=e,f={auto:"",light:"light",dark:"dark",...e.modes||{}},d=Py({window:s}),m=se(()=>d.value?"dark":"light"),g=l||(o==null?gi(r):Oy(o,r,a,{window:s,listenToStorageChanges:i})),b=se(()=>g.value==="auto"?m.value:g.value),w=Hd("updateHTMLAttrs",(C,R,$)=>{const K=typeof C=="string"?s==null?void 0:s.document.querySelector(C):$d(C);if(!K)return;let P;if(u&&(P=s.document.createElement("style"),P.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(P)),R==="class"){const D=$.split(/\s/g);Object.values(f).flatMap(k=>(k||"").split(/\s/g)).filter(Boolean).forEach(k=>{D.includes(k)?K.classList.add(k):K.classList.remove(k)})}else K.setAttribute(R,$);u&&(s.getComputedStyle(P).opacity,document.head.removeChild(P))});function y(C){var R;w(t,n,(R=f[C])!=null?R:C)}function v(C){e.onChanged?e.onChanged(C,y):y(C)}je(b,v,{flush:"post",immediate:!0}),ya(()=>v(b.value));const S=se({get(){return c?g.value:b.value},set(C){g.value=C}});try{return Object.assign(S,{store:g,system:m,state:b})}catch{return S}}const Fd=fn({name:"UseColorMode",props:["selector","attribute","modes","onChanged","storageKey","storage","emitAuto"],setup(e,{slots:t}){const n=My(e),r=$t({mode:n,system:n.system,store:n.store});return()=>{if(t.default)return t.default(r)}}});function ro(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Dd(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const Ls=new WeakMap;function Ny(e,t=!1){const n=me(t);let r=null;je(gi(e),o=>{const i=ro(lt(o));if(i){const l=i;Ls.get(l)||Ls.set(l,l.style.overflow),n.value&&(l.style.overflow="hidden")}},{immediate:!0});const s=()=>{const o=ro(lt(e));!o||n.value||(Ul&&(r=Do(o,"touchmove",i=>{Iy(i)},{passive:!1})),o.style.overflow="hidden",n.value=!0)},a=()=>{var o;const i=ro(lt(e));!i||!n.value||(Ul&&(r==null||r()),i.style.overflow=(o=Ls.get(i))!=null?o:"",Ls.delete(i),n.value=!1)};return lr(a),se({get(){return n.value},set(o){o?s():a()}})}function $y(){let e=!1;const t=me(!1);return(n,r)=>{if(t.value=r.value,e)return;e=!0;const s=Ny(n,r.value);je(t,a=>s.value=a)}}$y();const Hy={key:0,class:"columns is-gapless"},Fy={class:"column has-text-centered"},Dy={class:"field is-grouped"},zy={key:1,class:"content has-text-centered"},Vy={key:2,class:"content has-text-centered"},jy={key:1},By={key:3,class:"content has-text-centered"},Uy={key:0},Ky={class:"has-text-weight-bold"},Wy={key:1},qy={key:0,class:"ml-0 mt-1"},Gy={class:"column"},Yy={key:0,class:"column"},Jy={key:0,class:"release-flag"},Xy={key:1,class:"column"},Qy={key:0,class:"release-flag"},Zy={class:"mx-2 has-ellipsis"},e3={key:2},t3={key:0},n3={key:0,class:"release-flag"},r3={key:1},s3={__name:"Footer",props:{showButtons:!0,internalFooterType:{type:String,default:"navLinks"}},setup(e){const t=ad(),n=Ge(),r=nt("2fauth"),s=me(!1);function a(){confirm(Je("auth.confirm.logout"))&&n.logout()}return(o,i)=>{const l=He("router-link"),c=He("FontAwesomeIcon");return F(),G("footer",{class:Se(["main",{menu:Y(s)}])},[e.showButtons&&!Y(s)?(F(),G("div",Hy,[Q("div",Fy,[Q("div",Dy,[Qn(o.$slots,"default")])])])):ce("",!0),e.internalFooterType=="doneButton"?(F(),G("div",zy,[Q("button",{id:"lnkExitEdit",class:"button is-ghost is-like-text",onClick:i[0]||(i[0]=ha(u=>o.$emit("doneButtonClicked",!0),["stop"]))},we(o.$t("commons.done")),1)])):e.internalFooterType=="modal"?(F(),G("div",Vy,[o.$route.name!="accounts"?(F(),Xe(l,{key:0,id:"lnkBackToHome",to:{name:"accounts"},class:"has-text-grey"},{default:qe(()=>[Pe(we(o.$t("commons.back_to_home")),1)]),_:1})):(F(),G("span",jy," "))])):(F(),G("div",By,[o.$route.meta.showAbout===!0?(F(),G("div",Uy,[ne(l,{id:"lnkAbout",to:{name:"about"},class:"has-text-grey"},{default:qe(()=>[Pe(" 2FAuth – "),Q("span",Ky,"v"+we(Y(r).version),1)]),_:1})])):Y(n).preferences.showEmailInFooter?(F(),G("div",Wy,[Y(s)==!0?(F(),G("ul",qy,[Q("li",Gy,[ne(l,{id:"lnkSettings",to:{name:"settings.options"}},{default:qe(()=>[Pe(we(o.$t("settings.settings")),1)]),_:1},8,["to"])]),Y(n).isAdmin?(F(),G("li",Yy,[ne(l,{id:"lnkAdmin",to:{name:"admin.appSetup"}},{default:qe(()=>[Y(t).latestRelease&&Y(t).checkForUpdate?(F(),G("span",Jy)):ce("",!0),Pe(" "+we(o.$t("admin.admin_panel")),1)]),_:1},8,["to"])])):ce("",!0),!Y(r).config.proxyAuth||Y(r).config.proxyAuth&&Y(r).config.proxyLogoutUrl?(F(),G("li",Xy,[ne(Y(Fd),null,{default:qe(({mode:u})=>[Q("button",{id:"lnkSignOut",class:Se(["button is-text is-like-text",u=="dark"?"has-text-grey-lighter":"has-text-grey-darker"]),onClick:a},we(o.$t("auth.sign_out")),3)]),_:1})])):ce("",!0)])):ce("",!0),Q("button",{id:"btnEmailMenu",onClick:i[1]||(i[1]=u=>s.value=!Y(s)),class:"button is-text is-like-text has-text-grey",style:{width:"100%"}},[Y(t).latestRelease&&Y(t).checkForUpdate?(F(),G("span",Qy)):ce("",!0),Q("span",Zy,we(Y(n).email),1),Y(s)?(F(),Xe(c,{key:2,icon:["fas","times"],class:"mr-2"})):(F(),Xe(c,{key:1,icon:["fas","bars"],class:"mr-2"}))])])):(F(),G("div",e3,[ne(l,{id:"lnkSettings",to:{name:"settings.options"},class:"has-text-grey"},{default:qe(()=>[Pe(we(o.$t("settings.settings")),1)]),_:1},8,["to"]),Y(n).isAdmin?(F(),G("span",t3,[Pe(" - "),ne(l,{id:"lnkAdmin",to:{name:"admin.appSetup"},class:"has-text-grey"},{default:qe(()=>[Pe(we(o.$t("admin.admin")),1),Y(t).latestRelease&&Y(t).checkForUpdate?(F(),G("span",n3)):ce("",!0)]),_:1},8,["to"])])):ce("",!0),!Y(r).config.proxyAuth||Y(r).config.proxyAuth&&Y(r).config.proxyLogoutUrl?(F(),G("span",r3,[Pe(" - "),Q("button",{id:"lnkSignOut",class:"button is-text is-like-text has-text-grey",onClick:a},we(o.$t("auth.sign_out")),1)])):ce("",!0)]))]))],2)}}},a3={key:0,class:"modal-content modal-with-footer"},o3={class:"modal-slot p-4 has-text-centered"},i3={key:1,class:"modal-content modal-with-footer"},l3={class:"section"},c3={class:"columns is-centered"},u3={class:"column is-three-quarters"},f3={class:"modal-slot box has-text-centered is-shadowless"},d3={__name:"Modal",props:{modelValue:Boolean,closable:{type:Boolean,default:!0},isFullHeight:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:t}){const{notify:n}=sf(),r=e,s=t,a=se({get(){return r.modelValue},set(i){s("update:modelValue",i)}});function o(i){n({clean:!0}),a.value=!1}return(i,l)=>{const c=He("ButtonBackCloseCancel"),u=He("VueFooter");return F(),G("div",{class:Se(["modal modal-otp",{"is-active":Y(a)}])},[Q("div",{class:"modal-background",onClick:ha(o,["stop"])}),e.isFullHeight?(F(),G("div",a3,[Q("div",o3,[Qn(i.$slots,"default")])])):(F(),G("div",i3,[Q("section",l3,[Q("div",c3,[Q("div",u3,[Q("div",f3,[Qn(i.$slots,"default")])])])])])),r.closable?(F(),Xe(u,{key:2,showButtons:!0,internalFooterType:"modal"},{default:qe(()=>[ne(c,{action:"close",useLinkTag:!1,onClosed:o})]),_:1})):ce("",!0)],2)}}},p3=["type","disabled"],m3={__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)=>(F(),G("button",{type:e.nativeType,disabled:e.isLoading||e.isDisabled,class:Se({button:!0,[`${e.color}`]:!0,"is-loading":e.isLoading})},[Qn(t.$slots,"default")],10,p3))}},h3={key:0,class:"control"},g3={key:1,class:"control"},v3={__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},isRounded:{type:Boolean,default:!0}},setup(e){H1(),yf();const t=kf(),n=e,r="button"+(t.value==="dark"&&!n.isText&&!n.isCapture?" is-dark":"")+(n.isText?" is-text":"")+(n.isCapture?" is-large is-warning":"")+(n.isRounded?" is-rounded":"");return(s,a)=>{const o=He("RouterLink");return e.useLinkTag?(F(),G("p",h3,[e.action=="close"?(F(),Xe(o,{key:0,id:"btnClose",to:e.returnTo,class:Se(r),tabindex:"0",role:"button","aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:qe(()=>[Pe(we(s.$t("commons.close")),1)]),_:1},8,["to","aria-label"])):e.action=="back"?(F(),Xe(o,{key:1,id:"lnkBack",to:e.returnTo,class:Se(r),"aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:qe(()=>[Pe(we(s.$t("commons.back")),1)]),_:1},8,["to","aria-label"])):e.action=="cancel"?(F(),Xe(o,{key:2,id:"btnCancel",to:e.returnTo,class:Se(r)},{default:qe(()=>[Pe(we(s.$t("commons.cancel")),1)]),_:1},8,["to"])):ce("",!0)])):(F(),G("p",g3,[e.action=="close"?(F(),G("button",{key:0,id:"btnClose",class:Se(r),onClick:a[0]||(a[0]=i=>s.$emit("closed")),type:"button"},we(s.$t("commons.close")),1)):ce("",!0),e.action=="cancel"?(F(),G("button",{key:1,id:"btnCancel",class:Se(r),onClick:a[1]||(a[1]=i=>s.$emit("canceled")),type:"button"},we(s.$t("commons.cancel")),1)):ce("",!0)]))}}},y3={role:"alert"},b3=["id","innerHTML"],w3={__name:"FieldError",props:{error:{type:String,required:!0},field:{type:String,required:!0},alertType:{type:String,default:"is-danger"}},setup(e){return(t,n)=>(F(),G("div",y3,[Q("p",{id:"valError"+e.field[0].toUpperCase()+e.field.toLowerCase().slice(1),class:Se(["help",e.alertType]),innerHTML:e.error},null,10,b3)]))}},_3=["for","innerHTML"],E3=["disabled","id","type","value","placeholder","maxlength"],S3={key:0,class:"icon is-small is-left"},x3={key:1,class:"icon is-small is-right"},A3=["innerHTML"],k3=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}=jn(t.inputType,t.fieldName);return(r,s)=>{const a=He("FontAwesomeIcon"),o=He("FieldError");return F(),G("div",{class:Se(["mb-3",{"pt-3":e.hasOffset,"is-flex":e.isIndented}])},[e.isIndented?(F(),G("div",{key:0,class:"mx-2 pr-1",style:an({opacity:e.isDisabled?"0.5":"1"})},[ne(a,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):ce("",!0),Q("div",{class:Se(["field",{"is-flex-grow-5":e.isIndented}])},[Q("label",{for:Y(n),class:"label",style:an({opacity:e.isDisabled?"0.5":"1"}),innerHTML:r.$t(e.label)},null,12,_3),Q("div",{class:Se(["control",{"has-icons-left":e.leftIcon,"has-icons-right":e.rightIcon}])},[Q("input",ui({disabled:e.isDisabled,id:Y(n),type:e.inputType,class:"input",value:e.modelValue,placeholder:e.placeholder},r.$attrs,{onInput:s[0]||(s[0]=i=>r.$emit("update:modelValue",i.target.value)),onChange:s[1]||(s[1]=i=>r.$emit("change:modelValue",i.target.value)),maxlength:e.maxLength}),null,16,E3),e.leftIcon?(F(),G("span",S3,[ne(a,{icon:["fas",e.leftIcon],transform:"rotate-75",size:"xs"},null,8,["icon"])])):ce("",!0),e.rightIcon?(F(),G("span",x3,[ne(a,{icon:["fas",e.rightIcon],transform:"rotate-75",size:"xs"},null,8,["icon"])])):ce("",!0)],2),e.fieldError!=null?(F(),Xe(o,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):ce("",!0),e.help?(F(),G("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,A3)):ce("",!0)],2)],2)}}}),C3=["for","innerHTML"],O3={class:"control has-icons-right"},T3=["disabled","id","type","value","placeholder"],L3=["title"],R3=["title"],P3=["innerHTML"],M3=["innerHTML"],I3={key:3,class:"columns is-mobile is-size-7 mt-0"},N3={class:"column is-one-third"},$3={class:"has-text-weight-semibold"},H3=Q("br",null,null,-1),F3=Q("br",null,null,-1),D3={class:"column"},z3={class:"has-text-weight-semibold"},V3=Q("br",null,null,-1),j3=Q("br",null,null,-1),B3=Q("br",null,null,-1),U3=Q("br",null,null,-1),K3=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}=jn(t.inputType,t.fieldName),r=me(t.inputType),s=me(!1),a=se(()=>/[a-z]/.test(t.modelValue)),o=se(()=>/[A-Z]/.test(t.modelValue)),i=se(()=>/[0-9]/.test(t.modelValue)),l=se(()=>/[^A-Za-z0-9]/.test(t.modelValue)),c=se(()=>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=He("font-awesome-icon"),b=He("FieldError");return F(),G("div",{class:Se(["field",{"pt-3":e.hasOffset}])},[Q("label",{for:Y(n),class:"label",innerHTML:d.$t(e.label)},null,8,C3),Q("div",O3,[Q("input",ui({disabled:e.isDisabled,id:Y(n),type:Y(r),class:"input",value:e.modelValue,placeholder:e.placeholder},d.$attrs,{onInput:m[0]||(m[0]=w=>d.$emit("update:modelValue",w.target.value)),onKeyup:u}),null,16,T3),Y(r)=="password"?(F(),G("span",{key:0,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[1]||(m[1]=ho(w=>f("text"),["enter"])),onClick:m[2]||(m[2]=w=>f("text")),title:d.$t("auth.forms.reveal_password")},[ne(g,{icon:["fas","eye-slash"]})],40,L3)):(F(),G("span",{key:1,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[3]||(m[3]=ho(w=>f("password"),["enter"])),onClick:m[4]||(m[4]=w=>f("password")),title:d.$t("auth.forms.hide_password")},[ne(g,{icon:["fas","eye"]})],40,R3))]),Y(s)?(F(),G("p",{key:0,class:"help is-warning",innerHTML:d.$t("auth.forms.caps_lock_is_on")},null,8,P3)):ce("",!0),e.fieldError!=null?(F(),Xe(b,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):ce("",!0),e.help?(F(),G("p",{key:2,class:"help",innerHTML:d.$t(e.help)},null,8,M3)):ce("",!0),e.showRules?(F(),G("div",I3,[Q("div",N3,[Q("span",$3,we(d.$t("auth.forms.mandatory_rules")),1),H3,Q("span",{class:Se(["is-underscored",{"is-dot":Y(c)}]),id:"valPwdIsLongEnough"},null,2),Pe(we(d.$t("auth.forms.is_long_enough")),1),F3]),Q("div",D3,[Q("span",z3,we(d.$t("auth.forms.optional_rules_you_should_follow")),1),V3,Q("span",{class:Se(["is-underscored",{"is-dot":Y(a)}]),id:"valPwdHasLowerCase"},null,2),Pe(we(d.$t("auth.forms.has_lower_case")),1),j3,Q("span",{class:Se(["is-underscored",{"is-dot":Y(o)}]),id:"valPwdHasUpperCase"},null,2),Pe(we(d.$t("auth.forms.has_upper_case")),1),B3,Q("span",{class:Se(["is-underscored",{"is-dot":Y(l)}]),id:"valPwdHasSpecialChar"},null,2),Pe(we(d.$t("auth.forms.has_special_char")),1),U3,Q("span",{class:Se(["is-underscored",{"is-dot":Y(i)}]),id:"valPwdHasNumber"},null,2),Pe(we(d.$t("auth.forms.has_number")),1)])])):ce("",!0)],2)}}}),W3={class:"field is-flex"},q3=["innerHTML"],G3={class:"control"},Y3={class:"select"},J3=["disabled"],X3=["value"],Q3=["innerHTML"],Z3={__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:""},isIndented:Boolean,isDisabled:Boolean},setup(e){const n=me(e.modelValue);return(r,s)=>{const a=He("FontAwesomeIcon"),o=He("FieldError");return F(),G("div",W3,[e.isIndented?(F(),G("div",{key:0,class:"mx-2 pr-1",style:an({opacity:e.isDisabled?"0.5":"1"})},[ne(a,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):ce("",!0),Q("div",null,[Q("label",{class:"label",innerHTML:r.$t(e.label),style:an({opacity:e.isDisabled?"0.5":"1"})},null,12,q3),Q("div",G3,[Q("div",Y3,[wu(Q("select",{"onUpdate:modelValue":s[0]||(s[0]=i=>Le(n)?n.value=i:null),onChange:s[1]||(s[1]=i=>r.$emit("update:modelValue",i.target.value)),disabled:e.isDisabled},[(F(!0),G(ze,null,Lu(e.options,i=>(F(),G("option",{value:i.value},we(r.$t(i.text)),9,X3))),256))],40,J3),[[dh,Y(n)]])])]),e.fieldError!=null?(F(),Xe(o,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):ce("",!0),e.help?(F(),G("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,Q3)):ce("",!0)])])}}},eb=["aria-labelledby"],tb=["id","innerHTML"],nb={class:"is-toggle buttons"},rb=["id","aria-checked","disabled","onClick","title"],sb=["id","checked","value","disabled"],ab=["innerHTML"],ob=["innerHTML"],ib={__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}){const n=t;function r(s){n("update:modelValue",s)}return(s,a)=>{const o=He("FontAwesomeIcon"),i=He("FieldError");return F(),G("div",{class:Se(["field",{"pt-3":e.hasOffset}]),role:"radiogroup","aria-labelledby":Y(jn)("label",e.fieldName).inputId},[e.label?(F(),G("label",{key:0,id:Y(jn)("label",e.fieldName).inputId,class:"label",innerHTML:s.$t(e.label)},null,8,tb)):ce("",!0),Q("div",nb,[ne(Y(Fd),null,{default:qe(({mode:l})=>[(F(!0),G(ze,null,Lu(e.choices,c=>(F(),G("button",{key:c.value,id:Y(jn)("button",e.fieldName+c.value).inputId,role:"radio",type:"button",class:Se(["button",{"is-link":e.modelValue===c.value,"is-dark":l==="dark","is-multiline":c.legend}]),"aria-checked":e.modelValue===c.value,disabled:e.isDisabled,onClick:ha(u=>r(c.value),["stop"]),title:c.title?c.title:""},[Q("input",{id:Y(jn)("radio",c.value).inputId,type:"radio",class:"is-hidden",checked:e.modelValue===c.value,value:c.value,disabled:e.isDisabled},null,8,sb),c.legend?(F(),G("span",{key:0,innerHTML:s.$t(c.legend),class:"is-block is-size-7"},null,8,ab)):ce("",!0),c.icon?(F(),Xe(o,{key:1,icon:["fas",c.icon],class:"mr-2"},null,8,["icon"])):ce("",!0),Pe(" "+we(s.$t(c.text)),1)],10,rb))),128))]),_:1})]),e.fieldError!=null?(F(),Xe(i,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):ce("",!0),e.help?(F(),G("p",{key:2,class:"help",innerHTML:s.$t(e.help)},null,8,ob)):ce("",!0)],10,eb)}}},lb={class:"field is-flex"},cb=["id","name","disabled"],ub=["for","innerHTML","onKeypress"],fb=["innerHTML"],db=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=t,s=om(),a=se({get(){return n.modelValue},set(i){r("update:modelValue",i)}});function o(){s.disabled!=!0&&(a.value=!a.value)}return(i,l)=>{const c=He("FontAwesomeIcon");return F(),G("div",lb,[e.isIndented?(F(),G("div",{key:0,class:"mx-2 pr-1",style:an({opacity:e.isDisabled?"0.5":"1"})},[ne(c,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):ce("",!0),Q("div",null,[wu(Q("input",{id:e.fieldName,type:"checkbox",name:e.fieldName,class:"is-checkradio is-info","onUpdate:modelValue":l[0]||(l[0]=u=>Le(a)?a.value=u:null),disabled:e.isDisabled},null,8,cb),[[fh,Y(a)]]),Q("label",{tabindex:"0",for:e.fieldName,class:Se(["label",e.labelClass]),innerHTML:i.$t(e.label),onKeypress:ho(ha(o,["prevent"]),["space"])},null,42,ub),e.help?(F(),G("p",{key:0,class:"help",innerHTML:i.$t(e.help)},null,8,fb)):ce("",!0)])])}}}),pb={class:"field is-grouped"},mb={class:"control"},hb={key:0,class:"control"},gb={__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=He("VueButton"),s=He("RouterLink");return F(),G("div",pb,[Q("div",mb,[ne(r,{id:e.submitId,color:e.color,isLoading:e.isBusy,disabled:e.isDisabled},{default:qe(()=>[Pe(we(t.$t(e.caption)),1)]),_:1},8,["id","color","isLoading","disabled"])]),e.showCancelButton?(F(),G("div",hb,[ne(s,{id:e.cancelId,to:{name:e.cancelLandingView},class:"button is-text"},{default:qe(()=>[Pe(we(t.$t("commons.cancel")),1)]),_:1},8,["id","to"])])):ce("",!0)])}}},vb={__name:"Kicker",props:{kickAfter:{type:Number,required:!0}},setup(e){const t=Ge(),n=me(["mousedown","scroll","keypress"]),r=me(null),s=e;je(()=>s.kickAfter,()=>{i()}),Rn(()=>{n.value.forEach(function(c){window.addEventListener(c,i)},this),a()}),ua(()=>{n.value.forEach(function(c){window.removeEventListener(c,i)},this),l()});function a(){r.value=setTimeout(o,s.kickAfter*60*1e3)}function o(){clearTimeout(r.value),t.logout({kicked:!0})}function i(){l(),a()}function l(){clearTimeout(r.value)}return(c,u)=>null}},Mn=yh(eg),zd={prefix:"2fauth_",config:window.appConfig,version:window.appVersion,isDemoApp:window.isDemoApp,isTestingApp:window.isTestingApp,langs:window.appLocales,urls:window.urls};Mn.provide("2fauth",or(zd));const Vd=ng();Vd.use(({store:e})=>{e.$2fauth=zd});Mn.use(Vd);Mn.use(rr);Mn.use(W2,{lang:document.documentElement.lang.substring(0,2),resolve:async e=>{const t=Object.assign({"../lang/php_ar.json":()=>Z(()=>import("./php_ar-B0Klhp6o.js"),[],import.meta.url),"../lang/php_bg.json":()=>Z(()=>import("./php_bg-Chd5OZr1.js"),[],import.meta.url),"../lang/php_da.json":()=>Z(()=>import("./php_da-jT2uuqIL.js"),[],import.meta.url),"../lang/php_de.json":()=>Z(()=>import("./php_de-CoKrWjgn.js"),[],import.meta.url),"../lang/php_en.json":()=>Z(()=>import("./php_en-BiQ_FnWP.js"),[],import.meta.url),"../lang/php_es.json":()=>Z(()=>import("./php_es-Bb5PmW6j.js"),[],import.meta.url),"../lang/php_fr.json":()=>Z(()=>import("./php_fr-BnJxw11S.js"),[],import.meta.url),"../lang/php_hi.json":()=>Z(()=>import("./php_hi-DmYSenvU.js"),[],import.meta.url),"../lang/php_id.json":()=>Z(()=>import("./php_id-DEbtNpni.js"),[],import.meta.url),"../lang/php_it.json":()=>Z(()=>import("./php_it-DUEGlYzS.js"),[],import.meta.url),"../lang/php_ja.json":()=>Z(()=>import("./php_ja-BeClXwe_.js"),[],import.meta.url),"../lang/php_ko.json":()=>Z(()=>import("./php_ko-Rddsr2Bj.js"),[],import.meta.url),"../lang/php_nl.json":()=>Z(()=>import("./php_nl-D9GiR4OO.js"),[],import.meta.url),"../lang/php_pl.json":()=>Z(()=>import("./php_pl-B0Klhp6o.js"),[],import.meta.url),"../lang/php_pt.json":()=>Z(()=>import("./php_pt-DucI-Yi_.js"),[],import.meta.url),"../lang/php_ro.json":()=>Z(()=>import("./php_ro-dfeCo_fC.js"),[],import.meta.url),"../lang/php_ru.json":()=>Z(()=>import("./php_ru-CC34pEtg.js"),[],import.meta.url),"../lang/php_si.json":()=>Z(()=>import("./php_si-DuIH0_oO.js"),[],import.meta.url),"../lang/php_tr.json":()=>Z(()=>import("./php_tr-CkDfHBb5.js"),[],import.meta.url),"../lang/php_zh.json":()=>Z(()=>import("./php_zh-CiLNc0zd.js"),[],import.meta.url)});if(e.includes("php_"))return await t[`../lang/${e}.json`]()}});Mn.use(Ih);Mn.component("FontAwesomeIcon",Zv).component("ResponsiveWidthWrapper",wy).component("FormWrapper",Sy).component("VueFooter",s3).component("Modal",d3).component("VueButton",m3).component("ButtonBackCloseCancel",v3).component("FieldError",w3).component("FormField",k3).component("FormPasswordField",K3).component("FormSelect",Z3).component("FormToggle",ib).component("FormCheckbox",db).component("FormButtons",gb).component("Kicker",vb);Mn.mount("#app");Ge().applyUserPrefs();export{Cu as $,yb as A,Qn as B,ha as C,Le as D,Lu as E,ze as F,dh as G,Je as H,Y2 as I,yr as J,pc as K,nt as L,ya as M,lr as N,lt as O,Ln as P,wb as Q,ad as R,_b as S,J2 as T,Fd as U,ui as V,fh as W,Wu as X,Sb as Y,jn as Z,yf as _,wt as a,bb as a0,Af as a1,Eb as a2,Pn as a3,es as a4,hy as a5,Q2 as a6,xb as a7,sd as b,$t as c,G as d,Q as e,Y as f,Pe as g,Xe as h,ce as i,ne as j,qe as k,He as l,F as m,Se as n,Rn as o,H1 as p,fn as q,me as r,je as s,we as t,Ge as u,ua as v,ho as w,se as x,an as y,wu as z}; diff --git a/public/build/assets/app-CLbIVRQ8.css b/public/build/assets/app-DCHjhP3L.css similarity index 100% rename from public/build/assets/app-CLbIVRQ8.css rename to public/build/assets/app-DCHjhP3L.css diff --git a/public/build/assets/appSettingsUpdater-B1wtRdsR.js b/public/build/assets/appSettingsUpdater-B1wtRdsR.js deleted file mode 100644 index 4e4fd98d..00000000 --- a/public/build/assets/appSettingsUpdater-B1wtRdsR.js +++ /dev/null @@ -1 +0,0 @@ -import{a6 as u,a,H as i}from"./app-D4Udf6Mm.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */async function c(n,e,o=!1){let s=null,r=null;return await u.update(n,e,{returnError:!0}).then(t=>{s=e,a().success({type:"is-success",text:i("settings.forms.setting_saved")})}).catch(t=>{o&&t.response.status===422?r=t:a().error(t)}),{data:s,error:r}}export{c as u}; diff --git a/public/build/assets/appSettingsUpdater-DcxdiO4R.js b/public/build/assets/appSettingsUpdater-DcxdiO4R.js new file mode 100644 index 00000000..ecb7a3cb --- /dev/null +++ b/public/build/assets/appSettingsUpdater-DcxdiO4R.js @@ -0,0 +1 @@ +import{a7 as u,b as a,H as i}from"./app-CuhK3jij.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */async function c(n,e,o=!1){let s=null,r=null;return await u.update(n,e,{returnError:!0}).then(t=>{s=e,a().success({type:"is-success",text:i("settings.forms.setting_saved")})}).catch(t=>{o&&t.response.status===422?r=t:a().error(t)}),{data:s,error:r}}export{c as u}; diff --git a/public/build/assets/bus-RVphoWuw.js b/public/build/assets/bus-BalNs30H.js similarity index 77% rename from public/build/assets/bus-RVphoWuw.js rename to public/build/assets/bus-BalNs30H.js index 94cea236..a0b568b5 100644 --- a/public/build/assets/bus-RVphoWuw.js +++ b/public/build/assets/bus-BalNs30H.js @@ -1 +1 @@ -import{a4 as e}from"./app-D4Udf6Mm.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const r=e({id:"bus",state:()=>({migrationUri:null,decodedUri:null,inManagementMode:!1,editedGroupName:null,username:null}),actions:{}});export{r as u}; +import{a5 as e}from"./app-CuhK3jij.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const r=e({id:"bus",state:()=>({migrationUri:null,decodedUri:null,inManagementMode:!1,editedGroupName:null,username:null}),actions:{}});export{r as u}; diff --git a/public/build/assets/php_pl-B0Klhp6o.js b/public/build/assets/php_ar-DkAJ05Mp.js similarity index 99% rename from public/build/assets/php_pl-B0Klhp6o.js rename to public/build/assets/php_ar-DkAJ05Mp.js index a32db4a3..06670227 100644 --- a/public/build/assets/php_pl-B0Klhp6o.js +++ b/public/build/assets/php_ar-DkAJ05Mp.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","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.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Are you sure you want to log out?","auth.confirm.revoke_device":"Are you sure you want to revoke this device?","auth.confirm.delete_account":"Are you sure you want to delete your account?","auth.webauthn.security_device":"a security device","auth.webauthn.security_devices":"Security devices","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

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

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

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

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","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.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Are you sure you want to log out?","auth.confirm.revoke_device":"Are you sure you want to revoke this device?","auth.confirm.delete_account":"Are you sure you want to delete your account?","auth.webauthn.security_device":"a security device","auth.webauthn.security_devices":"Security devices","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

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

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

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

\r Attention! The Email & Password form remains available despite this option being enabled, but it will always return an 'Authentication failed' response.`,"auth.webauthn.need_a_security_device_to_enable_options":"Set at least one device to enable the following options","auth.webauthn.options":"Options","auth.forms.name":"Name","auth.forms.login":"Login","auth.forms.webauthn_login":"WebAuthn login","auth.forms.sso_login":"SSO 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.sso_only_form_restricted_to_admin":"Regular users must sign in with SSO. Other methods are for administrators only.","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","auth.sso_providers.unknown":"unknown","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","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.send":"Send","commons.optimize":"Optimize","commons.IP":"IP","commons.browser":"Browser","commons.operating_system_short":"OS","commons.no_entry_yet":"No entry yet","commons.time":"Time","commons.ip_address":"IP Address","commons.device":"Device","commons.one_month":"1 mo.","commons.x_month":":x mos.","commons.one_year":"1 yr.","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 or SSO","errors.unsupported_with_sso_only":"This authentication method is for administrators only. Users must log in with SSO.","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.cannot_demote_the_only_admin":"Cannot demote 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.cannot_detect_qrcode_in_image":"Cannot detect a QR code in the image, try to crop the image","errors.cannot_decode_detected_qrcode":"Cannot decode detected QR code, try to crop or sharpen the image","errors.qrcode_has_invalid_checksum":"QR code has invalid checksum","errors.no_readable_qrcode":"No readable QR code","errors.failed_icon_store_database_toggling":"Migration of icons failed. The setting has been restored to its previous value.","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)","languages.tr":"Türkçe (Turkish)","notifications.hello":"Hello","notifications.hello_user":"Hello :username,","notifications.regards":"Regards","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 :)","notifications.new_device.subject":"Connection to 2FAuth from a new device","notifications.new_device.resume":"A new device has just connected to your 2FAuth account.","notifications.new_device.connection_details":"Here are the details of this connection","notifications.new_device.recommandations":"If this was you, you can ignore this alert. If you suspect any suspicious activity on your account, please change your password.","notifications.failed_login.subject":"Failed login to 2FAuth","notifications.failed_login.resume":"There has been a failed login attempt to your 2FAuth account.","notifications.failed_login.connection_details":"Here are the details of this connection attempt","notifications.failed_login.recommandations":"If this was you, you can ignore this alert. If further attempts fail, you should contact the 2FAuth administrator to review security settings and take action against this attacker.","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.notifications":"Notifications","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.timezone.label":"Time zone","settings.forms.timezone.help":"The time zone applied to all dates and times displayed in the application","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":"Click on a generated password to copy it automatically hides it from the screen","settings.forms.auto_close_timeout.label":'Auto close OTP',"settings.forms.auto_close_timeout.help":"Automatically hide on-screen password after a timeout. This avoids unnecessary requests for fresh passwords if you forget to close the password view.","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.sort_case_sensitive.label":"Sort case sensitive","settings.forms.sort_case_sensitive.help":"When invoked, force the Sort function to sort accounts on a case-sensitive basis","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 account icons 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.auto_save_qrcoded_account.label":"Auto-save accounts","settings.forms.auto_save_qrcoded_account.help":"New accounts are automatically registered after scanning or uploading a QR code, no need to click a Save button","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.notify_on_new_auth_device.label":"On new device","settings.forms.notify_on_new_auth_device.help":"Get an email when a new device connects to your 2FAuth account for the first time","settings.forms.notify_on_failed_login.label":"On failed login","settings.forms.notify_on_failed_login.help":"Get an email each time an attempt to connect to your 2FAuth account fails","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","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.2_minutes":"After 2 minutes","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","titles.admin.logs.access":"Access log","twofaccounts.service":"Service","twofaccounts.account":"Account","twofaccounts.icon":"Icon","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_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","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.group.label":"Group","twofaccounts.forms.group.help":"The group to which the account is to be assigned","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 field must be accepted.","validation.accepted_if":"The :attribute field must be accepted when :other is :value.","validation.active_url":"The :attribute field must be a valid URL.","validation.after":"The :attribute field must be a date after :date.","validation.after_or_equal":"The :attribute field must be a date after or equal to :date.","validation.alpha":"The :attribute field must only contain letters.","validation.alpha_dash":"The :attribute field must only contain letters, numbers, dashes, and underscores.","validation.alpha_num":"The :attribute field must only contain letters and numbers.","validation.array":"The :attribute field must be an array.","validation.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","validation.before":"The :attribute field must be a date before :date.","validation.before_or_equal":"The :attribute field must be a date before or equal to :date.","validation.between.array":"The :attribute field must have between :min and :max items.","validation.between.file":"The :attribute field must be between :min and :max kilobytes.","validation.between.numeric":"The :attribute field must be between :min and :max.","validation.between.string":"The :attribute field 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 field confirmation does not match.","validation.contains":"The :attribute field is missing a required value.","validation.current_password":"The password is incorrect.","validation.date":"The :attribute field must be a valid date.","validation.date_equals":"The :attribute field must be a date equal to :date.","validation.date_format":"The :attribute field must match the format :format.","validation.decimal":"The :attribute field must have :decimal decimal places.","validation.declined":"The :attribute field must be declined.","validation.declined_if":"The :attribute field must be declined when :other is :value.","validation.different":"The :attribute field and :other must be different.","validation.digits":"The :attribute field must be :digits digits.","validation.digits_between":"The :attribute field must be between :min and :max digits.","validation.dimensions":"The :attribute field has invalid image dimensions.","validation.distinct":"The :attribute field has a duplicate value.","validation.doesnt_end_with":"The :attribute field must not end with one of the following: :values.","validation.doesnt_start_with":"The :attribute field must not start with one of the following: :values.","validation.email":"The :attribute field must be a valid email address.","validation.ends_with":"The :attribute field 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 field must be a file.","validation.filled":"The :attribute field must have a value.","validation.gt.array":"The :attribute field must have more than :value items.","validation.gt.file":"The :attribute field must be greater than :value kilobytes.","validation.gt.numeric":"The :attribute field must be greater than :value.","validation.gt.string":"The :attribute field must be greater than :value characters.","validation.gte.array":"The :attribute field must have :value items or more.","validation.gte.file":"The :attribute field must be greater than or equal to :value kilobytes.","validation.gte.numeric":"The :attribute field must be greater than or equal to :value.","validation.gte.string":"The :attribute field 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 field must be an image.","validation.in":"The selected :attribute is invalid.","validation.in_array":"The :attribute field must exist in :other.","validation.integer":"The :attribute field must be an integer.","validation.ip":"The :attribute field must be a valid IP address.","validation.ipv4":"The :attribute field must be a valid IPv4 address.","validation.ipv6":"The :attribute field must be a valid IPv6 address.","validation.json":"The :attribute field must be a valid JSON string.","validation.list":"The :attribute field must be a list.","validation.lowercase":"The :attribute field must be lowercase.","validation.lt.array":"The :attribute field must have less than :value items.","validation.lt.file":"The :attribute field must be less than :value kilobytes.","validation.lt.numeric":"The :attribute field must be less than :value.","validation.lt.string":"The :attribute field must be less than :value characters.","validation.lte.array":"The :attribute field must not have more than :value items.","validation.lte.file":"The :attribute field must be less than or equal to :value kilobytes.","validation.lte.numeric":"The :attribute field must be less than or equal to :value.","validation.lte.string":"The :attribute field must be less than or equal to :value characters.","validation.mac_address":"The :attribute field must be a valid MAC address.","validation.max.array":"The :attribute field must not have more than :max items.","validation.max.file":"The :attribute field must not be greater than :max kilobytes.","validation.max.numeric":"The :attribute field must not be greater than :max.","validation.max.string":"The :attribute field must not be greater than :max characters.","validation.max_digits":"The :attribute field must not have more than :max digits.","validation.mimes":"The :attribute field must be a file of type: :values.","validation.mimetypes":"The :attribute field must be a file of type: :values.","validation.min.array":"The :attribute field must have at least :min items.","validation.min.file":"The :attribute field must be at least :min kilobytes.","validation.min.numeric":"The :attribute field must be at least :min.","validation.min.string":"The :attribute field must be at least :min characters.","validation.min_digits":"The :attribute field 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 field must be a multiple of :value.","validation.not_in":"The selected :attribute is invalid.","validation.not_regex":"The :attribute field format is invalid.","validation.numeric":"The :attribute field must be a number.","validation.password.letters":"The :attribute field must contain at least one letter.","validation.password.mixed":"The :attribute field must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The :attribute field must contain at least one number.","validation.password.symbols":"The :attribute field 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 field 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_if_declined":"The :attribute field is required when :other is declined.","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 field must match :other.","validation.size.array":"The :attribute field must contain :size items.","validation.size.file":"The :attribute field must be :size kilobytes.","validation.size.numeric":"The :attribute field must be :size.","validation.size.string":"The :attribute field must be :size characters.","validation.starts_with":"The :attribute field must start with one of the following: :values.","validation.string":"The :attribute field must be a string.","validation.timezone":"The :attribute field 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 field must be a valid URL.","validation.ulid":"The :attribute field must be a valid ULID.","validation.uuid":"The :attribute field 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.IsValidRegex":"The :attribute field must be a valid regex pattern.","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 field is not a valid otpauth uri.","validation.custom.otp_type.in":"The :attribute field 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 field must be a base32 encoded string.","validation.custom.account.regex":"The :attribute field must not contain colon.","validation.custom.service.regex":"The :attribute field 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_bg-Chd5OZr1.js b/public/build/assets/php_bg-CoUSxAMd.js similarity index 99% rename from public/build/assets/php_bg-Chd5OZr1.js rename to public/build/assets/php_bg-CoUSxAMd.js index 8d53827a..06723eca 100644 --- a/public/build/assets/php_bg-Chd5OZr1.js +++ b/public/build/assets/php_bg-CoUSxAMd.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","auth.failed":"Тези идентификационни данни не съответстват на нашите записи.","auth.password":"Предоставената парола е неправилна.","auth.throttle":"Твърде много опити за влизане. Опитайте се пак след :seconds секунди.","auth.sign_out":"Изход","auth.sign_in":"Вход","auth.sign_in_using":"Влизане с","auth.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","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.

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

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","auth.failed":"Тези идентификационни данни не съответстват на нашите записи.","auth.password":"Предоставената парола е неправилна.","auth.throttle":"Твърде много опити за влизане. Опитайте се пак след :seconds секунди.","auth.sign_out":"Изход","auth.sign_in":"Вход","auth.sign_in_using":"Влизане с","auth.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","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 удостоверяване.

\r + 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.

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

\r внимание! Формулярът за имейл и парола остава достъпен, въпреки че тази опция е активирана, но винаги ще връща отговор „Неуспешно удостоверяване“.`,"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.sso_login":"SSO login","auth.forms.email":"Имейл","auth.forms.password":"Парола","auth.forms.reveal_password":"Покажи паролата","auth.forms.hide_password":"Скрий паролата","auth.forms.confirm_password":"Потвърждаване на паролата","auth.forms.new_password":"New password","auth.forms.confirm_new_password":"Потвърди новата парола","auth.forms.dont_have_account_yet":"Все още нямате акаунт?","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.sso_only_form_restricted_to_admin":"Regular users must sign in with SSO. Other methods are for administrators only.","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":"Главните букви са включени","auth.sso_providers.unknown":"unknown","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","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.send":"Send","commons.optimize":"Optimize","commons.IP":"IP","commons.browser":"Browser","commons.operating_system_short":"OS","commons.no_entry_yet":"No entry yet","commons.time":"Time","commons.ip_address":"IP Address","commons.device":"Device","commons.one_month":"1 mo.","commons.x_month":":x mos.","commons.one_year":"1 yr.","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":"Not applicable when using an auth proxy or SSO","errors.unsupported_with_sso_only":"This authentication method is for administrators only. Users must log in with SSO.","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.cannot_demote_the_only_admin":"Cannot demote 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.cannot_detect_qrcode_in_image":"Cannot detect a QR code in the image, try to crop the image","errors.cannot_decode_detected_qrcode":"Cannot decode detected QR code, try to crop or sharpen the image","errors.qrcode_has_invalid_checksum":"QR code has invalid checksum","errors.no_readable_qrcode":"No readable QR code","errors.failed_icon_store_database_toggling":"Migration of icons failed. The setting has been restored to its previous value.","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)","languages.tr":"Türkçe (Turkish)","notifications.hello":"Hello","notifications.hello_user":"Hello :username,","notifications.regards":"Regards","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 :)","notifications.new_device.subject":"Connection to 2FAuth from a new device","notifications.new_device.resume":"A new device has just connected to your 2FAuth account.","notifications.new_device.connection_details":"Here are the details of this connection","notifications.new_device.recommandations":"If this was you, you can ignore this alert. If you suspect any suspicious activity on your account, please change your password.","notifications.failed_login.subject":"Failed login to 2FAuth","notifications.failed_login.resume":"There has been a failed login attempt to your 2FAuth account.","notifications.failed_login.connection_details":"Here are the details of this connection attempt","notifications.failed_login.recommandations":"If this was you, you can ignore this alert. If further attempts fail, you should contact the 2FAuth administrator to review security settings and take action against this attacker.","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.notifications":"Notifications","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.timezone.label":"Time zone","settings.forms.timezone.help":"The time zone applied to all dates and times displayed in the application","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":"Click on a generated password to copy it automatically hides it from the screen","settings.forms.auto_close_timeout.label":'Auto close OTP',"settings.forms.auto_close_timeout.help":"Automatically hide on-screen password after a timeout. This avoids unnecessary requests for fresh passwords if you forget to close the password view.","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.sort_case_sensitive.label":"Sort case sensitive","settings.forms.sort_case_sensitive.help":"When invoked, force the Sort function to sort accounts on a case-sensitive basis","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":"Show account icons in the main view","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.auto_save_qrcoded_account.label":"Auto-save accounts","settings.forms.auto_save_qrcoded_account.help":"New accounts are automatically registered after scanning or uploading a QR code, no need to click a Save button","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.notify_on_new_auth_device.label":"On new device","settings.forms.notify_on_new_auth_device.help":"Get an email when a new device connects to your 2FAuth account for the first time","settings.forms.notify_on_failed_login.label":"On failed login","settings.forms.notify_on_failed_login.help":"Get an email each time an attempt to connect to your 2FAuth account fails","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","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.2_minutes":"After 2 minutes","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","titles.admin.logs.access":"Access log","twofaccounts.service":"Услуга","twofaccounts.account":"Профил","twofaccounts.icon":"Икона","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_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","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.group.label":"Group","twofaccounts.forms.group.help":"The group to which the account is to be assigned","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.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","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.can":"The :attribute field contains an unauthorized value.","validation.confirmed":"Потвърждението на полето :attribute не съвпада.","validation.contains":"The :attribute field is missing a required value.","validation.current_password":"Паролата е грешна.","validation.date":"Полето :attribute не е валидна дата.","validation.date_equals":"Полето :attribute трябва да е дата равна на :date.","validation.date_format":"Полето :attribute не съвпада с формата :format.","validation.decimal":"The :attribute field must have :decimal decimal places.","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.extensions":"The :attribute field must have one of the following extensions: :values.","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.hex_color":"The :attribute field must be a valid hexadecimal color.","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.list":"The :attribute field must be a list.","validation.lowercase":"The :attribute field must be lowercase.","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.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":"Числото :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.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":"Поле :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_if_declined":"The :attribute field is required when :other is declined.","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.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.IsValidRegex":"The :attribute must be a valid regex pattern.","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_da-jT2uuqIL.js b/public/build/assets/php_da-Dktu4lBQ.js similarity index 99% rename from public/build/assets/php_da-jT2uuqIL.js rename to public/build/assets/php_da-Dktu4lBQ.js index 7c103012..f3b2904c 100644 --- a/public/build/assets/php_da-jT2uuqIL.js +++ b/public/build/assets/php_da-Dktu4lBQ.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","auth.failed":"Brugernavn eller password findes ikke.","auth.password":"Forkert password.","auth.throttle":"For mange forkerte indtastninger. Prøv igen om :seconds sekunder.","auth.sign_out":"Log af","auth.sign_in":"Log på","auth.sign_in_using":"Log ind med","auth.if_administrator":"Administrator?","auth.sign_in_here":"Du kan looge ind uden SSO","auth.or_continue_with":"Du kan fortsætte med:","auth.password_login_and_webauthn_are_disabled":"Password og WebAuthN er deaktiveret.","auth.sign_in_using_sso":"Vælg din SSO udbyder for at logge ind:","auth.no_provider":"Ingen udbyder","auth.no_sso_provider_or_provider_is_missing":"Mangler udbyderen?","auth.see_how_to_enable_sso":"Se hvordan man aktiverer en udbyder","auth.sign_in_using_security_device":"Log på med en sikker enhed","auth.login_and_password":"Login og password","auth.register":"Opret","auth.welcome_to_2fauth":"Velkommen til 2FAuth","auth.autolock_triggered":"Auto-lås udført","auth.autolock_triggered_punchline":"Auto-lås udført, du er blevet logget ud","auth.already_authenticated":"Allerede autoriseret, log venligst ud først","auth.authentication":"Autorisation","auth.maybe_later":"Måske senere","auth.user_account_controlled_by_proxy":"Brugerkonto gjort tilgængelig af en godkendelsesproxy.
Administrer kontoen på proxy-niveau.","auth.auth_handled_by_proxy":"Godkendelse håndteret af en omvendt proxy, indstillingerne herunder er deaktiveret.
Administrer godkendelse på proxy niveau.","auth.sso_only_x_settings_are_disabled":"Authentication er begrænset til kun SSO, :auth_method er deaktiveret","auth.confirm.logout":"Er du sikker på at du vil logge af?","auth.confirm.revoke_device":"Er du sikker på, at du vil tilbagekalde denne enhed?","auth.confirm.delete_account":"Er du helt sikker på, at du vil slette din konto?","auth.webauthn.security_device":"en sikkerhedsenhed","auth.webauthn.security_devices":"Sikkerhedsenheder","auth.webauthn.security_devices_legend":"Autentificeringsenheder, du kan bruge til at logge på 2FAuth, såsom sikkerhedstaster (dvs. Yubikey) eller smartphones med biometriske funktioner (dvs. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`Du kan forbedre sikkerheden på din 2FAuth konto ved at aktivere WebAuthn godkendelse.

- WebAuthn giver dig mulighed for at bruge betroede enheder (som Yubikeys eller smartphones med biometriske evner) til at logge ind hurtigt og mere sikkert.`,"auth.webauthn.use_security_device_to_sign_in":"Gør dig klar til at godkende ved hjælp af (en af) dine sikkerhedsenheder. Tilslut din nøgle i, fjern ansigtsmaske eller handsker, osv.","auth.webauthn.lost_your_device":"Har du mistet din enhed?","auth.webauthn.recover_your_account":"Gendan din konto","auth.webauthn.account_recovery":"Kontogendannelse","auth.webauthn.recovery_punchline":"2FAuth vil sende et link til genoprettelse af adgang via denne e-mail adresse. Tryk på linket i mailen og følg instruktionerne.

Åben kun linket på din egen enhed.","auth.webauthn.send_recovery_link":"Send gendannelseslink","auth.webauthn.account_recovery_email_sent":"Mail til kontogendannelse afsendt!","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":"Registrer en ny enhed","auth.webauthn.register_a_device":"Registrer en enhed","auth.webauthn.device_successfully_registered":"Enhed blev registreret","auth.webauthn.device_revoked":"Enheden blev tilbagekaldt","auth.webauthn.revoking_a_device_is_permanent":"Tilbagekaldelse af en enhed er permanent","auth.webauthn.recover_account_instructions":"For at gendanne din konto, nulstiller 2FAuth nogle Webauthn indstillinger, så du vil være i stand til at logge ind ved hjælp af din e-mail og adgangskode.","auth.webauthn.invalid_recovery_token":"Ugyldig recovery token","auth.webauthn.webauthn_login_disabled":"Webauthn er deaktiveret","auth.webauthn.invalid_reset_token":"Denne nulstillingstoken er ugyldig.","auth.webauthn.rename_device":"Omdøb enhed","auth.webauthn.my_device":"Min enhed","auth.webauthn.unknown_device":"Unknown device","auth.webauthn.use_webauthn_only.label":"Brug kun WebAuthn","auth.webauthn.use_webauthn_only.help":`Gør WebAuthn til den eneste autoriserede metode til at logge ind på din 2FAuth konto. Dette er den anbefalede opsætning for at drage fordel af WebAuthn forbedret sikkerhed.

- I tilfælde af tab af enhed du vil være i stand til at gendanne din konto ved at nulstille denne indstilling og logge på med din e-mail og adgangskode.

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","auth.failed":"Brugernavn eller password findes ikke.","auth.password":"Forkert password.","auth.throttle":"For mange forkerte indtastninger. Prøv igen om :seconds sekunder.","auth.sign_out":"Log af","auth.sign_in":"Log på","auth.sign_in_using":"Log ind med","auth.if_administrator":"Administrator?","auth.sign_in_here":"Du kan looge ind uden SSO","auth.or_continue_with":"Du kan fortsætte med:","auth.password_login_and_webauthn_are_disabled":"Password og WebAuthN er deaktiveret.","auth.sign_in_using_sso":"Vælg din SSO udbyder for at logge ind:","auth.no_provider":"Ingen udbyder","auth.no_sso_provider_or_provider_is_missing":"Mangler udbyderen?","auth.see_how_to_enable_sso":"Se hvordan man aktiverer en udbyder","auth.sign_in_using_security_device":"Log på med en sikker enhed","auth.login_and_password":"Login og password","auth.register":"Opret","auth.welcome_to_2fauth":"Velkommen til 2FAuth","auth.autolock_triggered":"Auto-lås udført","auth.autolock_triggered_punchline":"Auto-lås udført, du er blevet logget ud","auth.already_authenticated":"Allerede autoriseret, log venligst ud først","auth.authentication":"Autorisation","auth.maybe_later":"Måske senere","auth.user_account_controlled_by_proxy":"Brugerkonto gjort tilgængelig af en godkendelsesproxy.
Administrer kontoen på proxy-niveau.","auth.auth_handled_by_proxy":"Godkendelse håndteret af en omvendt proxy, indstillingerne herunder er deaktiveret.
Administrer godkendelse på proxy niveau.","auth.sso_only_x_settings_are_disabled":"Authentication er begrænset til kun SSO, :auth_method er deaktiveret","auth.confirm.logout":"Er du sikker på at du vil logge af?","auth.confirm.revoke_device":"Er du sikker på, at du vil tilbagekalde denne enhed?","auth.confirm.delete_account":"Er du helt sikker på, at du vil slette din konto?","auth.webauthn.security_device":"en sikkerhedsenhed","auth.webauthn.security_devices":"Sikkerhedsenheder","auth.webauthn.security_devices_legend":"Autentificeringsenheder, du kan bruge til at logge på 2FAuth, såsom sikkerhedstaster (dvs. Yubikey) eller smartphones med biometriske funktioner (dvs. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`Du kan forbedre sikkerheden på din 2FAuth konto ved at aktivere WebAuthn godkendelse.

\r + WebAuthn giver dig mulighed for at bruge betroede enheder (som Yubikeys eller smartphones med biometriske evner) til at logge ind hurtigt og mere sikkert.`,"auth.webauthn.use_security_device_to_sign_in":"Gør dig klar til at godkende ved hjælp af (en af) dine sikkerhedsenheder. Tilslut din nøgle i, fjern ansigtsmaske eller handsker, osv.","auth.webauthn.lost_your_device":"Har du mistet din enhed?","auth.webauthn.recover_your_account":"Gendan din konto","auth.webauthn.account_recovery":"Kontogendannelse","auth.webauthn.recovery_punchline":"2FAuth vil sende et link til genoprettelse af adgang via denne e-mail adresse. Tryk på linket i mailen og følg instruktionerne.

Åben kun linket på din egen enhed.","auth.webauthn.send_recovery_link":"Send gendannelseslink","auth.webauthn.account_recovery_email_sent":"Mail til kontogendannelse afsendt!","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":"Registrer en ny enhed","auth.webauthn.register_a_device":"Registrer en enhed","auth.webauthn.device_successfully_registered":"Enhed blev registreret","auth.webauthn.device_revoked":"Enheden blev tilbagekaldt","auth.webauthn.revoking_a_device_is_permanent":"Tilbagekaldelse af en enhed er permanent","auth.webauthn.recover_account_instructions":"For at gendanne din konto, nulstiller 2FAuth nogle Webauthn indstillinger, så du vil være i stand til at logge ind ved hjælp af din e-mail og adgangskode.","auth.webauthn.invalid_recovery_token":"Ugyldig recovery token","auth.webauthn.webauthn_login_disabled":"Webauthn er deaktiveret","auth.webauthn.invalid_reset_token":"Denne nulstillingstoken er ugyldig.","auth.webauthn.rename_device":"Omdøb enhed","auth.webauthn.my_device":"Min enhed","auth.webauthn.unknown_device":"Unknown device","auth.webauthn.use_webauthn_only.label":"Brug kun WebAuthn","auth.webauthn.use_webauthn_only.help":`Gør WebAuthn til den eneste autoriserede metode til at logge ind på din 2FAuth konto. Dette er den anbefalede opsætning for at drage fordel af WebAuthn forbedret sikkerhed.

\r + I tilfælde af tab af enhed du vil være i stand til at gendanne din konto ved at nulstille denne indstilling og logge på med din e-mail og adgangskode.

\r Attention! E- mail- og adgangskodeformularen forbliver tilgængelig på trods af at dette er aktiveret, men den vil altid returnere et 'Godkendelse' svar.`,"auth.webauthn.need_a_security_device_to_enable_options":"Angiv mindst én enhed for at aktivere følgende indstillinger","auth.webauthn.options":"Indstillinger","auth.forms.name":"Navn","auth.forms.login":"Login","auth.forms.webauthn_login":"WebAuthn login","auth.forms.sso_login":"SSO-login","auth.forms.email":"E-mail","auth.forms.password":"Adgangskode","auth.forms.reveal_password":"Vis adgangskode","auth.forms.hide_password":"Skjul adgangskode","auth.forms.confirm_password":"Bekræft adgangskode","auth.forms.new_password":"Ny adgangskode","auth.forms.confirm_new_password":"Bekræft ny adgangskode","auth.forms.dont_have_account_yet":"Har du ikke din konto endnu?","auth.forms.already_register":"Allerede registreret?","auth.forms.authentication_failed":"Godkendelse mislykkedes","auth.forms.forgot_your_password":"Glemt din adgangskode?","auth.forms.request_password_reset":"Nulstil det","auth.forms.reset_your_password":"Nulstil din adgangskode","auth.forms.reset_password":"Nulstil adgangskode","auth.forms.disabled_in_demo":"Funktionen er deaktiveret i demotilstand","auth.forms.sso_only_form_restricted_to_admin":"Almindelige brugere skal logge ind med SSO. Andre metoder er kun for administratorer.","auth.forms.current_password.label":"Nuværende adgangskode","auth.forms.current_password.help":"Udfyld din nuværende adgangskode for at bekræfte, at det er dig","auth.forms.change_password":"Skift adgangskode","auth.forms.send_password_reset_link":"Send link til nulstilling af adgangskode","auth.forms.password_successfully_reset":"Adgangskoden blev ændret","auth.forms.edit_account":"Rediger konto","auth.forms.profile_saved":"Profilen blev opdateret.","auth.forms.welcome_to_demo_app_use_those_credentials":"Velkommen til 2FAuth demo.

Du kan oprette forbindelse ved hjælp af e-mailadressen demo@2fauth.app og adgangskoden demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Velkommen til 2FAuth testinstansen.

Brug e-mail adresse testing@2fauth.app og adgangskode adgangskode","auth.forms.register_punchline":"Velkommen til 2FAuth.
Du har brug for en konto for at gå videre, registrer dig selv.","auth.forms.reset_punchline":"2FAuth vil sende dig et link til nulstilling af adgangskode til denne adresse. Klik på linket i den modtagne e-mail for at angive en ny adgangskode.","auth.forms.name_this_device":"Navngiv denne enhed","auth.forms.delete_account":"Slet konto","auth.forms.delete_your_account":"Slet din konto","auth.forms.delete_your_account_and_reset_all_data":"Din brugerkonto vil blive slettet såvel som alle dine 2FA-data. Der er ingen vej tilbage.","auth.forms.reset_your_password_to_delete_your_account":"Hvis du altid har brugt SSO til at logge på, log ud og brug derefter funktionen nulstil adgangskode til at få en adgangskode, så du kan udfylde denne formular.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Sletning af din 2FAuth konto har ingen indvirkning på din eksterne SSO-konto.","auth.forms.user_account_successfully_deleted":"Brugerkonto blev slettet","auth.forms.has_lower_case":"Har små bogstaver","auth.forms.has_upper_case":"Har store bogstaver","auth.forms.has_special_char":"Har specialtegn","auth.forms.has_number":"Har tal","auth.forms.is_long_enough":"min. 8 karakterer","auth.forms.mandatory_rules":"Obligatorisk","auth.forms.optional_rules_you_should_follow":"Anbefalet (højt)","auth.forms.caps_lock_is_on":"Caps lock er tændt","auth.sso_providers.unknown":"ukendt","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","commons.cancel":"Annuller","commons.update":"Opdater","commons.copy":"Kopier","commons.copy_to_clipboard":"Kopier til udklipsholder","commons.copied_to_clipboard":"Kopieret til udklipsholder","commons.profile":"Profil","commons.edit":"Rediger","commons.delete":"Slet","commons.disable":"Deaktiver","commons.enable":"Aktiver","commons.create":"Opret","commons.save":"Gem","commons.close":"Luk","commons.clear":"Ryd","commons.clear_search":"Ryd søgning","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":"Navn","commons.manage":"Administrer","commons.done":"Færdig","commons.new":"Ny","commons.back":"Tilbage","commons.move":"Flyt","commons.export":"Eksporter","commons.all":"Alle","commons.check_all":"Alle","commons.select_all":"Vælg alle","commons.clear_selection":"Fravælg alle","commons.sort_descending":"Sorter faldende","commons.sort_ascending":"Sorter stigende","commons.rename":"Omdøb","commons.new_name":"Nyt navn","commons.options":"Indstillinger","commons.reload":"Genindlæs","commons.refresh":"Opdater","commons.data_refreshed_to_reflect_server_changes":"Data er blevet opdateret, så de afspejler ændringer på serversiden","commons.generate":"Generer","commons.generating_otp":"Genererer OTP","commons.open_in_browser":"Åbn i browser","commons.continue":"Fortsæt","commons.discard":"Kasser","commons.about":"Om","commons.usefull_links":"Brugbare links","commons.environment":"Miljø","commons.credits":"Tak til","commons.2fauth_teaser":"En web-app til at administrere dine to-faktor godkendelse (2FA) konti og generere deres sikkerhedskoder","commons.made_with":"Lavet med","commons.ui_icons_by":"UI-ikoner af","commons.logos_by":"Logoer af","commons.search":"Søg","commons.resources":"Ressourcer","commons.check_for_update":"Kontrollér for ny version","commons.check_for_update_help":"Kontroller automatisk (én gang om ugen) og advarer når en ny udgivelse af 2FAuth er offentliggjort på Github","commons.you_are_up_to_date":"Denne instans er up-to-date","commons.2fauth_description":"En web-app til at administrere dine to-faktor godkendelse (2FA) konti og generere deres sikkerhedskoder","commons.image_of_qrcode_to_scan":"Billede af en QR-kode, der skal scannes","commons.file":"Fil","commons.or":"ELLER","commons.close_the_x_page":"Luk siden :pagetitle","commons.submit":"Bekræft","commons.default":"Standard","commons.back_to_home":"Tilbage til startsiden","commons.nothing":"intet","commons.no_result":"Ingen resultater","commons.information":"Information","commons.send":"Send","commons.optimize":"Optimér","commons.IP":"IP","commons.browser":"Browser","commons.operating_system_short":"Styresystem","commons.no_entry_yet":"Ingen indtastning endnu","commons.time":"Tid","commons.ip_address":"IP-adresse","commons.device":"Enhed","commons.one_month":"1 md.","commons.x_month":":x mdr.","commons.one_year":"1 år.","errors.resource_not_found":"Ressource ikke fundet","errors.error_occured":"En fejl opstod:","errors.refresh":"Opdater","errors.no_valid_otp":"Ingen gyldig OTP-ressource i denne QR-kode","errors.something_wrong_with_server":"Noget er galt med din server","errors.Unable_to_decrypt_uri":"Kan ikke dekryptere uri","errors.not_a_supported_otp_type":"Dette OTP-format understøttes ikke i øjeblikket","errors.cannot_create_otp_without_secret":"Kan ikke oprette en OTP uden hemmelighed","errors.data_of_qrcode_is_not_valid_URI":"Dataene for denne QR-kode er ikke en gyldig OTP Auth URI. QR-koden indeholder:","errors.wrong_current_password":"Forkert nuværende adgangskode, intet er ændret","errors.error_during_encryption":"Kryptering mislykkedes, din database forbliver ubeskyttet.","errors.error_during_decryption":"Dekryptering mislykkedes, din database er stadig beskyttet. Dette skyldes primært et integritetsproblem af krypterede data for en eller flere konti.","errors.qrcode_cannot_be_read":"Denne QR-kode kan ikke læses","errors.too_many_ids":"for mange id'er var inkluderet i query parameter, max 100 tilladt","errors.delete_user_setting_only":"Kun brugeroprettede indstillinger kan slettes","errors.indecipherable":"*indecipherable*","errors.cannot_decipher_secret":"Hemmeligheden kan ikke dechifreres. Dette er hovedsageligt forårsaget af en forkert APP_KEY sat i . nv konfigurationsfil af 2Fauth eller en beskadiget data gemt i databasen.","errors.https_required":"HTTPS kontekst påkrævet","errors.browser_does_not_support_webauthn":"Din enhed understøtter ikke webauthn. Prøv igen senere ved hjælp af en mere moderne browser","errors.aborted_by_user":"Afbrudt af brugeren","errors.security_device_already_registered":"Enhed allerede registreret","errors.not_allowed_operation":"Handling ikke tilladt","errors.no_authenticator_support_specified_algorithms":"Ingen autentifikatorer understøtter angivne algoritmer","errors.authenticator_missing_discoverable_credential_support":"Autentificering mangler synlig legitimationssupport","errors.authenticator_missing_user_verification_support":"Autentificering mangler brugerbekræftelsesunderstøttelse","errors.unknown_error":"Ukendt fejl","errors.security_error_check_rpid":"Sikkerhedsfejl
Tjek din WEBAUTHN_ID env var","errors.2fauth_has_not_a_valid_domain":"2FAuth's domæne er ikke et gyldigt domæne","errors.user_id_not_between_1_64":"Bruger-ID var ikke mellem 1 og 64 tegn","errors.no_entry_was_of_type_public_key":'Ingen indgang var af typen "public- key"',"errors.unsupported_with_reverseproxy":"Ikke relevant ved brug af en auth proxy eller SSO","errors.unsupported_with_sso_only":"Denne godkendelsesmetode er kun for administratorer. Brugere skal logge ind med SSO.","errors.user_deletion_failed":"Sletning af brugerkonto mislykkedes, ingen data er blevet slettet","errors.auth_proxy_failed":"Proxygodkendelse mislykkedes","errors.auth_proxy_failed_legend":"2Fauth er konfigureret til at køre bag en godkendelsesproxy, men din proxy returnerer ikke den forventede header. Tjek din konfiguration og prøv igen.","errors.invalid_x_migration":"Ugyldig eller ulæselig :appname data","errors.invalid_2fa_data":"Ugyldige 2FA-data","errors.unsupported_migration":"Data matcher ikke noget understøttet format","errors.unsupported_otp_type":"Ikke understøttet OTP-type","errors.encrypted_migration":"Ulæselig, dataene synes krypteret","errors.no_logo_found_for_x":"Intet logo tilgængeligt for :service","errors.file_upload_failed":"Upload af fil mislykkedes","errors.unauthorized":"Ikke Godkendt","errors.unauthorized_legend":"Du har ikke rettigheder til at se denne ressource eller til at udføre denne handling","errors.cannot_delete_the_only_admin":"Kan ikke slette den eneste admin konto","errors.cannot_demote_the_only_admin":"Kan ikke degradere den eneste administratorkonto","errors.error_during_data_fetching":"💀 Noget gik galt under hentning af data","errors.check_failed_try_later":"Kontrollen mislykkedes, prøv igen senere","errors.sso_disabled":"SSO er deaktiveret","errors.sso_bad_provider_setup":"Denne SSO-udbyder er ikke fuldt opsat i din .env-fil","errors.sso_failed":"Godkendelse via SSO afvist","errors.sso_no_register":"Registreringer er deaktiveret","errors.sso_email_already_used":"En brugerkonto med den samme e-mailadresse findes allerede, men den matcher ikke dit eksterne konto-id. Brug ikke SSO hvis du allerede er registreret på 2FAuth med denne e-mail.","errors.account_managed_by_external_provider":"Konto administreres af en ekstern udbyder","errors.data_cannot_be_refreshed_from_server":"Data kan ikke opdateres fra server","errors.no_pwd_reset_for_this_user_type":"Nulstilling af adgangskode ikke tilgængelig for denne bruger","errors.cannot_detect_qrcode_in_image":"Kan ikke registrere en QR-kode i billedet, prøv at beskære billedet","errors.cannot_decode_detected_qrcode":"Kan ikke afkode detekteret QR-kode, prøv at beskære eller skærpe billedet","errors.qrcode_has_invalid_checksum":"QR-kode har ugyldig checksum","errors.no_readable_qrcode":"Ingen læsbar QR-kode","errors.failed_icon_store_database_toggling":"Migration af ikoner mislykkedes. Indstillingen er blevet gendannet til dens tidligere værdi.","groups.groups":"Grupper","groups.create_group":"Opret ny gruppe","groups.show_group_selector":"Vis gruppevælger","groups.hide_group_selector":"Skjul gruppevælger","groups.select_accounts_to_show":"Vælg kontogruppe der skal vises","groups.x_accounts":":count konti","groups.manage_groups":"Administrer grupper","groups.active_group":"Aktiv gruppe","groups.manage_groups_legend":"Du kan oprette grupper til at organisere dine konti på den måde, du ønsker. Alle konti forbliver synlige i pseudogruppen kaldet 'Alle', uanset hvilken gruppe de tilhører.","groups.deleting_group_does_not_delete_accounts":"Sletning af en gruppe sletter ikke konti","groups.move_selected_to":"Flyt valgte til","groups.move_selected_to_group":"Flyt valgte til en gruppe","groups.no_group":"Ingen gruppe","groups.change_group":"Skift gruppe","groups.group_successfully_created":"Gruppen blev oprettet","groups.group_name_saved":"Gruppenavn gemt","groups.group_successfully_deleted":"Gruppen blev slettet.","groups.forms.new_group":"Ny gruppe","groups.forms.new_name":"Nyt navn","groups.forms.rename_group":"Omdøb gruppe","groups.confirm.delete":"Sikker på, at du vil slette den valgte gruppe?","languages.browser_preference":"Browser præference","languages.en":"Engelsk (Engelsk)","languages.fr":"Fransk (Fransk)","languages.de":"Deutsch (tysk)","languages.es":"Spansk ol (spansk)","languages.zh":"Kinesisk (Forenklet)","languages.ru":"Русский (Russisk)","languages.bg":"Български (Bulgarian)","languages.ja":"日本語 (japansk)","languages.hi":"(Hindi)","languages.tr":"Tujórkcře (tyrkisk)","notifications.hello":"Hello","notifications.hello_user":"Hello :username,","notifications.regards":"Regards","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 :)","notifications.new_device.subject":"Connection to 2FAuth from a new device","notifications.new_device.resume":"A new device has just connected to your 2FAuth account.","notifications.new_device.connection_details":"Here are the details of this connection","notifications.new_device.recommandations":"If this was you, you can ignore this alert. If you suspect any suspicious activity on your account, please change your password.","notifications.failed_login.subject":"Failed login to 2FAuth","notifications.failed_login.resume":"There has been a failed login attempt to your 2FAuth account.","notifications.failed_login.connection_details":"Here are the details of this connection attempt","notifications.failed_login.recommandations":"If this was you, you can ignore this alert. If further attempts fail, you should contact the 2FAuth administrator to review security settings and take action against this attacker.","pagination.previous":"« Forrige","pagination.next":"Næste »","passwords.reset":"Dit kodeord er blevet nulstillet!","passwords.sent":"Vi har sendt dig en e-mail til at nulstille din adgangskode!","passwords.throttled":"Vent venligst inden du prøver igen.","passwords.token":"Denne adgangskode nulstillings-token er ugyldig.","passwords.user":"Vi kan ikke finde en bruger med den e-mailadresse.","passwords.password":"Adgangskoder skal være på mindst otte tegn og svare til gentagelsen.","settings.settings":"Indstillinger","settings.preferences":"Præferencer","settings.account":"Konto","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Tokens","settings.options":"Valgmuligheder","settings.user_preferences":"Præferencer","settings.admin_settings":"Admin indstillinger","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":"Generelt","settings.security":"Sikkerhed","settings.notifications":"Notifikationer","settings.profile":"Profil","settings.change_password":"Skift adgangskode","settings.personal_access_tokens":"personlige adgangstokens","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":"Ophæv","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":"Indstillingerne er gemt!","settings.forms.new_token":"Ny token","settings.forms.some_translation_are_missing":"Some translations are missing using the browser preferred language?","settings.forms.help_translate_2fauth":"Hjælp med at oversætte 2FAuth","settings.forms.language.label":"Sprog","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.timezone.label":"Time zone","settings.forms.timezone.help":"The time zone applied to all dates and times displayed in the application","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":"Lad muligheden for midlertidigt at afsløre Dot-Obscured adgangskoder","settings.forms.close_otp_on_copy.label":'Luk OTP efter kopi',"settings.forms.close_otp_on_copy.help":"Klik på en genereret adgangskode for at kopiere den automatisk skjuler den fra skærmen","settings.forms.auto_close_timeout.label":'Auto close OTP',"settings.forms.auto_close_timeout.help":"Automatically hide on-screen password after a timeout. This avoids unnecessary requests for fresh passwords if you forget to close the password view.","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.sort_case_sensitive.label":"Sort case sensitive","settings.forms.sort_case_sensitive.help":"When invoked, force the Sort function to sort accounts on a case-sensitive basis","settings.forms.copy_otp_on_display.label":'Kopier OTP på skærmen',"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":"Brug grundlæggende QR-kode læser","settings.forms.use_basic_qrcode_reader.help":"Hvis du oplever problemer, når du optager QR-koder, kan du skifte til en mere basal, men mere pålidelig QR-kodelæser","settings.forms.display_mode.label":"Visnings tilstand","settings.forms.display_mode.help":"Vælg om du vil have konti vist som en liste eller som et gitter","settings.forms.password_format.label":"Formatering af adgangskode","settings.forms.password_format.help":"Change how the passwords are displayed by grouping digits to ease readability and memorization","settings.forms.pair":"efter par","settings.forms.pair_legend":"Grupper cifre to med to","settings.forms.trio_legend":"Grupper cifre tre og tre","settings.forms.half_legend":"Opdel cifre i to lige store grupper","settings.forms.trio":"af Trio","settings.forms.half":"ved halv","settings.forms.grid":"Gitter","settings.forms.list":"Liste","settings.forms.theme.label":"Tema","settings.forms.theme.help":"Force a specific theme or apply the theme defined in your system/browser preferences","settings.forms.light":"Lys","settings.forms.dark":"Mørk","settings.forms.automatic":"Automatisk","settings.forms.show_accounts_icons.label":"Vis ikoner","settings.forms.show_accounts_icons.help":"Show account icons 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.auto_save_qrcoded_account.label":"Auto-save accounts","settings.forms.auto_save_qrcoded_account.help":"New accounts are automatically registered after scanning or uploading a QR code, no need to click a Save button","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":"Vis adgangskode","settings.forms.otp_generation.help":`Indstil hvordan og hvornår OTP'er vises.
`,"settings.forms.notify_on_new_auth_device.label":"On new device","settings.forms.notify_on_new_auth_device.help":"Get an email when a new device connects to your 2FAuth account for the first time","settings.forms.notify_on_failed_login.label":"On failed login","settings.forms.notify_on_failed_login.help":"Get an email each time an attempt to connect to your 2FAuth account fails","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","settings.forms.otp_generation_on_request":"Efter et klik/tryk","settings.forms.otp_generation_on_request_legend":"Alene i sin egen visning","settings.forms.otp_generation_on_request_title":"Click an account to get a password in a dedicated view","settings.forms.otp_generation_on_home":"Konstant","settings.forms.otp_generation_on_home_legend":"Allesammen, på hovedskærmen","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.2_minutes":"After 2 minutes","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":"Element ikke fundet","titles.start":"Ny konto","titles.capture":"Flash QR","titles.accounts":"Konti","titles.createAccount":"Opret konto","titles.importAccounts":"Importer konti","titles.editAccount":"Rediger konto","titles.showQRcode":"Konto som QR kode","titles.groups":"Grupper","titles.createGroup":"Opret gruppe","titles.editGroup":"Rediger gruppe","titles.settings.options":"Indstillinger","titles.settings.account":"Brugerkonto","titles.settings.oauth.tokens":"OAuth tokens","titles.settings.oauth.generatePAT":"Nyt personligt token","titles.settings.webauthn.editCredential":"Rediger enhed","titles.settings.webauthn.devices":"WebAuthn enheder","titles.login":"Login","titles.register":"Registrer","titles.autolock":"Autolås","titles.password.request":"Nulstil password","titles.password.reset":"Nyt password","titles.webauthn.lost":"Kontogendannelse","titles.webauthn.recover":"Registrer en ny enhed","titles.flooded":"Flood","titles.genericError":"Fejl","titles.about":"Om","titles.admin.appSetup":"App setup","titles.admin.users":"Users management","titles.admin.createUser":"Opret bruger","titles.admin.manageUser":"Administrer bruger","titles.admin.logs.access":"Access log","twofaccounts.service":"Tjeneste","twofaccounts.account":"Konto","twofaccounts.icon":"Ikon","twofaccounts.icon_to_illustrate_the_account":"Ikon som illustrerer kontoen","twofaccounts.remove_icon":"Fjern ikon","twofaccounts.no_account_here":"Ingen 2FA her!","twofaccounts.add_first_account":"Vælg en metode og tilføj din første konto","twofaccounts.use_full_form":"Eller brug manuel indtastning","twofaccounts.add_one":"Tilføj én","twofaccounts.show_qrcode":"Vis QR kode","twofaccounts.no_service":"- ingen tjeneste -","twofaccounts.account_created":"Konto oprettet","twofaccounts.account_updated":"Kontor opdateret","twofaccounts.accounts_deleted":"Konto(i) slettet","twofaccounts.accounts_moved":"Konto(i) flyttet","twofaccounts.export_selected_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","twofaccounts.reveal":"afslør","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"John DOE","twofaccounts.forms.new_account":"Ny konto","twofaccounts.forms.edit_account":"Rediger konto","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Scan QR kode","twofaccounts.forms.upload_qrcode":"Upload QR kode","twofaccounts.forms.use_advanced_form":"Brug avanceret form","twofaccounts.forms.prefill_using_qrcode":"Udfyld via en QR kode","twofaccounts.forms.use_qrcode.val":"Brug en qrkode","twofaccounts.forms.use_qrcode.title":"Brug en QR-kode til at udfylde formularen automagisk","twofaccounts.forms.unlock.val":"Lås op","twofaccounts.forms.unlock.title":"Unlock it (at your own risk)","twofaccounts.forms.lock.val":"Lås","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.group.label":"Gruppe","twofaccounts.forms.group.help":"The group to which the account is to be assigned","twofaccounts.forms.secret.label":"Secret","twofaccounts.forms.secret.help":"Nøgle til generering af koder","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":"Cifre","twofaccounts.forms.digits.help":"Antal cifre i de genererede sikkerhedskoder","twofaccounts.forms.algorithm.label":"Algoritme","twofaccounts.forms.algorithm.help":"Den algoritme, der bruges til at sikre dine sikkerhedskoder","twofaccounts.forms.period.label":"Periode","twofaccounts.forms.period.placeholder":"Standard er 30","twofaccounts.forms.period.help":"Gyldighedsperioden for de genererede sikkerhedskoder i sekunder","twofaccounts.forms.counter.label":"Tæller","twofaccounts.forms.counter.placeholder":"Standard er 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 metoder","twofaccounts.forms.spaces_are_ignored":"Uønskede mellemrum vil automatisk blive fjernet","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":"Kunne ikke indlæse scanner","twofaccounts.stream.not_readable.solution":"Er kameraet allerede i brug? Sørg for, at ingen anden app bruger dit kamera og prøv igen","twofaccounts.stream.no_cam_on_device.reason":"Intet kamera på denne enhed","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":"Brug venligst en anden enhed/kamera","twofaccounts.stream.stream_api_not_supported.reason":"Stream API is not supported in this browser","twofaccounts.stream.stream_api_not_supported.solution":"Du skal bruge en moderne browser","twofaccounts.confirm.delete":"Er du sikker på, at du vil slette denne konto?","twofaccounts.confirm.cancel":"Ændringer vil gå tabt. Er du sikker?","twofaccounts.confirm.discard":"Er du sikker på, at du vil kassere denne konto?","twofaccounts.confirm.discard_all":"Er du sikker på du vil kassere alle konti?","twofaccounts.confirm.discard_duplicates":"Er du sikker på, at du vil kassere alle dubletter?","twofaccounts.import.import":"Import","twofaccounts.import.to_import":"Importer","twofaccounts.import.import_legend":"2FAuth kan importere data fra forskellige 2FA apps.","twofaccounts.import.import_legend_afterpart":"Brug eksportfunktionen for disse apps til at få en migrationsressource som en QR-kode eller en JSON-fil og derefter indlæse den her.","twofaccounts.import.upload":"Upload","twofaccounts.import.scan":"Scan","twofaccounts.import.supported_formats_for_qrcode_upload":"Accepteret: jpg, jpeg, png, bmp, gif, svg eller 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 Kode","twofaccounts.import.text_file":"Tekst fil","twofaccounts.import.direct_input":"Direkte indtastning","twofaccounts.import.plain_text":"Simpel tekst","twofaccounts.import.parsing_data":"Fortolker data...","twofaccounts.import.issuer":"Udsteder","twofaccounts.import.imported":"Importeret","twofaccounts.import.failure":"Fejl","twofaccounts.import.x_valid_accounts_found":":count gyldige konti fundet","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"Følgende 2FA-konti blev fundet i migrationsressourcen. Indtil videre er ingen af dem blevet tilføjet til 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Brug de tilgængelige knapper til permanent at gemme dem til din 2FA-samling eller kassere dem.","twofaccounts.import.import_all":"Importer alle","twofaccounts.import.import_this_account":"Importer denne konto","twofaccounts.import.discard_all":"Kassér alle","twofaccounts.import.discard_duplicates":"Kassér dubletter","twofaccounts.import.discard_this_account":"Kasser denne konto","twofaccounts.import.generate_a_test_password":"Generer et testkodeord","twofaccounts.import.possible_duplicate":"En konto med nøjagtig samme data findes allerede","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 skal accepteres.","validation.accepted_if":"De :attribute skal accepteres, når :other er :value.","validation.active_url":":attribute er ikke en gyldig URL.","validation.after":":attribute skal være en dato efter :date.","validation.after_or_equal":":attribute skal være en dato efter eller lig med :date.","validation.alpha":":attribute må kun bestå af bogstaver.","validation.alpha_dash":":attribute må kun bestå af bogstaver, tal og bindestreger.","validation.alpha_num":":Attribute må kun bestå af bogstaver og tal.","validation.array":":attribute skal være et array.","validation.ascii":":attribute må kun indeholde single-byte alfanumeriske tegn og symboler.","validation.before":":attribute skal være en dato før :date.","validation.before_or_equal":":attribute skal være en dato før eller lig med :date.","validation.between.array":":attribute skal indeholde mellem :min og :max elementer.","validation.between.file":":attribute skal være mellem :min og :max kilobytes.","validation.between.numeric":":attribute skal være mellem :min og :max.","validation.between.string":":attribute skal være mellem :min og :max tegn.","validation.boolean":":attribute skal være sand eller falsk.","validation.can":"Feltet :attribute indeholder en uautoriseret værdi.","validation.confirmed":":attribute er ikke det samme som bekræftelsesfeltet.","validation.contains":":attribute mangler en påkrævet værdi.","validation.current_password":"Adgangskoden er forkert.","validation.date":":attribute er ikke en gyldig dato.","validation.date_equals":":attribute skal være en dato lig med :date.","validation.date_format":":attribute matcher ikke formatet :format.","validation.decimal":"De :attribute skal have :decimal decimaler.","validation.declined":"De :attribute skal afvises.","validation.declined_if":"De :attribute skal afvises, når :other er :value.","validation.different":":attribute og :other skal være forskellige.","validation.digits":":attribute skal have :digits cifre.","validation.digits_between":":attribute skal have mellem :min og :max cifre.","validation.dimensions":":attribute har forkerte billeddimensioner.","validation.distinct":":attribute har en duplikatværdi.","validation.doesnt_end_with":"De :attribute slutter muligvis ikke med en af ​​følgende: :values.","validation.doesnt_start_with":"De :attribute starter muligvis ikke med en af ​​følgende: :values.","validation.email":":attribute skal være en gyldig e-mailadresse.","validation.ends_with":":attribute skal ende med et af følgende: :values.","validation.enum":"De valgte :attribute er ugyldige.","validation.exists":"Valgte :attribute er ugyldig.","validation.extensions":"Feltet :attribute skal have en af ​​følgende udvidelser: :values.","validation.file":":attribute skal være en fil.","validation.filled":":attribute skal udfyldes.","validation.gt.array":":attribute skal være mere end :value elementer.","validation.gt.file":":attribute skal være større end :value kilobytes.","validation.gt.numeric":":attribute skal være større end :value.","validation.gt.string":":attribute skal være mere end :value tegn.","validation.gte.array":":attribute skal have :value elementer eller mere.","validation.gte.file":":attribute skal være større end eller lig med :value kilobytes.","validation.gte.numeric":":attribute skal være større end eller lig med :value.","validation.gte.string":":attribute skal være mere end eller lig med :value tegn.","validation.hex_color":"Feltet :attribute skal være en gyldig hexadecimal farve.","validation.image":":Attribute skal være et billede.","validation.in":"Valgte :attribute er ugyldig.","validation.in_array":":Attribute eksisterer ikke i :other.","validation.integer":":Attribute skal være et heltal.","validation.ip":":Attribute skal være en gyldig IP adresse.","validation.ipv4":":Attribute skal være en gyldig IPv4 adresse.","validation.ipv6":":Attribute skal være en gyldig IPv6 adresse.","validation.json":":Attribute skal være en gyldig JSON streng.","validation.list":"Feltet :attribute skal være en liste.","validation.lowercase":":Attribute skal være små bogstaver.","validation.lt.array":":Attribute skal have mindre end :value items.","validation.lt.file":":Attribute skal være mindre end :value kilobytes.","validation.lt.numeric":":Attribute skal være mindre end :value.","validation.lt.string":":Attribute skal være mindre end :value tegn.","validation.lte.array":":Attribute må ikke have mere end :value elementer.","validation.lte.file":":Attribute skal være mindre eller lig med :value kilobytes.","validation.lte.numeric":":Attribute skal være mindre eller lig med :value.","validation.lte.string":":Attribute skal være mindre eller lig med :value tegn.","validation.mac_address":":Attribute skal være en gyldig MAC-adresse.","validation.max.array":":Attribute må ikke indeholde mere end :max elementer.","validation.max.file":":Attribute må ikke være større end :max kilobytes.","validation.max.numeric":":Attribute må ikke være større end :max.","validation.max.string":":Attribute må ikke være mere end :max tegn.","validation.max_digits":"De :attribute må ikke have mere end :max cifre.","validation.mimes":":Attribute skal være en fil af typen: :values.","validation.mimetypes":":Attribute skal være en fil af typen: :values.","validation.min.array":":Attribute skal indeholde mindst :min elementer.","validation.min.file":":Attribute skal være mindst :min kilobytes.","validation.min.numeric":":Attribute skal være mindst :min.","validation.min.string":":Attribute skal være mindst :min tegn.","validation.min_digits":":Attribute skal have mindst :min cifre.","validation.missing":":Attribute-feltet skal mangle.","validation.missing_if":":Attribute-feltet skal mangle, når :other er :value.","validation.missing_unless":":Attribute-feltet skal mangle, medmindre :other er :value.","validation.missing_with":":Attribute-feltet skal mangle, når :values er til stede.","validation.missing_with_all":":Attribute-feltet skal mangle, når :values er til stede.","validation.multiple_of":":Attribute skal være et multiplum af :value","validation.not_in":"Valgte :attribute er ugyldig.","validation.not_regex":"Formatet for :attribute er ugyldigt.","validation.numeric":":Attribute skal være et tal.","validation.password.letters":"De :attribute skal indeholde mindst ét ​​bogstav.","validation.password.mixed":"De :attribute skal indeholde mindst et stort og et lille bogstav.","validation.password.numbers":"De :attribute skal indeholde mindst ét ​​tal.","validation.password.symbols":"De :attribute skal indeholde mindst ét ​​symbol.","validation.password.uncompromised":"De givne :attribute er dukket op i et datalæk. Vælg venligst en anden :attribute.","validation.present":":Attribute skal være tilstede.","validation.present_if":"Feltet :attribute skal være til stede, når :other er :value.","validation.present_unless":"Feltet :attribute skal være til stede, medmindre :other er :value.","validation.present_with":":Attribute-feltet skal være til stede, når :values er til stede.","validation.present_with_all":":Attribute-feltet skal være til stede, når :values er til stede.","validation.prohibited":":Attribute-feltet er forbudt.","validation.prohibited_if":"Feltet :attribute er forbudt, når :other er :value.","validation.prohibited_unless":":Attribute-feltet er forbudt, medmindre :other er i :values.","validation.prohibits":":Attribute-feltet forbyder :other at være til stede.","validation.regex":":Attribute formatet er ugyldigt.","validation.required":":Attribute skal udfyldes.","validation.required_array_keys":"Feltet :attribute skal indeholde poster for: :values.","validation.required_if":":Attribute skal udfyldes når :other er :value.","validation.required_if_accepted":":Attribute-feltet er påkrævet, når :other accepteres.","validation.required_if_declined":"Feltet :attribute er påkrævet, når :other afvises.","validation.required_unless":":Attribute er påkrævet med mindre :other findes i :values.","validation.required_with":":Attribute skal udfyldes når :values er udfyldt.","validation.required_with_all":":Attribute skal udfyldes når :values er udfyldt.","validation.required_without":":Attribute skal udfyldes når :values ikke er udfyldt.","validation.required_without_all":":Attribute skal udfyldes når ingen af :values er udfyldt.","validation.same":":Attribute og :other skal være ens.","validation.size.array":":Attribute skal indeholde :size elementer.","validation.size.file":":Attribute skal være :size kilobytes.","validation.size.numeric":":Attribute skal være :size.","validation.size.string":":Attribute skal være :size tegn lang.","validation.starts_with":":Attribute skal starte med én af følgende: :values.","validation.string":":Attribute skal være en streng.","validation.timezone":":Attribute skal være en gyldig tidszone.","validation.unique":":Attribute er allerede taget.","validation.uploaded":":Attribute fejlede i upload.","validation.uppercase":"De :attribute skal være store bogstaver.","validation.url":":Attribute formatet er ugyldigt.","validation.ulid":":attribute skal være et gyldigt ULID.","validation.uuid":":Attribute skal være en gyldig UUID.","validation.single":"Når du bruger :attribut skal det være den eneste parameter","validation.onlyCustomOtpWithUri":"uri-parameteren skal leveres alene eller kun i kombination med 'custom_otp'-parameteren","validation.IsValidRegex":"Attributfeltet skal være et gyldigt regex.","validation.custom.icon.image":"Understøttet format er jpeg, png, bmp, gif, svg eller webp.","validation.custom.qrcode.image":"Understøttet format er jpeg, png, bmp, gif, svg eller webp.","validation.custom.uri.regex":"Attributfeltet er ikke en gyldig otpauth uri.","validation.custom.otp_type.in":"Attributfeltet understøttes ikke.","validation.custom.email.exists":"Ingen konto fundet med denne e-mail.","validation.custom.email.ComplyWithEmailRestrictionPolicy":"Denne e-mailadresse overholder ikke registreringspolitikken","validation.custom.email.IsValidEmailList":"Alle e-mails skal være gyldige og adskilt med et pipesymbol","validation.custom.secret.isBase32Encoded":"Attributfeltet skal være en base32 kodet streng.","validation.custom.account.regex":"Attributfeltet må ikke indeholde kolon.","validation.custom.service.regex":"Attributfeltet må ikke indeholde kolon.","validation.custom.label.required":"uri skal have en etiket.","validation.custom.ids.regex":"ID'er skal være kommaseparerede, uden efterfølgende komma."};export{e as default}; diff --git a/public/build/assets/php_de-CoKrWjgn.js b/public/build/assets/php_de-CaMBnB2D.js similarity index 99% rename from public/build/assets/php_de-CoKrWjgn.js rename to public/build/assets/php_de-CaMBnB2D.js index e1936d8f..6bfd838e 100644 --- a/public/build/assets/php_de-CoKrWjgn.js +++ b/public/build/assets/php_de-CaMBnB2D.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Administrator","admin.admin_panel":"Admin-Panel","admin.app_setup":"App-Einstellungen","admin.auth":"Auth","admin.registrations":"Registrierungen","admin.users":"Benutzer","admin.users_legend":"Benutzer verwalten, die bereits registriert sind, oder neue Benutzer erstellen.","admin.admin_settings":"Administrator-Einstellungen","admin.create_new_user":"Benutzer erstellen","admin.new_user":"Neuer Benutzer","admin.search_user_placeholder":"Benutzername, E-Mail...","admin.quick_filters_colons":"Schnellfilter:","admin.user_created":"Benutzer erfolgreich erstellt","admin.confirm.delete_user":"Sind Sie sicher, dass Sie diesen Benutzer löschen möchten? Es gibt kein zurück mehr.","admin.confirm.request_password_reset":"Sind Sie sicher, dass Sie das Passwort dieses Benutzers zurücksetzen möchten?","admin.confirm.purge_password_reset_request":"Sind Sie sicher, dass Sie die vorherige Anfrage widerrufen möchten?","admin.confirm.delete_account":"Sind Sie sicher, dass Sie diesen Benutzer löschen möchten?","admin.confirm.edit_own_account":"Dies ist Ihr eigener Account. Sind Sie sicher?","admin.confirm.change_admin_role":"Dies wird gravierende Auswirkungen auf die Berechtigungen dieses Benutzers haben. Sind Sie sicher?","admin.confirm.demote_own_account":"Sie werden kein Administrator mehr sein. Wirklich sicher?","admin.logs":"Protokolle","admin.administration_legend":"Die folgenden Einstellungen sind global und gelten für alle Benutzer.","admin.user_management":"Benutzerverwaltung","admin.oauth_provider":"OAuth-Provider","admin.account_bound_to_x_via_oauth":"Dieses Konto ist mit einem :provider Konto über OAuth verbunden","admin.last_seen_on_date":"Zuletzt gesehen :date","admin.registered_on_date":"Registriert: :date","admin.updated_on_date":"Aktualisiert :date","admin.access":"Zugang","admin.password_requested_on_t":"Für diesen Benutzer existiert eine Anfrage zum Zurücksetzen des Passworts (Anfrage um :datetime), was bedeutet, dass der Benutzer sein Passwort noch nicht geändert hat, aber der Link, den er erhalten hat, weiterhin gültig ist. Dies könnte eine Anfrage des Benutzers selbst oder eines Administrators sein.","admin.password_request_expired":"Für diesen Benutzer existiert eine Anfrage zum Zurücksetzen des Passworts, die aber abgelaufen ist, was bedeutet, dass der Benutzer sein Passwort nicht rechtzeitig geändert hat. Dies kann eine Anfrage des Benutzers selbst oder eines Administrators sein.","admin.resend_email":"E-Mail erneut senden","admin.resend_email_title":"Eine E-Mail zum Zurücksetzen des Passworts erneut senden","admin.resend_email_help":"Verwenden Sie E-Mail erneut senden, um eine neue E-Mail zum Zurücksetzen des Passworts an den Benutzer zu senden, damit er ein neues Passwort festlegen kann. Dies wird sein aktuelles Passwort unverändert lassen und jede vorherige Anfrage wird widerrufen.","admin.reset_password":"Passwort zurücksetzen","admin.reset_password_help":"Verwenden Sie Passwort zurücksetzen um ein Passwort zurückzusetzen (dies wird ein temporäres Passwort setzen), bevor Sie eine E-Mail an den Benutzer senden, damit er ein neues Passwort setzen kann. Alle vorherigen Anfragen werden widerrufen.","admin.reset_password_title":"Passwort des Benutzers zurücksetzen","admin.password_successfully_reset":"Passwort erfolgreich zurückgesetzt","admin.user_has_x_active_pat":":count aktive Token","admin.user_has_x_security_devices":":count Sicherheitsgerät(e) (Passkeys)","admin.revoke_all_pat_for_user":"Alle Benutzer-Token widerrufen","admin.revoke_all_devices_for_user":"Alle Sicherheitsgeräte des Benutzers widerrufen","admin.danger_zone":"Gefahrenzone","admin.delete_this_user_legend":"Das Benutzerkonto sowie alle 2FA-Daten werden gelöscht.","admin.this_is_not_soft_delete":"Dies ist kein einfacher Löschvorgang, es gibt kein Zurück mehr.","admin.delete_this_user":"Benutzer löschen","admin.user_role_updated":"Benutzerrolle aktualisiert","admin.pats_succesfully_revoked":"Benutzer-PATs erfolgreich widerrufen","admin.security_devices_succesfully_revoked":"Sicherheitsgeräte des Benutzers wurden erfolgreich widerrufen","admin.variables":"Variablen","admin.cache_cleared":"Cache geleert","admin.cache_optimized":"Cache optimiert","admin.check_now":"Jetzt prüfen","admin.view_on_github":"Auf GitHub anzeigen","admin.x_is_available":":version ist verfügbar","admin.successful_login_on":'Erfolgreiche Anmeldung auf :login_at',"admin.successful_logout_on":'Erfolgreiche Abmeldung auf :login_at',"admin.failed_login_on":'Anmeldung fehlgeschlagen auf :login_at',"admin.viewed_on":'Angesehen auf :login_at',"admin.last_accesses":"Letzte Zugriffe","admin.see_full_log":"Gesamtes Zugriffsprotokoll anzeigen","admin.browser_on_platform":":browser auf :platform","admin.access_log_has_more_entries":"Das Zugriffsprotokoll enthält weitere Einträge.","admin.access_log_legend_for_user":"Vollständiges Zugriffsprotokoll für Benutzer :username","admin.show_last_month_log":"Einträge aus dem letzten Monat anzeigen","admin.show_three_months_log":"Einträge aus den letzten 3 Monaten anzeigen","admin.show_six_months_log":"Einträge aus den letzten 6 Monaten anzeigen","admin.show_one_year_log":"Einträge aus dem letzten Jahr anzeigen","admin.sort_by_date_asc":"Älteste zuerst anzeigen","admin.sort_by_date_desc":"Aktuellste zuerst anzeigen","admin.single_sign_on":"Single-Sign-On (SSO)","admin.database":"Datenbank","admin.file_system":"Dateisystem","admin.storage":"Speicher","admin.forms.use_encryption.label":"Sensible Daten schützen","admin.forms.use_encryption.help":"Vertrauliche Daten, die 2FA-Geheimnisse und E-Mails, werden verschlüsselt in der Datenbank gespeichert. Erstellen Sie ein Backup der APP_KEY-Variablen der .env Datei (oder der gesamten Datei), da sie als Schlüssel zur gesicherten Datenbank dient. Es gibt keine Möglichkeit, verschlüsselte Daten ohne diesen Schlüssel zu wiederherzustellen.","admin.forms.restrict_registration.label":"Registrierung einschränken","admin.forms.restrict_registration.help":"Die Registrierung nur für eine begrenzte Anzahl von E-Mail-Adressen verfügbar machen. Beide Regeln können gleichzeitig verwendet werden. Dies hat keinen Einfluss auf die Registrierung über SSO.","admin.forms.restrict_list.label":"Filterliste","admin.forms.restrict_list.help":'E-Mails in dieser Liste können sich registrieren. Adressen mit einem Pfeil trennen ("|")',"admin.forms.restrict_rule.label":"Filterregel","admin.forms.restrict_rule.help":"E-Mails mit diesem regulären Ausdruck dürfen sich registrieren","admin.forms.disable_registration.label":"Registrierung deaktivieren","admin.forms.disable_registration.help":"Verhindert eine neue Benutzerregistrierung. Sofern nicht überschrieben (siehe unten) wirkt sich dies auch auf SSO aus, so dass neue Benutzer sich nicht via SSO anmelden können.","admin.forms.enable_sso.label":"SSO aktivieren","admin.forms.enable_sso.help":"Besuchern die Authentifizierung mit einer externen ID über das Single Sign-On Schema erlauben.","admin.forms.use_sso_only.label":"Nur SSO verwenden","admin.forms.use_sso_only.help":"Machen Sie SSO die einzige verfügbare Methode, um sich bei 2FAuth anzumelden. Passwort-Login und Webauthn sind dann für normale Benutzer deaktiviert. Administratoren sind von dieser Einschränkung nicht betroffen.","admin.forms.keep_sso_registration_enabled.label":"SSO-Registrierung aktiviert lassen","admin.forms.keep_sso_registration_enabled.help":"Neuen Benutzern erlauben, sich zum ersten Mal über SSO anzumelden, während die Registrierung deaktiviert ist.","admin.forms.is_admin.label":"Ist Admininstrator","admin.forms.is_admin.help":"Geben Sie dem Benutzer Administratorrechte. Administratoren haben die Berechtigung, die gesamte App zu verwalten, d. h. Einstellungen und andere Benutzer, können aber kein Passwort für eine 2FA erstellen, die sie nicht besitzen.","admin.forms.test_email.label":"E-Mail-Konfigurationstest","admin.forms.test_email.help":"Senden Sie eine Test-E-Mail, um die E-Mail-Konfiguration Ihrer Instanz zu kontrollieren. Es ist wichtig, eine funktionierende Konfiguration zu haben, sonst können Benutzer kein Zurücksetzen des Passworts anfordern.","admin.forms.test_email.email_will_be_send_to_x":'Diese E-Mail wird an :email gesendet.',"admin.forms.health_endpoint.label":"Gesicherter Endpunkt","admin.forms.health_endpoint.help":"URL die Sie besuchen können, um die Unversehrtheit dieser 2FAuth Instanz zu überprüfen. Diese URL kann verwendet werden, um eine Docker HEALTHECK oder eine Kubernetes HTTPS Liveness Sonde einzurichten.","admin.forms.cache_management.label":"Cache-Verwaltung","admin.forms.cache_management.help":"Manchmal muss der Cache geleert werden, zum Beispiel nach einer Änderung an Umgebungsvariablen oder einer Aktualisierung. Sie können es von hier aus tun.","admin.forms.store_icon_to_database.label":"Symbole in Datenbank speichern","admin.forms.store_icon_to_database.help":"Hochgeladene Symbole werden zusätzlich zum Dateisystemspeicher in der Datenbank registriert, die dann nur als Cache verwendet wird. Dies macht die Erstellung eines 2FAuth-Sicherung sehr viel einfacher, da nur die Datenbank gesichert werden muss.

Aber Vorsicht, dies kann einige Nachteile haben: Die Größe der Datenbank kann erheblich ansteigen, wenn die Instanz viele große Symbole hostet. Es kann auch die Leistung der Anwendung beeinträchtigen, da das Dateisystem häufiger angegriffen wird, um sicherzustellen, dass es mit der Datenbank synchronisiert ist.","auth.failed":"Diese Angaben stimmen nicht mit unseren Aufzeichnungen überein.","auth.password":"Das angegebene Passwort ist falsch.","auth.throttle":"Zu viele Anmeldeversuche. Bitte versuchen Sie es in :seconds Sekunden erneut.","auth.sign_out":"Abmelden","auth.sign_in":"Anmelden","auth.sign_in_using":"Anmelden mit","auth.if_administrator":"Administrator?","auth.sign_in_here":"Sie können sich ohne SSO anmelden","auth.or_continue_with":"Sie können auch fortfahren mit:","auth.password_login_and_webauthn_are_disabled":"Passwort-Login und WebAuthn sind deaktiviert.","auth.sign_in_using_sso":"Wählen Sie einen SSO-Anbieter zum Anmelden:","auth.no_provider":"kein Anbieter","auth.no_sso_provider_or_provider_is_missing":"Anbieter fehlt?","auth.see_how_to_enable_sso":"Wie man einen Anbieter aktiviert","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":"Automatische Sperre ausgelöst, Sie wurden abgemeldet","auth.already_authenticated":"Bereits authentifiziert, bitte erst abmelden","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.
Verwalten Sie 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.sso_only_x_settings_are_disabled":"Authentifizierung ist nur auf SSO beschränkt, :auth_method ist deaktiviert","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":"einem 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 entzogen. Verwenden Sie diese Option, wenn Sie ein Gerät verloren haben oder seine Sicherheit beeinträchtigt 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 dauerhaft","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.

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Administrator","admin.admin_panel":"Admin-Panel","admin.app_setup":"App-Einstellungen","admin.auth":"Auth","admin.registrations":"Registrierungen","admin.users":"Benutzer","admin.users_legend":"Benutzer verwalten, die bereits registriert sind, oder neue Benutzer erstellen.","admin.admin_settings":"Administrator-Einstellungen","admin.create_new_user":"Benutzer erstellen","admin.new_user":"Neuer Benutzer","admin.search_user_placeholder":"Benutzername, E-Mail...","admin.quick_filters_colons":"Schnellfilter:","admin.user_created":"Benutzer erfolgreich erstellt","admin.confirm.delete_user":"Sind Sie sicher, dass Sie diesen Benutzer löschen möchten? Es gibt kein zurück mehr.","admin.confirm.request_password_reset":"Sind Sie sicher, dass Sie das Passwort dieses Benutzers zurücksetzen möchten?","admin.confirm.purge_password_reset_request":"Sind Sie sicher, dass Sie die vorherige Anfrage widerrufen möchten?","admin.confirm.delete_account":"Sind Sie sicher, dass Sie diesen Benutzer löschen möchten?","admin.confirm.edit_own_account":"Dies ist Ihr eigener Account. Sind Sie sicher?","admin.confirm.change_admin_role":"Dies wird gravierende Auswirkungen auf die Berechtigungen dieses Benutzers haben. Sind Sie sicher?","admin.confirm.demote_own_account":"Sie werden kein Administrator mehr sein. Wirklich sicher?","admin.logs":"Protokolle","admin.administration_legend":"Die folgenden Einstellungen sind global und gelten für alle Benutzer.","admin.user_management":"Benutzerverwaltung","admin.oauth_provider":"OAuth-Provider","admin.account_bound_to_x_via_oauth":"Dieses Konto ist mit einem :provider Konto über OAuth verbunden","admin.last_seen_on_date":"Zuletzt gesehen :date","admin.registered_on_date":"Registriert: :date","admin.updated_on_date":"Aktualisiert :date","admin.access":"Zugang","admin.password_requested_on_t":"Für diesen Benutzer existiert eine Anfrage zum Zurücksetzen des Passworts (Anfrage um :datetime), was bedeutet, dass der Benutzer sein Passwort noch nicht geändert hat, aber der Link, den er erhalten hat, weiterhin gültig ist. Dies könnte eine Anfrage des Benutzers selbst oder eines Administrators sein.","admin.password_request_expired":"Für diesen Benutzer existiert eine Anfrage zum Zurücksetzen des Passworts, die aber abgelaufen ist, was bedeutet, dass der Benutzer sein Passwort nicht rechtzeitig geändert hat. Dies kann eine Anfrage des Benutzers selbst oder eines Administrators sein.","admin.resend_email":"E-Mail erneut senden","admin.resend_email_title":"Eine E-Mail zum Zurücksetzen des Passworts erneut senden","admin.resend_email_help":"Verwenden Sie E-Mail erneut senden, um eine neue E-Mail zum Zurücksetzen des Passworts an den Benutzer zu senden, damit er ein neues Passwort festlegen kann. Dies wird sein aktuelles Passwort unverändert lassen und jede vorherige Anfrage wird widerrufen.","admin.reset_password":"Passwort zurücksetzen","admin.reset_password_help":"Verwenden Sie Passwort zurücksetzen um ein Passwort zurückzusetzen (dies wird ein temporäres Passwort setzen), bevor Sie eine E-Mail an den Benutzer senden, damit er ein neues Passwort setzen kann. Alle vorherigen Anfragen werden widerrufen.","admin.reset_password_title":"Passwort des Benutzers zurücksetzen","admin.password_successfully_reset":"Passwort erfolgreich zurückgesetzt","admin.user_has_x_active_pat":":count aktive Token","admin.user_has_x_security_devices":":count Sicherheitsgerät(e) (Passkeys)","admin.revoke_all_pat_for_user":"Alle Benutzer-Token widerrufen","admin.revoke_all_devices_for_user":"Alle Sicherheitsgeräte des Benutzers widerrufen","admin.danger_zone":"Gefahrenzone","admin.delete_this_user_legend":"Das Benutzerkonto sowie alle 2FA-Daten werden gelöscht.","admin.this_is_not_soft_delete":"Dies ist kein einfacher Löschvorgang, es gibt kein Zurück mehr.","admin.delete_this_user":"Benutzer löschen","admin.user_role_updated":"Benutzerrolle aktualisiert","admin.pats_succesfully_revoked":"Benutzer-PATs erfolgreich widerrufen","admin.security_devices_succesfully_revoked":"Sicherheitsgeräte des Benutzers wurden erfolgreich widerrufen","admin.variables":"Variablen","admin.cache_cleared":"Cache geleert","admin.cache_optimized":"Cache optimiert","admin.check_now":"Jetzt prüfen","admin.view_on_github":"Auf GitHub anzeigen","admin.x_is_available":":version ist verfügbar","admin.successful_login_on":'Erfolgreiche Anmeldung auf :login_at',"admin.successful_logout_on":'Erfolgreiche Abmeldung auf :login_at',"admin.failed_login_on":'Anmeldung fehlgeschlagen auf :login_at',"admin.viewed_on":'Angesehen auf :login_at',"admin.last_accesses":"Letzte Zugriffe","admin.see_full_log":"Gesamtes Zugriffsprotokoll anzeigen","admin.browser_on_platform":":browser auf :platform","admin.access_log_has_more_entries":"Das Zugriffsprotokoll enthält weitere Einträge.","admin.access_log_legend_for_user":"Vollständiges Zugriffsprotokoll für Benutzer :username","admin.show_last_month_log":"Einträge aus dem letzten Monat anzeigen","admin.show_three_months_log":"Einträge aus den letzten 3 Monaten anzeigen","admin.show_six_months_log":"Einträge aus den letzten 6 Monaten anzeigen","admin.show_one_year_log":"Einträge aus dem letzten Jahr anzeigen","admin.sort_by_date_asc":"Älteste zuerst anzeigen","admin.sort_by_date_desc":"Aktuellste zuerst anzeigen","admin.single_sign_on":"Single-Sign-On (SSO)","admin.database":"Datenbank","admin.file_system":"Dateisystem","admin.storage":"Speicher","admin.forms.use_encryption.label":"Sensible Daten schützen","admin.forms.use_encryption.help":"Vertrauliche Daten, die 2FA-Geheimnisse und E-Mails, werden verschlüsselt in der Datenbank gespeichert. Erstellen Sie ein Backup der APP_KEY-Variablen der .env Datei (oder der gesamten Datei), da sie als Schlüssel zur gesicherten Datenbank dient. Es gibt keine Möglichkeit, verschlüsselte Daten ohne diesen Schlüssel zu wiederherzustellen.","admin.forms.restrict_registration.label":"Registrierung einschränken","admin.forms.restrict_registration.help":"Die Registrierung nur für eine begrenzte Anzahl von E-Mail-Adressen verfügbar machen. Beide Regeln können gleichzeitig verwendet werden. Dies hat keinen Einfluss auf die Registrierung über SSO.","admin.forms.restrict_list.label":"Filterliste","admin.forms.restrict_list.help":'E-Mails in dieser Liste können sich registrieren. Adressen mit einem Pfeil trennen ("|")',"admin.forms.restrict_rule.label":"Filterregel","admin.forms.restrict_rule.help":"E-Mails mit diesem regulären Ausdruck dürfen sich registrieren","admin.forms.disable_registration.label":"Registrierung deaktivieren","admin.forms.disable_registration.help":"Verhindert eine neue Benutzerregistrierung. Sofern nicht überschrieben (siehe unten) wirkt sich dies auch auf SSO aus, so dass neue Benutzer sich nicht via SSO anmelden können.","admin.forms.enable_sso.label":"SSO aktivieren","admin.forms.enable_sso.help":"Besuchern die Authentifizierung mit einer externen ID über das Single Sign-On Schema erlauben.","admin.forms.use_sso_only.label":"Nur SSO verwenden","admin.forms.use_sso_only.help":"Machen Sie SSO die einzige verfügbare Methode, um sich bei 2FAuth anzumelden. Passwort-Login und Webauthn sind dann für normale Benutzer deaktiviert. Administratoren sind von dieser Einschränkung nicht betroffen.","admin.forms.keep_sso_registration_enabled.label":"SSO-Registrierung aktiviert lassen","admin.forms.keep_sso_registration_enabled.help":"Neuen Benutzern erlauben, sich zum ersten Mal über SSO anzumelden, während die Registrierung deaktiviert ist.","admin.forms.is_admin.label":"Ist Admininstrator","admin.forms.is_admin.help":"Geben Sie dem Benutzer Administratorrechte. Administratoren haben die Berechtigung, die gesamte App zu verwalten, d. h. Einstellungen und andere Benutzer, können aber kein Passwort für eine 2FA erstellen, die sie nicht besitzen.","admin.forms.test_email.label":"E-Mail-Konfigurationstest","admin.forms.test_email.help":"Senden Sie eine Test-E-Mail, um die E-Mail-Konfiguration Ihrer Instanz zu kontrollieren. Es ist wichtig, eine funktionierende Konfiguration zu haben, sonst können Benutzer kein Zurücksetzen des Passworts anfordern.","admin.forms.test_email.email_will_be_send_to_x":'Diese E-Mail wird an :email gesendet.',"admin.forms.health_endpoint.label":"Gesicherter Endpunkt","admin.forms.health_endpoint.help":"URL die Sie besuchen können, um die Unversehrtheit dieser 2FAuth Instanz zu überprüfen. Diese URL kann verwendet werden, um eine Docker HEALTHECK oder eine Kubernetes HTTPS Liveness Sonde einzurichten.","admin.forms.cache_management.label":"Cache-Verwaltung","admin.forms.cache_management.help":"Manchmal muss der Cache geleert werden, zum Beispiel nach einer Änderung an Umgebungsvariablen oder einer Aktualisierung. Sie können es von hier aus tun.","admin.forms.store_icon_to_database.label":"Symbole in Datenbank speichern","admin.forms.store_icon_to_database.help":"Hochgeladene Symbole werden zusätzlich zum Dateisystemspeicher in der Datenbank registriert, die dann nur als Cache verwendet wird. Dies macht die Erstellung eines 2FAuth-Sicherung sehr viel einfacher, da nur die Datenbank gesichert werden muss.

Aber Vorsicht, dies kann einige Nachteile haben: Die Größe der Datenbank kann erheblich ansteigen, wenn die Instanz viele große Symbole hostet. Es kann auch die Leistung der Anwendung beeinträchtigen, da das Dateisystem häufiger angegriffen wird, um sicherzustellen, dass es mit der Datenbank synchronisiert ist.","auth.failed":"Diese Angaben stimmen nicht mit unseren Aufzeichnungen überein.","auth.password":"Das angegebene Passwort ist falsch.","auth.throttle":"Zu viele Anmeldeversuche. Bitte versuchen Sie es in :seconds Sekunden erneut.","auth.sign_out":"Abmelden","auth.sign_in":"Anmelden","auth.sign_in_using":"Anmelden mit","auth.if_administrator":"Administrator?","auth.sign_in_here":"Sie können sich ohne SSO anmelden","auth.or_continue_with":"Sie können auch fortfahren mit:","auth.password_login_and_webauthn_are_disabled":"Passwort-Login und WebAuthn sind deaktiviert.","auth.sign_in_using_sso":"Wählen Sie einen SSO-Anbieter zum Anmelden:","auth.no_provider":"kein Anbieter","auth.no_sso_provider_or_provider_is_missing":"Anbieter fehlt?","auth.see_how_to_enable_sso":"Wie man einen Anbieter aktiviert","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":"Automatische Sperre ausgelöst, Sie wurden abgemeldet","auth.already_authenticated":"Bereits authentifiziert, bitte erst abmelden","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.
Verwalten Sie 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.sso_only_x_settings_are_disabled":"Authentifizierung ist nur auf SSO beschränkt, :auth_method ist deaktiviert","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":"einem 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.

\r + 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 entzogen. Verwenden Sie diese Option, wenn Sie ein Gerät verloren haben oder seine Sicherheit beeinträchtigt 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 dauerhaft","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.

\r + 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.

\r 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":"Mindestens ein Gerät einrichten, um die nachfolgenden Optionen zu aktiveren","auth.webauthn.options":"Einstellungen","auth.forms.name":"Name","auth.forms.login":"Anmeldung","auth.forms.webauthn_login":"WebAuthn-Anmeldung","auth.forms.sso_login":"SSO-Login","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 im Demo-Modus deaktiviert","auth.forms.sso_only_form_restricted_to_admin":"Normale Benutzer müssen sich mit SSO anmelden. Andere Methoden sind nur für Administratoren gedacht.","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":"Passwort erfolgreich zurückgesetzt","auth.forms.edit_account":"Konto 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":"Ihr Benutzerkonto wird gelöscht, ebenso wie alle Ihre 2FA-Daten. Es gibt kein Zurück mehr.","auth.forms.reset_your_password_to_delete_your_account":"Wenn Sie sich immer mit SSO angemeldet haben, melden Sie sich ab und verwenden Sie die Funktion zum Zurücksetzen des Passworts, um ein Passwort zu erhalten, damit Sie dieses Formular ausfüllen können.","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","auth.sso_providers.unknown":"unbekannt","auth.sso_providers.github":"GitHub","auth.sso_providers.openid":"OpenID","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":"Erledigt","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":"Neuer Name","commons.options":"Einstellungen","commons.reload":"Neu laden","commons.refresh":"Aktualisieren","commons.data_refreshed_to_reflect_server_changes":"Daten wurden aktualisiert, um Änderungen auf dem Server wiederzugeben","commons.generate":"Erzeugen","commons.generating_otp":"OTP erzeugen","commons.open_in_browser":"Im Browser öffnen","commons.continue":"Weiter","commons.discard":"Ablehnen","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 erzeugen","commons.made_with":"Erstellt mit","commons.ui_icons_by":"UI-Symbole 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":"Seite :pagetitle 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.send":"Absenden","commons.optimize":"Optimieren","commons.IP":"IP","commons.browser":"Browser","commons.operating_system_short":"OS","commons.no_entry_yet":"Noch kein Eintrag","commons.time":"Zeit","commons.ip_address":"IP-Adresse","commons.device":"Gerät","commons.one_month":"1 Mon.","commons.x_month":":x Mon.","commons.one_year":"1 J.","errors.resource_not_found":"Ressource 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 oder SSO benutzt wird","errors.unsupported_with_sso_only":"Diese Authentifizierungsmethode ist nur für Administratoren. Benutzer müssen sich mit SSO anmelden.","errors.user_deletion_failed":"Löschen des Benutzerkontos fehlgeschlagen, es wurden keine Daten gelöscht","errors.auth_proxy_failed":"Proxy-Authentifizierung fehlgeschlagen","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.cannot_demote_the_only_admin":"Der einzige Admin-Account kann nicht degradiert werden","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":"Passwort zurücksetzen für diesen Benutzer nicht verfügbar","errors.cannot_detect_qrcode_in_image":"Es kann kein QR-Code im Bild erkannt werden. Bitte das Bild zuschneiden","errors.cannot_decode_detected_qrcode":"Kann den QR-Code nicht dekodieren. Bitte das Bild zuschneiden oder schärfen","errors.qrcode_has_invalid_checksum":"QR-Code hat eine ungültige Prüfsumme","errors.no_readable_qrcode":"Kein lesbarer QR-Code","errors.failed_icon_store_database_toggling":"Migration von Symbolen fehlgeschlagen. Die Einstellung wurde auf ihren vorherigen Wert zurückgesetzt.","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 möchten. 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":"Möchten Sie diese Gruppe wirklich löschen?","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)","languages.tr":"Türkçe (Turkish)","notifications.hello":"Hallo","notifications.hello_user":"Hallo :username,","notifications.regards":"Mit freundlichen Grüßen","notifications.test_email_settings.subject":"2FAuth-Test-E-Mail","notifications.test_email_settings.reason":"Sie erhalten diese E-Mail, weil Sie eine Test-E-Mail angefordert haben, um die E-Mail-Einstellungen Ihrer 2FAuth Instanz zu überprüfen.","notifications.test_email_settings.success":"Gute Nachricht, es funktioniert :)","notifications.new_device.subject":"Verbindung zu 2FAuth von einem neuen Gerät","notifications.new_device.resume":"Ein neues Gerät hat sich gerade mit Ihrem 2FAuth-Konto verbunden.","notifications.new_device.connection_details":"Hier sind die Details dieser Verbindung","notifications.new_device.recommandations":"Wenn dies auf Sie zutrifft, können Sie diese Meldung ignorieren. Wenn Sie eine verdächtige Aktivität in Ihrem Konto vermuten, ändern Sie bitte Ihr Passwort.","notifications.failed_login.subject":"Anmeldung bei 2FAuth fehlgeschlagen","notifications.failed_login.resume":"Es gab einen fehlgeschlagenen Anmeldeversuch auf Ihr 2FAuth Konto.","notifications.failed_login.connection_details":"Hier sind die Details zu diesem Verbindungsversuch","notifications.failed_login.recommandations":"Wenn Sie dies waren, können Sie diese Warnung ignorieren. Falls weitere Versuche fehlschlagen, sollten Sie den 2FAuth-Administrator kontaktieren, um die Sicherheitseinstellungen zu überprüfen und Maßnahmen gegen diesen Angreifer zu ergreifen.","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 Benutzer 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":"Voreinstellungen","settings.account":"Benutzerkonto","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":"Sie sind 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.notifications":"Benachrichtigungen","settings.profile":"Profil","settings.change_password":"Passwort ändern","settings.personal_access_tokens":"Persönliche Zugriffsstoken","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 erzeugen","settings.revoke":"Widerrufen","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":"Neuer Token","settings.forms.some_translation_are_missing":"Einige Übersetzungen fehlen bei Verwendung der bevorzugten Sprache des Browsers?","settings.forms.help_translate_2fauth":"Helfen Sie 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.timezone.label":"Zeitzone","settings.forms.timezone.help":"Die Zeitzone wird auf alle in der Anwendung angezeigten Daten und Zeiten angewendet","settings.forms.show_otp_as_dot.label":'Erzeugte OTP als Punkt 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":'Verdecktes OTP aufdecken',"settings.forms.reveal_dotted_otp.help":"Die Fähigkeit Punkt-verdeckte Passwörter temporär freigeben","settings.forms.close_otp_on_copy.label":'OTP nach dem Kopieren schließen',"settings.forms.close_otp_on_copy.help":"Bei einem Klick auf das erzeugte Passwort wird es automatisch auf dem Bildschirm ausgeblendet","settings.forms.auto_close_timeout.label":'OTP automatisch schließen',"settings.forms.auto_close_timeout.help":"Passwort automatisch nach einem Timeout auf dem Bildschirm ausblenden. Dies vermeidet unnötige Anfragen nach neuen Passwörtern, wenn Sie die Passwortansicht nicht schließen.","settings.forms.clear_search_on_copy.label":"Suche beim Kopieren löschen","settings.forms.clear_search_on_copy.help":"Das Suchfeld leeren, nachdem ein Code in die Zwischenablage kopiert wurde","settings.forms.sort_case_sensitive.label":"Groß-/Kleinschreibung beachten","settings.forms.sort_case_sensitive.help":"Erzwingt bei Aufruf der Funktion Sortieren die Sortierung der Konten unter Berücksichtigung der Groß- und Kleinschreibung","settings.forms.copy_otp_on_display.label":'OTP auf Anzeige 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":"Einfachen QR-Codeleser benutzen","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 aus, ob Konten als Liste oder als Raster angezeigt werden sollen","settings.forms.password_format.label":"Passwort-Formatierung","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":"nach Trio","settings.forms.half":"nach Hälfte","settings.forms.grid":"Raster","settings.forms.list":"Liste","settings.forms.theme.label":"Design","settings.forms.theme.help":"Eine bestimmte Darstellung erzwingen oder die in Ihren System-/Browsereinstellungen definierte Darstellung anwenden","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 Symbole abrufen","settings.forms.get_official_icons.help":"(Versuch) Das offizielle Symbol des 2FA-Ausstellers beim Hinzufügen eines Kontos erhalten","settings.forms.auto_lock.label":"Automatische Sperrung","settings.forms.auto_lock.help":"Den Benutzer bei Inaktivität automatisch abmelden. 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.auto_save_qrcoded_account.label":"Konten automatisch speichern","settings.forms.auto_save_qrcoded_account.help":"Neue Konten werden automatisch nach dem Scannen oder Hochladen eines QR-Codes registriert, ohne dass Sie auf den Speichern-Tastr klicken müssen","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":"Den letzten Gruppenfilter speichern und ihn beim nächsten Besuch wiederherstellen","settings.forms.otp_generation.label":"Passwort zeigen","settings.forms.otp_generation.help":'Festlegen, wie und wann OTPs angezeigt werden.
',"settings.forms.notify_on_new_auth_device.label":"Auf neuem Gerät","settings.forms.notify_on_new_auth_device.help":"Erhalten Sie eine E-Mail, wenn sich ein neues Gerät zum ersten Mal mit Ihrem 2FAuth Konto verbindet","settings.forms.notify_on_failed_login.label":"Bei fehlgeschlagener Anmeldung","settings.forms.notify_on_failed_login.help":"Erhalten Sie jedes Mal eine E-Mail, wenn ein Verbindungsversuch zu Ihrem 2FAuth-Konto fehlschlägt","settings.forms.show_email_in_footer.label":"E-Mail in Fußzeile anzeigen","settings.forms.show_email_in_footer.help":"Die E-Mail des angemeldeten Benutzers in der Fußzeile anstelle von direkten Navigationslinks anzeigen. Die Links stehen dann im Menü hinter einem Klick/Tippen auf die E-Mail-Adresse zur Verfügung.","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 Token","settings.forms.1_minutes":"Nach 1 Minute","settings.forms.2_minutes":"Nach 2 Minuten","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":"Objekt nicht gefunden","titles.start":"Neues Konto","titles.capture":"QR blinken","titles.accounts":"Konten","titles.createAccount":"Konto erstellen","titles.importAccounts":"Konten importieren","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-Token","titles.settings.oauth.generatePAT":"Neuer persönlicher Token","titles.settings.webauthn.editCredential":"Gerät bearbeiten","titles.settings.webauthn.devices":"WebAuthn-Geräte","titles.login":"Anmelden","titles.register":"Registrieren","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-Einrichtung","titles.admin.users":"Benutzerverwaltung","titles.admin.createUser":"Benutzer erstellen","titles.admin.manageUser":"Benutzer verwalten","titles.admin.logs.access":"Zugriffsprotokoll","twofaccounts.service":"Dienst","twofaccounts.account":"Benutzerkonto","twofaccounts.icon":"Symbol","twofaccounts.icon_to_illustrate_the_account":"Symbol, das den Account darstellt","twofaccounts.remove_icon":"Symbol entfernen","twofaccounts.no_account_here":"Noch keine 2FA vorhanden!","twofaccounts.add_first_account":"Wählen Sie eine Methode und fügen Sie Ihren 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(en) erfolgreich gelöscht","twofaccounts.accounts_moved":"Konto(en) erfolgreich verschoben","twofaccounts.export_selected_accounts":"Ausgewählte Konten exportieren","twofaccounts.twofauth_export_format":"2FAuth-Format","twofaccounts.twofauth_export_format_sub":"Daten mit dem 2FAuth json Schema exportieren","twofaccounts.twofauth_export_format_desc":"Sie sollten diese Option bevorzugen, wenn Sie eine Sicherung erstellen müssen, die wiederhergestellt werden kann. Dieses Format kümmert sich um die Symbole.","twofaccounts.twofauth_export_format_url":"Die Schema-Definition ist hier beschrieben:","twofaccounts.twofauth_export_schema":"2FAuth-Exportschema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Daten als Liste der otpauth URIs exportieren","twofaccounts.otpauth_export_format_desc":"otpauth URI ist das am häufigsten verwendete Format für den Austausch von 2FA-Daten zum Beispiel in Form eines QR-Codes, wenn Sie 2FA auf einer Website aktivieren. Wählen Sie diese Option, wenn Sie von 2FAuth wechseln möchten.","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 "Mein Glück versuchen" können Sie das offizielle Symbol des jeweiligen Dienstes 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.group.label":"Gruppe","twofaccounts.forms.group.help":"Die Gruppe, der das Konto zugeordnet werden soll","twofaccounts.forms.secret.label":"Geheimnis","twofaccounts.forms.secret.help":"Der Schlüssel, der zur Erzeugung 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 erzeugten 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 erzeugten Sicherheitscodes in Sekunden","twofaccounts.forms.counter.label":"Zähler","twofaccounts.forms.counter.placeholder":"Standard ist 0","twofaccounts.forms.counter.help":"Der erste Zählerwert","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 verwerfen möchten?","twofaccounts.confirm.discard_all":"Sind Sie sicher, dass Sie alle Konten verwerfen möchten?","twofaccounts.confirm.discard_duplicates":"Möchten Sie wirklich alle Duplikate verwerfen?","twofaccounts.import.import":"Import","twofaccounts.import.to_import":"Import","twofaccounts.import.import_legend":"2FAuth kann Daten aus verschiedenen 2FA-Apps importieren.","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 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":"Fehlschlag","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":"Dieses Konto importieren","twofaccounts.import.discard_all":"Alles verwerfen","twofaccounts.import.discard_duplicates":"Duplikate verwerfen","twofaccounts.import.discard_this_account":"Dieses Konto verwerfen","twofaccounts.import.generate_a_test_password":"Ein Testpasswort erzeugen","twofaccounts.import.possible_duplicate":"Ein Konto mit den gleichen Daten ist bereits vorhanden","twofaccounts.import.invalid_account":"- ungültiges Konto -","twofaccounts.import.invalid_service":"- ungültiges 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.ascii":"Das Feld :attribute darf nur alphanumerische Einzelbyte-Zeichen und -Symbole enthalten.","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.can":"Das Feld :attribute enthält einen unzulässigen Wert.","validation.confirmed":":attribute stimmt nicht mit der Bestätigung überein.","validation.contains":":attribute Feld fehlt ein benötigter Wert.","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.decimal":"Das Feld :attribute muss :decimal Dezimalstellen haben.","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.extensions":"Das Feld :attribute muss eine der folgenden Erweiterungen haben: :values.","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.hex_color":"Das Feld :attribute muss eine gültige Hexadezimalfarbe sein.","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.list":"Das :attribute-Feld muss eine Lis7te sein.","validation.lowercase":"Das Feld :attribute muss aus Kleinbuchstaben bestehen.","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.missing":"Das Feld :attribute muss fehlen.","validation.missing_if":"Das Feld :attribute muss fehlen, wenn :other gleich :value ist.","validation.missing_unless":"Das Feld :attribute muss fehlen, wenn :other nicht :value ist.","validation.missing_with":"Das Feld :attribute muss fehlen, wenn :values vorhanden ist.","validation.missing_with_all":"Das Feld :attribute muss fehlen, wenn :values vorhanden sind.","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.present_if":"Das Feld :attribute muss vorhanden sein, wenn :other gleich :value ist.","validation.present_unless":"Das Feld :attribute muss vorhanden sein, es sei denn, :other ist :value.","validation.present_with":"Das Feld :attribute muss vorhanden sein, wenn :values vorhanden ist.","validation.present_with_all":"Das Feld :attribute muss vorhanden sein, wenn :values vorhanden sind.","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_if_declined":"Das Feld :attribute ist erforderlich, wenn :other abgelehnt wird.","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.uppercase":"Das Feld :attribute muss in Großbuchstaben geschrieben sein.","validation.url":"Das :attribute Feld muss eine gültige URL aufweisen.","validation.ulid":"Das Feld :attribute muss eine gültige ULID sein.","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.IsValidRegex":":attribute muss ein gültiges Regex-Muster sein.","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":"IDs müssen durch Komma getrennt werden, ohne Komma am Ende."};export{e as default}; diff --git a/public/build/assets/php_en-BiQ_FnWP.js b/public/build/assets/php_en-DiZe0RSj.js similarity index 99% rename from public/build/assets/php_en-BiQ_FnWP.js rename to public/build/assets/php_en-DiZe0RSj.js index 85b102d2..45dda8c3 100644 --- a/public/build/assets/php_en-BiQ_FnWP.js +++ b/public/build/assets/php_en-DiZe0RSj.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 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 field must be accepted.","validation.accepted_if":"The :attribute field must be accepted when :other is :value.","validation.active_url":"The :attribute field must be a valid URL.","validation.after":"The :attribute field must be a date after :date.","validation.after_or_equal":"The :attribute field must be a date after or equal to :date.","validation.alpha":"The :attribute field must only contain letters.","validation.alpha_dash":"The :attribute field must only contain letters, numbers, dashes, and underscores.","validation.alpha_num":"The :attribute field must only contain letters and numbers.","validation.array":"The :attribute field must be an array.","validation.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","validation.before":"The :attribute field must be a date before :date.","validation.before_or_equal":"The :attribute field must be a date before or equal to :date.","validation.between.array":"The :attribute field must have between :min and :max items.","validation.between.file":"The :attribute field must be between :min and :max kilobytes.","validation.between.numeric":"The :attribute field must be between :min and :max.","validation.between.string":"The :attribute field 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 field confirmation does not match.","validation.contains":"The :attribute field is missing a required value.","validation.current_password":"The password is incorrect.","validation.date":"The :attribute field must be a valid date.","validation.date_equals":"The :attribute field must be a date equal to :date.","validation.date_format":"The :attribute field must match the format :format.","validation.decimal":"The :attribute field must have :decimal decimal places.","validation.declined":"The :attribute field must be declined.","validation.declined_if":"The :attribute field must be declined when :other is :value.","validation.different":"The :attribute field and :other must be different.","validation.digits":"The :attribute field must be :digits digits.","validation.digits_between":"The :attribute field must be between :min and :max digits.","validation.dimensions":"The :attribute field has invalid image dimensions.","validation.distinct":"The :attribute field has a duplicate value.","validation.doesnt_end_with":"The :attribute field must not end with one of the following: :values.","validation.doesnt_start_with":"The :attribute field must not start with one of the following: :values.","validation.email":"The :attribute field must be a valid email address.","validation.ends_with":"The :attribute field 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 field must be a file.","validation.filled":"The :attribute field must have a value.","validation.gt.array":"The :attribute field must have more than :value items.","validation.gt.file":"The :attribute field must be greater than :value kilobytes.","validation.gt.numeric":"The :attribute field must be greater than :value.","validation.gt.string":"The :attribute field must be greater than :value characters.","validation.gte.array":"The :attribute field must have :value items or more.","validation.gte.file":"The :attribute field must be greater than or equal to :value kilobytes.","validation.gte.numeric":"The :attribute field must be greater than or equal to :value.","validation.gte.string":"The :attribute field 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 field must be an image.","validation.in":"The selected :attribute is invalid.","validation.in_array":"The :attribute field must exist in :other.","validation.integer":"The :attribute field must be an integer.","validation.ip":"The :attribute field must be a valid IP address.","validation.ipv4":"The :attribute field must be a valid IPv4 address.","validation.ipv6":"The :attribute field must be a valid IPv6 address.","validation.json":"The :attribute field must be a valid JSON string.","validation.list":"The :attribute field must be a list.","validation.lowercase":"The :attribute field must be lowercase.","validation.lt.array":"The :attribute field must have less than :value items.","validation.lt.file":"The :attribute field must be less than :value kilobytes.","validation.lt.numeric":"The :attribute field must be less than :value.","validation.lt.string":"The :attribute field must be less than :value characters.","validation.lte.array":"The :attribute field must not have more than :value items.","validation.lte.file":"The :attribute field must be less than or equal to :value kilobytes.","validation.lte.numeric":"The :attribute field must be less than or equal to :value.","validation.lte.string":"The :attribute field must be less than or equal to :value characters.","validation.mac_address":"The :attribute field must be a valid MAC address.","validation.max.array":"The :attribute field must not have more than :max items.","validation.max.file":"The :attribute field must not be greater than :max kilobytes.","validation.max.numeric":"The :attribute field must not be greater than :max.","validation.max.string":"The :attribute field must not be greater than :max characters.","validation.max_digits":"The :attribute field must not have more than :max digits.","validation.mimes":"The :attribute field must be a file of type: :values.","validation.mimetypes":"The :attribute field must be a file of type: :values.","validation.min.array":"The :attribute field must have at least :min items.","validation.min.file":"The :attribute field must be at least :min kilobytes.","validation.min.numeric":"The :attribute field must be at least :min.","validation.min.string":"The :attribute field must be at least :min characters.","validation.min_digits":"The :attribute field 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 field must be a multiple of :value.","validation.not_in":"The selected :attribute is invalid.","validation.not_regex":"The :attribute field format is invalid.","validation.numeric":"The :attribute field must be a number.","validation.password.letters":"The :attribute field must contain at least one letter.","validation.password.mixed":"The :attribute field must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The :attribute field must contain at least one number.","validation.password.symbols":"The :attribute field 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 field 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_if_declined":"The :attribute field is required when :other is declined.","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 field must match :other.","validation.size.array":"The :attribute field must contain :size items.","validation.size.file":"The :attribute field must be :size kilobytes.","validation.size.numeric":"The :attribute field must be :size.","validation.size.string":"The :attribute field must be :size characters.","validation.starts_with":"The :attribute field must start with one of the following: :values.","validation.string":"The :attribute field must be a string.","validation.timezone":"The :attribute field 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 field must be a valid URL.","validation.ulid":"The :attribute field must be a valid ULID.","validation.uuid":"The :attribute field must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","auth.sign_out":"Sign out","auth.sign_in":"Sign in","auth.sign_in_using":"Sign in using","auth.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Are you sure you want to log out?","auth.confirm.revoke_device":"Are you sure you want to revoke this device?","auth.confirm.delete_account":"Are you sure you want to delete your account?","auth.webauthn.security_device":"a security device","auth.webauthn.security_devices":"Security devices","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

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

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

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

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 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 field must be accepted.","validation.accepted_if":"The :attribute field must be accepted when :other is :value.","validation.active_url":"The :attribute field must be a valid URL.","validation.after":"The :attribute field must be a date after :date.","validation.after_or_equal":"The :attribute field must be a date after or equal to :date.","validation.alpha":"The :attribute field must only contain letters.","validation.alpha_dash":"The :attribute field must only contain letters, numbers, dashes, and underscores.","validation.alpha_num":"The :attribute field must only contain letters and numbers.","validation.array":"The :attribute field must be an array.","validation.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","validation.before":"The :attribute field must be a date before :date.","validation.before_or_equal":"The :attribute field must be a date before or equal to :date.","validation.between.array":"The :attribute field must have between :min and :max items.","validation.between.file":"The :attribute field must be between :min and :max kilobytes.","validation.between.numeric":"The :attribute field must be between :min and :max.","validation.between.string":"The :attribute field 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 field confirmation does not match.","validation.contains":"The :attribute field is missing a required value.","validation.current_password":"The password is incorrect.","validation.date":"The :attribute field must be a valid date.","validation.date_equals":"The :attribute field must be a date equal to :date.","validation.date_format":"The :attribute field must match the format :format.","validation.decimal":"The :attribute field must have :decimal decimal places.","validation.declined":"The :attribute field must be declined.","validation.declined_if":"The :attribute field must be declined when :other is :value.","validation.different":"The :attribute field and :other must be different.","validation.digits":"The :attribute field must be :digits digits.","validation.digits_between":"The :attribute field must be between :min and :max digits.","validation.dimensions":"The :attribute field has invalid image dimensions.","validation.distinct":"The :attribute field has a duplicate value.","validation.doesnt_end_with":"The :attribute field must not end with one of the following: :values.","validation.doesnt_start_with":"The :attribute field must not start with one of the following: :values.","validation.email":"The :attribute field must be a valid email address.","validation.ends_with":"The :attribute field 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 field must be a file.","validation.filled":"The :attribute field must have a value.","validation.gt.array":"The :attribute field must have more than :value items.","validation.gt.file":"The :attribute field must be greater than :value kilobytes.","validation.gt.numeric":"The :attribute field must be greater than :value.","validation.gt.string":"The :attribute field must be greater than :value characters.","validation.gte.array":"The :attribute field must have :value items or more.","validation.gte.file":"The :attribute field must be greater than or equal to :value kilobytes.","validation.gte.numeric":"The :attribute field must be greater than or equal to :value.","validation.gte.string":"The :attribute field 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 field must be an image.","validation.in":"The selected :attribute is invalid.","validation.in_array":"The :attribute field must exist in :other.","validation.integer":"The :attribute field must be an integer.","validation.ip":"The :attribute field must be a valid IP address.","validation.ipv4":"The :attribute field must be a valid IPv4 address.","validation.ipv6":"The :attribute field must be a valid IPv6 address.","validation.json":"The :attribute field must be a valid JSON string.","validation.list":"The :attribute field must be a list.","validation.lowercase":"The :attribute field must be lowercase.","validation.lt.array":"The :attribute field must have less than :value items.","validation.lt.file":"The :attribute field must be less than :value kilobytes.","validation.lt.numeric":"The :attribute field must be less than :value.","validation.lt.string":"The :attribute field must be less than :value characters.","validation.lte.array":"The :attribute field must not have more than :value items.","validation.lte.file":"The :attribute field must be less than or equal to :value kilobytes.","validation.lte.numeric":"The :attribute field must be less than or equal to :value.","validation.lte.string":"The :attribute field must be less than or equal to :value characters.","validation.mac_address":"The :attribute field must be a valid MAC address.","validation.max.array":"The :attribute field must not have more than :max items.","validation.max.file":"The :attribute field must not be greater than :max kilobytes.","validation.max.numeric":"The :attribute field must not be greater than :max.","validation.max.string":"The :attribute field must not be greater than :max characters.","validation.max_digits":"The :attribute field must not have more than :max digits.","validation.mimes":"The :attribute field must be a file of type: :values.","validation.mimetypes":"The :attribute field must be a file of type: :values.","validation.min.array":"The :attribute field must have at least :min items.","validation.min.file":"The :attribute field must be at least :min kilobytes.","validation.min.numeric":"The :attribute field must be at least :min.","validation.min.string":"The :attribute field must be at least :min characters.","validation.min_digits":"The :attribute field 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 field must be a multiple of :value.","validation.not_in":"The selected :attribute is invalid.","validation.not_regex":"The :attribute field format is invalid.","validation.numeric":"The :attribute field must be a number.","validation.password.letters":"The :attribute field must contain at least one letter.","validation.password.mixed":"The :attribute field must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The :attribute field must contain at least one number.","validation.password.symbols":"The :attribute field 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 field 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_if_declined":"The :attribute field is required when :other is declined.","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 field must match :other.","validation.size.array":"The :attribute field must contain :size items.","validation.size.file":"The :attribute field must be :size kilobytes.","validation.size.numeric":"The :attribute field must be :size.","validation.size.string":"The :attribute field must be :size characters.","validation.starts_with":"The :attribute field must start with one of the following: :values.","validation.string":"The :attribute field must be a string.","validation.timezone":"The :attribute field 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 field must be a valid URL.","validation.ulid":"The :attribute field must be a valid ULID.","validation.uuid":"The :attribute field must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","auth.sign_out":"Sign out","auth.sign_in":"Sign in","auth.sign_in_using":"Sign in using","auth.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Are you sure you want to log out?","auth.confirm.revoke_device":"Are you sure you want to revoke this device?","auth.confirm.delete_account":"Are you sure you want to delete your account?","auth.webauthn.security_device":"a security device","auth.webauthn.security_devices":"Security devices","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

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

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

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

\r Attention! The Email & Password form remains available despite this option being enabled, but it will always return an 'Authentication failed' response.`,"auth.webauthn.need_a_security_device_to_enable_options":"Set at least one device to enable the following options","auth.webauthn.options":"Options","auth.forms.name":"Name","auth.forms.login":"Login","auth.forms.webauthn_login":"WebAuthn login","auth.forms.sso_login":"SSO 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.sso_only_form_restricted_to_admin":"Regular users must sign in with SSO. Other methods are for administrators only.","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","auth.sso_providers.unknown":"unknown","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","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.send":"Send","commons.optimize":"Optimize","commons.IP":"IP","commons.browser":"Browser","commons.operating_system_short":"OS","commons.no_entry_yet":"No entry yet","commons.time":"Time","commons.ip_address":"IP Address","commons.device":"Device","commons.one_month":"1 mo.","commons.x_month":":x mos.","commons.one_year":"1 yr.","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 or SSO","errors.unsupported_with_sso_only":"This authentication method is for administrators only. Users must log in with SSO.","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.cannot_demote_the_only_admin":"Cannot demote 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.cannot_detect_qrcode_in_image":"Cannot detect a QR code in the image, try to crop the image","errors.cannot_decode_detected_qrcode":"Cannot decode detected QR code, try to crop or sharpen the image","errors.qrcode_has_invalid_checksum":"QR code has invalid checksum","errors.no_readable_qrcode":"No readable QR code","errors.failed_icon_store_database_toggling":"Migration of icons failed. The setting has been restored to its previous value.","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)","languages.tr":"Türkçe (Turkish)","notifications.hello":"Hello","notifications.hello_user":"Hello :username,","notifications.regards":"Regards","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 :)","notifications.new_device.subject":"Connection to 2FAuth from a new device","notifications.new_device.resume":"A new device has just connected to your 2FAuth account.","notifications.new_device.connection_details":"Here are the details of this connection","notifications.new_device.recommandations":"If this was you, you can ignore this alert. If you suspect any suspicious activity on your account, please change your password.","notifications.failed_login.subject":"Failed login to 2FAuth","notifications.failed_login.resume":"There has been a failed login attempt to your 2FAuth account.","notifications.failed_login.connection_details":"Here are the details of this connection attempt","notifications.failed_login.recommandations":"If this was you, you can ignore this alert. If further attempts fail, you should contact the 2FAuth administrator to review security settings and take action against this attacker.","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.notifications":"Notifications","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.timezone.label":"Time zone","settings.forms.timezone.help":"The time zone applied to all dates and times displayed in the application","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":"Click on a generated password to copy it automatically hides it from the screen","settings.forms.auto_close_timeout.label":'Auto close OTP',"settings.forms.auto_close_timeout.help":"Automatically hide on-screen password after a timeout. This avoids unnecessary requests for fresh passwords if you forget to close the password view.","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.sort_case_sensitive.label":"Sort case sensitive","settings.forms.sort_case_sensitive.help":"When invoked, force the Sort function to sort accounts on a case-sensitive basis","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 account icons 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.auto_save_qrcoded_account.label":"Auto-save accounts","settings.forms.auto_save_qrcoded_account.help":"New accounts are automatically registered after scanning or uploading a QR code, no need to click a Save button","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.notify_on_new_auth_device.label":"On new device","settings.forms.notify_on_new_auth_device.help":"Get an email when a new device connects to your 2FAuth account for the first time","settings.forms.notify_on_failed_login.label":"On failed login","settings.forms.notify_on_failed_login.help":"Get an email each time an attempt to connect to your 2FAuth account fails","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","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.2_minutes":"After 2 minutes","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","titles.admin.logs.access":"Access log","twofaccounts.service":"Service","twofaccounts.account":"Account","twofaccounts.icon":"Icon","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_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","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.group.label":"Group","twofaccounts.forms.group.help":"The group to which the account is to be assigned","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.IsValidRegex":"The :attribute field must be a valid regex pattern.","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 field is not a valid otpauth uri.","validation.custom.otp_type.in":"The :attribute field 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 field must be a base32 encoded string.","validation.custom.account.regex":"The :attribute field must not contain colon.","validation.custom.service.regex":"The :attribute field 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-Bb5PmW6j.js b/public/build/assets/php_es-D_CFd2fo.js similarity index 99% rename from public/build/assets/php_es-Bb5PmW6j.js rename to public/build/assets/php_es-D_CFd2fo.js index 5cd787e3..7d229e89 100644 --- a/public/build/assets/php_es-Bb5PmW6j.js +++ b/public/build/assets/php_es-D_CFd2fo.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Administrador","admin.admin_panel":"Admin panel","admin.app_setup":"Configuración de la aplicación","admin.auth":"Auth","admin.registrations":"Registros","admin.users":"Usuarios","admin.users_legend":"Administre los usuarios registrados en su instancia o cree otros nuevos.","admin.admin_settings":"Ajustes de administración","admin.create_new_user":"Crear un usuario","admin.new_user":"Nuevo usuario","admin.search_user_placeholder":"Nombre de usuario, email...","admin.quick_filters_colons":"Filtros rápidos:","admin.user_created":"usuario creado correctamente","admin.confirm.delete_user":"¿Está seguro que desea eliminar este usuario? No hay vuelta atrás.","admin.confirm.request_password_reset":"¿Está seguro de que desea restablecer la contraseña de este usuario?","admin.confirm.purge_password_reset_request":"¿Está seguro que desea revocar la solicitud anterior?","admin.confirm.delete_account":"¿Está seguro de que desea eliminar este usuario?","admin.confirm.edit_own_account":"Esta es tu propia cuenta. ¿Estás seguro?","admin.confirm.change_admin_role":"Esto tendrá graves impactos en los permisos de este usuario. ¿Estás seguro?","admin.confirm.demote_own_account":"Ya no serás administrador. ¿Estás seguro?","admin.logs":"Registros","admin.administration_legend":"Los siguientes ajustes son globales y se aplican a todos los usuarios.","admin.user_management":"Gestión de usuarios","admin.oauth_provider":"Proveedor OAuth","admin.account_bound_to_x_via_oauth":"Esta cuenta está vinculada a una cuenta :provider a través de OAuth","admin.last_seen_on_date":"Visto por última vez :date","admin.registered_on_date":"Registrado :date","admin.updated_on_date":"Actualizado :date","admin.access":"Acceso","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","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.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","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.

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Administrador","admin.admin_panel":"Admin panel","admin.app_setup":"Configuración de la aplicación","admin.auth":"Auth","admin.registrations":"Registros","admin.users":"Usuarios","admin.users_legend":"Administre los usuarios registrados en su instancia o cree otros nuevos.","admin.admin_settings":"Ajustes de administración","admin.create_new_user":"Crear un usuario","admin.new_user":"Nuevo usuario","admin.search_user_placeholder":"Nombre de usuario, email...","admin.quick_filters_colons":"Filtros rápidos:","admin.user_created":"usuario creado correctamente","admin.confirm.delete_user":"¿Está seguro que desea eliminar este usuario? No hay vuelta atrás.","admin.confirm.request_password_reset":"¿Está seguro de que desea restablecer la contraseña de este usuario?","admin.confirm.purge_password_reset_request":"¿Está seguro que desea revocar la solicitud anterior?","admin.confirm.delete_account":"¿Está seguro de que desea eliminar este usuario?","admin.confirm.edit_own_account":"Esta es tu propia cuenta. ¿Estás seguro?","admin.confirm.change_admin_role":"Esto tendrá graves impactos en los permisos de este usuario. ¿Estás seguro?","admin.confirm.demote_own_account":"Ya no serás administrador. ¿Estás seguro?","admin.logs":"Registros","admin.administration_legend":"Los siguientes ajustes son globales y se aplican a todos los usuarios.","admin.user_management":"Gestión de usuarios","admin.oauth_provider":"Proveedor OAuth","admin.account_bound_to_x_via_oauth":"Esta cuenta está vinculada a una cuenta :provider a través de OAuth","admin.last_seen_on_date":"Visto por última vez :date","admin.registered_on_date":"Registrado :date","admin.updated_on_date":"Actualizado :date","admin.access":"Acceso","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","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.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","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.

\r + 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.

\r + 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.

\r 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.sso_login":"SSO login","auth.forms.email":"E-mail","auth.forms.password":"Contraseña","auth.forms.reveal_password":"Revelar contraseña","auth.forms.hide_password":"Ocultar contraseña","auth.forms.confirm_password":"Confirmar contraseña","auth.forms.new_password":"New password","auth.forms.confirm_new_password":"Confirma la contraseña nueva","auth.forms.dont_have_account_yet":"¿Aún no tienes una cuenta?","auth.forms.already_register":"¿Ya te has registrado?","auth.forms.authentication_failed":"La autenticación ha fallado","auth.forms.forgot_your_password":"¿Olvidó su contraseña?","auth.forms.request_password_reset":"Reiniciarlo","auth.forms.reset_your_password":"Reestablecer tu contraseña","auth.forms.reset_password":"Restablecer contraseña","auth.forms.disabled_in_demo":"Característica desactivada en el modo Demo","auth.forms.sso_only_form_restricted_to_admin":"Regular users must sign in with SSO. Other methods are for administrators only.","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","auth.sso_providers.unknown":"unknown","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","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.send":"Send","commons.optimize":"Optimize","commons.IP":"IP","commons.browser":"Browser","commons.operating_system_short":"OS","commons.no_entry_yet":"No entry yet","commons.time":"Time","commons.ip_address":"IP Address","commons.device":"Device","commons.one_month":"1 mo.","commons.x_month":":x mos.","commons.one_year":"1 yr.","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":"Not applicable when using an auth proxy or SSO","errors.unsupported_with_sso_only":"This authentication method is for administrators only. Users must log in with SSO.","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.cannot_demote_the_only_admin":"Cannot demote the only admin account","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","errors.cannot_detect_qrcode_in_image":"Cannot detect a QR code in the image, try to crop the image","errors.cannot_decode_detected_qrcode":"Cannot decode detected QR code, try to crop or sharpen the image","errors.qrcode_has_invalid_checksum":"QR code has invalid checksum","errors.no_readable_qrcode":"No readable QR code","errors.failed_icon_store_database_toggling":"Migration of icons failed. The setting has been restored to its previous value.","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)","languages.tr":"Türkçe (Turkish)","notifications.hello":"Hello","notifications.hello_user":"Hello :username,","notifications.regards":"Regards","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 :)","notifications.new_device.subject":"Connection to 2FAuth from a new device","notifications.new_device.resume":"A new device has just connected to your 2FAuth account.","notifications.new_device.connection_details":"Here are the details of this connection","notifications.new_device.recommandations":"If this was you, you can ignore this alert. If you suspect any suspicious activity on your account, please change your password.","notifications.failed_login.subject":"Failed login to 2FAuth","notifications.failed_login.resume":"There has been a failed login attempt to your 2FAuth account.","notifications.failed_login.connection_details":"Here are the details of this connection attempt","notifications.failed_login.recommandations":"If this was you, you can ignore this alert. If further attempts fail, you should contact the 2FAuth administrator to review security settings and take action against this attacker.","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.notifications":"Notifications","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.timezone.label":"Time zone","settings.forms.timezone.help":"The time zone applied to all dates and times displayed in the application","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":"Click on a generated password to copy it automatically hides it from the screen","settings.forms.auto_close_timeout.label":'Auto close OTP',"settings.forms.auto_close_timeout.help":"Automatically hide on-screen password after a timeout. This avoids unnecessary requests for fresh passwords if you forget to close the password view.","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.sort_case_sensitive.label":"Sort case sensitive","settings.forms.sort_case_sensitive.help":"When invoked, force the Sort function to sort accounts on a case-sensitive basis","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":"Show account icons in the main view","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.auto_save_qrcoded_account.label":"Auto-save accounts","settings.forms.auto_save_qrcoded_account.help":"New accounts are automatically registered after scanning or uploading a QR code, no need to click a Save button","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.notify_on_new_auth_device.label":"On new device","settings.forms.notify_on_new_auth_device.help":"Get an email when a new device connects to your 2FAuth account for the first time","settings.forms.notify_on_failed_login.label":"On failed login","settings.forms.notify_on_failed_login.help":"Get an email each time an attempt to connect to your 2FAuth account fails","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","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.2_minutes":"After 2 minutes","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","titles.admin.logs.access":"Access log","twofaccounts.service":"Servicio","twofaccounts.account":"Cuenta","twofaccounts.icon":"Icono","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_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","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.group.label":"Group","twofaccounts.forms.group.help":"The group to which the account is to be assigned","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.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","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.can":"The :attribute field contains an unauthorized value.","validation.confirmed":"La confirmación de :attribute no coincide.","validation.contains":"The :attribute field is missing a required value.","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.decimal":"The :attribute field must have :decimal decimal places.","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.extensions":"The :attribute field must have one of the following extensions: :values.","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.hex_color":"The :attribute field must be a valid hexadecimal color.","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.list":"The :attribute field must be a list.","validation.lowercase":"The :attribute field must be lowercase.","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.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":":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.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":"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_if_declined":"The :attribute field is required when :other is declined.","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.uppercase":"The :attribute field must be uppercase.","validation.url":":attribute debe ser una URL válida.","validation.ulid":"The :attribute field must be a valid ULID.","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.IsValidRegex":"The :attribute must be a valid regex pattern.","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-BnJxw11S.js b/public/build/assets/php_fr-We9OMs7M.js similarity index 99% rename from public/build/assets/php_fr-BnJxw11S.js rename to public/build/assets/php_fr-We9OMs7M.js index c1c237af..7d4e1d0b 100644 --- a/public/build/assets/php_fr-BnJxw11S.js +++ b/public/build/assets/php_fr-We9OMs7M.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Administration","admin.app_setup":"Configuration","admin.auth":"Auth","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 précédente ?","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.successful_login_on":'Connexion réussie le :login_at',"admin.successful_logout_on":'Déconnexion réussie le :login_at',"admin.failed_login_on":'Connexion refusée le :login_at',"admin.viewed_on":'Vu le :login_at',"admin.last_accesses":"Derniers accès","admin.see_full_log":"Voir le log complet","admin.browser_on_platform":":browser sur :platform","admin.access_log_has_more_entries":"Le journal d'accès contient plus d'entrées.","admin.access_log_legend_for_user":"Journal des accès de l'utilisateur :username","admin.show_last_month_log":"Afficher les entrées sur un mois","admin.show_three_months_log":"Afficher les entrées sur 3 mois","admin.show_six_months_log":"Afficher les entrées sur 6 mois","admin.show_one_year_log":"Afficher les entrées sur un an","admin.sort_by_date_asc":"Afficher les plus anciens en premier","admin.sort_by_date_desc":"Afficher les plus récents en premier","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Base de données","admin.file_system":"Système de fichiers","admin.storage":"Stockage","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 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.use_sso_only.label":"Utiliser uniquement SSO","admin.forms.use_sso_only.help":"Définir SSO comme la seule méthode disponible pour se connecter à 2FAuth. La connexion par mot de passe ou Webauthn est alors désactivée pour les utilisateurs. Les administrateurs ne sont pas affectés par cette restriction.","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.health_endpoint.label":"État de santé","admin.forms.health_endpoint.help":"URL que vous pouvez visiter pour vérifier l'état de santé de cette instance 2FAuth. Cette URL peut être utilisée pour configurer une sonde Docker HEALTHCHECK ou une sonde Kubernetes HTTPS Liveness.","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.","admin.forms.store_icon_to_database.label":"Enregistrer les icônes dans la base de données","admin.forms.store_icon_to_database.help":"Les icônes sont enregistrées dans la base de données en plus de leur stockage dans le système de fichiers. Celui-ci est alors utilisé uniquement comme cache. Cela facilite la création de backup de votre instance 2FAuth car seule sa base de données est à sauvegarder.

Attention toutefois, certains effets négatifs sont possibles : La taille de la base de données va augmenter significativement et rapidement si l'instance héberge beaucoup d'icônes de grandes résolutions. Cela peut également affecter les performances de l'application car le système de fichiers est plus souvent intéroggé pour s'assurer que son état reflète bien celui de la base de données.","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.if_administrator":"Administrateur ?","auth.sign_in_here":"Connectez-vous sans SSO","auth.or_continue_with":"Vous pouvez aussi continuer avec :","auth.password_login_and_webauthn_are_disabled":"La connexion par mot de passe ou WebAuthn est désactivée.","auth.sign_in_using_sso":"Choisissez un fournisseur SSO pour vous connecter :","auth.no_provider":"aucun fournisseur","auth.no_sso_provider_or_provider_is_missing":"Fournisseur manquant ?","auth.see_how_to_enable_sso":"Voir comment activer un fournisseur","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.sso_only_x_settings_are_disabled":"L'authentification n'est possible qu'avec SSO, :auth_method est désactivé","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.

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Administration","admin.app_setup":"Configuration","admin.auth":"Auth","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 précédente ?","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.successful_login_on":'Connexion réussie le :login_at',"admin.successful_logout_on":'Déconnexion réussie le :login_at',"admin.failed_login_on":'Connexion refusée le :login_at',"admin.viewed_on":'Vu le :login_at',"admin.last_accesses":"Derniers accès","admin.see_full_log":"Voir le log complet","admin.browser_on_platform":":browser sur :platform","admin.access_log_has_more_entries":"Le journal d'accès contient plus d'entrées.","admin.access_log_legend_for_user":"Journal des accès de l'utilisateur :username","admin.show_last_month_log":"Afficher les entrées sur un mois","admin.show_three_months_log":"Afficher les entrées sur 3 mois","admin.show_six_months_log":"Afficher les entrées sur 6 mois","admin.show_one_year_log":"Afficher les entrées sur un an","admin.sort_by_date_asc":"Afficher les plus anciens en premier","admin.sort_by_date_desc":"Afficher les plus récents en premier","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Base de données","admin.file_system":"Système de fichiers","admin.storage":"Stockage","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 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.use_sso_only.label":"Utiliser uniquement SSO","admin.forms.use_sso_only.help":"Définir SSO comme la seule méthode disponible pour se connecter à 2FAuth. La connexion par mot de passe ou Webauthn est alors désactivée pour les utilisateurs. Les administrateurs ne sont pas affectés par cette restriction.","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.health_endpoint.label":"État de santé","admin.forms.health_endpoint.help":"URL que vous pouvez visiter pour vérifier l'état de santé de cette instance 2FAuth. Cette URL peut être utilisée pour configurer une sonde Docker HEALTHCHECK ou une sonde Kubernetes HTTPS Liveness.","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.","admin.forms.store_icon_to_database.label":"Enregistrer les icônes dans la base de données","admin.forms.store_icon_to_database.help":"Les icônes sont enregistrées dans la base de données en plus de leur stockage dans le système de fichiers. Celui-ci est alors utilisé uniquement comme cache. Cela facilite la création de backup de votre instance 2FAuth car seule sa base de données est à sauvegarder.

Attention toutefois, certains effets négatifs sont possibles : La taille de la base de données va augmenter significativement et rapidement si l'instance héberge beaucoup d'icônes de grandes résolutions. Cela peut également affecter les performances de l'application car le système de fichiers est plus souvent intéroggé pour s'assurer que son état reflète bien celui de la base de données.","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.if_administrator":"Administrateur ?","auth.sign_in_here":"Connectez-vous sans SSO","auth.or_continue_with":"Vous pouvez aussi continuer avec :","auth.password_login_and_webauthn_are_disabled":"La connexion par mot de passe ou WebAuthn est désactivée.","auth.sign_in_using_sso":"Choisissez un fournisseur SSO pour vous connecter :","auth.no_provider":"aucun fournisseur","auth.no_sso_provider_or_provider_is_missing":"Fournisseur manquant ?","auth.see_how_to_enable_sso":"Voir comment activer un fournisseur","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.sso_only_x_settings_are_disabled":"L'authentification n'est possible qu'avec SSO, :auth_method est désactivé","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.

\r + 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.

\r + 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.

\r 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.sso_login":"Connexion SSO","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.sso_only_form_restricted_to_admin":"Les utilisateurs doivent se connecter avec SSO. Les autres méthodes sont réservées aux administrateurs.","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é","auth.sso_providers.unknown":"inconnu","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","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.send":"Envoyer","commons.optimize":"Optimiser","commons.IP":"IP","commons.browser":"Navigateur","commons.operating_system_short":"OS","commons.no_entry_yet":"Aucune entrée pour l'instant","commons.time":"Heure","commons.ip_address":"Adresse IP","commons.device":"Appareil","commons.one_month":"1 mo.","commons.x_month":":x mo.","commons.one_year":"1 an","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 ou SSO","errors.unsupported_with_sso_only":"Cette méthode d'authentification est réservée aux administrateurs. Les utilisateurs doivent se connecter avec SSO.","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.cannot_demote_the_only_admin":"Impossible de rétrograder 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","errors.cannot_detect_qrcode_in_image":"Impossible de détecter un QR code dans l'image, essayez de recadrer l'image","errors.cannot_decode_detected_qrcode":"Impossible de décoder le QR code détecté, essayez de rogner ou d'améliorer l'image","errors.qrcode_has_invalid_checksum":"La somme de contrôle du QR code est invalide","errors.no_readable_qrcode":"Aucun QR code lisible","errors.failed_icon_store_database_toggling":"La migration des icônes a échoué. Le paramètre a été restaurée à sa précédente valeur.","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)","languages.tr":"Türkçe (Turc)","notifications.hello":"Bonjour","notifications.hello_user":"Bonjour :username,","notifications.regards":"Cordialement","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 :)","notifications.new_device.subject":"Connexion à 2FAuth depuis un nouvel appareil","notifications.new_device.resume":"Un nouvel appareil vient de se connecter à votre compte 2FAuth.","notifications.new_device.connection_details":"Voici les détails de cette connexion","notifications.new_device.recommandations":"S'il s'agit de vous, vous pouvez ignorer cette alerte. Dans le cas contraire, et si vous soupçonnez une activité suspecte sur votre compte, changez votre mot de passe sans attendre.","notifications.failed_login.subject":"Échec de connexion à 2FAuth","notifications.failed_login.resume":"Une tentative de connexion à votre compte 2FAuth a eu lieu mais a été rejetée.","notifications.failed_login.connection_details":"Voici les détails de cette tentative de connexion","notifications.failed_login.recommandations":"S'il s'agit de vous, vous pouvez ignorer cette alerte. Si d'autres tentatives infructueuses se produisent, vous devriez contacter l'administrateur de 2FAuth pour examiner les paramètres de sécurité et prendre des mesures contre cet attaquant.","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.notifications":"Notifications","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.timezone.label":"Fuseau horaire","settings.forms.timezone.help":"Fuseau horaire appliqué à toutes les dates et heures affichées dans l'application","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.auto_close_timeout.label":'Cacher les OTP automatiquement',"settings.forms.auto_close_timeout.help":"Cache automatiquement le mot de passe à l'écran après un certain temps. Cela évite les générations inutiles de nouveaux OTP si la vue dédiée à leur affichage est restée ouverte.","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.sort_case_sensitive.label":"Trier en tenant compte de la casse","settings.forms.sort_case_sensitive.help":"Force la fonction de tri à tenir compte de la casse des lettres (majuscule/minuscule) pour ordonner les éléments","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":"Afficher 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.auto_save_qrcoded_account.label":"Sauvegarde automatique des comptes","settings.forms.auto_save_qrcoded_account.help":"Les nouveaux comptes sont automatiquement enregistrés après le scan ou le téléchargement d'un code QR, il n'est plus nécessaire de cliquer sur le bouton Enregistrer","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.notify_on_new_auth_device.label":"Pour un nouvel appareil","settings.forms.notify_on_new_auth_device.help":"Recevez un email quand un nouvel appareil se connecte à votre compte 2FAuth pour la première fois","settings.forms.notify_on_failed_login.label":"Après une connexion échouée","settings.forms.notify_on_failed_login.help":"Recevez un e-mail chaque fois qu'une tentative de connexion à votre compte 2FAuth échoue","settings.forms.show_email_in_footer.label":"Afficher l'email dans le pied de page","settings.forms.show_email_in_footer.help":"Affiche l'email de l'utilisateur connecté dans le pied de page, en lieu et place des liens de navigation. Les liens sont alors accessibles dans un menu de navigation que l'on affiche en cliquant/tapotant sur l'email.","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.2_minutes":"Après 2 minutes","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","titles.admin.logs.access":"Journal des accès","twofaccounts.service":"Service","twofaccounts.account":"Compte","twofaccounts.icon":"Icône","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_accounts":"Exporter les comptes sélectionnés","twofaccounts.twofauth_export_format":"Format 2FAuth","twofaccounts.twofauth_export_format_sub":"Exporter les comptes en utilisant le format json de 2FAuth","twofaccounts.twofauth_export_format_desc":"Utilisez cette option si vous avez besoin de créer une sauvegarde qui peut être restaurée. Ce format prend en charge les icônes.","twofaccounts.twofauth_export_format_url":"Le schéma de données est décrit ici :","twofaccounts.twofauth_export_schema":"Schéma d'export 2FAuth","twofaccounts.otpauth_export_format":"URIs otpauth","twofaccounts.otpauth_export_format_sub":"Exporter les données sous forme de liste d'URIs otpauth","twofaccounts.otpauth_export_format_desc":"L'URI otpauth est le format le plus couramment utilisé pour échanger des données 2FA, par exemple sous la forme d'un code QR lorsque vous activez l'authentification 2FA sur un site Web. Préférez ce format si vous souhaitez quitter 2FAuth pour une solution alternative.","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.group.label":"Groupe","twofaccounts.forms.group.help":"Le groupe auquel assigner le compte","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 vaut :value.","validation.active_url":"Le champ :attribute doit être une URL valide.","validation.after":"Le champ :attribute doit être une date postérieure à :date.","validation.after_or_equal":"Le champ :attribute doit être une date postérieure ou égale à :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.ascii":"Le champ :attribute ne doit contenir que des caractères alphanumériques et des symboles d'un seul octet.","validation.before":"Le champ :attribute doit être une date antérieure à :date.","validation.before_or_equal":"Le champ :attribute doit être une date antérieure ou égale à :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":"Le champ :attribute doit être compris entre :min et :max.","validation.between.string":"Le champ :attribute doit contenir entre :min et :max caractères.","validation.boolean":"Le champ :attribute doit être vrai ou faux.","validation.can":"Le champ :attribute contient une valeur interdite.","validation.confirmed":"La confirmation du champ :attribute ne correspond pas.","validation.contains":"Le champ :attribute doit être renseigné.","validation.current_password":"Le mot de passe est incorrect.","validation.date":"Le champ :attribute doit être une date valide.","validation.date_equals":"Le champ :attribute doit être une date égale à :date.","validation.date_format":"Le champ :attribute doit correspondre au format :format.","validation.decimal":"Le champ :attribute doit avoir :decimal chiffres après la virgule.","validation.declined":"Le champ :attribute doit être décliné.","validation.declined_if":"Le champ :attribute doit être décliné quand :other vaut :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":"Les dimensions de l'image du champ :attribute ne sont pas conformes.","validation.distinct":"Le champ :attribute a une valeur en double.","validation.doesnt_end_with":"Le champ :attribute ne doit pas se terminer par l'une de ces valeurs : :values.","validation.doesnt_start_with":"Le champ :attribute ne doit 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 de ces valeurs : :values.","validation.enum":"Le champ :attribute sélectionné n'est pas valide.","validation.exists":"Le champ :attribute sélectionné est invalide.","validation.extensions":"Le champ :attribute doit avoir une des extensions suivantes : :values.","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 du champ :attribute doit être supérieure à :value kilo-octets.","validation.gt.numeric":"Le champ :attribute doit être supérieur à :value.","validation.gt.string":"Le champ :attribute doit contenir plus de :value caractères.","validation.gte.array":"Le tableau :attribute doit contenir au moins :value éléments.","validation.gte.file":"Le fichier du champ :attribute doit peser au moins :value kilo-octets.","validation.gte.numeric":"Le champ :attribute doit être supérieur ou égal à :value.","validation.gte.string":"Le champ :attribute doit contenir au moins :value caractères.","validation.hex_color":"Le champ :attribute doit être un code couleur hexadécimal valide.","validation.image":"Le champ :attribute doit être une image.","validation.in":"Le champ :attribute est invalide.","validation.in_array":"La valeur du champ :attribute doit exister 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 une chaîne JSON valide.","validation.list":"Le champ :attribute doit être une liste.","validation.lowercase":"Le champ :attribute doit être en minuscule.","validation.lt.array":"Le tableau :attribute doit contenir moins de :value éléments.","validation.lt.file":"Le fichier du champ :attribute doit peser moins de :value kilo-octets.","validation.lt.numeric":"Le champ :attribute doit être inférieur à :value.","validation.lt.string":"Le champ :attribute doit contenir moins de :value caractères.","validation.lte.array":"Le tableau :attribute ne doit pas contenir plus de :value éléments.","validation.lte.file":"Le fichier du champ :attribute ne doit pas peser plus de :value kilo-octets.","validation.lte.numeric":"Le champ :attribute doit être inférieur ou égal à :value.","validation.lte.string":"Le champ :attribute doit contenir au plus :value caractères.","validation.mac_address":"Le champ :attribute doit être une adresse MAC valide.","validation.max.array":"Le tableau :attribute ne doit pas contenir plus de :max éléments.","validation.max.file":"Le fichier du champ :attribute ne doit pas peser plus de :max kilo-octets.","validation.max.numeric":"Le champ :attribute ne doit pas être supérieur à :max.","validation.max.string":"Le champ :attribute ne doit pas contenir plus de :max caractères.","validation.max_digits":"Le champ :attribute ne doit pas contenir plus de :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":"Le fichier du champ :attribute doit peser au moins :min kilo-octets.","validation.min.numeric":"Le champ :attribute doit être supérieur ou égal à :min.","validation.min.string":"Le champ :attribute doit contenir au moins :min caractères.","validation.min_digits":"Le champ :attribute doit contenir au moins :min chiffres.","validation.missing":"Le champ :attribute doit être manquant.","validation.missing_if":"Le champ :attribute doit être manquant quand :other vaut :value.","validation.missing_unless":"Le champ :attribute doit être manquant sauf si :other vaut :value.","validation.missing_with":"Le champ :attribute doit être manquant quand :values est présent.","validation.missing_with_all":"Le champ :attribute doit être manquant quand les valeurs :values sont présentes.","validation.multiple_of":"Le champ :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 être un nombre.","validation.password.letters":"Le champ :attribute doit contenir au moins une lettre.","validation.password.mixed":"Le champ :attribute doit contenir au moins une lettre majuscule et une lettre minuscule.","validation.password.numbers":"Le champ :attribute doit contenir au moins un chiffre.","validation.password.symbols":"Le champ :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.present_if":"Le champ :attribute doit être présent quand :other vaut :value.","validation.present_unless":"Le champ :attribute doit être présent sauf si :other vaut :value.","validation.present_with":"Le champ :attribute doit être présent quand :values est présent.","validation.present_with_all":"Le champ :attribute doit être présent quand les valeurs :values sont présentes.","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 n'est pas valide.","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_if_declined":"Le champ :attribute est requis lorsque :other est décliné.","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 correspondre.","validation.size.array":"Le tableau :attribute doit contenir :size éléments.","validation.size.file":"Le fichier du champ :attribute doit peser :size kilo-octets.","validation.size.numeric":"La valeur du champ :attribute doit être de :size.","validation.size.string":"Le champ :attribute doit contenir :size caractères.","validation.starts_with":"Le champ :attribute doit commencer avec une de ces valeurs : :values.","validation.string":"Le champ :attribute doit être une chaîne de caractères.","validation.timezone":"Le champ :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.uppercase":"Le champ :attribute doit être en majuscule.","validation.url":"Le champ :attribute doit être une URL valide.","validation.ulid":"Le champ :attribute doit être un ULID 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.IsValidRegex":"Le champ :attribute doit être une expression régulière valide.","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 champ :attribute doit être une chaîne encodée en base32.","validation.custom.account.regex":"Le champ :attribute ne doit pas contenir le symbole deux-points.","validation.custom.service.regex":"Le champ :attribute ne doit pas contenir le symbole 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-DmYSenvU.js b/public/build/assets/php_hi--xvyUCAZ.js similarity index 99% rename from public/build/assets/php_hi-DmYSenvU.js rename to public/build/assets/php_hi--xvyUCAZ.js index a3223532..f2007cc9 100644 --- a/public/build/assets/php_hi-DmYSenvU.js +++ b/public/build/assets/php_hi--xvyUCAZ.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"ऐडमिन","admin.admin_panel":"Admin panel","admin.app_setup":"ऐप का सेटअप","admin.auth":"Auth","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.successful_login_on":':login_at पर सफल लॉगिन',"admin.successful_logout_on":':login_at पर सफल लॉगआउट',"admin.failed_login_on":':login_at पर असफल लॉगिन',"admin.viewed_on":':login_at पर देखा गया',"admin.last_accesses":"पिछला प्रवेश","admin.see_full_log":"पूरा लॉग देखें","admin.browser_on_platform":":platform पर :browser","admin.access_log_has_more_entries":"प्रवेश के लॉग में और अधिक एंट्री हैं","admin.access_log_legend_for_user":":username का पूरा प्रवेश लॉग","admin.show_last_month_log":"पिछले महीने की एंट्री दिखाएं","admin.show_three_months_log":"पिछले 3 महीने की एंट्री दिखाएं","admin.show_six_months_log":"पिछले 6 महीने की एंट्री दिखाएं","admin.show_one_year_log":"पिछले साल की एंट्री दिखाएं","admin.sort_by_date_asc":"सबसे कम नई पहले दिखाएं","admin.sort_by_date_desc":"सबसे नई पहले दिखाएं","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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":"Enable SSO","admin.forms.enable_sso.help":"आगंतुकों को सिंगल साइन-ऑन योजना के माध्यम से बाहरी ID का उपयोग करके प्रमाणित करने की अनुमति दें","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","admin.forms.cache_management.label":"कैश का मैनेजमेन्ट","admin.forms.cache_management.help":"कभी-कभी कैश को साफ़ करने की आवश्यकता होती है, उदाहरण के लिए एनवायरनमेंट वेरीएबल में बदलाव या अपडेट के बाद। आप इसे यहां से कर सकते हैं.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","auth.failed":"यह परिचय हमारे रिकॉर्ड से मेल नहीं खाता","auth.password":"दिया गया पासवर्ड ग़लत है।","auth.throttle":"बहुत सारे लॉगिन के प्रयास। :seconds सेकंड में फिर से कोशिश करें।","auth.sign_out":"साइन आउट करें","auth.sign_in":"साइन इन करें","auth.sign_in_using":"साइन इन के लिए चाहिए","auth.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"आप ऐसे भी आगे जा सकते हैं:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","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 की बेहतर सुरक्षा का लाभ उठाने के लिए यह अनुशंसित सेटअप है।

- डिवाइस खो जाने की स्थिति में, आप इस विकल्प को रीसेट करके और अपने ईमेल और पासवर्ड का उपयोग करके साइन इन करके अपना खाता पुनर्प्राप्त कर पाएंगे।

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"ऐडमिन","admin.admin_panel":"Admin panel","admin.app_setup":"ऐप का सेटअप","admin.auth":"Auth","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.successful_login_on":':login_at पर सफल लॉगिन',"admin.successful_logout_on":':login_at पर सफल लॉगआउट',"admin.failed_login_on":':login_at पर असफल लॉगिन',"admin.viewed_on":':login_at पर देखा गया',"admin.last_accesses":"पिछला प्रवेश","admin.see_full_log":"पूरा लॉग देखें","admin.browser_on_platform":":platform पर :browser","admin.access_log_has_more_entries":"प्रवेश के लॉग में और अधिक एंट्री हैं","admin.access_log_legend_for_user":":username का पूरा प्रवेश लॉग","admin.show_last_month_log":"पिछले महीने की एंट्री दिखाएं","admin.show_three_months_log":"पिछले 3 महीने की एंट्री दिखाएं","admin.show_six_months_log":"पिछले 6 महीने की एंट्री दिखाएं","admin.show_one_year_log":"पिछले साल की एंट्री दिखाएं","admin.sort_by_date_asc":"सबसे कम नई पहले दिखाएं","admin.sort_by_date_desc":"सबसे नई पहले दिखाएं","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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":"Enable SSO","admin.forms.enable_sso.help":"आगंतुकों को सिंगल साइन-ऑन योजना के माध्यम से बाहरी ID का उपयोग करके प्रमाणित करने की अनुमति दें","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","admin.forms.cache_management.label":"कैश का मैनेजमेन्ट","admin.forms.cache_management.help":"कभी-कभी कैश को साफ़ करने की आवश्यकता होती है, उदाहरण के लिए एनवायरनमेंट वेरीएबल में बदलाव या अपडेट के बाद। आप इसे यहां से कर सकते हैं.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","auth.failed":"यह परिचय हमारे रिकॉर्ड से मेल नहीं खाता","auth.password":"दिया गया पासवर्ड ग़लत है।","auth.throttle":"बहुत सारे लॉगिन के प्रयास। :seconds सेकंड में फिर से कोशिश करें।","auth.sign_out":"साइन आउट करें","auth.sign_in":"साइन इन करें","auth.sign_in_using":"साइन इन के लिए चाहिए","auth.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"आप ऐसे भी आगे जा सकते हैं:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","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 खाते की सुरक्षा बढ़ा सकते हैं।

\r + 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 की बेहतर सुरक्षा का लाभ उठाने के लिए यह अनुशंसित सेटअप है।

\r + डिवाइस खो जाने की स्थिति में, आप इस विकल्प को रीसेट करके और अपने ईमेल और पासवर्ड का उपयोग करके साइन इन करके अपना खाता पुनर्प्राप्त कर पाएंगे।

\r ध्यान रहे! इस विकल्प के सक्षम होने के बावजूद ईमेल और पासवर्ड फॉर्म उपलब्ध रहता है, लेकिन वह हमेशा 'प्रमाणीकरण विफल' प्रतिक्रिया देगा।`,"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.sso_login":"SSO login","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.sso_only_form_restricted_to_admin":"Regular users must sign in with SSO. Other methods are for administrators only.","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":"कैप्स लॉक ऑन है","auth.sso_providers.unknown":"unknown","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","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.send":"भेजें","commons.optimize":"ऑप्‍टिमाइज़ करें","commons.IP":"आई पी","commons.browser":"ब्राउजर","commons.operating_system_short":"ओ एस","commons.no_entry_yet":"अभी प्रवेश निषेध है","commons.time":"समय","commons.ip_address":"आई पी अड्रेस","commons.device":"उपकरण (डिवाइस)","commons.one_month":"1 मास","commons.x_month":":x मास","commons.one_year":"1 वर्ष","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":"Not applicable when using an auth proxy or SSO","errors.unsupported_with_sso_only":"This authentication method is for administrators only. Users must log in with SSO.","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.cannot_demote_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":"इस ईमेल के लिए पासवर्ड रीसेट नहीं किया जा सकता है।","errors.cannot_detect_qrcode_in_image":"चित्र में QR Code पढ़ा नहीं जा रहा है, कृपया चित्र को क्रॉप करें","errors.cannot_decode_detected_qrcode":"QR Code डिकोड नहीं हो रहा है, कृपया चित्र को क्रॉप करें या ठीक करें","errors.qrcode_has_invalid_checksum":"QR Code का चेकसम अमान्य है","errors.no_readable_qrcode":"कोई QR Code पाठ्य नहीं है","errors.failed_icon_store_database_toggling":"Migration of icons failed. The setting has been restored to its previous value.","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":"हिंदी (हिंदी)","languages.tr":"Türkçe (Turkish)","notifications.hello":"नमस्कार","notifications.hello_user":"हैलो :username,","notifications.regards":"सम्मान सहित","notifications.test_email_settings.subject":"2FAuth की टेस्ट ईमेल","notifications.test_email_settings.reason":"आपको यह ईमेल इसलिए प्राप्त हुआ है क्योंकि आपने अपने 2FAuth इंस्टेंस की ईमेल सेटिंग्स को मान्य करने के लिए एक परीक्षण ईमेल का अनुरोध किया था।","notifications.test_email_settings.success":"बधाई हो! यह काम करता है :)","notifications.new_device.subject":"Connection to 2FAuth from a new device","notifications.new_device.resume":"एक नया उपकरण आपके 2 Fauth अकाउंट से अभी कनेक्ट हुआ है","notifications.new_device.connection_details":"इस कनेक्शन का ब्योरा इस प्रकार है","notifications.new_device.recommandations":"यदि यह आप थे तो इस अलर्ट को नजरंदाज कर दें। यदि अपने अकाउंट पर कोई संदिग्ध ऐक्टिविटी लगती है तो अपना पासवर्ड तुरंत बदलें।","notifications.failed_login.subject":"2FAuth में नाकाम लॉगिन","notifications.failed_login.resume":"आपके 2FAuth अकाउंट में एक नाकाम लॉगिन की कोशिश की गई","notifications.failed_login.connection_details":"इस कनेक्शन की कोषसीसह का ब्योरा इस प्रकार है","notifications.failed_login.recommandations":"यदि यह आप थे तो इस अलर्ट को नजरंदाज कर दें। यदि और कोशिश नाकाम होती है तो सुरक्षा सेटिंग के बारे में अपने 2FAuth ऐड्मिन से संपर्क करें और इस आक्रमणकारी के विरुद्ध कार्यवाही करें।","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.notifications":"Notifications","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.timezone.label":"टाइम ज़ोन","settings.forms.timezone.help":"एप में दिखाए गए सभी समय और तारीखों पर यह टाइम ज़ोन लागू होगा","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":"Click on a generated password to copy it automatically hides it from the screen","settings.forms.auto_close_timeout.label":'Auto close OTP',"settings.forms.auto_close_timeout.help":"Automatically hide on-screen password after a timeout. This avoids unnecessary requests for fresh passwords if you forget to close the password view.","settings.forms.clear_search_on_copy.label":"कॉपी होने पर खोज मिटा दें","settings.forms.clear_search_on_copy.help":"क्लिपबोर्ड पर कोड कॉपी होने के ठीक बाद सर्च बॉक्स को खाली कर दें","settings.forms.sort_case_sensitive.label":"Sort case sensitive","settings.forms.sort_case_sensitive.help":"When invoked, force the Sort function to sort accounts on a case-sensitive basis","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":"Show account icons in the main view","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.auto_save_qrcoded_account.label":"Auto-save accounts","settings.forms.auto_save_qrcoded_account.help":"New accounts are automatically registered after scanning or uploading a QR code, no need to click a Save button","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.notify_on_new_auth_device.label":"On new device","settings.forms.notify_on_new_auth_device.help":"Get an email when a new device connects to your 2FAuth account for the first time","settings.forms.notify_on_failed_login.label":"On failed login","settings.forms.notify_on_failed_login.help":"Get an email each time an attempt to connect to your 2FAuth account fails","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","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.2_minutes":"After 2 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":"उपयोगकर्ताओं को प्रतिबंधित करें","titles.admin.logs.access":"लॉग को खोलें","twofaccounts.service":"सर्विस","twofaccounts.account":"अकाउंट","twofaccounts.icon":"आइकॉन","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_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","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.group.label":"Group","twofaccounts.forms.group.help":"The group to which the account is to be assigned","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.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","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.can":"The :attribute field contains an unauthorized value.","validation.confirmed":":attribute पुष्टिकरण मेल नहीं खाता।","validation.contains":"The :attribute field is missing a required value.","validation.current_password":"पासवर्ड गलत है।","validation.date":":attribute एक वैध तारीख नहीं है","validation.date_equals":":attribute :date के बराबर तारीख होनी चाहिए","validation.date_format":":attribute :format प्रारूप से मेल नहीं खाती।","validation.decimal":"The :attribute field must have :decimal decimal places.","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.extensions":"The :attribute field must have one of the following extensions: :values.","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.hex_color":"The :attribute field must be a valid hexadecimal color.","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.list":"The :attribute field must be a list.","validation.lowercase":"The :attribute field must be lowercase.","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.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":":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.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":":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_if_declined":"The :attribute field is required when :other is declined.","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.uppercase":"The :attribute field must be uppercase.","validation.url":":attribute एक मान्य URL होना चाहिए।","validation.ulid":"The :attribute field must be a valid ULID.","validation.uuid":":attribute एक मान्य UUID होना चाहिए।","validation.single":":attribute का उपयोग करते समय वह इस request के body में एकमात्र पैरामीटर होना चाहिए","validation.onlyCustomOtpWithUri":"URI पैरामीटर अकेले या केवल 'custom_otp' पैरामीटर के संयोजन में प्रदान किया जाना चाहिए","validation.IsValidRegex":"The :attribute must be a valid regex pattern.","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-DEbtNpni.js b/public/build/assets/php_id-C14Zr-Zf.js similarity index 99% rename from public/build/assets/php_id-DEbtNpni.js rename to public/build/assets/php_id-C14Zr-Zf.js index b86b5c7f..a7f163b4 100644 --- a/public/build/assets/php_id-DEbtNpni.js +++ b/public/build/assets/php_id-C14Zr-Zf.js @@ -1,3 +1,3 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","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.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Apakah Anda yakin ingin keluar?","auth.confirm.revoke_device":"Anda yakin ingin menghapus perangkat ini?","auth.confirm.delete_account":"Apakah Anda yakin ingin menghapus akun anda?","auth.webauthn.security_device":"sebuah perangkat keamanan","auth.webauthn.security_devices":"Perangkat keamanan","auth.webauthn.security_devices_legend":"Perangkat otentikasi yang dapat anda gunakan untuk masuk ke 2FAuth, seperti kunci kemanan(cth. Yubikey) atau smartphone dengan kemampuan biometrik (cth. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":"Anda dapat meningkatkan keamanan pada akun 2FAuth anda dengan menyalakan otentikasi WebAuthn.

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

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

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

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","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.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Apakah Anda yakin ingin keluar?","auth.confirm.revoke_device":"Anda yakin ingin menghapus perangkat ini?","auth.confirm.delete_account":"Apakah Anda yakin ingin menghapus akun anda?","auth.webauthn.security_device":"sebuah perangkat keamanan","auth.webauthn.security_devices":"Perangkat keamanan","auth.webauthn.security_devices_legend":"Perangkat otentikasi yang dapat anda gunakan untuk masuk ke 2FAuth, seperti kunci kemanan(cth. Yubikey) atau smartphone dengan kemampuan biometrik (cth. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":"Anda dapat meningkatkan keamanan pada akun 2FAuth anda dengan menyalakan otentikasi WebAuthn.

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

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

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

\r Attention! The Email & Password form remains available despite this option being enabled, but it will always return an 'Authentication failed' response.`,"auth.webauthn.need_a_security_device_to_enable_options":"Set at least one device to enable the following options","auth.webauthn.options":"Options","auth.forms.name":"Name","auth.forms.login":"Login","auth.forms.webauthn_login":"WebAuthn login","auth.forms.sso_login":"SSO 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.sso_only_form_restricted_to_admin":"Regular users must sign in with SSO. Other methods are for administrators only.","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","auth.sso_providers.unknown":"unknown","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","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.send":"Send","commons.optimize":"Optimize","commons.IP":"IP","commons.browser":"Browser","commons.operating_system_short":"OS","commons.no_entry_yet":"No entry yet","commons.time":"Time","commons.ip_address":"IP Address","commons.device":"Device","commons.one_month":"1 mo.","commons.x_month":":x mos.","commons.one_year":"1 yr.","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 or SSO","errors.unsupported_with_sso_only":"This authentication method is for administrators only. Users must log in with SSO.","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.cannot_demote_the_only_admin":"Cannot demote 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.cannot_detect_qrcode_in_image":"Cannot detect a QR code in the image, try to crop the image","errors.cannot_decode_detected_qrcode":"Cannot decode detected QR code, try to crop or sharpen the image","errors.qrcode_has_invalid_checksum":"QR code has invalid checksum","errors.no_readable_qrcode":"No readable QR code","errors.failed_icon_store_database_toggling":"Migration of icons failed. The setting has been restored to its previous value.","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)","languages.tr":"Türkçe (Turkish)","notifications.hello":"Hello","notifications.hello_user":"Hello :username,","notifications.regards":"Regards","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 :)","notifications.new_device.subject":"Connection to 2FAuth from a new device","notifications.new_device.resume":"A new device has just connected to your 2FAuth account.","notifications.new_device.connection_details":"Here are the details of this connection","notifications.new_device.recommandations":"If this was you, you can ignore this alert. If you suspect any suspicious activity on your account, please change your password.","notifications.failed_login.subject":"Failed login to 2FAuth","notifications.failed_login.resume":"There has been a failed login attempt to your 2FAuth account.","notifications.failed_login.connection_details":"Here are the details of this connection attempt","notifications.failed_login.recommandations":"If this was you, you can ignore this alert. If further attempts fail, you should contact the 2FAuth administrator to review security settings and take action against this attacker.","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.notifications":"Notifications","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.timezone.label":"Time zone","settings.forms.timezone.help":"The time zone applied to all dates and times displayed in the application","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":"Click on a generated password to copy it automatically hides it from the screen","settings.forms.auto_close_timeout.label":'Auto close OTP',"settings.forms.auto_close_timeout.help":"Automatically hide on-screen password after a timeout. This avoids unnecessary requests for fresh passwords if you forget to close the password view.","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.sort_case_sensitive.label":"Sort case sensitive","settings.forms.sort_case_sensitive.help":"When invoked, force the Sort function to sort accounts on a case-sensitive basis","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 account icons 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.auto_save_qrcoded_account.label":"Auto-save accounts","settings.forms.auto_save_qrcoded_account.help":"New accounts are automatically registered after scanning or uploading a QR code, no need to click a Save button","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.notify_on_new_auth_device.label":"On new device","settings.forms.notify_on_new_auth_device.help":"Get an email when a new device connects to your 2FAuth account for the first time","settings.forms.notify_on_failed_login.label":"On failed login","settings.forms.notify_on_failed_login.help":"Get an email each time an attempt to connect to your 2FAuth account fails","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","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.2_minutes":"After 2 minutes","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","titles.admin.logs.access":"Access log","twofaccounts.service":"Layanan","twofaccounts.account":"Akun","twofaccounts.icon":"Ikon","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_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","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.group.label":"Group","twofaccounts.forms.group.help":"The group to which the account is to be assigned","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 field must be accepted.","validation.accepted_if":"The :attribute field must be accepted when :other is :value.","validation.active_url":"The :attribute field must be a valid URL.","validation.after":"The :attribute field must be a date after :date.","validation.after_or_equal":"The :attribute field must be a date after or equal to :date.","validation.alpha":"The :attribute field must only contain letters.","validation.alpha_dash":"The :attribute field must only contain letters, numbers, dashes, and underscores.","validation.alpha_num":"The :attribute field must only contain letters and numbers.","validation.array":"The :attribute field must be an array.","validation.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","validation.before":"The :attribute field must be a date before :date.","validation.before_or_equal":"The :attribute field must be a date before or equal to :date.","validation.between.array":"The :attribute field must have between :min and :max items.","validation.between.file":"The :attribute field must be between :min and :max kilobytes.","validation.between.numeric":"The :attribute field must be between :min and :max.","validation.between.string":"The :attribute field 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 field confirmation does not match.","validation.contains":"The :attribute field is missing a required value.","validation.current_password":"The password is incorrect.","validation.date":"The :attribute field must be a valid date.","validation.date_equals":"The :attribute field must be a date equal to :date.","validation.date_format":"The :attribute field must match the format :format.","validation.decimal":"The :attribute field must have :decimal decimal places.","validation.declined":"The :attribute field must be declined.","validation.declined_if":"The :attribute field must be declined when :other is :value.","validation.different":"The :attribute field and :other must be different.","validation.digits":"The :attribute field must be :digits digits.","validation.digits_between":"The :attribute field must be between :min and :max digits.","validation.dimensions":"The :attribute field has invalid image dimensions.","validation.distinct":"The :attribute field has a duplicate value.","validation.doesnt_end_with":"The :attribute field must not end with one of the following: :values.","validation.doesnt_start_with":"The :attribute field must not start with one of the following: :values.","validation.email":"The :attribute field must be a valid email address.","validation.ends_with":"The :attribute field 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 field must be a file.","validation.filled":"The :attribute field must have a value.","validation.gt.array":"The :attribute field must have more than :value items.","validation.gt.file":"The :attribute field must be greater than :value kilobytes.","validation.gt.numeric":"The :attribute field must be greater than :value.","validation.gt.string":"The :attribute field must be greater than :value characters.","validation.gte.array":"The :attribute field must have :value items or more.","validation.gte.file":"The :attribute field must be greater than or equal to :value kilobytes.","validation.gte.numeric":"The :attribute field must be greater than or equal to :value.","validation.gte.string":"The :attribute field 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 field must be an image.","validation.in":"The selected :attribute is invalid.","validation.in_array":"The :attribute field must exist in :other.","validation.integer":"The :attribute field must be an integer.","validation.ip":"The :attribute field must be a valid IP address.","validation.ipv4":"The :attribute field must be a valid IPv4 address.","validation.ipv6":"The :attribute field must be a valid IPv6 address.","validation.json":"The :attribute field must be a valid JSON string.","validation.list":"The :attribute field must be a list.","validation.lowercase":"The :attribute field must be lowercase.","validation.lt.array":"The :attribute field must have less than :value items.","validation.lt.file":"The :attribute field must be less than :value kilobytes.","validation.lt.numeric":"The :attribute field must be less than :value.","validation.lt.string":"The :attribute field must be less than :value characters.","validation.lte.array":"The :attribute field must not have more than :value items.","validation.lte.file":"The :attribute field must be less than or equal to :value kilobytes.","validation.lte.numeric":"The :attribute field must be less than or equal to :value.","validation.lte.string":"The :attribute field must be less than or equal to :value characters.","validation.mac_address":"The :attribute field must be a valid MAC address.","validation.max.array":"The :attribute field must not have more than :max items.","validation.max.file":"The :attribute field must not be greater than :max kilobytes.","validation.max.numeric":"The :attribute field must not be greater than :max.","validation.max.string":"The :attribute field must not be greater than :max characters.","validation.max_digits":"The :attribute field must not have more than :max digits.","validation.mimes":"The :attribute field must be a file of type: :values.","validation.mimetypes":"The :attribute field must be a file of type: :values.","validation.min.array":"The :attribute field must have at least :min items.","validation.min.file":"The :attribute field must be at least :min kilobytes.","validation.min.numeric":"The :attribute field must be at least :min.","validation.min.string":"The :attribute field must be at least :min characters.","validation.min_digits":"The :attribute field 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 field must be a multiple of :value.","validation.not_in":"The selected :attribute is invalid.","validation.not_regex":"The :attribute field format is invalid.","validation.numeric":"The :attribute field must be a number.","validation.password.letters":"The :attribute field must contain at least one letter.","validation.password.mixed":"The :attribute field must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The :attribute field must contain at least one number.","validation.password.symbols":"The :attribute field 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 field 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_if_declined":"The :attribute field is required when :other is declined.","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 field must match :other.","validation.size.array":"The :attribute field must contain :size items.","validation.size.file":"The :attribute field must be :size kilobytes.","validation.size.numeric":"The :attribute field must be :size.","validation.size.string":"The :attribute field must be :size characters.","validation.starts_with":"The :attribute field must start with one of the following: :values.","validation.string":"The :attribute field must be a string.","validation.timezone":"The :attribute field 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 field must be a valid URL.","validation.ulid":"The :attribute field must be a valid ULID.","validation.uuid":"The :attribute field 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.IsValidRegex":"The :attribute field must be a valid regex pattern.","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 field is not a valid otpauth uri.","validation.custom.otp_type.in":"The :attribute field 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 field must be a base32 encoded string.","validation.custom.account.regex":"The :attribute field must not contain colon.","validation.custom.service.regex":"The :attribute field 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-DUEGlYzS.js b/public/build/assets/php_it-mlyMaB1o.js similarity index 99% rename from public/build/assets/php_it-DUEGlYzS.js rename to public/build/assets/php_it-mlyMaB1o.js index 5bd2fe43..f223fb19 100644 --- a/public/build/assets/php_it-DUEGlYzS.js +++ b/public/build/assets/php_it-mlyMaB1o.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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":"Accesso","admin.password_requested_on_t":".","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","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.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","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.

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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":"Accesso","admin.password_requested_on_t":".","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","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.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","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.

\r + 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.

\r + 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.

\r 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.sso_login":"SSO 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":"New 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.sso_only_form_restricted_to_admin":"Regular users must sign in with SSO. Other methods are for administrators only.","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","auth.sso_providers.unknown":"unknown","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","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.send":"Send","commons.optimize":"Optimize","commons.IP":"IP","commons.browser":"Browser","commons.operating_system_short":"OS","commons.no_entry_yet":"No entry yet","commons.time":"Time","commons.ip_address":"IP Address","commons.device":"Device","commons.one_month":"1 mo.","commons.x_month":":x mos.","commons.one_year":"1 yr.","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 or SSO","errors.unsupported_with_sso_only":"This authentication method is for administrators only. Users must log in with SSO.","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.cannot_demote_the_only_admin":"Cannot demote 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.cannot_detect_qrcode_in_image":"Cannot detect a QR code in the image, try to crop the image","errors.cannot_decode_detected_qrcode":"Cannot decode detected QR code, try to crop or sharpen the image","errors.qrcode_has_invalid_checksum":"QR code has invalid checksum","errors.no_readable_qrcode":"No readable QR code","errors.failed_icon_store_database_toggling":"Migration of icons failed. The setting has been restored to its previous value.","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)","languages.tr":"Türkçe (Turkish)","notifications.hello":"Hello","notifications.hello_user":"Hello :username,","notifications.regards":"Regards","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 :)","notifications.new_device.subject":"Connection to 2FAuth from a new device","notifications.new_device.resume":"A new device has just connected to your 2FAuth account.","notifications.new_device.connection_details":"Here are the details of this connection","notifications.new_device.recommandations":"If this was you, you can ignore this alert. If you suspect any suspicious activity on your account, please change your password.","notifications.failed_login.subject":"Failed login to 2FAuth","notifications.failed_login.resume":"There has been a failed login attempt to your 2FAuth account.","notifications.failed_login.connection_details":"Here are the details of this connection attempt","notifications.failed_login.recommandations":"If this was you, you can ignore this alert. If further attempts fail, you should contact the 2FAuth administrator to review security settings and take action against this attacker.","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.notifications":"Notifications","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.timezone.label":"Time zone","settings.forms.timezone.help":"The time zone applied to all dates and times displayed in the application","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":"Click on a generated password to copy it automatically hides it from the screen","settings.forms.auto_close_timeout.label":'Auto close OTP',"settings.forms.auto_close_timeout.help":"Automatically hide on-screen password after a timeout. This avoids unnecessary requests for fresh passwords if you forget to close the password view.","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.sort_case_sensitive.label":"Sort case sensitive","settings.forms.sort_case_sensitive.help":"When invoked, force the Sort function to sort accounts on a case-sensitive basis","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 account icons 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.auto_save_qrcoded_account.label":"Auto-save accounts","settings.forms.auto_save_qrcoded_account.help":"New accounts are automatically registered after scanning or uploading a QR code, no need to click a Save button","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.notify_on_new_auth_device.label":"On new device","settings.forms.notify_on_new_auth_device.help":"Get an email when a new device connects to your 2FAuth account for the first time","settings.forms.notify_on_failed_login.label":"On failed login","settings.forms.notify_on_failed_login.help":"Get an email each time an attempt to connect to your 2FAuth account fails","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","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.2_minutes":"After 2 minutes","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","titles.admin.logs.access":"Access log","twofaccounts.service":"Service","twofaccounts.account":"Account","twofaccounts.icon":"Icon","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_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","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.group.label":"Group","twofaccounts.forms.group.help":"The group to which the account is to be assigned","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.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","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.can":"The :attribute field contains an unauthorized value.","validation.confirmed":"Il campo di conferma per :attribute non coincide.","validation.contains":"The :attribute field is missing a required value.","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.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":":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.extensions":"The :attribute field must have one of the following extensions: :values.","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.hex_color":"The :attribute field must be a valid hexadecimal color.","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.list":"The :attribute field must be a list.","validation.lowercase":"The :attribute field must be lowercase.","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.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":"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.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":"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_if_declined":"The :attribute field is required when :other is declined.","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.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":":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.IsValidRegex":"The :attribute must be a valid regex pattern.","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-BeClXwe_.js b/public/build/assets/php_ja-xY6Xx06P.js similarity index 99% rename from public/build/assets/php_ja-BeClXwe_.js rename to public/build/assets/php_ja-xY6Xx06P.js index bd7cadb6..cb683455 100644 --- a/public/build/assets/php_ja-BeClXwe_.js +++ b/public/build/assets/php_ja-xY6Xx06P.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"管理者","admin.admin_panel":"管理者パネル","admin.app_setup":"アプリの機能","admin.auth":"認証","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":"セキュリティデバイス (passkey) :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":"GitHub で見る","admin.x_is_available":":version が利用可能","admin.successful_login_on":':login_at にログイン成功',"admin.successful_logout_on":':login_at にログアウト成功',"admin.failed_login_on":':login_at にログイン失敗',"admin.viewed_on":':login_at に閲覧',"admin.last_accesses":"最終アクセス一覧","admin.see_full_log":"ログ全体を見る","admin.browser_on_platform":":browser(:platform)","admin.access_log_has_more_entries":"アクセスログには続きがあります。","admin.access_log_legend_for_user":":username の完全なアクセスログ","admin.show_last_month_log":"先月のエントリを表示","admin.show_three_months_log":"過去3ヶ月間のエントリを表示","admin.show_six_months_log":"過去6ヶ月間のエントリを表示","admin.show_one_year_log":"昨年からのエントリを表示","admin.sort_by_date_asc":"古い順","admin.sort_by_date_desc":"新しい順","admin.single_sign_on":"シングルサインオン (SSO)","admin.database":"データベース","admin.file_system":"ファイルシステム","admin.storage":"ストレージ","admin.forms.use_encryption.label":"機密データを保護","admin.forms.use_encryption.help":"機密データ(2 要素認証シークレットやメールアドレス)が暗号化してデータベースに保存されます。暗号化キーとなるので、.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.use_sso_only.label":"SSO のみ","admin.forms.use_sso_only.help":"2FAuth にログインできる手段を SSO 限定にします。通常ユーザーはパスワードと Webauthn によるログインができなくなります。管理者はこの制限の影響を受けません。","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.health_endpoint.label":"稼働状況エンドポイント","admin.forms.health_endpoint.help":"この 2FAuth インスタンスの稼動状態を確認できる URL です。この URL は Docker HEALTHCHECK や Kubernetes HTTPS Liveness プローブの設定に使用できます。","admin.forms.cache_management.label":"キャッシュ管理","admin.forms.cache_management.help":"環境変数の変更や更新の後などにキャッシュのクリアが必要になる場合があります。ここから実行できます。","admin.forms.store_icon_to_database.label":"アイコンをデータベースに保存","admin.forms.store_icon_to_database.help":"アップロードされたアイコンは、ファイルシステム内だけでなくデータベースにも格納され、前者はキャッシュとしてのみ使用されます。これにより、バックアップする必要があるのがデータベースのみになるため、2FAuth バックアップの作成がはるかに簡単になります。

※注意:欠点として、大きなアイコンを多数格納している場合、データベースのサイズが大幅に増加します。また、データベースとの同期を確認するため、より頻繁にファイルシステムにアクセスするため、パフォーマンスに影響を与える可能性もあります。","auth.failed":"認証情報と一致するレコードがありません。","auth.password":"パスワードが違います。","auth.throttle":"ログインの試行回数が多すぎます。:seconds 秒後にお試しください。","auth.sign_out":"サインアウト","auth.sign_in":"サインイン","auth.sign_in_using":"ログイン方式:","auth.if_administrator":"管理者?","auth.sign_in_here":"SSO なしでサインインできます","auth.or_continue_with":"または外部認証を利用:","auth.password_login_and_webauthn_are_disabled":"パスワードと WebAuthn ログインは無効です。","auth.sign_in_using_sso":"サインインに使う SSO プロバイダを選択:","auth.no_provider":"プロバイダがありません","auth.no_sso_provider_or_provider_is_missing":"プロバイダーが見つかりませんか?","auth.see_how_to_enable_sso":"プロバイダを有効にする方法","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.sso_only_x_settings_are_disabled":"認証は SSO のみ、:auth_method は無効です","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 の高い安全性をフルに発揮させるためにおすすめです。

- デバイスを紛失した場合は、このオプションを無効にすれば、メールアドレスとパスワードでログインできるようになります。

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"管理者","admin.admin_panel":"管理者パネル","admin.app_setup":"アプリの機能","admin.auth":"認証","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":"セキュリティデバイス (passkey) :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":"GitHub で見る","admin.x_is_available":":version が利用可能","admin.successful_login_on":':login_at にログイン成功',"admin.successful_logout_on":':login_at にログアウト成功',"admin.failed_login_on":':login_at にログイン失敗',"admin.viewed_on":':login_at に閲覧',"admin.last_accesses":"最終アクセス一覧","admin.see_full_log":"ログ全体を見る","admin.browser_on_platform":":browser(:platform)","admin.access_log_has_more_entries":"アクセスログには続きがあります。","admin.access_log_legend_for_user":":username の完全なアクセスログ","admin.show_last_month_log":"先月のエントリを表示","admin.show_three_months_log":"過去3ヶ月間のエントリを表示","admin.show_six_months_log":"過去6ヶ月間のエントリを表示","admin.show_one_year_log":"昨年からのエントリを表示","admin.sort_by_date_asc":"古い順","admin.sort_by_date_desc":"新しい順","admin.single_sign_on":"シングルサインオン (SSO)","admin.database":"データベース","admin.file_system":"ファイルシステム","admin.storage":"ストレージ","admin.forms.use_encryption.label":"機密データを保護","admin.forms.use_encryption.help":"機密データ(2 要素認証シークレットやメールアドレス)が暗号化してデータベースに保存されます。暗号化キーとなるので、.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.use_sso_only.label":"SSO のみ","admin.forms.use_sso_only.help":"2FAuth にログインできる手段を SSO 限定にします。通常ユーザーはパスワードと Webauthn によるログインができなくなります。管理者はこの制限の影響を受けません。","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.health_endpoint.label":"稼働状況エンドポイント","admin.forms.health_endpoint.help":"この 2FAuth インスタンスの稼動状態を確認できる URL です。この URL は Docker HEALTHCHECK や Kubernetes HTTPS Liveness プローブの設定に使用できます。","admin.forms.cache_management.label":"キャッシュ管理","admin.forms.cache_management.help":"環境変数の変更や更新の後などにキャッシュのクリアが必要になる場合があります。ここから実行できます。","admin.forms.store_icon_to_database.label":"アイコンをデータベースに保存","admin.forms.store_icon_to_database.help":"アップロードされたアイコンは、ファイルシステム内だけでなくデータベースにも格納され、前者はキャッシュとしてのみ使用されます。これにより、バックアップする必要があるのがデータベースのみになるため、2FAuth バックアップの作成がはるかに簡単になります。

※注意:欠点として、大きなアイコンを多数格納している場合、データベースのサイズが大幅に増加します。また、データベースとの同期を確認するため、より頻繁にファイルシステムにアクセスするため、パフォーマンスに影響を与える可能性もあります。","auth.failed":"認証情報と一致するレコードがありません。","auth.password":"パスワードが違います。","auth.throttle":"ログインの試行回数が多すぎます。:seconds 秒後にお試しください。","auth.sign_out":"サインアウト","auth.sign_in":"サインイン","auth.sign_in_using":"ログイン方式:","auth.if_administrator":"管理者?","auth.sign_in_here":"SSO なしでサインインできます","auth.or_continue_with":"または外部認証を利用:","auth.password_login_and_webauthn_are_disabled":"パスワードと WebAuthn ログインは無効です。","auth.sign_in_using_sso":"サインインに使う SSO プロバイダを選択:","auth.no_provider":"プロバイダがありません","auth.no_sso_provider_or_provider_is_missing":"プロバイダーが見つかりませんか?","auth.see_how_to_enable_sso":"プロバイダを有効にする方法","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.sso_only_x_settings_are_disabled":"認証は SSO のみ、:auth_method は無効です","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 アカウントのセキュリティを強化することができます。

\r + 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 の高い安全性をフルに発揮させるためにおすすめです。

\r + デバイスを紛失した場合は、このオプションを無効にすれば、メールアドレスとパスワードでログインできるようになります。

\r このオプションを有効にしても、メールアドレスとパスワードによるログイン画面は表示されますが、常に認証に失敗します。`,"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.sso_login":"SSO でログイン","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.sso_only_form_restricted_to_admin":"通常のユーザーは SSO でサインインする必要があります。他の手段は管理者専用です。","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":"あなたのアカウントとすべての 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 がオンです!","auth.sso_providers.unknown":"不明","auth.sso_providers.github":"GitHub","auth.sso_providers.openid":"OpenID","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":"該当なし","commons.information":"情報","commons.send":"送信","commons.optimize":"最適化","commons.IP":"IP","commons.browser":"ブラウザー","commons.operating_system_short":"OS","commons.no_entry_yet":"エントリなし","commons.time":"時刻","commons.ip_address":"IPアドレス","commons.device":"端末","commons.one_month":"1ヶ月","commons.x_month":":xヶ月","commons.one_year":"1年","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":"認証プロキシまたは SSO を使用する場合は適用されません","errors.unsupported_with_sso_only":"この認証手段は管理者専用です。ユーザーは SSO でログインしてください。","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.cannot_demote_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":"このユーザーにパスワードリセットはできません","errors.cannot_detect_qrcode_in_image":"画像内にQRコードを検出できません。画像をトリミングしてください","errors.cannot_decode_detected_qrcode":"検出されたQRコードをデコードできません。画像をトリミングまたはシャープにしてください。","errors.qrcode_has_invalid_checksum":"QRコードのチェックサムが不正です","errors.no_readable_qrcode":"読み取り可能なQRコードがありません","errors.failed_icon_store_database_toggling":"アイコンの移行に失敗しました。設定を元の値に戻しました。","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":"हिंदी (ヒンディー語)","languages.tr":"Türkçe (トルコ語)","notifications.hello":"こんにちは","notifications.hello_user":"{username} さん、こんにちは","notifications.regards":"よろしくお願いします","notifications.test_email_settings.subject":"2FAuth テストメール","notifications.test_email_settings.reason":"このメールはあなたの要望に応じて送信された、2FAuth インスタンスのメール設定検証用のテストメールです。","notifications.test_email_settings.success":"届いているようですね!","notifications.new_device.subject":"新しいデバイスから 2FAuth に接続しました","notifications.new_device.resume":"新しいデバイスがあなたの2FAuthアカウントに接続されました。","notifications.new_device.connection_details":"この接続の詳細は以下の通りです","notifications.new_device.recommandations":"心当たりがある場合は、この通知を無視しても構いません。アカウントへの不審な行為が疑われる場合は、パスワードをご変更ください。","notifications.failed_login.subject":"2FAuth へのログイン失敗発生","notifications.failed_login.resume":"あなたの 2FAuth アカウントへのログイン失敗が発生しました。","notifications.failed_login.connection_details":"具体的な情報は以下の通りです","notifications.failed_login.recommandations":"心当たりがある場合は、この通知を無視しても構いません。今後も行為が続く場合は、2FAuth の管理者に相談し、セキュリティ設定の見直しや攻撃者への対処を検討してください。","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.notifications":"通知","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.timezone.label":"タイムゾーン","settings.forms.timezone.help":"このアプリケーションで表示するすべての日付と時刻に適用されるタイムゾーン","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.auto_close_timeout.label":'OTP を自動で隠す',"settings.forms.auto_close_timeout.help":"一定時間後に画面上のパスワードを自動で非表示にします。うっかりパスワードを表示させたまま、無駄なパスワード更新リクエストが送られるのを防ぎます。","settings.forms.clear_search_on_copy.label":"コピー後に検索欄を消去","settings.forms.clear_search_on_copy.help":"コードがクリップボードにコピーされた直後に検索欄を空にします","settings.forms.sort_case_sensitive.label":"並び替えで大文字小文字を区別","settings.forms.sort_case_sensitive.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":"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":"コピー後に既定のグループを表示","settings.forms.view_default_group_on_copy.help":"OTPをコピーした後、常に既定のグループに戻ります","settings.forms.auto_save_qrcoded_account.label":"アカウントの自動保存","settings.forms.auto_save_qrcoded_account.help":"スキャンまたはQRコードをアップロードすると、「保存」ボタンを押さなくても新しいアカウントを自動的に登録します。","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.notify_on_new_auth_device.label":"新規デバイス接続時","settings.forms.notify_on_new_auth_device.help":"新しいデバイスから 2FAuth アカウントに接続した時にメールを受け取る","settings.forms.notify_on_failed_login.label":"ログイン失敗時","settings.forms.notify_on_failed_login.help":"2FAuth アカウントへの接続失敗があった時にメールを受け取る","settings.forms.show_email_in_footer.label":"フッターにメールを表示","settings.forms.show_email_in_footer.help":"直接メニューのリンクを表示する代わりに、ログイン中のユーザーのメールをフッターに表示します。メールアドレスをクリック/タップすると、リンクへのメニューが表示されます。","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.2_minutes":"2 分後","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":"ユーザー管理","titles.admin.logs.access":"アクセスログ","twofaccounts.service":"サービス","twofaccounts.account":"アカウント","twofaccounts.icon":"アイコン","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_accounts":"選択したアカウントをエクスポート","twofaccounts.twofauth_export_format":"2FAuth 形式","twofaccounts.twofauth_export_format_sub":"2FAuth の JSON スキーマでデータをエクスポート","twofaccounts.twofauth_export_format_desc":"復元可能なバックアップを作成する必要がある場合は、このオプションを選択してください。この形式はアイコンにも対応しています。","twofaccounts.twofauth_export_format_url":"スキーマ定義の説明は:","twofaccounts.twofauth_export_schema":"2FAuth エクスポートスキーマ","twofaccounts.otpauth_export_format":"otpauth URI","twofaccounts.otpauth_export_format_sub":"データを otpauth URI のリストとしてエクスポート","twofaccounts.otpauth_export_format_desc":"otpauth URI は 2FA データの交換に使用される最も一般的な形式で、ウェブサイトで 2FA を有効にした時に QR コードなど形で表示されるものです。2FAuth から移行したい場合は、これを選択します。","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.group.label":"グループ","twofaccounts.forms.group.help":"アカウントに割り当てるグループ","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":"不要なスペースは自動的に削除されます","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":"形式:1 行につき otpauth URI 1 件","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":"移行データから以下の 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.ascii":":attributeには、英数字と記号(ASCII)のみ使用可能です。","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.can":":attributeに禁止された値が含まれています。","validation.confirmed":":attributeと:attribute確認が一致しません。","validation.contains":":attributeに必須の値がありません。","validation.current_password":"パスワードが違います。","validation.date":":attributeは、正しい日付ではありません。","validation.date_equals":":attributeは:dateに等しい日付でなければなりません。","validation.date_format":":attributeの形式は、':format'と合いません。","validation.decimal":"The :attribute field must have :decimal decimal places.","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.extensions":":attribute には、次のいずれかの拡張子が必要です: :values","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.hex_color":":attributeには正しい16進数カラーコードを指定してください。","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.list":":attributeはリストにしてください。","validation.lowercase":":attributeには小文字で入力してください。","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.missing":":attributeには入力しないでください。","validation.missing_if":":otherが :value の場合、:attributeには入力しないでください。","validation.missing_unless":":otherが :value 以外の場合、:attributeは入力しないでください。","validation.missing_with":":values が指定されている場合、:attributeには入力しないでください。","validation.missing_with_all":":values が全て指定されている場合、:attributeには入力しないでください。","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.present_if":":otherが :value の場合、:attributeを必ず入力してください。","validation.present_unless":":otherが :value 以外の場合、:attributeを必ず入力してください。","validation.present_with":":values が指定されている場合、:attributeも必ず入力してください。","validation.present_with_all":":values が全て指定されている場合、: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_if_declined":"The :attribute field is required when :other is declined.","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.uppercase":":attributeには大文字で入力してください。","validation.url":":attributeには、正しいURLを指定してください。","validation.ulid":":attributeは、有効なULIDでなければなりません。","validation.uuid":":attributeは、有効なUUIDでなければなりません。","validation.single":":attributeを使用する場合、このリクエスト本文の唯一のパラメータにする必要があります。","validation.onlyCustomOtpWithUri":"uri パラメータは単独または「custom_otp」パラメータと組み合わせて指定する必要があります。","validation.IsValidRegex":"The :attribute must be a valid regex pattern.","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":"IDはコンマで区切り、最後にはコンマを入れないでください。"};export{t as default}; diff --git a/public/build/assets/php_ko-Rddsr2Bj.js b/public/build/assets/php_ko-C-kMOHRA.js similarity index 99% rename from public/build/assets/php_ko-Rddsr2Bj.js rename to public/build/assets/php_ko-C-kMOHRA.js index 6e74b874..bc97d2b1 100644 --- a/public/build/assets/php_ko-Rddsr2Bj.js +++ b/public/build/assets/php_ko-C-kMOHRA.js @@ -1,5 +1,5 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"관리자","admin.admin_panel":"Admin panel","admin.app_setup":"앱 설정","admin.auth":"Auth","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":"사용자의 PATs가 비활성화되었습니다.","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.successful_login_on":':login_at에서 로그인',"admin.successful_logout_on":':login_at에서 로그아웃 성공',"admin.failed_login_on":':login_at에서 로그인 실패',"admin.viewed_on":':login_at에서 열람',"admin.last_accesses":"마지막 접속","admin.see_full_log":"모든 로그 보기","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"접속 로그에는 더 많은 항목이 포함되어 있습니다.","admin.access_log_legend_for_user":":username 사용자에 대한 전체 접속 로그","admin.show_last_month_log":"지난 달 항목 표시","admin.show_three_months_log":"지난 3개월 항목 표시","admin.show_six_months_log":"지난 6개월 항목 표시","admin.show_one_year_log":"지난 해 항목 표시","admin.sort_by_date_asc":"오래된 순으로 표시","admin.sort_by_date_desc":"최신 순으로 표시","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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":"Enable SSO","admin.forms.enable_sso.help":"방문자가 Single Sign-On 을 통해 외부 ID를 사용하여 인증할 수 있도록 허용","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","admin.forms.cache_management.label":"캐시 관리","admin.forms.cache_management.help":"환경 변수를 변경하거나 업데이트한 후와 같은 경우 캐시를 삭제해야 할 수 있습니다. 아래에서 삭제할 수 있습니다.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","auth.failed":"로그인 정보가 일치하지 않습니다.","auth.password":"비밀번호가 일치하지 않습니다.","auth.throttle":"로그인 시도가 너무 많습니다. :seconds초 후에 다시 시도하십시오.","auth.sign_out":"로그아웃","auth.sign_in":"로그인","auth.sign_in_using":"로그인 방식:","auth.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"다른 방법으로 로그인:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"정말 로그아웃 하시겠습니까?","auth.confirm.revoke_device":"이 장치를 삭제하시겠습니까?","auth.confirm.delete_account":"정말 계정을 삭제하시겠습니까?","auth.webauthn.security_device":"보안 장치","auth.webauthn.security_devices":"보안 장치","auth.webauthn.security_devices_legend":"보안 키(예: Yubikey) 또는 생체 인식 기능이 있는 스마트폰(예: Apple FaceId/TouchId)과 같은 2FAuth 로그인에 사용할 수 있는 인증 장치","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.sso_login":"SSO login","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.sso_only_form_restricted_to_admin":"Regular users must sign in with SSO. Other methods are for administrators only.","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":"Caps Lock 켜짐","auth.sso_providers.unknown":"unknown","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","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에 게시되면 자동으로 확인(일주일에 한 번) 하고 알려줍니다.","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":"결과 없음","commons.information":"정보","commons.send":"전송","commons.optimize":"최적화","commons.IP":"IP","commons.browser":"브라우저","commons.operating_system_short":"운영 체제","commons.no_entry_yet":"아직 항목 없음","commons.time":"시간","commons.ip_address":"IP 주소","commons.device":"장치","commons.one_month":"한 달.","commons.x_month":":x 달.","commons.one_year":"1년.","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":"암호 복호화에 실패했지만 데이터베이스는 여전히 보호됩니다. 이는 주로 하나 이상의 계정에 대해 암호화된 데이터의 무결성 문제로 인해 발생합니다.","errors.qrcode_cannot_be_read":"이 QR코드를 읽을 수 없습니다","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 context 필요","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":"사용자 ID가 1~64자 사이가 아닙니다","errors.no_entry_was_of_type_public_key":'"공개 키" 유형의 항목이 없습니다',"errors.unsupported_with_reverseproxy":"Not applicable when using an auth proxy or SSO","errors.unsupported_with_sso_only":"This authentication method is for administrators only. Users must log in with SSO.","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.cannot_demote_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":"이 사용자는 비밀번호를 재설정할 수 없습니다","errors.cannot_detect_qrcode_in_image":"이미지에서 QR 코드를 감지할 수 없습니다. 이미지를 잘라보세요.","errors.cannot_decode_detected_qrcode":"감지된 QR 코드를 인식할 수 없습니다. 이미지를 자르거나 선명한 이미지를 사용해보세요.","errors.qrcode_has_invalid_checksum":"QR 코드에 잘못된 체크섬이 있습니다.","errors.no_readable_qrcode":"인식 가능한 QR 코드 없음","errors.failed_icon_store_database_toggling":"Migration of icons failed. The setting has been restored to its previous value.","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":"Pусский (러시아어)","languages.bg":"Български (불가리아어)","languages.ja":"日本語 (일본어)","languages.hi":"हिंदी (힌디어)","languages.tr":"Türkçe (튀르키예어)","notifications.hello":"안녕하세요","notifications.hello_user":"{username}님 안녕하세요,","notifications.regards":"만나서 반갑습니다","notifications.test_email_settings.subject":"2FAuth 테스트 이메일","notifications.test_email_settings.reason":"2FAuth 인스턴스의 이메일 설정을 확인하기 위해 테스트 이메일을 요청했으므로 이 이메일이 전송되었습니다.","notifications.test_email_settings.success":"좋은 소식이네요, 잘 작동합니다 :)","notifications.new_device.subject":"새로운 기기에서 2fAuth에 연결했습니다.","notifications.new_device.resume":"새 장치가 방금 2FAuth 계정에 연결되었습니다.","notifications.new_device.connection_details":"이 연결에 대한 자세한 내용은 다음과 같습니다.","notifications.new_device.recommandations":"이 경우 이 알림을 무시해도 됩니다. 계정에서 의심스러운 활동이 의심되는 경우 비밀번호를 변경하시기 바랍니다.","notifications.failed_login.subject":"2FAuth 로그인 실패","notifications.failed_login.resume":"사용자의 2FAuth 계정에서의 로그인 시도가 실패했습니다.","notifications.failed_login.connection_details":"이 로그인 시도에 대한 자세한 내용은 다음과 같습니다.","notifications.failed_login.recommandations":"사용자 본인이라면 이 경고를 무시해도 됩니다. 추가 시도가 실패하면 2FAuth 관리자에게 연락하여 보안 설정을 검토하고 이 공격자에 대한 조치를 취해야 합니다.","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.notifications":"알림","settings.profile":"프로필","settings.change_password":"비밀번호 변경","settings.personal_access_tokens":"개인 액세스 토큰","settings.token_legend":"개인 액세스 토큰을 사용하면 모든 앱이 2FAuth API에 인증할 수 있습니다. 클라이언트 앱 요청의 authorization 헤더에 액세스 토큰을 Bearer token으로 지정해야 합니다.","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.timezone.label":"시간대","settings.forms.timezone.help":"서비스에 표시되는 모든 날짜와 시간에 적용되는 표준 시간대","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.auto_close_timeout.label":'OTP 자동 닫기',"settings.forms.auto_close_timeout.help":"일정 시간이 지나면 화면에 표시된 비밀번호를 자동으로 숨깁니다. 비밀번호 보기를 닫는 것을 잊어버렸을 때 불필요한 비밀번호 요청을 피할 수 있습니다.","settings.forms.clear_search_on_copy.label":"복사 후 검색 창 지우기","settings.forms.clear_search_on_copy.help":"코드를 클립보드에 복사한 직후 검색 창을 비웁니다.","settings.forms.sort_case_sensitive.label":"대소문자 구분 정렬","settings.forms.sort_case_sensitive.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":"Show account icons in the main view","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.auto_save_qrcoded_account.label":"계정 자동 저장","settings.forms.auto_save_qrcoded_account.help":"QR코드를 스캔 또는 업로드하면 '저장' 버튼을 누르지 않아도 자동으로 새 계정을 등록할 수 있습니다.","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.notify_on_new_auth_device.label":"새로운 기기 연결 시","settings.forms.notify_on_new_auth_device.help":"새 장치가 2FAuth 계정에 처음으로 연결되면 이메일 받기","settings.forms.notify_on_failed_login.label":"로그인 실패 시","settings.forms.notify_on_failed_login.help":"2FAuth 계정에 로그인 시도가 실패할 때마다 이메일 받기","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","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.2_minutes":"2분 후","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":"사용자 관리","titles.admin.logs.access":"접속 로그","twofaccounts.service":"서비스","twofaccounts.account":"계정","twofaccounts.icon":"아이콘","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_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","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.group.label":"Group","twofaccounts.forms.group.help":"The group to which the account is to be assigned","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":"불필요한 공백은 자동으로 제거됩니다.","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":"보안 context 필요","twofaccounts.stream.secured_context_required.solution":"스캔을 위해서는 HTTPS가 필요합니다. 컴퓨터에서 2FAuth를 실행하는 경우 로컬 호스트 이외의 가상 호스트를 사용하지 마십시오.","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가 지원되지 않습니다 +/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"관리자","admin.admin_panel":"Admin panel","admin.app_setup":"앱 설정","admin.auth":"Auth","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":"사용자의 PATs가 비활성화되었습니다.","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.successful_login_on":':login_at에서 로그인',"admin.successful_logout_on":':login_at에서 로그아웃 성공',"admin.failed_login_on":':login_at에서 로그인 실패',"admin.viewed_on":':login_at에서 열람',"admin.last_accesses":"마지막 접속","admin.see_full_log":"모든 로그 보기","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"접속 로그에는 더 많은 항목이 포함되어 있습니다.","admin.access_log_legend_for_user":":username 사용자에 대한 전체 접속 로그","admin.show_last_month_log":"지난 달 항목 표시","admin.show_three_months_log":"지난 3개월 항목 표시","admin.show_six_months_log":"지난 6개월 항목 표시","admin.show_one_year_log":"지난 해 항목 표시","admin.sort_by_date_asc":"오래된 순으로 표시","admin.sort_by_date_desc":"최신 순으로 표시","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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":"Enable SSO","admin.forms.enable_sso.help":"방문자가 Single Sign-On 을 통해 외부 ID를 사용하여 인증할 수 있도록 허용","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","admin.forms.cache_management.label":"캐시 관리","admin.forms.cache_management.help":"환경 변수를 변경하거나 업데이트한 후와 같은 경우 캐시를 삭제해야 할 수 있습니다. 아래에서 삭제할 수 있습니다.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","auth.failed":"로그인 정보가 일치하지 않습니다.","auth.password":"비밀번호가 일치하지 않습니다.","auth.throttle":"로그인 시도가 너무 많습니다. :seconds초 후에 다시 시도하십시오.","auth.sign_out":"로그아웃","auth.sign_in":"로그인","auth.sign_in_using":"로그인 방식:","auth.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"다른 방법으로 로그인:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"정말 로그아웃 하시겠습니까?","auth.confirm.revoke_device":"이 장치를 삭제하시겠습니까?","auth.confirm.delete_account":"정말 계정을 삭제하시겠습니까?","auth.webauthn.security_device":"보안 장치","auth.webauthn.security_devices":"보안 장치","auth.webauthn.security_devices_legend":"보안 키(예: Yubikey) 또는 생체 인식 기능이 있는 스마트폰(예: Apple FaceId/TouchId)과 같은 2FAuth 로그인에 사용할 수 있는 인증 장치","auth.webauthn.enhance_security_using_webauthn":`WebAuthn 인증을 활성화하여 2FAuth 계정의 보안을 강화할 수 있습니다.

\r + 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의 향상된 보안을 활용하기 위한 권장 설정입니다.

\r + 기기를 분실한 경우, 이 옵션을 해제하고 이메일과 비밀번호로 로그인하여 계정을 복구할 수 있습니다.

\r + 주의! 이 옵션을 활성화해도 이메일 & 비밀번호 입력란은 계속 표시되지만, 항상 '로그인 실패' 응답을 반환합니다.`,"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.sso_login":"SSO login","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.sso_only_form_restricted_to_admin":"Regular users must sign in with SSO. Other methods are for administrators only.","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":"Caps Lock 켜짐","auth.sso_providers.unknown":"unknown","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","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에 게시되면 자동으로 확인(일주일에 한 번) 하고 알려줍니다.","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":"결과 없음","commons.information":"정보","commons.send":"전송","commons.optimize":"최적화","commons.IP":"IP","commons.browser":"브라우저","commons.operating_system_short":"운영 체제","commons.no_entry_yet":"아직 항목 없음","commons.time":"시간","commons.ip_address":"IP 주소","commons.device":"장치","commons.one_month":"한 달.","commons.x_month":":x 달.","commons.one_year":"1년.","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":"암호 복호화에 실패했지만 데이터베이스는 여전히 보호됩니다. 이는 주로 하나 이상의 계정에 대해 암호화된 데이터의 무결성 문제로 인해 발생합니다.","errors.qrcode_cannot_be_read":"이 QR코드를 읽을 수 없습니다","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 context 필요","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":"사용자 ID가 1~64자 사이가 아닙니다","errors.no_entry_was_of_type_public_key":'"공개 키" 유형의 항목이 없습니다',"errors.unsupported_with_reverseproxy":"Not applicable when using an auth proxy or SSO","errors.unsupported_with_sso_only":"This authentication method is for administrators only. Users must log in with SSO.","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.cannot_demote_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":"이 사용자는 비밀번호를 재설정할 수 없습니다","errors.cannot_detect_qrcode_in_image":"이미지에서 QR 코드를 감지할 수 없습니다. 이미지를 잘라보세요.","errors.cannot_decode_detected_qrcode":"감지된 QR 코드를 인식할 수 없습니다. 이미지를 자르거나 선명한 이미지를 사용해보세요.","errors.qrcode_has_invalid_checksum":"QR 코드에 잘못된 체크섬이 있습니다.","errors.no_readable_qrcode":"인식 가능한 QR 코드 없음","errors.failed_icon_store_database_toggling":"Migration of icons failed. The setting has been restored to its previous value.","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":"Pусский (러시아어)","languages.bg":"Български (불가리아어)","languages.ja":"日本語 (일본어)","languages.hi":"हिंदी (힌디어)","languages.tr":"Türkçe (튀르키예어)","notifications.hello":"안녕하세요","notifications.hello_user":"{username}님 안녕하세요,","notifications.regards":"만나서 반갑습니다","notifications.test_email_settings.subject":"2FAuth 테스트 이메일","notifications.test_email_settings.reason":"2FAuth 인스턴스의 이메일 설정을 확인하기 위해 테스트 이메일을 요청했으므로 이 이메일이 전송되었습니다.","notifications.test_email_settings.success":"좋은 소식이네요, 잘 작동합니다 :)","notifications.new_device.subject":"새로운 기기에서 2fAuth에 연결했습니다.","notifications.new_device.resume":"새 장치가 방금 2FAuth 계정에 연결되었습니다.","notifications.new_device.connection_details":"이 연결에 대한 자세한 내용은 다음과 같습니다.","notifications.new_device.recommandations":"이 경우 이 알림을 무시해도 됩니다. 계정에서 의심스러운 활동이 의심되는 경우 비밀번호를 변경하시기 바랍니다.","notifications.failed_login.subject":"2FAuth 로그인 실패","notifications.failed_login.resume":"사용자의 2FAuth 계정에서의 로그인 시도가 실패했습니다.","notifications.failed_login.connection_details":"이 로그인 시도에 대한 자세한 내용은 다음과 같습니다.","notifications.failed_login.recommandations":"사용자 본인이라면 이 경고를 무시해도 됩니다. 추가 시도가 실패하면 2FAuth 관리자에게 연락하여 보안 설정을 검토하고 이 공격자에 대한 조치를 취해야 합니다.","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.notifications":"알림","settings.profile":"프로필","settings.change_password":"비밀번호 변경","settings.personal_access_tokens":"개인 액세스 토큰","settings.token_legend":"개인 액세스 토큰을 사용하면 모든 앱이 2FAuth API에 인증할 수 있습니다. 클라이언트 앱 요청의 authorization 헤더에 액세스 토큰을 Bearer token으로 지정해야 합니다.","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.timezone.label":"시간대","settings.forms.timezone.help":"서비스에 표시되는 모든 날짜와 시간에 적용되는 표준 시간대","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.auto_close_timeout.label":'OTP 자동 닫기',"settings.forms.auto_close_timeout.help":"일정 시간이 지나면 화면에 표시된 비밀번호를 자동으로 숨깁니다. 비밀번호 보기를 닫는 것을 잊어버렸을 때 불필요한 비밀번호 요청을 피할 수 있습니다.","settings.forms.clear_search_on_copy.label":"복사 후 검색 창 지우기","settings.forms.clear_search_on_copy.help":"코드를 클립보드에 복사한 직후 검색 창을 비웁니다.","settings.forms.sort_case_sensitive.label":"대소문자 구분 정렬","settings.forms.sort_case_sensitive.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":"Show account icons in the main view","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.auto_save_qrcoded_account.label":"계정 자동 저장","settings.forms.auto_save_qrcoded_account.help":"QR코드를 스캔 또는 업로드하면 '저장' 버튼을 누르지 않아도 자동으로 새 계정을 등록할 수 있습니다.","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.notify_on_new_auth_device.label":"새로운 기기 연결 시","settings.forms.notify_on_new_auth_device.help":"새 장치가 2FAuth 계정에 처음으로 연결되면 이메일 받기","settings.forms.notify_on_failed_login.label":"로그인 실패 시","settings.forms.notify_on_failed_login.help":"2FAuth 계정에 로그인 시도가 실패할 때마다 이메일 받기","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","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.2_minutes":"2분 후","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":"사용자 관리","titles.admin.logs.access":"접속 로그","twofaccounts.service":"서비스","twofaccounts.account":"계정","twofaccounts.icon":"아이콘","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_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","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.group.label":"Group","twofaccounts.forms.group.help":"The group to which the account is to be assigned","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":"불필요한 공백은 자동으로 제거됩니다.","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":"보안 context 필요","twofaccounts.stream.secured_context_required.solution":"스캔을 위해서는 HTTPS가 필요합니다. 컴퓨터에서 2FAuth를 실행하는 경우 로컬 호스트 이외의 가상 호스트를 사용하지 마십시오.","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가 지원되지 않습니다\r `,"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":"형식: 1행에 1개의 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":"각 버튼을 사용하여 가져올지 삭제할지 선택해 주세요.","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.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","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은(는) true 또는 false 이어야 합니다.","validation.can":"The :attribute field contains an unauthorized value.","validation.confirmed":":attribute 확인이 일치하지 않습니다.","validation.contains":"The :attribute field is missing a required value.","validation.current_password":"비밀번호가 일치하지 않습니다.","validation.date":":attribute는 올바른 날짜가 아닙니다.","validation.date_equals":":attribute은(는) :date와 같은 날짜여야 합니다.","validation.date_format":":attribute이(가) :format 형식과 일치하지 않습니다.","validation.decimal":"The :attribute field must have :decimal decimal places.","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.extensions":"The :attribute field must have one of the following extensions: :values.","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.hex_color":"The :attribute field must be a valid hexadecimal color.","validation.image":":attribute은(는) 이미지여야 합니다.","validation.in":"선택된 :attribute은(는) 올바르지 않습니다.","validation.in_array":":other에 :attribute이(가) 존재하지 않습니다.","validation.integer":":Attribute은(는) 정수여야 합니다.","validation.ip":":attribute은(는) 유효한 IP 주소여야 합니다.","validation.ipv4":":attribute은(는) 유효한 IPv4 주소여야 합니다.","validation.ipv6":":attribute은(는) 유효한 IPv6 주소여야 합니다.","validation.json":":attribute은(는) 유효한 JSON 문자여야 합니다.","validation.list":"The :attribute field must be a list.","validation.lowercase":"The :attribute field must be lowercase.","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은(는) :max개보다 많을 수 없습니다.","validation.max.file":":attribute은(는) :max 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.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":":attribute은(는) :value 의 배수여야 합니다.","validation.not_in":"선택된 :attribute은(는) 유효하지 않습니다.","validation.not_regex":":attribute의 형식이 올바르지 않습니다.","validation.numeric":":Attribute은(는) 숫자여야 합니다.","validation.password.letters":":attribute은(는) 반드시 1개 이상의 문자가 포함되야 합니다.","validation.password.mixed":":attribute에는 하나 이상의 대문자와 하나의 소문자가 포함되어야 합니다.","validation.password.numbers":":attribute 은(는) 적어도 하나의 숫자를 포함해야 합니다.","validation.password.symbols":":attribute은(는) 1개 이상의 특수문자가 포함되어야 합니다.","validation.password.uncompromised":"주어진 :attribute 가 데이터 유출로 보입니다. 다른 :attribute 를 선택해주세요.","validation.present":":attribute 항목은 필수입니다.","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":":attribute (은)는 금지되어 있습니다.","validation.prohibited_if":":attribute 필드는 :other 가 :value 일때 금지됩니다.","validation.prohibited_unless":":attribute (은)는 :other 이(가) :value 이(가) 아닌 경우 금지되어 있습니다.","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_if_declined":"The :attribute field is required when :other is declined.","validation.required_unless":":values에 :other이 아닌 이상 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 kilobytes 여야 합니다.","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.uppercase":"The :attribute field must be uppercase.","validation.url":":attribute 는 반드시 올바른 URL이어야 합니다.","validation.ulid":"The :attribute field must be a valid ULID.","validation.uuid":":attribute은(는) 반드시 올바른 UUID여야 합니다.","validation.single":":attribute 사용 시 이 요청 본문에서 유일한 매개변수여야 합니다.","validation.onlyCustomOtpWithUri":"Uri 매개변수는 단독으로 제공하거나 'custom_otp' 매개변수와 함께 제공해야만 합니다.","validation.IsValidRegex":"The :attribute must be a valid regex pattern.","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":"ID는 쉼표로 구분해야 하며 마지막에는 쉼표가 없어야 합니다."};export{t as default}; diff --git a/public/build/assets/php_nl-D9GiR4OO.js b/public/build/assets/php_nl-DM5HSo8G.js similarity index 99% rename from public/build/assets/php_nl-D9GiR4OO.js rename to public/build/assets/php_nl-DM5HSo8G.js index 5a60765b..e9a5e194 100644 --- a/public/build/assets/php_nl-D9GiR4OO.js +++ b/public/build/assets/php_nl-DM5HSo8G.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Beheerder","admin.admin_panel":"Admin panel","admin.app_setup":"App instellingen","admin.auth":"Auth","admin.registrations":"Registraties","admin.users":"Gebruikers","admin.users_legend":"Beheer gebruikers die geregistreerd zijn op uw instantie of maak nieuwe.","admin.admin_settings":"Beheerders instellingen","admin.create_new_user":"Een gebruiker aanmaken","admin.new_user":"Nieuwe gebruiker","admin.search_user_placeholder":"Gebruikersnaam, e-mail...","admin.quick_filters_colons":"Snelle filters:","admin.user_created":"gebruiker succesvol aangemaakt","admin.confirm.delete_user":"Weet je zeker dat je deze gebruiker wilt verwijderen? Er is geen weg terug.","admin.confirm.request_password_reset":"Weet je zeker dat je het wachtwoord van deze gebruiker opnieuw wilt instellen?","admin.confirm.purge_password_reset_request":"Weet je zeker dat je de vorige aanvraag wilt intrekken?","admin.confirm.delete_account":"Weet je zeker dat je deze gebruiker wilt verwijderen?","admin.confirm.edit_own_account":"Dit is je eigen account. Weet je het zeker?","admin.confirm.change_admin_role":"Dit zal ernstige gevolgen hebben voor de rechten van deze gebruiker. Weet je het zeker?","admin.confirm.demote_own_account":"Je zult niet langer beheerder zijn. Weet je het zeker?","admin.logs":"Logboek","admin.administration_legend":"De volgende instellingen zijn globaal en gelden voor alle gebruikers.","admin.user_management":"Gebruikersbeheer","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"Dit account is gekoppeld aan een :provider account via OAuth","admin.last_seen_on_date":"Laatst gezien :date","admin.registered_on_date":"Geregistreerd: :date","admin.updated_on_date":"Bijgewerkt :date","admin.access":"Toegang","admin.password_requested_on_t":"Er bestaat een wachtwoord reset verzoek voor deze gebruiker (verzoek verzonden op :datetime), dit betekent dat de gebruiker zijn wachtwoord nog niet heeft gewijzigd, maar dat de link die hij heeft ontvangen nog steeds geldig is. Dit kan een verzoek zijn van de gebruiker zelf of van een beheerder.","admin.password_request_expired":"Er bestaat een wachtwoord reset verzoek voor deze gebruiker (verzoek verzonden op: datetime), dit betekent dat de gebruiker zijn wachtwoord nog niet heeft gewijzigd, maar dat de link die hij heeft ontvangen nog steeds geldig is. Dit kan een verzoek zijn van de gebruiker zelf of van een beheerder.","admin.resend_email":"E-mail opnieuw versturen","admin.resend_email_title":"Stuur een wachtwoord reset e-mail opnieuw naar de gebruiker","admin.resend_email_help":"Gebruik E-mail om een nieuw wachtwoord reset e-mail te sturen naar de gebruiker zodat hij een nieuw wachtwoord kan instellen. Dit laat het huidige wachtwoord zoals het is en elk eerdere verzoek wordt ingetrokken.","admin.reset_password":"Wachtwoord herstellen","admin.reset_password_help":"Gebruik Reset wachtwoord om een nieuw wachtwoord te forceren (dit zal een tijdelijk wachtwoord instellen) voordat u een wachtwoord reset e-mail stuurt naar de gebruiker zodat deze een nieuw wachtwoord kan instellen. Een eerdere aanvraag wordt ingetrokken.","admin.reset_password_title":"Herstel het wachtwoord van de gebruiker","admin.password_successfully_reset":"Wachtwoord succesvol hersteld","admin.user_has_x_active_pat":":count actieve token(s)","admin.user_has_x_security_devices":":count beveiligingsapparaten (passkeys)","admin.revoke_all_pat_for_user":"Alle tokens van gebruiker intrekken","admin.revoke_all_devices_for_user":"Alle beveiligingsapparaten van gebruikers intrekken","admin.danger_zone":"Gevarenzone","admin.delete_this_user_legend":"De gebruikersaccount zal worden verwijderd evenals alle 2FA-gegevens.","admin.this_is_not_soft_delete":"Dit is geen zachte verwijdering, er is geen weg terug.","admin.delete_this_user":"Deze gebruiker verwijderen","admin.user_role_updated":"Gebruikersrol bijgewerkt","admin.pats_succesfully_revoked":"PAT's van gebruiker succesvol ingetrokken","admin.security_devices_succesfully_revoked":"Toegangsapparaten van gebruiker succesvol ingetrokken","admin.variables":"Variabelen","admin.cache_cleared":"Cache geleegd","admin.cache_optimized":"Cache geoptimaliseerd","admin.check_now":"Controleer nu","admin.view_on_github":"Bekijk op GitHub","admin.x_is_available":":version is beschikbaar","admin.successful_login_on":'Succesvolle aanmelding op :login_at',"admin.successful_logout_on":'Succesvol uitgelogd op :login_at',"admin.failed_login_on":'Mislukte aanmelding op :login_at',"admin.viewed_on":'Bekeken op :login_at',"admin.last_accesses":"Laatst geopend","admin.see_full_log":"Bekijk volledige log","admin.browser_on_platform":":browser op :platform","admin.access_log_has_more_entries":"Het toegangslogboek bevat meer vermeldingen.","admin.access_log_legend_for_user":"Volledige toegangslog voor gebruiker :username","admin.show_last_month_log":"Toon items van de laatste maand","admin.show_three_months_log":"Toon items van de laatste 3 maanden","admin.show_six_months_log":"Toon items van de laatste 6 maanden","admin.show_one_year_log":"Toon items van het afgelopen jaar","admin.sort_by_date_asc":"Toon minst recent eerst","admin.sort_by_date_desc":"Toon meest recente eerst","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","admin.forms.use_encryption.label":"Bescherm gevoelige gegevens","admin.forms.use_encryption.help":"Gevoelige gegevens, de 2FA-geheimen en e-mails, worden versleuteld in de database. Zorg ervoor dat u een back-up maakt van de APP_KEY waarde van uw . nv bestand (of het hele bestand) wordt gebruikt als sleutelencryptie. Er is geen manier om gecodeerde data te decyperen zonder deze sleutel.","admin.forms.restrict_registration.label":"Registratie beperken","admin.forms.restrict_registration.help":"Maak registratie alleen beschikbaar voor een beperkt aantal e-mailadressen. Beide regels kunnen tegelijkertijd worden gebruikt. Dit heeft geen effect op de registratie via SSO.","admin.forms.restrict_list.label":"Filter lijst","admin.forms.restrict_list.help":'E-mails in deze lijst zijn toegestaan om te registreren. Scheid adressen met een pijp ("~")',"admin.forms.restrict_rule.label":"Regels filteren","admin.forms.restrict_rule.help":"E-mails die overeenkomen met deze reguliere expressie zijn toegestaan om te registreren","admin.forms.disable_registration.label":"Schakel registratie uit","admin.forms.disable_registration.help":"Voorkom de registratie van nieuwe gebruikers. Tenzij hieronder overschreven (zie hieronder), heeft dit invloed op SSO, zodat nieuwe gebruikers niet kunnen inloggen via SSO","admin.forms.enable_sso.label":"Enable SSO","admin.forms.enable_sso.help":"Sta bezoekers toe om zich te verifiëren met behulp van een extern ID via het Single Sign-On schema","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","admin.forms.keep_sso_registration_enabled.label":"SSO-registratie ingeschakeld houden","admin.forms.keep_sso_registration_enabled.help":"Sta nieuwe gebruikers toe om voor de eerste keer via SSO in te loggen terwijl registratie is uitgeschakeld","admin.forms.is_admin.label":"Is beheerder","admin.forms.is_admin.help":"Geef beheerder rechten aan gebruiker. Beheerders hebben rechten om de hele app te beheren, o.a. Instellingen en andere gebruikers, maar kunnen geen wachtwoord genereren voor een 2FA waarvan ze geen eigenaar zijn.","admin.forms.test_email.label":"E-mail configuratie test","admin.forms.test_email.help":"Stuur een test e-mail om de e-mailconfiguratie van uw instantie te beheren. Het is belangrijk om een werkende configuratie te hebben, anders kunnen gebruikers geen nieuw wachtwoord aanvragen.","admin.forms.test_email.email_will_be_send_to_x":'De e-mail zal worden verzonden naar :email',"admin.forms.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","admin.forms.cache_management.label":"Cachebeheer","admin.forms.cache_management.help":"Soms moet de cache worden geleegd, bijvoorbeeld na een wijziging in omgevingsvariabelen of een update. Je kunt dit hier doen.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","auth.failed":"Deze inloggegevens zijn niet bij ons bekend.","auth.password":"Het opgegeven wachtwoord is onjuist.","auth.throttle":"Te veel inlogpogingen. Probeer het opnieuw over :seconds seconden.","auth.sign_out":"Uitloggen","auth.sign_in":"Inloggen","auth.sign_in_using":"Inloggen met","auth.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"Je kunt ook doorgaan met:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","auth.sign_in_using_security_device":"Log in met een beveiligingsapparaat","auth.login_and_password":"lnloggen & wachtwoord","auth.register":"Registreren","auth.welcome_to_2fauth":"Welkom bij 2FAuth","auth.autolock_triggered":"Automatisch vergrendelen geactiveerd","auth.autolock_triggered_punchline":"Automatisch vergrendelen geactiveerd, je bent uitgelogd","auth.already_authenticated":"Al geauthenticeerd, log eerst uit","auth.authentication":"Authenticatie","auth.maybe_later":"Misschien later","auth.user_account_controlled_by_proxy":"Gebruikersaccount beschikbaar gesteld door een authenticatieproxy.
Beheer het account op proxyniveau.","auth.auth_handled_by_proxy":"Verificatie die wordt afgehandeld door een reverse proxy, hieronder zijn uitgeschakeld.
Authenticatie beheren op proxyniveau.","auth.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Weet je zeker dat je wilt uitloggen?","auth.confirm.revoke_device":"Weet u zeker dat u dit apparaat wilt verwijderen?","auth.confirm.delete_account":"Weet je zeker dat je je account wilt verwijderen?","auth.webauthn.security_device":"een beveiligingsapparaat","auth.webauthn.security_devices":"Beveiligingsapparaten","auth.webauthn.security_devices_legend":"Verificatieapparaten die u kunt gebruiken om in 2FAuth, zoals beveiligingstoetsen (bijv. e Yubikey) of smartphones met biometrische mogelijkheden (zoals Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`U kunt de beveiliging van uw 2FAuth-account verbeteren door WebAuthn authenticatie in te schakelen.

- WebAuthn stelt u in staat om snel en veiliger beveiligde apparaten (zoals Yubikeys of smartphones met biometrische mogelijkheden) te gebruiken.`,"auth.webauthn.use_security_device_to_sign_in":"Maak je klaar om te verifiëren met (één van) je beveiligingsapparaten. Steek je beveiligingsapparaat in, verwijder gezicht masker of handschoenen etc.","auth.webauthn.lost_your_device":"Je apparaat verloren?","auth.webauthn.recover_your_account":"Herstel je account","auth.webauthn.account_recovery":"Accountherstel","auth.webauthn.recovery_punchline":"2FAuth stuurt u een herstel-link naar dit e-mailadres. Klik op de link in de ontvangen e-mail en volg de instructies.

Zorg ervoor dat u de e-mail opent op een apparaat dat u volledig bezit.","auth.webauthn.send_recovery_link":"Herstellink verzenden","auth.webauthn.account_recovery_email_sent":"Account herstel e-mail verzonden!","auth.webauthn.disable_all_security_devices":"Alle beveiligingsapparaten uitschakelen","auth.webauthn.disable_all_security_devices_help":"Al uw beveiligingsapparaten zullen worden ingetrokken. Gebruik deze optie als u één hebt verloren, of als de beveiliging is aangetast.","auth.webauthn.register_a_new_device":"Registreer een nieuw apparaat","auth.webauthn.register_a_device":"Apparaat registreren","auth.webauthn.device_successfully_registered":"Apparaat succesvol geregistreerd","auth.webauthn.device_revoked":"Apparaat succesvol ingetrokken","auth.webauthn.revoking_a_device_is_permanent":"Een apparaat intrekken is permanent","auth.webauthn.recover_account_instructions":"Om uw account te herstellen, stelt 2FAuth een aantal Webauthn instellingen opnieuw in, zodat u kunt inloggen met uw e-mailadres en wachtwoord.","auth.webauthn.invalid_recovery_token":"Ongeldige herstelcode","auth.webauthn.webauthn_login_disabled":"Webauthn inloggen uitgeschakeld","auth.webauthn.invalid_reset_token":"Deze reset token is ongeldig.","auth.webauthn.rename_device":"Apparaat hernoemen","auth.webauthn.my_device":"Mijn apparaat","auth.webauthn.unknown_device":"Onbekend apparaat","auth.webauthn.use_webauthn_only.label":"Gebruik alleen WebAuthn","auth.webauthn.use_webauthn_only.help":`Maak WebAuthn de enige geautoriseerde methode om in te loggen op uw 2FAuth account. Dit is de aanbevolen instelling om gebruik te maken van de verbeterde WebAuthn beveiliging.

- In geval van verlies van apparaat, u kunt uw account herstellen door deze optie te resetten en in te loggen met uw e-mailadres en wachtwoord.

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Beheerder","admin.admin_panel":"Admin panel","admin.app_setup":"App instellingen","admin.auth":"Auth","admin.registrations":"Registraties","admin.users":"Gebruikers","admin.users_legend":"Beheer gebruikers die geregistreerd zijn op uw instantie of maak nieuwe.","admin.admin_settings":"Beheerders instellingen","admin.create_new_user":"Een gebruiker aanmaken","admin.new_user":"Nieuwe gebruiker","admin.search_user_placeholder":"Gebruikersnaam, e-mail...","admin.quick_filters_colons":"Snelle filters:","admin.user_created":"gebruiker succesvol aangemaakt","admin.confirm.delete_user":"Weet je zeker dat je deze gebruiker wilt verwijderen? Er is geen weg terug.","admin.confirm.request_password_reset":"Weet je zeker dat je het wachtwoord van deze gebruiker opnieuw wilt instellen?","admin.confirm.purge_password_reset_request":"Weet je zeker dat je de vorige aanvraag wilt intrekken?","admin.confirm.delete_account":"Weet je zeker dat je deze gebruiker wilt verwijderen?","admin.confirm.edit_own_account":"Dit is je eigen account. Weet je het zeker?","admin.confirm.change_admin_role":"Dit zal ernstige gevolgen hebben voor de rechten van deze gebruiker. Weet je het zeker?","admin.confirm.demote_own_account":"Je zult niet langer beheerder zijn. Weet je het zeker?","admin.logs":"Logboek","admin.administration_legend":"De volgende instellingen zijn globaal en gelden voor alle gebruikers.","admin.user_management":"Gebruikersbeheer","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"Dit account is gekoppeld aan een :provider account via OAuth","admin.last_seen_on_date":"Laatst gezien :date","admin.registered_on_date":"Geregistreerd: :date","admin.updated_on_date":"Bijgewerkt :date","admin.access":"Toegang","admin.password_requested_on_t":"Er bestaat een wachtwoord reset verzoek voor deze gebruiker (verzoek verzonden op :datetime), dit betekent dat de gebruiker zijn wachtwoord nog niet heeft gewijzigd, maar dat de link die hij heeft ontvangen nog steeds geldig is. Dit kan een verzoek zijn van de gebruiker zelf of van een beheerder.","admin.password_request_expired":"Er bestaat een wachtwoord reset verzoek voor deze gebruiker (verzoek verzonden op: datetime), dit betekent dat de gebruiker zijn wachtwoord nog niet heeft gewijzigd, maar dat de link die hij heeft ontvangen nog steeds geldig is. Dit kan een verzoek zijn van de gebruiker zelf of van een beheerder.","admin.resend_email":"E-mail opnieuw versturen","admin.resend_email_title":"Stuur een wachtwoord reset e-mail opnieuw naar de gebruiker","admin.resend_email_help":"Gebruik E-mail om een nieuw wachtwoord reset e-mail te sturen naar de gebruiker zodat hij een nieuw wachtwoord kan instellen. Dit laat het huidige wachtwoord zoals het is en elk eerdere verzoek wordt ingetrokken.","admin.reset_password":"Wachtwoord herstellen","admin.reset_password_help":"Gebruik Reset wachtwoord om een nieuw wachtwoord te forceren (dit zal een tijdelijk wachtwoord instellen) voordat u een wachtwoord reset e-mail stuurt naar de gebruiker zodat deze een nieuw wachtwoord kan instellen. Een eerdere aanvraag wordt ingetrokken.","admin.reset_password_title":"Herstel het wachtwoord van de gebruiker","admin.password_successfully_reset":"Wachtwoord succesvol hersteld","admin.user_has_x_active_pat":":count actieve token(s)","admin.user_has_x_security_devices":":count beveiligingsapparaten (passkeys)","admin.revoke_all_pat_for_user":"Alle tokens van gebruiker intrekken","admin.revoke_all_devices_for_user":"Alle beveiligingsapparaten van gebruikers intrekken","admin.danger_zone":"Gevarenzone","admin.delete_this_user_legend":"De gebruikersaccount zal worden verwijderd evenals alle 2FA-gegevens.","admin.this_is_not_soft_delete":"Dit is geen zachte verwijdering, er is geen weg terug.","admin.delete_this_user":"Deze gebruiker verwijderen","admin.user_role_updated":"Gebruikersrol bijgewerkt","admin.pats_succesfully_revoked":"PAT's van gebruiker succesvol ingetrokken","admin.security_devices_succesfully_revoked":"Toegangsapparaten van gebruiker succesvol ingetrokken","admin.variables":"Variabelen","admin.cache_cleared":"Cache geleegd","admin.cache_optimized":"Cache geoptimaliseerd","admin.check_now":"Controleer nu","admin.view_on_github":"Bekijk op GitHub","admin.x_is_available":":version is beschikbaar","admin.successful_login_on":'Succesvolle aanmelding op :login_at',"admin.successful_logout_on":'Succesvol uitgelogd op :login_at',"admin.failed_login_on":'Mislukte aanmelding op :login_at',"admin.viewed_on":'Bekeken op :login_at',"admin.last_accesses":"Laatst geopend","admin.see_full_log":"Bekijk volledige log","admin.browser_on_platform":":browser op :platform","admin.access_log_has_more_entries":"Het toegangslogboek bevat meer vermeldingen.","admin.access_log_legend_for_user":"Volledige toegangslog voor gebruiker :username","admin.show_last_month_log":"Toon items van de laatste maand","admin.show_three_months_log":"Toon items van de laatste 3 maanden","admin.show_six_months_log":"Toon items van de laatste 6 maanden","admin.show_one_year_log":"Toon items van het afgelopen jaar","admin.sort_by_date_asc":"Toon minst recent eerst","admin.sort_by_date_desc":"Toon meest recente eerst","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","admin.forms.use_encryption.label":"Bescherm gevoelige gegevens","admin.forms.use_encryption.help":"Gevoelige gegevens, de 2FA-geheimen en e-mails, worden versleuteld in de database. Zorg ervoor dat u een back-up maakt van de APP_KEY waarde van uw . nv bestand (of het hele bestand) wordt gebruikt als sleutelencryptie. Er is geen manier om gecodeerde data te decyperen zonder deze sleutel.","admin.forms.restrict_registration.label":"Registratie beperken","admin.forms.restrict_registration.help":"Maak registratie alleen beschikbaar voor een beperkt aantal e-mailadressen. Beide regels kunnen tegelijkertijd worden gebruikt. Dit heeft geen effect op de registratie via SSO.","admin.forms.restrict_list.label":"Filter lijst","admin.forms.restrict_list.help":'E-mails in deze lijst zijn toegestaan om te registreren. Scheid adressen met een pijp ("~")',"admin.forms.restrict_rule.label":"Regels filteren","admin.forms.restrict_rule.help":"E-mails die overeenkomen met deze reguliere expressie zijn toegestaan om te registreren","admin.forms.disable_registration.label":"Schakel registratie uit","admin.forms.disable_registration.help":"Voorkom de registratie van nieuwe gebruikers. Tenzij hieronder overschreven (zie hieronder), heeft dit invloed op SSO, zodat nieuwe gebruikers niet kunnen inloggen via SSO","admin.forms.enable_sso.label":"Enable SSO","admin.forms.enable_sso.help":"Sta bezoekers toe om zich te verifiëren met behulp van een extern ID via het Single Sign-On schema","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","admin.forms.keep_sso_registration_enabled.label":"SSO-registratie ingeschakeld houden","admin.forms.keep_sso_registration_enabled.help":"Sta nieuwe gebruikers toe om voor de eerste keer via SSO in te loggen terwijl registratie is uitgeschakeld","admin.forms.is_admin.label":"Is beheerder","admin.forms.is_admin.help":"Geef beheerder rechten aan gebruiker. Beheerders hebben rechten om de hele app te beheren, o.a. Instellingen en andere gebruikers, maar kunnen geen wachtwoord genereren voor een 2FA waarvan ze geen eigenaar zijn.","admin.forms.test_email.label":"E-mail configuratie test","admin.forms.test_email.help":"Stuur een test e-mail om de e-mailconfiguratie van uw instantie te beheren. Het is belangrijk om een werkende configuratie te hebben, anders kunnen gebruikers geen nieuw wachtwoord aanvragen.","admin.forms.test_email.email_will_be_send_to_x":'De e-mail zal worden verzonden naar :email',"admin.forms.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","admin.forms.cache_management.label":"Cachebeheer","admin.forms.cache_management.help":"Soms moet de cache worden geleegd, bijvoorbeeld na een wijziging in omgevingsvariabelen of een update. Je kunt dit hier doen.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","auth.failed":"Deze inloggegevens zijn niet bij ons bekend.","auth.password":"Het opgegeven wachtwoord is onjuist.","auth.throttle":"Te veel inlogpogingen. Probeer het opnieuw over :seconds seconden.","auth.sign_out":"Uitloggen","auth.sign_in":"Inloggen","auth.sign_in_using":"Inloggen met","auth.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"Je kunt ook doorgaan met:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","auth.sign_in_using_security_device":"Log in met een beveiligingsapparaat","auth.login_and_password":"lnloggen & wachtwoord","auth.register":"Registreren","auth.welcome_to_2fauth":"Welkom bij 2FAuth","auth.autolock_triggered":"Automatisch vergrendelen geactiveerd","auth.autolock_triggered_punchline":"Automatisch vergrendelen geactiveerd, je bent uitgelogd","auth.already_authenticated":"Al geauthenticeerd, log eerst uit","auth.authentication":"Authenticatie","auth.maybe_later":"Misschien later","auth.user_account_controlled_by_proxy":"Gebruikersaccount beschikbaar gesteld door een authenticatieproxy.
Beheer het account op proxyniveau.","auth.auth_handled_by_proxy":"Verificatie die wordt afgehandeld door een reverse proxy, hieronder zijn uitgeschakeld.
Authenticatie beheren op proxyniveau.","auth.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Weet je zeker dat je wilt uitloggen?","auth.confirm.revoke_device":"Weet u zeker dat u dit apparaat wilt verwijderen?","auth.confirm.delete_account":"Weet je zeker dat je je account wilt verwijderen?","auth.webauthn.security_device":"een beveiligingsapparaat","auth.webauthn.security_devices":"Beveiligingsapparaten","auth.webauthn.security_devices_legend":"Verificatieapparaten die u kunt gebruiken om in 2FAuth, zoals beveiligingstoetsen (bijv. e Yubikey) of smartphones met biometrische mogelijkheden (zoals Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`U kunt de beveiliging van uw 2FAuth-account verbeteren door WebAuthn authenticatie in te schakelen.

\r + WebAuthn stelt u in staat om snel en veiliger beveiligde apparaten (zoals Yubikeys of smartphones met biometrische mogelijkheden) te gebruiken.`,"auth.webauthn.use_security_device_to_sign_in":"Maak je klaar om te verifiëren met (één van) je beveiligingsapparaten. Steek je beveiligingsapparaat in, verwijder gezicht masker of handschoenen etc.","auth.webauthn.lost_your_device":"Je apparaat verloren?","auth.webauthn.recover_your_account":"Herstel je account","auth.webauthn.account_recovery":"Accountherstel","auth.webauthn.recovery_punchline":"2FAuth stuurt u een herstel-link naar dit e-mailadres. Klik op de link in de ontvangen e-mail en volg de instructies.

Zorg ervoor dat u de e-mail opent op een apparaat dat u volledig bezit.","auth.webauthn.send_recovery_link":"Herstellink verzenden","auth.webauthn.account_recovery_email_sent":"Account herstel e-mail verzonden!","auth.webauthn.disable_all_security_devices":"Alle beveiligingsapparaten uitschakelen","auth.webauthn.disable_all_security_devices_help":"Al uw beveiligingsapparaten zullen worden ingetrokken. Gebruik deze optie als u één hebt verloren, of als de beveiliging is aangetast.","auth.webauthn.register_a_new_device":"Registreer een nieuw apparaat","auth.webauthn.register_a_device":"Apparaat registreren","auth.webauthn.device_successfully_registered":"Apparaat succesvol geregistreerd","auth.webauthn.device_revoked":"Apparaat succesvol ingetrokken","auth.webauthn.revoking_a_device_is_permanent":"Een apparaat intrekken is permanent","auth.webauthn.recover_account_instructions":"Om uw account te herstellen, stelt 2FAuth een aantal Webauthn instellingen opnieuw in, zodat u kunt inloggen met uw e-mailadres en wachtwoord.","auth.webauthn.invalid_recovery_token":"Ongeldige herstelcode","auth.webauthn.webauthn_login_disabled":"Webauthn inloggen uitgeschakeld","auth.webauthn.invalid_reset_token":"Deze reset token is ongeldig.","auth.webauthn.rename_device":"Apparaat hernoemen","auth.webauthn.my_device":"Mijn apparaat","auth.webauthn.unknown_device":"Onbekend apparaat","auth.webauthn.use_webauthn_only.label":"Gebruik alleen WebAuthn","auth.webauthn.use_webauthn_only.help":`Maak WebAuthn de enige geautoriseerde methode om in te loggen op uw 2FAuth account. Dit is de aanbevolen instelling om gebruik te maken van de verbeterde WebAuthn beveiliging.

\r + In geval van verlies van apparaat, u kunt uw account herstellen door deze optie te resetten en in te loggen met uw e-mailadres en wachtwoord.

\r Opgelet! Het e-mail & wachtwoord formulier blijft beschikbaar ondanks deze optie ingeschakeld, maar het zal altijd een 'Authenticatie mislukt' antwoord teruggeven.`,"auth.webauthn.need_a_security_device_to_enable_options":"Stel ten minste één apparaat in om de volgende opties in te schakelen","auth.webauthn.options":"Opties","auth.forms.name":"Naam","auth.forms.login":"Inloggen","auth.forms.webauthn_login":"WebAuthn inloggen","auth.forms.sso_login":"SSO login","auth.forms.email":"E-mail","auth.forms.password":"Wachtwoord","auth.forms.reveal_password":"Toon wachtwoord","auth.forms.hide_password":"Verberg wachtwoord","auth.forms.confirm_password":"Bevestig wachtwoord","auth.forms.new_password":"Nieuw wachtwoord","auth.forms.confirm_new_password":"Bevestig nieuw wachtwoord","auth.forms.dont_have_account_yet":"Heb je nog geen account?","auth.forms.already_register":"Al geregistreerd?","auth.forms.authentication_failed":"Authenticatie mislukt","auth.forms.forgot_your_password":"Je wachtwoord vergeten?","auth.forms.request_password_reset":"Herstellen","auth.forms.reset_your_password":"Herstel je wachtwoord","auth.forms.reset_password":"Wachtwoord herstellen","auth.forms.disabled_in_demo":"Functie uitgeschakeld in Demo modus","auth.forms.sso_only_form_restricted_to_admin":"Regular users must sign in with SSO. Other methods are for administrators only.","auth.forms.current_password.label":"Huidig wachtwoord","auth.forms.current_password.help":"Vul je huidige wachtwoord in om te bevestigen dat jij het bent","auth.forms.change_password":"Wijzig wachtwoord","auth.forms.send_password_reset_link":"Wachtwoord herstel link sturen","auth.forms.password_successfully_reset":"Wachtwoord succesvol hersteld","auth.forms.edit_account":"Wijzig account","auth.forms.profile_saved":"Profiel succesvol bijgewerkt!","auth.forms.welcome_to_demo_app_use_those_credentials":"Welkom op de 2FAuth demo.

U kunt verbinden met het e-mailadres demo@2fauth.app en het wachtwoord demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Welkom bij de 2FAuth test instantie.

Gebruik e-mailadres testing@2fauth.app en wachtwoord wachtwoord","auth.forms.register_punchline":"Welkom bij 2FAuth.
U heeft een account nodig om verder te gaan, registreer uzelf.","auth.forms.reset_punchline":"2FAuth zal u een wachtwoord reset link sturen naar dit adres. Klik op de link in de ontvangen e-mail om een nieuw wachtwoord in te stellen.","auth.forms.name_this_device":"Naam van dit apparaat","auth.forms.delete_account":"Account verwijderen","auth.forms.delete_your_account":"Verwijder je account","auth.forms.delete_your_account_and_reset_all_data":"Je gebruikers account wordt verwijderd, evenals al uw 2FA-gegevens. Er is geen weg terug.","auth.forms.reset_your_password_to_delete_your_account":"Als je SSO altijd hebt gebruikt om in te loggen, log uit en gebruik de reset wachtwoord functie om een wachtwoord te krijgen zodat u dit formulier kunt invullen.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Het verwijderen van je 2FAuth account heeft geen invloed op je externe SSO-account.","auth.forms.user_account_successfully_deleted":"Gebruikersaccount succesvol verwijderd","auth.forms.has_lower_case":"Heeft kleine letters","auth.forms.has_upper_case":"Heeft hoofdletters","auth.forms.has_special_char":"Heeft speciale teken","auth.forms.has_number":"Heeft nummers","auth.forms.is_long_enough":"Minimaal 8 karakters.","auth.forms.mandatory_rules":"Verplicht","auth.forms.optional_rules_you_should_follow":"Aanbevolen (hoog)","auth.forms.caps_lock_is_on":"Caps lock is aan","auth.sso_providers.unknown":"unknown","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","commons.cancel":"Annuleren","commons.update":"Bijwerken","commons.copy":"Kopiëren","commons.copy_to_clipboard":"Kopiëren naar klembord","commons.copied_to_clipboard":"Gekopiëerd naar klembord","commons.profile":"Profiel","commons.edit":"Bewerken","commons.delete":"Verwijderen","commons.disable":"Deactiveer","commons.enable":"Activeren","commons.create":"Aanmaken","commons.save":"Opslaan","commons.close":"Sluiten","commons.clear":"Wissen","commons.clear_search":"Wis zoekopdracht","commons.demo_do_not_post_sensitive_data":"Dit is een demo-app, plaats geen gevoelige gegevens","commons.testing_do_not_post_sensitive_data":"Dit is een test-app, plaats geen gevoelige gegevens","commons.x_selected":":count geselecteerd","commons.name":"Naam","commons.manage":"Beheren","commons.done":"Gereed","commons.new":"Nieuw","commons.back":"Terug","commons.move":"Verplaats","commons.export":"Exporteren","commons.all":"Alle","commons.check_all":"Alle","commons.select_all":"Alles selecteren","commons.clear_selection":"Selectie wissen","commons.sort_descending":"Sorteer aflopend","commons.sort_ascending":"Soorter oplopend","commons.rename":"Hernoemen","commons.new_name":"Nieuwe naam","commons.options":"Opties","commons.reload":"Vernieuwen","commons.refresh":"Vernieuwen","commons.data_refreshed_to_reflect_server_changes":"Gegevens zijn vernieuwd om server-side wijzigingen weer te geven","commons.generate":"Genereren","commons.generating_otp":"OTP genereren","commons.open_in_browser":"Openen in de browser","commons.continue":"Doorgaan","commons.discard":"Verwerp","commons.about":"Over","commons.usefull_links":"Handige links","commons.environment":"Omgeving","commons.credits":"Credits","commons.2fauth_teaser":"Een webapp om je tweestapsverificatie (2FA) accounts te beheren en hun beveiligingscodes te genereren","commons.made_with":"Gemaakt met","commons.ui_icons_by":"UI iconen door","commons.logos_by":"Logo's door","commons.search":"Zoeken","commons.resources":"Bronnen","commons.check_for_update":"Controleer op nieuwe versie","commons.check_for_update_help":"Controleer automatisch (eenmaal per week) en waarschuw wanneer er een nieuwe release van 2FAuth wordt gepubliceerd op Github","commons.you_are_up_to_date":"Deze server is up-to-date","commons.2fauth_description":"Een webapp om je tweestapsverificatie (2FA) accounts te beheren en hun beveiligingscodes te genereren","commons.image_of_qrcode_to_scan":"Afbeelding van een QR-code om te scannen","commons.file":"Bestand","commons.or":"OF","commons.close_the_x_page":"Sluit de :pagetitle pagina","commons.submit":"Verzenden","commons.default":"Standaard","commons.back_to_home":"Terug naar start","commons.nothing":"niets","commons.no_result":"Geen resultaat","commons.information":"Informatie","commons.send":"Verzenden","commons.optimize":"Optimaliseren","commons.IP":"IP","commons.browser":"Browser","commons.operating_system_short":"OS","commons.no_entry_yet":"Nog geen invoer","commons.time":"Tijd","commons.ip_address":"IP-adres","commons.device":"Apparaat","commons.one_month":"1 ma.","commons.x_month":":x mos.","commons.one_year":"1 yr.","errors.resource_not_found":"Bron niet gevonden","errors.error_occured":"Er is een fout opgetreden:","errors.refresh":"Vernieuwen","errors.no_valid_otp":"Geen geldige OTP bron in deze QR code","errors.something_wrong_with_server":"Er is iets mis met je server","errors.Unable_to_decrypt_uri":"Kan uri niet ontsleutelen","errors.not_a_supported_otp_type":"Dit OTP formaat wordt momenteel niet ondersteund","errors.cannot_create_otp_without_secret":"Kan geen OTP maken zonder een geheim","errors.data_of_qrcode_is_not_valid_URI":"De gegevens van deze QR code zijn geen geldige OTP Auth URI. De QR-code bevat het volgende:","errors.wrong_current_password":"Onjuist huidig wachtwoord, niets is veranderd","errors.error_during_encryption":"Versleuteling mislukt, je database blijft onbeschermd.","errors.error_during_decryption":"Ontsleuteling mislukt, uw database wordt nog steeds beschermd. Dit wordt voornamelijk veroorzaakt door een integriteitsprobleem van versleutelde data voor een of meer accounts.","errors.qrcode_cannot_be_read":"Deze QR code is onleesbaar","errors.too_many_ids":"te veel id's zijn opgenomen in de query parameter, max 100 toegestaan","errors.delete_user_setting_only":"Alleen gebruiker-gemaakte instelling kan worden verwijderd","errors.indecipherable":"*onbeschrijfbaar*","errors.cannot_decipher_secret":"Het geheim kan niet worden ontcijferd. Dit wordt voornamelijk veroorzaakt door een verkeerde APP_KEY set in de . nv configuratiebestand van 2Fauth of beschadigde gegevens opgeslagen in de database.","errors.https_required":"HTTPS context vereist","errors.browser_does_not_support_webauthn":"Je apparaat ondersteunt geen webauthn. Probeer het later opnieuw met een modernere browser","errors.aborted_by_user":"Geannuleerd door gebruiker","errors.security_device_already_registered":"Apparaat is al geregistreerd","errors.not_allowed_operation":"Actie niet toegestaan","errors.no_authenticator_support_specified_algorithms":"Geen authenticators ondersteunen opgegeven algoritmen","errors.authenticator_missing_discoverable_credential_support":"Authenticator mist detecteerbare referentie ondersteuning","errors.authenticator_missing_user_verification_support":"Authenticator mist ondersteuning voor verificatie","errors.unknown_error":"Onbekende fout","errors.security_error_check_rpid":"Beveiligingsfout
Controleer uw WEBAUTHN_ID env var","errors.2fauth_has_not_a_valid_domain":"2FAuth's domein is geen geldig domein","errors.user_id_not_between_1_64":"Gebruikers ID was niet tussen 1 en 64 tekens","errors.no_entry_was_of_type_public_key":'Geen item van het type "public key"',"errors.unsupported_with_reverseproxy":"Not applicable when using an auth proxy or SSO","errors.unsupported_with_sso_only":"This authentication method is for administrators only. Users must log in with SSO.","errors.user_deletion_failed":"Gebruikersaccount verwijderen mislukt, er zijn geen gegevens verwijderd","errors.auth_proxy_failed":"Proxy authenticatie mislukt","errors.auth_proxy_failed_legend":"2Fauth is geconfigureerd om achter een authenticatie-proxy uit te voeren, maar uw proxy geeft de verwachte header niet terug. Controleer uw configuratie en probeer het opnieuw.","errors.invalid_x_migration":"Ongeldige of onleesbare :appname data","errors.invalid_2fa_data":"Ongeldige 2FA gegevens","errors.unsupported_migration":"Gegevens komen niet overeen met een ondersteund formaat","errors.unsupported_otp_type":"Niet ondersteund OTP type","errors.encrypted_migration":"Onleesbaar, de data lijkt versleuteld","errors.no_logo_found_for_x":"Geen logo beschikbaar voor :service","errors.file_upload_failed":"Bestand uploaden mislukt","errors.unauthorized":"Niet geautoriseerd","errors.unauthorized_legend":"U heeft geen rechten om dit document te bekijken of deze actie uit te voeren","errors.cannot_delete_the_only_admin":"Kan de enige admin account niet verwijderen","errors.cannot_demote_the_only_admin":"Kan de enige admin account niet degraderen","errors.error_during_data_fetching":"💀 Er is iets misgegaan tijdens het ophalen van gegevens","errors.check_failed_try_later":"Controle mislukt, probeer het later opnieuw","errors.sso_disabled":"SSO is uitgeschakeld","errors.sso_bad_provider_setup":"Deze SSO provider is niet volledig ingesteld in uw .env bestand","errors.sso_failed":"Verificatie via SSO geweigerd","errors.sso_no_register":"Registraties zijn uitgeschakeld","errors.sso_email_already_used":"Een gebruikersaccount met hetzelfde e-mailadres bestaat al, maar komt niet overeen met uw account-ID. Gebruik geen SSO als je al op 2FAuth geregistreerd bent met dit e-mailadres.","errors.account_managed_by_external_provider":"Account wordt beheerd door een externe provider","errors.data_cannot_be_refreshed_from_server":"Gegevens kunnen niet worden vernieuwd vanaf server","errors.no_pwd_reset_for_this_user_type":"Wachtwoord herstellen niet beschikbaar voor deze gebruiker","errors.cannot_detect_qrcode_in_image":"Kan geen QR-code vinden op de afbeelding, probeer de afbeelding bij te snijden","errors.cannot_decode_detected_qrcode":"Kan QR-code niet decoderen, probeer de afbeelding bij te snijden of te verscherpen","errors.qrcode_has_invalid_checksum":"QR code heeft een ongeldige controlesom","errors.no_readable_qrcode":"Geen leesbare QR- code","errors.failed_icon_store_database_toggling":"Migration of icons failed. The setting has been restored to its previous value.","groups.groups":"Groepen","groups.create_group":"Maak nieuwe groep","groups.show_group_selector":"Toon groepskiezer","groups.hide_group_selector":"Verberg gropeskiezer","groups.select_accounts_to_show":"Selecteer de accountgroep om te tonen","groups.x_accounts":":count accounts","groups.manage_groups":"Beheer groepen","groups.active_group":"Actieve groep","groups.manage_groups_legend":"Je kunt groepen maken om je accounts te organiseren zoals je wilt. Alle accounts blijven zichtbaar in de pseudo-groep met de naam 'Alle', ongeacht de groep waartoe ze behoren.","groups.deleting_group_does_not_delete_accounts":"Het verwijderen van een groep verwijdert geen accounts","groups.move_selected_to":"Verplaats selectie naar","groups.move_selected_to_group":"Verplaats geselecteerde naar een groep","groups.no_group":"Geen groep","groups.change_group":"Verander groep","groups.group_successfully_created":"Groep succesvol aangemaakt","groups.group_name_saved":"Groepsnaam opgeslagen","groups.group_successfully_deleted":"Groep succesvol verwijderd","groups.forms.new_group":"Nieuwe groep","groups.forms.new_name":"Nieuwe naam","groups.forms.rename_group":"Groep hernoemen","groups.confirm.delete":"Weet je zeker dat u deze groep wilt verwijderen?","languages.browser_preference":"Browser voorkeuren","languages.en":"Engels (English)","languages.fr":"Frans (French)","languages.de":"Duits (Deutsch)","languages.es":"Spaans (Español)","languages.zh":"Chinees (Vereenvoudigd Chinees)","languages.ru":"Русский (Russisch)","languages.bg":"Български (Bulgarian)","languages.ja":"日本語 (Japans)","languages.hi":"barometertels ½ (Hindi)","languages.tr":"Turk (Turks)","notifications.hello":"Hallo","notifications.hello_user":"Hallo :username,","notifications.regards":"Groeten","notifications.test_email_settings.subject":"2FAuth test e-mail","notifications.test_email_settings.reason":"Je ontvangt deze e-mail omdat je een test e-mail hebt aangevraagd om de e-mailinstellingen van je 2FAuth installatie te valideren.","notifications.test_email_settings.success":"Goed nieuws, het werkt :)","notifications.new_device.subject":"Verbinding met 2FAuth vanaf een nieuw apparaat","notifications.new_device.resume":"Een nieuw apparaat heeft zojuist verbinding gemaakt met je 2FAuth account.","notifications.new_device.connection_details":"Hier zijn de details van deze verbinding","notifications.new_device.recommandations":"Als u dit was, kunt u deze waarschuwing negeren. Als u vermoedt dat er sprake is van een verdachte activiteit op uw account, wijzig dan uw wachtwoord.","notifications.failed_login.subject":"Mislukte login naar 2FAuth","notifications.failed_login.resume":"Er is een mislukte inlog poging gedaan voor je 2FAuth account.","notifications.failed_login.connection_details":"Hier zijn de details van deze verbindingspoging","notifications.failed_login.recommandations":"Als jij dit was, kan je deze melding negeren. Als verdere pogingen mislukken, moet u contact opnemen met de 2FAuth beheerder om de beveiligingsinstellingen te bekijken en actie ondernemen tegen deze aanvaller.","pagination.previous":"« Vorige","pagination.next":"Volgende »","passwords.reset":"Je wachtwoord is gereset!","passwords.sent":"We hebben uw wachtwoord reset link gemaild!","passwords.throttled":"Gelieve even te wachten voor u het opnieuw probeert.","passwords.token":"Dit wachtwoord reset token is ongeldig.","passwords.user":"We kunnen geen gebruiker vinden met dat e-mailadres.","passwords.password":"Wachtwoorden moeten minstens acht tekens bevatten en overeenkomen.","settings.settings":"Instellingen","settings.preferences":"Voorkeuren","settings.account":"Account","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Tokens","settings.options":"Opties","settings.user_preferences":"Gebruikersvoorkeuren","settings.admin_settings":"Beheerdersinstellingen","settings.confirm.revoke":"Weet u zeker dat u deze token wilt intrekken?","settings.you_are_administrator":"U bent een beheerder","settings.account_linked_to_sso_x_provider":"U bent ingelogd via SSO met behulp van uw :provider account. Uw gegevens kunnen hier niet worden gewijzigd, maar op :provider.","settings.general":"Algemeen","settings.security":"Beveiliging","settings.notifications":"Meldingen","settings.profile":"Profiel","settings.change_password":"Wachtwoord wijzigen","settings.personal_access_tokens":"Persoonlijke toegangstokens","settings.token_legend":"Persoonlijke toegangstokens staan elke app toe om te verifiëren via de 2Fauth API. U moet het toegangstoken opgeven als een Bearer token in de autorisatie-header van verzoeken om autorisatie apps.","settings.generate_new_token":"Nieuwe token genereren","settings.revoke":"Intrekken","settings.token_revoked":"Token succesvol ingetrokken","settings.revoking_a_token_is_permanent":"Het intrekken van een token is permanent","settings.make_sure_copy_token":"Zorg ervoor dat je het persoonlijke toegangs-token nu kopieert of opschrijft. Je kunt het later niet meer zien!","settings.data_input":"Gegevensinvoer","settings.forms.edit_settings":"Wijzig instellingen","settings.forms.setting_saved":"Instellingen opgeslagen","settings.forms.new_token":"Nieuwe token","settings.forms.some_translation_are_missing":"Sommige vertalingen ontbreken met behulp van de voorkeurstaal van de browser?","settings.forms.help_translate_2fauth":"Help 2FAuth te vertalen","settings.forms.language.label":"Taal","settings.forms.language.help":"De taal die wordt gebruikt om de 2FAuth gebruikersinterface te vertalen. Benoemde talen zijn compleet, stel een van uw keuze in om de voorkeur van uw browser te overschrijven.","settings.forms.timezone.label":"Tijdzone","settings.forms.timezone.help":"De tijdzone is van toepassing op alle datums en tijden die in de applicatie worden weergegeven","settings.forms.show_otp_as_dot.label":'Toon gegenereerde OTP als punt',"settings.forms.show_otp_as_dot.help":"Vervang gegenereerde wachtwoordtekens door *** om vertrouwelijkheid te garanderen. Beperk de copy/paste functie niet","settings.forms.reveal_dotted_otp.label":'Onthullen vervaagd OTP',"settings.forms.reveal_dotted_otp.help":"Laat de mogelijkheid om tijdelijk Dot-Obscured wachtwoorden te onthullen","settings.forms.close_otp_on_copy.label":'Sluiten OTP na kopiëren',"settings.forms.close_otp_on_copy.help":"Klik op een gegenereerd wachtwoord om het automatisch te kopiëren op het scherm","settings.forms.auto_close_timeout.label":'Automatisch sluiten OTP',"settings.forms.auto_close_timeout.help":"Automatisch het scherm-wachtwoord verbergen na een time-out. Dit voorkomt onnodige verzoeken voor nieuwe wachtwoorden als u de wachtwoordweergave vergeet te sluiten.","settings.forms.clear_search_on_copy.label":"Zoekopdracht wissen bij kopiëren","settings.forms.clear_search_on_copy.help":"Leeg het zoekvak rechts nadat een code is gekopieerd naar het klembord","settings.forms.sort_case_sensitive.label":"Soort hoofdlettergevoelig","settings.forms.sort_case_sensitive.help":"Wanneer aangedrongen, forceer de sorteerfunctie om rekeningen op een hoofdgevoelige basis te sorteren","settings.forms.copy_otp_on_display.label":'Kopieer OTP bij weergave',"settings.forms.copy_otp_on_display.help":'Automatisch een gegenereerd wachtwoord kopiëren direct nadat het op het scherm verschijnt. Vanwege de beperkingen van browsers wordt alleen het eerste TOTP wachtwoord gekopieerd, niet de roterende wachtwoord',"settings.forms.use_basic_qrcode_reader.label":"Gebruik standaard QR code lezer","settings.forms.use_basic_qrcode_reader.help":"Als u problemen ondervindt bij het opnemen van QR-codes kunt u deze optie overschakelen naar een meer fundamentele maar betrouwbaardere QR code lezer","settings.forms.display_mode.label":"Weergavemodus","settings.forms.display_mode.help":"Kies of je accounts wilt weergeven als lijst of als raster","settings.forms.password_format.label":"Wachtwoord opmaak","settings.forms.password_format.help":"Verander hoe de wachtwoorden worden weergegeven door cijfers te groeperen om leesbaarheid en geheugen te vergemakkelijken","settings.forms.pair":"bij Paar","settings.forms.pair_legend":"Groepeer cijfers twee door twee","settings.forms.trio_legend":"Groepeer cijfers twee door twee","settings.forms.half_legend":"Splits cijfers in twee gelijkwaardige groepen","settings.forms.trio":"door drie","settings.forms.half":"door de helft","settings.forms.grid":"Raster","settings.forms.list":"Lijst","settings.forms.theme.label":"Thema","settings.forms.theme.help":"Forceer een specifiek thema of pas het thema toe dat is gedefinieerd in uw systeem/browser voorkeuren","settings.forms.light":"Licht","settings.forms.dark":"Donker","settings.forms.automatic":"Auto","settings.forms.show_accounts_icons.label":"Toon symbolen","settings.forms.show_accounts_icons.help":"Show account icons in the main view","settings.forms.get_official_icons.label":"Officiële iconen verkrijgen","settings.forms.get_official_icons.help":"(Probeer om) Krijg het officiële icoon van de 2FA-uitgever bij het toevoegen van een account","settings.forms.auto_lock.label":"Autom. vergrendelen","settings.forms.auto_lock.help":"Log de gebruiker automatisch uit bij inactiviteit. Heeft geen effect wanneer authenticatie wordt afgehandeld door een proxy en er geen aangepaste logout-url is opgegeven.","settings.forms.default_group.label":"Standaard groep","settings.forms.default_group.help":"De groep waaraan de nieuwe accounts zijn gekoppeld","settings.forms.view_default_group_on_copy.label":"Standaardgroep bij kopiëren weergeven","settings.forms.view_default_group_on_copy.help":"Altijd terugkeren naar de standaardgroep wanneer een OTP is gekopieerd","settings.forms.auto_save_qrcoded_account.label":"Accounts automatisch opslaan","settings.forms.auto_save_qrcoded_account.help":"Nieuwe accounts worden automatisch geregistreerd na het scannen of uploaden van een QR-code, het is niet nodig op de knop Opslaan te klikken","settings.forms.useDirectCapture.label":"Directe invoer","settings.forms.useDirectCapture.help":"Kies of u gevraagd wilt worden om een invoermodus te kiezen tussen de beschikbare of dat u direct de standaard invoermodus wilt gebruiken","settings.forms.defaultCaptureMode.label":"Standaard input mode","settings.forms.defaultCaptureMode.help":"Standaard invoermodus wordt gebruikt wanneer de optie voor directe invoer ingeschakeld is","settings.forms.remember_active_group.label":"Groepfilter onthouden","settings.forms.remember_active_group.help":"Sla het laatste groepsfilter op en herstel het tijdens uw volgende bezoek","settings.forms.otp_generation.label":"Toon wachtwoord","settings.forms.otp_generation.help":'Stel in hoe en wanneer OTPs worden weergegeven.
',"settings.forms.notify_on_new_auth_device.label":"Op een nieuw apparaat","settings.forms.notify_on_new_auth_device.help":"Ontvang een e-mail wanneer een nieuw apparaat voor de eerste keer verbinding maakt met je 2FAuth account","settings.forms.notify_on_failed_login.label":"Bij mislukte aanmelding","settings.forms.notify_on_failed_login.help":"Ontvang een e-mail telkens wanneer een poging om verbinding te maken met je 2FAuth account mislukt","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","settings.forms.otp_generation_on_request":"Na een klik/tik","settings.forms.otp_generation_on_request_legend":"Alleen, in zijn eigen weergave","settings.forms.otp_generation_on_request_title":"Klik op een account om een wachtwoord te krijgen in een speciale weergave","settings.forms.otp_generation_on_home":"Constant","settings.forms.otp_generation_on_home_legend":"Alles, op start","settings.forms.otp_generation_on_home_title":"Alle wachtwoorden in de hoofdweergave weergeven, zonder iets te doen","settings.forms.never":"Nooit","settings.forms.on_otp_copy":"Bij beveiligingscode kopiëren","settings.forms.1_minutes":"Na 1 minuut","settings.forms.2_minutes":"Na 2 minuten","settings.forms.5_minutes":"Na 5 minuten","settings.forms.10_minutes":"Na 5 minuten","settings.forms.15_minutes":"Na 15 minuten","settings.forms.30_minutes":"Na 30 minuten","settings.forms.1_hour":"Na 1 uur","settings.forms.1_day":"Na 1 dag","settings.forms.livescan":"QR code livescan","settings.forms.upload":"QR code uploaden","settings.forms.advanced_form":"Geavanceerd formulier","titles.404":"Item niet gevonden","titles.start":"Nieuw account","titles.capture":"Flash QR","titles.accounts":"Accounts","titles.createAccount":"Account aanmaken","titles.importAccounts":"Importeer accounts","titles.editAccount":"Account wijzigen","titles.showQRcode":"Account als QR code","titles.groups":"Groepen","titles.createGroup":"Groep aanmaken","titles.editGroup":"Groep wijzigen","titles.settings.options":"Opties","titles.settings.account":"Gebruikersaccount","titles.settings.oauth.tokens":"OAuth tokens","titles.settings.oauth.generatePAT":"Nieuwe persoonlijke token","titles.settings.webauthn.editCredential":"Apparaat wijzigen","titles.settings.webauthn.devices":"WebAuthn apparaten","titles.login":"Inloggen","titles.register":"Registreer","titles.autolock":"Automatisch vergrendelen","titles.password.request":"Wachtwoord herstellen","titles.password.reset":"Nieuw wachtwoord","titles.webauthn.lost":"Accountherstel","titles.webauthn.recover":"Registreer een nieuw apparaat","titles.flooded":"Vloed","titles.genericError":"Fout","titles.about":"Over","titles.admin.appSetup":"App instellen","titles.admin.users":"Gebruikersbeheer","titles.admin.createUser":"Nieuwe gebruiker","titles.admin.manageUser":"Beheer gebruiker","titles.admin.logs.access":"Toegang logboek","twofaccounts.service":"Service","twofaccounts.account":"Account","twofaccounts.icon":"Icoon","twofaccounts.icon_to_illustrate_the_account":"Icoon dat de account illustreert","twofaccounts.remove_icon":"Verwijder icoon","twofaccounts.no_account_here":"Geen 2FA hier!","twofaccounts.add_first_account":"Kies een methode en voeg je eerste account toe","twofaccounts.use_full_form":"Of gebruik het volledige formulier","twofaccounts.add_one":"Eén toevoegen","twofaccounts.show_qrcode":"Toon QR-code","twofaccounts.no_service":"- geen service -","twofaccounts.account_created":"Account succesvol aangemaakt","twofaccounts.account_updated":"Account succesvol bijgewerkt","twofaccounts.accounts_deleted":"Account(s) succesvol verwijderd","twofaccounts.accounts_moved":"Account(s) succesvol verplaatst","twofaccounts.export_selected_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","twofaccounts.reveal":"toon","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"John DOE","twofaccounts.forms.new_account":"Nieuw account","twofaccounts.forms.edit_account":"Account bewerken","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Scan een QR code","twofaccounts.forms.upload_qrcode":"Upload een QR code","twofaccounts.forms.use_advanced_form":"Gebruik het geavanceerd formulier","twofaccounts.forms.prefill_using_qrcode":"Prefill met behulp van een QR Code","twofaccounts.forms.use_qrcode.val":"Gebruik een qrcode","twofaccounts.forms.use_qrcode.title":"Gebruik een QR code om het formulier magisch in te vullen","twofaccounts.forms.unlock.val":"Ontgrendel","twofaccounts.forms.unlock.title":"Ontgrendel het (op eigen risico)","twofaccounts.forms.lock.val":"Vergrendel","twofaccounts.forms.lock.title":"Vergrendel het","twofaccounts.forms.choose_image":"Upload","twofaccounts.forms.i_m_lucky":"Probeer mijn geluk","twofaccounts.forms.i_m_lucky_legend":'De "Probeer mijn geluk" knop probeert het officiële icoon te krijgen van de gegeven service. Voer de werkelijke servicenaam in zonder ".xyz" extensie en probeer een typefout te vermijden. (bèta-functie)',"twofaccounts.forms.test":"Test","twofaccounts.forms.group.label":"Group","twofaccounts.forms.group.help":"The group to which the account is to be assigned","twofaccounts.forms.secret.label":"Geheim","twofaccounts.forms.secret.help":"De sleutel die gebruikt wordt om uw beveiligingscodes te genereren","twofaccounts.forms.plain_text":"Platte tekst","twofaccounts.forms.otp_type.label":'Kies het type OTP om te maken',"twofaccounts.forms.otp_type.help":"Op tijd gebaseerde OTP of HMAC-gebaseerde OTP of Steam OTP","twofaccounts.forms.digits.label":"Cijfers","twofaccounts.forms.digits.help":"Het aantal cijfers van de gegenereerde beveiligingscodes","twofaccounts.forms.algorithm.label":"Algoritme","twofaccounts.forms.algorithm.help":"Het algoritme dat wordt gebruikt om uw beveiligingscodes te beveiligen","twofaccounts.forms.period.label":"Periode","twofaccounts.forms.period.placeholder":"Standaardwaarde is 30","twofaccounts.forms.period.help":"De geldigheidsduur van de gegenereerde beveiligingscodes in de tweede","twofaccounts.forms.counter.label":"Teller","twofaccounts.forms.counter.placeholder":"Standaardwaarde is 0","twofaccounts.forms.counter.help":"De initiële tellerwaarde","twofaccounts.forms.counter.help_lock":"Het is riskant om de teller te bewerken omdat je het account kunt desynchroniseren met de verificatieserver van de service. Gebruik het vergrendelingspictogram om wijziging in te schakelen, maar alleen als u weet dat u dit doet","twofaccounts.forms.image.label":"Afbeelding","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"De url van een externe afbeelding om te gebruiken als account icoon","twofaccounts.forms.options_help":"Je kunt de volgende opties leeg laten als je niet weet hoe ze in te stellen. De meest gebruikte waarden zullen worden toegepast.","twofaccounts.forms.alternative_methods":"Alternatieve methodes","twofaccounts.forms.spaces_are_ignored":"Ongewenste spaties worden automatisch verwijderd","twofaccounts.stream.live_scan_cant_start":"Live scan kan niet starten :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth heeft geen toegang tot je camera","twofaccounts.stream.need_grant_permission.solution":"Je moet toestemming geven om je apparaat camera te gebruiken. Als u het al heeft geweigerd en uw browser u niet opnieuw vraagt verwijst u naar de browserdocumentatie om erachter te komen hoe u toestemming kunt verlenen.","twofaccounts.stream.need_grant_permission.click_camera_icon":"Meestal wordt dit gedaan door te klikken op een schuin camerapictogram in of naast de adresbalk van de browser","twofaccounts.stream.not_readable.reason":"Laden scanner mislukt","twofaccounts.stream.not_readable.solution":"Is de camera al in gebruik? Zorg ervoor dat geen andere app je camera gebruikt en probeer het opnieuw","twofaccounts.stream.no_cam_on_device.reason":"Geen camera op dit apparaat","twofaccounts.stream.no_cam_on_device.solution":"Misschien ben je vergeten je webcam aan te sluiten","twofaccounts.stream.secured_context_required.reason":"Veilige context vereist","twofaccounts.stream.secured_context_required.solution":"HTTPS is vereist voor live scan. Als je 2FAuth vanaf je computer draait, gebruik dan geen andere virtuele host dan localhost","twofaccounts.stream.https_required":"HTTPS vereist voor camera streaming","twofaccounts.stream.camera_not_suitable.reason":"Geïnstalleerde camera's zijn niet geschikt","twofaccounts.stream.camera_not_suitable.solution":"Gebruik a.u.b. een ander apparaat/camera","twofaccounts.stream.stream_api_not_supported.reason":"Stream API wordt niet ondersteund in deze browser","twofaccounts.stream.stream_api_not_supported.solution":"Je moet een moderne browser gebruiken","twofaccounts.confirm.delete":"Weet je zeker dat je dit account wilt verwijderen?","twofaccounts.confirm.cancel":"Wijzigingen zullen verloren gaan. Weet je het zeker?","twofaccounts.confirm.discard":"Weet je zeker dat je dit account wilt verwijderen?","twofaccounts.confirm.discard_all":"Weet je zeker dat je alle accounts wilt verwijderen?","twofaccounts.confirm.discard_duplicates":"Weet je zeker dat je alle duplicaten wilt verwijderen?","twofaccounts.import.import":"Importeren","twofaccounts.import.to_import":"Importeren","twofaccounts.import.import_legend":"2FAuth kan gegevens importeren uit verschillende 2FA apps.","twofaccounts.import.import_legend_afterpart":"Gebruik de Exportfunctie van deze apps om een migratiebron zoals een QR code of een JSON-bestand te krijgen en het hier te laden.","twofaccounts.import.upload":"Upload","twofaccounts.import.scan":"Scan","twofaccounts.import.supported_formats_for_qrcode_upload":"Geaccepteerd: jpg, jpeg, png, bmp, gif, svg of webp","twofaccounts.import.supported_formats_for_file_upload":"Geaccepteerd: platte tekst, json, 2fas","twofaccounts.import.expected_format_for_direct_input":"Verwachte lijst van otpauth URI, een voor regel","twofaccounts.import.supported_migration_formats":"Ondersteunde migratie formaten","twofaccounts.import.qr_code":"QR code","twofaccounts.import.text_file":"Tekst bestand","twofaccounts.import.direct_input":"Directe invoer","twofaccounts.import.plain_text":"Platte tekst","twofaccounts.import.parsing_data":"Gegevens verwerken...","twofaccounts.import.issuer":"Verstrekker","twofaccounts.import.imported":"Geïmporteerd","twofaccounts.import.failure":"Mislukt","twofaccounts.import.x_valid_accounts_found":":count geldige accounts gevonden","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"De volgende 2FA-accounts werden gevonden in de migratie-bron. Tot nu toe zijn geen van deze aan 2FAuth toegevoegd.","twofaccounts.import.use_buttons_to_save_or_discard":"Gebruik de beschikbare knoppen om ze permanent op uw 2FA-collectie te slaan of ze te negeren.","twofaccounts.import.import_all":"Importeer alles","twofaccounts.import.import_this_account":"Importeer dit account","twofaccounts.import.discard_all":"Alles annuleren","twofaccounts.import.discard_duplicates":"Duplicaten verwijderen","twofaccounts.import.discard_this_account":"Dit account verwijderen","twofaccounts.import.generate_a_test_password":"Genereer een test wachtwoord","twofaccounts.import.possible_duplicate":"Een account met dezelfde gegevens bestaat al","twofaccounts.import.invalid_account":"- ongeldig account -","twofaccounts.import.invalid_service":"- ongeldige service -","twofaccounts.import.do_not_set_password_or_encryption":"Schakel wachtwoordbescherming of versleuteling NIET in als je gegevens van een 2FA-app exporteert, anders kunnen 2FAuth ze niet ontcijferen.","validation.accepted":"Het :attribute moet geaccepteerd worden.","validation.accepted_if":"Het :attribute moet worden geaccepteerd als :other :value is.","validation.active_url":"Het :attribute is geen geldige URL.","validation.after":"Het :attribute moet een datum na :date zijn.","validation.after_or_equal":"Het :attribute moet een datum na of gelijk aan :date zijn.","validation.alpha":"Het :attribute mag alleen letters bevatten.","validation.alpha_dash":"Het :attribute mag alleen letters, cijfers, streepjes en underscores bevatten.","validation.alpha_num":"Het :attribute mag alleen letters en nummers bevatten.","validation.array":"Het :attribute moet een reeks zijn.","validation.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","validation.before":"Het :attribute moet een datum vóór :date zijn.","validation.before_or_equal":"Het :attribute moet een datum zijn voor of gelijk aan :date.","validation.between.array":"Het :attribute moet tenminste :min en :max items bevatten.","validation.between.file":"Het :attribute moet tussen de :min en :max kilobytes zijn.","validation.between.numeric":"Het :attribute moet tussen :min en :max zijn.","validation.between.string":"Het :attribute moet tussen :min en :max karakters zijn.","validation.boolean":"Het :attribute moet ja of nee zijn.","validation.can":"The :attribute field contains an unauthorized value.","validation.confirmed":":attribute bevestiging komt niet overeen.","validation.contains":"The :attribute field is missing a required value.","validation.current_password":"Het wachtwoord is onjuist.","validation.date":"Het :attribute is geen geldige datum.","validation.date_equals":"Het :attribute moet een datum gelijk aan :date zijn.","validation.date_format":"Het :attribute komt niet overeen met het formaat :format.","validation.decimal":"The :attribute field must have :decimal decimal places.","validation.declined":"Het :attribuut moet worden afgewezen.","validation.declined_if":"Het :attribute moet worden afgewezen als :other :value is.","validation.different":"Het :attribute en :other moeten verschillend zijn.","validation.digits":"Het :attribute moet bestaan uit :digits cijfers.","validation.digits_between":"Het :attribute moet bestaan uit minimaal :min en maximaal :max cijfers.","validation.dimensions":"Het :attribute heeft ongeldige afbeeldings dimensies.","validation.distinct":":attribute veld heeft een reeds bestaande waarde.","validation.doesnt_end_with":"Het :attribute mag niet eindigen met een van de volgende: :values.","validation.doesnt_start_with":"Het :attribute mag niet beginnen met een van de volgende: :values.","validation.email":"Het :attribute moet een geldig e-mailadres zijn.","validation.ends_with":"Het :attribute moet eindigen met een van de volgende: :values.","validation.enum":"Het geselecteerde :attribute is ongeldig.","validation.exists":"Het geselecteerde :attribute is ongeldig.","validation.extensions":"The :attribute field must have one of the following extensions: :values.","validation.file":"Het :attribute moet een bestand zijn.","validation.filled":"Het veld :attribute moet een waarde bevatten.","validation.gt.array":"Het :attribute moet meer dan :value waardes bevatten.","validation.gt.file":"Het :attribute moet groter zijn dan :value kilobytes.","validation.gt.numeric":"Het :attribute moet groter zijn dan :value.","validation.gt.string":"Het :attribute moet groter zijn dan de :value tekens.","validation.gte.array":"Het :attribute moet :value items of meer hebben.","validation.gte.file":"De :attribute moet groter of gelijk zijn aan :value kilobytes.","validation.gte.numeric":"De :attribute moet groter of gelijk zijn aan :value.","validation.gte.string":"De :attribute moet minimaal :value tekens bevatten.","validation.hex_color":"The :attribute field must be a valid hexadecimal color.","validation.image":"De :attribute moet een afbeelding zijn.","validation.in":"De geselecteerde :attribute is ongeldig.","validation.in_array":"Het :attribute veld bestaat niet in :other.","validation.integer":"Het :attribute moet van het type integer zijn.","validation.ip":"Het :attribute moet een geldig IP-adres zijn.","validation.ipv4":"Het :attribute moet een geldig IPv4 adres zijn.","validation.ipv6":"Het :attribute moet een geldig IPv6 adres zijn.","validation.json":"Het :attribute moet een geldige JSON string zijn.","validation.list":"The :attribute field must be a list.","validation.lowercase":"The :attribute field must be lowercase.","validation.lt.array":"Het :attribute moet minder dan :value items hebben.","validation.lt.file":"Het :attribute moet kleiner zijn dan :value kilobytes.","validation.lt.numeric":"Het :attribute moet kleiner zijn dan :value.","validation.lt.string":"Het :attribute moet groter zijn dan de :value tekens.","validation.lte.array":"Het :attribute mag niet meer dan :value items hebben.","validation.lte.file":"Het :attribute moet kleiner zijn dan of gelijk zijn aan :value kilobytes.","validation.lte.numeric":"Het :attribute moet kleiner zijn dan of gelijk zijn aan :value.","validation.lte.string":"Het :attribute moet kleiner zijn dan of gelijk aan :value tekens.","validation.mac_address":"Het :attribute moet een geldig MAC-adres zijn.","validation.max.array":"Het :attribute mag niet meer dan :max items hebben.","validation.max.file":"Het :attribute mag niet groter zijn dan :max kilobytes.","validation.max.numeric":"Het :attribute mag niet groter zijn dan :max.","validation.max.string":"Het :attribute mag niet groter zijn dan de :max tekens.","validation.max_digits":"Het :attribute mag niet meer dan :max cijfers hebben.","validation.mimes":"Het :attribute moet een bestand zijn van het type: :values.","validation.mimetypes":"Het :attribute moet een bestand zijn van het type: :values.","validation.min.array":"Het :attribute moet ten minste :min items hebben.","validation.min.file":"Het :attribute moet ten minste :min kilobytes zijn.","validation.min.numeric":"Het :attribute moet ten minste :min items hebben.","validation.min.string":"The :attribute field must be at least :min characters.","validation.min_digits":"Het :attribute moet ten minste :min cijfers hebben.","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 field must be a multiple of :value.","validation.not_in":"Het geselecteerde :attribute is ongeldig.","validation.not_regex":"Het formaat van :attribute is ongeldig.","validation.numeric":"Het :attribute moet een cijfer zijn.","validation.password.letters":"Het :attribute moet minimaal één letter bevatten.","validation.password.mixed":"Het :attribute moet ten minste één hoofdletter en één kleine letter bevatten.","validation.password.numbers":"Het :attribute moet ten minste één getal bevatten.","validation.password.symbols":"Het :attribute moet minimaal één symbool bevatten.","validation.password.uncompromised":"Het opgegeven :attribute komt voor in een datalek. Kies een ander :attribute.","validation.present":"Het :attribute veld moet aanwezig zijn.","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":"Het :attribute veld is verboden.","validation.prohibited_if":"Het :attribute veld is verboden als :other is :value.","validation.prohibited_unless":"Het :attribute veld is verboden tenzij :other is in :values.","validation.prohibits":"Het :attribute veld verbiedt de aanwezigheid van :other.","validation.regex":"Het formaat van :attribute is ongeldig.","validation.required":"Het :attribute veld is verplicht.","validation.required_array_keys":"Het :attribute veld moet items bevatten voor: :values.","validation.required_if":"Het veld :attribute is verplicht als :other gelijk is aan :value.","validation.required_if_accepted":"Het :attribute veld is verplicht wanneer :other is geaccepteerd.","validation.required_if_declined":"The :attribute field is required when :other is declined.","validation.required_unless":"Het :attribute veld is verplicht tenzij :other is in :values.","validation.required_with":"Het veld :attribute is verplicht als :values ingesteld staan.","validation.required_with_all":"Het :attribute veld is verplicht als :values aanwezig zijn.","validation.required_without":"Het veld :attribute is verplicht als :values niet ingesteld staan.","validation.required_without_all":"Het :attribute veld is verplicht wanneer geen van de :values aanwezig zijn.","validation.same":"Het :attribute en :other moeten gelijk zijn.","validation.size.array":"Het :attribute moet :size items bevatten.","validation.size.file":"Het :attribute moet ten minste :min kilobytes zijn.","validation.size.numeric":"Het :attribute moet :size zijn.","validation.size.string":"Het :attribute moet zijn :size karakters zijn.","validation.starts_with":"Het :attribute moet beginnen met een van de volgende: :values.","validation.string":"Het :attribute moet een tekenreeks zijn.","validation.timezone":"Het :attribute moet een geldige tijdzone zijn.","validation.unique":"Het :attribute is al in gebruik.","validation.uploaded":"Het uploaden van :attribute is mislukt.","validation.uppercase":"The :attribute field must be uppercase.","validation.url":"Het :attribute moet een geldig URL zijn.","validation.ulid":"The :attribute field must be a valid ULID.","validation.uuid":"Het :attribute moet een geldig UUID zijn.","validation.single":"Bij gebruik van :attribute moet het de enige parameter zijn in de body van de aanvraag","validation.onlyCustomOtpWithUri":"De uri parameter moet alleen of alleen worden verstrekt in combinatie met de 'custom_otp' parameter","validation.IsValidRegex":"The :attribute must be a valid regex pattern.","validation.custom.icon.image":"Ondersteunde formaat zijn jpeg, png, bmp, gif, svg of webp.","validation.custom.qrcode.image":"Ondersteunde formaat zijn jpeg, png, bmp, gif, svg of webp.","validation.custom.uri.regex":"Het :attribute is geen geldige otpauth uri.","validation.custom.otp_type.in":"Het :attribute wordt niet ondersteund.","validation.custom.email.exists":"Geen account gevonden met dit e-mailadres.","validation.custom.email.ComplyWithEmailRestrictionPolicy":"Dit e-mailadres voldoet niet aan het registratie beleid","validation.custom.email.IsValidEmailList":"Alle e-mailadressen moeten geldig zijn en gescheiden worden door een buis","validation.custom.secret.isBase32Encoded":"Het :attribute moet een base32 gecodeerde tekenreeks zijn.","validation.custom.account.regex":"Het :attribute mag leestekens bevatten.","validation.custom.service.regex":"Het :attribute mag geen leestekens bevatten.","validation.custom.label.required":"De uri moet een label hebben.","validation.custom.ids.regex":"ID's moeten met een komma gescheiden, zonder een komma."};export{e as default}; diff --git a/public/build/assets/php_ar-B0Klhp6o.js b/public/build/assets/php_pl-DkAJ05Mp.js similarity index 99% rename from public/build/assets/php_ar-B0Klhp6o.js rename to public/build/assets/php_pl-DkAJ05Mp.js index a32db4a3..06670227 100644 --- a/public/build/assets/php_ar-B0Klhp6o.js +++ b/public/build/assets/php_pl-DkAJ05Mp.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","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.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Are you sure you want to log out?","auth.confirm.revoke_device":"Are you sure you want to revoke this device?","auth.confirm.delete_account":"Are you sure you want to delete your account?","auth.webauthn.security_device":"a security device","auth.webauthn.security_devices":"Security devices","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

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

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

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

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","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.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Are you sure you want to log out?","auth.confirm.revoke_device":"Are you sure you want to revoke this device?","auth.confirm.delete_account":"Are you sure you want to delete your account?","auth.webauthn.security_device":"a security device","auth.webauthn.security_devices":"Security devices","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

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

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

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

\r Attention! The Email & Password form remains available despite this option being enabled, but it will always return an 'Authentication failed' response.`,"auth.webauthn.need_a_security_device_to_enable_options":"Set at least one device to enable the following options","auth.webauthn.options":"Options","auth.forms.name":"Name","auth.forms.login":"Login","auth.forms.webauthn_login":"WebAuthn login","auth.forms.sso_login":"SSO 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.sso_only_form_restricted_to_admin":"Regular users must sign in with SSO. Other methods are for administrators only.","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","auth.sso_providers.unknown":"unknown","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","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.send":"Send","commons.optimize":"Optimize","commons.IP":"IP","commons.browser":"Browser","commons.operating_system_short":"OS","commons.no_entry_yet":"No entry yet","commons.time":"Time","commons.ip_address":"IP Address","commons.device":"Device","commons.one_month":"1 mo.","commons.x_month":":x mos.","commons.one_year":"1 yr.","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 or SSO","errors.unsupported_with_sso_only":"This authentication method is for administrators only. Users must log in with SSO.","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.cannot_demote_the_only_admin":"Cannot demote 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.cannot_detect_qrcode_in_image":"Cannot detect a QR code in the image, try to crop the image","errors.cannot_decode_detected_qrcode":"Cannot decode detected QR code, try to crop or sharpen the image","errors.qrcode_has_invalid_checksum":"QR code has invalid checksum","errors.no_readable_qrcode":"No readable QR code","errors.failed_icon_store_database_toggling":"Migration of icons failed. The setting has been restored to its previous value.","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)","languages.tr":"Türkçe (Turkish)","notifications.hello":"Hello","notifications.hello_user":"Hello :username,","notifications.regards":"Regards","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 :)","notifications.new_device.subject":"Connection to 2FAuth from a new device","notifications.new_device.resume":"A new device has just connected to your 2FAuth account.","notifications.new_device.connection_details":"Here are the details of this connection","notifications.new_device.recommandations":"If this was you, you can ignore this alert. If you suspect any suspicious activity on your account, please change your password.","notifications.failed_login.subject":"Failed login to 2FAuth","notifications.failed_login.resume":"There has been a failed login attempt to your 2FAuth account.","notifications.failed_login.connection_details":"Here are the details of this connection attempt","notifications.failed_login.recommandations":"If this was you, you can ignore this alert. If further attempts fail, you should contact the 2FAuth administrator to review security settings and take action against this attacker.","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.notifications":"Notifications","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.timezone.label":"Time zone","settings.forms.timezone.help":"The time zone applied to all dates and times displayed in the application","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":"Click on a generated password to copy it automatically hides it from the screen","settings.forms.auto_close_timeout.label":'Auto close OTP',"settings.forms.auto_close_timeout.help":"Automatically hide on-screen password after a timeout. This avoids unnecessary requests for fresh passwords if you forget to close the password view.","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.sort_case_sensitive.label":"Sort case sensitive","settings.forms.sort_case_sensitive.help":"When invoked, force the Sort function to sort accounts on a case-sensitive basis","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 account icons 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.auto_save_qrcoded_account.label":"Auto-save accounts","settings.forms.auto_save_qrcoded_account.help":"New accounts are automatically registered after scanning or uploading a QR code, no need to click a Save button","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.notify_on_new_auth_device.label":"On new device","settings.forms.notify_on_new_auth_device.help":"Get an email when a new device connects to your 2FAuth account for the first time","settings.forms.notify_on_failed_login.label":"On failed login","settings.forms.notify_on_failed_login.help":"Get an email each time an attempt to connect to your 2FAuth account fails","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","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.2_minutes":"After 2 minutes","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","titles.admin.logs.access":"Access log","twofaccounts.service":"Service","twofaccounts.account":"Account","twofaccounts.icon":"Icon","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_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","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.group.label":"Group","twofaccounts.forms.group.help":"The group to which the account is to be assigned","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 field must be accepted.","validation.accepted_if":"The :attribute field must be accepted when :other is :value.","validation.active_url":"The :attribute field must be a valid URL.","validation.after":"The :attribute field must be a date after :date.","validation.after_or_equal":"The :attribute field must be a date after or equal to :date.","validation.alpha":"The :attribute field must only contain letters.","validation.alpha_dash":"The :attribute field must only contain letters, numbers, dashes, and underscores.","validation.alpha_num":"The :attribute field must only contain letters and numbers.","validation.array":"The :attribute field must be an array.","validation.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","validation.before":"The :attribute field must be a date before :date.","validation.before_or_equal":"The :attribute field must be a date before or equal to :date.","validation.between.array":"The :attribute field must have between :min and :max items.","validation.between.file":"The :attribute field must be between :min and :max kilobytes.","validation.between.numeric":"The :attribute field must be between :min and :max.","validation.between.string":"The :attribute field 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 field confirmation does not match.","validation.contains":"The :attribute field is missing a required value.","validation.current_password":"The password is incorrect.","validation.date":"The :attribute field must be a valid date.","validation.date_equals":"The :attribute field must be a date equal to :date.","validation.date_format":"The :attribute field must match the format :format.","validation.decimal":"The :attribute field must have :decimal decimal places.","validation.declined":"The :attribute field must be declined.","validation.declined_if":"The :attribute field must be declined when :other is :value.","validation.different":"The :attribute field and :other must be different.","validation.digits":"The :attribute field must be :digits digits.","validation.digits_between":"The :attribute field must be between :min and :max digits.","validation.dimensions":"The :attribute field has invalid image dimensions.","validation.distinct":"The :attribute field has a duplicate value.","validation.doesnt_end_with":"The :attribute field must not end with one of the following: :values.","validation.doesnt_start_with":"The :attribute field must not start with one of the following: :values.","validation.email":"The :attribute field must be a valid email address.","validation.ends_with":"The :attribute field 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 field must be a file.","validation.filled":"The :attribute field must have a value.","validation.gt.array":"The :attribute field must have more than :value items.","validation.gt.file":"The :attribute field must be greater than :value kilobytes.","validation.gt.numeric":"The :attribute field must be greater than :value.","validation.gt.string":"The :attribute field must be greater than :value characters.","validation.gte.array":"The :attribute field must have :value items or more.","validation.gte.file":"The :attribute field must be greater than or equal to :value kilobytes.","validation.gte.numeric":"The :attribute field must be greater than or equal to :value.","validation.gte.string":"The :attribute field 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 field must be an image.","validation.in":"The selected :attribute is invalid.","validation.in_array":"The :attribute field must exist in :other.","validation.integer":"The :attribute field must be an integer.","validation.ip":"The :attribute field must be a valid IP address.","validation.ipv4":"The :attribute field must be a valid IPv4 address.","validation.ipv6":"The :attribute field must be a valid IPv6 address.","validation.json":"The :attribute field must be a valid JSON string.","validation.list":"The :attribute field must be a list.","validation.lowercase":"The :attribute field must be lowercase.","validation.lt.array":"The :attribute field must have less than :value items.","validation.lt.file":"The :attribute field must be less than :value kilobytes.","validation.lt.numeric":"The :attribute field must be less than :value.","validation.lt.string":"The :attribute field must be less than :value characters.","validation.lte.array":"The :attribute field must not have more than :value items.","validation.lte.file":"The :attribute field must be less than or equal to :value kilobytes.","validation.lte.numeric":"The :attribute field must be less than or equal to :value.","validation.lte.string":"The :attribute field must be less than or equal to :value characters.","validation.mac_address":"The :attribute field must be a valid MAC address.","validation.max.array":"The :attribute field must not have more than :max items.","validation.max.file":"The :attribute field must not be greater than :max kilobytes.","validation.max.numeric":"The :attribute field must not be greater than :max.","validation.max.string":"The :attribute field must not be greater than :max characters.","validation.max_digits":"The :attribute field must not have more than :max digits.","validation.mimes":"The :attribute field must be a file of type: :values.","validation.mimetypes":"The :attribute field must be a file of type: :values.","validation.min.array":"The :attribute field must have at least :min items.","validation.min.file":"The :attribute field must be at least :min kilobytes.","validation.min.numeric":"The :attribute field must be at least :min.","validation.min.string":"The :attribute field must be at least :min characters.","validation.min_digits":"The :attribute field 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 field must be a multiple of :value.","validation.not_in":"The selected :attribute is invalid.","validation.not_regex":"The :attribute field format is invalid.","validation.numeric":"The :attribute field must be a number.","validation.password.letters":"The :attribute field must contain at least one letter.","validation.password.mixed":"The :attribute field must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The :attribute field must contain at least one number.","validation.password.symbols":"The :attribute field 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 field 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_if_declined":"The :attribute field is required when :other is declined.","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 field must match :other.","validation.size.array":"The :attribute field must contain :size items.","validation.size.file":"The :attribute field must be :size kilobytes.","validation.size.numeric":"The :attribute field must be :size.","validation.size.string":"The :attribute field must be :size characters.","validation.starts_with":"The :attribute field must start with one of the following: :values.","validation.string":"The :attribute field must be a string.","validation.timezone":"The :attribute field 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 field must be a valid URL.","validation.ulid":"The :attribute field must be a valid ULID.","validation.uuid":"The :attribute field 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.IsValidRegex":"The :attribute field must be a valid regex pattern.","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 field is not a valid otpauth uri.","validation.custom.otp_type.in":"The :attribute field 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 field must be a base32 encoded string.","validation.custom.account.regex":"The :attribute field must not contain colon.","validation.custom.service.regex":"The :attribute field 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_pt-DucI-Yi_.js b/public/build/assets/php_pt-DHeV0kB3.js similarity index 99% rename from public/build/assets/php_pt-DucI-Yi_.js rename to public/build/assets/php_pt-DHeV0kB3.js index e07f69c6..d5807479 100644 --- a/public/build/assets/php_pt-DucI-Yi_.js +++ b/public/build/assets/php_pt-DHeV0kB3.js @@ -1,19 +1,19 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Administrador","admin.admin_panel":"Administração","admin.app_setup":"Configuração da Aplicação","admin.auth":"Atutenticação","admin.registrations":"Registos","admin.users":"Usuários","admin.users_legend":"Gerenciar usuários registrados ou criar em sua instância.","admin.admin_settings":"Configurações de administração","admin.create_new_user":"Criar usuário","admin.new_user":"Novo usuário","admin.search_user_placeholder":"Nome de usuário, e-mail...","admin.quick_filters_colons":"Filtro rápido:","admin.user_created":"usuário criado com sucesso","admin.confirm.delete_user":"Tem certeza de que deseja excluir este usuário? Não há a opção de 'desfazer'.","admin.confirm.request_password_reset":"Você tem certeza que deseja redefinir a senha deste usuário?","admin.confirm.purge_password_reset_request":"Tem certeza de que deseja revogar a solicitação anterior?","admin.confirm.delete_account":"Tem certeza de que deseja excluir este usuário?","admin.confirm.edit_own_account":"Esta é a sua própria conta. Tem certeza?","admin.confirm.change_admin_role":"Isto terá sérios impactos nas permissões deste usuário. Tem certeza?","admin.confirm.demote_own_account":"Você não será mais um administrador. Deseja realmente continuar?","admin.logs":"Registros","admin.administration_legend":"As seguintes configurações são globais e aplicam-se a todos os usuários.","admin.user_management":"Gerenciamento de usuários","admin.oauth_provider":"Provedor OAuth","admin.account_bound_to_x_via_oauth":"Esta conta está vinculada a uma conta :provedor via OAuth","admin.last_seen_on_date":"Visto por último :date","admin.registered_on_date":"Registrado em :date","admin.updated_on_date":"Atualizado em :date","admin.access":"Acesso","admin.password_requested_on_t":"Uma solicitação de redefinição de senha existe para este usuário (solicitação enviada em :datetime), o que significa que o usuário ainda não alterou sua senha, mas o link que recebeu ainda é válido. Esta pode ser uma requisição do próprio usuário ou de um administrador.","admin.password_request_expired":"Uma solicitação de redefinição de senha existe para este usuário, mas expirou, o que significa que o usuário não alterou sua senha a tempo. Esta pode ser uma requisição do próprio usuário ou de um administrador.","admin.resend_email":"Reenviar e-mail","admin.resend_email_title":"Reenviar um e-mail de redefinição de senha ao usuário","admin.resend_email_help":"Use Reenviar e-mail para enviar um novo e-mail de redefinição de senha para o usuário para ele definir uma nova senha. Isso deixará sua senha atual como está e qualquer pedido anterior será revogado.","admin.reset_password":"Redefinir senha","admin.reset_password_help":"Use Redefinir senha para forçar uma redefinição de senha (isso irá definir uma senha temporária) antes de enviar um e-mail de redefinição de senha para o usuário para que eles possam definir uma nova senha. Qualquer solicitação anterior será revogada.","admin.reset_password_title":"Redefinir a senha do usuário","admin.password_successfully_reset":"Senha redefinida com sucesso","admin.user_has_x_active_pat":":count token(s) ativo(s)","admin.user_has_x_security_devices":":count dispositivo(s) de segurança (chaves)","admin.revoke_all_pat_for_user":"Revogar o token de todos os usuários","admin.revoke_all_devices_for_user":"Revogar os dispositivos de segurança de todos os usuários","admin.danger_zone":"Zona de perigo","admin.delete_this_user_legend":"A conta de usuário será excluída assim como todos os seus dados de 2FA.","admin.this_is_not_soft_delete":"Não se trata de uma exclusão suave, não se pode retroceder.","admin.delete_this_user":"Excluir este usuário","admin.user_role_updated":"Função do usuário atualizada","admin.pats_succesfully_revoked":"PATs do usuário revogado com sucesso","admin.security_devices_succesfully_revoked":"Dispositivos de segurança do usuário revogado com sucesso","admin.variables":"Variáveis","admin.cache_cleared":"Cache apagado","admin.cache_optimized":"Cache otimizado","admin.check_now":"Verificar agora","admin.view_on_github":"Ver no GitHub","admin.x_is_available":":version está disponível","admin.successful_login_on":'Login bem-sucedido em :login_at',"admin.successful_logout_on":'Logout bem-sucedido em :login_at',"admin.failed_login_on":'Falha no login em :login_at',"admin.viewed_on":'Visualizado em :login_at',"admin.last_accesses":"Últimos acessos","admin.see_full_log":"Ver registro completo","admin.browser_on_platform":":browser em :platform","admin.access_log_has_more_entries":"O log de acesso contém mais entradas.","admin.access_log_legend_for_user":"Registro de acesso completo para o usuário :username","admin.show_last_month_log":"Mostrar entradas do último mês","admin.show_three_months_log":"Mostrar entradas dos últimos 3 meses","admin.show_six_months_log":"Mostrar entradas dos últimos 6 meses","admin.show_one_year_log":"Mostrar entradas do último ano","admin.sort_by_date_asc":"Mostrar o mais antigo primeiro","admin.sort_by_date_desc":"Mostrar o mais recente primeiro","admin.single_sign_on":"Sistema de login único","admin.database":"Banco de Dados","admin.file_system":"Sistema de arquivo","admin.storage":"Armazenamento de dados","admin.forms.use_encryption.label":"Proteja dados confidenciais","admin.forms.use_encryption.help":"Dados confidenciais, segredos e e-mails 2FA são armazenados criptografados no banco de dados. Certifique-se de salvar o valor APP_KEY do seu arquivo .env (ou do arquivo inteiro), pois ele serve como chave de criptografia. Não há como descriptografar dados criptografados sem essa chave.","admin.forms.restrict_registration.label":"Restringir registro","admin.forms.restrict_registration.help":"Tornar o registro disponível apenas para um intervalo limitado de endereços de e-mail. Ambas as regras podem ser usadas simultaneamente. Isso não tem efeito sobre o registro via SSO.","admin.forms.restrict_list.label":"Listas de filtros","admin.forms.restrict_list.help":'Os endereços de e-mail nesta lista serão autorizados para registro. Endereços separados com o caractere "|"',"admin.forms.restrict_rule.label":"Filtrando regras","admin.forms.restrict_rule.help":"E-mails que correspondem a esta expressão regular terá permissão para registrar","admin.forms.disable_registration.label":"Desabilitar registo","admin.forms.disable_registration.help":"Impedir novos registros. A menos que sobrescrito (veja abaixo), isto afeta SSO também, então novos usuários não serão capazes de entrar via SSO","admin.forms.enable_sso.label":"Habilitar sistema de login únicio","admin.forms.enable_sso.help":"Permitir que os visitantes autentiquem usando um ID externo por meio do esquema de logon SSO","admin.forms.use_sso_only.label":"Usar somente sistema de login único","admin.forms.use_sso_only.help":"Faça do SSO o único método disponível para fazer login no 2FAuth. O login por senha e o Webauth são então desativados para usuários comuns. Os administradores não são afetados por essa restrição.","admin.forms.keep_sso_registration_enabled.label":"Mantenha o registro SSO ativado","admin.forms.keep_sso_registration_enabled.help":"Permite que novos usuários façam login pela primeira vez via SSO enquanto os registros estão desativados","admin.forms.is_admin.label":"É administrador","admin.forms.is_admin.help":"Concede direitos de administrador ao usuário. Os administradores podem gerenciar o aplicativo, ou seja, modificar suas configurações e gerenciar seus usuários. Um administrador não tem como visualizar os dados 2FA de outro usuário ou gerar códigos para eles.","admin.forms.test_email.label":"Teste de configuração de e-mail","admin.forms.test_email.help":"Envie um e-mail de teste para verificar a capacidade da sua instância de usar e-mail. É importante ter uma configuração funcional, caso contrário os usuários não poderão solicitar redefinição de senha, por exemplo.","admin.forms.test_email.email_will_be_send_to_x":'O e-mail será enviado para :email',"admin.forms.health_endpoint.label":"Status do endpoint","admin.forms.health_endpoint.help":"URL que você pode verificar o status de saúde desta instância do 2FAuth. A URL pode ser usada para configurar um **HEALTHCHECK** no Docker ou uma **Sondagem de logs ao vivo de HTTPS** no Kubernetes.","admin.forms.cache_management.label":"Gerenciamento de Cache","admin.forms.cache_management.help":"Às vezes, o cache precisa ser limpo, por exemplo, após uma alteração de variáveis de ambiente ou de uma atualização. Você pode fazer isso a partir daqui.","admin.forms.store_icon_to_database.label":"Armazenar ícones no banco de dados","admin.forms.store_icon_to_database.help":`Ícones enviados são registrados no banco de dados além de serem armazenados no sistema de arquivos, que então é usado apenas como cache. Isso facilita muito a criação de um backup do 2FAuth, pois apenas o banco de dados precisa ser incluído no backup. - -No entanto, cuidado, pois isso pode ter algumas desvantagens: o tamanho do banco de dados pode aumentar significativamente se a instância hospedar muitos ícones grandes. Também pode afetar o desempenho da aplicação, pois o sistema de arquivos é acessado com mais frequência para garantir a sincronização com o banco de dados.`,"auth.failed":"Essas credenciais não correspondem aos nossos registros.","auth.password":"A senha inserida está incorreta.","auth.throttle":"Muitas tentativas de login. Por favor, tente novamente em :seconds segundos.","auth.sign_out":"Encerrar Sessão","auth.sign_in":"Entrar","auth.sign_in_using":"Entrar usando","auth.if_administrator":"Administrador?","auth.sign_in_here":"Você pode fazer entrar sem SSO.","auth.or_continue_with":"Você também pode continuar com:","auth.password_login_and_webauthn_are_disabled":"O login com senha e o WebAuthn estão desativados.","auth.sign_in_using_sso":"Escolha um provedor de SSO para fazer login:","auth.no_provider":"Não existe provedor","auth.no_sso_provider_or_provider_is_missing":"O provedor está faltando?","auth.see_how_to_enable_sso":"Veja como habilitar um provedor","auth.sign_in_using_security_device":"Fazer login usando um dispositivo de segurança","auth.login_and_password":"usuário e senha","auth.register":"Cadastro","auth.welcome_to_2fauth":"Bem-vindo(a) ao 2FAuth","auth.autolock_triggered":"Bloqueio automático acionado","auth.autolock_triggered_punchline":"Bloqueio automático acionado, você foi desconectado","auth.already_authenticated":"Já autenticado, por favor, saia primeiro","auth.authentication":"Autenticação","auth.maybe_later":"Farei isso depois","auth.user_account_controlled_by_proxy":"Conta do usuário disponibilizada por um proxy de autenticação.
Gerencie a conta no nível de proxy.","auth.auth_handled_by_proxy":"Autenticação manipulada por um proxy reverso, as configurações abaixo estão desativadas.
Gerenciar autenticação no nível do proxy.","auth.sso_only_x_settings_are_disabled":"A autenticação está restrita apenas ao SSO, :auth_method está desativado.","auth.confirm.logout":"Tem certeza que deseja sair?","auth.confirm.revoke_device":"Tem certeza de que deseja excluir este dispositivo?","auth.confirm.delete_account":"Tem certeza que deseja excluir sua conta?","auth.webauthn.security_device":"um dispositivo de segurança","auth.webauthn.security_devices":"Dispositivos de segurança","auth.webauthn.security_devices_legend":"Os dispositivos de autenticação que você pode usar para entrar no 2FAuth, como chaves de segurança (ex: Yubikey) ou smartphones com recursos biométricos (ex: Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`Você pode aumentar a segurança da sua conta 2FAuth ativando a autenticação WebAuthn.

- WebAuthn permite que você use dispositivos confiáveis (como Yubikeys ou smartphones com capacidade biométrica) para entrar de forma rápida e segura.`,"auth.webauthn.use_security_device_to_sign_in":"Prepare-se para autenticar usando (um dos) seus dispositivos de segurança. Conecte sua chave, remova a máscara de rosto ou luvas, etc.","auth.webauthn.lost_your_device":"Perdeu seu dispositivo?","auth.webauthn.recover_your_account":"Recupere sua conta","auth.webauthn.account_recovery":"Recuperar conta","auth.webauthn.recovery_punchline":"2FAuth enviará um link de recuperação para este endereço de e-mail. Clique no link no e-mail recebido e siga as instruções.

Certifique-se de abrir o e-mail em um dispositivo que você possui.","auth.webauthn.send_recovery_link":"Enviar link de recuperação","auth.webauthn.account_recovery_email_sent":"E-mail de recuperação da conta enviado!","auth.webauthn.disable_all_security_devices":"Desativar todos os dispositivos de segurança","auth.webauthn.disable_all_security_devices_help":"Todos os seus dispositivos de segurança serão revogados. Use esta opção se você perdeu um ou sua segurança foi comprometida.","auth.webauthn.register_a_new_device":"Registrar um novo dispositivo","auth.webauthn.register_a_device":"Registra um dispositivo","auth.webauthn.device_successfully_registered":"Dispositivo registrado com sucesso","auth.webauthn.device_revoked":"Dispositivo revogado com sucesso","auth.webauthn.revoking_a_device_is_permanent":"Revogar um dispositivo é permanente","auth.webauthn.recover_account_instructions":"Para recuperar sua conta, o 2FAuth redefine algumas configurações de Webauthn para que possa entrar usando seu e-mail e senha.","auth.webauthn.invalid_recovery_token":"Token de recuperação inválido","auth.webauthn.webauthn_login_disabled":"Login via Webauthn desativado","auth.webauthn.invalid_reset_token":"Esse token de redefinição é válido.","auth.webauthn.rename_device":"Renomear dispositivo","auth.webauthn.my_device":"Meu dispositivo","auth.webauthn.unknown_device":"Dispositivo desconhecido","auth.webauthn.use_webauthn_only.label":"Usar somente o WebAuthn","auth.webauthn.use_webauthn_only.help":`Faça do WebAuthn o único método autorizado para entrar em sua conta 2FAuth. Essa é a configuração recomendada para aproveitar a segurança reforçada da WebAuthn.

- no caso de dispositivo perdido, você poderá recuperar sua conta redefinindo esta opção e entrando usando seu e-mail e senha.

- Atenção! O formulário de e-mail e senha permanece disponível apesar de esta opção estar ativada, mas ele sempre retornará uma resposta 'Autenticação falhou'.`,"auth.webauthn.need_a_security_device_to_enable_options":"Defina pelo menos um dispositivo para ativar as seguintes opções","auth.webauthn.options":"Opções","auth.forms.name":"Nome","auth.forms.login":"Entrar","auth.forms.webauthn_login":"Entrar com WebAuthn","auth.forms.sso_login":"Login com SSO","auth.forms.email":"E-mail","auth.forms.password":"Senha","auth.forms.reveal_password":"Mostrar senha","auth.forms.hide_password":"Ocultar Senha","auth.forms.confirm_password":"Confirmar senha","auth.forms.new_password":"Nova senha","auth.forms.confirm_new_password":"Confirmar nova senha","auth.forms.dont_have_account_yet":"Ainda não tem uma conta?","auth.forms.already_register":"Já possui cadastro?","auth.forms.authentication_failed":"Falha na autenticação","auth.forms.forgot_your_password":"Esqueceu sua senha?","auth.forms.request_password_reset":"Redefinir","auth.forms.reset_your_password":"Redefinir sua senha","auth.forms.reset_password":"Redefinir senha","auth.forms.disabled_in_demo":"Recurso desativado no modo Demonstração","auth.forms.sso_only_form_restricted_to_admin":"Usuários comuns devem fazer login com SSO. Outros métodos são apenas para administradores.","auth.forms.current_password.label":"Senha atual","auth.forms.current_password.help":"Preencha com sua senha atual para confirmar que é você","auth.forms.change_password":"Alterar senha","auth.forms.send_password_reset_link":"Enviar link para redefinir senha","auth.forms.password_successfully_reset":"Senha redefinida com sucesso","auth.forms.edit_account":"Editar conta","auth.forms.profile_saved":"Perfil atualizado com sucesso!","auth.forms.welcome_to_demo_app_use_those_credentials":"Bem-vindo(a) à demonstração 2FAuth.

Você pode entrar utilizando o endereço de e-mail demo@2fauth.app e a senha demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Bem-vindo(a) à instância de teste 2FAuth.

Use o endereço de e-mail testing@2fauth.app e senha password","auth.forms.register_punchline":"Bem-vindo(a) ao 2FAuth.
Você precisa de uma conta para ir mais longe, por favor, cadastre-se.","auth.forms.reset_punchline":"2FAuth enviará um link de redefinição de senha para este endereço. Clique no link no e-mail recebido para definir uma nova senha.","auth.forms.name_this_device":"Nomear esse dispositivo","auth.forms.delete_account":"Excluir conta","auth.forms.delete_your_account":"Excluir sua conta","auth.forms.delete_your_account_and_reset_all_data":"Sua conta de usuário será excluída, assim como todos os seus dados de 2FA. Não há volta.","auth.forms.reset_your_password_to_delete_your_account":"Se você sempre usou o SSO para entrar, saia e use o recurso de redefinição. Ao receber uma senha, preencher esse formulário.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Excluir a sua conta 2FAuth não tem impacto na sua conta SSO externa.","auth.forms.user_account_successfully_deleted":"Conta excluída com sucesso","auth.forms.has_lower_case":"Tem minúsculas","auth.forms.has_upper_case":"Tem maiúsculas","auth.forms.has_special_char":"Tem caractere especial","auth.forms.has_number":"Tem número","auth.forms.is_long_enough":"Mínimo 8 caracteres","auth.forms.mandatory_rules":"Obrigatório","auth.forms.optional_rules_you_should_follow":"Recomendação (alta)","auth.forms.caps_lock_is_on":"Caps Lock está ativado","auth.sso_providers.unknown":"desconhecido","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","commons.cancel":"Cancelar","commons.update":"Atualizar","commons.copy":"Copiar","commons.copy_to_clipboard":"Copiar para área de transferência","commons.copied_to_clipboard":"Copiado para a área de transferência","commons.profile":"Perfil","commons.edit":"Editar","commons.delete":"Excluir","commons.disable":"Desativar","commons.enable":"Habilitar","commons.create":"Criar","commons.save":"Salvar","commons.close":"Fechar","commons.clear":"Apagar","commons.clear_search":"Limpar pesquisa","commons.demo_do_not_post_sensitive_data":"Este é um aplicativo de demonstração, não poste nenhum dado confidencial","commons.testing_do_not_post_sensitive_data":"Este é um aplicativo de teste, não postar nenhum dado confidencial","commons.x_selected":"[count] selecionado(s)","commons.name":"Nome","commons.manage":"Gerenciar","commons.done":"Concluir","commons.new":"Novo","commons.back":"Voltar","commons.move":"Mover","commons.export":"Exportar","commons.all":"Todos","commons.check_all":"Todos","commons.select_all":"Selecionar tudo","commons.clear_selection":"Limpar seleção","commons.sort_descending":"Ordenar decrescente","commons.sort_ascending":"Ordenar crescente","commons.rename":"Renomear","commons.new_name":"Novo nome","commons.options":"Opções","commons.reload":"Recarregar","commons.refresh":"Atualizar","commons.data_refreshed_to_reflect_server_changes":"Os dados foram atualizados para refletir as alterações no lado do servidor","commons.generate":"Gerar","commons.generating_otp":"Geração do OTP","commons.open_in_browser":"Abrir no navegador","commons.continue":"Continuar","commons.discard":"Descartar","commons.about":"Sobre","commons.usefull_links":"Links úteis","commons.environment":"Ambiente","commons.credits":"Créditos","commons.2fauth_teaser":"Um aplicativo web para gerenciar suas contas de Autenticação em Duas Etapas (2FA) e gerar códigos de segurança","commons.made_with":"Feito com","commons.ui_icons_by":"Ícones de UI por","commons.logos_by":"Logotipos por","commons.search":"Buscar","commons.resources":"Recursos","commons.check_for_update":"Verificar por atualizações","commons.check_for_update_help":"Verificar automaticamente (uma vez por semana) e avisar quando uma nova versão do 2FAuth for publicada no Github","commons.you_are_up_to_date":"Esta instância está atualizada","commons.2fauth_description":"Um aplicativo web para gerenciar suas contas de Autenticação em Duas Etapas (2FA) e gerar códigos de segurança","commons.image_of_qrcode_to_scan":"Imagem de um QR code para escanear","commons.file":"Arquivo","commons.or":"OU","commons.close_the_x_page":"Feche a página :pagetitle","commons.submit":"Enviar","commons.default":"Padrão","commons.back_to_home":"Voltar à página inicial","commons.nothing":"nada","commons.no_result":"Nenhum resultado","commons.information":"Informações","commons.send":"Enviar","commons.optimize":"Otimizar","commons.IP":"IP","commons.browser":"Navegador","commons.operating_system_short":"Sistema Operacional","commons.no_entry_yet":"Nenhuma entrada ainda","commons.time":"Hora","commons.ip_address":"Endereço IP","commons.device":"Dispositivo","commons.one_month":"1 mês.","commons.x_month":":x meses.","commons.one_year":"1 ano.","errors.resource_not_found":"Recurso não encontrado","errors.error_occured":"Ocorreu um erro:","errors.refresh":"Atualizar","errors.no_valid_otp":"Nenhum OTP válido neste código QR","errors.something_wrong_with_server":"Algo está errado com o seu servidor","errors.Unable_to_decrypt_uri":"Não foi possível descriptografar a uri","errors.not_a_supported_otp_type":"Este formato OTP não é suportado no momento","errors.cannot_create_otp_without_secret":"Não é possível criar um OTP sem um segredo","errors.data_of_qrcode_is_not_valid_URI":"Os dados deste código QR não são um URI de Autenticação OTP válido. O código QR contém:","errors.wrong_current_password":"Senha atual incorreta, nada foi alterado","errors.error_during_encryption":"Falha na criptografia, seu banco de dados permanece desprotegido.","errors.error_during_decryption":"Falha na descriptografia, seu banco de dados ainda está protegido. Isso é causado principalmente por um problema de integridade de dados criptografados para uma ou mais contas.","errors.qrcode_cannot_be_read":"Este código QR é ilegível","errors.too_many_ids":"muitos IDs foram incluídos no parâmetro de consulta, é permitido o máximo 100","errors.delete_user_setting_only":"Apenas configuração criada pelo usuário pode ser excluída","errors.indecipherable":"*indecifrável*","errors.cannot_decipher_secret":"O segredo não pode ser decifrado. Isso é causado principalmente por um APP_KEY errado definido no arquivo .env de configuração do 2Fauth, ou de dados corrompidos armazenados na base de dados.","errors.https_required":"Contexto HTTPS requerido","errors.browser_does_not_support_webauthn":"Seu dispositivo não suporta webauth. Tente novamente mais tarde usando um navegador mais moderno","errors.aborted_by_user":"Cancelado pelo usuário","errors.security_device_already_registered":"Dispositivo já registrado","errors.not_allowed_operation":"Operação não permitida","errors.no_authenticator_support_specified_algorithms":"Nenhum autenticador suporta algoritmos especificados","errors.authenticator_missing_discoverable_credential_support":"O autenticador não possui suporte de credenciais detectável","errors.authenticator_missing_user_verification_support":"Suporte à verificação de usuário faltando na autenticação","errors.unknown_error":"Erro desconhecido","errors.security_error_check_rpid":"Erro de segurança
Verifique variável WEBAUTHN_ID em .env","errors.2fauth_has_not_a_valid_domain":"O domínio de 2FAuth não é um domínio válido","errors.user_id_not_between_1_64":"O ID do usuário não estava entre 1 e 64 caracteres","errors.no_entry_was_of_type_public_key":'Nenhuma entrada é do tipo "chave pública"',"errors.unsupported_with_reverseproxy":"Não aplicável ao usar um proxy de autenticação ou SSO.","errors.unsupported_with_sso_only":"Este método de autenticação é apenas para administradores. Usuários devem fazer login com SSO.","errors.user_deletion_failed":"A exclusão da conta do usuário falhou, nenhum dado foi excluído","errors.auth_proxy_failed":"Falha na autenticação do proxy","errors.auth_proxy_failed_legend":"2Fauth está configurado para ser executado atrás de um proxy autenticado, mas seu proxy não retorna o cabeçalho esperado. Verifique sua configuração e tente novamente.","errors.invalid_x_migration":"Dados de :appname inválidos ou ilegíveis","errors.invalid_2fa_data":"Dados 2FA inválidos","errors.unsupported_migration":"Os dados não correspondem a qualquer formato suportado","errors.unsupported_otp_type":"Tipo de OTP não suportado","errors.encrypted_migration":"Inlegível, os dados parecem criptografados","errors.no_logo_found_for_x":"Nenhum logotipo disponível para :service","errors.file_upload_failed":"Falha no upload do arquivo","errors.unauthorized":"Não autorizado","errors.unauthorized_legend":"Você não tem permissão para visualizar este recurso ou para executar esta ação","errors.cannot_delete_the_only_admin":"Não é possível excluir a única conta de administrador","errors.cannot_demote_the_only_admin":"Não é possível rebaixar a única conta de administrador","errors.error_during_data_fetching":"💀 Algo deu errado durante a obtenção de dados","errors.check_failed_try_later":"Falha na busca, tente novamente mais tarde","errors.sso_disabled":"SSO está desativado","errors.sso_bad_provider_setup":"Este provedor SSO não está totalmente configurado no seu arquivo .env","errors.sso_failed":"Autenticação via SSO rejeitada","errors.sso_no_register":"Os registros estão desativados","errors.sso_email_already_used":"Uma conta de usuário com o mesmo endereço de e-mail já existe, mas não corresponde ao seu ID de conta externa. Não use SSO se você já estiver registrado no 2FAuth com este e-mail.","errors.account_managed_by_external_provider":"Conta gerenciada por um provedor externo","errors.data_cannot_be_refreshed_from_server":"Os dados não podem ser atualizados a partir do servidor","errors.no_pwd_reset_for_this_user_type":"Redefinição de senha indisponível para este usuário","errors.cannot_detect_qrcode_in_image":"Não é possível detectar um código QR na imagem, tente recortar a imagem","errors.cannot_decode_detected_qrcode":"Não é possível decodificar o código QR detectado, tentar cortar ou desembaçar a imagem","errors.qrcode_has_invalid_checksum":"QR code possui checksum inválido","errors.no_readable_qrcode":"Nenhum código QR legível","errors.failed_icon_store_database_toggling":"Houve um erro ao migrar os ícones. A configuração foi restaurada para o valor anterior.","groups.groups":"Grupos","groups.create_group":"Criar um novo grupo","groups.show_group_selector":"Mostrar seletor de grupo","groups.hide_group_selector":"Ocultar seletor de grupo","groups.select_accounts_to_show":"Selecionar grupo de contas para mostrar","groups.x_accounts":":count contas","groups.manage_groups":"Gerenciar grupos","groups.active_group":"Ativar grupo","groups.manage_groups_legend":'Você pode criar grupos para organizar suas contas da forma que quiser. Todas as contas permanecem visíveis no pseudo grupo chamado "Todos", independentemente do grupo ao qual pertencem.',"groups.deleting_group_does_not_delete_accounts":"Excluir um grupo não exclui contas","groups.move_selected_to":"Mover selecionados para","groups.move_selected_to_group":"Mover selecionados para um grupo","groups.no_group":"Sem grupo","groups.change_group":"Mudar grupo","groups.group_successfully_created":"Grupo criado com sucesso","groups.group_name_saved":"Nome do grupo salvo","groups.group_successfully_deleted":"Grupo excluído com sucesso","groups.forms.new_group":"Novo grupo","groups.forms.new_name":"Novo nome","groups.forms.rename_group":"Renomear grupo","groups.confirm.delete":"Tem certeza de que deseja excluir esse grupo?","languages.browser_preference":"Padrão do navegador","languages.en":"English (Inglês)","languages.fr":"Français (Francês)","languages.de":"Deutsch (Alemão)","languages.es":"Español (Espanhol)","languages.zh":"简体中文 (Chinês Simplificado)","languages.ru":"Русский (Russo)","languages.bg":"Български (Búlgaro)","languages.ja":"日本語 (Japonês)","languages.hi":"हिंदी (Indiano)","languages.tr":"Türkçe (Turco)","notifications.hello":"Olá","notifications.hello_user":"Olá :username,","notifications.regards":"Atenciosamente","notifications.test_email_settings.subject":"E-mail de teste 2FAuth","notifications.test_email_settings.reason":"Você está recebendo este e-mail porque você solicitou um e-mail de teste para validar as configurações de e-mail da sua instância 2FAuth.","notifications.test_email_settings.success":"Boas notícias, funcionou :)","notifications.new_device.subject":"Conexão com o 2FAuth de um novo dispositivo","notifications.new_device.resume":"Um novo dispositivo acabou de se conectar à sua conta 2FAuth.","notifications.new_device.connection_details":"Aqui estão os detalhes desta conexão","notifications.new_device.recommandations":"Se foi você, você pode ignorar este alerta. Se suspeitar de qualquer atividade suspeita em sua conta, altere sua senha imediatamente.","notifications.failed_login.subject":"Falha no login para 2FAuth","notifications.failed_login.resume":"Houve uma tentativa de login falhada em sua conta 2FAuth.","notifications.failed_login.connection_details":"Aqui estão os detalhes desta tentativa de conexão","notifications.failed_login.recommandations":"Se foi você, pode ignorar este alerta. Se outras tentativas falharem, você deve entrar em contato com o administrador do 2FAuth para rever as configurações de segurança e tomar ações contra este atacante.","pagination.previous":"« Anterior","pagination.next":"Próximo »","passwords.reset":"Sua senha foi redefinida!","passwords.sent":"Enviamos o link de redefinição de senha por e-mail!","passwords.throttled":"Por favor aguarde antes de tentar novamente.","passwords.token":"Este token de redefinição de senha é inválido.","passwords.user":"Não foi encontrado nenhum usuário com este endereço de e-mail.","passwords.password":"A senha deve conter pelo menos oito caracteres e ser igual à confirmação.","settings.settings":"Configurações","settings.preferences":"Preferências","settings.account":"Conta","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Tokens","settings.options":"Opções","settings.user_preferences":"Preferências do usuário","settings.admin_settings":"Configurações de administração","settings.confirm.revoke":"Tem certeza de que deseja revogar este token?","settings.you_are_administrator":"Você não é um administrador","settings.account_linked_to_sso_x_provider":"Você entrou via SSO usando a sua conta :provid. Sua informação não pode ser alterada aqui mas em :provider.","settings.general":"Geral","settings.security":"Segurança","settings.notifications":"Notificações","settings.profile":"Perfil","settings.change_password":"Mudar senha","settings.personal_access_tokens":"Tokens de acesso pessoal","settings.token_legend":"Tokens de Acesso Pessoal permitem que qualquer aplicativo se autentique na API 2Fauth. Você deve especificar o token de acesso como um token Bearer no cabeçalho de autorização das solicitações dos aplicativos.","settings.generate_new_token":"Gerar um novo token","settings.revoke":"Revogar","settings.token_revoked":"Token revogado com sucesso","settings.revoking_a_token_is_permanent":"Revogar um token é permanente","settings.make_sure_copy_token":"Certifique-se de salvar seu token de acesso pessoal agora. Você não poderá vê-lo novamente!","settings.data_input":"Entrada de dados","settings.forms.edit_settings":"Editar configurações","settings.forms.setting_saved":"Configurações salvas","settings.forms.new_token":"Novo token","settings.forms.some_translation_are_missing":"Algumas traduções estão faltando utilizando o idioma preferido do navegador?","settings.forms.help_translate_2fauth":"Ajude a traduzir 2FAuth","settings.forms.language.label":"Idioma","settings.forms.language.help":"Idioma usado para traduzir a interface de usuário 2FAuth. Idiomas nomeados são concluídos, defina a escolha para substituir a preferência do seu navegador.","settings.forms.timezone.label":"Fuso horário","settings.forms.timezone.help":"O fuso horário aplicado a todas as datas e horas exibidas na aplicação","settings.forms.show_otp_as_dot.label":'Exibir OTP gerado como pontos',"settings.forms.show_otp_as_dot.help":"Substitua os caracteres de senha gerados com *** para garantir a confidencialidade. Não afete o recurso copiar/colar","settings.forms.reveal_dotted_otp.label":'Revelar OTP oculto',"settings.forms.reveal_dotted_otp.help":"Permitir a capacidade de revelar temporariamente senhas obscurecidas por pontos","settings.forms.close_otp_on_copy.label":'Fechar OTP após copiar',"settings.forms.close_otp_on_copy.help":"Clicar para copiar uma senha gerada a ocultará automaticamente da tela","settings.forms.auto_close_timeout.label":'Fechar automaticamente OTP',"settings.forms.auto_close_timeout.help":"Ocultar automaticamente a senha na tela após um tempo limite. Isso evita solicitações desnecessárias de novas senhas se você esquecer de fechar a tela de senha.","settings.forms.clear_search_on_copy.label":"Limpar pesquisa ao copiar","settings.forms.clear_search_on_copy.help":"Limpar a caixa de pesquisa logo após um código ser copiado para a área de transferência","settings.forms.sort_case_sensitive.label":"Ordenar com distinção entre maiúsculas e minúsculas","settings.forms.sort_case_sensitive.help":"Quando acionado, forçar a função Ordenar a organizar as contas de forma que diferencie entre maiúsculas e minúsculas","settings.forms.copy_otp_on_display.label":'Copiar OTP na tela',"settings.forms.copy_otp_on_display.help":'Copiar automaticamente uma senha gerada depois que ela aparecer na tela. Devido a limitações de navegadores, apenas a primeira senha TOTP será copiada, não as rotativas',"settings.forms.use_basic_qrcode_reader.label":"Usar leitor de QR code","settings.forms.use_basic_qrcode_reader.help":"Se você tiver problemas ao capturar QR code permite que essa opção mude para um leitor de QR code mais básico, mas mais confiável","settings.forms.display_mode.label":"Modo de exibição","settings.forms.display_mode.help":"Escolher se quer que as contas sejam exibidas como uma lista ou como grade","settings.forms.password_format.label":"Formatação de senha","settings.forms.password_format.help":"Altere como as senhas são exibidas pelo agrupamento de dígitos para facilitar a legibilidade e memorização","settings.forms.pair":"por Par","settings.forms.pair_legend":"Agrupar dígitos dois por dois","settings.forms.trio_legend":"Agrupar dígitos três por três","settings.forms.half_legend":"Dividir dígitos em dois grupos iguais","settings.forms.trio":"por Trio","settings.forms.half":"pela Metade","settings.forms.grid":"Grade","settings.forms.list":"Lista","settings.forms.theme.label":"Tema","settings.forms.theme.help":"Forçar um tema específico ou aplicar o tema definido nas preferências do sistema/navegador","settings.forms.light":"Claro","settings.forms.dark":"Escuro","settings.forms.automatic":"Automático","settings.forms.show_accounts_icons.label":"Mostrar Ícones","settings.forms.show_accounts_icons.help":"Exibir ícones das contas na visão das contas","settings.forms.get_official_icons.label":"Obter ícones oficiais","settings.forms.get_official_icons.help":"(Tentar) Obter o ícone oficial do emissor do 2FA ao adicionar uma conta?","settings.forms.auto_lock.label":"Logoff automático","settings.forms.auto_lock.help":"Desconecta automaticamente o usuário em caso de inatividade. Não tem efeito quando a autenticação é tratada por um proxy e nenhuma URL personalizada de logout é especificada.","settings.forms.default_group.label":"Grupo padrão","settings.forms.default_group.help":"O grupo ao qual as contas recém criadas serão associadas","settings.forms.view_default_group_on_copy.label":"Visualizar grupo padrão na cópia","settings.forms.view_default_group_on_copy.help":"Sempre retornar ao grupo padrão quando um OTP for copiado","settings.forms.auto_save_qrcoded_account.label":"Salvar contas automaticamente","settings.forms.auto_save_qrcoded_account.help":"Novas contas são registradas automaticamente após a verificação ou envio de um código QR, não é necessário clicar num botão Salvar","settings.forms.useDirectCapture.label":"Entrada direta","settings.forms.useDirectCapture.help":"Escolha se você quer ser solicitado a escolher um modo de entrada entre os disponíveis ou se você quiser usar diretamente o modo de entrada padrão","settings.forms.defaultCaptureMode.label":"Modo de entrada padrão","settings.forms.defaultCaptureMode.help":"Modo de entrada padrão usado quando a opção de entrada direta está ligada","settings.forms.remember_active_group.label":"Lembrar filtro de grupos","settings.forms.remember_active_group.help":"Salvar o último filtro de grupo aplicado e restaurá-lo na sua próxima visita","settings.forms.otp_generation.label":"Exibir senha","settings.forms.otp_generation.help":'Defina como e quando OTPs são exibidos.
',"settings.forms.notify_on_new_auth_device.label":"Em novo dispositivo","settings.forms.notify_on_new_auth_device.help":"Receba um e-mail quando um novo dispositivo se conectar à sua conta 2FAuth pela primeira vez","settings.forms.notify_on_failed_login.label":"Ao acessar com falha","settings.forms.notify_on_failed_login.help":"Receber um e-mail sempre que uma tentativa de conectar sua conta 2FAuth falhar","settings.forms.show_email_in_footer.label":"Exibir e-mail no rodapé?","settings.forms.show_email_in_footer.help":"Exiba o e-mail do usuário logado no rodapé em vez de links de navegação diretos. Neste caso os links ficam disponíveis em um menu acessível ao clicar/tocar no endereço de e-mail.","settings.forms.otp_generation_on_request":"Após clicar/tocar","settings.forms.otp_generation_on_request_legend":"Sozinho, na sua própria exibição","settings.forms.otp_generation_on_request_title":"Clique em uma conta para obter uma senha em uma exibição dedicada","settings.forms.otp_generation_on_home":"Constantemente","settings.forms.otp_generation_on_home_legend":"Todos eles, em casa","settings.forms.otp_generation_on_home_title":"Mostrar todas as senhas na visualização principal, sem fazer nada","settings.forms.never":"Nunca","settings.forms.on_otp_copy":"Quando copiar código de segurança","settings.forms.1_minutes":"Após 1 minuto","settings.forms.2_minutes":"Após 2 minutos","settings.forms.5_minutes":"Após 5 minutos","settings.forms.10_minutes":"Após 10 minutos","settings.forms.15_minutes":"Após 15 minutos","settings.forms.30_minutes":"Após 30 minutos","settings.forms.1_hour":"Após 1 hora","settings.forms.1_day":"Após 1 dia","settings.forms.livescan":"QR code livescan","settings.forms.upload":"QR code upload","settings.forms.advanced_form":"Forma avançada","titles.404":"Item não encontrado","titles.start":"Nova conta","titles.capture":"Ler código QR","titles.accounts":"Contas","titles.createAccount":"Criar conta","titles.importAccounts":"Importar contas","titles.editAccount":"Editar conta","titles.showQRcode":"Conta como QR code","titles.groups":"Grupos","titles.createGroup":"Criar grupo","titles.editGroup":"Editar grupo","titles.settings.options":"Opções","titles.settings.account":"Conta de usuário","titles.settings.oauth.tokens":"Código OAuth","titles.settings.oauth.generatePAT":"Novo token pessoal","titles.settings.webauthn.editCredential":"Editar dispositivo","titles.settings.webauthn.devices":"Dispositivos WebAuthn","titles.login":"Login","titles.register":"Registrar","titles.autolock":"Bloqueio automático","titles.password.request":"Redefinir senha","titles.password.reset":"Nova senha","titles.webauthn.lost":"Recuperar conta","titles.webauthn.recover":"Registrar um novo dispositivo","titles.flooded":"Erro Flood","titles.genericError":"Erro","titles.about":"Sobre","titles.admin.appSetup":"Configuração do App","titles.admin.users":"Gerenciamento de usuários","titles.admin.createUser":"Criar usuário","titles.admin.manageUser":"Administrar usuário","titles.admin.logs.access":"Logs de acesso","twofaccounts.service":"Serviço","twofaccounts.account":"Conta","twofaccounts.icon":"Ícone","twofaccounts.icon_to_illustrate_the_account":"Ícone que ilustra a conta","twofaccounts.remove_icon":"Excluir ícone","twofaccounts.no_account_here":"Sem 2FA aqui!","twofaccounts.add_first_account":"Escolha um método e adicione sua primeira conta","twofaccounts.use_full_form":"Ou utilize o formulário completo","twofaccounts.add_one":"Adicione um","twofaccounts.show_qrcode":"Mostrar QR Code","twofaccounts.no_service":"- sem serviço -","twofaccounts.account_created":"Conta criada com sucesso!","twofaccounts.account_updated":"Conta atualizada com sucesso","twofaccounts.accounts_deleted":"Conta(s) excluídas com êxito","twofaccounts.accounts_moved":"Conta(s) movidas com sucesso","twofaccounts.export_selected_accounts":"Exportar contas selecionadas","twofaccounts.twofauth_export_format":"Formato 2FAuth","twofaccounts.twofauth_export_format_sub":`Exporte dados usando o esquema JSON do 2FAuth - - - - - - -`,"twofaccounts.twofauth_export_format_desc":"Você pode optar por esta opção caso você precisar criar um backup que possa ser restaurado. Este formato inclui ícones.","twofaccounts.twofauth_export_format_url":"A descrição de definição do esquema:","twofaccounts.twofauth_export_schema":"Esquema de exportação do 2FAuth","twofaccounts.otpauth_export_format":"Parametros da URIs de otpauth","twofaccounts.otpauth_export_format_sub":"Exporte dados em lista de URIs otpauth","twofaccounts.otpauth_export_format_desc":`A URI otpauth é um formato padronizado para compartilhar dados de autenticação de dois fatores (2FA). Esse formato é amplamente utilizado por serviços e aplicativos para facilitar a configuração do 2FA por meio de QR codes. Quando você ativa o 2FA em um site, ele normalmente exibe um código QR que encapsula uma URI otpauth, permitindo que o aplicativo de autenticação (como Google Authenticator, Authy, ou Microsoft Authenticator) escaneie o código e configure automaticamente o 2FA para sua conta. - -Estrutura da URI otpauth -A URI otpauth é composta de informações essenciais para a configuração do 2FA e segue este formato básico: - -Exemplo: +/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Administrador","admin.admin_panel":"Administração","admin.app_setup":"Configuração da Aplicação","admin.auth":"Atutenticação","admin.registrations":"Registos","admin.users":"Usuários","admin.users_legend":"Gerenciar usuários registrados ou criar em sua instância.","admin.admin_settings":"Configurações de administração","admin.create_new_user":"Criar usuário","admin.new_user":"Novo usuário","admin.search_user_placeholder":"Nome de usuário, e-mail...","admin.quick_filters_colons":"Filtro rápido:","admin.user_created":"usuário criado com sucesso","admin.confirm.delete_user":"Tem certeza de que deseja excluir este usuário? Não há a opção de 'desfazer'.","admin.confirm.request_password_reset":"Você tem certeza que deseja redefinir a senha deste usuário?","admin.confirm.purge_password_reset_request":"Tem certeza de que deseja revogar a solicitação anterior?","admin.confirm.delete_account":"Tem certeza de que deseja excluir este usuário?","admin.confirm.edit_own_account":"Esta é a sua própria conta. Tem certeza?","admin.confirm.change_admin_role":"Isto terá sérios impactos nas permissões deste usuário. Tem certeza?","admin.confirm.demote_own_account":"Você não será mais um administrador. Deseja realmente continuar?","admin.logs":"Registros","admin.administration_legend":"As seguintes configurações são globais e aplicam-se a todos os usuários.","admin.user_management":"Gerenciamento de usuários","admin.oauth_provider":"Provedor OAuth","admin.account_bound_to_x_via_oauth":"Esta conta está vinculada a uma conta :provedor via OAuth","admin.last_seen_on_date":"Visto por último :date","admin.registered_on_date":"Registrado em :date","admin.updated_on_date":"Atualizado em :date","admin.access":"Acesso","admin.password_requested_on_t":"Uma solicitação de redefinição de senha existe para este usuário (solicitação enviada em :datetime), o que significa que o usuário ainda não alterou sua senha, mas o link que recebeu ainda é válido. Esta pode ser uma requisição do próprio usuário ou de um administrador.","admin.password_request_expired":"Uma solicitação de redefinição de senha existe para este usuário, mas expirou, o que significa que o usuário não alterou sua senha a tempo. Esta pode ser uma requisição do próprio usuário ou de um administrador.","admin.resend_email":"Reenviar e-mail","admin.resend_email_title":"Reenviar um e-mail de redefinição de senha ao usuário","admin.resend_email_help":"Use Reenviar e-mail para enviar um novo e-mail de redefinição de senha para o usuário para ele definir uma nova senha. Isso deixará sua senha atual como está e qualquer pedido anterior será revogado.","admin.reset_password":"Redefinir senha","admin.reset_password_help":"Use Redefinir senha para forçar uma redefinição de senha (isso irá definir uma senha temporária) antes de enviar um e-mail de redefinição de senha para o usuário para que eles possam definir uma nova senha. Qualquer solicitação anterior será revogada.","admin.reset_password_title":"Redefinir a senha do usuário","admin.password_successfully_reset":"Senha redefinida com sucesso","admin.user_has_x_active_pat":":count token(s) ativo(s)","admin.user_has_x_security_devices":":count dispositivo(s) de segurança (chaves)","admin.revoke_all_pat_for_user":"Revogar o token de todos os usuários","admin.revoke_all_devices_for_user":"Revogar os dispositivos de segurança de todos os usuários","admin.danger_zone":"Zona de perigo","admin.delete_this_user_legend":"A conta de usuário será excluída assim como todos os seus dados de 2FA.","admin.this_is_not_soft_delete":"Não se trata de uma exclusão suave, não se pode retroceder.","admin.delete_this_user":"Excluir este usuário","admin.user_role_updated":"Função do usuário atualizada","admin.pats_succesfully_revoked":"PATs do usuário revogado com sucesso","admin.security_devices_succesfully_revoked":"Dispositivos de segurança do usuário revogado com sucesso","admin.variables":"Variáveis","admin.cache_cleared":"Cache apagado","admin.cache_optimized":"Cache otimizado","admin.check_now":"Verificar agora","admin.view_on_github":"Ver no GitHub","admin.x_is_available":":version está disponível","admin.successful_login_on":'Login bem-sucedido em :login_at',"admin.successful_logout_on":'Logout bem-sucedido em :login_at',"admin.failed_login_on":'Falha no login em :login_at',"admin.viewed_on":'Visualizado em :login_at',"admin.last_accesses":"Últimos acessos","admin.see_full_log":"Ver registro completo","admin.browser_on_platform":":browser em :platform","admin.access_log_has_more_entries":"O log de acesso contém mais entradas.","admin.access_log_legend_for_user":"Registro de acesso completo para o usuário :username","admin.show_last_month_log":"Mostrar entradas do último mês","admin.show_three_months_log":"Mostrar entradas dos últimos 3 meses","admin.show_six_months_log":"Mostrar entradas dos últimos 6 meses","admin.show_one_year_log":"Mostrar entradas do último ano","admin.sort_by_date_asc":"Mostrar o mais antigo primeiro","admin.sort_by_date_desc":"Mostrar o mais recente primeiro","admin.single_sign_on":"Sistema de login único","admin.database":"Banco de Dados","admin.file_system":"Sistema de arquivo","admin.storage":"Armazenamento de dados","admin.forms.use_encryption.label":"Proteja dados confidenciais","admin.forms.use_encryption.help":"Dados confidenciais, segredos e e-mails 2FA são armazenados criptografados no banco de dados. Certifique-se de salvar o valor APP_KEY do seu arquivo .env (ou do arquivo inteiro), pois ele serve como chave de criptografia. Não há como descriptografar dados criptografados sem essa chave.","admin.forms.restrict_registration.label":"Restringir registro","admin.forms.restrict_registration.help":"Tornar o registro disponível apenas para um intervalo limitado de endereços de e-mail. Ambas as regras podem ser usadas simultaneamente. Isso não tem efeito sobre o registro via SSO.","admin.forms.restrict_list.label":"Listas de filtros","admin.forms.restrict_list.help":'Os endereços de e-mail nesta lista serão autorizados para registro. Endereços separados com o caractere "|"',"admin.forms.restrict_rule.label":"Filtrando regras","admin.forms.restrict_rule.help":"E-mails que correspondem a esta expressão regular terá permissão para registrar","admin.forms.disable_registration.label":"Desabilitar registo","admin.forms.disable_registration.help":"Impedir novos registros. A menos que sobrescrito (veja abaixo), isto afeta SSO também, então novos usuários não serão capazes de entrar via SSO","admin.forms.enable_sso.label":"Habilitar sistema de login únicio","admin.forms.enable_sso.help":"Permitir que os visitantes autentiquem usando um ID externo por meio do esquema de logon SSO","admin.forms.use_sso_only.label":"Usar somente sistema de login único","admin.forms.use_sso_only.help":"Faça do SSO o único método disponível para fazer login no 2FAuth. O login por senha e o Webauth são então desativados para usuários comuns. Os administradores não são afetados por essa restrição.","admin.forms.keep_sso_registration_enabled.label":"Mantenha o registro SSO ativado","admin.forms.keep_sso_registration_enabled.help":"Permite que novos usuários façam login pela primeira vez via SSO enquanto os registros estão desativados","admin.forms.is_admin.label":"É administrador","admin.forms.is_admin.help":"Concede direitos de administrador ao usuário. Os administradores podem gerenciar o aplicativo, ou seja, modificar suas configurações e gerenciar seus usuários. Um administrador não tem como visualizar os dados 2FA de outro usuário ou gerar códigos para eles.","admin.forms.test_email.label":"Teste de configuração de e-mail","admin.forms.test_email.help":"Envie um e-mail de teste para verificar a capacidade da sua instância de usar e-mail. É importante ter uma configuração funcional, caso contrário os usuários não poderão solicitar redefinição de senha, por exemplo.","admin.forms.test_email.email_will_be_send_to_x":'O e-mail será enviado para :email',"admin.forms.health_endpoint.label":"Status do endpoint","admin.forms.health_endpoint.help":"URL que você pode verificar o status de saúde desta instância do 2FAuth. A URL pode ser usada para configurar um **HEALTHCHECK** no Docker ou uma **Sondagem de logs ao vivo de HTTPS** no Kubernetes.","admin.forms.cache_management.label":"Gerenciamento de Cache","admin.forms.cache_management.help":"Às vezes, o cache precisa ser limpo, por exemplo, após uma alteração de variáveis de ambiente ou de uma atualização. Você pode fazer isso a partir daqui.","admin.forms.store_icon_to_database.label":"Armazenar ícones no banco de dados","admin.forms.store_icon_to_database.help":`Ícones enviados são registrados no banco de dados além de serem armazenados no sistema de arquivos, que então é usado apenas como cache. Isso facilita muito a criação de um backup do 2FAuth, pois apenas o banco de dados precisa ser incluído no backup.\r +\r +No entanto, cuidado, pois isso pode ter algumas desvantagens: o tamanho do banco de dados pode aumentar significativamente se a instância hospedar muitos ícones grandes. Também pode afetar o desempenho da aplicação, pois o sistema de arquivos é acessado com mais frequência para garantir a sincronização com o banco de dados.`,"auth.failed":"Essas credenciais não correspondem aos nossos registros.","auth.password":"A senha inserida está incorreta.","auth.throttle":"Muitas tentativas de login. Por favor, tente novamente em :seconds segundos.","auth.sign_out":"Encerrar Sessão","auth.sign_in":"Entrar","auth.sign_in_using":"Entrar usando","auth.if_administrator":"Administrador?","auth.sign_in_here":"Você pode fazer entrar sem SSO.","auth.or_continue_with":"Você também pode continuar com:","auth.password_login_and_webauthn_are_disabled":"O login com senha e o WebAuthn estão desativados.","auth.sign_in_using_sso":"Escolha um provedor de SSO para fazer login:","auth.no_provider":"Não existe provedor","auth.no_sso_provider_or_provider_is_missing":"O provedor está faltando?","auth.see_how_to_enable_sso":"Veja como habilitar um provedor","auth.sign_in_using_security_device":"Fazer login usando um dispositivo de segurança","auth.login_and_password":"usuário e senha","auth.register":"Cadastro","auth.welcome_to_2fauth":"Bem-vindo(a) ao 2FAuth","auth.autolock_triggered":"Bloqueio automático acionado","auth.autolock_triggered_punchline":"Bloqueio automático acionado, você foi desconectado","auth.already_authenticated":"Já autenticado, por favor, saia primeiro","auth.authentication":"Autenticação","auth.maybe_later":"Farei isso depois","auth.user_account_controlled_by_proxy":"Conta do usuário disponibilizada por um proxy de autenticação.
Gerencie a conta no nível de proxy.","auth.auth_handled_by_proxy":"Autenticação manipulada por um proxy reverso, as configurações abaixo estão desativadas.
Gerenciar autenticação no nível do proxy.","auth.sso_only_x_settings_are_disabled":"A autenticação está restrita apenas ao SSO, :auth_method está desativado.","auth.confirm.logout":"Tem certeza que deseja sair?","auth.confirm.revoke_device":"Tem certeza de que deseja excluir este dispositivo?","auth.confirm.delete_account":"Tem certeza que deseja excluir sua conta?","auth.webauthn.security_device":"um dispositivo de segurança","auth.webauthn.security_devices":"Dispositivos de segurança","auth.webauthn.security_devices_legend":"Os dispositivos de autenticação que você pode usar para entrar no 2FAuth, como chaves de segurança (ex: Yubikey) ou smartphones com recursos biométricos (ex: Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`Você pode aumentar a segurança da sua conta 2FAuth ativando a autenticação WebAuthn.

\r + WebAuthn permite que você use dispositivos confiáveis (como Yubikeys ou smartphones com capacidade biométrica) para entrar de forma rápida e segura.`,"auth.webauthn.use_security_device_to_sign_in":"Prepare-se para autenticar usando (um dos) seus dispositivos de segurança. Conecte sua chave, remova a máscara de rosto ou luvas, etc.","auth.webauthn.lost_your_device":"Perdeu seu dispositivo?","auth.webauthn.recover_your_account":"Recupere sua conta","auth.webauthn.account_recovery":"Recuperar conta","auth.webauthn.recovery_punchline":"2FAuth enviará um link de recuperação para este endereço de e-mail. Clique no link no e-mail recebido e siga as instruções.

Certifique-se de abrir o e-mail em um dispositivo que você possui.","auth.webauthn.send_recovery_link":"Enviar link de recuperação","auth.webauthn.account_recovery_email_sent":"E-mail de recuperação da conta enviado!","auth.webauthn.disable_all_security_devices":"Desativar todos os dispositivos de segurança","auth.webauthn.disable_all_security_devices_help":"Todos os seus dispositivos de segurança serão revogados. Use esta opção se você perdeu um ou sua segurança foi comprometida.","auth.webauthn.register_a_new_device":"Registrar um novo dispositivo","auth.webauthn.register_a_device":"Registra um dispositivo","auth.webauthn.device_successfully_registered":"Dispositivo registrado com sucesso","auth.webauthn.device_revoked":"Dispositivo revogado com sucesso","auth.webauthn.revoking_a_device_is_permanent":"Revogar um dispositivo é permanente","auth.webauthn.recover_account_instructions":"Para recuperar sua conta, o 2FAuth redefine algumas configurações de Webauthn para que possa entrar usando seu e-mail e senha.","auth.webauthn.invalid_recovery_token":"Token de recuperação inválido","auth.webauthn.webauthn_login_disabled":"Login via Webauthn desativado","auth.webauthn.invalid_reset_token":"Esse token de redefinição é válido.","auth.webauthn.rename_device":"Renomear dispositivo","auth.webauthn.my_device":"Meu dispositivo","auth.webauthn.unknown_device":"Dispositivo desconhecido","auth.webauthn.use_webauthn_only.label":"Usar somente o WebAuthn","auth.webauthn.use_webauthn_only.help":`Faça do WebAuthn o único método autorizado para entrar em sua conta 2FAuth. Essa é a configuração recomendada para aproveitar a segurança reforçada da WebAuthn.

\r + no caso de dispositivo perdido, você poderá recuperar sua conta redefinindo esta opção e entrando usando seu e-mail e senha.

\r + Atenção! O formulário de e-mail e senha permanece disponível apesar de esta opção estar ativada, mas ele sempre retornará uma resposta 'Autenticação falhou'.`,"auth.webauthn.need_a_security_device_to_enable_options":"Defina pelo menos um dispositivo para ativar as seguintes opções","auth.webauthn.options":"Opções","auth.forms.name":"Nome","auth.forms.login":"Entrar","auth.forms.webauthn_login":"Entrar com WebAuthn","auth.forms.sso_login":"Login com SSO","auth.forms.email":"E-mail","auth.forms.password":"Senha","auth.forms.reveal_password":"Mostrar senha","auth.forms.hide_password":"Ocultar Senha","auth.forms.confirm_password":"Confirmar senha","auth.forms.new_password":"Nova senha","auth.forms.confirm_new_password":"Confirmar nova senha","auth.forms.dont_have_account_yet":"Ainda não tem uma conta?","auth.forms.already_register":"Já possui cadastro?","auth.forms.authentication_failed":"Falha na autenticação","auth.forms.forgot_your_password":"Esqueceu sua senha?","auth.forms.request_password_reset":"Redefinir","auth.forms.reset_your_password":"Redefinir sua senha","auth.forms.reset_password":"Redefinir senha","auth.forms.disabled_in_demo":"Recurso desativado no modo Demonstração","auth.forms.sso_only_form_restricted_to_admin":"Usuários comuns devem fazer login com SSO. Outros métodos são apenas para administradores.","auth.forms.current_password.label":"Senha atual","auth.forms.current_password.help":"Preencha com sua senha atual para confirmar que é você","auth.forms.change_password":"Alterar senha","auth.forms.send_password_reset_link":"Enviar link para redefinir senha","auth.forms.password_successfully_reset":"Senha redefinida com sucesso","auth.forms.edit_account":"Editar conta","auth.forms.profile_saved":"Perfil atualizado com sucesso!","auth.forms.welcome_to_demo_app_use_those_credentials":"Bem-vindo(a) à demonstração 2FAuth.

Você pode entrar utilizando o endereço de e-mail demo@2fauth.app e a senha demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Bem-vindo(a) à instância de teste 2FAuth.

Use o endereço de e-mail testing@2fauth.app e senha password","auth.forms.register_punchline":"Bem-vindo(a) ao 2FAuth.
Você precisa de uma conta para ir mais longe, por favor, cadastre-se.","auth.forms.reset_punchline":"2FAuth enviará um link de redefinição de senha para este endereço. Clique no link no e-mail recebido para definir uma nova senha.","auth.forms.name_this_device":"Nomear esse dispositivo","auth.forms.delete_account":"Excluir conta","auth.forms.delete_your_account":"Excluir sua conta","auth.forms.delete_your_account_and_reset_all_data":"Sua conta de usuário será excluída, assim como todos os seus dados de 2FA. Não há volta.","auth.forms.reset_your_password_to_delete_your_account":"Se você sempre usou o SSO para entrar, saia e use o recurso de redefinição. Ao receber uma senha, preencher esse formulário.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Excluir a sua conta 2FAuth não tem impacto na sua conta SSO externa.","auth.forms.user_account_successfully_deleted":"Conta excluída com sucesso","auth.forms.has_lower_case":"Tem minúsculas","auth.forms.has_upper_case":"Tem maiúsculas","auth.forms.has_special_char":"Tem caractere especial","auth.forms.has_number":"Tem número","auth.forms.is_long_enough":"Mínimo 8 caracteres","auth.forms.mandatory_rules":"Obrigatório","auth.forms.optional_rules_you_should_follow":"Recomendação (alta)","auth.forms.caps_lock_is_on":"Caps Lock está ativado","auth.sso_providers.unknown":"desconhecido","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","commons.cancel":"Cancelar","commons.update":"Atualizar","commons.copy":"Copiar","commons.copy_to_clipboard":"Copiar para área de transferência","commons.copied_to_clipboard":"Copiado para a área de transferência","commons.profile":"Perfil","commons.edit":"Editar","commons.delete":"Excluir","commons.disable":"Desativar","commons.enable":"Habilitar","commons.create":"Criar","commons.save":"Salvar","commons.close":"Fechar","commons.clear":"Apagar","commons.clear_search":"Limpar pesquisa","commons.demo_do_not_post_sensitive_data":"Este é um aplicativo de demonstração, não poste nenhum dado confidencial","commons.testing_do_not_post_sensitive_data":"Este é um aplicativo de teste, não postar nenhum dado confidencial","commons.x_selected":"[count] selecionado(s)","commons.name":"Nome","commons.manage":"Gerenciar","commons.done":"Concluir","commons.new":"Novo","commons.back":"Voltar","commons.move":"Mover","commons.export":"Exportar","commons.all":"Todos","commons.check_all":"Todos","commons.select_all":"Selecionar tudo","commons.clear_selection":"Limpar seleção","commons.sort_descending":"Ordenar decrescente","commons.sort_ascending":"Ordenar crescente","commons.rename":"Renomear","commons.new_name":"Novo nome","commons.options":"Opções","commons.reload":"Recarregar","commons.refresh":"Atualizar","commons.data_refreshed_to_reflect_server_changes":"Os dados foram atualizados para refletir as alterações no lado do servidor","commons.generate":"Gerar","commons.generating_otp":"Geração do OTP","commons.open_in_browser":"Abrir no navegador","commons.continue":"Continuar","commons.discard":"Descartar","commons.about":"Sobre","commons.usefull_links":"Links úteis","commons.environment":"Ambiente","commons.credits":"Créditos","commons.2fauth_teaser":"Um aplicativo web para gerenciar suas contas de Autenticação em Duas Etapas (2FA) e gerar códigos de segurança","commons.made_with":"Feito com","commons.ui_icons_by":"Ícones de UI por","commons.logos_by":"Logotipos por","commons.search":"Buscar","commons.resources":"Recursos","commons.check_for_update":"Verificar por atualizações","commons.check_for_update_help":"Verificar automaticamente (uma vez por semana) e avisar quando uma nova versão do 2FAuth for publicada no Github","commons.you_are_up_to_date":"Esta instância está atualizada","commons.2fauth_description":"Um aplicativo web para gerenciar suas contas de Autenticação em Duas Etapas (2FA) e gerar códigos de segurança","commons.image_of_qrcode_to_scan":"Imagem de um QR code para escanear","commons.file":"Arquivo","commons.or":"OU","commons.close_the_x_page":"Feche a página :pagetitle","commons.submit":"Enviar","commons.default":"Padrão","commons.back_to_home":"Voltar à página inicial","commons.nothing":"nada","commons.no_result":"Nenhum resultado","commons.information":"Informações","commons.send":"Enviar","commons.optimize":"Otimizar","commons.IP":"IP","commons.browser":"Navegador","commons.operating_system_short":"Sistema Operacional","commons.no_entry_yet":"Nenhuma entrada ainda","commons.time":"Hora","commons.ip_address":"Endereço IP","commons.device":"Dispositivo","commons.one_month":"1 mês.","commons.x_month":":x meses.","commons.one_year":"1 ano.","errors.resource_not_found":"Recurso não encontrado","errors.error_occured":"Ocorreu um erro:","errors.refresh":"Atualizar","errors.no_valid_otp":"Nenhum OTP válido neste código QR","errors.something_wrong_with_server":"Algo está errado com o seu servidor","errors.Unable_to_decrypt_uri":"Não foi possível descriptografar a uri","errors.not_a_supported_otp_type":"Este formato OTP não é suportado no momento","errors.cannot_create_otp_without_secret":"Não é possível criar um OTP sem um segredo","errors.data_of_qrcode_is_not_valid_URI":"Os dados deste código QR não são um URI de Autenticação OTP válido. O código QR contém:","errors.wrong_current_password":"Senha atual incorreta, nada foi alterado","errors.error_during_encryption":"Falha na criptografia, seu banco de dados permanece desprotegido.","errors.error_during_decryption":"Falha na descriptografia, seu banco de dados ainda está protegido. Isso é causado principalmente por um problema de integridade de dados criptografados para uma ou mais contas.","errors.qrcode_cannot_be_read":"Este código QR é ilegível","errors.too_many_ids":"muitos IDs foram incluídos no parâmetro de consulta, é permitido o máximo 100","errors.delete_user_setting_only":"Apenas configuração criada pelo usuário pode ser excluída","errors.indecipherable":"*indecifrável*","errors.cannot_decipher_secret":"O segredo não pode ser decifrado. Isso é causado principalmente por um APP_KEY errado definido no arquivo .env de configuração do 2Fauth, ou de dados corrompidos armazenados na base de dados.","errors.https_required":"Contexto HTTPS requerido","errors.browser_does_not_support_webauthn":"Seu dispositivo não suporta webauth. Tente novamente mais tarde usando um navegador mais moderno","errors.aborted_by_user":"Cancelado pelo usuário","errors.security_device_already_registered":"Dispositivo já registrado","errors.not_allowed_operation":"Operação não permitida","errors.no_authenticator_support_specified_algorithms":"Nenhum autenticador suporta algoritmos especificados","errors.authenticator_missing_discoverable_credential_support":"O autenticador não possui suporte de credenciais detectável","errors.authenticator_missing_user_verification_support":"Suporte à verificação de usuário faltando na autenticação","errors.unknown_error":"Erro desconhecido","errors.security_error_check_rpid":"Erro de segurança
Verifique variável WEBAUTHN_ID em .env","errors.2fauth_has_not_a_valid_domain":"O domínio de 2FAuth não é um domínio válido","errors.user_id_not_between_1_64":"O ID do usuário não estava entre 1 e 64 caracteres","errors.no_entry_was_of_type_public_key":'Nenhuma entrada é do tipo "chave pública"',"errors.unsupported_with_reverseproxy":"Não aplicável ao usar um proxy de autenticação ou SSO.","errors.unsupported_with_sso_only":"Este método de autenticação é apenas para administradores. Usuários devem fazer login com SSO.","errors.user_deletion_failed":"A exclusão da conta do usuário falhou, nenhum dado foi excluído","errors.auth_proxy_failed":"Falha na autenticação do proxy","errors.auth_proxy_failed_legend":"2Fauth está configurado para ser executado atrás de um proxy autenticado, mas seu proxy não retorna o cabeçalho esperado. Verifique sua configuração e tente novamente.","errors.invalid_x_migration":"Dados de :appname inválidos ou ilegíveis","errors.invalid_2fa_data":"Dados 2FA inválidos","errors.unsupported_migration":"Os dados não correspondem a qualquer formato suportado","errors.unsupported_otp_type":"Tipo de OTP não suportado","errors.encrypted_migration":"Inlegível, os dados parecem criptografados","errors.no_logo_found_for_x":"Nenhum logotipo disponível para :service","errors.file_upload_failed":"Falha no upload do arquivo","errors.unauthorized":"Não autorizado","errors.unauthorized_legend":"Você não tem permissão para visualizar este recurso ou para executar esta ação","errors.cannot_delete_the_only_admin":"Não é possível excluir a única conta de administrador","errors.cannot_demote_the_only_admin":"Não é possível rebaixar a única conta de administrador","errors.error_during_data_fetching":"💀 Algo deu errado durante a obtenção de dados","errors.check_failed_try_later":"Falha na busca, tente novamente mais tarde","errors.sso_disabled":"SSO está desativado","errors.sso_bad_provider_setup":"Este provedor SSO não está totalmente configurado no seu arquivo .env","errors.sso_failed":"Autenticação via SSO rejeitada","errors.sso_no_register":"Os registros estão desativados","errors.sso_email_already_used":"Uma conta de usuário com o mesmo endereço de e-mail já existe, mas não corresponde ao seu ID de conta externa. Não use SSO se você já estiver registrado no 2FAuth com este e-mail.","errors.account_managed_by_external_provider":"Conta gerenciada por um provedor externo","errors.data_cannot_be_refreshed_from_server":"Os dados não podem ser atualizados a partir do servidor","errors.no_pwd_reset_for_this_user_type":"Redefinição de senha indisponível para este usuário","errors.cannot_detect_qrcode_in_image":"Não é possível detectar um código QR na imagem, tente recortar a imagem","errors.cannot_decode_detected_qrcode":"Não é possível decodificar o código QR detectado, tentar cortar ou desembaçar a imagem","errors.qrcode_has_invalid_checksum":"QR code possui checksum inválido","errors.no_readable_qrcode":"Nenhum código QR legível","errors.failed_icon_store_database_toggling":"Houve um erro ao migrar os ícones. A configuração foi restaurada para o valor anterior.","groups.groups":"Grupos","groups.create_group":"Criar um novo grupo","groups.show_group_selector":"Mostrar seletor de grupo","groups.hide_group_selector":"Ocultar seletor de grupo","groups.select_accounts_to_show":"Selecionar grupo de contas para mostrar","groups.x_accounts":":count contas","groups.manage_groups":"Gerenciar grupos","groups.active_group":"Ativar grupo","groups.manage_groups_legend":'Você pode criar grupos para organizar suas contas da forma que quiser. Todas as contas permanecem visíveis no pseudo grupo chamado "Todos", independentemente do grupo ao qual pertencem.',"groups.deleting_group_does_not_delete_accounts":"Excluir um grupo não exclui contas","groups.move_selected_to":"Mover selecionados para","groups.move_selected_to_group":"Mover selecionados para um grupo","groups.no_group":"Sem grupo","groups.change_group":"Mudar grupo","groups.group_successfully_created":"Grupo criado com sucesso","groups.group_name_saved":"Nome do grupo salvo","groups.group_successfully_deleted":"Grupo excluído com sucesso","groups.forms.new_group":"Novo grupo","groups.forms.new_name":"Novo nome","groups.forms.rename_group":"Renomear grupo","groups.confirm.delete":"Tem certeza de que deseja excluir esse grupo?","languages.browser_preference":"Padrão do navegador","languages.en":"English (Inglês)","languages.fr":"Français (Francês)","languages.de":"Deutsch (Alemão)","languages.es":"Español (Espanhol)","languages.zh":"简体中文 (Chinês Simplificado)","languages.ru":"Русский (Russo)","languages.bg":"Български (Búlgaro)","languages.ja":"日本語 (Japonês)","languages.hi":"हिंदी (Indiano)","languages.tr":"Türkçe (Turco)","notifications.hello":"Olá","notifications.hello_user":"Olá :username,","notifications.regards":"Atenciosamente","notifications.test_email_settings.subject":"E-mail de teste 2FAuth","notifications.test_email_settings.reason":"Você está recebendo este e-mail porque você solicitou um e-mail de teste para validar as configurações de e-mail da sua instância 2FAuth.","notifications.test_email_settings.success":"Boas notícias, funcionou :)","notifications.new_device.subject":"Conexão com o 2FAuth de um novo dispositivo","notifications.new_device.resume":"Um novo dispositivo acabou de se conectar à sua conta 2FAuth.","notifications.new_device.connection_details":"Aqui estão os detalhes desta conexão","notifications.new_device.recommandations":"Se foi você, você pode ignorar este alerta. Se suspeitar de qualquer atividade suspeita em sua conta, altere sua senha imediatamente.","notifications.failed_login.subject":"Falha no login para 2FAuth","notifications.failed_login.resume":"Houve uma tentativa de login falhada em sua conta 2FAuth.","notifications.failed_login.connection_details":"Aqui estão os detalhes desta tentativa de conexão","notifications.failed_login.recommandations":"Se foi você, pode ignorar este alerta. Se outras tentativas falharem, você deve entrar em contato com o administrador do 2FAuth para rever as configurações de segurança e tomar ações contra este atacante.","pagination.previous":"« Anterior","pagination.next":"Próximo »","passwords.reset":"Sua senha foi redefinida!","passwords.sent":"Enviamos o link de redefinição de senha por e-mail!","passwords.throttled":"Por favor aguarde antes de tentar novamente.","passwords.token":"Este token de redefinição de senha é inválido.","passwords.user":"Não foi encontrado nenhum usuário com este endereço de e-mail.","passwords.password":"A senha deve conter pelo menos oito caracteres e ser igual à confirmação.","settings.settings":"Configurações","settings.preferences":"Preferências","settings.account":"Conta","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Tokens","settings.options":"Opções","settings.user_preferences":"Preferências do usuário","settings.admin_settings":"Configurações de administração","settings.confirm.revoke":"Tem certeza de que deseja revogar este token?","settings.you_are_administrator":"Você não é um administrador","settings.account_linked_to_sso_x_provider":"Você entrou via SSO usando a sua conta :provid. Sua informação não pode ser alterada aqui mas em :provider.","settings.general":"Geral","settings.security":"Segurança","settings.notifications":"Notificações","settings.profile":"Perfil","settings.change_password":"Mudar senha","settings.personal_access_tokens":"Tokens de acesso pessoal","settings.token_legend":"Tokens de Acesso Pessoal permitem que qualquer aplicativo se autentique na API 2Fauth. Você deve especificar o token de acesso como um token Bearer no cabeçalho de autorização das solicitações dos aplicativos.","settings.generate_new_token":"Gerar um novo token","settings.revoke":"Revogar","settings.token_revoked":"Token revogado com sucesso","settings.revoking_a_token_is_permanent":"Revogar um token é permanente","settings.make_sure_copy_token":"Certifique-se de salvar seu token de acesso pessoal agora. Você não poderá vê-lo novamente!","settings.data_input":"Entrada de dados","settings.forms.edit_settings":"Editar configurações","settings.forms.setting_saved":"Configurações salvas","settings.forms.new_token":"Novo token","settings.forms.some_translation_are_missing":"Algumas traduções estão faltando utilizando o idioma preferido do navegador?","settings.forms.help_translate_2fauth":"Ajude a traduzir 2FAuth","settings.forms.language.label":"Idioma","settings.forms.language.help":"Idioma usado para traduzir a interface de usuário 2FAuth. Idiomas nomeados são concluídos, defina a escolha para substituir a preferência do seu navegador.","settings.forms.timezone.label":"Fuso horário","settings.forms.timezone.help":"O fuso horário aplicado a todas as datas e horas exibidas na aplicação","settings.forms.show_otp_as_dot.label":'Exibir OTP gerado como pontos',"settings.forms.show_otp_as_dot.help":"Substitua os caracteres de senha gerados com *** para garantir a confidencialidade. Não afete o recurso copiar/colar","settings.forms.reveal_dotted_otp.label":'Revelar OTP oculto',"settings.forms.reveal_dotted_otp.help":"Permitir a capacidade de revelar temporariamente senhas obscurecidas por pontos","settings.forms.close_otp_on_copy.label":'Fechar OTP após copiar',"settings.forms.close_otp_on_copy.help":"Clicar para copiar uma senha gerada a ocultará automaticamente da tela","settings.forms.auto_close_timeout.label":'Fechar automaticamente OTP',"settings.forms.auto_close_timeout.help":"Ocultar automaticamente a senha na tela após um tempo limite. Isso evita solicitações desnecessárias de novas senhas se você esquecer de fechar a tela de senha.","settings.forms.clear_search_on_copy.label":"Limpar pesquisa ao copiar","settings.forms.clear_search_on_copy.help":"Limpar a caixa de pesquisa logo após um código ser copiado para a área de transferência","settings.forms.sort_case_sensitive.label":"Ordenar com distinção entre maiúsculas e minúsculas","settings.forms.sort_case_sensitive.help":"Quando acionado, forçar a função Ordenar a organizar as contas de forma que diferencie entre maiúsculas e minúsculas","settings.forms.copy_otp_on_display.label":'Copiar OTP na tela',"settings.forms.copy_otp_on_display.help":'Copiar automaticamente uma senha gerada depois que ela aparecer na tela. Devido a limitações de navegadores, apenas a primeira senha TOTP será copiada, não as rotativas',"settings.forms.use_basic_qrcode_reader.label":"Usar leitor de QR code","settings.forms.use_basic_qrcode_reader.help":"Se você tiver problemas ao capturar QR code permite que essa opção mude para um leitor de QR code mais básico, mas mais confiável","settings.forms.display_mode.label":"Modo de exibição","settings.forms.display_mode.help":"Escolher se quer que as contas sejam exibidas como uma lista ou como grade","settings.forms.password_format.label":"Formatação de senha","settings.forms.password_format.help":"Altere como as senhas são exibidas pelo agrupamento de dígitos para facilitar a legibilidade e memorização","settings.forms.pair":"por Par","settings.forms.pair_legend":"Agrupar dígitos dois por dois","settings.forms.trio_legend":"Agrupar dígitos três por três","settings.forms.half_legend":"Dividir dígitos em dois grupos iguais","settings.forms.trio":"por Trio","settings.forms.half":"pela Metade","settings.forms.grid":"Grade","settings.forms.list":"Lista","settings.forms.theme.label":"Tema","settings.forms.theme.help":"Forçar um tema específico ou aplicar o tema definido nas preferências do sistema/navegador","settings.forms.light":"Claro","settings.forms.dark":"Escuro","settings.forms.automatic":"Automático","settings.forms.show_accounts_icons.label":"Mostrar Ícones","settings.forms.show_accounts_icons.help":"Exibir ícones das contas na visão das contas","settings.forms.get_official_icons.label":"Obter ícones oficiais","settings.forms.get_official_icons.help":"(Tentar) Obter o ícone oficial do emissor do 2FA ao adicionar uma conta?","settings.forms.auto_lock.label":"Logoff automático","settings.forms.auto_lock.help":"Desconecta automaticamente o usuário em caso de inatividade. Não tem efeito quando a autenticação é tratada por um proxy e nenhuma URL personalizada de logout é especificada.","settings.forms.default_group.label":"Grupo padrão","settings.forms.default_group.help":"O grupo ao qual as contas recém criadas serão associadas","settings.forms.view_default_group_on_copy.label":"Visualizar grupo padrão na cópia","settings.forms.view_default_group_on_copy.help":"Sempre retornar ao grupo padrão quando um OTP for copiado","settings.forms.auto_save_qrcoded_account.label":"Salvar contas automaticamente","settings.forms.auto_save_qrcoded_account.help":"Novas contas são registradas automaticamente após a verificação ou envio de um código QR, não é necessário clicar num botão Salvar","settings.forms.useDirectCapture.label":"Entrada direta","settings.forms.useDirectCapture.help":"Escolha se você quer ser solicitado a escolher um modo de entrada entre os disponíveis ou se você quiser usar diretamente o modo de entrada padrão","settings.forms.defaultCaptureMode.label":"Modo de entrada padrão","settings.forms.defaultCaptureMode.help":"Modo de entrada padrão usado quando a opção de entrada direta está ligada","settings.forms.remember_active_group.label":"Lembrar filtro de grupos","settings.forms.remember_active_group.help":"Salvar o último filtro de grupo aplicado e restaurá-lo na sua próxima visita","settings.forms.otp_generation.label":"Exibir senha","settings.forms.otp_generation.help":'Defina como e quando OTPs são exibidos.
',"settings.forms.notify_on_new_auth_device.label":"Em novo dispositivo","settings.forms.notify_on_new_auth_device.help":"Receba um e-mail quando um novo dispositivo se conectar à sua conta 2FAuth pela primeira vez","settings.forms.notify_on_failed_login.label":"Ao acessar com falha","settings.forms.notify_on_failed_login.help":"Receber um e-mail sempre que uma tentativa de conectar sua conta 2FAuth falhar","settings.forms.show_email_in_footer.label":"Exibir e-mail no rodapé?","settings.forms.show_email_in_footer.help":"Exiba o e-mail do usuário logado no rodapé em vez de links de navegação diretos. Neste caso os links ficam disponíveis em um menu acessível ao clicar/tocar no endereço de e-mail.","settings.forms.otp_generation_on_request":"Após clicar/tocar","settings.forms.otp_generation_on_request_legend":"Sozinho, na sua própria exibição","settings.forms.otp_generation_on_request_title":"Clique em uma conta para obter uma senha em uma exibição dedicada","settings.forms.otp_generation_on_home":"Constantemente","settings.forms.otp_generation_on_home_legend":"Todos eles, em casa","settings.forms.otp_generation_on_home_title":"Mostrar todas as senhas na visualização principal, sem fazer nada","settings.forms.never":"Nunca","settings.forms.on_otp_copy":"Quando copiar código de segurança","settings.forms.1_minutes":"Após 1 minuto","settings.forms.2_minutes":"Após 2 minutos","settings.forms.5_minutes":"Após 5 minutos","settings.forms.10_minutes":"Após 10 minutos","settings.forms.15_minutes":"Após 15 minutos","settings.forms.30_minutes":"Após 30 minutos","settings.forms.1_hour":"Após 1 hora","settings.forms.1_day":"Após 1 dia","settings.forms.livescan":"QR code livescan","settings.forms.upload":"QR code upload","settings.forms.advanced_form":"Forma avançada","titles.404":"Item não encontrado","titles.start":"Nova conta","titles.capture":"Ler código QR","titles.accounts":"Contas","titles.createAccount":"Criar conta","titles.importAccounts":"Importar contas","titles.editAccount":"Editar conta","titles.showQRcode":"Conta como QR code","titles.groups":"Grupos","titles.createGroup":"Criar grupo","titles.editGroup":"Editar grupo","titles.settings.options":"Opções","titles.settings.account":"Conta de usuário","titles.settings.oauth.tokens":"Código OAuth","titles.settings.oauth.generatePAT":"Novo token pessoal","titles.settings.webauthn.editCredential":"Editar dispositivo","titles.settings.webauthn.devices":"Dispositivos WebAuthn","titles.login":"Login","titles.register":"Registrar","titles.autolock":"Bloqueio automático","titles.password.request":"Redefinir senha","titles.password.reset":"Nova senha","titles.webauthn.lost":"Recuperar conta","titles.webauthn.recover":"Registrar um novo dispositivo","titles.flooded":"Erro Flood","titles.genericError":"Erro","titles.about":"Sobre","titles.admin.appSetup":"Configuração do App","titles.admin.users":"Gerenciamento de usuários","titles.admin.createUser":"Criar usuário","titles.admin.manageUser":"Administrar usuário","titles.admin.logs.access":"Logs de acesso","twofaccounts.service":"Serviço","twofaccounts.account":"Conta","twofaccounts.icon":"Ícone","twofaccounts.icon_to_illustrate_the_account":"Ícone que ilustra a conta","twofaccounts.remove_icon":"Excluir ícone","twofaccounts.no_account_here":"Sem 2FA aqui!","twofaccounts.add_first_account":"Escolha um método e adicione sua primeira conta","twofaccounts.use_full_form":"Ou utilize o formulário completo","twofaccounts.add_one":"Adicione um","twofaccounts.show_qrcode":"Mostrar QR Code","twofaccounts.no_service":"- sem serviço -","twofaccounts.account_created":"Conta criada com sucesso!","twofaccounts.account_updated":"Conta atualizada com sucesso","twofaccounts.accounts_deleted":"Conta(s) excluídas com êxito","twofaccounts.accounts_moved":"Conta(s) movidas com sucesso","twofaccounts.export_selected_accounts":"Exportar contas selecionadas","twofaccounts.twofauth_export_format":"Formato 2FAuth","twofaccounts.twofauth_export_format_sub":`Exporte dados usando o esquema JSON do 2FAuth\r +\r +\r +\r +\r +\r +\r +`,"twofaccounts.twofauth_export_format_desc":"Você pode optar por esta opção caso você precisar criar um backup que possa ser restaurado. Este formato inclui ícones.","twofaccounts.twofauth_export_format_url":"A descrição de definição do esquema:","twofaccounts.twofauth_export_schema":"Esquema de exportação do 2FAuth","twofaccounts.otpauth_export_format":"Parametros da URIs de otpauth","twofaccounts.otpauth_export_format_sub":"Exporte dados em lista de URIs otpauth","twofaccounts.otpauth_export_format_desc":`A URI otpauth é um formato padronizado para compartilhar dados de autenticação de dois fatores (2FA). Esse formato é amplamente utilizado por serviços e aplicativos para facilitar a configuração do 2FA por meio de QR codes. Quando você ativa o 2FA em um site, ele normalmente exibe um código QR que encapsula uma URI otpauth, permitindo que o aplicativo de autenticação (como Google Authenticator, Authy, ou Microsoft Authenticator) escaneie o código e configure automaticamente o 2FA para sua conta.\r +\r +Estrutura da URI otpauth\r +A URI otpauth é composta de informações essenciais para a configuração do 2FA e segue este formato básico:\r +\r +Exemplo:\r otpauth://TYPE/LABEL?secret=SECRET&issuer=ISSUER&digits=DIGITS&period=PERIOD`,"twofaccounts.reveal":"revelar","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"João da Silva","twofaccounts.forms.new_account":"Nova conta","twofaccounts.forms.edit_account":"Editar conta","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Escanear QR code","twofaccounts.forms.upload_qrcode":"Enviar um código QR","twofaccounts.forms.use_advanced_form":"Use o formulário avançado","twofaccounts.forms.prefill_using_qrcode":"Prepreencha usando um código QR","twofaccounts.forms.use_qrcode.val":"Use um código QR","twofaccounts.forms.use_qrcode.title":"Use um código QR para preencher o formulário magicamente","twofaccounts.forms.unlock.val":"Desbloquear","twofaccounts.forms.unlock.title":"Desbloqueie (por sua conta e risco)","twofaccounts.forms.lock.val":"Bloquear","twofaccounts.forms.lock.title":"Bloquear","twofaccounts.forms.choose_image":"Enviar","twofaccounts.forms.i_m_lucky":"Tente a minha sorte","twofaccounts.forms.i_m_lucky_legend":'O botão "Tente a minha sorte" tenta obter o ícone oficial do serviço fornecido. Digite o nome do serviço atual sem a extensão ".xyz" e tente evitar erros de digitação. (recurso beta)',"twofaccounts.forms.test":"Testar","twofaccounts.forms.group.label":"Grupo","twofaccounts.forms.group.help":"O grupo ao qual a conta deve ser atribuída","twofaccounts.forms.secret.label":"Chave","twofaccounts.forms.secret.help":"A chave usada para gerar os seus códigos de segurança","twofaccounts.forms.plain_text":"Texto sem formatação","twofaccounts.forms.otp_type.label":'Escolha o tipo de OTP para criar',"twofaccounts.forms.otp_type.help":"OTP baseado no tempo ou HMAC baseado em OTP ou OTP Steam","twofaccounts.forms.digits.label":"Dígitos","twofaccounts.forms.digits.help":"O número de dígitos dos códigos de segurança gerados","twofaccounts.forms.algorithm.label":"Algoritmo","twofaccounts.forms.algorithm.help":"O algoritmo usado para proteger seus códigos de segurança","twofaccounts.forms.period.label":"Validade","twofaccounts.forms.period.placeholder":"O padrão é 30","twofaccounts.forms.period.help":"O período de validade dos códigos de segurança gerados no segundo","twofaccounts.forms.counter.label":"Contador","twofaccounts.forms.counter.placeholder":"O padrão é 0.","twofaccounts.forms.counter.help":"O valor inicial do contador","twofaccounts.forms.counter.help_lock":"É arriscado editar o contador, pois você pode dessincronizar a conta com o servidor de verificação do serviço. Use o ícone de bloqueio para ativar a modificação, mas apenas se você sabe que está fazendo","twofaccounts.forms.image.label":"","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"A URL de uma imagem externa para usar como ícone de conta","twofaccounts.forms.options_help":"Você pode deixar as seguintes opções em branco se você não sabe como configurá-los. Os valores mais usados serão aplicados.","twofaccounts.forms.alternative_methods":"Métodos alternativos","twofaccounts.forms.spaces_are_ignored":"Espaços indesejados serão removidos automaticamente","twofaccounts.stream.live_scan_cant_start":"Verificação ao vivo não pode iniciar :(","twofaccounts.stream.need_grant_permission.reason":"O 2FAuth não tem permissão para acessar sua câmera","twofaccounts.stream.need_grant_permission.solution":"Você precisa conceder permissão para usar a câmera do seu dispositivo. Se você já negou e o seu navegador não solicita novamente, consulte a documentação do navegador para descobrir como conceder a permissão.","twofaccounts.stream.need_grant_permission.click_camera_icon":"É geralmente feito clicando no ícone da câmera na barra de endereços do navegador ou ao lado da barra de endereços","twofaccounts.stream.not_readable.reason":"Falha ao carregar o scanner","twofaccounts.stream.not_readable.solution":"A câmera já está em uso? Certifique-se de que nenhum outro app usa a câmera e tente novamente","twofaccounts.stream.no_cam_on_device.reason":"Nenhuma câmera neste dispositivo","twofaccounts.stream.no_cam_on_device.solution":"Talvez você tenha se esquecido de conectar sua câmera.","twofaccounts.stream.secured_context_required.reason":"Contexto HTTPS requerido","twofaccounts.stream.secured_context_required.solution":"HTTPS é necessário para varredura ao vivo. Se você executar 2FAuth a partir do seu computador, não use outro host virtual além do localhost","twofaccounts.stream.https_required":"HTTPS necessário para streaming de câmera","twofaccounts.stream.camera_not_suitable.reason":"Câmeras instaladas não são adequadas","twofaccounts.stream.camera_not_suitable.solution":"Por favor, use outro dispositivo/câmera","twofaccounts.stream.stream_api_not_supported.reason":"Stream API não é suportada neste navegador","twofaccounts.stream.stream_api_not_supported.solution":"Você deve usar um navegador moderno","twofaccounts.confirm.delete":"Tem certeza de que quer apagar esta conta?","twofaccounts.confirm.cancel":"As alterações serão perdidas. Tem certeza?","twofaccounts.confirm.discard":"Tem certeza que deseja excluir sua conta?","twofaccounts.confirm.discard_all":"Tem certeza de que deseja excluir todas as contas?","twofaccounts.confirm.discard_duplicates":"Você tem certeza que deseja excluir todas as duplicatas?","twofaccounts.import.import":"Importar","twofaccounts.import.to_import":"Importar","twofaccounts.import.import_legend":"2FAuth pode importar dados de vários aplicativos 2FA.","twofaccounts.import.import_legend_afterpart":"Use o recurso de exportação destes aplicativos para obter um recurso de migração como um código QR ou um arquivo JSON, então carregue-o aqui.","twofaccounts.import.upload":"Carregar","twofaccounts.import.scan":"Ler","twofaccounts.import.supported_formats_for_qrcode_upload":"Aceito: jpg, jpeg, png, bmp, gif, svg ou webp","twofaccounts.import.supported_formats_for_file_upload":"Aceito: Texto simples, json, 2fas","twofaccounts.import.expected_format_for_direct_input":"Esperado: Uma lista de otpauth URI, uma por linha","twofaccounts.import.supported_migration_formats":"Formatos de migração suportados","twofaccounts.import.qr_code":"Código QR","twofaccounts.import.text_file":"Arquivo de texto","twofaccounts.import.direct_input":"Entrada direta","twofaccounts.import.plain_text":"Texto sem formatação","twofaccounts.import.parsing_data":"Processando dados...","twofaccounts.import.issuer":"Emissor","twofaccounts.import.imported":"Importado","twofaccounts.import.failure":"Falha","twofaccounts.import.x_valid_accounts_found":"Encontradas :count contas válidas","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"As seguintes contas 2FA foram encontradas no recurso de migração. Até agora, nenhuma delas foi adicionada ao 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Use os botões disponíveis para salvá-los permanentemente em sua coleção de 2FA ou descartá-los.","twofaccounts.import.import_all":"Importar todos","twofaccounts.import.import_this_account":"Importar esta conta","twofaccounts.import.discard_all":"Descartar tudo","twofaccounts.import.discard_duplicates":"Descartar duplicatas","twofaccounts.import.discard_this_account":"Descartar esta conta","twofaccounts.import.generate_a_test_password":"Gerar senha de teste","twofaccounts.import.possible_duplicate":"Uma conta com os mesmos dados já existe","twofaccounts.import.invalid_account":"- conta inválida -","twofaccounts.import.invalid_service":"- serviço inválido -","twofaccounts.import.do_not_set_password_or_encryption":"Não habilite a proteção de senha ou criptografia quando você exportar dados de um aplicativo 2FA caso contrário, 2FAuth não será capaz de decifrá-los.","validation.accepted":"O campo :attribute deve ser aceito.","validation.accepted_if":"O :attribute deve ser aceito quando :other for :value.","validation.active_url":"O :attribute não é uma URL válida.","validation.after":"O :attribute deve ser uma data posterior a :date.","validation.after_or_equal":"O :attribute deve ser uma data posterior ou igual a :date.","validation.alpha":"O :attribute deve conter apenas letras.","validation.alpha_dash":"O :attribute deve conter apenas letras, números, traços e sublinhados.","validation.alpha_num":"O :attribute deve conter apenas letras e números.","validation.array":"O :attribute deve ser uma matriz.","validation.ascii":"O campo :attribute deve conter apenas caracteres alfanuméricos e símbolos de um único byte.","validation.before":"O :attribute deve ser uma data anterior a :date.","validation.before_or_equal":"O :attribute deve ser uma data anterior ou igual a :date.","validation.between.array":"O :attribute deve ter entre :min e :max itens.","validation.between.file":"O :attribute deve ter entre :min e :max kilobytes.","validation.between.numeric":"O :attribute deve estar entre :min e :max.","validation.between.string":"O :attribute deve ter entre :min e :max caracteres.","validation.boolean":"O campo :attribute deve ser verdadeiro ou falso.","validation.can":"O campo :attribute contém um valor não autorizado.","validation.confirmed":"A confirmação de :attribute não corresponde.","validation.contains":"O campo :attribute está faltando um valor obrigatório.","validation.current_password":"A senha está incorreta.","validation.date":"O :attribute não é uma data válida.","validation.date_equals":"O :attribute deve ser uma data igual a :date.","validation.date_format":"O :attribute não corresponde ao formato :format.","validation.decimal":"O campo :attribute deve ter :decimal casas decimais.","validation.declined":"O :attribute deve ser recusado.","validation.declined_if":"O :attribute deve ser recusado quando :other for :value.","validation.different":"O :attribute e :other devem ser diferentes.","validation.digits":"O :attribute deve ter :digits dígitos.","validation.digits_between":"O :attribute deve ter entre :min e :max dígitos.","validation.dimensions":"O :attribute tem dimensões de imagem inválidas.","validation.distinct":"O campo :attribute tem um valor duplicado.","validation.doesnt_end_with":"O :attribute não pode terminar com um dos seguintes: :values.","validation.doesnt_start_with":"O :attribute não pode começar com um dos seguintes: :values.","validation.email":"O :attribute deve ser um endereço de e-mail válido.","validation.ends_with":"O :attribute deve terminar com um dos seguintes: :values.","validation.enum":"O :attribute selecionado é inválido.","validation.exists":"O :attribute selecionado é inválido.","validation.extensions":"O campo :attribute deve ter uma das seguintes extensões: :values.","validation.file":"O :attribute deve ser um arquivo.","validation.filled":"O campo :attribute deve ter um valor.","validation.gt.array":"O :attribute deve ter mais de :value itens.","validation.gt.file":"O :attribute deve ser maior que :value kilobytes.","validation.gt.numeric":"O :attribute deve ser maior que :value.","validation.gt.string":"O :attribute deve ser maior que :value caracteres.","validation.gte.array":"O :attribute deve ter :value itens ou mais.","validation.gte.file":"O :attribute deve ser maior ou igual a :value kilobytes.","validation.gte.numeric":"O :attribute deve ser maior ou igual a :value.","validation.gte.string":"O :attribute deve ser maior ou igual a :value caracteres.","validation.hex_color":"O campo :attribute deve ser uma cor hexadecimal válida.","validation.image":"O :attribute deve ser uma imagem.","validation.in":"O :attribute selecionado é inválido.","validation.in_array":"O campo :attribute não existe em :other.","validation.integer":"O :attribute deve ser um número inteiro.","validation.ip":"O :attribute deve ser um endereço IP válido.","validation.ipv4":"O :attribute deve ser um endereço IPv4 válido.","validation.ipv6":"O :attribute deve ser um endereço IPv6 válido.","validation.json":"O :attribute deve ser uma string JSON válida.","validation.list":"O campo :attribute deve ser uma lista.","validation.lowercase":"O campo :attribute deve estar em letras minúsculas.","validation.lt.array":"O :attribute deve ter menos de :value itens.","validation.lt.file":"O :attribute deve ser menor que :value kilobytes.","validation.lt.numeric":"O :attribute deve ser menor que :value.","validation.lt.string":"O :attribute deve ser menor que :value caracteres.","validation.lte.array":"O :attribute não deve ter mais de :value itens.","validation.lte.file":"O :attribute deve ser menor ou igual a :value kilobytes.","validation.lte.numeric":"O :attribute deve ser menor ou igual a :value.","validation.lte.string":"O :attribute deve ser menor ou igual a :value caracteres.","validation.mac_address":"O :attribute deve ser um endereço MAC válido.","validation.max.array":"O :attribute não deve ter mais de :max itens.","validation.max.file":"O :attribute não deve ser maior que :max kilobytes.","validation.max.numeric":"O :attribute não deve ser maior que :max.","validation.max.string":"O :attribute não deve ser maior que :max caracteres.","validation.max_digits":"O :attribute não deve ter mais de :max dígitos.","validation.mimes":"O :attribute deve ser um arquivo do tipo: :values.","validation.mimetypes":"O :attribute deve ser um arquivo do tipo: :values.","validation.min.array":"O :attribute deve ter pelo menos :min itens.","validation.min.file":"O :attribute deve ter pelo menos :min kilobytes.","validation.min.numeric":"O :attribute deve ser pelo menos :min.","validation.min.string":"O :attribute deve ter pelo menos :min caracteres.","validation.min_digits":"O :attribute deve ter pelo menos :min dígitos.","validation.missing":"O campo :attribute deve estar ausente.","validation.missing_if":"O campo :attribute deve estar ausente quando :other é :value.","validation.missing_unless":"O campo :attribute deve estar ausente, a menos que :other seja :value.","validation.missing_with":"O campo :attribute deve estar ausente quando :values estiver presente.","validation.missing_with_all":"O campo :attribute deve estar ausente quando :values estiverem presentes.","validation.multiple_of":"O :attribute deve ser um múltiplo de :value.","validation.not_in":"O :attribute selecionado é inválido.","validation.not_regex":"O formato de :attribute é inválido.","validation.numeric":"O :attribute deve ser um número.","validation.password.letters":"O :attribute deve conter pelo menos uma letra.","validation.password.mixed":"O :attribute deve conter pelo menos uma letra maiúscula e uma letra minúscula.","validation.password.numbers":"O :attribute deve conter pelo menos um número.","validation.password.symbols":"O :attribute deve conter pelo menos um símbolo.","validation.password.uncompromised":"O :attribute fornecido apareceu em um vazamento de dados. Escolha um :attribute diferente.","validation.present":"O campo :attribute deve estar presente.","validation.present_if":"O campo :attribute deve estar presente quando :other for :value.","validation.present_unless":"O campo :attribute deve estar presente, a menos que :other seja :value.","validation.present_with":"O campo :attribute deve estar presente quando :values estiver presente.","validation.present_with_all":"O campo :attribute deve estar presente quando :values estiverem presentes.","validation.prohibited":"O campo :attribute é proibido.","validation.prohibited_if":"O campo :attribute é proibido quando :other for :value.","validation.prohibited_unless":"O campo :attribute é proibido, a menos que :other esteja em :values.","validation.prohibits":"O campo :attribute proíbe :other de estar presente.","validation.regex":"O formato de :attribute é inválido.","validation.required":"O campo :attribute é obrigatório.","validation.required_array_keys":"O campo :attribute deve conter entradas para: :values.","validation.required_if":"O campo :attribute é obrigatório quando :other for :value.","validation.required_if_accepted":"O campo :attribute é obrigatório quando :other for aceito.","validation.required_if_declined":"O campo :attribute é obrigatório quando :other for recusado.","validation.required_unless":"O campo :attribute é obrigatório, a menos que :other esteja em :values.","validation.required_with":"O campo :attribute é obrigatório quando :values está presente.","validation.required_with_all":"O campo :attribute é obrigatório quando :values estão presentes.","validation.required_without":"O campo :attribute é obrigatório quando :values não está presente.","validation.required_without_all":"O campo :attribute é obrigatório quando nenhum dos :values está presente.","validation.same":"O :attribute e :other devem coincidir.","validation.size.array":"O :attribute deve conter :size itens.","validation.size.file":"O :attribute deve ter :size kilobytes.","validation.size.numeric":"O :attribute deve ser :size.","validation.size.string":"O :attribute deve ter :size caracteres.","validation.starts_with":"O :attribute deve começar com um dos seguintes: :values.","validation.string":"O :attribute deve ser uma string.","validation.timezone":"O :attribute deve ser um fuso horário válido.","validation.unique":"O :attribute já foi utilizado.","validation.uploaded":"O :attribute falhou ao ser enviado.","validation.uppercase":"O campo :attribute deve estar em letras maiúsculas.","validation.url":"O :attribute deve ser uma URL válida.","validation.ulid":"O campo :attribute deve ser um é um identificador único válido.","validation.uuid":"O :attribute deve ser um UUID válido.","validation.single":"Ao usar :attribute, ele deve ser o único parâmetro no corpo da solicitação","validation.onlyCustomOtpWithUri":"O parâmetro uri deve ser fornecido sozinho ou apenas em combinação com o parâmetro 'custom_otp'","validation.IsValidRegex":"O :attribute deve ser um padrão regex válido.","validation.custom.icon.image":"Os formatos suportados são jpeg, png, bmp, gif, svg ou webp.","validation.custom.qrcode.image":"Os formatos suportados são jpeg, png, bmp, gif, svg ou webp.","validation.custom.uri.regex":"O :attribute não é uma URI otpauth válida.","validation.custom.otp_type.in":"O :attribute não é suportado.","validation.custom.email.exists":"Nenhuma conta encontrada usando este e-mail.","validation.custom.email.ComplyWithEmailRestrictionPolicy":"Este endereço de e-mail não está em conformidade com a política de registro.","validation.custom.email.IsValidEmailList":"Todos os e-mails devem ser válidos e separados por um pipe.","validation.custom.secret.isBase32Encoded":"O :attribute deve ser uma string codificada em base32.","validation.custom.account.regex":"O :attribute não deve conter dois-pontos.","validation.custom.service.regex":"O :attribute não deve conter dois-pontos.","validation.custom.label.required":"A URI deve ter um rótulo.","validation.custom.ids.regex":"IDs devem ser separados por vírgula, sem vírgula no final."};export{e as default}; diff --git a/public/build/assets/php_ro-dfeCo_fC.js b/public/build/assets/php_ro-Cgf1xQ8g.js similarity index 99% rename from public/build/assets/php_ro-dfeCo_fC.js rename to public/build/assets/php_ro-Cgf1xQ8g.js index 3c81508a..ab437d3b 100644 --- a/public/build/assets/php_ro-dfeCo_fC.js +++ b/public/build/assets/php_ro-Cgf1xQ8g.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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":"Дата последнего визита :date","admin.registered_on_date":"Зарегистрирован :date","admin.updated_on_date":"Обновлён :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","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.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Are you sure you want to log out?","auth.confirm.revoke_device":"Are you sure you want to revoke this device?","auth.confirm.delete_account":"Are you sure you want to delete your account?","auth.webauthn.security_device":"a security device","auth.webauthn.security_devices":"Security devices","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

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

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

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

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.admin_panel":"Admin panel","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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":"Дата последнего визита :date","admin.registered_on_date":"Зарегистрирован :date","admin.updated_on_date":"Обновлён :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","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.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Are you sure you want to log out?","auth.confirm.revoke_device":"Are you sure you want to revoke this device?","auth.confirm.delete_account":"Are you sure you want to delete your account?","auth.webauthn.security_device":"a security device","auth.webauthn.security_devices":"Security devices","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

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

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

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

\r Attention! The Email & Password form remains available despite this option being enabled, but it will always return an 'Authentication failed' response.`,"auth.webauthn.need_a_security_device_to_enable_options":"Set at least one device to enable the following options","auth.webauthn.options":"Options","auth.forms.name":"Name","auth.forms.login":"Login","auth.forms.webauthn_login":"WebAuthn login","auth.forms.sso_login":"SSO 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.sso_only_form_restricted_to_admin":"Regular users must sign in with SSO. Other methods are for administrators only.","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","auth.sso_providers.unknown":"unknown","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","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.send":"Send","commons.optimize":"Optimize","commons.IP":"IP","commons.browser":"Browser","commons.operating_system_short":"OS","commons.no_entry_yet":"No entry yet","commons.time":"Time","commons.ip_address":"IP Address","commons.device":"Device","commons.one_month":"1 mo.","commons.x_month":":x mos.","commons.one_year":"1 yr.","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 or SSO","errors.unsupported_with_sso_only":"This authentication method is for administrators only. Users must log in with SSO.","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.cannot_demote_the_only_admin":"Cannot demote 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.cannot_detect_qrcode_in_image":"Cannot detect a QR code in the image, try to crop the image","errors.cannot_decode_detected_qrcode":"Cannot decode detected QR code, try to crop or sharpen the image","errors.qrcode_has_invalid_checksum":"QR code has invalid checksum","errors.no_readable_qrcode":"No readable QR code","errors.failed_icon_store_database_toggling":"Migration of icons failed. The setting has been restored to its previous value.","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)","languages.tr":"Türkçe (Turkish)","notifications.hello":"Hello","notifications.hello_user":"Hello :username,","notifications.regards":"Regards","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 :)","notifications.new_device.subject":"Connection to 2FAuth from a new device","notifications.new_device.resume":"A new device has just connected to your 2FAuth account.","notifications.new_device.connection_details":"Here are the details of this connection","notifications.new_device.recommandations":"If this was you, you can ignore this alert. If you suspect any suspicious activity on your account, please change your password.","notifications.failed_login.subject":"Failed login to 2FAuth","notifications.failed_login.resume":"There has been a failed login attempt to your 2FAuth account.","notifications.failed_login.connection_details":"Here are the details of this connection attempt","notifications.failed_login.recommandations":"If this was you, you can ignore this alert. If further attempts fail, you should contact the 2FAuth administrator to review security settings and take action against this attacker.","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.notifications":"Notifications","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.timezone.label":"Time zone","settings.forms.timezone.help":"The time zone applied to all dates and times displayed in the application","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":"Click on a generated password to copy it automatically hides it from the screen","settings.forms.auto_close_timeout.label":'Auto close OTP',"settings.forms.auto_close_timeout.help":"Automatically hide on-screen password after a timeout. This avoids unnecessary requests for fresh passwords if you forget to close the password view.","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.sort_case_sensitive.label":"Sort case sensitive","settings.forms.sort_case_sensitive.help":"When invoked, force the Sort function to sort accounts on a case-sensitive basis","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 account icons 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.auto_save_qrcoded_account.label":"Auto-save accounts","settings.forms.auto_save_qrcoded_account.help":"New accounts are automatically registered after scanning or uploading a QR code, no need to click a Save button","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.notify_on_new_auth_device.label":"On new device","settings.forms.notify_on_new_auth_device.help":"Get an email when a new device connects to your 2FAuth account for the first time","settings.forms.notify_on_failed_login.label":"On failed login","settings.forms.notify_on_failed_login.help":"Get an email each time an attempt to connect to your 2FAuth account fails","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","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.2_minutes":"After 2 minutes","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","titles.admin.logs.access":"Access log","twofaccounts.service":"Service","twofaccounts.account":"Account","twofaccounts.icon":"Icon","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_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","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.group.label":"Group","twofaccounts.forms.group.help":"The group to which the account is to be assigned","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 field must be accepted.","validation.accepted_if":"The :attribute field must be accepted when :other is :value.","validation.active_url":"The :attribute field must be a valid URL.","validation.after":"The :attribute field must be a date after :date.","validation.after_or_equal":"The :attribute field must be a date after or equal to :date.","validation.alpha":"The :attribute field must only contain letters.","validation.alpha_dash":"The :attribute field must only contain letters, numbers, dashes, and underscores.","validation.alpha_num":"The :attribute field must only contain letters and numbers.","validation.array":"The :attribute field must be an array.","validation.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","validation.before":"The :attribute field must be a date before :date.","validation.before_or_equal":"The :attribute field must be a date before or equal to :date.","validation.between.array":"The :attribute field must have between :min and :max items.","validation.between.file":"The :attribute field must be between :min and :max kilobytes.","validation.between.numeric":"The :attribute field must be between :min and :max.","validation.between.string":"The :attribute field 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 field confirmation does not match.","validation.contains":"The :attribute field is missing a required value.","validation.current_password":"The password is incorrect.","validation.date":"The :attribute field must be a valid date.","validation.date_equals":"The :attribute field must be a date equal to :date.","validation.date_format":"The :attribute field must match the format :format.","validation.decimal":"The :attribute field must have :decimal decimal places.","validation.declined":"The :attribute field must be declined.","validation.declined_if":"The :attribute field must be declined when :other is :value.","validation.different":"The :attribute field and :other must be different.","validation.digits":"The :attribute field must be :digits digits.","validation.digits_between":"The :attribute field must be between :min and :max digits.","validation.dimensions":"The :attribute field has invalid image dimensions.","validation.distinct":"The :attribute field has a duplicate value.","validation.doesnt_end_with":"The :attribute field must not end with one of the following: :values.","validation.doesnt_start_with":"The :attribute field must not start with one of the following: :values.","validation.email":"The :attribute field must be a valid email address.","validation.ends_with":"The :attribute field 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 field must be a file.","validation.filled":"The :attribute field must have a value.","validation.gt.array":"The :attribute field must have more than :value items.","validation.gt.file":"The :attribute field must be greater than :value kilobytes.","validation.gt.numeric":"The :attribute field must be greater than :value.","validation.gt.string":"The :attribute field must be greater than :value characters.","validation.gte.array":"The :attribute field must have :value items or more.","validation.gte.file":"The :attribute field must be greater than or equal to :value kilobytes.","validation.gte.numeric":"The :attribute field must be greater than or equal to :value.","validation.gte.string":"The :attribute field 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 field must be an image.","validation.in":"The selected :attribute is invalid.","validation.in_array":"The :attribute field must exist in :other.","validation.integer":"The :attribute field must be an integer.","validation.ip":"The :attribute field must be a valid IP address.","validation.ipv4":"The :attribute field must be a valid IPv4 address.","validation.ipv6":"The :attribute field must be a valid IPv6 address.","validation.json":"The :attribute field must be a valid JSON string.","validation.list":"The :attribute field must be a list.","validation.lowercase":"The :attribute field must be lowercase.","validation.lt.array":"The :attribute field must have less than :value items.","validation.lt.file":"The :attribute field must be less than :value kilobytes.","validation.lt.numeric":"The :attribute field must be less than :value.","validation.lt.string":"The :attribute field must be less than :value characters.","validation.lte.array":"The :attribute field must not have more than :value items.","validation.lte.file":"The :attribute field must be less than or equal to :value kilobytes.","validation.lte.numeric":"The :attribute field must be less than or equal to :value.","validation.lte.string":"The :attribute field must be less than or equal to :value characters.","validation.mac_address":"The :attribute field must be a valid MAC address.","validation.max.array":"The :attribute field must not have more than :max items.","validation.max.file":"The :attribute field must not be greater than :max kilobytes.","validation.max.numeric":"The :attribute field must not be greater than :max.","validation.max.string":"The :attribute field must not be greater than :max characters.","validation.max_digits":"The :attribute field must not have more than :max digits.","validation.mimes":"The :attribute field must be a file of type: :values.","validation.mimetypes":"The :attribute field must be a file of type: :values.","validation.min.array":"The :attribute field must have at least :min items.","validation.min.file":"The :attribute field must be at least :min kilobytes.","validation.min.numeric":"The :attribute field must be at least :min.","validation.min.string":"The :attribute field must be at least :min characters.","validation.min_digits":"The :attribute field 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 field must be a multiple of :value.","validation.not_in":"The selected :attribute is invalid.","validation.not_regex":"The :attribute field format is invalid.","validation.numeric":"The :attribute field must be a number.","validation.password.letters":"The :attribute field must contain at least one letter.","validation.password.mixed":"The :attribute field must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The :attribute field must contain at least one number.","validation.password.symbols":"The :attribute field 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 field 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_if_declined":"The :attribute field is required when :other is declined.","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 field must match :other.","validation.size.array":"The :attribute field must contain :size items.","validation.size.file":"The :attribute field must be :size kilobytes.","validation.size.numeric":"The :attribute field must be :size.","validation.size.string":"The :attribute field must be :size characters.","validation.starts_with":"The :attribute field must start with one of the following: :values.","validation.string":"The :attribute field must be a string.","validation.timezone":"The :attribute field 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 field must be a valid URL.","validation.ulid":"The :attribute field must be a valid ULID.","validation.uuid":"The :attribute field 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.IsValidRegex":"The :attribute field must be a valid regex pattern.","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 field is not a valid otpauth uri.","validation.custom.otp_type.in":"The :attribute field 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 field must be a base32 encoded string.","validation.custom.account.regex":"The :attribute field must not contain colon.","validation.custom.service.regex":"The :attribute field 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-CC34pEtg.js b/public/build/assets/php_ru-BHhdv2c6.js similarity index 99% rename from public/build/assets/php_ru-CC34pEtg.js rename to public/build/assets/php_ru-BHhdv2c6.js index f52b8ce1..f0018341 100644 --- a/public/build/assets/php_ru-CC34pEtg.js +++ b/public/build/assets/php_ru-BHhdv2c6.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"Администратор","admin.admin_panel":"Admin panel","admin.app_setup":"Настройки приложения","admin.auth":"Авторизация","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.successful_login_on":'Успешный вход :login_at',"admin.successful_logout_on":'Успешный выход :login_at',"admin.failed_login_on":'Ошибка входа :login_at',"admin.viewed_on":'Просмотрено :login_at',"admin.last_accesses":"Последний доступ","admin.see_full_log":"Смотреть полный журнал","admin.browser_on_platform":":browser на :platform","admin.access_log_has_more_entries":"Журнал доступа содержит больше записей.","admin.access_log_legend_for_user":"Полный журнал доступа пользователя :username","admin.show_last_month_log":"Показать записи за последний месяц","admin.show_three_months_log":"Показать записи за последние 3 месяца","admin.show_six_months_log":"Показать записи за последние 6 месяцев","admin.show_one_year_log":"Показать записи за последний год","admin.sort_by_date_asc":"Показать сначала первые","admin.sort_by_date_desc":"Показать сначала последние","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"База данных","admin.file_system":"Файловая система","admin.storage":"Хранилище","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":"Включить SSO","admin.forms.enable_sso.help":"Разрешить посетителям аутентифицироваться с использованием внешнего ID через схему Single Sign-On","admin.forms.use_sso_only.label":"Использовать только SSO","admin.forms.use_sso_only.help":"Сделать SSO единственным доступным методом для входа в 2FAuth. Вход в систему по паролю и Webauthn будут отключены для обычных пользователей. Это ограничение не затрагивает администраторов.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL, который вы можете посетить, чтобы проверить состояние этого экземпляра 2FAuth. Этот URL-адрес может быть использован для HEALTHCHECK в Docker или HTTPS Liveness probe в Kubernetes.","admin.forms.cache_management.label":"Управление кэшем","admin.forms.cache_management.help":"Иногда кэш должен быть очищен, например, после изменения переменных окружения или обновления приложения. Вы можете сделать это отсюда.","admin.forms.store_icon_to_database.label":"Сохранять значки в базе данных","admin.forms.store_icon_to_database.help":"Загруженные значки регистрируются в базе данных в дополнение к файловому хранилищу, которое затем используется только в качестве кэша. Это облегчает создание резервной копии 2FAuth, так как необходимо создавать резервную копию только базы данных.

Но будьте осторожны, это может иметь некоторые недостатки: Размер базы данных может значительно увеличиться, если используется много крупных значков. Это также может повлиять на производительность приложения, потому что файловая система используется чаще, чтобы убедиться, что она синхронизирована с базой данных.","auth.failed":"Неверное имя пользователя или пароль.","auth.password":"Некорректный пароль.","auth.throttle":"Слишком много попыток входа. Пожалуйста, попробуйте еще раз через :seconds секунд.","auth.sign_out":"Выйти","auth.sign_in":"Войти","auth.sign_in_using":"Войти с помощью","auth.if_administrator":"Администратор?","auth.sign_in_here":"Вы можете войти без SSO","auth.or_continue_with":"Также вы можете продолжить с:","auth.password_login_and_webauthn_are_disabled":"Вход с помощью пароля и WebAuthn отключен.","auth.sign_in_using_sso":"Выберите поставщика SSO для авторизации:","auth.no_provider":"нет поставщика","auth.no_sso_provider_or_provider_is_missing":"Поставщик отсутствует?","auth.see_how_to_enable_sso":"Посмотрите, как включить поставщика","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.sso_only_x_settings_are_disabled":"Аутентификация ограничена только SSO, :auth_method отключен","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.

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

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"Администратор","admin.admin_panel":"Admin panel","admin.app_setup":"Настройки приложения","admin.auth":"Авторизация","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.successful_login_on":'Успешный вход :login_at',"admin.successful_logout_on":'Успешный выход :login_at',"admin.failed_login_on":'Ошибка входа :login_at',"admin.viewed_on":'Просмотрено :login_at',"admin.last_accesses":"Последний доступ","admin.see_full_log":"Смотреть полный журнал","admin.browser_on_platform":":browser на :platform","admin.access_log_has_more_entries":"Журнал доступа содержит больше записей.","admin.access_log_legend_for_user":"Полный журнал доступа пользователя :username","admin.show_last_month_log":"Показать записи за последний месяц","admin.show_three_months_log":"Показать записи за последние 3 месяца","admin.show_six_months_log":"Показать записи за последние 6 месяцев","admin.show_one_year_log":"Показать записи за последний год","admin.sort_by_date_asc":"Показать сначала первые","admin.sort_by_date_desc":"Показать сначала последние","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"База данных","admin.file_system":"Файловая система","admin.storage":"Хранилище","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":"Включить SSO","admin.forms.enable_sso.help":"Разрешить посетителям аутентифицироваться с использованием внешнего ID через схему Single Sign-On","admin.forms.use_sso_only.label":"Использовать только SSO","admin.forms.use_sso_only.help":"Сделать SSO единственным доступным методом для входа в 2FAuth. Вход в систему по паролю и Webauthn будут отключены для обычных пользователей. Это ограничение не затрагивает администраторов.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL, который вы можете посетить, чтобы проверить состояние этого экземпляра 2FAuth. Этот URL-адрес может быть использован для HEALTHCHECK в Docker или HTTPS Liveness probe в Kubernetes.","admin.forms.cache_management.label":"Управление кэшем","admin.forms.cache_management.help":"Иногда кэш должен быть очищен, например, после изменения переменных окружения или обновления приложения. Вы можете сделать это отсюда.","admin.forms.store_icon_to_database.label":"Сохранять значки в базе данных","admin.forms.store_icon_to_database.help":"Загруженные значки регистрируются в базе данных в дополнение к файловому хранилищу, которое затем используется только в качестве кэша. Это облегчает создание резервной копии 2FAuth, так как необходимо создавать резервную копию только базы данных.

Но будьте осторожны, это может иметь некоторые недостатки: Размер базы данных может значительно увеличиться, если используется много крупных значков. Это также может повлиять на производительность приложения, потому что файловая система используется чаще, чтобы убедиться, что она синхронизирована с базой данных.","auth.failed":"Неверное имя пользователя или пароль.","auth.password":"Некорректный пароль.","auth.throttle":"Слишком много попыток входа. Пожалуйста, попробуйте еще раз через :seconds секунд.","auth.sign_out":"Выйти","auth.sign_in":"Войти","auth.sign_in_using":"Войти с помощью","auth.if_administrator":"Администратор?","auth.sign_in_here":"Вы можете войти без SSO","auth.or_continue_with":"Также вы можете продолжить с:","auth.password_login_and_webauthn_are_disabled":"Вход с помощью пароля и WebAuthn отключен.","auth.sign_in_using_sso":"Выберите поставщика SSO для авторизации:","auth.no_provider":"нет поставщика","auth.no_sso_provider_or_provider_is_missing":"Поставщик отсутствует?","auth.see_how_to_enable_sso":"Посмотрите, как включить поставщика","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.sso_only_x_settings_are_disabled":"Аутентификация ограничена только SSO, :auth_method отключен","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.

\r + 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.

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

\r Внимание! Форма электронной почты и пароля остаётся доступной, несмотря на то, что эта опция включена, но она всегда будет возвращать ответ «Ошибка аутентификации».`,"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.sso_login":"Вход с использованием SSO","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.sso_only_form_restricted_to_admin":"Обычные пользователи должны войти в систему с помощью SSO. Другие методы предназначены только для администратора.","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 включен","auth.sso_providers.unknown":"неизвестен","auth.sso_providers.github":"GitHub","auth.sso_providers.openid":"OpenID","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.send":"Отправить","commons.optimize":"Оптимизировать","commons.IP":"IP","commons.browser":"Браузер","commons.operating_system_short":"Операционная система","commons.no_entry_yet":"Пока нет записей","commons.time":"Время","commons.ip_address":"IP Адрес","commons.device":"Устройство","commons.one_month":"1 мес.","commons.x_month":":x мес.","commons.one_year":"1 г.","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":"Не применимо при использовании прокси-аутентификации или SSO","errors.unsupported_with_sso_only":"Этот метод аутентификации предназначен только для администраторов. Пользователи должны войти в систему с помощью SSO.","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.cannot_demote_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":"Для этого пользователя сброс пароля недоступен","errors.cannot_detect_qrcode_in_image":"Невозможно обнаружить QR-код на изображении, попробуйте обрезать изображение","errors.cannot_decode_detected_qrcode":"Не удается декодировать обнаруженный QR-код, попробуйте обрезать или сделать изображение более резким","errors.qrcode_has_invalid_checksum":"QR-код имеет некорректную контрольную сумму","errors.no_readable_qrcode":"Нет читаемого QR кода","errors.failed_icon_store_database_toggling":"Не удалось перенести значки. Настройки были восстановлены в предыдущее значение.","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":"हिंदी (Хинди)","languages.tr":"Türkçe (Турецкий)","notifications.hello":"Привет","notifications.hello_user":"Привет, :username,","notifications.regards":"С наилучшими пожеланиями","notifications.test_email_settings.subject":"Тестовое письмо 2FAuth","notifications.test_email_settings.reason":"Вы получили это письмо, потому что вы запросили тестовое письмо, чтобы проверить настройки электронной почты вашего экземпляра 2FAuth.","notifications.test_email_settings.success":"Хорошие новости! Всё работает! :-)","notifications.new_device.subject":"Подключение к 2FAuth с нового устройства","notifications.new_device.resume":"Новое устройство только что подключилось к вашей учётной записи 2FAuth.","notifications.new_device.connection_details":"Информация об этом подключении","notifications.new_device.recommandations":"Если это вы, то вы можете проигнорировать это уведомление. Если вы подозреваете, что какое-либо подозрительное действие с вашей учётной записью, измените ваш пароль.","notifications.failed_login.subject":"Не удалось войти в 2FAuth","notifications.failed_login.resume":"Произошла неудачная попытка входа в вашу учётную запись 2FAuth.","notifications.failed_login.connection_details":"Подробности об этой попытке подключения","notifications.failed_login.recommandations":"Если это были вы, можете проигнорировать это предупреждение. Если дальнейшие попытки не удались, свяжитесь с администратором 2FAuth для проверки настроек безопасности и принятия мер против этого атакующего.","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.notifications":"Уведомления","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.timezone.label":"Часовой пояс","settings.forms.timezone.help":"Часовой пояс применяется ко всем датам и временам, отображаемым в приложении","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.auto_close_timeout.label":'Авто закрытие OTP',"settings.forms.auto_close_timeout.help":"Автоматически скрывать пароль с экрана после таймаута. Это позволяет избежать ненужных запросов свежих паролей, если вы забыли закрыть просмотр пароля.","settings.forms.clear_search_on_copy.label":"Очистить поиск при копировании","settings.forms.clear_search_on_copy.help":"Очистить строку поиска сразу после копирования кода в буфер обмена","settings.forms.sort_case_sensitive.label":"Учитывать регистр символов","settings.forms.sort_case_sensitive.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":"Show account icons in the main view","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.auto_save_qrcoded_account.label":"Автосохранение учётных записей","settings.forms.auto_save_qrcoded_account.help":'Новые учётные записи автоматически регистрируются после сканирования или загрузки QR-кода без необходимости нажимать кнопку "Сохранить"',"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.notify_on_new_auth_device.label":"С нового устройства","settings.forms.notify_on_new_auth_device.help":"Получать email, когда новое устройства подключается к вашей учётной записи 2FAuth","settings.forms.notify_on_failed_login.label":"При неудачном входе","settings.forms.notify_on_failed_login.help":"Получать email при каждой неудачной попытке войти в вашу учётную запись 2FAuth","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","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.2_minutes":"Через 2 минуты","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":"Управление пользователем","titles.admin.logs.access":"Журнал доступа","twofaccounts.service":"Сервис","twofaccounts.account":"Учётная запись","twofaccounts.icon":"Значок","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_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","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.group.label":"Группа","twofaccounts.forms.group.help":"Группа, к которой будет привязана учётная запись","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.ascii":"Значение поля :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.can":"Значение поля :attribute содержит недопустимое значение.","validation.confirmed":"Значение :attribute не совпадает.","validation.contains":"Значение поля :attribute не содержит обязательного значения.","validation.current_password":"Неверный пароль.","validation.date":"Значение поля :attribute должно быть корректной датой.","validation.date_equals":"Значение поля :attribute должно быть датой равной :date.","validation.date_format":"Значение :attribute должно соответствовать формату :format.","validation.decimal":"Значение поля :attribute должно содержать :decimal цифр десятичных разрядов.","validation.declined":"Вы должны отклонить :attribute.","validation.declined_if":"Значение поля :attribute должно отсутствовать, когда :other равно :value.","validation.different":"Значения полей :attribute и :other должны различаться.","validation.digits":"Значение поля :attribute должно быть числом.","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.extensions":"Файл в поле :attribute должен иметь одно из следующих расширений: :values.","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.hex_color":"Значение поля :attribute должно быть корректным цветом в шестнадцатеричном формате.","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.list":"Значение поля :attribute должно быть списком.","validation.lowercase":"Значение поля :attribute должно быть в нижнем регистре.","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 должно быть больше :value.","validation.max.file":"Размер файла в поле :attribute не может быть больше :max килобайт.","validation.max.numeric":"Значение поля :attribute должно быть не больше чем :value.","validation.max.string":"Значение поля :attribute должно содержать не больше :value символа(ов).","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.missing":"Значение поля :attribute должно отсутствовать.","validation.missing_if":"Значение поля :attribute должно отсутствовать, когда :other равно :value.","validation.missing_unless":"Значение поля :attribute должно отсутствовать, пока :other равно :value.","validation.missing_with":"Значение поля :attribute должно отсутствовать, если :values указано.","validation.missing_with_all":"Значение поля :attribute должно отсутствовать, если :values указано.","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.present_if":"Поле :attribute должно присутствовать, если :other равно :value.","validation.present_unless":"Значение поля :attribute должно присутствовать, пока :other равно :value.","validation.present_with":"Значение поля :attribute должно присутствовать, если присутствует :values.","validation.present_with_all":"Значение поля :attribute должно присутствовать, если присутствует :values.","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_if_declined":"Значение поля :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.uppercase":"Значение поля :attribute должно быть в верхнем регистре.","validation.url":"Значение поля :attribute должно быть корректным URL.","validation.ulid":"Значение поля :attribute должно быть корректным ULID.","validation.uuid":"Значение поля :attribute должно быть корректным UUID.","validation.single":"При использовании :attribute - это должен быть единственный параметр в теле этого запроса","validation.onlyCustomOtpWithUri":"Параметр uri должен быть указан один или в сочетании с параметром 'custom_otp'","validation.IsValidRegex":"Значение поля :attribute должно быть корректным регулярным выражением.","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":"Идентификаторы должны быть разделены запятыми. Запятая в конце не ставится."};export{t as default}; diff --git a/public/build/assets/php_si-DuIH0_oO.js b/public/build/assets/php_si-B2vyVoN1.js similarity index 99% rename from public/build/assets/php_si-DuIH0_oO.js rename to public/build/assets/php_si-B2vyVoN1.js index 5a52c1b7..b2f83b2c 100644 --- a/public/build/assets/php_si-DuIH0_oO.js +++ b/public/build/assets/php_si-B2vyVoN1.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Are you sure you want to log out?","auth.confirm.revoke_device":"Are you sure you want to revoke this device?","auth.confirm.delete_account":"Are you sure you want to delete your account?","auth.webauthn.security_device":"a security device","auth.webauthn.security_devices":"Security devices","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

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

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

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

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const e={"admin.admin":"Admin","admin.app_setup":"App setup","admin.auth":"Auth","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 revoke the previous 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), which means that the user has not yet changed their password but the link they received is still valid. This may be a request from the user themselves or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning that the user has not changed their password in time. This may be a request from the user themselves 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 they 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.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Last accesses","admin.see_full_log":"See full log","admin.browser_on_platform":":browser on :platform","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":"Full access log for user :username","admin.show_last_month_log":"Show entries from the last month","admin.show_three_months_log":"Show entries from the last 3 months","admin.show_six_months_log":"Show entries from the last 6 months","admin.show_one_year_log":"Show entries from the last year","admin.sort_by_date_asc":"Show least recent first","admin.sort_by_date_desc":"Show most recent first","admin.single_sign_on":"Single Sign-On (SSO)","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 SSO","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","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.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","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.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"You can also continue with:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","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.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Are you sure you want to log out?","auth.confirm.revoke_device":"Are you sure you want to revoke this device?","auth.confirm.delete_account":"Are you sure you want to delete your account?","auth.webauthn.security_device":"a security device","auth.webauthn.security_devices":"Security devices","auth.webauthn.security_devices_legend":"Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

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

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

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

\r Attention! The Email & Password form remains available despite this option being enabled, but it will always return an 'Authentication failed' response.`,"auth.webauthn.need_a_security_device_to_enable_options":"Set at least one device to enable the following options","auth.webauthn.options":"Options","auth.forms.name":"නම","auth.forms.login":"පිවිසෙන්න","auth.forms.webauthn_login":"WebAuthn login","auth.forms.sso_login":"SSO 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.sso_only_form_restricted_to_admin":"Regular users must sign in with SSO. Other methods are for administrators only.","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","auth.sso_providers.unknown":"unknown","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","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.send":"Send","commons.optimize":"Optimize","commons.IP":"IP","commons.browser":"Browser","commons.operating_system_short":"OS","commons.no_entry_yet":"No entry yet","commons.time":"Time","commons.ip_address":"IP Address","commons.device":"Device","commons.one_month":"1 mo.","commons.x_month":":x mos.","commons.one_year":"1 yr.","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 or SSO","errors.unsupported_with_sso_only":"This authentication method is for administrators only. Users must log in with SSO.","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.cannot_demote_the_only_admin":"Cannot demote 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.cannot_detect_qrcode_in_image":"Cannot detect a QR code in the image, try to crop the image","errors.cannot_decode_detected_qrcode":"Cannot decode detected QR code, try to crop or sharpen the image","errors.qrcode_has_invalid_checksum":"QR code has invalid checksum","errors.no_readable_qrcode":"No readable QR code","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)","languages.tr":"Türkçe (Turkish)","notifications.hello":"Hello","notifications.hello_user":"Hello :username,","notifications.regards":"Regards","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 :)","notifications.new_device.subject":"Connection to 2FAuth from a new device","notifications.new_device.resume":"A new device has just connected to your 2FAuth account.","notifications.new_device.connection_details":"Here are the details of this connection","notifications.new_device.recommandations":"If this was you, you can ignore this alert. If you suspect any suspicious activity on your account, please change your password.","notifications.failed_login.subject":"Failed login to 2FAuth","notifications.failed_login.resume":"There has been a failed login attempt to your 2FAuth account.","notifications.failed_login.connection_details":"Here are the details of this connection attempt","notifications.failed_login.recommandations":"If this was you, you can ignore this alert. If further attempts fail, you should contact the 2FAuth administrator to review security settings and take action against this attacker.","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.notifications":"Notifications","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.timezone.label":"Time zone","settings.forms.timezone.help":"The time zone applied to all dates and times displayed in the application","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":"Click on a generated password to copy it automatically hides it from the screen","settings.forms.auto_close_timeout.label":'Auto close OTP',"settings.forms.auto_close_timeout.help":"Automatically hide on-screen password after a timeout. This avoids unnecessary requests for fresh passwords if you forget to close the password view.","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.sort_case_sensitive.label":"Sort case sensitive","settings.forms.sort_case_sensitive.help":"When invoked, force the Sort function to sort accounts on a case-sensitive basis","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.auto_save_qrcoded_account.label":"Auto-save accounts","settings.forms.auto_save_qrcoded_account.help":"New accounts are automatically registered after scanning or uploading a QR code, no need to click a Save button","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.notify_on_new_auth_device.label":"On new device","settings.forms.notify_on_new_auth_device.help":"Get an email when a new device connects to your 2FAuth account for the first time","settings.forms.notify_on_failed_login.label":"On failed login","settings.forms.notify_on_failed_login.help":"Get an email each time an attempt to connect to your 2FAuth account fails","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.2_minutes":"After 2 minutes","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","titles.admin.logs.access":"Access log","twofaccounts.service":"සේවාව","twofaccounts.account":"ගිණුම","twofaccounts.icon":"නිරූපකය","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.group.label":"Group","twofaccounts.forms.group.help":"The group to which the account is to be assigned","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.IsValidRegex":"The :attribute must be a valid regex pattern.","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-CkDfHBb5.js b/public/build/assets/php_tr-nxKVoDL2.js similarity index 99% rename from public/build/assets/php_tr-CkDfHBb5.js rename to public/build/assets/php_tr-nxKVoDL2.js index c771a479..c663bff1 100644 --- a/public/build/assets/php_tr-CkDfHBb5.js +++ b/public/build/assets/php_tr-nxKVoDL2.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const a={"admin.admin":"Yönetici","admin.admin_panel":"Admin panel","admin.app_setup":"Uygulama Kurulumu","admin.auth":"Auth","admin.registrations":"Kayıt","admin.users":"Kullanıcılar","admin.users_legend":"Uygulamanızda kayıtlı kullanıcılar yönetin veya yeni kullanıcı oluşturun.","admin.admin_settings":"Yönetici ayarları","admin.create_new_user":"Kullanıcı oluştur","admin.new_user":"Yeni kullanıcı","admin.search_user_placeholder":"Kullanıcı adı, ePosta...","admin.quick_filters_colons":"Hızlı filtreler:","admin.user_created":"kullanıcı başarıyla oluşturuldu","admin.confirm.delete_user":"Bu kullanıcıyı silmek istediğinizden emin misiniz? Geri dönüşü olmayacak.","admin.confirm.request_password_reset":"Bu kullanıcının şifresini sıfırlamak istediğinizden emin misiniz?","admin.confirm.purge_password_reset_request":"Bir önceki talebi iptal etmek istediğinize emin misiniz?","admin.confirm.delete_account":"Bu kullanıcıyı silmek istediğinize emin misiniz?","admin.confirm.edit_own_account":"Bu sizin kendi hesabınız. Emin misiniz?","admin.confirm.change_admin_role":"Bu, kullanıcının izinlerinde ciddi etkiler yaratacaktır. Emin misiniz?","admin.confirm.demote_own_account":"Bundan sonra yönetici olmayacaksınız. Gerçekten emin misiniz?","admin.logs":"Günlükler","admin.administration_legend":"Aşağıdaki ayarlar genel ayarlardır ve her kullanıcı için geçerli olur.","admin.user_management":"Kullanıcı yönetimi","admin.oauth_provider":"OAuth sağlayıcı","admin.account_bound_to_x_via_oauth":"Bu hesap OAuth ile bir :provider hesabına bağlı","admin.last_seen_on_date":"Son görülme :date","admin.registered_on_date":"Kayıt tarihi :date","admin.updated_on_date":"Güncelleme tarihi :date","admin.access":"Erişim","admin.password_requested_on_t":"Bu kullanıcı için bir parola sıfırlama talebi bulunmakta (talep tarihi :datetimi), yani kullanıcı henüz parolasını değiştirmemiş ancak gönderilen parola değiştirme bağlantısı hala geçerli. Bu talep, kullanıcı tarafından veya bir yönetici tarafından yapılmış olabilir.","admin.password_request_expired":"Bu kullanıcı için bir parola sıfırlama talebi bulunmakta ama talebin süresi geçmiş yani kullanıcı, süresi içerisinde parolasını değiştirmemiş. Bu talep, kullanıcı tarafından veya bir yönetici tarafından yapılmış olabilir.","admin.resend_email":"ePosta'yı yeniden gönder","admin.resend_email_title":"Parola sıfırlama ePostasını kullanıcıya yeniden gönder","admin.resend_email_help":"Kullanıcının yeni bir parola belirleyebilmesi için yeni bir parola sıfırlama e-postası göndermek üzere E-postayı yeniden gönder'i kullanın. Bu, mevcut şifreyi olduğu gibi bırakacak ve önceki tüm talepler iptal edilecektir.","admin.reset_password":"Parolayı sıfırla","admin.reset_password_help":"Kullanıcıya yeni bir parola belirleyebilmesi için bir parola sıfırlama e-postası göndermeden önce, parola sıfırlama işlemini zorunlu kılmak için Parolayı sıfırla seçeneğini kullanın (bu, geçici bir parola oluşturacaktır). Daha önce yapılan tüm talepler iptal edilecektir.","admin.reset_password_title":"Kullanıcının parolasını sıfırla","admin.password_successfully_reset":"Parola başarıyla sıfırlandı","admin.user_has_x_active_pat":":count aktif token","admin.user_has_x_security_devices":":count güvenlik cihazı (parola anahtarı)","admin.revoke_all_pat_for_user":"Tüm kullanıcı token'larını iptal et","admin.revoke_all_devices_for_user":"Tüm kullanıcı güvenlik cihazlarını iptal et","admin.danger_zone":"Tehlikeli Bölge","admin.delete_this_user_legend":"Kullanıcı hesabı ve tüm 2FA verileri silinecektir.","admin.this_is_not_soft_delete":"Bu kalıcı bir silme işlemidir, geri dönüşü olmayacak.","admin.delete_this_user":"Bu kullanıcıyı sil","admin.user_role_updated":"Kullanıcı rolü güncellendi","admin.pats_succesfully_revoked":"Kullanıcının KET'leri başarıyla iptal edildi","admin.security_devices_succesfully_revoked":"Kullanıcının güvenlik cihazları başarıyla iptal edildi","admin.variables":"Değişkenler","admin.cache_cleared":"Önbellek temizlendi","admin.cache_optimized":"Önbellek iyileştirildi","admin.check_now":"Kontrol et","admin.view_on_github":"Github'da görüntüle","admin.x_is_available":":version bulunuyor","admin.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Son erişimler","admin.see_full_log":"Tüm günlüğü gör","admin.browser_on_platform":":platform üzerinde :browser","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":":username kullanıcısının tüm erişim günlüğü","admin.show_last_month_log":"Geçen aydan girdiler göster","admin.show_three_months_log":"Geçen 3 aydan girdiler göster","admin.show_six_months_log":"Geçen 6 aydan girdiler göster","admin.show_one_year_log":"Geçen yıldan girdiler göster","admin.sort_by_date_asc":"Eskileri önce göster","admin.sort_by_date_desc":"Yenileri önce göster","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","admin.forms.use_encryption.label":"Hassas verileri koru","admin.forms.use_encryption.help":"2FA sırları ve ePosta gibi hassas veriler, şifrelenmiş veritabanında tutulur. .env dosyanızda bulunan APP_KEY değeri anahtar şifreleme işlevi gördüğü için bu değeri (veya tüm dosyanızı) yedeklediğinizden emin olun. Şifrelenmiş veriyi bu anahtar olmadan açmanız mümkün değildir.","admin.forms.restrict_registration.label":"Kayıtları sınırla","admin.forms.restrict_registration.help":"Kayıt işleminin yalnızca sınırlı sayıda e-posta adresi için geçerli olmasını sağlayın. Her iki kural da aynı anda kullanılabilir. Bunun SSO aracılığıyla kayıt üzerinde hiçbir etkisi yoktur.","admin.forms.restrict_list.label":"Filtre listesi","admin.forms.restrict_list.help":'Bu listede yer alan ePosta adreslerinin kayıt olmasına izin verilecektir. Adresleri dikey çizgi ("|") ile ayırın',"admin.forms.restrict_rule.label":"Filtreleme kuralları","admin.forms.restrict_rule.help":"Bu betimlemelere (RegEx) uyan ePostaların kayıt olmasına izin verilecektir","admin.forms.disable_registration.label":"Kayıt olmayı devre dışı bırak","admin.forms.disable_registration.help":"Yeni kullanıcı kaydını kapatır. Geçersiz kılınmadığı sürece (aşağıya bakın), bu seçenek SSO'yu da etkiler ve yeni kullanıcıların SSO ile girişini engeller","admin.forms.enable_sso.label":"Enable SSO","admin.forms.enable_sso.help":"Kullanıcıların Single Sign-On ile harici bir hesap üzerinden oturum açmasını sağlar","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","admin.forms.keep_sso_registration_enabled.label":"SSO ile kayıt olmayı açık tut","admin.forms.keep_sso_registration_enabled.help":"Kayıt olma devre dışıyken yeni kullanıcıların SSO ile ilk kez oturum açmasına izin verir","admin.forms.is_admin.label":"Yönetici","admin.forms.is_admin.help":'Kullanıcıya "Yönetici" rolü verir. Yöneticiler uygulamanın tamamını, yani ayarları ve diğer kullanıcıları yönetme izinlerine sahiptir, ancak sahip olmadıkları bir 2FA için şifre oluşturamazlar.',"admin.forms.test_email.label":"ePosta ayarlarını kontrol et","admin.forms.test_email.help":"Uygulamadaki ePosta ayarlarını kontrol etmek için bir kontrol ePostası gönder. Çalışan bir sistemin olması önemlidir aksi takdirde kullanıcılar parola sıfırlama talebi gönderemezler.","admin.forms.test_email.email_will_be_send_to_x":'ePosta :email adresine iletilecektir',"admin.forms.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","admin.forms.cache_management.label":"Önbellek yönetimi","admin.forms.cache_management.help":"Önbelleğin zaman zaman, örneğin bir değişkenin değiştirilmesinden veya uygulamanın güncellenmesinden sonra, temizlenmesi gerekir. Buradan yapabilirsiniz.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","auth.failed":"Bu kimlik bilgileri bizdeki kayıtlarla eşleşmiyor.","auth.password":"Parola yanlış.","auth.throttle":"Çok fazla hatalı giriş denemesi. Lütfen :seconds saniye sonra yeniden deneyin.","auth.sign_out":"Çıkış","auth.sign_in":"Oturum aç","auth.sign_in_using":"Oturum açma yöntemi","auth.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"Ayrıca şununla da devam edebilirsiniz:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","auth.sign_in_using_security_device":"Güvenlik cihazı kullanarak oturum aç","auth.login_and_password":"kullanıcı & şifre","auth.register":"Kayıt","auth.welcome_to_2fauth":"2Fauth'a hoşgeldiniz","auth.autolock_triggered":"Otomatik kilit devreye girdi","auth.autolock_triggered_punchline":"Otomatik kilit devreye girdi, sistemden çıkışınız yapıldı","auth.already_authenticated":"Zaten giriş yapılmış, lütfen öncelikle çıkış yapın","auth.authentication":"Kimlik doğrulama","auth.maybe_later":"Belki daha sonra","auth.user_account_controlled_by_proxy":"Kimlik doğrulama proxy'si tarafından kullanıma sunulan kullanıcı hesabı.
Hesabı proxy düzeyinde yönetin.","auth.auth_handled_by_proxy":"Kimlik doğrulama ters proxy tarafından gerçekleştirilmiş, aşağıdaki ayarlar devre dışı.
Kimlik doğrulamayı proxy düzeyinde yönetin.","auth.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Çıkış yapmak istediğinizden emin misiniz?","auth.confirm.revoke_device":"Bu cihazın yetkilerini iptal etmek istediğinizden emin misiniz?","auth.confirm.delete_account":"Hesabınızı silmek istediğinizden emin misiniz?","auth.webauthn.security_device":"bir güvenlik cihazı","auth.webauthn.security_devices":"Güvenlik cihazları","auth.webauthn.security_devices_legend":"2FAuth'a giriş yapabilmek için kullanabileceğiniz; güvenlik anahtarı (ör. Yubikey) veya biyometrik özellikli bir akıllı telefon (ör. Apple FaceId/TouchId) gibi cihazlar","auth.webauthn.enhance_security_using_webauthn":`2FAuth hesabınızın güvenliğini, WebAuthn kimlik doğrulaması kullanarak arttırabilirsiniz.

- WebAuthn, güvenilir cihazlar (Yubikey veya biyometrik özellikli bir akıllı telefon gibi) kullanarak daha hızlı ve daha güvenli giriş yapmanızı sağlar.`,"auth.webauthn.use_security_device_to_sign_in":"Güvenlik cihazlarınız ile giriş yapmaya hazırlanın. Ör. anahtar cihazınızı takın, yüz maskenizi veya eldiveninizi çıkarın.","auth.webauthn.lost_your_device":"Cihazınız mı kayboldu?","auth.webauthn.recover_your_account":"Hesabınızı kurtarın","auth.webauthn.account_recovery":"Hesap kurtarma","auth.webauthn.recovery_punchline":"2FAuth, bu ePosta adresine bir kurtarma bağlantısı gönderecek. ePostadaki bağlantıya tıklayın ve talimatları takip edin.

ePostayı tamamen size ait olan bir cihazda açtığınızda emin olun.","auth.webauthn.send_recovery_link":"Kurtarma bağlantısı gönder","auth.webauthn.account_recovery_email_sent":"Hesap kurtarma ePostası gönderildi!","auth.webauthn.disable_all_security_devices":"Tüm güvenlik cihazlarını devre dışı bırak","auth.webauthn.disable_all_security_devices_help":"Tüm güvenlik cihazlarını iptal edilecektir. Bu seçeneği yalnızca cihazınız kayboldu veya cihazınızda güvenlik zaafiyeti oluştuysa kullanın.","auth.webauthn.register_a_new_device":"Yeni cihaz ekle","auth.webauthn.register_a_device":"Cihaz ekle","auth.webauthn.device_successfully_registered":"Cihaz başarıyla kaydedildi","auth.webauthn.device_revoked":"Cihaz başarıyla iptal edildi","auth.webauthn.revoking_a_device_is_permanent":"Cihaz iptali kalıcıdır","auth.webauthn.recover_account_instructions":"Hasabınızı kurtarmak için, 2FAuth bazı Webauthn özelliklerini sıfırlar, böylece ePosta ve parolanızla giriş yapabilirsiniz.","auth.webauthn.invalid_recovery_token":"Geçersiz kurtarma token'i","auth.webauthn.webauthn_login_disabled":"Webauthn girişi devre dışı bırakıldı","auth.webauthn.invalid_reset_token":"Bu sıfırlama token'i geçerli değil.","auth.webauthn.rename_device":"Cihazı adı değişikliği","auth.webauthn.my_device":"Cihazım","auth.webauthn.unknown_device":"Bilinmeyen cihaz","auth.webauthn.use_webauthn_only.label":"Yalnızca WebAuthn kullan","auth.webauthn.use_webauthn_only.help":`WebAuthn girişini, 2FAuth hesabınıza tek yetkili giriş yöntemi yapın. Bu yöntem ile WebAuthn'in güvenlik avantajlarından yararlanabilirsiniz.

- Cihazınızın kaybolması durumunda, bu seçeneği iptal edip kullanıcı adı ve parolanız ile giriş yaparak hesabınızı kurtarabilirsiniz.

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const a={"admin.admin":"Yönetici","admin.admin_panel":"Admin panel","admin.app_setup":"Uygulama Kurulumu","admin.auth":"Auth","admin.registrations":"Kayıt","admin.users":"Kullanıcılar","admin.users_legend":"Uygulamanızda kayıtlı kullanıcılar yönetin veya yeni kullanıcı oluşturun.","admin.admin_settings":"Yönetici ayarları","admin.create_new_user":"Kullanıcı oluştur","admin.new_user":"Yeni kullanıcı","admin.search_user_placeholder":"Kullanıcı adı, ePosta...","admin.quick_filters_colons":"Hızlı filtreler:","admin.user_created":"kullanıcı başarıyla oluşturuldu","admin.confirm.delete_user":"Bu kullanıcıyı silmek istediğinizden emin misiniz? Geri dönüşü olmayacak.","admin.confirm.request_password_reset":"Bu kullanıcının şifresini sıfırlamak istediğinizden emin misiniz?","admin.confirm.purge_password_reset_request":"Bir önceki talebi iptal etmek istediğinize emin misiniz?","admin.confirm.delete_account":"Bu kullanıcıyı silmek istediğinize emin misiniz?","admin.confirm.edit_own_account":"Bu sizin kendi hesabınız. Emin misiniz?","admin.confirm.change_admin_role":"Bu, kullanıcının izinlerinde ciddi etkiler yaratacaktır. Emin misiniz?","admin.confirm.demote_own_account":"Bundan sonra yönetici olmayacaksınız. Gerçekten emin misiniz?","admin.logs":"Günlükler","admin.administration_legend":"Aşağıdaki ayarlar genel ayarlardır ve her kullanıcı için geçerli olur.","admin.user_management":"Kullanıcı yönetimi","admin.oauth_provider":"OAuth sağlayıcı","admin.account_bound_to_x_via_oauth":"Bu hesap OAuth ile bir :provider hesabına bağlı","admin.last_seen_on_date":"Son görülme :date","admin.registered_on_date":"Kayıt tarihi :date","admin.updated_on_date":"Güncelleme tarihi :date","admin.access":"Erişim","admin.password_requested_on_t":"Bu kullanıcı için bir parola sıfırlama talebi bulunmakta (talep tarihi :datetimi), yani kullanıcı henüz parolasını değiştirmemiş ancak gönderilen parola değiştirme bağlantısı hala geçerli. Bu talep, kullanıcı tarafından veya bir yönetici tarafından yapılmış olabilir.","admin.password_request_expired":"Bu kullanıcı için bir parola sıfırlama talebi bulunmakta ama talebin süresi geçmiş yani kullanıcı, süresi içerisinde parolasını değiştirmemiş. Bu talep, kullanıcı tarafından veya bir yönetici tarafından yapılmış olabilir.","admin.resend_email":"ePosta'yı yeniden gönder","admin.resend_email_title":"Parola sıfırlama ePostasını kullanıcıya yeniden gönder","admin.resend_email_help":"Kullanıcının yeni bir parola belirleyebilmesi için yeni bir parola sıfırlama e-postası göndermek üzere E-postayı yeniden gönder'i kullanın. Bu, mevcut şifreyi olduğu gibi bırakacak ve önceki tüm talepler iptal edilecektir.","admin.reset_password":"Parolayı sıfırla","admin.reset_password_help":"Kullanıcıya yeni bir parola belirleyebilmesi için bir parola sıfırlama e-postası göndermeden önce, parola sıfırlama işlemini zorunlu kılmak için Parolayı sıfırla seçeneğini kullanın (bu, geçici bir parola oluşturacaktır). Daha önce yapılan tüm talepler iptal edilecektir.","admin.reset_password_title":"Kullanıcının parolasını sıfırla","admin.password_successfully_reset":"Parola başarıyla sıfırlandı","admin.user_has_x_active_pat":":count aktif token","admin.user_has_x_security_devices":":count güvenlik cihazı (parola anahtarı)","admin.revoke_all_pat_for_user":"Tüm kullanıcı token'larını iptal et","admin.revoke_all_devices_for_user":"Tüm kullanıcı güvenlik cihazlarını iptal et","admin.danger_zone":"Tehlikeli Bölge","admin.delete_this_user_legend":"Kullanıcı hesabı ve tüm 2FA verileri silinecektir.","admin.this_is_not_soft_delete":"Bu kalıcı bir silme işlemidir, geri dönüşü olmayacak.","admin.delete_this_user":"Bu kullanıcıyı sil","admin.user_role_updated":"Kullanıcı rolü güncellendi","admin.pats_succesfully_revoked":"Kullanıcının KET'leri başarıyla iptal edildi","admin.security_devices_succesfully_revoked":"Kullanıcının güvenlik cihazları başarıyla iptal edildi","admin.variables":"Değişkenler","admin.cache_cleared":"Önbellek temizlendi","admin.cache_optimized":"Önbellek iyileştirildi","admin.check_now":"Kontrol et","admin.view_on_github":"Github'da görüntüle","admin.x_is_available":":version bulunuyor","admin.successful_login_on":'Successful login on :login_at',"admin.successful_logout_on":'Successful logout on :login_at',"admin.failed_login_on":'Failed login on :login_at',"admin.viewed_on":'Viewed on :login_at',"admin.last_accesses":"Son erişimler","admin.see_full_log":"Tüm günlüğü gör","admin.browser_on_platform":":platform üzerinde :browser","admin.access_log_has_more_entries":"The access log contains more entries.","admin.access_log_legend_for_user":":username kullanıcısının tüm erişim günlüğü","admin.show_last_month_log":"Geçen aydan girdiler göster","admin.show_three_months_log":"Geçen 3 aydan girdiler göster","admin.show_six_months_log":"Geçen 6 aydan girdiler göster","admin.show_one_year_log":"Geçen yıldan girdiler göster","admin.sort_by_date_asc":"Eskileri önce göster","admin.sort_by_date_desc":"Yenileri önce göster","admin.single_sign_on":"Single Sign-On (SSO)","admin.database":"Database","admin.file_system":"File system","admin.storage":"Storage","admin.forms.use_encryption.label":"Hassas verileri koru","admin.forms.use_encryption.help":"2FA sırları ve ePosta gibi hassas veriler, şifrelenmiş veritabanında tutulur. .env dosyanızda bulunan APP_KEY değeri anahtar şifreleme işlevi gördüğü için bu değeri (veya tüm dosyanızı) yedeklediğinizden emin olun. Şifrelenmiş veriyi bu anahtar olmadan açmanız mümkün değildir.","admin.forms.restrict_registration.label":"Kayıtları sınırla","admin.forms.restrict_registration.help":"Kayıt işleminin yalnızca sınırlı sayıda e-posta adresi için geçerli olmasını sağlayın. Her iki kural da aynı anda kullanılabilir. Bunun SSO aracılığıyla kayıt üzerinde hiçbir etkisi yoktur.","admin.forms.restrict_list.label":"Filtre listesi","admin.forms.restrict_list.help":'Bu listede yer alan ePosta adreslerinin kayıt olmasına izin verilecektir. Adresleri dikey çizgi ("|") ile ayırın',"admin.forms.restrict_rule.label":"Filtreleme kuralları","admin.forms.restrict_rule.help":"Bu betimlemelere (RegEx) uyan ePostaların kayıt olmasına izin verilecektir","admin.forms.disable_registration.label":"Kayıt olmayı devre dışı bırak","admin.forms.disable_registration.help":"Yeni kullanıcı kaydını kapatır. Geçersiz kılınmadığı sürece (aşağıya bakın), bu seçenek SSO'yu da etkiler ve yeni kullanıcıların SSO ile girişini engeller","admin.forms.enable_sso.label":"Enable SSO","admin.forms.enable_sso.help":"Kullanıcıların Single Sign-On ile harici bir hesap üzerinden oturum açmasını sağlar","admin.forms.use_sso_only.label":"Use SSO only","admin.forms.use_sso_only.help":"Make SSO the only available method to log in to 2FAuth. Password login and Webauthn are then disabled for regular users. Administrators are not affected by this restriction.","admin.forms.keep_sso_registration_enabled.label":"SSO ile kayıt olmayı açık tut","admin.forms.keep_sso_registration_enabled.help":"Kayıt olma devre dışıyken yeni kullanıcıların SSO ile ilk kez oturum açmasına izin verir","admin.forms.is_admin.label":"Yönetici","admin.forms.is_admin.help":'Kullanıcıya "Yönetici" rolü verir. Yöneticiler uygulamanın tamamını, yani ayarları ve diğer kullanıcıları yönetme izinlerine sahiptir, ancak sahip olmadıkları bir 2FA için şifre oluşturamazlar.',"admin.forms.test_email.label":"ePosta ayarlarını kontrol et","admin.forms.test_email.help":"Uygulamadaki ePosta ayarlarını kontrol etmek için bir kontrol ePostası gönder. Çalışan bir sistemin olması önemlidir aksi takdirde kullanıcılar parola sıfırlama talebi gönderemezler.","admin.forms.test_email.email_will_be_send_to_x":'ePosta :email adresine iletilecektir',"admin.forms.health_endpoint.label":"Health endpoint","admin.forms.health_endpoint.help":"URL you can visit to check the health of this 2FAuth instance. This URL can be used to set up a Docker HEALTHCHECK or a Kubernetes HTTPS Liveness probe.","admin.forms.cache_management.label":"Önbellek yönetimi","admin.forms.cache_management.help":"Önbelleğin zaman zaman, örneğin bir değişkenin değiştirilmesinden veya uygulamanın güncellenmesinden sonra, temizlenmesi gerekir. Buradan yapabilirsiniz.","admin.forms.store_icon_to_database.label":"Store icons to database","admin.forms.store_icon_to_database.help":"Uploaded icons are registered in the database in addition to the file system storage, which is then used only as a cache. This makes creating a 2FAuth backup much easier, as only the database has to be backed up.

But beware, this may has some drawbacks: The database size may increase significantly if the instance hosts many large icons. It may also affect the application performance because the file system is hit more often to ensure it is synchronised with the database.","auth.failed":"Bu kimlik bilgileri bizdeki kayıtlarla eşleşmiyor.","auth.password":"Parola yanlış.","auth.throttle":"Çok fazla hatalı giriş denemesi. Lütfen :seconds saniye sonra yeniden deneyin.","auth.sign_out":"Çıkış","auth.sign_in":"Oturum aç","auth.sign_in_using":"Oturum açma yöntemi","auth.if_administrator":"Administrator?","auth.sign_in_here":"You can sign without SSO","auth.or_continue_with":"Ayrıca şununla da devam edebilirsiniz:","auth.password_login_and_webauthn_are_disabled":"Password login and WebAuthn are disabled.","auth.sign_in_using_sso":"Pick an SSO provider to sign in with:","auth.no_provider":"no provider","auth.no_sso_provider_or_provider_is_missing":"Provider is missing?","auth.see_how_to_enable_sso":"See how to enable a provider","auth.sign_in_using_security_device":"Güvenlik cihazı kullanarak oturum aç","auth.login_and_password":"kullanıcı & şifre","auth.register":"Kayıt","auth.welcome_to_2fauth":"2Fauth'a hoşgeldiniz","auth.autolock_triggered":"Otomatik kilit devreye girdi","auth.autolock_triggered_punchline":"Otomatik kilit devreye girdi, sistemden çıkışınız yapıldı","auth.already_authenticated":"Zaten giriş yapılmış, lütfen öncelikle çıkış yapın","auth.authentication":"Kimlik doğrulama","auth.maybe_later":"Belki daha sonra","auth.user_account_controlled_by_proxy":"Kimlik doğrulama proxy'si tarafından kullanıma sunulan kullanıcı hesabı.
Hesabı proxy düzeyinde yönetin.","auth.auth_handled_by_proxy":"Kimlik doğrulama ters proxy tarafından gerçekleştirilmiş, aşağıdaki ayarlar devre dışı.
Kimlik doğrulamayı proxy düzeyinde yönetin.","auth.sso_only_x_settings_are_disabled":"Authentication is restricted to SSO only, :auth_method is disabled","auth.confirm.logout":"Çıkış yapmak istediğinizden emin misiniz?","auth.confirm.revoke_device":"Bu cihazın yetkilerini iptal etmek istediğinizden emin misiniz?","auth.confirm.delete_account":"Hesabınızı silmek istediğinizden emin misiniz?","auth.webauthn.security_device":"bir güvenlik cihazı","auth.webauthn.security_devices":"Güvenlik cihazları","auth.webauthn.security_devices_legend":"2FAuth'a giriş yapabilmek için kullanabileceğiniz; güvenlik anahtarı (ör. Yubikey) veya biyometrik özellikli bir akıllı telefon (ör. Apple FaceId/TouchId) gibi cihazlar","auth.webauthn.enhance_security_using_webauthn":`2FAuth hesabınızın güvenliğini, WebAuthn kimlik doğrulaması kullanarak arttırabilirsiniz.

\r + WebAuthn, güvenilir cihazlar (Yubikey veya biyometrik özellikli bir akıllı telefon gibi) kullanarak daha hızlı ve daha güvenli giriş yapmanızı sağlar.`,"auth.webauthn.use_security_device_to_sign_in":"Güvenlik cihazlarınız ile giriş yapmaya hazırlanın. Ör. anahtar cihazınızı takın, yüz maskenizi veya eldiveninizi çıkarın.","auth.webauthn.lost_your_device":"Cihazınız mı kayboldu?","auth.webauthn.recover_your_account":"Hesabınızı kurtarın","auth.webauthn.account_recovery":"Hesap kurtarma","auth.webauthn.recovery_punchline":"2FAuth, bu ePosta adresine bir kurtarma bağlantısı gönderecek. ePostadaki bağlantıya tıklayın ve talimatları takip edin.

ePostayı tamamen size ait olan bir cihazda açtığınızda emin olun.","auth.webauthn.send_recovery_link":"Kurtarma bağlantısı gönder","auth.webauthn.account_recovery_email_sent":"Hesap kurtarma ePostası gönderildi!","auth.webauthn.disable_all_security_devices":"Tüm güvenlik cihazlarını devre dışı bırak","auth.webauthn.disable_all_security_devices_help":"Tüm güvenlik cihazlarını iptal edilecektir. Bu seçeneği yalnızca cihazınız kayboldu veya cihazınızda güvenlik zaafiyeti oluştuysa kullanın.","auth.webauthn.register_a_new_device":"Yeni cihaz ekle","auth.webauthn.register_a_device":"Cihaz ekle","auth.webauthn.device_successfully_registered":"Cihaz başarıyla kaydedildi","auth.webauthn.device_revoked":"Cihaz başarıyla iptal edildi","auth.webauthn.revoking_a_device_is_permanent":"Cihaz iptali kalıcıdır","auth.webauthn.recover_account_instructions":"Hasabınızı kurtarmak için, 2FAuth bazı Webauthn özelliklerini sıfırlar, böylece ePosta ve parolanızla giriş yapabilirsiniz.","auth.webauthn.invalid_recovery_token":"Geçersiz kurtarma token'i","auth.webauthn.webauthn_login_disabled":"Webauthn girişi devre dışı bırakıldı","auth.webauthn.invalid_reset_token":"Bu sıfırlama token'i geçerli değil.","auth.webauthn.rename_device":"Cihazı adı değişikliği","auth.webauthn.my_device":"Cihazım","auth.webauthn.unknown_device":"Bilinmeyen cihaz","auth.webauthn.use_webauthn_only.label":"Yalnızca WebAuthn kullan","auth.webauthn.use_webauthn_only.help":`WebAuthn girişini, 2FAuth hesabınıza tek yetkili giriş yöntemi yapın. Bu yöntem ile WebAuthn'in güvenlik avantajlarından yararlanabilirsiniz.

\r + Cihazınızın kaybolması durumunda, bu seçeneği iptal edip kullanıcı adı ve parolanız ile giriş yaparak hesabınızı kurtarabilirsiniz.

\r Uyarı! Bu seçenek işaretlenmiş olsa bile ePosta ve Parola formu aktif olarak görünecek ancak her seferinde 'Başarısız giriş' hatası verecektir.`,"auth.webauthn.need_a_security_device_to_enable_options":"Aşağıdaki seçenekleri aktifleştirmek için en az bir cihaz ekleyin","auth.webauthn.options":"Seçenekler","auth.forms.name":"İsim","auth.forms.login":"Giriş","auth.forms.webauthn_login":"WebAuthn girişi","auth.forms.sso_login":"SSO login","auth.forms.email":"ePosta","auth.forms.password":"Parola","auth.forms.reveal_password":"Parolayı göster","auth.forms.hide_password":"Parolayı gizle","auth.forms.confirm_password":"Parolayı onayla","auth.forms.new_password":"Yeni parola","auth.forms.confirm_new_password":"Yeni parolayı onayla","auth.forms.dont_have_account_yet":"Henüz hesabınız yok mu?","auth.forms.already_register":"Zaten kayıtlı mısınız?","auth.forms.authentication_failed":"Kimlik doğrulama başarısız","auth.forms.forgot_your_password":"Parolanızı mı unuttunuz?","auth.forms.request_password_reset":"Sıfırla","auth.forms.reset_your_password":"Parolanızı sıfırlayın","auth.forms.reset_password":"Parola sıfırlama","auth.forms.disabled_in_demo":"Bu özellik Demo modunda geçerli değil","auth.forms.sso_only_form_restricted_to_admin":"Regular users must sign in with SSO. Other methods are for administrators only.","auth.forms.current_password.label":"Mevcut parola","auth.forms.current_password.help":"Kimliğinizi doğrulamak için mevcut parolanızı girin","auth.forms.change_password":"Parola değiştir","auth.forms.send_password_reset_link":"Parola sıfırlama bağlantısı yolla","auth.forms.password_successfully_reset":"Parola başarıyla sıfırlandı","auth.forms.edit_account":"Hesabı düzenle","auth.forms.profile_saved":"Profil başarıyla güncellendi!","auth.forms.welcome_to_demo_app_use_those_credentials":"2FAuth demo moduna hoşgeldiniz.

ePosta adresi olarak demo@2fauth.app ve parola olarak demo kullanarak bağlanabilirsiniz","auth.forms.welcome_to_testing_app_use_those_credentials":"2FAuth deneme moduna hoşgeldiniz.

ePosta adresi olarak testing@2fauth.app ve şifre olarak password kullanabilirsiniz","auth.forms.register_punchline":"2FAuth uygulamasına hoşgeldiniz.
Devam edebilmek için bir hesaba ihtiyacınız var, lütfen kayıt olun.","auth.forms.reset_punchline":"2FAuth bu adrese bir parola sıfırlama bağlantısı yollanacak. Yeni bir parola belirlemek için ePostadaki bağlantıya tıklayın.","auth.forms.name_this_device":"Bu cihaza isim verin","auth.forms.delete_account":"Hesabı sil","auth.forms.delete_your_account":"Hesabınızı silin","auth.forms.delete_your_account_and_reset_all_data":"Kullanıcı hesabınız ve tüm 2FA verileriniz silinecektir. Bunun geri dönüşü yok.","auth.forms.reset_your_password_to_delete_your_account":"Eğer şimdiye kadar giriş için hep SSO kullandıysanız, parola alabillmek için çıkış yapın ve sonrasında parola sıfırlama özelliğini kullanın.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"2FAuth hesabını silmek, harici SSO hesabınızı etkilemez.","auth.forms.user_account_successfully_deleted":"Kullanıcı hesabı başarıyla silindi","auth.forms.has_lower_case":"Küçük harf barındırmalı","auth.forms.has_upper_case":"Büyük harf barındırmalı","auth.forms.has_special_char":"Özel karakter barındırmalı","auth.forms.has_number":"Rakam barındırmalı","auth.forms.is_long_enough":"En az 8 karakter","auth.forms.mandatory_rules":"Zorunlu","auth.forms.optional_rules_you_should_follow":"Önerilen (şiddetle)","auth.forms.caps_lock_is_on":"Caps lock Açık","auth.sso_providers.unknown":"unknown","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","commons.cancel":"İptal","commons.update":"Güncelle","commons.copy":"Kopyala","commons.copy_to_clipboard":"Panoya kopyala","commons.copied_to_clipboard":"Panoya kopyalandı","commons.profile":"Profil","commons.edit":"Düzenle","commons.delete":"Sil","commons.disable":"Devre dışı bırak","commons.enable":"Etkinleştir","commons.create":"Oluştur","commons.save":"Kaydet","commons.close":"Kapat","commons.clear":"Temizle","commons.clear_search":"Aramayı temizle","commons.demo_do_not_post_sensitive_data":"Bu Demo uygulama, hassas bir veri girmeyin","commons.testing_do_not_post_sensitive_data":"Bu test uygulaması, hassas bir veri girmeyin","commons.x_selected":":count tanesi seçildi","commons.name":"Ad","commons.manage":"Yönet","commons.done":"Tamam","commons.new":"Yeni","commons.back":"Geri","commons.move":"Taşı","commons.export":"Dışa Aktar","commons.all":"Tümü","commons.check_all":"Tümü","commons.select_all":"Tümünü seç","commons.clear_selection":"Seçimi temizle","commons.sort_descending":"Azalana göre sırala","commons.sort_ascending":"Artana göre sırala","commons.rename":"Yeniden adlandır","commons.new_name":"Yeni isim","commons.options":"Seçenekler","commons.reload":"Yeniden yükle","commons.refresh":"Yenile","commons.data_refreshed_to_reflect_server_changes":"Sunucu tarafındaki değişikliklerin görünmesi için veriler yenilendi","commons.generate":"Oluştur","commons.generating_otp":"OTP oluşturuluyor","commons.open_in_browser":"Tarayıcıda aç","commons.continue":"Devam et","commons.discard":"Vazgeç","commons.about":"Hakkında","commons.usefull_links":"Yararlı bağlantılar","commons.environment":"Ortam","commons.credits":"Emeği geçenler","commons.2fauth_teaser":"İki Aşamalı Giriş (2FA) hesapları ve güvenlik kodlarının oluşturulması için bir web uygulaması","commons.made_with":"Kullanılanlar","commons.ui_icons_by":"KA İkonları","commons.logos_by":"Logolar","commons.search":"Ara","commons.resources":"Kaynaklar","commons.check_for_update":"Yeni sürümü kontrol et","commons.check_for_update_help":"Otomatik olarak (her hafta) kontrol et ve 2FAuth'un yeni bir sürümü Github'da yayımlandıysa haber ver","commons.you_are_up_to_date":"Bu uygulama güncel","commons.2fauth_description":"İki Aşamalı Giriş (2FA) hesapları ve güvenlik kodlarının oluşturulması için bir web uygulaması","commons.image_of_qrcode_to_scan":"Taranacak QR kodunun görüntüsü","commons.file":"Dosya","commons.or":"YA DA","commons.close_the_x_page":":pagetitle sayfasını kapat","commons.submit":"Gönder","commons.default":"Varsayılan","commons.back_to_home":"Anasayfaya geri dön","commons.nothing":"hiçbiri","commons.no_result":"Sonuç yok","commons.information":"Bilgi","commons.send":"Gönder","commons.optimize":"En iyi duruma getir","commons.IP":"IP","commons.browser":"Tarayıcı","commons.operating_system_short":"İşletim Sistemi","commons.no_entry_yet":"Henüz herhangi bir girdi yok","commons.time":"Zaman","commons.ip_address":"IP Adresi","commons.device":"Cihaz","commons.one_month":"1 mo.","commons.x_month":":x mos.","commons.one_year":"1 yr.","errors.resource_not_found":"Kaynak bulunamadı","errors.error_occured":"Bir hata oluştu:","errors.refresh":"Yenile","errors.no_valid_otp":"Bu QR kodunda geçerli bir OTP kaynağı yok","errors.something_wrong_with_server":"Sunucunuzda bir sorun var","errors.Unable_to_decrypt_uri":"URI şifresi çözülemedi","errors.not_a_supported_otp_type":"Bu OTP formatı şu anda desteklenmiyor","errors.cannot_create_otp_without_secret":"Gizli anahtar olmadan OTP oluşturulamaz","errors.data_of_qrcode_is_not_valid_URI":"Bu QR kodunun verisi geçerli bir OTP Auth URI değil. QR kodu şunu içeriyor:","errors.wrong_current_password":"Mevcut şifre yanlış, hiçbir şey değişmedi","errors.error_during_encryption":"Şifreleme başarısız oldu, veritabanınız korumasız kaldı.","errors.error_during_decryption":"Şifre çözme başarısız oldu, veritabanınız hala korunuyor. Bu, genellikle bir veya daha fazla hesaba ait şifrelenmiş verilerin bütünlük sorunlarından kaynaklanır.","errors.qrcode_cannot_be_read":"Bu QR kodu okunamıyor","errors.too_many_ids":"sorgu parametresine çok fazla kimlik eklendi, en fazla 100 izin verilir","errors.delete_user_setting_only":"Sadece kullanıcı tarafından oluşturulan ayarlar silinebilir","errors.indecipherable":"*anlaşılmaz*","errors.cannot_decipher_secret":"Gizli anahtar çözülemedi. Bu, genellikle 2Fauth'un .env yapılandırma dosyasında yanlış bir APP_KEY ayarlanmasından veya veritabanında bozulmuş verilerin saklanmasından kaynaklanır.","errors.https_required":"HTTPS bağlamı gereklidir","errors.browser_does_not_support_webauthn":"Cihazınız webauthn'yi desteklemiyor. Daha modern bir tarayıcı kullanarak daha sonra tekrar deneyin","errors.aborted_by_user":"Kullanıcı tarafından iptal edildi","errors.security_device_already_registered":"Cihaz zaten kayıtlı","errors.not_allowed_operation":"İşleme izin verilmiyor","errors.no_authenticator_support_specified_algorithms":"Hiçbir doğrulayıcı belirtilen algoritmaları desteklemiyor","errors.authenticator_missing_discoverable_credential_support":"Doğrulayıcıda keşfedilebilir kimlik bilgisi desteği bulunmuyor","errors.authenticator_missing_user_verification_support":"Doğrulayıcıda kullanıcı doğrulama desteği bulunmuyor","errors.unknown_error":"Bilinmeyen hata","errors.security_error_check_rpid":"Güvenlik hatası
WEBAUTHN_ID env değişkeninizi kontrol edin","errors.2fauth_has_not_a_valid_domain":"2FAuth'un alan adı geçerli bir alan adı değil","errors.user_id_not_between_1_64":"Kullanıcı ID'si 1 ile 64 karakter arasında değildi","errors.no_entry_was_of_type_public_key":'Hiçbir giriş "public-key" türünde değildi',"errors.unsupported_with_reverseproxy":"Not applicable when using an auth proxy or SSO","errors.unsupported_with_sso_only":"This authentication method is for administrators only. Users must log in with SSO.","errors.user_deletion_failed":"Kullanıcı hesabı silme işlemi başarısız oldu, hiçbir veri silinmedi","errors.auth_proxy_failed":"Proxy kimlik doğrulaması başarısız oldu","errors.auth_proxy_failed_legend":"2Fauth, bir kimlik doğrulama proxy'si arkasında çalışacak şekilde yapılandırılmış, ancak proxy'niz beklenen başlığı döndürmüyor. Yapılandırmanızı kontrol edin ve tekrar deneyin.","errors.invalid_x_migration":"Geçersiz veya okunamaz :appname verisi","errors.invalid_2fa_data":"Geçersiz 2FA verisi","errors.unsupported_migration":"Veriler desteklenen hiçbir formata uymuyor","errors.unsupported_otp_type":"Desteklenmeyen OTP türü","errors.encrypted_migration":"Okunamaz, veri şifrelenmiş gibi görünüyor","errors.no_logo_found_for_x":":service için logo mevcut değil","errors.file_upload_failed":"Dosya yüklemesi başarısız oldu","errors.unauthorized":"Yetkisiz","errors.unauthorized_legend":"Bu kaynağı görüntülemek veya bu işlemi gerçekleştirmek için izniniz yok","errors.cannot_delete_the_only_admin":"Tek admin hesabını silemezsiniz","errors.cannot_demote_the_only_admin":"Tek admin hesabını görevden alamazsınız","errors.error_during_data_fetching":"💀 Veri alımı sırasında bir sorun oluştu","errors.check_failed_try_later":"Kontrol başarısız oldu, lütfen daha sonra tekrar deneyin","errors.sso_disabled":"SSO devre dışı bırakıldı","errors.sso_bad_provider_setup":"Bu SSO sağlayıcısı .env dosyanızda tam olarak yapılandırılmamış","errors.sso_failed":"SSO aracılığıyla kimlik doğrulama reddedildi","errors.sso_no_register":"Kayıtlar devre dışı bırakıldı","errors.sso_email_already_used":"Aynı e-posta adresine sahip bir kullanıcı hesabı zaten mevcut, ancak dış hesap kimliğinizle eşleşmiyor. Bu e-posta ile zaten 2FAuth'a kayıtlıysanız SSO kullanmayın.","errors.account_managed_by_external_provider":"Hesap dış bir sağlayıcı tarafından yönetiliyor","errors.data_cannot_be_refreshed_from_server":"Veri sunucudan yenilenemiyor","errors.no_pwd_reset_for_this_user_type":"Bu kullanıcı için parola sıfırlama kullanılamıyor","errors.cannot_detect_qrcode_in_image":"Görüntüde bir QR kodu algılanamıyor, görüntüyü kırpmayı deneyin","errors.cannot_decode_detected_qrcode":"Algılanan QR kodu çözülemiyor, görüntüyü kırpmayı veya netleştirmeyi deneyin","errors.qrcode_has_invalid_checksum":"QR kodu geçersiz bir checksum'a sahip","errors.no_readable_qrcode":"Okunabilir bir QR kodu yok","errors.failed_icon_store_database_toggling":"Migration of icons failed. The setting has been restored to its previous value.","groups.groups":"Gruplar","groups.create_group":"Yeni grup oluştur","groups.show_group_selector":"Grup seçiciyi göster","groups.hide_group_selector":"Grup seçiciyi gizle","groups.select_accounts_to_show":"Gösterilecek grupları seç","groups.x_accounts":":count hesap","groups.manage_groups":"Grupları yönet","groups.active_group":"Aktif grup","groups.manage_groups_legend":"Hesaplarınızı istediğiniz şekilde düzenlemek için gruplar oluşturabilirsiniz. Tüm hesaplar, ait oldukları gruba bakılmaksızın 'Tümü' adlı sözde grupta görünür durumda kalır.","groups.deleting_group_does_not_delete_accounts":"Bir gurubu silmek, içindeki hesapları silmez","groups.move_selected_to":"Seçilenleri taşı","groups.move_selected_to_group":"Seçilenleri gruba taşı","groups.no_group":"Grup yok","groups.change_group":"Grubu değiştir","groups.group_successfully_created":"Grup başarıyla oluşturuldu","groups.group_name_saved":"Grup ismi kaydedildi","groups.group_successfully_deleted":"Grup başarıyla silindi","groups.forms.new_group":"Yeni grup","groups.forms.new_name":"Yeni isim","groups.forms.rename_group":"Grubu yeniden adlandır","groups.confirm.delete":"Bu grubu silmek istediğinizden emin misiniz?","languages.browser_preference":"Tarayıcı önayarı","languages.en":"English (İngilizce)","languages.fr":"Français (Fransızca)","languages.de":"Deutsch (Almanca)","languages.es":"Español (İspanyolca)","languages.zh":"简体中文 (Basitleştirilmiş Çince)","languages.ru":"Русский (Rusça)","languages.bg":"Български (Bulgarca)","languages.ja":"日本語 (Japonca)","languages.hi":"हिंदी (Hintçe)","languages.tr":"Türkçe (Turkish)","notifications.hello":"Merhaba","notifications.hello_user":"Merhaba :username,","notifications.regards":"Saygılar","notifications.test_email_settings.subject":"2FAuth deneme ePostası","notifications.test_email_settings.reason":"Bu ePostayı, ePosta yapılandırmanızın doğruluğunu test etmek amacıyla bir deneme ePostası istediğiniz için aldınız.","notifications.test_email_settings.success":"Haberler iyi, çalışıyor :)","notifications.new_device.subject":"Connection to 2FAuth from a new device","notifications.new_device.resume":"2FAuth hesabınıza yeni bir cihaz bağlandı.","notifications.new_device.connection_details":"Bu bağlantının detayları","notifications.new_device.recommandations":"Eğer bu sizseniz, bu uyarı gözardı edebilirsiniz. Eğer hesabınızda şüpheli bir hareket olduğunu düşünüyorsanız, lütfen parolanızı değiştirin.","notifications.failed_login.subject":"2FAuth uygulamasına başarısız giriş","notifications.failed_login.resume":"2FAuth hesabınıza başarısız bir giriş denemesi yapıldı.","notifications.failed_login.connection_details":"Bu giriş denemesinin detayları şöyle","notifications.failed_login.recommandations":"If this was you, you can ignore this alert. If further attempts fail, you should contact the 2FAuth administrator to review security settings and take action against this attacker.","pagination.previous":"« Önceki","pagination.next":"Sonraki »","passwords.reset":"Parolanız sıfırlandı!","passwords.sent":"ePosta adresinize parola sıfırlama bağlantısı gönderdik!","passwords.throttled":"Lütfen tekrar denemeden önce bekleyin.","passwords.token":"Şifre sıfırlama token'i geçersiz.","passwords.user":"Bu ePosta adresine sahip bir kullanıcı bulamadık.","passwords.password":"Parolalar en az sekiz karakterden oluşmalı ve şifre doğrulaması ile eşleşmelidir.","settings.settings":"Ayarlar","settings.preferences":"Seçenekler","settings.account":"Hesap","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Tokenler","settings.options":"Seçenekler","settings.user_preferences":"Kullanıcı tercihleri","settings.admin_settings":"Yönetici ayarları","settings.confirm.revoke":"Bu tokeni iptal etmek istediğinize emin misiniz?","settings.you_are_administrator":"Yöneticisiniz","settings.account_linked_to_sso_x_provider":":provider hesabınızı kullanarak SSO girişi yaptınız. Bilgilerinizi buradan değil :provider üzerinden değiştirebilirsiniz.","settings.general":"Genel","settings.security":"Güvenlik","settings.notifications":"Notifications","settings.profile":"Profil","settings.change_password":"Parola değiştir","settings.personal_access_tokens":"Kişisel erişim tokenleri","settings.token_legend":"Kişisel Erişim Tokenleri, herhangi bir uygulamanın 2FAuth API'sinde kimlik doğrulaması yapmasına olanak tanır. Erişim tokenlerini, kullanıcı uygulama isteklerinin yetkilendirmesinde Taşıyıcı token olarak belirtmelisiniz.","settings.generate_new_token":"Yeni bir token oluştur","settings.revoke":"İptal et","settings.token_revoked":"Token başarıyla iptal edildi","settings.revoking_a_token_is_permanent":"Token iptali kalıcıdır","settings.make_sure_copy_token":"Kişisel tokeninizi şu anda kopyaladığınızdan emin olun. Bir daha görebilme şansınız olmayacak!","settings.data_input":"Veri girişi","settings.forms.edit_settings":"Ayarları düzenle","settings.forms.setting_saved":"Ayarlar kaydedildi","settings.forms.new_token":"Yeni token","settings.forms.some_translation_are_missing":"Tarayıcıda belirtilen dildeki çeviriler eksik mi?","settings.forms.help_translate_2fauth":"2FAuth çevirisine yardımcı olun","settings.forms.language.label":"Diller","settings.forms.language.help":"2FAuth'un gösterileceği dili değiştirir. Buradaki diller tamamlanmış olup tarayıcınız tarafından tercih edilen dili değiştirmek için seçim yapabilirsiniz.","settings.forms.timezone.label":"Time zone","settings.forms.timezone.help":"The time zone applied to all dates and times displayed in the application","settings.forms.show_otp_as_dot.label":`Oluşturulan OTP'yi noktalar olarak göster`,"settings.forms.show_otp_as_dot.help":"Oluşturulan paroladaki karakterli, güvenliği arttırmak için, *** olarak gösterir. Kopyala/yapıştır özelliğini etkilemez","settings.forms.reveal_dotted_otp.label":`Gizlenmiş OTP'yi göster`,"settings.forms.reveal_dotted_otp.help":"Noktalar şeklinde gösterilen parolanın geçici olarak gösterilmesini sağlar","settings.forms.close_otp_on_copy.label":`Kopyaladıktan sonra OTP'yi kapat`,"settings.forms.close_otp_on_copy.help":"Click on a generated password to copy it automatically hides it from the screen","settings.forms.auto_close_timeout.label":'Auto close OTP',"settings.forms.auto_close_timeout.help":"Automatically hide on-screen password after a timeout. This avoids unnecessary requests for fresh passwords if you forget to close the password view.","settings.forms.clear_search_on_copy.label":"Kopyaladıktan sonra Aramayı Temizle","settings.forms.clear_search_on_copy.help":"Bir kod panoya kopyalandıktan hemen sonra Arama kutusunu temizler","settings.forms.sort_case_sensitive.label":"Sort case sensitive","settings.forms.sort_case_sensitive.help":"When invoked, force the Sort function to sort accounts on a case-sensitive basis","settings.forms.copy_otp_on_display.label":`OTP'yi görününce kopyala`,"settings.forms.copy_otp_on_display.help":'Oluşturulan parolayı, ekranda görünür görünmez, otomatik olarak kopyalar. Tarayıcı sınırlandırmaları nedeniyle, yenilenenler değil yalnızca ilk TOTP kopyalanır',"settings.forms.use_basic_qrcode_reader.label":"Basit QR kod okuyucuyu kullan","settings.forms.use_basic_qrcode_reader.help":"QR kod okunması sırasında sorunlar yaşıyorsanız, bu seçenek daha basit ancak daha güvenilir bir QR kod okuyucu kullanılmasını sağlar","settings.forms.display_mode.label":"Görüntüleme modu","settings.forms.display_mode.help":"Hesapların liste olarak mı yoksa ızgara olarak mı görüntülenmesini istediğinizi seçin","settings.forms.password_format.label":"Parola gösterimi","settings.forms.password_format.help":"Daha rahat okuma ve akılda tutma için parolalarınızdaki rakamların nasıl gruplanacağını seçin","settings.forms.pair":"İkili ayır","settings.forms.pair_legend":"Rakamları ikişerli ayır","settings.forms.trio_legend":"Rakamları üçerli ayır","settings.forms.half_legend":"Rakamları eşit sayıda iki gruba ayır","settings.forms.trio":"Üçlü ayır","settings.forms.half":"Ortadan böl","settings.forms.grid":"Izgara","settings.forms.list":"Liste","settings.forms.theme.label":"Tema","settings.forms.theme.help":"Belirli bir tema kullan veya sistem/tarayıcı tercihini uygula","settings.forms.light":"Aydınlık","settings.forms.dark":"Karanlık","settings.forms.automatic":"Otomatik","settings.forms.show_accounts_icons.label":"Simgeleri göster","settings.forms.show_accounts_icons.help":"Show account icons in the main view","settings.forms.get_official_icons.label":"Özgün simgeleri al","settings.forms.get_official_icons.help":"Hesabı eklerken 2FA sağlayıcısının özgün simgelerini al (dene)","settings.forms.auto_lock.label":"Otomatik kilitleme","settings.forms.auto_lock.help":"İşlem olmaması durumunda kullanıcının çıkışını yapar. Eğer kimlik doğrulama bir proxy aracılığı ile yapılmış ve belirlenmiş bir çıkış url'si yok ise bu seçenek işe yaramaz.","settings.forms.default_group.label":"Varsayılan grup","settings.forms.default_group.help":"Yeni oluşturulan hesapların ilişkilendirileceği grup","settings.forms.view_default_group_on_copy.label":"Kopyalarken varsayılan grubu göster","settings.forms.view_default_group_on_copy.help":"OTP kopyalandığında her zaman varsayılan gruba döner","settings.forms.auto_save_qrcoded_account.label":"Auto-save accounts","settings.forms.auto_save_qrcoded_account.help":"New accounts are automatically registered after scanning or uploading a QR code, no need to click a Save button","settings.forms.useDirectCapture.label":"Doğrudan giriş","settings.forms.useDirectCapture.help":"Mevcut olanlar arasından bir giriş modu seçmeniz istenip istenmeyeceğini veya doğrudan varsayılan giriş modunu kullanmak isteyip istemediğinizi seçin","settings.forms.defaultCaptureMode.label":"Varsayılan giriş modu","settings.forms.defaultCaptureMode.help":"Doğrudan giriş seçeneği seçildiğinde varsayılan giriş modu kullanılır","settings.forms.remember_active_group.label":"Grup filtrelerini hatırla","settings.forms.remember_active_group.help":"Son uygulanan grup filtresini saklar ve bir sonraki ziyaretinizde aynısını gösterir","settings.forms.otp_generation.label":"Parolayı göster","settings.forms.otp_generation.help":`OTP'lerin nasıl ve ne zaman gösterileceğini ayarlar.
`,"settings.forms.notify_on_new_auth_device.label":"On new device","settings.forms.notify_on_new_auth_device.help":"Get an email when a new device connects to your 2FAuth account for the first time","settings.forms.notify_on_failed_login.label":"On failed login","settings.forms.notify_on_failed_login.help":"Get an email each time an attempt to connect to your 2FAuth account fails","settings.forms.show_email_in_footer.label":"Show email in footer","settings.forms.show_email_in_footer.help":"Display the logged-in user's email in the footer instead of direct navigation links. The links are then available in a menu behind a click/tap on the email address.","settings.forms.otp_generation_on_request":"Tıkladıktan/dokunduktan sonra","settings.forms.otp_generation_on_request_legend":"Tek, kendi görünüşünde","settings.forms.otp_generation_on_request_title":"Parolaları ayrı bir ekranda görmek için tıklayın","settings.forms.otp_generation_on_home":"Sürekli","settings.forms.otp_generation_on_home_legend":"Tümü birden, ana ekranda","settings.forms.otp_generation_on_home_title":"Tüm parolaları ana sayfada gösterir","settings.forms.never":"Asla","settings.forms.on_otp_copy":"Güvenlik kodu kopyalandığında","settings.forms.1_minutes":"1 dakika sonra","settings.forms.2_minutes":"After 2 minutes","settings.forms.5_minutes":"5 dakika sonra","settings.forms.10_minutes":"10 dakika sonra","settings.forms.15_minutes":"15 dakika sonra","settings.forms.30_minutes":"30 dakika sonra","settings.forms.1_hour":"1 saat sonra","settings.forms.1_day":"1 gün sonra","settings.forms.livescan":"Canlı QR kod tarama","settings.forms.upload":"QR kod yükleme","settings.forms.advanced_form":"Gelişmiş form","titles.404":"Öge bulunamadı","titles.start":"Yeni hesap","titles.capture":"QR flaşı","titles.accounts":"Hesaplar","titles.createAccount":"Hesap oluştur","titles.importAccounts":"Hesapları içeri aktar","titles.editAccount":"Hesap düzenle","titles.showQRcode":"QR kod olarak hesap","titles.groups":"Gruplar","titles.createGroup":"Grup oluştur","titles.editGroup":"Grup düzenle","titles.settings.options":"Seçenekler","titles.settings.account":"Kullanıcı hesabı","titles.settings.oauth.tokens":"OAuth tokenleri","titles.settings.oauth.generatePAT":"Yeni kişisel token","titles.settings.webauthn.editCredential":"Cihaz düzenle","titles.settings.webauthn.devices":"WebAuthn cihazları","titles.login":"Giriş","titles.register":"Kayıt ol","titles.autolock":"Otomatik kilitleme","titles.password.request":"Parola sıfırlama","titles.password.reset":"Yeni parola","titles.webauthn.lost":"Hesap kurtarma","titles.webauthn.recover":"Yeni cihaz ekle","titles.flooded":"Flood","titles.genericError":"Hata","titles.about":"Hakkında","titles.admin.appSetup":"Uygulama kurulumu","titles.admin.users":"Kullanıcı yönetimi","titles.admin.createUser":"Kullanıcı oluştur","titles.admin.manageUser":"Kullanıcı yönet","titles.admin.logs.access":"Erişim günlüğü","twofaccounts.service":"Servis","twofaccounts.account":"Hesap","twofaccounts.icon":"Simge","twofaccounts.icon_to_illustrate_the_account":"Hesabı gösteren simge","twofaccounts.remove_icon":"Simgeyi kaldır","twofaccounts.no_account_here":"Burada 2FA yok!","twofaccounts.add_first_account":"Bir metod seç ve ilk hesabını ekle","twofaccounts.use_full_form":"Veya detaylı formu kullan","twofaccounts.add_one":"Ekle","twofaccounts.show_qrcode":"QR kodu göster","twofaccounts.no_service":"- servis yok -","twofaccounts.account_created":"Hesap başarıyla oluşturuldu","twofaccounts.account_updated":"Hesap başarı ile güncellendi","twofaccounts.accounts_deleted":"Hesap(lar) başarıyla silindi","twofaccounts.accounts_moved":"Hesap(lar) başarıyla taşındı","twofaccounts.export_selected_accounts":"Export selected accounts","twofaccounts.twofauth_export_format":"2FAuth format","twofaccounts.twofauth_export_format_sub":"Export data using the 2FAuth json schema","twofaccounts.twofauth_export_format_desc":"You should prefer this option if you need to create a backup that can be restored. This format takes care of the icons.","twofaccounts.twofauth_export_format_url":"The schema definition is described here:","twofaccounts.twofauth_export_schema":"2FAuth export schema","twofaccounts.otpauth_export_format":"otpauth URIs","twofaccounts.otpauth_export_format_sub":"Export data as a list of otpauth URIs","twofaccounts.otpauth_export_format_desc":"otpauth URI is the most common format used to exchange 2FA data, for example in the form of a QR code when you enable 2FA on a web site. Select this if you want to switch from 2FAuth.","twofaccounts.reveal":"göster","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"John DOE","twofaccounts.forms.new_account":"Yeni hesap","twofaccounts.forms.edit_account":"Hesabı düzenle","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"QR kod tara","twofaccounts.forms.upload_qrcode":"QR kod yükle","twofaccounts.forms.use_advanced_form":"Detaylı formu kullan","twofaccounts.forms.prefill_using_qrcode":"QR kod kullanarak doldur","twofaccounts.forms.use_qrcode.val":"QR kod kullan","twofaccounts.forms.use_qrcode.title":"Formu sihirli bir şekilde doldurmak için QR kod kullan","twofaccounts.forms.unlock.val":"Kilidi aç","twofaccounts.forms.unlock.title":"Kilidi aç (risk size ait)","twofaccounts.forms.lock.val":"Kilitle","twofaccounts.forms.lock.title":"Kilitle","twofaccounts.forms.choose_image":"Yükle","twofaccounts.forms.i_m_lucky":"Şansımı dene","twofaccounts.forms.i_m_lucky_legend":'"Şansımı dene" butonu söz konusu servisin özgün simgesini almaya çalışır. Hizmetin gerçek adını ".xyz" uzantısı olmadan girin ve yazım hatalarından kaçınmaya çalışın. (beta özelliği)',"twofaccounts.forms.test":"Deneme","twofaccounts.forms.group.label":"Group","twofaccounts.forms.group.help":"The group to which the account is to be assigned","twofaccounts.forms.secret.label":"Anahtar","twofaccounts.forms.secret.help":"Güvenlik kodlarınızın oluşturulması için gereken anahtar","twofaccounts.forms.plain_text":"Düz metin","twofaccounts.forms.otp_type.label":`Oluşturulacak OTP'nin türünü seçin`,"twofaccounts.forms.otp_type.help":"Zamana dayalı OTP veya HMAC dayalı OTP veya Steam OTP","twofaccounts.forms.digits.label":"Hane sayısı","twofaccounts.forms.digits.help":"Oluşturulacak güvenlik kodunun kaç haneden oluşacağı","twofaccounts.forms.algorithm.label":"Algoritma","twofaccounts.forms.algorithm.help":"Güvenlik kodlarının oluşturulması için kullanılacak algoritma","twofaccounts.forms.period.label":"Süre","twofaccounts.forms.period.placeholder":"Varsayılan 30","twofaccounts.forms.period.help":"Oluşturulan güvenlik kodlarının, saniye cinsinden, geçerli olduğu süre","twofaccounts.forms.counter.label":"Sayaç","twofaccounts.forms.counter.placeholder":"Varsayılan değer 0","twofaccounts.forms.counter.help":"Başlangıç sayaç değeri","twofaccounts.forms.counter.help_lock":"Sayaç değerini düzenlemek risklidir çünkü hesabı hizmetin doğrulama sunucusuyla senkronize etmeyi bozabilirsiniz. Değişiklik yapmak için kilit simgesini kullanın, ancak ne yaptığınızı biliyorsanız sadece değiştirin","twofaccounts.forms.image.label":"Görüntü","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"Dış bir resmin URL'i, hesap simgesi olarak kullanılacak","twofaccounts.forms.options_help":"Aşağıdaki seçenekleri boş bırakabilirsiniz eğer nasıl ayarlanacağını bilmiyorsanız. En yaygın kullanılan değerler uygulanacaktır.","twofaccounts.forms.alternative_methods":"Alternatif yöntem","twofaccounts.forms.spaces_are_ignored":"İstenmeyen boşluklar otomatik olarak kaldırılacaktır","twofaccounts.stream.live_scan_cant_start":"Canlı tarama başlatılamıyor :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth'un kameranıza ulaşmak için izni yok","twofaccounts.stream.need_grant_permission.solution":"Cihaz kamerasını kullanma izni vermeniz gerekiyor. Eğer zaten reddettiyseniz ve tarayıcınız tekrar sormuyorsa, izni nasıl vereceğiniz hakkında tarayıcı belgelerine başvurun.","twofaccounts.stream.need_grant_permission.click_camera_icon":"Genellikle tarayıcının adres çubuğunun yanında veya içinde çizili bir kamera simgesine tıklayarak yapılır","twofaccounts.stream.not_readable.reason":"Tarayıcı yüklenemedi","twofaccounts.stream.not_readable.solution":"Kamera zaten kullanımda mı? Başka bir uygulamanın kameranızı kullanmadığından emin olun ve tekrar deneyin","twofaccounts.stream.no_cam_on_device.reason":"Bu cihazda kamera yok","twofaccounts.stream.no_cam_on_device.solution":"Belki web kamerasını takmayı unuttunuz","twofaccounts.stream.secured_context_required.reason":"Güvenli bağlam gereklidir","twofaccounts.stream.secured_context_required.solution":"Canlı tarama için HTTPS gereklidir. Eğer 2FAuth'u bilgisayarınızdan çalıştırıyorsanız, localhost dışında sanal bir ana bilgisayar kullanmayın","twofaccounts.stream.https_required":"Kamera yayını için HTTPS gereklidir","twofaccounts.stream.camera_not_suitable.reason":"Yüklenen kameralar uygun değil","twofaccounts.stream.camera_not_suitable.solution":"Lütfen başka bir cihaz/kamera kullanın","twofaccounts.stream.stream_api_not_supported.reason":"Bu tarayıcıda Akış API'si desteklenmiyor","twofaccounts.stream.stream_api_not_supported.solution":"Modern bir tarayıcı kullanmalısınız","twofaccounts.confirm.delete":"Bu hesabı silmek istediğinizden emin misiniz?","twofaccounts.confirm.cancel":"Değişiklikler kaybolacak. Emin misiniz?","twofaccounts.confirm.discard":"Bu hesabı silmek istediğinizden emin misiniz?","twofaccounts.confirm.discard_all":"Tüm hesapları silmek istediğinizden emin misiniz?","twofaccounts.confirm.discard_duplicates":"Tüm kopyaları silmek istediğinizden emin misiniz?","twofaccounts.import.import":"İçe Aktar","twofaccounts.import.to_import":"İçe Aktar","twofaccounts.import.import_legend":"2FAuth, çeşitli 2FA uygulamalarından veri alabilir.","twofaccounts.import.import_legend_afterpart":"Bu uygulamaların Dışa Aktarma özelliğini kullanarak bir QR kodu veya JSON dosyası gibi bir göç kaynağı alın ve buraya yükleyin.","twofaccounts.import.upload":"Yükle","twofaccounts.import.scan":"Tara","twofaccounts.import.supported_formats_for_qrcode_upload":"Kabul Edilen: jpg, jpeg, png, bmp, gif, svg veya webp","twofaccounts.import.supported_formats_for_file_upload":"Kabul Edilen: Düz metin, json, 2fas","twofaccounts.import.expected_format_for_direct_input":"Beklenen: Her biri bir satırda bir otpauth URI listesi","twofaccounts.import.supported_migration_formats":"Desteklenen taşıma biçimleri","twofaccounts.import.qr_code":"QR Kodu","twofaccounts.import.text_file":"Metin dosyası","twofaccounts.import.direct_input":"Doğrudan giriş","twofaccounts.import.plain_text":"Düz metin","twofaccounts.import.parsing_data":"Veri analiz ediliyor...","twofaccounts.import.issuer":"Yayınlayan","twofaccounts.import.imported":"İçe aktarıldı","twofaccounts.import.failure":"Başarısız","twofaccounts.import.x_valid_accounts_found":"Toplam geçerli hesap sayısı: :count","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"Taşıma kaynağında aşağıdaki 2FA hesapları bulundu. Şimdiye kadar hiçbiri 2FAuth'a eklenmedi.","twofaccounts.import.use_buttons_to_save_or_discard":"Kullanılabilir düğmeleri kullanarak bunları 2FA koleksiyonunuza kalıcı olarak kaydedin veya bunları silin.","twofaccounts.import.import_all":"Tümünü içe aktar","twofaccounts.import.import_this_account":"Hesabı içe aktar","twofaccounts.import.discard_all":"Hepsini iptal et","twofaccounts.import.discard_duplicates":"Aynı olanları yoksay","twofaccounts.import.discard_this_account":"Bu hesabı yoksay","twofaccounts.import.generate_a_test_password":"Bir deneme parolası oluştur","twofaccounts.import.possible_duplicate":"Birebir aynı verilere sahip başkan bir hesap mevcut","twofaccounts.import.invalid_account":"- geçersiz hesap -","twofaccounts.import.invalid_service":"- geçersiz servis -","twofaccounts.import.do_not_set_password_or_encryption":"Başka bir 2FA uygulamasından verileri dışarı aktarırken şifreleme veya şifre ile koruma seçeneklerini kullanmayın, aksi takdirde 2FAuth bu verileri açamaz.","validation.accepted":":attribute kabul edilmelidir.","validation.accepted_if":":other, :value olduğunda :attribute kabul edilmelidir.","validation.active_url":":attribute geçerli bir URL değil.","validation.after":":attribute şu tarihten :date sonra olmalı.","validation.after_or_equal":":attribute, :date tarihi ile aynı veya bundan sonraki bir tarih olmalıdır.","validation.alpha":":attribute yalnızca harf içermelidir.","validation.alpha_dash":":attribute yalnızca harfler, rakamlar, tireler ve alt çizgiler içermelidir.","validation.alpha_num":":attribute yalnızca harfler ve rakamlar içermelidir.","validation.array":":attribute bir dizi olmalıdır.","validation.ascii":"The :attribute field must only contain single-byte alphanumeric characters and symbols.","validation.before":":attribute, :date tarihinden önce bir tarih olmalıdır.","validation.before_or_equal":":attribute, :date tarihi ile aynı veya önceki bir tarih olmalıdır.","validation.between.array":":attribute, :min ve :max aralığında olmalıdır.","validation.between.file":":attribute, :min ve :max kilobyte aralığında olmalıdır.","validation.between.numeric":":attribute, :min ve :max aralığında olmalıdır.","validation.between.string":":attribute, :min ve :max karakter aralığında olmalıdır.","validation.boolean":":attribute, doğru veya yanlış olmalıdır.","validation.can":"The :attribute field contains an unauthorized value.","validation.confirmed":":attribute doğrulaması eşleşmedi.","validation.contains":"The :attribute field is missing a required value.","validation.current_password":"Parola hatalı.","validation.date":":attribute geçerli bir tarih değil.","validation.date_equals":":attribute tarihi, :date tarihine eşit olmalıdır.","validation.date_format":":attribute :format biçimi ile eşleşmiyor.","validation.decimal":"The :attribute field must have :decimal decimal places.","validation.declined":":attribute reddedilmelidir.","validation.declined_if":":other, :value olduğunda :attribute reddedilmelidir.","validation.different":":attribute ve :other birbirinden farklı olmalıdır.","validation.digits":":attribute, :digits rakam olmalıdır.","validation.digits_between":":attribute, :min ve :max basamak aralığında olmalıdır.","validation.dimensions":":attribute geçersiz görüntü boyutlarına sahip.","validation.distinct":":attribute alanı yinelenen bir değere sahip.","validation.doesnt_end_with":":attribute şunlardan biriyle bitmemelidir: :values.","validation.doesnt_start_with":":attribute şunlardan biriyle başlamamalıdır: :values.","validation.email":":attribute geçerli bir ePosta adresi olmalı.","validation.ends_with":":attribute şunlardan biriyle bitmelidir: :values.","validation.enum":":attribute seçimi geçersiz.","validation.exists":":attribute seçimi geçersiz.","validation.extensions":"The :attribute field must have one of the following extensions: :values.","validation.file":":attribute bir dosya olmalıdır.","validation.filled":":attribute alanının doldurulması zorunludur.","validation.gt.array":":attribute :value öğelerinden daha fazla öğeye sahip olmalıdır.","validation.gt.file":":attribute, :value kilobayttan fazla olmalıdır.","validation.gt.numeric":":attribute, :value değerinden büyük olmalıdır.","validation.gt.string":":attribute :value karakterden büyük olmalıdır.","validation.gte.array":":attribute, :value veya daha fazla öğe içermelidir.","validation.gte.file":":attribute :value kilobayttan büyük veya eşit olmalıdır.","validation.gte.numeric":":attribute, :value değerinden büyük veya eşit olmalıdır.","validation.gte.string":":attribute, en az :value karakter içermelidir.","validation.hex_color":"The :attribute field must be a valid hexadecimal color.","validation.image":":attribute bir görsel olmalı.","validation.in":":attribute seçimi geçersiz.","validation.in_array":":attribute değeri :other içinde mevcut değil.","validation.integer":":attribute tamsayı olmalıdır.","validation.ip":":attribute geçerli bir IP adresi olmalıdır.","validation.ipv4":":attribute geçerli bir IPv4 adresi olmalıdır.","validation.ipv6":":attribute geçerli bir IPv6 adresi olmalıdır.","validation.json":":attribute geçerli bir JSON olmalı.","validation.list":"The :attribute field must be a list.","validation.lowercase":"The :attribute field must be lowercase.","validation.lt.array":":attribute, :value ögeden az olmalıdır.","validation.lt.file":":attribute, :value kilobayttan az olmalıdır.","validation.lt.numeric":":attribute, :value değerinden küçük olmalıdır.","validation.lt.string":":attribute, :value karakterden az olmalıdır.","validation.lte.array":":attribute, en fazla :value öge içermelidir.","validation.lte.file":":attribute, :value kilobayttan küçük ya da eşit olmalıdır.","validation.lte.numeric":":attribute, :value değerinden küçük veya eşit olmalıdır.","validation.lte.string":":attribute :value karakterden az ya da eşit olmalıdır.","validation.mac_address":":attribute geçerli bir MAC adresi olmalıdır.","validation.max.array":":attribute, :max öğeden fazla öğeye sahip olmamalıdır.","validation.max.file":":attribute değeri :max kilobayttan büyük olmamalıdır.","validation.max.numeric":":attribute değeri :max değerinden büyük olmamalıdır.","validation.max.string":":attribute, :max karakterden fazla olmamalıdır.","validation.max_digits":":attribute, :max rakamdan fazla rakama sahip olmamalıdır.","validation.mimes":":attribute şu dosya biçimlerinden biri olmalıdır: :values.","validation.mimetypes":":attribute şu dosya biçimlerinden biri olmalıdır: :values.","validation.min.array":":attribute en az :min nesneye sahip olmalıdır.","validation.min.file":":attribute en az :min kilobayt olmalıdır.","validation.min.numeric":":attribute en az :min olmalıdır.","validation.min.string":":attribute en az :min karakter içermelidir.","validation.min_digits":":attribute en az :min rakam içermelidir.","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":":attribute, :values değerinin katı olmalıdır.","validation.not_in":":attribute seçimi geçersiz.","validation.not_regex":":attribute formatı geçersiz.","validation.numeric":":attribute bir sayı olmalıdır.","validation.password.letters":":attribute en az bir harf içermelidir.","validation.password.mixed":":attribute en az bir büyük harf ve bir küçük harf içermelidir.","validation.password.numbers":":attribute en az bir sayı içermelidir.","validation.password.symbols":":attribute en az bir sembol içermelidir.","validation.password.uncompromised":"Girilen :attribute bir veri sızıntısında ortaya çıktı. Lütfen farklı bir :attribute seçin.","validation.present":":attribute alanı dolu olmalı.","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":":attribute alanı engellenmiştir.","validation.prohibited_if":":other :value iken :attribute alanı engellenmiştir.","validation.prohibited_unless":":attribute alanı, :other alanı :value değerlerinden birine sahip olmadığı sürece engellenmiştir.","validation.prohibits":":attribute alanı :other değerinin mevcut olmasını engeller.","validation.regex":":attribute formatı geçersiz.","validation.required":":attribute alanı zorunludur.","validation.required_array_keys":":attribute alanı aşağıdakiler için girişler içermelidir: :values.","validation.required_if":":other :value iken :attribute alanı gereklidir.","validation.required_if_accepted":":other kabul edildiğinde :attribute alanı gereklidir.","validation.required_if_declined":"The :attribute field is required when :other is declined.","validation.required_unless":":attribute alanı, :other alanı :value değerlerinden birine sahip olmadığında zorunludur.","validation.required_with":":values varsa :attribute alanı zorunludur.","validation.required_with_all":":values mevcut ise :attribute alanları zorunludur.","validation.required_without":":attribute alanı :values yokken zorunludur.","validation.required_without_all":"Herhangi bir :values değeri mevcut olmadığında :attribute alanına değer girilmesi zorunludur.","validation.same":":attribute ve :other aynı olmalı.","validation.size.array":":attribute :size nesneye sahip olmalıdır.","validation.size.file":":attribute :size kilobayt olmalıdır.","validation.size.numeric":":attribute, :size olmalıdır.","validation.size.string":": attribute en az :size karakter olmalıdır.","validation.starts_with":":attribute şunlardan biriyle başlamalıdır: :values.","validation.string":":attribute bir dize olmalıdır.","validation.timezone":":attribute geçerli bir saat dilimi olmalıdır.","validation.unique":":attribute daha önceden kayıt edilmiş.","validation.uploaded":":attribute yüklemesi başarısız.","validation.uppercase":"The :attribute field must be uppercase.","validation.url":":attribute geçerli bir URL olmalıdır.","validation.ulid":"The :attribute field must be a valid ULID.","validation.uuid":":attribute geçerli bir UUID olmalıdır.","validation.single":":attribute kullanıldığında, istek gövdesindeki tek parametre bu olmalıdır","validation.onlyCustomOtpWithUri":"Uri parametresi tek başına veya yalnızca 'custom_otp' parametresiyle birlikte sağlanmalıdır","validation.IsValidRegex":"The :attribute must be a valid regex pattern.","validation.custom.icon.image":"Desteklenen formatlar jpeg, png, bmp, gif, svg veya webp'dir.","validation.custom.qrcode.image":"Desteklenen formatlar jpeg, png, bmp, gif, svg veya webp'dir.","validation.custom.uri.regex":":attribute geçerli bir otpauth uri'si değil.","validation.custom.otp_type.in":":attribute desteklenmiyor.","validation.custom.email.exists":"Bu ePostayı kullanan bir hesap bulunamadı.","validation.custom.email.ComplyWithEmailRestrictionPolicy":"Bu ePosta adresi kayıt politikasına uymuyor","validation.custom.email.IsValidEmailList":"Tüm ePostaların geçerli ve dikey çubuk ile ayrılmış olması gerekiyor","validation.custom.secret.isBase32Encoded":":attribute base32 kodlu bir dize olmalıdır.","validation.custom.account.regex":":attribute iki nokta üst üste içermemelidir.","validation.custom.service.regex":":attribute iki nokta üst üste içermemelidir.","validation.custom.label.required":"Uri'nin bir etiketi olmalıdır.","validation.custom.ids.regex":"IDler virgül ile ayrılmalı, en sonda ise virgül olmamalıdır."};export{a as default}; diff --git a/public/build/assets/php_zh-CiLNc0zd.js b/public/build/assets/php_zh-Da1G_uNl.js similarity index 99% rename from public/build/assets/php_zh-CiLNc0zd.js rename to public/build/assets/php_zh-Da1G_uNl.js index b8e6cc3d..eea0f768 100644 --- a/public/build/assets/php_zh-CiLNc0zd.js +++ b/public/build/assets/php_zh-Da1G_uNl.js @@ -1,4 +1,4 @@ -/*! 2FAuth version 5.4.1 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"管理员","admin.admin_panel":"管理面板","admin.app_setup":"应用设置","admin.auth":"鉴权","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.successful_login_on":'成功登录于 :login_at',"admin.successful_logout_on":'成功退出于 :login_at',"admin.failed_login_on":'登录失败于 :login_at',"admin.viewed_on":'查看 :login_at',"admin.last_accesses":"最近访问","admin.see_full_log":"显示完整日志","admin.browser_on_platform":":platform 的 :browser","admin.access_log_has_more_entries":"访问日志包含更多条目。","admin.access_log_legend_for_user":"用户 :username 的完整访问日志","admin.show_last_month_log":"显示上个月的条目","admin.show_three_months_log":"显示最近 3 个月的条目","admin.show_six_months_log":"显示最近 6 个月的条目","admin.show_one_year_log":"显示上一年的条目","admin.sort_by_date_asc":"倒序显示最近访问","admin.sort_by_date_desc":"顺序显示最近访问","admin.single_sign_on":"单点登录(SSO)","admin.database":"数据库","admin.file_system":"文件系统","admin.storage":"存储","admin.forms.use_encryption.label":"保护敏感数据","admin.forms.use_encryption.help":"敏感数据、2FA 秘钥和邮箱地址会以加密形式储存在数据库中。请务必备份您在 .env 中设置的 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":"启用 SSO","admin.forms.enable_sso.help":"允许访客通过单点登录的方式,使用外部 ID 进行身份验证","admin.forms.use_sso_only.label":"仅使用 SSO","admin.forms.use_sso_only.help":"仅允许通过 SSO。启用此功能后,普通用户将无法使用密码和 WebAuthn 登录到 2FAuth,但管理员不受此限制的影响。","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.health_endpoint.label":"节点健康检查","admin.forms.health_endpoint.help":"您可以访问此 URL 来检查此 2FAuth 实例的健康状况。您可以在 Docker 的 HEALTHCKECK,或 Kubernetes 的 HTTPS Liveness 探针中使用此 URL 来进行健康检查。","admin.forms.cache_management.label":"缓存管理","admin.forms.cache_management.help":"某些情况下需要清除缓存,例如更改了环境变量,或更新了应用。您可以在此处进行缓存清理。","admin.forms.store_icon_to_database.label":"保存图标至数据库","admin.forms.store_icon_to_database.help":"除了储存到文件系统外,上传的图标还会被注册到数据库中充当缓存。这种方式可以令备份 2FAuth 更便捷,因为仅有数据库需要备份。

但要注意的是,这可能会产生负面效果:如果保存了大量的大体积图标,那么数据库的体积也会显著增大。这同时也可能会影响应用的性能,因为需要频繁地读写文件系统,来保证图标数据与数据库保持同步。","auth.failed":"登录信息错误","auth.password":"密码错误","auth.throttle":"您尝试登录的次数过多,请 :seconds 秒后再试。","auth.sign_out":"退出","auth.sign_in":"登录","auth.sign_in_using":"登录方式:","auth.if_administrator":"您是管理员吗?","auth.sign_in_here":"您可以不使用 SSO 登录","auth.or_continue_with":"您也可以使用:","auth.password_login_and_webauthn_are_disabled":"密码与 WebAuthn 登录已禁用。","auth.sign_in_using_sso":"选择一个 SSO 渠道来登录:","auth.no_provider":"暂无选项","auth.no_sso_provider_or_provider_is_missing":"找不到提供方?","auth.see_how_to_enable_sso":"看看如何启用提供方","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.sso_only_x_settings_are_disabled":"仅允许通过 SSO 进行身份鉴权,:auth_method 已被禁用","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 的唯一鉴权方式。若要发挥 WebAuth 的最佳安全性,推荐启用此选项。

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

+/*! 2FAuth version 5.4.2 - Copyright (c) 2024 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"管理员","admin.admin_panel":"管理面板","admin.app_setup":"应用设置","admin.auth":"鉴权","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.successful_login_on":'成功登录于 :login_at',"admin.successful_logout_on":'成功退出于 :login_at',"admin.failed_login_on":'登录失败于 :login_at',"admin.viewed_on":'查看 :login_at',"admin.last_accesses":"最近访问","admin.see_full_log":"显示完整日志","admin.browser_on_platform":":platform 的 :browser","admin.access_log_has_more_entries":"访问日志包含更多条目。","admin.access_log_legend_for_user":"用户 :username 的完整访问日志","admin.show_last_month_log":"显示上个月的条目","admin.show_three_months_log":"显示最近 3 个月的条目","admin.show_six_months_log":"显示最近 6 个月的条目","admin.show_one_year_log":"显示上一年的条目","admin.sort_by_date_asc":"倒序显示最近访问","admin.sort_by_date_desc":"顺序显示最近访问","admin.single_sign_on":"单点登录(SSO)","admin.database":"数据库","admin.file_system":"文件系统","admin.storage":"存储","admin.forms.use_encryption.label":"保护敏感数据","admin.forms.use_encryption.help":"敏感数据、2FA 秘钥和邮箱地址会以加密形式储存在数据库中。请务必备份您在 .env 中设置的 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":"启用 SSO","admin.forms.enable_sso.help":"允许访客通过单点登录的方式,使用外部 ID 进行身份验证","admin.forms.use_sso_only.label":"仅使用 SSO","admin.forms.use_sso_only.help":"仅允许通过 SSO。启用此功能后,普通用户将无法使用密码和 WebAuthn 登录到 2FAuth,但管理员不受此限制的影响。","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.health_endpoint.label":"节点健康检查","admin.forms.health_endpoint.help":"您可以访问此 URL 来检查此 2FAuth 实例的健康状况。您可以在 Docker 的 HEALTHCKECK,或 Kubernetes 的 HTTPS Liveness 探针中使用此 URL 来进行健康检查。","admin.forms.cache_management.label":"缓存管理","admin.forms.cache_management.help":"某些情况下需要清除缓存,例如更改了环境变量,或更新了应用。您可以在此处进行缓存清理。","admin.forms.store_icon_to_database.label":"保存图标至数据库","admin.forms.store_icon_to_database.help":"除了储存到文件系统外,上传的图标还会被注册到数据库中充当缓存。这种方式可以令备份 2FAuth 更便捷,因为仅有数据库需要备份。

但要注意的是,这可能会产生负面效果:如果保存了大量的大体积图标,那么数据库的体积也会显著增大。这同时也可能会影响应用的性能,因为需要频繁地读写文件系统,来保证图标数据与数据库保持同步。","auth.failed":"登录信息错误","auth.password":"密码错误","auth.throttle":"您尝试登录的次数过多,请 :seconds 秒后再试。","auth.sign_out":"退出","auth.sign_in":"登录","auth.sign_in_using":"登录方式:","auth.if_administrator":"您是管理员吗?","auth.sign_in_here":"您可以不使用 SSO 登录","auth.or_continue_with":"您也可以使用:","auth.password_login_and_webauthn_are_disabled":"密码与 WebAuthn 登录已禁用。","auth.sign_in_using_sso":"选择一个 SSO 渠道来登录:","auth.no_provider":"暂无选项","auth.no_sso_provider_or_provider_is_missing":"找不到提供方?","auth.see_how_to_enable_sso":"看看如何启用提供方","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.sso_only_x_settings_are_disabled":"仅允许通过 SSO 进行身份鉴权,:auth_method 已被禁用","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 账户的安全性。

\r +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 的唯一鉴权方式。若要发挥 WebAuth 的最佳安全性,推荐启用此选项。

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

\r 请注意! 此选项启用后仍会显示邮箱和密码的登录界面,但尝试登录时永远会提示 “身份验证失败”。`,"auth.webauthn.need_a_security_device_to_enable_options":"若要启用下列选项,请添加 1 个 WebAuthn 设备。","auth.webauthn.options":"选项","auth.forms.name":"用户名","auth.forms.login":"登录","auth.forms.webauthn_login":"使用 WebAuthn 登录","auth.forms.sso_login":"SSO 登录","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.sso_only_form_restricted_to_admin":"普通用户必须使用 SSO 登录,仅有管理员可选用其他登录选项。","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":"大写锁定已打开","auth.sso_providers.unknown":"未知","auth.sso_providers.github":"Github","auth.sso_providers.openid":"OpenID","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":"本网页 App 可助您管理两步验证 (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":"自动检查更新 (每周一次)。当在 Github 上发现 2FAuth 的新版本时会发出更新提醒","commons.you_are_up_to_date":"已是最新版","commons.2fauth_description":"本网页 App 可助您管理两步验证 (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.send":"发送","commons.optimize":"优化","commons.IP":"IP 地址","commons.browser":"浏览器","commons.operating_system_short":"系统版本","commons.no_entry_yet":"暂无记录","commons.time":"时间","commons.ip_address":"IP 地址","commons.device":"设备","commons.one_month":"1 个月","commons.x_month":":x 个月","commons.one_year":"1 年","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":"此二维码的数据不是有效的 OTP Auth URI。此二维码包含:","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 环境变量","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":"当身份代理或 SSO 启用时不可用","errors.unsupported_with_sso_only":"仅管理员允许使用此鉴权方式,普通用户必须使用 SSO 登录。","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.cannot_demote_the_only_admin":"无法降级此唯一的管理员账户","errors.error_during_data_fetching":"💀 获取数据时出错","errors.check_failed_try_later":"检查失败,请稍后重试","errors.sso_disabled":"SSO 已禁用","errors.sso_bad_provider_setup":"您未在 .env 文件中正确配置此 SSO 提供方","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":"无法为此用户重置密码","errors.cannot_detect_qrcode_in_image":"未在图像中检测到二维码,请裁切图像后再试","errors.cannot_decode_detected_qrcode":"二维码已识别,但解码失败,请裁切或锐化图像后再试","errors.qrcode_has_invalid_checksum":"二维码的校验码错误","errors.no_readable_qrcode":"没有可识别的二维码","errors.failed_icon_store_database_toggling":"图标迁移失败,相关设置已恢复为先前的值。","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":"हिंदी (印地语)","languages.tr":"Türkçe (土耳其语)","notifications.hello":"您好","notifications.hello_user":"您好,:username,","notifications.regards":"此致","notifications.test_email_settings.subject":"2FAuth 测试邮件","notifications.test_email_settings.reason":"之所以您会收到这封邮件,是因为您请求了一封测试邮件来验证您 2FAuth 的电子邮件送信配置。","notifications.test_email_settings.success":"恭喜您,功能正常 :)","notifications.new_device.subject":"来自新设备的访问","notifications.new_device.resume":"一台新设备刚被添加到您的 2FAuth 账户上。","notifications.new_device.connection_details":"这是本次事件的相关信息","notifications.new_device.recommandations":"如果是您操作的,您可以忽略此告警。如果您怀疑您的账户有任何可疑活动,请立即更改您的密码。","notifications.failed_login.subject":"2FAuth 登录失败","notifications.failed_login.resume":"您的 2FAuth 账户触发了一次登录失败。","notifications.failed_login.connection_details":"这是本次事件的相关信息","notifications.failed_login.recommandations":"如果是您操作的,您可以忽略此告警。如果持续有失败的登录尝试,您应立即通知 2FAuth 的管理员去检查相关的安全设置,并对此攻击者采取措施。","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 登录的,因此无法在此处更改信息,请回到 :provider 进行操作。","settings.general":"通用","settings.security":"安全","settings.notifications":"通知","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.timezone.label":"时区","settings.forms.timezone.help":"设置本 App 中所有日期与时间的时区","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.auto_close_timeout.label":'自动关闭 OTP 验证码',"settings.forms.auto_close_timeout.help":"超时后自动隐藏明文显示的验证码。如果您忘记退出验证码界面,此功能可以避免非必要的验证码刷新请求。","settings.forms.clear_search_on_copy.label":"复制后清空搜索框","settings.forms.clear_search_on_copy.help":"复制验证码后立即清空搜索框","settings.forms.sort_case_sensitive.label":"按大小写排序","settings.forms.sort_case_sensitive.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":"在添加账户时,尝试获取 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.auto_save_qrcoded_account.label":"自动保存账户","settings.forms.auto_save_qrcoded_account.help":"扫描或上传二维码后,新账户会被自动录入,无需点击 ”保存“ 按钮。","settings.forms.useDirectCapture.label":"直接录入","settings.forms.useDirectCapture.help":"决定是否要在您录入时弹出录入模式选单,或者直接使用默认的录入模式","settings.forms.defaultCaptureMode.label":"默认录入模式","settings.forms.defaultCaptureMode.help":"直接录入模式启用时所使用的默认录入模式","settings.forms.remember_active_group.label":"记住分组筛选器","settings.forms.remember_active_group.help":"记住上次筛选出的分组,并在下次访问时展示","settings.forms.otp_generation.label":"显示验证码","settings.forms.otp_generation.help":'设置 OTPs 验证码的显示方式和时间。
',"settings.forms.notify_on_new_auth_device.label":"来自新设备时","settings.forms.notify_on_new_auth_device.help":"当新设备首次登录时发送邮件通知","settings.forms.notify_on_failed_login.label":"登录失败时","settings.forms.notify_on_failed_login.help":"每次登录失败时都发送邮件通知","settings.forms.show_email_in_footer.label":"在底部显示邮箱地址","settings.forms.show_email_in_footer.help":"在页面底部显示当前登录用户的邮箱地址,而非直接显示导航链接。当点击邮箱地址时,再跳转到导航链接。","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.2_minutes":"2 分钟后","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":"管理用户","titles.admin.logs.access":"访问日志","twofaccounts.service":"服务","twofaccounts.account":"账户","twofaccounts.icon":"图标","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":"显示二维码","twofaccounts.no_service":"- 无服务 -","twofaccounts.account_created":"账户创建成功","twofaccounts.account_updated":"账户更新成功","twofaccounts.accounts_deleted":"账户删除成功","twofaccounts.accounts_moved":"账户移动成功","twofaccounts.export_selected_accounts":"导出选中的账户","twofaccounts.twofauth_export_format":"2FAuth 格式","twofaccounts.twofauth_export_format_sub":"以 2FAuth json 结构导出数据","twofaccounts.twofauth_export_format_desc":"如果您的目的是创建一个备份,以备随时恢复数据,建议您优先使用此选项。这个格式可以保存图标信息。","twofaccounts.twofauth_export_format_url":"结构定义描述:","twofaccounts.twofauth_export_schema":"2FAuth 导出结构","twofaccounts.otpauth_export_format":"otpauth URI","twofaccounts.otpauth_export_format_sub":"以 optauth URI 列表结构导出数据","twofaccounts.otpauth_export_format_desc":"otpauth URI 是用于传输 2FA 数据的最常用格式。例如,当您在网站上启用 2FA 时,显示的二维码就包含 otpauth URI 数据。点击即可从 2FAuth 切换至此选项。","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":"扫描二维码","twofaccounts.forms.upload_qrcode":"上传二维码","twofaccounts.forms.use_advanced_form":"使用高级表单","twofaccounts.forms.prefill_using_qrcode":"使用二维码来填写","twofaccounts.forms.use_qrcode.val":"使用二维码","twofaccounts.forms.use_qrcode.title":"使用二维码来自动填写表单","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.group.label":"分组","twofaccounts.forms.group.help":"此账户要移动到的组","twofaccounts.forms.secret.label":"密钥","twofaccounts.forms.secret.help":"用于生成安全码的密钥","twofaccounts.forms.plain_text":"纯文本","twofaccounts.forms.otp_type.label":'选择要创建的 OTP 令牌类型',"twofaccounts.forms.otp_type.help":"TOTP,HOTP 或 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":"2FAuth 需要您的授权才能使用此设备上的相机。如果您已点击过 “拒绝”,且您的浏览器没有再次提示您进行授权,请查找浏览器的文档以了解如何重新授权。","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":"需要 secure 字段","twofaccounts.stream.secured_context_required.solution":"扫描需要通过 HTTPS 协议通信。如果您是在电脑上运行 2FAuth 实例,请不要使用除了本地外的其他虚拟主机","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 应用导入数据。","twofaccounts.import.import_legend_afterpart":"使用这些应用的 “导出” 功能来获取迁移资源,例如二维码或 JSON 文件,然后在 2FAuth 中导入。","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":"点击亮起的按钮,即可选择丢弃这些账户,或将其保存到您的 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,请务必在导出前关闭加密保护,否则 2FAuth 将无法解密数据。","validation.accepted":"必须允许 :attribute。","validation.accepted_if":"当 :other 为 :value 时,必须允许 :attribute 。","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.ascii":":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.can":":attribute 字段包含非法的值。","validation.confirmed":":attribute 两次输入不一致。","validation.contains":":attribute 缺少必需的值。","validation.current_password":"密码错误","validation.date":":attribute 必须是有效的日期格式。","validation.date_equals":":attribute 必须要等于 :date。","validation.date_format":":attribute 的格式必须为 :format。","validation.decimal":"The :attribute field must have :decimal decimal places.","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.extensions":"The :attribute field must have one of the following extensions: :values.","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.hex_color":":attribute 必须为有效的 HEX 颜色码。","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.list":":attribute 必须为列表。","validation.lowercase":":attribute 必须是小写字母。","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 必须少于 :max 项。","validation.max.file":":attribute 必须小于 :max 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.missing":":attribute 必须为空。","validation.missing_if":"当 :other 为 :value 时 :attribute 必须为空。","validation.missing_unless":"除非 :other 为 :value,否则 :attribute 必须为空。","validation.missing_with":"当 :value 存在时,:attribute 必须为空。","validation.missing_with_all":"The :attribute field must be missing when :values are present.","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.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":"已禁止 :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_if_declined":"当 :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.uppercase":":attribute 必须是大写字母。","validation.url":":attribute 必须是有效的 URL。","validation.ulid":":attribute 必须是有效的 ULID。","validation.uuid":":attribute 必须是有效的 UUID。","validation.single":"当使用 :attribute 时,请求的数据包中只能包含这一种参数。","validation.onlyCustomOtpWithUri":"“uri” 参数必须单独提供,或与 “custom_otp” 参数同时提供。","validation.IsValidRegex":":attribute 必须是正确的 regex 表达式。","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":"必须未 url 分配一个标签。","validation.custom.ids.regex":"ID 必须以逗号分隔,且不能以逗号结尾。"};export{t as default}; diff --git a/public/build/assets/webauthnService-B01mQIOV.js b/public/build/assets/webauthnService-B01mQIOV.js new file mode 100644 index 00000000..a16f6f22 --- /dev/null +++ b/public/build/assets/webauthnService-B01mQIOV.js @@ -0,0 +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-CuhK3jij.js";/*! 2FAuth version 5.4.2 - Copyright (c) 2024 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/assets/webauthnService-DqgceQ2G.js b/public/build/assets/webauthnService-DqgceQ2G.js deleted file mode 100644 index bd5d7868..00000000 --- a/public/build/assets/webauthnService-DqgceQ2G.js +++ /dev/null @@ -1 +0,0 @@ -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);import{a3 as f}from"./app-D4Udf6Mm.js";/*! 2FAuth version 5.4.1 - Copyright (c) 2024 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 f5bb1426..4399a86b 100644 --- a/public/build/manifest.json +++ b/public/build/manifest.json @@ -1,100 +1,100 @@ { - "_AccessLogViewer-mgRyksdg.js": { - "file": "assets/AccessLogViewer-mgRyksdg.js", + "_AccessLogViewer-ATsuzUAw.js": { + "file": "assets/AccessLogViewer-ATsuzUAw.js", "name": "AccessLogViewer", "imports": [ - "_SearchBox-B-38rGG5.js", + "_SearchBox-Bwo0E13W.js", "resources/js/app.js", - "_Spinner-DHClvaFf.js" + "_Spinner-WULdfd4I.js" ] }, - "_AdminTabs-Bc7uXBY-.js": { - "file": "assets/AdminTabs-Bc7uXBY-.js", + "_AdminTabs-CAsvsm7h.js": { + "file": "assets/AdminTabs-CAsvsm7h.js", "name": "AdminTabs", "imports": [ "resources/js/app.js" ] }, - "_CopyButton-CNDtpSH2.js": { - "file": "assets/CopyButton-CNDtpSH2.js", + "_CopyButton-C1eOxUvy.js": { + "file": "assets/CopyButton-C1eOxUvy.js", "name": "CopyButton", "imports": [ "resources/js/app.js" ] }, - "_Form-BGrUTood.js": { - "file": "assets/Form-BGrUTood.js", + "_Form-o2lWAB-o.js": { + "file": "assets/Form-o2lWAB-o.js", "name": "Form", "imports": [ "resources/js/app.js" ] }, - "_OtpDisplay-D2QMFFL_.js": { - "file": "assets/OtpDisplay-D2QMFFL_.js", + "_OtpDisplay-D1Cg2JBE.js": { + "file": "assets/OtpDisplay-D1Cg2JBE.js", "name": "OtpDisplay", "imports": [ "resources/js/app.js", - "_Spinner-DHClvaFf.js" + "_Spinner-WULdfd4I.js" ] }, - "_QrContentDisplay-C6rCu47Q.js": { - "file": "assets/QrContentDisplay-C6rCu47Q.js", + "_QrContentDisplay-CyBGNU2O.js": { + "file": "assets/QrContentDisplay-CyBGNU2O.js", "name": "QrContentDisplay", "imports": [ "resources/js/app.js" ] }, - "_SearchBox-B-38rGG5.js": { - "file": "assets/SearchBox-B-38rGG5.js", + "_SearchBox-Bwo0E13W.js": { + "file": "assets/SearchBox-Bwo0E13W.js", "name": "SearchBox", "imports": [ "resources/js/app.js" ] }, - "_SettingTabs-D1fgIcyl.js": { - "file": "assets/SettingTabs-D1fgIcyl.js", + "_SettingTabs-DdogXjnE.js": { + "file": "assets/SettingTabs-DdogXjnE.js", "name": "SettingTabs", "imports": [ "resources/js/app.js" ] }, "_Spinner-!~{00O}~.js": { - "file": "assets/Spinner--6H_UWmB.css", + "file": "assets/Spinner-i1QgfgLP.css", "src": "_Spinner-!~{00O}~.js" }, - "_Spinner-DHClvaFf.js": { - "file": "assets/Spinner-DHClvaFf.js", + "_Spinner-WULdfd4I.js": { + "file": "assets/Spinner-WULdfd4I.js", "name": "Spinner", "imports": [ "resources/js/app.js" ], "css": [ - "assets/Spinner--6H_UWmB.css" + "assets/Spinner-i1QgfgLP.css" ] }, - "_appSettingsUpdater-B1wtRdsR.js": { - "file": "assets/appSettingsUpdater-B1wtRdsR.js", + "_appSettingsUpdater-DcxdiO4R.js": { + "file": "assets/appSettingsUpdater-DcxdiO4R.js", "name": "appSettingsUpdater", "imports": [ "resources/js/app.js" ] }, - "_bus-RVphoWuw.js": { - "file": "assets/bus-RVphoWuw.js", + "_bus-BalNs30H.js": { + "file": "assets/bus-BalNs30H.js", "name": "bus", "imports": [ "resources/js/app.js" ] }, - "_webauthnService-DqgceQ2G.js": { - "file": "assets/webauthnService-DqgceQ2G.js", + "_webauthnService-B01mQIOV.js": { + "file": "assets/webauthnService-B01mQIOV.js", "name": "webauthnService", "imports": [ "resources/js/app.js" ] }, "resources/js/app.js": { - "file": "assets/app-D4Udf6Mm.js", + "file": "assets/app-CuhK3jij.js", "name": "app", "src": "resources/js/app.js", "isEntry": true, @@ -152,11 +152,11 @@ "resources/lang/php_zh.json" ], "css": [ - "assets/app-CLbIVRQ8.css" + "assets/app-DCHjhP3L.css" ] }, "resources/js/views/About.vue": { - "file": "assets/About-BFfeZAkk.js", + "file": "assets/About-BzKiptnW.js", "name": "About", "src": "resources/js/views/About.vue", "isDynamicEntry": true, @@ -165,7 +165,7 @@ ] }, "resources/js/views/Error.vue": { - "file": "assets/Error-DAFLfN3j.js", + "file": "assets/Error-rNpmSIEZ.js", "name": "Error", "src": "resources/js/views/Error.vue", "isDynamicEntry": true, @@ -174,395 +174,395 @@ ] }, "resources/js/views/Start.vue": { - "file": "assets/Start-DbpLb5Lz.js", + "file": "assets/Start-Buh1NwyJ.js", "name": "Start", "src": "resources/js/views/Start.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Form-BGrUTood.js", - "_bus-RVphoWuw.js" + "_Form-o2lWAB-o.js", + "_bus-BalNs30H.js" ] }, "resources/js/views/admin/AppSetup.vue": { - "file": "assets/AppSetup-Dt_jr1xm.js", + "file": "assets/AppSetup-D27COJPH.js", "name": "AppSetup", "src": "resources/js/views/admin/AppSetup.vue", "isDynamicEntry": true, "imports": [ - "_AdminTabs-Bc7uXBY-.js", + "_AdminTabs-CAsvsm7h.js", "resources/js/app.js", - "_appSettingsUpdater-B1wtRdsR.js", - "_CopyButton-CNDtpSH2.js" + "_appSettingsUpdater-DcxdiO4R.js", + "_CopyButton-C1eOxUvy.js" ] }, "resources/js/views/admin/Auth.vue": { - "file": "assets/Auth-DmixUfoW.js", + "file": "assets/Auth-BknZQPI-.js", "name": "Auth", "src": "resources/js/views/admin/Auth.vue", "isDynamicEntry": true, "imports": [ - "_AdminTabs-Bc7uXBY-.js", + "_AdminTabs-CAsvsm7h.js", "resources/js/app.js", - "_appSettingsUpdater-B1wtRdsR.js" + "_appSettingsUpdater-DcxdiO4R.js" ] }, "resources/js/views/admin/Users.vue": { - "file": "assets/Users-Bxf3ihka.js", + "file": "assets/Users-B46w5pfw.js", "name": "Users", "src": "resources/js/views/admin/Users.vue", "isDynamicEntry": true, "imports": [ - "_AdminTabs-Bc7uXBY-.js", + "_AdminTabs-CAsvsm7h.js", "resources/js/app.js", - "_Spinner-DHClvaFf.js", - "_SearchBox-B-38rGG5.js" + "_Spinner-WULdfd4I.js", + "_SearchBox-Bwo0E13W.js" ] }, "resources/js/views/admin/logs/Access.vue": { - "file": "assets/Access-B2ymsfLm.js", + "file": "assets/Access-KiYVHBfV.js", "name": "Access", "src": "resources/js/views/admin/logs/Access.vue", "isDynamicEntry": true, "imports": [ - "_AccessLogViewer-mgRyksdg.js", + "_AccessLogViewer-ATsuzUAw.js", "resources/js/app.js", - "_bus-RVphoWuw.js", - "_SearchBox-B-38rGG5.js", - "_Spinner-DHClvaFf.js" + "_bus-BalNs30H.js", + "_SearchBox-Bwo0E13W.js", + "_Spinner-WULdfd4I.js" ] }, "resources/js/views/admin/users/Create.vue": { - "file": "assets/Create-DbNLDpJC.js", + "file": "assets/Create-CLPvbaW4.js", "name": "Create", "src": "resources/js/views/admin/users/Create.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Form-BGrUTood.js" + "_Form-o2lWAB-o.js" ] }, "resources/js/views/admin/users/Manage.vue": { - "file": "assets/Manage-BdbniM-Y.js", + "file": "assets/Manage-BKPFyA7n.js", "name": "Manage", "src": "resources/js/views/admin/users/Manage.vue", "isDynamicEntry": true, "imports": [ - "_CopyButton-CNDtpSH2.js", - "_AccessLogViewer-mgRyksdg.js", + "_CopyButton-C1eOxUvy.js", + "_AccessLogViewer-ATsuzUAw.js", "resources/js/app.js", - "_bus-RVphoWuw.js", - "_SearchBox-B-38rGG5.js", - "_Spinner-DHClvaFf.js" + "_bus-BalNs30H.js", + "_SearchBox-Bwo0E13W.js", + "_Spinner-WULdfd4I.js" ] }, "resources/js/views/auth/Login.vue": { - "file": "assets/Login-lFqZsVye.js", + "file": "assets/Login-WJZFRbSm.js", "name": "Login", "src": "resources/js/views/auth/Login.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Form-BGrUTood.js", - "_webauthnService-DqgceQ2G.js" + "_Form-o2lWAB-o.js", + "_webauthnService-B01mQIOV.js" ] }, "resources/js/views/auth/Register.vue": { - "file": "assets/Register-hMMU0w6y.js", + "file": "assets/Register-D9YDPq8h.js", "name": "Register", "src": "resources/js/views/auth/Register.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Form-BGrUTood.js", - "_webauthnService-DqgceQ2G.js" + "_Form-o2lWAB-o.js", + "_webauthnService-B01mQIOV.js" ] }, "resources/js/views/auth/RequestReset.vue": { - "file": "assets/RequestReset-CO9hDqHp.js", + "file": "assets/RequestReset-HGpvuoDE.js", "name": "RequestReset", "src": "resources/js/views/auth/RequestReset.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Form-BGrUTood.js" + "_Form-o2lWAB-o.js" ] }, "resources/js/views/auth/password/Reset.vue": { - "file": "assets/Reset-BohGQRDz.js", + "file": "assets/Reset-BVOhauTi.js", "name": "Reset", "src": "resources/js/views/auth/password/Reset.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Form-BGrUTood.js" + "_Form-o2lWAB-o.js" ] }, "resources/js/views/auth/webauthn/Recover.vue": { - "file": "assets/Recover-CMvlsTFQ.js", + "file": "assets/Recover-CcODwxy9.js", "name": "Recover", "src": "resources/js/views/auth/webauthn/Recover.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Form-BGrUTood.js" + "_Form-o2lWAB-o.js" ] }, "resources/js/views/groups/CreateUpdate.vue": { - "file": "assets/CreateUpdate-3ZZroKyC.js", + "file": "assets/CreateUpdate-DXqb6Ftc.js", "name": "CreateUpdate", "src": "resources/js/views/groups/CreateUpdate.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Form-BGrUTood.js", - "_bus-RVphoWuw.js" + "_Form-o2lWAB-o.js", + "_bus-BalNs30H.js" ] }, "resources/js/views/groups/Groups.vue": { - "file": "assets/Groups-BMQ6YoNp.js", + "file": "assets/Groups-CF7f2juX.js", "name": "Groups", "src": "resources/js/views/groups/Groups.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_bus-RVphoWuw.js" + "_bus-BalNs30H.js" ] }, "resources/js/views/settings/Account.vue": { - "file": "assets/Account-Bgfza_Db.js", + "file": "assets/Account-Bvea0oZ6.js", "name": "Account", "src": "resources/js/views/settings/Account.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Form-BGrUTood.js", - "_SettingTabs-D1fgIcyl.js" + "_Form-o2lWAB-o.js", + "_SettingTabs-DdogXjnE.js" ] }, "resources/js/views/settings/Credentials/Edit.vue": { - "file": "assets/Edit-BM1fyA7o.js", + "file": "assets/Edit-BxX3QJ9W.js", "name": "Edit", "src": "resources/js/views/settings/Credentials/Edit.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Form-BGrUTood.js" + "_Form-o2lWAB-o.js" ] }, "resources/js/views/settings/OAuth.vue": { - "file": "assets/OAuth-C-a66RBn.js", + "file": "assets/OAuth-ulCTA84H.js", "name": "OAuth", "src": "resources/js/views/settings/OAuth.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Form-BGrUTood.js", - "_SettingTabs-D1fgIcyl.js", - "_Spinner-DHClvaFf.js" + "_Form-o2lWAB-o.js", + "_SettingTabs-DdogXjnE.js", + "_Spinner-WULdfd4I.js" ] }, "resources/js/views/settings/Options.vue": { - "file": "assets/Options--WfZObkz.js", + "file": "assets/Options-C3TqQdMf.js", "name": "Options", "src": "resources/js/views/settings/Options.vue", "isDynamicEntry": true, "imports": [ - "_SettingTabs-D1fgIcyl.js", + "_SettingTabs-DdogXjnE.js", "resources/js/app.js" ] }, "resources/js/views/settings/WebAuthn.vue": { - "file": "assets/WebAuthn-DBHOBJJ_.js", + "file": "assets/WebAuthn-DJ0oaQu-.js", "name": "WebAuthn", "src": "resources/js/views/settings/WebAuthn.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_SettingTabs-D1fgIcyl.js", - "_webauthnService-DqgceQ2G.js", - "_Spinner-DHClvaFf.js" + "_SettingTabs-DdogXjnE.js", + "_webauthnService-B01mQIOV.js", + "_Spinner-WULdfd4I.js" ] }, "resources/js/views/twofaccounts/Accounts.vue": { - "file": "assets/Accounts-DNDVqAqR.js", + "file": "assets/Accounts-C-25Qy2v.js", "name": "Accounts", "src": "resources/js/views/twofaccounts/Accounts.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_OtpDisplay-D2QMFFL_.js", - "_SearchBox-B-38rGG5.js", - "_bus-RVphoWuw.js", - "_Spinner-DHClvaFf.js" + "_OtpDisplay-D1Cg2JBE.js", + "_SearchBox-Bwo0E13W.js", + "_bus-BalNs30H.js", + "_Spinner-WULdfd4I.js" ] }, "resources/js/views/twofaccounts/Capture.vue": { - "file": "assets/Capture-Bb1sXPdR.js", + "file": "assets/Capture-CIhtAWpt.js", "name": "Capture", "src": "resources/js/views/twofaccounts/Capture.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Form-BGrUTood.js", - "_Spinner-DHClvaFf.js", - "_QrContentDisplay-C6rCu47Q.js", - "_bus-RVphoWuw.js" + "_Form-o2lWAB-o.js", + "_Spinner-WULdfd4I.js", + "_QrContentDisplay-CyBGNU2O.js", + "_bus-BalNs30H.js" ] }, "resources/js/views/twofaccounts/CreateUpdate.vue": { - "file": "assets/CreateUpdate-Dr-XnMyq.js", + "file": "assets/CreateUpdate-BlUdhaWn.js", "name": "CreateUpdate", "src": "resources/js/views/twofaccounts/CreateUpdate.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Form-BGrUTood.js", - "_OtpDisplay-D2QMFFL_.js", - "_QrContentDisplay-C6rCu47Q.js", - "_bus-RVphoWuw.js", - "_Spinner-DHClvaFf.js" + "_Form-o2lWAB-o.js", + "_OtpDisplay-D1Cg2JBE.js", + "_QrContentDisplay-CyBGNU2O.js", + "_bus-BalNs30H.js", + "_Spinner-WULdfd4I.js" ] }, "resources/js/views/twofaccounts/Import.vue": { - "file": "assets/Import-BZd8Em5d.js", + "file": "assets/Import-C-7ayGrw.js", "name": "Import", "src": "resources/js/views/twofaccounts/Import.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Form-BGrUTood.js", - "_OtpDisplay-D2QMFFL_.js", - "_Spinner-DHClvaFf.js", - "_bus-RVphoWuw.js" + "_Form-o2lWAB-o.js", + "_OtpDisplay-D1Cg2JBE.js", + "_Spinner-WULdfd4I.js", + "_bus-BalNs30H.js" ] }, "resources/js/views/twofaccounts/QRcode.vue": { - "file": "assets/QRcode-CsChMItc.js", + "file": "assets/QRcode-CqE9jHmd.js", "name": "QRcode", "src": "resources/js/views/twofaccounts/QRcode.vue", "isDynamicEntry": true, "imports": [ "resources/js/app.js", - "_Spinner-DHClvaFf.js" + "_Spinner-WULdfd4I.js" ] }, "resources/lang/php_ar.json": { - "file": "assets/php_ar-B0Klhp6o.js", + "file": "assets/php_ar-DkAJ05Mp.js", "name": "php_ar", "src": "resources/lang/php_ar.json", "isDynamicEntry": true }, "resources/lang/php_bg.json": { - "file": "assets/php_bg-Chd5OZr1.js", + "file": "assets/php_bg-CoUSxAMd.js", "name": "php_bg", "src": "resources/lang/php_bg.json", "isDynamicEntry": true }, "resources/lang/php_da.json": { - "file": "assets/php_da-jT2uuqIL.js", + "file": "assets/php_da-Dktu4lBQ.js", "name": "php_da", "src": "resources/lang/php_da.json", "isDynamicEntry": true }, "resources/lang/php_de.json": { - "file": "assets/php_de-CoKrWjgn.js", + "file": "assets/php_de-CaMBnB2D.js", "name": "php_de", "src": "resources/lang/php_de.json", "isDynamicEntry": true }, "resources/lang/php_en.json": { - "file": "assets/php_en-BiQ_FnWP.js", + "file": "assets/php_en-DiZe0RSj.js", "name": "php_en", "src": "resources/lang/php_en.json", "isDynamicEntry": true }, "resources/lang/php_es.json": { - "file": "assets/php_es-Bb5PmW6j.js", + "file": "assets/php_es-D_CFd2fo.js", "name": "php_es", "src": "resources/lang/php_es.json", "isDynamicEntry": true }, "resources/lang/php_fr.json": { - "file": "assets/php_fr-BnJxw11S.js", + "file": "assets/php_fr-We9OMs7M.js", "name": "php_fr", "src": "resources/lang/php_fr.json", "isDynamicEntry": true }, "resources/lang/php_hi.json": { - "file": "assets/php_hi-DmYSenvU.js", + "file": "assets/php_hi--xvyUCAZ.js", "name": "php_hi", "src": "resources/lang/php_hi.json", "isDynamicEntry": true }, "resources/lang/php_id.json": { - "file": "assets/php_id-DEbtNpni.js", + "file": "assets/php_id-C14Zr-Zf.js", "name": "php_id", "src": "resources/lang/php_id.json", "isDynamicEntry": true }, "resources/lang/php_it.json": { - "file": "assets/php_it-DUEGlYzS.js", + "file": "assets/php_it-mlyMaB1o.js", "name": "php_it", "src": "resources/lang/php_it.json", "isDynamicEntry": true }, "resources/lang/php_ja.json": { - "file": "assets/php_ja-BeClXwe_.js", + "file": "assets/php_ja-xY6Xx06P.js", "name": "php_ja", "src": "resources/lang/php_ja.json", "isDynamicEntry": true }, "resources/lang/php_ko.json": { - "file": "assets/php_ko-Rddsr2Bj.js", + "file": "assets/php_ko-C-kMOHRA.js", "name": "php_ko", "src": "resources/lang/php_ko.json", "isDynamicEntry": true }, "resources/lang/php_nl.json": { - "file": "assets/php_nl-D9GiR4OO.js", + "file": "assets/php_nl-DM5HSo8G.js", "name": "php_nl", "src": "resources/lang/php_nl.json", "isDynamicEntry": true }, "resources/lang/php_pl.json": { - "file": "assets/php_pl-B0Klhp6o.js", + "file": "assets/php_pl-DkAJ05Mp.js", "name": "php_pl", "src": "resources/lang/php_pl.json", "isDynamicEntry": true }, "resources/lang/php_pt.json": { - "file": "assets/php_pt-DucI-Yi_.js", + "file": "assets/php_pt-DHeV0kB3.js", "name": "php_pt", "src": "resources/lang/php_pt.json", "isDynamicEntry": true }, "resources/lang/php_ro.json": { - "file": "assets/php_ro-dfeCo_fC.js", + "file": "assets/php_ro-Cgf1xQ8g.js", "name": "php_ro", "src": "resources/lang/php_ro.json", "isDynamicEntry": true }, "resources/lang/php_ru.json": { - "file": "assets/php_ru-CC34pEtg.js", + "file": "assets/php_ru-BHhdv2c6.js", "name": "php_ru", "src": "resources/lang/php_ru.json", "isDynamicEntry": true }, "resources/lang/php_si.json": { - "file": "assets/php_si-DuIH0_oO.js", + "file": "assets/php_si-B2vyVoN1.js", "name": "php_si", "src": "resources/lang/php_si.json", "isDynamicEntry": true }, "resources/lang/php_tr.json": { - "file": "assets/php_tr-CkDfHBb5.js", + "file": "assets/php_tr-nxKVoDL2.js", "name": "php_tr", "src": "resources/lang/php_tr.json", "isDynamicEntry": true }, "resources/lang/php_zh.json": { - "file": "assets/php_zh-CiLNc0zd.js", + "file": "assets/php_zh-Da1G_uNl.js", "name": "php_zh", "src": "resources/lang/php_zh.json", "isDynamicEntry": true