├── .github └── workflows │ ├── ci.yml │ └── publish.yml ├── .gitignore ├── .husky └── pre-commit ├── .prettierrc ├── .vscode └── extensions.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.txt ├── README.md ├── SECURITY.md ├── dist ├── altcha.d.ts ├── altcha.i18n.d.ts ├── altcha.i18n.js ├── altcha.i18n.umd.js ├── altcha.js └── altcha.umd.cjs ├── dist_external ├── altcha.css ├── altcha.d.ts ├── altcha.js ├── altcha.umd.cjs └── worker.js ├── dist_i18n ├── af.d.ts ├── af.js ├── af.umd.cjs ├── all.d.ts ├── all.js ├── all.umd.cjs ├── americas.d.ts ├── americas.js ├── americas.umd.cjs ├── ar.d.ts ├── ar.js ├── ar.umd.cjs ├── asia.d.ts ├── asia.js ├── asia.umd.cjs ├── bg.d.ts ├── bg.js ├── bg.umd.cjs ├── bn.d.ts ├── bn.js ├── bn.umd.cjs ├── bs.d.ts ├── bs.js ├── bs.umd.cjs ├── ca.d.ts ├── ca.js ├── ca.umd.cjs ├── cs.d.ts ├── cs.js ├── cs.umd.cjs ├── da.d.ts ├── da.js ├── da.umd.cjs ├── de.d.ts ├── de.js ├── de.umd.cjs ├── el.d.ts ├── el.js ├── el.umd.cjs ├── en.d.ts ├── en.js ├── en.umd.cjs ├── es-419.d.ts ├── es-419.js ├── es-419.umd.cjs ├── es-es.d.ts ├── es-es.js ├── es-es.umd.cjs ├── et.d.ts ├── et.js ├── et.umd.cjs ├── eu.d.ts ├── eu.js ├── eu.umd.cjs ├── europe.d.ts ├── europe.js ├── europe.umd.cjs ├── fi.d.ts ├── fi.js ├── fi.umd.cjs ├── fr-ca.d.ts ├── fr-ca.js ├── fr-ca.umd.cjs ├── fr-fr.d.ts ├── fr-fr.js ├── fr-fr.umd.cjs ├── ga.d.ts ├── ga.js ├── ga.umd.cjs ├── he.d.ts ├── he.js ├── he.umd.cjs ├── hi.d.ts ├── hi.js ├── hi.umd.cjs ├── hr.d.ts ├── hr.js ├── hr.umd.cjs ├── hu.d.ts ├── hu.js ├── hu.umd.cjs ├── id.d.ts ├── id.js ├── id.umd.cjs ├── is.d.ts ├── is.js ├── is.umd.cjs ├── it.d.ts ├── it.js ├── it.umd.cjs ├── ja.d.ts ├── ja.js ├── ja.umd.cjs ├── ko.d.ts ├── ko.js ├── ko.umd.cjs ├── lt.d.ts ├── lt.js ├── lt.umd.cjs ├── lv.d.ts ├── lv.js ├── lv.umd.cjs ├── mr.d.ts ├── mr.js ├── mr.umd.cjs ├── mt.d.ts ├── mt.js ├── mt.umd.cjs ├── nb.d.ts ├── nb.js ├── nb.umd.cjs ├── nl.d.ts ├── nl.js ├── nl.umd.cjs ├── pl.d.ts ├── pl.js ├── pl.umd.cjs ├── pt-br.d.ts ├── pt-br.js ├── pt-br.umd.cjs ├── pt-pt.d.ts ├── pt-pt.js ├── pt-pt.umd.cjs ├── ro.d.ts ├── ro.js ├── ro.umd.cjs ├── ru.d.ts ├── ru.js ├── ru.umd.cjs ├── sk.d.ts ├── sk.js ├── sk.umd.cjs ├── sl.d.ts ├── sl.js ├── sl.umd.cjs ├── sr.d.ts ├── sr.js ├── sr.umd.cjs ├── sv.d.ts ├── sv.js ├── sv.umd.cjs ├── ta.d.ts ├── ta.js ├── ta.umd.cjs ├── te.d.ts ├── te.js ├── te.umd.cjs ├── th.d.ts ├── th.js ├── th.umd.cjs ├── tr.d.ts ├── tr.js ├── tr.umd.cjs ├── uk.d.ts ├── uk.js ├── uk.umd.cjs ├── ur.d.ts ├── ur.js ├── ur.umd.cjs ├── vi.d.ts ├── vi.js ├── vi.umd.cjs ├── zh-cn.d.ts ├── zh-cn.js ├── zh-cn.umd.cjs ├── zh-tw.d.ts ├── zh-tw.js └── zh-tw.umd.cjs ├── dist_plugins ├── analytics.d.ts ├── analytics.js ├── analytics.umd.cjs ├── obfuscation.d.ts ├── obfuscation.js ├── obfuscation.umd.cjs ├── upload.d.ts ├── upload.js └── upload.umd.cjs ├── e2e ├── altcha.fixture.ts ├── index.external.html └── index.html ├── example.html ├── index.html ├── package-lock.json ├── package.json ├── playwright.config.ts ├── scripts └── obfuscate.ts ├── server └── server-deno.ts ├── src ├── Altcha.svelte ├── App.svelte ├── altcha.css ├── declarations.d.ts ├── entry-external.ts ├── entry-i18n.ts ├── entry.ts ├── globals.ts ├── helpers.ts ├── i18n │ ├── af.ts │ ├── all.ts │ ├── americas.ts │ ├── ar.ts │ ├── asia.ts │ ├── bg.ts │ ├── bn.ts │ ├── bs.ts │ ├── ca.ts │ ├── cs.ts │ ├── da.ts │ ├── de.ts │ ├── el.ts │ ├── en.ts │ ├── es-419.ts │ ├── es-es.ts │ ├── et.ts │ ├── eu.ts │ ├── europe.ts │ ├── fi.ts │ ├── fr-ca.ts │ ├── fr-fr.ts │ ├── ga.ts │ ├── he.ts │ ├── hi.ts │ ├── hr.ts │ ├── hu.ts │ ├── id.ts │ ├── is.ts │ ├── it.ts │ ├── ja.ts │ ├── ko.ts │ ├── lt.ts │ ├── lv.ts │ ├── mr.ts │ ├── mt.ts │ ├── nb.ts │ ├── nl.ts │ ├── pl.ts │ ├── pt-br.ts │ ├── pt-pt.ts │ ├── ro.ts │ ├── ru.ts │ ├── sk.ts │ ├── sl.ts │ ├── sr.ts │ ├── sv.ts │ ├── ta.ts │ ├── te.ts │ ├── th.ts │ ├── tr.ts │ ├── uk.ts │ ├── ur.ts │ ├── vi.ts │ ├── zh-cn.ts │ └── zh-tw.ts ├── index.d.ts ├── main.ts ├── plugin.ts ├── plugins │ ├── analytics.ts │ ├── obfuscation.ts │ └── upload.ts ├── types.ts ├── vite-env.d.ts └── worker.ts ├── svelte.config.js ├── tests ├── helpers.test.ts └── setup.ts ├── tsconfig.json ├── tsconfig.node.json ├── vite.bundle-i18n.config.ts ├── vite.config.ts ├── vite.external.config.ts ├── vite.i18n.config.ts └── vite.plugins.config.ts /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | on: 3 | push: 4 | branches: [main, next] 5 | pull_request: 6 | branches: ['*'] 7 | 8 | jobs: 9 | tests: 10 | name: 'Tests' 11 | runs-on: ubuntu-latest 12 | permissions: 13 | contents: read 14 | steps: 15 | - uses: actions/checkout@v4 16 | - uses: actions/setup-node@v4 17 | with: 18 | node-version: 22.x 19 | - run: npm install 20 | - run: npm run test 21 | - uses: DevExpress/testcafe-action@latest 22 | with: 23 | args: "chrome,firefox e2e/altcha.fixture.ts --hostname localhost" 24 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Publish Package to npmjs 2 | on: 3 | release: 4 | types: [published] 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | permissions: 9 | contents: read 10 | id-token: write 11 | steps: 12 | - uses: actions/checkout@v4 13 | # Setup .npmrc file to publish to npm 14 | - uses: actions/setup-node@v4 15 | with: 16 | node-version: '20.x' 17 | registry-url: 'https://registry.npmjs.org' 18 | - run: npm install 19 | - run: npm publish --provenance --access public 20 | env: 21 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist-ssr 12 | *.local 13 | 14 | # Editor directories and files 15 | .vscode/* 16 | !.vscode/extensions.json 17 | .idea 18 | .DS_Store 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | 25 | # app 26 | .TODO 27 | /test-results/ 28 | /playwright-report/ 29 | /blob-report/ 30 | /playwright/.cache/ 31 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | npm run build 2 | git add dist* 3 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": true, 3 | "singleQuote": true, 4 | "tabWidth": 2, 5 | "trailingComma": "es5", 6 | "plugins": ["prettier-plugin-svelte"], 7 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] 8 | } -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["svelte.svelte-vscode"] 3 | } 4 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to ALTCHA 2 | 3 | We appreciate your contributions! To ensure a smooth and transparent collaboration, we've outlined the various ways you can contribute to ALTCHA: 4 | 5 | - **Reporting a Bug** 6 | - **Discussing the Current State of the Code** 7 | - **Submitting a Fix** 8 | - **Proposing New Features** 9 | - **Becoming a Maintainer** 10 | 11 | ## Development with GitHub 12 | 13 | ALTCHA is hosted on GitHub, where you can find the codebase, track issues, and submit pull requests. Please familiarize yourself with GitHub for effective collaboration. 14 | 15 | ## Project Technology: Svelte 16 | 17 | ALTCHA utilizes [Svelte](https://svelte.dev) for its Web Component widget. Refer to Svelte's documentation to set up your development environment. 18 | 19 | ## Licensing Information 20 | 21 | Any contributions you make will be subjected to the project's MIT software license. By submitting code changes, you agree to license your contributions under the same [MIT License](http://choosealicense.com/licenses/mit/) that covers the entire project. If you have any concerns regarding licensing, feel free to reach out to the maintainers. 22 | 23 | ## Reporting Bugs Using GitHub's [Issues](https://github.com/altcha-org/altcha/issues) 24 | 25 | We track public bugs using GitHub issues. Reporting a bug is easy: simply [open a new issue](https://github.com/altcha-org/altcha/issues). Provide detailed information for effective bug resolution. 26 | 27 | ## Writing Effective Bug Reports 28 | 29 | Good bug reports include: 30 | 31 | - A quick summary and background of the issue 32 | - Steps to reproduce the problem 33 | - Be specific! 34 | - Include sample code if possible 35 | - Expected vs. actual outcomes 36 | - Additional notes, such as your hypotheses or unsuccessful attempts to resolve the issue 37 | 38 | ## License Agreement 39 | 40 | By contributing to ALTCHA, you agree that your contributions will be licensed under the project's MIT License. If you have any questions or concerns, please reach out to the maintainers. 41 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Daniel Regeci, BAU Software s.r.o. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /dist_external/worker.js: -------------------------------------------------------------------------------- 1 | (function(){"use strict";const d=new TextEncoder;function p(e){return[...new Uint8Array(e)].map(t=>t.toString(16).padStart(2,"0")).join("")}async function b(e,t,r){if(typeof crypto>"u"||!("subtle"in crypto)||!("digest"in crypto.subtle))throw new Error("Web Crypto is not available. Secure context is required (https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts).");return p(await crypto.subtle.digest(r.toUpperCase(),d.encode(e+t)))}function w(e,t,r="SHA-256",n=1e6,s=0){const o=new AbortController,a=Date.now();return{promise:(async()=>{for(let c=s;c<=n;c+=1){if(o.signal.aborted)return null;if(await b(t,c,r)===e)return{number:c,took:Date.now()-a}}return null})(),controller:o}}function h(e){const t=atob(e),r=new Uint8Array(t.length);for(let n=0;n{for(let u=n;u<=r;u+=1){if(o.signal.aborted||!c||!y)return null;try{const f=await crypto.subtle.decrypt({name:s,iv:g(u)},c,y);if(f)return{clearText:new TextDecoder().decode(f),took:Date.now()-a}}catch{}}return null};let c=null,y=null;try{y=h(e);const u=await crypto.subtle.digest("SHA-256",d.encode(t));c=await crypto.subtle.importKey("raw",u,s,!1,["decrypt"])}catch{return{promise:Promise.reject(),controller:o}}return{promise:l(),controller:o}}let i;onmessage=async e=>{const{type:t,payload:r,start:n,max:s}=e.data;let o=null;if(t==="abort")i==null||i.abort(),i=void 0;else if(t==="work"){if("obfuscated"in r){const{key:a,obfuscated:l}=r||{};o=await m(l,a,s,n)}else{const{algorithm:a,challenge:l,salt:c}=r||{};o=w(l,c,a,s,n)}i=o.controller,o.promise.then(a=>{self.postMessage(a&&{...a,worker:!0})})}}})(); 2 | -------------------------------------------------------------------------------- /dist_i18n/af.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/af'; -------------------------------------------------------------------------------- /dist_i18n/af.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,i){return e!=e?i==i:e!==i||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function k(e){var i=u;try{return u=!0,e()}finally{u=i}}function p(e,i,n){if(e==null)return i(void 0),o;const r=k(()=>e.subscribe(i,n));return r.unsubscribe?()=>r.unsubscribe():r}const a=[];function T(e,i=o){let n=null;const r=new Set;function c(s){if(d(e,s)&&(e=s,n)){const b=!a.length;for(const t of r)t[1](),a.push(t,e);if(b){for(let t=0;t{r.delete(t),r.size===0&&n&&(n(),n=null)}}return{set:c,update:g,subscribe:y}}function f(e){let i;return p(e,n=>i=n)(),i}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>f(globalThis.altchaI18n.store)[e],set:(e,i)=>{Object.assign(f(globalThis.altchaI18n.store),{[e]:i}),globalThis.altchaI18n.store.set(f(globalThis.altchaI18n.store))},store:T({})};const h={ariaLinkLabel:"Besoek Altcha.org",enterCode:"Voer kode in",enterCodeAria:"Voer die kode in wat jy hoor. Druk Spasie om die klank af te speel.",error:"Verifikasie het misluk. Probeer later weer.",expired:"Verifikasie het verval. Probeer weer.",footer:'Beskerm deur ALTCHA',getAudioChallenge:"Kry 'n klankuitdaging",label:"Ek is nie 'n robot nie",loading:"Laai...",reload:"Laai weer",verify:"Verifieer",verificationRequired:"Verifikasie is vereis!",verified:"Geverifieer",verifying:"Verifieer...",waitAlert:"Verifieer... wag asseblief."};globalThis.altchaI18n.set("af",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/all.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/all'; -------------------------------------------------------------------------------- /dist_i18n/americas.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/americas'; -------------------------------------------------------------------------------- /dist_i18n/ar.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/ar'; -------------------------------------------------------------------------------- /dist_i18n/ar.js: -------------------------------------------------------------------------------- 1 | const o = () => { 2 | }; 3 | function g(t, e) { 4 | return t != t ? e == e : t !== e || t !== null && typeof t == "object" || typeof t == "function"; 5 | } 6 | let c = !1; 7 | function d(t) { 8 | var e = c; 9 | try { 10 | return c = !0, t(); 11 | } finally { 12 | c = e; 13 | } 14 | } 15 | function p(t, e, r) { 16 | if (t == null) 17 | return e(void 0), o; 18 | const i = d( 19 | () => t.subscribe( 20 | e, 21 | // @ts-expect-error 22 | r 23 | ) 24 | ); 25 | return i.unsubscribe ? () => i.unsubscribe() : i; 26 | } 27 | const s = []; 28 | function T(t, e = o) { 29 | let r = null; 30 | const i = /* @__PURE__ */ new Set(); 31 | function a(l) { 32 | if (g(t, l) && (t = l, r)) { 33 | const u = !s.length; 34 | for (const n of i) 35 | n[1](), s.push(n, t); 36 | if (u) { 37 | for (let n = 0; n < s.length; n += 2) 38 | s[n][0](s[n + 1]); 39 | s.length = 0; 40 | } 41 | } 42 | } 43 | function f(l) { 44 | a(l( 45 | /** @type {T} */ 46 | t 47 | )); 48 | } 49 | function h(l, u = o) { 50 | const n = [l, u]; 51 | return i.add(n), i.size === 1 && (r = e(a, f) || o), l( 52 | /** @type {T} */ 53 | t 54 | ), () => { 55 | i.delete(n), i.size === 0 && r && (r(), r = null); 56 | }; 57 | } 58 | return { set: a, update: f, subscribe: h }; 59 | } 60 | function b(t) { 61 | let e; 62 | return p(t, (r) => e = r)(), e; 63 | } 64 | globalThis.altchaPlugins = globalThis.altchaPlugins || []; 65 | globalThis.altchaI18n = globalThis.altchaI18n || { 66 | get: (t) => b(globalThis.altchaI18n.store)[t], 67 | set: (t, e) => { 68 | Object.assign(b(globalThis.altchaI18n.store), { 69 | [t]: e 70 | }), globalThis.altchaI18n.store.set(b(globalThis.altchaI18n.store)); 71 | }, 72 | store: T({}) 73 | }; 74 | const A = { 75 | ariaLinkLabel: "زور Altcha.org", 76 | enterCode: "أدخل الرمز", 77 | enterCodeAria: "أدخل الرمز الذي تسمعه. اضغط على المسافة لتشغيل الصوت.", 78 | error: "فشل التحقق. حاول مرة أخرى لاحقاً.", 79 | expired: "انتهت صلاحية التحقق. حاول مرة أخرى.", 80 | verificationRequired: "مطلوب التحقق!", 81 | footer: 'محمي بواسطة ALTCHA', 82 | getAudioChallenge: "احصل على تحدي صوتي", 83 | label: "أنا لست روبوتاً", 84 | loading: "جارٍ التحميل...", 85 | reload: "إعادة تحميل", 86 | verify: "تحقق", 87 | verified: "تم التحقق", 88 | verifying: "جارٍ التحقق...", 89 | waitAlert: "جارٍ التحقق... يرجى الانتظار." 90 | }; 91 | globalThis.altchaI18n.set("ar", A); 92 | export { 93 | A as i18n 94 | }; 95 | -------------------------------------------------------------------------------- /dist_i18n/ar.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"زور Altcha.org",enterCode:"أدخل الرمز",enterCodeAria:"أدخل الرمز الذي تسمعه. اضغط على المسافة لتشغيل الصوت.",error:"فشل التحقق. حاول مرة أخرى لاحقاً.",expired:"انتهت صلاحية التحقق. حاول مرة أخرى.",verificationRequired:"مطلوب التحقق!",footer:'محمي بواسطة ALTCHA',getAudioChallenge:"احصل على تحدي صوتي",label:"أنا لست روبوتاً",loading:"جارٍ التحميل...",reload:"إعادة تحميل",verify:"تحقق",verified:"تم التحقق",verifying:"جارٍ التحقق...",waitAlert:"جارٍ التحقق... يرجى الانتظار."};globalThis.altchaI18n.set("ar",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/asia.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/asia'; -------------------------------------------------------------------------------- /dist_i18n/bg.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/bg'; -------------------------------------------------------------------------------- /dist_i18n/bg.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"Посетете Altcha.org",enterCode:"Въведете код",enterCodeAria:"Въведете кода, който чувате. Натиснете Space за възпроизвеждане на аудио.",error:"Проверката неуспешна. Моля, опитайте по-късно.",expired:"Времето за проверка изтече. Моля, опитайте отново.",verificationRequired:"Изисква се проверка!",footer:'Защитено от ALTCHA',getAudioChallenge:"Аудио проверка",label:"Аз не съм робот",loading:"Зареждане...",reload:"Презареди",verify:"Провери",verified:"Проверено",verifying:"Проверява се...",waitAlert:"Проверката е в процес... моля изчакайте."};globalThis.altchaI18n.set("bg",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/bn.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/bn'; -------------------------------------------------------------------------------- /dist_i18n/bn.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"Altcha.org পরিদর্শন করুন",enterCode:"কোড লিখুন",enterCodeAria:"আপনি যে কোড শুনতে পান তা লিখুন। অডিও প্লে করতে স্পেস বাটন টিপুন।",error:"যাচাইকরণ ব্যর্থ হয়েছে। পরে আবার চেষ্টা করুন।",expired:"যাচাইকরণ সময়সীমা শেষ হয়েছে। আবার চেষ্টা করুন।",verificationRequired:"যাচাই প্রয়োজন!",footer:'দ্বারা সুরক্ষিত ALTCHA',getAudioChallenge:"অডিও চ্যালেঞ্জ নিন",label:"আমি রোবট নই",loading:"লোড হচ্ছে...",reload:"পুনরায় লোড করুন",verify:"যাচাই করুন",verified:"যাচাই করা হয়েছে",verifying:"যাচাই করা হচ্ছে...",waitAlert:"যাচাই করা হচ্ছে... দয়া করে অপেক্ষা করুন।"};globalThis.altchaI18n.set("bn",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/bs.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/bs'; -------------------------------------------------------------------------------- /dist_i18n/bs.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(r,a){typeof exports=="object"&&typeof module<"u"?a(exports):typeof define=="function"&&define.amd?define(["exports"],a):(r=typeof globalThis<"u"?globalThis:r||self,a(r["[name]"]={}))})(this,function(r){"use strict";const a=()=>{};function g(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function j(e){var t=u;try{return u=!0,e()}finally{u=t}}function k(e,t,n){if(e==null)return t(void 0),a;const o=j(()=>e.subscribe(t,n));return o.unsubscribe?()=>o.unsubscribe():o}const l=[];function p(e,t=a){let n=null;const o=new Set;function f(s){if(g(e,s)&&(e=s,n)){const b=!l.length;for(const i of o)i[1](),l.push(i,e);if(b){for(let i=0;i{o.delete(i),o.size===0&&n&&(n(),n=null)}}return{set:f,update:d,subscribe:v}}function c(e){let t;return k(e,n=>t=n)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:p({})};const h={ariaLinkLabel:"Posjetite Altcha.org",enterCode:"Unesite kod",enterCodeAria:"Unesite kod koji čujete. Pritisnite Space da biste pustili zvuk.",error:"Verifikacija nije uspjela. Pokušajte ponovo kasnije.",expired:"Verifikacija je istekla. Pokušajte ponovo.",footer:'Zaštićeno od strane ALTCHA',getAudioChallenge:"Dohvatite audio izazov",label:"Nisam robot",loading:"Učitavanje...",reload:"Ponovno učitaj",verify:"Verifikuj",verificationRequired:"Verifikacija je obavezna!",verified:"Verifikovano",verifying:"Verifikacija u toku...",waitAlert:"Verifikacija u toku... molimo vas da sačekate."};globalThis.altchaI18n.set("bs",h),r.i18n=h,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/ca.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/ca'; -------------------------------------------------------------------------------- /dist_i18n/ca.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(s=typeof globalThis<"u"?globalThis:s||self,o(s["[name]"]={}))})(this,function(s){"use strict";const o=()=>{};function g(e,i){return e!=e?i==i:e!==i||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var i=u;try{return u=!0,e()}finally{u=i}}function T(e,i,r){if(e==null)return i(void 0),o;const n=p(()=>e.subscribe(i,r));return n.unsubscribe?()=>n.unsubscribe():n}const l=[];function y(e,i=o){let r=null;const n=new Set;function f(a){if(g(e,a)&&(e=a,r)){const b=!l.length;for(const t of n)t[1](),l.push(t,e);if(b){for(let t=0;t{n.delete(t),n.size===0&&r&&(r(),r=null)}}return{set:f,update:h,subscribe:I}}function c(e){let i;return T(e,r=>i=r)(),i}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,i)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:i}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const d={ariaLinkLabel:"Visita Altcha.org",enterCode:"Introdueix el codi",enterCodeAria:"Introdueix el codi que escoltes. Prem Espai per reproduir l’àudio.",error:"Verificació fallida. Torna-ho a provar més tard.",expired:"Verificació expirada. Torna-ho a provar.",footer:'Protegit per ALTCHA',getAudioChallenge:"Obtenir un desafiament d’àudio",label:"No sóc un robot",loading:"Carregant...",reload:"Torna a carregar",verify:"Verificar",verificationRequired:"Es requereix verificació!",verified:"Verificat",verifying:"Verificant...",waitAlert:"Verificant... si us plau, espera."};globalThis.altchaI18n.set("ca",d),s.i18n=d,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/cs.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/cs'; -------------------------------------------------------------------------------- /dist_i18n/cs.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(l=typeof globalThis<"u"?globalThis:l||self,r(l["[name]"]={}))})(this,function(l){"use strict";const r=()=>{};function g(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function v(e,t,o){if(e==null)return t(void 0),r;const i=p(()=>e.subscribe(t,o));return i.unsubscribe?()=>i.unsubscribe():i}const u=[];function k(e,t=r){let o=null;const i=new Set;function f(s){if(g(e,s)&&(e=s,o)){const b=!u.length;for(const n of i)n[1](),u.push(n,e);if(b){for(let n=0;n{i.delete(n),i.size===0&&o&&(o(),o=null)}}return{set:f,update:d,subscribe:y}}function c(e){let t;return v(e,o=>t=o)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:k({})};const h={ariaLinkLabel:"Navštivte Altcha.org",enterCode:"Zadejte kód",enterCodeAria:"Zadejte kód, který slyšíte. Stisknutím mezerníku přehrajete zvuk.",error:"Ověření selhalo. Zkuste to prosím později.",expired:"Ověření vypršelo. Zkuste to prosím znovu.",verificationRequired:"Vyžaduje se ověření!",footer:'Chráněno pomocí ALTCHA',getAudioChallenge:"Získat audio výzvu",label:"Nejsem robot",loading:"Načítání...",reload:"Znovu načíst",verify:"Ověřit",verified:"Ověřeno",verifying:"Ověřování...",waitAlert:"Probíhá ověření... prosím počkejte."};globalThis.altchaI18n.set("cs",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/da.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/da'; -------------------------------------------------------------------------------- /dist_i18n/da.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(o,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(o=typeof globalThis<"u"?globalThis:o||self,s(o["[name]"]={}))})(this,function(o){"use strict";const s=()=>{};function h(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var t=u;try{return u=!0,e()}finally{u=t}}function y(e,t,i){if(e==null)return t(void 0),s;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const a=[];function k(e,t=s){let i=null;const r=new Set;function f(l){if(h(e,l)&&(e=l,i)){const g=!a.length;for(const n of r)n[1](),a.push(n,e);if(g){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:b,subscribe:T}}function c(e){let t;return y(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:k({})};const d={ariaLinkLabel:"Besøg Altcha.org",enterCode:"Indtast kode",enterCodeAria:"Indtast den kode, du hører. Tryk på mellemrumstasten for at afspille lyd.",error:"Verificering mislykkedes. Prøv venligst igen senere.",expired:"Verificering udløbet. Prøv venligst igen.",verificationRequired:"Verificering kræves!",footer:'Beskyttet af ALTCHA',getAudioChallenge:"Hent lydudfordring",label:"Jeg er ikke en robot",loading:"Indlæser...",reload:"Genindlæs",verify:"Verificer",verified:"Verificeret",verifying:"Verificerer...",waitAlert:"Verificerer... vent venligst."};globalThis.altchaI18n.set("da",d),o.i18n=d,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/de.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/de'; -------------------------------------------------------------------------------- /dist_i18n/de.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(u,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(u=typeof globalThis<"u"?globalThis:u||self,s(u["[name]"]={}))})(this,function(u){"use strict";const s=()=>{};function g(e,n){return e!=e?n==n:e!==n||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var n=a;try{return a=!0,e()}finally{a=n}}function T(e,n,r){if(e==null)return n(void 0),s;const i=p(()=>e.subscribe(n,r));return i.unsubscribe?()=>i.unsubscribe():i}const l=[];function y(e,n=s){let r=null;const i=new Set;function f(o){if(g(e,o)&&(e=o,r)){const b=!l.length;for(const t of i)t[1](),l.push(t,e);if(b){for(let t=0;t{i.delete(t),i.size===0&&r&&(r(),r=null)}}return{set:f,update:d,subscribe:A}}function c(e){let n;return T(e,r=>n=r)(),n}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,n)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:n}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"Besuche Altcha.org",enterCode:"Code eingeben",enterCodeAria:"Geben Sie den Code ein, den Sie hören. Drücken Sie die Leertaste, um die Audio abzuspielen.",error:"Überprüfung fehlgeschlagen. Bitte versuchen Sie es später erneut.",expired:"Überprüfung abgelaufen. Bitte versuchen Sie es erneut.",verificationRequired:"Überprüfung erforderlich!",footer:'Geschützt durch ALTCHA',getAudioChallenge:"Audio-Herausforderung anfordern",label:"Ich bin kein Roboter",loading:"Lade...",reload:"Neu laden",verify:"Überprüfen",verified:"Überprüft",verifying:"Wird überprüft...",waitAlert:"Überprüfung läuft... bitte warten."};globalThis.altchaI18n.set("de",h),u.i18n=h,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/el.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/el'; -------------------------------------------------------------------------------- /dist_i18n/el.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(s=typeof globalThis<"u"?globalThis:s||self,o(s["[name]"]={}))})(this,function(s){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(l){if(d(e,l)&&(e=l,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"Επισκεφθείτε το Altcha.org",enterCode:"Εισαγάγετε κωδικό",enterCodeAria:"Εισαγάγετε τον κωδικό που ακούτε. Πατήστε Space για να παίξετε τον ήχο.",error:"Η επαλήθευση απέτυχε. Δοκιμάστε ξανά αργότερα.",expired:"Η επαλήθευση έληξε. Δοκιμάστε ξανά.",verificationRequired:"Απαιτείται έλεγχος!",footer:'Προστατεύεται από το ALTCHA',getAudioChallenge:"Λήψη ηχητικής δοκιμασίας",label:"Δεν είμαι ρομπότ",loading:"Φόρτωση...",reload:"Επαναφόρτωση",verify:"Επαλήθευση",verified:"Επαληθεύτηκε",verifying:"Γίνεται επαλήθευση...",waitAlert:"Γίνεται επαλήθευση... παρακαλώ περιμένετε."};globalThis.altchaI18n.set("el",h),s.i18n=h,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/en.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/en'; -------------------------------------------------------------------------------- /dist_i18n/en.js: -------------------------------------------------------------------------------- 1 | const l = () => { 2 | }; 3 | function h(e, t) { 4 | return e != e ? t == t : e !== t || e !== null && typeof e == "object" || typeof e == "function"; 5 | } 6 | let u = !1; 7 | function d(e) { 8 | var t = u; 9 | try { 10 | return u = !0, e(); 11 | } finally { 12 | u = t; 13 | } 14 | } 15 | function p(e, t, n) { 16 | if (e == null) 17 | return t(void 0), l; 18 | const r = d( 19 | () => e.subscribe( 20 | t, 21 | // @ts-expect-error 22 | n 23 | ) 24 | ); 25 | return r.unsubscribe ? () => r.unsubscribe() : r; 26 | } 27 | const o = []; 28 | function y(e, t = l) { 29 | let n = null; 30 | const r = /* @__PURE__ */ new Set(); 31 | function s(a) { 32 | if (h(e, a) && (e = a, n)) { 33 | const c = !o.length; 34 | for (const i of r) 35 | i[1](), o.push(i, e); 36 | if (c) { 37 | for (let i = 0; i < o.length; i += 2) 38 | o[i][0](o[i + 1]); 39 | o.length = 0; 40 | } 41 | } 42 | } 43 | function b(a) { 44 | s(a( 45 | /** @type {T} */ 46 | e 47 | )); 48 | } 49 | function g(a, c = l) { 50 | const i = [a, c]; 51 | return r.add(i), r.size === 1 && (n = t(s, b) || l), a( 52 | /** @type {T} */ 53 | e 54 | ), () => { 55 | r.delete(i), r.size === 0 && n && (n(), n = null); 56 | }; 57 | } 58 | return { set: s, update: b, subscribe: g }; 59 | } 60 | function f(e) { 61 | let t; 62 | return p(e, (n) => t = n)(), t; 63 | } 64 | globalThis.altchaPlugins = globalThis.altchaPlugins || []; 65 | globalThis.altchaI18n = globalThis.altchaI18n || { 66 | get: (e) => f(globalThis.altchaI18n.store)[e], 67 | set: (e, t) => { 68 | Object.assign(f(globalThis.altchaI18n.store), { 69 | [e]: t 70 | }), globalThis.altchaI18n.store.set(f(globalThis.altchaI18n.store)); 71 | }, 72 | store: y({}) 73 | }; 74 | const T = { 75 | ariaLinkLabel: "Visit Altcha.org", 76 | enterCode: "Enter code", 77 | enterCodeAria: "Enter code you hear. Press Space to play audio.", 78 | error: "Verification failed. Try again later.", 79 | expired: "Verification expired. Try again.", 80 | footer: 'Protected by ALTCHA', 81 | getAudioChallenge: "Get an audio challenge", 82 | label: "I'm not a robot", 83 | loading: "Loading...", 84 | reload: "Reload", 85 | verify: "Verify", 86 | verificationRequired: "Verification required!", 87 | verified: "Verified", 88 | verifying: "Verifying...", 89 | waitAlert: "Verifying... please wait." 90 | }; 91 | globalThis.altchaI18n.set("en", T); 92 | export { 93 | T as i18n 94 | }; 95 | -------------------------------------------------------------------------------- /dist_i18n/en.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function h(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var t=u;try{return u=!0,e()}finally{u=t}}function y(e,t,n){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const s=[];function T(e,t=o){let n=null;const r=new Set;function f(a){if(h(e,a)&&(e=a,n)){const b=!s.length;for(const i of r)i[1](),s.push(i,e);if(b){for(let i=0;i{r.delete(i),r.size===0&&n&&(n(),n=null)}}return{set:f,update:g,subscribe:V}}function c(e){let t;return y(e,n=>t=n)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:T({})};const d={ariaLinkLabel:"Visit Altcha.org",enterCode:"Enter code",enterCodeAria:"Enter code you hear. Press Space to play audio.",error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:'Protected by ALTCHA',getAudioChallenge:"Get an audio challenge",label:"I'm not a robot",loading:"Loading...",reload:"Reload",verify:"Verify",verificationRequired:"Verification required!",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait."};globalThis.altchaI18n.set("en",d),l.i18n=d,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/es-419.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/es-419'; -------------------------------------------------------------------------------- /dist_i18n/es-419.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(s=typeof globalThis<"u"?globalThis:s||self,o(s["[name]"]={}))})(this,function(s){"use strict";const o=()=>{};function h(e,i){return e!=e?i==i:e!==i||e!==null&&typeof e=="object"||typeof e=="function"}let c=!1;function p(e){var i=c;try{return c=!0,e()}finally{c=i}}function T(e,i,r){if(e==null)return i(void 0),o;const n=p(()=>e.subscribe(i,r));return n.unsubscribe?()=>n.unsubscribe():n}const l=[];function v(e,i=o){let r=null;const n=new Set;function f(a){if(h(e,a)&&(e=a,r)){const d=!l.length;for(const t of n)t[1](),l.push(t,e);if(d){for(let t=0;t{n.delete(t),n.size===0&&r&&(r(),r=null)}}return{set:f,update:g,subscribe:y}}function u(e){let i;return T(e,r=>i=r)(),i}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>u(globalThis.altchaI18n.store)[e],set:(e,i)=>{Object.assign(u(globalThis.altchaI18n.store),{[e]:i}),globalThis.altchaI18n.store.set(u(globalThis.altchaI18n.store))},store:v({})};const b={ariaLinkLabel:"Visitar Altcha.org",enterCode:"Ingresa el código",enterCodeAria:"Ingresa el código que escuchas. Presiona Espacio para reproducir el audio.",error:"Falló la verificación. Por favor vuelve a intentarlo más tarde.",expired:"La verificación expiró. Por favor inténtalo de nuevo.",verificationRequired:"¡Verificación requerida!",footer:'Protegido por ALTCHA',getAudioChallenge:"Obtener un reto de audio",label:"No soy un robot",loading:"Cargando...",reload:"Volver a cargar",verify:"Verificar",verified:"Verificado",verifying:"Verificando...",waitAlert:"Verificando... por favor espera."};globalThis.altchaI18n.set("es-419",b),s.i18n=b,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/es-es.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/es-es'; -------------------------------------------------------------------------------- /dist_i18n/es-es.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(s=typeof globalThis<"u"?globalThis:s||self,o(s["[name]"]={}))})(this,function(s){"use strict";const o=()=>{};function h(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var t=u;try{return u=!0,e()}finally{u=t}}function T(e,t,n){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const l=[];function y(e,t=o){let n=null;const r=new Set;function f(a){if(h(e,a)&&(e=a,n)){const d=!l.length;for(const i of r)i[1](),l.push(i,e);if(d){for(let i=0;i{r.delete(i),r.size===0&&n&&(n(),n=null)}}return{set:f,update:g,subscribe:v}}function c(e){let t;return T(e,n=>t=n)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const b={ariaLinkLabel:"Visitar Altcha.org",enterCode:"Introduce el código",enterCodeAria:"Introduce el código que escuchas. Pulsa Espacio para reproducir el audio.",error:"Falló la verificación. Por favor intente nuevamente más tarde.",expired:"Verificación expirada. Por favor intente nuevamente.",verificationRequired:"¡Verificación requerida!",footer:'Protegido por ALTCHA',getAudioChallenge:"Obtener un desafío de audio",label:"No soy un robot",loading:"Cargando...",reload:"Recargar",verify:"Verificar",verified:"Verificado",verifying:"Verificando...",waitAlert:"Verificando... por favor espere."};globalThis.altchaI18n.set("es-es",b),s.i18n=b,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/et.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/et'; -------------------------------------------------------------------------------- /dist_i18n/et.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,a){typeof exports=="object"&&typeof module<"u"?a(exports):typeof define=="function"&&define.amd?define(["exports"],a):(l=typeof globalThis<"u"?globalThis:l||self,a(l["[name]"]={}))})(this,function(l){"use strict";const a=()=>{};function g(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var t=u;try{return u=!0,e()}finally{u=t}}function T(e,t,i){if(e==null)return t(void 0),a;const o=p(()=>e.subscribe(t,i));return o.unsubscribe?()=>o.unsubscribe():o}const r=[];function k(e,t=a){let i=null;const o=new Set;function f(s){if(g(e,s)&&(e=s,i)){const b=!r.length;for(const n of o)n[1](),r.push(n,e);if(b){for(let n=0;n{o.delete(n),o.size===0&&i&&(i(),i=null)}}return{set:f,update:d,subscribe:m}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:k({})};const h={ariaLinkLabel:"Külasta Altcha.org",enterCode:"Sisesta kood",enterCodeAria:"Sisestage kuuldu kood. Vajutage tühikut, et esitada heli.",error:"Kinnitamine ebaõnnestus. Proovi hiljem uuesti.",expired:"Kinnitamine aegus. Proovi uuesti.",verificationRequired:"Kontroll on vajalik!",footer:'Kaitstud ALTCHA poolt',getAudioChallenge:"Hangi heliülesanne",label:"Ma ei ole robot",loading:"Laadimine...",reload:"Laadi uuesti",verify:"Kinnita",verified:"Kinnitatud",verifying:"Kinnitamine...",waitAlert:"Kinnitamine... palun oota."};globalThis.altchaI18n.set("et",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/eu.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/eu'; -------------------------------------------------------------------------------- /dist_i18n/eu.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(u,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(u=typeof globalThis<"u"?globalThis:u||self,r(u["[name]"]={}))})(this,function(u){"use strict";const r=()=>{};function h(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let l=!1;function z(e){var t=l;try{return l=!0,e()}finally{l=t}}function p(e,t,i){if(e==null)return t(void 0),r;const n=z(()=>e.subscribe(t,i));return n.unsubscribe?()=>n.unsubscribe():n}const s=[];function k(e,t=r){let i=null;const n=new Set;function b(o){if(h(e,o)&&(e=o,i)){const f=!s.length;for(const a of n)a[1](),s.push(a,e);if(f){for(let a=0;a{n.delete(a),n.size===0&&i&&(i(),i=null)}}return{set:b,update:d,subscribe:T}}function c(e){let t;return p(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:k({})};const g={ariaLinkLabel:"Bisitatu Altcha.org",enterCode:"Sartu kodea",enterCodeAria:"Sartu entzun duzun kodea. Sakatu Espazioa audioa erreproduzitzeko.",error:"Egiaztatzeak huts egin du. Saiatu berriro geroago.",expired:"Egiaztatzea iraungi da. Saiatu berriro.",verificationRequired:"Egiaztatzea beharrezkoa da!",footer:'ALTCHAk babestuta',getAudioChallenge:"Jaso audio-erronka bat",label:"Ez naiz robot bat",loading:"Kargatzen...",reload:"Birkargatu",verify:"Egiaztatu",verified:"Egiaztatuta",verifying:"Egiaztatzen...",waitAlert:"Egiaztatzen... itxaron mesedez."};globalThis.altchaI18n.set("eu",g),u.i18n=g,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/europe.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/europe'; -------------------------------------------------------------------------------- /dist_i18n/fi.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/fi'; -------------------------------------------------------------------------------- /dist_i18n/fi.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,l){typeof exports=="object"&&typeof module<"u"?l(exports):typeof define=="function"&&define.amd?define(["exports"],l):(s=typeof globalThis<"u"?globalThis:s||self,l(s["[name]"]={}))})(this,function(s){"use strict";const l=()=>{};function g(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var t=u;try{return u=!0,e()}finally{u=t}}function v(e,t,i){if(e==null)return t(void 0),l;const a=p(()=>e.subscribe(t,i));return a.unsubscribe?()=>a.unsubscribe():a}const r=[];function y(e,t=l){let i=null;const a=new Set;function f(o){if(g(e,o)&&(e=o,i)){const h=!r.length;for(const n of a)n[1](),r.push(n,e);if(h){for(let n=0;n{a.delete(n),a.size===0&&i&&(i(),i=null)}}return{set:f,update:d,subscribe:T}}function c(e){let t;return v(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const b={ariaLinkLabel:"Vieraile sivulla Altcha.org",enterCode:"Syötä koodi",enterCodeAria:"Kirjoita kuulemasi koodi. Paina välilyöntiä toistaaksesi äänen.",error:"Varmennus epäonnistui. Yritä myöhemmin uudelleen.",expired:"Varmennus vanhentui. Yritä uudelleen.",verificationRequired:"Vahvistus vaaditaan!",footer:'Suojattu ALTCHA:lla',getAudioChallenge:"Hae äänitehtävä",label:"En ole robotti",loading:"Ladataan...",reload:"Lataa uudelleen",verify:"Vahvista",verified:"Vahvistettu",verifying:"Vahvistetaan...",waitAlert:"Vahvistetaan... odota hetki."};globalThis.altchaI18n.set("fi",b),s.i18n=b,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/fr-ca.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/fr-ca'; -------------------------------------------------------------------------------- /dist_i18n/fr-ca.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(a,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(a=typeof globalThis<"u"?globalThis:a||self,o(a["[name]"]={}))})(this,function(a){"use strict";const o=()=>{};function g(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var t=u;try{return u=!0,e()}finally{u=t}}function y(e,t,n){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const l=[];function T(e,t=o){let n=null;const r=new Set;function f(s){if(g(e,s)&&(e=s,n)){const b=!l.length;for(const i of r)i[1](),l.push(i,e);if(b){for(let i=0;i{r.delete(i),r.size===0&&n&&(n(),n=null)}}return{set:f,update:h,subscribe:z}}function c(e){let t;return y(e,n=>t=n)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:T({})};const d={ariaLinkLabel:"Visitez Altcha.org",enterCode:"Entrez le code",enterCodeAria:"Entrez le code que vous entendez. Appuyez sur la barre d'espace pour écouter l'audio.",error:"Échec de la vérification. Réessayez plus tard.",expired:"La vérification a expiré. Réessayez.",verificationRequired:"Vérification requise !",footer:'Protégé par ALTCHA',getAudioChallenge:"Obtenir un défi audio",label:"Pas un robot",loading:"Chargement...",reload:"Recharger",verify:"Vérifier",verified:"Vérifié",verifying:"Vérification en cours...",waitAlert:"Vérification en cours... veuillez patienter."};globalThis.altchaI18n.set("fr-ca",d),a.i18n=d,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/fr-fr.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/fr-fr'; -------------------------------------------------------------------------------- /dist_i18n/fr-fr.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(a,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(a=typeof globalThis<"u"?globalThis:a||self,o(a["[name]"]={}))})(this,function(a){"use strict";const o=()=>{};function g(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let l=!1;function p(e){var t=l;try{return l=!0,e()}finally{l=t}}function y(e,t,n){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function T(e,t=o){let n=null;const r=new Set;function f(s){if(g(e,s)&&(e=s,n)){const b=!u.length;for(const i of r)i[1](),u.push(i,e);if(b){for(let i=0;i{r.delete(i),r.size===0&&n&&(n(),n=null)}}return{set:f,update:d,subscribe:z}}function c(e){let t;return y(e,n=>t=n)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:T({})};const h={ariaLinkLabel:"Visitez Altcha.org",enterCode:"Entrez le code",enterCodeAria:"Entrez le code que vous entendez. Appuyez sur Espace pour écouter l'audio.",error:"Échec de la vérification. Essayez à nouveau plus tard.",expired:"La vérification a expiré. Essayez à nouveau.",verificationRequired:"Vérification requise !",footer:'Protégé par ALTCHA',getAudioChallenge:"Obtenir un défi audio",label:"Pas un robot",loading:"Chargement...",reload:"Recharger",verify:"Vérifier",verified:"Vérifié",verifying:"Vérification en cours...",waitAlert:"Vérification en cours... veuillez patienter."};globalThis.altchaI18n.set("fr-fr",h),a.i18n=h,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/ga.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/ga'; -------------------------------------------------------------------------------- /dist_i18n/ga.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(l=typeof globalThis<"u"?globalThis:l||self,r(l["[name]"]={}))})(this,function(l){"use strict";const r=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var t=u;try{return u=!0,e()}finally{u=t}}function T(e,t,n){if(e==null)return t(void 0),r;const a=p(()=>e.subscribe(t,n));return a.unsubscribe?()=>a.unsubscribe():a}const s=[];function m(e,t=r){let n=null;const a=new Set;function h(o){if(d(e,o)&&(e=o,n)){const f=!s.length;for(const i of a)i[1](),s.push(i,e);if(f){for(let i=0;i{a.delete(i),a.size===0&&n&&(n(),n=null)}}return{set:h,update:g,subscribe:y}}function c(e){let t;return T(e,n=>t=n)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:m({})};const b={ariaLinkLabel:"Tabhair cuairt ar Altcha.org",enterCode:"Iontráil cód",enterCodeAria:"Cuir isteach an cód a chloiseann tú. Brúigh Spás chun an fuaime a sheinm.",error:"Theip ar an bhfíorú. Bain triail eile as níos déanaí.",expired:"Tá an fíorú as feidhm. Bain triail eile as.",verificationRequired:"Fíorú riachtanach!",footer:'Cosanta ag ALTCHA',getAudioChallenge:"Faigh dúshlán fuaime",label:"Níl mé i mo róbat",loading:"Á luchtú...",reload:"Athluchtaigh",verify:"Fíoraigh",verified:"Fíoraithe",verifying:"Fíorú ar siúl...",waitAlert:"Fíorú ar siúl... fan go fóill."};globalThis.altchaI18n.set("ga",b),l.i18n=b,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/he.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/he'; -------------------------------------------------------------------------------- /dist_i18n/he.js: -------------------------------------------------------------------------------- 1 | const o = () => { 2 | }; 3 | function g(e, t) { 4 | return e != e ? t == t : e !== t || e !== null && typeof e == "object" || typeof e == "function"; 5 | } 6 | let c = !1; 7 | function d(e) { 8 | var t = c; 9 | try { 10 | return c = !0, e(); 11 | } finally { 12 | c = t; 13 | } 14 | } 15 | function p(e, t, r) { 16 | if (e == null) 17 | return t(void 0), o; 18 | const i = d( 19 | () => e.subscribe( 20 | t, 21 | // @ts-expect-error 22 | r 23 | ) 24 | ); 25 | return i.unsubscribe ? () => i.unsubscribe() : i; 26 | } 27 | const s = []; 28 | function T(e, t = o) { 29 | let r = null; 30 | const i = /* @__PURE__ */ new Set(); 31 | function a(l) { 32 | if (g(e, l) && (e = l, r)) { 33 | const u = !s.length; 34 | for (const n of i) 35 | n[1](), s.push(n, e); 36 | if (u) { 37 | for (let n = 0; n < s.length; n += 2) 38 | s[n][0](s[n + 1]); 39 | s.length = 0; 40 | } 41 | } 42 | } 43 | function f(l) { 44 | a(l( 45 | /** @type {T} */ 46 | e 47 | )); 48 | } 49 | function h(l, u = o) { 50 | const n = [l, u]; 51 | return i.add(n), i.size === 1 && (r = t(a, f) || o), l( 52 | /** @type {T} */ 53 | e 54 | ), () => { 55 | i.delete(n), i.size === 0 && r && (r(), r = null); 56 | }; 57 | } 58 | return { set: a, update: f, subscribe: h }; 59 | } 60 | function b(e) { 61 | let t; 62 | return p(e, (r) => t = r)(), t; 63 | } 64 | globalThis.altchaPlugins = globalThis.altchaPlugins || []; 65 | globalThis.altchaI18n = globalThis.altchaI18n || { 66 | get: (e) => b(globalThis.altchaI18n.store)[e], 67 | set: (e, t) => { 68 | Object.assign(b(globalThis.altchaI18n.store), { 69 | [e]: t 70 | }), globalThis.altchaI18n.store.set(b(globalThis.altchaI18n.store)); 71 | }, 72 | store: T({}) 73 | }; 74 | const A = { 75 | ariaLinkLabel: "בקר באתר Altcha.org", 76 | enterCode: "הזן קוד", 77 | enterCodeAria: "הזן את הקוד שאתה שומע. לחץ על רווח להפעלת השמע.", 78 | error: "האימות נכשל. נסה שוב מאוחר יותר.", 79 | expired: "תוקף האימות פג. נסה שוב.", 80 | verificationRequired: "נדרש אימות!", 81 | footer: 'מוגן על ידי ALTCHA', 82 | getAudioChallenge: "קבל אתגר שמע", 83 | label: "אני לא רובוט", 84 | loading: "טוען...", 85 | reload: "טען מחדש", 86 | verify: "אמת", 87 | verified: "אומת", 88 | verifying: "מאמת...", 89 | waitAlert: "מבצע אימות... אנא המתן." 90 | }; 91 | globalThis.altchaI18n.set("he", A); 92 | export { 93 | A as i18n 94 | }; 95 | -------------------------------------------------------------------------------- /dist_i18n/he.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"בקר באתר Altcha.org",enterCode:"הזן קוד",enterCodeAria:"הזן את הקוד שאתה שומע. לחץ על רווח להפעלת השמע.",error:"האימות נכשל. נסה שוב מאוחר יותר.",expired:"תוקף האימות פג. נסה שוב.",verificationRequired:"נדרש אימות!",footer:'מוגן על ידי ALTCHA',getAudioChallenge:"קבל אתגר שמע",label:"אני לא רובוט",loading:"טוען...",reload:"טען מחדש",verify:"אמת",verified:"אומת",verifying:"מאמת...",waitAlert:"מבצע אימות... אנא המתן."};globalThis.altchaI18n.set("he",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/hi.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/hi'; -------------------------------------------------------------------------------- /dist_i18n/hi.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"Altcha.org पर जाएं",enterCode:"कोड दर्ज करेंं",enterCodeAria:"आप जो कोड सुनते हैं उसे दर्ज करें। ऑडियो चलाने के लिए स्पेस दबाएं।",error:"सत्यापन विफल। कृपया बाद में फिर से प्रयास करें।",expired:"सत्यापन समाप्त हो गया है। कृपया पुनः प्रयास करें।",verificationRequired:"सत्यापन आवश्यक है!",footer:'द्वारा संरक्षित ALTCHA',getAudioChallenge:"ऑडियो चुनौती प्राप्त करें",label:"मैं रोबोट नहीं हूँ",loading:"लोड हो रहा है...",reload:"पुनः लोड करें",verify:"सत्यापित करें",verified:"सत्यापित",verifying:"सत्यापित कर रहे हैं...",waitAlert:"सत्यापित किया जा रहा है... कृपया प्रतीक्षा करें।"};globalThis.altchaI18n.set("hi",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/hr.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/hr'; -------------------------------------------------------------------------------- /dist_i18n/hr.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(s=typeof globalThis<"u"?globalThis:s||self,r(s["[name]"]={}))})(this,function(s){"use strict";const r=()=>{};function j(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function g(e){var t=u;try{return u=!0,e()}finally{u=t}}function p(e,t,o){if(e==null)return t(void 0),r;const i=g(()=>e.subscribe(t,o));return i.unsubscribe?()=>i.unsubscribe():i}const l=[];function k(e,t=r){let o=null;const i=new Set;function f(a){if(j(e,a)&&(e=a,o)){const b=!l.length;for(const n of i)n[1](),l.push(n,e);if(b){for(let n=0;n{i.delete(n),i.size===0&&o&&(o(),o=null)}}return{set:f,update:d,subscribe:v}}function c(e){let t;return p(e,o=>t=o)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:k({})};const h={ariaLinkLabel:"Posjetite Altcha.org",enterCode:"Unesite kod",enterCodeAria:"Unesite kod koji čujete. Pritisnite razmaknicu za reprodukciju zvuka.",error:"Provjera nije uspjela. Molimo pokušajte kasnije.",expired:"Provjera je istekla. Molimo pokušajte ponovo.",verificationRequired:"Potrebna je provjera!",footer:'Zaštićeno od strane ALTCHA',getAudioChallenge:"Audio provjera",label:"Ja nisam robot",loading:"Učitavanje...",reload:"Ponovno učitaj",verify:"Provjeri",verified:"Provjereno",verifying:"Provjeravanje...",waitAlert:"Provjera je u tijeku... molimo pričekajte."};globalThis.altchaI18n.set("hr",h),s.i18n=h,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/hu.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/hu'; -------------------------------------------------------------------------------- /dist_i18n/hu.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(i,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(i=typeof globalThis<"u"?globalThis:i||self,s(i["[name]"]={}))})(this,function(i){"use strict";const s=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function k(e){var t=u;try{return u=!0,e()}finally{u=t}}function p(e,t,n){if(e==null)return t(void 0),s;const r=k(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const o=[];function y(e,t=s){let n=null;const r=new Set;function b(a){if(d(e,a)&&(e=a,n)){const f=!o.length;for(const l of r)l[1](),o.push(l,e);if(f){for(let l=0;l{r.delete(l),r.size===0&&n&&(n(),n=null)}}return{set:b,update:g,subscribe:z}}function c(e){let t;return p(e,n=>t=n)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"Látogass el az Altcha.org oldalra",enterCode:"Írja be a kódot",enterCodeAria:"Írja be a hallott kódot. Nyomja meg a Szóköz billentyűt a hang lejátszásához.",error:"A hitelesítés nem sikerült. Próbáld meg később újra.",expired:"A hitelesítés lejárt. Próbáld újra.",verificationRequired:"Ellenőrzés szükséges!",footer:'Védve a következő által: ALTCHA',getAudioChallenge:"Hangalapú kihívás kérése",label:"Nem vagyok robot",loading:"Betöltés...",reload:"Újratöltés",verify:"Ellenőrzés",verified:"Ellenőrizve",verifying:"Ellenőrzés folyamatban...",waitAlert:"Ellenőrzés folyamatban... kérlek várj."};globalThis.altchaI18n.set("hu",h),i.i18n=h,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/id.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/id'; -------------------------------------------------------------------------------- /dist_i18n/id.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(s=typeof globalThis<"u"?globalThis:s||self,r(s["[name]"]={}))})(this,function(s){"use strict";const r=()=>{};function h(e,i){return e!=e?i==i:e!==i||e!==null&&typeof e=="object"||typeof e=="function"}let l=!1;function k(e){var i=l;try{return l=!0,e()}finally{l=i}}function p(e,i,t){if(e==null)return i(void 0),r;const a=k(()=>e.subscribe(i,t));return a.unsubscribe?()=>a.unsubscribe():a}const u=[];function T(e,i=r){let t=null;const a=new Set;function c(o){if(h(e,o)&&(e=o,t)){const g=!u.length;for(const n of a)n[1](),u.push(n,e);if(g){for(let n=0;n{a.delete(n),a.size===0&&t&&(t(),t=null)}}return{set:c,update:d,subscribe:y}}function f(e){let i;return p(e,t=>i=t)(),i}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>f(globalThis.altchaI18n.store)[e],set:(e,i)=>{Object.assign(f(globalThis.altchaI18n.store),{[e]:i}),globalThis.altchaI18n.store.set(f(globalThis.altchaI18n.store))},store:T({})};const b={ariaLinkLabel:"Kunjungi Altcha.org",enterCode:"Masukkan kode",enterCodeAria:"Masukkan kode yang Anda dengar. Tekan Spasi untuk memutar audio.",error:"Verifikasi gagal. Coba lagi nanti.",expired:"Verifikasi telah kedaluwarsa. Coba lagi.",verificationRequired:"Verifikasi diperlukan!",footer:'Dilindungi oleh ALTCHA',getAudioChallenge:"Dapatkan tantangan audio",label:"Saya bukan robot",loading:"Memuat...",reload:"Muat ulang",verify:"Verifikasi",verified:"Terverifikasi",verifying:"Memverifikasi...",waitAlert:"Memverifikasi... harap tunggu."};globalThis.altchaI18n.set("id",b),s.i18n=b,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/is.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/is'; -------------------------------------------------------------------------------- /dist_i18n/is.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(l=typeof globalThis<"u"?globalThis:l||self,r(l["[name]"]={}))})(this,function(l){"use strict";const r=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var t=u;try{return u=!0,e()}finally{u=t}}function y(e,t,i){if(e==null)return t(void 0),r;const s=p(()=>e.subscribe(t,i));return s.unsubscribe?()=>s.unsubscribe():s}const o=[];function k(e,t=r){let i=null;const s=new Set;function c(a){if(d(e,a)&&(e=a,i)){const b=!o.length;for(const n of s)n[1](),o.push(n,e);if(b){for(let n=0;n{s.delete(n),s.size===0&&i&&(i(),i=null)}}return{set:c,update:h,subscribe:T}}function f(e){let t;return y(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>f(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(f(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(f(globalThis.altchaI18n.store))},store:k({})};const g={ariaLinkLabel:"Heimsækja Altcha.org",enterCode:"Sláðu inn kóða",enterCodeAria:"Sláðu inn kóðann sem þú heyrir. Ýttu á Space til að spila hljóðið.",error:"Staðfesting mistókst. Reyndu aftur síðar.",expired:"Staðfesting er útrunnin. Reyndu aftur.",footer:'Verndað af ALTCHA',getAudioChallenge:"Fá hljóðáskorun",label:"Ég er ekki robot",loading:"Hleður...",reload:"Hleð aftur",verify:"Staðfesta",verificationRequired:"Staðfesting er nauðsynleg!",verified:"Staðfest",verifying:"Að staðfesta...",waitAlert:"Að staðfesta... vinsamlegast bíða."};globalThis.altchaI18n.set("is",g),l.i18n=g,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/it.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/it'; -------------------------------------------------------------------------------- /dist_i18n/it.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(s=typeof globalThis<"u"?globalThis:s||self,o(s["[name]"]={}))})(this,function(s){"use strict";const o=()=>{};function g(e,i){return e!=e?i==i:e!==i||e!==null&&typeof e=="object"||typeof e=="function"}let c=!1;function p(e){var i=c;try{return c=!0,e()}finally{c=i}}function T(e,i,n){if(e==null)return i(void 0),o;const r=p(()=>e.subscribe(i,n));return r.unsubscribe?()=>r.unsubscribe():r}const l=[];function y(e,i=o){let n=null;const r=new Set;function f(a){if(g(e,a)&&(e=a,n)){const b=!l.length;for(const t of r)t[1](),l.push(t,e);if(b){for(let t=0;t{r.delete(t),r.size===0&&n&&(n(),n=null)}}return{set:f,update:h,subscribe:I}}function u(e){let i;return T(e,n=>i=n)(),i}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>u(globalThis.altchaI18n.store)[e],set:(e,i)=>{Object.assign(u(globalThis.altchaI18n.store),{[e]:i}),globalThis.altchaI18n.store.set(u(globalThis.altchaI18n.store))},store:y({})};const d={ariaLinkLabel:"Visita Altcha.org",enterCode:"Inserisci il codice",enterCodeAria:"Inserisci il codice che senti. Premi Spazio per riprodurre l'audio.",error:"Verifica fallita. Riprova più tardi.",expired:"Verifica scaduta. Riprova.",verificationRequired:"Verifica richiesta!",footer:'Protetto da ALTCHA',getAudioChallenge:"Ottieni una sfida audio",label:"Non sono un robot",loading:"Caricamento...",reload:"Ricarica",verify:"Verifica",verified:"Verificato",verifying:"Verifica in corso...",waitAlert:"Verifica in corso... attendere."};globalThis.altchaI18n.set("it",d),s.i18n=d,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/ja.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/ja'; -------------------------------------------------------------------------------- /dist_i18n/ja.js: -------------------------------------------------------------------------------- 1 | const o = () => { 2 | }; 3 | function g(t, e) { 4 | return t != t ? e == e : t !== e || t !== null && typeof t == "object" || typeof t == "function"; 5 | } 6 | let c = !1; 7 | function d(t) { 8 | var e = c; 9 | try { 10 | return c = !0, t(); 11 | } finally { 12 | c = e; 13 | } 14 | } 15 | function p(t, e, r) { 16 | if (t == null) 17 | return e(void 0), o; 18 | const i = d( 19 | () => t.subscribe( 20 | e, 21 | // @ts-expect-error 22 | r 23 | ) 24 | ); 25 | return i.unsubscribe ? () => i.unsubscribe() : i; 26 | } 27 | const s = []; 28 | function T(t, e = o) { 29 | let r = null; 30 | const i = /* @__PURE__ */ new Set(); 31 | function a(l) { 32 | if (g(t, l) && (t = l, r)) { 33 | const u = !s.length; 34 | for (const n of i) 35 | n[1](), s.push(n, t); 36 | if (u) { 37 | for (let n = 0; n < s.length; n += 2) 38 | s[n][0](s[n + 1]); 39 | s.length = 0; 40 | } 41 | } 42 | } 43 | function f(l) { 44 | a(l( 45 | /** @type {T} */ 46 | t 47 | )); 48 | } 49 | function h(l, u = o) { 50 | const n = [l, u]; 51 | return i.add(n), i.size === 1 && (r = e(a, f) || o), l( 52 | /** @type {T} */ 53 | t 54 | ), () => { 55 | i.delete(n), i.size === 0 && r && (r(), r = null); 56 | }; 57 | } 58 | return { set: a, update: f, subscribe: h }; 59 | } 60 | function b(t) { 61 | let e; 62 | return p(t, (r) => e = r)(), e; 63 | } 64 | globalThis.altchaPlugins = globalThis.altchaPlugins || []; 65 | globalThis.altchaI18n = globalThis.altchaI18n || { 66 | get: (t) => b(globalThis.altchaI18n.store)[t], 67 | set: (t, e) => { 68 | Object.assign(b(globalThis.altchaI18n.store), { 69 | [t]: e 70 | }), globalThis.altchaI18n.store.set(b(globalThis.altchaI18n.store)); 71 | }, 72 | store: T({}) 73 | }; 74 | const A = { 75 | ariaLinkLabel: "Altcha.orgを訪問", 76 | enterCode: "コードを入力", 77 | enterCodeAria: "聞こえるコードを入力してください。スペースキーを押して音声を再生します。", 78 | error: "認証に失敗しました。後でもう一度試してください。", 79 | expired: "認証が期限切れです。再試行してください。", 80 | verificationRequired: "認証が必要です!", 81 | footer: '保護されています ALTCHA', 82 | getAudioChallenge: "音声チャレンジを取得", 83 | label: "ロボットじゃない", 84 | loading: "読み込み中...", 85 | reload: "再読み込み", 86 | verify: "確認", 87 | verified: "確認済み", 88 | verifying: "確認中...", 89 | waitAlert: "確認中...少々お待ちください。" 90 | }; 91 | globalThis.altchaI18n.set("ja", A); 92 | export { 93 | A as i18n 94 | }; 95 | -------------------------------------------------------------------------------- /dist_i18n/ja.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"Altcha.orgを訪問",enterCode:"コードを入力",enterCodeAria:"聞こえるコードを入力してください。スペースキーを押して音声を再生します。",error:"認証に失敗しました。後でもう一度試してください。",expired:"認証が期限切れです。再試行してください。",verificationRequired:"認証が必要です!",footer:'保護されています ALTCHA',getAudioChallenge:"音声チャレンジを取得",label:"ロボットじゃない",loading:"読み込み中...",reload:"再読み込み",verify:"確認",verified:"確認済み",verifying:"確認中...",waitAlert:"確認中...少々お待ちください。"};globalThis.altchaI18n.set("ja",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/ko.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/ko'; -------------------------------------------------------------------------------- /dist_i18n/ko.js: -------------------------------------------------------------------------------- 1 | const o = () => { 2 | }; 3 | function g(t, e) { 4 | return t != t ? e == e : t !== e || t !== null && typeof t == "object" || typeof t == "function"; 5 | } 6 | let c = !1; 7 | function d(t) { 8 | var e = c; 9 | try { 10 | return c = !0, t(); 11 | } finally { 12 | c = e; 13 | } 14 | } 15 | function T(t, e, r) { 16 | if (t == null) 17 | return e(void 0), o; 18 | const i = d( 19 | () => t.subscribe( 20 | e, 21 | // @ts-expect-error 22 | r 23 | ) 24 | ); 25 | return i.unsubscribe ? () => i.unsubscribe() : i; 26 | } 27 | const s = []; 28 | function p(t, e = o) { 29 | let r = null; 30 | const i = /* @__PURE__ */ new Set(); 31 | function a(l) { 32 | if (g(t, l) && (t = l, r)) { 33 | const u = !s.length; 34 | for (const n of i) 35 | n[1](), s.push(n, t); 36 | if (u) { 37 | for (let n = 0; n < s.length; n += 2) 38 | s[n][0](s[n + 1]); 39 | s.length = 0; 40 | } 41 | } 42 | } 43 | function f(l) { 44 | a(l( 45 | /** @type {T} */ 46 | t 47 | )); 48 | } 49 | function h(l, u = o) { 50 | const n = [l, u]; 51 | return i.add(n), i.size === 1 && (r = e(a, f) || o), l( 52 | /** @type {T} */ 53 | t 54 | ), () => { 55 | i.delete(n), i.size === 0 && r && (r(), r = null); 56 | }; 57 | } 58 | return { set: a, update: f, subscribe: h }; 59 | } 60 | function b(t) { 61 | let e; 62 | return T(t, (r) => e = r)(), e; 63 | } 64 | globalThis.altchaPlugins = globalThis.altchaPlugins || []; 65 | globalThis.altchaI18n = globalThis.altchaI18n || { 66 | get: (t) => b(globalThis.altchaI18n.store)[t], 67 | set: (t, e) => { 68 | Object.assign(b(globalThis.altchaI18n.store), { 69 | [t]: e 70 | }), globalThis.altchaI18n.store.set(b(globalThis.altchaI18n.store)); 71 | }, 72 | store: p({}) 73 | }; 74 | const A = { 75 | ariaLinkLabel: "Altcha.org 방문하기", 76 | enterCode: "코드 입력", 77 | enterCodeAria: "들리는 코드를 입력하세요. 스페이스 바를 눌러 오디오를 재생합니다.", 78 | error: "인증 실패. 나중에 다시 시도해주세요.", 79 | expired: "인증이 만료되었습니다. 다시 시도해주세요.", 80 | verificationRequired: "인증이 필요합니다!", 81 | footer: 'ALTCHA에서 보호됨 ALTCHA', 82 | getAudioChallenge: "오디오 챌린지 받기", 83 | label: "저는 로봇이 아닙니다", 84 | loading: "로딩 중...", 85 | reload: "새로 고침", 86 | verify: "확인", 87 | verified: "확인됨", 88 | verifying: "확인 중...", 89 | waitAlert: "확인 중... 잠시만 기다려주세요." 90 | }; 91 | globalThis.altchaI18n.set("ko", A); 92 | export { 93 | A as i18n 94 | }; 95 | -------------------------------------------------------------------------------- /dist_i18n/ko.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(l=typeof globalThis<"u"?globalThis:l||self,r(l["[name]"]={}))})(this,function(l){"use strict";const r=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),r;const o=p(()=>e.subscribe(t,i));return o.unsubscribe?()=>o.unsubscribe():o}const u=[];function y(e,t=r){let i=null;const o=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of o)n[1](),u.push(n,e);if(b){for(let n=0;n{o.delete(n),o.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"Altcha.org 방문하기",enterCode:"코드 입력",enterCodeAria:"들리는 코드를 입력하세요. 스페이스 바를 눌러 오디오를 재생합니다.",error:"인증 실패. 나중에 다시 시도해주세요.",expired:"인증이 만료되었습니다. 다시 시도해주세요.",verificationRequired:"인증이 필요합니다!",footer:'ALTCHA에서 보호됨 ALTCHA',getAudioChallenge:"오디오 챌린지 받기",label:"저는 로봇이 아닙니다",loading:"로딩 중...",reload:"새로 고침",verify:"확인",verified:"확인됨",verifying:"확인 중...",waitAlert:"확인 중... 잠시만 기다려주세요."};globalThis.altchaI18n.set("ko",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/lt.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/lt'; -------------------------------------------------------------------------------- /dist_i18n/lt.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(s=typeof globalThis<"u"?globalThis:s||self,r(s["[name]"]={}))})(this,function(s){"use strict";const r=()=>{};function h(t,e){return t!=t?e==e:t!==e||t!==null&&typeof t=="object"||typeof t=="function"}let u=!1;function k(t){var e=u;try{return u=!0,t()}finally{u=e}}function p(t,e,n){if(t==null)return e(void 0),r;const a=k(()=>t.subscribe(e,n));return a.unsubscribe?()=>a.unsubscribe():a}const l=[];function y(t,e=r){let n=null;const a=new Set;function f(o){if(h(t,o)&&(t=o,n)){const b=!l.length;for(const i of a)i[1](),l.push(i,t);if(b){for(let i=0;i{a.delete(i),a.size===0&&n&&(n(),n=null)}}return{set:f,update:d,subscribe:T}}function c(t){let e;return p(t,n=>e=n)(),e}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:t=>c(globalThis.altchaI18n.store)[t],set:(t,e)=>{Object.assign(c(globalThis.altchaI18n.store),{[t]:e}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const g={ariaLinkLabel:"Apsilankykite Altcha.org",enterCode:"Įveskite kodą",enterCodeAria:"Įveskite girdimą kodą. Paspauskite tarpo klavišą, kad grotumėte garso įrašą.",error:"Patvirtinimas nepavyko. Bandykite vėliau.",expired:"Patvirtinimo laikas baigėsi. Bandykite dar kartą.",verificationRequired:"Reikalingas patvirtinimas!",footer:'Apsaugota ALTCHA',getAudioChallenge:"Gauti garso užduotį",label:"Aš nesu robotas",loading:"Įkeliama...",reload:"Įkelti iš naujo",verify:"Patvirtinti",verified:"Patvirtinta",verifying:"Tikrinama...",waitAlert:"Tikrinama... prašome palaukti."};globalThis.altchaI18n.set("lt",g),s.i18n=g,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/lv.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/lv'; -------------------------------------------------------------------------------- /dist_i18n/lv.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(a,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(a=typeof globalThis<"u"?globalThis:a||self,s(a["[name]"]={}))})(this,function(a){"use strict";const s=()=>{};function h(e,i){return e!=e?i==i:e!==i||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var i=u;try{return u=!0,e()}finally{u=i}}function k(e,i,n){if(e==null)return i(void 0),s;const r=p(()=>e.subscribe(i,n));return r.unsubscribe?()=>r.unsubscribe():r}const l=[];function v(e,i=s){let n=null;const r=new Set;function f(o){if(h(e,o)&&(e=o,n)){const d=!l.length;for(const t of r)t[1](),l.push(t,e);if(d){for(let t=0;t{r.delete(t),r.size===0&&n&&(n(),n=null)}}return{set:f,update:g,subscribe:T}}function c(e){let i;return k(e,n=>i=n)(),i}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,i)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:i}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:v({})};const b={ariaLinkLabel:"Apmeklējiet Altcha.org",enterCode:"Ievadiet kodu",enterCodeAria:"Ievadiet dzirdamo kodu. Nospiediet atstarpes taustiņu, lai atskaņotu audio.",error:"Verifikācija neizdevās. Mēģiniet vēlāk vēlreiz.",expired:"Verifikācijas laiks ir beidzies. Mēģiniet vēlreiz.",verificationRequired:"Nepieciešama verifikācija!",footer:'Aizsargāts ar ALTCHA',getAudioChallenge:"Saņemt audio izaicinājumu",label:"Es neesmu robots",loading:"Notiek ielāde...",reload:"Pārlādēt",verify:"Verificēt",verified:"Verificēts",verifying:"Notiek verifikācija...",waitAlert:"Notiek verifikācija... lūdzu, uzgaidiet."};globalThis.altchaI18n.set("lv",b),a.i18n=b,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/mr.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/mr'; -------------------------------------------------------------------------------- /dist_i18n/mr.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"Altcha.org भेट द्या",enterCode:"कोड टाकाा",enterCodeAria:"तुम्ही ऐकत असलेला कोड टाका. ऑडिओ प्ले करण्यासाठी स्पेस दाबा.",error:"पुष्टीकरण अयशस्वी झाले. कृपया नंतर पुन्हा प्रयत्न करा.",expired:"पुष्टीकरण कालबाह्य झाले आहे. कृपया पुन्हा प्रयत्न करा.",verificationRequired:"पडताळणी आवश्यक आहे!",footer:'द्वारे संरक्षित ALTCHA',getAudioChallenge:"ऑडिओ चॅलेंज मिळवा",label:"मी रोबोट नाही",loading:"लोड होत आहे...",reload:"पुन्हा लोड करा",verify:"पुष्टीकरण करा",verified:"पुष्टीकरण झाले",verifying:"पुष्टीकरण करत आहे...",waitAlert:"पुष्टीकरण करत आहे... कृपया थोडा वेळ थांबा."};globalThis.altchaI18n.set("mr",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/mt.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/mt'; -------------------------------------------------------------------------------- /dist_i18n/mt.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(o,a){typeof exports=="object"&&typeof module<"u"?a(exports):typeof define=="function"&&define.amd?define(["exports"],a):(o=typeof globalThis<"u"?globalThis:o||self,a(o["[name]"]={}))})(this,function(o){"use strict";const a=()=>{};function h(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var t=u;try{return u=!0,e()}finally{u=t}}function k(e,t,n){if(e==null)return t(void 0),a;const r=p(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const s=[];function I(e,t=a){let n=null;const r=new Set;function c(l){if(h(e,l)&&(e=l,n)){const b=!s.length;for(const i of r)i[1](),s.push(i,e);if(b){for(let i=0;i{r.delete(i),r.size===0&&n&&(n(),n=null)}}return{set:c,update:g,subscribe:T}}function f(e){let t;return k(e,n=>t=n)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>f(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(f(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(f(globalThis.altchaI18n.store))},store:I({})};const d={ariaLinkLabel:"Żur Altcha.org",enterCode:"Idħol il-kodiċi",enterCodeAria:"Idħol il-kodiċi li tisma'. Agħfas Spazju biex tindaqq l-awdjo.",error:"Il-verifika falliet. Erġa’ pprova aktar tard.",expired:"Il-verifika skadiet. Erġa’ pprova.",verificationRequired:"Verifika meħtieġa!",footer:'Protett minn ALTCHA',getAudioChallenge:"Ikseb sfida bl-awdjo",label:"M’inix robot",loading:"Qed jitgħabba...",reload:"Ittella’ mill-ġdid",verify:"Ivverifika",verified:"Ivverifikat",verifying:"Verifika għaddejja...",waitAlert:"Verifika għaddejja... stenna ftit."};globalThis.altchaI18n.set("mt",d),o.i18n=d,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/nb.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/nb'; -------------------------------------------------------------------------------- /dist_i18n/nb.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(l=typeof globalThis<"u"?globalThis:l||self,s(l["[name]"]={}))})(this,function(l){"use strict";const s=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var t=u;try{return u=!0,e()}finally{u=t}}function k(e,t,i){if(e==null)return t(void 0),s;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const a=[];function y(e,t=s){let i=null;const r=new Set;function b(o){if(d(e,o)&&(e=o,i)){const g=!a.length;for(const n of r)n[1](),a.push(n,e);if(g){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:b,update:h,subscribe:T}}function f(e){let t;return k(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>f(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(f(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(f(globalThis.altchaI18n.store))},store:y({})};const c={ariaLinkLabel:"Besøk Altcha.org",enterCode:"Skriv inn kode",enterCodeAria:"Skriv inn koden du hører. Trykk på Space for å spille av lyden.",error:"Verifisering mislyktes. Prøv igjen senere.",expired:"Verifiseringen utløp. Prøv igjen.",footer:'Beskyttet av ALTCHA',getAudioChallenge:"Få en lydutfordring",label:"Jeg er ikke en robot",loading:"Laster...",reload:"Last på nytt",verify:"Verifiser",verificationRequired:"Verifisering kreves!",verified:"Verifisert",verifying:"Verifiserer...",waitAlert:"Verifiserer... vennligst vent."};globalThis.altchaI18n.set("nb",c),globalThis.altchaI18n.set("no",c),l.i18n=c,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/nl.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/nl'; -------------------------------------------------------------------------------- /dist_i18n/nl.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(s=typeof globalThis<"u"?globalThis:s||self,o(s["[name]"]={}))})(this,function(s){"use strict";const o=()=>{};function h(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var t=u;try{return u=!0,e()}finally{u=t}}function T(e,t,n){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const a=[];function k(e,t=o){let n=null;const r=new Set;function f(l){if(h(e,l)&&(e=l,n)){const b=!a.length;for(const i of r)i[1](),a.push(i,e);if(b){for(let i=0;i{r.delete(i),r.size===0&&n&&(n(),n=null)}}return{set:f,update:g,subscribe:v}}function c(e){let t;return T(e,n=>t=n)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:k({})};const d={ariaLinkLabel:"Bezoek Altcha.org",enterCode:"Voer code in",enterCodeAria:"Voer de code in die je hoort. Druk op Spatie om de audio af te spelen.",error:"Verificatie mislukt. Probeer het later opnieuw.",expired:"Verificatie verlopen. Probeer het opnieuw.",verificationRequired:"Verificatie vereist!",footer:'Beschermd door ALTCHA',getAudioChallenge:"Audio-uitdaging ontvangen",label:"Ik ben geen robot",loading:"Laden...",reload:"Herladen",verify:"Verifiëren",verified:"Geverifieerd",verifying:"Bezig met verifiëren...",waitAlert:"Bezig met verifiëren... even geduld a.u.b."};globalThis.altchaI18n.set("nl",d),s.i18n=d,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/pl.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/pl'; -------------------------------------------------------------------------------- /dist_i18n/pl.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(s=typeof globalThis<"u"?globalThis:s||self,r(s["[name]"]={}))})(this,function(s){"use strict";const r=()=>{};function g(e,i){return e!=e?i==i:e!==i||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var i=u;try{return u=!0,e()}finally{u=i}}function y(e,i,t){if(e==null)return i(void 0),r;const o=p(()=>e.subscribe(i,t));return o.unsubscribe?()=>o.unsubscribe():o}const l=[];function w(e,i=r){let t=null;const o=new Set;function f(a){if(g(e,a)&&(e=a,t)){const b=!l.length;for(const n of o)n[1](),l.push(n,e);if(b){for(let n=0;n{o.delete(n),o.size===0&&t&&(t(),t=null)}}return{set:f,update:h,subscribe:k}}function c(e){let i;return y(e,t=>i=t)(),i}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,i)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:i}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:w({})};const d={ariaLinkLabel:"Odwiedź Altcha.org",enterCode:"Wprowadź kod",enterCodeAria:"Wpisz kod, który słyszysz. Naciśnij Spację, aby odtworzyć dźwięk.",error:"Weryfikacja nie powiodła się. Spróbuj ponownie później.",expired:"Weryfikacja wygasła. Spróbuj ponownie.",verificationRequired:"Wymagana weryfikacja!",footer:'Chronione przez ALTCHA',getAudioChallenge:"Pobierz zadanie dźwiękowe",label:"Nie jestem robotem",loading:"Ładowanie...",reload:"Odśwież",verify:"Zweryfikuj",verified:"Zweryfikowano",verifying:"Weryfikacja...",waitAlert:"Trwa weryfikacja... proszę czekać."};globalThis.altchaI18n.set("pl",d),s.i18n=d,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/pt-br.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/pt-br'; -------------------------------------------------------------------------------- /dist_i18n/pt-br.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(s=typeof globalThis<"u"?globalThis:s||self,o(s["[name]"]={}))})(this,function(s){"use strict";const o=()=>{};function h(e,i){return e!=e?i==i:e!==i||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var i=u;try{return u=!0,e()}finally{u=i}}function T(e,i,r){if(e==null)return i(void 0),o;const n=p(()=>e.subscribe(i,r));return n.unsubscribe?()=>n.unsubscribe():n}const l=[];function v(e,i=o){let r=null;const n=new Set;function f(a){if(h(e,a)&&(e=a,r)){const d=!l.length;for(const t of n)t[1](),l.push(t,e);if(d){for(let t=0;t{n.delete(t),n.size===0&&r&&(r(),r=null)}}return{set:f,update:g,subscribe:y}}function c(e){let i;return T(e,r=>i=r)(),i}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,i)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:i}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:v({})};const b={ariaLinkLabel:"Visitar Altcha.org",enterCode:"Digite o código",enterCodeAria:"Digite o código que você ouve. Pressione Espaço para reproduzir o áudio.",error:"Falha na verificação. Por favor, tente novamente mais tarde.",expired:"Verificação expirada. Por favor, tente novamente.",verificationRequired:"Verificação necessária!",footer:'Protegido por ALTCHA',getAudioChallenge:"Obter desafio de áudio",label:"Eu não sou um robô",loading:"Carregando...",reload:"Recarregar",verify:"Verificar",verified:"Verificado",verifying:"Verificando...",waitAlert:"Verificando... por favor aguarde."};globalThis.altchaI18n.set("pt-br",b),s.i18n=b,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/pt-pt.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/pt-pt'; -------------------------------------------------------------------------------- /dist_i18n/pt-pt.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,n){typeof exports=="object"&&typeof module<"u"?n(exports):typeof define=="function"&&define.amd?define(["exports"],n):(s=typeof globalThis<"u"?globalThis:s||self,n(s["[name]"]={}))})(this,function(s){"use strict";const n=()=>{};function h(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var t=u;try{return u=!0,e()}finally{u=t}}function T(e,t,i){if(e==null)return t(void 0),n;const o=p(()=>e.subscribe(t,i));return o.unsubscribe?()=>o.unsubscribe():o}const l=[];function v(e,t=n){let i=null;const o=new Set;function f(a){if(h(e,a)&&(e=a,i)){const d=!l.length;for(const r of o)r[1](),l.push(r,e);if(d){for(let r=0;r{o.delete(r),o.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:v({})};const b={ariaLinkLabel:"Visitar Altcha.org",enterCode:"Introduza o código",enterCodeAria:"Introduza o código que ouve. Prima Espaço para reproduzir o áudio.",error:"A verificação falhou. Por favor, tente novamente mais tarde.",expired:"Verificação expirada. Por favor, tente novamente.",verificationRequired:"Verificação necessária!",footer:'Protegido por ALTCHA',getAudioChallenge:"Obter desafio de áudio",label:"Não sou um robô",loading:"A carregar...",reload:"Recarregar",verify:"Verificar",verified:"Verificado",verifying:"A verificar...",waitAlert:"A verificar... por favor aguarde."};globalThis.altchaI18n.set("pt-pt",b),s.i18n=b,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/ro.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/ro'; -------------------------------------------------------------------------------- /dist_i18n/ro.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(u,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(u=typeof globalThis<"u"?globalThis:u||self,o(u["[name]"]={}))})(this,function(u){"use strict";const o=()=>{};function g(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let s=!1;function p(e){var t=s;try{return s=!0,e()}finally{s=t}}function T(e,t,n){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const c=[];function y(e,t=o){let n=null;const r=new Set;function f(a){if(g(e,a)&&(e=a,n)){const b=!c.length;for(const i of r)i[1](),c.push(i,e);if(b){for(let i=0;i{r.delete(i),r.size===0&&n&&(n(),n=null)}}return{set:f,update:h,subscribe:I}}function l(e){let t;return T(e,n=>t=n)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>l(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(l(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(l(globalThis.altchaI18n.store))},store:y({})};const d={ariaLinkLabel:"Vizitează Altcha.org",enterCode:"Introduceți codul",enterCodeAria:"Introduceți codul pe care îl auziți. Apăsați Spațiu pentru a reda audio.",error:"Verificarea a eșuat. Încearcă din nou mai târziu.",expired:"Verificarea a expirat. Încearcă din nou.",verificationRequired:"Verificare necesară!",footer:'Protejat de ALTCHA',getAudioChallenge:"Obține o provocare audio",label:"Nu sunt un robot",loading:"Se încarcă...",reload:"Reîncarcă",verify:"Verifică",verified:"Verificat",verifying:"Se verifică...",waitAlert:"Se verifică... te rugăm să aștepți."};globalThis.altchaI18n.set("ro",d),u.i18n=d,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/ru.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/ru'; -------------------------------------------------------------------------------- /dist_i18n/ru.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"Перейти на Altcha.org",enterCode:"Введите код",enterCodeAria:"Введите код, который слышите. Нажмите пробел для воспроизведения аудио.",error:"Ошибка верификации. Попробуйте позже.",expired:"Срок действия верификации истек. Попробуйте снова.",verificationRequired:"Требуется проверка!",footer:'Защищено ALTCHA',getAudioChallenge:"Получить аудио задачу",label:"Я не робот",loading:"Загрузка...",reload:"Перезагрузить",verify:"Проверить",verified:"Проверено",verifying:"Идет проверка...",waitAlert:"Идет проверка... Пожалуйста, подождите."};globalThis.altchaI18n.set("ru",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/sk.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/sk'; -------------------------------------------------------------------------------- /dist_i18n/sk.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,a){typeof exports=="object"&&typeof module<"u"?a(exports):typeof define=="function"&&define.amd?define(["exports"],a):(s=typeof globalThis<"u"?globalThis:s||self,a(s["[name]"]={}))})(this,function(s){"use strict";const a=()=>{};function g(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function k(e){var t=u;try{return u=!0,e()}finally{u=t}}function p(e,t,n){if(e==null)return t(void 0),a;const r=k(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const l=[];function v(e,t=a){let n=null;const r=new Set;function f(o){if(g(e,o)&&(e=o,n)){const b=!l.length;for(const i of r)i[1](),l.push(i,e);if(b){for(let i=0;i{r.delete(i),r.size===0&&n&&(n(),n=null)}}return{set:f,update:d,subscribe:y}}function c(e){let t;return p(e,n=>t=n)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:v({})};const h={ariaLinkLabel:"Navštívte Altcha.org",enterCode:"Zadajte kód",enterCodeAria:"Zadajte kód, ktorý počujete. Stlačením medzerníka prehráte zvuk.",error:"Verifikácia zlyhala. Skúste to znova neskôr.",expired:"Verifikácia vypršala. Skúste to znova.",verificationRequired:"Vyžaduje sa overenie!",footer:'Chránené ALTCHA',getAudioChallenge:"Získať audio výzvu",label:"Nie som robot",loading:"Načítava sa...",reload:"Obnoviť",verify:"Verifikovať",verified:"Verifikované",verifying:"Prebieha verifikácia...",waitAlert:"Prebieha verifikácia... prosím čakajte."};globalThis.altchaI18n.set("sk",h),s.i18n=h,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/sl.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/sl'; -------------------------------------------------------------------------------- /dist_i18n/sl.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(a,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(a=typeof globalThis<"u"?globalThis:a||self,r(a["[name]"]={}))})(this,function(a){"use strict";const r=()=>{};function g(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var t=u;try{return u=!0,e()}finally{u=t}}function j(e,t,i){if(e==null)return t(void 0),r;const o=p(()=>e.subscribe(t,i));return o.unsubscribe?()=>o.unsubscribe():o}const l=[];function v(e,t=r){let i=null;const o=new Set;function f(s){if(g(e,s)&&(e=s,i)){const b=!l.length;for(const n of o)n[1](),l.push(n,e);if(b){for(let n=0;n{o.delete(n),o.size===0&&i&&(i(),i=null)}}return{set:f,update:d,subscribe:P}}function c(e){let t;return j(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:v({})};const h={ariaLinkLabel:"Obiščite Altcha.org",enterCode:"Vnesite kodo",enterCodeAria:"Vnesite kodo, ki jo slišite. Pritisnite preslednico za predvajanje zvoka.",error:"Preverjanje ni uspelo. Poskusite znova kasneje.",expired:"Preverjanje je poteklo. Poskusite znova.",verificationRequired:"Potrebna je preveritev!",footer:'Zaščiteno z ALTCHA',getAudioChallenge:"Pridobite zvočni izziv",label:"Nisem robot",loading:"Nalagam...",reload:"Ponovno naloži",verify:"Preveri",verified:"Preverjeno",verifying:"Preverjanje...",waitAlert:"Preverjanje... prosim počakajte."};globalThis.altchaI18n.set("sl",h),a.i18n=h,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/sr.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/sr'; -------------------------------------------------------------------------------- /dist_i18n/sr.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(r,a){typeof exports=="object"&&typeof module<"u"?a(exports):typeof define=="function"&&define.amd?define(["exports"],a):(r=typeof globalThis<"u"?globalThis:r||self,a(r["[name]"]={}))})(this,function(r){"use strict";const a=()=>{};function g(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function k(e){var t=u;try{return u=!0,e()}finally{u=t}}function p(e,t,n){if(e==null)return t(void 0),a;const o=k(()=>e.subscribe(t,n));return o.unsubscribe?()=>o.unsubscribe():o}const l=[];function j(e,t=a){let n=null;const o=new Set;function f(s){if(g(e,s)&&(e=s,n)){const b=!l.length;for(const i of o)i[1](),l.push(i,e);if(b){for(let i=0;i{o.delete(i),o.size===0&&n&&(n(),n=null)}}return{set:f,update:d,subscribe:v}}function c(e){let t;return p(e,n=>t=n)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:j({})};const h={ariaLinkLabel:"Posetite Altcha.org",enterCode:"Unesite kod",enterCodeAria:"Unesite kod koji čujete. Pritisnite Space da biste pustili zvuk.",error:"Verifikacija nije uspela. Pokušajte ponovo kasnije.",expired:"Verifikacija je istekla. Pokušajte ponovo.",footer:'Zaštićeno od strane ALTCHA',getAudioChallenge:"Dohvatite audio izazov",label:"Nisam robot",loading:"Učitavanje...",reload:"Ponovo učitaj",verify:"Verifikuj",verificationRequired:"Verifikacija je obavezna!",verified:"Verifikovano",verifying:"Verifikacija u toku...",waitAlert:"Verifikacija u toku... molimo vas da sačekate."};globalThis.altchaI18n.set("sr",h),r.i18n=h,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/sv.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/sv'; -------------------------------------------------------------------------------- /dist_i18n/sv.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(l=typeof globalThis<"u"?globalThis:l||self,s(l["[name]"]={}))})(this,function(l){"use strict";const s=()=>{};function h(e,n){return e!=e?n==n:e!==n||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var n=u;try{return u=!0,e()}finally{u=n}}function k(e,n,i){if(e==null)return n(void 0),s;const r=p(()=>e.subscribe(n,i));return r.unsubscribe?()=>r.unsubscribe():r}const o=[];function T(e,n=s){let i=null;const r=new Set;function f(a){if(h(e,a)&&(e=a,i)){const g=!o.length;for(const t of r)t[1](),o.push(t,e);if(g){for(let t=0;t{r.delete(t),r.size===0&&i&&(i(),i=null)}}return{set:f,update:b,subscribe:y}}function c(e){let n;return k(e,i=>n=i)(),n}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,n)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:n}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:T({})};const d={ariaLinkLabel:"Besök Altcha.org",enterCode:"Ange kod",enterCodeAria:"Ange koden du hör. Tryck på mellanslag för att spela upp ljudet.",error:"Verifiering misslyckades. Försök igen senare.",expired:"Verifieringen har gått ut. Försök igen.",verificationRequired:"Verifiering krävs!",footer:'Skyddad av ALTCHA',getAudioChallenge:"Få ljudutmaning",label:"Jag är inte en robot",loading:"Laddar...",reload:"Ladda om",verify:"Verifiera",verified:"Verifierad",verifying:"Verifierar...",waitAlert:"Verifierar... vänligen vänta."};globalThis.altchaI18n.set("sv",d),l.i18n=d,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/ta.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/ta'; -------------------------------------------------------------------------------- /dist_i18n/ta.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let u=!1;function p(e){var t=u;try{return u=!0,e()}finally{u=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const a=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!a.length;for(const n of r)n[1](),a.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"Altcha.org ஐ பார்வையிடவும்",enterCode:"குறியீட்டை உள்ளிடவும்",enterCodeAria:"நீங்கள் கேட்கும் குறியீட்டை உள்ளிடவும். ஆடியோவை இயக்க Space ஐ அழுத்தவும்.",error:"சரிபார்ப்பு தோல்வி. பிறகு மீண்டும் முயற்சிக்கவும்.",expired:"சரிபார்ப்பு காலாவதியானது. மீண்டும் முயற்சிக்கவும்.",verificationRequired:"சரிபார்ப்பு தேவை!",footer:'மூலமாக பாதுகாக்கப்பட்டவை ALTCHA',getAudioChallenge:"ஒலி சவாலை பெறவும்",label:"நான் ரோபோடான அல்ல",loading:"செயலாக்கம்...",reload:"மீண்டும் புதுப்பிக்கவும்",verify:"சரிபார்க்கவும்",verified:"சரிபார்க்கப்பட்டது",verifying:"சரிபார்க்கப்படுகிறது...",waitAlert:"சரிபார்க்கப்படுகிறது... தயவுசெய்து காத்திருக்கவும்."};globalThis.altchaI18n.set("ta",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/te.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/te'; -------------------------------------------------------------------------------- /dist_i18n/te.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"Altcha.org సందర్శించండి",enterCode:"కోడ్‌ని నమోదు చేయండి",enterCodeAria:"మీరు విన్న కోడ్‌ని నమోదు చేయండి. ఆడియో ప్లే చేయడానికి స్పేస్‌ను నొక్కండి.",error:"చెకింగ్ విఫలమైంది. దయచేసి మరల ప్రయత్నించండి.",expired:"చెకింగ్ కాలం ముగిసింది. దయచేసి మరల ప్రయత్నించండి.",verificationRequired:"ధృవీకరణ అవసరం!",footer:'ఈ సైట్ రక్షించబడింది ALTCHA',getAudioChallenge:"ఆడియో ఛాలెంజ్ పొందండి",label:"నేను రోబోట్ కాదు",loading:"లోడ్ అవుతోంది...",reload:"మళ్ళీ లోడ్ చేయండి",verify:"ధ్రువీకరించు",verified:"ధ్రువీకరించబడింది",verifying:"ధ్రువీకరణ జరుగుతుంది...",waitAlert:"ధ్రువీకరణ జరుగుతుంది... దయచేసి వేచి ఉండండి."};globalThis.altchaI18n.set("te",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/th.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/th'; -------------------------------------------------------------------------------- /dist_i18n/th.js: -------------------------------------------------------------------------------- 1 | const o = () => { 2 | }; 3 | function g(t, e) { 4 | return t != t ? e == e : t !== e || t !== null && typeof t == "object" || typeof t == "function"; 5 | } 6 | let c = !1; 7 | function d(t) { 8 | var e = c; 9 | try { 10 | return c = !0, t(); 11 | } finally { 12 | c = e; 13 | } 14 | } 15 | function p(t, e, r) { 16 | if (t == null) 17 | return e(void 0), o; 18 | const i = d( 19 | () => t.subscribe( 20 | e, 21 | // @ts-expect-error 22 | r 23 | ) 24 | ); 25 | return i.unsubscribe ? () => i.unsubscribe() : i; 26 | } 27 | const s = []; 28 | function T(t, e = o) { 29 | let r = null; 30 | const i = /* @__PURE__ */ new Set(); 31 | function a(l) { 32 | if (g(t, l) && (t = l, r)) { 33 | const u = !s.length; 34 | for (const n of i) 35 | n[1](), s.push(n, t); 36 | if (u) { 37 | for (let n = 0; n < s.length; n += 2) 38 | s[n][0](s[n + 1]); 39 | s.length = 0; 40 | } 41 | } 42 | } 43 | function f(l) { 44 | a(l( 45 | /** @type {T} */ 46 | t 47 | )); 48 | } 49 | function h(l, u = o) { 50 | const n = [l, u]; 51 | return i.add(n), i.size === 1 && (r = e(a, f) || o), l( 52 | /** @type {T} */ 53 | t 54 | ), () => { 55 | i.delete(n), i.size === 0 && r && (r(), r = null); 56 | }; 57 | } 58 | return { set: a, update: f, subscribe: h }; 59 | } 60 | function b(t) { 61 | let e; 62 | return p(t, (r) => e = r)(), e; 63 | } 64 | globalThis.altchaPlugins = globalThis.altchaPlugins || []; 65 | globalThis.altchaI18n = globalThis.altchaI18n || { 66 | get: (t) => b(globalThis.altchaI18n.store)[t], 67 | set: (t, e) => { 68 | Object.assign(b(globalThis.altchaI18n.store), { 69 | [t]: e 70 | }), globalThis.altchaI18n.store.set(b(globalThis.altchaI18n.store)); 71 | }, 72 | store: T({}) 73 | }; 74 | const A = { 75 | ariaLinkLabel: "เยี่ยมชม Altcha.org", 76 | enterCode: "ป้อนรหัส", 77 | enterCodeAria: "ป้อนรหัสที่คุณได้ยิน กด Space เพื่อเล่นเสียง", 78 | error: "การตรวจสอบล้มเหลว กรุณาลองอีกครั้งภายหลัง", 79 | expired: "การตรวจสอบหมดอายุ กรุณาลองใหม่", 80 | verificationRequired: "จำเป็นต้องตรวจสอบ!", 81 | footer: 'ป้องกันโดย ALTCHA', 82 | getAudioChallenge: "รับการท้าทายเสียง", 83 | label: "ฉันไม่ใช่บอท", 84 | loading: "กำลังโหลด...", 85 | reload: "โหลดใหม่", 86 | verify: "ตรวจสอบ", 87 | verified: "ตรวจสอบแล้ว", 88 | verifying: "กำลังตรวจสอบ...", 89 | waitAlert: "กำลังตรวจสอบ... กรุณารอ" 90 | }; 91 | globalThis.altchaI18n.set("th", A); 92 | export { 93 | A as i18n 94 | }; 95 | -------------------------------------------------------------------------------- /dist_i18n/th.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"เยี่ยมชม Altcha.org",enterCode:"ป้อนรหัส",enterCodeAria:"ป้อนรหัสที่คุณได้ยิน กด Space เพื่อเล่นเสียง",error:"การตรวจสอบล้มเหลว กรุณาลองอีกครั้งภายหลัง",expired:"การตรวจสอบหมดอายุ กรุณาลองใหม่",verificationRequired:"จำเป็นต้องตรวจสอบ!",footer:'ป้องกันโดย ALTCHA',getAudioChallenge:"รับการท้าทายเสียง",label:"ฉันไม่ใช่บอท",loading:"กำลังโหลด...",reload:"โหลดใหม่",verify:"ตรวจสอบ",verified:"ตรวจสอบแล้ว",verifying:"กำลังตรวจสอบ...",waitAlert:"กำลังตรวจสอบ... กรุณารอ"};globalThis.altchaI18n.set("th",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/tr.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/tr'; -------------------------------------------------------------------------------- /dist_i18n/tr.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function h(e,n){return e!=e?n==n:e!==n||e!==null&&typeof e=="object"||typeof e=="function"}let s=!1;function y(e){var n=s;try{return s=!0,e()}finally{s=n}}function p(e,n,i){if(e==null)return n(void 0),o;const r=y(()=>e.subscribe(n,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function k(e,n=o){let i=null;const r=new Set;function f(a){if(h(e,a)&&(e=a,i)){const d=!u.length;for(const t of r)t[1](),u.push(t,e);if(d){for(let t=0;t{r.delete(t),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:T}}function c(e){let n;return p(e,i=>n=i)(),n}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,n)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:n}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:k({})};const b={ariaLinkLabel:"Altcha.org'yu ziyaret edin",enterCode:"Kodu girin",enterCodeAria:"Duyduğunuz kodu girin. Ses dosyasını oynatmak için Boşluk tuşuna basın.",error:"Doğrulama başarısız oldu. Lütfen daha sonra tekrar deneyin.",expired:"Doğrulama süresi doldu. Lütfen tekrar deneyin.",verificationRequired:"Doğrulama gerekli!",footer:`ALTCHA tarafından korunuyor ALTCHA`,getAudioChallenge:"Sesli doğrulama al",label:"Ben robot değilim",loading:"Yükleniyor...",reload:"Yeniden yükle",verify:"Doğrula",verified:"Doğrulandı",verifying:"Doğrulama yapılıyor...",waitAlert:"Doğrulama yapılıyor... lütfen bekleyin."};globalThis.altchaI18n.set("tr",b),l.i18n=b,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/uk.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/uk'; -------------------------------------------------------------------------------- /dist_i18n/uk.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"Відвідати Altcha.org",enterCode:"Введіть код",enterCodeAria:"Введіть код, який ви чуєте. Натисніть пробіл, щоб відтворити аудіо.",error:"Перевірка не вдалася. Спробуйте пізніше.",expired:"Перевірка прострочена. Спробуйте знову.",verificationRequired:"Потрібна перевірка!",footer:'Захищено ALTCHA',getAudioChallenge:"Отримати аудіо-челлендж",label:"Я не робот",loading:"Завантаження...",reload:"Перезавантажити",verify:"Перевірити",verified:"Перевірено",verifying:"Перевіряється...",waitAlert:"Перевірка... будь ласка, зачекайте."};globalThis.altchaI18n.set("uk",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/ur.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/ur'; -------------------------------------------------------------------------------- /dist_i18n/ur.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"Altcha.org پر جائیں",enterCode:"کوڈ درج کریں",enterCodeAria:"جو کوڈ آپ سنتے ہیں وہ درج کریں۔ آڈیو چلانے کے لیے اسپیس دبائیں۔",error:"توثیق ناکام ہو گئی۔ براہ کرم بعد میں دوبارہ کوشش کریں۔",expired:"توثیق کی مدت ختم ہو گئی ہے۔ براہ کرم دوبارہ کوشش کریں۔",verificationRequired:"تصدیق ضروری ہے!",footer:'کے ذریعے محفوظ ALTCHA',getAudioChallenge:"آڈیو چیلنج حاصل کریں",label:"میں روبوٹ نہیں ہوں",loading:"لوڈ ہو رہا ہے...",reload:"دوبارہ لوڈ کریں",verify:"توثیق کریں",verified:"توثیق شدہ",verifying:"توثیق ہو رہی ہے...",waitAlert:"توثیق ہو رہی ہے... براہ کرم انتظار کریں۔"};globalThis.altchaI18n.set("ur",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/vi.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/vi'; -------------------------------------------------------------------------------- /dist_i18n/vi.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(s,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(s=typeof globalThis<"u"?globalThis:s||self,r(s["[name]"]={}))})(this,function(s){"use strict";const r=()=>{};function d(n,e){return n!=n?e==e:n!==e||n!==null&&typeof n=="object"||typeof n=="function"}let u=!1;function p(n){var e=u;try{return u=!0,n()}finally{u=e}}function T(n,e,i){if(n==null)return e(void 0),r;const l=p(()=>n.subscribe(e,i));return l.unsubscribe?()=>l.unsubscribe():l}const c=[];function m(n,e=r){let i=null;const l=new Set;function a(o){if(d(n,o)&&(n=o,i)){const f=!c.length;for(const t of l)t[1](),c.push(t,n);if(f){for(let t=0;t{l.delete(t),l.size===0&&i&&(i(),i=null)}}return{set:a,update:g,subscribe:y}}function h(n){let e;return T(n,i=>e=i)(),e}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:n=>h(globalThis.altchaI18n.store)[n],set:(n,e)=>{Object.assign(h(globalThis.altchaI18n.store),{[n]:e}),globalThis.altchaI18n.store.set(h(globalThis.altchaI18n.store))},store:m({})};const b={ariaLinkLabel:"Truy cập Altcha.org",enterCode:"Nhập mã",enterCodeAria:"Nhập mã bạn nghe được. Nhấn Phím cách để phát âm thanh.",error:"Xác minh thất bại. Vui lòng thử lại sau.",expired:"Xác minh đã hết hạn. Vui lòng thử lại.",verificationRequired:"Yêu cầu xác minh!",footer:'Được bảo vệ bởi ALTCHA',getAudioChallenge:"Nhận thử thách âm thanh",label:"Tôi không phải là robot",loading:"Đang tải...",reload:"Tải lại",verify:"Xác minh",verified:"Đã xác minh",verifying:"Đang xác minh...",waitAlert:"Đang xác minh... vui lòng chờ."};globalThis.altchaI18n.set("vi",b),s.i18n=b,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/zh-cn.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/zh-cn'; -------------------------------------------------------------------------------- /dist_i18n/zh-cn.js: -------------------------------------------------------------------------------- 1 | const o = () => { 2 | }; 3 | function g(t, e) { 4 | return t != t ? e == e : t !== e || t !== null && typeof t == "object" || typeof t == "function"; 5 | } 6 | let c = !1; 7 | function d(t) { 8 | var e = c; 9 | try { 10 | return c = !0, t(); 11 | } finally { 12 | c = e; 13 | } 14 | } 15 | function p(t, e, r) { 16 | if (t == null) 17 | return e(void 0), o; 18 | const i = d( 19 | () => t.subscribe( 20 | e, 21 | // @ts-expect-error 22 | r 23 | ) 24 | ); 25 | return i.unsubscribe ? () => i.unsubscribe() : i; 26 | } 27 | const s = []; 28 | function T(t, e = o) { 29 | let r = null; 30 | const i = /* @__PURE__ */ new Set(); 31 | function a(l) { 32 | if (g(t, l) && (t = l, r)) { 33 | const u = !s.length; 34 | for (const n of i) 35 | n[1](), s.push(n, t); 36 | if (u) { 37 | for (let n = 0; n < s.length; n += 2) 38 | s[n][0](s[n + 1]); 39 | s.length = 0; 40 | } 41 | } 42 | } 43 | function f(l) { 44 | a(l( 45 | /** @type {T} */ 46 | t 47 | )); 48 | } 49 | function h(l, u = o) { 50 | const n = [l, u]; 51 | return i.add(n), i.size === 1 && (r = e(a, f) || o), l( 52 | /** @type {T} */ 53 | t 54 | ), () => { 55 | i.delete(n), i.size === 0 && r && (r(), r = null); 56 | }; 57 | } 58 | return { set: a, update: f, subscribe: h }; 59 | } 60 | function b(t) { 61 | let e; 62 | return p(t, (r) => e = r)(), e; 63 | } 64 | globalThis.altchaPlugins = globalThis.altchaPlugins || []; 65 | globalThis.altchaI18n = globalThis.altchaI18n || { 66 | get: (t) => b(globalThis.altchaI18n.store)[t], 67 | set: (t, e) => { 68 | Object.assign(b(globalThis.altchaI18n.store), { 69 | [t]: e 70 | }), globalThis.altchaI18n.store.set(b(globalThis.altchaI18n.store)); 71 | }, 72 | store: T({}) 73 | }; 74 | const A = { 75 | ariaLinkLabel: "访问 Altcha.org", 76 | enterCode: "输入代码", 77 | enterCodeAria: "输入您听到的代码。按空格键播放音频。", 78 | error: "验证失败。稍后再试。", 79 | expired: "验证已过期。请重试。", 80 | verificationRequired: "需要验证!", 81 | footer: '由 ALTCHA 保护', 82 | getAudioChallenge: "获取音频挑战", 83 | label: "我不是机器人", 84 | loading: "加载中...", 85 | reload: "重新加载", 86 | verify: "验证", 87 | verified: "已验证", 88 | verifying: "正在验证...", 89 | waitAlert: "正在验证... 请稍等。" 90 | }; 91 | globalThis.altchaI18n.set("zh-cn", A); 92 | export { 93 | A as i18n 94 | }; 95 | -------------------------------------------------------------------------------- /dist_i18n/zh-cn.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"访问 Altcha.org",enterCode:"输入代码",enterCodeAria:"输入您听到的代码。按空格键播放音频。",error:"验证失败。稍后再试。",expired:"验证已过期。请重试。",verificationRequired:"需要验证!",footer:'由 ALTCHA 保护',getAudioChallenge:"获取音频挑战",label:"我不是机器人",loading:"加载中...",reload:"重新加载",verify:"验证",verified:"已验证",verifying:"正在验证...",waitAlert:"正在验证... 请稍等。"};globalThis.altchaI18n.set("zh-cn",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_i18n/zh-tw.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/i18n/zh-tw'; -------------------------------------------------------------------------------- /dist_i18n/zh-tw.js: -------------------------------------------------------------------------------- 1 | const o = () => { 2 | }; 3 | function g(t, e) { 4 | return t != t ? e == e : t !== e || t !== null && typeof t == "object" || typeof t == "function"; 5 | } 6 | let c = !1; 7 | function d(t) { 8 | var e = c; 9 | try { 10 | return c = !0, t(); 11 | } finally { 12 | c = e; 13 | } 14 | } 15 | function p(t, e, r) { 16 | if (t == null) 17 | return e(void 0), o; 18 | const i = d( 19 | () => t.subscribe( 20 | e, 21 | // @ts-expect-error 22 | r 23 | ) 24 | ); 25 | return i.unsubscribe ? () => i.unsubscribe() : i; 26 | } 27 | const s = []; 28 | function T(t, e = o) { 29 | let r = null; 30 | const i = /* @__PURE__ */ new Set(); 31 | function a(l) { 32 | if (g(t, l) && (t = l, r)) { 33 | const u = !s.length; 34 | for (const n of i) 35 | n[1](), s.push(n, t); 36 | if (u) { 37 | for (let n = 0; n < s.length; n += 2) 38 | s[n][0](s[n + 1]); 39 | s.length = 0; 40 | } 41 | } 42 | } 43 | function f(l) { 44 | a(l( 45 | /** @type {T} */ 46 | t 47 | )); 48 | } 49 | function h(l, u = o) { 50 | const n = [l, u]; 51 | return i.add(n), i.size === 1 && (r = e(a, f) || o), l( 52 | /** @type {T} */ 53 | t 54 | ), () => { 55 | i.delete(n), i.size === 0 && r && (r(), r = null); 56 | }; 57 | } 58 | return { set: a, update: f, subscribe: h }; 59 | } 60 | function b(t) { 61 | let e; 62 | return p(t, (r) => e = r)(), e; 63 | } 64 | globalThis.altchaPlugins = globalThis.altchaPlugins || []; 65 | globalThis.altchaI18n = globalThis.altchaI18n || { 66 | get: (t) => b(globalThis.altchaI18n.store)[t], 67 | set: (t, e) => { 68 | Object.assign(b(globalThis.altchaI18n.store), { 69 | [t]: e 70 | }), globalThis.altchaI18n.store.set(b(globalThis.altchaI18n.store)); 71 | }, 72 | store: T({}) 73 | }; 74 | const A = { 75 | ariaLinkLabel: "訪問 Altcha.org", 76 | enterCode: "輸入代碼", 77 | enterCodeAria: "輸入您聽到的代碼。按空格鍵播放音頻。", 78 | error: "驗證失敗。稍後再試。", 79 | expired: "驗證已過期。請重試。", 80 | verificationRequired: "需要驗證!", 81 | footer: '由 ALTCHA 保護', 82 | getAudioChallenge: "獲取音頻挑戰", 83 | label: "我不是機器人", 84 | loading: "載入中...", 85 | reload: "重新載入", 86 | verify: "驗證", 87 | verified: "已驗證", 88 | verifying: "正在驗證...", 89 | waitAlert: "正在驗證... 請稍等。" 90 | }; 91 | globalThis.altchaI18n.set("zh-tw", A); 92 | export { 93 | A as i18n 94 | }; 95 | -------------------------------------------------------------------------------- /dist_i18n/zh-tw.umd.cjs: -------------------------------------------------------------------------------- 1 | (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l["[name]"]={}))})(this,function(l){"use strict";const o=()=>{};function d(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}let a=!1;function p(e){var t=a;try{return a=!0,e()}finally{a=t}}function T(e,t,i){if(e==null)return t(void 0),o;const r=p(()=>e.subscribe(t,i));return r.unsubscribe?()=>r.unsubscribe():r}const u=[];function y(e,t=o){let i=null;const r=new Set;function f(s){if(d(e,s)&&(e=s,i)){const b=!u.length;for(const n of r)n[1](),u.push(n,e);if(b){for(let n=0;n{r.delete(n),r.size===0&&i&&(i(),i=null)}}return{set:f,update:g,subscribe:A}}function c(e){let t;return T(e,i=>t=i)(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>c(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(c(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(c(globalThis.altchaI18n.store))},store:y({})};const h={ariaLinkLabel:"訪問 Altcha.org",enterCode:"輸入代碼",enterCodeAria:"輸入您聽到的代碼。按空格鍵播放音頻。",error:"驗證失敗。稍後再試。",expired:"驗證已過期。請重試。",verificationRequired:"需要驗證!",footer:'由 ALTCHA 保護',getAudioChallenge:"獲取音頻挑戰",label:"我不是機器人",loading:"載入中...",reload:"重新載入",verify:"驗證",verified:"已驗證",verifying:"正在驗證...",waitAlert:"正在驗證... 請稍等。"};globalThis.altchaI18n.set("zh-tw",h),l.i18n=h,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}); 2 | -------------------------------------------------------------------------------- /dist_plugins/analytics.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/analytics'; -------------------------------------------------------------------------------- /dist_plugins/obfuscation.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/obfuscation'; -------------------------------------------------------------------------------- /dist_plugins/upload.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'altcha/upload'; -------------------------------------------------------------------------------- /e2e/index.external.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 |
16 | 19 |
20 | 21 |
22 | 23 | -------------------------------------------------------------------------------- /example.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 14 | 15 | 16 | 17 | 24 | 25 | 26 | 27 |
28 | 29 |
30 | 31 | 37 | 38 |
39 | 40 | 41 |
42 |
43 | 44 |
45 | 46 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ALTCHA 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /playwright.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig, devices } from '@playwright/test'; 2 | 3 | /** 4 | * Read environment variables from file. 5 | * https://github.com/motdotla/dotenv 6 | */ 7 | // require('dotenv').config(); 8 | 9 | /** 10 | * See https://playwright.dev/docs/test-configuration. 11 | */ 12 | export default defineConfig({ 13 | testDir: './e2e', 14 | /* Run tests in files in parallel */ 15 | fullyParallel: true, 16 | /* Fail the build on CI if you accidentally left test.only in the source code. */ 17 | forbidOnly: !!process.env.CI, 18 | /* Retry on CI only */ 19 | retries: process.env.CI ? 2 : 0, 20 | /* Opt out of parallel tests on CI. */ 21 | workers: process.env.CI ? 1 : undefined, 22 | /* Reporter to use. See https://playwright.dev/docs/test-reporters */ 23 | reporter: 'line', 24 | /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ 25 | use: { 26 | /* Base URL to use in actions like `await page.goto('/')`. */ 27 | baseURL: 'http://127.0.0.1:3000', 28 | 29 | /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ 30 | trace: 'on-first-retry', 31 | }, 32 | 33 | /* Configure projects for major browsers */ 34 | projects: [ 35 | { 36 | name: 'chromium', 37 | use: { ...devices['Desktop Chrome'] }, 38 | }, 39 | 40 | { 41 | name: 'firefox', 42 | use: { ...devices['Desktop Firefox'] }, 43 | }, 44 | 45 | { 46 | name: 'webkit', 47 | use: { ...devices['Desktop Safari'] }, 48 | }, 49 | 50 | /* Test against mobile viewports. */ 51 | // { 52 | // name: 'Mobile Chrome', 53 | // use: { ...devices['Pixel 5'] }, 54 | // }, 55 | // { 56 | // name: 'Mobile Safari', 57 | // use: { ...devices['iPhone 12'] }, 58 | // }, 59 | 60 | /* Test against branded browsers. */ 61 | // { 62 | // name: 'Microsoft Edge', 63 | // use: { ...devices['Desktop Edge'], channel: 'msedge' }, 64 | // }, 65 | // { 66 | // name: 'Google Chrome', 67 | // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, 68 | // }, 69 | ], 70 | 71 | /* Run your local dev server before starting the tests */ 72 | webServer: { 73 | command: 'npx serve . -l 3000', 74 | url: 'http://127.0.0.1:3000/', 75 | reuseExistingServer: !process.env.CI, 76 | }, 77 | }); 78 | -------------------------------------------------------------------------------- /scripts/obfuscate.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Run this script with Bun: 3 | * 4 | * bun run scripts/obfuscate.ts "mailto:..." 5 | * 6 | * or with Node: 7 | * 8 | * npx tsx scripts/obfuscate.ts "mailto:..." 9 | */ 10 | 11 | const MAX_NUMBER = parseInt(process.env.MAX_NUMBER || '10000', 10); 12 | const NUMBER = process.env.NUMBER ? parseInt(process.env.NUMBER || '0', 10) : undefined; 13 | const KEY = process.env.KEY || ''; 14 | 15 | function randomInt(max: number) { 16 | const ab = new Uint32Array(1); 17 | crypto.getRandomValues(ab); 18 | const randomNumber = ab[0] / (0xffffffff + 1); 19 | return Math.floor(randomNumber * max + 1); 20 | } 21 | 22 | async function uInt8ArrayToBase64(ua: Uint8Array) { 23 | return Buffer.from(ua).toString('base64'); 24 | } 25 | 26 | function numberToUint8Array(num: number, len: number = 12) { 27 | const ua = new Uint8Array(len); 28 | for (let i = 0; i < len; i++) { 29 | ua[i] = num % 256; 30 | num = Math.floor(num / 256); 31 | } 32 | return ua; 33 | } 34 | 35 | async function obfuscateData( 36 | raw: string, 37 | key: string = '', 38 | number: number = NUMBER || randomInt(MAX_NUMBER), 39 | ) { 40 | const encoder = new TextEncoder(); 41 | const encodedData = encoder.encode(raw); 42 | const algorithm = { name: 'AES-GCM', iv: numberToUint8Array(number) }; 43 | const keyHash = await crypto.subtle.digest( 44 | 'SHA-256', 45 | encoder.encode(key) 46 | ); 47 | const keyData = await crypto.subtle.importKey( 48 | 'raw', 49 | keyHash, 50 | algorithm, 51 | false, 52 | ['encrypt'] 53 | ); 54 | const encryptedData = await crypto.subtle.encrypt( 55 | algorithm, 56 | keyData, 57 | encodedData 58 | ); 59 | return uInt8ArrayToBase64(new Uint8Array(encryptedData)); 60 | } 61 | 62 | console.log(await obfuscateData(process.argv[process.argv.length - 1], KEY)); 63 | 64 | export {}; -------------------------------------------------------------------------------- /server/server-deno.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * An example server implementation for ALTCHA using Deno. 3 | * 4 | * Run: deno run --allow-net server-deno.ts 5 | */ 6 | 7 | import { Hono } from 'https://deno.land/x/hono/mod.ts'; 8 | import { cors } from 'https://deno.land/x/hono/middleware/cors/index.ts'; 9 | import { 10 | createChallenge, 11 | verifySolution, 12 | } from 'https://deno.land/x/altcha@0.3.0/mod.ts'; 13 | 14 | // Configure your secret HMAC key 15 | const HMAC_KEY = 'secret.hmac.key'; 16 | 17 | const app = new Hono(); 18 | 19 | function url(ref: string, hash: string = '') { 20 | const url = new URL(ref); 21 | url.hash = hash; 22 | return url.toString(); 23 | } 24 | 25 | app.use('/*', cors()); 26 | 27 | // Configure this endpoint as `challengeurl` 28 | app.get('/altcha', async (c) => 29 | c.json( 30 | await createChallenge({ 31 | expires: new Date(Date.now() + 3600000), 32 | hmacKey: HMAC_KEY, 33 | maxNumber: 1000, 34 | } 35 | ) 36 | )); 37 | 38 | // Form submission endpoint 39 | app.post('/submit', async (c) => { 40 | const ref = c.req.header('referer'); 41 | const form = await c.req.formData(); 42 | 43 | // The verification payload is received as `altcha` field 44 | const payload = form.get('altcha'); 45 | 46 | console.log('Body:', Object.fromEntries(form)); 47 | 48 | if (!payload) { 49 | return c.text('Invalid payload', 400); 50 | } 51 | 52 | if (await verifySolution(payload as string, HMAC_KEY)) { 53 | console.log('VERIFIED.'); 54 | if (ref) { 55 | return c.redirect(url(ref, '#success')); 56 | } 57 | return c.text('Submitted!'); 58 | } 59 | 60 | console.log('INVALID ALTCHA.'); 61 | if (ref) { 62 | return c.redirect(url(ref, '#failure')); 63 | } 64 | return c.text('ALTCHA check failed.', 400); 65 | }); 66 | 67 | Deno.serve(app.fetch); 68 | -------------------------------------------------------------------------------- /src/entry-external.ts: -------------------------------------------------------------------------------- 1 | import './altcha.css'; 2 | import './worker?worker'; 3 | import Altcha from './Altcha.svelte'; 4 | 5 | globalThis.altchaCreateWorker = (url?: string) => new Worker(new URL(url || './worker.js', import.meta.url)); 6 | 7 | export { Altcha }; 8 | -------------------------------------------------------------------------------- /src/entry-i18n.ts: -------------------------------------------------------------------------------- 1 | import './i18n/all'; 2 | import InlineWorker from './worker?worker&inline'; 3 | import Altcha from './Altcha.svelte'; 4 | import globalCss from './altcha.css?raw'; 5 | 6 | function injectGlobalCss(css: string, id: string = '__altcha-css') { 7 | if (!document.getElementById(id)) { 8 | const style = document.createElement('style'); 9 | style.id = id; 10 | style.textContent = css; 11 | document.head.appendChild(style); 12 | } 13 | } 14 | 15 | globalThis.altchaCreateWorker = (url?: string) => url ? new Worker(new URL(url)) : new InlineWorker(); 16 | 17 | injectGlobalCss(globalCss); 18 | 19 | export { Altcha }; 20 | -------------------------------------------------------------------------------- /src/entry.ts: -------------------------------------------------------------------------------- 1 | import InlineWorker from './worker?worker&inline'; 2 | import Altcha from './Altcha.svelte'; 3 | import globalCss from './altcha.css?raw'; 4 | 5 | function injectGlobalCss(css: string, id: string = '__altcha-css') { 6 | if (!document.getElementById(id)) { 7 | const style = document.createElement('style'); 8 | style.id = id; 9 | style.textContent = css; 10 | document.head.appendChild(style); 11 | } 12 | } 13 | 14 | globalThis.altchaCreateWorker = (url?: string) => url ? new Worker(new URL(url)) : new InlineWorker(); 15 | 16 | injectGlobalCss(globalCss); 17 | 18 | injectGlobalCss(globalCss); 19 | 20 | export { Altcha }; 21 | -------------------------------------------------------------------------------- /src/globals.ts: -------------------------------------------------------------------------------- 1 | import { get, writable } from 'svelte/store'; 2 | 3 | globalThis.altchaPlugins = globalThis.altchaPlugins || []; 4 | globalThis.altchaI18n = globalThis.altchaI18n || { 5 | get: (language: string) => { 6 | return get(globalThis.altchaI18n.store)[language]; 7 | }, 8 | set: (language: string, translation: Record) => { 9 | Object.assign(get(globalThis.altchaI18n.store), { 10 | [language]: translation, 11 | }); 12 | globalThis.altchaI18n.store.set(get(globalThis.altchaI18n.store)); 13 | }, 14 | store: writable({}), 15 | }; -------------------------------------------------------------------------------- /src/i18n/af.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Besoek Altcha.org', 5 | enterCode: 'Voer kode in', 6 | enterCodeAria: 'Voer die kode in wat jy hoor. Druk Spasie om die klank af te speel.', 7 | error: 'Verifikasie het misluk. Probeer later weer.', 8 | expired: 'Verifikasie het verval. Probeer weer.', 9 | footer: 10 | 'Beskerm deur ALTCHA', 11 | getAudioChallenge: 'Kry \'n klankuitdaging', 12 | label: "Ek is nie 'n robot nie", 13 | loading: 'Laai...', 14 | reload: 'Laai weer', 15 | verify: 'Verifieer', 16 | verificationRequired: 'Verifikasie is vereis!', 17 | verified: 'Geverifieer', 18 | verifying: 'Verifieer...', 19 | waitAlert: 'Verifieer... wag asseblief.', 20 | }; 21 | 22 | globalThis.altchaI18n.set('af', i18n); 23 | -------------------------------------------------------------------------------- /src/i18n/all.ts: -------------------------------------------------------------------------------- 1 | // import './en.ts'; // English is imported by default 2 | 3 | // European Languages 4 | import './af.ts'; // Afrikaans 5 | import './ar.ts'; // Arabic 6 | import './bg.ts'; // Bulgarian 7 | import './bs.ts'; // Bosnian 8 | import './ca.ts'; // Catalan 9 | import './cs.ts'; // Czech 10 | import './da.ts'; // Danish 11 | import './de.ts'; // German 12 | import './el.ts'; // Greek 13 | import './es-es.ts'; // European Spanish 14 | import './es-419.ts'; // Latin American Spanish 15 | import './et.ts'; // Estonian 16 | import './eu.ts'; // Basque 17 | import './fi.ts'; // Finnish 18 | import './fr-ca.ts'; // Canadian French 19 | import './fr-fr.ts'; // European French 20 | import './ga.ts'; // Irish 21 | import './hr.ts'; // Croatian 22 | import './hu.ts'; // Hungarian 23 | import './is.ts'; // Icelandic 24 | import './it.ts'; // Italian 25 | import './lt.ts'; // Lithuanian 26 | import './lv.ts'; // Latvian 27 | import './mt.ts'; // Maltese 28 | import './nb.ts'; // Norwegian Bokmål 29 | import './nl.ts'; // Dutch 30 | import './pl.ts'; // Polish 31 | import './pt-pt.ts'; // European Portuguese 32 | import './pt-br.ts'; // Brazilian Portuguese 33 | import './ro.ts'; // Romanian 34 | import './ru.ts'; // Russian 35 | import './sk.ts'; // Slovak 36 | import './sl.ts'; // Slovenian 37 | import './sr.ts'; // Serbian 38 | import './sv.ts'; // Swedish 39 | import './tr.ts'; // Turkish 40 | import './uk.ts'; // Ukrainian 41 | 42 | // Asian Languages 43 | import './bn.ts'; // Bengali 44 | import './he.ts'; // Hebrew 45 | import './hi.ts'; // Hindi 46 | import './id.ts'; // Indonesian 47 | import './ja.ts'; // Japanese 48 | import './ko.ts'; // Korean 49 | import './mr.ts'; // Marathi 50 | import './ta.ts'; // Tamil 51 | import './te.ts'; // Telugu 52 | import './th.ts'; // Thai 53 | import './ur.ts'; // Urdu 54 | import './vi.ts'; // Vietnamese 55 | import './zh-cn.ts'; // Simplified Chinese 56 | import './zh-tw.ts'; // Traditional Chinese (Taiwan) 57 | -------------------------------------------------------------------------------- /src/i18n/americas.ts: -------------------------------------------------------------------------------- 1 | // import './en.ts'; // English is imported by default 2 | 3 | // North America 4 | import './fr-ca.ts'; 5 | import './es-419.ts'; 6 | 7 | // South America 8 | import './pt-br.ts'; 9 | import './es-419.ts'; 10 | -------------------------------------------------------------------------------- /src/i18n/ar.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'زور Altcha.org', 5 | enterCode: 'أدخل الرمز', 6 | enterCodeAria: 'أدخل الرمز الذي تسمعه. اضغط على المسافة لتشغيل الصوت.', 7 | error: 'فشل التحقق. حاول مرة أخرى لاحقاً.', 8 | expired: 'انتهت صلاحية التحقق. حاول مرة أخرى.', 9 | verificationRequired: 'مطلوب التحقق!', 10 | footer: 11 | 'محمي بواسطة ALTCHA', 12 | getAudioChallenge: 'احصل على تحدي صوتي', 13 | label: 'أنا لست روبوتاً', 14 | loading: 'جارٍ التحميل...', 15 | reload: 'إعادة تحميل', 16 | verify: 'تحقق', 17 | verified: 'تم التحقق', 18 | verifying: 'جارٍ التحقق...', 19 | waitAlert: 'جارٍ التحقق... يرجى الانتظار.', 20 | }; 21 | 22 | globalThis.altchaI18n.set('ar', i18n); 23 | -------------------------------------------------------------------------------- /src/i18n/asia.ts: -------------------------------------------------------------------------------- 1 | // East Asia 2 | import './zh-cn.ts'; 3 | import './zh-tw.ts'; 4 | import './ja.ts'; 5 | import './ko.ts'; 6 | 7 | // South Asia 8 | import './hi.ts'; 9 | import './bn.ts'; 10 | import './mr.ts'; 11 | import './te.ts'; 12 | import './ta.ts'; 13 | import './ur.ts'; 14 | 15 | // Southeast Asia 16 | import './id.ts'; 17 | import './th.ts'; 18 | import './vi.ts'; 19 | 20 | // Middle East 21 | import './ar.ts'; 22 | import './he.ts'; 23 | import './tr.ts'; 24 | -------------------------------------------------------------------------------- /src/i18n/bg.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Посетете Altcha.org', 5 | enterCode: 'Въведете код', 6 | enterCodeAria: 7 | 'Въведете кода, който чувате. Натиснете Space за възпроизвеждане на аудио.', 8 | error: 'Проверката неуспешна. Моля, опитайте по-късно.', 9 | expired: 'Времето за проверка изтече. Моля, опитайте отново.', 10 | verificationRequired: 'Изисква се проверка!', 11 | footer: 12 | 'Защитено от ALTCHA', 13 | getAudioChallenge: 'Аудио проверка', 14 | label: 'Аз не съм робот', 15 | loading: 'Зареждане...', 16 | reload: 'Презареди', 17 | verify: 'Провери', 18 | verified: 'Проверено', 19 | verifying: 'Проверява се...', 20 | waitAlert: 'Проверката е в процес... моля изчакайте.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('bg', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/bn.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Altcha.org পরিদর্শন করুন', 5 | enterCode: 'কোড লিখুন', 6 | enterCodeAria: 7 | 'আপনি যে কোড শুনতে পান তা লিখুন। অডিও প্লে করতে স্পেস বাটন টিপুন।', 8 | error: 'যাচাইকরণ ব্যর্থ হয়েছে। পরে আবার চেষ্টা করুন।', 9 | expired: 'যাচাইকরণ সময়সীমা শেষ হয়েছে। আবার চেষ্টা করুন।', 10 | verificationRequired: 'যাচাই প্রয়োজন!', 11 | footer: 12 | 'দ্বারা সুরক্ষিত ALTCHA', 13 | getAudioChallenge: 'অডিও চ্যালেঞ্জ নিন', 14 | label: 'আমি রোবট নই', 15 | loading: 'লোড হচ্ছে...', 16 | reload: 'পুনরায় লোড করুন', 17 | verify: 'যাচাই করুন', 18 | verified: 'যাচাই করা হয়েছে', 19 | verifying: 'যাচাই করা হচ্ছে...', 20 | waitAlert: 'যাচাই করা হচ্ছে... দয়া করে অপেক্ষা করুন।', 21 | }; 22 | 23 | globalThis.altchaI18n.set('bn', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/bs.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Posjetite Altcha.org', 5 | enterCode: 'Unesite kod', 6 | enterCodeAria: 'Unesite kod koji čujete. Pritisnite Space da biste pustili zvuk.', 7 | error: 'Verifikacija nije uspjela. Pokušajte ponovo kasnije.', 8 | expired: 'Verifikacija je istekla. Pokušajte ponovo.', 9 | footer: 10 | 'Zaštićeno od strane ALTCHA', 11 | getAudioChallenge: 'Dohvatite audio izazov', 12 | label: "Nisam robot", 13 | loading: 'Učitavanje...', 14 | reload: 'Ponovno učitaj', 15 | verify: 'Verifikuj', 16 | verificationRequired: 'Verifikacija je obavezna!', 17 | verified: 'Verifikovano', 18 | verifying: 'Verifikacija u toku...', 19 | waitAlert: 'Verifikacija u toku... molimo vas da sačekate.', 20 | }; 21 | 22 | globalThis.altchaI18n.set('bs', i18n); 23 | -------------------------------------------------------------------------------- /src/i18n/ca.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Visita Altcha.org', 5 | enterCode: 'Introdueix el codi', 6 | enterCodeAria: 'Introdueix el codi que escoltes. Prem Espai per reproduir l’àudio.', 7 | error: 'Verificació fallida. Torna-ho a provar més tard.', 8 | expired: 'Verificació expirada. Torna-ho a provar.', 9 | footer: 10 | 'Protegit per ALTCHA', 11 | getAudioChallenge: 'Obtenir un desafiament d’àudio', 12 | label: "No sóc un robot", 13 | loading: 'Carregant...', 14 | reload: 'Torna a carregar', 15 | verify: 'Verificar', 16 | verificationRequired: 'Es requereix verificació!', 17 | verified: 'Verificat', 18 | verifying: 'Verificant...', 19 | waitAlert: 'Verificant... si us plau, espera.', 20 | }; 21 | 22 | globalThis.altchaI18n.set('ca', i18n); 23 | -------------------------------------------------------------------------------- /src/i18n/cs.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Navštivte Altcha.org', 5 | enterCode: 'Zadejte kód', 6 | enterCodeAria: 7 | 'Zadejte kód, který slyšíte. Stisknutím mezerníku přehrajete zvuk.', 8 | error: 'Ověření selhalo. Zkuste to prosím později.', 9 | expired: 'Ověření vypršelo. Zkuste to prosím znovu.', 10 | verificationRequired: 'Vyžaduje se ověření!', 11 | footer: 12 | 'Chráněno pomocí ALTCHA', 13 | getAudioChallenge: 'Získat audio výzvu', 14 | label: 'Nejsem robot', 15 | loading: 'Načítání...', 16 | reload: 'Znovu načíst', 17 | verify: 'Ověřit', 18 | verified: 'Ověřeno', 19 | verifying: 'Ověřování...', 20 | waitAlert: 'Probíhá ověření... prosím počkejte.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('cs', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/da.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Besøg Altcha.org', 5 | enterCode: 'Indtast kode', 6 | enterCodeAria: 7 | 'Indtast den kode, du hører. Tryk på mellemrumstasten for at afspille lyd.', 8 | error: 'Verificering mislykkedes. Prøv venligst igen senere.', 9 | expired: 'Verificering udløbet. Prøv venligst igen.', 10 | verificationRequired: 'Verificering kræves!', 11 | footer: 12 | 'Beskyttet af ALTCHA', 13 | getAudioChallenge: 'Hent lydudfordring', 14 | label: 'Jeg er ikke en robot', 15 | loading: 'Indlæser...', 16 | reload: 'Genindlæs', 17 | verify: 'Verificer', 18 | verified: 'Verificeret', 19 | verifying: 'Verificerer...', 20 | waitAlert: 'Verificerer... vent venligst.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('da', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/de.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Besuche Altcha.org', 5 | enterCode: 'Code eingeben', 6 | enterCodeAria: 7 | 'Geben Sie den Code ein, den Sie hören. Drücken Sie die Leertaste, um die Audio abzuspielen.', 8 | error: 'Überprüfung fehlgeschlagen. Bitte versuchen Sie es später erneut.', 9 | expired: 'Überprüfung abgelaufen. Bitte versuchen Sie es erneut.', 10 | verificationRequired: 'Überprüfung erforderlich!', 11 | footer: 12 | 'Geschützt durch ALTCHA', 13 | getAudioChallenge: 'Audio-Herausforderung anfordern', 14 | label: 'Ich bin kein Roboter', 15 | loading: 'Lade...', 16 | reload: 'Neu laden', 17 | verify: 'Überprüfen', 18 | verified: 'Überprüft', 19 | verifying: 'Wird überprüft...', 20 | waitAlert: 'Überprüfung läuft... bitte warten.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('de', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/el.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Επισκεφθείτε το Altcha.org', 5 | enterCode: 'Εισαγάγετε κωδικό', 6 | enterCodeAria: 7 | 'Εισαγάγετε τον κωδικό που ακούτε. Πατήστε Space για να παίξετε τον ήχο.', 8 | error: 'Η επαλήθευση απέτυχε. Δοκιμάστε ξανά αργότερα.', 9 | expired: 'Η επαλήθευση έληξε. Δοκιμάστε ξανά.', 10 | verificationRequired: 'Απαιτείται έλεγχος!', 11 | footer: 12 | 'Προστατεύεται από το ALTCHA', 13 | getAudioChallenge: 'Λήψη ηχητικής δοκιμασίας', 14 | label: 'Δεν είμαι ρομπότ', 15 | loading: 'Φόρτωση...', 16 | reload: 'Επαναφόρτωση', 17 | verify: 'Επαλήθευση', 18 | verified: 'Επαληθεύτηκε', 19 | verifying: 'Γίνεται επαλήθευση...', 20 | waitAlert: 'Γίνεται επαλήθευση... παρακαλώ περιμένετε.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('el', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/en.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Visit Altcha.org', 5 | enterCode: 'Enter code', 6 | enterCodeAria: 'Enter code you hear. Press Space to play audio.', 7 | error: 'Verification failed. Try again later.', 8 | expired: 'Verification expired. Try again.', 9 | footer: 10 | 'Protected by ALTCHA', 11 | getAudioChallenge: 'Get an audio challenge', 12 | label: "I'm not a robot", 13 | loading: 'Loading...', 14 | reload: 'Reload', 15 | verify: 'Verify', 16 | verificationRequired: 'Verification required!', 17 | verified: 'Verified', 18 | verifying: 'Verifying...', 19 | waitAlert: 'Verifying... please wait.', 20 | }; 21 | 22 | globalThis.altchaI18n.set('en', i18n); 23 | -------------------------------------------------------------------------------- /src/i18n/es-419.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Visitar Altcha.org', 5 | enterCode: 'Ingresa el código', 6 | enterCodeAria: 7 | 'Ingresa el código que escuchas. Presiona Espacio para reproducir el audio.', 8 | error: 'Falló la verificación. Por favor vuelve a intentarlo más tarde.', 9 | expired: 'La verificación expiró. Por favor inténtalo de nuevo.', 10 | verificationRequired: '¡Verificación requerida!', 11 | footer: 12 | 'Protegido por ALTCHA', 13 | getAudioChallenge: 'Obtener un reto de audio', 14 | label: 'No soy un robot', 15 | loading: 'Cargando...', 16 | reload: 'Volver a cargar', 17 | verify: 'Verificar', 18 | verified: 'Verificado', 19 | verifying: 'Verificando...', 20 | waitAlert: 'Verificando... por favor espera.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('es-419', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/es-es.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Visitar Altcha.org', 5 | enterCode: 'Introduce el código', 6 | enterCodeAria: 7 | 'Introduce el código que escuchas. Pulsa Espacio para reproducir el audio.', 8 | error: 'Falló la verificación. Por favor intente nuevamente más tarde.', 9 | expired: 'Verificación expirada. Por favor intente nuevamente.', 10 | verificationRequired: '¡Verificación requerida!', 11 | footer: 12 | 'Protegido por ALTCHA', 13 | getAudioChallenge: 'Obtener un desafío de audio', 14 | label: 'No soy un robot', 15 | loading: 'Cargando...', 16 | reload: 'Recargar', 17 | verify: 'Verificar', 18 | verified: 'Verificado', 19 | verifying: 'Verificando...', 20 | waitAlert: 'Verificando... por favor espere.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('es-es', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/et.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Külasta Altcha.org', 5 | enterCode: 'Sisesta kood', 6 | enterCodeAria: 'Sisestage kuuldu kood. Vajutage tühikut, et esitada heli.', 7 | error: 'Kinnitamine ebaõnnestus. Proovi hiljem uuesti.', 8 | expired: 'Kinnitamine aegus. Proovi uuesti.', 9 | verificationRequired: 'Kontroll on vajalik!', 10 | footer: 11 | 'Kaitstud ALTCHA poolt', 12 | getAudioChallenge: 'Hangi heliülesanne', 13 | label: 'Ma ei ole robot', 14 | loading: 'Laadimine...', 15 | reload: 'Laadi uuesti', 16 | verify: 'Kinnita', 17 | verified: 'Kinnitatud', 18 | verifying: 'Kinnitamine...', 19 | waitAlert: 'Kinnitamine... palun oota.', 20 | }; 21 | 22 | globalThis.altchaI18n.set('et', i18n); 23 | -------------------------------------------------------------------------------- /src/i18n/eu.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Bisitatu Altcha.org', 5 | enterCode: 'Sartu kodea', 6 | enterCodeAria: 7 | 'Sartu entzun duzun kodea. Sakatu Espazioa audioa erreproduzitzeko.', 8 | error: 'Egiaztatzeak huts egin du. Saiatu berriro geroago.', 9 | expired: 'Egiaztatzea iraungi da. Saiatu berriro.', 10 | verificationRequired: 'Egiaztatzea beharrezkoa da!', 11 | footer: 12 | 'ALTCHAk babestuta', 13 | getAudioChallenge: 'Jaso audio-erronka bat', 14 | label: 'Ez naiz robot bat', 15 | loading: 'Kargatzen...', 16 | reload: 'Birkargatu', 17 | verify: 'Egiaztatu', 18 | verified: 'Egiaztatuta', 19 | verifying: 'Egiaztatzen...', 20 | waitAlert: 'Egiaztatzen... itxaron mesedez.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('eu', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/europe.ts: -------------------------------------------------------------------------------- 1 | // Western Europe 2 | import './ca.ts'; 3 | import './fr-fr.ts'; 4 | import './de.ts'; 5 | import './nl.ts'; 6 | import './ga.ts'; 7 | import './it.ts'; 8 | import './pt-pt.ts'; 9 | import './es-es.ts'; 10 | import './eu.ts'; 11 | 12 | // Northern Europe 13 | import './en.ts'; 14 | import './da.ts'; 15 | import './sv.ts'; 16 | import './fi.ts'; 17 | import './et.ts'; 18 | import './nb.ts'; 19 | import './is.ts'; 20 | import './lt.ts'; 21 | import './lv.ts'; 22 | 23 | // Central & Eastern Europe 24 | import './bs.ts'; 25 | import './cs.ts'; 26 | import './pl.ts'; 27 | import './hu.ts'; 28 | import './sk.ts'; 29 | import './sl.ts'; 30 | import './hr.ts'; 31 | import './ro.ts'; 32 | import './bg.ts'; 33 | import './el.ts'; 34 | import './sr.ts'; 35 | import './ru.ts'; 36 | 37 | // Southern Europe 38 | import './af.ts'; 39 | import './mt.ts'; 40 | -------------------------------------------------------------------------------- /src/i18n/fi.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Vieraile sivulla Altcha.org', 5 | enterCode: 'Syötä koodi', 6 | enterCodeAria: 7 | 'Kirjoita kuulemasi koodi. Paina välilyöntiä toistaaksesi äänen.', 8 | error: 'Varmennus epäonnistui. Yritä myöhemmin uudelleen.', 9 | expired: 'Varmennus vanhentui. Yritä uudelleen.', 10 | verificationRequired: 'Vahvistus vaaditaan!', 11 | footer: 12 | 'Suojattu ALTCHA:lla', 13 | getAudioChallenge: 'Hae äänitehtävä', 14 | label: 'En ole robotti', 15 | loading: 'Ladataan...', 16 | reload: 'Lataa uudelleen', 17 | verify: 'Vahvista', 18 | verified: 'Vahvistettu', 19 | verifying: 'Vahvistetaan...', 20 | waitAlert: 'Vahvistetaan... odota hetki.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('fi', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/fr-ca.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Visitez Altcha.org', 5 | enterCode: 'Entrez le code', 6 | enterCodeAria: 7 | "Entrez le code que vous entendez. Appuyez sur la barre d'espace pour écouter l'audio.", 8 | error: 'Échec de la vérification. Réessayez plus tard.', 9 | expired: 'La vérification a expiré. Réessayez.', 10 | verificationRequired: 'Vérification requise !', 11 | footer: 12 | 'Protégé par ALTCHA', 13 | getAudioChallenge: 'Obtenir un défi audio', 14 | label: 'Pas un robot', 15 | loading: 'Chargement...', 16 | reload: 'Recharger', 17 | verify: 'Vérifier', 18 | verified: 'Vérifié', 19 | verifying: 'Vérification en cours...', 20 | waitAlert: 'Vérification en cours... veuillez patienter.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('fr-ca', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/fr-fr.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Visitez Altcha.org', 5 | enterCode: 'Entrez le code', 6 | enterCodeAria: 7 | "Entrez le code que vous entendez. Appuyez sur Espace pour écouter l'audio.", 8 | error: 'Échec de la vérification. Essayez à nouveau plus tard.', 9 | expired: 'La vérification a expiré. Essayez à nouveau.', 10 | verificationRequired: 'Vérification requise !', 11 | footer: 12 | 'Protégé par ALTCHA', 13 | getAudioChallenge: 'Obtenir un défi audio', 14 | label: 'Pas un robot', 15 | loading: 'Chargement...', 16 | reload: 'Recharger', 17 | verify: 'Vérifier', 18 | verified: 'Vérifié', 19 | verifying: 'Vérification en cours...', 20 | waitAlert: 'Vérification en cours... veuillez patienter.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('fr-fr', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/ga.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Tabhair cuairt ar Altcha.org', 5 | enterCode: 'Iontráil cód', 6 | enterCodeAria: 7 | 'Cuir isteach an cód a chloiseann tú. Brúigh Spás chun an fuaime a sheinm.', 8 | error: 'Theip ar an bhfíorú. Bain triail eile as níos déanaí.', 9 | expired: 'Tá an fíorú as feidhm. Bain triail eile as.', 10 | verificationRequired: 'Fíorú riachtanach!', 11 | footer: 12 | 'Cosanta ag ALTCHA', 13 | getAudioChallenge: 'Faigh dúshlán fuaime', 14 | label: 'Níl mé i mo róbat', 15 | loading: 'Á luchtú...', 16 | reload: 'Athluchtaigh', 17 | verify: 'Fíoraigh', 18 | verified: 'Fíoraithe', 19 | verifying: 'Fíorú ar siúl...', 20 | waitAlert: 'Fíorú ar siúl... fan go fóill.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('ga', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/he.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'בקר באתר Altcha.org', 5 | enterCode: 'הזן קוד', 6 | enterCodeAria: 'הזן את הקוד שאתה שומע. לחץ על רווח להפעלת השמע.', 7 | error: 'האימות נכשל. נסה שוב מאוחר יותר.', 8 | expired: 'תוקף האימות פג. נסה שוב.', 9 | verificationRequired: 'נדרש אימות!', 10 | footer: 11 | 'מוגן על ידי ALTCHA', 12 | getAudioChallenge: 'קבל אתגר שמע', 13 | label: 'אני לא רובוט', 14 | loading: 'טוען...', 15 | reload: 'טען מחדש', 16 | verify: 'אמת', 17 | verified: 'אומת', 18 | verifying: 'מאמת...', 19 | waitAlert: 'מבצע אימות... אנא המתן.', 20 | }; 21 | 22 | globalThis.altchaI18n.set('he', i18n); 23 | -------------------------------------------------------------------------------- /src/i18n/hi.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Altcha.org पर जाएं', 5 | enterCode: 'कोड दर्ज करेंं', 6 | enterCodeAria: 7 | 'आप जो कोड सुनते हैं उसे दर्ज करें। ऑडियो चलाने के लिए स्पेस दबाएं।', 8 | error: 'सत्यापन विफल। कृपया बाद में फिर से प्रयास करें।', 9 | expired: 'सत्यापन समाप्त हो गया है। कृपया पुनः प्रयास करें।', 10 | verificationRequired: 'सत्यापन आवश्यक है!', 11 | footer: 12 | 'द्वारा संरक्षित ALTCHA', 13 | getAudioChallenge: 'ऑडियो चुनौती प्राप्त करें', 14 | label: 'मैं रोबोट नहीं हूँ', 15 | loading: 'लोड हो रहा है...', 16 | reload: 'पुनः लोड करें', 17 | verify: 'सत्यापित करें', 18 | verified: 'सत्यापित', 19 | verifying: 'सत्यापित कर रहे हैं...', 20 | waitAlert: 'सत्यापित किया जा रहा है... कृपया प्रतीक्षा करें।', 21 | }; 22 | 23 | globalThis.altchaI18n.set('hi', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/hr.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Posjetite Altcha.org', 5 | enterCode: 'Unesite kod', 6 | enterCodeAria: 7 | 'Unesite kod koji čujete. Pritisnite razmaknicu za reprodukciju zvuka.', 8 | error: 'Provjera nije uspjela. Molimo pokušajte kasnije.', 9 | expired: 'Provjera je istekla. Molimo pokušajte ponovo.', 10 | verificationRequired: 'Potrebna je provjera!', 11 | footer: 12 | 'Zaštićeno od strane ALTCHA', 13 | getAudioChallenge: 'Audio provjera', 14 | label: 'Ja nisam robot', 15 | loading: 'Učitavanje...', 16 | reload: 'Ponovno učitaj', 17 | verify: 'Provjeri', 18 | verified: 'Provjereno', 19 | verifying: 'Provjeravanje...', 20 | waitAlert: 'Provjera je u tijeku... molimo pričekajte.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('hr', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/hu.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Látogass el az Altcha.org oldalra', 5 | enterCode: 'Írja be a kódot', 6 | enterCodeAria: 7 | 'Írja be a hallott kódot. Nyomja meg a Szóköz billentyűt a hang lejátszásához.', 8 | error: 'A hitelesítés nem sikerült. Próbáld meg később újra.', 9 | expired: 'A hitelesítés lejárt. Próbáld újra.', 10 | verificationRequired: 'Ellenőrzés szükséges!', 11 | footer: 12 | 'Védve a következő által: ALTCHA', 13 | getAudioChallenge: 'Hangalapú kihívás kérése', 14 | label: 'Nem vagyok robot', 15 | loading: 'Betöltés...', 16 | reload: 'Újratöltés', 17 | verify: 'Ellenőrzés', 18 | verified: 'Ellenőrizve', 19 | verifying: 'Ellenőrzés folyamatban...', 20 | waitAlert: 'Ellenőrzés folyamatban... kérlek várj.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('hu', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/id.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Kunjungi Altcha.org', 5 | enterCode: 'Masukkan kode', 6 | enterCodeAria: 7 | 'Masukkan kode yang Anda dengar. Tekan Spasi untuk memutar audio.', 8 | error: 'Verifikasi gagal. Coba lagi nanti.', 9 | expired: 'Verifikasi telah kedaluwarsa. Coba lagi.', 10 | verificationRequired: 'Verifikasi diperlukan!', 11 | footer: 12 | 'Dilindungi oleh ALTCHA', 13 | getAudioChallenge: 'Dapatkan tantangan audio', 14 | label: 'Saya bukan robot', 15 | loading: 'Memuat...', 16 | reload: 'Muat ulang', 17 | verify: 'Verifikasi', 18 | verified: 'Terverifikasi', 19 | verifying: 'Memverifikasi...', 20 | waitAlert: 'Memverifikasi... harap tunggu.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('id', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/is.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Heimsækja Altcha.org', 5 | enterCode: 'Sláðu inn kóða', 6 | enterCodeAria: 'Sláðu inn kóðann sem þú heyrir. Ýttu á Space til að spila hljóðið.', 7 | error: 'Staðfesting mistókst. Reyndu aftur síðar.', 8 | expired: 'Staðfesting er útrunnin. Reyndu aftur.', 9 | footer: 10 | 'Verndað af ALTCHA', 11 | getAudioChallenge: 'Fá hljóðáskorun', 12 | label: "Ég er ekki robot", 13 | loading: 'Hleður...', 14 | reload: 'Hleð aftur', 15 | verify: 'Staðfesta', 16 | verificationRequired: 'Staðfesting er nauðsynleg!', 17 | verified: 'Staðfest', 18 | verifying: 'Að staðfesta...', 19 | waitAlert: 'Að staðfesta... vinsamlegast bíða.', 20 | }; 21 | 22 | globalThis.altchaI18n.set('is', i18n); 23 | -------------------------------------------------------------------------------- /src/i18n/it.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Visita Altcha.org', 5 | enterCode: 'Inserisci il codice', 6 | enterCodeAria: 7 | "Inserisci il codice che senti. Premi Spazio per riprodurre l'audio.", 8 | error: 'Verifica fallita. Riprova più tardi.', 9 | expired: 'Verifica scaduta. Riprova.', 10 | verificationRequired: 'Verifica richiesta!', 11 | footer: 12 | 'Protetto da ALTCHA', 13 | getAudioChallenge: 'Ottieni una sfida audio', 14 | label: 'Non sono un robot', 15 | loading: 'Caricamento...', 16 | reload: 'Ricarica', 17 | verify: 'Verifica', 18 | verified: 'Verificato', 19 | verifying: 'Verifica in corso...', 20 | waitAlert: 'Verifica in corso... attendere.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('it', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/ja.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Altcha.orgを訪問', 5 | enterCode: 'コードを入力', 6 | enterCodeAria: 7 | '聞こえるコードを入力してください。スペースキーを押して音声を再生します。', 8 | error: '認証に失敗しました。後でもう一度試してください。', 9 | expired: '認証が期限切れです。再試行してください。', 10 | verificationRequired: '認証が必要です!', 11 | footer: 12 | '保護されています ALTCHA', 13 | getAudioChallenge: '音声チャレンジを取得', 14 | label: 'ロボットじゃない', 15 | loading: '読み込み中...', 16 | reload: '再読み込み', 17 | verify: '確認', 18 | verified: '確認済み', 19 | verifying: '確認中...', 20 | waitAlert: '確認中...少々お待ちください。', 21 | }; 22 | 23 | globalThis.altchaI18n.set('ja', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/ko.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Altcha.org 방문하기', 5 | enterCode: '코드 입력', 6 | enterCodeAria: 7 | '들리는 코드를 입력하세요. 스페이스 바를 눌러 오디오를 재생합니다.', 8 | error: '인증 실패. 나중에 다시 시도해주세요.', 9 | expired: '인증이 만료되었습니다. 다시 시도해주세요.', 10 | verificationRequired: '인증이 필요합니다!', 11 | footer: 12 | 'ALTCHA에서 보호됨 ALTCHA', 13 | getAudioChallenge: '오디오 챌린지 받기', 14 | label: '저는 로봇이 아닙니다', 15 | loading: '로딩 중...', 16 | reload: '새로 고침', 17 | verify: '확인', 18 | verified: '확인됨', 19 | verifying: '확인 중...', 20 | waitAlert: '확인 중... 잠시만 기다려주세요.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('ko', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/lt.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Apsilankykite Altcha.org', 5 | enterCode: 'Įveskite kodą', 6 | enterCodeAria: 7 | 'Įveskite girdimą kodą. Paspauskite tarpo klavišą, kad grotumėte garso įrašą.', 8 | error: 'Patvirtinimas nepavyko. Bandykite vėliau.', 9 | expired: 'Patvirtinimo laikas baigėsi. Bandykite dar kartą.', 10 | verificationRequired: 'Reikalingas patvirtinimas!', 11 | footer: 12 | 'Apsaugota ALTCHA', 13 | getAudioChallenge: 'Gauti garso užduotį', 14 | label: 'Aš nesu robotas', 15 | loading: 'Įkeliama...', 16 | reload: 'Įkelti iš naujo', 17 | verify: 'Patvirtinti', 18 | verified: 'Patvirtinta', 19 | verifying: 'Tikrinama...', 20 | waitAlert: 'Tikrinama... prašome palaukti.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('lt', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/lv.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Apmeklējiet Altcha.org', 5 | enterCode: 'Ievadiet kodu', 6 | enterCodeAria: 7 | 'Ievadiet dzirdamo kodu. Nospiediet atstarpes taustiņu, lai atskaņotu audio.', 8 | error: 'Verifikācija neizdevās. Mēģiniet vēlāk vēlreiz.', 9 | expired: 'Verifikācijas laiks ir beidzies. Mēģiniet vēlreiz.', 10 | verificationRequired: 'Nepieciešama verifikācija!', 11 | footer: 12 | 'Aizsargāts ar ALTCHA', 13 | getAudioChallenge: 'Saņemt audio izaicinājumu', 14 | label: 'Es neesmu robots', 15 | loading: 'Notiek ielāde...', 16 | reload: 'Pārlādēt', 17 | verify: 'Verificēt', 18 | verified: 'Verificēts', 19 | verifying: 'Notiek verifikācija...', 20 | waitAlert: 'Notiek verifikācija... lūdzu, uzgaidiet.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('lv', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/mr.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Altcha.org भेट द्या', 5 | enterCode: 'कोड टाकाा', 6 | enterCodeAria: 'तुम्ही ऐकत असलेला कोड टाका. ऑडिओ प्ले करण्यासाठी स्पेस दाबा.', 7 | error: 'पुष्टीकरण अयशस्वी झाले. कृपया नंतर पुन्हा प्रयत्न करा.', 8 | expired: 'पुष्टीकरण कालबाह्य झाले आहे. कृपया पुन्हा प्रयत्न करा.', 9 | verificationRequired: 'पडताळणी आवश्यक आहे!', 10 | footer: 11 | 'द्वारे संरक्षित ALTCHA', 12 | getAudioChallenge: 'ऑडिओ चॅलेंज मिळवा', 13 | label: 'मी रोबोट नाही', 14 | loading: 'लोड होत आहे...', 15 | reload: 'पुन्हा लोड करा', 16 | verify: 'पुष्टीकरण करा', 17 | verified: 'पुष्टीकरण झाले', 18 | verifying: 'पुष्टीकरण करत आहे...', 19 | waitAlert: 'पुष्टीकरण करत आहे... कृपया थोडा वेळ थांबा.', 20 | }; 21 | 22 | globalThis.altchaI18n.set('mr', i18n); 23 | -------------------------------------------------------------------------------- /src/i18n/mt.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Żur Altcha.org', 5 | enterCode: 'Idħol il-kodiċi', 6 | enterCodeAria: 7 | "Idħol il-kodiċi li tisma'. Agħfas Spazju biex tindaqq l-awdjo.", 8 | error: 'Il-verifika falliet. Erġa’ pprova aktar tard.', 9 | expired: 'Il-verifika skadiet. Erġa’ pprova.', 10 | verificationRequired: 'Verifika meħtieġa!', 11 | footer: 12 | 'Protett minn ALTCHA', 13 | getAudioChallenge: 'Ikseb sfida bl-awdjo', 14 | label: 'M’inix robot', 15 | loading: 'Qed jitgħabba...', 16 | reload: 'Ittella’ mill-ġdid', 17 | verify: 'Ivverifika', 18 | verified: 'Ivverifikat', 19 | verifying: 'Verifika għaddejja...', 20 | waitAlert: 'Verifika għaddejja... stenna ftit.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('mt', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/nb.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Besøk Altcha.org', 5 | enterCode: 'Skriv inn kode', 6 | enterCodeAria: 'Skriv inn koden du hører. Trykk på Space for å spille av lyden.', 7 | error: 'Verifisering mislyktes. Prøv igjen senere.', 8 | expired: 'Verifiseringen utløp. Prøv igjen.', 9 | footer: 10 | 'Beskyttet av ALTCHA', 11 | getAudioChallenge: 'Få en lydutfordring', 12 | label: "Jeg er ikke en robot", 13 | loading: 'Laster...', 14 | reload: 'Last på nytt', 15 | verify: 'Verifiser', 16 | verificationRequired: 'Verifisering kreves!', 17 | verified: 'Verifisert', 18 | verifying: 'Verifiserer...', 19 | waitAlert: 'Verifiserer... vennligst vent.', 20 | }; 21 | 22 | globalThis.altchaI18n.set('nb', i18n); 23 | globalThis.altchaI18n.set('no', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/nl.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Bezoek Altcha.org', 5 | enterCode: 'Voer code in', 6 | enterCodeAria: 7 | 'Voer de code in die je hoort. Druk op Spatie om de audio af te spelen.', 8 | error: 'Verificatie mislukt. Probeer het later opnieuw.', 9 | expired: 'Verificatie verlopen. Probeer het opnieuw.', 10 | verificationRequired: 'Verificatie vereist!', 11 | footer: 12 | 'Beschermd door ALTCHA', 13 | getAudioChallenge: 'Audio-uitdaging ontvangen', 14 | label: 'Ik ben geen robot', 15 | loading: 'Laden...', 16 | reload: 'Herladen', 17 | verify: 'Verifiëren', 18 | verified: 'Geverifieerd', 19 | verifying: 'Bezig met verifiëren...', 20 | waitAlert: 'Bezig met verifiëren... even geduld a.u.b.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('nl', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/pl.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Odwiedź Altcha.org', 5 | enterCode: 'Wprowadź kod', 6 | enterCodeAria: 7 | 'Wpisz kod, który słyszysz. Naciśnij Spację, aby odtworzyć dźwięk.', 8 | error: 'Weryfikacja nie powiodła się. Spróbuj ponownie później.', 9 | expired: 'Weryfikacja wygasła. Spróbuj ponownie.', 10 | verificationRequired: 'Wymagana weryfikacja!', 11 | footer: 12 | 'Chronione przez ALTCHA', 13 | getAudioChallenge: 'Pobierz zadanie dźwiękowe', 14 | label: 'Nie jestem robotem', 15 | loading: 'Ładowanie...', 16 | reload: 'Odśwież', 17 | verify: 'Zweryfikuj', 18 | verified: 'Zweryfikowano', 19 | verifying: 'Weryfikacja...', 20 | waitAlert: 'Trwa weryfikacja... proszę czekać.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('pl', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/pt-br.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Visitar Altcha.org', 5 | enterCode: 'Digite o código', 6 | enterCodeAria: 7 | 'Digite o código que você ouve. Pressione Espaço para reproduzir o áudio.', 8 | error: 'Falha na verificação. Por favor, tente novamente mais tarde.', 9 | expired: 'Verificação expirada. Por favor, tente novamente.', 10 | verificationRequired: 'Verificação necessária!', 11 | footer: 12 | 'Protegido por ALTCHA', 13 | getAudioChallenge: 'Obter desafio de áudio', 14 | label: 'Eu não sou um robô', 15 | loading: 'Carregando...', 16 | reload: 'Recarregar', 17 | verify: 'Verificar', 18 | verified: 'Verificado', 19 | verifying: 'Verificando...', 20 | waitAlert: 'Verificando... por favor aguarde.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('pt-br', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/pt-pt.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Visitar Altcha.org', 5 | enterCode: 'Introduza o código', 6 | enterCodeAria: 7 | 'Introduza o código que ouve. Prima Espaço para reproduzir o áudio.', 8 | error: 'A verificação falhou. Por favor, tente novamente mais tarde.', 9 | expired: 'Verificação expirada. Por favor, tente novamente.', 10 | verificationRequired: 'Verificação necessária!', 11 | footer: 12 | 'Protegido por ALTCHA', 13 | getAudioChallenge: 'Obter desafio de áudio', 14 | label: 'Não sou um robô', 15 | loading: 'A carregar...', 16 | reload: 'Recarregar', 17 | verify: 'Verificar', 18 | verified: 'Verificado', 19 | verifying: 'A verificar...', 20 | waitAlert: 'A verificar... por favor aguarde.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('pt-pt', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/ro.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Vizitează Altcha.org', 5 | enterCode: 'Introduceți codul', 6 | enterCodeAria: 7 | 'Introduceți codul pe care îl auziți. Apăsați Spațiu pentru a reda audio.', 8 | error: 'Verificarea a eșuat. Încearcă din nou mai târziu.', 9 | expired: 'Verificarea a expirat. Încearcă din nou.', 10 | verificationRequired: 'Verificare necesară!', 11 | footer: 12 | 'Protejat de ALTCHA', 13 | getAudioChallenge: 'Obține o provocare audio', 14 | label: 'Nu sunt un robot', 15 | loading: 'Se încarcă...', 16 | reload: 'Reîncarcă', 17 | verify: 'Verifică', 18 | verified: 'Verificat', 19 | verifying: 'Se verifică...', 20 | waitAlert: 'Se verifică... te rugăm să aștepți.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('ro', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/ru.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Перейти на Altcha.org', 5 | enterCode: 'Введите код', 6 | enterCodeAria: 7 | 'Введите код, который слышите. Нажмите пробел для воспроизведения аудио.', 8 | error: 'Ошибка верификации. Попробуйте позже.', 9 | expired: 'Срок действия верификации истек. Попробуйте снова.', 10 | verificationRequired: 'Требуется проверка!', 11 | footer: 12 | 'Защищено ALTCHA', 13 | getAudioChallenge: 'Получить аудио задачу', 14 | label: 'Я не робот', 15 | loading: 'Загрузка...', 16 | reload: 'Перезагрузить', 17 | verify: 'Проверить', 18 | verified: 'Проверено', 19 | verifying: 'Идет проверка...', 20 | waitAlert: 'Идет проверка... Пожалуйста, подождите.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('ru', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/sk.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Navštívte Altcha.org', 5 | enterCode: 'Zadajte kód', 6 | enterCodeAria: 7 | 'Zadajte kód, ktorý počujete. Stlačením medzerníka prehráte zvuk.', 8 | error: 'Verifikácia zlyhala. Skúste to znova neskôr.', 9 | expired: 'Verifikácia vypršala. Skúste to znova.', 10 | verificationRequired: 'Vyžaduje sa overenie!', 11 | footer: 12 | 'Chránené ALTCHA', 13 | getAudioChallenge: 'Získať audio výzvu', 14 | label: 'Nie som robot', 15 | loading: 'Načítava sa...', 16 | reload: 'Obnoviť', 17 | verify: 'Verifikovať', 18 | verified: 'Verifikované', 19 | verifying: 'Prebieha verifikácia...', 20 | waitAlert: 'Prebieha verifikácia... prosím čakajte.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('sk', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/sl.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Obiščite Altcha.org', 5 | enterCode: 'Vnesite kodo', 6 | enterCodeAria: 7 | 'Vnesite kodo, ki jo slišite. Pritisnite preslednico za predvajanje zvoka.', 8 | error: 'Preverjanje ni uspelo. Poskusite znova kasneje.', 9 | expired: 'Preverjanje je poteklo. Poskusite znova.', 10 | verificationRequired: 'Potrebna je preveritev!', 11 | footer: 12 | 'Zaščiteno z ALTCHA', 13 | getAudioChallenge: 'Pridobite zvočni izziv', 14 | label: 'Nisem robot', 15 | loading: 'Nalagam...', 16 | reload: 'Ponovno naloži', 17 | verify: 'Preveri', 18 | verified: 'Preverjeno', 19 | verifying: 'Preverjanje...', 20 | waitAlert: 'Preverjanje... prosim počakajte.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('sl', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/sr.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Posetite Altcha.org', 5 | enterCode: 'Unesite kod', 6 | enterCodeAria: 'Unesite kod koji čujete. Pritisnite Space da biste pustili zvuk.', 7 | error: 'Verifikacija nije uspela. Pokušajte ponovo kasnije.', 8 | expired: 'Verifikacija je istekla. Pokušajte ponovo.', 9 | footer: 10 | 'Zaštićeno od strane ALTCHA', 11 | getAudioChallenge: 'Dohvatite audio izazov', 12 | label: "Nisam robot", 13 | loading: 'Učitavanje...', 14 | reload: 'Ponovo učitaj', 15 | verify: 'Verifikuj', 16 | verificationRequired: 'Verifikacija je obavezna!', 17 | verified: 'Verifikovano', 18 | verifying: 'Verifikacija u toku...', 19 | waitAlert: 'Verifikacija u toku... molimo vas da sačekate.', 20 | }; 21 | 22 | globalThis.altchaI18n.set('sr', i18n); 23 | -------------------------------------------------------------------------------- /src/i18n/sv.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Besök Altcha.org', 5 | enterCode: 'Ange kod', 6 | enterCodeAria: 7 | 'Ange koden du hör. Tryck på mellanslag för att spela upp ljudet.', 8 | error: 'Verifiering misslyckades. Försök igen senare.', 9 | expired: 'Verifieringen har gått ut. Försök igen.', 10 | verificationRequired: 'Verifiering krävs!', 11 | footer: 12 | 'Skyddad av ALTCHA', 13 | getAudioChallenge: 'Få ljudutmaning', 14 | label: 'Jag är inte en robot', 15 | loading: 'Laddar...', 16 | reload: 'Ladda om', 17 | verify: 'Verifiera', 18 | verified: 'Verifierad', 19 | verifying: 'Verifierar...', 20 | waitAlert: 'Verifierar... vänligen vänta.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('sv', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/ta.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Altcha.org ஐ பார்வையிடவும்', 5 | enterCode: 'குறியீட்டை உள்ளிடவும்', 6 | enterCodeAria: 7 | 'நீங்கள் கேட்கும் குறியீட்டை உள்ளிடவும். ஆடியோவை இயக்க Space ஐ அழுத்தவும்.', 8 | error: 'சரிபார்ப்பு தோல்வி. பிறகு மீண்டும் முயற்சிக்கவும்.', 9 | expired: 'சரிபார்ப்பு காலாவதியானது. மீண்டும் முயற்சிக்கவும்.', 10 | verificationRequired: 'சரிபார்ப்பு தேவை!', 11 | footer: 12 | 'மூலமாக பாதுகாக்கப்பட்டவை ALTCHA', 13 | getAudioChallenge: 'ஒலி சவாலை பெறவும்', 14 | label: 'நான் ரோபோடான அல்ல', 15 | loading: 'செயலாக்கம்...', 16 | reload: 'மீண்டும் புதுப்பிக்கவும்', 17 | verify: 'சரிபார்க்கவும்', 18 | verified: 'சரிபார்க்கப்பட்டது', 19 | verifying: 'சரிபார்க்கப்படுகிறது...', 20 | waitAlert: 'சரிபார்க்கப்படுகிறது... தயவுசெய்து காத்திருக்கவும்.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('ta', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/te.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Altcha.org సందర్శించండి', 5 | enterCode: 'కోడ్‌ని నమోదు చేయండి', 6 | enterCodeAria: 7 | 'మీరు విన్న కోడ్‌ని నమోదు చేయండి. ఆడియో ప్లే చేయడానికి స్పేస్‌ను నొక్కండి.', 8 | error: 'చెకింగ్ విఫలమైంది. దయచేసి మరల ప్రయత్నించండి.', 9 | expired: 'చెకింగ్ కాలం ముగిసింది. దయచేసి మరల ప్రయత్నించండి.', 10 | verificationRequired: 'ధృవీకరణ అవసరం!', 11 | footer: 12 | 'ఈ సైట్ రక్షించబడింది ALTCHA', 13 | getAudioChallenge: 'ఆడియో ఛాలెంజ్ పొందండి', 14 | label: 'నేను రోబోట్ కాదు', 15 | loading: 'లోడ్ అవుతోంది...', 16 | reload: 'మళ్ళీ లోడ్ చేయండి', 17 | verify: 'ధ్రువీకరించు', 18 | verified: 'ధ్రువీకరించబడింది', 19 | verifying: 'ధ్రువీకరణ జరుగుతుంది...', 20 | waitAlert: 'ధ్రువీకరణ జరుగుతుంది... దయచేసి వేచి ఉండండి.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('te', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/th.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'เยี่ยมชม Altcha.org', 5 | enterCode: 'ป้อนรหัส', 6 | enterCodeAria: 'ป้อนรหัสที่คุณได้ยิน กด Space เพื่อเล่นเสียง', 7 | error: 'การตรวจสอบล้มเหลว กรุณาลองอีกครั้งภายหลัง', 8 | expired: 'การตรวจสอบหมดอายุ กรุณาลองใหม่', 9 | verificationRequired: 'จำเป็นต้องตรวจสอบ!', 10 | footer: 11 | 'ป้องกันโดย ALTCHA', 12 | getAudioChallenge: 'รับการท้าทายเสียง', 13 | label: 'ฉันไม่ใช่บอท', 14 | loading: 'กำลังโหลด...', 15 | reload: 'โหลดใหม่', 16 | verify: 'ตรวจสอบ', 17 | verified: 'ตรวจสอบแล้ว', 18 | verifying: 'กำลังตรวจสอบ...', 19 | waitAlert: 'กำลังตรวจสอบ... กรุณารอ', 20 | }; 21 | 22 | globalThis.altchaI18n.set('th', i18n); 23 | -------------------------------------------------------------------------------- /src/i18n/tr.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: "Altcha.org'yu ziyaret edin", 5 | enterCode: 'Kodu girin', 6 | enterCodeAria: 7 | 'Duyduğunuz kodu girin. Ses dosyasını oynatmak için Boşluk tuşuna basın.', 8 | error: 'Doğrulama başarısız oldu. Lütfen daha sonra tekrar deneyin.', 9 | expired: 'Doğrulama süresi doldu. Lütfen tekrar deneyin.', 10 | verificationRequired: 'Doğrulama gerekli!', 11 | footer: 12 | 'ALTCHA tarafından korunuyor ALTCHA', 13 | getAudioChallenge: 'Sesli doğrulama al', 14 | label: 'Ben robot değilim', 15 | loading: 'Yükleniyor...', 16 | reload: 'Yeniden yükle', 17 | verify: 'Doğrula', 18 | verified: 'Doğrulandı', 19 | verifying: 'Doğrulama yapılıyor...', 20 | waitAlert: 'Doğrulama yapılıyor... lütfen bekleyin.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('tr', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/uk.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Відвідати Altcha.org', 5 | enterCode: 'Введіть код', 6 | enterCodeAria: 7 | 'Введіть код, який ви чуєте. Натисніть пробіл, щоб відтворити аудіо.', 8 | error: 'Перевірка не вдалася. Спробуйте пізніше.', 9 | expired: 'Перевірка прострочена. Спробуйте знову.', 10 | verificationRequired: 'Потрібна перевірка!', 11 | footer: 12 | 'Захищено ALTCHA', 13 | getAudioChallenge: 'Отримати аудіо-челлендж', 14 | label: 'Я не робот', 15 | loading: 'Завантаження...', 16 | reload: 'Перезавантажити', 17 | verify: 'Перевірити', 18 | verified: 'Перевірено', 19 | verifying: 'Перевіряється...', 20 | waitAlert: 'Перевірка... будь ласка, зачекайте.', 21 | }; 22 | 23 | globalThis.altchaI18n.set('uk', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/ur.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Altcha.org پر جائیں', 5 | enterCode: 'کوڈ درج کریں', 6 | enterCodeAria: 7 | 'جو کوڈ آپ سنتے ہیں وہ درج کریں۔ آڈیو چلانے کے لیے اسپیس دبائیں۔', 8 | error: 'توثیق ناکام ہو گئی۔ براہ کرم بعد میں دوبارہ کوشش کریں۔', 9 | expired: 'توثیق کی مدت ختم ہو گئی ہے۔ براہ کرم دوبارہ کوشش کریں۔', 10 | verificationRequired: 'تصدیق ضروری ہے!', 11 | footer: 12 | 'کے ذریعے محفوظ ALTCHA', 13 | getAudioChallenge: 'آڈیو چیلنج حاصل کریں', 14 | label: 'میں روبوٹ نہیں ہوں', 15 | loading: 'لوڈ ہو رہا ہے...', 16 | reload: 'دوبارہ لوڈ کریں', 17 | verify: 'توثیق کریں', 18 | verified: 'توثیق شدہ', 19 | verifying: 'توثیق ہو رہی ہے...', 20 | waitAlert: 'توثیق ہو رہی ہے... براہ کرم انتظار کریں۔', 21 | }; 22 | 23 | globalThis.altchaI18n.set('ur', i18n); 24 | -------------------------------------------------------------------------------- /src/i18n/vi.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: 'Truy cập Altcha.org', 5 | enterCode: 'Nhập mã', 6 | enterCodeAria: 'Nhập mã bạn nghe được. Nhấn Phím cách để phát âm thanh.', 7 | error: 'Xác minh thất bại. Vui lòng thử lại sau.', 8 | expired: 'Xác minh đã hết hạn. Vui lòng thử lại.', 9 | verificationRequired: 'Yêu cầu xác minh!', 10 | footer: 11 | 'Được bảo vệ bởi ALTCHA', 12 | getAudioChallenge: 'Nhận thử thách âm thanh', 13 | label: 'Tôi không phải là robot', 14 | loading: 'Đang tải...', 15 | reload: 'Tải lại', 16 | verify: 'Xác minh', 17 | verified: 'Đã xác minh', 18 | verifying: 'Đang xác minh...', 19 | waitAlert: 'Đang xác minh... vui lòng chờ.', 20 | }; 21 | 22 | globalThis.altchaI18n.set('vi', i18n); 23 | -------------------------------------------------------------------------------- /src/i18n/zh-cn.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: '访问 Altcha.org', 5 | enterCode: '输入代码', 6 | enterCodeAria: '输入您听到的代码。按空格键播放音频。', 7 | error: '验证失败。稍后再试。', 8 | expired: '验证已过期。请重试。', 9 | verificationRequired: '需要验证!', 10 | footer: 11 | '由 ALTCHA 保护', 12 | getAudioChallenge: '获取音频挑战', 13 | label: '我不是机器人', 14 | loading: '加载中...', 15 | reload: '重新加载', 16 | verify: '验证', 17 | verified: '已验证', 18 | verifying: '正在验证...', 19 | waitAlert: '正在验证... 请稍等。', 20 | }; 21 | 22 | globalThis.altchaI18n.set('zh-cn', i18n); 23 | -------------------------------------------------------------------------------- /src/i18n/zh-tw.ts: -------------------------------------------------------------------------------- 1 | import '../globals'; 2 | 3 | export const i18n = { 4 | ariaLinkLabel: '訪問 Altcha.org', 5 | enterCode: '輸入代碼', 6 | enterCodeAria: '輸入您聽到的代碼。按空格鍵播放音頻。', 7 | error: '驗證失敗。稍後再試。', 8 | expired: '驗證已過期。請重試。', 9 | verificationRequired: '需要驗證!', 10 | footer: 11 | '由 ALTCHA 保護', 12 | getAudioChallenge: '獲取音頻挑戰', 13 | label: '我不是機器人', 14 | loading: '載入中...', 15 | reload: '重新載入', 16 | verify: '驗證', 17 | verified: '已驗證', 18 | verifying: '正在驗證...', 19 | waitAlert: '正在驗證... 請稍等。', 20 | }; 21 | 22 | globalThis.altchaI18n.set('zh-tw', i18n); 23 | -------------------------------------------------------------------------------- /src/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const ALTCHA_VERSION: string; 2 | declare const INLINE_WORKER: string; 3 | 4 | declare global { 5 | var altchaCreateWorker: () => Promise; 6 | } -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import App from './App.svelte'; 2 | import { mount } from "svelte"; 3 | import './altcha.css'; 4 | 5 | const app = mount(App, { 6 | target: document.getElementById('app')!, 7 | }); 8 | 9 | export default app; 10 | -------------------------------------------------------------------------------- /src/plugin.ts: -------------------------------------------------------------------------------- 1 | import type { PluginContext, State } from './types'; 2 | 3 | /** 4 | * Abstract base class representing a plugin. 5 | * All custom plugins should extend this class. 6 | */ 7 | export abstract class Plugin { 8 | /** 9 | * A distinct name of the plugin. Every plugin must have it's own name. 10 | */ 11 | static pluginName: string; 12 | 13 | /** 14 | * Registers a plugin class in the global `altchaPlugins` array. 15 | * Ensures the plugin is added only once. 16 | * 17 | * @param {new(context: PluginContext) => Plugin} cls - The plugin class to register. 18 | */ 19 | static register(cls: new (context: PluginContext) => Plugin) { 20 | if (typeof globalThis.altchaPlugins !== 'object') { 21 | globalThis.altchaPlugins = []; 22 | } 23 | if (!globalThis.altchaPlugins.includes(cls as any)) { 24 | globalThis.altchaPlugins.push(cls as any); 25 | } 26 | } 27 | 28 | /** 29 | * Constructs a new instance of the Plugin. 30 | * 31 | * @param {PluginContext} context - The context provided to the plugin, containing necessary configurations and dependencies. 32 | */ 33 | constructor(readonly context: PluginContext) { }; 34 | 35 | /** 36 | * Clean up resources when the plugin is destroyed. 37 | * Override this method in subclasses to implement custom destruction logic. 38 | */ 39 | destroy() { }; 40 | 41 | /** 42 | * Callback triggered when an error changes. 43 | * Override this method in subclasses to handle error state changes. 44 | * 45 | * @param {string | null} err - The error message or `null` if there's no error. 46 | */ 47 | onErrorChange(err: string | null) { }; 48 | 49 | /** 50 | * Callback triggered when the plugin state changes. 51 | * Override this method in subclasses to handle state changes. 52 | * 53 | * @param {State} state - The new state of the plugin. 54 | */ 55 | onStateChange(state: State) { }; 56 | } -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /src/worker.ts: -------------------------------------------------------------------------------- 1 | import { solveChallenge, clarifyData } from './helpers'; 2 | 3 | let controller: AbortController | undefined = undefined; 4 | 5 | onmessage = async (message) => { 6 | const { type, payload, start, max } = message.data; 7 | let result: ReturnType | Awaited> | null = null; 8 | if (type === 'abort') { 9 | controller?.abort(); 10 | controller = undefined; 11 | } else if (type === 'work') { 12 | if ('obfuscated' in payload) { 13 | const { key, obfuscated } = payload || {}; 14 | result = await clarifyData(obfuscated, key, max, start); 15 | 16 | } else { 17 | const { algorithm, challenge, salt } = payload || {}; 18 | result = solveChallenge(challenge, salt, algorithm, max, start); 19 | } 20 | controller = result.controller; 21 | result.promise.then((solution) => { 22 | self.postMessage(solution ? { ...solution, worker: true } : solution); 23 | }); 24 | } 25 | }; 26 | 27 | export {}; 28 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' 2 | 3 | export default { 4 | // Consult https://svelte.dev/docs#compile-time-svelte-preprocess 5 | // for more information about preprocessors 6 | preprocess: vitePreprocess(), 7 | } 8 | -------------------------------------------------------------------------------- /tests/helpers.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, expect, test, vi } from 'vitest'; 2 | import { ab2hex, hashChallenge, createTestChallenge, solveChallenge } from '../src/helpers'; 3 | 4 | const alg = 'SHA-256'; 5 | const salt = 'randomstring'; 6 | const num = 123; 7 | 8 | describe('ab2hex', () => { 9 | test('should return hex-encoded string', () => { 10 | expect(ab2hex(new TextEncoder().encode('Hello world'))).toBe('48656c6c6f20776f726c64'); 11 | }); 12 | }); 13 | 14 | describe('hashChallenge', () => { 15 | test('should return a new hex-encoded challenge', async () => { 16 | const challenge = await hashChallenge(salt, num, alg); 17 | expect(challenge).toBe(ab2hex(await crypto.subtle.digest(alg, new TextEncoder().encode(salt + num)))); 18 | }); 19 | }); 20 | 21 | describe('createTestChallenge', () => { 22 | test('should return a test challenge object', async () => { 23 | const data = await createTestChallenge(num, alg); 24 | expect(data.algorithm).toBe(alg); 25 | expect(data.signature).toBe(''); 26 | expect(data.salt).toBeDefined(); 27 | expect(data.challenge).toBeDefined(); 28 | }); 29 | }); 30 | 31 | describe('solveChallenge', () => { 32 | test('should solve challenge and return number', async () => { 33 | const data = await createTestChallenge(10, alg); 34 | const solution = await solveChallenge(data.challenge, data.salt, data.algorithm).promise; 35 | expect(solution?.number).toBeDefined(); 36 | expect(solution?.took).toBeDefined(); 37 | const challenge = await hashChallenge(data.salt, solution!.number, alg); 38 | expect(data.challenge).toBe(challenge); 39 | }); 40 | 41 | test('should solve challenge with max number', async () => { 42 | const data = await createTestChallenge(10, alg); 43 | const solution = await solveChallenge(data.challenge, data.salt, data.algorithm, 10, 0).promise; 44 | expect(solution?.number).toEqual(10); 45 | }); 46 | 47 | test('should return null if start is greater than random number', async () => { 48 | const data = await createTestChallenge(10, alg); 49 | const solution = await solveChallenge(data.challenge, data.salt, data.algorithm, 100, 20).promise; 50 | expect(solution).toEqual(null); 51 | }); 52 | 53 | test('should abort and return null', async () => { 54 | const data = await createTestChallenge(100, alg); 55 | const { controller, promise } = solveChallenge(data.challenge, data.salt, data.algorithm); 56 | process.nextTick(() => { 57 | controller.abort(); 58 | }); 59 | const solution = await promise; 60 | expect(controller.signal.aborted).toEqual(true) 61 | expect(solution).toEqual(null); 62 | }); 63 | }); -------------------------------------------------------------------------------- /tests/setup.ts: -------------------------------------------------------------------------------- 1 | import { webcrypto } from 'node:crypto'; 2 | 3 | // https://github.com/jsdom/jsdom/issues/1612 4 | Object.defineProperty(globalThis, 'crypto', { 5 | value: webcrypto, 6 | }); 7 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | "compilerOptions": { 4 | "target": "ESNext", 5 | "useDefineForClassFields": true, 6 | "module": "ESNext", 7 | "resolveJsonModule": true, 8 | /** 9 | * Typecheck JS in `.svelte` and `.js` files by default. 10 | * Disable checkJs if you'd like to use dynamic types in JS. 11 | * Note that setting allowJs false does not prevent the use 12 | * of JS in `.svelte` files. 13 | */ 14 | "allowJs": true, 15 | "declaration": true, 16 | "checkJs": true, 17 | "isolatedModules": true 18 | }, 19 | "include": ["src/**/*.d.ts", "src/**/*.ts", "src/**/*.svelte"], 20 | "references": [{ "path": "./tsconfig.node.json" }] 21 | } 22 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "bundler" 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /vite.bundle-i18n.config.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import { defineConfig } from 'vite'; 3 | import { svelte } from '@sveltejs/vite-plugin-svelte'; 4 | import { readFileSync } from 'node:fs'; 5 | import { minify } from 'csso'; 6 | 7 | // https://vitejs.dev/config/ 8 | export default defineConfig({ 9 | plugins: [ 10 | { 11 | name: 'minify-raw-css', 12 | enforce: 'pre', 13 | transform(code, id) { 14 | if (id.endsWith('.css?raw') || id.endsWith('.css&raw')) { 15 | const filePath = id.split('?')[0]; 16 | const fileContents = readFileSync(filePath, 'utf-8'); 17 | const minified = minify(fileContents).css; 18 | return `export default ${JSON.stringify(minified)}`; 19 | } 20 | }, 21 | }, 22 | svelte({ 23 | compilerOptions: { 24 | customElement: true, 25 | }, 26 | }), 27 | ], 28 | build: { 29 | emptyOutDir: false, 30 | target: 'modules', 31 | lib: { 32 | entry: 'src/entry-i18n.ts', 33 | name: 'altcha-i18n', 34 | formats: ['es', 'umd'], 35 | fileName: (format) => `altcha.i18n${format === 'es' ? '' : `.${format}`}.js`, 36 | }, 37 | outDir: 'dist', 38 | minify: 'esbuild', 39 | rollupOptions: { 40 | }, 41 | }, 42 | define: { 43 | ALTCHA_VERSION: JSON.stringify(process.env.npm_package_version), 44 | }, 45 | worker: { 46 | rollupOptions: { 47 | output: { 48 | entryFileNames: '[name].js', 49 | }, 50 | }, 51 | }, 52 | test: { 53 | setupFiles: ['./tests/setup.ts'], 54 | }, 55 | }); -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import { defineConfig } from 'vite'; 3 | import { svelte } from '@sveltejs/vite-plugin-svelte'; 4 | import { readFileSync } from 'node:fs'; 5 | import { minify } from 'csso'; 6 | 7 | // https://vitejs.dev/config/ 8 | export default defineConfig({ 9 | plugins: [ 10 | { 11 | name: 'minify-raw-css', 12 | enforce: 'pre', 13 | transform(code, id) { 14 | if (id.endsWith('.css?raw') || id.endsWith('.css&raw')) { 15 | const filePath = id.split('?')[0]; 16 | const fileContents = readFileSync(filePath, 'utf-8'); 17 | const minified = minify(fileContents).css; 18 | return `export default ${JSON.stringify(minified)}`; 19 | } 20 | }, 21 | }, 22 | svelte({ 23 | compilerOptions: { 24 | customElement: true, 25 | }, 26 | }), 27 | ], 28 | build: { 29 | target: 'modules', 30 | lib: { 31 | entry: 'src/entry.ts', 32 | name: 'altcha', 33 | formats: ['es', 'umd'], 34 | }, 35 | outDir: 'dist', 36 | minify: 'esbuild', 37 | rollupOptions: {}, 38 | }, 39 | define: { 40 | ALTCHA_VERSION: JSON.stringify(process.env.npm_package_version), 41 | }, 42 | worker: { 43 | rollupOptions: { 44 | output: { 45 | entryFileNames: '[name].js', 46 | }, 47 | }, 48 | }, 49 | test: { 50 | setupFiles: ['./tests/setup.ts'], 51 | }, 52 | }); -------------------------------------------------------------------------------- /vite.external.config.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import { defineConfig } from 'vite'; 3 | import { svelte } from '@sveltejs/vite-plugin-svelte'; 4 | 5 | // https://vitejs.dev/config/ 6 | export default defineConfig({ 7 | plugins: [ 8 | svelte({ 9 | compilerOptions: { 10 | customElement: true, 11 | }, 12 | }), 13 | ], 14 | build: { 15 | target: 'modules', 16 | lib: { 17 | entry: 'src/entry-external.ts', 18 | name: 'altcha', 19 | formats: ['es', 'umd'], 20 | }, 21 | outDir: 'dist_external', 22 | minify: 'esbuild', 23 | rollupOptions: {}, 24 | }, 25 | define: { 26 | ALTCHA_VERSION: JSON.stringify(process.env.npm_package_version), 27 | }, 28 | worker: { 29 | rollupOptions: { 30 | output: { 31 | entryFileNames: '[name].js', 32 | }, 33 | }, 34 | }, 35 | test: { 36 | setupFiles: ['./tests/setup.ts'], 37 | }, 38 | }); -------------------------------------------------------------------------------- /vite.i18n.config.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import { defineConfig, Plugin } from 'vite'; 3 | import { basename, join } from 'node:path'; 4 | import { writeFileSync } from 'node:fs'; 5 | 6 | const input = process.argv[process.argv.length - 1]; 7 | 8 | function generateDTs(): Plugin { 9 | let name: string = ''; 10 | let target: string = ''; 11 | return { 12 | name: 'generate-d-ts', 13 | configResolved(config) { 14 | const lib = config.build.lib; 15 | if (lib && lib.entry) { 16 | name = basename(String(lib.entry)).replace('.ts', ''); 17 | target = join(config.build.outDir, name + '.d.ts'); 18 | } 19 | }, 20 | async writeBundle() { 21 | if (target) { 22 | writeFileSync(target, `declare module 'altcha/i18n/${name}';`); 23 | } 24 | }, 25 | }; 26 | } 27 | 28 | // https://vitejs.dev/config/ 29 | export default defineConfig({ 30 | plugins: [ 31 | generateDTs(), 32 | ], 33 | build: { 34 | target: 'modules', 35 | outDir: 'dist_i18n', 36 | minify: 'esbuild', 37 | emptyOutDir: false, 38 | lib: { 39 | entry: input, 40 | fileName: '[name]', 41 | name: '[name]', 42 | formats: ['es', 'umd'], 43 | }, 44 | rollupOptions: {}, 45 | }, 46 | define: { 47 | ALTCHA_VERSION: JSON.stringify(process.env.npm_package_version), 48 | }, 49 | }); 50 | -------------------------------------------------------------------------------- /vite.plugins.config.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import { defineConfig, Plugin } from 'vite'; 3 | import { basename, join } from 'node:path'; 4 | import { writeFile } from 'node:fs/promises'; 5 | 6 | const input = process.argv[process.argv.length - 1]; 7 | 8 | function generateDTs(): Plugin { 9 | let name: string = ''; 10 | let target: string = ''; 11 | return { 12 | name: 'generate-d-ts', 13 | configResolved(config) { 14 | const lib = config.build.lib; 15 | if (lib && lib.entry) { 16 | name = basename(String(lib.entry)).replace('.ts', ''); 17 | target = join(config.build.outDir, name + '.d.ts'); 18 | } 19 | }, 20 | async writeBundle() { 21 | if (target) { 22 | await writeFile(target, `declare module 'altcha/${name}';`); 23 | } 24 | }, 25 | }; 26 | } 27 | 28 | // https://vitejs.dev/config/ 29 | export default defineConfig({ 30 | plugins: [ 31 | generateDTs(), 32 | ], 33 | build: { 34 | target: 'modules', 35 | outDir: 'dist_plugins', 36 | minify: 'esbuild', 37 | emptyOutDir: false, 38 | lib: { 39 | entry: input, 40 | fileName: '[name]', 41 | name: '[name]', 42 | formats: ['es', 'umd'], 43 | }, 44 | rollupOptions: {}, 45 | }, 46 | define: { 47 | ALTCHA_VERSION: JSON.stringify(process.env.npm_package_version), 48 | }, 49 | }); 50 | --------------------------------------------------------------------------------