diff --git a/plugin-designs/doxa-maps-spa/doxa-maps-spa.meta.json b/plugin-designs/doxa-maps-spa/doxa-maps-spa.meta.json index 864a240fa..6f404ec6d 100644 --- a/plugin-designs/doxa-maps-spa/doxa-maps-spa.meta.json +++ b/plugin-designs/doxa-maps-spa/doxa-maps-spa.meta.json @@ -5,6 +5,7 @@ "dashboard-plus-grid/dashboard-plus-grid", "research-map-plus-grid/research-map-plus-grid", "regions-dashboard/regions-mfe", + "gospel-internet/board", "my-upg-100-list/upg-100-mfe", "doxa-simple-map/doxa-simple-map", "cities-internet/connectivity-map", diff --git a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue index 4c76d29dd..0833a45f7 100644 --- a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue +++ b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue @@ -230,6 +230,9 @@ const NAV_MODEL = [ // worth more than a complete feature nobody can open, and its absence was the one real gap // between the Driver's seven and the six that shipped. { id: 'regions-dashboard', icon: 'map' }, + // 4. Gospel x Internet — the Driver asked for it INSIDE the gallery as one of its dashboards + // (2026-09-27): gospel access by language x how much of each country is online. + { id: 'gospel-internet', icon: 'chart' }, ] }, // Prayer Mobilization — now TWO rows only: the onboarding ramp's steps 2 and 3. Big Picture (former // step 1) moved to Dashboards above; Gospel Resources (former step 4) moved to Gospel Research below @@ -413,6 +416,10 @@ const TAB_DEFS = [ id: 'regions-dashboard', label: 'Regions', sub: 'regions and their countries', emoji: '🌐', bundle: 'regions-dashboard', profile: 'regions-mfe' }, + { + id: 'gospel-internet', label: 'Gospel x Internet', sub: 'gospel access through the internet', emoji: '📶', + bundle: 'gospel-internet', profile: 'board' + }, { id: 'upg-100', label: 'UPG-100 List', sub: 'my unreached list + posters', emoji: '📋', bundle: 'my-upg-100-list', profile: 'upg-100-mfe' @@ -449,7 +456,7 @@ const HEAVY_ELEMENTS = new Set([ 'my-upg-100-list-map', 'doxa-map', 'doxa-maps-spa', // composites that NEST a map, so they own a context too (measured, see above) 'dashboard-plus-grid', 'research-dashboard-map', 'demo-map', 'all-people-groups', - 'country-posters-map', 'key-cities-map', 'research-map-plus-grid' + 'country-posters-map', 'key-cities-map', 'research-map-plus-grid', 'gospel-internet-board' ]) // SCROLL-STACK ELEMENTS — the rows this shell mounts WITHOUT the fixed-viewport inline style diff --git a/plugin-designs/doxa-maps-spa/src/strings.js b/plugin-designs/doxa-maps-spa/src/strings.js index a69d0ebc0..f1915ec70 100644 --- a/plugin-designs/doxa-maps-spa/src/strings.js +++ b/plugin-designs/doxa-maps-spa/src/strings.js @@ -24,6 +24,7 @@ export const STRINGS = { 'tab.cities-internet': 'Cities with Internet', 'sub.cities-internet': 'connectivity of key cities', 'tab.gospel-resources': 'Gospel Resources', 'sub.gospel-resources': 'resources by place', 'tab.regions-dashboard': 'Regions', 'sub.regions-dashboard': 'regions and their countries', + 'tab.gospel-internet': "Gospel x Internet", 'sub.gospel-internet': "gospel access through the internet", 'tab.upg-100': 'UPG-100 List', 'sub.upg-100': 'my unreached list + posters', navLabel: 'Research maps', meta: '{n} maps', loading: 'Loading {label}…', loadFailed: 'Could not load {label}.', manifestHint: 'This tab is composed from manifest.json — build the tree, or serve the built tree, to load it.', @@ -44,6 +45,7 @@ export const STRINGS = { 'tab.cities-internet': 'Ciudades con Internet', 'sub.cities-internet': 'conectividad de ciudades clave', 'tab.gospel-resources': 'Recursos del Evangelio', 'sub.gospel-resources': 'recursos por lugar', 'tab.regions-dashboard': 'Regiones', 'sub.regions-dashboard': 'regiones y sus países', + 'tab.gospel-internet': "Evangelio e Internet", 'sub.gospel-internet': "acceso al evangelio por internet", 'tab.upg-100': 'Lista UPG-100', 'sub.upg-100': 'mi lista de no alcanzados + carteles', navLabel: 'Mapas de investigación', meta: '{n} mapas', loading: 'Cargando {label}…', loadFailed: 'No se pudo cargar {label}.', manifestHint: 'Esta pestaña se compone a partir de manifest.json: compila el árbol o sirve el árbol compilado para cargarla.', @@ -64,6 +66,7 @@ export const STRINGS = { 'tab.cities-internet': 'Villes avec Internet', 'sub.cities-internet': 'connectivité des villes clés', 'tab.gospel-resources': "Ressources de l'Évangile", 'sub.gospel-resources': 'ressources par lieu', 'tab.regions-dashboard': 'Régions', 'sub.regions-dashboard': 'régions et leurs pays', + 'tab.gospel-internet': "Évangile et Internet", 'sub.gospel-internet': "l’accès à l’Évangile par internet", 'tab.upg-100': 'Liste UPG-100', 'sub.upg-100': 'ma liste des non atteints + affiches', navLabel: 'Cartes de recherche', meta: '{n} cartes', loading: 'Chargement de {label}…', loadFailed: 'Impossible de charger {label}.', manifestHint: "Cet onglet est composé à partir de manifest.json : construisez l'arborescence ou servez l'arborescence construite pour le charger.", @@ -84,6 +87,7 @@ export const STRINGS = { 'tab.cities-internet': 'Städte mit Internet', 'sub.cities-internet': 'Konnektivität wichtiger Städte', 'tab.gospel-resources': 'Evangeliumsressourcen', 'sub.gospel-resources': 'Ressourcen nach Ort', 'tab.regions-dashboard': 'Regionen', 'sub.regions-dashboard': 'Regionen und ihre Länder', + 'tab.gospel-internet': "Evangelium × Internet", 'sub.gospel-internet': "Zugang zum Evangelium über das Internet", 'tab.upg-100': 'UPG-100-Liste', 'sub.upg-100': 'meine Liste der Unerreichten + Poster', navLabel: 'Forschungskarten', meta: '{n} Karten', loading: '{label} wird geladen…', loadFailed: '{label} konnte nicht geladen werden.', manifestHint: 'Dieser Tab wird aus manifest.json zusammengesetzt – bauen Sie den Baum oder stellen Sie den gebauten Baum bereit, um ihn zu laden.', @@ -104,6 +108,7 @@ export const STRINGS = { 'tab.cities-internet': 'Cidades com Internet', 'sub.cities-internet': 'conectividade das principais cidades', 'tab.gospel-resources': 'Recursos do Evangelho', 'sub.gospel-resources': 'recursos por lugar', 'tab.regions-dashboard': 'Regiões', 'sub.regions-dashboard': 'regiões e seus países', + 'tab.gospel-internet': "Evangelho e Internet", 'sub.gospel-internet': "acesso ao evangelho pela internet", 'tab.upg-100': 'Lista UPG-100', 'sub.upg-100': 'minha lista de não alcançados + cartazes', navLabel: 'Mapas de pesquisa', meta: '{n} mapas', loading: 'Carregando {label}…', loadFailed: 'Não foi possível carregar {label}.', manifestHint: 'Esta aba é composta a partir do manifest.json — compile a árvore ou sirva a árvore compilada para carregá-la.', @@ -126,6 +131,7 @@ export const STRINGS = { 'tab.cities-internet': 'Città con Internet', 'sub.cities-internet': 'connettività delle città chiave', 'tab.gospel-resources': 'Risorse del Vangelo', 'sub.gospel-resources': 'risorse per luogo', 'tab.regions-dashboard': 'Regioni', 'sub.regions-dashboard': 'regioni e i loro paesi', + 'tab.gospel-internet': "Vangelo e Internet", 'sub.gospel-internet': "l’accesso al vangelo tramite internet", 'tab.upg-100': 'Lista UPG-100', 'sub.upg-100': 'la mia lista dei non raggiunti + poster', navLabel: 'Mappe di ricerca', meta: '{n} mappe', loading: 'Caricamento di {label}…', loadFailed: 'Impossibile caricare {label}.', manifestHint: "Questa scheda è composta da manifest.json: compila l'albero o pubblica l'albero compilato per caricarla.", @@ -146,6 +152,7 @@ export const STRINGS = { 'tab.cities-internet': 'Orașe cu internet', 'sub.cities-internet': 'conectivitatea orașelor-cheie', 'tab.gospel-resources': 'Resurse ale Evangheliei', 'sub.gospel-resources': 'resurse după loc', 'tab.regions-dashboard': 'Regiuni', 'sub.regions-dashboard': 'regiunile și țările lor', + 'tab.gospel-internet': "Evanghelie și Internet", 'sub.gospel-internet': "accesul la Evanghelie prin internet", 'tab.upg-100': 'Lista UPG-100', 'sub.upg-100': 'lista mea de neatinși + afișe', navLabel: 'Hărți de cercetare', meta: '{n} hărți', loading: 'Se încarcă {label}…', loadFailed: '{label} nu a putut fi încărcat.', manifestHint: 'Această filă este compusă din manifest.json — construiți arborele sau serviți arborele construit pentru a o încărca.', @@ -166,6 +173,7 @@ export const STRINGS = { 'tab.cities-internet': 'Города с интернетом', 'sub.cities-internet': 'подключённость ключевых городов', 'tab.gospel-resources': 'Евангельские ресурсы', 'sub.gospel-resources': 'ресурсы по местам', 'tab.regions-dashboard': 'Регионы', 'sub.regions-dashboard': 'регионы и их страны', + 'tab.gospel-internet': "Евангелие и интернет", 'sub.gospel-internet': "доступ к Евангелию через интернет", 'tab.upg-100': 'Список UPG-100', 'sub.upg-100': 'мой список недостигнутых + плакаты', navLabel: 'Исследовательские карты', meta: 'Карт: {n}', loading: 'Загрузка: {label}…', loadFailed: 'Не удалось загрузить: {label}.', manifestHint: 'Эта вкладка собирается из manifest.json — соберите дерево или разместите собранное дерево, чтобы загрузить её.', @@ -186,6 +194,7 @@ export const STRINGS = { 'tab.cities-internet': 'مدن متصلة بالإنترنت', 'sub.cities-internet': 'اتصال المدن الرئيسية', 'tab.gospel-resources': 'موارد الإنجيل', 'sub.gospel-resources': 'الموارد حسب المكان', 'tab.regions-dashboard': 'المناطق', 'sub.regions-dashboard': 'المناطق ودولها', + 'tab.gospel-internet': "الإنجيل والإنترنت", 'sub.gospel-internet': "الوصول إلى الإنجيل عبر الإنترنت", 'tab.upg-100': 'قائمة UPG-100', 'sub.upg-100': 'قائمتي لغير المُبشَّرين + ملصقات', navLabel: 'خرائط البحث', meta: 'عدد الخرائط: {n}', loading: 'جارٍ تحميل {label}…', loadFailed: 'تعذّر تحميل {label}.', manifestHint: 'تُبنى علامة التبويب هذه من manifest.json — ابنِ الشجرة أو قدّم الشجرة المبنية لتحميلها.', @@ -206,6 +215,7 @@ export const STRINGS = { 'tab.cities-internet': 'इंटरनेट वाले शहर', 'sub.cities-internet': 'प्रमुख शहरों की कनेक्टिविटी', 'tab.gospel-resources': 'सुसमाचार संसाधन', 'sub.gospel-resources': 'स्थान के अनुसार संसाधन', 'tab.regions-dashboard': 'क्षेत्र', 'sub.regions-dashboard': 'क्षेत्र और उनके देश', + 'tab.gospel-internet': "सुसमाचार और इंटरनेट", 'sub.gospel-internet': "इंटरनेट के माध्यम से सुसमाचार तक पहुँच", 'tab.upg-100': 'UPG-100 सूची', 'sub.upg-100': 'मेरी अप्राप्त सूची + पोस्टर', navLabel: 'शोध मानचित्र', meta: '{n} मानचित्र', loading: '{label} लोड हो रहा है…', loadFailed: '{label} लोड नहीं हो सका।', manifestHint: 'यह टैब manifest.json से बनता है — इसे लोड करने के लिए ट्री बनाएँ या बना हुआ ट्री सर्व करें।', @@ -226,6 +236,7 @@ export const STRINGS = { 'tab.cities-internet': '有互联网的城市', 'sub.cities-internet': '主要城市的网络连接', 'tab.gospel-resources': '福音资源', 'sub.gospel-resources': '按地点划分的资源', 'tab.regions-dashboard': '区域', 'sub.regions-dashboard': '区域及其国家', + 'tab.gospel-internet': "福音与互联网", 'sub.gospel-internet': "通过互联网接触福音", 'tab.upg-100': 'UPG-100 名单', 'sub.upg-100': '我的未得之民名单 + 海报', navLabel: '研究地图', meta: '{n} 张地图', loading: '正在加载{label}…', loadFailed: '无法加载{label}。', manifestHint: '此标签页由 manifest.json 组成——请构建目录树或提供已构建的目录树以加载它。', diff --git a/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js b/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js index dcf31be88..2c1a5d5d9 100644 --- a/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js +++ b/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js @@ -2,23 +2,23 @@ * @vue/shared v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function Ro(e){const t=Object.create(null);for(const o of e.split(","))t[o]=1;return o=>o in t}const V={},nt=[],xe=()=>{},Ss=()=>!1,zt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Bt=e=>e.startsWith("onUpdate:"),J=Object.assign,Eo=(e,t)=>{const o=e.indexOf(t);o>-1&&e.splice(o,1)},Oi=Object.prototype.hasOwnProperty,I=(e,t)=>Oi.call(e,t),C=Array.isArray,ze=e=>ht(e)==="[object Map]",Kt=e=>ht(e)==="[object Set]",Cs=e=>ht(e)==="[object Date]",R=e=>typeof e=="function",q=e=>typeof e=="string",me=e=>typeof e=="symbol",j=e=>e!==null&&typeof e=="object",Ts=e=>(j(e)||R(e))&&R(e.then)&&R(e.catch),Ns=Object.prototype.toString,ht=e=>Ns.call(e),Fi=e=>ht(e).slice(8,-1),qt=e=>ht(e)==="[object Object]",Ao=e=>q(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bt=Ro(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Zt=e=>{const t=Object.create(null);return o=>t[o]||(t[o]=e(o))},Mi=/-\w/g,oe=Zt(e=>e.replace(Mi,t=>t.slice(1).toUpperCase())),Di=/\B([A-Z])/g,be=Zt(e=>e.replace(Di,"-$1").toLowerCase()),Xt=Zt(e=>e.charAt(0).toUpperCase()+e.slice(1)),Oo=Zt(e=>e?`on${Xt(e)}`:""),Me=(e,t)=>!Object.is(e,t),Fo=(e,...t)=>{for(let o=0;o{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:o})},Ii=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Es=e=>{const t=q(e)?Number(e):NaN;return isNaN(t)?e:t};let As;const Jt=()=>As||(As=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Mo(e){if(C(e)){const t={};for(let o=0;o{if(o){const s=o.split(ji);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Be(e){let t="";if(q(e))t=e;else if(C(e))for(let o=0;o!!(e&&e.__v_isRef===!0),F=e=>q(e)?e:e==null?"":C(e)||j(e)&&(e.toString===Ns||!R(e.toString))?Ms(e)?F(e.value):JSON.stringify(e,Ds,2):String(e),Ds=(e,t)=>Ms(t)?Ds(e,t.value):ze(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[s,n],i)=>(o[Do(s,i)+" =>"]=n,o),{})}:Kt(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>Do(o))}:me(t)?Do(t):j(t)&&!C(t)&&!qt(t)?String(t):t,Do=(e,t="")=>{var o;return me(e)?`Symbol(${(o=e.description)!=null?o:t})`:e};/** +**/function Ro(e){const t=Object.create(null);for(const o of e.split(","))t[o]=1;return o=>o in t}const V={},nt=[],xe=()=>{},Ss=()=>!1,zt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Bt=e=>e.startsWith("onUpdate:"),J=Object.assign,Eo=(e,t)=>{const o=e.indexOf(t);o>-1&&e.splice(o,1)},Oi=Object.prototype.hasOwnProperty,D=(e,t)=>Oi.call(e,t),C=Array.isArray,ze=e=>ht(e)==="[object Map]",Kt=e=>ht(e)==="[object Set]",Cs=e=>ht(e)==="[object Date]",R=e=>typeof e=="function",q=e=>typeof e=="string",me=e=>typeof e=="symbol",j=e=>e!==null&&typeof e=="object",Ts=e=>(j(e)||R(e))&&R(e.then)&&R(e.catch),Ns=Object.prototype.toString,ht=e=>Ns.call(e),Fi=e=>ht(e).slice(8,-1),qt=e=>ht(e)==="[object Object]",Ao=e=>q(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bt=Ro(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Zt=e=>{const t=Object.create(null);return o=>t[o]||(t[o]=e(o))},Mi=/-\w/g,oe=Zt(e=>e.replace(Mi,t=>t.slice(1).toUpperCase())),Ii=/\B([A-Z])/g,be=Zt(e=>e.replace(Ii,"-$1").toLowerCase()),Xt=Zt(e=>e.charAt(0).toUpperCase()+e.slice(1)),Oo=Zt(e=>e?`on${Xt(e)}`:""),Me=(e,t)=>!Object.is(e,t),Fo=(e,...t)=>{for(let o=0;o{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:o})},Di=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Es=e=>{const t=q(e)?Number(e):NaN;return isNaN(t)?e:t};let As;const Jt=()=>As||(As=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Mo(e){if(C(e)){const t={};for(let o=0;o{if(o){const s=o.split(ji);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Be(e){let t="";if(q(e))t=e;else if(C(e))for(let o=0;o!!(e&&e.__v_isRef===!0),F=e=>q(e)?e:e==null?"":C(e)||j(e)&&(e.toString===Ns||!R(e.toString))?Ms(e)?F(e.value):JSON.stringify(e,Is,2):String(e),Is=(e,t)=>Ms(t)?Is(e,t.value):ze(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[s,n],i)=>(o[Io(s,i)+" =>"]=n,o),{})}:Kt(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>Io(o))}:me(t)?Io(t):j(t)&&!C(t)&&!qt(t)?String(t):t,Io=(e,t="")=>{var o;return me(e)?`Symbol(${(o=e.description)!=null?o:t})`:e};/** * @vue/reactivity v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let se;class zi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&se&&(se.active?(this.parent=se,this.index=(se.scopes||(se.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,o;if(this.scopes){const s=this.scopes.slice();for(t=0,o=s.length;t0&&--this._on===0){if(se===this)se=this.prevScope;else{let t=se;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let o,s;for(o=0,s=this.effects.length;o0)return;if(_t){let t=_t;for(_t=void 0;t;){const o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;mt;){let t=mt;for(mt=void 0;t;){const o=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=o}}if(e)throw e}function Gs(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ws(e){let t,o=e.depsTail,s=o;for(;s;){const n=s.prevDep;s.version===-1?(s===o&&(o=n),Wo(s),Ki(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=n}e.deps=t,e.depsTail=o}function Go(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Us(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Us(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===$t)||(e.globalVersion=$t,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Go(e))))return;e.flags|=2;const t=e.dep,o=B,s=_e;B=e,_e=!0;try{Gs(e);const n=e.fn(e._value);(t.version===0||Me(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(n){throw t.version++,n}finally{B=o,_e=s,Ws(e),e.flags&=-3}}function Wo(e,t=!1){const{dep:o,prevSub:s,nextSub:n}=e;if(s&&(s.nextSub=n,e.prevSub=void 0),n&&(n.prevSub=s,e.nextSub=void 0),o.subs===e&&(o.subs=s,!s&&o.computed)){o.computed.flags&=-5;for(let i=o.computed.deps;i;i=i.nextDep)Wo(i,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function Ki(e){const{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}let _e=!0;const Vs=[];function we(){Vs.push(_e),_e=!1}function Pe(){const e=Vs.pop();_e=e===void 0?!0:e}function zs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const o=B;B=void 0;try{t()}finally{B=o}}}let $t=0;class qi{constructor(t,o){this.sub=t,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Bs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!B||!_e||B===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==B)o=this.activeLink=new qi(B,this),B.deps?(o.prevDep=B.depsTail,B.depsTail.nextDep=o,B.depsTail=o):B.deps=B.depsTail=o,Ks(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){const s=o.nextDep;s.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=s),o.prevDep=B.depsTail,o.nextDep=void 0,B.depsTail.nextDep=o,B.depsTail=o,B.deps===o&&(B.deps=s)}return o}trigger(t){this.version++,$t++,this.notify(t)}notify(t){Ho();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{jo()}}}function Ks(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Ks(s)}const o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}const Uo=new WeakMap,Xe=Symbol(""),Vo=Symbol(""),vt=Symbol("");function ae(e,t,o){if(_e&&B){let s=Uo.get(e);s||Uo.set(e,s=new Map);let n=s.get(o);n||(s.set(o,n=new Bs),n.map=s,n.key=o),n.track()}}function De(e,t,o,s,n,i){const a=Uo.get(e);if(!a){$t++;return}const r=l=>{l&&l.trigger()};if(Ho(),t==="clear")a.forEach(r);else{const l=C(e),u=l&&Ao(o);if(l&&o==="length"){const d=Number(s);a.forEach((g,x)=>{(x==="length"||x===vt||!me(x)&&x>=d)&&r(g)})}else switch((o!==void 0||a.has(void 0))&&r(a.get(o)),u&&r(a.get(vt)),t){case"add":l?u&&r(a.get("length")):(r(a.get(Xe)),ze(e)&&r(a.get(Vo)));break;case"delete":l||(r(a.get(Xe)),ze(e)&&r(a.get(Vo)));break;case"set":ze(e)&&r(a.get(Xe));break}}jo()}function it(e){const t=H(e);return t===e?t:(ae(t,"iterate",vt),$e(e)?t:t.map(He))}function Qt(e){return ae(e=H(e),"iterate",vt),e}function ke(e,t){return Ke(e)?at(Je(e)?He(t):t):He(t)}const Zi={__proto__:null,[Symbol.iterator](){return zo(this,Symbol.iterator,e=>ke(this,e))},concat(...e){return it(this).concat(...e.map(t=>C(t)?it(t):t))},entries(){return zo(this,"entries",e=>(e[1]=ke(this,e[1]),e))},every(e,t){return Ie(this,"every",e,t,void 0,arguments)},filter(e,t){return Ie(this,"filter",e,t,o=>o.map(s=>ke(this,s)),arguments)},find(e,t){return Ie(this,"find",e,t,o=>ke(this,o),arguments)},findIndex(e,t){return Ie(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ie(this,"findLast",e,t,o=>ke(this,o),arguments)},findLastIndex(e,t){return Ie(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ie(this,"forEach",e,t,void 0,arguments)},includes(...e){return Bo(this,"includes",e)},indexOf(...e){return Bo(this,"indexOf",e)},join(e){return it(this).join(e)},lastIndexOf(...e){return Bo(this,"lastIndexOf",e)},map(e,t){return Ie(this,"map",e,t,void 0,arguments)},pop(){return yt(this,"pop")},push(...e){return yt(this,"push",e)},reduce(e,...t){return qs(this,"reduce",e,t)},reduceRight(e,...t){return qs(this,"reduceRight",e,t)},shift(){return yt(this,"shift")},some(e,t){return Ie(this,"some",e,t,void 0,arguments)},splice(...e){return yt(this,"splice",e)},toReversed(){return it(this).toReversed()},toSorted(e){return it(this).toSorted(e)},toSpliced(...e){return it(this).toSpliced(...e)},unshift(...e){return yt(this,"unshift",e)},values(){return zo(this,"values",e=>ke(this,e))}};function zo(e,t,o){const s=Qt(e),n=s[t]();return s!==e&&!$e(e)&&(n._next=n.next,n.next=()=>{const i=n._next();return i.done||(i.value=o(i.value)),i}),n}const Xi=Array.prototype;function Ie(e,t,o,s,n,i){const a=Qt(e),r=a!==e&&!$e(e),l=a[t];if(l!==Xi[t]){const g=l.apply(e,i);return r?He(g):g}let u=o;a!==e&&(r?u=function(g,x){return o.call(this,ke(e,g),x,e)}:o.length>2&&(u=function(g,x){return o.call(this,g,x,e)}));const d=l.call(a,u,s);return r&&n?n(d):d}function qs(e,t,o,s){const n=Qt(e),i=n!==e&&!$e(e);let a=o,r=!1;n!==e&&(i?(r=s.length===0,a=function(u,d,g){return r&&(r=!1,u=ke(e,u)),o.call(this,u,ke(e,d),g,e)}):o.length>3&&(a=function(u,d,g){return o.call(this,u,d,g,e)}));const l=n[t](a,...s);return r?ke(e,l):l}function Bo(e,t,o){const s=H(e);ae(s,"iterate",vt);const n=s[t](...o);return(n===-1||n===!1)&&Xo(o[0])?(o[0]=H(o[0]),s[t](...o)):n}function yt(e,t,o=[]){we(),Ho();const s=H(e)[t].apply(e,o);return jo(),Pe(),s}const Ji=Ro("__proto__,__v_isRef,__isVue"),Zs=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(me));function Yi(e){me(e)||(e=String(e));const t=H(this);return ae(t,"has",e),t.hasOwnProperty(e)}class Xs{constructor(t=!1,o=!1){this._isReadonly=t,this._isShallow=o}get(t,o,s){if(o==="__v_skip")return t.__v_skip;const n=this._isReadonly,i=this._isShallow;if(o==="__v_isReactive")return!n;if(o==="__v_isReadonly")return n;if(o==="__v_isShallow")return i;if(o==="__v_raw")return s===(n?i?on:tn:i?en:Qs).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const a=C(t);if(!n){let l;if(a&&(l=Zi[o]))return l;if(o==="hasOwnProperty")return Yi}const r=Reflect.get(t,o,re(t)?t:s);if((me(o)?Zs.has(o):Ji(o))||(n||ae(t,"get",o),i))return r;if(re(r)){const l=a&&Ao(o)?r:r.value;return n&&j(l)?Zo(l):l}return j(r)?n?Zo(r):qo(r):r}}class Js extends Xs{constructor(t=!1){super(!1,t)}set(t,o,s,n){let i=t[o];const a=C(t)&&Ao(o);if(!this._isShallow){const u=Ke(i);if(!$e(s)&&!Ke(s)&&(i=H(i),s=H(s)),!a&&re(i)&&!re(s))return u||(i.value=s),!0}const r=a?Number(o)e,eo=e=>Reflect.getPrototypeOf(e);function sa(e,t,o){return function(...s){const n=this.__v_raw,i=H(n),a=ze(i),r=e==="entries"||e===Symbol.iterator&&a,l=e==="keys"&&a,u=n[e](...s),d=o?Ko:t?at:He;return!t&&ae(i,"iterate",l?Vo:Xe),J(Object.create(u),{next(){const{value:g,done:x}=u.next();return x?{value:g,done:x}:{value:r?[d(g[0]),d(g[1])]:d(g),done:x}}})}}function to(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function na(e,t){const o={get(n){const i=this.__v_raw,a=H(i),r=H(n);e||(Me(n,r)&&ae(a,"get",n),ae(a,"get",r));const{has:l}=eo(a),u=t?Ko:e?at:He;if(l.call(a,n))return u(i.get(n));if(l.call(a,r))return u(i.get(r));i!==a&&i.get(n)},get size(){const n=this.__v_raw;return!e&&ae(H(n),"iterate",Xe),n.size},has(n){const i=this.__v_raw,a=H(i),r=H(n);return e||(Me(n,r)&&ae(a,"has",n),ae(a,"has",r)),n===r?i.has(n):i.has(n)||i.has(r)},forEach(n,i){const a=this,r=a.__v_raw,l=H(r),u=t?Ko:e?at:He;return!e&&ae(l,"iterate",Xe),r.forEach((d,g)=>n.call(i,u(d),u(g),a))}};return J(o,e?{add:to("add"),set:to("set"),delete:to("delete"),clear:to("clear")}:{add(n){const i=H(this),a=eo(i),r=H(n),l=!t&&!$e(n)&&!Ke(n)?r:n;return a.has.call(i,l)||Me(n,l)&&a.has.call(i,n)||Me(r,l)&&a.has.call(i,r)||(i.add(l),De(i,"add",l,l)),this},set(n,i){!t&&!$e(i)&&!Ke(i)&&(i=H(i));const a=H(this),{has:r,get:l}=eo(a);let u=r.call(a,n);u||(n=H(n),u=r.call(a,n));const d=l.call(a,n);return a.set(n,i),u?Me(i,d)&&De(a,"set",n,i):De(a,"add",n,i),this},delete(n){const i=H(this),{has:a,get:r}=eo(i);let l=a.call(i,n);l||(n=H(n),l=a.call(i,n)),r&&r.call(i,n);const u=i.delete(n);return l&&De(i,"delete",n,void 0),u},clear(){const n=H(this),i=n.size!==0,a=n.clear();return i&&De(n,"clear",void 0,void 0),a}}),["keys","values","entries",Symbol.iterator].forEach(n=>{o[n]=sa(n,e,t)}),o}function oo(e,t){const o=na(e,t);return(s,n,i)=>n==="__v_isReactive"?!e:n==="__v_isReadonly"?e:n==="__v_raw"?s:Reflect.get(I(o,n)&&n in s?o:s,n,i)}const ia={get:oo(!1,!1)},aa={get:oo(!1,!0)},ra={get:oo(!0,!1)},la={get:oo(!0,!0)},Qs=new WeakMap,en=new WeakMap,tn=new WeakMap,on=new WeakMap;function ca(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function qo(e){return Ke(e)?e:so(e,!1,Qi,ia,Qs)}function pa(e){return so(e,!1,ta,aa,en)}function Zo(e){return so(e,!0,ea,ra,tn)}function Zc(e){return so(e,!0,oa,la,on)}function so(e,t,o,s,n){if(!j(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const i=n.get(e);if(i)return i;const a=ca(Fi(e));if(a===0)return e;const r=new Proxy(e,a===2?s:o);return n.set(e,r),r}function Je(e){return Ke(e)?Je(e.__v_raw):!!(e&&e.__v_isReactive)}function Ke(e){return!!(e&&e.__v_isReadonly)}function $e(e){return!!(e&&e.__v_isShallow)}function Xo(e){return e?!!e.__v_raw:!1}function H(e){const t=e&&e.__v_raw;return t?H(t):e}function da(e){return!I(e,"__v_skip")&&Object.isExtensible(e)&&Rs(e,"__v_skip",!0),e}const He=e=>j(e)?qo(e):e,at=e=>j(e)?Zo(e):e;function re(e){return e?e.__v_isRef===!0:!1}function sn(e){return re(e)?e.value:e}const ua={get:(e,t,o)=>t==="__v_raw"?e:sn(Reflect.get(e,t,o)),set:(e,t,o,s)=>{const n=e[t];return re(n)&&!re(o)?(n.value=o,!0):Reflect.set(e,t,o,s)}};function nn(e){return Je(e)?e:new Proxy(e,ua)}class fa{constructor(t,o,s){this.fn=t,this.setter=o,this._value=void 0,this.dep=new Bs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=$t-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!o,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&B!==this)return js(this,!0),!0}get value(){const t=this.dep.track();return Us(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ga(e,t,o=!1){let s,n;return R(e)?s=e:(s=e.get,n=e.set),new fa(s,n,o)}const no={},io=new WeakMap;let Ye;function ha(e,t=!1,o=Ye){if(o){let s=io.get(o);s||io.set(o,s=[]),s.push(e)}}function ba(e,t,o=V){const{immediate:s,deep:n,once:i,scheduler:a,augmentJob:r,call:l}=o,u=S=>n?S:$e(S)||n===!1||n===0?je(S,1):je(S);let d,g,x,P,G=!1,E=!1;if(re(e)?(g=()=>e.value,G=$e(e)):Je(e)?(g=()=>u(e),G=!0):C(e)?(E=!0,G=e.some(S=>Je(S)||$e(S)),g=()=>e.map(S=>{if(re(S))return S.value;if(Je(S))return u(S);if(R(S))return l?l(S,2):S()})):R(e)?t?g=l?()=>l(e,2):e:g=()=>{if(x){we();try{x()}finally{Pe()}}const S=Ye;Ye=d;try{return l?l(e,3,[P]):e(P)}finally{Ye=S}}:g=xe,t&&n){const S=g,te=n===!0?1/0:n;g=()=>je(S(),te)}const Y=Bi(),Z=()=>{d.stop(),Y&&Y.active&&Eo(Y.effects,d)};if(i&&t){const S=t;t=(...te)=>{const Ne=S(...te);return Z(),Ne}}let D=E?new Array(e.length).fill(no):no;const W=S=>{if(!(!(d.flags&1)||!d.dirty&&!S))if(t){const te=d.run();if(S||n||G||(E?te.some((Ne,Re)=>Me(Ne,D[Re])):Me(te,D))){x&&x();const Ne=Ye;Ye=d;try{const Re=[te,D===no?void 0:E&&D[0]===no?[]:D,P];D=te,l?l(t,3,Re):t(...Re)}finally{Ye=Ne}}}else d.run()};return r&&r(W),d=new Is(g),d.scheduler=a?()=>a(W,!1):W,P=S=>ha(S,!1,d),x=d.onStop=()=>{const S=io.get(d);if(S){if(l)l(S,4);else for(const te of S)te();io.delete(d)}},t?s?W(!0):D=d.run():a?a(W.bind(null,!0),!0):d.run(),Z.pause=d.pause.bind(d),Z.resume=d.resume.bind(d),Z.stop=Z,Z}function je(e,t=1/0,o){if(t<=0||!j(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,re(e))je(e.value,t,o);else if(C(e))for(let s=0;s{je(s,t,o)});else if(qt(e)){for(const s in e)je(e[s],t,o);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&je(e[s],t,o)}return e}/** +**/let se;class zi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&se&&(se.active?(this.parent=se,this.index=(se.scopes||(se.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,o;if(this.scopes){const s=this.scopes.slice();for(t=0,o=s.length;t0&&--this._on===0){if(se===this)se=this.prevScope;else{let t=se;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let o,s;for(o=0,s=this.effects.length;o0)return;if(_t){let t=_t;for(_t=void 0;t;){const o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;mt;){let t=mt;for(mt=void 0;t;){const o=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=o}}if(e)throw e}function Gs(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ws(e){let t,o=e.depsTail,s=o;for(;s;){const n=s.prevDep;s.version===-1?(s===o&&(o=n),Wo(s),Ki(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=n}e.deps=t,e.depsTail=o}function Go(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Us(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Us(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===$t)||(e.globalVersion=$t,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Go(e))))return;e.flags|=2;const t=e.dep,o=B,s=_e;B=e,_e=!0;try{Gs(e);const n=e.fn(e._value);(t.version===0||Me(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(n){throw t.version++,n}finally{B=o,_e=s,Ws(e),e.flags&=-3}}function Wo(e,t=!1){const{dep:o,prevSub:s,nextSub:n}=e;if(s&&(s.nextSub=n,e.prevSub=void 0),n&&(n.prevSub=s,e.nextSub=void 0),o.subs===e&&(o.subs=s,!s&&o.computed)){o.computed.flags&=-5;for(let i=o.computed.deps;i;i=i.nextDep)Wo(i,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function Ki(e){const{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}let _e=!0;const Vs=[];function we(){Vs.push(_e),_e=!1}function Pe(){const e=Vs.pop();_e=e===void 0?!0:e}function zs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const o=B;B=void 0;try{t()}finally{B=o}}}let $t=0;class qi{constructor(t,o){this.sub=t,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Bs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!B||!_e||B===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==B)o=this.activeLink=new qi(B,this),B.deps?(o.prevDep=B.depsTail,B.depsTail.nextDep=o,B.depsTail=o):B.deps=B.depsTail=o,Ks(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){const s=o.nextDep;s.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=s),o.prevDep=B.depsTail,o.nextDep=void 0,B.depsTail.nextDep=o,B.depsTail=o,B.deps===o&&(B.deps=s)}return o}trigger(t){this.version++,$t++,this.notify(t)}notify(t){Ho();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{jo()}}}function Ks(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Ks(s)}const o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}const Uo=new WeakMap,Xe=Symbol(""),Vo=Symbol(""),vt=Symbol("");function ae(e,t,o){if(_e&&B){let s=Uo.get(e);s||Uo.set(e,s=new Map);let n=s.get(o);n||(s.set(o,n=new Bs),n.map=s,n.key=o),n.track()}}function Ie(e,t,o,s,n,i){const a=Uo.get(e);if(!a){$t++;return}const r=l=>{l&&l.trigger()};if(Ho(),t==="clear")a.forEach(r);else{const l=C(e),u=l&&Ao(o);if(l&&o==="length"){const d=Number(s);a.forEach((g,x)=>{(x==="length"||x===vt||!me(x)&&x>=d)&&r(g)})}else switch((o!==void 0||a.has(void 0))&&r(a.get(o)),u&&r(a.get(vt)),t){case"add":l?u&&r(a.get("length")):(r(a.get(Xe)),ze(e)&&r(a.get(Vo)));break;case"delete":l||(r(a.get(Xe)),ze(e)&&r(a.get(Vo)));break;case"set":ze(e)&&r(a.get(Xe));break}}jo()}function it(e){const t=H(e);return t===e?t:(ae(t,"iterate",vt),$e(e)?t:t.map(He))}function Qt(e){return ae(e=H(e),"iterate",vt),e}function ke(e,t){return Ke(e)?at(Je(e)?He(t):t):He(t)}const Zi={__proto__:null,[Symbol.iterator](){return zo(this,Symbol.iterator,e=>ke(this,e))},concat(...e){return it(this).concat(...e.map(t=>C(t)?it(t):t))},entries(){return zo(this,"entries",e=>(e[1]=ke(this,e[1]),e))},every(e,t){return De(this,"every",e,t,void 0,arguments)},filter(e,t){return De(this,"filter",e,t,o=>o.map(s=>ke(this,s)),arguments)},find(e,t){return De(this,"find",e,t,o=>ke(this,o),arguments)},findIndex(e,t){return De(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return De(this,"findLast",e,t,o=>ke(this,o),arguments)},findLastIndex(e,t){return De(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return De(this,"forEach",e,t,void 0,arguments)},includes(...e){return Bo(this,"includes",e)},indexOf(...e){return Bo(this,"indexOf",e)},join(e){return it(this).join(e)},lastIndexOf(...e){return Bo(this,"lastIndexOf",e)},map(e,t){return De(this,"map",e,t,void 0,arguments)},pop(){return yt(this,"pop")},push(...e){return yt(this,"push",e)},reduce(e,...t){return qs(this,"reduce",e,t)},reduceRight(e,...t){return qs(this,"reduceRight",e,t)},shift(){return yt(this,"shift")},some(e,t){return De(this,"some",e,t,void 0,arguments)},splice(...e){return yt(this,"splice",e)},toReversed(){return it(this).toReversed()},toSorted(e){return it(this).toSorted(e)},toSpliced(...e){return it(this).toSpliced(...e)},unshift(...e){return yt(this,"unshift",e)},values(){return zo(this,"values",e=>ke(this,e))}};function zo(e,t,o){const s=Qt(e),n=s[t]();return s!==e&&!$e(e)&&(n._next=n.next,n.next=()=>{const i=n._next();return i.done||(i.value=o(i.value)),i}),n}const Xi=Array.prototype;function De(e,t,o,s,n,i){const a=Qt(e),r=a!==e&&!$e(e),l=a[t];if(l!==Xi[t]){const g=l.apply(e,i);return r?He(g):g}let u=o;a!==e&&(r?u=function(g,x){return o.call(this,ke(e,g),x,e)}:o.length>2&&(u=function(g,x){return o.call(this,g,x,e)}));const d=l.call(a,u,s);return r&&n?n(d):d}function qs(e,t,o,s){const n=Qt(e),i=n!==e&&!$e(e);let a=o,r=!1;n!==e&&(i?(r=s.length===0,a=function(u,d,g){return r&&(r=!1,u=ke(e,u)),o.call(this,u,ke(e,d),g,e)}):o.length>3&&(a=function(u,d,g){return o.call(this,u,d,g,e)}));const l=n[t](a,...s);return r?ke(e,l):l}function Bo(e,t,o){const s=H(e);ae(s,"iterate",vt);const n=s[t](...o);return(n===-1||n===!1)&&Xo(o[0])?(o[0]=H(o[0]),s[t](...o)):n}function yt(e,t,o=[]){we(),Ho();const s=H(e)[t].apply(e,o);return jo(),Pe(),s}const Ji=Ro("__proto__,__v_isRef,__isVue"),Zs=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(me));function Yi(e){me(e)||(e=String(e));const t=H(this);return ae(t,"has",e),t.hasOwnProperty(e)}class Xs{constructor(t=!1,o=!1){this._isReadonly=t,this._isShallow=o}get(t,o,s){if(o==="__v_skip")return t.__v_skip;const n=this._isReadonly,i=this._isShallow;if(o==="__v_isReactive")return!n;if(o==="__v_isReadonly")return n;if(o==="__v_isShallow")return i;if(o==="__v_raw")return s===(n?i?on:tn:i?en:Qs).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const a=C(t);if(!n){let l;if(a&&(l=Zi[o]))return l;if(o==="hasOwnProperty")return Yi}const r=Reflect.get(t,o,re(t)?t:s);if((me(o)?Zs.has(o):Ji(o))||(n||ae(t,"get",o),i))return r;if(re(r)){const l=a&&Ao(o)?r:r.value;return n&&j(l)?Zo(l):l}return j(r)?n?Zo(r):qo(r):r}}class Js extends Xs{constructor(t=!1){super(!1,t)}set(t,o,s,n){let i=t[o];const a=C(t)&&Ao(o);if(!this._isShallow){const u=Ke(i);if(!$e(s)&&!Ke(s)&&(i=H(i),s=H(s)),!a&&re(i)&&!re(s))return u||(i.value=s),!0}const r=a?Number(o)e,eo=e=>Reflect.getPrototypeOf(e);function sa(e,t,o){return function(...s){const n=this.__v_raw,i=H(n),a=ze(i),r=e==="entries"||e===Symbol.iterator&&a,l=e==="keys"&&a,u=n[e](...s),d=o?Ko:t?at:He;return!t&&ae(i,"iterate",l?Vo:Xe),J(Object.create(u),{next(){const{value:g,done:x}=u.next();return x?{value:g,done:x}:{value:r?[d(g[0]),d(g[1])]:d(g),done:x}}})}}function to(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function na(e,t){const o={get(n){const i=this.__v_raw,a=H(i),r=H(n);e||(Me(n,r)&&ae(a,"get",n),ae(a,"get",r));const{has:l}=eo(a),u=t?Ko:e?at:He;if(l.call(a,n))return u(i.get(n));if(l.call(a,r))return u(i.get(r));i!==a&&i.get(n)},get size(){const n=this.__v_raw;return!e&&ae(H(n),"iterate",Xe),n.size},has(n){const i=this.__v_raw,a=H(i),r=H(n);return e||(Me(n,r)&&ae(a,"has",n),ae(a,"has",r)),n===r?i.has(n):i.has(n)||i.has(r)},forEach(n,i){const a=this,r=a.__v_raw,l=H(r),u=t?Ko:e?at:He;return!e&&ae(l,"iterate",Xe),r.forEach((d,g)=>n.call(i,u(d),u(g),a))}};return J(o,e?{add:to("add"),set:to("set"),delete:to("delete"),clear:to("clear")}:{add(n){const i=H(this),a=eo(i),r=H(n),l=!t&&!$e(n)&&!Ke(n)?r:n;return a.has.call(i,l)||Me(n,l)&&a.has.call(i,n)||Me(r,l)&&a.has.call(i,r)||(i.add(l),Ie(i,"add",l,l)),this},set(n,i){!t&&!$e(i)&&!Ke(i)&&(i=H(i));const a=H(this),{has:r,get:l}=eo(a);let u=r.call(a,n);u||(n=H(n),u=r.call(a,n));const d=l.call(a,n);return a.set(n,i),u?Me(i,d)&&Ie(a,"set",n,i):Ie(a,"add",n,i),this},delete(n){const i=H(this),{has:a,get:r}=eo(i);let l=a.call(i,n);l||(n=H(n),l=a.call(i,n)),r&&r.call(i,n);const u=i.delete(n);return l&&Ie(i,"delete",n,void 0),u},clear(){const n=H(this),i=n.size!==0,a=n.clear();return i&&Ie(n,"clear",void 0,void 0),a}}),["keys","values","entries",Symbol.iterator].forEach(n=>{o[n]=sa(n,e,t)}),o}function oo(e,t){const o=na(e,t);return(s,n,i)=>n==="__v_isReactive"?!e:n==="__v_isReadonly"?e:n==="__v_raw"?s:Reflect.get(D(o,n)&&n in s?o:s,n,i)}const ia={get:oo(!1,!1)},aa={get:oo(!1,!0)},ra={get:oo(!0,!1)},la={get:oo(!0,!0)},Qs=new WeakMap,en=new WeakMap,tn=new WeakMap,on=new WeakMap;function ca(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function qo(e){return Ke(e)?e:so(e,!1,Qi,ia,Qs)}function pa(e){return so(e,!1,ta,aa,en)}function Zo(e){return so(e,!0,ea,ra,tn)}function Zc(e){return so(e,!0,oa,la,on)}function so(e,t,o,s,n){if(!j(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const i=n.get(e);if(i)return i;const a=ca(Fi(e));if(a===0)return e;const r=new Proxy(e,a===2?s:o);return n.set(e,r),r}function Je(e){return Ke(e)?Je(e.__v_raw):!!(e&&e.__v_isReactive)}function Ke(e){return!!(e&&e.__v_isReadonly)}function $e(e){return!!(e&&e.__v_isShallow)}function Xo(e){return e?!!e.__v_raw:!1}function H(e){const t=e&&e.__v_raw;return t?H(t):e}function da(e){return!D(e,"__v_skip")&&Object.isExtensible(e)&&Rs(e,"__v_skip",!0),e}const He=e=>j(e)?qo(e):e,at=e=>j(e)?Zo(e):e;function re(e){return e?e.__v_isRef===!0:!1}function sn(e){return re(e)?e.value:e}const ua={get:(e,t,o)=>t==="__v_raw"?e:sn(Reflect.get(e,t,o)),set:(e,t,o,s)=>{const n=e[t];return re(n)&&!re(o)?(n.value=o,!0):Reflect.set(e,t,o,s)}};function nn(e){return Je(e)?e:new Proxy(e,ua)}class fa{constructor(t,o,s){this.fn=t,this.setter=o,this._value=void 0,this.dep=new Bs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=$t-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!o,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&B!==this)return js(this,!0),!0}get value(){const t=this.dep.track();return Us(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ga(e,t,o=!1){let s,n;return R(e)?s=e:(s=e.get,n=e.set),new fa(s,n,o)}const no={},io=new WeakMap;let Ye;function ha(e,t=!1,o=Ye){if(o){let s=io.get(o);s||io.set(o,s=[]),s.push(e)}}function ba(e,t,o=V){const{immediate:s,deep:n,once:i,scheduler:a,augmentJob:r,call:l}=o,u=S=>n?S:$e(S)||n===!1||n===0?je(S,1):je(S);let d,g,x,P,G=!1,E=!1;if(re(e)?(g=()=>e.value,G=$e(e)):Je(e)?(g=()=>u(e),G=!0):C(e)?(E=!0,G=e.some(S=>Je(S)||$e(S)),g=()=>e.map(S=>{if(re(S))return S.value;if(Je(S))return u(S);if(R(S))return l?l(S,2):S()})):R(e)?t?g=l?()=>l(e,2):e:g=()=>{if(x){we();try{x()}finally{Pe()}}const S=Ye;Ye=d;try{return l?l(e,3,[P]):e(P)}finally{Ye=S}}:g=xe,t&&n){const S=g,te=n===!0?1/0:n;g=()=>je(S(),te)}const Y=Bi(),Z=()=>{d.stop(),Y&&Y.active&&Eo(Y.effects,d)};if(i&&t){const S=t;t=(...te)=>{const Ne=S(...te);return Z(),Ne}}let I=E?new Array(e.length).fill(no):no;const W=S=>{if(!(!(d.flags&1)||!d.dirty&&!S))if(t){const te=d.run();if(S||n||G||(E?te.some((Ne,Re)=>Me(Ne,I[Re])):Me(te,I))){x&&x();const Ne=Ye;Ye=d;try{const Re=[te,I===no?void 0:E&&I[0]===no?[]:I,P];I=te,l?l(t,3,Re):t(...Re)}finally{Ye=Ne}}}else d.run()};return r&&r(W),d=new Ds(g),d.scheduler=a?()=>a(W,!1):W,P=S=>ha(S,!1,d),x=d.onStop=()=>{const S=io.get(d);if(S){if(l)l(S,4);else for(const te of S)te();io.delete(d)}},t?s?W(!0):I=d.run():a?a(W.bind(null,!0),!0):d.run(),Z.pause=d.pause.bind(d),Z.resume=d.resume.bind(d),Z.stop=Z,Z}function je(e,t=1/0,o){if(t<=0||!j(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,re(e))je(e.value,t,o);else if(C(e))for(let s=0;s{je(s,t,o)});else if(qt(e)){for(const s in e)je(e[s],t,o);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&je(e[s],t,o)}return e}/** * @vue/runtime-core v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/const xt=[];let Jo=!1;function Xc(e,...t){if(Jo)return;Jo=!0,we();const o=xt.length?xt[xt.length-1].component:null,s=o&&o.appContext.config.warnHandler,n=ma();if(s)rt(s,o,11,[e+t.map(i=>{var a,r;return(r=(a=i.toString)==null?void 0:a.call(i))!=null?r:JSON.stringify(i)}).join(""),o&&o.proxy,n.map(({vnode:i})=>`at <${ii(o,i.type)}>`).join(` `),n]);else{const i=[`[Vue warn]: ${e}`,...t];n.length&&i.push(` `,..._a(n)),console.warn(...i)}Pe(),Jo=!1}function ma(){let e=xt[xt.length-1];if(!e)return[];const t=[];for(;e;){const o=t[0];o&&o.vnode===e?o.recurseCount++:t.push({vnode:e,recurseCount:0});const s=e.component&&e.component.parent;e=s&&s.vnode}return t}function _a(e){const t=[];return e.forEach((o,s)=>{t.push(...s===0?[]:[` -`],...$a(o))}),t}function $a({vnode:e,recurseCount:t}){const o=t>0?`... (${t} recursive calls)`:"",s=e.component?e.component.parent==null:!1,n=` at <${ii(e.component,e.type,s)}`,i=">"+o;return e.props?[n,...va(e.props),i]:[n+i]}function va(e){const t=[],o=Object.keys(e);return o.slice(0,3).forEach(s=>{t.push(...an(s,e[s]))}),o.length>3&&t.push(" ..."),t}function an(e,t,o){return q(t)?(t=JSON.stringify(t),o?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?o?t:[`${e}=${t}`]:re(t)?(t=an(e,H(t.value),!0),o?t:[`${e}=Ref<`,t,">"]):R(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=H(t),o?t:[`${e}=`,t])}function rt(e,t,o,s){try{return s?e(...s):e()}catch(n){ao(n,t,o)}}function ve(e,t,o,s){if(R(e)){const n=rt(e,t,o,s);return n&&Ts(n)&&n.catch(i=>{ao(i,t,o)}),n}if(C(e)){const n=[];for(let i=0;i>>1,n=ce[s],i=wt(n);i=wt(o)?ce.push(e):ce.splice(xa(t),0,e),e.flags|=1,cn()}}function cn(){ro||(ro=rn.then(un))}function wa(e){if(!C(e))qe&&e.id===-1?qe.splice(ct+1,0,e):e.flags&1||(lt.push(e),e.flags|=1);else for(let t=0;twt(o)-wt(s));if(lt.length=0,qe){for(let o=0;oe.id==null?e.flags&2?-1:1/0:e.id;function un(e){try{for(Le=0;Le{s._d&&Xn(-1);const i=lo(t),a=We.length;let r;try{r=e(...n)}finally{for(let l=We.length;l>a;l--)gs();lo(i),s._d&&Xn(1)}return r};return s._n=!0,s._c=!0,s._d=!0,s}function Qo(e,t){if(ne===null)return e;const o=vo(ne),s=e.dirs||(e.dirs=[]);for(let n=0;n1)return o&&R(t)?t.call(s&&s.proxy):t}}const ka=Symbol.for("v-scx"),La=()=>kt(ka);function es(e,t,o){return gn(e,t,o)}function gn(e,t,o=V){const{immediate:s,deep:n,flush:i,once:a}=o,r=J({},o),l=t&&s||!t&&i!=="post";let u;if(Ot){if(i==="sync"){const P=La();u=P.__watcherHandles||(P.__watcherHandles=[])}else if(!l){const P=()=>{};return P.stop=xe,P.resume=xe,P.pause=xe,P}}const d=le;r.call=(P,G,E)=>ve(P,d,G,E);let g=!1;i==="post"?r.scheduler=P=>{fe(P,d&&d.suspense)}:i!=="sync"&&(g=!0,r.scheduler=(P,G)=>{G?P():Yo(P)}),r.augmentJob=P=>{t&&(P.flags|=4),g&&(P.flags|=2,d&&(P.id=d.uid,P.i=d))};const x=ba(e,t,r);return Ot&&(u?u.push(x):l&&x()),x}function Sa(e,t,o){const s=this.proxy,n=q(e)?e.includes(".")?hn(s,e):()=>s[e]:e.bind(s,s);let i;R(t)?i=t:(i=t.handler,o=t);const a=At(this),r=gn(n,i.bind(s),o);return a(),r}function hn(e,t){const o=t.split(".");return()=>{let s=e;for(let n=0;ne.__isTeleport,ts=Symbol("_leaveCb");function Ta(e){let t=e[0];if(e.length>1){for(const o of e)if(o.type!==Se){t=o;break}}return t}function bn(e){if(!ns(e))return co(e.type)&&e.children?Ta(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:o}=e;if(o){if(t&16)return o[0];if(t&32&&R(o.default))return o.default()}}function os(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const o=e.component.subTree;os(co(o.type)&&bn(o)||o,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ss(e,t){return R(e)?J({name:e.name},t,{setup:e}):e}function mn(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function _n(e,t){let o;return!!((o=Object.getOwnPropertyDescriptor(e,t))&&!o.configurable)}const po=new WeakMap;function Lt(e,t,o,s,n=!1){if(C(e)){e.forEach((E,Y)=>Lt(E,t&&(C(t)?t[Y]:t),o,s,n));return}if(pt(s)&&!n){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Lt(e,t,o,s.component.subTree);return}const i=s.shapeFlag&4?vo(s.component):s.el,a=n?null:i,{i:r,r:l}=e,u=t&&t.r,d=r.refs===V?r.refs={}:r.refs,g=r.setupState,x=H(g),P=g===V?Ss:E=>_n(d,E)?!1:I(x,E),G=(E,Y)=>!(Y&&_n(d,Y));if(u!=null&&u!==l){if($n(t),q(u))d[u]=null,P(u)&&(g[u]=null);else if(re(u)){const E=t;G(u,E.k)&&(u.value=null),E.k&&(d[E.k]=null)}}if(R(l))rt(l,r,12,[a,d]);else{const E=q(l),Y=re(l);if(E||Y){const Z=()=>{if(e.f){const D=E?P(l)?g[l]:d[l]:G()||!e.k?l.value:d[e.k];if(n)C(D)&&Eo(D,i);else if(C(D))D.includes(i)||D.push(i);else if(E)d[l]=[i],P(l)&&(g[l]=d[l]);else{const W=[i];G(l,e.k)&&(l.value=W),e.k&&(d[e.k]=W)}}else E?(d[l]=a,P(l)&&(g[l]=a)):Y&&(G(l,e.k)&&(l.value=a),e.k&&(d[e.k]=a))};if(a){const D=()=>{Z(),po.delete(e)};D.id=-1,po.set(e,D),fe(D,o)}else $n(e),Z()}}}function $n(e){const t=po.get(e);t&&(t.flags|=8,po.delete(e))}Jt().requestIdleCallback,Jt().cancelIdleCallback;const pt=e=>!!e.type.__asyncLoader,ns=e=>e.type.__isKeepAlive;function Na(e,t){vn(e,"a",t)}function Ra(e,t){vn(e,"da",t)}function vn(e,t,o=le){const s=e.__wdc||(e.__wdc=()=>{let n=o;for(;n;){if(n.isDeactivated)return;n=n.parent}return e()});if(uo(t,s,o),o){let n=o.parent;for(;n&&n.parent;)ns(n.parent.vnode)&&Ea(s,t,o,n),n=n.parent}}function Ea(e,t,o,s){const n=uo(t,e,s,!0);xn(()=>{Eo(s[t],n)},o)}function uo(e,t,o=le,s=!1){if(o){const n=o[e]||(o[e]=[]),i=t.__weh||(t.__weh=(...a)=>{we();const r=At(o),l=ve(t,o,e,a);return r(),Pe(),l});return s?n.unshift(i):n.push(i),i}}const Ge=e=>(t,o=le)=>{(!Ot||e==="sp")&&uo(e,(...s)=>t(...s),o)},Aa=Ge("bm"),yn=Ge("m"),Oa=Ge("bu"),Fa=Ge("u"),Ma=Ge("bum"),xn=Ge("um"),Da=Ge("sp"),Ia=Ge("rtg"),Ha=Ge("rtc");function ja(e,t=le){uo("ec",e,t)}const Ga="components";function Wa(e,t){return Va(Ga,e,!0,t)||e}const Ua=Symbol.for("v-ndc");function Va(e,t,o=!0,s=!1){const n=ne||le;if(n){const i=n.type;{const r=ni(i,!1);if(r&&(r===t||r===oe(t)||r===Xt(oe(t))))return i}const a=wn(n[e]||i[e],t)||wn(n.appContext[e],t);return!a&&s?i:a}}function wn(e,t){return e&&(e[t]||e[oe(t)]||e[Xt(oe(t))])}function dt(e,t,o,s){let n;const i=o,a=C(e);if(a||q(e)){const r=a&&Je(e);let l=!1,u=!1;r&&(l=!$e(e),u=Ke(e),e=Qt(e)),n=new Array(e.length);for(let d=0,g=e.length;dt(r,l,void 0,i));else{const r=Object.keys(e);n=new Array(r.length);for(let l=0,u=r.length;l{const i=s.fn(...n);return i&&(i.key=s.key),i}:s.fn)}return e}function St(e,t,o,s,n,i){if(o==null&&(o={}),ne.ce||ne.parent&&pt(ne.parent)&&ne.parent.ce){const u=i!=null&&o.key==null?J({},o,{key:i}):o,d=Object.keys(u).length>0;return t!=="default"&&(u.name=t),A(),bo(ee,null,[ye("slot",u,s)],d?-2:64)}let a=e[t];a&&a._c&&(a._d=!1);const r=We.length;A();let l;try{const u=a&&Pn(a(o)),d=o.key||i||u&&u.key;l=bo(ee,{key:(d&&!me(d)?d:`_${t}`)+(!u&&s?"_fb":"")},u||(s?s():[]),u&&e._===1?64:-2)}catch(u){for(let d=We.length;d>r;d--)gs();throw u}finally{a&&a._c&&(a._d=!0)}return l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),l}function Pn(e){return e.some(t=>hs(t)?!(t.type===Se||t.type===ee&&!Pn(t.children)):!0)?e:null}const is=e=>e?ti(e)?vo(e):is(e.parent):null,Ct=J(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>is(e.parent),$root:e=>is(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Cn(e),$forceUpdate:e=>e.f||(e.f=()=>{Yo(e.update)}),$nextTick:e=>e.n||(e.n=ln.bind(e.proxy)),$watch:e=>Sa.bind(e)}),as=(e,t)=>e!==V&&!e.__isScriptSetup&&I(e,t),Ba={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:o,setupState:s,data:n,props:i,accessCache:a,type:r,appContext:l}=e;if(t[0]!=="$"){const x=a[t];if(x!==void 0)switch(x){case 1:return s[t];case 2:return n[t];case 4:return o[t];case 3:return i[t]}else{if(as(s,t))return a[t]=1,s[t];if(n!==V&&I(n,t))return a[t]=2,n[t];if(I(i,t))return a[t]=3,i[t];if(o!==V&&I(o,t))return a[t]=4,o[t];rs&&(a[t]=0)}}const u=Ct[t];let d,g;if(u)return t==="$attrs"&&ae(e.attrs,"get",""),u(e);if((d=r.__cssModules)&&(d=d[t]))return d;if(o!==V&&I(o,t))return a[t]=4,o[t];if(g=l.config.globalProperties,I(g,t))return g[t]},set({_:e},t,o){const{data:s,setupState:n,ctx:i}=e;return as(n,t)?(n[t]=o,!0):s!==V&&I(s,t)?(s[t]=o,!0):I(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:s,appContext:n,props:i,type:a}},r){let l;return!!(o[r]||e!==V&&r[0]!=="$"&&I(e,r)||as(t,r)||I(i,r)||I(s,r)||I(Ct,r)||I(n.config.globalProperties,r)||(l=a.__cssModules)&&l[r])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:I(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function kn(e){return C(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}let rs=!0;function Ka(e){const t=Cn(e),o=e.proxy,s=e.ctx;rs=!1,t.beforeCreate&&Ln(t.beforeCreate,e,"bc");const{data:n,computed:i,methods:a,watch:r,provide:l,inject:u,created:d,beforeMount:g,mounted:x,beforeUpdate:P,updated:G,activated:E,deactivated:Y,beforeDestroy:Z,beforeUnmount:D,destroyed:W,unmounted:S,render:te,renderTracked:Ne,renderTriggered:Re,errorCaptured:Ze,serverPrefetch:Lo,expose:tt,inheritAttrs:Gt,components:So,directives:Co,filters:ks}=t;if(u&&qa(u,s,null),a)for(const X in a){const K=a[X];R(K)&&(s[X]=K.bind(o))}if(n){const X=n.call(o,o);j(X)&&(e.data=qo(X))}if(rs=!0,i)for(const X in i){const K=i[X],ot=R(K)?K.bind(o,o):R(K.get)?K.get.bind(o,o):xe,To=!R(K)&&R(K.set)?K.set.bind(o):xe,st=Rr({get:ot,set:To});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>st.value,set:Ee=>st.value=Ee})}if(r)for(const X in r)Sn(r[X],s,o,X);if(l){const X=R(l)?l.call(o):l;Reflect.ownKeys(X).forEach(K=>{Pa(K,X[K])})}d&&Ln(d,e,"c");function ue(X,K){C(K)?K.forEach(ot=>X(ot.bind(o))):K&&X(K.bind(o))}if(ue(Aa,g),ue(yn,x),ue(Oa,P),ue(Fa,G),ue(Na,E),ue(Ra,Y),ue(ja,Ze),ue(Ha,Ne),ue(Ia,Re),ue(Ma,D),ue(xn,S),ue(Da,Lo),C(tt))if(tt.length){const X=e.exposed||(e.exposed={});tt.forEach(K=>{Object.defineProperty(X,K,{get:()=>o[K],set:ot=>o[K]=ot,enumerable:!0})})}else e.exposed||(e.exposed={});te&&e.render===xe&&(e.render=te),Gt!=null&&(e.inheritAttrs=Gt),So&&(e.components=So),Co&&(e.directives=Co),Lo&&mn(e)}function qa(e,t,o=xe){C(e)&&(e=ls(e));for(const s in e){const n=e[s];let i;j(n)?"default"in n?i=kt(n.from||s,n.default,!0):i=kt(n.from||s):i=kt(n),re(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):t[s]=i}}function Ln(e,t,o){ve(C(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,o)}function Sn(e,t,o,s){let n=s.includes(".")?hn(o,s):()=>o[s];if(q(e)){const i=t[e];R(i)&&es(n,i)}else if(R(e))es(n,e.bind(o));else if(j(e))if(C(e))e.forEach(i=>Sn(i,t,o,s));else{const i=R(e.handler)?e.handler.bind(o):t[e.handler];R(i)&&es(n,i,e)}}function Cn(e){const t=e.type,{mixins:o,extends:s}=t,{mixins:n,optionsCache:i,config:{optionMergeStrategies:a}}=e.appContext,r=i.get(t);let l;return r?l=r:!n.length&&!o&&!s?l=t:(l={},n.length&&n.forEach(u=>fo(l,u,a,!0)),fo(l,t,a)),j(t)&&i.set(t,l),l}function fo(e,t,o,s=!1){const{mixins:n,extends:i}=t;i&&fo(e,i,o,!0),n&&n.forEach(a=>fo(e,a,o,!0));for(const a in t)if(!(s&&a==="expose")){const r=Za[a]||o&&o[a];e[a]=r?r(e[a],t[a]):t[a]}return e}const Za={data:Tn,props:Nn,emits:Nn,methods:Tt,computed:Tt,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:Tt,directives:Tt,watch:Ja,provide:Tn,inject:Xa};function Tn(e,t){return t?e?function(){return J(R(e)?e.call(this,this):e,R(t)?t.call(this,this):t)}:t:e}function Xa(e,t){return Tt(ls(e),ls(t))}function ls(e){if(C(e)){const t={};for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${oe(t)}Modifiers`]||e[`${be(t)}Modifiers`];function tr(e,t,...o){if(e.isUnmounted)return;const s=e.vnode.props||V;let n=o;const i=t.startsWith("update:"),a=i&&er(s,t.slice(7));a&&(a.trim&&(n=o.map(d=>q(d)?d.trim():d)),a.number&&(n=n.map(Ii)));let r,l=s[r=Oo(t)]||s[r=Oo(oe(t))];!l&&i&&(l=s[r=Oo(be(t))]),l&&ve(l,e,6,n);const u=s[r+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,ve(u,e,6,n)}}const or=new WeakMap;function En(e,t,o=!1){const s=o?or:t.emitsCache,n=s.get(e);if(n!==void 0)return n;const i=e.emits;let a={},r=!1;if(!R(e)){const l=u=>{const d=En(u,t,!0);d&&(r=!0,J(a,d))};!o&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!r?(j(e)&&s.set(e,null),null):(C(i)?i.forEach(l=>a[l]=null):J(a,i),j(e)&&s.set(e,a),a)}function go(e,t){return!e||!zt(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),I(e,t[0].toLowerCase()+t.slice(1))||I(e,be(t))||I(e,t))}function Jc(){}function An(e){const{type:t,vnode:o,proxy:s,withProxy:n,propsOptions:[i],slots:a,attrs:r,emit:l,render:u,renderCache:d,props:g,data:x,setupState:P,ctx:G,inheritAttrs:E}=e,Y=lo(e);let Z,D;try{if(o.shapeFlag&4){const S=n||s,te=S;Z=Ce(u.call(te,S,d,g,P,x,G)),D=r}else{const S=t;Z=Ce(S.length>1?S(g,{attrs:r,slots:a,emit:l}):S(g,null)),D=t.props?r:sr(r)}}catch(S){We.length=0,ao(S,e,1),Z=ye(Se)}let W=Z;if(D&&E!==!1){const S=Object.keys(D),{shapeFlag:te}=W;S.length&&te&7&&(i&&S.some(Bt)&&(D=nr(D,i)),W=ft(W,D,!1,!0))}if(o.dirs&&(W=ft(W,null,!1,!0),W.dirs=W.dirs?W.dirs.concat(o.dirs):o.dirs),o.transition){const S=co(W.type)&&bn(W)||W;os(S,o.transition)}return Z=W,lo(Y),Z}const sr=e=>{let t;for(const o in e)(o==="class"||o==="style"||zt(o))&&((t||(t={}))[o]=e[o]);return t},nr=(e,t)=>{const o={};for(const s in e)(!Bt(s)||!(s.slice(9)in t))&&(o[s]=e[s]);return o};function ir(e,t,o){const{props:s,children:n,component:i}=e,{props:a,children:r,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&l>=0){if(l&1024)return!0;if(l&16)return s?On(s,a,u):!!a;if(l&8){const d=t.dynamicProps;for(let g=0;gObject.create(Mn),In=e=>Object.getPrototypeOf(e)===Mn;function rr(e,t,o,s=!1){const n={},i=Dn();e.propsDefaults=Object.create(null),Hn(e,t,n,i);for(const a in e.propsOptions[0])a in n||(n[a]=void 0);o?e.props=s?n:pa(n):e.type.props?e.props=n:e.props=i,e.attrs=i}function lr(e,t,o,s){const{props:n,attrs:i,vnode:{patchFlag:a}}=e,r=H(n),[l]=e.propsOptions;let u=!1;if((s||a>0)&&!(a&16)){if(a&8){const d=e.vnode.dynamicProps;for(let g=0;g{l=!0;const[x,P]=jn(g,t,!0);J(a,x),P&&r.push(...P)};!o&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!l)return j(e)&&s.set(e,nt),nt;if(C(i))for(let d=0;de==="_"||e==="_ctx"||e==="$stable",ds=e=>C(e)?e.map(Ce):[Ce(e)],pr=(e,t,o)=>{if(t._n)return t;const s=Pt((...n)=>ds(t(...n)),o);return s._c=!1,s},Wn=(e,t,o)=>{const s=e._ctx;for(const n in e){if(ps(n))continue;const i=e[n];if(R(i))t[n]=pr(n,i,s);else if(i!=null){const a=ds(i);t[n]=()=>a}}},Un=(e,t)=>{const o=ds(t);e.slots.default=()=>o},Vn=(e,t,o)=>{for(const s in t)(o||!ps(s))&&(e[s]=t[s])},dr=(e,t,o)=>{const s=e.slots=Dn();if(e.vnode.shapeFlag&32){const n=t._;n?(Vn(s,t,o),o&&Rs(s,"_",n,!0)):Wn(t,s)}else t&&Un(e,t)},ur=(e,t,o)=>{const{vnode:s,slots:n}=e;let i=!0,a=V;if(s.shapeFlag&32){const r=t._;r?o&&r===1?i=!1:Vn(n,t,o):(i=!t.$stable,Wn(t,n)),a=t}else t&&(Un(e,t),a={default:1});if(i)for(const r in n)!ps(r)&&a[r]==null&&delete n[r]},fe=mr;function fr(e){return gr(e)}function gr(e,t){const o=Jt();o.__VUE__=!0;const{insert:s,remove:n,patchProp:i,createElement:a,createText:r,createComment:l,setText:u,setElementText:d,parentNode:g,nextSibling:x,setScopeId:P=xe,insertStaticContent:G}=e,E=(c,p,f,_=null,m=null,h=null,y=void 0,v=null,$=!!p.dynamicChildren)=>{if(c===p)return;c&&!Rt(c,p)&&(_=No(c),Ee(c,m,h,!0),c=null),p.patchFlag===-2&&($=!1,p.dynamicChildren=null);const{type:b,ref:L,shapeFlag:w}=p;switch(b){case ho:Y(c,p,f,_);break;case Se:Z(c,p,f,_);break;case fs:c==null&&D(p,f,_,y);break;case ee:So(c,p,f,_,m,h,y,v,$);break;default:w&1?te(c,p,f,_,m,h,y,v,$):w&6?Co(c,p,f,_,m,h,y,v,$):(w&64||w&128)&&b.process(c,p,f,_,m,h,y,v,$,Ut)}L!=null&&m?Lt(L,c&&c.ref,h,p||c,!p):L==null&&c&&c.ref!=null&&Lt(c.ref,null,h,c,!0)},Y=(c,p,f,_)=>{if(c==null)s(p.el=r(p.children),f,_);else{const m=p.el=c.el;p.children!==c.children&&u(m,p.children)}},Z=(c,p,f,_)=>{c==null?s(p.el=l(p.children||""),f,_):p.el=c.el},D=(c,p,f,_)=>{[c.el,c.anchor]=G(c.children,p,f,_,c.el,c.anchor)},W=({el:c,anchor:p},f,_)=>{let m;for(;c&&c!==p;)m=x(c),s(c,f,_),c=m;s(p,f,_)},S=({el:c,anchor:p})=>{let f;for(;c&&c!==p;)f=x(c),n(c),c=f;n(p)},te=(c,p,f,_,m,h,y,v,$)=>{if(p.type==="svg"?y="svg":p.type==="math"&&(y="mathml"),c==null)Ne(p,f,_,m,h,y,v,$);else{const b=c.el&&c.el._isVueCE?c.el:null;try{b&&b._beginPatch(),Lo(c,p,m,h,y,v,$)}finally{b&&b._endPatch()}}},Ne=(c,p,f,_,m,h,y,v)=>{let $,b;const{props:L,shapeFlag:w,transition:k,dirs:N}=c;if($=c.el=a(c.type,h,L&&L.is,L),w&8?d($,c.children):w&16&&Ze(c.children,$,null,_,m,us(c,h),y,v),N&&Qe(c,null,_,"created"),Re($,c,c.scopeId,y,_),L){for(const z in L)z!=="value"&&!bt(z)&&i($,z,null,L[z],h,_);"value"in L&&i($,"value",null,L.value,h),(b=L.onVnodeBeforeMount)&&Te(b,_,c)}N&&Qe(c,null,_,"beforeMount");const M=hr(m,k);M&&k.beforeEnter($),s($,p,f),((b=L&&L.onVnodeMounted)||M||N)&&fe(()=>{try{b&&Te(b,_,c),M&&k.enter($),N&&Qe(c,null,_,"mounted")}finally{}},m)},Re=(c,p,f,_,m)=>{if(f&&P(c,f),_)for(let h=0;h<_.length;h++)P(c,_[h]);if(m){let h=m.subTree;if(p===h||Zn(h.type)&&(h.ssContent===p||h.ssFallback===p)){const y=m.vnode;Re(c,y,y.scopeId,y.slotScopeIds,m.parent)}}},Ze=(c,p,f,_,m,h,y,v,$=0)=>{for(let b=$;b{const v=p.el=c.el;let{patchFlag:$,dynamicChildren:b,dirs:L}=p;$|=c.patchFlag&16;const w=c.props||V,k=p.props||V;let N;if(f&&et(f,!1),(N=k.onVnodeBeforeUpdate)&&Te(N,f,p,c),L&&Qe(p,c,f,"beforeUpdate"),f&&et(f,!0),b&&(!c.dynamicChildren||c.dynamicChildren.length!==b.length)&&($=0,y=!1,b=null),(w.innerHTML&&k.innerHTML==null||w.textContent&&k.textContent==null)&&d(v,""),b?tt(c.dynamicChildren,b,v,f,_,us(p,m),h):y||K(c,p,v,null,f,_,us(p,m),h,!1),$>0){if($&16)Gt(v,w,k,f,m);else if($&2&&w.class!==k.class&&i(v,"class",null,k.class,m),$&4&&i(v,"style",w.style,k.style,m),$&8){const M=p.dynamicProps;for(let z=0;z{N&&Te(N,f,p,c),L&&Qe(p,c,f,"updated")},_)},tt=(c,p,f,_,m,h,y)=>{for(let v=0;v{if(p!==f){if(p!==V)for(const h in p)!bt(h)&&!(h in f)&&i(c,h,p[h],null,m,_);for(const h in f){if(bt(h))continue;const y=f[h],v=p[h];y!==v&&h!=="value"&&i(c,h,v,y,m,_)}"value"in f&&i(c,"value",p.value,f.value,m)}},So=(c,p,f,_,m,h,y,v,$)=>{const b=p.el=c?c.el:r(""),L=p.anchor=c?c.anchor:r("");let{patchFlag:w,dynamicChildren:k,slotScopeIds:N}=p;N&&(v=v?v.concat(N):N),c==null?(s(b,f,_),s(L,f,_),Ze(p.children||[],f,L,m,h,y,v,$)):w>0&&w&64&&k&&c.dynamicChildren&&c.dynamicChildren.length===k.length?(tt(c.dynamicChildren,k,f,m,h,y,v),(p.key!=null||m&&p===m.subTree)&&zn(c,p,!0)):K(c,p,f,L,m,h,y,v,$)},Co=(c,p,f,_,m,h,y,v,$)=>{p.slotScopeIds=v,c==null?p.shapeFlag&512?m.ctx.activate(p,f,_,y,$):ks(p,f,_,m,h,y,$):Ci(c,p,$)},ks=(c,p,f,_,m,h,y)=>{const v=c.component=wr(c,_,m);if(ns(c)&&(v.ctx.renderer=Ut),Pr(v,!1,y),v.asyncDep){if(m&&m.registerDep(v,ue,y),!c.el){const $=v.subTree=ye(Se);Z(null,$,p,f),c.placeholder=$.el}}else ue(v,c,p,f,m,h,y)},Ci=(c,p,f)=>{const _=p.component=c.component;if(ir(c,p,f))if(_.asyncDep&&!_.asyncResolved){X(_,p,f);return}else _.next=p,_.update();else p.el=c.el,_.vnode=p},ue=(c,p,f,_,m,h,y)=>{const v=()=>{if(c.isMounted){let{next:w,bu:k,u:N,parent:M,vnode:z}=c;{const Oe=Bn(c);if(Oe){w&&(w.el=z.el,X(c,w,y)),Oe.asyncDep.then(()=>{fe(()=>{c.isUnmounted||b()},m)});return}}let U=w,Q;et(c,!1),w?(w.el=z.el,X(c,w,y)):w=z,k&&Fo(k),(Q=w.props&&w.props.onVnodeBeforeUpdate)&&Te(Q,M,w,z),et(c,!0);const ie=An(c),Ae=c.subTree;c.subTree=ie,E(Ae,ie,g(Ae.el),No(Ae),c,m,h),w.el=ie.el,U===null&&ar(c,ie.el),N&&fe(N,m),(Q=w.props&&w.props.onVnodeUpdated)&&fe(()=>Te(Q,M,w,z),m)}else{let w;const{el:k,props:N}=p,{bm:M,m:z,parent:U,root:Q,type:ie}=c,Ae=pt(p);et(c,!1),M&&Fo(M),!Ae&&(w=N&&N.onVnodeBeforeMount)&&Te(w,U,p),et(c,!0);{Q.ce&&Q.ce._hasShadowRoot()&&Q.ce._injectChildStyle(ie,c.parent?c.parent.type:void 0);const Oe=c.subTree=An(c);E(null,Oe,f,_,c,m,h),p.el=Oe.el}if(z&&fe(z,m),!Ae&&(w=N&&N.onVnodeMounted)){const Oe=p;fe(()=>Te(w,U,Oe),m)}(p.shapeFlag&256||U&&pt(U.vnode)&&U.vnode.shapeFlag&256)&&c.a&&fe(c.a,m),c.isMounted=!0,p=f=_=null}};c.scope.on();const $=c.effect=new Is(v);c.scope.off();const b=c.update=$.run.bind($),L=c.job=$.runIfDirty.bind($);L.i=c,L.id=c.uid,$.scheduler=()=>Yo(L),et(c,!0),b()},X=(c,p,f)=>{p.component=c;const _=c.vnode.props;c.vnode=p,c.next=null,lr(c,p.props,_,f),ur(c,p.children,f),we(),pn(c),Pe()},K=(c,p,f,_,m,h,y,v,$=!1)=>{const b=c&&c.children,L=c?c.shapeFlag:0,w=p.children,{patchFlag:k,shapeFlag:N}=p;if(k>0){if(k&128){To(b,w,f,_,m,h,y,v,$);return}else if(k&256){ot(b,w,f,_,m,h,y,v,$);return}}N&8?(L&16&&Wt(b,m,h),w!==b&&d(f,w)):L&16?N&16?To(b,w,f,_,m,h,y,v,$):Wt(b,m,h,!0):(L&8&&d(f,""),N&16&&Ze(w,f,_,m,h,y,v,$))},ot=(c,p,f,_,m,h,y,v,$)=>{c=c||nt,p=p||nt;const b=c.length,L=p.length,w=Math.min(b,L);let k;for(k=0;kL?Wt(c,m,h,!0,!1,w):Ze(p,f,_,m,h,y,v,$,w)},To=(c,p,f,_,m,h,y,v,$)=>{let b=0;const L=p.length;let w=c.length-1,k=L-1;for(;b<=w&&b<=k;){const N=c[b],M=p[b]=$?Ue(p[b]):Ce(p[b]);if(Rt(N,M))E(N,M,f,null,m,h,y,v,$);else break;b++}for(;b<=w&&b<=k;){const N=c[w],M=p[k]=$?Ue(p[k]):Ce(p[k]);if(Rt(N,M))E(N,M,f,null,m,h,y,v,$);else break;w--,k--}if(b>w){if(b<=k){const N=k+1,M=Nk)for(;b<=w;)Ee(c[b],m,h,!0),b++;else{const N=b,M=b,z=new Map;for(b=M;b<=k;b++){const he=p[b]=$?Ue(p[b]):Ce(p[b]);he.key!=null&&z.set(he.key,b)}let U,Q=0;const ie=k-M+1;let Ae=!1,Oe=0;const Vt=new Array(ie);for(b=0;b=ie){Ee(he,m,h,!0);continue}let Fe;if(he.key!=null)Fe=z.get(he.key);else for(U=M;U<=k;U++)if(Vt[U-M]===0&&Rt(he,p[U])){Fe=U;break}Fe===void 0?Ee(he,m,h,!0):(Vt[Fe-M]=b+1,Fe>=Oe?Oe=Fe:Ae=!0,E(he,p[Fe],f,null,m,h,y,v,$),Q++)}const Ri=Ae?br(Vt):nt;for(U=Ri.length-1,b=ie-1;b>=0;b--){const he=M+b,Fe=p[he],Ei=p[he+1],Ai=he+1{const{el:h,type:y,transition:v,children:$,shapeFlag:b}=c;if(b&6){st(c.component.subTree,p,f,_);return}if(b&128){c.suspense.move(p,f,_);return}if(b&64){y.move(c,p,f,Ut);return}if(y===ee){s(h,p,f);for(let w=0;w<$.length;w++)st($[w],p,f,_);s(c.anchor,p,f);return}if(y===fs){W(c,p,f);return}if(_!==2&&b&1&&v)if(_===0)v.persisted&&!h[ts]?s(h,p,f):(v.beforeEnter(h),s(h,p,f),fe(()=>v.enter(h),m));else{const{leave:w,delayLeave:k,afterLeave:N}=v,M=()=>{c.ctx.isUnmounted?n(h):s(h,p,f)},z=()=>{const U=h._isLeaving||!!h[ts];h._isLeaving&&h[ts](!0),v.persisted&&!U?M():w(h,()=>{M(),N&&N()})};k?k(h,M,z):z()}else s(h,p,f)},Ee=(c,p,f,_=!1,m=!1)=>{const{type:h,props:y,ref:v,children:$,dynamicChildren:b,shapeFlag:L,patchFlag:w,dirs:k,cacheIndex:N,memo:M}=c;if(w===-2&&(m=!1),v!=null&&(we(),Lt(v,null,f,c,!0),Pe()),N!=null&&(p.renderCache[N]=void 0),L&256){p.ctx.deactivate(c);return}const z=L&1&&k,U=!pt(c);let Q;if(U&&(Q=y&&y.onVnodeBeforeUnmount)&&Te(Q,p,c),L&6)Kc(c.component,f,_);else{if(L&128){c.suspense.unmount(f,_);return}z&&Qe(c,null,p,"beforeUnmount"),L&64?c.type.remove(c,p,f,Ut,_):b&&!b.hasOnce&&(h!==ee||w>0&&w&64)?Wt(b,p,f,!1,!0):(h===ee&&w&384||!m&&L&16)&&Wt($,p,f),_&&Ti(c)}const ie=M!=null&&N==null;(U&&(Q=y&&y.onVnodeUnmounted)||z||ie)&&fe(()=>{Q&&Te(Q,p,c),z&&Qe(c,null,p,"unmounted"),ie&&(c.el=null)},f)},Ti=c=>{const{type:p,el:f,anchor:_,transition:m}=c;if(p===ee){Bc(f,_);return}if(p===fs){S(c);return}const h=()=>{n(f),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(c.shapeFlag&1&&m&&!m.persisted){const{leave:y,delayLeave:v}=m,$=()=>y(f,h);v?v(c.el,h,$):$()}else h()},Bc=(c,p)=>{let f;for(;c!==p;)f=x(c),n(c),c=f;n(p)},Kc=(c,p,f)=>{const{bum:_,scope:m,job:h,subTree:y,um:v,m:$,a:b}=c;Kn($),Kn(b),_&&Fo(_),m.stop(),h&&(h.flags|=8,Ee(y,c,p,f)),v&&fe(v,p),fe(()=>{c.isUnmounted=!0},p)},Wt=(c,p,f,_=!1,m=!1,h=0)=>{for(let y=h;y{if(c.shapeFlag&6)return No(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const p=x(c.anchor||c.el),f=p&&p[Ca];return f?x(f):p};let Ls=!1;const Ni=(c,p,f)=>{let _;c==null?p._vnode&&(Ee(p._vnode,null,null,!0),_=p._vnode.component):E(p._vnode||null,c,p,null,null,null,f),p._vnode=c,Ls||(Ls=!0,pn(_),dn(),Ls=!1)},Ut={p:E,um:Ee,m:st,r:Ti,mt:ks,mc:Ze,pc:K,pbc:tt,n:No,o:e};return{render:Ni,hydrate:void 0,createApp:Qa(Ni)}}function us({type:e,props:t},o){return o==="svg"&&e==="foreignObject"||o==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:o}function et({effect:e,job:t},o){o?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function hr(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function zn(e,t,o=!1){const s=e.children,n=t.children;if(C(s)&&C(n))for(let i=0;i>1,e[o[r]]0&&(t[s]=o[i-1]),o[i]=s)}}for(i=o.length,a=o[i-1];i-- >0;)o[i]=a,a=t[a];return o}function Bn(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Bn(t)}function Kn(e){if(e)for(let t=0;te.__isSuspense;function mr(e,t){t&&t.pendingBranch?C(e)?t.effects.push(...e):t.effects.push(e):wa(e)}const ee=Symbol.for("v-fgt"),ho=Symbol.for("v-txt"),Se=Symbol.for("v-cmt"),fs=Symbol.for("v-stc"),We=[];let ge=null;function A(e=!1){We.push(ge=e?null:[])}function gs(){We.pop(),ge=We[We.length-1]||null}let Nt=1;function Xn(e,t=!1){Nt+=e,e<0&&ge&&t&&(ge.hasOnce=!0)}function Jn(e){return e.dynamicChildren=Nt>0?ge||nt:null,gs(),Nt>0&&ge&&ge.push(e),e}function O(e,t,o,s,n,i){return Jn(T(e,t,o,s,n,i,!0))}function bo(e,t,o,s,n){return Jn(ye(e,t,o,s,n,!0))}function hs(e){return e?e.__v_isVNode===!0:!1}function Rt(e,t){return e.type===t.type&&e.key===t.key}const Yn=({key:e})=>e??null,mo=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?q(e)||re(e)||R(e)?{i:ne,r:e,k:t,f:!!o}:e:null);function T(e,t=null,o=null,s=0,n=null,i=e===ee?0:1,a=!1,r=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Yn(t),ref:t&&mo(t),scopeId:fn,slotScopeIds:null,children:o,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:ne};return r?(_o(l,o),i&128&&e.normalize(l)):o&&(l.shapeFlag|=q(o)?8:16),Nt>0&&!a&&ge&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&ge.push(l),l}const ye=_r;function _r(e,t=null,o=null,s=0,n=null,i=!1){if((!e||e===Ua)&&(e=Se),hs(e)){const r=ft(e,t,!0);return o&&_o(r,o),Nt>0&&!i&&ge&&(r.shapeFlag&6?ge[ge.indexOf(e)]=r:ge.push(r)),r.patchFlag=-2,r}if(Nr(e)&&(e=e.__vccOpts),t){t=$r(t);let{class:r,style:l}=t;r&&!q(r)&&(t.class=Be(r)),j(l)&&(Xo(l)&&!C(l)&&(l=J({},l)),t.style=Mo(l))}const a=q(e)?1:Zn(e)?128:co(e)?64:j(e)?4:R(e)?2:0;return T(e,t,o,s,n,a,i,!0)}function $r(e){return e?Xo(e)||In(e)?J({},e):e:null}function ft(e,t,o=!1,s=!1){const{props:n,ref:i,patchFlag:a,children:r,transition:l}=e,u=t?vr(n||{},t):n,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Yn(u),ref:t&&t.ref?o&&i?C(i)?i.concat(mo(t)):[i,mo(t)]:mo(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:r,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ee?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ft(e.ssContent),ssFallback:e.ssFallback&&ft(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&s&&os(d,l.clone(d)),d}function gt(e=" ",t=0){return ye(ho,null,e,t)}function de(e="",t=!1){return t?(A(),bo(Se,null,e)):ye(Se,null,e)}function Ce(e){return e==null||typeof e=="boolean"?ye(Se):C(e)?ye(ee,null,e.slice()):hs(e)?Ue(e):ye(ho,null,String(e))}function Ue(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ft(e)}function _o(e,t){let o=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(C(t))o=16;else if(typeof t=="object")if(s&65){const n=t.default;n&&(n._c&&(n._d=!1),_o(e,n()),n._c&&(n._d=!0));return}else{o=32;const n=t._;!n&&!In(t)?t._ctx=ne:n===3&&ne&&(ne.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(R(t)){if(s&65){_o(e,{default:t});return}t={default:t,_ctx:ne},o=32}else t=String(t),s&64?(o=16,t=[gt(t)]):o=8;e.children=t,e.shapeFlag|=o}function vr(...e){const t={};for(let o=0;ole||ne;let $o,Et;{const e=Jt(),t=(o,s)=>{let n;return(n=e[o])||(n=e[o]=[]),n.push(s),i=>{n.length>1?n.forEach(a=>a(i)):n[0](i)}};$o=t("__VUE_INSTANCE_SETTERS__",o=>le=o),Et=t("__VUE_SSR_SETTERS__",o=>Ot=o)}const At=e=>{const t=le;return $o(e),e.scope.on(),()=>{e.scope.off(),$o(t)}},ei=()=>{le&&le.scope.off(),$o(null)};function ti(e){return e.vnode.shapeFlag&4}let Ot=!1;function Pr(e,t=!1,o=!1){t&&Et(t);const{props:s,children:n}=e.vnode,i=ti(e);rr(e,s,i,t),dr(e,n,o||t);const a=i?kr(e,t):void 0;return t&&Et(!1),a}function kr(e,t){const o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ba);const{setup:s}=o;if(s){we();const n=e.setupContext=s.length>1?Sr(e):null,i=At(e),a=rt(s,e,0,[e.props,n]),r=Ts(a);if(Pe(),i(),(r||e.sp)&&!pt(e)&&mn(e),r){if(a.then(ei,ei),t)return a.then(l=>{Et(!0);try{oi(e,l,t)}finally{Et(!1)}}).catch(l=>{ao(l,e,0)});e.asyncDep=a}else oi(e,a)}else si(e)}function oi(e,t,o){R(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:j(t)&&(e.setupState=nn(t)),si(e)}function si(e,t,o){const s=e.type;e.render||(e.render=s.render||xe);{const n=At(e);we();try{Ka(e)}finally{Pe(),n()}}}const Lr={get(e,t){return ae(e,"get",""),e[t]}};function Sr(e){const t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,Lr),slots:e.slots,emit:e.emit,expose:t}}function vo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(nn(da(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in Ct)return Ct[o](e)},has(t,o){return o in t||o in Ct}})):e.proxy}const Cr=/(?:^|[-_])\w/g,Tr=e=>e.replace(Cr,t=>t.toUpperCase()).replace(/[-_]/g,"");function ni(e,t=!0){return R(e)?e.displayName||e.name:e.name||t&&e.__name}function ii(e,t,o=!1){let s=ni(t);if(!s&&t.__file){const n=t.__file.match(/([^/\\]+)\.\w+$/);n&&(s=n[1])}if(!s&&e){const n=i=>{for(const a in i)if(i[a]===t)return a};s=n(e.components)||e.parent&&n(e.parent.type.components)||n(e.appContext.components)}return s?Tr(s):o?"App":"Anonymous"}function Nr(e){return R(e)&&"__vccOpts"in e}const Rr=(e,t)=>ga(e,t,Ot),Er="3.5.42";/** +`],...$a(o))}),t}function $a({vnode:e,recurseCount:t}){const o=t>0?`... (${t} recursive calls)`:"",s=e.component?e.component.parent==null:!1,n=` at <${ii(e.component,e.type,s)}`,i=">"+o;return e.props?[n,...va(e.props),i]:[n+i]}function va(e){const t=[],o=Object.keys(e);return o.slice(0,3).forEach(s=>{t.push(...an(s,e[s]))}),o.length>3&&t.push(" ..."),t}function an(e,t,o){return q(t)?(t=JSON.stringify(t),o?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?o?t:[`${e}=${t}`]:re(t)?(t=an(e,H(t.value),!0),o?t:[`${e}=Ref<`,t,">"]):R(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=H(t),o?t:[`${e}=`,t])}function rt(e,t,o,s){try{return s?e(...s):e()}catch(n){ao(n,t,o)}}function ve(e,t,o,s){if(R(e)){const n=rt(e,t,o,s);return n&&Ts(n)&&n.catch(i=>{ao(i,t,o)}),n}if(C(e)){const n=[];for(let i=0;i>>1,n=ce[s],i=wt(n);i=wt(o)?ce.push(e):ce.splice(xa(t),0,e),e.flags|=1,cn()}}function cn(){ro||(ro=rn.then(un))}function wa(e){if(!C(e))qe&&e.id===-1?qe.splice(ct+1,0,e):e.flags&1||(lt.push(e),e.flags|=1);else for(let t=0;twt(o)-wt(s));if(lt.length=0,qe){for(let o=0;oe.id==null?e.flags&2?-1:1/0:e.id;function un(e){try{for(Le=0;Le{s._d&&Xn(-1);const i=lo(t),a=We.length;let r;try{r=e(...n)}finally{for(let l=We.length;l>a;l--)gs();lo(i),s._d&&Xn(1)}return r};return s._n=!0,s._c=!0,s._d=!0,s}function Qo(e,t){if(ne===null)return e;const o=vo(ne),s=e.dirs||(e.dirs=[]);for(let n=0;n1)return o&&R(t)?t.call(s&&s.proxy):t}}const ka=Symbol.for("v-scx"),La=()=>kt(ka);function es(e,t,o){return gn(e,t,o)}function gn(e,t,o=V){const{immediate:s,deep:n,flush:i,once:a}=o,r=J({},o),l=t&&s||!t&&i!=="post";let u;if(Ot){if(i==="sync"){const P=La();u=P.__watcherHandles||(P.__watcherHandles=[])}else if(!l){const P=()=>{};return P.stop=xe,P.resume=xe,P.pause=xe,P}}const d=le;r.call=(P,G,E)=>ve(P,d,G,E);let g=!1;i==="post"?r.scheduler=P=>{fe(P,d&&d.suspense)}:i!=="sync"&&(g=!0,r.scheduler=(P,G)=>{G?P():Yo(P)}),r.augmentJob=P=>{t&&(P.flags|=4),g&&(P.flags|=2,d&&(P.id=d.uid,P.i=d))};const x=ba(e,t,r);return Ot&&(u?u.push(x):l&&x()),x}function Sa(e,t,o){const s=this.proxy,n=q(e)?e.includes(".")?hn(s,e):()=>s[e]:e.bind(s,s);let i;R(t)?i=t:(i=t.handler,o=t);const a=At(this),r=gn(n,i.bind(s),o);return a(),r}function hn(e,t){const o=t.split(".");return()=>{let s=e;for(let n=0;ne.__isTeleport,ts=Symbol("_leaveCb");function Ta(e){let t=e[0];if(e.length>1){for(const o of e)if(o.type!==Se){t=o;break}}return t}function bn(e){if(!ns(e))return co(e.type)&&e.children?Ta(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:o}=e;if(o){if(t&16)return o[0];if(t&32&&R(o.default))return o.default()}}function os(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const o=e.component.subTree;os(co(o.type)&&bn(o)||o,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ss(e,t){return R(e)?J({name:e.name},t,{setup:e}):e}function mn(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function _n(e,t){let o;return!!((o=Object.getOwnPropertyDescriptor(e,t))&&!o.configurable)}const po=new WeakMap;function Lt(e,t,o,s,n=!1){if(C(e)){e.forEach((E,Y)=>Lt(E,t&&(C(t)?t[Y]:t),o,s,n));return}if(pt(s)&&!n){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Lt(e,t,o,s.component.subTree);return}const i=s.shapeFlag&4?vo(s.component):s.el,a=n?null:i,{i:r,r:l}=e,u=t&&t.r,d=r.refs===V?r.refs={}:r.refs,g=r.setupState,x=H(g),P=g===V?Ss:E=>_n(d,E)?!1:D(x,E),G=(E,Y)=>!(Y&&_n(d,Y));if(u!=null&&u!==l){if($n(t),q(u))d[u]=null,P(u)&&(g[u]=null);else if(re(u)){const E=t;G(u,E.k)&&(u.value=null),E.k&&(d[E.k]=null)}}if(R(l))rt(l,r,12,[a,d]);else{const E=q(l),Y=re(l);if(E||Y){const Z=()=>{if(e.f){const I=E?P(l)?g[l]:d[l]:G()||!e.k?l.value:d[e.k];if(n)C(I)&&Eo(I,i);else if(C(I))I.includes(i)||I.push(i);else if(E)d[l]=[i],P(l)&&(g[l]=d[l]);else{const W=[i];G(l,e.k)&&(l.value=W),e.k&&(d[e.k]=W)}}else E?(d[l]=a,P(l)&&(g[l]=a)):Y&&(G(l,e.k)&&(l.value=a),e.k&&(d[e.k]=a))};if(a){const I=()=>{Z(),po.delete(e)};I.id=-1,po.set(e,I),fe(I,o)}else $n(e),Z()}}}function $n(e){const t=po.get(e);t&&(t.flags|=8,po.delete(e))}Jt().requestIdleCallback,Jt().cancelIdleCallback;const pt=e=>!!e.type.__asyncLoader,ns=e=>e.type.__isKeepAlive;function Na(e,t){vn(e,"a",t)}function Ra(e,t){vn(e,"da",t)}function vn(e,t,o=le){const s=e.__wdc||(e.__wdc=()=>{let n=o;for(;n;){if(n.isDeactivated)return;n=n.parent}return e()});if(uo(t,s,o),o){let n=o.parent;for(;n&&n.parent;)ns(n.parent.vnode)&&Ea(s,t,o,n),n=n.parent}}function Ea(e,t,o,s){const n=uo(t,e,s,!0);xn(()=>{Eo(s[t],n)},o)}function uo(e,t,o=le,s=!1){if(o){const n=o[e]||(o[e]=[]),i=t.__weh||(t.__weh=(...a)=>{we();const r=At(o),l=ve(t,o,e,a);return r(),Pe(),l});return s?n.unshift(i):n.push(i),i}}const Ge=e=>(t,o=le)=>{(!Ot||e==="sp")&&uo(e,(...s)=>t(...s),o)},Aa=Ge("bm"),yn=Ge("m"),Oa=Ge("bu"),Fa=Ge("u"),Ma=Ge("bum"),xn=Ge("um"),Ia=Ge("sp"),Da=Ge("rtg"),Ha=Ge("rtc");function ja(e,t=le){uo("ec",e,t)}const Ga="components";function Wa(e,t){return Va(Ga,e,!0,t)||e}const Ua=Symbol.for("v-ndc");function Va(e,t,o=!0,s=!1){const n=ne||le;if(n){const i=n.type;{const r=ni(i,!1);if(r&&(r===t||r===oe(t)||r===Xt(oe(t))))return i}const a=wn(n[e]||i[e],t)||wn(n.appContext[e],t);return!a&&s?i:a}}function wn(e,t){return e&&(e[t]||e[oe(t)]||e[Xt(oe(t))])}function dt(e,t,o,s){let n;const i=o,a=C(e);if(a||q(e)){const r=a&&Je(e);let l=!1,u=!1;r&&(l=!$e(e),u=Ke(e),e=Qt(e)),n=new Array(e.length);for(let d=0,g=e.length;dt(r,l,void 0,i));else{const r=Object.keys(e);n=new Array(r.length);for(let l=0,u=r.length;l{const i=s.fn(...n);return i&&(i.key=s.key),i}:s.fn)}return e}function St(e,t,o,s,n,i){if(o==null&&(o={}),ne.ce||ne.parent&&pt(ne.parent)&&ne.parent.ce){const u=i!=null&&o.key==null?J({},o,{key:i}):o,d=Object.keys(u).length>0;return t!=="default"&&(u.name=t),A(),bo(ee,null,[ye("slot",u,s)],d?-2:64)}let a=e[t];a&&a._c&&(a._d=!1);const r=We.length;A();let l;try{const u=a&&Pn(a(o)),d=o.key||i||u&&u.key;l=bo(ee,{key:(d&&!me(d)?d:`_${t}`)+(!u&&s?"_fb":"")},u||(s?s():[]),u&&e._===1?64:-2)}catch(u){for(let d=We.length;d>r;d--)gs();throw u}finally{a&&a._c&&(a._d=!0)}return l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),l}function Pn(e){return e.some(t=>hs(t)?!(t.type===Se||t.type===ee&&!Pn(t.children)):!0)?e:null}const is=e=>e?ti(e)?vo(e):is(e.parent):null,Ct=J(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>is(e.parent),$root:e=>is(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Cn(e),$forceUpdate:e=>e.f||(e.f=()=>{Yo(e.update)}),$nextTick:e=>e.n||(e.n=ln.bind(e.proxy)),$watch:e=>Sa.bind(e)}),as=(e,t)=>e!==V&&!e.__isScriptSetup&&D(e,t),Ba={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:o,setupState:s,data:n,props:i,accessCache:a,type:r,appContext:l}=e;if(t[0]!=="$"){const x=a[t];if(x!==void 0)switch(x){case 1:return s[t];case 2:return n[t];case 4:return o[t];case 3:return i[t]}else{if(as(s,t))return a[t]=1,s[t];if(n!==V&&D(n,t))return a[t]=2,n[t];if(D(i,t))return a[t]=3,i[t];if(o!==V&&D(o,t))return a[t]=4,o[t];rs&&(a[t]=0)}}const u=Ct[t];let d,g;if(u)return t==="$attrs"&&ae(e.attrs,"get",""),u(e);if((d=r.__cssModules)&&(d=d[t]))return d;if(o!==V&&D(o,t))return a[t]=4,o[t];if(g=l.config.globalProperties,D(g,t))return g[t]},set({_:e},t,o){const{data:s,setupState:n,ctx:i}=e;return as(n,t)?(n[t]=o,!0):s!==V&&D(s,t)?(s[t]=o,!0):D(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:s,appContext:n,props:i,type:a}},r){let l;return!!(o[r]||e!==V&&r[0]!=="$"&&D(e,r)||as(t,r)||D(i,r)||D(s,r)||D(Ct,r)||D(n.config.globalProperties,r)||(l=a.__cssModules)&&l[r])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:D(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function kn(e){return C(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}let rs=!0;function Ka(e){const t=Cn(e),o=e.proxy,s=e.ctx;rs=!1,t.beforeCreate&&Ln(t.beforeCreate,e,"bc");const{data:n,computed:i,methods:a,watch:r,provide:l,inject:u,created:d,beforeMount:g,mounted:x,beforeUpdate:P,updated:G,activated:E,deactivated:Y,beforeDestroy:Z,beforeUnmount:I,destroyed:W,unmounted:S,render:te,renderTracked:Ne,renderTriggered:Re,errorCaptured:Ze,serverPrefetch:Lo,expose:tt,inheritAttrs:Gt,components:So,directives:Co,filters:ks}=t;if(u&&qa(u,s,null),a)for(const X in a){const K=a[X];R(K)&&(s[X]=K.bind(o))}if(n){const X=n.call(o,o);j(X)&&(e.data=qo(X))}if(rs=!0,i)for(const X in i){const K=i[X],ot=R(K)?K.bind(o,o):R(K.get)?K.get.bind(o,o):xe,To=!R(K)&&R(K.set)?K.set.bind(o):xe,st=Rr({get:ot,set:To});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>st.value,set:Ee=>st.value=Ee})}if(r)for(const X in r)Sn(r[X],s,o,X);if(l){const X=R(l)?l.call(o):l;Reflect.ownKeys(X).forEach(K=>{Pa(K,X[K])})}d&&Ln(d,e,"c");function ue(X,K){C(K)?K.forEach(ot=>X(ot.bind(o))):K&&X(K.bind(o))}if(ue(Aa,g),ue(yn,x),ue(Oa,P),ue(Fa,G),ue(Na,E),ue(Ra,Y),ue(ja,Ze),ue(Ha,Ne),ue(Da,Re),ue(Ma,I),ue(xn,S),ue(Ia,Lo),C(tt))if(tt.length){const X=e.exposed||(e.exposed={});tt.forEach(K=>{Object.defineProperty(X,K,{get:()=>o[K],set:ot=>o[K]=ot,enumerable:!0})})}else e.exposed||(e.exposed={});te&&e.render===xe&&(e.render=te),Gt!=null&&(e.inheritAttrs=Gt),So&&(e.components=So),Co&&(e.directives=Co),Lo&&mn(e)}function qa(e,t,o=xe){C(e)&&(e=ls(e));for(const s in e){const n=e[s];let i;j(n)?"default"in n?i=kt(n.from||s,n.default,!0):i=kt(n.from||s):i=kt(n),re(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):t[s]=i}}function Ln(e,t,o){ve(C(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,o)}function Sn(e,t,o,s){let n=s.includes(".")?hn(o,s):()=>o[s];if(q(e)){const i=t[e];R(i)&&es(n,i)}else if(R(e))es(n,e.bind(o));else if(j(e))if(C(e))e.forEach(i=>Sn(i,t,o,s));else{const i=R(e.handler)?e.handler.bind(o):t[e.handler];R(i)&&es(n,i,e)}}function Cn(e){const t=e.type,{mixins:o,extends:s}=t,{mixins:n,optionsCache:i,config:{optionMergeStrategies:a}}=e.appContext,r=i.get(t);let l;return r?l=r:!n.length&&!o&&!s?l=t:(l={},n.length&&n.forEach(u=>fo(l,u,a,!0)),fo(l,t,a)),j(t)&&i.set(t,l),l}function fo(e,t,o,s=!1){const{mixins:n,extends:i}=t;i&&fo(e,i,o,!0),n&&n.forEach(a=>fo(e,a,o,!0));for(const a in t)if(!(s&&a==="expose")){const r=Za[a]||o&&o[a];e[a]=r?r(e[a],t[a]):t[a]}return e}const Za={data:Tn,props:Nn,emits:Nn,methods:Tt,computed:Tt,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:Tt,directives:Tt,watch:Ja,provide:Tn,inject:Xa};function Tn(e,t){return t?e?function(){return J(R(e)?e.call(this,this):e,R(t)?t.call(this,this):t)}:t:e}function Xa(e,t){return Tt(ls(e),ls(t))}function ls(e){if(C(e)){const t={};for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${oe(t)}Modifiers`]||e[`${be(t)}Modifiers`];function tr(e,t,...o){if(e.isUnmounted)return;const s=e.vnode.props||V;let n=o;const i=t.startsWith("update:"),a=i&&er(s,t.slice(7));a&&(a.trim&&(n=o.map(d=>q(d)?d.trim():d)),a.number&&(n=n.map(Di)));let r,l=s[r=Oo(t)]||s[r=Oo(oe(t))];!l&&i&&(l=s[r=Oo(be(t))]),l&&ve(l,e,6,n);const u=s[r+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,ve(u,e,6,n)}}const or=new WeakMap;function En(e,t,o=!1){const s=o?or:t.emitsCache,n=s.get(e);if(n!==void 0)return n;const i=e.emits;let a={},r=!1;if(!R(e)){const l=u=>{const d=En(u,t,!0);d&&(r=!0,J(a,d))};!o&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!r?(j(e)&&s.set(e,null),null):(C(i)?i.forEach(l=>a[l]=null):J(a,i),j(e)&&s.set(e,a),a)}function go(e,t){return!e||!zt(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),D(e,t[0].toLowerCase()+t.slice(1))||D(e,be(t))||D(e,t))}function Jc(){}function An(e){const{type:t,vnode:o,proxy:s,withProxy:n,propsOptions:[i],slots:a,attrs:r,emit:l,render:u,renderCache:d,props:g,data:x,setupState:P,ctx:G,inheritAttrs:E}=e,Y=lo(e);let Z,I;try{if(o.shapeFlag&4){const S=n||s,te=S;Z=Ce(u.call(te,S,d,g,P,x,G)),I=r}else{const S=t;Z=Ce(S.length>1?S(g,{attrs:r,slots:a,emit:l}):S(g,null)),I=t.props?r:sr(r)}}catch(S){We.length=0,ao(S,e,1),Z=ye(Se)}let W=Z;if(I&&E!==!1){const S=Object.keys(I),{shapeFlag:te}=W;S.length&&te&7&&(i&&S.some(Bt)&&(I=nr(I,i)),W=ft(W,I,!1,!0))}if(o.dirs&&(W=ft(W,null,!1,!0),W.dirs=W.dirs?W.dirs.concat(o.dirs):o.dirs),o.transition){const S=co(W.type)&&bn(W)||W;os(S,o.transition)}return Z=W,lo(Y),Z}const sr=e=>{let t;for(const o in e)(o==="class"||o==="style"||zt(o))&&((t||(t={}))[o]=e[o]);return t},nr=(e,t)=>{const o={};for(const s in e)(!Bt(s)||!(s.slice(9)in t))&&(o[s]=e[s]);return o};function ir(e,t,o){const{props:s,children:n,component:i}=e,{props:a,children:r,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&l>=0){if(l&1024)return!0;if(l&16)return s?On(s,a,u):!!a;if(l&8){const d=t.dynamicProps;for(let g=0;gObject.create(Mn),Dn=e=>Object.getPrototypeOf(e)===Mn;function rr(e,t,o,s=!1){const n={},i=In();e.propsDefaults=Object.create(null),Hn(e,t,n,i);for(const a in e.propsOptions[0])a in n||(n[a]=void 0);o?e.props=s?n:pa(n):e.type.props?e.props=n:e.props=i,e.attrs=i}function lr(e,t,o,s){const{props:n,attrs:i,vnode:{patchFlag:a}}=e,r=H(n),[l]=e.propsOptions;let u=!1;if((s||a>0)&&!(a&16)){if(a&8){const d=e.vnode.dynamicProps;for(let g=0;g{l=!0;const[x,P]=jn(g,t,!0);J(a,x),P&&r.push(...P)};!o&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!l)return j(e)&&s.set(e,nt),nt;if(C(i))for(let d=0;de==="_"||e==="_ctx"||e==="$stable",ds=e=>C(e)?e.map(Ce):[Ce(e)],pr=(e,t,o)=>{if(t._n)return t;const s=Pt((...n)=>ds(t(...n)),o);return s._c=!1,s},Wn=(e,t,o)=>{const s=e._ctx;for(const n in e){if(ps(n))continue;const i=e[n];if(R(i))t[n]=pr(n,i,s);else if(i!=null){const a=ds(i);t[n]=()=>a}}},Un=(e,t)=>{const o=ds(t);e.slots.default=()=>o},Vn=(e,t,o)=>{for(const s in t)(o||!ps(s))&&(e[s]=t[s])},dr=(e,t,o)=>{const s=e.slots=In();if(e.vnode.shapeFlag&32){const n=t._;n?(Vn(s,t,o),o&&Rs(s,"_",n,!0)):Wn(t,s)}else t&&Un(e,t)},ur=(e,t,o)=>{const{vnode:s,slots:n}=e;let i=!0,a=V;if(s.shapeFlag&32){const r=t._;r?o&&r===1?i=!1:Vn(n,t,o):(i=!t.$stable,Wn(t,n)),a=t}else t&&(Un(e,t),a={default:1});if(i)for(const r in n)!ps(r)&&a[r]==null&&delete n[r]},fe=mr;function fr(e){return gr(e)}function gr(e,t){const o=Jt();o.__VUE__=!0;const{insert:s,remove:n,patchProp:i,createElement:a,createText:r,createComment:l,setText:u,setElementText:d,parentNode:g,nextSibling:x,setScopeId:P=xe,insertStaticContent:G}=e,E=(c,p,f,_=null,m=null,h=null,y=void 0,v=null,$=!!p.dynamicChildren)=>{if(c===p)return;c&&!Rt(c,p)&&(_=No(c),Ee(c,m,h,!0),c=null),p.patchFlag===-2&&($=!1,p.dynamicChildren=null);const{type:b,ref:L,shapeFlag:w}=p;switch(b){case ho:Y(c,p,f,_);break;case Se:Z(c,p,f,_);break;case fs:c==null&&I(p,f,_,y);break;case ee:So(c,p,f,_,m,h,y,v,$);break;default:w&1?te(c,p,f,_,m,h,y,v,$):w&6?Co(c,p,f,_,m,h,y,v,$):(w&64||w&128)&&b.process(c,p,f,_,m,h,y,v,$,Ut)}L!=null&&m?Lt(L,c&&c.ref,h,p||c,!p):L==null&&c&&c.ref!=null&&Lt(c.ref,null,h,c,!0)},Y=(c,p,f,_)=>{if(c==null)s(p.el=r(p.children),f,_);else{const m=p.el=c.el;p.children!==c.children&&u(m,p.children)}},Z=(c,p,f,_)=>{c==null?s(p.el=l(p.children||""),f,_):p.el=c.el},I=(c,p,f,_)=>{[c.el,c.anchor]=G(c.children,p,f,_,c.el,c.anchor)},W=({el:c,anchor:p},f,_)=>{let m;for(;c&&c!==p;)m=x(c),s(c,f,_),c=m;s(p,f,_)},S=({el:c,anchor:p})=>{let f;for(;c&&c!==p;)f=x(c),n(c),c=f;n(p)},te=(c,p,f,_,m,h,y,v,$)=>{if(p.type==="svg"?y="svg":p.type==="math"&&(y="mathml"),c==null)Ne(p,f,_,m,h,y,v,$);else{const b=c.el&&c.el._isVueCE?c.el:null;try{b&&b._beginPatch(),Lo(c,p,m,h,y,v,$)}finally{b&&b._endPatch()}}},Ne=(c,p,f,_,m,h,y,v)=>{let $,b;const{props:L,shapeFlag:w,transition:k,dirs:N}=c;if($=c.el=a(c.type,h,L&&L.is,L),w&8?d($,c.children):w&16&&Ze(c.children,$,null,_,m,us(c,h),y,v),N&&Qe(c,null,_,"created"),Re($,c,c.scopeId,y,_),L){for(const z in L)z!=="value"&&!bt(z)&&i($,z,null,L[z],h,_);"value"in L&&i($,"value",null,L.value,h),(b=L.onVnodeBeforeMount)&&Te(b,_,c)}N&&Qe(c,null,_,"beforeMount");const M=hr(m,k);M&&k.beforeEnter($),s($,p,f),((b=L&&L.onVnodeMounted)||M||N)&&fe(()=>{try{b&&Te(b,_,c),M&&k.enter($),N&&Qe(c,null,_,"mounted")}finally{}},m)},Re=(c,p,f,_,m)=>{if(f&&P(c,f),_)for(let h=0;h<_.length;h++)P(c,_[h]);if(m){let h=m.subTree;if(p===h||Zn(h.type)&&(h.ssContent===p||h.ssFallback===p)){const y=m.vnode;Re(c,y,y.scopeId,y.slotScopeIds,m.parent)}}},Ze=(c,p,f,_,m,h,y,v,$=0)=>{for(let b=$;b{const v=p.el=c.el;let{patchFlag:$,dynamicChildren:b,dirs:L}=p;$|=c.patchFlag&16;const w=c.props||V,k=p.props||V;let N;if(f&&et(f,!1),(N=k.onVnodeBeforeUpdate)&&Te(N,f,p,c),L&&Qe(p,c,f,"beforeUpdate"),f&&et(f,!0),b&&(!c.dynamicChildren||c.dynamicChildren.length!==b.length)&&($=0,y=!1,b=null),(w.innerHTML&&k.innerHTML==null||w.textContent&&k.textContent==null)&&d(v,""),b?tt(c.dynamicChildren,b,v,f,_,us(p,m),h):y||K(c,p,v,null,f,_,us(p,m),h,!1),$>0){if($&16)Gt(v,w,k,f,m);else if($&2&&w.class!==k.class&&i(v,"class",null,k.class,m),$&4&&i(v,"style",w.style,k.style,m),$&8){const M=p.dynamicProps;for(let z=0;z{N&&Te(N,f,p,c),L&&Qe(p,c,f,"updated")},_)},tt=(c,p,f,_,m,h,y)=>{for(let v=0;v{if(p!==f){if(p!==V)for(const h in p)!bt(h)&&!(h in f)&&i(c,h,p[h],null,m,_);for(const h in f){if(bt(h))continue;const y=f[h],v=p[h];y!==v&&h!=="value"&&i(c,h,v,y,m,_)}"value"in f&&i(c,"value",p.value,f.value,m)}},So=(c,p,f,_,m,h,y,v,$)=>{const b=p.el=c?c.el:r(""),L=p.anchor=c?c.anchor:r("");let{patchFlag:w,dynamicChildren:k,slotScopeIds:N}=p;N&&(v=v?v.concat(N):N),c==null?(s(b,f,_),s(L,f,_),Ze(p.children||[],f,L,m,h,y,v,$)):w>0&&w&64&&k&&c.dynamicChildren&&c.dynamicChildren.length===k.length?(tt(c.dynamicChildren,k,f,m,h,y,v),(p.key!=null||m&&p===m.subTree)&&zn(c,p,!0)):K(c,p,f,L,m,h,y,v,$)},Co=(c,p,f,_,m,h,y,v,$)=>{p.slotScopeIds=v,c==null?p.shapeFlag&512?m.ctx.activate(p,f,_,y,$):ks(p,f,_,m,h,y,$):Ci(c,p,$)},ks=(c,p,f,_,m,h,y)=>{const v=c.component=wr(c,_,m);if(ns(c)&&(v.ctx.renderer=Ut),Pr(v,!1,y),v.asyncDep){if(m&&m.registerDep(v,ue,y),!c.el){const $=v.subTree=ye(Se);Z(null,$,p,f),c.placeholder=$.el}}else ue(v,c,p,f,m,h,y)},Ci=(c,p,f)=>{const _=p.component=c.component;if(ir(c,p,f))if(_.asyncDep&&!_.asyncResolved){X(_,p,f);return}else _.next=p,_.update();else p.el=c.el,_.vnode=p},ue=(c,p,f,_,m,h,y)=>{const v=()=>{if(c.isMounted){let{next:w,bu:k,u:N,parent:M,vnode:z}=c;{const Oe=Bn(c);if(Oe){w&&(w.el=z.el,X(c,w,y)),Oe.asyncDep.then(()=>{fe(()=>{c.isUnmounted||b()},m)});return}}let U=w,Q;et(c,!1),w?(w.el=z.el,X(c,w,y)):w=z,k&&Fo(k),(Q=w.props&&w.props.onVnodeBeforeUpdate)&&Te(Q,M,w,z),et(c,!0);const ie=An(c),Ae=c.subTree;c.subTree=ie,E(Ae,ie,g(Ae.el),No(Ae),c,m,h),w.el=ie.el,U===null&&ar(c,ie.el),N&&fe(N,m),(Q=w.props&&w.props.onVnodeUpdated)&&fe(()=>Te(Q,M,w,z),m)}else{let w;const{el:k,props:N}=p,{bm:M,m:z,parent:U,root:Q,type:ie}=c,Ae=pt(p);et(c,!1),M&&Fo(M),!Ae&&(w=N&&N.onVnodeBeforeMount)&&Te(w,U,p),et(c,!0);{Q.ce&&Q.ce._hasShadowRoot()&&Q.ce._injectChildStyle(ie,c.parent?c.parent.type:void 0);const Oe=c.subTree=An(c);E(null,Oe,f,_,c,m,h),p.el=Oe.el}if(z&&fe(z,m),!Ae&&(w=N&&N.onVnodeMounted)){const Oe=p;fe(()=>Te(w,U,Oe),m)}(p.shapeFlag&256||U&&pt(U.vnode)&&U.vnode.shapeFlag&256)&&c.a&&fe(c.a,m),c.isMounted=!0,p=f=_=null}};c.scope.on();const $=c.effect=new Ds(v);c.scope.off();const b=c.update=$.run.bind($),L=c.job=$.runIfDirty.bind($);L.i=c,L.id=c.uid,$.scheduler=()=>Yo(L),et(c,!0),b()},X=(c,p,f)=>{p.component=c;const _=c.vnode.props;c.vnode=p,c.next=null,lr(c,p.props,_,f),ur(c,p.children,f),we(),pn(c),Pe()},K=(c,p,f,_,m,h,y,v,$=!1)=>{const b=c&&c.children,L=c?c.shapeFlag:0,w=p.children,{patchFlag:k,shapeFlag:N}=p;if(k>0){if(k&128){To(b,w,f,_,m,h,y,v,$);return}else if(k&256){ot(b,w,f,_,m,h,y,v,$);return}}N&8?(L&16&&Wt(b,m,h),w!==b&&d(f,w)):L&16?N&16?To(b,w,f,_,m,h,y,v,$):Wt(b,m,h,!0):(L&8&&d(f,""),N&16&&Ze(w,f,_,m,h,y,v,$))},ot=(c,p,f,_,m,h,y,v,$)=>{c=c||nt,p=p||nt;const b=c.length,L=p.length,w=Math.min(b,L);let k;for(k=0;kL?Wt(c,m,h,!0,!1,w):Ze(p,f,_,m,h,y,v,$,w)},To=(c,p,f,_,m,h,y,v,$)=>{let b=0;const L=p.length;let w=c.length-1,k=L-1;for(;b<=w&&b<=k;){const N=c[b],M=p[b]=$?Ue(p[b]):Ce(p[b]);if(Rt(N,M))E(N,M,f,null,m,h,y,v,$);else break;b++}for(;b<=w&&b<=k;){const N=c[w],M=p[k]=$?Ue(p[k]):Ce(p[k]);if(Rt(N,M))E(N,M,f,null,m,h,y,v,$);else break;w--,k--}if(b>w){if(b<=k){const N=k+1,M=Nk)for(;b<=w;)Ee(c[b],m,h,!0),b++;else{const N=b,M=b,z=new Map;for(b=M;b<=k;b++){const he=p[b]=$?Ue(p[b]):Ce(p[b]);he.key!=null&&z.set(he.key,b)}let U,Q=0;const ie=k-M+1;let Ae=!1,Oe=0;const Vt=new Array(ie);for(b=0;b=ie){Ee(he,m,h,!0);continue}let Fe;if(he.key!=null)Fe=z.get(he.key);else for(U=M;U<=k;U++)if(Vt[U-M]===0&&Rt(he,p[U])){Fe=U;break}Fe===void 0?Ee(he,m,h,!0):(Vt[Fe-M]=b+1,Fe>=Oe?Oe=Fe:Ae=!0,E(he,p[Fe],f,null,m,h,y,v,$),Q++)}const Ri=Ae?br(Vt):nt;for(U=Ri.length-1,b=ie-1;b>=0;b--){const he=M+b,Fe=p[he],Ei=p[he+1],Ai=he+1{const{el:h,type:y,transition:v,children:$,shapeFlag:b}=c;if(b&6){st(c.component.subTree,p,f,_);return}if(b&128){c.suspense.move(p,f,_);return}if(b&64){y.move(c,p,f,Ut);return}if(y===ee){s(h,p,f);for(let w=0;w<$.length;w++)st($[w],p,f,_);s(c.anchor,p,f);return}if(y===fs){W(c,p,f);return}if(_!==2&&b&1&&v)if(_===0)v.persisted&&!h[ts]?s(h,p,f):(v.beforeEnter(h),s(h,p,f),fe(()=>v.enter(h),m));else{const{leave:w,delayLeave:k,afterLeave:N}=v,M=()=>{c.ctx.isUnmounted?n(h):s(h,p,f)},z=()=>{const U=h._isLeaving||!!h[ts];h._isLeaving&&h[ts](!0),v.persisted&&!U?M():w(h,()=>{M(),N&&N()})};k?k(h,M,z):z()}else s(h,p,f)},Ee=(c,p,f,_=!1,m=!1)=>{const{type:h,props:y,ref:v,children:$,dynamicChildren:b,shapeFlag:L,patchFlag:w,dirs:k,cacheIndex:N,memo:M}=c;if(w===-2&&(m=!1),v!=null&&(we(),Lt(v,null,f,c,!0),Pe()),N!=null&&(p.renderCache[N]=void 0),L&256){p.ctx.deactivate(c);return}const z=L&1&&k,U=!pt(c);let Q;if(U&&(Q=y&&y.onVnodeBeforeUnmount)&&Te(Q,p,c),L&6)Kc(c.component,f,_);else{if(L&128){c.suspense.unmount(f,_);return}z&&Qe(c,null,p,"beforeUnmount"),L&64?c.type.remove(c,p,f,Ut,_):b&&!b.hasOnce&&(h!==ee||w>0&&w&64)?Wt(b,p,f,!1,!0):(h===ee&&w&384||!m&&L&16)&&Wt($,p,f),_&&Ti(c)}const ie=M!=null&&N==null;(U&&(Q=y&&y.onVnodeUnmounted)||z||ie)&&fe(()=>{Q&&Te(Q,p,c),z&&Qe(c,null,p,"unmounted"),ie&&(c.el=null)},f)},Ti=c=>{const{type:p,el:f,anchor:_,transition:m}=c;if(p===ee){Bc(f,_);return}if(p===fs){S(c);return}const h=()=>{n(f),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(c.shapeFlag&1&&m&&!m.persisted){const{leave:y,delayLeave:v}=m,$=()=>y(f,h);v?v(c.el,h,$):$()}else h()},Bc=(c,p)=>{let f;for(;c!==p;)f=x(c),n(c),c=f;n(p)},Kc=(c,p,f)=>{const{bum:_,scope:m,job:h,subTree:y,um:v,m:$,a:b}=c;Kn($),Kn(b),_&&Fo(_),m.stop(),h&&(h.flags|=8,Ee(y,c,p,f)),v&&fe(v,p),fe(()=>{c.isUnmounted=!0},p)},Wt=(c,p,f,_=!1,m=!1,h=0)=>{for(let y=h;y{if(c.shapeFlag&6)return No(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const p=x(c.anchor||c.el),f=p&&p[Ca];return f?x(f):p};let Ls=!1;const Ni=(c,p,f)=>{let _;c==null?p._vnode&&(Ee(p._vnode,null,null,!0),_=p._vnode.component):E(p._vnode||null,c,p,null,null,null,f),p._vnode=c,Ls||(Ls=!0,pn(_),dn(),Ls=!1)},Ut={p:E,um:Ee,m:st,r:Ti,mt:ks,mc:Ze,pc:K,pbc:tt,n:No,o:e};return{render:Ni,hydrate:void 0,createApp:Qa(Ni)}}function us({type:e,props:t},o){return o==="svg"&&e==="foreignObject"||o==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:o}function et({effect:e,job:t},o){o?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function hr(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function zn(e,t,o=!1){const s=e.children,n=t.children;if(C(s)&&C(n))for(let i=0;i>1,e[o[r]]0&&(t[s]=o[i-1]),o[i]=s)}}for(i=o.length,a=o[i-1];i-- >0;)o[i]=a,a=t[a];return o}function Bn(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Bn(t)}function Kn(e){if(e)for(let t=0;te.__isSuspense;function mr(e,t){t&&t.pendingBranch?C(e)?t.effects.push(...e):t.effects.push(e):wa(e)}const ee=Symbol.for("v-fgt"),ho=Symbol.for("v-txt"),Se=Symbol.for("v-cmt"),fs=Symbol.for("v-stc"),We=[];let ge=null;function A(e=!1){We.push(ge=e?null:[])}function gs(){We.pop(),ge=We[We.length-1]||null}let Nt=1;function Xn(e,t=!1){Nt+=e,e<0&&ge&&t&&(ge.hasOnce=!0)}function Jn(e){return e.dynamicChildren=Nt>0?ge||nt:null,gs(),Nt>0&&ge&&ge.push(e),e}function O(e,t,o,s,n,i){return Jn(T(e,t,o,s,n,i,!0))}function bo(e,t,o,s,n){return Jn(ye(e,t,o,s,n,!0))}function hs(e){return e?e.__v_isVNode===!0:!1}function Rt(e,t){return e.type===t.type&&e.key===t.key}const Yn=({key:e})=>e??null,mo=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?q(e)||re(e)||R(e)?{i:ne,r:e,k:t,f:!!o}:e:null);function T(e,t=null,o=null,s=0,n=null,i=e===ee?0:1,a=!1,r=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Yn(t),ref:t&&mo(t),scopeId:fn,slotScopeIds:null,children:o,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:ne};return r?(_o(l,o),i&128&&e.normalize(l)):o&&(l.shapeFlag|=q(o)?8:16),Nt>0&&!a&&ge&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&ge.push(l),l}const ye=_r;function _r(e,t=null,o=null,s=0,n=null,i=!1){if((!e||e===Ua)&&(e=Se),hs(e)){const r=ft(e,t,!0);return o&&_o(r,o),Nt>0&&!i&&ge&&(r.shapeFlag&6?ge[ge.indexOf(e)]=r:ge.push(r)),r.patchFlag=-2,r}if(Nr(e)&&(e=e.__vccOpts),t){t=$r(t);let{class:r,style:l}=t;r&&!q(r)&&(t.class=Be(r)),j(l)&&(Xo(l)&&!C(l)&&(l=J({},l)),t.style=Mo(l))}const a=q(e)?1:Zn(e)?128:co(e)?64:j(e)?4:R(e)?2:0;return T(e,t,o,s,n,a,i,!0)}function $r(e){return e?Xo(e)||Dn(e)?J({},e):e:null}function ft(e,t,o=!1,s=!1){const{props:n,ref:i,patchFlag:a,children:r,transition:l}=e,u=t?vr(n||{},t):n,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Yn(u),ref:t&&t.ref?o&&i?C(i)?i.concat(mo(t)):[i,mo(t)]:mo(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:r,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ee?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ft(e.ssContent),ssFallback:e.ssFallback&&ft(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&s&&os(d,l.clone(d)),d}function gt(e=" ",t=0){return ye(ho,null,e,t)}function de(e="",t=!1){return t?(A(),bo(Se,null,e)):ye(Se,null,e)}function Ce(e){return e==null||typeof e=="boolean"?ye(Se):C(e)?ye(ee,null,e.slice()):hs(e)?Ue(e):ye(ho,null,String(e))}function Ue(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ft(e)}function _o(e,t){let o=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(C(t))o=16;else if(typeof t=="object")if(s&65){const n=t.default;n&&(n._c&&(n._d=!1),_o(e,n()),n._c&&(n._d=!0));return}else{o=32;const n=t._;!n&&!Dn(t)?t._ctx=ne:n===3&&ne&&(ne.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(R(t)){if(s&65){_o(e,{default:t});return}t={default:t,_ctx:ne},o=32}else t=String(t),s&64?(o=16,t=[gt(t)]):o=8;e.children=t,e.shapeFlag|=o}function vr(...e){const t={};for(let o=0;ole||ne;let $o,Et;{const e=Jt(),t=(o,s)=>{let n;return(n=e[o])||(n=e[o]=[]),n.push(s),i=>{n.length>1?n.forEach(a=>a(i)):n[0](i)}};$o=t("__VUE_INSTANCE_SETTERS__",o=>le=o),Et=t("__VUE_SSR_SETTERS__",o=>Ot=o)}const At=e=>{const t=le;return $o(e),e.scope.on(),()=>{e.scope.off(),$o(t)}},ei=()=>{le&&le.scope.off(),$o(null)};function ti(e){return e.vnode.shapeFlag&4}let Ot=!1;function Pr(e,t=!1,o=!1){t&&Et(t);const{props:s,children:n}=e.vnode,i=ti(e);rr(e,s,i,t),dr(e,n,o||t);const a=i?kr(e,t):void 0;return t&&Et(!1),a}function kr(e,t){const o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ba);const{setup:s}=o;if(s){we();const n=e.setupContext=s.length>1?Sr(e):null,i=At(e),a=rt(s,e,0,[e.props,n]),r=Ts(a);if(Pe(),i(),(r||e.sp)&&!pt(e)&&mn(e),r){if(a.then(ei,ei),t)return a.then(l=>{Et(!0);try{oi(e,l,t)}finally{Et(!1)}}).catch(l=>{ao(l,e,0)});e.asyncDep=a}else oi(e,a)}else si(e)}function oi(e,t,o){R(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:j(t)&&(e.setupState=nn(t)),si(e)}function si(e,t,o){const s=e.type;e.render||(e.render=s.render||xe);{const n=At(e);we();try{Ka(e)}finally{Pe(),n()}}}const Lr={get(e,t){return ae(e,"get",""),e[t]}};function Sr(e){const t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,Lr),slots:e.slots,emit:e.emit,expose:t}}function vo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(nn(da(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in Ct)return Ct[o](e)},has(t,o){return o in t||o in Ct}})):e.proxy}const Cr=/(?:^|[-_])\w/g,Tr=e=>e.replace(Cr,t=>t.toUpperCase()).replace(/[-_]/g,"");function ni(e,t=!0){return R(e)?e.displayName||e.name:e.name||t&&e.__name}function ii(e,t,o=!1){let s=ni(t);if(!s&&t.__file){const n=t.__file.match(/([^/\\]+)\.\w+$/);n&&(s=n[1])}if(!s&&e){const n=i=>{for(const a in i)if(i[a]===t)return a};s=n(e.components)||e.parent&&n(e.parent.type.components)||n(e.appContext.components)}return s?Tr(s):o?"App":"Anonymous"}function Nr(e){return R(e)&&"__vccOpts"in e}const Rr=(e,t)=>ga(e,t,Ot),Er="3.5.42";/** * @vue/runtime-dom v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let bs;const ai=typeof window<"u"&&window.trustedTypes;if(ai)try{bs=ai.createPolicy("vue",{createHTML:e=>e})}catch{}const ri=bs?e=>bs.createHTML(e):e=>e,Ar="http://www.w3.org/2000/svg",Or="http://www.w3.org/1998/Math/MathML",Ve=typeof document<"u"?document:null,li=Ve&&Ve.createElement("template"),Fr={insert:(e,t,o)=>{t.insertBefore(e,o||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,o,s)=>{const n=t==="svg"?Ve.createElementNS(Ar,e):t==="mathml"?Ve.createElementNS(Or,e):o?Ve.createElement(e,{is:o}):Ve.createElement(e);return e==="select"&&s&&s.multiple!=null&&n.setAttribute("multiple",s.multiple),n},createText:e=>Ve.createTextNode(e),createComment:e=>Ve.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ve.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,s,n,i){const a=o?o.previousSibling:t.lastChild;if(n&&(n===i||n.nextSibling))for(;t.insertBefore(n.cloneNode(!0),o),!(n===i||!(n=n.nextSibling)););else{li.innerHTML=ri(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const r=li.content;if(s==="svg"||s==="mathml"){const l=r.firstChild;for(;l.firstChild;)r.appendChild(l.firstChild);r.removeChild(l)}t.insertBefore(r,o)}return[a?a.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}},Mr=Symbol("_vtc");function Dr(e,t,o){const s=e[Mr];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}const yo=Symbol("_vod"),ci=Symbol("_vsh"),ms={name:"show",beforeMount(e,{value:t},{transition:o}){e[yo]=e.style.display==="none"?"":e.style.display,o&&t?o.beforeEnter(e):Ft(e,t)},mounted(e,{value:t},{transition:o}){o&&t&&o.enter(e)},updated(e,{value:t,oldValue:o},{transition:s}){!t!=!o&&(s?t?(s.beforeEnter(e),Ft(e,!0),s.enter(e)):s.leave(e,()=>{Ft(e,!1)}):Ft(e,t))},beforeUnmount(e,{value:t}){Ft(e,t)}};function Ft(e,t){e.style.display=t?e[yo]:"none",e[ci]=!t}const Ir=Symbol(""),Hr=/(?:^|;)\s*display\s*:/;function jr(e,t,o){const s=e.style,n=q(o);let i=!1;if(o&&!n){if(t)if(q(t))for(const a of t.split(";")){const r=a.slice(0,a.indexOf(":")).trim();o[r]==null&&Mt(s,r,"")}else for(const a in t)o[a]==null&&Mt(s,a,"");for(const a in o){a==="display"&&(i=!0);const r=o[a];r!=null?Wr(e,a,!q(t)&&t?t[a]:void 0,r)||Mt(s,a,r):Mt(s,a,"")}}else if(n){if(t!==o){const a=s[Ir];a&&(o+=";"+a),s.cssText=o,i=Hr.test(o)}}else t&&e.removeAttribute("style");yo in e&&(e[yo]=i?s.display:"",e[ci]&&(s.display="none"))}const xo=/\s*!important$/;function Mt(e,t,o){if(C(o))o.forEach(s=>Mt(e,t,s));else if(o==null&&(o=""),t.startsWith("--"))xo.test(o)?e.setProperty(t,o.replace(xo,""),"important"):e.setProperty(t,o);else{const s=Gr(e,t);xo.test(o)?e.setProperty(be(s),o.replace(xo,""),"important"):e[s]=o}}const pi=["Webkit","Moz","ms"],_s={};function Gr(e,t){const o=_s[t];if(o)return o;let s=oe(t);if(s!=="filter"&&s in e)return _s[t]=s;s=Xt(s);for(let n=0;n$s||(Zr.then(()=>$s=0),$s=Date.now());function Jr(e,t){const o=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=o.attached)return;const n=o.value;if(C(n)){const i=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{i.call(s),s._stopped=!0};const a=n.slice(),r=[s];for(let l=0;le.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Yr=(e,t,o,s,n,i)=>{const a=n==="svg";t==="class"?Dr(e,s,a):t==="style"?jr(e,o,s):zt(t)?Bt(t)||zr(e,t,o,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Qr(e,t,s,a))?(fi(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ui(e,t,s,a,i,t!=="value")):e._isVueCE&&(el(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!q(s)))?fi(e,oe(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ui(e,t,s,a))};function Qr(e,t,o,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&hi(t)&&R(o));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const n=e.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return hi(t)&&q(o)?!1:t in e}function el(e,t){const o=e._def.props;if(!o)return!1;const s=oe(t);return Array.isArray(o)?o.some(n=>oe(n)===s):Object.keys(o).some(n=>oe(n)===s)}const bi={};function tl(e,t,o){let s=ss(e,t);qt(s)&&(s=J({},s,t));class n extends vs{constructor(a){super(s,a,o)}}return n.def=s,n}const ol=typeof HTMLElement<"u"?HTMLElement:class{};class vs extends ol{constructor(t,o={},s=$i){super(),this._def=t,this._props=o,this._createApp=s,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&s!==$i?this._root=this.shadowRoot:t.shadowRoot!==!1?(this.attachShadow(J({},t.shadowRootOptions,{mode:"open"})),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t=t&&(t.assignedSlot||t.parentNode||t.host);)if(t instanceof vs){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{if(this._pendingResolve=void 0,this.isConnected)return this._resolveDef()}):this._resolveDef())}_setParent(t=this._parent){t&&(this._instance.parent=t._instance,this._inheritParentContext(t))}_inheritParentContext(t=this._parent){t&&this._app&&Object.setPrototypeOf(this._app._context.provides,t._instance.provides)}disconnectedCallback(){this._connected=!1,ln(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(t){for(const o of t)this._setAttr(o.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let s=0;s{this._resolved=!0,this._pendingResolve=void 0;const{props:i,styles:a}=s;let r;if(i&&!C(i))for(const l in i){const u=i[l];(u===Number||u&&u.type===Number)&&(l in this._props&&(this._props[l]=Es(this._props[l])),(r||(r=Object.create(null)))[oe(l)]=!0)}this._numberProps=r,this._resolveProps(s),this.shadowRoot&&this._applyStyles(a),this._mount(s)},o=this._def.__asyncLoader;if(o)return this._pendingResolve=o().then(s=>{s.configureApp=this._def.configureApp,t(this._def=s,!0)}),this._pendingResolve;t(this._def)}_mount(t){this._app=this._createApp(t),this._inheritParentContext(),t.configureApp&&t.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const o=this._instance&&this._instance.exposed;if(o)for(const s in o)I(this,s)||Object.defineProperty(this,s,{get:()=>sn(o[s])})}_resolveProps(t){const{props:o}=t,s=C(o)?o:Object.keys(o||{});for(const n of Object.keys(this))n[0]!=="_"&&s.includes(n)&&this._setProp(n,this[n]);for(const n of s.map(oe))Object.defineProperty(this,n,{get(){return this._getProp(n)},set(i){this._setProp(n,i,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const o=this.hasAttribute(t);let s=o?this.getAttribute(t):bi;const n=oe(t);o&&this._numberProps&&this._numberProps[n]&&(s=Es(s)),this._setProp(n,s,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,o,s=!0,n=!1){if(o!==this._props[t]&&(this._dirty=!0,o===bi?delete this._props[t]:(this._props[t]=o,t==="key"&&this._app&&(this._app._ceVNode.key=o)),n&&this._instance&&this._update(),s)){const i=this._ob;i&&(this._processMutations(i.takeRecords()),i.disconnect()),o===!0?this.setAttribute(be(t),""):typeof o=="string"||typeof o=="number"?this.setAttribute(be(t),o+""):o||this.removeAttribute(be(t)),i&&i.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),nl(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const o=ye(this._def,J(t,this._props));return this._instance||(o.ce=s=>{this._instance=s,s.ce=this,s.isCE=!0;const n=(i,a)=>{this.dispatchEvent(new CustomEvent(i,qt(a[0])?J({detail:a},a[0]):{detail:a}))};s.emit=(i,...a)=>{n(i,a),be(i)!==i&&n(be(i),a)},this._setParent()}),o}_applyStyles(t,o,s){if(!t)return;if(o){if(o===this._def||this._styleChildren.has(o))return;this._styleChildren.add(o)}const n=this._nonce,i=this.shadowRoot,a=s?this._getStyleAnchor(s)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(i);let r=null;for(let l=t.length-1;l>=0;l--){const u=document.createElement("style");n&&u.setAttribute("nonce",n),u.textContent=t[l],i.insertBefore(u,r||a),r=u,l===0&&(s||this._styleAnchors.set(this._def,u),o&&this._styleAnchors.set(o,u))}}_getStyleAnchor(t){if(!t)return null;const o=this._styleAnchors.get(t);return o&&o.parentNode===this.shadowRoot?o:(o&&this._styleAnchors.delete(t),null)}_getRootStyleInsertionAnchor(t){for(let o=0;o{_i().render(...e)},$i=(...e)=>{const t=_i().createApp(...e),{mount:o}=t;return t.mount=s=>{const n=al(s);if(!n)return;const i=t._component;!R(i)&&!i.render&&!i.template&&(i.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const a=o(n,!1,il(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),a},t};function il(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function al(e){return q(e)?document.querySelector(e):e}const rl=Object.assign({"./locales/ar/grid.json":{search:"ابحث عن الشعوب…",hide_filters:"إخفاء عوامل التصفية",show_filters:"إظهار عوامل التصفية",total:"الإجمالي",showing:"المعروض",load_more:"عرض المزيد",full_profile:"الملف الكامل",wagf_region:"المنطقة",wagf_block:"كتلة التقارب",rop1:"الشعب",religion:"الدين",exact_filter:"تطابق تام",clear_all:"مسح الكل",loading:"جارٍ التحميل…",no_results:"لا توجد شعوب مطابقة لهذا التصفية.",type_to_search:"اكتب للبحث...",load_failed:"تعذّر تحميل بيانات الشعوب. هذه مشكلة اتصال، وليست مشكلة في التصفية.",search_people_or_countries:"ابحث عن الشعوب أو الدول…"},"./locales/ar/messages.json":{menuComingSoon:"القائمة قادمة قريباً",pinHint:{tapDot:"اضغط على نقطة ملوّنة — لا يزال هناك من يحتاج إلى الصلاة"},upg100WallHeading:"قائمتي UPG 100 — قوائم الصلاة والملصقات",upg100WallTag:"تعبئة للصلاة",upg100WallIntro:"وزّع مهمة الصلاة في مجموعات من خمسين ومئة — كما أطعم يسوع الخمسة آلاف (لوقا ٩:١٤). كل ملصق هو قائمة من 100 يمكنك أن تصلي بها وتطبعها وتعلّقها على الحائط — مصلّيًا لأجلهم باسم شعبهم.",loadingNamed:"جارٍ تحميل {name}…",couldNotLoadNamed:"تعذّر تحميل {name}.",engineMissing:"لم يتم تحميل محرك الخرائط {engine}.",packetFailed:"فشل إنشاء الكُتيّب: {reason}",selectionPacketFailed:"فشل إنشاء كُتيّب التحديد: {reason}",posterOneTerritory:"الملصق يطبع منطقة واحدة في كل مرة — {count} محددة.",selectionPosterFailed:"فشل إنشاء ملصق التحديد: {reason}",mapUnavailable:"الخريطة غير متاحة",copied:"تم النسخ!",copyFailed:"فشل النسخ — اضغط Ctrl/Cmd-C",engineNotLoaded:"لم يتم تحميل محرك الخريطة",engineNotLoadedDetail:"لم يتم تحميل محرك الخريطة {engine}. القائمة ووسيلة الإيضاح غير متأثرتين."},"./locales/ar/poster.json":{export_poster:"تصدير الملصق",size:"الحجم",orientation:"الاتجاه",portrait:"طولي",landscape:"عرضي",dpi:"DPI",format:"الصيغة",png_raster:"PNG (نقطي)",pdf_raster:"PDF (نقطي على صفحة متجهية)",title:"العنوان",map_title:"عنوان الخريطة",subtitle:"العنوان الفرعي",slots:"العناصر",scale_bar:"شريط المقياس",north_arrow:"سهم الشمال",footer_attribution:"التذييل (الإسناد مطلوب)",cancel:"إلغاء",map_preview:"معاينة الخريطة",loading_snapshot:"جارٍ تحميل لقطة الخريطة…",preview_unavailable:"المعاينة غير متاحة"},"./locales/ar/search.json":{placeholder:"شعب، مكان، لغة، ديانة",placeholderNoPlaces:"شعب، لغة، ديانة (البحث عن الأماكن يتطلب رمز Mapbox)",labels:{people:"الشعب:",place:"المكان:",language:"اللغة:",religion:"الديانة:"},kinds:{people:"الشعب + الدولة",peopleGroup:"الشعب",bloc:"كتلة التقارب",cluster:"مجموعة شعوب",country:"الدولة",region:"المنطقة",family:"عائلة اللغة",languageKind:"اللغة",dialect:"اللهجة",religionKind:"الدين"},sections:{within:"ضمن {selection}",allData:"كل بيانات DOXA"},upg100Placeholder:"ابحث عن شعب أو قائمة UPG-100 أو منطقة…"},"./locales/ar/tabs.json":{prayer:"الصلاة",adoption:"التبني",engagement:"المشاركة","affinity-blocks":"الشعوب",regions:"المناطق",countries:"الدول","language-families":"اللغات",religion:"الأديان",family:"عائلة اللغة",language:"اللغة",dialect:"اللهجة/التنوع",bloc:"كتلة التقارب",cluster:"المجموعة",group:"الشعب",pgic:"الشعب في الدولة",region:"منطقة WAGF",block:"كتلة WAGF",country:"الدولة",upg100Region:"المنطقة",upg100Zone:"قوائم UPG-100",upg100Group:"مجموعة شعبية",selectView:"اختر العرض",views:"العروض",prayerResources:"موارد الصلاة",map:"الخريطة",countryPosters:"ملصقات الدول"},"./locales/de/grid.json":{search:"Volksgruppen suchen…",hide_filters:"Filter ausblenden",show_filters:"Filter anzeigen",total:"Gesamt",showing:"Angezeigt",load_more:"Mehr laden",full_profile:"Vollständiges Profil",wagf_region:"Region",wagf_block:"Affinitätsblock",rop1:"Volk",religion:"Religion",exact_filter:"Exakt",clear_all:"Alle löschen",loading:"Wird geladen…",no_results:"Keine Volksgruppen entsprechen diesem Filter.",type_to_search:"Zum Suchen tippen...",load_failed:"Die Daten konnten nicht geladen werden. Das ist ein Verbindungsproblem, nicht Ihr Filter.",search_people_or_countries:"Volksgruppen oder Länder suchen…"},"./locales/de/messages.json":{menuComingSoon:"Menü folgt in Kürze",pinHint:{tapDot:"Tippe auf einen farbigen Punkt — jemand braucht noch Gebet"},upg100WallHeading:"Meine UPG-100-Liste — Gebetslisten und Poster",upg100WallTag:"Gebetsmobilisierung",upg100WallIntro:"Teilen Sie die Gebetsaufgabe in Gruppen zu fünfzig und hundert auf — so wie Jesus die 5.000 speiste (Lukas 9,14). Jedes Poster ist eine 100er-Liste, die Sie beten, drucken und an die Wand hängen können — und für sie mit dem Namen ihrer Volksgruppe beten.",loadingNamed:"{name} wird geladen…",couldNotLoadNamed:"{name} konnte nicht geladen werden.",engineMissing:"Die Karten-Engine {engine} wurde nicht geladen.",packetFailed:"Heft fehlgeschlagen: {reason}",selectionPacketFailed:"Heft der Auswahl fehlgeschlagen: {reason}",posterOneTerritory:"Das Plakat druckt ein Gebiet auf einmal — {count} ausgewählt.",selectionPosterFailed:"Plakat der Auswahl fehlgeschlagen: {reason}",mapUnavailable:"Karte nicht verfügbar",copied:"Kopiert!",copyFailed:"Kopieren fehlgeschlagen — Strg/Cmd-C drücken",engineNotLoaded:"Karten-Engine nicht geladen",engineNotLoadedDetail:"Die Karten-Engine {engine} wurde nicht geladen. Liste und Legende sind nicht betroffen."},"./locales/de/poster.json":{export_poster:"Poster exportieren",size:"Größe",orientation:"Ausrichtung",portrait:"Hochformat",landscape:"Querformat",dpi:"DPI",format:"Format",png_raster:"PNG (Raster)",pdf_raster:"PDF (Raster auf Vektorseite)",title:"Titel",map_title:"Kartentitel",subtitle:"Untertitel",slots:"Elemente",scale_bar:"Maßstabsleiste",north_arrow:"Nordpfeil",footer_attribution:"Fußzeile (Quellenangabe erforderlich)",cancel:"Abbrechen",map_preview:"Kartenvorschau",loading_snapshot:"Kartenaufnahme wird geladen…",preview_unavailable:"Vorschau nicht verfügbar"},"./locales/de/search.json":{placeholder:"Volk, Ort, Sprache, Religion",placeholderNoPlaces:"Volk, Sprache, Religion (Ortssuche braucht ein Mapbox-Token)",labels:{people:"Volk:",place:"Ort:",language:"Sprache:",religion:"Religion:"},sections:{within:"Innerhalb {selection}",allData:"Alle DOXA-Daten"},kinds:{people:"Volk + Land",peopleGroup:"Volk",bloc:"Affinitätsblock",cluster:"Völkercluster",country:"Land",region:"Region",family:"Sprachfamilie",languageKind:"Sprache",dialect:"Dialekt",religionKind:"Religion"},upg100Placeholder:"Volksgruppe, UPG-100-Liste oder Region suchen…"},"./locales/de/tabs.json":{prayer:"Gebet",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Volksgruppen",regions:"Regionen",countries:"Länder","language-families":"Sprachen",religion:"Religionen",family:"Sprachfamilie",language:"Sprache",dialect:"Dialekt/Varietät",bloc:"Affinitätsblock",cluster:"Cluster",group:"Volksgruppe",pgic:"Volksgruppe im Land",region:"WAGF-Region",block:"WAGF-Block",country:"Land",upg100Region:"Region",upg100Zone:"UPG-100-Listen",upg100Group:"Volksgruppe",selectView:"Ansicht wählen",views:"Ansichten",prayerResources:"Gebetsressourcen",map:"Karte",countryPosters:"Länderposter"},"./locales/en/grid.json":{search:"Search people groups…",hide_filters:"Hide Filters",show_filters:"Show Filters",total:"Total",showing:"Showing",load_more:"Load More",full_profile:"Full Profile",wagf_region:"Region",wagf_block:"Affinity Block",rop1:"People Group",religion:"Religion",exact_filter:"Exact",clear_all:"Clear All",loading:"Loading…",no_results:"No people groups match this filter.",type_to_search:"Type to search...",load_failed:"People-group data could not be loaded. This is a connection problem, not your filter.",search_people_or_countries:"Search people groups or countries…"},"./locales/en/messages.json":{menuComingSoon:"Menu coming soon",pinHint:{tapDot:"Tap a coloured dot — someone still needs prayer"},upg100WallHeading:"My UPG 100 List — Prayer Lists & Posters",upg100WallTag:"Prayer Mobilization",upg100WallIntro:"Hand away the prayer task in clusters of fifties and hundreds — the way Jesus fed the 5,000 (Luke 9:14). Each poster is a 100-list you can pray, print, and put on a wall — praying for them by their people group name.",loadingNamed:"Loading {name}…",couldNotLoadNamed:"Could not load {name}.",engineMissing:"The {engine} map engine did not load.",packetFailed:"Packet failed: {reason}",selectionPacketFailed:"Selection packet failed: {reason}",posterOneTerritory:"Poster prints one territory at a time — {count} selected.",selectionPosterFailed:"Selection poster failed: {reason}",mapUnavailable:"Map unavailable",copied:"Copied!",copyFailed:"Copy failed — press Ctrl/Cmd-C",engineNotLoaded:"map engine not loaded",engineNotLoadedDetail:"The {engine} map engine did not load. The list and legend are unaffected."},"./locales/en/poster.json":{export_poster:"Export Poster",size:"Size",orientation:"Orientation",portrait:"Portrait",landscape:"Landscape",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster on vector page)",title:"Title",map_title:"Map title",subtitle:"Subtitle",slots:"Slots",scale_bar:"Scale bar",north_arrow:"North arrow",footer_attribution:"Footer (attribution required)",cancel:"Cancel",map_preview:"map preview",loading_snapshot:"Loading map snapshot…",preview_unavailable:"preview unavailable"},"./locales/en/search.json":{placeholder:"People, place, language, religion",placeholderNoPlaces:"People, language, religion (place search needs a Mapbox token)",labels:{people:"People:",place:"Place:",language:"Language:",religion:"Religion:"},kinds:{people:"People Group + Country",peopleGroup:"People Group",bloc:"Affinity Block",cluster:"People Cluster",country:"Country",region:"Region",family:"Language Family",languageKind:"Language",dialect:"Dialect",religionKind:"Religion"},sections:{within:"Within {selection}",allData:"All DOXA Data"},upg100Placeholder:"Search people group, UPG-100 list, or region…"},"./locales/en/tabs.json":{prayer:"Prayer",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"People Groups (Affinity)",regions:"Regions",countries:"Countries","language-families":"Languages",religion:"Religions",family:"Lang Family",language:"Language",dialect:"Dialect/Variety",bloc:"Affinity Block",cluster:"Cluster",group:"People Group",pgic:"PG in Country",region:"WAGF Region",block:"WAGF Bloc",country:"Country",upg100Region:"Region",upg100Zone:"UPG-100 Lists",upg100Group:"People Group",selectView:"Select View",views:"Views",prayerResources:"Prayer Resources",map:"Map",countryPosters:"Country Posters"},"./locales/es/grid.json":{search:"Buscar pueblos…",hide_filters:"Ocultar filtros",show_filters:"Mostrar filtros",total:"Total",showing:"Mostrando",load_more:"Cargar más",full_profile:"Perfil completo",wagf_region:"Región",wagf_block:"Bloque de afinidad",rop1:"Pueblo",religion:"Religión",exact_filter:"Exacto",clear_all:"Borrar todo",loading:"Cargando…",no_results:"Ningún pueblo coincide con este filtro.",type_to_search:"Escribe para buscar...",load_failed:"No se pudieron cargar los datos de pueblos. Es un problema de conexión, no de tu filtro.",search_people_or_countries:"Buscar pueblos o países…"},"./locales/es/messages.json":{menuComingSoon:"Menú próximamente",pinHint:{tapDot:"Toca un punto de color: alguien todavía necesita oración"},upg100WallHeading:"Mi lista UPG 100 — Listas de oración y carteles",upg100WallTag:"Movilización de oración",upg100WallIntro:"Reparte la tarea de la oración en grupos de cincuenta y de cien, como Jesús alimentó a los 5.000 (Lucas 9:14). Cada cartel es una lista de 100 que puedes orar, imprimir y poner en la pared — orando por ellos por el nombre de su pueblo.",loadingNamed:"Cargando {name}…",couldNotLoadNamed:"No se pudo cargar {name}.",engineMissing:"El motor de mapas {engine} no se cargó.",packetFailed:"Error al generar el cuadernillo: {reason}",selectionPacketFailed:"Error al generar el cuadernillo de la selección: {reason}",posterOneTerritory:"El cartel imprime un territorio a la vez: {count} seleccionados.",selectionPosterFailed:"Error al generar el cartel de la selección: {reason}",mapUnavailable:"Mapa no disponible",copied:"¡Copiado!",copyFailed:"Error al copiar: pulsa Ctrl/Cmd-C",engineNotLoaded:"motor de mapas no cargado",engineNotLoadedDetail:"El motor de mapas {engine} no se cargó. La lista y la leyenda no se ven afectadas."},"./locales/es/poster.json":{export_poster:"Exportar póster",size:"Tamaño",orientation:"Orientación",portrait:"Vertical",landscape:"Horizontal",dpi:"DPI",format:"Formato",png_raster:"PNG (ráster)",pdf_raster:"PDF (ráster en página vectorial)",title:"Título",map_title:"Título del mapa",subtitle:"Subtítulo",slots:"Elementos",scale_bar:"Barra de escala",north_arrow:"Flecha norte",footer_attribution:"Pie de página (atribución obligatoria)",cancel:"Cancelar",map_preview:"vista previa del mapa",loading_snapshot:"Cargando la captura del mapa…",preview_unavailable:"vista previa no disponible"},"./locales/es/search.json":{placeholder:"Pueblo, lugar, idioma, religión",placeholderNoPlaces:"Pueblo, idioma, religión (buscar lugares requiere un token de Mapbox)",labels:{people:"Pueblo:",place:"Lugar:",language:"Idioma:",religion:"Religión:"},kinds:{people:"Pueblo + país",peopleGroup:"Pueblo",bloc:"Bloque de afinidad",cluster:"Clúster de pueblos",country:"País",region:"Región",family:"Familia lingüística",languageKind:"Idioma",dialect:"Dialecto",religionKind:"Religión"},sections:{within:"Dentro de {selection}",allData:"Todos los datos DOXA"},upg100Placeholder:"Buscar pueblo, lista UPG-100 o región…"},"./locales/es/tabs.json":{prayer:"Oración",adoption:"Adopción",engagement:"Compromiso","affinity-blocks":"Pueblos",regions:"Regiones",countries:"Países","language-families":"Idiomas",religion:"Religiones",family:"Familia lingüística",language:"Idioma",dialect:"Dialecto/Variedad",bloc:"Bloque de afinidad",cluster:"Clúster",group:"Pueblo",pgic:"Pueblo en país",region:"Región WAGF",block:"Bloque WAGF",country:"País",upg100Region:"Región",upg100Zone:"Listas UPG-100",upg100Group:"Grupo étnico",selectView:"Seleccionar vista",views:"Vistas",prayerResources:"Recursos de oración",map:"Mapa",countryPosters:"Carteles por país"},"./locales/fr/grid.json":{search:"Rechercher des peuples…",hide_filters:"Masquer les filtres",show_filters:"Afficher les filtres",total:"Total",showing:"Affichage",load_more:"Charger plus",full_profile:"Profil complet",wagf_region:"Région",wagf_block:"Bloc d'affinité",rop1:"Peuple",religion:"Religion",exact_filter:"Exact",clear_all:"Tout effacer",loading:"Chargement…",no_results:"Aucun peuple ne correspond à ce filtre.",type_to_search:"Tapez pour rechercher...",load_failed:"Les données n’ont pas pu être chargées. C’est un problème de connexion, pas votre filtre.",search_people_or_countries:"Rechercher des peuples ou des pays…"},"./locales/fr/messages.json":{menuComingSoon:"Menu bientôt disponible",pinHint:{tapDot:"Touchez un point coloré — quelqu’un a encore besoin de prière"},upg100WallHeading:"Ma liste UPG 100 — Listes de prière et affiches",upg100WallTag:"Mobilisation pour la prière",upg100WallIntro:"Répartissez la tâche de la prière par groupes de cinquante et de cent — comme Jésus a nourri les 5 000 (Luc 9:14). Chaque affiche est une liste de 100 que vous pouvez prier, imprimer et afficher au mur — en priant pour eux par le nom de leur peuple.",loadingNamed:"Chargement de {name}…",couldNotLoadNamed:"Impossible de charger {name}.",engineMissing:"Le moteur de carte {engine} ne s’est pas chargé.",packetFailed:"Échec du livret : {reason}",selectionPacketFailed:"Échec du livret de la sélection : {reason}",posterOneTerritory:"L’affiche imprime un territoire à la fois — {count} sélectionnés.",selectionPosterFailed:"Échec de l’affiche de la sélection : {reason}",mapUnavailable:"Carte indisponible",copied:"Copié !",copyFailed:"Échec de la copie — appuyez sur Ctrl/Cmd-C",engineNotLoaded:"moteur cartographique non chargé",engineNotLoadedDetail:"Le moteur cartographique {engine} ne s’est pas chargé. La liste et la légende ne sont pas affectées."},"./locales/fr/poster.json":{export_poster:"Exporter l'affiche",size:"Taille",orientation:"Orientation",portrait:"Portrait",landscape:"Paysage",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster sur page vectorielle)",title:"Titre",map_title:"Titre de la carte",subtitle:"Sous-titre",slots:"Éléments",scale_bar:"Échelle",north_arrow:"Flèche du nord",footer_attribution:"Pied de page (attribution requise)",cancel:"Annuler",map_preview:"aperçu de la carte",loading_snapshot:"Chargement de l'instantané de la carte…",preview_unavailable:"aperçu indisponible"},"./locales/fr/search.json":{placeholder:"Peuple, lieu, langue, religion",placeholderNoPlaces:"Peuple, langue, religion (la recherche de lieux requiert un jeton Mapbox)",labels:{people:"Peuple :",place:"Lieu :",language:"Langue :",religion:"Religion :"},kinds:{people:"Peuple + pays",peopleGroup:"Peuple",bloc:"Bloc d'affinité",cluster:"Grappe de peuples",country:"Pays",region:"Région",family:"Famille linguistique",languageKind:"Langue",dialect:"Dialecte",religionKind:"Religion"},sections:{within:"Dans {selection}",allData:"Toutes les données DOXA"},upg100Placeholder:"Rechercher un peuple, une liste UPG-100 ou une région…"},"./locales/fr/tabs.json":{prayer:"Prière",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Peuples",regions:"Régions",countries:"Pays","language-families":"Langues",religion:"Religions",family:"Famille linguistique",language:"Langue",dialect:"Dialecte/Variété",bloc:"Bloc d'affinité",cluster:"Grappe",group:"Peuple",pgic:"Peuple dans le pays",region:"Région WAGF",block:"Bloc WAGF",country:"Pays",upg100Region:"Région",upg100Zone:"Listes UPG-100",upg100Group:"Groupe de peuples",selectView:"Choisir la vue",views:"Vues",prayerResources:"Ressources de prière",map:"Carte",countryPosters:"Affiches par pays"},"./locales/hi/grid.json":{search:"जनसमूह खोजें…",hide_filters:"फ़िल्टर छिपाएँ",show_filters:"फ़िल्टर दिखाएँ",total:"कुल",showing:"दिखा रहे हैं",load_more:"और देखें",full_profile:"पूरी प्रोफ़ाइल",wagf_region:"क्षेत्र",wagf_block:"समानता समूह",rop1:"जनसमूह",religion:"धर्म",exact_filter:"सटीक",clear_all:"सब हटाएँ",loading:"लोड हो रहा है…",no_results:"इस फ़िल्टर से कोई जनसमूह मेल नहीं खाता।",type_to_search:"खोजने के लिए लिखें...",load_failed:"जनसमूह डेटा लोड नहीं हो सका। यह कनेक्शन की समस्या है, आपके फ़िल्टर की नहीं।",search_people_or_countries:"जनसमूह या देश खोजें…"},"./locales/hi/messages.json":{menuComingSoon:"मेनू शीघ्र आ रहा है",pinHint:{tapDot:"किसी रंगीन बिंदु पर टैप करें — किसी को अभी भी प्रार्थना की आवश्यकता है"},upg100WallHeading:"मेरी UPG 100 सूची — प्रार्थना सूचियाँ और पोस्टर",upg100WallTag:"प्रार्थना लामबंदी",upg100WallIntro:"प्रार्थना के काम को पचास-पचास और सौ-सौ के समूहों में बाँटें — जैसे यीशु ने 5,000 लोगों को खिलाया (लूका 9:14)। हर पोस्टर 100 की एक सूची है जिसके लिए आप प्रार्थना कर सकते हैं, छाप सकते हैं और दीवार पर लगा सकते हैं — उनके लिए उनके जनसमूह के नाम से प्रार्थना करते हुए।",loadingNamed:"{name} लोड हो रहा है…",couldNotLoadNamed:"{name} लोड नहीं हो सका।",engineMissing:"{engine} नक्शा इंजन लोड नहीं हुआ।",packetFailed:"पुस्तिका विफल: {reason}",selectionPacketFailed:"चयन की पुस्तिका विफल: {reason}",posterOneTerritory:"पोस्टर एक समय में एक क्षेत्र छापता है — {count} चयनित।",selectionPosterFailed:"चयन का पोस्टर विफल: {reason}",mapUnavailable:"मानचित्र अनुपलब्ध",copied:"कॉपी हो गया!",copyFailed:"कॉपी विफल — Ctrl/Cmd-C दबाएँ",engineNotLoaded:"मानचित्र इंजन लोड नहीं हुआ",engineNotLoadedDetail:"{engine} मानचित्र इंजन लोड नहीं हुआ। सूची और लेजेंड अप्रभावित हैं।"},"./locales/hi/poster.json":{export_poster:"पोस्टर निर्यात करें",size:"आकार",orientation:"अभिविन्यास",portrait:"पोर्ट्रेट",landscape:"लैंडस्केप",dpi:"DPI",format:"प्रारूप",png_raster:"PNG (रास्टर)",pdf_raster:"PDF (वेक्टर पृष्ठ पर रास्टर)",title:"शीर्षक",map_title:"मानचित्र शीर्षक",subtitle:"उपशीर्षक",slots:"स्लॉट",scale_bar:"स्केल बार",north_arrow:"उत्तर तीर",footer_attribution:"फ़ुटर (एट्रिब्यूशन आवश्यक)",cancel:"रद्द करें",map_preview:"मानचित्र पूर्वावलोकन",loading_snapshot:"मानचित्र स्नैपशॉट लोड हो रहा है…",preview_unavailable:"पूर्वावलोकन उपलब्ध नहीं"},"./locales/hi/search.json":{placeholder:"लोग, स्थान, भाषा, धर्म",placeholderNoPlaces:"लोग, भाषा, धर्म (स्थान खोज के लिए Mapbox टोकन चाहिए)",labels:{people:"लोग:",place:"स्थान:",language:"भाषा:",religion:"धर्म:"},sections:{within:"{selection} के भीतर",allData:"सभी DOXA डेटा"},kinds:{people:"जनसमूह + देश",peopleGroup:"जनसमूह",bloc:"समानता समूह",cluster:"जनसमूह क्लस्टर",country:"देश",region:"क्षेत्र",family:"भाषा परिवार",languageKind:"भाषा",dialect:"बोली",religionKind:"धर्म"},upg100Placeholder:"जनसमूह, UPG-100 सूची या क्षेत्र खोजें…"},"./locales/hi/tabs.json":{prayer:"प्रार्थना",adoption:"गोद लेना",engagement:"सहभागिता","affinity-blocks":"जनसमूह",regions:"क्षेत्र",countries:"देश","language-families":"भाषाएँ",religion:"धर्म",family:"भाषा परिवार",language:"भाषा",dialect:"बोली/रूप",bloc:"समानता समूह",cluster:"क्लस्टर",group:"जनसमूह",pgic:"देश में जनसमूह",region:"WAGF क्षेत्र",block:"WAGF ब्लॉक",country:"देश",upg100Region:"क्षेत्र",upg100Zone:"UPG-100 सूचियाँ",upg100Group:"जनसमूह",selectView:"दृश्य चुनें",views:"दृश्य",prayerResources:"प्रार्थना संसाधन",map:"मानचित्र",countryPosters:"देश पोस्टर"},"./locales/it/grid.json":{search:"Cerca popoli…",hide_filters:"Nascondi filtri",show_filters:"Mostra filtri",total:"Totale",showing:"Mostrati",load_more:"Carica altro",full_profile:"Profilo completo",wagf_region:"Regione",wagf_block:"Blocco di affinità",rop1:"Popolo",religion:"Religione",exact_filter:"Esatto",clear_all:"Cancella tutto",loading:"Caricamento…",no_results:"Nessun popolo corrisponde a questo filtro.",type_to_search:"Digita per cercare...",load_failed:"Impossibile caricare i dati dei popoli. È un problema di connessione, non del filtro.",search_people_or_countries:"Cerca popoli o paesi…"},"./locales/it/messages.json":{menuComingSoon:"Menu in arrivo",pinHint:{tapDot:"Tocca un punto colorato — qualcuno ha ancora bisogno di preghiera"},upg100WallHeading:"La mia lista UPG 100 — Liste di preghiera e poster",upg100WallTag:"Mobilitazione alla preghiera",upg100WallIntro:"Distribuisci il compito della preghiera in gruppi di cinquanta e di cento — come Gesù sfamò i 5.000 (Luca 9:14). Ogni poster è una lista di 100 che puoi pregare, stampare e appendere al muro — pregando per loro con il nome del loro popolo.",loadingNamed:"Caricamento di {name}…",couldNotLoadNamed:"Impossibile caricare {name}.",engineMissing:"Il motore di mappa {engine} non è stato caricato.",packetFailed:"Libretto non riuscito: {reason}",selectionPacketFailed:"Libretto della selezione non riuscito: {reason}",posterOneTerritory:"Il manifesto stampa un territorio alla volta — {count} selezionati.",selectionPosterFailed:"Manifesto della selezione non riuscito: {reason}",mapUnavailable:"Mappa non disponibile",copied:"Copiato!",copyFailed:"Copia non riuscita — premi Ctrl/Cmd-C",engineNotLoaded:"motore di mappe non caricato",engineNotLoadedDetail:"Il motore di mappe {engine} non si è caricato. L’elenco e la legenda non sono interessati."},"./locales/it/poster.json":{export_poster:"Esporta poster",size:"Dimensione",orientation:"Orientamento",portrait:"Verticale",landscape:"Orizzontale",dpi:"DPI",format:"Formato",png_raster:"PNG (raster)",pdf_raster:"PDF (raster su pagina vettoriale)",title:"Titolo",map_title:"Titolo della mappa",subtitle:"Sottotitolo",slots:"Elementi",scale_bar:"Barra della scala",north_arrow:"Freccia nord",footer_attribution:"Piè di pagina (attribuzione obbligatoria)",cancel:"Annulla",map_preview:"anteprima della mappa",loading_snapshot:"Caricamento dell'istantanea della mappa…",preview_unavailable:"anteprima non disponibile"},"./locales/it/search.json":{placeholder:"Popolo, luogo, lingua, religione",placeholderNoPlaces:"Popolo, lingua, religione (la ricerca di luoghi richiede un token Mapbox)",labels:{people:"Popolo:",place:"Luogo:",language:"Lingua:",religion:"Religione:"},sections:{within:"In {selection}",allData:"Tutti i dati DOXA"},kinds:{people:"Popolo + paese",peopleGroup:"Popolo",bloc:"Blocco di affinità",cluster:"Cluster di popoli",country:"Paese",region:"Regione",family:"Famiglia linguistica",languageKind:"Lingua",dialect:"Dialetto",religionKind:"Religione"},upg100Placeholder:"Cerca popolo, elenco UPG-100 o regione…"},"./locales/it/tabs.json":{prayer:"Preghiera",adoption:"Adozione",engagement:"Impegno","affinity-blocks":"Popoli",regions:"Regioni",countries:"Paesi","language-families":"Lingue",religion:"Religioni",family:"Famiglia ling.",language:"Lingua",dialect:"Dialetto/Variante",bloc:"Blocco di affinità",cluster:"Cluster",group:"Popolo",pgic:"Popolo nel paese",region:"Regione WAGF",block:"Blocco WAGF",country:"Paese",upg100Region:"Regione",upg100Zone:"Liste UPG-100",upg100Group:"Gruppo etnico",selectView:"Seleziona vista",views:"Viste",prayerResources:"Risorse di preghiera",map:"Mappa",countryPosters:"Poster per paese"},"./locales/pt/grid.json":{search:"Pesquisar povos…",hide_filters:"Ocultar filtros",show_filters:"Mostrar filtros",total:"Total",showing:"Mostrando",load_more:"Carregar mais",full_profile:"Perfil completo",wagf_region:"Região",wagf_block:"Bloco de afinidade",rop1:"Povo",religion:"Religião",exact_filter:"Exato",clear_all:"Limpar tudo",loading:"A carregar…",no_results:"Nenhum povo corresponde a este filtro.",type_to_search:"Escreva para pesquisar...",load_failed:"Não foi possível carregar os dados dos povos. É um problema de ligação, não do seu filtro.",search_people_or_countries:"Pesquisar povos ou países…"},"./locales/pt/messages.json":{menuComingSoon:"Menu em breve",pinHint:{tapDot:"Toque num ponto colorido — alguém ainda precisa de oração"},upg100WallHeading:"A minha lista UPG 100 — Listas de oração e cartazes",upg100WallTag:"Mobilização de oração",upg100WallIntro:"Reparta a tarefa da oração em grupos de cinquenta e de cem — como Jesus alimentou os 5.000 (Lucas 9:14). Cada cartaz é uma lista de 100 que pode orar, imprimir e pôr na parede — orando por eles pelo nome do seu povo.",loadingNamed:"Carregando {name}…",couldNotLoadNamed:"Não foi possível carregar {name}.",engineMissing:"O motor de mapa {engine} não foi carregado.",packetFailed:"Falha ao gerar o caderno: {reason}",selectionPacketFailed:"Falha ao gerar o caderno da seleção: {reason}",posterOneTerritory:"O cartaz imprime um território de cada vez — {count} selecionados.",selectionPosterFailed:"Falha ao gerar o cartaz da seleção: {reason}",mapUnavailable:"Mapa indisponível",copied:"Copiado!",copyFailed:"Falha ao copiar — pressione Ctrl/Cmd-C",engineNotLoaded:"motor de mapas não carregado",engineNotLoadedDetail:"O motor de mapas {engine} não carregou. A lista e a legenda não são afetadas."},"./locales/pt/poster.json":{export_poster:"Exportar pôster",size:"Tamanho",orientation:"Orientação",portrait:"Retrato",landscape:"Paisagem",dpi:"DPI",format:"Formato",png_raster:"PNG (raster)",pdf_raster:"PDF (raster em página vetorial)",title:"Título",map_title:"Título do mapa",subtitle:"Subtítulo",slots:"Elementos",scale_bar:"Barra de escala",north_arrow:"Seta norte",footer_attribution:"Rodapé (atribuição obrigatória)",cancel:"Cancelar",map_preview:"pré-visualização do mapa",loading_snapshot:"Carregando o instantâneo do mapa…",preview_unavailable:"pré-visualização indisponível"},"./locales/pt/search.json":{placeholder:"Povo, local, língua, religião",placeholderNoPlaces:"Povo, língua, religião (a busca de locais requer um token do Mapbox)",labels:{people:"Povo:",place:"Local:",language:"Língua:",religion:"Religião:"},kinds:{people:"Povo + país",peopleGroup:"Povo",bloc:"Bloco de afinidade",cluster:"Agrupamento de povos",country:"País",region:"Região",family:"Família linguística",languageKind:"Idioma",dialect:"Dialeto",religionKind:"Religião"},sections:{within:"Dentro de {selection}",allData:"Todos os dados DOXA"},upg100Placeholder:"Procurar povo, lista UPG-100 ou região…"},"./locales/pt/tabs.json":{prayer:"Oração",adoption:"Adoção",engagement:"Engajamento","affinity-blocks":"Povos",regions:"Regiões",countries:"Países","language-families":"Idiomas",religion:"Religiões",family:"Família linguística",language:"Idioma",dialect:"Dialeto/Variedade",bloc:"Bloco de afinidade",cluster:"Agrupamento",group:"Povo",pgic:"Povo no país",region:"Região WAGF",block:"Bloco WAGF",country:"País",upg100Region:"Região",upg100Zone:"Listas UPG-100",upg100Group:"Grupo étnico",selectView:"Selecionar vista",views:"Vistas",prayerResources:"Recursos de oração",map:"Mapa",countryPosters:"Cartazes por país"},"./locales/ro/grid.json":{search:"Caută popoare…",hide_filters:"Ascunde filtrele",show_filters:"Arată filtrele",total:"Total",showing:"Se afișează",load_more:"Încarcă mai mult",full_profile:"Profil complet",wagf_region:"Regiune",wagf_block:"Bloc de afinitate",rop1:"Popor",religion:"Religie",exact_filter:"Exact",clear_all:"Șterge tot",loading:"Se încarcă…",no_results:"Niciun popor nu corespunde acestui filtru.",type_to_search:"Scrie pentru a căuta...",load_failed:"Datele despre popoare nu au putut fi încărcate. Este o problemă de conexiune, nu a filtrului.",search_people_or_countries:"Caută popoare sau țări…"},"./locales/ro/messages.json":{menuComingSoon:"Meniu în curând",pinHint:{tapDot:"Atinge un punct colorat — cineva are încă nevoie de rugăciune"},upg100WallHeading:"Lista mea UPG 100 — Liste de rugăciune și afișe",upg100WallTag:"Mobilizare pentru rugăciune",upg100WallIntro:"Împarte sarcina rugăciunii în grupuri de câte cincizeci și o sută — așa cum Isus a hrănit cei 5.000 (Luca 9:14). Fiecare afiș este o listă de 100 pe care o poți ruga, tipări și pune pe perete — rugându-te pentru ei pe numele poporului lor.",loadingNamed:"Se încarcă {name}…",couldNotLoadNamed:"Nu s-a putut încărca {name}.",engineMissing:"Motorul de hartă {engine} nu s-a încărcat.",packetFailed:"Broșura a eșuat: {reason}",selectionPacketFailed:"Broșura selecției a eșuat: {reason}",posterOneTerritory:"Afișul tipărește un teritoriu pe rând — {count} selectate.",selectionPosterFailed:"Afișul selecției a eșuat: {reason}",mapUnavailable:"Harta indisponibilă",copied:"Copiat!",copyFailed:"Copierea a eșuat — apasă Ctrl/Cmd-C",engineNotLoaded:"motorul de hărți nu s-a încărcat",engineNotLoadedDetail:"Motorul de hărți {engine} nu s-a încărcat. Lista și legenda nu sunt afectate."},"./locales/ro/poster.json":{export_poster:"Exportă posterul",size:"Dimensiune",orientation:"Orientare",portrait:"Portret",landscape:"Peisaj",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster pe pagină vectorială)",title:"Titlu",map_title:"Titlul hărții",subtitle:"Subtitlu",slots:"Elemente",scale_bar:"Bară de scară",north_arrow:"Săgeata nord",footer_attribution:"Subsol (atribuire obligatorie)",cancel:"Anulează",map_preview:"previzualizare hartă",loading_snapshot:"Se încarcă instantaneul hărții…",preview_unavailable:"previzualizare indisponibilă"},"./locales/ro/search.json":{placeholder:"Popor, loc, limbă, religie",placeholderNoPlaces:"Popor, limbă, religie (căutarea locurilor necesită un token Mapbox)",labels:{people:"Popor:",place:"Loc:",language:"Limbă:",religion:"Religie:"},sections:{within:"În {selection}",allData:"Toate datele DOXA"},kinds:{people:"Popor + țară",peopleGroup:"Popor",bloc:"Bloc de afinitate",cluster:"Grup de popoare",country:"Țară",region:"Regiune",family:"Familie de limbi",languageKind:"Limbă",dialect:"Dialect",religionKind:"Religie"},upg100Placeholder:"Caută popor, listă UPG-100 sau regiune…"},"./locales/ro/tabs.json":{prayer:"Rugăciune",adoption:"Adopție",engagement:"Implicare","affinity-blocks":"Popoare",regions:"Regiuni",countries:"Țări","language-families":"Limbi",religion:"Religii",family:"Familie de limbi",language:"Limbă",dialect:"Dialect/Variantă",bloc:"Bloc de afinitate",cluster:"Grup",group:"Popor",pgic:"Popor în țară",region:"Regiune WAGF",block:"Bloc WAGF",country:"Țară",upg100Region:"Regiune",upg100Zone:"Liste UPG-100",upg100Group:"Grup etnic",selectView:"Alege vizualizarea",views:"Vizualizări",prayerResources:"Resurse de rugăciune",map:"Hartă",countryPosters:"Afișe pe țări"},"./locales/ru/grid.json":{search:"Поиск народов…",hide_filters:"Скрыть фильтры",show_filters:"Показать фильтры",total:"Всего",showing:"Показано",load_more:"Показать ещё",full_profile:"Полный профиль",wagf_region:"Регион",wagf_block:"Блок родства",rop1:"Народ",religion:"Религия",exact_filter:"Точное совпадение",clear_all:"Очистить всё",loading:"Загрузка…",no_results:"Нет народов, соответствующих этому фильтру.",type_to_search:"Введите для поиска...",load_failed:"Не удалось загрузить данные о народах. Это проблема соединения, а не фильтра.",search_people_or_countries:"Поиск народов или стран…"},"./locales/ru/messages.json":{menuComingSoon:"Меню скоро появится",pinHint:{tapDot:"Нажмите на цветную точку — кому-то всё ещё нужна молитва"},upg100WallHeading:"Мой список UPG 100 — молитвенные списки и плакаты",upg100WallTag:"Молитвенная мобилизация",upg100WallIntro:"Разделите молитвенный труд на группы по пятьдесят и по сто — так Иисус накормил 5000 (Луки 9:14). Каждый плакат — это список из 100, о котором можно молиться, распечатать и повесить на стену, молясь о них по имени их народа.",loadingNamed:"Загрузка {name}…",couldNotLoadNamed:"Не удалось загрузить {name}.",engineMissing:"Картографический движок {engine} не загрузился.",packetFailed:"Не удалось создать буклет: {reason}",selectionPacketFailed:"Не удалось создать буклет выбора: {reason}",posterOneTerritory:"Плакат печатает по одной территории — выбрано {count}.",selectionPosterFailed:"Не удалось создать плакат выбора: {reason}",mapUnavailable:"Карта недоступна",copied:"Скопировано!",copyFailed:"Не удалось скопировать — нажмите Ctrl/Cmd-C",engineNotLoaded:"движок карты не загружен",engineNotLoadedDetail:"Движок карты {engine} не загрузился. Список и легенда не затронуты."},"./locales/ru/poster.json":{export_poster:"Экспорт плаката",size:"Размер",orientation:"Ориентация",portrait:"Портретная",landscape:"Альбомная",dpi:"DPI",format:"Формат",png_raster:"PNG (растр)",pdf_raster:"PDF (растр на векторной странице)",title:"Заголовок",map_title:"Заголовок карты",subtitle:"Подзаголовок",slots:"Элементы",scale_bar:"Масштабная линейка",north_arrow:"Указатель севера",footer_attribution:"Нижний колонтитул (указание источника обязательно)",cancel:"Отмена",map_preview:"предпросмотр карты",loading_snapshot:"Загрузка снимка карты…",preview_unavailable:"предпросмотр недоступен"},"./locales/ru/search.json":{placeholder:"Народ, место, язык, религия",placeholderNoPlaces:"Народ, язык, религия (для поиска мест нужен токен Mapbox)",labels:{people:"Народ:",place:"Место:",language:"Язык:",religion:"Религия:"},kinds:{people:"Народ + страна",peopleGroup:"Народ",bloc:"Блок родства",cluster:"Кластер народов",country:"Страна",region:"Регион",family:"Языковая семья",languageKind:"Язык",dialect:"Диалект",religionKind:"Религия"},sections:{within:"В пределах {selection}",allData:"Все данные DOXA"},upg100Placeholder:"Поиск народа, списка UPG-100 или региона…"},"./locales/ru/tabs.json":{prayer:"Молитва",adoption:"Усыновление",engagement:"Вовлечённость","affinity-blocks":"Народы",regions:"Регионы",countries:"Страны","language-families":"Языки",religion:"Религии",family:"Языковая семья",language:"Язык",dialect:"Диалект/вариант",bloc:"Блок родства",cluster:"Кластер",group:"Народ",pgic:"Народ в стране",region:"Регион WAGF",block:"Блок WAGF",country:"Страна",upg100Region:"Регион",upg100Zone:"Списки UPG-100",upg100Group:"Народ",selectView:"Выбрать вид",views:"Виды",prayerResources:"Молитвенные ресурсы",map:"Карта",countryPosters:"Плакаты по странам"},"./locales/zh/grid.json":{search:"搜索民族…",hide_filters:"隐藏筛选",show_filters:"显示筛选",total:"总计",showing:"显示",load_more:"加载更多",full_profile:"完整档案",wagf_region:"区域",wagf_block:"亲缘板块",rop1:"民族",religion:"宗教",exact_filter:"精确",clear_all:"全部清除",loading:"加载中…",no_results:"没有符合此筛选条件的民族。",type_to_search:"输入以搜索...",load_failed:"无法加载民族数据。这是连接问题,而不是筛选问题。",search_people_or_countries:"搜索民族或国家…"},"./locales/zh/messages.json":{menuComingSoon:"菜单即将推出",pinHint:{tapDot:"点按一个彩色圆点——仍有人需要祷告"},upg100WallHeading:"我的 UPG 100 名單 — 禱告名單與海報",upg100WallTag:"禱告動員",upg100WallIntro:"將禱告的工作分成五十人、一百人一組 — 就像耶穌餵飽五千人那樣(路加福音 9:14)。每一張海報都是一份 100 人名單,你可以為他們禱告、列印出來、貼在牆上 — 按著他們族群的名字為他們禱告。",loadingNamed:"正在加载{name}…",couldNotLoadNamed:"无法加载{name}。",engineMissing:"{engine} 地图引擎未能加载。",packetFailed:"祷告册生成失败:{reason}",selectionPacketFailed:"所选内容的祷告册生成失败:{reason}",posterOneTerritory:"海报一次只能打印一个区域——已选 {count} 个。",selectionPosterFailed:"所选内容的海报生成失败:{reason}",mapUnavailable:"地图不可用",copied:"已复制!",copyFailed:"复制失败——请按 Ctrl/Cmd-C",engineNotLoaded:"地图引擎未加载",engineNotLoadedDetail:"{engine} 地图引擎未能加载。列表和图例不受影响。"},"./locales/zh/poster.json":{export_poster:"导出海报",size:"尺寸",orientation:"方向",portrait:"纵向",landscape:"横向",dpi:"DPI",format:"格式",png_raster:"PNG(位图)",pdf_raster:"PDF(矢量页面上的位图)",title:"标题",map_title:"地图标题",subtitle:"副标题",slots:"元素",scale_bar:"比例尺",north_arrow:"指北针",footer_attribution:"页脚(必须署名)",cancel:"取消",map_preview:"地图预览",loading_snapshot:"正在加载地图快照…",preview_unavailable:"预览不可用"},"./locales/zh/search.json":{placeholder:"民族、地点、语言、宗教",placeholderNoPlaces:"民族、语言、宗教(地点搜索需要 Mapbox 令牌)",labels:{people:"民族:",place:"地点:",language:"语言:",religion:"宗教:"},sections:{within:"在 {selection} 之內",allData:"所有 DOXA 資料"},kinds:{people:"民族 + 国家",peopleGroup:"民族",bloc:"亲缘板块",cluster:"民族群",country:"国家",region:"区域",family:"语系",languageKind:"语言",dialect:"方言",religionKind:"宗教"},upg100Placeholder:"搜索民族、UPG-100 名单或区域…"},"./locales/zh/tabs.json":{prayer:"祷告",adoption:"认领",engagement:"参与","affinity-blocks":"民族",regions:"区域",countries:"国家","language-families":"语言",religion:"宗教",family:"语系",language:"语言",dialect:"方言/变体",bloc:"亲缘板块",cluster:"民族群",group:"民族",pgic:"国内民族",region:"WAGF 区域",block:"WAGF 板块",country:"国家",upg100Region:"区域",upg100Zone:"UPG-100 名单",upg100Group:"族群",selectView:"選擇檢視",views:"檢視",prayerResources:"禱告資源",map:"地圖",countryPosters:"国家海报"}}),Dt={};for(const[e,t]of Object.entries(rl)){const o=e.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!o)continue;const[,s,n]=o;Dt[s]??(Dt[s]={}),Dt[s][n]=t}const vi=["ar","de","en","es","fr","hi","it","pt","ro","ru","zh"];function ll(){try{const e=new URLSearchParams(window.location.search);return(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase()}catch{return""}}function cl(){var s;const e=ll();if(vi.includes(e))return e;const o=(((s=document==null?void 0:document.documentElement)==null?void 0:s.lang)||"").split("-")[0].toLowerCase();return vi.includes(o)?o:"en"}const pl="__DOXA_PAGE_LOCALE";function dl(){try{return typeof window<"u"&&window[pl]||""}catch{return""}}function ul(e,t){const o=n=>{let i=Dt[n];for(const a of String(e).split(".")){if(!i||typeof i!="object")return;i=i[a]}return typeof i=="string"?i:void 0},s=dl()||cl();return o(s)??o("en")}function fl(e,t){const o=Qn(),s=t;yn(()=>{var l;if(!o)return;const n=(l=o.proxy)==null?void 0:l.$el;if(!n)return;const i=n.getRootNode();if(!(i instanceof ShadowRoot))return;const a=i.querySelector(`style[data-shadow-styles="${s}"]`);if(a){a.textContent!==e&&(a.textContent=e);return}const r=document.createElement("style");r.setAttribute("data-shadow-styles",s),r.textContent=e,i.appendChild(r)})}const yi={menu:'',map:'',globe:'',heart:'',prayer:'',list:'',users:'',flag:'',target:'',pin:'',monitor:'',chart:'',folder:'',layers:'',flask:'',share:'',beaker:'',chevron:'',grid:'',tree:'',dots:'',embed:'',send:'',poster:'',search:'',book:'',wifi:''};function gl(e,t=""){const o=yi[e]||yi.map;return``}const hl=".vtl{position:absolute;top:0;right:0;bottom:0;left:0;display:grid!important;grid-template-rows:auto 1fr;height:100%;width:100%;min-height:420px;background:#f3f3f1;color:#3b463d;font-family:Public Sans,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;--vtl-accent:#92b195;--vtl-border:#d1d4cd;--vtl-elevated:#ffffff;--vtl-accented:#d1d4cd;--vtl-muted:#6d766e;--vtl-rail:256px}.vtl.no-header{grid-template-rows:1fr}.vtl-top{flex:0 0 auto;display:flex;align-items:center;gap:10px;box-sizing:border-box;min-height:64px;padding:8px 16px;border-bottom:1px solid var(--vtl-border);background:#fff}.vtl-menu{display:none;font:16px/1 system-ui;color:#3b463d;background:#d1d4cd;border:1px solid #d1d4cd;border-radius:8px;padding:5px 10px;cursor:pointer}.vtl-fab{position:absolute;z-index:15;left:calc(12px + env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom));width:44px;height:44px;display:flex;align-items:center;justify-content:center;font:18px/1 system-ui;color:#3b463d;background:#fff;border:1px solid var(--vtl-border);border-radius:50%;box-shadow:0 2px 10px #0000002e;cursor:pointer}.vtl-fab:hover{background:#d1d4cd}.vtl-fab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:2px}.vtl-menu:hover{background:#d1d4cd}.vtl-brand{display:inline-flex;align-items:center}.vtl-brand:empty{display:none}.vtl-title{font-size:15px;font-weight:600;letter-spacing:-.01em;color:#3b463d}.vtl-meta{color:var(--vtl-muted);font-size:12px;margin-left:auto;display:inline-flex;align-items:center;gap:8px}.vtl-body{min-height:0;position:relative;display:flex}.vtl-nav{position:absolute;top:0;bottom:0;left:0;z-index:5;width:256px;box-sizing:border-box;overflow-y:auto;overflow-x:hidden;border-right:1px solid var(--vtl-border);padding:12px 12px 20px;background:#fff;scrollbar-width:thin;scrollbar-color:#c4c8c0 transparent;contain:layout paint;transform:translate(0);transition:transform .2s cubic-bezier(.4,0,.2,1);will-change:transform}.vtl-nav::-webkit-scrollbar{width:8px;height:8px}.vtl-nav::-webkit-scrollbar-track{background:transparent}.vtl-nav::-webkit-scrollbar-thumb{background:#c4c8c0;border-radius:8px}.vtl-nav::-webkit-scrollbar-thumb:hover{background:#9aa197}.vtl-collapse{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;margin:0 0 8px;padding:7px 10px;border:1px solid var(--vtl-border);border-radius:8px;background:#d1d4cd;color:var(--vtl-muted);font:inherit;font-size:12px;cursor:pointer}.vtl-collapse:hover{background:var(--vtl-accented);color:#3b463d}.vtl-collapse:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-collapse-ic{flex:0 0 auto;display:inline-flex;transition:transform .16s ease;transform:rotate(180deg)}.vtl-collapse-ic svg{width:16px;height:16px}.vtl-collapse-tx{white-space:nowrap}.vtl-grp{margin-bottom:2px}.vtl-grp+.vtl-grp{margin-top:8px;padding-top:8px;border-top:1px solid var(--vtl-border)}.vtl-tier{width:100%;padding:8px 8px 6px;display:flex;align-items:center;gap:8px;box-sizing:border-box}.vtl-tier-btn{border:0;background:none;color:inherit;font:inherit;cursor:pointer;text-align:left;border-radius:8px}.vtl-tier-btn:hover{background:var(--vtl-accented)}.vtl-tier-btn:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tier-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tier-ic svg{width:15px;height:15px}.vtl-cap{font:700 10px/1 system-ui;letter-spacing:.4px;color:#052e16;background:var(--vtl-accent);border-radius:999px;padding:3px 7px}.vtl-tl{font-weight:600;font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--vtl-muted)}.vtl-td{color:#6b6b6b;font-size:11px;margin-left:auto}.vtl-chev{margin-left:auto;display:inline-flex;color:var(--vtl-muted);transition:transform .16s ease}.vtl-chev svg{width:15px;height:15px}.vtl-chev.open{transform:rotate(90deg)}.vtl-rows{display:flex;flex-direction:column;gap:1px}.vtl-tab{display:flex;align-items:center;gap:11px;width:100%;min-height:48px;text-align:left;border:0;background:none;color:var(--vtl-muted);padding:8px 12px;cursor:pointer;border-radius:var(--vtl-radius,8px);font:inherit;margin:0;transition:background .13s ease,color .13s ease}.vtl-tab:hover{background:var(--vtl-accented);color:#3b463d}.vtl-tab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tab.active{background:var(--vtl-accented);color:#3b463d;font-weight:500}.vtl-tab.active .vtl-tab-ic{color:var(--vtl-accent)}.vtl-tab-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tab-ic svg{width:20px;height:20px}.vtl-tab-emoji{font-size:17px;line-height:1;flex:0 0 auto}.vtl-tab-fallback{display:none;flex:0 0 auto;width:20px;height:20px;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--vtl-muted);background:var(--vtl-accented);border-radius:6px}.vtl-tab.active .vtl-tab-fallback{color:var(--vtl-accent)}.vtl-tab-text{display:flex;flex-direction:column;min-width:0}.vtl-tab-label{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px}.vtl-tab-badge{font:600 9px/1 system-ui;letter-spacing:.3px;text-transform:uppercase;color:var(--vtl-accent);border:1px solid var(--vtl-accent);border-radius:var(--vtl-radius,8px);padding:2px 5px}.vtl-tab-sub{font-size:11px;color:#6b6b6b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vtl-tab-sub code{font-family:ui-monospace,Menlo,monospace}.vtl-tab.active .vtl-tab-sub{color:var(--vtl-muted)}.vtl-main{position:absolute;top:0;bottom:0;right:0;left:256px;min-width:0;display:flex;flex-direction:column}.vtl-content{flex:1 1 auto;position:relative;min-height:0}.vtl-host{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;--profile-min-h:0}.vtl-host-slot{position:relative;min-height:100%}.vtl-host-slot>*{min-height:0;max-height:none}.vtl-host-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:var(--dx-muted, #6d766e);font-size:13px;padding:20px}.vtl-host-hint.err{color:#f87171}.vtl-host-hint small{color:var(--dx-muted, #6d766e)}.vtl.rail-collapsed .vtl-nav{transform:translate(-184px)}.vtl.rail-collapsed .vtl-main{left:72px}.vtl.rail-collapsed .vtl-collapse{padding-left:184px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(0)}.vtl.rail-collapsed .vtl-collapse-tx{display:none}.vtl.rail-collapsed .vtl-tab{padding-left:188px;gap:0}.vtl.rail-collapsed .vtl-tab-text{display:none}.vtl.rail-collapsed .vtl-tab-emoji{font-size:19px}.vtl.rail-collapsed .vtl-tab-fallback{display:inline-flex}.vtl.rail-collapsed .vtl-tier{padding-left:196px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:none}.vtl.rail-collapsed .vtl-grp+.vtl-grp{margin-top:6px;padding-top:6px}@media (max-width: 760px){.vtl-top{min-height:56px}.vtl-menu{display:inline-block}.vtl-meta{display:none}.vtl-nav{z-index:20;width:256px;box-shadow:0 0 28px #0000008c;transform:translate(-100%)}.vtl.nav-open .vtl-nav{transform:translate(0);z-index:1000}.vtl-main{left:0}.vtl.rail-collapsed .vtl-nav{transform:translate(-100%)}.vtl.rail-collapsed.nav-open .vtl-nav{transform:translate(0)}.vtl.rail-collapsed .vtl-main{left:0}.vtl.rail-collapsed .vtl-collapse{padding-left:10px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(180deg)}.vtl.rail-collapsed .vtl-collapse-tx{display:inline}.vtl.rail-collapsed .vtl-tab{padding-left:10px;gap:11px}.vtl.rail-collapsed .vtl-tab-text{display:flex}.vtl.rail-collapsed .vtl-tab-fallback{display:none}.vtl.rail-collapsed .vtl-tier{padding-left:8px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:inline}}.vtl:dir(rtl) .vtl-nav{left:auto;right:0;border-right:0;border-left:1px solid var(--vtl-border)}.vtl:dir(rtl) .vtl-main{left:0;right:256px}.vtl:dir(rtl) .vtl-tab,.vtl:dir(rtl) .vtl-tier-btn{text-align:right}.vtl:dir(rtl) .vtl-meta,.vtl:dir(rtl) .vtl-td,.vtl:dir(rtl) .vtl-chev{margin-left:0;margin-right:auto}.vtl:dir(rtl) .vtl-chev:not(.open){transform:scaleX(-1)}.vtl:dir(rtl) .vtl-collapse-ic svg{transform:scaleX(-1)}.vtl:dir(rtl) .vtl-fab{left:auto;right:calc(12px + env(safe-area-inset-right))}.vtl.rail-collapsed:dir(rtl) .vtl-nav{transform:translate(184px)}.vtl.rail-collapsed:dir(rtl) .vtl-main{left:0;right:72px}.vtl.rail-collapsed:dir(rtl) .vtl-collapse{padding-left:10px;padding-right:184px}.vtl.rail-collapsed:dir(rtl) .vtl-tab{padding-left:12px;padding-right:188px}.vtl.rail-collapsed:dir(rtl) .vtl-tier{padding-left:8px;padding-right:196px}@media (max-width: 760px){.vtl:dir(rtl) .vtl-nav{transform:translate(100%)}.vtl.nav-open:dir(rtl) .vtl-nav{transform:translate(0)}.vtl:dir(rtl) .vtl-main,.vtl.rail-collapsed:dir(rtl) .vtl-main{left:0;right:0}.vtl.rail-collapsed:dir(rtl) .vtl-nav{transform:translate(100%)}.vtl.rail-collapsed.nav-open:dir(rtl) .vtl-nav{transform:translate(0)}.vtl.rail-collapsed:dir(rtl) .vtl-collapse{padding-left:10px;padding-right:10px}.vtl.rail-collapsed:dir(rtl) .vtl-tab{padding-left:12px;padding-right:10px}.vtl.rail-collapsed:dir(rtl) .vtl-tier{padding-left:8px;padding-right:8px}}",xi=(e,t)=>{const o=e.__vccOpts||e;for(const[s,n]of t)o[s]=n;return o},bl=(e,t)=>ul(e)||t,It={};function ml(e){return e?(It[e]||(It[e]=new Promise((t,o)=>{const s=document.createElement("script");s.src=e,s.onload=()=>t(),s.onerror=()=>{delete It[e],o(new Error("failed to load "+e))},document.head.appendChild(s)})),It[e]):Promise.resolve()}function _l(e,t=5e3){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():customElements.whenDefined?Promise.race([customElements.whenDefined(e),new Promise((o,s)=>setTimeout(()=>s(new Error("timeout waiting for <"+e+">")),t))]):Promise.resolve()}const $l=` +**/let bs;const ai=typeof window<"u"&&window.trustedTypes;if(ai)try{bs=ai.createPolicy("vue",{createHTML:e=>e})}catch{}const ri=bs?e=>bs.createHTML(e):e=>e,Ar="http://www.w3.org/2000/svg",Or="http://www.w3.org/1998/Math/MathML",Ve=typeof document<"u"?document:null,li=Ve&&Ve.createElement("template"),Fr={insert:(e,t,o)=>{t.insertBefore(e,o||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,o,s)=>{const n=t==="svg"?Ve.createElementNS(Ar,e):t==="mathml"?Ve.createElementNS(Or,e):o?Ve.createElement(e,{is:o}):Ve.createElement(e);return e==="select"&&s&&s.multiple!=null&&n.setAttribute("multiple",s.multiple),n},createText:e=>Ve.createTextNode(e),createComment:e=>Ve.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ve.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,s,n,i){const a=o?o.previousSibling:t.lastChild;if(n&&(n===i||n.nextSibling))for(;t.insertBefore(n.cloneNode(!0),o),!(n===i||!(n=n.nextSibling)););else{li.innerHTML=ri(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const r=li.content;if(s==="svg"||s==="mathml"){const l=r.firstChild;for(;l.firstChild;)r.appendChild(l.firstChild);r.removeChild(l)}t.insertBefore(r,o)}return[a?a.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}},Mr=Symbol("_vtc");function Ir(e,t,o){const s=e[Mr];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}const yo=Symbol("_vod"),ci=Symbol("_vsh"),ms={name:"show",beforeMount(e,{value:t},{transition:o}){e[yo]=e.style.display==="none"?"":e.style.display,o&&t?o.beforeEnter(e):Ft(e,t)},mounted(e,{value:t},{transition:o}){o&&t&&o.enter(e)},updated(e,{value:t,oldValue:o},{transition:s}){!t!=!o&&(s?t?(s.beforeEnter(e),Ft(e,!0),s.enter(e)):s.leave(e,()=>{Ft(e,!1)}):Ft(e,t))},beforeUnmount(e,{value:t}){Ft(e,t)}};function Ft(e,t){e.style.display=t?e[yo]:"none",e[ci]=!t}const Dr=Symbol(""),Hr=/(?:^|;)\s*display\s*:/;function jr(e,t,o){const s=e.style,n=q(o);let i=!1;if(o&&!n){if(t)if(q(t))for(const a of t.split(";")){const r=a.slice(0,a.indexOf(":")).trim();o[r]==null&&Mt(s,r,"")}else for(const a in t)o[a]==null&&Mt(s,a,"");for(const a in o){a==="display"&&(i=!0);const r=o[a];r!=null?Wr(e,a,!q(t)&&t?t[a]:void 0,r)||Mt(s,a,r):Mt(s,a,"")}}else if(n){if(t!==o){const a=s[Dr];a&&(o+=";"+a),s.cssText=o,i=Hr.test(o)}}else t&&e.removeAttribute("style");yo in e&&(e[yo]=i?s.display:"",e[ci]&&(s.display="none"))}const xo=/\s*!important$/;function Mt(e,t,o){if(C(o))o.forEach(s=>Mt(e,t,s));else if(o==null&&(o=""),t.startsWith("--"))xo.test(o)?e.setProperty(t,o.replace(xo,""),"important"):e.setProperty(t,o);else{const s=Gr(e,t);xo.test(o)?e.setProperty(be(s),o.replace(xo,""),"important"):e[s]=o}}const pi=["Webkit","Moz","ms"],_s={};function Gr(e,t){const o=_s[t];if(o)return o;let s=oe(t);if(s!=="filter"&&s in e)return _s[t]=s;s=Xt(s);for(let n=0;n$s||(Zr.then(()=>$s=0),$s=Date.now());function Jr(e,t){const o=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=o.attached)return;const n=o.value;if(C(n)){const i=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{i.call(s),s._stopped=!0};const a=n.slice(),r=[s];for(let l=0;le.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Yr=(e,t,o,s,n,i)=>{const a=n==="svg";t==="class"?Ir(e,s,a):t==="style"?jr(e,o,s):zt(t)?Bt(t)||zr(e,t,o,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Qr(e,t,s,a))?(fi(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ui(e,t,s,a,i,t!=="value")):e._isVueCE&&(el(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!q(s)))?fi(e,oe(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ui(e,t,s,a))};function Qr(e,t,o,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&hi(t)&&R(o));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const n=e.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return hi(t)&&q(o)?!1:t in e}function el(e,t){const o=e._def.props;if(!o)return!1;const s=oe(t);return Array.isArray(o)?o.some(n=>oe(n)===s):Object.keys(o).some(n=>oe(n)===s)}const bi={};function tl(e,t,o){let s=ss(e,t);qt(s)&&(s=J({},s,t));class n extends vs{constructor(a){super(s,a,o)}}return n.def=s,n}const ol=typeof HTMLElement<"u"?HTMLElement:class{};class vs extends ol{constructor(t,o={},s=$i){super(),this._def=t,this._props=o,this._createApp=s,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&s!==$i?this._root=this.shadowRoot:t.shadowRoot!==!1?(this.attachShadow(J({},t.shadowRootOptions,{mode:"open"})),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t=t&&(t.assignedSlot||t.parentNode||t.host);)if(t instanceof vs){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{if(this._pendingResolve=void 0,this.isConnected)return this._resolveDef()}):this._resolveDef())}_setParent(t=this._parent){t&&(this._instance.parent=t._instance,this._inheritParentContext(t))}_inheritParentContext(t=this._parent){t&&this._app&&Object.setPrototypeOf(this._app._context.provides,t._instance.provides)}disconnectedCallback(){this._connected=!1,ln(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(t){for(const o of t)this._setAttr(o.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let s=0;s{this._resolved=!0,this._pendingResolve=void 0;const{props:i,styles:a}=s;let r;if(i&&!C(i))for(const l in i){const u=i[l];(u===Number||u&&u.type===Number)&&(l in this._props&&(this._props[l]=Es(this._props[l])),(r||(r=Object.create(null)))[oe(l)]=!0)}this._numberProps=r,this._resolveProps(s),this.shadowRoot&&this._applyStyles(a),this._mount(s)},o=this._def.__asyncLoader;if(o)return this._pendingResolve=o().then(s=>{s.configureApp=this._def.configureApp,t(this._def=s,!0)}),this._pendingResolve;t(this._def)}_mount(t){this._app=this._createApp(t),this._inheritParentContext(),t.configureApp&&t.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const o=this._instance&&this._instance.exposed;if(o)for(const s in o)D(this,s)||Object.defineProperty(this,s,{get:()=>sn(o[s])})}_resolveProps(t){const{props:o}=t,s=C(o)?o:Object.keys(o||{});for(const n of Object.keys(this))n[0]!=="_"&&s.includes(n)&&this._setProp(n,this[n]);for(const n of s.map(oe))Object.defineProperty(this,n,{get(){return this._getProp(n)},set(i){this._setProp(n,i,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const o=this.hasAttribute(t);let s=o?this.getAttribute(t):bi;const n=oe(t);o&&this._numberProps&&this._numberProps[n]&&(s=Es(s)),this._setProp(n,s,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,o,s=!0,n=!1){if(o!==this._props[t]&&(this._dirty=!0,o===bi?delete this._props[t]:(this._props[t]=o,t==="key"&&this._app&&(this._app._ceVNode.key=o)),n&&this._instance&&this._update(),s)){const i=this._ob;i&&(this._processMutations(i.takeRecords()),i.disconnect()),o===!0?this.setAttribute(be(t),""):typeof o=="string"||typeof o=="number"?this.setAttribute(be(t),o+""):o||this.removeAttribute(be(t)),i&&i.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),nl(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const o=ye(this._def,J(t,this._props));return this._instance||(o.ce=s=>{this._instance=s,s.ce=this,s.isCE=!0;const n=(i,a)=>{this.dispatchEvent(new CustomEvent(i,qt(a[0])?J({detail:a},a[0]):{detail:a}))};s.emit=(i,...a)=>{n(i,a),be(i)!==i&&n(be(i),a)},this._setParent()}),o}_applyStyles(t,o,s){if(!t)return;if(o){if(o===this._def||this._styleChildren.has(o))return;this._styleChildren.add(o)}const n=this._nonce,i=this.shadowRoot,a=s?this._getStyleAnchor(s)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(i);let r=null;for(let l=t.length-1;l>=0;l--){const u=document.createElement("style");n&&u.setAttribute("nonce",n),u.textContent=t[l],i.insertBefore(u,r||a),r=u,l===0&&(s||this._styleAnchors.set(this._def,u),o&&this._styleAnchors.set(o,u))}}_getStyleAnchor(t){if(!t)return null;const o=this._styleAnchors.get(t);return o&&o.parentNode===this.shadowRoot?o:(o&&this._styleAnchors.delete(t),null)}_getRootStyleInsertionAnchor(t){for(let o=0;o{_i().render(...e)},$i=(...e)=>{const t=_i().createApp(...e),{mount:o}=t;return t.mount=s=>{const n=al(s);if(!n)return;const i=t._component;!R(i)&&!i.render&&!i.template&&(i.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const a=o(n,!1,il(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),a},t};function il(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function al(e){return q(e)?document.querySelector(e):e}const rl=Object.assign({"./locales/ar/grid.json":{search:"ابحث عن الشعوب…",hide_filters:"إخفاء عوامل التصفية",show_filters:"إظهار عوامل التصفية",total:"الإجمالي",showing:"المعروض",load_more:"عرض المزيد",full_profile:"الملف الكامل",wagf_region:"المنطقة",wagf_block:"كتلة التقارب",rop1:"الشعب",religion:"الدين",exact_filter:"تطابق تام",clear_all:"مسح الكل",loading:"جارٍ التحميل…",no_results:"لا توجد شعوب مطابقة لهذا التصفية.",type_to_search:"اكتب للبحث...",load_failed:"تعذّر تحميل بيانات الشعوب. هذه مشكلة اتصال، وليست مشكلة في التصفية.",search_people_or_countries:"ابحث عن الشعوب أو الدول…"},"./locales/ar/messages.json":{menuComingSoon:"القائمة قادمة قريباً",pinHint:{tapDot:"اضغط على نقطة ملوّنة — لا يزال هناك من يحتاج إلى الصلاة"},upg100WallHeading:"قائمتي UPG 100 — قوائم الصلاة والملصقات",upg100WallTag:"تعبئة للصلاة",upg100WallIntro:"وزّع مهمة الصلاة في مجموعات من خمسين ومئة — كما أطعم يسوع الخمسة آلاف (لوقا ٩:١٤). كل ملصق هو قائمة من 100 يمكنك أن تصلي بها وتطبعها وتعلّقها على الحائط — مصلّيًا لأجلهم باسم شعبهم.",loadingNamed:"جارٍ تحميل {name}…",couldNotLoadNamed:"تعذّر تحميل {name}.",engineMissing:"لم يتم تحميل محرك الخرائط {engine}.",packetFailed:"فشل إنشاء الكُتيّب: {reason}",selectionPacketFailed:"فشل إنشاء كُتيّب التحديد: {reason}",posterOneTerritory:"الملصق يطبع منطقة واحدة في كل مرة — {count} محددة.",selectionPosterFailed:"فشل إنشاء ملصق التحديد: {reason}",mapUnavailable:"الخريطة غير متاحة",copied:"تم النسخ!",copyFailed:"فشل النسخ — اضغط Ctrl/Cmd-C",engineNotLoaded:"لم يتم تحميل محرك الخريطة",engineNotLoadedDetail:"لم يتم تحميل محرك الخريطة {engine}. القائمة ووسيلة الإيضاح غير متأثرتين."},"./locales/ar/poster.json":{export_poster:"تصدير الملصق",size:"الحجم",orientation:"الاتجاه",portrait:"طولي",landscape:"عرضي",dpi:"DPI",format:"الصيغة",png_raster:"PNG (نقطي)",pdf_raster:"PDF (نقطي على صفحة متجهية)",title:"العنوان",map_title:"عنوان الخريطة",subtitle:"العنوان الفرعي",slots:"العناصر",scale_bar:"شريط المقياس",north_arrow:"سهم الشمال",footer_attribution:"التذييل (الإسناد مطلوب)",cancel:"إلغاء",map_preview:"معاينة الخريطة",loading_snapshot:"جارٍ تحميل لقطة الخريطة…",preview_unavailable:"المعاينة غير متاحة"},"./locales/ar/search.json":{placeholder:"شعب، مكان، لغة، ديانة",placeholderNoPlaces:"شعب، لغة، ديانة (البحث عن الأماكن يتطلب رمز Mapbox)",labels:{people:"الشعب:",place:"المكان:",language:"اللغة:",religion:"الديانة:"},kinds:{people:"الشعب + الدولة",peopleGroup:"الشعب",bloc:"كتلة التقارب",cluster:"مجموعة شعوب",country:"الدولة",region:"المنطقة",family:"عائلة اللغة",languageKind:"اللغة",dialect:"اللهجة",religionKind:"الدين"},sections:{within:"ضمن {selection}",allData:"كل بيانات DOXA"},upg100Placeholder:"ابحث عن شعب أو قائمة UPG-100 أو منطقة…"},"./locales/ar/tabs.json":{prayer:"الصلاة",adoption:"التبني",engagement:"المشاركة","affinity-blocks":"الشعوب",regions:"المناطق",countries:"الدول","language-families":"اللغات",religion:"الأديان",family:"عائلة اللغة",language:"اللغة",dialect:"اللهجة/التنوع",bloc:"كتلة التقارب",cluster:"المجموعة",group:"الشعب",pgic:"الشعب في الدولة",region:"منطقة WAGF",block:"كتلة WAGF",country:"الدولة",upg100Region:"المنطقة",upg100Zone:"قوائم UPG-100",upg100Group:"مجموعة شعبية",selectView:"اختر العرض",views:"العروض",prayerResources:"موارد الصلاة",map:"الخريطة",countryPosters:"ملصقات الدول"},"./locales/de/grid.json":{search:"Volksgruppen suchen…",hide_filters:"Filter ausblenden",show_filters:"Filter anzeigen",total:"Gesamt",showing:"Angezeigt",load_more:"Mehr laden",full_profile:"Vollständiges Profil",wagf_region:"Region",wagf_block:"Affinitätsblock",rop1:"Volk",religion:"Religion",exact_filter:"Exakt",clear_all:"Alle löschen",loading:"Wird geladen…",no_results:"Keine Volksgruppen entsprechen diesem Filter.",type_to_search:"Zum Suchen tippen...",load_failed:"Die Daten konnten nicht geladen werden. Das ist ein Verbindungsproblem, nicht Ihr Filter.",search_people_or_countries:"Volksgruppen oder Länder suchen…"},"./locales/de/messages.json":{menuComingSoon:"Menü folgt in Kürze",pinHint:{tapDot:"Tippe auf einen farbigen Punkt — jemand braucht noch Gebet"},upg100WallHeading:"Meine UPG-100-Liste — Gebetslisten und Poster",upg100WallTag:"Gebetsmobilisierung",upg100WallIntro:"Teilen Sie die Gebetsaufgabe in Gruppen zu fünfzig und hundert auf — so wie Jesus die 5.000 speiste (Lukas 9,14). Jedes Poster ist eine 100er-Liste, die Sie beten, drucken und an die Wand hängen können — und für sie mit dem Namen ihrer Volksgruppe beten.",loadingNamed:"{name} wird geladen…",couldNotLoadNamed:"{name} konnte nicht geladen werden.",engineMissing:"Die Karten-Engine {engine} wurde nicht geladen.",packetFailed:"Heft fehlgeschlagen: {reason}",selectionPacketFailed:"Heft der Auswahl fehlgeschlagen: {reason}",posterOneTerritory:"Das Plakat druckt ein Gebiet auf einmal — {count} ausgewählt.",selectionPosterFailed:"Plakat der Auswahl fehlgeschlagen: {reason}",mapUnavailable:"Karte nicht verfügbar",copied:"Kopiert!",copyFailed:"Kopieren fehlgeschlagen — Strg/Cmd-C drücken",engineNotLoaded:"Karten-Engine nicht geladen",engineNotLoadedDetail:"Die Karten-Engine {engine} wurde nicht geladen. Liste und Legende sind nicht betroffen."},"./locales/de/poster.json":{export_poster:"Poster exportieren",size:"Größe",orientation:"Ausrichtung",portrait:"Hochformat",landscape:"Querformat",dpi:"DPI",format:"Format",png_raster:"PNG (Raster)",pdf_raster:"PDF (Raster auf Vektorseite)",title:"Titel",map_title:"Kartentitel",subtitle:"Untertitel",slots:"Elemente",scale_bar:"Maßstabsleiste",north_arrow:"Nordpfeil",footer_attribution:"Fußzeile (Quellenangabe erforderlich)",cancel:"Abbrechen",map_preview:"Kartenvorschau",loading_snapshot:"Kartenaufnahme wird geladen…",preview_unavailable:"Vorschau nicht verfügbar"},"./locales/de/search.json":{placeholder:"Volk, Ort, Sprache, Religion",placeholderNoPlaces:"Volk, Sprache, Religion (Ortssuche braucht ein Mapbox-Token)",labels:{people:"Volk:",place:"Ort:",language:"Sprache:",religion:"Religion:"},sections:{within:"Innerhalb {selection}",allData:"Alle DOXA-Daten"},kinds:{people:"Volk + Land",peopleGroup:"Volk",bloc:"Affinitätsblock",cluster:"Völkercluster",country:"Land",region:"Region",family:"Sprachfamilie",languageKind:"Sprache",dialect:"Dialekt",religionKind:"Religion"},upg100Placeholder:"Volksgruppe, UPG-100-Liste oder Region suchen…"},"./locales/de/tabs.json":{prayer:"Gebet",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Volksgruppen",regions:"Regionen",countries:"Länder","language-families":"Sprachen",religion:"Religionen",family:"Sprachfamilie",language:"Sprache",dialect:"Dialekt/Varietät",bloc:"Affinitätsblock",cluster:"Cluster",group:"Volksgruppe",pgic:"Volksgruppe im Land",region:"WAGF-Region",block:"WAGF-Block",country:"Land",upg100Region:"Region",upg100Zone:"UPG-100-Listen",upg100Group:"Volksgruppe",selectView:"Ansicht wählen",views:"Ansichten",prayerResources:"Gebetsressourcen",map:"Karte",countryPosters:"Länderposter"},"./locales/en/grid.json":{search:"Search people groups…",hide_filters:"Hide Filters",show_filters:"Show Filters",total:"Total",showing:"Showing",load_more:"Load More",full_profile:"Full Profile",wagf_region:"Region",wagf_block:"Affinity Block",rop1:"People Group",religion:"Religion",exact_filter:"Exact",clear_all:"Clear All",loading:"Loading…",no_results:"No people groups match this filter.",type_to_search:"Type to search...",load_failed:"People-group data could not be loaded. This is a connection problem, not your filter.",search_people_or_countries:"Search people groups or countries…"},"./locales/en/messages.json":{menuComingSoon:"Menu coming soon",pinHint:{tapDot:"Tap a coloured dot — someone still needs prayer"},upg100WallHeading:"My UPG 100 List — Prayer Lists & Posters",upg100WallTag:"Prayer Mobilization",upg100WallIntro:"Hand away the prayer task in clusters of fifties and hundreds — the way Jesus fed the 5,000 (Luke 9:14). Each poster is a 100-list you can pray, print, and put on a wall — praying for them by their people group name.",loadingNamed:"Loading {name}…",couldNotLoadNamed:"Could not load {name}.",engineMissing:"The {engine} map engine did not load.",packetFailed:"Packet failed: {reason}",selectionPacketFailed:"Selection packet failed: {reason}",posterOneTerritory:"Poster prints one territory at a time — {count} selected.",selectionPosterFailed:"Selection poster failed: {reason}",mapUnavailable:"Map unavailable",copied:"Copied!",copyFailed:"Copy failed — press Ctrl/Cmd-C",engineNotLoaded:"map engine not loaded",engineNotLoadedDetail:"The {engine} map engine did not load. The list and legend are unaffected."},"./locales/en/poster.json":{export_poster:"Export Poster",size:"Size",orientation:"Orientation",portrait:"Portrait",landscape:"Landscape",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster on vector page)",title:"Title",map_title:"Map title",subtitle:"Subtitle",slots:"Slots",scale_bar:"Scale bar",north_arrow:"North arrow",footer_attribution:"Footer (attribution required)",cancel:"Cancel",map_preview:"map preview",loading_snapshot:"Loading map snapshot…",preview_unavailable:"preview unavailable"},"./locales/en/search.json":{placeholder:"People, place, language, religion",placeholderNoPlaces:"People, language, religion (place search needs a Mapbox token)",labels:{people:"People:",place:"Place:",language:"Language:",religion:"Religion:"},kinds:{people:"People Group + Country",peopleGroup:"People Group",bloc:"Affinity Block",cluster:"People Cluster",country:"Country",region:"Region",family:"Language Family",languageKind:"Language",dialect:"Dialect",religionKind:"Religion"},sections:{within:"Within {selection}",allData:"All DOXA Data"},upg100Placeholder:"Search people group, UPG-100 list, or region…"},"./locales/en/tabs.json":{prayer:"Prayer",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"People Groups (Affinity)",regions:"Regions",countries:"Countries","language-families":"Languages",religion:"Religions",family:"Lang Family",language:"Language",dialect:"Dialect/Variety",bloc:"Affinity Block",cluster:"Cluster",group:"People Group",pgic:"PG in Country",region:"WAGF Region",block:"WAGF Bloc",country:"Country",upg100Region:"Region",upg100Zone:"UPG-100 Lists",upg100Group:"People Group",selectView:"Select View",views:"Views",prayerResources:"Prayer Resources",map:"Map",countryPosters:"Country Posters"},"./locales/es/grid.json":{search:"Buscar pueblos…",hide_filters:"Ocultar filtros",show_filters:"Mostrar filtros",total:"Total",showing:"Mostrando",load_more:"Cargar más",full_profile:"Perfil completo",wagf_region:"Región",wagf_block:"Bloque de afinidad",rop1:"Pueblo",religion:"Religión",exact_filter:"Exacto",clear_all:"Borrar todo",loading:"Cargando…",no_results:"Ningún pueblo coincide con este filtro.",type_to_search:"Escribe para buscar...",load_failed:"No se pudieron cargar los datos de pueblos. Es un problema de conexión, no de tu filtro.",search_people_or_countries:"Buscar pueblos o países…"},"./locales/es/messages.json":{menuComingSoon:"Menú próximamente",pinHint:{tapDot:"Toca un punto de color: alguien todavía necesita oración"},upg100WallHeading:"Mi lista UPG 100 — Listas de oración y carteles",upg100WallTag:"Movilización de oración",upg100WallIntro:"Reparte la tarea de la oración en grupos de cincuenta y de cien, como Jesús alimentó a los 5.000 (Lucas 9:14). Cada cartel es una lista de 100 que puedes orar, imprimir y poner en la pared — orando por ellos por el nombre de su pueblo.",loadingNamed:"Cargando {name}…",couldNotLoadNamed:"No se pudo cargar {name}.",engineMissing:"El motor de mapas {engine} no se cargó.",packetFailed:"Error al generar el cuadernillo: {reason}",selectionPacketFailed:"Error al generar el cuadernillo de la selección: {reason}",posterOneTerritory:"El cartel imprime un territorio a la vez: {count} seleccionados.",selectionPosterFailed:"Error al generar el cartel de la selección: {reason}",mapUnavailable:"Mapa no disponible",copied:"¡Copiado!",copyFailed:"Error al copiar: pulsa Ctrl/Cmd-C",engineNotLoaded:"motor de mapas no cargado",engineNotLoadedDetail:"El motor de mapas {engine} no se cargó. La lista y la leyenda no se ven afectadas."},"./locales/es/poster.json":{export_poster:"Exportar póster",size:"Tamaño",orientation:"Orientación",portrait:"Vertical",landscape:"Horizontal",dpi:"DPI",format:"Formato",png_raster:"PNG (ráster)",pdf_raster:"PDF (ráster en página vectorial)",title:"Título",map_title:"Título del mapa",subtitle:"Subtítulo",slots:"Elementos",scale_bar:"Barra de escala",north_arrow:"Flecha norte",footer_attribution:"Pie de página (atribución obligatoria)",cancel:"Cancelar",map_preview:"vista previa del mapa",loading_snapshot:"Cargando la captura del mapa…",preview_unavailable:"vista previa no disponible"},"./locales/es/search.json":{placeholder:"Pueblo, lugar, idioma, religión",placeholderNoPlaces:"Pueblo, idioma, religión (buscar lugares requiere un token de Mapbox)",labels:{people:"Pueblo:",place:"Lugar:",language:"Idioma:",religion:"Religión:"},kinds:{people:"Pueblo + país",peopleGroup:"Pueblo",bloc:"Bloque de afinidad",cluster:"Clúster de pueblos",country:"País",region:"Región",family:"Familia lingüística",languageKind:"Idioma",dialect:"Dialecto",religionKind:"Religión"},sections:{within:"Dentro de {selection}",allData:"Todos los datos DOXA"},upg100Placeholder:"Buscar pueblo, lista UPG-100 o región…"},"./locales/es/tabs.json":{prayer:"Oración",adoption:"Adopción",engagement:"Compromiso","affinity-blocks":"Pueblos",regions:"Regiones",countries:"Países","language-families":"Idiomas",religion:"Religiones",family:"Familia lingüística",language:"Idioma",dialect:"Dialecto/Variedad",bloc:"Bloque de afinidad",cluster:"Clúster",group:"Pueblo",pgic:"Pueblo en país",region:"Región WAGF",block:"Bloque WAGF",country:"País",upg100Region:"Región",upg100Zone:"Listas UPG-100",upg100Group:"Grupo étnico",selectView:"Seleccionar vista",views:"Vistas",prayerResources:"Recursos de oración",map:"Mapa",countryPosters:"Carteles por país"},"./locales/fr/grid.json":{search:"Rechercher des peuples…",hide_filters:"Masquer les filtres",show_filters:"Afficher les filtres",total:"Total",showing:"Affichage",load_more:"Charger plus",full_profile:"Profil complet",wagf_region:"Région",wagf_block:"Bloc d'affinité",rop1:"Peuple",religion:"Religion",exact_filter:"Exact",clear_all:"Tout effacer",loading:"Chargement…",no_results:"Aucun peuple ne correspond à ce filtre.",type_to_search:"Tapez pour rechercher...",load_failed:"Les données n’ont pas pu être chargées. C’est un problème de connexion, pas votre filtre.",search_people_or_countries:"Rechercher des peuples ou des pays…"},"./locales/fr/messages.json":{menuComingSoon:"Menu bientôt disponible",pinHint:{tapDot:"Touchez un point coloré — quelqu’un a encore besoin de prière"},upg100WallHeading:"Ma liste UPG 100 — Listes de prière et affiches",upg100WallTag:"Mobilisation pour la prière",upg100WallIntro:"Répartissez la tâche de la prière par groupes de cinquante et de cent — comme Jésus a nourri les 5 000 (Luc 9:14). Chaque affiche est une liste de 100 que vous pouvez prier, imprimer et afficher au mur — en priant pour eux par le nom de leur peuple.",loadingNamed:"Chargement de {name}…",couldNotLoadNamed:"Impossible de charger {name}.",engineMissing:"Le moteur de carte {engine} ne s’est pas chargé.",packetFailed:"Échec du livret : {reason}",selectionPacketFailed:"Échec du livret de la sélection : {reason}",posterOneTerritory:"L’affiche imprime un territoire à la fois — {count} sélectionnés.",selectionPosterFailed:"Échec de l’affiche de la sélection : {reason}",mapUnavailable:"Carte indisponible",copied:"Copié !",copyFailed:"Échec de la copie — appuyez sur Ctrl/Cmd-C",engineNotLoaded:"moteur cartographique non chargé",engineNotLoadedDetail:"Le moteur cartographique {engine} ne s’est pas chargé. La liste et la légende ne sont pas affectées."},"./locales/fr/poster.json":{export_poster:"Exporter l'affiche",size:"Taille",orientation:"Orientation",portrait:"Portrait",landscape:"Paysage",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster sur page vectorielle)",title:"Titre",map_title:"Titre de la carte",subtitle:"Sous-titre",slots:"Éléments",scale_bar:"Échelle",north_arrow:"Flèche du nord",footer_attribution:"Pied de page (attribution requise)",cancel:"Annuler",map_preview:"aperçu de la carte",loading_snapshot:"Chargement de l'instantané de la carte…",preview_unavailable:"aperçu indisponible"},"./locales/fr/search.json":{placeholder:"Peuple, lieu, langue, religion",placeholderNoPlaces:"Peuple, langue, religion (la recherche de lieux requiert un jeton Mapbox)",labels:{people:"Peuple :",place:"Lieu :",language:"Langue :",religion:"Religion :"},kinds:{people:"Peuple + pays",peopleGroup:"Peuple",bloc:"Bloc d'affinité",cluster:"Grappe de peuples",country:"Pays",region:"Région",family:"Famille linguistique",languageKind:"Langue",dialect:"Dialecte",religionKind:"Religion"},sections:{within:"Dans {selection}",allData:"Toutes les données DOXA"},upg100Placeholder:"Rechercher un peuple, une liste UPG-100 ou une région…"},"./locales/fr/tabs.json":{prayer:"Prière",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Peuples",regions:"Régions",countries:"Pays","language-families":"Langues",religion:"Religions",family:"Famille linguistique",language:"Langue",dialect:"Dialecte/Variété",bloc:"Bloc d'affinité",cluster:"Grappe",group:"Peuple",pgic:"Peuple dans le pays",region:"Région WAGF",block:"Bloc WAGF",country:"Pays",upg100Region:"Région",upg100Zone:"Listes UPG-100",upg100Group:"Groupe de peuples",selectView:"Choisir la vue",views:"Vues",prayerResources:"Ressources de prière",map:"Carte",countryPosters:"Affiches par pays"},"./locales/hi/grid.json":{search:"जनसमूह खोजें…",hide_filters:"फ़िल्टर छिपाएँ",show_filters:"फ़िल्टर दिखाएँ",total:"कुल",showing:"दिखा रहे हैं",load_more:"और देखें",full_profile:"पूरी प्रोफ़ाइल",wagf_region:"क्षेत्र",wagf_block:"समानता समूह",rop1:"जनसमूह",religion:"धर्म",exact_filter:"सटीक",clear_all:"सब हटाएँ",loading:"लोड हो रहा है…",no_results:"इस फ़िल्टर से कोई जनसमूह मेल नहीं खाता।",type_to_search:"खोजने के लिए लिखें...",load_failed:"जनसमूह डेटा लोड नहीं हो सका। यह कनेक्शन की समस्या है, आपके फ़िल्टर की नहीं।",search_people_or_countries:"जनसमूह या देश खोजें…"},"./locales/hi/messages.json":{menuComingSoon:"मेनू शीघ्र आ रहा है",pinHint:{tapDot:"किसी रंगीन बिंदु पर टैप करें — किसी को अभी भी प्रार्थना की आवश्यकता है"},upg100WallHeading:"मेरी UPG 100 सूची — प्रार्थना सूचियाँ और पोस्टर",upg100WallTag:"प्रार्थना लामबंदी",upg100WallIntro:"प्रार्थना के काम को पचास-पचास और सौ-सौ के समूहों में बाँटें — जैसे यीशु ने 5,000 लोगों को खिलाया (लूका 9:14)। हर पोस्टर 100 की एक सूची है जिसके लिए आप प्रार्थना कर सकते हैं, छाप सकते हैं और दीवार पर लगा सकते हैं — उनके लिए उनके जनसमूह के नाम से प्रार्थना करते हुए।",loadingNamed:"{name} लोड हो रहा है…",couldNotLoadNamed:"{name} लोड नहीं हो सका।",engineMissing:"{engine} नक्शा इंजन लोड नहीं हुआ।",packetFailed:"पुस्तिका विफल: {reason}",selectionPacketFailed:"चयन की पुस्तिका विफल: {reason}",posterOneTerritory:"पोस्टर एक समय में एक क्षेत्र छापता है — {count} चयनित।",selectionPosterFailed:"चयन का पोस्टर विफल: {reason}",mapUnavailable:"मानचित्र अनुपलब्ध",copied:"कॉपी हो गया!",copyFailed:"कॉपी विफल — Ctrl/Cmd-C दबाएँ",engineNotLoaded:"मानचित्र इंजन लोड नहीं हुआ",engineNotLoadedDetail:"{engine} मानचित्र इंजन लोड नहीं हुआ। सूची और लेजेंड अप्रभावित हैं।"},"./locales/hi/poster.json":{export_poster:"पोस्टर निर्यात करें",size:"आकार",orientation:"अभिविन्यास",portrait:"पोर्ट्रेट",landscape:"लैंडस्केप",dpi:"DPI",format:"प्रारूप",png_raster:"PNG (रास्टर)",pdf_raster:"PDF (वेक्टर पृष्ठ पर रास्टर)",title:"शीर्षक",map_title:"मानचित्र शीर्षक",subtitle:"उपशीर्षक",slots:"स्लॉट",scale_bar:"स्केल बार",north_arrow:"उत्तर तीर",footer_attribution:"फ़ुटर (एट्रिब्यूशन आवश्यक)",cancel:"रद्द करें",map_preview:"मानचित्र पूर्वावलोकन",loading_snapshot:"मानचित्र स्नैपशॉट लोड हो रहा है…",preview_unavailable:"पूर्वावलोकन उपलब्ध नहीं"},"./locales/hi/search.json":{placeholder:"लोग, स्थान, भाषा, धर्म",placeholderNoPlaces:"लोग, भाषा, धर्म (स्थान खोज के लिए Mapbox टोकन चाहिए)",labels:{people:"लोग:",place:"स्थान:",language:"भाषा:",religion:"धर्म:"},sections:{within:"{selection} के भीतर",allData:"सभी DOXA डेटा"},kinds:{people:"जनसमूह + देश",peopleGroup:"जनसमूह",bloc:"समानता समूह",cluster:"जनसमूह क्लस्टर",country:"देश",region:"क्षेत्र",family:"भाषा परिवार",languageKind:"भाषा",dialect:"बोली",religionKind:"धर्म"},upg100Placeholder:"जनसमूह, UPG-100 सूची या क्षेत्र खोजें…"},"./locales/hi/tabs.json":{prayer:"प्रार्थना",adoption:"गोद लेना",engagement:"सहभागिता","affinity-blocks":"जनसमूह",regions:"क्षेत्र",countries:"देश","language-families":"भाषाएँ",religion:"धर्म",family:"भाषा परिवार",language:"भाषा",dialect:"बोली/रूप",bloc:"समानता समूह",cluster:"क्लस्टर",group:"जनसमूह",pgic:"देश में जनसमूह",region:"WAGF क्षेत्र",block:"WAGF ब्लॉक",country:"देश",upg100Region:"क्षेत्र",upg100Zone:"UPG-100 सूचियाँ",upg100Group:"जनसमूह",selectView:"दृश्य चुनें",views:"दृश्य",prayerResources:"प्रार्थना संसाधन",map:"मानचित्र",countryPosters:"देश पोस्टर"},"./locales/it/grid.json":{search:"Cerca popoli…",hide_filters:"Nascondi filtri",show_filters:"Mostra filtri",total:"Totale",showing:"Mostrati",load_more:"Carica altro",full_profile:"Profilo completo",wagf_region:"Regione",wagf_block:"Blocco di affinità",rop1:"Popolo",religion:"Religione",exact_filter:"Esatto",clear_all:"Cancella tutto",loading:"Caricamento…",no_results:"Nessun popolo corrisponde a questo filtro.",type_to_search:"Digita per cercare...",load_failed:"Impossibile caricare i dati dei popoli. È un problema di connessione, non del filtro.",search_people_or_countries:"Cerca popoli o paesi…"},"./locales/it/messages.json":{menuComingSoon:"Menu in arrivo",pinHint:{tapDot:"Tocca un punto colorato — qualcuno ha ancora bisogno di preghiera"},upg100WallHeading:"La mia lista UPG 100 — Liste di preghiera e poster",upg100WallTag:"Mobilitazione alla preghiera",upg100WallIntro:"Distribuisci il compito della preghiera in gruppi di cinquanta e di cento — come Gesù sfamò i 5.000 (Luca 9:14). Ogni poster è una lista di 100 che puoi pregare, stampare e appendere al muro — pregando per loro con il nome del loro popolo.",loadingNamed:"Caricamento di {name}…",couldNotLoadNamed:"Impossibile caricare {name}.",engineMissing:"Il motore di mappa {engine} non è stato caricato.",packetFailed:"Libretto non riuscito: {reason}",selectionPacketFailed:"Libretto della selezione non riuscito: {reason}",posterOneTerritory:"Il manifesto stampa un territorio alla volta — {count} selezionati.",selectionPosterFailed:"Manifesto della selezione non riuscito: {reason}",mapUnavailable:"Mappa non disponibile",copied:"Copiato!",copyFailed:"Copia non riuscita — premi Ctrl/Cmd-C",engineNotLoaded:"motore di mappe non caricato",engineNotLoadedDetail:"Il motore di mappe {engine} non si è caricato. L’elenco e la legenda non sono interessati."},"./locales/it/poster.json":{export_poster:"Esporta poster",size:"Dimensione",orientation:"Orientamento",portrait:"Verticale",landscape:"Orizzontale",dpi:"DPI",format:"Formato",png_raster:"PNG (raster)",pdf_raster:"PDF (raster su pagina vettoriale)",title:"Titolo",map_title:"Titolo della mappa",subtitle:"Sottotitolo",slots:"Elementi",scale_bar:"Barra della scala",north_arrow:"Freccia nord",footer_attribution:"Piè di pagina (attribuzione obbligatoria)",cancel:"Annulla",map_preview:"anteprima della mappa",loading_snapshot:"Caricamento dell'istantanea della mappa…",preview_unavailable:"anteprima non disponibile"},"./locales/it/search.json":{placeholder:"Popolo, luogo, lingua, religione",placeholderNoPlaces:"Popolo, lingua, religione (la ricerca di luoghi richiede un token Mapbox)",labels:{people:"Popolo:",place:"Luogo:",language:"Lingua:",religion:"Religione:"},sections:{within:"In {selection}",allData:"Tutti i dati DOXA"},kinds:{people:"Popolo + paese",peopleGroup:"Popolo",bloc:"Blocco di affinità",cluster:"Cluster di popoli",country:"Paese",region:"Regione",family:"Famiglia linguistica",languageKind:"Lingua",dialect:"Dialetto",religionKind:"Religione"},upg100Placeholder:"Cerca popolo, elenco UPG-100 o regione…"},"./locales/it/tabs.json":{prayer:"Preghiera",adoption:"Adozione",engagement:"Impegno","affinity-blocks":"Popoli",regions:"Regioni",countries:"Paesi","language-families":"Lingue",religion:"Religioni",family:"Famiglia ling.",language:"Lingua",dialect:"Dialetto/Variante",bloc:"Blocco di affinità",cluster:"Cluster",group:"Popolo",pgic:"Popolo nel paese",region:"Regione WAGF",block:"Blocco WAGF",country:"Paese",upg100Region:"Regione",upg100Zone:"Liste UPG-100",upg100Group:"Gruppo etnico",selectView:"Seleziona vista",views:"Viste",prayerResources:"Risorse di preghiera",map:"Mappa",countryPosters:"Poster per paese"},"./locales/pt/grid.json":{search:"Pesquisar povos…",hide_filters:"Ocultar filtros",show_filters:"Mostrar filtros",total:"Total",showing:"Mostrando",load_more:"Carregar mais",full_profile:"Perfil completo",wagf_region:"Região",wagf_block:"Bloco de afinidade",rop1:"Povo",religion:"Religião",exact_filter:"Exato",clear_all:"Limpar tudo",loading:"A carregar…",no_results:"Nenhum povo corresponde a este filtro.",type_to_search:"Escreva para pesquisar...",load_failed:"Não foi possível carregar os dados dos povos. É um problema de ligação, não do seu filtro.",search_people_or_countries:"Pesquisar povos ou países…"},"./locales/pt/messages.json":{menuComingSoon:"Menu em breve",pinHint:{tapDot:"Toque num ponto colorido — alguém ainda precisa de oração"},upg100WallHeading:"A minha lista UPG 100 — Listas de oração e cartazes",upg100WallTag:"Mobilização de oração",upg100WallIntro:"Reparta a tarefa da oração em grupos de cinquenta e de cem — como Jesus alimentou os 5.000 (Lucas 9:14). Cada cartaz é uma lista de 100 que pode orar, imprimir e pôr na parede — orando por eles pelo nome do seu povo.",loadingNamed:"Carregando {name}…",couldNotLoadNamed:"Não foi possível carregar {name}.",engineMissing:"O motor de mapa {engine} não foi carregado.",packetFailed:"Falha ao gerar o caderno: {reason}",selectionPacketFailed:"Falha ao gerar o caderno da seleção: {reason}",posterOneTerritory:"O cartaz imprime um território de cada vez — {count} selecionados.",selectionPosterFailed:"Falha ao gerar o cartaz da seleção: {reason}",mapUnavailable:"Mapa indisponível",copied:"Copiado!",copyFailed:"Falha ao copiar — pressione Ctrl/Cmd-C",engineNotLoaded:"motor de mapas não carregado",engineNotLoadedDetail:"O motor de mapas {engine} não carregou. A lista e a legenda não são afetadas."},"./locales/pt/poster.json":{export_poster:"Exportar pôster",size:"Tamanho",orientation:"Orientação",portrait:"Retrato",landscape:"Paisagem",dpi:"DPI",format:"Formato",png_raster:"PNG (raster)",pdf_raster:"PDF (raster em página vetorial)",title:"Título",map_title:"Título do mapa",subtitle:"Subtítulo",slots:"Elementos",scale_bar:"Barra de escala",north_arrow:"Seta norte",footer_attribution:"Rodapé (atribuição obrigatória)",cancel:"Cancelar",map_preview:"pré-visualização do mapa",loading_snapshot:"Carregando o instantâneo do mapa…",preview_unavailable:"pré-visualização indisponível"},"./locales/pt/search.json":{placeholder:"Povo, local, língua, religião",placeholderNoPlaces:"Povo, língua, religião (a busca de locais requer um token do Mapbox)",labels:{people:"Povo:",place:"Local:",language:"Língua:",religion:"Religião:"},kinds:{people:"Povo + país",peopleGroup:"Povo",bloc:"Bloco de afinidade",cluster:"Agrupamento de povos",country:"País",region:"Região",family:"Família linguística",languageKind:"Idioma",dialect:"Dialeto",religionKind:"Religião"},sections:{within:"Dentro de {selection}",allData:"Todos os dados DOXA"},upg100Placeholder:"Procurar povo, lista UPG-100 ou região…"},"./locales/pt/tabs.json":{prayer:"Oração",adoption:"Adoção",engagement:"Engajamento","affinity-blocks":"Povos",regions:"Regiões",countries:"Países","language-families":"Idiomas",religion:"Religiões",family:"Família linguística",language:"Idioma",dialect:"Dialeto/Variedade",bloc:"Bloco de afinidade",cluster:"Agrupamento",group:"Povo",pgic:"Povo no país",region:"Região WAGF",block:"Bloco WAGF",country:"País",upg100Region:"Região",upg100Zone:"Listas UPG-100",upg100Group:"Grupo étnico",selectView:"Selecionar vista",views:"Vistas",prayerResources:"Recursos de oração",map:"Mapa",countryPosters:"Cartazes por país"},"./locales/ro/grid.json":{search:"Caută popoare…",hide_filters:"Ascunde filtrele",show_filters:"Arată filtrele",total:"Total",showing:"Se afișează",load_more:"Încarcă mai mult",full_profile:"Profil complet",wagf_region:"Regiune",wagf_block:"Bloc de afinitate",rop1:"Popor",religion:"Religie",exact_filter:"Exact",clear_all:"Șterge tot",loading:"Se încarcă…",no_results:"Niciun popor nu corespunde acestui filtru.",type_to_search:"Scrie pentru a căuta...",load_failed:"Datele despre popoare nu au putut fi încărcate. Este o problemă de conexiune, nu a filtrului.",search_people_or_countries:"Caută popoare sau țări…"},"./locales/ro/messages.json":{menuComingSoon:"Meniu în curând",pinHint:{tapDot:"Atinge un punct colorat — cineva are încă nevoie de rugăciune"},upg100WallHeading:"Lista mea UPG 100 — Liste de rugăciune și afișe",upg100WallTag:"Mobilizare pentru rugăciune",upg100WallIntro:"Împarte sarcina rugăciunii în grupuri de câte cincizeci și o sută — așa cum Isus a hrănit cei 5.000 (Luca 9:14). Fiecare afiș este o listă de 100 pe care o poți ruga, tipări și pune pe perete — rugându-te pentru ei pe numele poporului lor.",loadingNamed:"Se încarcă {name}…",couldNotLoadNamed:"Nu s-a putut încărca {name}.",engineMissing:"Motorul de hartă {engine} nu s-a încărcat.",packetFailed:"Broșura a eșuat: {reason}",selectionPacketFailed:"Broșura selecției a eșuat: {reason}",posterOneTerritory:"Afișul tipărește un teritoriu pe rând — {count} selectate.",selectionPosterFailed:"Afișul selecției a eșuat: {reason}",mapUnavailable:"Harta indisponibilă",copied:"Copiat!",copyFailed:"Copierea a eșuat — apasă Ctrl/Cmd-C",engineNotLoaded:"motorul de hărți nu s-a încărcat",engineNotLoadedDetail:"Motorul de hărți {engine} nu s-a încărcat. Lista și legenda nu sunt afectate."},"./locales/ro/poster.json":{export_poster:"Exportă posterul",size:"Dimensiune",orientation:"Orientare",portrait:"Portret",landscape:"Peisaj",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster pe pagină vectorială)",title:"Titlu",map_title:"Titlul hărții",subtitle:"Subtitlu",slots:"Elemente",scale_bar:"Bară de scară",north_arrow:"Săgeata nord",footer_attribution:"Subsol (atribuire obligatorie)",cancel:"Anulează",map_preview:"previzualizare hartă",loading_snapshot:"Se încarcă instantaneul hărții…",preview_unavailable:"previzualizare indisponibilă"},"./locales/ro/search.json":{placeholder:"Popor, loc, limbă, religie",placeholderNoPlaces:"Popor, limbă, religie (căutarea locurilor necesită un token Mapbox)",labels:{people:"Popor:",place:"Loc:",language:"Limbă:",religion:"Religie:"},sections:{within:"În {selection}",allData:"Toate datele DOXA"},kinds:{people:"Popor + țară",peopleGroup:"Popor",bloc:"Bloc de afinitate",cluster:"Grup de popoare",country:"Țară",region:"Regiune",family:"Familie de limbi",languageKind:"Limbă",dialect:"Dialect",religionKind:"Religie"},upg100Placeholder:"Caută popor, listă UPG-100 sau regiune…"},"./locales/ro/tabs.json":{prayer:"Rugăciune",adoption:"Adopție",engagement:"Implicare","affinity-blocks":"Popoare",regions:"Regiuni",countries:"Țări","language-families":"Limbi",religion:"Religii",family:"Familie de limbi",language:"Limbă",dialect:"Dialect/Variantă",bloc:"Bloc de afinitate",cluster:"Grup",group:"Popor",pgic:"Popor în țară",region:"Regiune WAGF",block:"Bloc WAGF",country:"Țară",upg100Region:"Regiune",upg100Zone:"Liste UPG-100",upg100Group:"Grup etnic",selectView:"Alege vizualizarea",views:"Vizualizări",prayerResources:"Resurse de rugăciune",map:"Hartă",countryPosters:"Afișe pe țări"},"./locales/ru/grid.json":{search:"Поиск народов…",hide_filters:"Скрыть фильтры",show_filters:"Показать фильтры",total:"Всего",showing:"Показано",load_more:"Показать ещё",full_profile:"Полный профиль",wagf_region:"Регион",wagf_block:"Блок родства",rop1:"Народ",religion:"Религия",exact_filter:"Точное совпадение",clear_all:"Очистить всё",loading:"Загрузка…",no_results:"Нет народов, соответствующих этому фильтру.",type_to_search:"Введите для поиска...",load_failed:"Не удалось загрузить данные о народах. Это проблема соединения, а не фильтра.",search_people_or_countries:"Поиск народов или стран…"},"./locales/ru/messages.json":{menuComingSoon:"Меню скоро появится",pinHint:{tapDot:"Нажмите на цветную точку — кому-то всё ещё нужна молитва"},upg100WallHeading:"Мой список UPG 100 — молитвенные списки и плакаты",upg100WallTag:"Молитвенная мобилизация",upg100WallIntro:"Разделите молитвенный труд на группы по пятьдесят и по сто — так Иисус накормил 5000 (Луки 9:14). Каждый плакат — это список из 100, о котором можно молиться, распечатать и повесить на стену, молясь о них по имени их народа.",loadingNamed:"Загрузка {name}…",couldNotLoadNamed:"Не удалось загрузить {name}.",engineMissing:"Картографический движок {engine} не загрузился.",packetFailed:"Не удалось создать буклет: {reason}",selectionPacketFailed:"Не удалось создать буклет выбора: {reason}",posterOneTerritory:"Плакат печатает по одной территории — выбрано {count}.",selectionPosterFailed:"Не удалось создать плакат выбора: {reason}",mapUnavailable:"Карта недоступна",copied:"Скопировано!",copyFailed:"Не удалось скопировать — нажмите Ctrl/Cmd-C",engineNotLoaded:"движок карты не загружен",engineNotLoadedDetail:"Движок карты {engine} не загрузился. Список и легенда не затронуты."},"./locales/ru/poster.json":{export_poster:"Экспорт плаката",size:"Размер",orientation:"Ориентация",portrait:"Портретная",landscape:"Альбомная",dpi:"DPI",format:"Формат",png_raster:"PNG (растр)",pdf_raster:"PDF (растр на векторной странице)",title:"Заголовок",map_title:"Заголовок карты",subtitle:"Подзаголовок",slots:"Элементы",scale_bar:"Масштабная линейка",north_arrow:"Указатель севера",footer_attribution:"Нижний колонтитул (указание источника обязательно)",cancel:"Отмена",map_preview:"предпросмотр карты",loading_snapshot:"Загрузка снимка карты…",preview_unavailable:"предпросмотр недоступен"},"./locales/ru/search.json":{placeholder:"Народ, место, язык, религия",placeholderNoPlaces:"Народ, язык, религия (для поиска мест нужен токен Mapbox)",labels:{people:"Народ:",place:"Место:",language:"Язык:",religion:"Религия:"},kinds:{people:"Народ + страна",peopleGroup:"Народ",bloc:"Блок родства",cluster:"Кластер народов",country:"Страна",region:"Регион",family:"Языковая семья",languageKind:"Язык",dialect:"Диалект",religionKind:"Религия"},sections:{within:"В пределах {selection}",allData:"Все данные DOXA"},upg100Placeholder:"Поиск народа, списка UPG-100 или региона…"},"./locales/ru/tabs.json":{prayer:"Молитва",adoption:"Усыновление",engagement:"Вовлечённость","affinity-blocks":"Народы",regions:"Регионы",countries:"Страны","language-families":"Языки",religion:"Религии",family:"Языковая семья",language:"Язык",dialect:"Диалект/вариант",bloc:"Блок родства",cluster:"Кластер",group:"Народ",pgic:"Народ в стране",region:"Регион WAGF",block:"Блок WAGF",country:"Страна",upg100Region:"Регион",upg100Zone:"Списки UPG-100",upg100Group:"Народ",selectView:"Выбрать вид",views:"Виды",prayerResources:"Молитвенные ресурсы",map:"Карта",countryPosters:"Плакаты по странам"},"./locales/zh/grid.json":{search:"搜索民族…",hide_filters:"隐藏筛选",show_filters:"显示筛选",total:"总计",showing:"显示",load_more:"加载更多",full_profile:"完整档案",wagf_region:"区域",wagf_block:"亲缘板块",rop1:"民族",religion:"宗教",exact_filter:"精确",clear_all:"全部清除",loading:"加载中…",no_results:"没有符合此筛选条件的民族。",type_to_search:"输入以搜索...",load_failed:"无法加载民族数据。这是连接问题,而不是筛选问题。",search_people_or_countries:"搜索民族或国家…"},"./locales/zh/messages.json":{menuComingSoon:"菜单即将推出",pinHint:{tapDot:"点按一个彩色圆点——仍有人需要祷告"},upg100WallHeading:"我的 UPG 100 名單 — 禱告名單與海報",upg100WallTag:"禱告動員",upg100WallIntro:"將禱告的工作分成五十人、一百人一組 — 就像耶穌餵飽五千人那樣(路加福音 9:14)。每一張海報都是一份 100 人名單,你可以為他們禱告、列印出來、貼在牆上 — 按著他們族群的名字為他們禱告。",loadingNamed:"正在加载{name}…",couldNotLoadNamed:"无法加载{name}。",engineMissing:"{engine} 地图引擎未能加载。",packetFailed:"祷告册生成失败:{reason}",selectionPacketFailed:"所选内容的祷告册生成失败:{reason}",posterOneTerritory:"海报一次只能打印一个区域——已选 {count} 个。",selectionPosterFailed:"所选内容的海报生成失败:{reason}",mapUnavailable:"地图不可用",copied:"已复制!",copyFailed:"复制失败——请按 Ctrl/Cmd-C",engineNotLoaded:"地图引擎未加载",engineNotLoadedDetail:"{engine} 地图引擎未能加载。列表和图例不受影响。"},"./locales/zh/poster.json":{export_poster:"导出海报",size:"尺寸",orientation:"方向",portrait:"纵向",landscape:"横向",dpi:"DPI",format:"格式",png_raster:"PNG(位图)",pdf_raster:"PDF(矢量页面上的位图)",title:"标题",map_title:"地图标题",subtitle:"副标题",slots:"元素",scale_bar:"比例尺",north_arrow:"指北针",footer_attribution:"页脚(必须署名)",cancel:"取消",map_preview:"地图预览",loading_snapshot:"正在加载地图快照…",preview_unavailable:"预览不可用"},"./locales/zh/search.json":{placeholder:"民族、地点、语言、宗教",placeholderNoPlaces:"民族、语言、宗教(地点搜索需要 Mapbox 令牌)",labels:{people:"民族:",place:"地点:",language:"语言:",religion:"宗教:"},sections:{within:"在 {selection} 之內",allData:"所有 DOXA 資料"},kinds:{people:"民族 + 国家",peopleGroup:"民族",bloc:"亲缘板块",cluster:"民族群",country:"国家",region:"区域",family:"语系",languageKind:"语言",dialect:"方言",religionKind:"宗教"},upg100Placeholder:"搜索民族、UPG-100 名单或区域…"},"./locales/zh/tabs.json":{prayer:"祷告",adoption:"认领",engagement:"参与","affinity-blocks":"民族",regions:"区域",countries:"国家","language-families":"语言",religion:"宗教",family:"语系",language:"语言",dialect:"方言/变体",bloc:"亲缘板块",cluster:"民族群",group:"民族",pgic:"国内民族",region:"WAGF 区域",block:"WAGF 板块",country:"国家",upg100Region:"区域",upg100Zone:"UPG-100 名单",upg100Group:"族群",selectView:"選擇檢視",views:"檢視",prayerResources:"禱告資源",map:"地圖",countryPosters:"国家海报"}}),It={};for(const[e,t]of Object.entries(rl)){const o=e.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!o)continue;const[,s,n]=o;It[s]??(It[s]={}),It[s][n]=t}const vi=["ar","de","en","es","fr","hi","it","pt","ro","ru","zh"];function ll(){try{const e=new URLSearchParams(window.location.search);return(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase()}catch{return""}}function cl(){var s;const e=ll();if(vi.includes(e))return e;const o=(((s=document==null?void 0:document.documentElement)==null?void 0:s.lang)||"").split("-")[0].toLowerCase();return vi.includes(o)?o:"en"}const pl="__DOXA_PAGE_LOCALE";function dl(){try{return typeof window<"u"&&window[pl]||""}catch{return""}}function ul(e,t){const o=n=>{let i=It[n];for(const a of String(e).split(".")){if(!i||typeof i!="object")return;i=i[a]}return typeof i=="string"?i:void 0},s=dl()||cl();return o(s)??o("en")}function fl(e,t){const o=Qn(),s=t;yn(()=>{var l;if(!o)return;const n=(l=o.proxy)==null?void 0:l.$el;if(!n)return;const i=n.getRootNode();if(!(i instanceof ShadowRoot))return;const a=i.querySelector(`style[data-shadow-styles="${s}"]`);if(a){a.textContent!==e&&(a.textContent=e);return}const r=document.createElement("style");r.setAttribute("data-shadow-styles",s),r.textContent=e,i.appendChild(r)})}const yi={menu:'',map:'',globe:'',heart:'',prayer:'',list:'',users:'',flag:'',target:'',pin:'',monitor:'',chart:'',folder:'',layers:'',flask:'',share:'',beaker:'',chevron:'',grid:'',tree:'',dots:'',embed:'',send:'',poster:'',search:'',book:'',wifi:''};function gl(e,t=""){const o=yi[e]||yi.map;return``}const hl=".vtl{position:absolute;top:0;right:0;bottom:0;left:0;display:grid!important;grid-template-rows:auto 1fr;height:100%;width:100%;min-height:420px;background:#f3f3f1;color:#3b463d;font-family:Public Sans,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;--vtl-accent:#92b195;--vtl-border:#d1d4cd;--vtl-elevated:#ffffff;--vtl-accented:#d1d4cd;--vtl-muted:#6d766e;--vtl-rail:256px}.vtl.no-header{grid-template-rows:1fr}.vtl-top{flex:0 0 auto;display:flex;align-items:center;gap:10px;box-sizing:border-box;min-height:64px;padding:8px 16px;border-bottom:1px solid var(--vtl-border);background:#fff}.vtl-menu{display:none;font:16px/1 system-ui;color:#3b463d;background:#d1d4cd;border:1px solid #d1d4cd;border-radius:8px;padding:5px 10px;cursor:pointer}.vtl-fab{position:absolute;z-index:15;left:calc(12px + env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom));width:44px;height:44px;display:flex;align-items:center;justify-content:center;font:18px/1 system-ui;color:#3b463d;background:#fff;border:1px solid var(--vtl-border);border-radius:50%;box-shadow:0 2px 10px #0000002e;cursor:pointer}.vtl-fab:hover{background:#d1d4cd}.vtl-fab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:2px}.vtl-menu:hover{background:#d1d4cd}.vtl-brand{display:inline-flex;align-items:center}.vtl-brand:empty{display:none}.vtl-title{font-size:15px;font-weight:600;letter-spacing:-.01em;color:#3b463d}.vtl-meta{color:var(--vtl-muted);font-size:12px;margin-left:auto;display:inline-flex;align-items:center;gap:8px}.vtl-body{min-height:0;position:relative;display:flex}.vtl-nav{position:absolute;top:0;bottom:0;left:0;z-index:5;width:256px;box-sizing:border-box;overflow-y:auto;overflow-x:hidden;border-right:1px solid var(--vtl-border);padding:12px 12px 20px;background:#fff;scrollbar-width:thin;scrollbar-color:#c4c8c0 transparent;contain:layout paint;transform:translate(0);transition:transform .2s cubic-bezier(.4,0,.2,1);will-change:transform}.vtl-nav::-webkit-scrollbar{width:8px;height:8px}.vtl-nav::-webkit-scrollbar-track{background:transparent}.vtl-nav::-webkit-scrollbar-thumb{background:#c4c8c0;border-radius:8px}.vtl-nav::-webkit-scrollbar-thumb:hover{background:#9aa197}.vtl-collapse{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;margin:0 0 8px;padding:7px 10px;border:1px solid var(--vtl-border);border-radius:8px;background:#d1d4cd;color:var(--vtl-muted);font:inherit;font-size:12px;cursor:pointer}.vtl-collapse:hover{background:var(--vtl-accented);color:#3b463d}.vtl-collapse:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-collapse-ic{flex:0 0 auto;display:inline-flex;transition:transform .16s ease;transform:rotate(180deg)}.vtl-collapse-ic svg{width:16px;height:16px}.vtl-collapse-tx{white-space:nowrap}.vtl-grp{margin-bottom:2px}.vtl-grp+.vtl-grp{margin-top:8px;padding-top:8px;border-top:1px solid var(--vtl-border)}.vtl-tier{width:100%;padding:8px 8px 6px;display:flex;align-items:center;gap:8px;box-sizing:border-box}.vtl-tier-btn{border:0;background:none;color:inherit;font:inherit;cursor:pointer;text-align:left;border-radius:8px}.vtl-tier-btn:hover{background:var(--vtl-accented)}.vtl-tier-btn:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tier-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tier-ic svg{width:15px;height:15px}.vtl-cap{font:700 10px/1 system-ui;letter-spacing:.4px;color:#052e16;background:var(--vtl-accent);border-radius:999px;padding:3px 7px}.vtl-tl{font-weight:600;font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--vtl-muted)}.vtl-td{color:#6b6b6b;font-size:11px;margin-left:auto}.vtl-chev{margin-left:auto;display:inline-flex;color:var(--vtl-muted);transition:transform .16s ease}.vtl-chev svg{width:15px;height:15px}.vtl-chev.open{transform:rotate(90deg)}.vtl-rows{display:flex;flex-direction:column;gap:1px}.vtl-tab{display:flex;align-items:center;gap:11px;width:100%;min-height:48px;text-align:left;border:0;background:none;color:var(--vtl-muted);padding:8px 12px;cursor:pointer;border-radius:var(--vtl-radius,8px);font:inherit;margin:0;transition:background .13s ease,color .13s ease}.vtl-tab:hover{background:var(--vtl-accented);color:#3b463d}.vtl-tab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tab.active{background:var(--vtl-accented);color:#3b463d;font-weight:500}.vtl-tab.active .vtl-tab-ic{color:var(--vtl-accent)}.vtl-tab-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tab-ic svg{width:20px;height:20px}.vtl-tab-emoji{font-size:17px;line-height:1;flex:0 0 auto}.vtl-tab-fallback{display:none;flex:0 0 auto;width:20px;height:20px;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--vtl-muted);background:var(--vtl-accented);border-radius:6px}.vtl-tab.active .vtl-tab-fallback{color:var(--vtl-accent)}.vtl-tab-text{display:flex;flex-direction:column;min-width:0}.vtl-tab-label{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px}.vtl-tab-badge{font:600 9px/1 system-ui;letter-spacing:.3px;text-transform:uppercase;color:var(--vtl-accent);border:1px solid var(--vtl-accent);border-radius:var(--vtl-radius,8px);padding:2px 5px}.vtl-tab-sub{font-size:11px;color:#6b6b6b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vtl-tab-sub code{font-family:ui-monospace,Menlo,monospace}.vtl-tab.active .vtl-tab-sub{color:var(--vtl-muted)}.vtl-main{position:absolute;top:0;bottom:0;right:0;left:256px;min-width:0;display:flex;flex-direction:column}.vtl-content{flex:1 1 auto;position:relative;min-height:0}.vtl-host{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;--profile-min-h:0}.vtl-host-slot{position:relative;min-height:100%}.vtl-host-slot>*{min-height:0;max-height:none}.vtl-host-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:var(--dx-muted, #6d766e);font-size:13px;padding:20px}.vtl-host-hint.err{color:#f87171}.vtl-host-hint small{color:var(--dx-muted, #6d766e)}.vtl.rail-collapsed .vtl-nav{transform:translate(-184px)}.vtl.rail-collapsed .vtl-main{left:72px}.vtl.rail-collapsed .vtl-collapse{padding-left:184px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(0)}.vtl.rail-collapsed .vtl-collapse-tx{display:none}.vtl.rail-collapsed .vtl-tab{padding-left:188px;gap:0}.vtl.rail-collapsed .vtl-tab-text{display:none}.vtl.rail-collapsed .vtl-tab-emoji{font-size:19px}.vtl.rail-collapsed .vtl-tab-fallback{display:inline-flex}.vtl.rail-collapsed .vtl-tier{padding-left:196px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:none}.vtl.rail-collapsed .vtl-grp+.vtl-grp{margin-top:6px;padding-top:6px}@media (max-width: 760px){.vtl-top{min-height:56px}.vtl-menu{display:inline-block}.vtl-meta{display:none}.vtl-nav{z-index:20;width:256px;box-shadow:0 0 28px #0000008c;transform:translate(-100%)}.vtl.nav-open .vtl-nav{transform:translate(0);z-index:1000}.vtl-main{left:0}.vtl.rail-collapsed .vtl-nav{transform:translate(-100%)}.vtl.rail-collapsed.nav-open .vtl-nav{transform:translate(0)}.vtl.rail-collapsed .vtl-main{left:0}.vtl.rail-collapsed .vtl-collapse{padding-left:10px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(180deg)}.vtl.rail-collapsed .vtl-collapse-tx{display:inline}.vtl.rail-collapsed .vtl-tab{padding-left:10px;gap:11px}.vtl.rail-collapsed .vtl-tab-text{display:flex}.vtl.rail-collapsed .vtl-tab-fallback{display:none}.vtl.rail-collapsed .vtl-tier{padding-left:8px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:inline}}.vtl:dir(rtl) .vtl-nav{left:auto;right:0;border-right:0;border-left:1px solid var(--vtl-border)}.vtl:dir(rtl) .vtl-main{left:0;right:256px}.vtl:dir(rtl) .vtl-tab,.vtl:dir(rtl) .vtl-tier-btn{text-align:right}.vtl:dir(rtl) .vtl-meta,.vtl:dir(rtl) .vtl-td,.vtl:dir(rtl) .vtl-chev{margin-left:0;margin-right:auto}.vtl:dir(rtl) .vtl-chev:not(.open){transform:scaleX(-1)}.vtl:dir(rtl) .vtl-collapse-ic svg{transform:scaleX(-1)}.vtl:dir(rtl) .vtl-fab{left:auto;right:calc(12px + env(safe-area-inset-right))}.vtl.rail-collapsed:dir(rtl) .vtl-nav{transform:translate(184px)}.vtl.rail-collapsed:dir(rtl) .vtl-main{left:0;right:72px}.vtl.rail-collapsed:dir(rtl) .vtl-collapse{padding-left:10px;padding-right:184px}.vtl.rail-collapsed:dir(rtl) .vtl-tab{padding-left:12px;padding-right:188px}.vtl.rail-collapsed:dir(rtl) .vtl-tier{padding-left:8px;padding-right:196px}@media (max-width: 760px){.vtl:dir(rtl) .vtl-nav{transform:translate(100%)}.vtl.nav-open:dir(rtl) .vtl-nav{transform:translate(0)}.vtl:dir(rtl) .vtl-main,.vtl.rail-collapsed:dir(rtl) .vtl-main{left:0;right:0}.vtl.rail-collapsed:dir(rtl) .vtl-nav{transform:translate(100%)}.vtl.rail-collapsed.nav-open:dir(rtl) .vtl-nav{transform:translate(0)}.vtl.rail-collapsed:dir(rtl) .vtl-collapse{padding-left:10px;padding-right:10px}.vtl.rail-collapsed:dir(rtl) .vtl-tab{padding-left:12px;padding-right:10px}.vtl.rail-collapsed:dir(rtl) .vtl-tier{padding-left:8px;padding-right:8px}}",xi=(e,t)=>{const o=e.__vccOpts||e;for(const[s,n]of t)o[s]=n;return o},bl=(e,t)=>ul(e)||t,Dt={};function ml(e){return e?(Dt[e]||(Dt[e]=new Promise((t,o)=>{const s=document.createElement("script");s.src=e,s.onload=()=>t(),s.onerror=()=>{delete Dt[e],o(new Error("failed to load "+e))},document.head.appendChild(s)})),Dt[e]):Promise.resolve()}function _l(e,t=5e3){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():customElements.whenDefined?Promise.race([customElements.whenDefined(e),new Promise((o,s)=>setTimeout(()=>s(new Error("timeout waiting for <"+e+">")),t))]):Promise.resolve()}const $l=` /* STRUCTURAL DISPLAY — the !important is deliberate, not a hack. This layout's display mode is load-bearing: it CANNOT function as a block. As a library/ (high-bar) component it ships across all 5 deployment methods, and a host (app-shell direct-mount, WordPress, mobile webview) may force @@ -273,4 +273,4 @@ .vtl.rail-collapsed:dir(rtl) .vtl-tab { padding-left:12px; padding-right:10px; } .vtl.rail-collapsed:dir(rtl) .vtl-tier { padding-left:8px; padding-right:8px; } } -`,vl=ss({name:"VerticalTabsLayout",props:{active:{type:String,default:""},title:{type:String,default:""},items:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},navLabel:{type:String,default:"Sections"},labels:{type:Object,default:()=>({})},initialNavOpen:{type:Boolean,default:!0},header:{type:Boolean,default:!0},initialRailCollapsed:{type:Boolean,default:!1}},emits:["update:active"],setup(){return fl($l,"vertical-tabs-layout"),{T:bl}},data(){return{navOpen:this.initialNavOpen,railCollapsed:this.initialRailCollapsed,_tabEls:{},folderOverride:{},narrow:!1,_mql:null,_onMedia:null,activatedKeys:{},hostState:{},hostError:{},_hostSlots:{},_hostMounted:{}}},computed:{railShown(){return this.narrow?this.navOpen:!0},allRows(){if(this.groups&&this.groups.length){const e=[];for(const t of this.groups)for(const o of t.rows||[])e.push(o);return e}return this.items},orderedKeys(){return this.allRows.map(e=>e.key)},elementRows(){return this.allRows.filter(e=>e&&e.element)},mountedElementRows(){return this.elementRows.filter(e=>this.activatedKeys[e.key])}},watch:{active:{immediate:!0,handler(e){this.activateElement(e)}}},mounted(){try{window.matchMedia&&(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this.reconcileForWidth(),this._onMedia=e=>{this.narrow=e.matches,this.reconcileForWidth()},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))}catch{}this.$nextTick(()=>this.activateElement(this.active))},beforeUnmount(){try{this._mql&&this._onMedia&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia))}catch{}this._mql=null,this._onMedia=null},methods:{registerTab(e,t){t&&(this._tabEls[e]=t)},isNarrow(){return this.narrow},reconcileForWidth(){this.narrow?(this.navOpen=!1,this.railCollapsed=!1):this.navOpen=!0},label(e){const t={toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse"};return this.labels&&this.labels[e]||t[e]},expandRail(){!this.narrow&&this.railCollapsed&&(this.railCollapsed=!1)},toggleRail(){this.narrow?this.navOpen=!this.navOpen:this.railCollapsed=!this.railCollapsed},setHostSlot(e,t){t&&(this._hostSlots[e]=t,this.$nextTick(()=>this.mountHostElement(e)))},activateElement(e){!e||!this.elementRows.find(o=>o.key===e)||(this.activatedKeys[e]||(this.activatedKeys={...this.activatedKeys,[e]:!0},this.hostState={...this.hostState,[e]:"loading"}),this.$nextTick(()=>this.mountHostElement(e)))},mountHostElement(e){if(this._hostMounted[e])return;const t=this.elementRows.find(s=>s.key===e),o=this._hostSlots[e];!t||!o||(this._hostMounted[e]=!0,this.hostState={...this.hostState,[e]:"loading"},ml(t.src).then(()=>_l(t.element)).then(()=>{o.innerHTML="";const s=document.createElement(t.element),n=t.attrs||{};for(const i in n){const a=n[i],r=a!=null&&typeof a=="object"?JSON.stringify(a):String(a);try{s[i]=a}catch{}try{s.setAttribute(i,r)}catch{}}s.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",o.appendChild(s),this.hostState={...this.hostState,[e]:"ready"}}).catch(s=>{this._hostMounted[e]=!1,this.hostState={...this.hostState,[e]:"error"},this.hostError={...this.hostError,[e]:s&&s.message||String(s)}}))},iconSvg(e){return e?gl(e):""},initial(e){const t=(e||"").trim();return t?t.charAt(0).toUpperCase():"•"},isFolderClosed(e){const t=this.folderOverride[e.key];return t!=null?!t:e.open!==!0},toggleFolder(e){const t=this.folderOverride[e],o=(this.groups||[]).find(n=>n.key===e),s=t??(o&&o.open===!0);this.folderOverride={...this.folderOverride,[e]:!s}},pick(e){this.$emit("update:active",e),this.narrow&&(this.navOpen=!1)},onKey(e){const t=this.orderedKeys;if(!t.length)return;const o=t.indexOf(this.active);let s=-1;if(e.key==="ArrowDown"||e.key==="ArrowRight")s=(o+1)%t.length;else if(e.key==="ArrowUp"||e.key==="ArrowLeft")s=(o-1+t.length)%t.length;else if(e.key==="Home")s=0;else if(e.key==="End")s=t.length-1;else return;e.preventDefault();const n=t[s];this.pick(n),this.$nextTick(()=>{const i=this._tabEls[n];i&&i.focus&&i.focus()})}}}),yl={key:0,class:"vtl-top"},xl=["aria-expanded","aria-label"],wl={class:"vtl-brand"},Pl={class:"vtl-title"},kl={class:"vtl-meta"},Ll=["aria-expanded","aria-label"],Sl={class:"vtl-body"},Cl=["aria-label","aria-hidden","role","aria-orientation"],Tl=["aria-expanded","aria-label"],Nl=["innerHTML"],Rl={class:"vtl-collapse-tx"},El=["aria-expanded","onClick"],Al={key:0,class:"vtl-cap"},Ol={class:"vtl-tl"},Fl={key:1,class:"vtl-td"},Ml=["innerHTML"],Dl={key:1,class:"vtl-tier"},Il={key:0,class:"vtl-cap"},Hl={class:"vtl-tl"},jl={key:1,class:"vtl-td"},Gl={class:"vtl-rows"},Wl=["aria-selected","tabindex","onClick"],Ul=["innerHTML"],Vl={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},zl={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},Bl={class:"vtl-tab-text"},Kl={class:"vtl-tab-label"},ql={key:0,class:"vtl-tab-badge"},Zl={key:0,class:"vtl-tab-sub"},Xl=["innerHTML"],Jl=["aria-selected","tabindex","onClick"],Yl=["innerHTML"],Ql={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},ec={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},tc={class:"vtl-tab-text"},oc={class:"vtl-tab-label"},sc={key:0,class:"vtl-tab-sub"},nc={class:"vtl-main"},ic={class:"vtl-content"},ac=["hidden"],rc={key:0,class:"vtl-host-hint"},lc={key:1,class:"vtl-host-hint err"};function cc(e,t,o,s,n,i){return A(),O("div",{class:Be(["vtl",{"nav-open":e.navOpen,"rail-collapsed":e.railCollapsed,"no-header":!e.header}])},[e.header?(A(),O("header",yl,[T("button",{class:"vtl-menu",type:"button","aria-expanded":String(e.navOpen),onClick:t[0]||(t[0]=a=>e.navOpen=!e.navOpen),"aria-label":e.label("toggleList")},"☰",8,xl),T("span",wl,[St(e.$slots,"brand")]),T("b",Pl,F(e.title),1),T("span",kl,[St(e.$slots,"meta")])])):de("",!0),e.narrow&&!e.header&&!e.navOpen?(A(),O("button",{key:1,class:"vtl-fab",type:"button","aria-expanded":String(e.navOpen),onClick:t[1]||(t[1]=a=>e.navOpen=!0),"aria-label":e.label("openViews")},"☰",8,Ll)):de("",!0),T("div",Sl,[T("nav",{class:"vtl-nav","aria-label":e.navLabel,"aria-hidden":String(!e.railShown),role:e.$slots.rail?null:"tablist","aria-orientation":e.$slots.rail?null:"vertical"},[T("button",{type:"button",class:"vtl-collapse","aria-expanded":String(!e.railCollapsed),"aria-label":e.railCollapsed?e.label("expandList"):e.label("collapseList"),onClick:t[2]||(t[2]=(...a)=>e.toggleRail&&e.toggleRail(...a))},[T("span",{class:"vtl-collapse-ic","aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,8,Nl),T("span",Rl,F(e.label("collapse")),1)],8,Tl),e.$slots.rail?St(e.$slots,"rail",{collapsed:e.railCollapsed&&!e.narrow,expand:e.expandRail,pick:e.pick},void 0,void 0,0):e.groups&&e.groups.length?(A(!0),O(ee,{key:1},dt(e.groups,a=>(A(),O("div",{class:"vtl-grp",key:a.key},[a.folder?(A(),O("button",{key:0,type:"button",class:"vtl-tier vtl-tier-btn","aria-expanded":String(!e.isFolderClosed(a)),onClick:r=>e.toggleFolder(a.key)},[a.badge?(A(),O("span",Al,F(a.badge),1)):de("",!0),T("span",Ol,F(a.label),1),a.count!=null?(A(),O("span",Fl,F(a.count),1)):de("",!0),T("span",{class:Be(["vtl-chev",{open:!e.isFolderClosed(a)}]),"aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,10,Ml)],8,El)):(A(),O("div",Dl,[a.badge?(A(),O("span",Il,F(a.badge),1)):de("",!0),T("span",Hl,F(a.label),1),a.count!=null?(A(),O("span",jl,F(a.count),1)):de("",!0)])),Qo(T("div",Gl,[(A(!0),O(ee,null,dt(a.rows,r=>(A(),O("button",{key:r.key,type:"button",role:"tab",class:Be(["vtl-tab",{active:r.key===e.active}]),"aria-selected":String(r.key===e.active),tabindex:r.key===e.active?0:-1,ref_for:!0,ref:l=>e.registerTab(r.key,l),onClick:l=>e.pick(r.key),onKeydown:t[3]||(t[3]=l=>e.onKey(l))},[r.icon?(A(),O("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(r.icon)},null,8,Ul)):r.emoji?(A(),O("span",Vl,F(r.emoji),1)):(A(),O("span",zl,F(e.initial(r.label)),1)),T("span",Bl,[T("span",Kl,[gt(F(r.label),1),r.badge?(A(),O("span",ql,F(r.badge),1)):de("",!0)]),r.sub?(A(),O("span",Zl,[T("span",{innerHTML:r.sub},null,8,Xl)])):de("",!0)])],42,Wl))),128))],512),[[ms,!a.folder||!e.isFolderClosed(a)]])]))),128)):(A(!0),O(ee,{key:2},dt(e.items,a=>(A(),O("button",{key:a.key,type:"button",role:"tab",class:Be(["vtl-tab",{active:a.key===e.active}]),"aria-selected":String(a.key===e.active),tabindex:a.key===e.active?0:-1,ref_for:!0,ref:r=>e.registerTab(a.key,r),onClick:r=>e.pick(a.key),onKeydown:t[4]||(t[4]=r=>e.onKey(r))},[a.icon?(A(),O("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(a.icon)},null,8,Yl)):a.emoji?(A(),O("span",Ql,F(a.emoji),1)):(A(),O("span",ec,F(e.initial(a.label)),1)),T("span",tc,[T("span",oc,F(a.label),1),a.sub?(A(),O("span",sc,F(a.sub),1)):de("",!0)])],42,Jl))),128))],8,Cl),T("main",nc,[e.header?St(e.$slots,"toolbar",{},void 0,void 0,0):de("",!0),T("div",ic,[(A(!0),O(ee,null,dt(e.mountedElementRows,a=>Qo((A(),O("section",{key:a.key,class:"vtl-host",hidden:a.key!==e.active},[T("div",{class:"vtl-host-slot",ref_for:!0,ref:r=>e.setHostSlot(a.key,r)},null,512),e.hostState[a.key]==="loading"?(A(),O("div",rc,F(e.T("messages.loadingNamed","Loading {name}…").replace("{name}",a.label)),1)):e.hostState[a.key]==="error"?(A(),O("div",lc,[gt(F(e.T("messages.couldNotLoadNamed","Could not load {name}.").replace("{name}",a.label)),1),t[5]||(t[5]=T("br",null,null,-1)),T("small",null,F(e.hostError[a.key]),1)])):de("",!0)],8,ac)),[[ms,a.key===e.active]])),128)),St(e.$slots,"default")])])])],2)}const pc=xi(vl,[["render",cc],["styles",[hl]]]),ys=[{code:"en",name:"English",nativeName:"English",flag:"🇺🇸"},{code:"es",name:"Spanish",nativeName:"Español",flag:"🇪🇸"},{code:"fr",name:"French",nativeName:"Français",flag:"🇫🇷"},{code:"pt",name:"Portuguese",nativeName:"Português",flag:"🇵🇹"},{code:"ar",name:"Arabic",nativeName:"العربية",flag:"🇸🇦",dir:"rtl"},{code:"ru",name:"Russian",nativeName:"Русский",flag:"🇷🇺"},{code:"de",name:"German",nativeName:"Deutsch",flag:"🇩🇪",hideFromSwitcher:!0},{code:"hi",name:"Hindi",nativeName:"हिन्दी",flag:"🇮🇳",hideFromSwitcher:!0},{code:"it",name:"Italian",nativeName:"Italiano",flag:"🇮🇹",hideFromSwitcher:!0},{code:"ro",name:"Romanian",nativeName:"Română",flag:"🇷🇴",hideFromSwitcher:!0},{code:"zh",name:"Chinese",nativeName:"中文",flag:"🇨🇳",hideFromSwitcher:!0}],dc=ys.filter(e=>!e.hideFromSwitcher);function uc(e){return ys.find(t=>t.code===e)}function wi(e){const t=String(e||"").split("-")[0].toLowerCase();return ys.some(o=>o.code===t)?t:"en"}const Pi="doxa-maps:locale";function fc(){try{const e=localStorage.getItem(Pi);if(e)return wi(e)}catch{}return wi(navigator==null?void 0:navigator.language)}function gc(e){try{localStorage.setItem(Pi,e)}catch{}}const Ht={en:{"sec.dashboards":"Dashboards","sec.prayer":"Prayer Mobilization","sec.gospel":"Gospel Research","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Big Picture","sub.dashboard-plus-grid":"dashboard + people-groups grid, stacked","tab.research-map":"Research Map","sub.research-map":"prayer · engagement · regions","tab.research-map-plus-grid":"Simple Research","sub.research-map-plus-grid":"research map + people-groups grid","tab.prayer-map":"Prayer Progress","sub.prayer-map":"simple world prayer map","tab.cities-internet":"Cities with Internet","sub.cities-internet":"connectivity of key cities","tab.gospel-resources":"Gospel Resources","sub.gospel-resources":"resources by place","tab.regions-dashboard":"Regions","sub.regions-dashboard":"regions and their countries","tab.upg-100":"UPG-100 List","sub.upg-100":"my unreached list + posters",navLabel:"Research maps",meta:"{n} maps",loading:"Loading {label}…",loadFailed:"Could not load {label}.",manifestHint:"This tab is composed from manifest.json — build the tree, or serve the built tree, to load it.",desktopOnly:"desktop only",lab:"lab",experimentalSub:"experimental bundle",toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse","tab.prayer-walk-planner":"Prayer Walk Planner","tab.upg-neighbor":"UPG Neighbor","tab.key-cities":"Key Cities","tab.all-people-groups":"All People Groups","tab.pplr-data-maps":"PPLR Data Maps","tab.wall-of-people-groups":"Wall of People Groups","tab.country-posters":"Country Posters","tab.doxa-vision-card":"Doxa Vision Card",desktopNotice:"Big Picture only supports desktop — open this page on a desktop to use it."},es:{"sec.dashboards":"Paneles","sec.prayer":"Movilización de oración","sec.gospel":"Investigación del Evangelio","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Panorama general","sub.dashboard-plus-grid":"panel + cuadrícula de pueblos","tab.research-map":"Mapa de investigación","sub.research-map":"oración · compromiso · regiones","tab.research-map-plus-grid":"Investigación simple","sub.research-map-plus-grid":"mapa de investigación + cuadrícula de pueblos","tab.prayer-map":"Progreso de oración","sub.prayer-map":"mapa mundial de oración","tab.cities-internet":"Ciudades con Internet","sub.cities-internet":"conectividad de ciudades clave","tab.gospel-resources":"Recursos del Evangelio","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiones","sub.regions-dashboard":"regiones y sus países","tab.upg-100":"Lista UPG-100","sub.upg-100":"mi lista de no alcanzados + carteles",navLabel:"Mapas de investigación",meta:"{n} mapas",loading:"Cargando {label}…",loadFailed:"No se pudo cargar {label}.",manifestHint:"Esta pestaña se compone a partir de manifest.json: compila el árbol o sirve el árbol compilado para cargarla.",desktopOnly:"solo escritorio",lab:"beta",experimentalSub:"mapa experimental",toggleList:"Mostrar u ocultar la lista",openViews:"Abrir la lista de vistas",expandList:"Expandir la lista",collapseList:"Contraer la lista",collapse:"Contraer","tab.prayer-walk-planner":"Caminatas de oración","tab.upg-neighbor":"Vecino UPG","tab.key-cities":"Ciudades clave","tab.all-people-groups":"Todos los pueblos","tab.pplr-data-maps":"Mapas de datos PPLR","tab.wall-of-people-groups":"Muro de los pueblos","tab.country-posters":"Carteles por país","tab.doxa-vision-card":"Tarjeta de visión Doxa",desktopNotice:"Panorama general solo funciona en escritorio: abre esta página en una computadora para usarlo."},fr:{"sec.dashboards":"Tableaux de bord","sec.prayer":"Mobilisation à la prière","sec.gospel":"Recherche sur l'Évangile","sec.experimental":"Expérimental","tab.dashboard-plus-grid":"Vue d'ensemble","sub.dashboard-plus-grid":"tableau de bord + grille des peuples","tab.research-map":"Carte de recherche","sub.research-map":"prière · engagement · régions","tab.research-map-plus-grid":"Recherche simple","sub.research-map-plus-grid":"carte de recherche + grille des peuples","tab.prayer-map":"Progression de la prière","sub.prayer-map":"carte mondiale de la prière","tab.cities-internet":"Villes avec Internet","sub.cities-internet":"connectivité des villes clés","tab.gospel-resources":"Ressources de l'Évangile","sub.gospel-resources":"ressources par lieu","tab.regions-dashboard":"Régions","sub.regions-dashboard":"régions et leurs pays","tab.upg-100":"Liste UPG-100","sub.upg-100":"ma liste des non atteints + affiches",navLabel:"Cartes de recherche",meta:"{n} cartes",loading:"Chargement de {label}…",loadFailed:"Impossible de charger {label}.",manifestHint:"Cet onglet est composé à partir de manifest.json : construisez l'arborescence ou servez l'arborescence construite pour le charger.",desktopOnly:"ordinateur uniquement",lab:"bêta",experimentalSub:"carte expérimentale",toggleList:"Afficher ou masquer la liste",openViews:"Ouvrir la liste des vues",expandList:"Déplier la liste",collapseList:"Replier la liste",collapse:"Replier","tab.prayer-walk-planner":"Marches de prière","tab.upg-neighbor":"Voisin UPG","tab.key-cities":"Villes clés","tab.all-people-groups":"Tous les peuples","tab.pplr-data-maps":"Cartes de données PPLR","tab.wall-of-people-groups":"Mur des peuples","tab.country-posters":"Affiches par pays","tab.doxa-vision-card":"Carte de vision Doxa",desktopNotice:"Vue d'ensemble ne fonctionne que sur ordinateur : ouvrez cette page sur un ordinateur pour l'utiliser."},de:{"sec.dashboards":"Dashboards","sec.prayer":"Gebetsmobilisierung","sec.gospel":"Evangeliumsforschung","sec.experimental":"Experimentell","tab.dashboard-plus-grid":"Gesamtbild","sub.dashboard-plus-grid":"Dashboard + Raster der Volksgruppen","tab.research-map":"Forschungskarte","sub.research-map":"Gebet · Engagement · Regionen","tab.research-map-plus-grid":"Einfache Recherche","sub.research-map-plus-grid":"Forschungskarte + Raster der Volksgruppen","tab.prayer-map":"Gebetsfortschritt","sub.prayer-map":"einfache Weltkarte des Gebets","tab.cities-internet":"Städte mit Internet","sub.cities-internet":"Konnektivität wichtiger Städte","tab.gospel-resources":"Evangeliumsressourcen","sub.gospel-resources":"Ressourcen nach Ort","tab.regions-dashboard":"Regionen","sub.regions-dashboard":"Regionen und ihre Länder","tab.upg-100":"UPG-100-Liste","sub.upg-100":"meine Liste der Unerreichten + Poster",navLabel:"Forschungskarten",meta:"{n} Karten",loading:"{label} wird geladen…",loadFailed:"{label} konnte nicht geladen werden.",manifestHint:"Dieser Tab wird aus manifest.json zusammengesetzt – bauen Sie den Baum oder stellen Sie den gebauten Baum bereit, um ihn zu laden.",desktopOnly:"nur Desktop",lab:"Beta",experimentalSub:"experimentelle Karte",toggleList:"Liste ein-/ausblenden",openViews:"Ansichtsliste öffnen",expandList:"Liste ausklappen",collapseList:"Liste einklappen",collapse:"Einklappen","tab.prayer-walk-planner":"Gebetsspaziergänge","tab.upg-neighbor":"UPG-Nachbar","tab.key-cities":"Schlüsselstädte","tab.all-people-groups":"Alle Volksgruppen","tab.pplr-data-maps":"PPLR-Datenkarten","tab.wall-of-people-groups":"Wand der Volksgruppen","tab.country-posters":"Länderposter","tab.doxa-vision-card":"Doxa-Visionskarte",desktopNotice:"Gesamtbild funktioniert nur am Desktop – öffnen Sie diese Seite an einem Computer, um es zu nutzen."},pt:{"sec.dashboards":"Painéis","sec.prayer":"Mobilização de oração","sec.gospel":"Pesquisa do Evangelho","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Visão geral","sub.dashboard-plus-grid":"painel + grade de povos","tab.research-map":"Mapa de pesquisa","sub.research-map":"oração · engajamento · regiões","tab.research-map-plus-grid":"Pesquisa simples","sub.research-map-plus-grid":"mapa de pesquisa + grade de povos","tab.prayer-map":"Progresso da oração","sub.prayer-map":"mapa mundial de oração","tab.cities-internet":"Cidades com Internet","sub.cities-internet":"conectividade das principais cidades","tab.gospel-resources":"Recursos do Evangelho","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiões","sub.regions-dashboard":"regiões e seus países","tab.upg-100":"Lista UPG-100","sub.upg-100":"minha lista de não alcançados + cartazes",navLabel:"Mapas de pesquisa",meta:"{n} mapas",loading:"Carregando {label}…",loadFailed:"Não foi possível carregar {label}.",manifestHint:"Esta aba é composta a partir do manifest.json — compile a árvore ou sirva a árvore compilada para carregá-la.",desktopOnly:"só no computador",lab:"beta",experimentalSub:"mapa experimental",toggleList:"Mostrar ou ocultar a lista",openViews:"Abrir a lista de visualizações",expandList:"Expandir a lista",collapseList:"Recolher a lista",collapse:"Recolher","tab.prayer-walk-planner":"Caminhadas de oração","tab.upg-neighbor":"Vizinho UPG","tab.key-cities":"Cidades-chave","tab.all-people-groups":"Todos os povos","tab.pplr-data-maps":"Mapas de dados PPLR","tab.wall-of-people-groups":"Mural dos povos","tab.country-posters":"Cartazes por país","tab.doxa-vision-card":"Cartão de visão Doxa",desktopNotice:"Visão geral só funciona no computador — abra esta página em um computador para usá-la."},it:{"sec.dashboards":"Dashboard","sec.prayer":"Mobilitazione alla preghiera","sec.gospel":"Ricerca sul Vangelo","sec.experimental":"Sperimentale","tab.dashboard-plus-grid":"Quadro d'insieme","sub.dashboard-plus-grid":"dashboard + griglia dei popoli","tab.research-map":"Mappa di ricerca","sub.research-map":"preghiera · impegno · regioni","tab.research-map-plus-grid":"Ricerca semplice","sub.research-map-plus-grid":"mappa di ricerca + griglia dei popoli","tab.prayer-map":"Avanzamento preghiera","sub.prayer-map":"mappa mondiale della preghiera","tab.cities-internet":"Città con Internet","sub.cities-internet":"connettività delle città chiave","tab.gospel-resources":"Risorse del Vangelo","sub.gospel-resources":"risorse per luogo","tab.regions-dashboard":"Regioni","sub.regions-dashboard":"regioni e i loro paesi","tab.upg-100":"Lista UPG-100","sub.upg-100":"la mia lista dei non raggiunti + poster",navLabel:"Mappe di ricerca",meta:"{n} mappe",loading:"Caricamento di {label}…",loadFailed:"Impossibile caricare {label}.",manifestHint:"Questa scheda è composta da manifest.json: compila l'albero o pubblica l'albero compilato per caricarla.",desktopOnly:"solo desktop",lab:"beta",experimentalSub:"mappa sperimentale",toggleList:"Mostra o nascondi l’elenco",openViews:"Apri l’elenco delle viste",expandList:"Espandi l’elenco",collapseList:"Comprimi l’elenco",collapse:"Comprimi","tab.prayer-walk-planner":"Passeggiate di preghiera","tab.upg-neighbor":"Vicino UPG","tab.key-cities":"Città chiave","tab.all-people-groups":"Tutti i popoli","tab.pplr-data-maps":"Mappe dati PPLR","tab.wall-of-people-groups":"Muro dei popoli","tab.country-posters":"Poster per paese","tab.doxa-vision-card":"Scheda visione Doxa",desktopNotice:"Quadro d'insieme funziona solo su desktop: apri questa pagina su un computer per usarlo."},ro:{"sec.dashboards":"Panouri","sec.prayer":"Mobilizare la rugăciune","sec.gospel":"Cercetarea Evangheliei","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Imaginea de ansamblu","sub.dashboard-plus-grid":"panou + grila popoarelor","tab.research-map":"Hartă de cercetare","sub.research-map":"rugăciune · implicare · regiuni","tab.research-map-plus-grid":"Cercetare simplă","sub.research-map-plus-grid":"hartă de cercetare + grila popoarelor","tab.prayer-map":"Progresul rugăciunii","sub.prayer-map":"hartă mondială a rugăciunii","tab.cities-internet":"Orașe cu internet","sub.cities-internet":"conectivitatea orașelor-cheie","tab.gospel-resources":"Resurse ale Evangheliei","sub.gospel-resources":"resurse după loc","tab.regions-dashboard":"Regiuni","sub.regions-dashboard":"regiunile și țările lor","tab.upg-100":"Lista UPG-100","sub.upg-100":"lista mea de neatinși + afișe",navLabel:"Hărți de cercetare",meta:"{n} hărți",loading:"Se încarcă {label}…",loadFailed:"{label} nu a putut fi încărcat.",manifestHint:"Această filă este compusă din manifest.json — construiți arborele sau serviți arborele construit pentru a o încărca.",desktopOnly:"doar pe desktop",lab:"beta",experimentalSub:"hartă experimentală",toggleList:"Afișează sau ascunde lista",openViews:"Deschide lista de vizualizări",expandList:"Extinde lista",collapseList:"Restrânge lista",collapse:"Restrânge","tab.prayer-walk-planner":"Plimbări de rugăciune","tab.upg-neighbor":"Vecin UPG","tab.key-cities":"Orașe-cheie","tab.all-people-groups":"Toate popoarele","tab.pplr-data-maps":"Hărți de date PPLR","tab.wall-of-people-groups":"Zidul popoarelor","tab.country-posters":"Afișe pe țări","tab.doxa-vision-card":"Card de viziune Doxa",desktopNotice:"Imaginea de ansamblu funcționează doar pe desktop — deschideți această pagină pe un computer pentru a o folosi."},ru:{"sec.dashboards":"Панели","sec.prayer":"Молитвенная мобилизация","sec.gospel":"Исследование Евангелия","sec.experimental":"Экспериментальное","tab.dashboard-plus-grid":"Общая картина","sub.dashboard-plus-grid":"панель + таблица народов","tab.research-map":"Исследовательская карта","sub.research-map":"молитва · вовлечённость · регионы","tab.research-map-plus-grid":"Простое исследование","sub.research-map-plus-grid":"исследовательская карта + таблица народов","tab.prayer-map":"Прогресс молитвы","sub.prayer-map":"простая карта молитвы мира","tab.cities-internet":"Города с интернетом","sub.cities-internet":"подключённость ключевых городов","tab.gospel-resources":"Евангельские ресурсы","sub.gospel-resources":"ресурсы по местам","tab.regions-dashboard":"Регионы","sub.regions-dashboard":"регионы и их страны","tab.upg-100":"Список UPG-100","sub.upg-100":"мой список недостигнутых + плакаты",navLabel:"Исследовательские карты",meta:"Карт: {n}",loading:"Загрузка: {label}…",loadFailed:"Не удалось загрузить: {label}.",manifestHint:"Эта вкладка собирается из manifest.json — соберите дерево или разместите собранное дерево, чтобы загрузить её.",desktopOnly:"только на компьютере",lab:"бета",experimentalSub:"экспериментальная карта",toggleList:"Показать или скрыть список",openViews:"Открыть список представлений",expandList:"Развернуть список",collapseList:"Свернуть список",collapse:"Свернуть","tab.prayer-walk-planner":"Молитвенные прогулки","tab.upg-neighbor":"Сосед UPG","tab.key-cities":"Ключевые города","tab.all-people-groups":"Все народы","tab.pplr-data-maps":"Карты данных PPLR","tab.wall-of-people-groups":"Стена народов","tab.country-posters":"Плакаты по странам","tab.doxa-vision-card":"Карточка видения Doxa",desktopNotice:"«Общая картина» работает только на компьютере — откройте эту страницу на компьютере."},ar:{"sec.dashboards":"لوحات المعلومات","sec.prayer":"التعبئة للصلاة","sec.gospel":"أبحاث الإنجيل","sec.experimental":"تجريبي","tab.dashboard-plus-grid":"الصورة الكاملة","sub.dashboard-plus-grid":"لوحة معلومات + شبكة الشعوب","tab.research-map":"خريطة البحث","sub.research-map":"الصلاة · الانخراط · المناطق","tab.research-map-plus-grid":"بحث مبسّط","sub.research-map-plus-grid":"خريطة البحث + شبكة الشعوب","tab.prayer-map":"تقدم الصلاة","sub.prayer-map":"خريطة عالمية مبسّطة للصلاة","tab.cities-internet":"مدن متصلة بالإنترنت","sub.cities-internet":"اتصال المدن الرئيسية","tab.gospel-resources":"موارد الإنجيل","sub.gospel-resources":"الموارد حسب المكان","tab.regions-dashboard":"المناطق","sub.regions-dashboard":"المناطق ودولها","tab.upg-100":"قائمة UPG-100","sub.upg-100":"قائمتي لغير المُبشَّرين + ملصقات",navLabel:"خرائط البحث",meta:"عدد الخرائط: {n}",loading:"جارٍ تحميل {label}…",loadFailed:"تعذّر تحميل {label}.",manifestHint:"تُبنى علامة التبويب هذه من manifest.json — ابنِ الشجرة أو قدّم الشجرة المبنية لتحميلها.",desktopOnly:"على الحاسوب فقط",lab:"تجريبي",experimentalSub:"خريطة تجريبية",toggleList:"إظهار القائمة أو إخفاؤها",openViews:"فتح قائمة العروض",expandList:"توسيع القائمة",collapseList:"طي القائمة",collapse:"طي","tab.prayer-walk-planner":"جولات الصلاة","tab.upg-neighbor":"جار UPG","tab.key-cities":"المدن الرئيسية","tab.all-people-groups":"جميع الشعوب","tab.pplr-data-maps":"خرائط بيانات PPLR","tab.wall-of-people-groups":"جدار الشعوب","tab.country-posters":"ملصقات الدول","tab.doxa-vision-card":"بطاقة رؤية Doxa",desktopNotice:"تعمل «الصورة الكاملة» على الحاسوب فقط — افتح هذه الصفحة على حاسوب لاستخدامها."},hi:{"sec.dashboards":"डैशबोर्ड","sec.prayer":"प्रार्थना संचालन","sec.gospel":"सुसमाचार शोध","sec.experimental":"प्रायोगिक","tab.dashboard-plus-grid":"संपूर्ण चित्र","sub.dashboard-plus-grid":"डैशबोर्ड + जनसमूहों की ग्रिड","tab.research-map":"शोध मानचित्र","sub.research-map":"प्रार्थना · सहभागिता · क्षेत्र","tab.research-map-plus-grid":"सरल शोध","sub.research-map-plus-grid":"शोध मानचित्र + जनसमूहों की ग्रिड","tab.prayer-map":"प्रार्थना प्रगति","sub.prayer-map":"सरल विश्व प्रार्थना मानचित्र","tab.cities-internet":"इंटरनेट वाले शहर","sub.cities-internet":"प्रमुख शहरों की कनेक्टिविटी","tab.gospel-resources":"सुसमाचार संसाधन","sub.gospel-resources":"स्थान के अनुसार संसाधन","tab.regions-dashboard":"क्षेत्र","sub.regions-dashboard":"क्षेत्र और उनके देश","tab.upg-100":"UPG-100 सूची","sub.upg-100":"मेरी अप्राप्त सूची + पोस्टर",navLabel:"शोध मानचित्र",meta:"{n} मानचित्र",loading:"{label} लोड हो रहा है…",loadFailed:"{label} लोड नहीं हो सका।",manifestHint:"यह टैब manifest.json से बनता है — इसे लोड करने के लिए ट्री बनाएँ या बना हुआ ट्री सर्व करें।",desktopOnly:"केवल डेस्कटॉप",lab:"बीटा",experimentalSub:"प्रायोगिक मानचित्र",toggleList:"सूची दिखाएँ या छिपाएँ",openViews:"दृश्यों की सूची खोलें",expandList:"सूची फैलाएँ",collapseList:"सूची संक्षिप्त करें",collapse:"संक्षिप्त करें","tab.prayer-walk-planner":"प्रार्थना पदयात्रा","tab.upg-neighbor":"UPG पड़ोसी","tab.key-cities":"प्रमुख शहर","tab.all-people-groups":"सभी जनसमूह","tab.pplr-data-maps":"PPLR डेटा मानचित्र","tab.wall-of-people-groups":"जनसमूहों की दीवार","tab.country-posters":"देश पोस्टर","tab.doxa-vision-card":"Doxa दर्शन कार्ड",desktopNotice:"संपूर्ण चित्र केवल डेस्कटॉप पर काम करता है — इसे उपयोग करने के लिए यह पेज कंप्यूटर पर खोलें।"},zh:{"sec.dashboards":"仪表板","sec.prayer":"祷告动员","sec.gospel":"福音研究","sec.experimental":"实验性","tab.dashboard-plus-grid":"全景","sub.dashboard-plus-grid":"仪表板 + 民族网格","tab.research-map":"研究地图","sub.research-map":"祷告 · 参与 · 区域","tab.research-map-plus-grid":"简易研究","sub.research-map-plus-grid":"研究地图 + 民族网格","tab.prayer-map":"祷告进度","sub.prayer-map":"简易世界祷告地图","tab.cities-internet":"有互联网的城市","sub.cities-internet":"主要城市的网络连接","tab.gospel-resources":"福音资源","sub.gospel-resources":"按地点划分的资源","tab.regions-dashboard":"区域","sub.regions-dashboard":"区域及其国家","tab.upg-100":"UPG-100 名单","sub.upg-100":"我的未得之民名单 + 海报",navLabel:"研究地图",meta:"{n} 张地图",loading:"正在加载{label}…",loadFailed:"无法加载{label}。",manifestHint:"此标签页由 manifest.json 组成——请构建目录树或提供已构建的目录树以加载它。",desktopOnly:"仅限桌面",lab:"测试版",experimentalSub:"实验性地图",toggleList:"显示或隐藏列表",openViews:"打开视图列表",expandList:"展开列表",collapseList:"折叠列表",collapse:"折叠","tab.prayer-walk-planner":"祷告行走","tab.upg-neighbor":"UPG 邻居","tab.key-cities":"重点城市","tab.all-people-groups":"所有民族","tab.pplr-data-maps":"PPLR 数据地图","tab.wall-of-people-groups":"民族之墙","tab.country-posters":"国家海报","tab.doxa-vision-card":"Doxa 异象卡",desktopNotice:"全景仅支持桌面设备——请在电脑上打开此页面使用。"}},xs=Object.keys(Ht);function hc(e){return Object.prototype.hasOwnProperty.call(Ht.en,e)}function wo(e,t,o){let n=(Ht[e]||Ht.en)[t]??Ht.en[t]??t;if(o)for(const i in o)n=n.split("{"+i+"}").join(String(o[i]));return n}const bc=":host{display:block;position:relative;height:var(--doxa-maps-spa-height, 85vh);min-height:480px}:host{font-size:16px;line-height:normal;font-weight:400;font-style:normal;font-variant:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-align:start;text-indent:0;text-shadow:none;white-space:normal;-webkit-hyphens:manual;hyphens:manual;visibility:visible;cursor:auto}:host([hidden]){display:none}.dms-pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}.dms-slot{position:relative;min-height:100%}.dms-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:#6d766e;font-size:13px;padding:20px}.dms-hint.err{color:#f87171}.dms-hint small{color:var(--dx-muted, #6d766e)}.dms-notice{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:40;max-width:320px;text-align:center;font-size:13px;line-height:1.4;color:#3b463d;background:#fff;border:1px solid #d1d4cd;border-radius:10px;padding:10px 16px;box-shadow:0 8px 24px #0000001f}.dms-logo{display:inline-flex;align-items:center}.dms-logo svg{display:block}.dms-locale{position:relative;padding:8px 12px 0;display:flex;justify-content:flex-end}.dms-locale-btn{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:12px;padding:5px 10px;border:1px solid #d1d4cd;border-radius:8px;background:#d1d4cd;color:#3b463d;cursor:pointer}.dms-locale-btn:hover{background:#d1d4cd}.dms-flag{font-size:14px;line-height:1}.dms-locale-name{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dms-dots{color:#6d766e;margin-left:2px}.dms-locale-menu{position:absolute;top:100%;right:12px;margin-top:4px;z-index:30;min-width:180px;list-style:none;padding:6px;border:1px solid #d1d4cd;border-radius:10px;background:#fff;box-shadow:0 12px 32px #00000080;max-height:320px;overflow:auto}.dms-locale-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;font:inherit;font-size:13px;padding:7px 9px;border:0;border-radius:7px;background:none;color:#3b463d;cursor:pointer}.dms-locale-opt:hover,.dms-locale-opt.active{background:#d1d4cd;color:#3b463d}.dms-locale-opt.active .dms-locale-name{color:#92b195}.dms-locale-en{margin-left:auto;font-size:11px;color:#6d766e}";function ki(){try{const e=new URLSearchParams(location.search),t=(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase();if(xs.includes(t))return t}catch{}try{const e=(document.documentElement.lang||"").split("-")[0].toLowerCase();if(xs.includes(e))return e}catch{}return""}const ws=[{key:"dashboards",label:"Dashboards",i18n:"sec.dashboards",icon:"chart",tabs:[{id:"dashboard-plus-grid",icon:"chart"},{id:"research-map-plus-grid",icon:"map"},{id:"regions-dashboard",icon:"map"}]},{key:"prayer-mobilization",label:"Prayer Mobilization",i18n:"sec.prayer",icon:"heart",tabs:[{id:"upg-100",icon:"list"},{id:"prayer-map",icon:"embed"}]},{key:"gospel-research",label:"Gospel Research",i18n:"sec.gospel",icon:"search",tabs:[{id:"cities-internet",icon:"wifi"},{id:"gospel-resources",icon:"book"}]},{key:"experimental",label:"Experimental",i18n:"sec.experimental",icon:"flask",folder:!0,open:!1,tabs:[]}],mc=new Set(["doxa-maps-spa","plugin-studio","template-bundle","people-groups-grid","research-dashboard","big-picture","demo-map","golden-path-check","doxa-research-map","stack-demo"]),Li={"prayer-walk-planner":1,"upg-neighbor":2,"key-cities":3,"all-people-groups":4,"country-posters":5,"doxa-vision-card":6},Ps=[{id:"dashboard-plus-grid",label:"Big Picture",sub:"dashboard + people-groups grid, stacked",emoji:"🌍",bundle:"dashboard-plus-grid",profile:"dashboard-plus-grid"},{id:"research-map",label:"Research Map",sub:"prayer · engagement · regions",emoji:"🗺️",bundle:"doxa-research-map",profile:"research-map"},{id:"research-map-plus-grid",label:"Simple Research",sub:"research map + people-groups grid",emoji:"🗺️",bundle:"research-map-plus-grid",profile:"research-map-plus-grid"},{id:"prayer-map",label:"Prayer Progress",sub:"simple world prayer map",emoji:"🙏",bundle:"doxa-simple-map",profile:"doxa-simple-map",instance:"prayer"},{id:"cities-internet",label:"Cities with Internet",sub:"connectivity of key cities",emoji:"📡",bundle:"cities-internet",profile:"connectivity-map"},{id:"gospel-resources",label:"Gospel Resources",sub:"resources by place",emoji:"📖",bundle:"gospel-resources",profile:"resources-map"},{id:"regions-dashboard",label:"Regions",sub:"regions and their countries",emoji:"🌐",bundle:"regions-dashboard",profile:"regions-mfe"},{id:"upg-100",label:"UPG-100 List",sub:"my unreached list + posters",emoji:"📋",bundle:"my-upg-100-list",profile:"upg-100-mfe"}];$c(ws);const Po=new Set(["doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-map","doxa-maps-spa","dashboard-plus-grid","research-dashboard-map","demo-map","all-people-groups","country-posters-map","key-cities-map","research-map-plus-grid"]),ko=new Set(["dashboard-plus-grid","research-map-plus-grid"]);function _c(){const e=Object.fromEntries(Ps.map(o=>[o.id,o])),t=new Set;for(const o of ws)if(o.key!=="experimental")for(const s of o.tabs||[]){const n=e[s.id];n&&n.bundle&&t.add(n.bundle)}return t}function Si(e,t){const o=[];for(const s of e)!s||t.has(s.key)||(t.add(s.key),o.push(s));return o}function $c(e){const t=new Map,o=[];for(const s of e)if(s.key!=="experimental")for(const n of s.tabs||[]){if(!n||!n.id)continue;const i=t.get(n.id);if(i===void 0){t.set(n.id,s.key);continue}(i!==s.key||o.indexOf(n.id)===-1)&&o.push(n.id+" ("+i+" + "+s.key+")")}return o.length&&typeof console<"u"&&console.error("[doxa-maps-spa] duplicate tab key(s) across NAV_MODEL sections: "+o.join(", ")+" — VerticalTabsLayout keys its tab-ref map and `active` highlight by id, so a row declared in two sections paints twice and stalls keyboard nav. See the duplicate-key trap in SPEC-the-six-map-product-and-its-tab-order.md."),o}function vc(e){return String(e).split(/[-_]/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function yc(e){const t=_c(),o=e&&Array.isArray(e.bundles)?e.bundles:[],s=[];for(const n of o){const i=n&&n.bundle;if(!i||t.has(i)||mc.has(i))continue;const a=Array.isArray(n.profiles)?n.profiles:[];if(!a.length)continue;const r=a.find(d=>d.isMap)||a.find(d=>d.profile===i)||a[0],l=r.element||Array.isArray(n.elements)&&n.elements[0]||i,u=n.scriptUrl||r.scriptUrl||"";u&&s.push({id:i,label:r.title||vc(i),sub:(r.description||"").trim().replace(/[,;]\s*$/,"")||"experimental bundle",emoji:"🧪",tag:l,bundle:i,profile:r.profile||i,scriptUrl:u,heavy:Po.has(l)||Po.has(i),scroll:ko.has(l)||ko.has(i),discovered:!0})}return s.sort((n,i)=>{const a=Li[n.id]||999,r=Li[i.id]||999;return a!==r?a-r:n.label.localeCompare(i.label)}),s}function xc(e,t){const o=e&&Array.isArray(e.bundles)?e.bundles:[],s=Object.fromEntries(o.map(i=>[i.bundle,i])),n={};for(const i of t){const a=s[i.bundle];if(!a)continue;const r=Array.isArray(a.profiles)?a.profiles:[],l=r.find(P=>P.profile===i.profile)||r[0],u=l&&l.element||Array.isArray(a.elements)&&a.elements[0]||i.bundle,d=a.scriptUrl||l&&l.scriptUrl||"";if(!d)continue;const g=l&&Array.isArray(l.instances)?l.instances:[],x=!!(i.instance&&g.some(P=>(P&&(P.id||P.instance))===i.instance));n[i.id]={tag:u,scriptUrl:d,profile:l&&l.profile||i.profile,instance:x?i.instance:"",heavy:Po.has(u)||Po.has(i.bundle),scroll:ko.has(u)||ko.has(i.bundle)}}return n}const jt={};function wc(e,t){return jt[e]||(jt[e]=new Promise((o,s)=>{const n=document.createElement("script");n.src=e,(/^\/plugin-designs\//.test(e)||/\/index\.js(\?|$)/.test(e))&&(n.type="module"),n.onload=()=>o(),n.onerror=()=>{delete jt[e],s(new Error("failed to load "+e))},document.head.appendChild(n)})),jt[e]}function Pc(e,t){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():Promise.race([customElements.whenDefined(e),new Promise((o,s)=>setTimeout(()=>{customElements.get(e)||s(new Error("<"+e+"> never registered (bundle loaded but defined no element)"))},15e3))])}const kc=ss({name:"DoxaMapsSpa",inheritAttrs:!1,components:{VerticalTabsLayout:pc},props:{treeBase:{type:String,default:""},profileConfig:{type:[String,Object],default:""},heading:{type:String,default:"DX-Maps"},tokenUrl:{type:String,default:""},tk:{type:String,default:""},language:{type:String,default:""},apiBaseUrl:{type:String,default:""},provider:{type:String,default:""},tab:{type:String,default:""}},emits:["tab-change"],setup(){return{injectedBase:kt("dmsTreeBase","")}},data(){return{activeIndex:0,showHeader:!1,narrow:!1,_mql:null,_onMedia:null,disabledNotice:"",_noticeTimer:null,manifestError:"",manifestBase:"",runtime:{},locale:fc(),hostLang:ki(),localeOpen:!1,switcherLangs:dc,tabs:Ps.map(e=>({...e,tag:"",scriptUrl:"",heavy:!1,scroll:!1,resolved:!1,mounted:!1,state:"idle",error:""}))}},computed:{cfg(){let e=this.profileConfig;if(typeof e=="string")try{e=e?JSON.parse(e):{}}catch{e={}}return e&&typeof e=="object"?e:{}},base(){const e=(this.treeBase||this.cfg.treeBase||this.injectedBase||"").trim();return e?e.replace(/\/+$/,"")+"/":""},assetsBase(){const e=String(this.cfg.assetsBase||"").trim();return/^https?:\/\//i.test(e)||e.startsWith("/")?e.replace(/\/+$/,""):this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/assets":""},navGroups(){const e=Object.fromEntries(this.tabs.map(o=>[o.id,o])),t=new Set;return ws.map(o=>{let s=Si((o.tabs||[]).filter(n=>e[n.id]).map(n=>{const i=e[n.id],a=this.isBigPictureDisabled(i.id);return{key:i.id,label:this.tabLabel(i),sub:this.tabSub(i),icon:n.icon,badge:a?this.tr("desktopOnly"):n.badge,disabled:a}}),t);return o.key==="experimental"&&(s=s.concat(Si(this.tabs.filter(n=>n.discovered).map(n=>({key:n.id,label:this.tabLabel(n),sub:this.tabSub(n),icon:"flask",badge:this.tr("lab")})),t))),{key:o.key,label:o.i18n?this.tr(o.i18n):o.label,icon:o.icon,folder:!!o.folder,open:o.open,rows:s}}).filter(o=>o.rows.length)},showLocaleSwitcher(){return this.showHeader},activeLang(){return uc(this.locale)||{code:this.locale,flag:"🌐",nativeName:this.locale}},effectiveLocale(){const e=(this.language||this.cfg.language||this.cfg.locale||this.cfg.lang||"").trim(),t=this.showLocaleSwitcher?this.locale:"";return(e||t||this.hostLang||"en").split("-")[0].toLowerCase()},uiLocale(){return xs.includes(this.effectiveLocale)?this.effectiveLocale:"en"},uiDir(){return this.uiLocale==="ar"?"rtl":"ltr"},layoutLabels(){const e={};for(const t of["toggleList","openViews","expandList","collapseList","collapse"])e[t]=this.tr(t);return e},effectiveProvider(){const e=String(this.provider||this.cfg.provider||"").trim().toLowerCase();return e==="maplibre"||e==="mapbox"?e:""},activeKey(){const e=this.tabs[this.activeIndex];return e?e.id:""}},mounted(){this.watchWidth(),this.watchHostLang(),this.select(this.initialIndex()),this.loadManifest()},beforeUnmount(){this._langObs&&(this._langObs.disconnect(),this._langObs=null),!(!this._mql||!this._onMedia)&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia),this._mql=null,this._onMedia=null)},watch:{effectiveLocale(e){const t=this.tabs[this.activeIndex];if(!(!t||!t.mounted))try{const o=this._slots&&this._slots[this.activeIndex],s=o&&o.firstElementChild;s&&s.setAttribute&&s.setAttribute("profile-config",JSON.stringify(this.childConfig(t)))}catch{}},tab(e){e&&this.onSelect(e)}},methods:{setSlot(e,t){t&&(this._slots=Object.assign(this._slots||{},{[e]:t}))},tr(e,t){return wo(this.uiLocale,e,t)},t(e,t){return wo(this.uiLocale,e,t)},tabLabel(e){return!e.discovered||hc("tab."+e.id)?wo(this.uiLocale,"tab."+e.id):e.label},tabSub(e){return e.discovered?this.uiLocale==="en"?e.sub:this.tr("experimentalSub"):wo(this.uiLocale,"sub."+e.id)},watchHostLang(){typeof MutationObserver>"u"||typeof document>"u"||(this._langObs=new MutationObserver(()=>{this.hostLang=ki()}),this._langObs.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"]}))},watchWidth(){typeof window>"u"||!window.matchMedia||(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this._onMedia=e=>{const t=this.narrow;this.narrow=!!e.matches,t!==this.narrow&&this.isBigPictureDisabled(this.activeKey)&&this.select(this.firstVisibleIndex())},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))},isBigPictureDisabled(e){return e==="dashboard-plus-grid"&&this.narrow},firstVisibleIndex(){let e=-1;for(const t of this.navGroups)for(const o of t.rows){const s=this.tabs.findIndex(n=>n.id===o.key);if(!(s<0)&&(e<0&&(e=s),!o.disabled))return s}return e>=0?e:0},loadManifest(){const e=this.resolve("manifest.json"),t=u=>{try{return new URL(u,location.href).href.replace(/[^/]*$/,"")}catch{return""}},o={url:e,root:t(e)},s={url:this.resolve("doxa-maps-spa/manifest.json"),root:o.root};let n=!1;try{n=new URL(e,location.href).origin!==location.origin}catch{}const i=n?[s,o]:[o,s],a="/public/dx-maps/manifest.json";i.some(u=>u.url===a)||i.push({url:a,root:t(a)});const r=[],l=u=>{if(u>=i.length){this.manifestError="manifest.json not found (tried "+r.join(", ")+")",console.error("[doxa-maps-spa] "+this.manifestError+" — every tab except Big Picture is composed from it, so their panes cannot mount.");return}const{url:d,root:g}=i[u];return r.push(d),fetch(d,{credentials:"omit"}).then(x=>{if(!x||!x.ok)throw new Error(d+" → HTTP "+(x?x.status:"?"));return x.json()}).then(x=>{if(!x)throw new Error(d+" → empty");this.manifestError="",this.manifestBase=g||"",this.applyManifest(x)}).catch(()=>l(u+1))};try{l(0)}catch{}},applyManifest(e){this.runtime=e&&e.runtime&&typeof e.runtime=="object"?e.runtime:{},this.applyPageGlobals();const t=xc(e,Ps),o=this.activeKey,s=[];for(const l of this.tabs){if(l.discovered){s.push(l);continue}const u=t[l.id];u&&(Object.assign(l,u,{resolved:!0}),s.push(l))}const n=new Set(s.map(l=>l.id));for(const l of yc(e))n.has(l.id)||s.push({...l,resolved:!0,mounted:!1,state:"idle",error:""});this.tabs=s;const i=this.requestedTab(),a=i?this.tabs.findIndex(l=>l.id===i):-1,r=this.tabs.findIndex(l=>l.id===o);a>=0&&!this.isBigPictureDisabled(i)&&!this._honouredTab?this.select(a):this.select(r>=0?r:this.firstVisibleIndex()),this._honouredTab=!0},requestedTab(){let e="";try{e=new URLSearchParams(location.search).get("tab")||""}catch{}return String(this.tab||this.cfg.tab||e||"").trim()},initialIndex(){const e=this.requestedTab(),t=e?this.tabs.findIndex(o=>o.id===e):-1;return t>=0&&(this._honouredTab=!0),t>=0&&!this.isBigPictureDisabled(e)?t:this.firstVisibleIndex()},setLocale(e){this.locale=e,this.localeOpen=!1,gc(e)},onSelect(e){if(this.isBigPictureDisabled(e)){this.disabledNotice=this.tr("desktopNotice"),clearTimeout(this._noticeTimer),this._noticeTimer=setTimeout(()=>{this.disabledNotice=""},4e3);return}const t=this.tabs.findIndex(o=>o.id===e);t!==-1&&this.select(t)},resolve(e){const t=String(e);if(/^(https?:)?\/\//.test(t)||t.startsWith("/"))return t;const o=t.replace(/^\.\//,"");return this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/"+o:this.base?this.base.replace(/\/+$/,"")+"/"+o:"../"+o},select(e){const t=this.activeIndex;if(this.activeIndex=e,t!==e&&t>=0){const s=this.tabs[t];s&&s.heavy&&s.mounted&&this.releaseTab(t,s)}const o=this.tabs[e];o&&((t!==e||!this._announced)&&(this._announced=!0,this.$emit("tab-change",{id:o.id,label:o.label})),o.scriptUrl&&(o.mounted||this.$nextTick(()=>{this.activeIndex===e&&this.mountElement(e)})))},releaseTab(e,t){try{const o=this._slots&&this._slots[e];o&&(o.innerHTML="")}catch{}this._slots&&delete this._slots[e],t.mounted=!1,t.state="idle",t.error=""},childConfig(e){const t={profile:e.profile||e.id,instanceId:e.instance||"dms-"+e.id};this.effectiveLocale&&(t.locale=this.effectiveLocale);const o=this.tk||this.cfg.tk||this.runtime.token;return o&&(t.tk=o),(this.tokenUrl||this.cfg.tokenUrl)&&(t.tokenUrl=this.tokenUrl||this.cfg.tokenUrl),this.effectiveProvider&&(t.provider=this.effectiveProvider),this.base&&(t.treeBase=this.base),this.assetsBase&&(t.assetsBase=this.assetsBase),t.urlSync=!1,t},applyPageGlobals(){if(typeof window>"u")return;const e=(this.apiBaseUrl||this.cfg.apiBaseUrl||this.runtime.apiBaseUrl||"").trim();e&&!window.MAP_APP_API_URL&&(window.MAP_APP_API_URL=e.replace(/\/+$/,""));const t=this.tk||this.cfg.tk||this.runtime.token;t&&!window.MAP_TOKEN&&(window.MAP_TOKEN=t),this.effectiveProvider&&!window.MAP_PROVIDER&&(window.MAP_PROVIDER=this.effectiveProvider)},mountElement(e){const t=this.tabs[e];t.mounted=!0,t.state="loading";const o=this.resolve(t.scriptUrl);wc(o).then(()=>Pc(t.tag)).then(()=>{try{if(t.heavy&&this.activeIndex!==e){t.mounted=!1,t.state="idle";return}const s=this._slots&&this._slots[e];if(!s){t.state="error",t.error="no slot";return}s.innerHTML="";const n=document.createElement(t.tag);n.setAttribute("profile-config",JSON.stringify(this.childConfig(t))),this.base&&n.setAttribute("tree-base",this.base.replace(/\/+$/,"")),n.style.cssText=t.scroll?"display:block;position:static;width:100%;height:auto;":"display:block;position:absolute;inset:0;width:100%;height:100%;",s.appendChild(n),t.state="ready"}catch(s){t.state="error",t.error="mount failed: "+(s&&s.message||String(s))}}).catch(s=>{t.state="error",t.error=s&&s.message||String(s)})}}}),Lc={class:"dms-locale"},Sc=["aria-expanded"],Cc={class:"dms-flag"},Tc={class:"dms-locale-name"},Nc={key:0,class:"dms-locale-menu",role:"listbox"},Rc=["aria-selected"],Ec=["onClick"],Ac={class:"dms-flag"},Oc={class:"dms-locale-name"},Fc={class:"dms-locale-en"},Mc=["hidden"],Dc={key:0,class:"dms-hint"},Ic={key:1,class:"dms-hint err"},Hc={key:2,class:"dms-hint err"},jc={key:0,class:"dms-notice",role:"status"};function Gc(e,t,o,s,n,i){const a=Wa("VerticalTabsLayout");return A(),bo(a,{dir:e.uiDir,lang:e.uiLocale,labels:e.layoutLabels,title:e.heading,"nav-label":e.t("navLabel"),header:e.showHeader,groups:e.navGroups,active:e.activeKey,"onUpdate:active":e.onSelect},za({brand:Pt(()=>[t[1]||(t[1]=T("span",{class:"dms-logo","aria-hidden":"true"},[T("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[T("circle",{cx:"12",cy:"12",r:"9"}),T("polygon",{points:"12 6 14 12 12 18 10 12",fill:"#92b195",stroke:"none"}),T("polygon",{points:"6 12 12 10 18 12 12 14",fill:"#92b195",opacity:"0.55",stroke:"none"})])],-1))]),meta:Pt(()=>[gt(F(e.t("meta",{n:e.tabs.length})),1)]),default:Pt(()=>[(A(!0),O(ee,null,dt(e.tabs,(r,l)=>Qo((A(),O("section",{key:r.id,class:"dms-pane",hidden:l!==e.activeIndex},[!r.heavy||l===e.activeIndex?(A(),O(ee,{key:0},[T("div",{class:"dms-slot",ref_for:!0,ref:u=>e.setSlot(l,u)},null,512),r.state==="loading"?(A(),O("div",Dc,F(e.tr("loading",{label:e.tabLabel(r)})),1)):r.state==="error"?(A(),O("div",Ic,[gt(F(e.tr("loadFailed",{label:e.tabLabel(r)})),1),t[3]||(t[3]=T("br",null,null,-1)),T("small",null,F(r.error),1)])):r.state==="idle"&&!r.scriptUrl&&e.manifestError?(A(),O("div",Hc,[gt(F(e.tr("loadFailed",{label:e.tabLabel(r)})),1),t[4]||(t[4]=T("br",null,null,-1)),T("small",null,F(e.manifestError),1),t[5]||(t[5]=T("br",null,null,-1)),T("small",null,F(e.tr("manifestHint")),1)])):de("",!0)],64)):de("",!0)],8,Mc)),[[ms,l===e.activeIndex]])),128)),e.disabledNotice?(A(),O("div",jc,F(e.disabledNotice),1)):de("",!0)]),_:2},[e.showLocaleSwitcher?{name:"toolbar",fn:Pt(()=>[T("div",Lc,[T("button",{type:"button",class:"dms-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":"Change language",onClick:t[0]||(t[0]=r=>e.localeOpen=!e.localeOpen)},[T("span",Cc,F(e.activeLang.flag),1),T("span",Tc,F(e.activeLang.nativeName),1),t[2]||(t[2]=T("span",{class:"dms-dots","aria-hidden":"true"},"⋮",-1))],8,Sc),e.localeOpen?(A(),O("ul",Nc,[(A(!0),O(ee,null,dt(e.switcherLangs,r=>(A(),O("li",{key:r.code,role:"option","aria-selected":String(r.code===e.locale)},[T("button",{type:"button",class:Be(["dms-locale-opt",{active:r.code===e.locale}]),onClick:l=>e.setLocale(r.code)},[T("span",Ac,F(r.flag),1),T("span",Oc,F(r.nativeName),1),T("span",Fc,F(r.name),1)],10,Ec)],8,Rc))),128))])):de("",!0)])]),key:"0"}:void 0]),1032,["dir","lang","labels","title","nav-label","header","groups","active","onUpdate:active"])}const Wc=xi(kc,[["render",Gc],["styles",[bc]]]);function Uc(){try{const e=typeof document<"u"&&document.currentScript&&document.currentScript.src||"";return e?e.replace(/[^/]+\/[^/]+$/,"").replace(/\/+$/,"")+"/":""}catch{return""}}const Vc=Uc(),zc=tl(Wc,{configureApp(e){e.provide("dmsTreeBase",Vc)}});typeof customElements<"u"&&!customElements.get("doxa-maps-spa")&&customElements.define("doxa-maps-spa",zc)})(); +`,vl=ss({name:"VerticalTabsLayout",props:{active:{type:String,default:""},title:{type:String,default:""},items:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},navLabel:{type:String,default:"Sections"},labels:{type:Object,default:()=>({})},initialNavOpen:{type:Boolean,default:!0},header:{type:Boolean,default:!0},initialRailCollapsed:{type:Boolean,default:!1}},emits:["update:active"],setup(){return fl($l,"vertical-tabs-layout"),{T:bl}},data(){return{navOpen:this.initialNavOpen,railCollapsed:this.initialRailCollapsed,_tabEls:{},folderOverride:{},narrow:!1,_mql:null,_onMedia:null,activatedKeys:{},hostState:{},hostError:{},_hostSlots:{},_hostMounted:{}}},computed:{railShown(){return this.narrow?this.navOpen:!0},allRows(){if(this.groups&&this.groups.length){const e=[];for(const t of this.groups)for(const o of t.rows||[])e.push(o);return e}return this.items},orderedKeys(){return this.allRows.map(e=>e.key)},elementRows(){return this.allRows.filter(e=>e&&e.element)},mountedElementRows(){return this.elementRows.filter(e=>this.activatedKeys[e.key])}},watch:{active:{immediate:!0,handler(e){this.activateElement(e)}}},mounted(){try{window.matchMedia&&(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this.reconcileForWidth(),this._onMedia=e=>{this.narrow=e.matches,this.reconcileForWidth()},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))}catch{}this.$nextTick(()=>this.activateElement(this.active))},beforeUnmount(){try{this._mql&&this._onMedia&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia))}catch{}this._mql=null,this._onMedia=null},methods:{registerTab(e,t){t&&(this._tabEls[e]=t)},isNarrow(){return this.narrow},reconcileForWidth(){this.narrow?(this.navOpen=!1,this.railCollapsed=!1):this.navOpen=!0},label(e){const t={toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse"};return this.labels&&this.labels[e]||t[e]},expandRail(){!this.narrow&&this.railCollapsed&&(this.railCollapsed=!1)},toggleRail(){this.narrow?this.navOpen=!this.navOpen:this.railCollapsed=!this.railCollapsed},setHostSlot(e,t){t&&(this._hostSlots[e]=t,this.$nextTick(()=>this.mountHostElement(e)))},activateElement(e){!e||!this.elementRows.find(o=>o.key===e)||(this.activatedKeys[e]||(this.activatedKeys={...this.activatedKeys,[e]:!0},this.hostState={...this.hostState,[e]:"loading"}),this.$nextTick(()=>this.mountHostElement(e)))},mountHostElement(e){if(this._hostMounted[e])return;const t=this.elementRows.find(s=>s.key===e),o=this._hostSlots[e];!t||!o||(this._hostMounted[e]=!0,this.hostState={...this.hostState,[e]:"loading"},ml(t.src).then(()=>_l(t.element)).then(()=>{o.innerHTML="";const s=document.createElement(t.element),n=t.attrs||{};for(const i in n){const a=n[i],r=a!=null&&typeof a=="object"?JSON.stringify(a):String(a);try{s[i]=a}catch{}try{s.setAttribute(i,r)}catch{}}s.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",o.appendChild(s),this.hostState={...this.hostState,[e]:"ready"}}).catch(s=>{this._hostMounted[e]=!1,this.hostState={...this.hostState,[e]:"error"},this.hostError={...this.hostError,[e]:s&&s.message||String(s)}}))},iconSvg(e){return e?gl(e):""},initial(e){const t=(e||"").trim();return t?t.charAt(0).toUpperCase():"•"},isFolderClosed(e){const t=this.folderOverride[e.key];return t!=null?!t:e.open!==!0},toggleFolder(e){const t=this.folderOverride[e],o=(this.groups||[]).find(n=>n.key===e),s=t??(o&&o.open===!0);this.folderOverride={...this.folderOverride,[e]:!s}},pick(e){this.$emit("update:active",e),this.narrow&&(this.navOpen=!1)},onKey(e){const t=this.orderedKeys;if(!t.length)return;const o=t.indexOf(this.active);let s=-1;if(e.key==="ArrowDown"||e.key==="ArrowRight")s=(o+1)%t.length;else if(e.key==="ArrowUp"||e.key==="ArrowLeft")s=(o-1+t.length)%t.length;else if(e.key==="Home")s=0;else if(e.key==="End")s=t.length-1;else return;e.preventDefault();const n=t[s];this.pick(n),this.$nextTick(()=>{const i=this._tabEls[n];i&&i.focus&&i.focus()})}}}),yl={key:0,class:"vtl-top"},xl=["aria-expanded","aria-label"],wl={class:"vtl-brand"},Pl={class:"vtl-title"},kl={class:"vtl-meta"},Ll=["aria-expanded","aria-label"],Sl={class:"vtl-body"},Cl=["aria-label","aria-hidden","role","aria-orientation"],Tl=["aria-expanded","aria-label"],Nl=["innerHTML"],Rl={class:"vtl-collapse-tx"},El=["aria-expanded","onClick"],Al={key:0,class:"vtl-cap"},Ol={class:"vtl-tl"},Fl={key:1,class:"vtl-td"},Ml=["innerHTML"],Il={key:1,class:"vtl-tier"},Dl={key:0,class:"vtl-cap"},Hl={class:"vtl-tl"},jl={key:1,class:"vtl-td"},Gl={class:"vtl-rows"},Wl=["aria-selected","tabindex","onClick"],Ul=["innerHTML"],Vl={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},zl={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},Bl={class:"vtl-tab-text"},Kl={class:"vtl-tab-label"},ql={key:0,class:"vtl-tab-badge"},Zl={key:0,class:"vtl-tab-sub"},Xl=["innerHTML"],Jl=["aria-selected","tabindex","onClick"],Yl=["innerHTML"],Ql={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},ec={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},tc={class:"vtl-tab-text"},oc={class:"vtl-tab-label"},sc={key:0,class:"vtl-tab-sub"},nc={class:"vtl-main"},ic={class:"vtl-content"},ac=["hidden"],rc={key:0,class:"vtl-host-hint"},lc={key:1,class:"vtl-host-hint err"};function cc(e,t,o,s,n,i){return A(),O("div",{class:Be(["vtl",{"nav-open":e.navOpen,"rail-collapsed":e.railCollapsed,"no-header":!e.header}])},[e.header?(A(),O("header",yl,[T("button",{class:"vtl-menu",type:"button","aria-expanded":String(e.navOpen),onClick:t[0]||(t[0]=a=>e.navOpen=!e.navOpen),"aria-label":e.label("toggleList")},"☰",8,xl),T("span",wl,[St(e.$slots,"brand")]),T("b",Pl,F(e.title),1),T("span",kl,[St(e.$slots,"meta")])])):de("",!0),e.narrow&&!e.header&&!e.navOpen?(A(),O("button",{key:1,class:"vtl-fab",type:"button","aria-expanded":String(e.navOpen),onClick:t[1]||(t[1]=a=>e.navOpen=!0),"aria-label":e.label("openViews")},"☰",8,Ll)):de("",!0),T("div",Sl,[T("nav",{class:"vtl-nav","aria-label":e.navLabel,"aria-hidden":String(!e.railShown),role:e.$slots.rail?null:"tablist","aria-orientation":e.$slots.rail?null:"vertical"},[T("button",{type:"button",class:"vtl-collapse","aria-expanded":String(!e.railCollapsed),"aria-label":e.railCollapsed?e.label("expandList"):e.label("collapseList"),onClick:t[2]||(t[2]=(...a)=>e.toggleRail&&e.toggleRail(...a))},[T("span",{class:"vtl-collapse-ic","aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,8,Nl),T("span",Rl,F(e.label("collapse")),1)],8,Tl),e.$slots.rail?St(e.$slots,"rail",{collapsed:e.railCollapsed&&!e.narrow,expand:e.expandRail,pick:e.pick},void 0,void 0,0):e.groups&&e.groups.length?(A(!0),O(ee,{key:1},dt(e.groups,a=>(A(),O("div",{class:"vtl-grp",key:a.key},[a.folder?(A(),O("button",{key:0,type:"button",class:"vtl-tier vtl-tier-btn","aria-expanded":String(!e.isFolderClosed(a)),onClick:r=>e.toggleFolder(a.key)},[a.badge?(A(),O("span",Al,F(a.badge),1)):de("",!0),T("span",Ol,F(a.label),1),a.count!=null?(A(),O("span",Fl,F(a.count),1)):de("",!0),T("span",{class:Be(["vtl-chev",{open:!e.isFolderClosed(a)}]),"aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,10,Ml)],8,El)):(A(),O("div",Il,[a.badge?(A(),O("span",Dl,F(a.badge),1)):de("",!0),T("span",Hl,F(a.label),1),a.count!=null?(A(),O("span",jl,F(a.count),1)):de("",!0)])),Qo(T("div",Gl,[(A(!0),O(ee,null,dt(a.rows,r=>(A(),O("button",{key:r.key,type:"button",role:"tab",class:Be(["vtl-tab",{active:r.key===e.active}]),"aria-selected":String(r.key===e.active),tabindex:r.key===e.active?0:-1,ref_for:!0,ref:l=>e.registerTab(r.key,l),onClick:l=>e.pick(r.key),onKeydown:t[3]||(t[3]=l=>e.onKey(l))},[r.icon?(A(),O("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(r.icon)},null,8,Ul)):r.emoji?(A(),O("span",Vl,F(r.emoji),1)):(A(),O("span",zl,F(e.initial(r.label)),1)),T("span",Bl,[T("span",Kl,[gt(F(r.label),1),r.badge?(A(),O("span",ql,F(r.badge),1)):de("",!0)]),r.sub?(A(),O("span",Zl,[T("span",{innerHTML:r.sub},null,8,Xl)])):de("",!0)])],42,Wl))),128))],512),[[ms,!a.folder||!e.isFolderClosed(a)]])]))),128)):(A(!0),O(ee,{key:2},dt(e.items,a=>(A(),O("button",{key:a.key,type:"button",role:"tab",class:Be(["vtl-tab",{active:a.key===e.active}]),"aria-selected":String(a.key===e.active),tabindex:a.key===e.active?0:-1,ref_for:!0,ref:r=>e.registerTab(a.key,r),onClick:r=>e.pick(a.key),onKeydown:t[4]||(t[4]=r=>e.onKey(r))},[a.icon?(A(),O("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(a.icon)},null,8,Yl)):a.emoji?(A(),O("span",Ql,F(a.emoji),1)):(A(),O("span",ec,F(e.initial(a.label)),1)),T("span",tc,[T("span",oc,F(a.label),1),a.sub?(A(),O("span",sc,F(a.sub),1)):de("",!0)])],42,Jl))),128))],8,Cl),T("main",nc,[e.header?St(e.$slots,"toolbar",{},void 0,void 0,0):de("",!0),T("div",ic,[(A(!0),O(ee,null,dt(e.mountedElementRows,a=>Qo((A(),O("section",{key:a.key,class:"vtl-host",hidden:a.key!==e.active},[T("div",{class:"vtl-host-slot",ref_for:!0,ref:r=>e.setHostSlot(a.key,r)},null,512),e.hostState[a.key]==="loading"?(A(),O("div",rc,F(e.T("messages.loadingNamed","Loading {name}…").replace("{name}",a.label)),1)):e.hostState[a.key]==="error"?(A(),O("div",lc,[gt(F(e.T("messages.couldNotLoadNamed","Could not load {name}.").replace("{name}",a.label)),1),t[5]||(t[5]=T("br",null,null,-1)),T("small",null,F(e.hostError[a.key]),1)])):de("",!0)],8,ac)),[[ms,a.key===e.active]])),128)),St(e.$slots,"default")])])])],2)}const pc=xi(vl,[["render",cc],["styles",[hl]]]),ys=[{code:"en",name:"English",nativeName:"English",flag:"🇺🇸"},{code:"es",name:"Spanish",nativeName:"Español",flag:"🇪🇸"},{code:"fr",name:"French",nativeName:"Français",flag:"🇫🇷"},{code:"pt",name:"Portuguese",nativeName:"Português",flag:"🇵🇹"},{code:"ar",name:"Arabic",nativeName:"العربية",flag:"🇸🇦",dir:"rtl"},{code:"ru",name:"Russian",nativeName:"Русский",flag:"🇷🇺"},{code:"de",name:"German",nativeName:"Deutsch",flag:"🇩🇪",hideFromSwitcher:!0},{code:"hi",name:"Hindi",nativeName:"हिन्दी",flag:"🇮🇳",hideFromSwitcher:!0},{code:"it",name:"Italian",nativeName:"Italiano",flag:"🇮🇹",hideFromSwitcher:!0},{code:"ro",name:"Romanian",nativeName:"Română",flag:"🇷🇴",hideFromSwitcher:!0},{code:"zh",name:"Chinese",nativeName:"中文",flag:"🇨🇳",hideFromSwitcher:!0}],dc=ys.filter(e=>!e.hideFromSwitcher);function uc(e){return ys.find(t=>t.code===e)}function wi(e){const t=String(e||"").split("-")[0].toLowerCase();return ys.some(o=>o.code===t)?t:"en"}const Pi="doxa-maps:locale";function fc(){try{const e=localStorage.getItem(Pi);if(e)return wi(e)}catch{}return wi(navigator==null?void 0:navigator.language)}function gc(e){try{localStorage.setItem(Pi,e)}catch{}}const Ht={en:{"sec.dashboards":"Dashboards","sec.prayer":"Prayer Mobilization","sec.gospel":"Gospel Research","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Big Picture","sub.dashboard-plus-grid":"dashboard + people-groups grid, stacked","tab.research-map":"Research Map","sub.research-map":"prayer · engagement · regions","tab.research-map-plus-grid":"Simple Research","sub.research-map-plus-grid":"research map + people-groups grid","tab.prayer-map":"Prayer Progress","sub.prayer-map":"simple world prayer map","tab.cities-internet":"Cities with Internet","sub.cities-internet":"connectivity of key cities","tab.gospel-resources":"Gospel Resources","sub.gospel-resources":"resources by place","tab.regions-dashboard":"Regions","sub.regions-dashboard":"regions and their countries","tab.gospel-internet":"Gospel x Internet","sub.gospel-internet":"gospel access through the internet","tab.upg-100":"UPG-100 List","sub.upg-100":"my unreached list + posters",navLabel:"Research maps",meta:"{n} maps",loading:"Loading {label}…",loadFailed:"Could not load {label}.",manifestHint:"This tab is composed from manifest.json — build the tree, or serve the built tree, to load it.",desktopOnly:"desktop only",lab:"lab",experimentalSub:"experimental bundle",toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse","tab.prayer-walk-planner":"Prayer Walk Planner","tab.upg-neighbor":"UPG Neighbor","tab.key-cities":"Key Cities","tab.all-people-groups":"All People Groups","tab.pplr-data-maps":"PPLR Data Maps","tab.wall-of-people-groups":"Wall of People Groups","tab.country-posters":"Country Posters","tab.doxa-vision-card":"Doxa Vision Card",desktopNotice:"Big Picture only supports desktop — open this page on a desktop to use it."},es:{"sec.dashboards":"Paneles","sec.prayer":"Movilización de oración","sec.gospel":"Investigación del Evangelio","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Panorama general","sub.dashboard-plus-grid":"panel + cuadrícula de pueblos","tab.research-map":"Mapa de investigación","sub.research-map":"oración · compromiso · regiones","tab.research-map-plus-grid":"Investigación simple","sub.research-map-plus-grid":"mapa de investigación + cuadrícula de pueblos","tab.prayer-map":"Progreso de oración","sub.prayer-map":"mapa mundial de oración","tab.cities-internet":"Ciudades con Internet","sub.cities-internet":"conectividad de ciudades clave","tab.gospel-resources":"Recursos del Evangelio","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiones","sub.regions-dashboard":"regiones y sus países","tab.gospel-internet":"Evangelio e Internet","sub.gospel-internet":"acceso al evangelio por internet","tab.upg-100":"Lista UPG-100","sub.upg-100":"mi lista de no alcanzados + carteles",navLabel:"Mapas de investigación",meta:"{n} mapas",loading:"Cargando {label}…",loadFailed:"No se pudo cargar {label}.",manifestHint:"Esta pestaña se compone a partir de manifest.json: compila el árbol o sirve el árbol compilado para cargarla.",desktopOnly:"solo escritorio",lab:"beta",experimentalSub:"mapa experimental",toggleList:"Mostrar u ocultar la lista",openViews:"Abrir la lista de vistas",expandList:"Expandir la lista",collapseList:"Contraer la lista",collapse:"Contraer","tab.prayer-walk-planner":"Caminatas de oración","tab.upg-neighbor":"Vecino UPG","tab.key-cities":"Ciudades clave","tab.all-people-groups":"Todos los pueblos","tab.pplr-data-maps":"Mapas de datos PPLR","tab.wall-of-people-groups":"Muro de los pueblos","tab.country-posters":"Carteles por país","tab.doxa-vision-card":"Tarjeta de visión Doxa",desktopNotice:"Panorama general solo funciona en escritorio: abre esta página en una computadora para usarlo."},fr:{"sec.dashboards":"Tableaux de bord","sec.prayer":"Mobilisation à la prière","sec.gospel":"Recherche sur l'Évangile","sec.experimental":"Expérimental","tab.dashboard-plus-grid":"Vue d'ensemble","sub.dashboard-plus-grid":"tableau de bord + grille des peuples","tab.research-map":"Carte de recherche","sub.research-map":"prière · engagement · régions","tab.research-map-plus-grid":"Recherche simple","sub.research-map-plus-grid":"carte de recherche + grille des peuples","tab.prayer-map":"Progression de la prière","sub.prayer-map":"carte mondiale de la prière","tab.cities-internet":"Villes avec Internet","sub.cities-internet":"connectivité des villes clés","tab.gospel-resources":"Ressources de l'Évangile","sub.gospel-resources":"ressources par lieu","tab.regions-dashboard":"Régions","sub.regions-dashboard":"régions et leurs pays","tab.gospel-internet":"Évangile et Internet","sub.gospel-internet":"l’accès à l’Évangile par internet","tab.upg-100":"Liste UPG-100","sub.upg-100":"ma liste des non atteints + affiches",navLabel:"Cartes de recherche",meta:"{n} cartes",loading:"Chargement de {label}…",loadFailed:"Impossible de charger {label}.",manifestHint:"Cet onglet est composé à partir de manifest.json : construisez l'arborescence ou servez l'arborescence construite pour le charger.",desktopOnly:"ordinateur uniquement",lab:"bêta",experimentalSub:"carte expérimentale",toggleList:"Afficher ou masquer la liste",openViews:"Ouvrir la liste des vues",expandList:"Déplier la liste",collapseList:"Replier la liste",collapse:"Replier","tab.prayer-walk-planner":"Marches de prière","tab.upg-neighbor":"Voisin UPG","tab.key-cities":"Villes clés","tab.all-people-groups":"Tous les peuples","tab.pplr-data-maps":"Cartes de données PPLR","tab.wall-of-people-groups":"Mur des peuples","tab.country-posters":"Affiches par pays","tab.doxa-vision-card":"Carte de vision Doxa",desktopNotice:"Vue d'ensemble ne fonctionne que sur ordinateur : ouvrez cette page sur un ordinateur pour l'utiliser."},de:{"sec.dashboards":"Dashboards","sec.prayer":"Gebetsmobilisierung","sec.gospel":"Evangeliumsforschung","sec.experimental":"Experimentell","tab.dashboard-plus-grid":"Gesamtbild","sub.dashboard-plus-grid":"Dashboard + Raster der Volksgruppen","tab.research-map":"Forschungskarte","sub.research-map":"Gebet · Engagement · Regionen","tab.research-map-plus-grid":"Einfache Recherche","sub.research-map-plus-grid":"Forschungskarte + Raster der Volksgruppen","tab.prayer-map":"Gebetsfortschritt","sub.prayer-map":"einfache Weltkarte des Gebets","tab.cities-internet":"Städte mit Internet","sub.cities-internet":"Konnektivität wichtiger Städte","tab.gospel-resources":"Evangeliumsressourcen","sub.gospel-resources":"Ressourcen nach Ort","tab.regions-dashboard":"Regionen","sub.regions-dashboard":"Regionen und ihre Länder","tab.gospel-internet":"Evangelium × Internet","sub.gospel-internet":"Zugang zum Evangelium über das Internet","tab.upg-100":"UPG-100-Liste","sub.upg-100":"meine Liste der Unerreichten + Poster",navLabel:"Forschungskarten",meta:"{n} Karten",loading:"{label} wird geladen…",loadFailed:"{label} konnte nicht geladen werden.",manifestHint:"Dieser Tab wird aus manifest.json zusammengesetzt – bauen Sie den Baum oder stellen Sie den gebauten Baum bereit, um ihn zu laden.",desktopOnly:"nur Desktop",lab:"Beta",experimentalSub:"experimentelle Karte",toggleList:"Liste ein-/ausblenden",openViews:"Ansichtsliste öffnen",expandList:"Liste ausklappen",collapseList:"Liste einklappen",collapse:"Einklappen","tab.prayer-walk-planner":"Gebetsspaziergänge","tab.upg-neighbor":"UPG-Nachbar","tab.key-cities":"Schlüsselstädte","tab.all-people-groups":"Alle Volksgruppen","tab.pplr-data-maps":"PPLR-Datenkarten","tab.wall-of-people-groups":"Wand der Volksgruppen","tab.country-posters":"Länderposter","tab.doxa-vision-card":"Doxa-Visionskarte",desktopNotice:"Gesamtbild funktioniert nur am Desktop – öffnen Sie diese Seite an einem Computer, um es zu nutzen."},pt:{"sec.dashboards":"Painéis","sec.prayer":"Mobilização de oração","sec.gospel":"Pesquisa do Evangelho","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Visão geral","sub.dashboard-plus-grid":"painel + grade de povos","tab.research-map":"Mapa de pesquisa","sub.research-map":"oração · engajamento · regiões","tab.research-map-plus-grid":"Pesquisa simples","sub.research-map-plus-grid":"mapa de pesquisa + grade de povos","tab.prayer-map":"Progresso da oração","sub.prayer-map":"mapa mundial de oração","tab.cities-internet":"Cidades com Internet","sub.cities-internet":"conectividade das principais cidades","tab.gospel-resources":"Recursos do Evangelho","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiões","sub.regions-dashboard":"regiões e seus países","tab.gospel-internet":"Evangelho e Internet","sub.gospel-internet":"acesso ao evangelho pela internet","tab.upg-100":"Lista UPG-100","sub.upg-100":"minha lista de não alcançados + cartazes",navLabel:"Mapas de pesquisa",meta:"{n} mapas",loading:"Carregando {label}…",loadFailed:"Não foi possível carregar {label}.",manifestHint:"Esta aba é composta a partir do manifest.json — compile a árvore ou sirva a árvore compilada para carregá-la.",desktopOnly:"só no computador",lab:"beta",experimentalSub:"mapa experimental",toggleList:"Mostrar ou ocultar a lista",openViews:"Abrir a lista de visualizações",expandList:"Expandir a lista",collapseList:"Recolher a lista",collapse:"Recolher","tab.prayer-walk-planner":"Caminhadas de oração","tab.upg-neighbor":"Vizinho UPG","tab.key-cities":"Cidades-chave","tab.all-people-groups":"Todos os povos","tab.pplr-data-maps":"Mapas de dados PPLR","tab.wall-of-people-groups":"Mural dos povos","tab.country-posters":"Cartazes por país","tab.doxa-vision-card":"Cartão de visão Doxa",desktopNotice:"Visão geral só funciona no computador — abra esta página em um computador para usá-la."},it:{"sec.dashboards":"Dashboard","sec.prayer":"Mobilitazione alla preghiera","sec.gospel":"Ricerca sul Vangelo","sec.experimental":"Sperimentale","tab.dashboard-plus-grid":"Quadro d'insieme","sub.dashboard-plus-grid":"dashboard + griglia dei popoli","tab.research-map":"Mappa di ricerca","sub.research-map":"preghiera · impegno · regioni","tab.research-map-plus-grid":"Ricerca semplice","sub.research-map-plus-grid":"mappa di ricerca + griglia dei popoli","tab.prayer-map":"Avanzamento preghiera","sub.prayer-map":"mappa mondiale della preghiera","tab.cities-internet":"Città con Internet","sub.cities-internet":"connettività delle città chiave","tab.gospel-resources":"Risorse del Vangelo","sub.gospel-resources":"risorse per luogo","tab.regions-dashboard":"Regioni","sub.regions-dashboard":"regioni e i loro paesi","tab.gospel-internet":"Vangelo e Internet","sub.gospel-internet":"l’accesso al vangelo tramite internet","tab.upg-100":"Lista UPG-100","sub.upg-100":"la mia lista dei non raggiunti + poster",navLabel:"Mappe di ricerca",meta:"{n} mappe",loading:"Caricamento di {label}…",loadFailed:"Impossibile caricare {label}.",manifestHint:"Questa scheda è composta da manifest.json: compila l'albero o pubblica l'albero compilato per caricarla.",desktopOnly:"solo desktop",lab:"beta",experimentalSub:"mappa sperimentale",toggleList:"Mostra o nascondi l’elenco",openViews:"Apri l’elenco delle viste",expandList:"Espandi l’elenco",collapseList:"Comprimi l’elenco",collapse:"Comprimi","tab.prayer-walk-planner":"Passeggiate di preghiera","tab.upg-neighbor":"Vicino UPG","tab.key-cities":"Città chiave","tab.all-people-groups":"Tutti i popoli","tab.pplr-data-maps":"Mappe dati PPLR","tab.wall-of-people-groups":"Muro dei popoli","tab.country-posters":"Poster per paese","tab.doxa-vision-card":"Scheda visione Doxa",desktopNotice:"Quadro d'insieme funziona solo su desktop: apri questa pagina su un computer per usarlo."},ro:{"sec.dashboards":"Panouri","sec.prayer":"Mobilizare la rugăciune","sec.gospel":"Cercetarea Evangheliei","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Imaginea de ansamblu","sub.dashboard-plus-grid":"panou + grila popoarelor","tab.research-map":"Hartă de cercetare","sub.research-map":"rugăciune · implicare · regiuni","tab.research-map-plus-grid":"Cercetare simplă","sub.research-map-plus-grid":"hartă de cercetare + grila popoarelor","tab.prayer-map":"Progresul rugăciunii","sub.prayer-map":"hartă mondială a rugăciunii","tab.cities-internet":"Orașe cu internet","sub.cities-internet":"conectivitatea orașelor-cheie","tab.gospel-resources":"Resurse ale Evangheliei","sub.gospel-resources":"resurse după loc","tab.regions-dashboard":"Regiuni","sub.regions-dashboard":"regiunile și țările lor","tab.gospel-internet":"Evanghelie și Internet","sub.gospel-internet":"accesul la Evanghelie prin internet","tab.upg-100":"Lista UPG-100","sub.upg-100":"lista mea de neatinși + afișe",navLabel:"Hărți de cercetare",meta:"{n} hărți",loading:"Se încarcă {label}…",loadFailed:"{label} nu a putut fi încărcat.",manifestHint:"Această filă este compusă din manifest.json — construiți arborele sau serviți arborele construit pentru a o încărca.",desktopOnly:"doar pe desktop",lab:"beta",experimentalSub:"hartă experimentală",toggleList:"Afișează sau ascunde lista",openViews:"Deschide lista de vizualizări",expandList:"Extinde lista",collapseList:"Restrânge lista",collapse:"Restrânge","tab.prayer-walk-planner":"Plimbări de rugăciune","tab.upg-neighbor":"Vecin UPG","tab.key-cities":"Orașe-cheie","tab.all-people-groups":"Toate popoarele","tab.pplr-data-maps":"Hărți de date PPLR","tab.wall-of-people-groups":"Zidul popoarelor","tab.country-posters":"Afișe pe țări","tab.doxa-vision-card":"Card de viziune Doxa",desktopNotice:"Imaginea de ansamblu funcționează doar pe desktop — deschideți această pagină pe un computer pentru a o folosi."},ru:{"sec.dashboards":"Панели","sec.prayer":"Молитвенная мобилизация","sec.gospel":"Исследование Евангелия","sec.experimental":"Экспериментальное","tab.dashboard-plus-grid":"Общая картина","sub.dashboard-plus-grid":"панель + таблица народов","tab.research-map":"Исследовательская карта","sub.research-map":"молитва · вовлечённость · регионы","tab.research-map-plus-grid":"Простое исследование","sub.research-map-plus-grid":"исследовательская карта + таблица народов","tab.prayer-map":"Прогресс молитвы","sub.prayer-map":"простая карта молитвы мира","tab.cities-internet":"Города с интернетом","sub.cities-internet":"подключённость ключевых городов","tab.gospel-resources":"Евангельские ресурсы","sub.gospel-resources":"ресурсы по местам","tab.regions-dashboard":"Регионы","sub.regions-dashboard":"регионы и их страны","tab.gospel-internet":"Евангелие и интернет","sub.gospel-internet":"доступ к Евангелию через интернет","tab.upg-100":"Список UPG-100","sub.upg-100":"мой список недостигнутых + плакаты",navLabel:"Исследовательские карты",meta:"Карт: {n}",loading:"Загрузка: {label}…",loadFailed:"Не удалось загрузить: {label}.",manifestHint:"Эта вкладка собирается из manifest.json — соберите дерево или разместите собранное дерево, чтобы загрузить её.",desktopOnly:"только на компьютере",lab:"бета",experimentalSub:"экспериментальная карта",toggleList:"Показать или скрыть список",openViews:"Открыть список представлений",expandList:"Развернуть список",collapseList:"Свернуть список",collapse:"Свернуть","tab.prayer-walk-planner":"Молитвенные прогулки","tab.upg-neighbor":"Сосед UPG","tab.key-cities":"Ключевые города","tab.all-people-groups":"Все народы","tab.pplr-data-maps":"Карты данных PPLR","tab.wall-of-people-groups":"Стена народов","tab.country-posters":"Плакаты по странам","tab.doxa-vision-card":"Карточка видения Doxa",desktopNotice:"«Общая картина» работает только на компьютере — откройте эту страницу на компьютере."},ar:{"sec.dashboards":"لوحات المعلومات","sec.prayer":"التعبئة للصلاة","sec.gospel":"أبحاث الإنجيل","sec.experimental":"تجريبي","tab.dashboard-plus-grid":"الصورة الكاملة","sub.dashboard-plus-grid":"لوحة معلومات + شبكة الشعوب","tab.research-map":"خريطة البحث","sub.research-map":"الصلاة · الانخراط · المناطق","tab.research-map-plus-grid":"بحث مبسّط","sub.research-map-plus-grid":"خريطة البحث + شبكة الشعوب","tab.prayer-map":"تقدم الصلاة","sub.prayer-map":"خريطة عالمية مبسّطة للصلاة","tab.cities-internet":"مدن متصلة بالإنترنت","sub.cities-internet":"اتصال المدن الرئيسية","tab.gospel-resources":"موارد الإنجيل","sub.gospel-resources":"الموارد حسب المكان","tab.regions-dashboard":"المناطق","sub.regions-dashboard":"المناطق ودولها","tab.gospel-internet":"الإنجيل والإنترنت","sub.gospel-internet":"الوصول إلى الإنجيل عبر الإنترنت","tab.upg-100":"قائمة UPG-100","sub.upg-100":"قائمتي لغير المُبشَّرين + ملصقات",navLabel:"خرائط البحث",meta:"عدد الخرائط: {n}",loading:"جارٍ تحميل {label}…",loadFailed:"تعذّر تحميل {label}.",manifestHint:"تُبنى علامة التبويب هذه من manifest.json — ابنِ الشجرة أو قدّم الشجرة المبنية لتحميلها.",desktopOnly:"على الحاسوب فقط",lab:"تجريبي",experimentalSub:"خريطة تجريبية",toggleList:"إظهار القائمة أو إخفاؤها",openViews:"فتح قائمة العروض",expandList:"توسيع القائمة",collapseList:"طي القائمة",collapse:"طي","tab.prayer-walk-planner":"جولات الصلاة","tab.upg-neighbor":"جار UPG","tab.key-cities":"المدن الرئيسية","tab.all-people-groups":"جميع الشعوب","tab.pplr-data-maps":"خرائط بيانات PPLR","tab.wall-of-people-groups":"جدار الشعوب","tab.country-posters":"ملصقات الدول","tab.doxa-vision-card":"بطاقة رؤية Doxa",desktopNotice:"تعمل «الصورة الكاملة» على الحاسوب فقط — افتح هذه الصفحة على حاسوب لاستخدامها."},hi:{"sec.dashboards":"डैशबोर्ड","sec.prayer":"प्रार्थना संचालन","sec.gospel":"सुसमाचार शोध","sec.experimental":"प्रायोगिक","tab.dashboard-plus-grid":"संपूर्ण चित्र","sub.dashboard-plus-grid":"डैशबोर्ड + जनसमूहों की ग्रिड","tab.research-map":"शोध मानचित्र","sub.research-map":"प्रार्थना · सहभागिता · क्षेत्र","tab.research-map-plus-grid":"सरल शोध","sub.research-map-plus-grid":"शोध मानचित्र + जनसमूहों की ग्रिड","tab.prayer-map":"प्रार्थना प्रगति","sub.prayer-map":"सरल विश्व प्रार्थना मानचित्र","tab.cities-internet":"इंटरनेट वाले शहर","sub.cities-internet":"प्रमुख शहरों की कनेक्टिविटी","tab.gospel-resources":"सुसमाचार संसाधन","sub.gospel-resources":"स्थान के अनुसार संसाधन","tab.regions-dashboard":"क्षेत्र","sub.regions-dashboard":"क्षेत्र और उनके देश","tab.gospel-internet":"सुसमाचार और इंटरनेट","sub.gospel-internet":"इंटरनेट के माध्यम से सुसमाचार तक पहुँच","tab.upg-100":"UPG-100 सूची","sub.upg-100":"मेरी अप्राप्त सूची + पोस्टर",navLabel:"शोध मानचित्र",meta:"{n} मानचित्र",loading:"{label} लोड हो रहा है…",loadFailed:"{label} लोड नहीं हो सका।",manifestHint:"यह टैब manifest.json से बनता है — इसे लोड करने के लिए ट्री बनाएँ या बना हुआ ट्री सर्व करें।",desktopOnly:"केवल डेस्कटॉप",lab:"बीटा",experimentalSub:"प्रायोगिक मानचित्र",toggleList:"सूची दिखाएँ या छिपाएँ",openViews:"दृश्यों की सूची खोलें",expandList:"सूची फैलाएँ",collapseList:"सूची संक्षिप्त करें",collapse:"संक्षिप्त करें","tab.prayer-walk-planner":"प्रार्थना पदयात्रा","tab.upg-neighbor":"UPG पड़ोसी","tab.key-cities":"प्रमुख शहर","tab.all-people-groups":"सभी जनसमूह","tab.pplr-data-maps":"PPLR डेटा मानचित्र","tab.wall-of-people-groups":"जनसमूहों की दीवार","tab.country-posters":"देश पोस्टर","tab.doxa-vision-card":"Doxa दर्शन कार्ड",desktopNotice:"संपूर्ण चित्र केवल डेस्कटॉप पर काम करता है — इसे उपयोग करने के लिए यह पेज कंप्यूटर पर खोलें।"},zh:{"sec.dashboards":"仪表板","sec.prayer":"祷告动员","sec.gospel":"福音研究","sec.experimental":"实验性","tab.dashboard-plus-grid":"全景","sub.dashboard-plus-grid":"仪表板 + 民族网格","tab.research-map":"研究地图","sub.research-map":"祷告 · 参与 · 区域","tab.research-map-plus-grid":"简易研究","sub.research-map-plus-grid":"研究地图 + 民族网格","tab.prayer-map":"祷告进度","sub.prayer-map":"简易世界祷告地图","tab.cities-internet":"有互联网的城市","sub.cities-internet":"主要城市的网络连接","tab.gospel-resources":"福音资源","sub.gospel-resources":"按地点划分的资源","tab.regions-dashboard":"区域","sub.regions-dashboard":"区域及其国家","tab.gospel-internet":"福音与互联网","sub.gospel-internet":"通过互联网接触福音","tab.upg-100":"UPG-100 名单","sub.upg-100":"我的未得之民名单 + 海报",navLabel:"研究地图",meta:"{n} 张地图",loading:"正在加载{label}…",loadFailed:"无法加载{label}。",manifestHint:"此标签页由 manifest.json 组成——请构建目录树或提供已构建的目录树以加载它。",desktopOnly:"仅限桌面",lab:"测试版",experimentalSub:"实验性地图",toggleList:"显示或隐藏列表",openViews:"打开视图列表",expandList:"展开列表",collapseList:"折叠列表",collapse:"折叠","tab.prayer-walk-planner":"祷告行走","tab.upg-neighbor":"UPG 邻居","tab.key-cities":"重点城市","tab.all-people-groups":"所有民族","tab.pplr-data-maps":"PPLR 数据地图","tab.wall-of-people-groups":"民族之墙","tab.country-posters":"国家海报","tab.doxa-vision-card":"Doxa 异象卡",desktopNotice:"全景仅支持桌面设备——请在电脑上打开此页面使用。"}},xs=Object.keys(Ht);function hc(e){return Object.prototype.hasOwnProperty.call(Ht.en,e)}function wo(e,t,o){let n=(Ht[e]||Ht.en)[t]??Ht.en[t]??t;if(o)for(const i in o)n=n.split("{"+i+"}").join(String(o[i]));return n}const bc=":host{display:block;position:relative;height:var(--doxa-maps-spa-height, 85vh);min-height:480px}:host{font-size:16px;line-height:normal;font-weight:400;font-style:normal;font-variant:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-align:start;text-indent:0;text-shadow:none;white-space:normal;-webkit-hyphens:manual;hyphens:manual;visibility:visible;cursor:auto}:host([hidden]){display:none}.dms-pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}.dms-slot{position:relative;min-height:100%}.dms-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:#6d766e;font-size:13px;padding:20px}.dms-hint.err{color:#f87171}.dms-hint small{color:var(--dx-muted, #6d766e)}.dms-notice{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:40;max-width:320px;text-align:center;font-size:13px;line-height:1.4;color:#3b463d;background:#fff;border:1px solid #d1d4cd;border-radius:10px;padding:10px 16px;box-shadow:0 8px 24px #0000001f}.dms-logo{display:inline-flex;align-items:center}.dms-logo svg{display:block}.dms-locale{position:relative;padding:8px 12px 0;display:flex;justify-content:flex-end}.dms-locale-btn{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:12px;padding:5px 10px;border:1px solid #d1d4cd;border-radius:8px;background:#d1d4cd;color:#3b463d;cursor:pointer}.dms-locale-btn:hover{background:#d1d4cd}.dms-flag{font-size:14px;line-height:1}.dms-locale-name{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dms-dots{color:#6d766e;margin-left:2px}.dms-locale-menu{position:absolute;top:100%;right:12px;margin-top:4px;z-index:30;min-width:180px;list-style:none;padding:6px;border:1px solid #d1d4cd;border-radius:10px;background:#fff;box-shadow:0 12px 32px #00000080;max-height:320px;overflow:auto}.dms-locale-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;font:inherit;font-size:13px;padding:7px 9px;border:0;border-radius:7px;background:none;color:#3b463d;cursor:pointer}.dms-locale-opt:hover,.dms-locale-opt.active{background:#d1d4cd;color:#3b463d}.dms-locale-opt.active .dms-locale-name{color:#92b195}.dms-locale-en{margin-left:auto;font-size:11px;color:#6d766e}";function ki(){try{const e=new URLSearchParams(location.search),t=(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase();if(xs.includes(t))return t}catch{}try{const e=(document.documentElement.lang||"").split("-")[0].toLowerCase();if(xs.includes(e))return e}catch{}return""}const ws=[{key:"dashboards",label:"Dashboards",i18n:"sec.dashboards",icon:"chart",tabs:[{id:"dashboard-plus-grid",icon:"chart"},{id:"research-map-plus-grid",icon:"map"},{id:"regions-dashboard",icon:"map"},{id:"gospel-internet",icon:"chart"}]},{key:"prayer-mobilization",label:"Prayer Mobilization",i18n:"sec.prayer",icon:"heart",tabs:[{id:"upg-100",icon:"list"},{id:"prayer-map",icon:"embed"}]},{key:"gospel-research",label:"Gospel Research",i18n:"sec.gospel",icon:"search",tabs:[{id:"cities-internet",icon:"wifi"},{id:"gospel-resources",icon:"book"}]},{key:"experimental",label:"Experimental",i18n:"sec.experimental",icon:"flask",folder:!0,open:!1,tabs:[]}],mc=new Set(["doxa-maps-spa","plugin-studio","template-bundle","people-groups-grid","research-dashboard","big-picture","demo-map","golden-path-check","doxa-research-map","stack-demo"]),Li={"prayer-walk-planner":1,"upg-neighbor":2,"key-cities":3,"all-people-groups":4,"country-posters":5,"doxa-vision-card":6},Ps=[{id:"dashboard-plus-grid",label:"Big Picture",sub:"dashboard + people-groups grid, stacked",emoji:"🌍",bundle:"dashboard-plus-grid",profile:"dashboard-plus-grid"},{id:"research-map",label:"Research Map",sub:"prayer · engagement · regions",emoji:"🗺️",bundle:"doxa-research-map",profile:"research-map"},{id:"research-map-plus-grid",label:"Simple Research",sub:"research map + people-groups grid",emoji:"🗺️",bundle:"research-map-plus-grid",profile:"research-map-plus-grid"},{id:"prayer-map",label:"Prayer Progress",sub:"simple world prayer map",emoji:"🙏",bundle:"doxa-simple-map",profile:"doxa-simple-map",instance:"prayer"},{id:"cities-internet",label:"Cities with Internet",sub:"connectivity of key cities",emoji:"📡",bundle:"cities-internet",profile:"connectivity-map"},{id:"gospel-resources",label:"Gospel Resources",sub:"resources by place",emoji:"📖",bundle:"gospel-resources",profile:"resources-map"},{id:"regions-dashboard",label:"Regions",sub:"regions and their countries",emoji:"🌐",bundle:"regions-dashboard",profile:"regions-mfe"},{id:"gospel-internet",label:"Gospel x Internet",sub:"gospel access through the internet",emoji:"📶",bundle:"gospel-internet",profile:"board"},{id:"upg-100",label:"UPG-100 List",sub:"my unreached list + posters",emoji:"📋",bundle:"my-upg-100-list",profile:"upg-100-mfe"}];$c(ws);const Po=new Set(["doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-map","doxa-maps-spa","dashboard-plus-grid","research-dashboard-map","demo-map","all-people-groups","country-posters-map","key-cities-map","research-map-plus-grid","gospel-internet-board"]),ko=new Set(["dashboard-plus-grid","research-map-plus-grid"]);function _c(){const e=Object.fromEntries(Ps.map(o=>[o.id,o])),t=new Set;for(const o of ws)if(o.key!=="experimental")for(const s of o.tabs||[]){const n=e[s.id];n&&n.bundle&&t.add(n.bundle)}return t}function Si(e,t){const o=[];for(const s of e)!s||t.has(s.key)||(t.add(s.key),o.push(s));return o}function $c(e){const t=new Map,o=[];for(const s of e)if(s.key!=="experimental")for(const n of s.tabs||[]){if(!n||!n.id)continue;const i=t.get(n.id);if(i===void 0){t.set(n.id,s.key);continue}(i!==s.key||o.indexOf(n.id)===-1)&&o.push(n.id+" ("+i+" + "+s.key+")")}return o.length&&typeof console<"u"&&console.error("[doxa-maps-spa] duplicate tab key(s) across NAV_MODEL sections: "+o.join(", ")+" — VerticalTabsLayout keys its tab-ref map and `active` highlight by id, so a row declared in two sections paints twice and stalls keyboard nav. See the duplicate-key trap in SPEC-the-six-map-product-and-its-tab-order.md."),o}function vc(e){return String(e).split(/[-_]/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function yc(e){const t=_c(),o=e&&Array.isArray(e.bundles)?e.bundles:[],s=[];for(const n of o){const i=n&&n.bundle;if(!i||t.has(i)||mc.has(i))continue;const a=Array.isArray(n.profiles)?n.profiles:[];if(!a.length)continue;const r=a.find(d=>d.isMap)||a.find(d=>d.profile===i)||a[0],l=r.element||Array.isArray(n.elements)&&n.elements[0]||i,u=n.scriptUrl||r.scriptUrl||"";u&&s.push({id:i,label:r.title||vc(i),sub:(r.description||"").trim().replace(/[,;]\s*$/,"")||"experimental bundle",emoji:"🧪",tag:l,bundle:i,profile:r.profile||i,scriptUrl:u,heavy:Po.has(l)||Po.has(i),scroll:ko.has(l)||ko.has(i),discovered:!0})}return s.sort((n,i)=>{const a=Li[n.id]||999,r=Li[i.id]||999;return a!==r?a-r:n.label.localeCompare(i.label)}),s}function xc(e,t){const o=e&&Array.isArray(e.bundles)?e.bundles:[],s=Object.fromEntries(o.map(i=>[i.bundle,i])),n={};for(const i of t){const a=s[i.bundle];if(!a)continue;const r=Array.isArray(a.profiles)?a.profiles:[],l=r.find(P=>P.profile===i.profile)||r[0],u=l&&l.element||Array.isArray(a.elements)&&a.elements[0]||i.bundle,d=a.scriptUrl||l&&l.scriptUrl||"";if(!d)continue;const g=l&&Array.isArray(l.instances)?l.instances:[],x=!!(i.instance&&g.some(P=>(P&&(P.id||P.instance))===i.instance));n[i.id]={tag:u,scriptUrl:d,profile:l&&l.profile||i.profile,instance:x?i.instance:"",heavy:Po.has(u)||Po.has(i.bundle),scroll:ko.has(u)||ko.has(i.bundle)}}return n}const jt={};function wc(e,t){return jt[e]||(jt[e]=new Promise((o,s)=>{const n=document.createElement("script");n.src=e,(/^\/plugin-designs\//.test(e)||/\/index\.js(\?|$)/.test(e))&&(n.type="module"),n.onload=()=>o(),n.onerror=()=>{delete jt[e],s(new Error("failed to load "+e))},document.head.appendChild(n)})),jt[e]}function Pc(e,t){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():Promise.race([customElements.whenDefined(e),new Promise((o,s)=>setTimeout(()=>{customElements.get(e)||s(new Error("<"+e+"> never registered (bundle loaded but defined no element)"))},15e3))])}const kc=ss({name:"DoxaMapsSpa",inheritAttrs:!1,components:{VerticalTabsLayout:pc},props:{treeBase:{type:String,default:""},profileConfig:{type:[String,Object],default:""},heading:{type:String,default:"DX-Maps"},tokenUrl:{type:String,default:""},tk:{type:String,default:""},language:{type:String,default:""},apiBaseUrl:{type:String,default:""},provider:{type:String,default:""},tab:{type:String,default:""}},emits:["tab-change"],setup(){return{injectedBase:kt("dmsTreeBase","")}},data(){return{activeIndex:0,showHeader:!1,narrow:!1,_mql:null,_onMedia:null,disabledNotice:"",_noticeTimer:null,manifestError:"",manifestBase:"",runtime:{},locale:fc(),hostLang:ki(),localeOpen:!1,switcherLangs:dc,tabs:Ps.map(e=>({...e,tag:"",scriptUrl:"",heavy:!1,scroll:!1,resolved:!1,mounted:!1,state:"idle",error:""}))}},computed:{cfg(){let e=this.profileConfig;if(typeof e=="string")try{e=e?JSON.parse(e):{}}catch{e={}}return e&&typeof e=="object"?e:{}},base(){const e=(this.treeBase||this.cfg.treeBase||this.injectedBase||"").trim();return e?e.replace(/\/+$/,"")+"/":""},assetsBase(){const e=String(this.cfg.assetsBase||"").trim();return/^https?:\/\//i.test(e)||e.startsWith("/")?e.replace(/\/+$/,""):this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/assets":""},navGroups(){const e=Object.fromEntries(this.tabs.map(o=>[o.id,o])),t=new Set;return ws.map(o=>{let s=Si((o.tabs||[]).filter(n=>e[n.id]).map(n=>{const i=e[n.id],a=this.isBigPictureDisabled(i.id);return{key:i.id,label:this.tabLabel(i),sub:this.tabSub(i),icon:n.icon,badge:a?this.tr("desktopOnly"):n.badge,disabled:a}}),t);return o.key==="experimental"&&(s=s.concat(Si(this.tabs.filter(n=>n.discovered).map(n=>({key:n.id,label:this.tabLabel(n),sub:this.tabSub(n),icon:"flask",badge:this.tr("lab")})),t))),{key:o.key,label:o.i18n?this.tr(o.i18n):o.label,icon:o.icon,folder:!!o.folder,open:o.open,rows:s}}).filter(o=>o.rows.length)},showLocaleSwitcher(){return this.showHeader},activeLang(){return uc(this.locale)||{code:this.locale,flag:"🌐",nativeName:this.locale}},effectiveLocale(){const e=(this.language||this.cfg.language||this.cfg.locale||this.cfg.lang||"").trim(),t=this.showLocaleSwitcher?this.locale:"";return(e||t||this.hostLang||"en").split("-")[0].toLowerCase()},uiLocale(){return xs.includes(this.effectiveLocale)?this.effectiveLocale:"en"},uiDir(){return this.uiLocale==="ar"?"rtl":"ltr"},layoutLabels(){const e={};for(const t of["toggleList","openViews","expandList","collapseList","collapse"])e[t]=this.tr(t);return e},effectiveProvider(){const e=String(this.provider||this.cfg.provider||"").trim().toLowerCase();return e==="maplibre"||e==="mapbox"?e:""},activeKey(){const e=this.tabs[this.activeIndex];return e?e.id:""}},mounted(){this.watchWidth(),this.watchHostLang(),this.select(this.initialIndex()),this.loadManifest()},beforeUnmount(){this._langObs&&(this._langObs.disconnect(),this._langObs=null),!(!this._mql||!this._onMedia)&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia),this._mql=null,this._onMedia=null)},watch:{effectiveLocale(e){const t=this.tabs[this.activeIndex];if(!(!t||!t.mounted))try{const o=this._slots&&this._slots[this.activeIndex],s=o&&o.firstElementChild;s&&s.setAttribute&&s.setAttribute("profile-config",JSON.stringify(this.childConfig(t)))}catch{}},tab(e){e&&this.onSelect(e)}},methods:{setSlot(e,t){t&&(this._slots=Object.assign(this._slots||{},{[e]:t}))},tr(e,t){return wo(this.uiLocale,e,t)},t(e,t){return wo(this.uiLocale,e,t)},tabLabel(e){return!e.discovered||hc("tab."+e.id)?wo(this.uiLocale,"tab."+e.id):e.label},tabSub(e){return e.discovered?this.uiLocale==="en"?e.sub:this.tr("experimentalSub"):wo(this.uiLocale,"sub."+e.id)},watchHostLang(){typeof MutationObserver>"u"||typeof document>"u"||(this._langObs=new MutationObserver(()=>{this.hostLang=ki()}),this._langObs.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"]}))},watchWidth(){typeof window>"u"||!window.matchMedia||(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this._onMedia=e=>{const t=this.narrow;this.narrow=!!e.matches,t!==this.narrow&&this.isBigPictureDisabled(this.activeKey)&&this.select(this.firstVisibleIndex())},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))},isBigPictureDisabled(e){return e==="dashboard-plus-grid"&&this.narrow},firstVisibleIndex(){let e=-1;for(const t of this.navGroups)for(const o of t.rows){const s=this.tabs.findIndex(n=>n.id===o.key);if(!(s<0)&&(e<0&&(e=s),!o.disabled))return s}return e>=0?e:0},loadManifest(){const e=this.resolve("manifest.json"),t=u=>{try{return new URL(u,location.href).href.replace(/[^/]*$/,"")}catch{return""}},o={url:e,root:t(e)},s={url:this.resolve("doxa-maps-spa/manifest.json"),root:o.root};let n=!1;try{n=new URL(e,location.href).origin!==location.origin}catch{}const i=n?[s,o]:[o,s],a="/public/dx-maps/manifest.json";i.some(u=>u.url===a)||i.push({url:a,root:t(a)});const r=[],l=u=>{if(u>=i.length){this.manifestError="manifest.json not found (tried "+r.join(", ")+")",console.error("[doxa-maps-spa] "+this.manifestError+" — every tab except Big Picture is composed from it, so their panes cannot mount.");return}const{url:d,root:g}=i[u];return r.push(d),fetch(d,{credentials:"omit"}).then(x=>{if(!x||!x.ok)throw new Error(d+" → HTTP "+(x?x.status:"?"));return x.json()}).then(x=>{if(!x)throw new Error(d+" → empty");this.manifestError="",this.manifestBase=g||"",this.applyManifest(x)}).catch(()=>l(u+1))};try{l(0)}catch{}},applyManifest(e){this.runtime=e&&e.runtime&&typeof e.runtime=="object"?e.runtime:{},this.applyPageGlobals();const t=xc(e,Ps),o=this.activeKey,s=[];for(const l of this.tabs){if(l.discovered){s.push(l);continue}const u=t[l.id];u&&(Object.assign(l,u,{resolved:!0}),s.push(l))}const n=new Set(s.map(l=>l.id));for(const l of yc(e))n.has(l.id)||s.push({...l,resolved:!0,mounted:!1,state:"idle",error:""});this.tabs=s;const i=this.requestedTab(),a=i?this.tabs.findIndex(l=>l.id===i):-1,r=this.tabs.findIndex(l=>l.id===o);a>=0&&!this.isBigPictureDisabled(i)&&!this._honouredTab?this.select(a):this.select(r>=0?r:this.firstVisibleIndex()),this._honouredTab=!0},requestedTab(){let e="";try{e=new URLSearchParams(location.search).get("tab")||""}catch{}return String(this.tab||this.cfg.tab||e||"").trim()},initialIndex(){const e=this.requestedTab(),t=e?this.tabs.findIndex(o=>o.id===e):-1;return t>=0&&(this._honouredTab=!0),t>=0&&!this.isBigPictureDisabled(e)?t:this.firstVisibleIndex()},setLocale(e){this.locale=e,this.localeOpen=!1,gc(e)},onSelect(e){if(this.isBigPictureDisabled(e)){this.disabledNotice=this.tr("desktopNotice"),clearTimeout(this._noticeTimer),this._noticeTimer=setTimeout(()=>{this.disabledNotice=""},4e3);return}const t=this.tabs.findIndex(o=>o.id===e);t!==-1&&this.select(t)},resolve(e){const t=String(e);if(/^(https?:)?\/\//.test(t)||t.startsWith("/"))return t;const o=t.replace(/^\.\//,"");return this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/"+o:this.base?this.base.replace(/\/+$/,"")+"/"+o:"../"+o},select(e){const t=this.activeIndex;if(this.activeIndex=e,t!==e&&t>=0){const s=this.tabs[t];s&&s.heavy&&s.mounted&&this.releaseTab(t,s)}const o=this.tabs[e];o&&((t!==e||!this._announced)&&(this._announced=!0,this.$emit("tab-change",{id:o.id,label:o.label})),o.scriptUrl&&(o.mounted||this.$nextTick(()=>{this.activeIndex===e&&this.mountElement(e)})))},releaseTab(e,t){try{const o=this._slots&&this._slots[e];o&&(o.innerHTML="")}catch{}this._slots&&delete this._slots[e],t.mounted=!1,t.state="idle",t.error=""},childConfig(e){const t={profile:e.profile||e.id,instanceId:e.instance||"dms-"+e.id};this.effectiveLocale&&(t.locale=this.effectiveLocale);const o=this.tk||this.cfg.tk||this.runtime.token;return o&&(t.tk=o),(this.tokenUrl||this.cfg.tokenUrl)&&(t.tokenUrl=this.tokenUrl||this.cfg.tokenUrl),this.effectiveProvider&&(t.provider=this.effectiveProvider),this.base&&(t.treeBase=this.base),this.assetsBase&&(t.assetsBase=this.assetsBase),t.urlSync=!1,t},applyPageGlobals(){if(typeof window>"u")return;const e=(this.apiBaseUrl||this.cfg.apiBaseUrl||this.runtime.apiBaseUrl||"").trim();e&&!window.MAP_APP_API_URL&&(window.MAP_APP_API_URL=e.replace(/\/+$/,""));const t=this.tk||this.cfg.tk||this.runtime.token;t&&!window.MAP_TOKEN&&(window.MAP_TOKEN=t),this.effectiveProvider&&!window.MAP_PROVIDER&&(window.MAP_PROVIDER=this.effectiveProvider)},mountElement(e){const t=this.tabs[e];t.mounted=!0,t.state="loading";const o=this.resolve(t.scriptUrl);wc(o).then(()=>Pc(t.tag)).then(()=>{try{if(t.heavy&&this.activeIndex!==e){t.mounted=!1,t.state="idle";return}const s=this._slots&&this._slots[e];if(!s){t.state="error",t.error="no slot";return}s.innerHTML="";const n=document.createElement(t.tag);n.setAttribute("profile-config",JSON.stringify(this.childConfig(t))),this.base&&n.setAttribute("tree-base",this.base.replace(/\/+$/,"")),n.style.cssText=t.scroll?"display:block;position:static;width:100%;height:auto;":"display:block;position:absolute;inset:0;width:100%;height:100%;",s.appendChild(n),t.state="ready"}catch(s){t.state="error",t.error="mount failed: "+(s&&s.message||String(s))}}).catch(s=>{t.state="error",t.error=s&&s.message||String(s)})}}}),Lc={class:"dms-locale"},Sc=["aria-expanded"],Cc={class:"dms-flag"},Tc={class:"dms-locale-name"},Nc={key:0,class:"dms-locale-menu",role:"listbox"},Rc=["aria-selected"],Ec=["onClick"],Ac={class:"dms-flag"},Oc={class:"dms-locale-name"},Fc={class:"dms-locale-en"},Mc=["hidden"],Ic={key:0,class:"dms-hint"},Dc={key:1,class:"dms-hint err"},Hc={key:2,class:"dms-hint err"},jc={key:0,class:"dms-notice",role:"status"};function Gc(e,t,o,s,n,i){const a=Wa("VerticalTabsLayout");return A(),bo(a,{dir:e.uiDir,lang:e.uiLocale,labels:e.layoutLabels,title:e.heading,"nav-label":e.t("navLabel"),header:e.showHeader,groups:e.navGroups,active:e.activeKey,"onUpdate:active":e.onSelect},za({brand:Pt(()=>[t[1]||(t[1]=T("span",{class:"dms-logo","aria-hidden":"true"},[T("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[T("circle",{cx:"12",cy:"12",r:"9"}),T("polygon",{points:"12 6 14 12 12 18 10 12",fill:"#92b195",stroke:"none"}),T("polygon",{points:"6 12 12 10 18 12 12 14",fill:"#92b195",opacity:"0.55",stroke:"none"})])],-1))]),meta:Pt(()=>[gt(F(e.t("meta",{n:e.tabs.length})),1)]),default:Pt(()=>[(A(!0),O(ee,null,dt(e.tabs,(r,l)=>Qo((A(),O("section",{key:r.id,class:"dms-pane",hidden:l!==e.activeIndex},[!r.heavy||l===e.activeIndex?(A(),O(ee,{key:0},[T("div",{class:"dms-slot",ref_for:!0,ref:u=>e.setSlot(l,u)},null,512),r.state==="loading"?(A(),O("div",Ic,F(e.tr("loading",{label:e.tabLabel(r)})),1)):r.state==="error"?(A(),O("div",Dc,[gt(F(e.tr("loadFailed",{label:e.tabLabel(r)})),1),t[3]||(t[3]=T("br",null,null,-1)),T("small",null,F(r.error),1)])):r.state==="idle"&&!r.scriptUrl&&e.manifestError?(A(),O("div",Hc,[gt(F(e.tr("loadFailed",{label:e.tabLabel(r)})),1),t[4]||(t[4]=T("br",null,null,-1)),T("small",null,F(e.manifestError),1),t[5]||(t[5]=T("br",null,null,-1)),T("small",null,F(e.tr("manifestHint")),1)])):de("",!0)],64)):de("",!0)],8,Mc)),[[ms,l===e.activeIndex]])),128)),e.disabledNotice?(A(),O("div",jc,F(e.disabledNotice),1)):de("",!0)]),_:2},[e.showLocaleSwitcher?{name:"toolbar",fn:Pt(()=>[T("div",Lc,[T("button",{type:"button",class:"dms-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":"Change language",onClick:t[0]||(t[0]=r=>e.localeOpen=!e.localeOpen)},[T("span",Cc,F(e.activeLang.flag),1),T("span",Tc,F(e.activeLang.nativeName),1),t[2]||(t[2]=T("span",{class:"dms-dots","aria-hidden":"true"},"⋮",-1))],8,Sc),e.localeOpen?(A(),O("ul",Nc,[(A(!0),O(ee,null,dt(e.switcherLangs,r=>(A(),O("li",{key:r.code,role:"option","aria-selected":String(r.code===e.locale)},[T("button",{type:"button",class:Be(["dms-locale-opt",{active:r.code===e.locale}]),onClick:l=>e.setLocale(r.code)},[T("span",Ac,F(r.flag),1),T("span",Oc,F(r.nativeName),1),T("span",Fc,F(r.name),1)],10,Ec)],8,Rc))),128))])):de("",!0)])]),key:"0"}:void 0]),1032,["dir","lang","labels","title","nav-label","header","groups","active","onUpdate:active"])}const Wc=xi(kc,[["render",Gc],["styles",[bc]]]);function Uc(){try{const e=typeof document<"u"&&document.currentScript&&document.currentScript.src||"";return e?e.replace(/[^/]+\/[^/]+$/,"").replace(/\/+$/,"")+"/":""}catch{return""}}const Vc=Uc(),zc=tl(Wc,{configureApp(e){e.provide("dmsTreeBase",Vc)}});typeof customElements<"u"&&!customElements.get("doxa-maps-spa")&&customElements.define("doxa-maps-spa",zc)})(); diff --git a/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html b/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html index bf2c27f76..89d3d0b20 100644 --- a/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html +++ b/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html @@ -32,7 +32,7 @@ - + - + \n\n" + "script": "\n\n" }, "instances": [ { diff --git a/public/dx-maps/manifest.json b/public/dx-maps/manifest.json index a8213fb51..36d803fe3 100644 --- a/public/dx-maps/manifest.json +++ b/public/dx-maps/manifest.json @@ -301,7 +301,7 @@ "bundle": "doxa-maps-spa", "scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js", "output": "dx-maps/doxa-maps-spa/doxa-maps-spa.js", - "integrity": "sha384-fpwC0zTBhbE2VKKQwhs9q/81s/f0sTm5kVtkwiSA6mUHjNJTzS7go+dGxdSqEx1C", + "integrity": "sha384-ZaUaF0Dx4UBlHI8JhLyifYVUt9vkrjG64kS+DIwF/YcownDDi5uh8zJ5GRqllen5", "elements": [ "doxa-maps-spa" ], @@ -309,6 +309,7 @@ "dashboard-plus-grid/dashboard-plus-grid", "research-map-plus-grid/research-map-plus-grid", "regions-dashboard/regions-mfe", + "gospel-internet/board", "my-upg-100-list/upg-100-mfe", "doxa-simple-map/doxa-simple-map", "cities-internet/connectivity-map", @@ -326,7 +327,7 @@ "scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" }, "instances": [ {