const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/cashu-Dwu7xxGi.js","assets/markdown-renderer-Ba0-EuJ2.js","assets/tiptap-CmPySxeD.js","assets/nostr-tools-BeLUcwx9.js","assets/bitcoin-connect-CgMxCq0O.js","assets/emoji-picker-CU8iOwOI.js","assets/react-lightbox-DJAeBzyN.js","assets/index-BbUxTEaU.js","assets/index-DIms1Azv.js","assets/user-round-C6YMxpMs.js","assets/index-CL2oYiWJ.js","assets/index-DMHcdOZv.js","assets/index-BqhXoPLz.js","assets/arrow-up-DUZ4CCXp.js","assets/useInfiniteScroll-HueDssGE.js","assets/index-Dfz_hzRh.js","assets/index-DeLR8wmc.js","assets/index-D4_UBvPJ.js","assets/index-BbhW2YzF.js","assets/user-aggregation.service-D7gPvq5l.js","assets/history-9yeWnBcO.js","assets/index-C2MGRYNf.js","assets/index-DJRz1OvF.js","assets/user-plus-Dassotoe.js","assets/compass-BijSr7Oc.js","assets/search-L5dHwbhT.js","assets/index-zWl22pQq.js","assets/log-out-CWyl86Oj.js","assets/index-BYzpkNH3.js","assets/index-DQwbAxoh.js","assets/textarea-BLhfREON.js","assets/index-BWYVb0GO.js","assets/index-C62Me_NF.js","assets/settings-2-Bq1NIfyL.js","assets/lock-DAP07Tzy.js","assets/select-Cetb3DJY.js","assets/upload-B99k32uP.js","assets/circle-alert-89n4oZSc.js","assets/index-CxPWBZW7.js","assets/index-DL9bmpS6.js","assets/index-QCXhNbL2.js","assets/index-B7r8f_Lp.js","assets/index-CV6jOZmY.js","assets/index-Bb5glGYg.js","assets/qr-code-DJ1JHTxZ.js","assets/settings-DzDjpGc1.js","assets/index-ChyvGBtW.js","assets/index--wzhOgGI.js","assets/useFetchFollowings-DJZvj2tB.js","assets/index-DWi5OjXh.js","assets/index-xJrkrF9b.js","assets/useFetchRelayList-CCl-jvT_.js","assets/index-CjFZO1u4.js","assets/index-bPTyOykL.js","assets/index-DyaQOsXg.js","assets/index-wTybmkXm.js","assets/useSearchProfiles-Dt39wkI3.js","assets/index-DNCyPWJp.js","assets/index-j_d8BVcm.js","assets/index-BoI5cnkv.js","assets/index-DuMjx_EN.js","assets/index-WHwPXb4f.js","assets/index-BsKLCOZz.js","assets/index-CB6Pk8O_.js","assets/circle-x-CtI2jkIC.js","assets/rotate-ccw-Cb-ipMeF.js","assets/refresh-cw-ByDow7Ea.js","assets/index-CovvrUbB.js","assets/index-CK2yhaag.js","assets/index-BqLqp8Mj.js","assets/index-Du0tucCA.js","assets/index-BGx3q0hk.js","assets/index-IYMg_LP0.js","assets/index-DzYPbxpn.js","assets/index-CvB3QaCA.js","assets/index-DSuG9U_I.js","assets/index-BGShpHUr.js","assets/index-CIo0TudW.js","assets/index-CJSH7i_Z.js","assets/index-B0LC8wSQ.js","assets/index-YOBxoZS1.js","assets/index-DTJMT98J.js","assets/index-ClTrVmDl.js","assets/drag-drop-DehuJjzc.js","assets/ellipsis-vertical-BKOh9xD0.js","assets/index-D0cQjrO2.js","assets/TransactionItem-DlhGMF1x.js","assets/clock-BTYqvUVm.js","assets/index-Bi358Bn2.js","assets/index-DY-EdraV.js","assets/index-CJYSkaKH.js","assets/index-CIRqWV1H.js","assets/index-DVXpeR7e.js","assets/index-BGe9gThj.js","assets/index-B6ijbHvY.js","assets/index-DFogG7sn.js","assets/index-e6u6ABYk.js","assets/index-Bxms6KKB.js","assets/index-Bu9DYd1E.js","assets/index-BzteO95_.js","assets/index-CZu0gGma.js","assets/index-CV5fTo0J.js","assets/index-CDg60UOa.js","assets/index-DDIBnuWm.js"])))=>i.map(i=>d[i]);
var uE=Object.defineProperty;var eg=n=>{throw TypeError(n)};var dE=(n,e,t)=>e in n?uE(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var H=(n,e,t)=>dE(n,typeof e!="symbol"?e+"":e,t),jd=(n,e,t)=>e.has(n)||eg("Cannot "+t);var $=(n,e,t)=>(jd(n,e,"read from private field"),t?t.call(n):e.get(n)),mt=(n,e,t)=>e.has(n)?eg("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),We=(n,e,t,o)=>(jd(n,e,"write to private field"),o?o.call(n,t):e.set(n,t),t),Ie=(n,e,t)=>(jd(n,e,"access private method"),t);var ql=(n,e,t,o)=>({set _(a){We(n,e,a,t)},get _(){return $(n,e,o)}});import{j as c,v as l1,M as c1,r as u1}from"./markdown-renderer-Ba0-EuJ2.js";import{g as Ru,r as h,c as fE,R as ee,d as d1,e as dl,a as _i,s as f1,f as h1,E as hE,P as pE,T as p1,N as jf,h as mE,i as m1,j as g1,t as y1,k as gE,l as yE,m as Hl,S as wE,u as vE,D as bE,n as kE,o as SE,H as xE,p as AE,q as EE,v as RE}from"./tiptap-CmPySxeD.js";import{k as Z,g as nn,h as io,n as Nt,a as fl,S as CE,m as tg,i as PE,s as w1,j as v1,d as Cu,l as xr,r as zc,e as b1,o as k1,p as cp,q as As,t as Ai,f as vo,u as NE,b as Ro,v as TE,w as jE,x as wo,y as S1,z as ng,A as zd,B as x1,C as zE,D as og}from"./nostr-tools-BeLUcwx9.js";import{j as Es,_ as Ve,O as IE,H as ag,M as LE,U as ME}from"./bitcoin-connect-CgMxCq0O.js";import{S as DE,E as _E,T as FE,a as OE,b as UE,c as BE}from"./emoji-picker-CU8iOwOI.js";import{c as up,u as Da,I as A1,a as E1,P as rg,i as hl,b as VE,m as WE,d as pl,e as Ts,f as zf,g as qE,h as $l,C as HE,j as $E,k as YE,l as KE,n as Pu,o as R1,p as Wo,r as C1,q as GE,s as JE,t as ZE,E as QE,v as XE,U as eR,w as tR,x as nR,y as oR,L as P1}from"./react-lightbox-DJAeBzyN.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))o(a);new MutationObserver(a=>{for(const r of a)if(r.type==="childList")for(const i of r.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&o(i)}).observe(document,{childList:!0,subtree:!0});function t(a){const r={};return a.integrity&&(r.integrity=a.integrity),a.referrerPolicy&&(r.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?r.credentials="include":a.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function o(a){if(a.ep)return;a.ep=!0;const r=t(a);fetch(a.href,r)}})();var gc={exports:{}},aR=gc.exports,ig;function rR(){return ig||(ig=1,function(n,e){(function(t,o){n.exports=o()})(aR,function(){var t=1e3,o=6e4,a=36e5,r="millisecond",i="second",s="minute",l="hour",u="day",f="week",d="month",p="quarter",m="year",g="date",y="Invalid Date",w=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,v=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,k={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(j){var L=["th","st","nd","rd"],I=j%100;return"["+j+(L[(I-20)%10]||L[I]||L[0])+"]"}},E=function(j,L,I){var b=String(j);return!b||b.length>=L?j:""+Array(L+1-b.length).join(I)+j},A={s:E,z:function(j){var L=-j.utcOffset(),I=Math.abs(L),b=Math.floor(I/60),S=I%60;return(L<=0?"+":"-")+E(b,2,"0")+":"+E(S,2,"0")},m:function j(L,I){if(L.date()<I.date())return-j(I,L);var b=12*(I.year()-L.year())+(I.month()-L.month()),S=L.clone().add(b,d),z=I-S<0,F=L.clone().add(b+(z?-1:1),d);return+(-(b+(I-S)/(z?S-F:F-S))||0)},a:function(j){return j<0?Math.ceil(j)||0:Math.floor(j)},p:function(j){return{M:d,y:m,w:f,d:u,D:g,h:l,m:s,s:i,ms:r,Q:p}[j]||String(j||"").toLowerCase().replace(/s$/,"")},u:function(j){return j===void 0}},N="en",T={};T[N]=k;var C="$isDayjsObject",P=function(j){return j instanceof W||!(!j||!j[C])},M=function j(L,I,b){var S;if(!L)return N;if(typeof L=="string"){var z=L.toLowerCase();T[z]&&(S=z),I&&(T[z]=I,S=z);var F=L.split("-");if(!S&&F.length>1)return j(F[0])}else{var D=L.name;T[D]=L,S=D}return!b&&S&&(N=S),S||!b&&N},U=function(j,L){if(P(j))return j.clone();var I=typeof L=="object"?L:{};return I.date=j,I.args=arguments,new W(I)},O=A;O.l=M,O.i=P,O.w=function(j,L){return U(j,{locale:L.$L,utc:L.$u,x:L.$x,$offset:L.$offset})};var W=function(){function j(I){this.$L=M(I.locale,null,!0),this.parse(I),this.$x=this.$x||I.x||{},this[C]=!0}var L=j.prototype;return L.parse=function(I){this.$d=function(b){var S=b.date,z=b.utc;if(S===null)return new Date(NaN);if(O.u(S))return new Date;if(S instanceof Date)return new Date(S);if(typeof S=="string"&&!/Z$/i.test(S)){var F=S.match(w);if(F){var D=F[2]-1||0,q=(F[7]||"0").substring(0,3);return z?new Date(Date.UTC(F[1],D,F[3]||1,F[4]||0,F[5]||0,F[6]||0,q)):new Date(F[1],D,F[3]||1,F[4]||0,F[5]||0,F[6]||0,q)}}return new Date(S)}(I),this.init()},L.init=function(){var I=this.$d;this.$y=I.getFullYear(),this.$M=I.getMonth(),this.$D=I.getDate(),this.$W=I.getDay(),this.$H=I.getHours(),this.$m=I.getMinutes(),this.$s=I.getSeconds(),this.$ms=I.getMilliseconds()},L.$utils=function(){return O},L.isValid=function(){return this.$d.toString()!==y},L.isSame=function(I,b){var S=U(I);return this.startOf(b)<=S&&S<=this.endOf(b)},L.isAfter=function(I,b){return U(I)<this.startOf(b)},L.isBefore=function(I,b){return this.endOf(b)<U(I)},L.$g=function(I,b,S){return O.u(I)?this[b]:this.set(S,I)},L.unix=function(){return Math.floor(this.valueOf()/1e3)},L.valueOf=function(){return this.$d.getTime()},L.startOf=function(I,b){var S=this,z=!!O.u(b)||b,F=O.p(I),D=function(we,ke){var Ee=O.w(S.$u?Date.UTC(S.$y,ke,we):new Date(S.$y,ke,we),S);return z?Ee:Ee.endOf(u)},q=function(we,ke){return O.w(S.toDate()[we].apply(S.toDate("s"),(z?[0,0,0,0]:[23,59,59,999]).slice(ke)),S)},J=this.$W,ae=this.$M,ge=this.$D,ie="set"+(this.$u?"UTC":"");switch(F){case m:return z?D(1,0):D(31,11);case d:return z?D(1,ae):D(0,ae+1);case f:var de=this.$locale().weekStart||0,he=(J<de?J+7:J)-de;return D(z?ge-he:ge+(6-he),ae);case u:case g:return q(ie+"Hours",0);case l:return q(ie+"Minutes",1);case s:return q(ie+"Seconds",2);case i:return q(ie+"Milliseconds",3);default:return this.clone()}},L.endOf=function(I){return this.startOf(I,!1)},L.$set=function(I,b){var S,z=O.p(I),F="set"+(this.$u?"UTC":""),D=(S={},S[u]=F+"Date",S[g]=F+"Date",S[d]=F+"Month",S[m]=F+"FullYear",S[l]=F+"Hours",S[s]=F+"Minutes",S[i]=F+"Seconds",S[r]=F+"Milliseconds",S)[z],q=z===u?this.$D+(b-this.$W):b;if(z===d||z===m){var J=this.clone().set(g,1);J.$d[D](q),J.init(),this.$d=J.set(g,Math.min(this.$D,J.daysInMonth())).$d}else D&&this.$d[D](q);return this.init(),this},L.set=function(I,b){return this.clone().$set(I,b)},L.get=function(I){return this[O.p(I)]()},L.add=function(I,b){var S,z=this;I=Number(I);var F=O.p(b),D=function(ae){var ge=U(z);return O.w(ge.date(ge.date()+Math.round(ae*I)),z)};if(F===d)return this.set(d,this.$M+I);if(F===m)return this.set(m,this.$y+I);if(F===u)return D(1);if(F===f)return D(7);var q=(S={},S[s]=o,S[l]=a,S[i]=t,S)[F]||1,J=this.$d.getTime()+I*q;return O.w(J,this)},L.subtract=function(I,b){return this.add(-1*I,b)},L.format=function(I){var b=this,S=this.$locale();if(!this.isValid())return S.invalidDate||y;var z=I||"YYYY-MM-DDTHH:mm:ssZ",F=O.z(this),D=this.$H,q=this.$m,J=this.$M,ae=S.weekdays,ge=S.months,ie=S.meridiem,de=function(ke,Ee,G,te){return ke&&(ke[Ee]||ke(b,z))||G[Ee].slice(0,te)},he=function(ke){return O.s(D%12||12,ke,"0")},we=ie||function(ke,Ee,G){var te=ke<12?"AM":"PM";return G?te.toLowerCase():te};return z.replace(v,function(ke,Ee){return Ee||function(G){switch(G){case"YY":return String(b.$y).slice(-2);case"YYYY":return O.s(b.$y,4,"0");case"M":return J+1;case"MM":return O.s(J+1,2,"0");case"MMM":return de(S.monthsShort,J,ge,3);case"MMMM":return de(ge,J);case"D":return b.$D;case"DD":return O.s(b.$D,2,"0");case"d":return String(b.$W);case"dd":return de(S.weekdaysMin,b.$W,ae,2);case"ddd":return de(S.weekdaysShort,b.$W,ae,3);case"dddd":return ae[b.$W];case"H":return String(D);case"HH":return O.s(D,2,"0");case"h":return he(1);case"hh":return he(2);case"a":return we(D,q,!0);case"A":return we(D,q,!1);case"m":return String(q);case"mm":return O.s(q,2,"0");case"s":return String(b.$s);case"ss":return O.s(b.$s,2,"0");case"SSS":return O.s(b.$ms,3,"0");case"Z":return F}return null}(ke)||F.replace(":","")})},L.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},L.diff=function(I,b,S){var z,F=this,D=O.p(b),q=U(I),J=(q.utcOffset()-this.utcOffset())*o,ae=this-q,ge=function(){return O.m(F,q)};switch(D){case m:z=ge()/12;break;case d:z=ge();break;case p:z=ge()/3;break;case f:z=(ae-J)/6048e5;break;case u:z=(ae-J)/864e5;break;case l:z=ae/a;break;case s:z=ae/o;break;case i:z=ae/t;break;default:z=ae}return S?z:O.a(z)},L.daysInMonth=function(){return this.endOf(d).$D},L.$locale=function(){return T[this.$L]},L.locale=function(I,b){if(!I)return this.$L;var S=this.clone(),z=M(I,b,!0);return z&&(S.$L=z),S},L.clone=function(){return O.w(this.$d,this)},L.toDate=function(){return new Date(this.valueOf())},L.toJSON=function(){return this.isValid()?this.toISOString():null},L.toISOString=function(){return this.$d.toISOString()},L.toString=function(){return this.$d.toUTCString()},j}(),V=W.prototype;return U.prototype=V,[["$ms",r],["$s",i],["$m",s],["$H",l],["$W",u],["$M",d],["$y",m],["$D",g]].forEach(function(j){V[j[1]]=function(L){return this.$g(L,j[0],j[1])}}),U.extend=function(j,L){return j.$i||(j(L,W,U),j.$i=!0),U},U.locale=M,U.isDayjs=P,U.unix=function(j){return U(1e3*j)},U.en=T[N],U.Ls=T,U.p={},U})}(gc)),gc.exports}var iR=rR();const Be=Ru(iR),Ze=n=>typeof n=="string",is=()=>{let n,e;const t=new Promise((o,a)=>{n=o,e=a});return t.resolve=n,t.reject=e,t},sg=n=>n==null?"":""+n,sR=(n,e,t)=>{n.forEach(o=>{e[o]&&(t[o]=e[o])})},lR=/###/g,lg=n=>n&&n.indexOf("###")>-1?n.replace(lR,"."):n,cg=n=>!n||Ze(n),Rs=(n,e,t)=>{const o=Ze(e)?e.split("."):e;let a=0;for(;a<o.length-1;){if(cg(n))return{};const r=lg(o[a]);!n[r]&&t&&(n[r]=new t),Object.prototype.hasOwnProperty.call(n,r)?n=n[r]:n={},++a}return cg(n)?{}:{obj:n,k:lg(o[a])}},ug=(n,e,t)=>{const{obj:o,k:a}=Rs(n,e,Object);if(o!==void 0||e.length===1){o[a]=t;return}let r=e[e.length-1],i=e.slice(0,e.length-1),s=Rs(n,i,Object);for(;s.obj===void 0&&i.length;)r=`${i[i.length-1]}.${r}`,i=i.slice(0,i.length-1),s=Rs(n,i,Object),s!=null&&s.obj&&typeof s.obj[`${s.k}.${r}`]<"u"&&(s.obj=void 0);s.obj[`${s.k}.${r}`]=t},cR=(n,e,t,o)=>{const{obj:a,k:r}=Rs(n,e,Object);a[r]=a[r]||[],a[r].push(t)},Ic=(n,e)=>{const{obj:t,k:o}=Rs(n,e);if(t&&Object.prototype.hasOwnProperty.call(t,o))return t[o]},uR=(n,e,t)=>{const o=Ic(n,t);return o!==void 0?o:Ic(e,t)},N1=(n,e,t)=>{for(const o in e)o!=="__proto__"&&o!=="constructor"&&(o in n?Ze(n[o])||n[o]instanceof String||Ze(e[o])||e[o]instanceof String?t&&(n[o]=e[o]):N1(n[o],e[o],t):n[o]=e[o]);return n},zr=n=>n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var dR={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};const fR=n=>Ze(n)?n.replace(/[&<>"'\/]/g,e=>dR[e]):n;class hR{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const t=this.regExpMap.get(e);if(t!==void 0)return t;const o=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,o),this.regExpQueue.push(e),o}}const pR=[" ",",","?","!",";"],mR=new hR(20),gR=(n,e,t)=>{e=e||"",t=t||"";const o=pR.filter(i=>e.indexOf(i)<0&&t.indexOf(i)<0);if(o.length===0)return!0;const a=mR.getRegExp(`(${o.map(i=>i==="?"?"\\?":i).join("|")})`);let r=!a.test(n);if(!r){const i=n.indexOf(t);i>0&&!a.test(n.substring(0,i))&&(r=!0)}return r},If=function(n,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!n)return;if(n[e])return Object.prototype.hasOwnProperty.call(n,e)?n[e]:void 0;const o=e.split(t);let a=n;for(let r=0;r<o.length;){if(!a||typeof a!="object")return;let i,s="";for(let l=r;l<o.length;++l)if(l!==r&&(s+=t),s+=o[l],i=a[s],i!==void 0){if(["string","number","boolean"].indexOf(typeof i)>-1&&l<o.length-1)continue;r+=l-r+1;break}a=i}return a},Lc=n=>n==null?void 0:n.replace("_","-"),yR={type:"logger",log(n){this.output("log",n)},warn(n){this.output("warn",n)},error(n){this.output("error",n)},output(n,e){var t,o;(o=(t=console==null?void 0:console[n])==null?void 0:t.apply)==null||o.call(t,console,e)}};class Mc{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.init(e,t)}init(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=t.prefix||"i18next:",this.logger=e||yR,this.options=t,this.debug=t.debug}log(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"log","",!0)}warn(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"warn","",!0)}error(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"error","")}deprecate(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}forward(e,t,o,a){return a&&!this.debug?null:(Ze(e[0])&&(e[0]=`${o}${this.prefix} ${e[0]}`),this.logger[t](e))}create(e){return new Mc(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return e=e||this.options,e.prefix=e.prefix||this.prefix,new Mc(this.logger,e)}}var So=new Mc;class Nu{constructor(){this.observers={}}on(e,t){return e.split(" ").forEach(o=>{this.observers[o]||(this.observers[o]=new Map);const a=this.observers[o].get(t)||0;this.observers[o].set(t,a+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}emit(e){for(var t=arguments.length,o=new Array(t>1?t-1:0),a=1;a<t;a++)o[a-1]=arguments[a];this.observers[e]&&Array.from(this.observers[e].entries()).forEach(i=>{let[s,l]=i;for(let u=0;u<l;u++)s(...o)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(i=>{let[s,l]=i;for(let u=0;u<l;u++)s.apply(s,[e,...o])})}}class dg extends Nu{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=e||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}removeNamespaces(e){const t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,t,o){var u,f;let a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const r=a.keySeparator!==void 0?a.keySeparator:this.options.keySeparator,i=a.ignoreJSONStructure!==void 0?a.ignoreJSONStructure:this.options.ignoreJSONStructure;let s;e.indexOf(".")>-1?s=e.split("."):(s=[e,t],o&&(Array.isArray(o)?s.push(...o):Ze(o)&&r?s.push(...o.split(r)):s.push(o)));const l=Ic(this.data,s);return!l&&!t&&!o&&e.indexOf(".")>-1&&(e=s[0],t=s[1],o=s.slice(2).join(".")),l||!i||!Ze(o)?l:If((f=(u=this.data)==null?void 0:u[e])==null?void 0:f[t],o,r)}addResource(e,t,o,a){let r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const i=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator;let s=[e,t];o&&(s=s.concat(i?o.split(i):o)),e.indexOf(".")>-1&&(s=e.split("."),a=t,t=s[1]),this.addNamespaces(t),ug(this.data,s,a),r.silent||this.emit("added",e,t,o,a)}addResources(e,t,o){let a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const r in o)(Ze(o[r])||Array.isArray(o[r]))&&this.addResource(e,t,r,o[r],{silent:!0});a.silent||this.emit("added",e,t,o)}addResourceBundle(e,t,o,a,r){let i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1,skipCopy:!1},s=[e,t];e.indexOf(".")>-1&&(s=e.split("."),a=o,o=t,t=s[1]),this.addNamespaces(t);let l=Ic(this.data,s)||{};i.skipCopy||(o=JSON.parse(JSON.stringify(o))),a?N1(l,o,r):l={...l,...o},ug(this.data,s,l),i.silent||this.emit("added",e,t,o)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||(t=this.options.defaultNS),this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(a=>t[a]&&Object.keys(t[a]).length>0)}toJSON(){return this.data}}var T1={processors:{},addPostProcessor(n){this.processors[n.name]=n},handle(n,e,t,o,a){return n.forEach(r=>{var i;e=((i=this.processors[r])==null?void 0:i.process(e,t,o,a))??e}),e}};const fg={};class Dc extends Nu{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),sR(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=So.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(e==null)return!1;const o=this.resolve(e,t);return(o==null?void 0:o.res)!==void 0}extractFromKey(e,t){let o=t.nsSeparator!==void 0?t.nsSeparator:this.options.nsSeparator;o===void 0&&(o=":");const a=t.keySeparator!==void 0?t.keySeparator:this.options.keySeparator;let r=t.ns||this.options.defaultNS||[];const i=o&&e.indexOf(o)>-1,s=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!gR(e,o,a);if(i&&!s){const l=e.match(this.interpolator.nestingRegexp);if(l&&l.length>0)return{key:e,namespaces:Ze(r)?[r]:r};const u=e.split(o);(o!==a||o===a&&this.options.ns.indexOf(u[0])>-1)&&(r=u.shift()),e=u.join(a)}return{key:e,namespaces:Ze(r)?[r]:r}}translate(e,t,o){if(typeof t!="object"&&this.options.overloadTranslationOptionHandler&&(t=this.options.overloadTranslationOptionHandler(arguments)),typeof t=="object"&&(t={...t}),t||(t={}),e==null)return"";Array.isArray(e)||(e=[String(e)]);const a=t.returnDetails!==void 0?t.returnDetails:this.options.returnDetails,r=t.keySeparator!==void 0?t.keySeparator:this.options.keySeparator,{key:i,namespaces:s}=this.extractFromKey(e[e.length-1],t),l=s[s.length-1],u=t.lng||this.language,f=t.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if((u==null?void 0:u.toLowerCase())==="cimode"){if(f){const A=t.nsSeparator||this.options.nsSeparator;return a?{res:`${l}${A}${i}`,usedKey:i,exactUsedKey:i,usedLng:u,usedNS:l,usedParams:this.getUsedParamsDetails(t)}:`${l}${A}${i}`}return a?{res:i,usedKey:i,exactUsedKey:i,usedLng:u,usedNS:l,usedParams:this.getUsedParamsDetails(t)}:i}const d=this.resolve(e,t);let p=d==null?void 0:d.res;const m=(d==null?void 0:d.usedKey)||i,g=(d==null?void 0:d.exactUsedKey)||i,y=Object.prototype.toString.apply(p),w=["[object Number]","[object Function]","[object RegExp]"],v=t.joinArrays!==void 0?t.joinArrays:this.options.joinArrays,k=!this.i18nFormat||this.i18nFormat.handleAsObject,E=!Ze(p)&&typeof p!="boolean"&&typeof p!="number";if(k&&p&&E&&w.indexOf(y)<0&&!(Ze(v)&&Array.isArray(p))){if(!t.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const A=this.options.returnedObjectHandler?this.options.returnedObjectHandler(m,p,{...t,ns:s}):`key '${i} (${this.language})' returned an object instead of string.`;return a?(d.res=A,d.usedParams=this.getUsedParamsDetails(t),d):A}if(r){const A=Array.isArray(p),N=A?[]:{},T=A?g:m;for(const C in p)if(Object.prototype.hasOwnProperty.call(p,C)){const P=`${T}${r}${C}`;N[C]=this.translate(P,{...t,joinArrays:!1,ns:s}),N[C]===P&&(N[C]=p[C])}p=N}}else if(k&&Ze(v)&&Array.isArray(p))p=p.join(v),p&&(p=this.extendTranslation(p,e,t,o));else{let A=!1,N=!1;const T=t.count!==void 0&&!Ze(t.count),C=Dc.hasDefaultValue(t),P=T?this.pluralResolver.getSuffix(u,t.count,t):"",M=t.ordinal&&T?this.pluralResolver.getSuffix(u,t.count,{ordinal:!1}):"",U=T&&!t.ordinal&&t.count===0,O=U&&t[`defaultValue${this.options.pluralSeparator}zero`]||t[`defaultValue${P}`]||t[`defaultValue${M}`]||t.defaultValue;!this.isValidLookup(p)&&C&&(A=!0,p=O),this.isValidLookup(p)||(N=!0,p=i);const V=(t.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&N?void 0:p,j=C&&O!==p&&this.options.updateMissing;if(N||A||j){if(this.logger.log(j?"updateKey":"missingKey",u,l,i,j?O:p),r){const S=this.resolve(i,{...t,keySeparator:!1});S&&S.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let L=[];const I=this.languageUtils.getFallbackCodes(this.options.fallbackLng,t.lng||this.language);if(this.options.saveMissingTo==="fallback"&&I&&I[0])for(let S=0;S<I.length;S++)L.push(I[S]);else this.options.saveMissingTo==="all"?L=this.languageUtils.toResolveHierarchy(t.lng||this.language):L.push(t.lng||this.language);const b=(S,z,F)=>{var q;const D=C&&F!==p?F:V;this.options.missingKeyHandler?this.options.missingKeyHandler(S,l,z,D,j,t):(q=this.backendConnector)!=null&&q.saveMissing&&this.backendConnector.saveMissing(S,l,z,D,j,t),this.emit("missingKey",S,l,z,p)};this.options.saveMissing&&(this.options.saveMissingPlurals&&T?L.forEach(S=>{const z=this.pluralResolver.getSuffixes(S,t);U&&t[`defaultValue${this.options.pluralSeparator}zero`]&&z.indexOf(`${this.options.pluralSeparator}zero`)<0&&z.push(`${this.options.pluralSeparator}zero`),z.forEach(F=>{b([S],i+F,t[`defaultValue${F}`]||O)})}):b(L,i,O))}p=this.extendTranslation(p,e,t,d,o),N&&p===i&&this.options.appendNamespaceToMissingKey&&(p=`${l}:${i}`),(N||A)&&this.options.parseMissingKeyHandler&&(p=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}:${i}`:i,A?p:void 0))}return a?(d.res=p,d.usedParams=this.getUsedParamsDetails(t),d):p}extendTranslation(e,t,o,a,r){var u,f;var i=this;if((u=this.i18nFormat)!=null&&u.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...o},o.lng||this.language||a.usedLng,a.usedNS,a.usedKey,{resolved:a});else if(!o.skipInterpolation){o.interpolation&&this.interpolator.init({...o,interpolation:{...this.options.interpolation,...o.interpolation}});const d=Ze(e)&&(((f=o==null?void 0:o.interpolation)==null?void 0:f.skipOnVariables)!==void 0?o.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let p;if(d){const g=e.match(this.interpolator.nestingRegexp);p=g&&g.length}let m=o.replace&&!Ze(o.replace)?o.replace:o;if(this.options.interpolation.defaultVariables&&(m={...this.options.interpolation.defaultVariables,...m}),e=this.interpolator.interpolate(e,m,o.lng||this.language||a.usedLng,o),d){const g=e.match(this.interpolator.nestingRegexp),y=g&&g.length;p<y&&(o.nest=!1)}!o.lng&&a&&a.res&&(o.lng=this.language||a.usedLng),o.nest!==!1&&(e=this.interpolator.nest(e,function(){for(var g=arguments.length,y=new Array(g),w=0;w<g;w++)y[w]=arguments[w];return(r==null?void 0:r[0])===y[0]&&!o.context?(i.logger.warn(`It seems you are nesting recursively key: ${y[0]} in key: ${t[0]}`),null):i.translate(...y,t)},o)),o.interpolation&&this.interpolator.reset()}const s=o.postProcess||this.options.postProcess,l=Ze(s)?[s]:s;return e!=null&&(l!=null&&l.length)&&o.applyPostProcessor!==!1&&(e=T1.handle(l,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...a,usedParams:this.getUsedParamsDetails(o)},...o}:o,this)),e}resolve(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o,a,r,i,s;return Ze(e)&&(e=[e]),e.forEach(l=>{if(this.isValidLookup(o))return;const u=this.extractFromKey(l,t),f=u.key;a=f;let d=u.namespaces;this.options.fallbackNS&&(d=d.concat(this.options.fallbackNS));const p=t.count!==void 0&&!Ze(t.count),m=p&&!t.ordinal&&t.count===0,g=t.context!==void 0&&(Ze(t.context)||typeof t.context=="number")&&t.context!=="",y=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);d.forEach(w=>{var v,k;this.isValidLookup(o)||(s=w,!fg[`${y[0]}-${w}`]&&((v=this.utils)!=null&&v.hasLoadedNamespace)&&!((k=this.utils)!=null&&k.hasLoadedNamespace(s))&&(fg[`${y[0]}-${w}`]=!0,this.logger.warn(`key "${a}" for languages "${y.join(", ")}" won't get resolved as namespace "${s}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),y.forEach(E=>{var T;if(this.isValidLookup(o))return;i=E;const A=[f];if((T=this.i18nFormat)!=null&&T.addLookupKeys)this.i18nFormat.addLookupKeys(A,f,E,w,t);else{let C;p&&(C=this.pluralResolver.getSuffix(E,t.count,t));const P=`${this.options.pluralSeparator}zero`,M=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(A.push(f+C),t.ordinal&&C.indexOf(M)===0&&A.push(f+C.replace(M,this.options.pluralSeparator)),m&&A.push(f+P)),g){const U=`${f}${this.options.contextSeparator}${t.context}`;A.push(U),p&&(A.push(U+C),t.ordinal&&C.indexOf(M)===0&&A.push(U+C.replace(M,this.options.pluralSeparator)),m&&A.push(U+P))}}let N;for(;N=A.pop();)this.isValidLookup(o)||(r=N,o=this.getResource(E,w,N,t))}))})}),{res:o,usedKey:a,exactUsedKey:r,usedLng:i,usedNS:s}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e==="")}getResource(e,t,o){var r;let a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return(r=this.i18nFormat)!=null&&r.getResource?this.i18nFormat.getResource(e,t,o,a):this.resourceStore.getResource(e,t,o,a)}getUsedParamsDetails(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],o=e.replace&&!Ze(e.replace);let a=o?e.replace:e;if(o&&typeof e.count<"u"&&(a.count=e.count),this.options.interpolation.defaultVariables&&(a={...this.options.interpolation.defaultVariables,...a}),!o){a={...a};for(const r of t)delete a[r]}return a}static hasDefaultValue(e){const t="defaultValue";for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)&&t===o.substring(0,t.length)&&e[o]!==void 0)return!0;return!1}}class hg{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=So.create("languageUtils")}getScriptPartFromCode(e){if(e=Lc(e),!e||e.indexOf("-")<0)return null;const t=e.split("-");return t.length===2||(t.pop(),t[t.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(t.join("-"))}getLanguagePartFromCode(e){if(e=Lc(e),!e||e.indexOf("-")<0)return e;const t=e.split("-");return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(Ze(e)&&e.indexOf("-")>-1){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(o=>{if(t)return;const a=this.formatLanguageCode(o);(!this.options.supportedLngs||this.isSupportedCode(a))&&(t=a)}),!t&&this.options.supportedLngs&&e.forEach(o=>{if(t)return;const a=this.getLanguagePartFromCode(o);if(this.isSupportedCode(a))return t=a;t=this.options.supportedLngs.find(r=>{if(r===a)return r;if(!(r.indexOf("-")<0&&a.indexOf("-")<0)&&(r.indexOf("-")>0&&a.indexOf("-")<0&&r.substring(0,r.indexOf("-"))===a||r.indexOf(a)===0&&a.length>1))return r})}),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t}getFallbackCodes(e,t){if(!e)return[];if(typeof e=="function"&&(e=e(t)),Ze(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let o=e[t];return o||(o=e[this.getScriptPartFromCode(t)]),o||(o=e[this.formatLanguageCode(t)]),o||(o=e[this.getLanguagePartFromCode(t)]),o||(o=e.default),o||[]}toResolveHierarchy(e,t){const o=this.getFallbackCodes(t||this.options.fallbackLng||[],e),a=[],r=i=>{i&&(this.isSupportedCode(i)?a.push(i):this.logger.warn(`rejecting language code not found in supportedLngs: ${i}`))};return Ze(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&r(this.formatLanguageCode(e)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&r(this.getScriptPartFromCode(e)),this.options.load!=="currentOnly"&&r(this.getLanguagePartFromCode(e))):Ze(e)&&r(this.formatLanguageCode(e)),o.forEach(i=>{a.indexOf(i)<0&&r(this.formatLanguageCode(i))}),a}}const pg={zero:0,one:1,two:2,few:3,many:4,other:5},mg={select:n=>n===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class wR{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=e,this.options=t,this.logger=So.create("pluralResolver"),this.pluralRulesCache={}}addRule(e,t){this.rules[e]=t}clearCache(){this.pluralRulesCache={}}getRule(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const o=Lc(e==="dev"?"en":e),a=t.ordinal?"ordinal":"cardinal",r=JSON.stringify({cleanedCode:o,type:a});if(r in this.pluralRulesCache)return this.pluralRulesCache[r];let i;try{i=new Intl.PluralRules(o,{type:a})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),mg;if(!e.match(/-|_/))return mg;const l=this.languageUtils.getLanguagePartFromCode(e);i=this.getRule(l,t)}return this.pluralRulesCache[r]=i,i}needsPlural(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=this.getRule(e,t);return o||(o=this.getRule("dev",t)),(o==null?void 0:o.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(e,t){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(e,o).map(a=>`${t}${a}`)}getSuffixes(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=this.getRule(e,t);return o||(o=this.getRule("dev",t)),o?o.resolvedOptions().pluralCategories.sort((a,r)=>pg[a]-pg[r]).map(a=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:""}${a}`):[]}getSuffix(e,t){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const a=this.getRule(e,o);return a?`${this.options.prepend}${o.ordinal?`ordinal${this.options.prepend}`:""}${a.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",t,o))}}const gg=function(n,e,t){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,r=uR(n,e,t);return!r&&a&&Ze(t)&&(r=If(n,t,o),r===void 0&&(r=If(e,t,o))),r},Id=n=>n.replace(/\$/g,"$$$$");class vR{constructor(){var t;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=So.create("interpolator"),this.options=e,this.format=((t=e==null?void 0:e.interpolation)==null?void 0:t.format)||(o=>o),this.init(e)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};e.interpolation||(e.interpolation={escapeValue:!0});const{escape:t,escapeValue:o,useRawValueToEscape:a,prefix:r,prefixEscaped:i,suffix:s,suffixEscaped:l,formatSeparator:u,unescapeSuffix:f,unescapePrefix:d,nestingPrefix:p,nestingPrefixEscaped:m,nestingSuffix:g,nestingSuffixEscaped:y,nestingOptionsSeparator:w,maxReplaces:v,alwaysFormat:k}=e.interpolation;this.escape=t!==void 0?t:fR,this.escapeValue=o!==void 0?o:!0,this.useRawValueToEscape=a!==void 0?a:!1,this.prefix=r?zr(r):i||"{{",this.suffix=s?zr(s):l||"}}",this.formatSeparator=u||",",this.unescapePrefix=f?"":d||"-",this.unescapeSuffix=this.unescapePrefix?"":f||"",this.nestingPrefix=p?zr(p):m||zr("$t("),this.nestingSuffix=g?zr(g):y||zr(")"),this.nestingOptionsSeparator=w||",",this.maxReplaces=v||1e3,this.alwaysFormat=k!==void 0?k:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(t,o)=>(t==null?void 0:t.source)===o?(t.lastIndex=0,t):new RegExp(o,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(e,t,o,a){var m;let r,i,s;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=g=>{if(g.indexOf(this.formatSeparator)<0){const k=gg(t,l,g,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(k,void 0,o,{...a,...t,interpolationkey:g}):k}const y=g.split(this.formatSeparator),w=y.shift().trim(),v=y.join(this.formatSeparator).trim();return this.format(gg(t,l,w,this.options.keySeparator,this.options.ignoreJSONStructure),v,o,{...a,...t,interpolationkey:w})};this.resetRegExp();const f=(a==null?void 0:a.missingInterpolationHandler)||this.options.missingInterpolationHandler,d=((m=a==null?void 0:a.interpolation)==null?void 0:m.skipOnVariables)!==void 0?a.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:g=>Id(g)},{regex:this.regexp,safeValue:g=>this.escapeValue?Id(this.escape(g)):Id(g)}].forEach(g=>{for(s=0;r=g.regex.exec(e);){const y=r[1].trim();if(i=u(y),i===void 0)if(typeof f=="function"){const v=f(e,r,a);i=Ze(v)?v:""}else if(a&&Object.prototype.hasOwnProperty.call(a,y))i="";else if(d){i=r[0];continue}else this.logger.warn(`missed to pass in variable ${y} for interpolating ${e}`),i="";else!Ze(i)&&!this.useRawValueToEscape&&(i=sg(i));const w=g.safeValue(i);if(e=e.replace(r[0],w),d?(g.regex.lastIndex+=i.length,g.regex.lastIndex-=r[0].length):g.regex.lastIndex=0,s++,s>=this.maxReplaces)break}}),e}nest(e,t){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a,r,i;const s=(l,u)=>{const f=this.nestingOptionsSeparator;if(l.indexOf(f)<0)return l;const d=l.split(new RegExp(`${f}[ ]*{`));let p=`{${d[1]}`;l=d[0],p=this.interpolate(p,i);const m=p.match(/'/g),g=p.match(/"/g);(((m==null?void 0:m.length)??0)%2===0&&!g||g.length%2!==0)&&(p=p.replace(/'/g,'"'));try{i=JSON.parse(p),u&&(i={...u,...i})}catch(y){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,y),`${l}${f}${p}`}return i.defaultValue&&i.defaultValue.indexOf(this.prefix)>-1&&delete i.defaultValue,l};for(;a=this.nestingRegexp.exec(e);){let l=[];i={...o},i=i.replace&&!Ze(i.replace)?i.replace:i,i.applyPostProcessor=!1,delete i.defaultValue;let u=!1;if(a[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(a[1])){const f=a[1].split(this.formatSeparator).map(d=>d.trim());a[1]=f.shift(),l=f,u=!0}if(r=t(s.call(this,a[1].trim(),i),i),r&&a[0]===e&&!Ze(r))return r;Ze(r)||(r=sg(r)),r||(this.logger.warn(`missed to resolve ${a[1]} for nesting ${e}`),r=""),u&&(r=l.reduce((f,d)=>this.format(f,d,o.lng,{...o,interpolationkey:a[1].trim()}),r.trim())),e=e.replace(a[0],r),this.regexp.lastIndex=0}return e}}const bR=n=>{let e=n.toLowerCase().trim();const t={};if(n.indexOf("(")>-1){const o=n.split("(");e=o[0].toLowerCase().trim();const a=o[1].substring(0,o[1].length-1);e==="currency"&&a.indexOf(":")<0?t.currency||(t.currency=a.trim()):e==="relativetime"&&a.indexOf(":")<0?t.range||(t.range=a.trim()):a.split(";").forEach(i=>{if(i){const[s,...l]=i.split(":"),u=l.join(":").trim().replace(/^'+|'+$/g,""),f=s.trim();t[f]||(t[f]=u),u==="false"&&(t[f]=!1),u==="true"&&(t[f]=!0),isNaN(u)||(t[f]=parseInt(u,10))}})}return{formatName:e,formatOptions:t}},Ir=n=>{const e={};return(t,o,a)=>{let r=a;a&&a.interpolationkey&&a.formatParams&&a.formatParams[a.interpolationkey]&&a[a.interpolationkey]&&(r={...r,[a.interpolationkey]:void 0});const i=o+JSON.stringify(r);let s=e[i];return s||(s=n(Lc(o),a),e[i]=s),s(t)}};class kR{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=So.create("formatter"),this.options=e,this.formats={number:Ir((t,o)=>{const a=new Intl.NumberFormat(t,{...o});return r=>a.format(r)}),currency:Ir((t,o)=>{const a=new Intl.NumberFormat(t,{...o,style:"currency"});return r=>a.format(r)}),datetime:Ir((t,o)=>{const a=new Intl.DateTimeFormat(t,{...o});return r=>a.format(r)}),relativetime:Ir((t,o)=>{const a=new Intl.RelativeTimeFormat(t,{...o});return r=>a.format(r,o.range||"day")}),list:Ir((t,o)=>{const a=new Intl.ListFormat(t,{...o});return r=>a.format(r)})},this.init(e)}init(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};this.formatSeparator=t.interpolation.formatSeparator||","}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=Ir(t)}format(e,t,o){let a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const r=t.split(this.formatSeparator);if(r.length>1&&r[0].indexOf("(")>1&&r[0].indexOf(")")<0&&r.find(s=>s.indexOf(")")>-1)){const s=r.findIndex(l=>l.indexOf(")")>-1);r[0]=[r[0],...r.splice(1,s)].join(this.formatSeparator)}return r.reduce((s,l)=>{var d;const{formatName:u,formatOptions:f}=bR(l);if(this.formats[u]){let p=s;try{const m=((d=a==null?void 0:a.formatParams)==null?void 0:d[a.interpolationkey])||{},g=m.locale||m.lng||a.locale||a.lng||o;p=this.formats[u](s,g,{...f,...a,...m})}catch(m){this.logger.warn(m)}return p}else this.logger.warn(`there was no format function for ${u}`);return s},e)}}const SR=(n,e)=>{n.pending[e]!==void 0&&(delete n.pending[e],n.pendingCount--)};class xR extends Nu{constructor(e,t,o){var r,i;let a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=e,this.store=t,this.services=o,this.languageUtils=o.languageUtils,this.options=a,this.logger=So.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=a.maxParallelReads||10,this.readingCalls=0,this.maxRetries=a.maxRetries>=0?a.maxRetries:5,this.retryTimeout=a.retryTimeout>=1?a.retryTimeout:350,this.state={},this.queue=[],(i=(r=this.backend)==null?void 0:r.init)==null||i.call(r,o,a.backend,a)}queueLoad(e,t,o,a){const r={},i={},s={},l={};return e.forEach(u=>{let f=!0;t.forEach(d=>{const p=`${u}|${d}`;!o.reload&&this.store.hasResourceBundle(u,d)?this.state[p]=2:this.state[p]<0||(this.state[p]===1?i[p]===void 0&&(i[p]=!0):(this.state[p]=1,f=!1,i[p]===void 0&&(i[p]=!0),r[p]===void 0&&(r[p]=!0),l[d]===void 0&&(l[d]=!0)))}),f||(s[u]=!0)}),(Object.keys(r).length||Object.keys(i).length)&&this.queue.push({pending:i,pendingCount:Object.keys(i).length,loaded:{},errors:[],callback:a}),{toLoad:Object.keys(r),pending:Object.keys(i),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(l)}}loaded(e,t,o){const a=e.split("|"),r=a[0],i=a[1];t&&this.emit("failedLoading",r,i,t),!t&&o&&this.store.addResourceBundle(r,i,o,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&o&&(this.state[e]=0);const s={};this.queue.forEach(l=>{cR(l.loaded,[r],i),SR(l,e),t&&l.errors.push(t),l.pendingCount===0&&!l.done&&(Object.keys(l.loaded).forEach(u=>{s[u]||(s[u]={});const f=l.loaded[u];f.length&&f.forEach(d=>{s[u][d]===void 0&&(s[u][d]=!0)})}),l.done=!0,l.errors.length?l.callback(l.errors):l.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(l=>!l.done)}read(e,t,o){let a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,i=arguments.length>5?arguments[5]:void 0;if(!e.length)return i(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:o,tried:a,wait:r,callback:i});return}this.readingCalls++;const s=(u,f)=>{if(this.readingCalls--,this.waitingReads.length>0){const d=this.waitingReads.shift();this.read(d.lng,d.ns,d.fcName,d.tried,d.wait,d.callback)}if(u&&f&&a<this.maxRetries){setTimeout(()=>{this.read.call(this,e,t,o,a+1,r*2,i)},r);return}i(u,f)},l=this.backend[o].bind(this.backend);if(l.length===2){try{const u=l(e,t);u&&typeof u.then=="function"?u.then(f=>s(null,f)).catch(s):s(null,u)}catch(u){s(u)}return}return l(e,t,s)}prepareLoading(e,t){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),a&&a();Ze(e)&&(e=this.languageUtils.toResolveHierarchy(e)),Ze(t)&&(t=[t]);const r=this.queueLoad(e,t,o,a);if(!r.toLoad.length)return r.pending.length||a(),null;r.toLoad.forEach(i=>{this.loadOne(i)})}load(e,t,o){this.prepareLoading(e,t,{},o)}reload(e,t,o){this.prepareLoading(e,t,{reload:!0},o)}loadOne(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const o=e.split("|"),a=o[0],r=o[1];this.read(a,r,"read",void 0,void 0,(i,s)=>{i&&this.logger.warn(`${t}loading namespace ${r} for language ${a} failed`,i),!i&&s&&this.logger.log(`${t}loaded namespace ${r} for language ${a}`,s),this.loaded(e,i,s)})}saveMissing(e,t,o,a,r){var l,u,f,d,p;let i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},s=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if((u=(l=this.services)==null?void 0:l.utils)!=null&&u.hasLoadedNamespace&&!((d=(f=this.services)==null?void 0:f.utils)!=null&&d.hasLoadedNamespace(t))){this.logger.warn(`did not save key "${o}" as the namespace "${t}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(o==null||o==="")){if((p=this.backend)!=null&&p.create){const m={...i,isUpdate:r},g=this.backend.create.bind(this.backend);if(g.length<6)try{let y;g.length===5?y=g(e,t,o,a,m):y=g(e,t,o,a),y&&typeof y.then=="function"?y.then(w=>s(null,w)).catch(s):s(null,y)}catch(y){s(y)}else g(e,t,o,a,s,m)}!e||!e[0]||this.store.addResource(e[0],t,o,a)}}}const yg=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:n=>{let e={};if(typeof n[1]=="object"&&(e=n[1]),Ze(n[1])&&(e.defaultValue=n[1]),Ze(n[2])&&(e.tDescription=n[2]),typeof n[2]=="object"||typeof n[3]=="object"){const t=n[3]||n[2];Object.keys(t).forEach(o=>{e[o]=t[o]})}return e},interpolation:{escapeValue:!0,format:n=>n,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}),wg=n=>{var e,t;return Ze(n.ns)&&(n.ns=[n.ns]),Ze(n.fallbackLng)&&(n.fallbackLng=[n.fallbackLng]),Ze(n.fallbackNS)&&(n.fallbackNS=[n.fallbackNS]),((t=(e=n.supportedLngs)==null?void 0:e.indexOf)==null?void 0:t.call(e,"cimode"))<0&&(n.supportedLngs=n.supportedLngs.concat(["cimode"])),typeof n.initImmediate=="boolean"&&(n.initAsync=n.initImmediate),n},Yl=()=>{},AR=n=>{Object.getOwnPropertyNames(Object.getPrototypeOf(n)).forEach(t=>{typeof n[t]=="function"&&(n[t]=n[t].bind(n))})};class js extends Nu{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;if(super(),this.options=wg(e),this.services={},this.logger=So,this.modules={external:[]},AR(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},o=arguments.length>1?arguments[1]:void 0;this.isInitializing=!0,typeof t=="function"&&(o=t,t={}),!t.defaultNS&&t.defaultNS!==!1&&t.ns&&(Ze(t.ns)?t.defaultNS=t.ns:t.ns.indexOf("translation")<0&&(t.defaultNS=t.ns[0]));const a=yg();this.options={...a,...this.options,...wg(t)},this.options.interpolation={...a.interpolation,...this.options.interpolation},t.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=t.keySeparator),t.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=t.nsSeparator);const r=f=>f?typeof f=="function"?new f:f:null;if(!this.options.isClone){this.modules.logger?So.init(r(this.modules.logger),this.options):So.init(null,this.options);let f;this.modules.formatter?f=this.modules.formatter:f=kR;const d=new hg(this.options);this.store=new dg(this.options.resources,this.options);const p=this.services;p.logger=So,p.resourceStore=this.store,p.languageUtils=d,p.pluralResolver=new wR(d,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),f&&(!this.options.interpolation.format||this.options.interpolation.format===a.interpolation.format)&&(p.formatter=r(f),p.formatter.init(p,this.options),this.options.interpolation.format=p.formatter.format.bind(p.formatter)),p.interpolator=new vR(this.options),p.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},p.backendConnector=new xR(r(this.modules.backend),p.resourceStore,p,this.options),p.backendConnector.on("*",function(m){for(var g=arguments.length,y=new Array(g>1?g-1:0),w=1;w<g;w++)y[w-1]=arguments[w];e.emit(m,...y)}),this.modules.languageDetector&&(p.languageDetector=r(this.modules.languageDetector),p.languageDetector.init&&p.languageDetector.init(p,this.options.detection,this.options)),this.modules.i18nFormat&&(p.i18nFormat=r(this.modules.i18nFormat),p.i18nFormat.init&&p.i18nFormat.init(this)),this.translator=new Dc(this.services,this.options),this.translator.on("*",function(m){for(var g=arguments.length,y=new Array(g>1?g-1:0),w=1;w<g;w++)y[w-1]=arguments[w];e.emit(m,...y)}),this.modules.external.forEach(m=>{m.init&&m.init(this)})}if(this.format=this.options.interpolation.format,o||(o=Yl),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const f=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);f.length>0&&f[0]!=="dev"&&(this.options.lng=f[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(f=>{this[f]=function(){return e.store[f](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(f=>{this[f]=function(){return e.store[f](...arguments),e}});const l=is(),u=()=>{const f=(d,p)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),l.resolve(p),o(d,p)};if(this.languages&&!this.isInitialized)return f(null,this.t.bind(this));this.changeLanguage(this.options.lng,f)};return this.options.resources||!this.options.initAsync?u():setTimeout(u,0),l}loadResources(e){var r,i;let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Yl;const a=Ze(e)?e:this.language;if(typeof e=="function"&&(o=e),!this.options.resources||this.options.partialBundledLanguages){if((a==null?void 0:a.toLowerCase())==="cimode"&&(!this.options.preload||this.options.preload.length===0))return o();const s=[],l=u=>{if(!u||u==="cimode")return;this.services.languageUtils.toResolveHierarchy(u).forEach(d=>{d!=="cimode"&&s.indexOf(d)<0&&s.push(d)})};a?l(a):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(f=>l(f)),(i=(r=this.options.preload)==null?void 0:r.forEach)==null||i.call(r,u=>l(u)),this.services.backendConnector.load(s,this.options.ns,u=>{!u&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),o(u)})}else o(null)}reloadResources(e,t,o){const a=is();return typeof e=="function"&&(o=e,e=void 0),typeof t=="function"&&(o=t,t=void 0),e||(e=this.languages),t||(t=this.options.ns),o||(o=Yl),this.services.backendConnector.reload(e,t,r=>{a.resolve(),o(r)}),a}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return e.type==="backend"&&(this.modules.backend=e),(e.type==="logger"||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type==="languageDetector"&&(this.modules.languageDetector=e),e.type==="i18nFormat"&&(this.modules.i18nFormat=e),e.type==="postProcessor"&&T1.addPostProcessor(e),e.type==="formatter"&&(this.modules.formatter=e),e.type==="3rdParty"&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&!(["cimode","dev"].indexOf(e)>-1))for(let t=0;t<this.languages.length;t++){const o=this.languages[t];if(!(["cimode","dev"].indexOf(o)>-1)&&this.store.hasLanguageSomeTranslations(o)){this.resolvedLanguage=o;break}}}changeLanguage(e,t){var o=this;this.isLanguageChangingTo=e;const a=is();this.emit("languageChanging",e);const r=l=>{this.language=l,this.languages=this.services.languageUtils.toResolveHierarchy(l),this.resolvedLanguage=void 0,this.setResolvedLanguage(l)},i=(l,u)=>{u?(r(u),this.translator.changeLanguage(u),this.isLanguageChangingTo=void 0,this.emit("languageChanged",u),this.logger.log("languageChanged",u)):this.isLanguageChangingTo=void 0,a.resolve(function(){return o.t(...arguments)}),t&&t(l,function(){return o.t(...arguments)})},s=l=>{var f,d;!e&&!l&&this.services.languageDetector&&(l=[]);const u=Ze(l)?l:this.services.languageUtils.getBestMatchFromCodes(l);u&&(this.language||r(u),this.translator.language||this.translator.changeLanguage(u),(d=(f=this.services.languageDetector)==null?void 0:f.cacheUserLanguage)==null||d.call(f,u)),this.loadResources(u,p=>{i(p,u)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?s(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(s):this.services.languageDetector.detect(s):s(e),a}getFixedT(e,t,o){var a=this;const r=function(i,s){let l;if(typeof s!="object"){for(var u=arguments.length,f=new Array(u>2?u-2:0),d=2;d<u;d++)f[d-2]=arguments[d];l=a.options.overloadTranslationOptionHandler([i,s].concat(f))}else l={...s};l.lng=l.lng||r.lng,l.lngs=l.lngs||r.lngs,l.ns=l.ns||r.ns,l.keyPrefix!==""&&(l.keyPrefix=l.keyPrefix||o||r.keyPrefix);const p=a.options.keySeparator||".";let m;return l.keyPrefix&&Array.isArray(i)?m=i.map(g=>`${l.keyPrefix}${p}${g}`):m=l.keyPrefix?`${l.keyPrefix}${p}${i}`:i,a.t(m,l)};return Ze(e)?r.lng=e:r.lngs=e,r.ns=t,r.keyPrefix=o,r}t(){var a;for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return(a=this.translator)==null?void 0:a.translate(...t)}exists(){var a;for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return(a=this.translator)==null?void 0:a.exists(...t)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const o=t.lng||this.resolvedLanguage||this.languages[0],a=this.options?this.options.fallbackLng:!1,r=this.languages[this.languages.length-1];if(o.toLowerCase()==="cimode")return!0;const i=(s,l)=>{const u=this.services.backendConnector.state[`${s}|${l}`];return u===-1||u===0||u===2};if(t.precheck){const s=t.precheck(this,i);if(s!==void 0)return s}return!!(this.hasResourceBundle(o,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||i(o,e)&&(!a||i(r,e)))}loadNamespaces(e,t){const o=is();return this.options.ns?(Ze(e)&&(e=[e]),e.forEach(a=>{this.options.ns.indexOf(a)<0&&this.options.ns.push(a)}),this.loadResources(a=>{o.resolve(),t&&t(a)}),o):(t&&t(),Promise.resolve())}loadLanguages(e,t){const o=is();Ze(e)&&(e=[e]);const a=this.options.preload||[],r=e.filter(i=>a.indexOf(i)<0&&this.services.languageUtils.isSupportedCode(i));return r.length?(this.options.preload=a.concat(r),this.loadResources(i=>{o.resolve(),t&&t(i)}),o):(t&&t(),Promise.resolve())}dir(e){var a,r;if(e||(e=this.resolvedLanguage||(((a=this.languages)==null?void 0:a.length)>0?this.languages[0]:this.language)),!e)return"rtl";const t=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],o=((r=this.services)==null?void 0:r.languageUtils)||new hg(yg());return t.indexOf(o.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return new js(e,t)}cloneInstance(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Yl;const o=e.forkResourceStore;o&&delete e.forkResourceStore;const a={...this.options,...e,isClone:!0},r=new js(a);if((e.debug!==void 0||e.prefix!==void 0)&&(r.logger=r.logger.clone(e)),["store","services","language"].forEach(s=>{r[s]=this[s]}),r.services={...this.services},r.services.utils={hasLoadedNamespace:r.hasLoadedNamespace.bind(r)},o){const s=Object.keys(this.store.data).reduce((l,u)=>(l[u]={...this.store.data[u]},Object.keys(l[u]).reduce((f,d)=>(f[d]={...l[u][d]},f),{})),{});r.store=new dg(s,a),r.services.resourceStore=r.store}return r.translator=new Dc(r.services,a),r.translator.on("*",function(s){for(var l=arguments.length,u=new Array(l>1?l-1:0),f=1;f<l;f++)u[f-1]=arguments[f];r.emit(s,...u)}),r.init(a,t),r.translator.options=a,r.translator.backendConnector.services.utils={hasLoadedNamespace:r.hasLoadedNamespace.bind(r)},r}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const Zt=js.createInstance();Zt.createInstance=js.createInstance;Zt.createInstance;Zt.dir;Zt.init;Zt.loadResources;Zt.reloadResources;Zt.use;Zt.changeLanguage;Zt.getFixedT;Zt.t;Zt.exists;Zt.setDefaultNamespace;Zt.hasLoadedNamespace;Zt.loadNamespaces;Zt.loadLanguages;const{slice:ER,forEach:RR}=[];function CR(n){return RR.call(ER.call(arguments,1),e=>{if(e)for(const t in e)n[t]===void 0&&(n[t]=e[t])}),n}const vg=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,PR=function(n,e){const o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},a=encodeURIComponent(e);let r=`${n}=${a}`;if(o.maxAge>0){const i=o.maxAge-0;if(Number.isNaN(i))throw new Error("maxAge should be a Number");r+=`; Max-Age=${Math.floor(i)}`}if(o.domain){if(!vg.test(o.domain))throw new TypeError("option domain is invalid");r+=`; Domain=${o.domain}`}if(o.path){if(!vg.test(o.path))throw new TypeError("option path is invalid");r+=`; Path=${o.path}`}if(o.expires){if(typeof o.expires.toUTCString!="function")throw new TypeError("option expires is invalid");r+=`; Expires=${o.expires.toUTCString()}`}if(o.httpOnly&&(r+="; HttpOnly"),o.secure&&(r+="; Secure"),o.sameSite)switch(typeof o.sameSite=="string"?o.sameSite.toLowerCase():o.sameSite){case!0:r+="; SameSite=Strict";break;case"lax":r+="; SameSite=Lax";break;case"strict":r+="; SameSite=Strict";break;case"none":r+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return r},bg={create(n,e,t,o){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};t&&(a.expires=new Date,a.expires.setTime(a.expires.getTime()+t*60*1e3)),o&&(a.domain=o),document.cookie=PR(n,encodeURIComponent(e),a)},read(n){const e=`${n}=`,t=document.cookie.split(";");for(let o=0;o<t.length;o++){let a=t[o];for(;a.charAt(0)===" ";)a=a.substring(1,a.length);if(a.indexOf(e)===0)return a.substring(e.length,a.length)}return null},remove(n){this.create(n,"",-1)}};var NR={name:"cookie",lookup(n){let{lookupCookie:e}=n;if(e&&typeof document<"u")return bg.read(e)||void 0},cacheUserLanguage(n,e){let{lookupCookie:t,cookieMinutes:o,cookieDomain:a,cookieOptions:r}=e;t&&typeof document<"u"&&bg.create(t,n,o,a,r)}},TR={name:"querystring",lookup(n){var o;let{lookupQuerystring:e}=n,t;if(typeof window<"u"){let{search:a}=window.location;!window.location.search&&((o=window.location.hash)==null?void 0:o.indexOf("?"))>-1&&(a=window.location.hash.substring(window.location.hash.indexOf("?")));const i=a.substring(1).split("&");for(let s=0;s<i.length;s++){const l=i[s].indexOf("=");l>0&&i[s].substring(0,l)===e&&(t=i[s].substring(l+1))}}return t}};let Lr=null;const kg=()=>{if(Lr!==null)return Lr;try{if(Lr=typeof window<"u"&&window.localStorage!==null,!Lr)return!1;const n="i18next.translate.boo";window.localStorage.setItem(n,"foo"),window.localStorage.removeItem(n)}catch{Lr=!1}return Lr};var jR={name:"localStorage",lookup(n){let{lookupLocalStorage:e}=n;if(e&&kg())return window.localStorage.getItem(e)||void 0},cacheUserLanguage(n,e){let{lookupLocalStorage:t}=e;t&&kg()&&window.localStorage.setItem(t,n)}};let Mr=null;const Sg=()=>{if(Mr!==null)return Mr;try{if(Mr=typeof window<"u"&&window.sessionStorage!==null,!Mr)return!1;const n="i18next.translate.boo";window.sessionStorage.setItem(n,"foo"),window.sessionStorage.removeItem(n)}catch{Mr=!1}return Mr};var zR={name:"sessionStorage",lookup(n){let{lookupSessionStorage:e}=n;if(e&&Sg())return window.sessionStorage.getItem(e)||void 0},cacheUserLanguage(n,e){let{lookupSessionStorage:t}=e;t&&Sg()&&window.sessionStorage.setItem(t,n)}},IR={name:"navigator",lookup(n){const e=[];if(typeof navigator<"u"){const{languages:t,userLanguage:o,language:a}=navigator;if(t)for(let r=0;r<t.length;r++)e.push(t[r]);o&&e.push(o),a&&e.push(a)}return e.length>0?e:void 0}},LR={name:"htmlTag",lookup(n){let{htmlTag:e}=n,t;const o=e||(typeof document<"u"?document.documentElement:null);return o&&typeof o.getAttribute=="function"&&(t=o.getAttribute("lang")),t}},MR={name:"path",lookup(n){var a;let{lookupFromPathIndex:e}=n;if(typeof window>"u")return;const t=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(t)?(a=t[typeof e=="number"?e:0])==null?void 0:a.replace("/",""):void 0}},DR={name:"subdomain",lookup(n){var a,r;let{lookupFromSubdomainIndex:e}=n;const t=typeof e=="number"?e+1:1,o=typeof window<"u"&&((r=(a=window.location)==null?void 0:a.hostname)==null?void 0:r.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i));if(o)return o[t]}};let j1=!1;try{document.cookie,j1=!0}catch{}const z1=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];j1||z1.splice(1,1);const _R=()=>({order:z1,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:n=>n});class I1{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(e,t)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=CR(t,this.options||{},_R()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=a=>a.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=o,this.addDetector(NR),this.addDetector(TR),this.addDetector(jR),this.addDetector(zR),this.addDetector(IR),this.addDetector(LR),this.addDetector(MR),this.addDetector(DR)}addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,t=[];return e.forEach(o=>{if(this.detectors[o]){let a=this.detectors[o].lookup(this.options);a&&typeof a=="string"&&(a=[a]),a&&(t=t.concat(a))}}),t=t.map(o=>this.options.convertDetectedLanguage(o)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?t:t.length>0?t[0]:null}cacheUserLanguage(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;t&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||t.forEach(o=>{this.detectors[o]&&this.detectors[o].cacheUserLanguage(e,this.options)}))}}I1.type="languageDetector";const FR=(...n)=>{console!=null&&console.warn&&(ar(n[0])&&(n[0]=`react-i18next:: ${n[0]}`),console.warn(...n))},xg={},Lf=(...n)=>{ar(n[0])&&xg[n[0]]||(ar(n[0])&&(xg[n[0]]=new Date),FR(...n))},L1=(n,e)=>()=>{if(n.isInitialized)e();else{const t=()=>{setTimeout(()=>{n.off("initialized",t)},0),e()};n.on("initialized",t)}},Mf=(n,e,t)=>{n.loadNamespaces(e,L1(n,t))},Ag=(n,e,t,o)=>{if(ar(t)&&(t=[t]),n.options.preload&&n.options.preload.indexOf(e)>-1)return Mf(n,t,o);t.forEach(a=>{n.options.ns.indexOf(a)<0&&n.options.ns.push(a)}),n.loadLanguages(e,L1(n,o))},OR=(n,e,t={})=>!e.languages||!e.languages.length?(Lf("i18n.languages were undefined or empty",e.languages),!0):e.hasLoadedNamespace(n,{lng:t.lng,precheck:(o,a)=>{var r;if(((r=t.bindI18n)==null?void 0:r.indexOf("languageChanging"))>-1&&o.services.backendConnector.backend&&o.isLanguageChangingTo&&!a(o.isLanguageChangingTo,n))return!1}}),ar=n=>typeof n=="string",UR=n=>typeof n=="object"&&n!==null,BR=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,VR={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"',"&nbsp;":" ","&#160;":" ","&copy;":"©","&#169;":"©","&reg;":"®","&#174;":"®","&hellip;":"…","&#8230;":"…","&#x2F;":"/","&#47;":"/"},WR=n=>VR[n],qR=n=>n.replace(BR,WR);let Df={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:qR};const HR=(n={})=>{Df={...Df,...n}},$R=()=>Df;let M1;const YR=n=>{M1=n},KR=()=>M1,GR={type:"3rdParty",init(n){HR(n.options.react),YR(n)}},JR=h.createContext();class ZR{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(t=>{this.usedNamespaces[t]||(this.usedNamespaces[t]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const QR=(n,e)=>{const t=h.useRef();return h.useEffect(()=>{t.current=n},[n,e]),t.current},D1=(n,e,t,o)=>n.getFixedT(e,t,o),XR=(n,e,t,o)=>h.useCallback(D1(n,e,t,o),[n,e,t,o]),Ae=(n,e={})=>{var A,N,T,C;const{i18n:t}=e,{i18n:o,defaultNS:a}=h.useContext(JR)||{},r=t||o||KR();if(r&&!r.reportNamespaces&&(r.reportNamespaces=new ZR),!r){Lf("You will need to pass in an i18next instance by using initReactI18next");const P=(U,O)=>ar(O)?O:UR(O)&&ar(O.defaultValue)?O.defaultValue:Array.isArray(U)?U[U.length-1]:U,M=[P,{},!1];return M.t=P,M.i18n={},M.ready=!1,M}(A=r.options.react)!=null&&A.wait&&Lf("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const i={...$R(),...r.options.react,...e},{useSuspense:s,keyPrefix:l}=i;let u=a||((N=r.options)==null?void 0:N.defaultNS);u=ar(u)?[u]:u||["translation"],(C=(T=r.reportNamespaces).addUsedNamespaces)==null||C.call(T,u);const f=(r.isInitialized||r.initializedStoreOnce)&&u.every(P=>OR(P,r,i)),d=XR(r,e.lng||null,i.nsMode==="fallback"?u:u[0],l),p=()=>d,m=()=>D1(r,e.lng||null,i.nsMode==="fallback"?u:u[0],l),[g,y]=h.useState(p);let w=u.join();e.lng&&(w=`${e.lng}${w}`);const v=QR(w),k=h.useRef(!0);h.useEffect(()=>{const{bindI18n:P,bindI18nStore:M}=i;k.current=!0,!f&&!s&&(e.lng?Ag(r,e.lng,u,()=>{k.current&&y(m)}):Mf(r,u,()=>{k.current&&y(m)})),f&&v&&v!==w&&k.current&&y(m);const U=()=>{k.current&&y(m)};return P&&(r==null||r.on(P,U)),M&&(r==null||r.store.on(M,U)),()=>{k.current=!1,r&&(P==null||P.split(" ").forEach(O=>r.off(O,U))),M&&r&&M.split(" ").forEach(O=>r.store.off(O,U))}},[r,w]),h.useEffect(()=>{k.current&&f&&y(p)},[r,l,f]);const E=[g,r,f];if(E.t=g,E.i18n=r,E.ready=f,f||!f&&!s)return E;throw new Promise(P=>{e.lng?Ag(r,e.lng,u,()=>P()):Mf(r,u,()=>P())})},e3={translation:{"Welcome! 🥳":"مرحباً! 🥳",About:"حول","New Note":"ملاحظة جديدة",Post:"نشر",Home:"الرئيسية","Relay settings":"إعدادات الريلاي",Settings:"الإعدادات",SidebarRelays:"الريلايات",Refresh:"تحديث",Profile:"الملف الشخصي",Logout:"تسجيل الخروج",Following:"المتابعون",followings:"المتابعين",reposted:"أُعيد نشره","just now":"الآن","minute ago_one":"منذ {{count}} دقيقة","minute ago_other":"منذ {{count}} دقيقة","n m":"{{n}} دقيقة","hour ago_one":"منذ {{count}} ساعة","hour ago_other":"منذ {{count}} ساعة","n h":"{{n}} ساعة","day ago_one":"منذ {{count}} يوم","day ago_other":"منذ {{count}} يوم","n d":"{{n}} يوم",date:"{{timestamp, date}}",Follow:"متابعة",Unfollow:"إلغاء المتابعة","Follow failed":"فشل المتابعة","Unfollow failed":"فشل إلغاء المتابعة","show new notes":"إظهار الملاحظات الجديدة","loading...":"جار التحميل...","Loading...":"جار التحميل...","no more notes":"لا توجد ملاحظات إضافية","reply to":"الرد على",reply:"رد",Reply:"رد","load more older replies":"تحميل المزيد من الردود القديمة","Write something...":"اكتب شيئاً...",Cancel:"إلغاء",Mentions:"المنشنات","Failed to post":"فشل النشر","Post successful":"تم النشر بنجاح","Your post has been published":"تم نشر مشاركتك",Repost:"إعادة النشر",Quote:"اقتباس","Copy event ID":"نسخ معرف الحدث","Copy user ID":"نسخ معرف المستخدم","View raw event":"عرض الحدث الخام",Like:"أعجبني","switch to light theme":"التبديل إلى الوضع الفاتح","switch to dark theme":"التبديل إلى الوضع الداكن","switch to system theme":"التبديل إلى وضع النظام",Note:"ملاحظة",note:"ملاحظة","username's following":"متابعي {{username}}","username's used relays":"الريلايات المستخدمة لـ {{username}}","username's muted":"{{username}} تم كتمه",Login:"تسجيل الدخول","Follows you":"يتابعك","Relay Settings":"إعدادات الريلاي","Relay set name":"اسم مجموعة الريلاي","Add a new relay set":"إضافة مجموعة ريلاي جديدة",Add:"إضافة","n relays":"{{n}} ريلايات",Rename:"إعادة تسمية","Copy share link":"نسخ رابط المشاركة",Delete:"حذف","Relay already exists":"الريلاي موجود بالفعل","invalid relay URL":"عنوان URL للريلاي غير صالح","Add a new relay":"إضافة ريلاي جديدة",back:"عودة","Lost in the void":"ضائع في الفراغ","Carry me home":"أعدني إلى المنزل","no replies":"لا توجد ردود","Reply to":"الرد على",Search:"بحث","The relays you are connected to do not support search":"الريلايات المتصلة لا تدعم البحث","Show more...":"عرض المزيد...","All users":"جميع المستخدمين","Display replies":"عرض الردود",Notes:"الملاحظات",Replies:"الردود",Notifications:"الإشعارات","no more notifications":"لا توجد إشعارات إضافية","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"استخدام تسجيل الدخول بالمفتاح الخاص غير آمن. يُوصى باستخدام إضافة متصفح لتسجيل الدخول، مثل alby أو nostr-keyx أو nos2x. إذا كان يجب عليك استخدام مفتاح خاص، يرجى تعيين كلمة مرور للتشفير على الأقل.","Login with Browser Extension":"تسجيل الدخول باستخدام إضافة المتصفح","Login with Bunker":"تسجيل الدخول باستخدام Bunker","Login with Private Key":"تسجيل الدخول باستخدام المفتاح الخاص","reload notes":"إعادة تحميل الملاحظات","Logged in Accounts":"الحسابات المسجلة","Add an Account":"إضافة حساب","More options":"المزيد من الخيارات","Add client tag":"إضافة وسم العميل","Show others this was sent via Jumble":"عرض أن هذه الرسالة أُرسلت عبر Jumble","Are you sure you want to logout?":"هل أنت متأكد أنك تريد تسجيل الخروج؟","relay sets":"مجموعات الريلاي",edit:"تعديل",Languages:"اللغات",Theme:"المظهر",System:"النظام",Light:"فاتح",Dark:"داكن",Temporary:"مؤقت","Choose a relay set":"اختر مجموعة ريلاي","Switch account":"تبديل الحساب",Pictures:"الصور","Picture note":"ملاحظة الصورة","A special note for picture-first clients like Olas":"ملاحظة خاصة للعملاء المعتمدين على الصور مثل Olas","Picture note requires images":"ملاحظة الصورة تتطلب صور",Relays:"الريلايات",Image:"صورة","R & W":"قراءة وكتابة",Read:"قراءة",Write:"كتابة","Pull relay sets":"سحب مجموعات الريلاي","Select the relay sets you want to pull":"اختر مجموعات الريلاي التي تريد استلامها","No relay sets found":"لم يتم العثور على مجموعات ريلاي","Pull n relay sets":"سحب {{n}} مجموعات ريلاي",Pull:"سحب","Select all":"اختر الكل","Relay Sets":"مجموعات الريلاي","Read & Write Relays":"ريلايات القراءة والكتابة","read relays description":"تُستخدم ريلايات القراءة لاسترجاع الأحداث المتعلقة بك. ينشر المستخدمون الآخرون الأحداث التي ترغب في مشاهدتها إلى هذه الريلايات.","write relays description":"تُستخدم ريلايات الكتابة لنشر أحداثك. يسترجع المستخدمون الآخرون أحداثك من هذه الريلايات.","read & write relays notice":"يُفضل أن يكون عدد خوادم القراءة والكتابة بين 2 و4.","Don't have an account yet?":"لا تملك حساباً بعد؟","or simply generate a private key":"أو ببساطة أنشئ مفتاحاً خاصاً","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"هذا مفتاح خاص. لا تشاركه مع أي أحد. احفظه بأمان، فلن تتمكن من استرجاعه إذا فقدته.",Edit:"تعديل",Save:"حفظ","Display Name":"اسم العرض",Bio:"السيرة الذاتية","Nostr Address (NIP-05)":"عنوان Nostr (NIP-05)","Invalid NIP-05 address":"عنوان NIP-05 غير صالح","Copy private key":"نسخ المفتاح الخاص","Enter the password to decrypt your ncryptsec":"أدخل كلمة المرور لفك تشفير ncryptsec",Back:"رجوع","optional: encrypt nsec":"اختياري: تشفير nsec",password:"كلمة المرور","Sign up":"تسجيل","Save to":"حفظ إلى","Enter a name for the new relay set":"أدخل اسماً لمجموعة ريلاي جديدة","Save to a new relay set":"حفظ في مجموعة ريلاي جديدة",Mute:"كتم",Muted:"تم كتمه",Unmute:"إلغاء الكتم","Unmute user":"إلغاء كتم المستخدم","Append n relays":"إضافة {{n}} ريلايات",Append:"إضافة","Select relays to append":"اختر الريلايات للإضافة","calculating...":"جار الحساب...","Calculate optimal read relays":"حساب أفضل ريلايات للقراءة","Login to set":"تسجيل الدخول للوصول إلى المجموعة","Please login to view following feed":"يرجى تسجيل الدخول لعرض خلاصات المتابعة","Send only to r":"إرسال فقط إلى {{r}}","Send only to these relays":"إرسال فقط إلى هذه الريلايات",Explore:"استكشاف","Search relays":"ريلايات البحث",relayInfoBadgeAuth:"مصادقة",relayInfoBadgeSearch:"بحث",relayInfoBadgePayment:"دفع",Operator:"المشغل",Contact:"اتصال",Software:"البرنامج",Version:"الإصدار","Random Relays":"ريلايات عشوائية",randomRelaysRefresh:"تحديث","Explore more":"استكشاف المزيد","Payment page":"صفحة الدفع","Supported NIPs":"NIPs المدعومة","Open in a":"فتح في {{a}}","Cannot handle event of kind k":"لا يمكن معالجة الحدث من النوع {{k}}","Encrypted direct messages not supported":"الرسائل المباشرة المشفرة غير مدعومة","Sorry! The note cannot be found 😔":"عذراً! لا يمكن العثور على الملاحظة 😔","This user has been muted":"تم كتم هذا المستخدم",Wallet:"المحفظة",Sats:"Sats",sats:"sats","Zap to":"إرسال Zap إلى","Zap n sats":"Zap {{n}} sats",zapComment:"تعليق","Default zap amount":"الكمية الافتراضية لـ Zap","Default zap comment":"التعليق الافتراضي لـ Zap","Lightning Address (or LNURL)":"عنوان Lightning (أو LNURL)","Quick zap":"Zap سريع","If enabled, you can zap with a single click. Click and hold for custom amounts":"إذا تم تمكينه، يمكنك إرسال Zap بنقرة واحدة. انقر واستمر للحصول على كميات مخصصة",All:"الكل",Reactions:"التفاعلات",Zaps:"Zaps","Enjoying Jumble?":"هل تستمتع بـ Jumble؟","Your donation helps me maintain Jumble and make it better! 😊":"تبرعك يساعد في صيانة Jumble وتحسينه! 😊","Earlier notifications":"الإشعارات السابقة","Temporarily display this note":"عرض هذه الملاحظة مؤقتاً",buttonFollowing:"جارٍ المتابعة","Are you sure you want to unfollow this user?":"هل أنت متأكد أنك تريد إلغاء متابعة هذا المستخدم؟","Recent Supporters":"الداعمين الجدد","Seen on":"شوهد على","Temporarily display this reply":"عرض هذا الرد مؤقتاً","Note not found":"لم يتم العثور على الملاحظة","no more replies":"لا توجد مزيد من الردود","Relay sets":"مجموعات الريلاي","Favorite Relays":"الريلايات المفضلة","Following's Favorites":"المفضلات من المتابعين","no more relays":"لا توجد مزيد من الريلايات","Favorited by":"المفضلة من قبل","Post settings":"إعدادات النشر","Media upload service":"خدمة تحميل الوسائط","Choose a relay":"اختر ريلاي","no relays found":"لم يتم العثور على ريلايات",video:"فيديو","Show n new notes":"عرض {{n}} ملاحظات جديدة",YouTabName:"أنت",Bookmark:"الإشارة المرجعية","Remove bookmark":"إزالة الإشارة","no bookmarks found":"لم يتم العثور على إشارات","no more bookmarks":"لا مزيد من الإشارات",Bookmarks:"الإشارات المرجعية","Show more":"عرض المزيد",General:"عام",Autoplay:"التشغيل التلقائي","Enable video autoplay on this device":"تمكين التشغيل التلقائي للفيديو على هذا الجهاز","Paste or drop media files to upload":"الصق أو اسحب ملفات الوسائط لتحميلها",Preview:"معاينة","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"أنت على وشك نشر حدث موقع من قبل [{{eventAuthorName}}]. أنت حالياً مسجل الدخول كـ [{{currentUsername}}]. هل أنت متأكد؟","Platinum Sponsors":"الرعاة البلاتينيون",From:"من","Comment on":"تعليق على","View on njump.me":"عرض على njump.me","Hide content from untrusted users":"إخفاء المحتوى من المستخدمين غير الموثوقين","Only show content from your followed users and the users they follow":"فقط عرض المحتوى من المستخدمين الذين تتابعهم والمستخدمين الذين يتابعونهم","Followed by":"متابع من قبل","Mute user privately":"كتم المستخدم بشكل خاص","Mute user publicly":"كتم المستخدم علنياً",Quotes:"الاقتباسات","Lightning Invoice":"فاتورة Lightning","Bookmark failed":"فشل في الإشارة المرجعية","Remove bookmark failed":"فشل في إزالة الإشارة المرجعية",Translation:"الترجمة",Balance:"الرصيد",characters:"الحروف",jumbleTranslateApiKeyDescription:"يمكنك استخدام مفتاح API هذا في أي مكان آخر يدعم LibreTranslate. عنوان الخدمة هو {{serviceUrl}}","Top up":"إعادة شحن","Will receive: {n} characters":"ستتلقى: {{n}} حروف","Top up {n} sats":"إعادة شحن {{n}} ساتوشي","Minimum top up is {n} sats":"الحد الأدنى لإعادة الشحن هو {{n}} ساتوشي",Service:"الخدمة","Reset API key":"إعادة تعيين مفتاح API","Are you sure you want to reset your API key? This action cannot be undone.":"هل أنت متأكد أنك تريد إعادة تعيين مفتاح API الخاص بك؟ لا يمكن التراجع عن هذا الإجراء.",Warning:"تحذير","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"مفتاح API الحالي الخاص بك سيصبح غير صالح على الفور، وأي تطبيقات تستخدمه ستتوقف عن العمل حتى تقوم بتحديثها بالمفتاح الجديد.","Service address":"عنوان الخدمة",Pay:"دفع",interactions:"التفاعلات",notifications:"الإشعارات","Show untrusted {type}":"إظهار {{type}} غير الموثوق","Hide untrusted {type}":"إخفاء {{type}} غير الموثوق","Currently hiding {type} from untrusted users.":"حاليًا إخفاء {{type}} من المستخدمين غير الموثوقين.","Currently showing all {type}.":"حاليًا عرض جميع {{type}}.","Click continue to show all {type}.":"انقر على متابعة لعرض جميع {{type}}.","Click continue to hide {type} from untrusted users.":"انقر على متابعة لإخفاء {{type}} من المستخدمين غير الموثوقين.","Trusted users include people you follow and people they follow.":"المستخدمون الموثوقون هم الأشخاص الذين تتابعهم والأشخاص الذين يتابعونهم.",Continue:"متابعة","Successfully updated mute list":"تم تحديث قائمة الكتم بنجاح","No pubkeys found from {url}":"لم يتم العثور على مفاتيح عامة من {{url}}","Translating...":"جارٍ الترجمة...",Translate:"ترجمة","Show original":"عرض الأصل",Website:"الموقع الإلكتروني","Hide untrusted notes":"إخفاء الملاحظات غير الموثوقة","Open in another client":"فتح في عميل آخر",Community:"المجتمع",Group:"المجموعة","Live event":"حدث مباشر",Article:"مقالة",Unfavorite:"إلغاء المفضلة","Recommended relays":"الريلايات الموصى بها","Blossom server URLs":"عناوين خوادم Blossom","You need to add at least one blossom server in order to upload media files.":"تحتاج إلى إضافة خادم Blossom واحد على الأقل لتحميل ملفات الوسائط.","Recommended blossom servers":"خوادم Blossom الموصى بها","Enter Blossom server URL":"أدخل عنوان خادم Blossom URL",Preferred:"المفضل","Multiple choice (select one or more)":"اختيار متعدد (اختر واحداً أو أكثر)",Vote:"صوت","{{number}} votes":"{{number}} أصوات","Total votes":"إجمالي الأصوات","Poll has ended":"انتهى الاستطلاع","Poll ends at {{time}}":"ينتهي الاستطلاع في {{time}}","Load results":"تحميل النتائج","This is a poll note.":"هذه ملاحظة استطلاع.","Unlike regular notes, polls are not widely supported and may not display on other clients.":"على عكس الملاحظات العادية، الاستطلاعات غير مدعومة على نطاق واسع وقد لا تظهر في العملاء الآخرين.","Option {{number}}":"الخيار {{number}}","Add Option":"إضافة خيار","Allow multiple choices":"السماح بخيارات متعددة","End Date (optional)":"تاريخ الانتهاء (اختياري)","Clear end date":"مسح تاريخ الانتهاء","Relay URLs (optional, comma-separated)":"عناوين المرحلات (اختياري، مفصولة بفواصل)","Remove poll":"إزالة الاستطلاع","Refresh results":"تحديث النتائج",Poll:"استطلاع",Media:"الوسائط","Republish to ...":"إعادة النشر إلى ...","Successfully republish to your write relays":"تم إعادة النشر بنجاح إلى ريلايات الكتابة الخاصة بك","Failed to republish to your write relays: {{error}}":"فشل في إعادة النشر إلى ريلايات الكتابة الخاصة بك: {{error}}","Successfully republish to relay set: {{name}}":"تم إعادة النشر بنجاح إلى مجموعة الريلاي: {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"فشل في إعادة النشر إلى مجموعة الريلاي: {{name}}. خطأ: {{error}}","Successfully republish to relay: {{url}}":"تم إعادة النشر بنجاح إلى الريلاي: {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"فشل في إعادة النشر إلى الريلاي: {{url}}. خطأ: {{error}}","Write relays":"مرحلات الكتابة","No more reactions":"لا توجد تفاعلات إضافية","No reactions yet":"لا توجد تفاعلات بعد","No more zaps":"لا توجد مزيد من الزابس","No zaps yet":"لا توجد زابس بعد","No more reposts":"لا توجد مزيد من إعادة النشر","No reposts yet":"لا توجد إعادة نشر بعد",Reposts:"إعادة النشر",FollowListNotFoundConfirmation:"لم يتم العثور على قائمة المتابعة. هل تريد إنشاء واحدة جديدة؟ إذا كنت قد تابعت مستخدمين من قبل، يرجى عدم التأكيد لأن هذه العملية ستؤدي إلى فقدان قائمة المتابعة السابقة.",MuteListNotFoundConfirmation:"لم يتم العثور على قائمة الكتم. هل تريد إنشاء واحدة جديدة؟ إذا كنت قد كتمت مستخدمين من قبل، يرجى عدم التأكيد لأن هذه العملية ستؤدي إلى فقدان قائمة الكتم السابقة.","Show NSFW content by default":"إظهار محتوى NSFW افتراضياً","Custom emoji management":"إدارة الرموز التعبيرية المخصصة","After changing emojis, you may need to refresh the page":"بعد تغيير الرموز التعبيرية، قد تحتاج إلى تحديث الصفحة","Too many read relays":"Too many read relays","Too many write relays":"Too many write relays","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.","Optimize Relay Settings":"تحسين إعدادات الترحيل","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"قد لا تكون تكوينات الترحيل الحالية مثلى. هذا قد يجعل من الصعب على الآخرين العثور على منشوراتك وقد يؤدي إلى إشعارات غير مكتملة.","Optimize Now":"تحسين الآن","Maybe Later":"ربما لاحقاً","Don't remind me again":"لا تذكرني مرة أخرى",Posts:"المشاركات",Articles:"المقالات",Highlights:"التمييز",Polls:"الاستطلاعات","Voice Posts":"المشاركات الصوتية","Photo Posts":"مشاركات الصور","Video Posts":"مشاركات الفيديو","Select All":"تحديد الكل","Clear All":"مسح الكل","Set as default filter":"تعيين كمرشح افتراضي",Apply:"تطبيق",Reset:"إعادة تعيين","Share something on this Relay":"شارك شيئاً على هذا الريلاي","Try deleting this note":"حاول حذف هذه الملاحظة","Deletion request sent to {{count}} relays":"تم إرسال طلب الحذف إلى {{count}} ريلايات","Suitable Relays":"الريلايات المناسبة","People, keywords, or relays":"أشخاص، كلمات مفتاحية، أو ريلايات","Hide content mentioning muted users":"إخفاء المحتوى الذي يذكر المستخدمين المكتومين","This note mentions a user you muted":"هذه الملاحظة تذكر مستخدماً قمت بكتمه",Filter:"مرشح","mentioned you in a note":"ذكرك في ملاحظة","quoted your note":"اقتبس ملاحظتك","voted in your poll":"صوت في استطلاعك","reacted to your note":"تفاعل مع ملاحظتك","reposted your note":"أعاد نشر ملاحظتك","zapped your note":"زاب ملاحظتك","highlighted your note":"أبرز ملاحظتك","zapped you":"زابك","Mark as read":"تعليم كمقروء",Report:"تبليغ","Successfully report":"تم التبليغ بنجاح","Failed to report":"فشل في التبليغ",nudity:"عُري",malware:"برامج ضارة",profanity:"ألفاظ نابية",illegal:"محتوى غير قانوني",spam:"رسائل مزعجة",other:"أخرى","Notification list style":"نمط قائمة الإشعارات","See extra info for each notification":"عرض معلومات إضافية لكل إشعار","See more notifications at a glance":"رؤية المزيد من الإشعارات بنظرة سريعة",Detailed:"تفصيلي",Compact:"مضغوط","Submit Relay":"إرسال ريلاي",Homepage:"الصفحة الرئيسية","Proof of Work (difficulty {{minPow}})":"إثبات العمل (الصعوبة {{minPow}})","Proof of Work":"إثبات العمل","Posts & comments difficulty":"صعوبة المنشورات والتعليقات","Reactions difficulty":"صعوبة التفاعلات","Image Mode":"وضع الصور","Media Feed":"خلاصة الوسائط","Text Only":"خلاصة النص","Text Post":"منشور نصي","Picture Post":"منشور صورة","Video Post":"منشور فيديو","Short Video Post":"فيديو قصير",Text:"نص",Picture:"صورة",Video:"فيديو","Short Video":"فيديو قصير","Post Type":"نوع المنشور","via {{client}}":"عبر {{client}}","Auto-load media":"تحميل الوسائط تلقائياً",Always:"دائماً","Wi-Fi only":"Wi-Fi فقط",Never:"أبداً","Click to load image":"انقر لتحميل الصورة","Click to load media":"انقر لتحميل الوسائط","Click to load YouTube video":"انقر لتحميل فيديو YouTube","{{count}} reviews":"{{count}} مراجعة","Write a review":"كتابة مراجعة","No reviews yet. Be the first to write one!":"لا توجد مراجعات بعد. كن أول من يكتب واحدة!","View more reviews":"عرض المزيد من المراجعات","Failed to review":"فشل في المراجعة","Write a review and pick a star rating":"اكتب مراجعة واختر تقييماً بالنجوم",Submit:"إرسال","Reviews for {{relay}}":"مراجعات لـ {{relay}}","No relays selected":"لم يتم اختيار أي مرحل","Post to":"نشر إلى","Write relays and {{count}} other relays":"مرحلات الكتابة و {{count}} مرحل آخر","{{count}} relays":"{{count}} ريلايات","Republishing...":"جارٍ إعادة النشر...","Trending Notes":"الملاحظات الرائجة","Connected to":"متصل بـ","Disconnect Wallet":"قطع الاتصال بالمحفظة","Are you absolutely sure?":"هل أنت متأكد تماماً؟","You will not be able to send zaps to others.":"لن تتمكن من إرسال zaps للآخرين.",Disconnect:"قطع الاتصال","Start with a Rizful Vault":"ابدأ بمحفظة Rizful","or other wallets":"أو محافظ أخرى","Rizful Vault":"محفظة Rizful","Rizful Vault connected!":"تم توصيل محفظة Rizful!","You can now use your Rizful Vault to zap your favorite notes and creators.":"يمكنك الآن استخدام محفظة Rizful الخاصة بك لإرسال zap إلى ملاحظاتك والمبدعين المفضلين لديك.","Your Lightning Address":"عنوان Lightning الخاص بك","New to Rizful?":"جديد في Rizful؟","Sign up for Rizful":"سجل في Rizful","If you already have a Rizful account, you can skip this step.":"إذا كان لديك حساب Rizful بالفعل، يمكنك تخطي هذه الخطوة.","Get your one-time code":"احصل على رمز الاستخدام مرة واحدة","Get code":"احصل على الرمز","Connect to your Rizful Vault":"الاتصال بمحفظة Rizful الخاصة بك","Paste your one-time code here":"الصق رمز الاستخدام مرة واحدة هنا",Connect:"اتصال","Set up your wallet to send and receive sats!":"قم بإعداد محفظتك لإرسال واستقبال الساتس!","Set up":"إعداد",Pinned:"مثبت",Unpin:"إلغاء التثبيت",Unpinning:"جارٍ إلغاء التثبيت","Pinning...":"جارٍ التثبيت...","Pinned!":"تم التثبيت!","Failed to pin: {{error}}":"فشل في التثبيت: {{error}}","Unpinning...":"جارٍ إلغاء التثبيت...","Unpinned!":"تم إلغاء التثبيت!","Failed to unpin: {{error}}":"فشل في إلغاء التثبيت: {{error}}","Unpin from profile":"إلغاء التثبيت من الملف الشخصي","Pin to profile":"تثبيت في الملف الشخصي",Appearance:"المظهر","Pure Black":"أسود نقي",Default:"افتراضي",Red:"أحمر",Orange:"برتقالي",Amber:"عنبر",Yellow:"أصفر",Lime:"ليموني",Green:"أخضر",Emerald:"زمردي",Teal:"أزرق مخضر",Cyan:"سماوي",Sky:"سماء",Blue:"أزرق",Indigo:"نيلي",Violet:"بنفسجي",Purple:"أرجواني",Fuchsia:"فوشيا",Pink:"وردي",Rose:"وردة","Primary color":"اللون الأساسي",Layout:"التخطيط","Two-column":"عمودين","Single-column":"عمود واحد",Reviews:"المراجعات",Extension:"امتداد",Remote:"عن بُعد","Encrypted Key":"مفتاح مشفر","Private Key":"مفتاح خاص","Welcome to Jumble":"مرحبًا بك في Jumble","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","Explore Relays":"استكشف المرحلات","Choose a feed":"اختر خلاصة","and {{x}} others":"و {{x}} آخرون",selfZapWarning:"Jumble غير مسؤولة عما يحدث إذا أرسلت zap لنفسك. تابع على مسؤوليتك الخاصة. 😉⚡","Emoji Pack":"حزمة الرموز التعبيرية","Emoji pack added":"تمت إضافة حزمة الرموز التعبيرية","Add emoji pack failed":"فشل إضافة حزمة الرموز التعبيرية","Emoji pack removed":"تمت إزالة حزمة الرموز التعبيرية","Remove emoji pack failed":"فشل إزالة حزمة الرموز التعبيرية",Added:"تمت الإضافة","Emoji Packs":"حزم الرموز التعبيرية","My Packs":"حزمي","Adding...":"جاري الإضافة...","Removing...":"جاري الإزالة...",Reload:"إعادة التحميل","Request to Join Relay":"طلب الانضمام إلى المرحل","Leave Relay":"مغادرة المرحل",Leave:"مغادرة","Are you sure you want to leave this relay?":"هل أنت متأكد من أنك تريد مغادرة هذا المرحل؟","Join request sent successfully":"تم إرسال طلب الانضمام بنجاح","Failed to send join request":"فشل إرسال طلب الانضمام","Leave request sent successfully":"تم إرسال طلب المغادرة بنجاح","Failed to send leave request":"فشل إرسال طلب المغادرة","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"أدخل رمز الدعوة إذا كان لديك واحد. وإلا، اتركه فارغًا لإرسال طلب.","Invite Code (Optional)":"رمز الدعوة (اختياري)","Enter invite code":"أدخل رمز الدعوة","Sending...":"جاري الإرسال...","Send Request":"إرسال الطلب","You can get an invite code from a relay member.":"يمكنك الحصول على رمز دعوة من عضو المرحل.","Enter the invite code you received from a relay member.":"أدخل رمز الدعوة الذي تلقيته من عضو المرحل.","Get Invite Code":"الحصول على رمز الدعوة","Share this invite code with others to invite them to join this relay.":"شارك رمز الدعوة هذا مع الآخرين لدعوتهم للانضمام إلى هذا المرحل.","Invite Code":"رمز الدعوة",Copy:"نسخ","This invite code can be used by others to join the relay.":"يمكن للآخرين استخدام رمز الدعوة هذا للانضمام إلى المرحل.","No invite code available from this relay.":"لا يوجد رمز دعوة متاح من هذا المرحل.",Close:"إغلاق","Failed to get invite code from relay":"فشل الحصول على رمز الدعوة من المرحل","Failed to get invite code":"فشل الحصول على رمز الدعوة","Invite code copied to clipboard":"تم نسخ رمز الدعوة إلى الحافظة","Favicon URL":"رابط الأيقونة المفضلة","Filter out onion relays":"تصفية مرحلات onion","Click to load X post":"انقر لتحميل منشور X","View Nostr comments":"عرض تعليقات Nostr","Search for notes":"البحث عن الملاحظات","Search for hashtag":"البحث عن الوسم","Go to note":"الانتقال إلى الملاحظة","Go to relay":"الانتقال إلى المرحل","View discussions about this":"عرض المناقشات حول هذا المحتوى","Open link":"فتح الرابط","View Nostr discussions":"عرض مناقشات Nostr","Optimal relays":"المرحلات المثلى","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"تم إعادة النشر بنجاح إلى المرحلات المثلى (مرحلات الكتابة الخاصة بك ومرحلات القراءة للمستخدمين المذكورين)","Failed to republish to optimal relays: {{error}}":"فشل إعادة النشر إلى المرحلات المثلى: {{error}}","External Content":"محتوى خارجي",Highlight:"تسليط الضوء","Optimal relays and {{count}} other relays":"المرحلات المثلى و {{count}} مرحلات أخرى","Low trust ranking ({{percentile}}%)":"تصنيف ثقة منخفض ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"حساب مشبوه (درجة الثقة: {{percentile}}%)","n users":"{{count}} مستخدمين","View Details":"عرض التفاصيل","Follow Pack Not Found":"لم يتم العثور على حزمة المتابعة","Follow pack not found":"لم يتم العثور على حزمة المتابعة",Users:"المستخدمون",Feed:"التغذية","Follow Pack":"حزمة المتابعة","24h Pulse":"النبض 24 ساعة","Load earlier":"تحميل سابق","Last 24 hours":"آخر 24 ساعة","Last {{count}} days":"آخر {{count}} أيام",notes:"ملاحظات","Quick reaction":"رد فعل سريع","If enabled, you can react with a single click. Click and hold for more options":"إذا تم التمكين، يمكنك التفاعل بنقرة واحدة. اضغط مع الاستمرار للمزيد من الخيارات","Quick reaction emoji":"رمز تعبيري للرد السريع","Select emoji":"اختر رمز تعبيري","NSFW content display":"NSFW content display","Hide completely":"Hide completely","Show but hide content":"Show but hide content","Show directly":"Show directly","Click to view":"Click to view","Special Follow":"متابعة خاصة","Unfollow Special":"إلغاء المتابعة الخاصة","Personal Feeds":"التدفقات الشخصية","Relay Feeds":"تدفقات الترحيل","Create Highlight":"إنشاء تمييز","Write your thoughts about this highlight...":"اكتب أفكارك حول هذا التمييز...","Publish Highlight":"نشر التمييز","Show replies":"إظهار الردود","Hide replies":"إخفاء الردود","Welcome to Jumble!":"مرحبًا بك في Jumble!","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"خلاصتك فارغة لأنك لا تتابع أي شخص بعد. ابدأ باستكشاف محتوى مثير للاهتمام ومتابعة المستخدمين الذين تحبهم!","Search Users":"البحث عن المستخدمين","Create New Account":"إنشاء حساب جديد",Important:"مهم","Generate Your Account":"إنشاء حسابك","Your private key IS your account. Keep it safe!":"مفتاحك الخاص هو حسابك. احتفظ به بأمان!","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"في Nostr، مفتاحك الخاص هو حسابك. إذا فقدت مفتاحك الخاص، ستفقد حسابك إلى الأبد.","Your Private Key":"مفتاحك الخاص","Generate new key":"إنشاء مفتاح جديد","Download Backup File":"تنزيل ملف النسخ الاحتياطي","Copied to Clipboard":"تم النسخ إلى الحافظة","Copy to Clipboard":"نسخ إلى الحافظة","I already saved my private key securely.":"لقد حفظت مفتاحي الخاص بشكل آمن بالفعل.","Almost Done!":"على وشك الانتهاء!","Set a password to encrypt your key, or skip to finish":"قم بتعيين كلمة مرور لتشفير مفتاحك، أو تخطى للانتهاء","Password Protection (Optional)":"الحماية بكلمة مرور (اختياري)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"يؤدي تعيين كلمة مرور إلى تشفير مفتاحك الخاص في هذا المتصفح. يمكنك تخطي هذه الخطوة، لكننا نوصي بتعيين واحدة لمزيد من الأمان.","Password (Optional)":"كلمة المرور (اختياري)","Enter password or leave empty to skip":"أدخل كلمة المرور أو اتركها فارغة للتخطي","Confirm Password":"تأكيد كلمة المرور","Re-enter password":"أعد إدخال كلمة المرور","Passwords do not match":"كلمات المرور غير متطابقة","Finish Signup":"إنهاء التسجيل","Create Your Nostr Account":"أنشئ حساب Nostr الخاص بك","Generate your unique private key. This is your digital identity.":"أنشئ مفتاحك الخاص الفريد. هذه هي هويتك الرقمية.","Critical: Save Your Private Key":"حرج: احفظ مفتاحك الخاص","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"مفتاحك الخاص هو حسابك. لا يوجد استرداد لكلمة المرور. إذا فقدته، ستفقد حسابك للأبد. يرجى حفظه في مكان آمن.","I have safely backed up my private key":"لقد قمت بعمل نسخة احتياطية آمنة لمفتاحي الخاص","Secure Your Account":"أمّن حسابك","Add an extra layer of protection with a password":"أضف طبقة إضافية من الحماية بكلمة مرور","Password Protection (Recommended)":"الحماية بكلمة مرور (موصى به)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"أضف كلمة مرور لتشفير مفتاحك الخاص في هذا المتصفح. هذا اختياري لكنه موصى به بشدة لأمان أفضل.","Create a password (or skip)":"أنشئ كلمة مرور (أو تخطى)","Enter your password again":"أدخل كلمة المرور مرة أخرى","Complete Signup":"إكمال التسجيل",Recommended:"موصى به","Enter Password":"أدخل كلمة المرور",Password:"كلمة المرور",Confirm:"تأكيد","trust-filter.title":"مرشح درجة الثقة","trust-filter.off":"إيقاف","trust-filter.low":"منخفض","trust-filter.medium":"متوسط","trust-filter.high":"عالي","trust-filter.wot":"WoT","trust-filter.filter-threshold":"عتبة التصفية","trust-filter.quick-presets":"إعدادات سريعة","trust-filter.show-all-content":"إظهار جميع المحتويات","trust-filter.only-show-wot":"إظهار شبكة الثقة الخاصة بك فقط (المتابَعون + متابَعوهم)","trust-filter.hide-bottom-percent":"تصفية أدنى {{score}}٪ من المستخدمين حسب تصنيف الثقة","trust-filter.trust-score-description":"محسوبة بناءً على سمعة المستخدم والنسبة المئوية للشبكة الاجتماعية","Auto-load profile pictures":"تحميل صور الملف الشخصي تلقائيًا","Disable live feed":"تعطيل التغذية المباشرة","Enable live feed":"تفعيل التغذية المباشرة","Default relays":"المرحلات الافتراضية","Reset to default":"إعادة تعيين إلى الافتراضي","Default relays description":"تُستخدم للاستعلام عن تكوينات المرحلات للمستخدمين الآخرين وكبديل احتياطي عندما لا يكون لدى المستخدمين مرحلات مكوّنة.","Default relays warning":"تحذير: يرجى عدم تعديل هذه الإعدادات بشكل عشوائي، فقد يؤثر ذلك على تجربتك الأساسية.","Invalid relay URL":"عنوان URL للمرحل غير صالح","Muted words":"الكلمات المحظورة","Add muted word":"إضافة كلمة محظورة","Zap Details":"تفاصيل Zap","Default trust score filter threshold ({{n}}%)":"عتبة مرشح درجة الثقة الافتراضية ({{n}}%)","No notes found":"لم يتم العثور على ملاحظات","Try again later or check your connection":"حاول مرة أخرى لاحقًا أو تحقق من اتصالك","Hide indirect":"إخفاء غير المباشرة","Copy note content":"نسخ محتوى الملاحظة","Video loop":"تكرار الفيديو","Automatically replay videos when they end":"إعادة تشغيل مقاطع الفيديو تلقائيًا عند انتهائها","Relays used for searching notes (NIP-50)":"الريلايات المستخدمة للبحث عن الملاحظات (NIP-50)","Protected event (NIP-70)":"حدث محمي (NIP-70)",Protected:"محمي","Protected event hint":"الأحداث المحمية (NIP-70) لا يمكن نشرها إلا من قبل المؤلف. سترفض الخوادم هذه الأحداث من أطراف ثالثة، مما يمنع الآخرين من إعادة بث محتواك. ملاحظة: لا تدعم جميع الخوادم الأحداث المحمية.","Allow insecure connections":"السماح بالاتصالات غير الآمنة","Allow insecure connections description":"السماح بتحميل موارد http:// والاتصال بمرحلات ws://. قد يؤدي إلى تحذيرات المحتوى المختلط في المتصفح.","reacted to":"تفاعل مع",Reaction:"تفاعل","n users_one":"مستخدم واحد","n users_other":"{{count}} مستخدمين","Font size":"حجم الخط","Advanced mode":"الوضع المتقدم","Post type selector":"محدد نوع المنشور","Shows post kind dropdown when creating posts":"يظهر قائمة منسدلة لنوع المنشور عند إنشاء المنشورات","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"البحث في المجتمعات...","No communities found":"لم يتم العثور على مجتمعات","No communities yet":"لا توجد مجتمعات بعد"}},t3={translation:{"Welcome! 🥳":"Willkommen! 🥳",About:"Über","New Note":"Neue Notiz",Post:"Beitrag",Home:"Startseite","Relay settings":"Relay-Einstellungen",Settings:"Einstellungen",SidebarRelays:"Relays",Refresh:"Aktualisieren",Profile:"Profil",Logout:"Abmelden",Following:"Folgende",followings:"Folgekonten",reposted:"erneut gepostet","just now":"gerade eben","minute ago_one":"vor {{count}} Minute","minute ago_other":"vor {{count}} Minuten","n m":"vor {{n}}m","hour ago_one":"vor {{count}} Stunde","hour ago_other":"vor {{count}} Stunden","n h":"vor {{n}}h","day ago_one":"vor {{count}} Tag","day ago_other":"vor {{count}} Tagen","n d":"vor {{n}}d",date:"{{timestamp, date}}",Follow:"Folgen",Unfollow:"Nicht mehr folgen","Follow failed":"Folgen fehlgeschlagen","Unfollow failed":"Nicht mehr folgen fehlgeschlagen","show new notes":"zeige neue Notizen","loading...":"lädt...","Loading...":"Lade...","no more notes":"keine weiteren Notizen","reply to":"antworten an",reply:"antworten",Reply:"Antwort","load more older replies":"ältere Antworten laden","Write something...":"Schreibe etwas...",Cancel:"Abbrechen",Mentions:"@","Failed to post":"Posten fehlgeschlagen","Post successful":"Beitrag erfolgreich","Your post has been published":"Dein Beitrag wurde veröffentlicht",Repost:"Erneut posten",Quote:"Zitat","Copy event ID":"Ereignis-ID kopieren","Copy user ID":"Benutzer-ID kopieren","View raw event":"Rohdaten anzeigen",Like:"Gefällt mir","switch to light theme":"Wechsel zum hellen Design","switch to dark theme":"Wechsel zum dunklen Design","switch to system theme":"Zum Systemthema wechseln",Note:"Notiz",note:"notiz","username's following":"{{username}}s Folgen","username's used relays":"{{username}}s verwendete Relays","username's muted":"{{username}}s stummgeschaltet",Login:"Anmelden","Follows you":"Folgt dir","Relay Settings":"Relay-Einstellungen","Relay set name":"Relay-Set Name","Add a new relay set":"Neues Relay-Set hinzufügen",Add:"Hinzufügen","n relays":"{{n}} Relays",Rename:"Umbenennen","Copy share link":"Freigabelink kopieren",Delete:"Löschen","Relay already exists":"Relay existiert bereits","invalid relay URL":"Ungültige Relay-URL","Add a new relay":"Neues Relay hinzufügen",back:"Zurück","Lost in the void":"Verloren im Nichts","Carry me home":"Bring mich nach Hause","no replies":"keine Antworten","Reply to":"Antwort an",Search:"Suchen","The relays you are connected to do not support search":"Die verbundenen Relays unterstützen keine Suche","Show more...":"Mehr anzeigen...","All users":"Alle Benutzer","Display replies":"Antworten anzeigen",Notes:"Notizen",Replies:"Antworten",Notifications:"Benachr.","no more notifications":"keine weiteren Benachrichtigungen","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"Die Anmeldung mit privatem Schlüssel ist unsicher. Es wird empfohlen, eine Browser-Erweiterung wie alby, nostr-keyx oder nos2x zu verwenden. Wenn du einen privaten Schlüssel verwenden musst, solltest du mindestens ein Passwort zur Verschlüsselung festlegen.","Login with Browser Extension":"Mit Browser-Erweiterung anmelden","Login with Bunker":"Mit Bunker anmelden","Login with Private Key":"Mit privatem Schlüssel anmelden","reload notes":"Notizen neu laden","Logged in Accounts":"Angemeldete Konten","Add an Account":"Konto hinzufügen","More options":"Mehr Optionen","Add client tag":"Client-Tag hinzufügen","Show others this was sent via RogueJumble":"Anderen zeigen, dass dies über RogueJumble gesendet wurde","Are you sure you want to logout?":"Bist du sicher, dass du dich abmelden möchtest?","relay sets":"Relay-Sets",edit:"bearbeiten",Languages:"Sprachen",Theme:"Design",System:"System",Light:"Hell",Dark:"Dunkel",Temporary:"Temporär","Choose a relay set":"Wähle ein Relay-Set","Switch account":"Konto wechseln",Pictures:"Bilder","Picture note":"Bildnotiz","A special note for picture-first clients like Olas":"Eine spezielle Notiz für bildfokussierte Clients wie Olas","Picture note requires images":"Bildnotiz erfordert Bilder",Relays:"Relays",Image:"Bild","R & W":"R & W",Read:"Lesen",Write:"Schreiben","Pull relay sets":"Relay-Sets abrufen","Select the relay sets you want to pull":"Wähle die Relay-Sets, die du abrufen möchtest","No relay sets found":"Keine Relay-Sets gefunden","Pull n relay sets":"Hole {{n}} Relay-Sets",Pull:"Abrufen","Select all":"Alle auswählen","Relay Sets":"Relay-Sets","Read & Write Relays":"Lese- & Schreib-Relays","read relays description":"Leserelays werden verwendet, um Ereignisse über dich abzurufen. Andere Benutzer senden die Ereignisse, die du sehen sollst, an deine Leserelays.","write relays description":"Schreibrelays werden verwendet, um deine Ereignisse zu veröffentlichen. Andere Benutzer rufen deine Ereignisse von deinen Schreibrelays ab.","read & write relays notice":"Die Anzahl der Lese- und Schreibserver sollte idealerweise zwischen 2 und 4 liegen.","Don't have an account yet?":"Noch keinen Account?","or simply generate a private key":"oder erstelle einfach einen privaten Schlüssel","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"Dies ist ein privater Schlüssel. Teile ihn mit niemandem. Bewahre ihn sicher auf. Du kannst ihn nicht wiederherstellen, falls du ihn verlierst.",Edit:"Bearbeiten",Save:"Speichern","Display Name":"Anzeigename",Bio:"Biografie","Nostr Address (NIP-05)":"Nostr-Adresse (NIP-05)","Invalid NIP-05 address":"Ungültige NIP-05 Adresse","Copy private key":"Privaten Schlüssel kopieren","Enter the password to decrypt your ncryptsec":"Gib das Passwort ein, um deinen ncryptsec zu entschlüsseln",Back:"Zurück","optional: encrypt nsec":"optional: nsec verschlüsseln",password:"Passwort","Sign up":"Registrieren","Save to":"Speichern in","Enter a name for the new relay set":"Gib einen Namen für das neue Relay-Set ein","Save to a new relay set":"In ein neues Relay-Set speichern",Mute:"Stummschalten",Muted:"Stummgeschaltet",Unmute:"Stummschaltung aufheben","Unmute user":"Benutzer-Stummschaltung aufheben","Append n relays":"Füge {{n}} Relays hinzu",Append:"Hinzufügen","Select relays to append":"Wähle die hinzuzufügenden Relays","calculating...":"berechne...","Calculate optimal read relays":"Optimale Leserelays berechnen","Login to set":"Anmelden zum Set","Please login to view following feed":"Bitte melde dich an, um den Feed der Folgenden zu sehen","Send only to r":"Nur an {{r}} senden","Send only to these relays":"Nur an diese Relays senden",Explore:"Entdecken","Search relays":"Such-Relays",relayInfoBadgeAuth:"Auth",relayInfoBadgeSearch:"Suche",relayInfoBadgePayment:"Zahlung",Operator:"Betreiber",Contact:"Kontakt",Software:"Software",Version:"Version","Random Relays":"Zufällige Relays",randomRelaysRefresh:"Aktualisieren","Explore more":"Mehr entdecken","Payment page":"Zahlungsseite","Supported NIPs":"Unterstützte NIPs","Open in a":"Öffnen in {{a}}","Cannot handle event of kind k":"Ereignis des Typs {{k}} kann nicht verarbeitet werden","Encrypted direct messages not supported":"Verschlüsselte Direktnachrichten werden nicht unterstützt","Sorry! The note cannot be found 😔":"Entschuldigung! Die Notiz wurde nicht gefunden 😔","This user has been muted":"Dieser Benutzer wurde stummgeschaltet",Wallet:"Wallet",Sats:"Sats",sats:"sats","Zap to":"Zap an","Zap n sats":"Zap {{n}} sats",zapComment:"Kommentar","Default zap amount":"Standard-Zap-Betrag","Default zap comment":"Standard-Zap-Kommentar","Lightning Address (or LNURL)":"Lightning-Adresse (oder LNURL)","Quick zap":"Schneller Zap","If enabled, you can zap with a single click. Click and hold for custom amounts":"Wenn aktiviert, kannst du mit einem Klick zapen. Klicke und halte für individuelle Beträge",All:"Alle",Reactions:"Reaktionen",Zaps:"Zaps","Enjoying RogueJumble?":"Gefällt dir RogueJumble?","Your donation helps me maintain RogueJumble and make it better! 😊":"Deine Spende hilft mir, RogueJumble zu pflegen und zu verbessern! 😊","Earlier notifications":"Frühere Benachrichtigungen","Temporarily display this note":"Notiz vorübergehend anzeigen",buttonFollowing:"Folge","Are you sure you want to unfollow this user?":"Möchtest du diesem Benutzer wirklich nicht mehr folgen?","Recent Supporters":"Neueste Unterstützer","Seen on":"Gesehen auf","Temporarily display this reply":"Antwort vorübergehend anzeigen","Note not found":"Die Notiz wurde nicht gefunden","no more replies":"keine weiteren Antworten","Relay sets":"Relay-Sets","Favorite Relays":"Lieblings-Relays","Following's Favorites":"Favoriten der Folgenden","no more relays":"keine weiteren Relays","Favorited by":"Favorisiert von","Post settings":"Beitragseinstellungen","Media upload service":"Medien-Upload-Service","Choose a relay":"Wähle ein Relay","no relays found":"Keine Relays gefunden",video:"Video","Show n new notes":"Zeige {{n}} neue Notizen",YouTabName:"Du",Bookmark:"Lesezeichen","Remove bookmark":"Lesezeichen entfernen","no bookmarks found":"Keine Lesezeichen gefunden","no more bookmarks":"Keine weiteren Lesezeichen",Bookmarks:"Lesezeichen","Show more":"Mehr anzeigen",General:"Allgemein",Autoplay:"Automatische Wiedergabe","Enable video autoplay on this device":"Aktiviere die automatische Video-Wiedergabe auf diesem Gerät","Paste or drop media files to upload":"Füge Medien-Dateien ein oder ziehe sie hierher, um sie hochzuladen",Preview:"Vorschau","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"Du bist dabei, ein Ereignis zu veröffentlichen, das von [{{eventAuthorName}}] signiert wurde. Du bist derzeit als [{{currentUsername}}] angemeldet. Bist du sicher?","Platinum Sponsors":"Platin-Sponsoren",From:"Von","Comment on":"Kommentar zu","View on njump.me":"Auf njump.me ansehen","Hide content from untrusted users":"Inhalte von nicht vertrauenswürdigen Benutzern ausblenden","Only show content from your followed users and the users they follow":"Nur Inhalte von Benutzern anzeigen, denen du folgst und die sie folgen","Followed by":"Gefolgt von","Mute user privately":"Benutzer privat stummschalten","Mute user publicly":"Benutzer öffentlich stummschalten",Quotes:"Zitate","Lightning Invoice":"Lightning-Rechnung","Bookmark failed":"Bookmark fehlgeschlagen","Remove bookmark failed":"Bookmark entfernen fehlgeschlagen",Translation:"Übersetzung",Balance:"Guthaben",characters:"Zeichen",jumbleTranslateApiKeyDescription:"Du kannst diesen API-Schlüssel überall dort verwenden, wo LibreTranslate unterstützt wird. Die Service-URL ist {{serviceUrl}}","Top up":"Aufladen","Will receive: {n} characters":"Erhalte: {{n}} Zeichen","Top up {n} sats":"Lade {{n}} sats auf","Minimum top up is {n} sats":"Minimale Aufladung beträgt {{n}} sats",Service:"Dienst","Reset API key":"API-Schlüssel zurücksetzen","Are you sure you want to reset your API key? This action cannot be undone.":"Bist du sicher, dass du deinen API-Schlüssel zurücksetzen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.",Warning:"Warnung","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"Dein aktueller API-Schlüssel wird sofort ungültig, und alle Anwendungen, die ihn verwenden, werden nicht mehr funktionieren, bis du sie mit dem neuen Schlüssel aktualisierst.","Service address":"Service-Adresse",Pay:"Bezahlen",interactions:"Interaktionen",notifications:"Benachrichtigungen","Show untrusted {type}":"Untrusted {{type}} anzeigen","Hide untrusted {type}":"Untrusted {{type}} ausblenden","Currently hiding {type} from untrusted users.":"Derzeit werden {{type}} von nicht vertrauenswürdigen Benutzern ausgeblendet.","Currently showing all {type}.":"Derzeit werden alle {{type}} angezeigt.","Click continue to show all {type}.":"Klicke auf Weiter, um alle {{type}} anzuzeigen.","Click continue to hide {type} from untrusted users.":"Klicke auf Weiter, um {{type}} von nicht vertrauenswürdigen Benutzern auszublenden.","Trusted users include people you follow and people they follow.":"Vertrauenswürdige Benutzer sind Personen, denen du folgst, und Personen, denen sie folgen.",Continue:"Weiter","Successfully updated mute list":"Stummschalteliste erfolgreich aktualisiert","No pubkeys found from {url}":"Keine Pubkeys von {{url}} gefunden","Translating...":"Übersetze...",Translate:"Übersetzen","Show original":"Original anzeigen",Website:"Website","Hide untrusted notes":"Untrusted Notizen ausblenden","Open in another client":"In anderem Client öffnen",Community:"Community",Group:"Gruppe","Live event":"Live-Event",Article:"Artikel",Unfavorite:"Nicht mehr favorisieren","Recommended relays":"Empfohlene Relays","Blossom server URLs":"Blossom-Server-URLs","You need to add at least one blossom server in order to upload media files.":"Du musst mindestens einen Blossom-Server hinzufügen, um Mediendateien hochladen zu können.","Recommended blossom servers":"Empfohlene Blossom-Server","Enter Blossom server URL":"Blossom-Server-URL eingeben",Preferred:"Bevorzugt","Multiple choice (select one or more)":"Mehrfachauswahl (eine oder mehrere auswählen)",Vote:"Abstimmen","{{number}} votes":"{{number}} Stimmen","Total votes":"Gesamtstimmen","Poll has ended":"Umfrage beendet","Poll ends at {{time}}":"Umfrage endet am {{time}}","Load results":"Ergebnisse laden","This is a poll note.":"Dies ist eine Umfrage-Notiz.","Unlike regular notes, polls are not widely supported and may not display on other clients.":"Im Gegensatz zu regulären Notizen werden Umfragen nicht weit verbreitet unterstützt und werden möglicherweise nicht in anderen Clients angezeigt.","Option {{number}}":"Option {{number}}","Add Option":"Option hinzufügen","Allow multiple choices":"Mehrfachauswahl erlauben","End Date (optional)":"Enddatum (optional)","Clear end date":"Enddatum löschen","Relay URLs (optional, comma-separated)":"Relay-URLs (optional, durch Kommas getrennt)","Remove poll":"Umfrage entfernen","Refresh results":"Ergebnisse aktualisieren",Poll:"Umfrage",Media:"Medien","Republish to ...":"Erneut veröffentlichen zu ...","Successfully republish to your write relays":"Erfolgreich erneut zu deinen Schreib-Relays veröffentlicht","Failed to republish to your write relays: {{error}}":"Fehler beim erneuten Veröffentlichen zu deinen Schreib-Relays: {{error}}","Successfully republish to relay set: {{name}}":"Erfolgreich erneut zu Relay-Set veröffentlicht: {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"Fehler beim erneuten Veröffentlichen zu Relay-Set: {{name}}. Fehler: {{error}}","Successfully republish to relay: {{url}}":"Erfolgreich erneut zu Relay veröffentlicht: {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"Fehler beim erneuten Veröffentlichen zu Relay: {{url}}. Fehler: {{error}}","Write relays":"Schreib-Relays","No more reactions":"Keine weiteren Reaktionen","No reactions yet":"Noch keine Reaktionen","No more zaps":"Keine weiteren Zaps","No zaps yet":"Noch keine Zaps","No more reposts":"Keine weiteren Reposts","No reposts yet":"Noch keine Reposts",Reposts:"Reposts",FollowListNotFoundConfirmation:"Folgeliste nicht gefunden. Möchten Sie eine neue erstellen? Wenn Sie zuvor Benutzer gefolgt haben, bestätigen Sie bitte NICHT, da diese Operation dazu führt, dass Sie Ihre vorherige Folgeliste verlieren.",MuteListNotFoundConfirmation:"Stummschaltungsliste nicht gefunden. Möchten Sie eine neue erstellen? Wenn Sie zuvor Benutzer stummgeschaltet haben, bestätigen Sie bitte NICHT, da diese Operation dazu führt, dass Sie Ihre vorherige Stummschaltungsliste verlieren.","Show NSFW content by default":"NSFW-Inhalte standardmäßig anzeigen","Custom emoji management":"Benutzerdefinierte Emoji-Verwaltung","After changing emojis, you may need to refresh the page":"Nach dem Ändern von Emojis müssen Sie möglicherweise die Seite aktualisieren","Too many read relays":"Zu viele Lese-Relays","Too many write relays":"Zu viele Schreib-Relays","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"Sie haben {{count}} Lese-Relays. Die meisten Clients verwenden nur 2-4 Relays, mehr einzustellen ist unnötig.","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"Sie haben {{count}} Schreib-Relays. Die meisten Clients verwenden nur 2-4 Relays, mehr einzustellen ist unnötig.","Optimize Relay Settings":"Relay-Einstellungen optimieren","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"Ihre aktuelle Relay-Konfiguration ist möglicherweise nicht optimal. Dies könnte es anderen erschweren, Ihre Beiträge zu finden und zu unvollständigen Benachrichtigungen führen.","Optimize Now":"Jetzt optimieren","Maybe Later":"Vielleicht später","Don't remind me again":"Nicht mehr erinnern",Posts:"Beiträge",Articles:"Artikel",Highlights:"Highlights",Polls:"Umfragen","Voice Posts":"Sprachbeiträge","Photo Posts":"Fotobeiträge","Video Posts":"Videobeiträge","Select All":"Alle auswählen","Clear All":"Alle löschen","Set as default filter":"Als Standardfilter festlegen",Apply:"Anwenden",Reset:"Zurücksetzen","Share something on this Relay":"Teile etwas auf diesem Relay","Try deleting this note":"Versuche, diese Notiz zu löschen","Deletion request sent to {{count}} relays":"Löschanfrage an {{count}} Relays gesendet","Suitable Relays":"Geeignete Relays","People, keywords, or relays":"Personen, Schlüsselwörter oder Relays","Hide content mentioning muted users":"Inhalte ausblenden, die stumme Benutzer erwähnen","This note mentions a user you muted":"Diese Notiz erwähnt einen Benutzer, den Sie stumm geschaltet haben",Filter:"Filter","mentioned you in a note":"hat Sie in einer Notiz erwähnt","quoted your note":"hat Ihre Notiz zitiert","voted in your poll":"hat in Ihrer Umfrage abgestimmt","reacted to your note":"hat auf Ihre Notiz reagiert","reposted your note":"hat Ihre Notiz geteilt","zapped your note":"hat Ihre Notiz gezappt","highlighted your note":"hat Ihre Notiz hervorgehoben","zapped you":"hat Sie gezappt","Mark as read":"Als gelesen markieren",Report:"Melden","Successfully report":"Erfolgreich gemeldet","Failed to report":"Meldung fehlgeschlagen",nudity:"Nacktheit",malware:"Schadsoftware",profanity:"Obszönität",illegal:"Illegaler Inhalt",spam:"Spam",other:"Sonstiges","Notification list style":"Benachrichtigungslistenstil","See extra info for each notification":"Zusätzliche Informationen für jede Benachrichtigung anzeigen","See more notifications at a glance":"Mehr Benachrichtigungen auf einen Blick sehen",Detailed:"Detailliert",Compact:"Kompakt","Submit Relay":"Relay einreichen",Homepage:"Homepage","Proof of Work (difficulty {{minPow}})":"Arbeitsnachweis (Schwierigkeit {{minPow}})","Proof of Work":"Arbeitsnachweis","Posts & comments difficulty":"Schwierigkeit für Beiträge & Kommentare","Reactions difficulty":"Schwierigkeit für Reaktionen","Image Mode":"Bildmodus","Media Feed":"Media-Feed","Text Only":"Text-Feed","Text Post":"Textbeitrag","Picture Post":"Bildbeitrag","Video Post":"Videobeitrag","Short Video Post":"Kurzvideo",Text:"Text",Picture:"Bild",Video:"Video","Short Video":"Kurzvideo","Post Type":"Beitragstyp","via {{client}}":"über {{client}}","Auto-load media":"Medien automatisch laden",Always:"Immer","Wi-Fi only":"Nur WLAN",Never:"Nie","Click to load image":"Klicken, um Bild zu laden","Click to load media":"Klicken, um Medien zu laden","Click to load YouTube video":"Klicken, um YouTube-Video zu laden","{{count}} reviews":"{{count}} Bewertungen","Write a review":"Eine Bewertung schreiben","No reviews yet. Be the first to write one!":"Noch keine Bewertungen. Seien Sie der Erste, der eine schreibt!","View more reviews":"Weitere Bewertungen anzeigen","Failed to review":"Bewertung fehlgeschlagen","Write a review and pick a star rating":"Schreiben Sie eine Bewertung und wählen Sie eine Sternebewertung",Submit:"Absenden","Reviews for {{relay}}":"Bewertungen für {{relay}}","No relays selected":"Keine Relays ausgewählt","Post to":"Posten an","Write relays and {{count}} other relays":"Schreib-Relays und {{count}} andere Relays","{{count}} relays":"{{count}} Relays","Republishing...":"Wird erneut veröffentlicht...","Trending Notes":"Trendende Notizen","Connected to":"Verbunden mit","Disconnect Wallet":"Wallet trennen","Are you absolutely sure?":"Bist du dir absolut sicher?","You will not be able to send zaps to others.":"Du wirst keine Zaps mehr an andere senden können.",Disconnect:"Trennen","Start with a Rizful Vault":"Starte mit einem Rizful Vault","or other wallets":"oder andere Wallets","Rizful Vault":"Rizful Vault","Rizful Vault connected!":"Rizful Vault verbunden!","You can now use your Rizful Vault to zap your favorite notes and creators.":"Du kannst jetzt dein Rizful Vault verwenden, um deine Lieblingsnotizen und -ersteller zu zapen.","Your Lightning Address":"Deine Lightning-Adresse","New to Rizful?":"Neu bei Rizful?","Sign up for Rizful":"Registriere dich bei Rizful","If you already have a Rizful account, you can skip this step.":"Wenn du bereits ein Rizful-Konto hast, kannst du diesen Schritt überspringen.","Get your one-time code":"Hole dir deinen Einmal-Code","Get code":"Code holen","Connect to your Rizful Vault":"Verbinde dich mit deinem Rizful Vault","Paste your one-time code here":"Füge hier deinen Einmal-Code ein",Connect:"Verbinden","Set up your wallet to send and receive sats!":"Richte deine Wallet ein, um Sats zu senden und zu empfangen!","Set up":"Einrichten",Pinned:"Angepinnt",Unpin:"Anheften aufheben",Unpinning:"Anheften wird aufgehoben","Pinning...":"Wird angepinnt...","Pinned!":"Angepinnt!","Failed to pin: {{error}}":"Fehler beim Anpinnen: {{error}}","Unpinning...":"Anheften wird aufgehoben...","Unpinned!":"Anheften aufgehoben!","Failed to unpin: {{error}}":"Fehler beim Anheften aufheben: {{error}}","Unpin from profile":"Vom Profil lösen","Pin to profile":"An Profil anheften",Appearance:"Aussehen","Pure Black":"Reines Schwarz",Default:"Standard",Red:"Rot",Orange:"Orange",Amber:"Bernstein",Yellow:"Gelb",Lime:"Limette",Green:"Grün",Emerald:"Smaragd",Teal:"Blaugrün",Cyan:"Cyan",Sky:"Himmelblau",Blue:"Blau",Indigo:"Indigo",Violet:"Violett",Purple:"Lila",Fuchsia:"Fuchsia",Pink:"Rosa",Rose:"Rose","Primary color":"Primärfarbe",Layout:"Layout","Two-column":"Zweispaltig","Single-column":"Einspaltig",Reviews:"Bewertungen",Extension:"Erweiterung",Remote:"Remote","Encrypted Key":"Verschlüsselter Schlüssel","Private Key":"Privater Schlüssel","Welcome to RogueJumble":"Willkommen bei RogueJumble","RogueJumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"RogueJumble ist ein Client, der sich auf das Durchsuchen von Relays konzentriert. Beginnen Sie mit der Erkundung interessanter Relays oder melden Sie sich an, um Ihren Following-Feed anzuzeigen.","Explore Relays":"Relays erkunden","Choose a feed":"Wähle einen Feed","and {{x}} others":"und {{x}} andere",selfZapWarning:"RogueJumble ist nicht verantwortlich für das, was passiert, wenn Sie sich selbst zappen. Fahren Sie auf eigene Gefahr fort. 😉⚡","Emoji Pack":"Emoji-Paket","Emoji pack added":"Emoji-Paket hinzugefügt","Add emoji pack failed":"Hinzufügen des Emoji-Pakets fehlgeschlagen","Emoji pack removed":"Emoji-Paket entfernt","Remove emoji pack failed":"Entfernen des Emoji-Pakets fehlgeschlagen",Added:"Hinzugefügt","Emoji Packs":"Emoji-Pakete","My Packs":"Meine Pakete","Adding...":"Wird hinzugefügt...","Removing...":"Wird entfernt...",Reload:"Neu laden","Request to Join Relay":"Relay-Beitritt beantragen","Leave Relay":"Relay verlassen",Leave:"Verlassen","Are you sure you want to leave this relay?":"Möchten Sie dieses Relay wirklich verlassen?","Join request sent successfully":"Beitrittsanfrage erfolgreich gesendet","Failed to send join request":"Fehler beim Senden der Beitrittsanfrage","Leave request sent successfully":"Austrittsanfrage erfolgreich gesendet","Failed to send leave request":"Fehler beim Senden der Austrittsanfrage","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"Geben Sie einen Einladungscode ein, falls Sie einen haben. Andernfalls lassen Sie es leer, um eine Anfrage zu senden.","Invite Code (Optional)":"Einladungscode (Optional)","Enter invite code":"Einladungscode eingeben","Sending...":"Wird gesendet...","Send Request":"Anfrage senden","You can get an invite code from a relay member.":"Sie können einen Einladungscode von einem Relay-Mitglied erhalten.","Enter the invite code you received from a relay member.":"Geben Sie den Einladungscode ein, den Sie von einem Relay-Mitglied erhalten haben.","Get Invite Code":"Einladungscode Erhalten","Share this invite code with others to invite them to join this relay.":"Teilen Sie diesen Einladungscode mit anderen, um sie einzuladen, diesem Relay beizutreten.","Invite Code":"Einladungscode",Copy:"Kopieren","This invite code can be used by others to join the relay.":"Dieser Einladungscode kann von anderen verwendet werden, um dem Relay beizutreten.","No invite code available from this relay.":"Kein Einladungscode von diesem Relay verfügbar.",Close:"Schließen","Failed to get invite code from relay":"Fehler beim Abrufen des Einladungscodes vom Relay","Failed to get invite code":"Fehler beim Abrufen des Einladungscodes","Invite code copied to clipboard":"Einladungscode in die Zwischenablage kopiert","Favicon URL":"Favicon-URL","Filter out onion relays":"Onion-Relays herausfiltern","Click to load X post":"Klicken Sie, um X-Beitrag zu laden","View Nostr comments":"Nostr-Kommentare anzeigen","Search for notes":"Notizen suchen","Search for hashtag":"Hashtag suchen","Go to note":"Zur Notiz gehen","Go to relay":"Zum Relay gehen","View discussions about this":"Diskussionen über diesen Inhalt anzeigen","Open link":"Link öffnen","View Nostr discussions":"Nostr-Diskussionen anzeigen","Optimal relays":"Optimale Relays","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"Erfolgreich auf optimale Relays neu veröffentlicht (Ihre Schreib-Relays und die Lese-Relays der erwähnten Benutzer)","Failed to republish to optimal relays: {{error}}":"Fehler beim Neuveröffentlichen auf optimale Relays: {{error}}","External Content":"Externer Inhalt",Highlight:"Hervorheben","Optimal relays and {{count}} other relays":"Optimale Relays und {{count}} andere Relays","Low trust ranking ({{percentile}}%)":"Niedriges Vertrauensranking ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"Verdächtiges Konto (Vertrauenswert: {{percentile}}%)","n users":"{{count}} Benutzer","View Details":"Details anzeigen","Follow Pack Not Found":"Follow-Pack nicht gefunden","Follow pack not found":"Follow-Pack nicht gefunden",Users:"Benutzer",Feed:"Feed","Follow Pack":"Follow-Pack","24h Pulse":"24h Pulse","Load earlier":"Früher laden","Last 24 hours":"Letzte 24 Stunden","Last {{count}} days":"Letzte {{count}} Tage",notes:"Notizen","Quick reaction":"Schnellreaktion","If enabled, you can react with a single click. Click and hold for more options":"Wenn aktiviert, können Sie mit einem Klick reagieren. Klicken und halten Sie für weitere Optionen","Quick reaction emoji":"Schnellreaktions-Emoji","Select emoji":"Emoji auswählen","NSFW content display":"NSFW content display","Hide completely":"Hide completely","Show but hide content":"Show but hide content","Show directly":"Show directly","Click to view":"Click to view","Special Follow":"Besonders Folgen","Unfollow Special":"Besonders Entfolgen","Personal Feeds":"Persönliche Feeds","Relay Feeds":"Relay-Feeds","Create Highlight":"Markierung Erstellen","Write your thoughts about this highlight...":"Schreiben Sie Ihre Gedanken zu dieser Markierung...","Publish Highlight":"Markierung Veröffentlichen","Show replies":"Antworten anzeigen","Hide replies":"Antworten ausblenden","Welcome to RogueJumble!":"Willkommen bei RogueJumble!","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"Ihr Feed ist leer, weil Sie noch niemandem folgen. Beginnen Sie damit, interessante Inhalte zu erkunden und Benutzern zu folgen, die Ihnen gefallen!","Search Users":"Benutzer suchen","Create New Account":"Neues Konto erstellen",Important:"Wichtig","Generate Your Account":"Konto generieren","Your private key IS your account. Keep it safe!":"Ihr privater Schlüssel IST Ihr Konto. Bewahren Sie ihn sicher auf!","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"In Nostr IST Ihr privater Schlüssel Ihr Konto. Wenn Sie Ihren privaten Schlüssel verlieren, verlieren Sie Ihr Konto für immer.","Your Private Key":"Ihr privater Schlüssel","Generate new key":"Neuen Schlüssel generieren","Download Backup File":"Sicherungsdatei herunterladen","Copied to Clipboard":"In Zwischenablage kopiert","Copy to Clipboard":"In Zwischenablage kopieren","I already saved my private key securely.":"Ich habe meinen privaten Schlüssel bereits sicher gespeichert.","Almost Done!":"Fast fertig!","Set a password to encrypt your key, or skip to finish":"Legen Sie ein Passwort fest, um Ihren Schlüssel zu verschlüsseln, oder überspringen Sie, um fertig zu werden","Password Protection (Optional)":"Passwortschutz (optional)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"Das Festlegen eines Passworts verschlüsselt Ihren privaten Schlüssel in diesem Browser. Sie können diesen Schritt überspringen, aber wir empfehlen, eines für zusätzliche Sicherheit festzulegen.","Password (Optional)":"Passwort (optional)","Enter password or leave empty to skip":"Passwort eingeben oder leer lassen, um zu überspringen","Confirm Password":"Passwort bestätigen","Re-enter password":"Passwort erneut eingeben","Passwords do not match":"Passwörter stimmen nicht überein","Finish Signup":"Registrierung abschließen","Create Your Nostr Account":"Erstellen Sie Ihr Nostr-Konto","Generate your unique private key. This is your digital identity.":"Generieren Sie Ihren einzigartigen privaten Schlüssel. Dies ist Ihre digitale Identität.","Critical: Save Your Private Key":"Kritisch: Speichern Sie Ihren privaten Schlüssel","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"Ihr privater Schlüssel IST Ihr Konto. Es gibt keine Passwortwiederherstellung. Wenn Sie ihn verlieren, verlieren Sie Ihr Konto für immer. Bitte speichern Sie ihn an einem sicheren Ort.","I have safely backed up my private key":"Ich habe meinen privaten Schlüssel sicher gesichert","Secure Your Account":"Sichern Sie Ihr Konto","Add an extra layer of protection with a password":"Fügen Sie eine zusätzliche Schutzebene mit einem Passwort hinzu","Password Protection (Recommended)":"Passwortschutz (empfohlen)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"Fügen Sie ein Passwort hinzu, um Ihren privaten Schlüssel in diesem Browser zu verschlüsseln. Dies ist optional, aber für bessere Sicherheit dringend empfohlen.","Create a password (or skip)":"Erstellen Sie ein Passwort (oder überspringen)","Enter your password again":"Geben Sie Ihr Passwort erneut ein","Complete Signup":"Registrierung abschließen",Recommended:"Empfohlen","Enter Password":"Passwort eingeben",Password:"Passwort",Confirm:"Bestätigen","trust-filter.title":"Vertrauenswert-Filter","trust-filter.off":"Aus","trust-filter.low":"Niedrig","trust-filter.medium":"Mittel","trust-filter.high":"Hoch","trust-filter.wot":"WoT","trust-filter.filter-threshold":"Filterschwelle","trust-filter.quick-presets":"Schnellvoreinstellungen","trust-filter.show-all-content":"Alle Inhalte anzeigen","trust-filter.only-show-wot":"Nur Ihr Vertrauensnetzwerk anzeigen (Folgende + deren Folgende)","trust-filter.hide-bottom-percent":"Untere {{score}}% der Benutzer nach Vertrauensrang filtern","trust-filter.trust-score-description":"Berechnet basierend auf Benutzerreputation und sozialem Netzwerk-Perzentil","Auto-load profile pictures":"Profilbilder automatisch laden","Disable live feed":"Live-Feed deaktivieren","Enable live feed":"Live-Feed aktivieren","Default relays":"Standard-Relays","Reset to default":"Auf Standard zurücksetzen","Default relays description":"Werden verwendet, um die Relay-Konfigurationen anderer Benutzer abzufragen und als Fallback, wenn Benutzer keine Relays konfiguriert haben.","Default relays warning":"Warnung: Ändern Sie diese Einstellungen nicht leichtfertig, da dies Ihre grundlegende Erfahrung beeinträchtigen kann.","Invalid relay URL":"Ungültige Relay-URL","Muted words":"Stummgeschaltete Wörter","Add muted word":"Stummgeschaltetes Wort hinzufügen","Zap Details":"Zap-Details","Default trust score filter threshold ({{n}}%)":"Standard-Vertrauenswert-Filter-Schwelle ({{n}}%)","No notes found":"Keine Notizen gefunden","Try again later or check your connection":"Versuchen Sie es später erneut oder überprüfen Sie Ihre Verbindung","Hide indirect":"Indirekte ausblenden","Copy note content":"Notizinhalt kopieren","Video loop":"Video-Schleife","Automatically replay videos when they end":"Videos automatisch wiederholen, wenn sie enden","Relays used for searching notes (NIP-50)":"Relays für die Notizsuche (NIP-50)","Protected event (NIP-70)":"Geschütztes Ereignis (NIP-70)",Protected:"Geschützt","Protected event hint":"Geschützte Ereignisse (NIP-70) können nur vom Autor veröffentlicht werden. Relays lehnen diese Ereignisse von Dritten ab und verhindern so, dass andere Ihre Inhalte weiterverbreiten. Hinweis: Nicht alle Relays unterstützen geschützte Ereignisse.","Allow insecure connections":"Unsichere Verbindungen zulassen","Allow insecure connections description":"Laden von http://-Ressourcen und Verbindung zu ws://-Relays erlauben. Kann Browser-Warnungen zu gemischten Inhalten auslösen.","reacted to":"reagierte auf",Reaction:"Reaktion","Show others this was sent via Jumble":"Anderen zeigen, dass dies über RogueJumble gesendet wurde","Enjoying Jumble?":"Gefällt Ihnen RogueJumble?","Your donation helps me maintain Jumble and make it better! 😊":"Ihre Spende hilft mir, RogueJumble zu pflegen und zu verbessern! 😊","Welcome to Jumble":"Willkommen bei RogueJumble","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","n users_one":"{{count}} Benutzer","n users_other":"{{count}} Benutzer","Welcome to Jumble!":"Willkommen bei RogueJumble!","Font size":"Schriftgröße","Advanced mode":"Erweiterter Modus","Post type selector":"Beitragstyp-Auswahl","Shows post kind dropdown when creating posts":"Zeigt Dropdown für Beitragsart beim Erstellen von Beiträgen","Sans-serif":"Sans-Serif","Space Grotesk":"Space Grotesk","Search communities...":"Communities suchen...","No communities found":"Keine Communities gefunden","No communities yet":"Noch keine Communities"}},n3={translation:{"Welcome! 🥳":"Welcome! 🥳",About:"About","New Note":"New Note",Post:"Post",Home:"Home","Relay settings":"Relay settings",Settings:"Settings",SidebarRelays:"Relays",Refresh:"Refresh",Profile:"Profile",Logout:"Logout",Following:"Following",followings:"followings",reposted:"reposted","just now":"just now","minute ago_one":"{{count}} minute ago","minute ago_other":"{{count}} minutes ago","n m":"{{n}}m","hour ago_one":"{{count}} hour ago","hour ago_other":"{{count}} hours ago","n h":"{{n}}h","day ago_one":"{{count}} day ago","day ago_other":"{{count}} days ago","n d":"{{n}}d",date:"{{timestamp, date}}",Follow:"Follow",Unfollow:"Unfollow","Follow failed":"Follow failed","Unfollow failed":"Unfollow failed","show new notes":"show new notes","loading...":"loading...","Loading...":"Loading...","no more notes":"no more notes","reply to":"reply to",reply:"reply",Reply:"Reply","load more older replies":"load more older replies","Write something...":"Write something...",Cancel:"Cancel",Mentions:"Mentions","Failed to post":"Failed to post","Post successful":"Post successful","Your post has been published":"Your post has been published",Repost:"Repost",Quote:"Quote","Copy event ID":"Copy event ID","Copy user ID":"Copy user ID","View raw event":"View raw event",Like:"Like","switch to light theme":"switch to light theme","switch to dark theme":"switch to dark theme","switch to system theme":"switch to system theme",Note:"Note",note:"note","username's following":"{{username}}'s following","username's used relays":"{{username}}'s used relays","username's muted":"{{username}}'s muted",Login:"Login","Follows you":"Follows you","Relay Settings":"Relay Settings","Relay set name":"Relay set name","Add a new relay set":"Add a new relay set",Add:"Add","n relays":"{{n}} relays",Rename:"Rename","Copy share link":"Copy share link",Delete:"Delete","Relay already exists":"Relay already exists","invalid relay URL":"invalid relay URL","Add a new relay":"Add a new relay",back:"back","Lost in the void":"Lost in the void","Carry me home":"Carry me home","no replies":"no replies","Reply to":"Reply to",Search:"Search","The relays you are connected to do not support search":"The relays you are connected to do not support search","Show more...":"Show more...","All users":"All users","Display replies":"Display replies",Notes:"Notes",Replies:"Replies",Gallery:"Gallery",Notifications:"Notifications","no more notifications":"no more notifications","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.","Login with Browser Extension":"Login with Browser Extension","Login with Bunker":"Login with Bunker","Login with Private Key":"Login with Private Key","reload notes":"reload notes","Logged in Accounts":"Logged in Accounts","Add an Account":"Add an Account","More options":"More options","Add client tag":"Add client tag","Show others this was sent via Jumble":"Show others this was sent via RogueJumble","Are you sure you want to logout?":"Are you sure you want to logout?","relay sets":"relay sets",edit:"edit",Languages:"Languages",Theme:"Theme",System:"System",Light:"Light",Dark:"Dark",Temporary:"Temporary","Choose a relay set":"Choose a relay set","Switch account":"Switch account",Pictures:"Pictures","Picture note":"Picture note","A special note for picture-first clients like Olas":"A special note for picture-first clients like Olas","Picture note requires images":"Picture note requires images",Relays:"Relays",Image:"Image","R & W":"R & W",Read:"Read",Write:"Write","Pull relay sets":"Pull relay sets","Select the relay sets you want to pull":"Select the relay sets you want to pull","No relay sets found":"No relay sets found","Pull n relay sets":"Pull {{n}} relay sets",Pull:"Pull","Select all":"Select all","Relay Sets":"Relay Sets","Read & Write Relays":"Read & Write Relays","read relays description":"Read relays are used to seek events about you. Other users will publish the events they want you to see to your read relays.","write relays description":"Write relays are used to publish your events. Other users will seek your events from your write relays.","read & write relays notice":"The number of read and write servers should ideally be kept between 2 and 4.","Don't have an account yet?":"Don't have an account yet?","or simply generate a private key":"or simply generate a private key","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.",Edit:"Edit",Save:"Save","Display Name":"Display Name",Bio:"Bio","Nostr Address (NIP-05)":"Nostr Address (NIP-05)","Invalid NIP-05 address":"Invalid NIP-05 address","Copy private key":"Copy private key","Enter the password to decrypt your ncryptsec":"Enter the password to decrypt your ncryptsec",Back:"Back","optional: encrypt nsec":"optional: encrypt nsec",password:"password","Sign up":"Sign up","Save to":"Save to","Enter a name for the new relay set":"Enter a name for the new relay set","Save to a new relay set":"Save to a new relay set",Mute:"Mute",Muted:"Muted",Unmute:"Unmute","Unmute user":"Unmute user","Append n relays":"Append {{n}} relays",Append:"Append","Select relays to append":"Select relays to append","calculating...":"calculating...","Calculate optimal read relays":"Calculate optimal read relays","Login to set":"Login to set","Please login to view following feed":"Please login to view following feed","Send only to r":"Send only to {{r}}","Send only to these relays":"Send only to these relays",Explore:"Explore","Search relays":"Search relays",relayInfoBadgeAuth:"Auth",relayInfoBadgeSearch:"Search",relayInfoBadgePayment:"Payment",Operator:"Operator",Contact:"Contact",Software:"Software",Version:"Version","Random Relays":"Random Relays",randomRelaysRefresh:"Refresh","Explore more":"Explore more","Payment page":"Payment page","Supported NIPs":"Supported NIPs","Open in a":"Open in {{a}}","Cannot handle event of kind k":"Cannot handle event of kind {{k}}","Encrypted direct messages not supported":"Encrypted direct messages not supported","Sorry! The note cannot be found 😔":"Sorry! The note cannot be found 😔","This user has been muted":"This user has been muted",Wallet:"Wallet",Sats:"Sats",sats:"sats","Zap to":"Zap to","Zap n sats":"Zap {{n}} sats","Zap {{amount}}":"Zap {{amount}}",zapComment:"Comment","Default zap amount":"Default zap amount","Default zap comment":"Default zap comment","Lightning Address (or LNURL)":"Lightning Address (or LNURL)","Quick zap":"Quick zap","If enabled, you can zap with a single click. Click and hold for custom amounts":"If enabled, you can zap with a single click. Click and hold for custom amounts",All:"All",Reactions:"Reactions",Zaps:"Zaps","Enjoying Jumble?":"Enjoying RogueJumble?","Your donation helps me maintain Jumble and make it better! 😊":"Your donation helps me maintain RogueJumble and make it better! 😊","Earlier notifications":"Earlier notifications","Temporarily display this note":"Temporarily display this note",buttonFollowing:"Following","Are you sure you want to unfollow this user?":"Are you sure you want to unfollow this user?","Recent Supporters":"Recent Supporters","Seen on":"Seen on","Temporarily display this reply":"Temporarily display this reply","Note not found":"Note not found","no more replies":"no more replies","Relay sets":"Relay sets","Favorite Relays":"Favorite Relays","Following's Favorites":"Following's Favorites","no more relays":"no more relays","Favorited by":"Favorited by","Post settings":"Post settings","Media upload service":"Media upload service","Choose a relay":"Choose a relay","no relays found":"no relays found",video:"video","Show n new notes":"Show {{n}} new notes",YouTabName:"You",Bookmark:"Bookmark","Remove bookmark":"Remove bookmark","no bookmarks found":"no bookmarks found","no more bookmarks":"no more bookmarks",Bookmarks:"Bookmarks","Show more":"Show more",General:"General",Autoplay:"Autoplay","Enable video autoplay on this device":"Enable video autoplay on this device","Paste or drop media files to upload":"Paste or drop media files to upload",Preview:"Preview","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?","Platinum Sponsors":"Platinum Sponsors",From:"From","Comment on":"Comment on","View on njump.me":"View on njump.me","Hide content from untrusted users":"Hide content from untrusted users","Only show content from your followed users and the users they follow":"Only show content from your followed users and the users they follow","Followed by":"Followed by","Mute user privately":"Mute user privately","Mute user publicly":"Mute user publicly",Quotes:"Quotes","Lightning Invoice":"Lightning Invoice","Bookmark failed":"Bookmark failed","Remove bookmark failed":"Remove bookmark failed",Translation:"Translation",Balance:"Balance",characters:"characters",jumbleTranslateApiKeyDescription:"You can use this API key anywhere else that supports LibreTranslate. The service URL is {{serviceUrl}}","Top up":"Top up","Will receive: {n} characters":"Will receive: {{n}} characters","Top up {n} sats":"Top up {{n}} sats","Minimum top up is {n} sats":"Minimum top up is {{n}} sats",Service:"Service","Reset API key":"Reset API key","Are you sure you want to reset your API key? This action cannot be undone.":"Are you sure you want to reset your API key? This action cannot be undone.",Warning:"Warning","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.","Service address":"Service address",Pay:"Pay",interactions:"interactions",notifications:"notifications","Show untrusted {type}":"Show untrusted {{type}}","Hide untrusted {type}":"Hide untrusted {{type}}","Currently hiding {type} from untrusted users.":"Currently hiding {{type}} from untrusted users.","Currently showing all {type}.":"Currently showing all {{type}}.","Click continue to show all {type}.":"Click continue to show all {{type}}.","Click continue to hide {type} from untrusted users.":"Click continue to hide {{type}} from untrusted users.","Trusted users include people you follow and people they follow.":"Trusted users include people you follow and people they follow.",Continue:"Continue","Successfully updated mute list":"Successfully updated mute list","No pubkeys found from {url}":"No pubkeys found from {{url}}","Translating...":"Translating...",Translate:"Translate","Show original":"Show original",Website:"Website","Hide untrusted notes":"Hide untrusted notes","Open in another client":"Open in another client",Community:"Community",Group:"Group","Live event":"Live event",Article:"Article",Unfavorite:"Unfavorite","Recommended relays":"Recommended relays","Blossom server URLs":"Blossom server URLs","You need to add at least one blossom server in order to upload media files.":"You need to add at least one blossom server in order to upload media files.","Recommended blossom servers":"Recommended blossom servers","Enter Blossom server URL":"Enter Blossom server URL",Preferred:"Preferred","Multiple choice (select one or more)":"Multiple choice (select one or more)",Vote:"Vote","{{number}} votes":"{{number}} votes","Total votes":"Total votes","Poll has ended":"Poll has ended","Poll ends at {{time}}":"Poll ends at {{time}}","Load results":"Load results","This is a poll note.":"This is a poll note.","Unlike regular notes, polls are not widely supported and may not display on other clients.":"Unlike regular notes, polls are not widely supported and may not display on other clients.","Option {{number}}":"Option {{number}}","Add Option":"Add Option","Allow multiple choices":"Allow multiple choices","End Date (optional)":"End Date (optional)","Clear end date":"Clear end date","Relay URLs (optional, comma-separated)":"Relay URLs (optional, comma-separated)","Remove poll":"Remove poll","Refresh results":"Refresh results",Poll:"Poll",Media:"Media","Republish to ...":"Republish to ...","Successfully republish to your write relays":"Successfully republish to your write relays","Failed to republish to your write relays: {{error}}":"Failed to republish to your write relays: {{error}}","Successfully republish to relay set: {{name}}":"Successfully republish to relay set: {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"Failed to republish to relay set: {{name}}. Error: {{error}}","Successfully republish to relay: {{url}}":"Successfully republish to relay: {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"Failed to republish to relay: {{url}}. Error: {{error}}","Write relays":"Write relays","No more reactions":"No more reactions","No reactions yet":"No reactions yet","No more zaps":"No more zaps","No zaps yet":"No zaps yet","No more reposts":"No more reposts","No reposts yet":"No reposts yet",Reposts:"Reposts",FollowListNotFoundConfirmation:"Follow list not found. Do you want to create a new one? If you have followed users before, please DO NOT confirm as this operation will cause you to lose your previous follow list.",MuteListNotFoundConfirmation:"Mute list not found. Do you want to create a new one? If you have muted users before, please DO NOT confirm as this operation will cause you to lose your previous mute list.","Show NSFW content by default":"Show NSFW content by default","Custom emoji management":"Custom emoji management","After changing emojis, you may need to refresh the page":"After changing emojis, you may need to refresh the page","Too many read relays":"Too many read relays","Too many write relays":"Too many write relays","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.","Optimize Relay Settings":"Optimize Relay Settings","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.","Optimize Now":"Optimize Now","Maybe Later":"Maybe Later","Don't remind me again":"Don't remind me again",Posts:"Posts",Articles:"Articles",Highlights:"Highlights",Polls:"Polls","Voice Posts":"Voice Posts","Photo Posts":"Photo Posts","Video Posts":"Video Posts","Select All":"Select All","Clear All":"Clear All","Set as default filter":"Set as default filter",Apply:"Apply",Reset:"Reset","Share something on this Relay":"Share something on this Relay","Try deleting this note":"Try deleting this note","Deletion request sent to {{count}} relays":"Deletion request sent to {{count}} relays","Suitable Relays":"Suitable Relays","People, keywords, or relays":"People, keywords, or relays","Hide content mentioning muted users":"Hide content mentioning muted users","This note mentions a user you muted":"This note mentions a user you muted",Filter:"Filter","mentioned you in a note":"mentioned you in a note","quoted your note":"quoted your note","voted in your poll":"voted in your poll","reacted to your note":"reacted to your note","reposted your note":"reposted your note","zapped your note":"zapped your note","highlighted your note":"highlighted your note","zapped you":"zapped you","Mark as read":"Mark as read",Report:"Report","Successfully report":"Successfully reported","Failed to report":"Failed to report",nudity:"Nudity",malware:"Malware",profanity:"Profanity",illegal:"Illegal content",spam:"Spam",other:"Other","Notification list style":"Notification list style","See extra info for each notification":"See extra info for each notification","See more notifications at a glance":"See more notifications at a glance",Detailed:"Detailed",Compact:"Compact","Submit Relay":"Submit Relay",Homepage:"Homepage","Proof of Work (difficulty {{minPow}})":"Proof of Work (difficulty {{minPow}})","Proof of Work":"Proof of Work","Posts & comments difficulty":"Posts & comments difficulty","Reactions difficulty":"Reactions difficulty","Image Mode":"Image Mode","Media Feed":"Media Feed","Text Only":"Text Feed","Text Post":"Text Post","Picture Post":"Picture Post","Video Post":"Video Post","Short Video Post":"Short Video Post",Text:"Text",Picture:"Picture",Video:"Video","Short Video":"Short Video","Post Type":"Post Type","via {{client}}":"via {{client}}","Auto-load media":"Auto-load media",Always:"Always","Wi-Fi only":"Wi-Fi only",Never:"Never","Click to load image":"Click to load image","Click to load media":"Click to load media","Click to load YouTube video":"Click to load YouTube video","Click to load X post":"Click to load X post","{{count}} reviews":"{{count}} reviews","Write a review":"Write a review","No reviews yet. Be the first to write one!":"No reviews yet. Be the first to write one!","View more reviews":"View more reviews","Failed to review":"Failed to review","Write a review and pick a star rating":"Write a review and pick a star rating",Submit:"Submit","Reviews for {{relay}}":"Reviews for {{relay}}","No relays selected":"No relays selected","Post to":"Post to","Write relays and {{count}} other relays":"Write relays and {{count}} other relays","{{count}} relays":"{{count}} relays","Republishing...":"Republishing...","Trending Notes":"Trending Notes","Connected to":"Connected to","Disconnect Wallet":"Disconnect Wallet","Are you absolutely sure?":"Are you absolutely sure?","You will not be able to send zaps to others.":"You will not be able to send zaps to others.",Disconnect:"Disconnect","Start with a Rizful Vault":"Start with a Rizful Vault","or other wallets":"or other wallets","Rizful Vault":"Rizful Vault","Rizful Vault connected!":"Rizful Vault connected!","You can now use your Rizful Vault to zap your favorite notes and creators.":"You can now use your Rizful Vault to zap your favorite notes and creators.","Your Lightning Address":"Your Lightning Address","New to Rizful?":"New to Rizful?","Sign up for Rizful":"Sign up for Rizful","If you already have a Rizful account, you can skip this step.":"If you already have a Rizful account, you can skip this step.","Get your one-time code":"Get your one-time code","Get code":"Get code","Connect to your Rizful Vault":"Connect to your Rizful Vault","Paste your one-time code here":"Paste your one-time code here",Connect:"Connect","Set up your wallet to send and receive sats!":"Set up your wallet to send and receive sats!","Set up":"Set up",Pinned:"Pinned",Unpin:"Unpin",Unpinning:"Unpinning","Pinning...":"Pinning...","Pinned!":"Pinned!","Failed to pin: {{error}}":"Failed to pin: {{error}}","Unpinning...":"Unpinning...","Unpinned!":"Unpinned!","Failed to unpin: {{error}}":"Failed to unpin: {{error}}","Unpin from profile":"Unpin from profile","Pin to profile":"Pin to profile",Appearance:"Appearance","Pure Black":"Pure Black",Default:"System",Red:"Red",Orange:"Orange",Amber:"Amber",Yellow:"Yellow",Lime:"Lime",Green:"Green",Emerald:"Emerald",Teal:"Teal",Cyan:"Cyan",Sky:"Sky",Blue:"Blue",Indigo:"Indigo",Violet:"Violet",Purple:"Purple",Fuchsia:"Fuchsia",Pink:"Pink",Rose:"Rose","Primary color":"Primary color",Layout:"Layout","Two-column":"Two-column","Single-column":"Single-column",Reviews:"Reviews",Extension:"Extension",Remote:"Remote","Encrypted Key":"Encrypted Key","Private Key":"Private Key","Welcome to Jumble":"Welcome to RogueJumble","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","Explore Relays":"Explore Relays","Choose a feed":"Choose a feed","and {{x}} others":"and {{x}} others",selfZapWarning:"RogueJumble is not responsible for what happens if you zap yourself. Proceed at your own risk. 😉⚡","Emoji Pack":"Emoji Pack","Emoji pack added":"Emoji pack added","Add emoji pack failed":"Add emoji pack failed","Emoji pack removed":"Emoji pack removed","Remove emoji pack failed":"Remove emoji pack failed",Added:"Added","Emoji Packs":"Emoji Packs","My Packs":"My Packs","Adding...":"Adding...","Removing...":"Removing...",Reload:"Reload","Request to Join Relay":"Request to Join Relay","Leave Relay":"Leave Relay",Leave:"Leave","Are you sure you want to leave this relay?":"Are you sure you want to leave this relay?","Join request sent successfully":"Join request sent successfully","Failed to send join request":"Failed to send join request","Leave request sent successfully":"Leave request sent successfully","Failed to send leave request":"Failed to send leave request","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"Enter an invite code if you have one. Otherwise, leave it blank to send a request.","Invite Code (Optional)":"Invite Code (Optional)","Enter invite code":"Enter invite code","Sending...":"Sending...","Send Request":"Send Request","You can get an invite code from a relay member.":"You can get an invite code from a relay member.","Enter the invite code you received from a relay member.":"Enter the invite code you received from a relay member.","Get Invite Code":"Get Invite Code","Share this invite code with others to invite them to join this relay.":"Share this invite code with others to invite them to join this relay.","Invite Code":"Invite Code",Copy:"Copy","This invite code can be used by others to join the relay.":"This invite code can be used by others to join the relay.","No invite code available from this relay.":"No invite code available from this relay.",Close:"Close","Failed to get invite code from relay":"Failed to get invite code from relay","Failed to get invite code":"Failed to get invite code","Invite code copied to clipboard":"Invite code copied to clipboard","Favicon URL":"Favicon URL","Filter out onion relays":"Filter out onion relays","View Nostr comments":"View Nostr comments","Search for notes":"Search for notes","Search for hashtag":"Search for hashtag","Go to note":"Go to note","Go to relay":"Go to relay","View discussions about this":"View discussions about this","Open link":"Open link","View Nostr discussions":"View Nostr discussions","Optimal relays":"Optimal relays","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"Successfully republish to optimal relays (your write relays and mentioned users' read relays)","Failed to republish to optimal relays: {{error}}":"Failed to republish to optimal relays: {{error}}","External Content":"External Content",Highlight:"Highlight","Optimal relays and {{count}} other relays":"Optimal relays and {{count}} other relays","Low trust ranking ({{percentile}}%)":"Low trust ranking ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"Suspicious account (Trust score: {{percentile}}%)","n users":"{{count}} users","n users_one":"{{count}} user","n users_other":"{{count}} users","View Details":"View Details","Follow Pack Not Found":"Follow Pack Not Found","Follow pack not found":"Follow pack not found",Users:"Users",Feed:"Feed","Follow Pack":"Follow Pack","24h Pulse":"24h Pulse","Load earlier":"Load earlier","Last 24 hours":"Last 24 hours","Last {{count}} days":"Last {{count}} days",notes:"notes","Quick reaction":"Quick reaction","If enabled, you can react with a single click. Click and hold for more options":"If enabled, you can react with a single click. Click and hold for more options","Quick reaction emoji":"Quick reaction emoji","Select emoji":"Select emoji","NSFW content display":"NSFW content display","Hide completely":"Hide completely","Show but hide content":"Show but hide content","Show directly":"Show directly","Click to view":"Click to view","Special Follow":"Special Follow","Unfollow Special":"Unfollow Special","Personal Feeds":"Personal Feeds","Relay Feeds":"Relay Feeds","Create Highlight":"Create Highlight","Write your thoughts about this highlight...":"Write your thoughts about this highlight...","Publish Highlight":"Publish Highlight","Show replies":"Show replies","Hide replies":"Hide replies","Welcome to Jumble!":"Welcome to RogueJumble!","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!","Search Users":"Search Users","Create New Account":"Create New Account",Important:"Important","Generate Your Account":"Generate Your Account","Your private key IS your account. Keep it safe!":"Your private key IS your account. Keep it safe!","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"In Nostr, your private key IS your account. If you lose your account forever.","Your Private Key":"Your Private Key","Generate new key":"Generate new key","Download Backup File":"Download Backup File","Copied to Clipboard":"Copied to Clipboard","Copy to Clipboard":"Copy to Clipboard","I already saved my private key securely.":"I already saved my private key securely.","Almost Done!":"Almost Done!","Set a password to encrypt your key, or skip to finish":"Set a password to encrypt your key, or skip to finish","Password Protection (Optional)":"Password Protection (Optional)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.","Password (Optional)":"Password (Optional)","Enter password or leave empty to skip":"Enter password or leave empty to skip","Confirm Password":"Confirm Password","Re-enter password":"Re-enter password","Passwords do not match":"Passwords do not match","Finish Signup":"Finish Signup","Create Your Nostr Account":"Create Your Nostr Account","Generate your unique private key. This is your digital identity.":"Generate your unique private key. This is your digital identity.","Critical: Save Your Private Key":"Critical: Save Your Private Key","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.","I have safely backed up my private key":"I have safely backed up my private key","Secure Your Account":"Secure Your Account","Add an extra layer of protection with a password":"Add an extra layer of protection with a password","Password Protection (Recommended)":"Password Protection (Recommended)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.","Create a password (or skip)":"Create a password (or skip)","Enter your password again":"Enter your password again","Complete Signup":"Complete Signup",Recommended:"Recommended","Enter Password":"Enter Password",Password:"Password",Confirm:"Confirm","trust-filter.title":"Trust Score Filter","trust-filter.off":"Off","trust-filter.low":"Low","trust-filter.medium":"Medium","trust-filter.high":"High","trust-filter.wot":"WoT","trust-filter.filter-threshold":"Filter Threshold","trust-filter.quick-presets":"Quick presets","trust-filter.show-all-content":"Show all content","trust-filter.only-show-wot":"Only show your Web of Trust (follows + their follows)","trust-filter.hide-bottom-percent":"Filter out bottom {{score}}% of users by trust rank","trust-filter.trust-score-description":"Calculated based on user reputation and social network percentile","Auto-load profile pictures":"Auto-load profile pictures","Disable live feed":"Disable live feed","Enable live feed":"Enable live feed","Default relays":"Default relays","Reset to default":"Reset to default","Default relays description":"Used to query other users' relay configurations and as a fallback when users have no relays configured.","Default relays warning":"Warning: Please do not modify these settings casually, as it may affect your basic experience.","Invalid relay URL":"Invalid relay URL","Muted words":"Muted words","Add muted word":"Add muted word","Zap Details":"Zap Details","Default trust score filter threshold ({{n}}%)":"Default trust score filter threshold ({{n}}%)","No notes found":"No notes found","Try again later or check your connection":"Try again later or check your connection","Hide indirect":"Hide indirect","Copy note content":"Copy note content","Video loop":"Video loop","Automatically replay videos when they end":"Automatically replay videos when they end","Relays used for searching notes (NIP-50)":"Relays used for searching notes (NIP-50)","Protected event (NIP-70)":"Protected event (NIP-70)",Protected:"Protected","Protected event hint":"Protected events (NIP-70) can only be published by the author. Relays will reject these events from third parties, preventing others from rebroadcasting your content. Note: not all relays support protected events.","Allow insecure connections":"Allow insecure connections","Allow insecure connections description":"Allow loading http:// resources and connecting to ws:// relays. May trigger browser mixed content warnings.","reacted to":"reacted to",Reaction:"Reaction",Font:"Font","Font size":"Font size","Advanced mode":"Advanced mode",Advanced:"Advanced","Post type selector":"Post type selector","Shows post kind dropdown when creating posts":"Shows post kind dropdown when creating posts","Sans-serif":"Sans-serif",Monospace:"Monospace",Dyslexic:"Comic Neue","Space Grotesk":"Space Grotesk",Caveat:"Caveat",Orbitron:"Orbitron",Communities:"Communities","Search communities...":"Search communities...","No communities found":"No communities found","No communities yet":"No communities yet","User status":"Status","Set a status...":"Set a status...",Expires:"Expires","Status expires":"Expires in","Auto-expire after":"Auto-expire after","No expiry":"No expiry","5 minutes":"5 minutes","15 minutes":"15 minutes","1 hour":"1 hour","4 hours":"4 hours","1 day":"1 day","1 week":"1 week","1 month":"1 month","3 months":"3 months","6 months":"6 months","1 year":"1 year",Send:"Send",Receive:"Receive","Lightning Address":"Lightning Address",Invoice:"Invoice","Amount (sats)":"Amount (sats)","Memo (optional)":"Memo (optional)",Description:"Description","Payment sent successfully":"Payment sent successfully","Payment failed":"Payment failed","Pay Invoice":"Pay Invoice","Paste invoice or scan QR":"Paste invoice or scan QR","Failed to access camera":"Failed to access camera","Invoice scanned":"Invoice scanned",Amount:"Amount","Generate Invoice":"Generate Invoice","Generating...":"Generating...","Failed to generate invoice":"Failed to generate invoice","Copy Invoice":"Copy Invoice","New Invoice":"New Invoice","Amount copied":"Amount copied","Invoice copied to clipboard":"Invoice copied to clipboard","What is this for?":"What is this for?","Recent Transactions":"Recent Transactions","View All":"View All","No transactions yet":"No transactions yet","History refreshed":"History refreshed","Failed to refresh history":"Failed to refresh history","Full history coming soon":"Full history coming soon","Balance Display Unit":"Balance Display Unit","Enable Tor mode":"Enable Tor mode","Enable Tor mode description":"Enhanced privacy mode. When using Tor Browser, all relays work normally. In other browsers, only .onion relays are allowed to prevent IP leakage.",Content:"Content",Interaction:"Interaction",Network:"Network",Account:"Account",Info:"Info","Copy anyway":"Copy anyway","Are you sure you want to copy your private key to the clipboard? Anyone with access to this key can control your account.":"Are you sure you want to copy your private key to the clipboard? Anyone with access to this key can control your account.","Payment Methods":"Payment Methods","Add payment method":"Add payment method","Payment address – copy to use in your wallet or app":"Payment address – copy to use in your wallet or app","Copy address":"Copy address","Copy payto URI":"Copy payto URI","Click to open payment options":"Click to open payment options","Click to copy address":"Click to copy address","Send a tip":"Send a tip","Open in wallet":"Open in wallet","Select a payment method to send a tip":"Select a payment method to send a tip","Open on website":"Open on website"}},o3={translation:{"Welcome! 🥳":"¡Bienvenido! 🥳",About:"Acerca de","New Note":"Nueva nota",Post:"Publicar",Home:"Inicio","Relay settings":"Configuración de relés",Settings:"Ajustes",SidebarRelays:"Relés",Refresh:"Actualizar",Profile:"Perfil",Logout:"Cerrar sesión",Following:"Siguiendo",followings:"siguiendo",reposted:"retransmitido","just now":"justo ahora","minute ago_one":"hace {{count}} minuto","minute ago_other":"hace {{count}} minutos","n m":"{{n}}m","hour ago_one":"hace {{count}} hora","hour ago_other":"hace {{count}} horas","n h":"{{n}}h","day ago_one":"hace {{count}} día","day ago_other":"hace {{count}} días","n d":"{{n}}d",date:"{{timestamp, date}}",Follow:"Seguir",Unfollow:"Dejar de seguir","Follow failed":"Error al seguir","Unfollow failed":"Error al dejar de seguir","show new notes":"mostrar nuevas notas","loading...":"cargando...","Loading...":"Cargando...","no more notes":"no hay más notas","reply to":"responder a",reply:"responder",Reply:"Responder","load more older replies":"cargar más respuestas antiguas","Write something...":"Escribe algo...",Cancel:"Cancelar",Mentions:"Menciones","Failed to post":"Error al publicar","Post successful":"Publicación exitosa","Your post has been published":"Tu publicación ha sido publicada",Repost:"Reenviar",Quote:"Citar","Copy event ID":"Copiar ID del evento","Copy user ID":"Copiar ID del usuario","View raw event":"Ver evento sin procesar",Like:"Me gusta","switch to light theme":"cambiar a tema claro","switch to dark theme":"cambiar a tema oscuro","switch to system theme":"cambiar al tema del sistema",Note:"Nota",note:"nota","username's following":"Siguiendo de {{username}}","username's used relays":"Relés usados por {{username}}","username's muted":"Silenciados de {{username}}",Login:"Iniciar sesión","Follows you":"Te sigue","Relay Settings":"Configuración de relés","Relay set name":"Nombre del conjunto de relés","Add a new relay set":"Agregar un nuevo conjunto de relés",Add:"Agregar","n relays":"{{n}} relés",Rename:"Renombrar","Copy share link":"Copiar enlace para compartir",Delete:"Eliminar","Relay already exists":"El relé ya existe","invalid relay URL":"URL del relé inválida","Add a new relay":"Agregar un nuevo relé",back:"atrás","Lost in the void":"Perdido en el vacío","Carry me home":"Llévame a casa","no replies":"sin respuestas","Reply to":"Responder a",Search:"Buscar","The relays you are connected to do not support search":"Los relés a los que estás conectado no soportan la búsqueda","Show more...":"Mostrar más...","All users":"Todos los usuarios","Display replies":"Mostrar respuestas",Notes:"Notas",Replies:"Respuestas",Notifications:"Notificaciones","no more notifications":"no hay más notificaciones","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"Usar el inicio de sesión con clave privada es inseguro. Se recomienda usar una extensión de navegador para iniciar sesión, como alby, nostr-keyx o nos2x. Si debes usar una clave privada, establece al menos una contraseña para cifrarla.","Login with Browser Extension":"Iniciar sesión con extensión de navegador","Login with Bunker":"Iniciar sesión con Bunker","Login with Private Key":"Iniciar sesión con clave privada","reload notes":"recargar notas","Logged in Accounts":"Cuentas conectadas","Add an Account":"Agregar una cuenta","More options":"Más opciones","Add client tag":"Agregar etiqueta de cliente","Show others this was sent via RogueJumble":"Mostrar a otros que esto se envió vía RogueJumble","Are you sure you want to logout?":"¿Estás seguro de que deseas cerrar sesión?","relay sets":"conjuntos de relés",edit:"editar",Languages:"Idiomas",Theme:"Tema",System:"Sistema",Light:"Claro",Dark:"Oscuro",Temporary:"Temporal","Choose a relay set":"Selecciona un conjunto de relés","Switch account":"Cambiar de cuenta",Pictures:"Imágenes","Picture note":"Nota con imagen","A special note for picture-first clients like Olas":"Una nota especial para clientes que priorizan imagen, como Olas","Picture note requires images":"La nota con imagen requiere imágenes",Relays:"Relés",Image:"imagen","R & W":"L y E",Read:"Leer",Write:"Escribir","Pull relay sets":"Recibir conjuntos de relés","Select the relay sets you want to pull":"Selecciona los conjuntos de relés que deseas recibir","No relay sets found":"No se encontraron conjuntos de relés","Pull n relay sets":"Recibir {{n}} conjuntos de relés",Pull:"Recibir","Select all":"Seleccionar todo","Relay Sets":"Conjuntos de relés","Read & Write Relays":"Relés de lectura y escritura","read relays description":"Los relés de lectura se usan para consultar eventos sobre ti. Otros usuarios publican eventos que deseas ver en tus relés de lectura.","write relays description":"Los relés de escritura se usan para publicar tus eventos. Otros usuarios consultan tus eventos desde tus relés de escritura.","read & write relays notice":"El número de servidores de lectura y escritura debería mantenerse idealmente entre 2 y 4.","Don't have an account yet?":"¿Aún no tienes una cuenta?","or simply generate a private key":"o simplemente genera una clave privada","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"Esta es una clave privada. No la compartas con nadie. Guárdala de forma segura, ya que no podrás recuperarla si la pierdes.",Edit:"Editar",Save:"Guardar","Display Name":"Nombre para mostrar",Bio:"Biografía","Nostr Address (NIP-05)":"Dirección Nostr (NIP-05)","Invalid NIP-05 address":"Dirección NIP-05 inválida","Copy private key":"Copiar clave privada","Enter the password to decrypt your ncryptsec":"Introduce la contraseña para descifrar tu ncryptsec",Back:"Volver","optional: encrypt nsec":"opcional: cifrar nsec",password:"contraseña","Sign up":"Regístrate","Save to":"Guardar en","Enter a name for the new relay set":"Introduce un nombre para el nuevo conjunto de relés","Save to a new relay set":"Guardar en un nuevo conjunto de relés",Mute:"Silenciar",Muted:"Silenciado",Unmute:"Activar sonido","Unmute user":"Activar sonido del usuario","Append n relays":"Agregar {{n}} relés",Append:"Agregar","Select relays to append":"Selecciona relés para agregar","calculating...":"calculando...","Calculate optimal read relays":"Calcular relés de lectura óptimos","Login to set":"Inicia sesión para ajustar","Please login to view following feed":"Por favor inicia sesión para ver el feed de seguidos","Send only to r":"Enviar únicamente a {{r}}","Send only to these relays":"Enviar únicamente a estos relés",Explore:"Explorar","Search relays":"Relés de búsqueda",relayInfoBadgeAuth:"Autenticación",relayInfoBadgeSearch:"Búsqueda",relayInfoBadgePayment:"Pago",Operator:"Operador",Contact:"Contacto",Software:"Software",Version:"Versión","Random Relays":"Relés aleatorios",randomRelaysRefresh:"Actualizar","Explore more":"Explorar más","Payment page":"Página de pago","Supported NIPs":"NIPs soportados","Open in a":"Abrir en {{a}}","Cannot handle event of kind k":"No se puede manejar el evento de tipo {{k}}","Encrypted direct messages not supported":"Mensajes directos cifrados no compatibles","Sorry! The note cannot be found 😔":"¡Lo siento! No se pudo encontrar la nota 😔","This user has been muted":"Este usuario ha sido silenciado",Wallet:"Billetera",Sats:"Satoshis",sats:"satoshis","Zap to":"Enviar zap a","Zap n sats":"Enviar {{n}} satoshis",zapComment:"Comentario","Default zap amount":"Cantidad de zap predeterminada","Default zap comment":"Comentario predeterminado de zap","Lightning Address (or LNURL)":"Dirección Lightning (o LNURL)","Quick zap":"Zap rápido","If enabled, you can zap with a single click. Click and hold for custom amounts":"Si está habilitado, puedes enviar un zap con un solo clic. Haz clic y mantén pulsado para cantidades personalizadas",All:"Todo",Reactions:"Reacciones",Zaps:"Zaps","Enjoying RogueJumble?":"¿Te gusta RogueJumble?","Your donation helps me maintain RogueJumble and make it better! 😊":"¡Tu donación me ayuda a mantener y mejorar RogueJumble! 😊","Earlier notifications":"Notificaciones anteriores","Temporarily display this note":"Mostrar esta nota temporalmente",buttonFollowing:"Siguiendo","Are you sure you want to unfollow this user?":"¿Estás seguro de que deseas dejar de seguir a este usuario?","Recent Supporters":"Últimos patrocinadores","Seen on":"Visto en","Temporarily display this reply":"Mostrar temporalmente esta respuesta","Note not found":"No se encontró la nota","no more replies":"no hay más respuestas","Relay sets":"Conjuntos de relés","Favorite Relays":"Relés favoritos","Following's Favorites":"Favoritos de los seguidos","no more relays":"no hay más relés","Favorited by":"Favoritado por","Post settings":"Ajustes de publicación","Media upload service":"Servicio de carga de medios","Choose a relay":"Selecciona un relé","no relays found":"no se encontraron relés",video:"video","Show n new notes":"Mostrar {{n}} nuevas notas",YouTabName:"You",Bookmark:"Marcador","Remove bookmark":"Quitar marcador","no bookmarks found":"No se encontraron marcadores","no more bookmarks":"No hay más marcadores",Bookmarks:"Marcadores","Show more":"Mostrar más",General:"General",Autoplay:"Reproducción automática","Enable video autoplay on this device":"Habilitar reproducción automática de video en este dispositivo","Paste or drop media files to upload":"Pegar o soltar archivos multimedia para cargar",Preview:"Vista previa","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"Estás a punto de publicar un evento firmado por [{{eventAuthorName}}]. Actualmente has iniciado sesión como [{{currentUsername}}]. ¿Estás seguro?","Platinum Sponsors":"Patrocinadores Platino",From:"De","Comment on":"Comentar en","View on njump.me":"Ver en njump.me","Hide content from untrusted users":"Ocultar contenido de usuarios no confiables","Only show content from your followed users and the users they follow":"Solo mostrar contenido de tus usuarios seguidos y los usuarios que ellos siguen","Followed by":"Seguidos por","Mute user privately":"Silenciar usuario en privado","Mute user publicly":"Silenciar usuario públicamente",Quotes:"Citas","Lightning Invoice":"Factura Lightning","Bookmark failed":"Error al marcar","Remove bookmark failed":"Error al quitar marcador",Translation:"Traducción",Balance:"Saldo",characters:"caracteres",jumbleTranslateApiKeyDescription:"Puedes usar esta clave API en cualquier otro lugar que soporte LibreTranslate. La URL del servicio es {{serviceUrl}}","Top up":"Recargar","Will receive: {n} characters":"Recibirás: {{n}} caracteres","Top up {n} sats":"Recargar {{n}} satoshis","Minimum top up is {n} sats":"La recarga mínima es de {{n}} satoshis",Service:"Servicio","Reset API key":"Restablecer clave API","Are you sure you want to reset your API key? This action cannot be undone.":"¿Estás seguro de que deseas restablecer tu clave API? Esta acción no se puede deshacer.",Warning:"Advertencia","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"Tu clave API actual se volverá inválida de inmediato, y cualquier aplicación que la use dejará de funcionar hasta que las actualices con la nueva clave.","Service address":"Dirección del servicio",Pay:"Pagar",interactions:"interacciones",notifications:"notificaciones","Show untrusted {type}":"Mostrar {{type}} no confiables","Hide untrusted {type}":"Ocultar {{type}} no confiables","Currently hiding {type} from untrusted users.":"Actualmente ocultando {{type}} de usuarios no confiables.","Currently showing all {type}.":"Actualmente mostrando todas las {{type}}.","Click continue to show all {type}.":"Haz clic en continuar para mostrar todas las {{type}}.","Click continue to hide {type} from untrusted users.":"Haz clic en continuar para ocultar {{type}} de usuarios no confiables.","Trusted users include people you follow and people they follow.":"Los usuarios confiables incluyen a las personas que sigues y a las personas que ellos siguen.",Continue:"Continuar","Successfully updated mute list":"Lista de silenciamiento actualizada con éxito","No pubkeys found from {url}":"No se encontraron pubkeys desde {{url}}","Translating...":"Traduciendo...",Translate:"Traducir","Show original":"Mostrar original",Website:"Sitio web","Hide untrusted notes":"Ocultar notas no confiables","Open in another client":"Abrir en otro cliente",Community:"Comunidad",Group:"Grupo","Live event":"Evento en vivo",Article:"Artículo",Unfavorite:"Desfavoritar","Recommended relays":"Relés recomendados","Blossom server URLs":"URLs del servidor Blossom","You need to add at least one blossom server in order to upload media files.":"Necesitas agregar al menos un servidor Blossom para poder cargar archivos multimedia.","Recommended blossom servers":"Servidores Blossom recomendados","Enter Blossom server URL":"Ingresar URL del servidor Blossom",Preferred:"Preferido","Multiple choice (select one or more)":"Opción múltiple (selecciona una o más)",Vote:"Votar","{{number}} votes":"{{number}} votos","Total votes":"Total de votos","Poll has ended":"La encuesta ha terminado","Poll ends at {{time}}":"La encuesta termina el {{time}}","Load results":"Cargar resultados","This is a poll note.":"Esta es una nota de encuesta.","Unlike regular notes, polls are not widely supported and may not display on other clients.":"A diferencia de las notas regulares, las encuestas no son ampliamente compatibles y pueden no mostrarse en otros clientes.","Option {{number}}":"Opción {{number}}","Add Option":"Agregar Opción","Allow multiple choices":"Permitir múltiples opciones","End Date (optional)":"Fecha de finalización (opcional)","Clear end date":"Borrar fecha de finalización","Relay URLs (optional, comma-separated)":"URLs de relé (opcional, separadas por comas)","Remove poll":"Eliminar encuesta","Refresh results":"Actualizar resultados",Poll:"Encuesta",Media:"medios","Republish to ...":"Republicar a ...","Successfully republish to your write relays":"Republicado con éxito a tus relés de escritura","Failed to republish to your write relays: {{error}}":"Error al republicar a tus relés de escritura: {{error}}","Successfully republish to relay set: {{name}}":"Republicado con éxito al conjunto de relés: {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"Error al republicar al conjunto de relés: {{name}}. Error: {{error}}","Successfully republish to relay: {{url}}":"Republicado con éxito al relé: {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"Error al republicar al relé: {{url}}. Error: {{error}}","Write relays":"Relés de escritura","No more reactions":"No hay más reacciones","No reactions yet":"Sin reacciones aún","No more zaps":"No hay más zaps","No zaps yet":"Sin zaps aún","No more reposts":"No hay más reposts","No reposts yet":"Sin reposts aún",Reposts:"Reposts",FollowListNotFoundConfirmation:"Lista de seguidos no encontrada. ¿Quieres crear una nueva? Si has seguido usuarios antes, por favor NO confirmes ya que esta operación te hará perder tu lista de seguidos anterior.",MuteListNotFoundConfirmation:"Lista de silenciados no encontrada. ¿Quieres crear una nueva? Si has silenciado usuarios antes, por favor NO confirmes ya que esta operación te hará perder tu lista de silenciados anterior.","Show NSFW content by default":"Mostrar contenido NSFW por defecto","Custom emoji management":"Gestión de emojis personalizados","After changing emojis, you may need to refresh the page":"Después de cambiar los emojis, es posible que necesites actualizar la página","Too many read relays":"Demasiados relés de lectura","Too many write relays":"Demasiados relés de escritura","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"Tienes {{count}} relés de lectura. La mayoría de los clientes solo usan 2-4 relés, configurar más es innecesario.","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"Tienes {{count}} relés de escritura. La mayoría de los clientes solo usan 2-4 relés, configurar más es innecesario.","Optimize Relay Settings":"Optimizar configuración de relés","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"Tu configuración actual de relés puede no ser óptima. Esto podría hacer que sea difícil para otros encontrar tus publicaciones y puede resultar en notificaciones incompletas.","Optimize Now":"Optimizar ahora","Maybe Later":"Tal vez más tarde","Don't remind me again":"No recordar de nuevo",Posts:"Publicaciones",Articles:"Artículos",Highlights:"Destacados",Polls:"Encuestas","Voice Posts":"Publicaciones de voz","Photo Posts":"Publicaciones de fotos","Video Posts":"Publicaciones de video","Select All":"Seleccionar todo","Clear All":"Limpiar todo","Set as default filter":"Establecer como filtro predeterminado",Apply:"Aplicar",Reset:"Restablecer","Share something on this Relay":"Comparte algo en este relé","Try deleting this note":"Intenta eliminar esta nota","Deletion request sent to {{count}} relays":"Solicitud de eliminación enviada a {{count}} relés","Suitable Relays":"Relés adecuados","People, keywords, or relays":"Personas, palabras clave o relés","Hide content mentioning muted users":"Ocultar contenido que mencione usuarios silenciados","This note mentions a user you muted":"Esta nota menciona a un usuario que silenciaste",Filter:"Filtro","mentioned you in a note":"te mencionó en una nota","quoted your note":"citó tu nota","voted in your poll":"votó en tu encuesta","reacted to your note":"reaccionó a tu nota","reposted your note":"reposteó tu nota","zapped your note":"zappeó tu nota","highlighted your note":"destacó tu nota","zapped you":"te zappeó","Mark as read":"Marcar como leído",Report:"Reportar","Successfully report":"Reporte exitoso","Failed to report":"Fallo al reportar",nudity:"Desnudez",malware:"Software malicioso",profanity:"Blasfemia",illegal:"Contenido ilegal",spam:"Spam",other:"Otro","Notification list style":"Estilo de lista de notificaciones","See extra info for each notification":"Ver información adicional para cada notificación","See more notifications at a glance":"Ver más notificaciones de un vistazo",Detailed:"Detallado",Compact:"Compacto","Submit Relay":"Enviar relé",Homepage:"Página principal","Proof of Work (difficulty {{minPow}})":"Prueba de Trabajo (dificultad {{minPow}})","Proof of Work":"Prueba de Trabajo","Posts & comments difficulty":"Dificultad de publicaciones y comentarios","Reactions difficulty":"Dificultad de reacciones","Image Mode":"Modo imagen","Media Feed":"Feed de medios","Text Only":"Feed de texto","Text Post":"Publicación de texto","Picture Post":"Publicación de imagen","Video Post":"Publicación de video","Short Video Post":"Video corto",Text:"Texto",Picture:"Imagen",Video:"Video","Short Video":"Video corto","Post Type":"Tipo de publicación","via {{client}}":"vía {{client}}","Auto-load media":"Cargar medios automáticamente",Always:"Siempre","Wi-Fi only":"Solo Wi-Fi",Never:"Nunca","Click to load image":"Haz clic para cargar la imagen","Click to load media":"Haz clic para cargar los medios","Click to load YouTube video":"Haz clic para cargar el video de YouTube","{{count}} reviews":"{{count}} reseñas","Write a review":"Escribir una reseña","No reviews yet. Be the first to write one!":"¡Aún no hay reseñas. Sé el primero en escribir una!","View more reviews":"Ver más reseñas","Failed to review":"Error al reseñar","Write a review and pick a star rating":"Escriba una reseña y elija una calificación de estrellas",Submit:"Enviar","Reviews for {{relay}}":"Reseñas para {{relay}}","No relays selected":"No hay relés seleccionados","Post to":"Publicar en","Write relays and {{count}} other relays":"Relés de escritura y {{count}} otros relés","{{count}} relays":"{{count}} relés","Republishing...":"Republicando...","Trending Notes":"Notas de tendencia","Connected to":"Conectado a","Disconnect Wallet":"Desconectar billetera","Are you absolutely sure?":"¿Estás absolutamente seguro?","You will not be able to send zaps to others.":"No podrás enviar zaps a otros.",Disconnect:"Desconectar","Start with a Rizful Vault":"Comienza con una Bóveda Rizful","or other wallets":"o otras billeteras","Rizful Vault":"Bóveda Rizful","Rizful Vault connected!":"¡Bóveda Rizful conectada!","You can now use your Rizful Vault to zap your favorite notes and creators.":"Ahora puedes usar tu Bóveda Rizful para zapear tus notas y creadores favoritos.","Your Lightning Address":"Tu Dirección Lightning","New to Rizful?":"¿Nuevo en Rizful?","Sign up for Rizful":"Regístrate en Rizful","If you already have a Rizful account, you can skip this step.":"Si ya tienes una cuenta de Rizful, puedes omitir este paso.","Get your one-time code":"Obtén tu código de un solo uso","Get code":"Obtener código","Connect to your Rizful Vault":"Conéctate a tu Bóveda Rizful","Paste your one-time code here":"Pega tu código de un solo uso aquí",Connect:"Conectar","Set up your wallet to send and receive sats!":"¡Configura tu billetera para enviar y recibir sats!","Set up":"Configurar",Pinned:"Fijado",Unpin:"Desfijar",Unpinning:"Desfijando","Pinning...":"Fijando...","Pinned!":"¡Fijado!","Failed to pin: {{error}}":"Error al fijar: {{error}}","Unpinning...":"Desfijando...","Unpinned!":"¡Desfijado!","Failed to unpin: {{error}}":"Error al desfijar: {{error}}","Unpin from profile":"Desfijar del perfil","Pin to profile":"Fijar al perfil",Appearance:"Apariencia","Pure Black":"Negro Puro",Default:"Predeterminado",Red:"Rojo",Orange:"Naranja",Amber:"Ámbar",Yellow:"Amarillo",Lime:"Lima",Green:"Verde",Emerald:"Esmeralda",Teal:"Verde azulado",Cyan:"Cian",Sky:"Cielo",Blue:"Azul",Indigo:"Índigo",Violet:"Violeta",Purple:"Púrpura",Fuchsia:"Fucsia",Pink:"Rosa",Rose:"Rosa","Primary color":"Color primario",Layout:"Diseño","Two-column":"Doble columna","Single-column":"Columna única",Reviews:"Reseñas",Extension:"Extensión",Remote:"Remoto","Encrypted Key":"Clave privada cifrada","Private Key":"Clave privada","Welcome to RogueJumble":"Bienvenido a RogueJumble","RogueJumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"RogueJumble es un cliente enfocado en explorar relays. Comienza explorando relays interesantes o inicia sesión para ver tu feed de seguidos.","Explore Relays":"Explorar Relays","Choose a feed":"Elige un feed","and {{x}} others":"y {{x}} otros",selfZapWarning:"Jumble no se hace responsable de lo que suceda si te zapeas a ti mismo. Procede bajo tu propio riesgo. 😉⚡","Emoji Pack":"Paquete de Emojis","Emoji pack added":"Paquete de emojis añadido","Add emoji pack failed":"Error al añadir paquete de emojis","Emoji pack removed":"Paquete de emojis eliminado","Remove emoji pack failed":"Error al eliminar paquete de emojis",Added:"Añadido","Emoji Packs":"Paquetes de Emojis","My Packs":"Mis Paquetes","Adding...":"Añadiendo...","Removing...":"Eliminando...",Reload:"Recargar","Request to Join Relay":"Solicitar unirse al Relay","Leave Relay":"Salir del Relay",Leave:"Salir","Are you sure you want to leave this relay?":"¿Estás seguro de que quieres salir de este relay?","Join request sent successfully":"Solicitud de unión enviada con éxito","Failed to send join request":"Error al enviar solicitud de unión","Leave request sent successfully":"Solicitud de salida enviada con éxito","Failed to send leave request":"Error al enviar solicitud de salida","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"Ingresa un código de invitación si tienes uno. De lo contrario, déjalo en blanco para enviar una solicitud.","Invite Code (Optional)":"Código de Invitación (Opcional)","Enter invite code":"Ingresa el código de invitación","Sending...":"Enviando...","Send Request":"Enviar Solicitud","You can get an invite code from a relay member.":"Puedes obtener un código de invitación de un miembro del relay.","Enter the invite code you received from a relay member.":"Ingresa el código de invitación que recibiste de un miembro del relay.","Get Invite Code":"Obtener Código de Invitación","Share this invite code with others to invite them to join this relay.":"Comparte este código de invitación con otros para invitarlos a unirse a este relay.","Invite Code":"Código de Invitación",Copy:"Copiar","This invite code can be used by others to join the relay.":"Este código de invitación puede ser usado por otros para unirse al relay.","No invite code available from this relay.":"No hay código de invitación disponible de este relay.",Close:"Cerrar","Failed to get invite code from relay":"Error al obtener código de invitación del relay","Failed to get invite code":"Error al obtener código de invitación","Invite code copied to clipboard":"Código de invitación copiado al portapapeles","Favicon URL":"URL del Favicon","Filter out onion relays":"Filtrar relés onion","Click to load X post":"Haz clic para cargar la publicación de X","View Nostr comments":"Ver comentarios de Nostr","Search for notes":"Buscar notas","Search for hashtag":"Buscar hashtag","Go to note":"Ir a la nota","Go to relay":"Ir al relay","View discussions about this":"Ver discusiones sobre este contenido","Open link":"Abrir enlace","View Nostr discussions":"Ver discusiones de Nostr","Optimal relays":"Relays óptimos","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"Republicado exitosamente en relays óptimos (tus relays de escritura y los relays de lectura de los usuarios mencionados)","Failed to republish to optimal relays: {{error}}":"Error al republicar en relays óptimos: {{error}}","External Content":"Contenido externo",Highlight:"Destacado","Optimal relays and {{count}} other relays":"Relays óptimos y {{count}} otros relays","Low trust ranking ({{percentile}}%)":"Clasificación de confianza baja ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"Cuenta sospechosa (Puntuación de confianza: {{percentile}}%)","n users":"{{count}} usuarios","View Details":"Ver detalles","Follow Pack Not Found":"Paquete de seguimiento no encontrado","Follow pack not found":"Paquete de seguimiento no encontrado",Users:"Usuarios",Feed:"Feed","Follow Pack":"Paquete de Seguimiento","24h Pulse":"Pulso 24h","Load earlier":"Cargar anterior","Last 24 hours":"Últimas 24 horas","Last {{count}} days":"Últimos {{count}} días",notes:"notas","Quick reaction":"Reacción rápida","If enabled, you can react with a single click. Click and hold for more options":"Si está habilitado, puedes reaccionar con un solo clic. Mantén presionado para más opciones","Quick reaction emoji":"Emoji de reacción rápida","Select emoji":"Seleccionar emoji","NSFW content display":"NSFW content display","Hide completely":"Hide completely","Show but hide content":"Show but hide content","Show directly":"Show directly","Click to view":"Click to view","Special Follow":"Seguir Especial","Unfollow Special":"Dejar de Seguir Especial","Personal Feeds":"Feeds Personales","Relay Feeds":"Feeds de Relays","Create Highlight":"Crear Resaltado","Write your thoughts about this highlight...":"Escribe tus pensamientos sobre este resaltado...","Publish Highlight":"Publicar Resaltado","Show replies":"Mostrar respuestas","Hide replies":"Ocultar respuestas","Welcome to RogueJumble!":"¡Bienvenido a RogueJumble!","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"Tu feed está vacío porque aún no sigues a nadie. ¡Comienza explorando contenido interesante y siguiendo a los usuarios que te gusten!","Search Users":"Buscar Usuarios","Create New Account":"Crear nueva cuenta",Important:"Importante","Generate Your Account":"Generar tu cuenta","Your private key IS your account. Keep it safe!":"¡Tu clave privada ES tu cuenta. Mantenla segura!","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"En Nostr, tu clave privada ES tu cuenta. Si pierdes tu clave privada, pierdes tu cuenta para siempre.","Your Private Key":"Tu clave privada","Generate new key":"Generar nueva clave","Download Backup File":"Descargar archivo de respaldo","Copied to Clipboard":"Copiado al portapapeles","Copy to Clipboard":"Copiar al portapapeles","I already saved my private key securely.":"Ya guardé mi clave privada de forma segura.","Almost Done!":"¡Casi terminado!","Set a password to encrypt your key, or skip to finish":"Establece una contraseña para cifrar tu clave, o omítela para finalizar","Password Protection (Optional)":"Protección con contraseña (opcional)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"Establecer una contraseña cifra tu clave privada en este navegador. Puedes omitir este paso, pero recomendamos establecer una para mayor seguridad.","Password (Optional)":"Contraseña (opcional)","Enter password or leave empty to skip":"Ingresa una contraseña o déjalo vacío para omitir","Confirm Password":"Confirmar contraseña","Re-enter password":"Vuelve a ingresar la contraseña","Passwords do not match":"Las contraseñas no coinciden","Finish Signup":"Finalizar registro","Create Your Nostr Account":"Crea tu cuenta de Nostr","Generate your unique private key. This is your digital identity.":"Genera tu clave privada única. Esta es tu identidad digital.","Critical: Save Your Private Key":"Crítico: Guarda tu clave privada","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"Tu clave privada ES tu cuenta. No hay recuperación de contraseña. Si la pierdes, perderás tu cuenta para siempre. Por favor, guárdala en un lugar seguro.","I have safely backed up my private key":"He respaldado mi clave privada de forma segura","Secure Your Account":"Asegura tu cuenta","Add an extra layer of protection with a password":"Añade una capa adicional de protección con una contraseña","Password Protection (Recommended)":"Protección con contraseña (recomendado)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"Añade una contraseña para cifrar tu clave privada en este navegador. Esto es opcional pero muy recomendado para mayor seguridad.","Create a password (or skip)":"Crear una contraseña (o saltar)","Enter your password again":"Ingresa tu contraseña nuevamente","Complete Signup":"Completar registro",Recommended:"Recomendado","Enter Password":"Ingresar contraseña",Password:"Contraseña",Confirm:"Confirmar","trust-filter.title":"Filtro de puntuación de confianza","trust-filter.off":"Desactivado","trust-filter.low":"Bajo","trust-filter.medium":"Medio","trust-filter.high":"Alto","trust-filter.wot":"WoT","trust-filter.filter-threshold":"Umbral de filtro","trust-filter.quick-presets":"Ajustes rápidos","trust-filter.show-all-content":"Mostrar todo el contenido","trust-filter.only-show-wot":"Mostrar solo tu red de confianza (seguidos + sus seguidos)","trust-filter.hide-bottom-percent":"Filtrar el {{score}}% inferior de usuarios por clasificación de confianza","trust-filter.trust-score-description":"Calculado según la reputación del usuario y el percentil de la red social","Auto-load profile pictures":"Cargar imágenes de perfil automáticamente","Disable live feed":"Desactivar feed en vivo","Enable live feed":"Activar feed en vivo","Default relays":"Relés predeterminados","Reset to default":"Restablecer valores predeterminados","Default relays description":"Se utilizan para consultar las configuraciones de relés de otros usuarios y como respaldo cuando los usuarios no tienen relés configurados.","Default relays warning":"Advertencia: No modifiques estas configuraciones a la ligera, ya que puede afectar tu experiencia básica.","Invalid relay URL":"URL de relé no válida","Muted words":"Palabras silenciadas","Add muted word":"Agregar palabra silenciada","Zap Details":"Detalles del Zap","Default trust score filter threshold ({{n}}%)":"Umbral predeterminado del filtro de puntuación de confianza ({{n}}%)","No notes found":"No se encontraron notas","Try again later or check your connection":"Inténtalo más tarde o verifica tu conexión","Hide indirect":"Ocultar indirectas","Copy note content":"Copiar contenido de la nota","Video loop":"Repetir video","Automatically replay videos when they end":"Reproducir automáticamente los videos cuando terminen","Relays used for searching notes (NIP-50)":"Relés utilizados para buscar notas (NIP-50)","Protected event (NIP-70)":"Evento protegido (NIP-70)",Protected:"Protegido","Protected event hint":"Los eventos protegidos (NIP-70) solo pueden ser publicados por el autor. Los relés rechazarán estos eventos de terceros, evitando que otros redistribuyan tu contenido. Nota: no todos los relés admiten eventos protegidos.","Allow insecure connections":"Permitir conexiones inseguras","Allow insecure connections description":"Permitir cargar recursos http:// y conectar a relays ws://. Puede activar advertencias de contenido mixto del navegador.","reacted to":"reaccionó a",Reaction:"Reacción","Show others this was sent via Jumble":"Mostrar a otros que esto se envió vía RogueJumble","Enjoying Jumble?":"¿Disfrutando RogueJumble?","Your donation helps me maintain Jumble and make it better! 😊":"¡Tu donación me ayuda a mantener RogueJumble y mejorarlo! 😊","Welcome to Jumble":"Bienvenido a RogueJumble","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","n users_one":"{{count}} usuario","n users_other":"{{count}} usuarios","Welcome to Jumble!":"¡Bienvenido a RogueJumble!","Font size":"Tamaño de fuente","Advanced mode":"Modo avanzado","Post type selector":"Selector de tipo de publicación","Shows post kind dropdown when creating posts":"Muestra el menú desplegable de tipo de publicación al crear publicaciones","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"Buscar comunidades...","No communities found":"No se encontraron comunidades","No communities yet":"Aún no hay comunidades"}},a3={translation:{"Welcome! 🥳":"خوش آمدید! 🥳",About:"درباره","New Note":"یادداشت جدید",Post:"ارسال",Home:"خانه","Relay settings":"تنظیمات رله",Settings:"تنظیمات",SidebarRelays:"رله‌ها",Refresh:"بازخوانی",Profile:"پروفایل",Logout:"خروج",Following:"دنبال می‌کنم",followings:"دنبال شونده‌ها",reposted:"بازنشر شده","just now":"همین الان","minute ago_one":"{{count}} دقیقه پیش","minute ago_other":"{{count}} دقیقه پیش","n m":"{{n}}د","hour ago_one":"{{count}} ساعت پیش","hour ago_other":"{{count}} ساعت پیش","n h":"{{n}}س","day ago_one":"{{count}} روز پیش","day ago_other":"{{count}} روز پیش","n d":"{{n}}ر",date:"{{timestamp, date}}",Follow:"دنبال کردن",Unfollow:"لغو دنبال کردن","Follow failed":"دنبال کردن ناموفق","Unfollow failed":"لغو دنبال کردن ناموفق","show new notes":"نمایش یادداشت‌های جدید","loading...":"در حال بارگذاری...","Loading...":"در حال بارگذاری...","no more notes":"یادداشت بیشتری وجود ندارد","reply to":"پاسخ به",reply:"پاسخ",Reply:"پاسخ","load more older replies":"بارگذاری پاسخ‌های قدیمی‌تر","Write something...":"چیزی بنویسید...",Cancel:"لغو",Mentions:"اشاره‌ها","Failed to post":"ارسال ناموفق","Post successful":"ارسال موفق","Your post has been published":"پست شما منتشر شد",Repost:"بازنشر",Quote:"نقل قول","Copy event ID":"کپی شناسه رویداد","Copy user ID":"کپی شناسه کاربر","View raw event":"نمایش رویداد خام",Like:"پسند","switch to light theme":"تغییر به تم روشن","switch to dark theme":"تغییر به تم تاریک","switch to system theme":"تغییر به تم سیستم",Note:"یادداشت",note:"یادداشت","username's following":"دنبال شونده‌های {{username}}","username's used relays":"رله‌های استفاده شده {{username}}","username's muted":"بی‌صدا شده‌های {{username}}",Login:"ورود","Follows you":"شما را دنبال می‌کند","Relay Settings":"تنظیمات رله","Relay set name":"نام مجموعه رله","Add a new relay set":"افزودن مجموعه رله جدید",Add:"افزودن","n relays":"{{n}} رله",Rename:"تغییر نام","Copy share link":"کپی لینک اشتراک",Delete:"حذف","Relay already exists":"رله از قبل موجود است","invalid relay URL":"آدرس رله نامعتبر","Add a new relay":"افزودن رله جدید",back:"بازگشت","Lost in the void":"گم شده در خلاء","Carry me home":"مرا به خانه ببر","no replies":"پاسخی وجود ندارد","Reply to":"پاسخ به",Search:"جستجو","The relays you are connected to do not support search":"رله‌هایی که متصل هستید از جستجو پشتیبانی نمی‌کنند","Show more...":"نمایش بیشتر...","All users":"همه کاربران","Display replies":"نمایش پاسخ‌ها",Notes:"یادداشت‌ها",Replies:"پاسخ‌ها",Notifications:"اعلان‌ها","no more notifications":"اعلان بیشتری وجود ندارد","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"استفاده از کلید خصوصی برای ورود ناامن است. توصیه می‌شود از افزونه مرورگر برای ورود استفاده کنید، مانند alby، nostr-keyx یا nos2x. اگر مجبور به استفاده از کلید خصوصی هستید، حداقل یک رمز عبور برای رمزگذاری تنظیم کنید.","Login with Browser Extension":"ورود با افزونه مرورگر","Login with Bunker":"ورود با Bunker","Login with Private Key":"ورود با کلید خصوصی","reload notes":"بازخوانی یادداشت‌ها","Logged in Accounts":"حساب‌های وارد شده","Add an Account":"افزودن حساب","More options":"گزینه‌های بیشتر","Add client tag":"افزودن برچسب کلاینت","Show others this was sent via RogueJumble":"به دیگران نشان دهید که از طریق RogueJumble ارسال شده","Are you sure you want to logout?":"آیا مطمئن هستید که می‌خواهید خارج شوید؟","relay sets":"مجموعه‌های رله",edit:"ویرایش",Languages:"زبان‌ها",Theme:"تم",System:"سیستم",Light:"روشن",Dark:"تاریک",Temporary:"موقت","Choose a relay set":"یک مجموعه رله انتخاب کنید","Switch account":"تغییر حساب",Pictures:"تصاویر","Picture note":"یادداشت تصویری","A special note for picture-first clients like Olas":"یادداشت ویژه برای کلاینت‌های تصویر محور مانند Olas","Picture note requires images":"یادداشت تصویری نیاز به تصاویر دارد",Relays:"رله‌ها",Image:"تصویر","R & W":"خواندن و نوشتن",Read:"خواندن",Write:"نوشتن","Pull relay sets":"کشیدن مجموعه‌های رله","Select the relay sets you want to pull":"مجموعه‌های رله‌ای که می‌خواهید بکشید انتخاب کنید","No relay sets found":"مجموعه رله‌ای یافت نشد","Pull n relay sets":"کشیدن {{n}} مجموعه رله",Pull:"کشیدن","Select all":"انتخاب همه","Relay Sets":"مجموعه‌های رله","Read & Write Relays":"رله‌های خواندن و نوشتن","read relays description":"رله‌های خواندن برای جستجوی رویدادهای مربوط به شما استفاده می‌شوند. سایر کاربران رویدادهایی که می‌خواهند شما ببینید را به رله‌های خواندن شما منتشر می‌کنند.","write relays description":"رله‌های نوشتن برای انتشار رویدادهای شما استفاده می‌شوند. سایر کاربران رویدادهای شما را از رله‌های نوشتن شما جستجو می‌کنند.","read & write relays notice":"تعداد سرورهای خواندن و نوشتن ترجیحاً باید بین ۲ تا ۴ نگه داشته شود.","Don't have an account yet?":"هنوز حساب کاربری ندارید؟","or simply generate a private key":"یا به سادگی یک کلید خصوصی تولید کنید","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"این یک کلید خصوصی است. آن را با هیچ کس به اشتراک نگذارید. آن را ایمن و محفوظ نگه دارید. اگر آن را گم کنید نمی‌توانید بازیابی کنید.",Edit:"ویرایش",Save:"ذخیره","Display Name":"نام نمایشی",Bio:"بیوگرافی","Nostr Address (NIP-05)":"آدرس Nostr (NIP-05)","Invalid NIP-05 address":"آدرس NIP-05 نامعتبر","Copy private key":"کپی کلید خصوصی","Enter the password to decrypt your ncryptsec":"رمز عبور را برای رمزگشایی ncryptsec خود وارد کنید",Back:"بازگشت","optional: encrypt nsec":"اختیاری: رمزگذاری nsec",password:"رمز عبور","Sign up":"ثبت نام","Save to":"ذخیره در","Enter a name for the new relay set":"نامی برای مجموعه رله جدید وارد کنید","Save to a new relay set":"ذخیره در مجموعه رله جدید",Mute:"بی‌صدا",Muted:"بی‌صدا شده",Unmute:"لغو بی‌صدا","Unmute user":"لغو بی‌صدا کردن کاربر","Append n relays":"افزودن {{n}} رله",Append:"افزودن","Select relays to append":"رله‌ها را برای افزودن انتخاب کنید","calculating...":"در حال محاسبه...","Calculate optimal read relays":"محاسبه رله‌های خواندن بهینه","Login to set":"برای تنظیم وارد شوید","Please login to view following feed":"لطفاً برای مشاهده فید دنبال شونده‌ها وارد شوید","Send only to r":"فقط به {{r}} ارسال شود","Send only to these relays":"فقط به این رله‌ها ارسال شود",Explore:"کاوش","Search relays":"رله‌های جستجو",relayInfoBadgeAuth:"احراز هویت",relayInfoBadgeSearch:"جستجو",relayInfoBadgePayment:"پرداخت",Operator:"اپراتور",Contact:"تماس",Software:"نرم‌افزار",Version:"نسخه","Random Relays":"رله‌های تصادفی",randomRelaysRefresh:"بازخوانی","Explore more":"کاوش بیشتر","Payment page":"صفحه پرداخت","Supported NIPs":"NIPهای پشتیبانی شده","Open in a":"باز کردن در {{a}}","Cannot handle event of kind k":"نمی‌توان رویداد از نوع {{k}} را پردازش کرد","Encrypted direct messages not supported":"پیام‌های مستقیم رمزگذاری‌شده پشتیبانی نمی‌شوند","Sorry! The note cannot be found 😔":"متأسفانه! یادداشت یافت نشد 😔","This user has been muted":"این کاربر بی‌صدا شده است",Wallet:"کیف پول",Sats:"ساتوشی",sats:"ساتوشی","Zap to":"زپ به","Zap n sats":"زپ {{n}} ساتوشی",zapComment:"نظر","Default zap amount":"مقدار پیش‌فرض زپ","Default zap comment":"نظر پیش‌فرض زپ","Lightning Address (or LNURL)":"آدرس لایتنینگ (یا LNURL)","Quick zap":"زپ سریع","If enabled, you can zap with a single click. Click and hold for custom amounts":"در صورت فعال بودن، می‌توانید با یک کلیک زپ کنید. برای مقادیر سفارشی کلیک کرده و نگه دارید",All:"همه",Reactions:"واکنش‌ها",Zaps:"زپ‌ها","Enjoying RogueJumble?":"از RogueJumble لذت می‌برید؟","Your donation helps me maintain RogueJumble and make it better! 😊":"کمک مالی شما به من در نگهداری RogueJumble و بهتر کردن آن کمک می‌کند! 😊","Earlier notifications":"اعلان‌های قبلی","Temporarily display this note":"نمایش موقت این یادداشت",buttonFollowing:"دنبال می‌کنم","Are you sure you want to unfollow this user?":"آیا مطمئن هستید که می‌خواهید این کاربر را دنبال نکنید؟","Recent Supporters":"حامیان اخیر","Seen on":"دیده شده در","Temporarily display this reply":"نمایش موقت این پاسخ","Note not found":"یادداشت یافت نشد","no more replies":"پاسخ بیشتری وجود ندارد","Relay sets":"مجموعه‌های رله","Favorite Relays":"رله‌های مورد علاقه","Following's Favorites":"مورد علاقه دنبال شونده‌ها","no more relays":"رله بیشتری وجود ندارد","Favorited by":"مورد علاقه","Post settings":"تنظیمات پست","Media upload service":"سرویس آپلود رسانه","Choose a relay":"یک رله انتخاب کنید","no relays found":"رله‌ای یافت نشد",video:"ویدیو","Show n new notes":"نمایش {{n}} یادداشت جدید",YouTabName:"شما",Bookmark:"نشانک","Remove bookmark":"حذف نشانک","no bookmarks found":"نشانکی یافت نشد","no more bookmarks":"نشانک بیشتری وجود ندارد",Bookmarks:"نشانک‌ها","Show more":"نمایش بیشتر",General:"عمومی",Autoplay:"پخش خودکار","Enable video autoplay on this device":"فعال کردن پخش خودکار ویدیو در این دستگاه","Paste or drop media files to upload":"فایل‌های رسانه را برای آپلود بچسبانید یا بکشید",Preview:"پیش‌نمایش","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"شما در حال انتشار رویدادی امضا شده توسط [{{eventAuthorName}}] هستید. در حال حاضر به عنوان [{{currentUsername}}] وارد شده‌اید. آیا مطمئن هستید؟","Platinum Sponsors":"حامیان پلاتینی",From:"از","Comment on":"نظر در مورد","View on njump.me":"مشاهده در njump.me","Hide content from untrusted users":"مخفی کردن محتوا از کاربران غیرقابل اعتماد","Only show content from your followed users and the users they follow":"فقط محتوای کاربران دنبال شده و کاربرانی که آنها دنبال می‌کنند نشان دهید","Followed by":"دنبال شده توسط","Mute user privately":"بی‌صدا کردن کاربر به صورت خصوصی","Mute user publicly":"بی‌صدا کردن کاربر به صورت عمومی",Quotes:"نقل قول‌ها","Lightning Invoice":"فاکتور لایتنینگ","Bookmark failed":"نشانک‌گذاری ناموفق","Remove bookmark failed":"حذف نشانک ناموفق",Translation:"ترجمه",Balance:"موجودی",characters:"کاراکتر",jumbleTranslateApiKeyDescription:"می‌توانید از این کلید API در هر جای دیگری که از LibreTranslate پشتیبانی می‌کند استفاده کنید. آدرس سرویس {{serviceUrl}} است","Top up":"شارژ","Will receive: {n} characters":"دریافت خواهید کرد: {{n}} کاراکتر","Top up {n} sats":"شارژ {{n}} ساتوشی","Minimum top up is {n} sats":"حداقل شارژ {{n}} ساتوشی است",Service:"سرویس","Reset API key":"بازنشانی کلید API","Are you sure you want to reset your API key? This action cannot be undone.":"آیا مطمئن هستید که می‌خواهید کلید API خود را بازنشانی کنید؟ این عمل قابل برگشت نیست.",Warning:"هشدار","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"کلید API فعلی شما فوراً نامعتبر خواهد شد و هر برنامه‌ای که از آن استفاده می‌کند تا زمانی که آن را با کلید جدید به‌روزرسانی نکنید کار نخواهد کرد.","Service address":"آدرس سرویس",Pay:"پرداخت",interactions:"تعاملات",notifications:"اعلان‌ها","Show untrusted {type}":"نمایش {{type}} غیرقابل اعتماد","Hide untrusted {type}":"مخفی کردن {{type}} غیرقابل اعتماد","Currently hiding {type} from untrusted users.":"در حال حاضر {{type}} از کاربران غیرقابل اعتماد مخفی می‌شود.","Currently showing all {type}.":"در حال حاضر همه {{type}} نمایش داده می‌شود.","Click continue to show all {type}.":"برای نمایش همه {{type}} روی ادامه کلیک کنید.","Click continue to hide {type} from untrusted users.":"برای مخفی کردن {{type}} از کاربران غیرقابل اعتماد روی ادامه کلیک کنید.","Trusted users include people you follow and people they follow.":"کاربران قابل اعتماد شامل افرادی که دنبال می‌کنید و افرادی که آنها دنبال می‌کنند می‌شوند.",Continue:"ادامه","Successfully updated mute list":"لیست بی‌صدا با موفقیت به‌روزرسانی شد","No pubkeys found from {url}":"هیچ کلید عمومی از {{url}} یافت نشد","Translating...":"در حال ترجمه...",Translate:"ترجمه","Show original":"نمایش اصل",Website:"وب‌سایت","Hide untrusted notes":"مخفی کردن یادداشت‌های غیرقابل اعتماد","Open in another client":"باز کردن در کلاینت دیگر",Community:"جامعه",Group:"گروه","Live event":"رویداد زنده",Article:"مقاله",Unfavorite:"حذف از علاقه‌مندی‌ها","Recommended relays":"رله‌های توصیه شده","Blossom server URLs":"آدرس‌های سرور Blossom","You need to add at least one blossom server in order to upload media files.":"برای آپلود فایل‌های رسانه نیاز دارید حداقل یک سرور blossom اضافه کنید.","Recommended blossom servers":"سرورهای blossom توصیه شده","Enter Blossom server URL":"آدرس سرور Blossom را وارد کنید",Preferred:"ترجیحی","Multiple choice (select one or more)":"چند گزینه‌ای (یک یا چند انتخاب کنید)",Vote:"رای دادن","{{number}} votes":"{{number}} رای","Total votes":"کل آرا","Poll has ended":"نظرسنجی پایان یافته","Poll ends at {{time}}":"نظرسنجی در {{time}} پایان می‌یابد","Load results":"بارگیری نتایج","This is a poll note.":"این یک یادداشت نظرسنجی است.","Unlike regular notes, polls are not widely supported and may not display on other clients.":"برخلاف یادداشت‌های معمولی، نظرسنجی‌ها به طور گسترده پشتیبانی نمی‌شوند و ممکن است در کلاینت‌های دیگر نمایش داده نشوند.","Option {{number}}":"گزینه {{number}}","Add Option":"افزودن گزینه","Allow multiple choices":"اجازه انتخاب‌های متعدد","End Date (optional)":"تاریخ پایان (اختیاری)","Clear end date":"پاک کردن تاریخ پایان","Relay URLs (optional, comma-separated)":"آدرس‌های رله (اختیاری، جدا شده با کاما)","Remove poll":"حذف نظرسنجی","Refresh results":"بارگیری مجدد نتایج",Poll:"نظرسنجی",Media:"رسانه","Republish to ...":"بازنشر به ...","Successfully republish to your write relays":"با موفقیت بازنشر به رله‌های نوشتن شما انجام شد","Failed to republish to your write relays: {{error}}":"بازنشر به رله‌های نوشتن شما با خطا مواجه شد: {{error}}","Successfully republish to relay set: {{name}}":"با موفقیت بازنشر به مجموعه رله: {{name}} انجام شد","Failed to republish to relay set: {{name}}. Error: {{error}}":"بازنشر به مجموعه رله: {{name}} با خطا مواجه شد. خطا: {{error}}","Successfully republish to relay: {{url}}":"با موفقیت بازنشر به رله: {{url}} انجام شد","Failed to republish to relay: {{url}}. Error: {{error}}":"بازنشر به رله: {{url}} با خطا مواجه شد. خطا: {{error}}","Write relays":"رله‌های نوشتن","No more reactions":"هیچ واکنشی بیشتر وجود ندارد","No reactions yet":"هنوز هیچ واکنشی وجود ندارد","No more zaps":"هیچ زپی بیشتر وجود ندارد","No zaps yet":"هنوز هیچ زپی وجود ندارد","No more reposts":"هیچ بازنشر بیشتری وجود ندارد","No reposts yet":"هنوز هیچ بازنشر وجود ندارد",Reposts:"بازنشرها",FollowListNotFoundConfirmation:"فهرست دنبال‌کنندگان پیدا نشد. آیا می‌خواهید یکی جدید ایجاد کنید؟ اگر قبلاً کاربرانی را دنبال کرده‌اید، لطفاً تأیید نکنید زیرا این عملیات باعث از دست رفتن فهرست دنبال‌کنندگان قبلی شما خواهد شد.",MuteListNotFoundConfirmation:"فهرست بی‌صدا شده‌ها پیدا نشد. آیا می‌خواهید یکی جدید ایجاد کنید؟ اگر قبلاً کاربرانی را بی‌صدا کرده‌اید، لطفاً تأیید نکنید زیرا این عملیات باعث از دست رفتن فهرست بی‌صدا شده‌های قبلی شما خواهد شد.","Show NSFW content by default":"نمایش محتوای NSFW به صورت پیش‌فرض","Custom emoji management":"مدیریت شکلک‌های سفارشی","After changing emojis, you may need to refresh the page":"پس از تغییر شکلک‌ها، ممکن است نیاز به تازه‌سازی صفحه داشته باشید","Too many read relays":"Too many read relays","Too many write relays":"Too many write relays","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.","Optimize Relay Settings":"بهینه‌سازی تنظیمات رله","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"پیکربندی فعلی رله شما ممکن است بهینه نباشد. این ممکن است برای دیگران پیدا کردن پست‌های شما را دشوار کند و ممکن است منجر به اعلان‌های ناقص شود.","Optimize Now":"اکنون بهینه‌سازی کن","Maybe Later":"شاید بعداً","Don't remind me again":"دیگر به من یادآوری نکن",Posts:"پست‌ها",Articles:"مقاله‌ها",Highlights:"برجسته‌ها",Polls:"نظرسنجی‌ها","Voice Posts":"پست‌های صوتی","Photo Posts":"پست‌های عکس","Video Posts":"پست‌های ویدیو","Select All":"انتخاب همه","Clear All":"پاک کردن همه","Set as default filter":"تنظیم به عنوان فیلتر پیش‌فرض",Apply:"اعمال",Reset:"بازنشانی","Share something on this Relay":"در این رله چیزی به اشتراک بگذارید","Try deleting this note":"سعی کنید این یادداشت را حذف کنید","Deletion request sent to {{count}} relays":"درخواست حذف به {{count}} رله ارسال شد","Suitable Relays":"رله‌های مناسب","People, keywords, or relays":"افراد، کلمات کلیدی یا رله‌ها","Hide content mentioning muted users":"مخفی کردن محتوای اشاره کننده به کاربران بی‌صدا شده","This note mentions a user you muted":"این یادداشت به کاربری که بی‌صدا کرده‌اید اشاره می‌کند",Filter:"فیلتر","mentioned you in a note":"در یادداشتی از شما نام برد","quoted your note":"یادداشت شما را نقل قول کرد","voted in your poll":"در نظرسنجی شما رأی داد","reacted to your note":"به یادداشت شما واکنش نشان داد","reposted your note":"یادداشت شما را بازنشر کرد","zapped your note":"یادداشت شما را زپ کرد","highlighted your note":"یادداشت شما را برجسته کرد","zapped you":"شما را زپ کرد","Mark as read":"علامت‌گذاری به عنوان خوانده شده",Report:"گزارش","Successfully report":"گزارش با موفقیت ارسال شد","Failed to report":"ارسال گزارش ناموفق بود",nudity:"برهنگی",malware:"بدافزار",profanity:"فحاشی",illegal:"محتوای غیرقانونی",spam:"اسپم",other:"سایر","Notification list style":"سبک فهرست اعلان‌ها","See extra info for each notification":"مشاهده اطلاعات اضافی برای هر اعلان","See more notifications at a glance":"مشاهده اعلان‌های بیشتر در یک نگاه",Detailed:"تفصیلی",Compact:"فشرده","Submit Relay":"ارسال رله",Homepage:"صفحه اصلی","Proof of Work (difficulty {{minPow}})":"اثبات کار (دشواری {{minPow}})","Proof of Work":"اثبات کار","Posts & comments difficulty":"دشواری نوشته‌ها و نظرات","Reactions difficulty":"دشواری واکنش‌ها","Image Mode":"حالت تصویر","Media Feed":"فید رسانه","Text Only":"فید متن","Text Post":"پست متنی","Picture Post":"پست تصویری","Video Post":"پست ویدیویی","Short Video Post":"ویدیوی کوتاه",Text:"متن",Picture:"تصویر",Video:"ویدیو","Short Video":"ویدیوی کوتاه","Post Type":"نوع پست","via {{client}}":"از طریق {{client}}","Auto-load media":"بارگذاری خودکار رسانه",Always:"همیشه","Wi-Fi only":"فقط Wi-Fi",Never:"هرگز","Click to load image":"برای بارگذاری تصویر کلیک کنید","Click to load media":"برای بارگذاری رسانه کلیک کنید","Click to load YouTube video":"برای بارگذاری ویدیو YouTube کلیک کنید","{{count}} reviews":"{{count}} نقد","Write a review":"نوشتن نقد","No reviews yet. Be the first to write one!":"هنوز نقدی وجود ندارد. اولین نفری باشید که می‌نویسد!","View more reviews":"مشاهده نقدهای بیشتر","Failed to review":"نقد ناموفق","Write a review and pick a star rating":"نقدی بنویسید و امتیاز ستاره‌ای انتخاب کنید",Submit:"ارسال","Reviews for {{relay}}":"نقدها برای {{relay}}","No relays selected":"هیچ رله‌ای انتخاب نشده","Post to":"پست کردن به","Write relays and {{count}} other relays":"رله‌های نوشتن و {{count}} رله دیگر","{{count}} relays":"{{count}} رله","Republishing...":"در حال بازنشر...","Trending Notes":"یادداشت‌های محبوب","Connected to":"متصل به","Disconnect Wallet":"قطع اتصال کیف پول","Are you absolutely sure?":"آیا کاملاً مطمئن هستید؟","You will not be able to send zaps to others.":"شما قادر نخواهید بود به دیگران زپ ارسال کنید.",Disconnect:"قطع اتصال","Start with a Rizful Vault":"شروع با Rizful Vault","or other wallets":"یا کیف پول‌های دیگر","Rizful Vault":"Rizful Vault","Rizful Vault connected!":"Rizful Vault متصل شد!","You can now use your Rizful Vault to zap your favorite notes and creators.":"اکنون می‌توانید از Rizful Vault خود برای زپ کردن یادداشت‌ها و سازندگان مورد علاقه خود استفاده کنید.","Your Lightning Address":"آدرس لایتنینگ شما","New to Rizful?":"جدید در Rizful؟","Sign up for Rizful":"برای Rizful ثبت نام کنید","If you already have a Rizful account, you can skip this step.":"اگر قبلاً حساب Rizful دارید، می‌توانید این مرحله را رد کنید.","Get your one-time code":"کد یکبار مصرف خود را دریافت کنید","Get code":"دریافت کد","Connect to your Rizful Vault":"اتصال به Rizful Vault خود","Paste your one-time code here":"کد یکبار مصرف خود را اینجا بچسبانید",Connect:"اتصال","Set up your wallet to send and receive sats!":"کیف پولت را تنظیم کن تا ساتس ارسال و دریافت کنی!","Set up":"تنظیم",Pinned:"پین شده",Unpin:"لغو پین",Unpinning:"در حال لغو پین...","Pinning...":"در حال پین کردن...","Pinned!":"پین شد!","Failed to pin: {{error}}":"پین کردن ناموفق بود: {{error}}","Unpinning...":"در حال لغو پین...","Unpinned!":"لغو پین شد!","Failed to unpin: {{error}}":"لغو پین ناموفق بود: {{error}}","Unpin from profile":"لغو پین از پروفایل","Pin to profile":"پین به پروفایل",Appearance:"ظاهر","Pure Black":"سیاه خالص",Default:"پیش‌فرض",Red:"قرمز",Orange:"نارنجی",Amber:"کهربایی",Yellow:"زرد",Lime:"لیمویی",Green:"سبز",Emerald:"زمردی",Teal:"سبز آبی",Cyan:"فیروزه‌ای",Sky:"آسمانی",Blue:"آبی",Indigo:"نیلی",Violet:"بنفش",Purple:"ارغوانی",Fuchsia:"فوشیا",Pink:"صورتی",Rose:"گلی","Primary color":"رنگ اصلی",Layout:"چیدمان","Two-column":"دو ستونی","Single-column":"تک ستونی",Reviews:"نقدها",Extension:"افزونه",Remote:"از راه دور","Encrypted Key":"رمزگذاری شده کلید","Private Key":"کلید خصوصی","Welcome to RogueJumble":"به RogueJumble خوش آمدید","RogueJumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"RogueJumble یک کلاینت متمرکز بر مرور رله‌هاست. با کاوش در رله‌های جالب شروع کنید یا وارد شوید تا فید دنبال‌کننده‌های خود را مشاهده کنید.","Explore Relays":"کاوش در رله‌ها","Choose a feed":"یک فید انتخاب کنید","and {{x}} others":"و {{x}} دیگر",selfZapWarning:"RogueJumble مسئولیتی در قبال اتفاقاتی که در صورت ارسال zap به خودتان می‌افتد ندارد. با مسئولیت خود ادامه دهید. 😉⚡","Emoji Pack":"بسته ایموجی","Emoji pack added":"بسته ایموجی اضافه شد","Add emoji pack failed":"افزودن بسته ایموجی ناموفق بود","Emoji pack removed":"بسته ایموجی حذف شد","Remove emoji pack failed":"حذف بسته ایموجی ناموفق بود",Added:"اضافه شد","Emoji Packs":"بسته‌های ایموجی","My Packs":"بسته‌های من","Adding...":"در حال افزودن...","Removing...":"در حال حذف...",Reload:"بازخوانی","Request to Join Relay":"درخواست عضویت در رله","Leave Relay":"خروج از رله",Leave:"خروج","Are you sure you want to leave this relay?":"آیا مطمئن هستید که می‌خواهید از این رله خارج شوید؟","Join request sent successfully":"درخواست عضویت با موفقیت ارسال شد","Failed to send join request":"ارسال درخواست عضویت ناموفق بود","Leave request sent successfully":"درخواست خروج با موفقیت ارسال شد","Failed to send leave request":"ارسال درخواست خروج ناموفق بود","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"اگر کد دعوت دارید وارد کنید. در غیر این صورت، آن را خالی بگذارید تا درخواست ارسال شود.","Invite Code (Optional)":"کد دعوت (اختیاری)","Enter invite code":"کد دعوت را وارد کنید","Sending...":"در حال ارسال...","Send Request":"ارسال درخواست","You can get an invite code from a relay member.":"می‌توانید کد دعوت را از یک عضو رله دریافت کنید.","Enter the invite code you received from a relay member.":"کد دعوتی را که از یک عضو رله دریافت کرده‌اید وارد کنید.","Get Invite Code":"دریافت کد دعوت","Share this invite code with others to invite them to join this relay.":"این کد دعوت را با دیگران به اشتراک بگذارید تا آنها را به پیوستن به این رله دعوت کنید.","Invite Code":"کد دعوت",Copy:"کپی","This invite code can be used by others to join the relay.":"این کد دعوت می‌تواند توسط دیگران برای پیوستن به رله استفاده شود.","No invite code available from this relay.":"هیچ کد دعوتی از این رله در دسترس نیست.",Close:"بستن","Failed to get invite code from relay":"دریافت کد دعوت از رله ناموفق بود","Failed to get invite code":"دریافت کد دعوت ناموفق بود","Invite code copied to clipboard":"کد دعوت در کلیپ‌بورد کپی شد","Favicon URL":"آدرس نماد سایت","Filter out onion relays":"فیلتر کردن رله‌های onion","Click to load X post":"برای بارگیری پست X کلیک کنید","View Nostr comments":"مشاهده نظرات Nostr","Search for notes":"جستجوی یادداشت‌ها","Search for hashtag":"جستجوی هشتگ","Go to note":"رفتن به یادداشت","Go to relay":"رفتن به رله","View discussions about this":"مشاهده بحث‌ها درباره این محتوا","Open link":"باز کردن لینک","View Nostr discussions":"مشاهده بحث‌های Nostr","Optimal relays":"رله‌های بهینه","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"با موفقیت در رله‌های بهینه منتشر شد (رله‌های نوشتن شما و رله‌های خواندن کاربران ذکر شده)","Failed to republish to optimal relays: {{error}}":"خطا در انتشار مجدد در رله‌های بهینه: {{error}}","External Content":"محتوای خارجی",Highlight:"برجسته‌سازی","Optimal relays and {{count}} other relays":"رله‌های بهینه و {{count}} رله دیگر","Low trust ranking ({{percentile}}%)":"رتبه اعتماد پایین ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"حساب مشکوک (امتیاز اعتماد: {{percentile}}%)","n users":"{{count}} کاربر","View Details":"مشاهده جزئیات","Follow Pack Not Found":"بسته دنبال‌کننده یافت نشد","Follow pack not found":"بسته دنبال‌کننده یافت نشد",Users:"کاربران",Feed:"فید","Follow Pack":"بسته دنبال‌کننده","24h Pulse":"نبض 24 ساعته","Load earlier":"بارگذاری قدیمی‌تر","Last 24 hours":"24 ساعت گذشته","Last {{count}} days":"{{count}} روز گذشته",notes:"یادداشت‌ها","Quick reaction":"واکنش سریع","If enabled, you can react with a single click. Click and hold for more options":"اگر فعال باشد، می‌توانید با یک کلیک واکنش نشان دهید. برای گزینه‌های بیشتر کلیک کنید و نگه دارید","Quick reaction emoji":"ایموجی واکنش سریع","Select emoji":"انتخاب ایموجی","NSFW content display":"NSFW content display","Hide completely":"Hide completely","Show but hide content":"Show but hide content","Show directly":"Show directly","Click to view":"Click to view","Special Follow":"دنبال کردن ویژه","Unfollow Special":"لغو دنبال کردن ویژه","Personal Feeds":"فیدهای شخصی","Relay Feeds":"فیدهای رله","Create Highlight":"ایجاد برجسته‌سازی","Write your thoughts about this highlight...":"نظرات خود را درباره این برجسته‌سازی بنویسید...","Publish Highlight":"انتشار برجسته‌سازی","Show replies":"نمایش پاسخ‌ها","Hide replies":"پنهان کردن پاسخ‌ها","Welcome to RogueJumble!":"به RogueJumble خوش آمدید!","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"فید شما خالی است زیرا هنوز کسی را دنبال نمی‌کنید. با کاوش محتوای جالب و دنبال کردن کاربرانی که دوست دارید شروع کنید!","Search Users":"جستجوی کاربران","Create New Account":"ایجاد حساب کاربری جدید",Important:"مهم","Generate Your Account":"ایجاد حساب کاربری","Your private key IS your account. Keep it safe!":"کلید خصوصی شما همان حساب کاربری شماست. آن را ایمن نگه دارید!","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"در Nostr، کلید خصوصی شما همان حساب کاربری شماست. اگر کلید خصوصی خود را گم کنید، برای همیشه حساب خود را از دست می‌دهید.","Your Private Key":"کلید خصوصی شما","Generate new key":"ایجاد کلید جدید","Download Backup File":"دانلود فایل پشتیبان","Copied to Clipboard":"در کلیپ‌بورد کپی شد","Copy to Clipboard":"کپی در کلیپ‌بورد","I already saved my private key securely.":"من قبلاً کلید خصوصی خود را به طور ایمن ذخیره کرده‌ام.","Almost Done!":"تقریباً تمام شد!","Set a password to encrypt your key, or skip to finish":"یک رمز عبور برای رمزگذاری کلید خود تنظیم کنید، یا برای پایان دادن رد کنید","Password Protection (Optional)":"حفاظت با رمز عبور (اختیاری)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"تنظیم رمز عبور، کلید خصوصی شما را در این مرورگر رمزگذاری می‌کند. می‌توانید این مرحله را رد کنید، اما ما برای امنیت بیشتر توصیه می‌کنیم یکی تنظیم کنید.","Password (Optional)":"رمز عبور (اختیاری)","Enter password or leave empty to skip":"رمز عبور را وارد کنید یا برای رد کردن خالی بگذارید","Confirm Password":"تأیید رمز عبور","Re-enter password":"رمز عبور را دوباره وارد کنید","Passwords do not match":"رمزهای عبور مطابقت ندارند","Finish Signup":"پایان ثبت‌نام","Create Your Nostr Account":"حساب Nostr خود را ایجاد کنید","Generate your unique private key. This is your digital identity.":"کلید خصوصی منحصر به فرد خود را ایجاد کنید. این هویت دیجیتال شماست.","Critical: Save Your Private Key":"حیاتی: کلید خصوصی خود را ذخیره کنید","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"کلید خصوصی شما حساب شماست. بازیابی رمز عبور وجود ندارد. اگر آن را گم کنید، حساب خود را برای همیشه از دست خواهید داد. لطفاً آن را در مکانی امن ذخیره کنید.","I have safely backed up my private key":"من به طور ایمن از کلید خصوصی خود نسخه پشتیبان تهیه کرده‌ام","Secure Your Account":"حساب خود را ایمن کنید","Add an extra layer of protection with a password":"یک لایه حفاظتی اضافی با رمز عبور اضافه کنید","Password Protection (Recommended)":"حفاظت با رمز عبور (توصیه شده)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"یک رمز عبور برای رمزگذاری کلید خصوصی خود در این مرورگر اضافه کنید. این اختیاری است اما برای امنیت بهتر به شدت توصیه می‌شود.","Create a password (or skip)":"یک رمز عبور ایجاد کنید (یا رد کنید)","Enter your password again":"رمز عبور خود را دوباره وارد کنید","Complete Signup":"تکمیل ثبت‌نام",Recommended:"توصیه شده","Enter Password":"رمز عبور را وارد کنید",Password:"رمز عبور",Confirm:"تأیید","trust-filter.title":"فیلتر امتیاز اعتماد","trust-filter.off":"خاموش","trust-filter.low":"پایین","trust-filter.medium":"متوسط","trust-filter.high":"بالا","trust-filter.wot":"WoT","trust-filter.filter-threshold":"آستانه فیلتر","trust-filter.quick-presets":"تنظیمات سریع","trust-filter.show-all-content":"نمایش همه محتوا","trust-filter.only-show-wot":"فقط شبکه اعتماد شما را نشان دهید (دنبال‌شوندگان + دنبال‌شوندگان آنها)","trust-filter.hide-bottom-percent":"فیلتر کردن {{score}}٪ پایین‌ترین کاربران بر اساس رتبه اعتماد","trust-filter.trust-score-description":"بر اساس شهرت کاربر و صدک شبکه اجتماعی محاسبه می‌شود","Auto-load profile pictures":"بارگذاری خودکار تصاویر پروفایل","Disable live feed":"غیرفعال کردن فید زنده","Enable live feed":"فعال کردن فید زنده","Default relays":"رله‌های پیش‌فرض","Reset to default":"بازنشانی به پیش‌فرض","Default relays description":"برای پرس‌وجو از پیکربندی‌های رله کاربران دیگر و به عنوان جایگزین زمانی که کاربران رله پیکربندی نکرده‌اند استفاده می‌شود.","Default relays warning":"هشدار: لطفاً این تنظیمات را به صورت تصادفی تغییر ندهید، ممکن است بر تجربه اولیه شما تأثیر بگذارد.","Invalid relay URL":"آدرس URL رله نامعتبر است","Muted words":"کلمات بی‌صدا شده","Add muted word":"افزودن کلمه بی‌صدا","Zap Details":"جزئیات زپ","Default trust score filter threshold ({{n}}%)":"آستانه فیلتر امتیاز اعتماد پیش‌فرض ({{n}}%)","No notes found":"یادداشتی یافت نشد","Try again later or check your connection":"بعداً دوباره امتحان کنید یا اتصال خود را بررسی کنید","Hide indirect":"پنهان کردن غیرمستقیم","Copy note content":"کپی محتوای یادداشت","Video loop":"تکرار ویدیو","Automatically replay videos when they end":"پخش خودکار ویدیوها پس از پایان","Relays used for searching notes (NIP-50)":"رله‌هایی که برای جستجوی یادداشت‌ها استفاده می‌شوند (NIP-50)","Protected event (NIP-70)":"رویداد محافظت‌شده (NIP-70)",Protected:"محافظت‌شده","Protected event hint":"رویدادهای محافظت‌شده (NIP-70) فقط توسط نویسنده قابل انتشار هستند. رله‌ها این رویدادها را از اشخاص ثالث رد می‌کنند و از بازنشر محتوای شما توسط دیگران جلوگیری می‌کنند. توجه: همه رله‌ها از رویدادهای محافظت‌شده پشتیبانی نمی‌کنند.","Allow insecure connections":"اجازه اتصالات ناامن","Allow insecure connections description":"اجازه بارگذاری منابع http:// و اتصال به رله‌های ws://. ممکن است هشدارهای محتوای مختلط مرورگر را فعال کند.","reacted to":"واکنش نشان داد به",Reaction:"واکنش","Show others this was sent via Jumble":"نمایش به دیگران که این از طریق RogueJumble ارسال شده است","Enjoying Jumble?":"از RogueJumble لذت می‌برید؟","Your donation helps me maintain Jumble and make it better! 😊":"کمک شما به من کمک می‌کند تا RogueJumble را حفظ و بهتر کنم! 😊","Welcome to Jumble":"به RogueJumble خوش آمدید","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","n users_one":"{{count}} کاربر","n users_other":"{{count}} کاربر","Welcome to Jumble!":"به RogueJumble خوش آمدید!","Font size":"اندازه فونت","Advanced mode":"حالت پیشرفته","Post type selector":"انتخاب‌گر نوع پست","Shows post kind dropdown when creating posts":"هنگام ایجاد پست‌ها، کشویی نوع پست را نشان می‌دهد","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"جستجوی انجمن‌ها...","No communities found":"انجمنی یافت نشد","No communities yet":"هنوز انجمنی وجود ندارد"}},r3={translation:{"Welcome! 🥳":"Bienvenue ! 🥳",About:"À propos","New Note":"Nouvelle note",Post:"Publier",Home:"Accueil","Relay settings":"Paramètres du relais",Settings:"Paramètres",SidebarRelays:"Relais",Refresh:"Rafraîchir",Profile:"Profil",Logout:"Déconnexion",Following:"Abonnements",followings:"abonnements",reposted:"republié","just now":"à l'instant","minute ago_one":"il y a {{count}} minute","minute ago_other":"il y a {{count}} minutes","n m":"{{n}}m","hour ago_one":"il y a {{count}} heure","hour ago_other":"il y a {{count}} heures","n h":"{{n}}h","day ago_one":"il y a {{count}} jour","day ago_other":"il y a {{count}} jours","n d":"{{n}}j",date:"{{timestamp, date}}",Follow:"Suivre",Unfollow:"Ne plus suivre","Follow failed":"Échec du suivi","Unfollow failed":"Échec de l'arrêt du suivi","show new notes":"afficher les nouvelles notes","loading...":"chargement...","Loading...":"Chargement...","no more notes":"plus de notes","reply to":"répondre à",reply:"répondre",Reply:"Répondre","load more older replies":"charger plus de réponses anciennes","Write something...":"Écrire quelque chose...",Cancel:"Annuler",Mentions:"Mentions","Failed to post":"Publication échouée","Post successful":"Publication réussie","Your post has been published":"Votre publication a été publiée",Repost:"Reposter",Quote:"Citer","Copy event ID":"Copier l'ID de l'événement","Copy user ID":"Copier l'ID de l'utilisateur","View raw event":"Voir l'événement brut",Like:"Aimer","switch to light theme":"passer au thème clair","switch to dark theme":"passer au thème sombre","switch to system theme":"passer au thème système",Note:"Note",note:"note","username's following":"les abonnements de {{username}}","username's used relays":"les relais utilisés par {{username}}","username's muted":"{{username}} en sourdine",Login:"Connexion","Follows you":"Vous suit","Relay Settings":"Paramètres des relais","Relay set name":"Nom du groupe de relais","Add a new relay set":"Ajouter un nouveau groupe de relais",Add:"Ajouter","n relays":"{{n}} relais",Rename:"Renommer","Copy share link":"Copier le lien de partage",Delete:"Supprimer","Relay already exists":"Le relais existe déjà","invalid relay URL":"URL de relais invalide","Add a new relay":"Ajouter un nouveau relais",back:"retour","Lost in the void":"Perdu dans le vide","Carry me home":"Ramène-moi à la maison","no replies":"aucune réponse","Reply to":"Répondre à",Search:"Recherche","The relays you are connected to do not support search":"Les relais auxquels vous êtes connecté ne prennent pas en charge la recherche","Show more...":"Afficher plus...","All users":"Tous les utilisateurs","Display replies":"Afficher les réponses",Notes:"Notes",Replies:"Réponses",Notifications:"Notifications","no more notifications":"plus de notifications","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"L'utilisation de la connexion par clé privée n'est pas sécurisée. Il est recommandé d'utiliser une extension de navigateur pour la connexion, comme alby, nostr-keyx ou nos2x. Si vous devez utiliser une clé privée, veuillez au moins définir un mot de passe pour le chiffrement.","Login with Browser Extension":"Connexion avec une extension de navigateur","Login with Bunker":"Connexion avec Bunker","Login with Private Key":"Connexion avec clé privée","reload notes":"recharger les notes","Logged in Accounts":"Comptes connectés","Add an Account":"Ajouter un compte","More options":"Plus d'options","Add client tag":"Ajouter une étiquette client","Show others this was sent via RogueJumble":"Montrer aux autres que cela a été envoyé via RogueJumble","Are you sure you want to logout?":"Êtes-vous sûr de vouloir vous déconnecter ?","relay sets":"groupes de relais",edit:"modifier",Languages:"Langues",Theme:"Thème",System:"Système",Light:"Clair",Dark:"Sombre",Temporary:"Temporaire","Choose a relay set":"Choisissez un groupe de relais","Switch account":"Changer de compte",Pictures:"Images","Picture note":"Note image","A special note for picture-first clients like Olas":"Une note spéciale pour les clients axés sur l'image comme Olas","Picture note requires images":"La note image nécessite des images",Relays:"Relais",Image:"image","R & W":"R & W",Read:"Lire",Write:"Écrire","Pull relay sets":"Récupérer les groupes de relais","Select the relay sets you want to pull":"Sélectionnez les groupes de relais à récupérer","No relay sets found":"Aucun groupe de relais trouvé","Pull n relay sets":"Récupérer {{n}} groupes de relais",Pull:"Récupérer","Select all":"Tout sélectionner","Relay Sets":"Groupes de relais","Read & Write Relays":"Relais lecture & écriture","read relays description":"Les relais de lecture permettent de consulter vos événements. D'autres utilisateurs y publieront les événements à afficher sur vos relais de lecture.","write relays description":"Les relais d'écriture servent à publier vos événements. D'autres utilisateurs rechercheront vos événements via ces relais.","read & write relays notice":"Il est recommandé de maintenir entre 2 et 4 serveurs de lecture et d'écriture.","Don't have an account yet?":"Vous n'avez pas encore de compte ?","or simply generate a private key":"ou générez simplement une clé privée","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"Ceci est une clé privée. Ne la divulguez à personne. Gardez-la en sécurité. Vous ne pourrez pas la récupérer en cas de perte.",Edit:"Modifier",Save:"Enregistrer","Display Name":"Nom d'affichage",Bio:"Biographie","Nostr Address (NIP-05)":"Adresse Nostr (NIP-05)","Invalid NIP-05 address":"Adresse NIP-05 invalide","Copy private key":"Copier la clé privée","Enter the password to decrypt your ncryptsec":"Entrez le mot de passe pour décrypter votre ncryptsec",Back:"Retour","optional: encrypt nsec":"facultatif : chiffrer nsec",password:"mot de passe","Sign up":"S'inscrire","Save to":"Enregistrer dans","Enter a name for the new relay set":"Entrez un nom pour le nouveau groupe de relais","Save to a new relay set":"Enregistrer dans un nouveau groupe de relais",Mute:"Couper le son",Muted:"En sourdine",Unmute:"Activer le son","Unmute user":"Désactiver la sourdine de l'utilisateur","Append n relays":"Ajouter {{n}} relais",Append:"Ajouter","Select relays to append":"Sélectionnez les relais à ajouter","calculating...":"calcul en cours...","Calculate optimal read relays":"Calculer les relais de lecture optimaux","Login to set":"Connectez-vous pour définir","Please login to view following feed":"Veuillez vous connecter pour voir le fil d’abonnements","Send only to r":"Envoyer uniquement à {{r}}","Send only to these relays":"Envoyer uniquement à ces relais",Explore:"Explorer","Search relays":"Relais de recherche",relayInfoBadgeAuth:"Auth",relayInfoBadgeSearch:"Recherche",relayInfoBadgePayment:"Paiement",Operator:"Opérateur",Contact:"Contact",Software:"Logiciel",Version:"Version","Random Relays":"Relais aléatoires",randomRelaysRefresh:"Rafraîchir","Explore more":"Explorer davantage","Payment page":"Page de paiement","Supported NIPs":"NIPs supportés","Open in a":"Ouvrir dans {{a}}","Cannot handle event of kind k":"Impossible de traiter l'événement de type {{k}}","Encrypted direct messages not supported":"Messages directs chiffrés non pris en charge","Sorry! The note cannot be found 😔":"Désolé ! La note est introuvable 😔","This user has been muted":"Cet utilisateur a été mis en sourdine",Wallet:"Portefeuille",Sats:"Sats",sats:"sats","Zap to":"Zap vers","Zap n sats":"Zap {{n}} sats",zapComment:"Commentaire","Default zap amount":"Montant de zap par défaut","Default zap comment":"Commentaire de zap par défaut","Lightning Address (or LNURL)":"Adresse Lightning (ou LNURL)","Quick zap":"Zap rapide","If enabled, you can zap with a single click. Click and hold for custom amounts":"Si activé, vous pouvez zap avec un seul clic. Cliquez et maintenez pour des montants personnalisés",All:"Tous",Reactions:"Réactions",Zaps:"Zaps","Enjoying RogueJumble?":"Vous appréciez RogueJumble ?","Your donation helps me maintain RogueJumble and make it better! 😊":"Votre don m'aide à maintenir RogueJumble et à l'améliorer ! 😊","Earlier notifications":"Notifications antérieures","Temporarily display this note":"Afficher temporairement cette note",buttonFollowing:"Suivi","Are you sure you want to unfollow this user?":"Êtes-vous sûr de vouloir arrêter de suivre cet utilisateur ?","Recent Supporters":"Derniers soutiens","Seen on":"Vu sur","Temporarily display this reply":"Afficher temporairement cette réponse","Note not found":"Note introuvable","no more replies":"aucune autre réponse","Relay sets":"Groupes de relais","Favorite Relays":"Relais favoris","Following's Favorites":"Following's Favorites","no more relays":"aucun autre relais","Favorited by":"Favorisé par","Post settings":"Paramètres de publication","Media upload service":"Service de téléchargement de médias","Choose a relay":"Choisir un relais","no relays found":"aucun relais trouvé",video:"vidéo","Show n new notes":"Afficher {{n}} nouvelles notes",YouTabName:"Vous",Bookmark:"Favori","Remove bookmark":"Retirer le favori","no bookmarks found":"Aucun favori trouvé","no more bookmarks":"Plus de favoris",Bookmarks:"Favoris","Show more":"Afficher plus",General:"Général",Autoplay:"Lecture automatique","Enable video autoplay on this device":"Activer la lecture automatique des vidéos sur cet appareil","Paste or drop media files to upload":"Coller ou déposer des fichiers multimédias à télécharger",Preview:"Aperçu","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"Vous êtes sur le point de publier un événement signé par [{{eventAuthorName}}]. Vous êtes actuellement connecté en tant que [{{currentUsername}}]. Êtes-vous sûr ?","Platinum Sponsors":"Sponsors Platine",From:"De","Comment on":"Commenter sur","View on njump.me":"Voir sur njump.me","Hide content from untrusted users":"Hider le contenu des utilisateurs non fiables","Only show content from your followed users and the users they follow":"Afficher uniquement le contenu de vos utilisateurs suivis et des utilisateurs qu’ils suivent","Followed by":"Suivi par","Mute user privately":"Mettre l’utilisateur en sourdine en privé","Mute user publicly":"Mettre l’utilisateur en sourdine publiquement",Quotes:"Citations","Lightning Invoice":"Facture Lightning","Bookmark failed":"Échec de la mise en favori","Remove bookmark failed":"Échec de la suppression du favori",Translation:"Traduction",Balance:"Solde",characters:"caractères",jumbleTranslateApiKeyDescription:"Vous pouvez utiliser cette clé API ailleurs qui prend en charge LibreTranslate. L’URL du service est {{serviceUrl}}","Top up":"Recharger","Will receive: {n} characters":"Vous recevrez : {{n}} caractères","Top up {n} sats":"Recharger {{n}} sats","Minimum top up is {n} sats":"Le rechargement minimum est de {{n}} sats",Service:"Service","Reset API key":"Réinitialiser la clé API","Are you sure you want to reset your API key? This action cannot be undone.":"Êtes-vous sûr de vouloir réinitialiser votre clé API ? Cette action ne peut pas être annulée.",Warning:"Avertissement","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"Votre clé API actuelle deviendra immédiatement invalide, et toutes les applications qui l’utilisent cesseront de fonctionner jusqu’à ce que vous les mettiez à jour avec la nouvelle clé.","Service address":"Adresse du service",Pay:"Payer",interactions:"interactions",notifications:"notifications","Show untrusted {type}":"Afficher les {{type}} non fiables","Hide untrusted {type}":"Cacher les {{type}} non fiables","Currently hiding {type} from untrusted users.":"Actuellement, les {{type}} des utilisateurs non fiables sont masquées.","Currently showing all {type}.":"Actuellement, tous les {{type}} sont affichés.","Click continue to show all {type}.":"Cliquez sur continuer pour afficher tous les {{type}}.","Click continue to hide {type} from untrusted users.":"Cliquez sur continuer pour masquer les {{type}} des utilisateurs non fiables.","Trusted users include people you follow and people they follow.":"Les utilisateurs de confiance incluent les personnes que vous suivez et les personnes qu’elles suivent.",Continue:"Continuer","Successfully updated mute list":"Liste de sourdine mise à jour avec succès","No pubkeys found from {url}":"Aucun pubkey trouvé à partir de {{url}}","Translating...":"Traduction en cours...",Translate:"Traduire","Show original":"Afficher l’original",Website:"Site Web","Hide untrusted notes":"Cacher les notes non fiables","Open in another client":"Ouvrir dans un autre client",Community:"Communauté",Group:"Groupe","Live event":"Événement en direct",Article:"Article",Unfavorite:"Ne plus aimer","Recommended relays":"Relais recommandés","Blossom server URLs":"URLs du serveur Blossom","You need to add at least one blossom server in order to upload media files.":"Vous devez ajouter au moins un serveur Blossom pour pouvoir télécharger des fichiers multimédias.","Recommended blossom servers":"Serveurs Blossom recommandés","Enter Blossom server URL":"Entrer l’URL du serveur Blossom",Preferred:"Préféré","Multiple choice (select one or more)":"Choix multiple (sélectionnez un ou plusieurs)",Vote:"Voter","{{number}} votes":"{{number}} votes","Total votes":"Total des votes","Poll has ended":"Le sondage est terminé","Poll ends at {{time}}":"Le sondage se termine le {{time}}","Load results":"Charger les résultats","This is a poll note.":"Ceci est une note de sondage.","Unlike regular notes, polls are not widely supported and may not display on other clients.":"Contrairement aux notes régulières, les sondages ne sont pas largement pris en charge et peuvent ne pas s'afficher sur d'autres clients.","Option {{number}}":"Option {{number}}","Add Option":"Ajouter une option","Allow multiple choices":"Autoriser les choix multiples","End Date (optional)":"Date de fin (optionnel)","Clear end date":"Effacer la date de fin","Relay URLs (optional, comma-separated)":"URLs de relais (optionnel, séparées par des virgules)","Remove poll":"Supprimer le sondage","Refresh results":"Rafraîchir les résultats",Poll:"Sondage",Media:"média","Republish to ...":"Reposter vers ...","Successfully republish to your write relays":"Republié avec succès vers vos relais d’écriture","Failed to republish to your write relays: {{error}}":"Échec du republishing vers vos relais d’écriture : {{error}}","Successfully republish to relay set: {{name}}":"Republié avec succès vers le groupe de relais : {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"Échec du republishing vers le groupe de relais : {{name}}. Erreur : {{error}}","Successfully republish to relay: {{url}}":"Republié avec succès vers le relais : {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"Échec du republishing vers le relais : {{url}}. Erreur : {{error}}","Write relays":"Relais d’écriture","No more reactions":"Plus de réactions","No reactions yet":"Pas encore de réactions","No more zaps":"Plus de zaps","No zaps yet":"Pas encore de zaps","No more reposts":"Plus de reposts","No reposts yet":"Pas encore de reposts",Reposts:"Reposts",FollowListNotFoundConfirmation:"Liste de suivi non trouvée. Voulez-vous en créer une nouvelle ? Si vous avez suivi des utilisateurs auparavant, veuillez NE PAS confirmer car cette opération vous fera perdre votre liste de suivi précédente.",MuteListNotFoundConfirmation:"Liste de mise en sourdine non trouvée. Voulez-vous en créer une nouvelle ? Si vous avez mis en sourdine des utilisateurs auparavant, veuillez NE PAS confirmer car cette opération vous fera perdre votre liste de mise en sourdine précédente.","Show NSFW content by default":"Afficher le contenu NSFW par défaut","Custom emoji management":"Gestion des émojis personnalisés","After changing emojis, you may need to refresh the page":"Après avoir modifié les émojis, vous devrez peut-être actualiser la page","Too many read relays":"Trop de relais de lecture","Too many write relays":"Trop de relais d'écriture","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"Vous avez {{count}} relais de lecture. La plupart des clients n'utilisent que 2 à 4 relais, en configurer plus est inutile.","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"Vous avez {{count}} relais d'écriture. La plupart des clients n'utilisent que 2 à 4 relais, en configurer plus est inutile.","Optimize Relay Settings":"Optimiser les paramètres de relais","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"Votre configuration de relais actuelle pourrait ne pas être optimale. Cela pourrait rendre difficile pour les autres de trouver vos publications et pourrait entraîner des notifications incomplètes.","Optimize Now":"Optimiser maintenant","Maybe Later":"Peut-être plus tard","Don't remind me again":"Ne plus me rappeler",Posts:"Publications",Articles:"Articles",Highlights:"Surlignages",Polls:"Sondages","Voice Posts":"Publications vocales","Photo Posts":"Publications photo","Video Posts":"Publications vidéo","Select All":"Tout sélectionner","Clear All":"Tout effacer","Set as default filter":"Définir comme filtre par défaut",Apply:"Appliquer",Reset:"Réinitialiser","Share something on this Relay":"Partager quelque chose sur ce relais","Try deleting this note":"Essayez de supprimer cette note","Deletion request sent to {{count}} relays":"Demande de suppression envoyée à {{count}} relais","Suitable Relays":"Relais adaptés","People, keywords, or relays":"Personnes, mots-clés ou relais","Hide content mentioning muted users":"Masquer le contenu mentionnant des utilisateurs masqués","This note mentions a user you muted":"Cette note mentionne un utilisateur que vous avez masqué",Filter:"Filtre","mentioned you in a note":"vous a mentionné dans une note","quoted your note":"a cité votre note","voted in your poll":"a voté dans votre sondage","reacted to your note":"a réagi à votre note","reposted your note":"a repartagé votre note","zapped your note":"a zappé votre note","highlighted your note":"a mis en évidence votre note","zapped you":"vous a zappé","Mark as read":"Marquer comme lu",Report:"Signaler","Successfully report":"Signalement réussi","Failed to report":"Échec du signalement",nudity:"Nudité",malware:"Logiciel malveillant",profanity:"Blasphème",illegal:"Contenu illégal",spam:"Spam",other:"Autre","Notification list style":"Style de liste de notifications","See extra info for each notification":"Voir des infos supplémentaires pour chaque notification","See more notifications at a glance":"Voir plus de notifications en un coup d'œil",Detailed:"Détaillé",Compact:"Compact","Submit Relay":"Soumettre un relais",Homepage:"Page d'accueil","Proof of Work (difficulty {{minPow}})":"Preuve de travail (difficulté {{minPow}})","Proof of Work":"Preuve de travail","Posts & comments difficulty":"Difficulté des publications et commentaires","Reactions difficulty":"Difficulté des réactions","Image Mode":"Mode image","Media Feed":"Flux média","Text Only":"Flux texte","Text Post":"Publication texte","Picture Post":"Publication image","Video Post":"Publication vidéo","Short Video Post":"Vidéo courte",Text:"Texte",Picture:"Image",Video:"Vidéo","Short Video":"Vidéo courte","Post Type":"Type de publication","via {{client}}":"via {{client}}","Auto-load media":"Auto-chargement des médias",Always:"Toujours","Wi-Fi only":"Wi-Fi uniquement",Never:"Jamais","Click to load image":"Cliquez pour charger l’image","Click to load media":"Cliquez pour charger les médias","Click to load YouTube video":"Cliquez pour charger la vidéo YouTube","{{count}} reviews":"{{count}} avis","Write a review":"Écrire un avis","No reviews yet. Be the first to write one!":"Pas encore d’avis. Soyez le premier à en écrire un !","View more reviews":"Voir plus d’avis","Failed to review":"Échec de l’avis","Write a review and pick a star rating":"Écrivez un avis et choisissez une note en étoiles",Submit:"Soumettre","Reviews for {{relay}}":"Avis pour {{relay}}","No relays selected":"Aucun relais sélectionné","Post to":"Publier sur","Write relays and {{count}} other relays":"Relais d’écriture et {{count}} autres relais","{{count}} relays":"{{count}} relais","Republishing...":"Republication en cours...","Trending Notes":"Notes tendance","Connected to":"Connecté à","Disconnect Wallet":"Déconnecter le portefeuille","Are you absolutely sure?":"Êtes-vous absolument sûr ?","You will not be able to send zaps to others.":"Vous ne pourrez plus envoyer de zaps aux autres.",Disconnect:"Déconnecter","Start with a Rizful Vault":"Démarrer avec un coffre Rizful","or other wallets":"ou d’autres portefeuilles","Rizful Vault":"Coffre Rizful","Rizful Vault connected!":"Coffre Rizful connecté !","You can now use your Rizful Vault to zap your favorite notes and creators.":"Vous pouvez maintenant utiliser votre coffre Rizful pour zapper vos notes et créateurs préférés.","Your Lightning Address":"Votre adresse Lightning","New to Rizful?":"Nouveau sur Rizful ?","Sign up for Rizful":"Inscrivez-vous sur Rizful","If you already have a Rizful account, you can skip this step.":"Si vous avez déjà un compte Rizful, vous pouvez passer cette étape.","Get your one-time code":"Obtenez votre code à usage unique","Get code":"Obtenir le code","Connect to your Rizful Vault":"Connectez-vous à votre coffre Rizful","Paste your one-time code here":"Collez votre code à usage unique ici",Connect:"Connecter","Set up your wallet to send and receive sats!":"Configurez votre portefeuille pour envoyer et recevoir des sats !","Set up":"Configurer",Pinned:"Épinglé",Unpin:"Retirer l’épingle",Unpinning:"Retrait de l’épingle","Pinning...":"Épinglage en cours...","Pinned!":"Épinglé !","Failed to pin: {{error}}":"Échec de l’épinglage : {{error}}","Unpinning...":"Retrait de l’épingle en cours...","Unpinned!":"Retrait de l’épingle effectué !","Failed to unpin: {{error}}":"Échec du retrait de l’épingle : {{error}}","Unpin from profile":"Retirer l’épingle du profil","Pin to profile":"Épingler au profil",Appearance:"Apparence","Pure Black":"Noir pur",Default:"Par défaut",Red:"Rouge",Orange:"Orange",Amber:"Ambre",Yellow:"Jaune",Lime:"Citron vert",Green:"Vert",Emerald:"Émeraude",Teal:"Sarcelle",Cyan:"Cyan",Sky:"Bleu ciel",Blue:"Bleu",Indigo:"Indigo",Violet:"Violet",Purple:"Pourpre",Fuchsia:"Fuchsia",Pink:"Rose",Rose:"Rose","Primary color":"Couleur principale",Layout:"Disposition","Two-column":"Deux colonnes","Single-column":"Une seule colonne",Reviews:"Avis",Extension:"Extension",Remote:"Distant","Encrypted Key":"Clé chiffrée","Private Key":"Clé privée","Welcome to RogueJumble":"Bienvenue sur RogueJumble","RogueJumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"RogueJumble est un client axé sur la navigation des relais. Commencez par explorer des relais intéressants ou connectez-vous pour voir votre fil d'abonnements.","Explore Relays":"Explorer les relais","Choose a feed":"Choisir un fil","and {{x}} others":"et {{x}} autres",selfZapWarning:"RogueJumble n'est pas responsable de ce qui se passe si vous vous zappez vous-même. Procédez à vos risques et périls. 😉⚡","Emoji Pack":"Pack d'Emojis","Emoji pack added":"Pack d'emojis ajouté","Add emoji pack failed":"Échec de l'ajout du pack d'emojis","Emoji pack removed":"Pack d'emojis supprimé","Remove emoji pack failed":"Échec de la suppression du pack d'emojis",Added:"Ajouté","Emoji Packs":"Packs d'Emojis","My Packs":"Mes Packs","Adding...":"Ajout...","Removing...":"Suppression...",Reload:"Recharger","Request to Join Relay":"Demander à rejoindre le Relay","Leave Relay":"Quitter le Relay",Leave:"Quitter","Are you sure you want to leave this relay?":"Êtes-vous sûr de vouloir quitter ce relay ?","Join request sent successfully":"Demande d'adhésion envoyée avec succès","Failed to send join request":"Échec de l'envoi de la demande d'adhésion","Leave request sent successfully":"Demande de départ envoyée avec succès","Failed to send leave request":"Échec de l'envoi de la demande de départ","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"Entrez un code d'invitation si vous en avez un. Sinon, laissez-le vide pour envoyer une demande.","Invite Code (Optional)":"Code d'Invitation (Optionnel)","Enter invite code":"Entrez le code d'invitation","Sending...":"Envoi...","Send Request":"Envoyer la Demande","You can get an invite code from a relay member.":"Vous pouvez obtenir un code d'invitation auprès d'un membre du relay.","Enter the invite code you received from a relay member.":"Entrez le code d'invitation que vous avez reçu d'un membre du relay.","Get Invite Code":"Obtenir un Code d'Invitation","Share this invite code with others to invite them to join this relay.":"Partagez ce code d'invitation avec d'autres pour les inviter à rejoindre ce relay.","Invite Code":"Code d'Invitation",Copy:"Copier","This invite code can be used by others to join the relay.":"Ce code d'invitation peut être utilisé par d'autres pour rejoindre le relay.","No invite code available from this relay.":"Aucun code d'invitation disponible de ce relay.",Close:"Fermer","Failed to get invite code from relay":"Échec de l'obtention du code d'invitation du relay","Failed to get invite code":"Échec de l'obtention du code d'invitation","Invite code copied to clipboard":"Code d'invitation copié dans le presse-papiers","Favicon URL":"URL du Favicon","Filter out onion relays":"Filtrer les relais onion","Click to load X post":"Cliquez pour charger la publication X","View Nostr comments":"Voir les commentaires Nostr","Search for notes":"Rechercher des notes","Search for hashtag":"Rechercher un hashtag","Go to note":"Aller à la note","Go to relay":"Aller au relais","View discussions about this":"Voir les discussions sur ce contenu","Open link":"Ouvrir le lien","View Nostr discussions":"Voir les discussions Nostr","Optimal relays":"Relais optimaux","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"Republié avec succès sur les relais optimaux (vos relais d'écriture et les relais de lecture des utilisateurs mentionnés)","Failed to republish to optimal relays: {{error}}":"Échec de la republication sur les relais optimaux : {{error}}","External Content":"Contenu externe",Highlight:"Surligner","Optimal relays and {{count}} other relays":"Relais optimaux et {{count}} autres relais","Low trust ranking ({{percentile}}%)":"Classement de confiance faible ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"Compte suspect (Score de confiance: {{percentile}}%)","n users":"{{count}} utilisateurs","View Details":"Voir les détails","Follow Pack Not Found":"Pack de suivi introuvable","Follow pack not found":"Pack de suivi introuvable",Users:"Utilisateurs",Feed:"Flux","Follow Pack":"Pack de Suivi","24h Pulse":"Pulse 24h","Load earlier":"Charger plus tôt","Last 24 hours":"Dernières 24 heures","Last {{count}} days":"Derniers {{count}} jours",notes:"notes","Quick reaction":"Réaction rapide","If enabled, you can react with a single click. Click and hold for more options":"Si activé, vous pouvez réagir en un seul clic. Maintenez enfoncé pour plus d'options","Quick reaction emoji":"Emoji de réaction rapide","Select emoji":"Sélectionner un emoji","NSFW content display":"NSFW content display","Hide completely":"Hide completely","Show but hide content":"Show but hide content","Show directly":"Show directly","Click to view":"Click to view","Special Follow":"Suivre Spécial","Unfollow Special":"Ne Plus Suivre Spécial","Personal Feeds":"Flux Personnels","Relay Feeds":"Flux de Relais","Create Highlight":"Créer un Surlignage","Write your thoughts about this highlight...":"Écrivez vos pensées sur ce surlignage...","Publish Highlight":"Publier le Surlignage","Show replies":"Afficher les réponses","Hide replies":"Masquer les réponses","Welcome to RogueJumble!":"Bienvenue sur RogueJumble !","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"Votre flux est vide car vous ne suivez personne pour le moment. Commencez par explorer du contenu intéressant et suivez les utilisateurs que vous aimez !","Search Users":"Rechercher des utilisateurs","Create New Account":"Créer un nouveau compte",Important:"Important","Generate Your Account":"Générer votre compte","Your private key IS your account. Keep it safe!":"Votre clé privée EST votre compte. Gardez-la en sécurité !","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"Dans Nostr, votre clé privée EST votre compte. Si vous perdez votre clé privée, vous perdez votre compte pour toujours.","Your Private Key":"Votre clé privée","Generate new key":"Générer une nouvelle clé","Download Backup File":"Télécharger le fichier de sauvegarde","Copied to Clipboard":"Copié dans le presse-papiers","Copy to Clipboard":"Copier dans le presse-papiers","I already saved my private key securely.":"J'ai déjà sauvegardé ma clé privée en toute sécurité.","Almost Done!":"Presque terminé !","Set a password to encrypt your key, or skip to finish":"Définissez un mot de passe pour chiffrer votre clé, ou ignorez pour terminer","Password Protection (Optional)":"Protection par mot de passe (facultatif)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"Définir un mot de passe chiffre votre clé privée dans ce navigateur. Vous pouvez ignorer cette étape, mais nous recommandons d'en définir un pour plus de sécurité.","Password (Optional)":"Mot de passe (facultatif)","Enter password or leave empty to skip":"Entrez un mot de passe ou laissez vide pour ignorer","Confirm Password":"Confirmer le mot de passe","Re-enter password":"Ressaisissez le mot de passe","Passwords do not match":"Les mots de passe ne correspondent pas","Finish Signup":"Terminer l'inscription","Create Your Nostr Account":"Créez votre compte Nostr","Generate your unique private key. This is your digital identity.":"Générez votre clé privée unique. C'est votre identité numérique.","Critical: Save Your Private Key":"Critique : Sauvegardez votre clé privée","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"Votre clé privée EST votre compte. Il n'y a pas de récupération de mot de passe. Si vous la perdez, vous perdrez votre compte pour toujours. Veuillez la sauvegarder dans un endroit sécurisé.","I have safely backed up my private key":"J'ai sauvegardé ma clé privée en toute sécurité","Secure Your Account":"Sécurisez votre compte","Add an extra layer of protection with a password":"Ajoutez une couche de protection supplémentaire avec un mot de passe","Password Protection (Recommended)":"Protection par mot de passe (recommandé)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"Ajoutez un mot de passe pour chiffrer votre clé privée dans ce navigateur. C'est facultatif mais fortement recommandé pour une meilleure sécurité.","Create a password (or skip)":"Créez un mot de passe (ou ignorez)","Enter your password again":"Entrez à nouveau votre mot de passe","Complete Signup":"Terminer l'inscription",Recommended:"Recommandé","Enter Password":"Entrer le mot de passe",Password:"Mot de passe",Confirm:"Confirmer","trust-filter.title":"Filtre de score de confiance","trust-filter.off":"Désactivé","trust-filter.low":"Faible","trust-filter.medium":"Moyen","trust-filter.high":"Élevé","trust-filter.wot":"WoT","trust-filter.filter-threshold":"Seuil de filtrage","trust-filter.quick-presets":"Préréglages rapides","trust-filter.show-all-content":"Afficher tout le contenu","trust-filter.only-show-wot":"Afficher uniquement votre réseau de confiance (abonnements + leurs abonnements)","trust-filter.hide-bottom-percent":"Filtrer les {{score}}% inférieurs des utilisateurs par classement de confiance","trust-filter.trust-score-description":"Calculé en fonction de la réputation et du réseau social de l'utilisateur","Auto-load profile pictures":"Charger les images de profil automatiquement","Disable live feed":"Désactiver le flux en direct","Enable live feed":"Activer le flux en direct","Default relays":"Relais par défaut","Reset to default":"Réinitialiser par défaut","Default relays description":"Utilisés pour interroger les configurations de relais d'autres utilisateurs et comme solution de secours lorsque les utilisateurs n'ont pas de relais configurés.","Default relays warning":"Attention : Ne modifiez pas ces paramètres à la légère, car cela pourrait affecter votre expérience de base.","Invalid relay URL":"URL de relais non valide","Muted words":"Mots masqués","Add muted word":"Ajouter un mot masqué","Zap Details":"Détails du Zap","Default trust score filter threshold ({{n}}%)":"Seuil par défaut du filtre de score de confiance ({{n}}%)","No notes found":"Aucune note trouvée","Try again later or check your connection":"Réessayez plus tard ou vérifiez votre connexion","Hide indirect":"Masquer indirects","Copy note content":"Copier le contenu de la note","Video loop":"Boucle vidéo","Automatically replay videos when they end":"Rejouer automatiquement les vidéos à la fin","Relays used for searching notes (NIP-50)":"Relais utilisés pour rechercher des notes (NIP-50)","Protected event (NIP-70)":"Événement protégé (NIP-70)",Protected:"Protégé","Protected event hint":"Les événements protégés (NIP-70) ne peuvent être publiés que par l'auteur. Les relais rejetteront ces événements provenant de tiers, empêchant les autres de rediffuser votre contenu. Remarque : tous les relais ne prennent pas en charge les événements protégés.","Allow insecure connections":"Autoriser les connexions non sécurisées","Allow insecure connections description":"Autoriser le chargement des ressources http:// et la connexion aux relais ws://. Peut déclencher des avertissements de contenu mixte du navigateur.","reacted to":"a réagi à",Reaction:"Réaction","Show others this was sent via Jumble":"Montrer aux autres que cela a été envoyé via RogueJumble","Enjoying Jumble?":"Vous aimez RogueJumble ?","Your donation helps me maintain Jumble and make it better! 😊":"Votre don m'aide à maintenir RogueJumble et à l'améliorer ! 😊","Welcome to Jumble":"Bienvenue sur RogueJumble","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","n users_one":"{{count}} utilisateur","n users_other":"{{count}} utilisateurs","Welcome to Jumble!":"Bienvenue sur RogueJumble !","Font size":"Taille de police","Advanced mode":"Mode avancé","Post type selector":"Sélecteur de type de publication","Shows post kind dropdown when creating posts":"Affiche le menu déroulant du type de publication lors de la création de publications","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"Rechercher des communautés...","No communities found":"Aucune communauté trouvée","No communities yet":"Pas encore de communautés"}},i3={translation:{"Welcome! 🥳":"स्वागत है! 🥳",About:"के बारे में","New Note":"नया नोट",Post:"पोस्ट",Home:"होम","Relay settings":"रिले सेटिंग्स",Settings:"सेटिंग्स",SidebarRelays:"रिले",Refresh:"रीफ्रेश",Profile:"प्रोफ़ाइल",Logout:"लॉगआउट",Following:"फॉलो कर रहे हैं",followings:"फॉलोइंग",reposted:"रीपोस्ट किया","just now":"अभी","minute ago_one":"{{count}} मिनट पहले","minute ago_other":"{{count}} मिनट पहले","n m":"{{n}}मि","hour ago_one":"{{count}} घंटा पहले","hour ago_other":"{{count}} घंटे पहले","n h":"{{n}}घं","day ago_one":"{{count}} दिन पहले","day ago_other":"{{count}} दिन पहले","n d":"{{n}}दि",date:"{{timestamp, date}}",Follow:"फॉलो करें",Unfollow:"अनफॉलो करें","Follow failed":"फॉलो असफल","Unfollow failed":"अनफॉलो असफल","show new notes":"नए नोट्स दिखाएं","loading...":"लोड हो रहा है...","Loading...":"लोड हो रहा है...","no more notes":"कोई और नोट नहीं","reply to":"का उत्तर",reply:"उत्तर",Reply:"उत्तर","load more older replies":"अधिक पुराने उत्तर लोड करें","Write something...":"कुछ लिखें...",Cancel:"रद्द करें",Mentions:"उल्लेख","Failed to post":"पोस्ट असफल","Post successful":"पोस्ट सफल","Your post has been published":"आपकी पोस्ट प्रकाशित हो गई है",Repost:"रीपोस्ट",Quote:"उद्धरण","Copy event ID":"इवेंट आईडी कॉपी करें","Copy user ID":"यूजर आईडी कॉपी करें","View raw event":"कच्चा इवेंट देखें",Like:"पसंद","switch to light theme":"लाइट थीम पर स्विच करें","switch to dark theme":"डार्क थीम पर स्विच करें","switch to system theme":"सिस्टम थीम पर स्विच करें",Note:"नोट",note:"नोट","username's following":"{{username}} के फॉलोइंग","username's used relays":"{{username}} के उपयोग किए गए रिले","username's muted":"{{username}} के म्यूट किए गए",Login:"लॉगिन","Follows you":"आपको फॉलो करता है","Relay Settings":"रिले सेटिंग्स","Relay set name":"रिले सेट नाम","Add a new relay set":"नया रिले सेट जोड़ें",Add:"जोड़ें","n relays":"{{n}} रिले",Rename:"नाम बदलें","Copy share link":"शेयर लिंक कॉपी करें",Delete:"हटाएं","Relay already exists":"रिले पहले से मौजूद है","invalid relay URL":"अमान्य रिले URL","Add a new relay":"नया रिले जोड़ें",back:"वापस","Lost in the void":"शून्य में खो गया","Carry me home":"मुझे घर ले चलो","no replies":"कोई उत्तर नहीं","Reply to":"का उत्तर दें",Search:"खोजें","The relays you are connected to do not support search":"आप जिन रिले से जुड़े हैं वे खोज का समर्थन नहीं करते","Show more...":"और दिखाएं...","All users":"सभी उपयोगकर्ता","Display replies":"उत्तर प्रदर्शित करें",Notes:"नोट्स",Replies:"उत्तर",Notifications:"सूचनाएं","no more notifications":"कोई और सूचनाएं नहीं","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"प्राइवेट की लॉगिन का उपयोग असुरक्षित है। लॉगिन के लिए ब्राउज़र एक्सटेंशन का उपयोग करने की सिफारिश की जाती है, जैसे alby, nostr-keyx या nos2x। यदि आपको प्राइवेट की का उपयोग करना ही है, तो कम से कम एन्क्रिप्शन के लिए पासवर्ड सेट करें।","Login with Browser Extension":"ब्राउज़र एक्सटेंशन से लॉगिन करें","Login with Bunker":"बंकर से लॉगिन करें","Login with Private Key":"प्राइवेट की से लॉगिन करें","reload notes":"नोट्स रीलोड करें","Logged in Accounts":"लॉग इन अकाउंट","Add an Account":"अकाउंट जोड़ें","More options":"अधिक विकल्प","Add client tag":"क्लाइंट टैग जोड़ें","Show others this was sent via RogueJumble":"दूसरों को दिखाएं कि यह RogueJumble के माध्यम से भेजा गया था","Are you sure you want to logout?":"क्या आप वाकई लॉगआउट करना चाहते हैं?","relay sets":"रिले सेट",edit:"संपादित करें",Languages:"भाषाएं",Theme:"थीम",System:"सिस्टम",Light:"लाइट",Dark:"डार्क",Temporary:"अस्थायी","Choose a relay set":"रिले सेट चुनें","Switch account":"अकाउंट स्विच करें",Pictures:"तस्वीरें","Picture note":"तस्वीर नोट","A special note for picture-first clients like Olas":"Olas जैसे पिक्चर-फर्स्ट क्लाइंट के लिए एक विशेष नोट","Picture note requires images":"तस्वीर नोट के लिए इमेज आवश्यक है",Relays:"रिले",Image:"इमेज","R & W":"R & W",Read:"पढ़ें",Write:"लिखें","Pull relay sets":"रिले सेट खींचें","Select the relay sets you want to pull":"वे रिले सेट चुनें जिन्हें आप खींचना चाहते हैं","No relay sets found":"कोई रिले सेट नहीं मिला","Pull n relay sets":"{{n}} रिले सेट खींचें",Pull:"खींचें","Select all":"सभी चुनें","Relay Sets":"रिले सेट","Read & Write Relays":"रीड और राइट रिले","read relays description":"रीड रिले का उपयोग आपके बारे में इवेंट खोजने के लिए किया जाता है। अन्य उपयोगकर्ता आपको दिखाने वाले इवेंट आपके रीड रिले पर प्रकाशित करेंगे।","write relays description":"राइट रिले का उपयोग आपके इवेंट प्रकाशित करने के लिए किया जाता है। अन्य उपयोगकर्ता आपके राइट रिले से आपके इवेंट खोजेंगे।","read & write relays notice":"रीड और राइट सर्वर की संख्या आदर्श रूप से 2 और 4 के बीच रखी जानी चाहिए।","Don't have an account yet?":"अभी तक कोई अकाउंट नहीं है?","or simply generate a private key":"या बस एक प्राइवेट की जेनरेट करें","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"यह एक प्राइवेट की है। इसे किसी के साथ साझा न करें। इसे सुरक्षित रखें। यदि आप इसे खो देते हैं तो आप इसे पुनर्प्राप्त नहीं कर पाएंगे।",Edit:"संपादित करें",Save:"सेव करें","Display Name":"प्रदर्शन नाम",Bio:"बायो","Nostr Address (NIP-05)":"Nostr पता (NIP-05)","Invalid NIP-05 address":"अमान्य NIP-05 पता","Copy private key":"प्राइवेट की कॉपी करें","Enter the password to decrypt your ncryptsec":"अपना ncryptsec डिक्रिप्ट करने के लिए पासवर्ड दर्ज करें",Back:"वापस","optional: encrypt nsec":"वैकल्पिक: nsec एन्क्रिप्ट करें",password:"पासवर्ड","Sign up":"साइन अप","Save to":"सेव करें","Enter a name for the new relay set":"नए रिले सेट के लिए नाम दर्ज करें","Save to a new relay set":"नए रिले सेट में सेव करें",Mute:"म्यूट",Muted:"म्यूट किया गया",Unmute:"अनम्यूट","Unmute user":"उपयोगकर्ता को अनम्यूट करें","Append n relays":"{{n}} रिले जोड़ें",Append:"जोड़ें","Select relays to append":"जोड़ने के लिए रिले चुनें","calculating...":"गणना कर रहे हैं...","Calculate optimal read relays":"इष्टतम रीड रिले की गणना करें","Login to set":"सेट करने के लिए लॉगिन करें","Please login to view following feed":"फॉलोइंग फीड देखने के लिए कृपया लॉगिन करें","Send only to r":"केवल {{r}} को भेजें","Send only to these relays":"केवल इन रिले को भेजें",Explore:"एक्सप्लोर करें","Search relays":"खोज रिले",relayInfoBadgeAuth:"प्रमाणीकरण",relayInfoBadgeSearch:"खोज",relayInfoBadgePayment:"भुगतान",Operator:"ऑपरेटर",Contact:"संपर्क",Software:"सॉफ्टवेयर",Version:"संस्करण","Random Relays":"रैंडम रिले",randomRelaysRefresh:"रीफ्रेश","Explore more":"और एक्सप्लोर करें","Payment page":"भुगतान पेज","Supported NIPs":"समर्थित NIPs","Open in a":"{{a}} में खोलें","Cannot handle event of kind k":"प्रकार {{k}} के इवेंट को हैंडल नहीं कर सकते","Encrypted direct messages not supported":"एन्क्रिप्टेड डायरेक्ट मैसेज समर्थित नहीं हैं","Sorry! The note cannot be found 😔":"माफ करें! नोट नहीं मिल सका 😔","This user has been muted":"इस उपयोगकर्ता को म्यूट कर दिया गया है",Wallet:"वॉलेट",Sats:"सैट्स",sats:"सैट्स","Zap to":"को जैप करें","Zap n sats":"{{n}} सैट्स जैप करें",zapComment:"टिप्पणी","Default zap amount":"डिफ़ॉल्ट जैप राशि","Default zap comment":"डिफ़ॉल्ट जैप टिप्पणी","Lightning Address (or LNURL)":"लाइटनिंग पता (या LNURL)","Quick zap":"त्वरित जैप","If enabled, you can zap with a single click. Click and hold for custom amounts":"यदि सक्षम है, तो आप एक क्लिक से जैप कर सकते हैं। कस्टम राशि के लिए क्लिक करके रोकें",All:"सभी",Reactions:"प्रतिक्रियाएं",Zaps:"जैप्स","Enjoying RogueJumble?":"RogueJumble का आनंद ले रहे हैं?","Your donation helps me maintain RogueJumble and make it better! 😊":"आपका दान मुझे RogueJumble को बनाए रखने और इसे बेहतर बनाने में मदद करता है! 😊","Earlier notifications":"पुरानी सूचनाएं","Temporarily display this note":"इस नोट को अस्थायी रूप से प्रदर्शित करें",buttonFollowing:"फॉलो कर रहे हैं","Are you sure you want to unfollow this user?":"क्या आप वाकई इस उपयोगकर्ता को अनफॉलो करना चाहते हैं?","Recent Supporters":"हाल के समर्थक","Seen on":"पर देखा गया","Temporarily display this reply":"इस उत्तर को अस्थायी रूप से प्रदर्शित करें","Note not found":"नोट नहीं मिला","no more replies":"कोई और उत्तर नहीं","Relay sets":"रिले सेट","Favorite Relays":"पसंदीदा रिले","Following's Favorites":"फॉलोइंग के पसंदीदा","no more relays":"कोई और रिले नहीं","Favorited by":"द्वारा पसंदीदा","Post settings":"पोस्ट सेटिंग्स","Media upload service":"मीडिया अपलोड सेवा","Choose a relay":"रिले चुनें","no relays found":"कोई रिले नहीं मिला",video:"वीडियो","Show n new notes":"{{n}} नए नोट्स दिखाएं",YouTabName:"आप",Bookmark:"बुकमार्क","Remove bookmark":"बुकमार्क हटाएं","no bookmarks found":"कोई बुकमार्क नहीं मिला","no more bookmarks":"कोई और बुकमार्क नहीं",Bookmarks:"बुकमार्क","Show more":"और दिखाएं",General:"सामान्य",Autoplay:"ऑटोप्ले","Enable video autoplay on this device":"इस डिवाइस पर वीडियो ऑटोप्ले सक्षम करें","Paste or drop media files to upload":"अपलोड करने के लिए मीडिया फाइलें पेस्ट या ड्रॉप करें",Preview:"पूर्वावलोकन","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"आप [{{eventAuthorName}}] द्वारा हस्ताक्षरित एक इवेंट प्रकाशित करने वाले हैं। आप वर्तमान में [{{currentUsername}}] के रूप में लॉग इन हैं। क्या आप सुनिश्चित हैं?","Platinum Sponsors":"प्लेटिनम स्पॉन्सर",From:"से","Comment on":"पर टिप्पणी करें","View on njump.me":"njump.me पर देखें","Hide content from untrusted users":"अविश्वसनीय उपयोगकर्ताओं से सामग्री छुपाएं","Only show content from your followed users and the users they follow":"केवल आपके द्वारा फॉलो किए गए उपयोगकर्ताओं और उनके द्वारा फॉलो किए गए उपयोगकर्ताओं की सामग्री दिखाएं","Followed by":"द्वारा फॉलो किया गया","Mute user privately":"उपयोगकर्ता को निजी रूप से म्यूट करें","Mute user publicly":"उपयोगकर्ता को सार्वजनिक रूप से म्यूट करें",Quotes:"उद्धरण","Lightning Invoice":"लाइटनिंग इनवॉइस","Bookmark failed":"बुकमार्क असफल","Remove bookmark failed":"बुकमार्क हटाना असफल",Translation:"अनुवाद",Balance:"बैलेंस",characters:"अक्षर",jumbleTranslateApiKeyDescription:"आप इस API की को कहीं भी उपयोग कर सकते हैं जो LibreTranslate का समर्थन करता है। सेवा URL है {{serviceUrl}}","Top up":"टॉप अप","Will receive: {n} characters":"प्राप्त होंगे: {{n}} अक्षर","Top up {n} sats":"{{n}} सैट्स टॉप अप करें","Minimum top up is {n} sats":"न्यूनतम टॉप अप {{n}} सैट्स है",Service:"सेवा","Reset API key":"API की रीसेट करें","Are you sure you want to reset your API key? This action cannot be undone.":"क्या आप वाकई अपनी API की रीसेट करना चाहते हैं? यह कार्य पूर्ववत नहीं किया जा सकता।",Warning:"चेतावनी","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"आपकी वर्तमान API की तुरंत अमान्य हो जाएगी, और इसका उपयोग करने वाले सभी एप्लिकेशन तब तक काम करना बंद कर देंगे जब तक आप उन्हें नई की के साथ अपडेट नहीं करते।","Service address":"सेवा पता",Pay:"भुगतान करें",interactions:"इंटरैक्शन",notifications:"सूचनाएं","Show untrusted {type}":"अविश्वसनीय {{type}} दिखाएं","Hide untrusted {type}":"अविश्वसनीय {{type}} छुपाएं","Currently hiding {type} from untrusted users.":"वर्तमान में अविश्वसनीय उपयोगकर्ताओं से {{type}} छुपा रहे हैं।","Currently showing all {type}.":"वर्तमान में सभी {{type}} दिखा रहे हैं।","Click continue to show all {type}.":"सभी {{type}} दिखाने के लिए जारी रखें पर क्लिक करें।","Click continue to hide {type} from untrusted users.":"अविश्वसनीय उपयोगकर्ताओं से {{type}} छुपाने के लिए जारी रखें पर क्लिक करें।","Trusted users include people you follow and people they follow.":"विश्वसनीय उपयोगकर्ताओं में वे लोग शामिल हैं जिन्हें आप फॉलो करते हैं और जिन्हें वे फॉलो करते हैं।",Continue:"जारी रखें","Successfully updated mute list":"म्यूट सूची सफलतापूर्वक अपडेट की गई","No pubkeys found from {url}":"{{url}} से कोई pubkeys नहीं मिली","Translating...":"अनुवाद कर रहे हैं...",Translate:"अनुवाद करें","Show original":"मूल दिखाएं",Website:"वेबसाइट","Hide untrusted notes":"अविश्वसनीय नोट्स छुपाएं","Open in another client":"दूसरे क्लाइंट में खोलें",Community:"समुदाय",Group:"समूह","Live event":"लाइव इवेंट",Article:"लेख",Unfavorite:"पसंदीदा से हटाएं","Recommended relays":"अनुशंसित रिले","Blossom server URLs":"ब्लॉसम सर्वर URLs","You need to add at least one blossom server in order to upload media files.":"मीडिया फाइलें अपलोड करने के लिए आपको कम से कम एक ब्लॉसम सर्वर जोड़ना होगा।","Recommended blossom servers":"अनुशंसित ब्लॉसम सर्वर","Enter Blossom server URL":"ब्लॉसम सर्वर URL दर्ज करें",Preferred:"प्राथमिकता","Multiple choice (select one or more)":"बहुविकल्पीय (एक या अधिक चुनें)",Vote:"वोट","{{number}} votes":"{{number}} वोट","Total votes":"कुल वोट","Poll has ended":"पोल समाप्त हो गया","Poll ends at {{time}}":"पोल {{time}} पर समाप्त होता है","Load results":"परिणाम लोड करें","This is a poll note.":"यह एक पोल नोट है।","Unlike regular notes, polls are not widely supported and may not display on other clients.":"नियमित नोट्स के विपरीत, पोल व्यापक रूप से समर्थित नहीं हैं और अन्य क्लाइंट पर प्रदर्शित नहीं हो सकते।","Option {{number}}":"विकल्प {{number}}","Add Option":"विकल्प जोड़ें","Allow multiple choices":"एकाधिक विकल्पों की अनुमति दें","End Date (optional)":"समाप्ति तिथि (वैकल्पिक)","Clear end date":"समाप्ति तिथि साफ़ करें","Relay URLs (optional, comma-separated)":"रिले URLs (वैकल्पिक, कॉमा से अलग)","Remove poll":"पोल हटाएं","Refresh results":"परिणाम रीफ्रेश करें",Poll:"पोल",Media:"मीडिया","Republish to ...":"पुनः प्रकाशित करें...","Successfully republish to your write relays":"आपके राइट रिले पर सफलतापूर्वक पुनः प्रकाशित","Failed to republish to your write relays: {{error}}":"आपके राइट रिले पर पुनः प्रकाशित करने में असफल: {{error}}","Successfully republish to relay set: {{name}}":"रिले सेट में सफलतापूर्वक पुनः प्रकाशित: {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"रिले सेट में पुनः प्रकाशित करने में असफल: {{name}}। त्रुटि: {{error}}","Successfully republish to relay: {{url}}":"रिले पर सफलतापूर्वक पुनः प्रकाशित: {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"रिले पर पुनः प्रकाशित करने में असफल: {{url}}। त्रुटि: {{error}}","Write relays":"राइट रिले","No more reactions":"कोई और प्रतिक्रियाएं नहीं","No reactions yet":"अभी तक कोई प्रतिक्रियाएं नहीं","No more zaps":"कोई और जैप्स नहीं","No zaps yet":"अभी तक कोई जैप्स नहीं","No more reposts":"कोई और रीपोस्ट नहीं","No reposts yet":"अभी तक कोई रीपोस्ट नहीं",Reposts:"रीपोस्ट",FollowListNotFoundConfirmation:"फॉलो सूची नहीं मिली। क्या आप एक नई बनाना चाहते हैं? यदि आपने पहले उपयोगकर्ताओं को फॉलो किया है, तो कृपया पुष्टि न करें क्योंकि इस ऑपरेशन से आपकी पिछली फॉलो सूची नष्ट हो जाएगी।",MuteListNotFoundConfirmation:"म्यूट सूची नहीं मिली। क्या आप एक नई बनाना चाहते हैं? यदि आपने पहले उपयोगकर्ताओं को म्यूट किया है, तो कृपया पुष्टि न करें क्योंकि इस ऑपरेशन से आपकी पिछली म्यूट सूची नष्ट हो जाएगी।","Show NSFW content by default":"डिफ़ॉल्ट रूप से NSFW सामग्री दिखाएं","Custom emoji management":"कस्टम इमोजी प्रबंधन","After changing emojis, you may need to refresh the page":"इमोजी बदलने के बाद, आपको पेज रीफ्रेश करना पड़ सकता है","Too many read relays":"बहुत सारे रीड रिले","Too many write relays":"बहुत सारे राइट रिले","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"आपके पास {{count}} रीड रिले हैं। अधिकांश क्लाइंट केवल 2-4 रिले का उपयोग करते हैं, अधिक सेट करना अनावश्यक है।","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"आपके पास {{count}} राइट रिले हैं। अधिकांश क्लाइंट केवल 2-4 रिले का उपयोग करते हैं, अधिक सेट करना अनावश्यक है।","Optimize Relay Settings":"रिले सेटिंग्स को अनुकूलित करें","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"आपकी वर्तमान रिले कॉन्फ़िगरेशन इष्टतम नहीं हो सकती। इससे दूसरों के लिए आपकी पोस्ट ढूंढना मुश्किल हो सकता है और अधूरी सूचनाएं मिल सकती हैं।","Optimize Now":"अभी अनुकूलित करें","Maybe Later":"शायद बाद में","Don't remind me again":"मुझे दोबारा याद न दिलाएं",Posts:"पोस्ट",Articles:"लेख",Highlights:"हाइलाइट्स",Polls:"पोल","Voice Posts":"वॉयस पोस्ट","Photo Posts":"फोटो पोस्ट","Video Posts":"वीडियो पोस्ट","Select All":"सभी चुनें","Clear All":"सभी साफ़ करें","Set as default filter":"डिफ़ॉल्ट फिल्टर के रूप में सेट करें",Apply:"लागू करें",Reset:"रीसेट","Share something on this Relay":"इस रिले पर कुछ साझा करें","Try deleting this note":"इस नोट को हटाने का प्रयास करें","Deletion request sent to {{count}} relays":"{{count}} रिले को डिलीट अनुरोध भेजा गया","Suitable Relays":"उपयुक्त रिले","People, keywords, or relays":"लोग, कीवर्ड या रिले","Hide content mentioning muted users":"म्यूट किए गए उपयोगकर्ताओं का उल्लेख करने वाली सामग्री छुपाएं","This note mentions a user you muted":"यह नोट एक उपयोगकर्ता का उल्लेख करता है जिसे आपने म्यूट किया है",Filter:"फिल्टर","mentioned you in a note":"ने आपका एक नोट में उल्लेख किया","quoted your note":"ने आपके नोट को उद्धृत किया","voted in your poll":"ने आपके पोल में वोट किया","reacted to your note":"ने आपके नोट पर प्रतिक्रिया दी","reposted your note":"ने आपके नोट को रीपोस्ट किया","zapped your note":"ने आपके नोट को जैप किया","highlighted your note":"ने आपके नोट को हाइलाइट किया","zapped you":"ने आपको जैप किया","Mark as read":"पढ़ा हुआ मार्क करें",Report:"रिपोर्ट करें","Successfully report":"सफलतापूर्वक रिपोर्ट किया गया","Failed to report":"रिपोर्ट करने में असफल",nudity:"नग्नता",malware:"मैलवेयर",profanity:"अश्लीलता",illegal:"अवैध सामग्री",spam:"स्पैम",other:"अन्य","Notification list style":"सूचना सूची शैली","See extra info for each notification":"प्रत्येक सूचना के लिए अतिरिक्त जानकारी देखें","See more notifications at a glance":"एक नज़र में अधिक सूचनाएं देखें",Detailed:"विस्तृत",Compact:"संक्षिप्त","Submit Relay":"रिले सबमिट करें",Homepage:"होमपेज","Proof of Work (difficulty {{minPow}})":"कार्य प्रमाण (कठिनाई {{minPow}})","Proof of Work":"कार्य प्रमाण","Posts & comments difficulty":"पोस्ट और टिप्पणियों की कठिनाई","Reactions difficulty":"प्रतिक्रियाओं की कठिनाई","Image Mode":"छवि मोड","Media Feed":"मीडिया फीड","Text Only":"टेक्स्ट फीड","Text Post":"टेक्स्ट पोस्ट","Picture Post":"तस्वीर पोस्ट","Video Post":"वीडियो पोस्ट","Short Video Post":"लघु वीडियो",Text:"टेक्स्ट",Picture:"तस्वीर",Video:"वीडियो","Short Video":"लघु वीडियो","Post Type":"पोस्ट प्रकार","via {{client}}":"के माध्यम से {{client}}","Auto-load media":"मीडिया स्वतः लोड करें",Always:"हमेशा","Wi-Fi only":"केवल Wi-Fi",Never:"कभी नहीं","Click to load image":"इमेज लोड करने के लिए क्लिक करें","Click to load media":"मीडिया लोड करने के लिए क्लिक करें","Click to load YouTube video":"YouTube वीडियो लोड करने के लिए क्लिक करें","{{count}} reviews":"{{count}} समीक्षाएं","Write a review":"समीक्षा लिखें","No reviews yet. Be the first to write one!":"अभी तक कोई समीक्षा नहीं। पहले लिखने वाले बनें!","View more reviews":"और समीक्षाएं देखें","Failed to review":"समीक्षा असफल","Write a review and pick a star rating":"एक समीक्षा लिखें और स्टार रेटिंग चुनें",Submit:"सबमिट करें","Reviews for {{relay}}":"{{relay}} के लिए समीक्षाएं","No relays selected":"कोई रिले चयनित नहीं","Post to":"पोस्ट करें","Write relays and {{count}} other relays":"राइट रिले और {{count}} अन्य रिले","{{count}} relays":"{{count}} रिले","Republishing...":"पुनः प्रकाशित कर रहे हैं...","Trending Notes":"ट्रेंडिंग नोट्स","Connected to":"से कनेक्टेड","Disconnect Wallet":"वॉलेट डिस्कनेक्ट करें","Are you absolutely sure?":"क्या आप पूरी तरह से सुनिश्चित हैं?","You will not be able to send zaps to others.":"आप दूसरों को जैप नहीं भेज पाएंगे।",Disconnect:"डिस्कनेक्ट करें","Start with a Rizful Vault":"Rizful वॉल्ट के साथ शुरू करें","or other wallets":"या अन्य वॉलेट","Rizful Vault":"Rizful वॉल्ट","Rizful Vault connected!":"Rizful वॉल्ट कनेक्टेड!","You can now use your Rizful Vault to zap your favorite notes and creators.":"अब आप अपने Rizful वॉल्ट का उपयोग अपने पसंदीदा नोट्स और क्रिएटर्स को जैप करने के लिए कर सकते हैं।","Your Lightning Address":"आपका लाइटनिंग पता","New to Rizful?":"Rizful में नया?","Sign up for Rizful":"Rizful के लिए साइन अप करें","If you already have a Rizful account, you can skip this step.":"यदि आपके पास पहले से ही एक Rizful अकाउंट है, तो आप इस चरण को छोड़ सकते हैं।","Get your one-time code":"अपना वन-टाइम कोड प्राप्त करें","Get code":"कोड प्राप्त करें","Connect to your Rizful Vault":"अपने Rizful वॉल्ट से कनेक्ट करें","Paste your one-time code here":"अपना वन-टाइम कोड यहां पेस्ट करें",Connect:"कनेक्ट करें","Set up your wallet to send and receive sats!":"सैट्स भेजने और प्राप्त करने के लिए अपना वॉलेट सेट करें!","Set up":"सेट करें",Pinned:"पिन किया गया",Unpin:"पिन हटाएं",Unpinning:"पिन हटाया जा रहा है","Pinning...":"पिन कर रहे हैं...","Pinned!":"पिन किया गया!","Failed to pin: {{error}}":"पिन करने में असफल: {{error}}","Unpinning...":"पिन हटाया जा रहा है...","Unpinned!":"पिन हटा दिया गया!","Failed to unpin: {{error}}":"पिन हटाने में असफल: {{error}}","Unpin from profile":"प्रोफ़ाइल से पिन हटाएं","Pin to profile":"प्रोफ़ाइल पर पिन करें",Appearance:"दिखावट","Pure Black":"शुद्ध काला",Default:"डिफ़ॉल्ट",Red:"लाल",Orange:"नारंगी",Amber:"एम्बर",Yellow:"पीला",Lime:"नींबू",Green:"हरा",Emerald:"पन्ना",Teal:"टील",Cyan:"सियान",Sky:"आसमानी",Blue:"नीला",Indigo:"नील",Violet:"बैंगनी",Purple:"जामुनी",Fuchsia:"फुशिया",Pink:"गुलाबी",Rose:"गुलाब","Primary color":"प्राथमिक रंग",Layout:"लेआउट","Two-column":"दोहरा स्तंभ","Single-column":"एकल स्तंभ",Reviews:"समीक्षाएं",Extension:"एक्सटेंशन",Remote:"रिमोट","Encrypted Key":"एन्क्रिप्टेड की","Private Key":"प्राइवेट की","Welcome to RogueJumble":"RogueJumble में आपका स्वागत है","RogueJumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"RogueJumble एक क्लाइंट है जो रिले ब्राउज़ करने पर केंद्रित है। रोचक रिले की खोज करके शुरू करें या अपनी फ़ॉलोइंग फ़ीड देखने के लिए लॉगिन करें।","Explore Relays":"रिले एक्सप्लोर करें","Choose a feed":"एक फीड चुनें","and {{x}} others":"और {{x}} अन्य",selfZapWarning:"RogueJumble आपके द्वारा स्वयं को zap करने पर क्या होता है, इसके लिए जिम्मेदार नहीं है। अपनी जोखिम पर आगे बढ़ें। 😉⚡","Emoji Pack":"इमोजी पैक","Emoji pack added":"इमोजी पैक जोड़ा गया","Add emoji pack failed":"इमोजी पैक जोड़ना विफल रहा","Emoji pack removed":"इमोजी पैक हटाया गया","Remove emoji pack failed":"इमोजी पैक हटाना विफल रहा",Added:"जोड़ा गया","Emoji Packs":"इमोजी पैक","My Packs":"मेरे पैक","Adding...":"जोड़ा जा रहा है...","Removing...":"हटाया जा रहा है...",Reload:"रीलोड करें","Request to Join Relay":"रिले में शामिल होने का अनुरोध करें","Leave Relay":"रिले छोड़ें",Leave:"छोड़ें","Are you sure you want to leave this relay?":"क्या आप वाकई इस रिले को छोड़ना चाहते हैं?","Join request sent successfully":"शामिल होने का अनुरोध सफलतापूर्वक भेजा गया","Failed to send join request":"शामिल होने का अनुरोध भेजने में विफल","Leave request sent successfully":"छोड़ने का अनुरोध सफलतापूर्वक भेजा गया","Failed to send leave request":"छोड़ने का अनुरोध भेजने में विफल","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"यदि आपके पास निमंत्रण कोड है तो दर्ज करें। अन्यथा, अनुरोध भेजने के लिए इसे खाली छोड़ दें।","Invite Code (Optional)":"निमंत्रण कोड (वैकल्पिक)","Enter invite code":"निमंत्रण कोड दर्ज करें","Sending...":"भेजा जा रहा है...","Send Request":"अनुरोध भेजें","You can get an invite code from a relay member.":"आप एक रिले सदस्य से निमंत्रण कोड प्राप्त कर सकते हैं।","Enter the invite code you received from a relay member.":"रिले सदस्य से प्राप्त निमंत्रण कोड दर्ज करें।","Get Invite Code":"निमंत्रण कोड प्राप्त करें","Share this invite code with others to invite them to join this relay.":"इस रिले में शामिल होने के लिए दूसरों को आमंत्रित करने के लिए इस निमंत्रण कोड को साझा करें।","Invite Code":"निमंत्रण कोड",Copy:"कॉपी करें","This invite code can be used by others to join the relay.":"यह निमंत्रण कोड दूसरों द्वारा रिले में शामिल होने के लिए उपयोग किया जा सकता है।","No invite code available from this relay.":"इस रिले से कोई निमंत्रण कोड उपलब्ध नहीं है।",Close:"बंद करें","Failed to get invite code from relay":"रिले से निमंत्रण कोड प्राप्त करने में विफल","Failed to get invite code":"निमंत्रण कोड प्राप्त करने में विफल","Invite code copied to clipboard":"निमंत्रण कोड क्लिपबोर्ड पर कॉपी किया गया","Favicon URL":"फ़ेविकॉन URL","Filter out onion relays":"ओनियन रिले फ़िल्टर करें","Click to load X post":"X पोस्ट लोड करने के लिए क्लिक करें","View Nostr comments":"Nostr टिप्पणियाँ देखें","Search for notes":"नोट्स खोजें","Search for hashtag":"हैशटैग खोजें","Go to note":"नोट पर जाएं","Go to relay":"रिले पर जाएं","View discussions about this":"इस सामग्री के बारे में चर्चाएँ देखें","Open link":"लिंक खोलें","View Nostr discussions":"Nostr चर्चाएँ देखें","Optimal relays":"इष्टतम रिले","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"इष्टतम रिले पर सफलतापूर्वक पुनः प्रकाशित (आपके लेखन रिले और उल्लिखित उपयोगकर्ताओं के पठन रिले)","Failed to republish to optimal relays: {{error}}":"इष्टतम रिले पर पुनः प्रकाशित करने में विफल: {{error}}","External Content":"बाहरी सामग्री",Highlight:"हाइलाइट","Optimal relays and {{count}} other relays":"इष्टतम रिले और {{count}} अन्य रिले","Low trust ranking ({{percentile}}%)":"कम विश्वास रैंकिंग ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"संदिग्ध खाता (विश्वास स्कोर: {{percentile}}%)","n users":"{{count}} उपयोगकर्ता","View Details":"विवरण देखें","Follow Pack Not Found":"फॉलो पैक नहीं मिला","Follow pack not found":"फॉलो पैक नहीं मिला",Users:"उपयोगकर्ता",Feed:"फ़ीड","Follow Pack":"फॉलो पैक","24h Pulse":"24h पल्स","Load earlier":"पहले लोड करें","Last 24 hours":"पिछले 24 घंटे","Last {{count}} days":"पिछले {{count}} दिन",notes:"नोट्स","Quick reaction":"त्वरित प्रतिक्रिया","If enabled, you can react with a single click. Click and hold for more options":"यदि सक्षम है, तो आप एक क्लिक से प्रतिक्रिया दे सकते हैं। अधिक विकल्पों के लिए क्लिक करें और रोकें","Quick reaction emoji":"त्वरित प्रतिक्रिया इमोजी","Select emoji":"इमोजी चुनें","NSFW content display":"NSFW content display","Hide completely":"Hide completely","Show but hide content":"Show but hide content","Show directly":"Show directly","Click to view":"Click to view","Special Follow":"विशेष फ़ॉलो","Unfollow Special":"विशेष अनफ़ॉलो","Personal Feeds":"व्यक्तिगत फ़ीड","Relay Feeds":"रिले फ़ीड","Create Highlight":"हाइलाइट बनाएं","Write your thoughts about this highlight...":"इस हाइलाइट के बारे में अपने विचार लिखें...","Publish Highlight":"हाइलाइट प्रकाशित करें","Show replies":"जवाब दिखाएं","Hide replies":"जवाब छुपाएं","Welcome to RogueJumble!":"RogueJumble में आपका स्वागत है!","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"आपका फ़ीड खाली है क्योंकि आप अभी तक किसी को फ़ॉलो नहीं कर रहे हैं। दिलचस्प सामग्री का अन्वेषण करके और अपनी पसंद के उपयोगकर्ताओं को फ़ॉलो करके शुरू करें!","Search Users":"उपयोगकर्ता खोजें","Create New Account":"नया खाता बनाएं",Important:"महत्वपूर्ण","Generate Your Account":"अपना खाता बनाएं","Your private key IS your account. Keep it safe!":"आपकी निजी कुंजी ही आपका खाता है। इसे सुरक्षित रखें!","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"Nostr में, आपकी निजी कुंजी ही आपका खाता है। यदि आप अपनी निजी कुंजी खो देते हैं, तो आप अपना खाता हमेशा के लिए खो देते हैं।","Your Private Key":"आपकी निजी कुंजी","Generate new key":"नई कुंजी बनाएं","Download Backup File":"बैकअप फ़ाइल डाउनलोड करें","Copied to Clipboard":"क्लिपबोर्ड पर कॉपी किया गया","Copy to Clipboard":"क्लिपबोर्ड पर कॉपी करें","I already saved my private key securely.":"मैंने पहले ही अपनी निजी कुंजी को सुरक्षित रूप से सहेज लिया है।","Almost Done!":"लगभग हो गया!","Set a password to encrypt your key, or skip to finish":"अपनी कुंजी को एन्क्रिप्ट करने के लिए पासवर्ड सेट करें, या समाप्त करने के लिए छोड़ें","Password Protection (Optional)":"पासवर्ड सुरक्षा (वैकल्पिक)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"पासवर्ड सेट करने से इस ब्राउज़र में आपकी निजी कुंजी एन्क्रिप्ट हो जाती है। आप इस चरण को छोड़ सकते हैं, लेकिन हम अतिरिक्त सुरक्षा के लिए एक सेट करने की सलाह देते हैं।","Password (Optional)":"पासवर्ड (वैकल्पिक)","Enter password or leave empty to skip":"पासवर्ड दर्ज करें या छोड़ने के लिए खाली छोड़ें","Confirm Password":"पासवर्ड की पुष्टि करें","Re-enter password":"पासवर्ड फिर से दर्ज करें","Passwords do not match":"पासवर्ड मेल नहीं खाते","Finish Signup":"साइनअप समाप्त करें","Create Your Nostr Account":"अपना Nostr खाता बनाएं","Generate your unique private key. This is your digital identity.":"अपनी अद्वितीय निजी कुंजी उत्पन्न करें। यह आपकी डिजिटल पहचान है।","Critical: Save Your Private Key":"महत्वपूर्ण: अपनी निजी कुंजी सहेजें","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"आपकी निजी कुंजी आपका खाता है। कोई पासवर्ड पुनर्प्राप्ति नहीं है। यदि आप इसे खो देते हैं, तो आप हमेशा के लिए अपना खाता खो देंगे। कृपया इसे सुरक्षित स्थान पर सहेजें।","I have safely backed up my private key":"मैंने अपनी निजी कुंजी को सुरक्षित रूप से बैकअप कर लिया है","Secure Your Account":"अपने खाते को सुरक्षित करें","Add an extra layer of protection with a password":"पासवर्ड के साथ सुरक्षा की एक अतिरिक्त परत जोड़ें","Password Protection (Recommended)":"पासवर्ड सुरक्षा (अनुशंसित)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"इस ब्राउज़र में अपनी निजी कुंजी को एन्क्रिप्ट करने के लिए पासवर्ड जोड़ें। यह वैकल्पिक है लेकिन बेहतर सुरक्षा के लिए दृढ़ता से अनुशंसित है।","Create a password (or skip)":"एक पासवर्ड बनाएं (या छोड़ें)","Enter your password again":"अपना पासवर्ड फिर से दर्ज करें","Complete Signup":"साइनअप पूर्ण करें",Recommended:"अनुशंसित","Enter Password":"पासवर्ड दर्ज करें",Password:"पासवर्ड",Confirm:"पुष्टि करें","trust-filter.title":"विश्वास स्कोर फ़िल्टर","trust-filter.off":"बंद","trust-filter.low":"कम","trust-filter.medium":"मध्यम","trust-filter.high":"उच्च","trust-filter.wot":"WoT","trust-filter.filter-threshold":"फ़िल्टर सीमा","trust-filter.quick-presets":"त्वरित प्रीसेट","trust-filter.show-all-content":"सभी सामग्री दिखाएं","trust-filter.only-show-wot":"केवल अपना विश्वास नेटवर्क दिखाएं (फ़ॉलो + उनके फ़ॉलो)","trust-filter.hide-bottom-percent":"विश्वास रैंक द्वारा निचले {{score}}% उपयोगकर्ताओं को फ़िल्टर करें","trust-filter.trust-score-description":"उपयोगकर्ता की प्रतिष्ठा और सामाजिक नेटवर्क प्रतिशतक के आधार पर गणना की गई","Auto-load profile pictures":"प्रोफ़ाइल चित्र स्वतः लोड करें","Disable live feed":"लाइव फ़ीड अक्षम करें","Enable live feed":"लाइव फ़ीड सक्षम करें","Default relays":"डिफ़ॉल्ट रिले","Reset to default":"डिफ़ॉल्ट पर रीसेट करें","Default relays description":"अन्य उपयोगकर्ताओं के रिले कॉन्फ़िगरेशन की जांच करने के लिए उपयोग किया जाता है और जब उपयोगकर्ताओं के पास रिले कॉन्फ़िगर नहीं है तो फ़ॉलबैक के रूप में।","Default relays warning":"चेतावनी: कृपया इन सेटिंग्स को बेतरतीब ढंग से संशोधित न करें, क्योंकि यह आपके बुनियादी अनुभव को प्रभावित कर सकता है।","Invalid relay URL":"अमान्य रिले URL","Muted words":"म्यूट किए गए शब्द","Add muted word":"म्यूट शब्द जोड़ें","Zap Details":"जैप विवरण","Default trust score filter threshold ({{n}}%)":"डिफ़ॉल्ट विश्वास स्कोर फ़िल्टर सीमा ({{n}}%)","No notes found":"कोई नोट्स नहीं मिले","Try again later or check your connection":"बाद में पुनः प्रयास करें या अपना कनेक्शन जाँचें","Hide indirect":"अप्रत्यक्ष छुपाएं","Copy note content":"नोट सामग्री कॉपी करें","Video loop":"वीडियो लूप","Automatically replay videos when they end":"वीडियो समाप्त होने पर स्वचालित रूप से दोबारा चलाएं","Relays used for searching notes (NIP-50)":"नोट्स खोजने के लिए उपयोग किए जाने वाले रिले (NIP-50)","Protected event (NIP-70)":"संरक्षित इवेंट (NIP-70)",Protected:"संरक्षित","Protected event hint":"संरक्षित इवेंट (NIP-70) केवल लेखक द्वारा प्रकाशित किए जा सकते हैं। रिले तीसरे पक्ष से इन इवेंट को अस्वीकार कर देंगे, जिससे दूसरों को आपकी सामग्री को पुनः प्रसारित करने से रोका जा सके। नोट: सभी रिले संरक्षित इवेंट का समर्थन नहीं करते।","Allow insecure connections":"असुरक्षित कनेक्शन की अनुमति दें","Allow insecure connections description":"http:// संसाधन लोड करने और ws:// रिले से कनेक्ट करने की अनुमति दें। ब्राउज़र मिश्रित सामग्री चेतावनियाँ ट्रिगर हो सकती हैं।","reacted to":"पर प्रतिक्रिया दी",Reaction:"प्रतिक्रिया","Show others this was sent via Jumble":"दूसरों को दिखाएं कि यह RogueJumble के माध्यम से भेजा गया था","Enjoying Jumble?":"RogueJumble का आनंद ले रहे हैं?","Your donation helps me maintain Jumble and make it better! 😊":"आपका दान मुझे RogueJumble को बनाए रखने और बेहतर बनाने में मदद करता है! 😊","Welcome to Jumble":"RogueJumble में आपका स्वागत है","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","n users_one":"{{count}} उपयोगकर्ता","n users_other":"{{count}} उपयोगकर्ता","Welcome to Jumble!":"RogueJumble में आपका स्वागत है!","Font size":"फ़ॉन्ट आकार","Advanced mode":"उन्नत मोड","Post type selector":"पोस्ट प्रकार चयनकर्ता","Shows post kind dropdown when creating posts":"पोस्ट बनाते समय पोस्ट प्रकार ड्रॉपडाउन दिखाता है","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"समुदाय खोजें...","No communities found":"कोई समुदाय नहीं मिला","No communities yet":"अभी तक कोई समुदाय नहीं"}},s3={translation:{"Welcome! 🥳":"Üdvözlünk a RogueJumble-ban! 🥳",About:"Rólunk","New Note":"Új Poszt",Post:"Új Poszt",Home:"Főoldal","Relay settings":"Csomópont beállítások",Settings:"Beállítások",SidebarRelays:"Csomópontok",Refresh:"Frissítés",Profile:"Profil",Logout:"Kilépés",Following:"Követések",followings:"követések",reposted:"újraposztolta","just now":"épp most","minute ago_one":"{{count}} perce","minute ago_other":"{{count}} perce","n m":"{{n}}p","hour ago_one":"{{count}} órája","hour ago_other":"{{count}} órája","n h":"{{n}}ó","day ago_one":"{{count}} napja","day ago_other":"{{count}} napja","n d":"{{n}}n",date:"{{timestamp, date}}",Follow:"Követés",Unfollow:"Követés leállítása","Follow failed":"Követés nem sikerült","Unfollow failed":"Követés leállítása nem sikerült","show new notes":"új posztok mutatása","loading...":"betöltés...","Loading...":"Betöltés...","no more notes":"nincs több poszt","reply to":"válasz",reply:"válasz",Reply:"Válasz","load more older replies":"régebbi posztok betöltése","Write something...":"Írj valamit...",Cancel:"Mégsem",Mentions:"Említések","Failed to post":"Nem sikerült posztolni","Post successful":"Sikeres posztolás","Your post has been published":"Poszt elküldve",Repost:"Újraposztolás",Quote:"Idézet","Copy event ID":"Esemény ID másolása","Copy user ID":"Profil ID másolása","View raw event":"Esemény forrása",Like:"Reakciók","switch to light theme":"világos téma","switch to dark theme":"sötét témá","switch to system theme":"alapértelmezett téma",Note:"Poszt",note:"poszt","username's following":"{{username}} követi","username's used relays":"{{username}} csomópontjai","username's muted":"{{username}} némításai",Login:"Belépés","Follows you":"Követ téged","Relay Settings":"Csomópont Beállítások","Relay set name":"Csomópont lista neve","Add a new relay set":"Új csomópont lista",Add:"Hozzáadás","n relays":"{{n}} csomópont",Rename:"Átnevezés","Copy share link":"Megosztás",Delete:"Törlés","Relay already exists":"Csomópont már létezik","invalid relay URL":"csomópont URL nem megfelelő","Add a new relay":"Új csomópont hozzáadása",back:"vissza","Lost in the void":"Eltűnt a semmiben","Carry me home":"Vigyél haza","no replies":"nincs válasz","Reply to":"Válaszolás",Search:"Keresés","The relays you are connected to do not support search":"Egyik csomópontod sem támogatja a keresést","Show more...":"Továbbiak...","All users":"Összes felhasználó","Display replies":"Válaszok mutatása",Notes:"Posztok",Replies:"Válaszok",Notifications:"Értesítések","no more notifications":"nincs több értesítés","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"A belépés titkos kulccsal nem olyan biztonságos. Használj egy böngésző bővítményt mint az Alby, nos2x vagy nostr-keyx belépéshez. Ha mégis a titkos kulcsot használnád, állíts be jelszót hozzá.","Login with Browser Extension":"Belépés Böngésző Bővítménnyel","Login with Bunker":"Belépés Bunkerrel","Login with Private Key":"Belépés titkos kulccsal","reload notes":"posztok frissítése","Logged in Accounts":"Belépett Profilok","Add an Account":"Profil hozzáadása","More options":"További lehetőségek","Add client tag":"Kliens jelölése","Show others this was sent via RogueJumble":"Mutasd meg másoknak, hogy RogueJumble-lel küldted","Are you sure you want to logout?":"Biztosan ki akarsz lépni?","relay sets":"csomópont listák",edit:"szerkesztés",Languages:"Nyelvek",Theme:"Téma",System:"System",Light:"Világos",Dark:"Sötét",Temporary:"Ideiglenes","Choose a relay set":"Válassz egy csomópont listát","Switch account":"Profil váltás",Pictures:"Képek","Picture note":"Kép megjegyzés","A special note for picture-first clients like Olas":"Külön megjegyzés képes klienseknek, mint az Olas","Picture note requires images":"Kép megjegyzéshez képre van szükség",Relays:"Csomópontok",Image:"Kép","R & W":"Írt & Olvasott",Read:"Olvasott",Write:"Írt","Pull relay sets":"Csomópont listák letöltése","Select the relay sets you want to pull":"Válaszd ki a csomópont listákat, amiket letöltenél","No relay sets found":"Csomópont lista nem található","Pull n relay sets":"{{n}} csomópont lista letöltése",Pull:"Letöltés","Select all":"Mind kiválasztása","Relay Sets":"Csomópont Listák","Read & Write Relays":"Írt & Olvasott Csomópontok","read relays description":"Az olvasott csomópontjaidról töltjük le azokat az eseményeket, melyek rólad szólnak. Mások ide küldik azokat az eseményeket, amiket neked akarnak eljuttatni.","write relays description":"Az írt csomópontokra küldöd a saját eseményeidet. Mások itt fogják keresni az általad publikált eseményeket.","read & write relays notice":"Az írt és az olvasott csomópontok száma általában 2 és 4 között ideális.","Don't have an account yet?":"Nincs még profilod?","or simply generate a private key":"vagy generálj egy titkos kulcsot","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"Ez egy titkos kulcs. Ne mutasd meg senkinek. Tartsd biztonságos helyen. Ha elveszíted, nem fogsz tudhi hozzáférni a profilodhoz.",Edit:"Szerkesztés",Save:"Mentés","Display Name":"Név",Bio:"Bio","Nostr Address (NIP-05)":"Nostr Cím (NIP-05)","Invalid NIP-05 address":"Hibás NIP-05 cím","Copy private key":"Titkos kulcs másolása","Enter the password to decrypt your ncryptsec":"Írd be a jelszót a titkos kulcsodhoz (ncryptsec)",Back:"Vissza","optional: encrypt nsec":"opcionális: titkos kulcs védelme jelszóval",password:"jelszó","Sign up":"Feliratkozás","Save to":"Küldés erre","Enter a name for the new relay set":"Nevezd el új csomópont listát","Save to a new relay set":"Mentés egy új csomópont listába",Mute:"Némítás",Muted:"Némítások",Unmute:"Némítás feloldása","Unmute user":"Felhasználó némításának feloldása","Append n relays":"{{n}} csomópont hozzáadása",Append:"Hozzáadás","Select relays to append":"Válassz ki csomópontokat amiket hozzáadnál","calculating...":"számítás...","Calculate optimal read relays":"Olvasott csomópontok optimalizálása","Login to set":"Lépj be, hogy beállítsd","Please login to view following feed":"Lépj be a feed megtekintéséhez","Send only to r":"Küldés csak a {{r}} csomópontra","Send only to these relays":"Küldés csak ezekre a csomópontokra",Explore:"Felderítés","Search relays":"Keresési csomópontok",relayInfoBadgeAuth:"Auth",relayInfoBadgeSearch:"Keresés",relayInfoBadgePayment:"Fizetés",Operator:"Üzemeltető",Contact:"Kapcsolat",Software:"Szoftver",Version:"Verzió","Random Relays":"Random csomópontok",randomRelaysRefresh:"Frissítés","Explore more":"Továbbiak felderítése","Payment page":"Fizetés oldal","Supported NIPs":"Támogatott NIP-ek","Open in a":"Megnyitás itt: {{a}}","Cannot handle event of kind k":"Nem támogatott ez a fajta esemény: {{k}}","Encrypted direct messages not supported":"A titkosított közvetlen üzenetek nem támogatottak","Sorry! The note cannot be found 😔":"Ejj! A poszt nem található 😔","This user has been muted":"Ez a felhasználó némítva van",Wallet:"Tárca",Sats:"Sat",sats:"sat","Zap to":"Zappolás","Zap n sats":"Zap {{n}} sat",zapComment:"Megjegyzés","Default zap amount":"Alapértelmezett zap összeg","Default zap comment":"Alapértelmezett zap megjegyzés","Lightning Address (or LNURL)":"Lightning Cím (vagy LNURL)","Quick zap":"Gyors zap","If enabled, you can zap with a single click. Click and hold for custom amounts":"Ha be van kapcsolva, egy klikkeléssel lehet zappolni. Tartsd az egérgombot hosszan lenyomva, hogy az összeget beállítsd.",All:"Minden",Reactions:"Reakciók",Zaps:"Zap-ok","Enjoying RogueJumble?":"Tetszik a RogueJumble?","Your donation helps me maintain RogueJumble and make it better! 😊":"Az adományok segítenek a Jumble fenntartásában és továbbfejlesztésében! 😊","Earlier notifications":"Korábbi értesítések","Temporarily display this note":"Poszt ideiglenes megmutatása",buttonFollowing:"Követed","Are you sure you want to unfollow this user?":"Biztos, hogy leállítod a követést?","Recent Supporters":"Legutóbbi Támogatók","Seen on":"Csomópontok","Temporarily display this reply":"Válasz ideiglenes megmutatása","Note not found":"Poszt nem található","no more replies":"nincs több válasz","Relay sets":"Csomópont listák","Favorite Relays":"Kedvenc Csomópontok","Following's Favorites":"Követettek kedvencei","no more relays":"nincs több csomópont","Favorited by":"Kedvencnek beállították","Post settings":"Poszt beállítások","Media upload service":"Média szerverek","Choose a relay":"Csomópont kiválasztása","no relays found":"nem találtunk csomópontot",video:"videó","Show n new notes":"{{n}} új poszt",YouTabName:"Te",Bookmark:"Könyvjelző","Remove bookmark":"Könyvjelző törlése","no bookmarks found":"nincsenek könyvjelzők","no more bookmarks":"nincs több könyvjelző",Bookmarks:"Könyvjelzők","Show more":"Továbbiak",General:"Általános",Autoplay:"Automatikus lejátszás","Enable video autoplay on this device":"Videók automatikus lejátszása ezen az eszközön","Paste or drop media files to upload":"Média fileok beillesztése vagy drag and drop",Preview:"Előnézet","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"Publikálni készülsz egy eseményt, amit [{{eventAuthorName}}] írt alá. Jelenleg [{{currentUsername}}] profillal vagy belépve. Biztosan publikálod?","Platinum Sponsors":"Platina Szponzorok",From:"Tőle","Comment on":"Megjegyzés erre","View on njump.me":"Megtekintés az njump.me-n","Hide content from untrusted users":"Nem megbízható felhasználók tartalmának elrejtése","Only show content from your followed users and the users they follow":"Csak a követett felhasználók és az általuk követettek tartalmának mutatása","Followed by":"Követők","Mute user privately":"Felhasználó némítása (privát)","Mute user publicly":"Felhasználó némítása (nyilvános)",Quotes:"Idézetek","Lightning Invoice":"Lightning Számla","Bookmark failed":"Nem sikerült hozzáadni a könyvjelzőt","Remove bookmark failed":"Nem sikerült törölni a könyvjelzőt",Translation:"Fordítás",Balance:"Egyenleg",characters:"karakter",jumbleTranslateApiKeyDescription:"You can use this API key anywhere else that supports LibreTranslate. The service URL is {{serviceUrl}}","Top up":"Feltöltés","Will receive: {n} characters":"{{n}} karakter fogadása","Top up {n} sats":"Feltöltés {{n}} sattal","Minimum top up is {n} sats":"Minimum összeg {{n}} sat",Service:"Szolgáltatás","Reset API key":"API kulcs visszaállítása","Are you sure you want to reset your API key? This action cannot be undone.":"Biztos, hogy visszaállítod az API kulcsot? Ez a művelet nem visszavonható.",Warning:"Vigyázat","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"A jelenlegi API kulcs érvénytelenné válik, és az alkalmazások nem fognak működni, amíg az új API kulcsot beállítod.","Service address":"Szolgáltatás címe",Pay:"Fizetés",interactions:"interakciók",notifications:"értesítések","Show untrusted {type}":"{{type}} típus mutatása","Hide untrusted {type}":"{{type}} típus elrejtése","Currently hiding {type} from untrusted users.":"nem megbízható felhasználóktól {{type}} elrejtve.","Currently showing all {type}.":"Összes {{type}} látszik.","Click continue to show all {type}.":"Kattints az összes {{type}} mutatásához.","Click continue to hide {type} from untrusted users.":"Kattints a folytatás gombra, hogy {{type}} elrejtsük a megbízhatatlan profiloktól.","Trusted users include people you follow and people they follow.":"A megbízható profilok közé a követett és az általuk követett profilok tartoznak.",Continue:"Folytatás","Successfully updated mute list":"Némítások sikeresen frissítve","No pubkeys found from {url}":"Nem találtunk pubkeyt itt: {{url}}","Translating...":"Fordítás...",Translate:"Fordítás","Show original":"Eredeti mutatása",Website:"Weboldal","Hide untrusted notes":"Nem megbízható posztok elrejtése","Open in another client":"Megnyitás másik kliensben",Community:"Közösség",Group:"Csoport","Live event":"Élő esemény",Article:"Cikk",Unfavorite:"Törlés a kedvencek közül","Recommended relays":"Ajánlott csomópontok","Blossom server URLs":"Blossom szerver URL-ek","You need to add at least one blossom server in order to upload media files.":"Legalább egy blossom szerverre szükséged van, hogy feltölthess fileokat.","Recommended blossom servers":"Ajánlott blossom szerverek","Enter Blossom server URL":"Blossom szerver URL megadása",Preferred:"Preferált","Multiple choice (select one or more)":"Több is megjelölhető",Vote:"Szavazás","{{number}} votes":"{{number}} szavazat","Total votes":"Összes szavazat","Poll has ended":"Szavazás véget ért","Poll ends at {{time}}":"Szavazás vége: {{time}}","Load results":"Eredmény betöltése","This is a poll note.":"Ez egy szavazás.","Unlike regular notes, polls are not widely supported and may not display on other clients.":"A sima posztokkal ellentétben a szavazásokat nem minden kliens támogatja.","Option {{number}}":"Opció {{number}}","Add Option":"Opció hozzáadás","Allow multiple choices":"Több is megjelölhető","End Date (optional)":"Szavazás Vége (opcionális)","Clear end date":"Vége Időpont törlése","Relay URLs (optional, comma-separated)":"Csomópont URL-ek (opcionális, vesszővel elválasztva)","Remove poll":"Szavazás törlése","Refresh results":"Eredmények frissítése",Poll:"Szavazás",Media:"Média","Republish to ...":"Továbbküldés ide:","Successfully republish to your write relays":"Sikeresen elküldve az írt csomópontokra","Failed to republish to your write relays: {{error}}":"Nem sikerült publikálni az írt relay-ekre: {{error}}","Successfully republish to relay set: {{name}}":"Sikeresen elküldve erre a relay listára: {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"Nem sikerült elküldeni a relay listára: {{name}}. Hiba: {{error}}","Successfully republish to relay: {{url}}":"Sikeresen elküldve a csomópontra: {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"Nem sikerült elküldeni a relay-re: {{url}}. Hiba: {{error}}","Write relays":"Írt csomópontok","No more reactions":"Nincs több reakció","No reactions yet":"Nincs még reakció","No more zaps":"Nincs több zap","No zaps yet":"Nincs még zap","No more reposts":"Nincs több újraposztolás","No reposts yet":"Nincs még újraposztolás",Reposts:"Újraposztolások",FollowListNotFoundConfirmation:"Nincs még követési listád, vagy legalábbis nem találjuk. Szeretnél új követési listát létrehozni? Ha ez az első követésed ezzel a profillal, klikkelj az okéra, de ha már követtél más felhasználókat, akkor NE EGYEZZ BELE, mert elveszítheted a követéseidet, és macerás visszaállítani.",MuteListNotFoundConfirmation:"Nem találtunk némítási listát. Létre szeretnél hozni egy új listát? Ha ez az első némításod, nyogodtan nyomj rá az okéra, de ha úgy tudod, hogy vannak már némított profiljaid, akkor NE EGYEZZ BELE, mert elveszhet a meglévő némítási lista, és macerás visszaállítani.","Show NSFW content by default":"Kétes (NSFW) tartalmak mutatása","Custom emoji management":"Egyedi emojik kezelése","After changing emojis, you may need to refresh the page":"Miután szerkesztetted az emojikat, frissítsd az oldalt","Too many read relays":"Túl sok olvasott csomópont","Too many write relays":"Túl sok írt csomópont","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"{{count}} írt csomópontod van. Legtöbb kliens csak 2-4-et használ, szükségtelen többet beállítani.","Optimize Relay Settings":"Csomópont Beállítások Optimalizálása","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"A csomópont beállításaid nem optimálisak. Ez megnehezítheti, hogy mások olvassák a posztjaidat és az értesítéseid is hiányosak lehetnek.","Optimize Now":"Optimizálás Most","Maybe Later":"Talán Később","Don't remind me again":"Nem kérek emlékeztetőt",Posts:"Posztok",Articles:"Cikkek",Highlights:"Kiemelések",Polls:"Szavazások","Voice Posts":"Audio Posztok","Photo Posts":"Képes Posztok","Video Posts":"Videó Posztok","Select All":"Mind Kijelölése","Clear All":"Mind Törlése","Set as default filter":"Beállítás alapértelmezett szűrőnek",Apply:"Alkalmaz",Reset:"Visszaállít","Share something on this Relay":"Posztolás erre a csomópontra","Try deleting this note":"Poszt törlés megpróbálása","Deletion request sent to {{count}} relays":"Törlés elküldve {{count}} csomópontnak","Suitable Relays":"Megfelelő Csomópontok","People, keywords, or relays":"Emberek, kulcsszavak vagy csomópontok","Hide content mentioning muted users":"Poszt elrejtése, ha némított felhasználót említ","This note mentions a user you muted":"Ez a poszt egy általad némított felhasználót említ",Filter:"Szűrő","mentioned you in a note":"megemlített téged egy posztban","quoted your note":"idézte egy posztodat","voted in your poll":"szavazott a szavazásodban","reacted to your note":"reagált a posztodra","reposted your note":"újraposztolta a posztodat","zapped your note":"zappolta a posztodat","highlighted your note":"kiemelte a posztodat","zapped you":"zappolt téged","Mark as read":"Megjelölés olvasottként",Report:"Jelentés","Successfully report":"Sikeresen jelentve","Failed to report":"Nem sikerült jelenteni",nudity:"Meztelenkedés",malware:"Malware",profanity:"Profán tartalom",illegal:"Illegális tartalom",spam:"Spam",other:"Más","Notification list style":"Értesítések lista stílusa","See extra info for each notification":"Extra info kijelzése értesítésekhez","See more notifications at a glance":"Több értesítést akarok egyszerre látni",Detailed:"Részletes",Compact:"Tömör","Submit Relay":"Csomópont Beküldése",Homepage:"Honlap","Proof of Work (difficulty {{minPow}})":"Proof of Work (nehézség {{minPow}})","Proof of Work":"Proof of Work","Posts & comments difficulty":"Bejegyzések és hozzászólások nehézsége","Reactions difficulty":"Reakciók nehézsége","Image Mode":"Kép mód","Media Feed":"Média hírfolyam","Text Only":"Szöveg hírfolyam","Text Post":"Szöveges bejegyzés","Picture Post":"Képes bejegyzés","Video Post":"Videó bejegyzés","Short Video Post":"Rövid videó",Text:"Szöveg",Picture:"Kép",Video:"Videó","Short Video":"Rövid videó","Post Type":"Bejegyzés típusa","via {{client}}":"via {{client}}","Auto-load media":"média automatikus betöltése",Always:"Mindig","Wi-Fi only":"Csak Wi-Fi-ről",Never:"Soha","Click to load image":"Klikkelj a kép betöltéséhez","Click to load media":"Klikkelj a média betöltéséhez","Click to load YouTube video":"Klikkelj a YouTube videó betöltéséhez","{{count}} reviews":"{{count}} vélemény","Write a review":"Vélemény írása","No reviews yet. Be the first to write one!":"Senki nem írt véleményt. Légy te az első!","View more reviews":"Több vélemény megtekintése","Failed to review":"Nem sikerült elküldeni a véleményt","Write a review and pick a star rating":"Írj egy véleményt és döntsd el hány csillagot adsz",Submit:"Küldés","Reviews for {{relay}}":"{{relay}} vélemények","No relays selected":"Nem választottál csomópontot","Post to":"Posztolás ide:","Write relays and {{count}} other relays":"írt csomópontok és {{count}} további csomópont","{{count}} relays":"{{count}} csomópont","Republishing...":"Továbbküldés...","Trending Notes":"Népszerű Posztok","Connected to":"Csatlakozva","Disconnect Wallet":"Tárca eltávolítása","Are you absolutely sure?":"Teljesen biztos vagy benne?","You will not be able to send zaps to others.":"Nem fogsz tudni másoknak zap-ot küldeni.",Disconnect:"Disconnect","Start with a Rizful Vault":"Rizful Vault beállítás","or other wallets":"vagy más tárca","Rizful Vault":"Rizful Vault","Rizful Vault connected!":"Rizful Vault csatlakoztatva!","You can now use your Rizful Vault to zap your favorite notes and creators.":"Most már zappolhatsz posztokat a Rizful Vault segítségével.","Your Lightning Address":"Lightning Címed","New to Rizful?":"Új vagy a Rizfulon?","Sign up for Rizful":"Feliratkozás Rizful-ra","If you already have a Rizful account, you can skip this step.":"Ha van már Rizful elérésed, ezt a lépést kihagyhatod.","Get your one-time code":"Egyszeri kód kérés","Get code":"Kód kérés","Connect to your Rizful Vault":"Csatlakoztasd a Rizful Vault-odat","Paste your one-time code here":"Másold ide az egyszeri kódot",Connect:"Csatlakoztatás","Set up your wallet to send and receive sats!":"Állítsd be a tárcát, hogy küldhess és fogadhass satokat!","Set up":"Beállítás",Pinned:"Kitűzve",Unpin:"Kitűzés eltávolítása",Unpinning:"Kitűzés eltávolítása","Pinning...":"Kitűzés...","Pinned!":"Kitűzve!","Failed to pin: {{error}}":"Nem sikerült kitűzni: {{error}}","Unpinning...":"Kitűzés eltávolítása...","Unpinned!":"Kitűzés eltávolítva!","Failed to unpin: {{error}}":"Nem sikerült eltávolítani a kitűzést: {{error}}","Unpin from profile":"Kitűzés eltávolítása a profilból","Pin to profile":"Kitűzés a profilra",Appearance:"Megjelenés","Pure Black":"Egyszerű Fekete",Default:"Alapértelmezett",Red:"Piros",Orange:"Narancs",Amber:"Sárgás",Yellow:"Ságra",Lime:"Lime",Green:"Zöld",Emerald:"Emerald",Teal:"Teal",Cyan:"Cyan",Sky:"Ég",Blue:"Kék",Indigo:"Indigo",Violet:"Ibolya",Purple:"Lila",Fuchsia:"Fuchsia",Pink:"Rózsaszín",Rose:"Vörös","Primary color":"Elsődleges szín",Layout:"Elrendezés","Two-column":"Két oszlop","Single-column":"Egy oszlop",Reviews:"Vélemény",Extension:"Bővítmény",Remote:"Távoli","Encrypted Key":"Jelszóval védett titkos Kulcs","Private Key":"Titkos Kulcs","Welcome to RogueJumble":"Üdvözlünk a RogueJumble-ban","RogueJumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"RogueJumble egy kliens, amivel könnyen böngészhetsz csomópontokat. Kezdd az érdekes csomópontok felderítésével, vagy lépj be, hogy a követettek posztjait megnézd.","Explore Relays":"Csomópontok felderítése","Choose a feed":"Válassz hírfolyamot","and {{x}} others":"és {{x}} másik","Emoji Pack":"Emoji csomag","Emoji pack added":"Emoji csomag hozzáadva","Add emoji pack failed":"Emoji csomag hozzáadása sikertelen","Emoji pack removed":"Emoji csomag eltávolítva","Remove emoji pack failed":"Emoji csomag eltávolítása sikertelen",Added:"Hozzáadva","Emoji Packs":"Emoji csomagok","My Packs":"Saját csomagjaim","Adding...":"Hozzáadás...","Removing...":"Eltávolítás...",Reload:"Újratöltés","Request to Join Relay":"Csatlakozási kérelem küldése a relay-hez","Leave Relay":"Relay elhagyása",Leave:"Kilépés","Are you sure you want to leave this relay?":"Biztosan el szeretné hagyni ezt a relay-t?","Join request sent successfully":"Csatlakozási kérelem sikeresen elküldve","Failed to send join request":"Csatlakozási kérelem küldése sikertelen","Leave request sent successfully":"Kilépési kérelem sikeresen elküldve","Failed to send leave request":"Kilépési kérelem küldése sikertelen","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"Írjon be egy meghívókódot, ha van. Ellenkező esetben hagyja üresen a kérelem elküldéséhez.","Invite Code (Optional)":"Meghívókód (opcionális)","Enter invite code":"Írja be a meghívókódot","Sending...":"Küldés...","Send Request":"Kérelem küldése","You can get an invite code from a relay member.":"Meghívókódot kaphat egy relay tagtól.","Enter the invite code you received from a relay member.":"Írja be a relay tagtól kapott meghívókódot.","Get Invite Code":"Meghívókód Lekérése","Share this invite code with others to invite them to join this relay.":"Ossza meg ezt a meghívókódot másokkal, hogy meghívja őket ehhez a relay-hez.","Invite Code":"Meghívókód",Copy:"Másolás","This invite code can be used by others to join the relay.":"Ezt a meghívókódot mások használhatják a relay-hez való csatlakozáshoz.","No invite code available from this relay.":"Nincs elérhető meghívókód ettől a relay-től.",Close:"Bezárás","Failed to get invite code from relay":"Nem sikerült lekérni a meghívókódot a relay-től","Failed to get invite code":"Nem sikerült lekérni a meghívókódot","Invite code copied to clipboard":"Meghívókód vágólapra másolva","Favicon URL":"Favicon URL","Filter out onion relays":"Onion relay-ek kiszűrése","Click to load X post":"Kattintson az X bejegyzés betöltéséhez","View Nostr comments":"Nostr megjegyzések megtekintése","Search for notes":"Jegyzetek keresése","Search for hashtag":"Hashtag keresése","Go to note":"Ugrás a jegyzethez","Go to relay":"Ugrás a relay-hez","View discussions about this":"Beszélgetések megtekintése erről a tartalomról","Open link":"Link megnyitása","View Nostr discussions":"Nostr beszélgetések megtekintése","Optimal relays":"Optimális relay-ek","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"Sikeresen újra közzétéve az optimális relay-eken (az Ön írási relay-ei és az említett felhasználók olvasási relay-ei)","Failed to republish to optimal relays: {{error}}":"Nem sikerült újra közzétenni az optimális relay-eken: {{error}}","External Content":"Külső tartalom",Highlight:"Kiemelés","Optimal relays and {{count}} other relays":"Optimális relay-ek és {{count}} másik relay","Low trust ranking ({{percentile}}%)":"Alacsony megbízhatósági rangsor ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"Gyanús fiók (Megbízhatósági pontszám: {{percentile}}%)","n users":"{{count}} felhasználó","View Details":"Részletek megtekintése","Follow Pack Not Found":"Követési csomag nem található","Follow pack not found":"Követési csomag nem található",Users:"Felhasználók",Feed:"Hírfolyam","Follow Pack":"Követési Csomag","24h Pulse":"24h Pulse","Load earlier":"Korábbi betöltése","Last 24 hours":"Utolsó 24 óra","Last {{count}} days":"Utolsó {{count}} nap",notes:"jegyzetek","Quick reaction":"Gyors reakció","If enabled, you can react with a single click. Click and hold for more options":"Ha engedélyezve van, egy kattintással reagálhat. Tartsa lenyomva további lehetőségekért","Quick reaction emoji":"Gyors reakció emoji","Select emoji":"Emoji kiválasztása","NSFW content display":"NSFW content display","Hide completely":"Hide completely","Show but hide content":"Show but hide content","Show directly":"Show directly","Click to view":"Click to view","Special Follow":"Különleges Követés","Unfollow Special":"Különleges Követés Megszüntetése","Personal Feeds":"Személyes Feedek","Relay Feeds":"Relay Feedek","Create Highlight":"Kiemelés Létrehozása","Write your thoughts about this highlight...":"Írd le a gondolataidat erről a kiemelésről...","Publish Highlight":"Kiemelés Közzététele","Show replies":"Válaszok megjelenítése","Hide replies":"Válaszok elrejtése","Welcome to RogueJumble!":"Üdvözlünk a RogueJumble-ban!","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"A hírcsatornád üres, mert még nem követsz senkit. Kezdd el érdekes tartalmak felfedezésével és kövesd azokat a felhasználókat, akik tetszenek!","Search Users":"Felhasználók keresése","Create New Account":"Új fiók létrehozása",Important:"Fontos","Generate Your Account":"Fiók létrehozása","Your private key IS your account. Keep it safe!":"A privát kulcsod A fiókodat jelenti. Tartsd biztonságban!","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"A Nostr-ban a privát kulcsod A fiókodat jelenti. Ha elveszíted a privát kulcsodat, örökre elveszíted a fiókodat.","Your Private Key":"Privát kulcsod","Generate new key":"Új kulcs generálása","Download Backup File":"Biztonsági mentés letöltése","Copied to Clipboard":"Vágólapra másolva","Copy to Clipboard":"Másolás vágólapra","I already saved my private key securely.":"Már biztonságosan elmentettem a privát kulcsomat.","Almost Done!":"Majdnem kész!","Set a password to encrypt your key, or skip to finish":"Állíts be jelszót a kulcsod titkosításához, vagy hagyd ki a befejezéshez","Password Protection (Optional)":"Jelszavas védelem (opcionális)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"A jelszó beállítása titkosítja a privát kulcsodat ebben a böngészőben. Kihagyhatod ezt a lépést, de javasoljuk a beállítását a nagyobb biztonság érdekében.","Password (Optional)":"Jelszó (opcionális)","Enter password or leave empty to skip":"Írj be jelszót, vagy hagyd üresen a kihagyáshoz","Confirm Password":"Jelszó megerősítése","Re-enter password":"Jelszó újbóli megadása","Passwords do not match":"A jelszavak nem egyeznek","Finish Signup":"Regisztráció befejezése","Create Your Nostr Account":"Hozd létre Nostr fiókodat","Generate your unique private key. This is your digital identity.":"Generáld le egyedi privát kulcsodat. Ez a digitális identitásod.","Critical: Save Your Private Key":"Kritikus: Mentsd el a privát kulcsodat","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"A privát kulcsod A fiókod. Nincs jelszó-visszaállítás. Ha elveszíted, örökre elveszíted a fiókodat. Kérjük, mentsd el biztonságos helyre.","I have safely backed up my private key":"Biztonságosan elmentettem a privát kulcsomat","Secure Your Account":"Védd meg a fiókodat","Add an extra layer of protection with a password":"Adj hozzá egy extra védelmi réteget jelszóval","Password Protection (Recommended)":"Jelszavas védelem (ajánlott)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"Adj hozzá jelszót a privát kulcsod titkosításához ebben a böngészőben. Ez opcionális, de erősen ajánlott a jobb biztonság érdekében.","Create a password (or skip)":"Hozz létre jelszót (vagy hagyd ki)","Enter your password again":"Add meg újra a jelszavad","Complete Signup":"Regisztráció befejezése",Recommended:"Ajánlott","Enter Password":"Jelszó megadása",Password:"Jelszó",Confirm:"Megerősítés","trust-filter.title":"Bizalmi pontszám szűrő","trust-filter.off":"Ki","trust-filter.low":"Alacsony","trust-filter.medium":"Közepes","trust-filter.high":"Magas","trust-filter.wot":"WoT","trust-filter.filter-threshold":"Szűrési küszöb","trust-filter.quick-presets":"Gyors beállítások","trust-filter.show-all-content":"Minden tartalom megjelenítése","trust-filter.only-show-wot":"Csak a bizalmi hálózatod megjelenítése (követettek + követetteik)","trust-filter.hide-bottom-percent":"Alsó {{score}}% felhasználók szűrése bizalmi rangsor szerint","trust-filter.trust-score-description":"A felhasználó hírneve és a közösségi hálózat percentilise alapján számítva","Auto-load profile pictures":"Profilképek automatikus betöltése","Disable live feed":"Élő hírfolyam letiltása","Enable live feed":"Élő hírfolyam engedélyezése","Default relays":"Alapértelmezett továbbítók","Reset to default":"Visszaállítás alapértelmezettre","Default relays description":"Más felhasználók továbbító konfigurációinak lekérdezésére használatos, és tartalékként szolgál, ha a felhasználóknak nincsenek továbbítóik beállítva.","Default relays warning":"Figyelmeztetés: Ne módosítsa ezeket a beállításokat meggondolatlanul, mert ez befolyásolhatja az alapvető élményt.","Invalid relay URL":"Érvénytelen továbbító URL","Muted words":"Némított szavak","Add muted word":"Némított szó hozzáadása","Zap Details":"Zap Részletek","Default trust score filter threshold ({{n}}%)":"Alapértelmezett bizalmi pontszám szűrő küszöbérték ({{n}}%)","No notes found":"Nem található jegyzet","Try again later or check your connection":"Próbáld újra később vagy ellenőrizd a kapcsolatot","Hide indirect":"Közvetettek elrejtése","Copy note content":"Jegyzet tartalmának másolása","Video loop":"Videó ismétlése","Automatically replay videos when they end":"Videók automatikus újrajátszása, amikor véget érnek","Relays used for searching notes (NIP-50)":"Jegyzetek kereséséhez használt csomópontok (NIP-50)","Protected event (NIP-70)":"Védett esemény (NIP-70)",Protected:"Védett","Protected event hint":"A védett eseményeket (NIP-70) csak a szerző teheti közzé. A csomópontok elutasítják ezeket az eseményeket harmadik felektől, megakadályozva, hogy mások újraközvetítsék a tartalmadat. Megjegyzés: nem minden csomópont támogatja a védett eseményeket.","Allow insecure connections":"Nem biztonságos kapcsolatok engedélyezése","Allow insecure connections description":"http:// erőforrások betöltésének és ws:// relékhez való csatlakozás engedélyezése. Böngésző vegyes tartalom figyelmeztetéseket válthat ki.","reacted to":"reagált erre",Reaction:"Reakció","Show others this was sent via Jumble":"Mutasd másoknak, hogy ez RogueJumble-n keresztül lett elküldve","Enjoying Jumble?":"Élvezed a RogueJumble-t?","Your donation helps me maintain Jumble and make it better! 😊":"Az adományod segít nekem a RogueJumble fenntartásában és fejlesztésében! 😊","Welcome to Jumble":"Üdvözlünk a RogueJumble-ben!","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","n users_one":"{{count}} felhasználó","n users_other":"{{count}} felhasználó","Welcome to Jumble!":"Üdvözlünk a RogueJumble-ben!","Font size":"Betűméret","Advanced mode":"Haladó mód","Post type selector":"Bejegyzéstípus-választó","Shows post kind dropdown when creating posts":"Bejegyzések létrehozásakor megjeleníti a bejegyzéstípus legördülő menüt","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"Közösségek keresése...","No communities found":"Nem található közösség","No communities yet":"Még nincsenek közösségek"}},l3={translation:{"Welcome! 🥳":"Benvenuto! 🥳",About:"Presentazione","New Note":"Nuova nota",Post:"Pubblica",Home:"Inizio","Relay settings":"Impostazioni Relay",Settings:"Impostazioni",SidebarRelays:"Relays",Refresh:"Aggiorna",Profile:"Profilo",Logout:"Disconnetti",Following:"Seguendo",followings:"seguiti",reposted:"ripubblica","just now":"adesso","minute ago_one":"{{count}} minuto fa","minute ago_other":"{{count}} minuti fa","n m":"{{n}}m","hour ago_one":"{{count}} ora fa","hour ago_other":"{{count}} ore fa","n h":"{{n}}o","day ago_one":"{{count}} giorno fa","day ago_other":"{{count}} giorni fa","n d":"{{n}}g",date:"{{timestamp, data}}",Follow:"Segui",Unfollow:"Non seguire","Follow failed":"Segui non riuscito","Unfollow failed":"Disiscrizione non riuscita","show new notes":"mostra nuove note","loading...":"caricando...","Loading...":"Caricamento in corso...","no more notes":"basta note","reply to":"replica a",reply:"replica",Reply:"Replica","load more older replies":"carica risposte più vecchie","Write something...":"Scrivi qualcosa...",Cancel:"Cancella",Mentions:"Menziona","Failed to post":"Impossibile pubblicare","Post successful":"Pubblicazione riuscita","Your post has been published":"Il tuo post è stato pubblicato",Repost:"Ripubblica",Quote:"Quota","Copy event ID":"Copia ID evento","Copy user ID":"Copia ID utente","View raw event":"Vedi evento grezzo",Like:"Mi piace","switch to light theme":"passa al tema luminoso","switch to dark theme":"passa al tema scuro","switch to system theme":"passa al tema di sistema",Note:"Nota",note:"nota","username's following":"{{username}} seguiti","username's used relays":"{{username}} relays usati","username's muted":"{{username}} zittiti",Login:"Accedi","Follows you":"Ti segue","Relay Settings":"Impostazioni Relay","Relay set name":"Imposta nome Relay","Add a new relay set":"Aggiungi nuovo set di relay",Add:"Aggiungi","n relays":"{{n}} relays",Rename:"Rinomina","Copy share link":"Copia collegamento da condividere",Delete:"Cancella","Relay already exists":"Relay già esistente","invalid relay URL":"URL relay non valido","Add a new relay":"Aggiungi un nuovo relay",back:"indietro","Lost in the void":"Perso nel vuoto","Carry me home":"Portami all inizio","no replies":"nessuna replica","Reply to":"Replica a",Search:"Ricerca","The relays you are connected to do not support search":"I relays a cui siete collegati non supportano la ricerca.","Show more...":"Mostra di più...","All users":"Tutti gli utenti","Display replies":"Visualizza repliche",Notes:"Note",Replies:"Repliche",Notifications:"Notifiche","no more notifications":"niente più notifiche","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"L'accesso con chiave privata non è sicuro. Si consiglia di utilizzare un'estensione del browser per l'accesso, come alby, nostr-keyx o nos2x. Se devi utilizzare una chiave privata, imposta almeno una password per la crittografia.","Login with Browser Extension":"Accedi con una estensione del Browser","Login with Bunker":"Accedi con Bunker","Login with Private Key":"Accedi con la Chiave Privata","reload notes":"ricarica note","Logged in Accounts":"Account collegati","Add an Account":"Aggiungi un Account","More options":"Più opzioni","Add client tag":"Aggiungi etichetta del client","Show others this was sent via Jumble":"Mostra agli altri che questo è stato inviato tramite Jumble","Are you sure you want to logout?":"Sei sicuro di volerti scollegare?","relay sets":"set di relay",edit:"modifica",Languages:"Lingue",Theme:"Tema",System:"Sistema",Light:"Luminoso",Dark:"Scuro",Temporary:"Temporaneo","Choose a relay set":"Scegli un set di relay","Switch account":"Cambia account",Pictures:"Immagini","Picture note":"Nota della immagine","A special note for picture-first clients like Olas":"Una nota speciale per i client immagine che privilegiano Olas","Picture note requires images":"La nota illustrativa richiede immagini",Relays:"Relays",Image:"immagine","R & W":"L & S",Read:"Leggi",Write:"Scrivi","Pull relay sets":"Ottieni set di relay","Select the relay sets you want to pull":"Selezionare i set di relay che si desidera ottenere","No relay sets found":"Nessun set di relay trovato","Pull n relay sets":"Ottieni {{n}} set di relay",Pull:"Ottieni","Select all":"Seleziona tutto","Relay Sets":"Set di Relay","Read & Write Relays":"Relay Leggi & Scrivi","read relays description":"I relay di lettura vengono utilizzati per cercare eventi che ti interessano. Gli altri utenti pubblicheranno gli eventi che vogliono farvi vedere nei vostri relay di lettura.","write relays description":"I relay di scrittura sono utilizzati per pubblicare i tuoi eventi. Gli altri utenti cercheranno i tuoi eventi dai vostri relay di scrittura.","read & write relays notice":"Il numero di server di lettura e scrittura dovrebbe essere mantenuto idealmente tra 2 e 4.","Don't have an account yet?":"Non hai ancora un account?","or simply generate a private key":"o semplicemente genera una chiave privata","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"Questa è una chiave privata. Non condividetela con nessuno. Conservatela al sicuro. Non sarà possibile recuperarla in caso di smarrimento.",Edit:"Modifica",Save:"Salva","Display Name":"Nome Visualizzato",Bio:"Bio","Nostr Address (NIP-05)":"Indirizzo Nostr (NIP-05)","Invalid NIP-05 address":"Indirizzo NIP-05 non valido","Copy private key":"Copia la chiave privata","Enter the password to decrypt your ncryptsec":"Inserisci la password per decriptare la tua ncryptsec",Back:"Indietro","optional: encrypt nsec":"opzione: cripta nsec",password:"password","Sign up":"Iscriviti","Save to":"Salva a","Enter a name for the new relay set":"Inserisci un nome per il nuovo set di relay","Save to a new relay set":"Salva al nuovo set di relay",Mute:"Zittisci",Muted:"Zittiti",Unmute:"Ridai voce","Unmute user":"Ridai voce a questo utente","Append n relays":"Aggiungi {{n}} relays",Append:"Aggiungi","Select relays to append":"Seleziona relay da aggiungere","calculating...":"calcolando...","Calculate optimal read relays":"Calcolo ottimale relay di lettura","Login to set":"Accedi per impostare","Please login to view following feed":"Per favore accedi per vedere il feed dei seguiti","Send only to r":"Invia solo a {{r}}","Send only to these relays":"Invia solo a questi relay",Explore:"Esplora","Search relays":"Relay di ricerca",relayInfoBadgeAuth:"Autorizzazione",relayInfoBadgeSearch:"Ricerca",relayInfoBadgePayment:"Pagamento",Operator:"Operatore",Contact:"Contatto",Software:"Programma",Version:"Versione","Random Relays":"Relay a caso",randomRelaysRefresh:"Aggiorna","Explore more":"Esplora di più","Payment page":"Pagina di pagamento","Supported NIPs":"NIP supportati","Open in a":"Apri in {{a}}","Cannot handle event of kind k":"Impossibile gestire un evento di tipo {{k}}","Encrypted direct messages not supported":"Messaggi diretti crittografati non supportati","Sorry! The note cannot be found 😔":"Spiacente! La nota non può essere trovata 😔","This user has been muted":"Questo utente è stato zittito",Wallet:"Wallet",Sats:"Sats",sats:"sats","Zap to":"Zap a","Zap n sats":"Zap {{n}} sats",zapComment:"Commento","Default zap amount":"Importo zap predefinito","Default zap comment":"Commento zap predefinito","Lightning Address (or LNURL)":"Indirizzo Lightning (o LNURL)","Quick zap":"Zap immediato","If enabled, you can zap with a single click. Click and hold for custom amounts":"Se abilitato, è possibile fare zapping con un solo clic. Fare clic e tenere premuto per ottenere importi personalizzati",All:"Tutto",Reactions:"Reazioni",Zaps:"Zaps","Enjoying Jumble?":"Ti sta piacendo Jumble?","Your donation helps me maintain Jumble and make it better! 😊":"La tua donazione mi aiuta a mantenere Jumble e a migliorarlo! 😊","Earlier notifications":"Notifiche precedenti","Temporarily display this note":"Visualizza temporaneamente questa nota",buttonFollowing:"Seguendo","Are you sure you want to unfollow this user?":"Sei sicuro di voler disiscrivere questo utente?","Recent Supporters":"Recenti Sostenitori","Seen on":"Visto su","Temporarily display this reply":"Mostra temporaneamente questa replica","Note not found":"Non è stata trovata la nota","no more replies":"niente più repliche","Relay sets":"Set di Relay","Favorite Relays":"Relay preferiti","Following's Favorites":"Preferiti dei seguiti","no more relays":"niente più relay","Favorited by":"Preferito da","Post settings":"Impostazioni post","Media upload service":"Servizio di caricamento media","Choose a relay":"Scegli un relay","no relays found":"Nessun relay trovato",video:"video","Show n new notes":"Mostra {{n}} nuove note",YouTabName:"Tu",Bookmark:"Segnalibro","Remove bookmark":"Rimuovi segnalibro","no bookmarks found":"Nessun segnalibro trovato","no more bookmarks":"Nessun altro segnalibro",Bookmarks:"Segnalibri","Show more":"Mostra di più",General:"Generale",Autoplay:"Riproduzione automatica","Enable video autoplay on this device":"Abilita riproduzione automatica video su questo dispositivo","Paste or drop media files to upload":"Incolla o trascina i file multimediali per caricarli",Preview:"Anteprima","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"Stai per pubblicare un evento firmato da [{{eventAuthorName}}]. Attualmente sei connesso come [{{currentUsername}}]. Sei sicuro?","Platinum Sponsors":"Sponsor Platino",From:"Da","Comment on":"Commenta su","View on njump.me":"Visualizza su njump.me","Hide content from untrusted users":"Nascondi contenuti da utenti non fidati","Only show content from your followed users and the users they follow":"Mostra solo contenuti dai tuoi utenti seguiti e dagli utenti che seguono","Followed by":"Seguito da","Mute user privately":"Zittisci utente privatamente","Mute user publicly":"Zittisci utente pubblicamente",Quotes:"Citazioni","Lightning Invoice":"Fattura Lightning","Bookmark failed":"Impossibile aggiungere segnalibro","Remove bookmark failed":"Impossibile rimuovere segnalibro",Translation:"Traduzione",Balance:"Saldo",characters:"caratteri",jumbleTranslateApiKeyDescription:"Puoi utilizzare questa chiave API ovunque supporti LibreTranslate. L'URL del servizio è {{serviceUrl}}","Top up":"Torna al saldo","Will receive: {n} characters":"Riceverai: {{n}} caratteri","Top up {n} sats":"Ricarica {{n}} sats","Minimum top up is {n} sats":"La ricarica minima è di {{n}} sats",Service:"Servizio","Reset API key":"Reimposta chiave API","Are you sure you want to reset your API key? This action cannot be undone.":"Sei sicuro di voler reimpostare la tua chiave API? Questa azione non può essere annullata.",Warning:"Attenzione","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"La tua attuale chiave API diventerà immediatamente non valida e tutte le applicazioni che la utilizzano smetteranno di funzionare finché non le aggiornerai con la nuova chiave.","Service address":"Indirizzo del servizio",Pay:"Paga",interactions:"interazioni",notifications:"notifiche","Show untrusted {type}":"Mostra {{type}} non fidati","Hide untrusted {type}":"Nascondi {{type}} non fidati","Currently hiding {type} from untrusted users.":"Attualmente nascondo {{type}} da utenti non fidati.","Currently showing all {type}.":"Attualmente mostro tutti {{type}}.","Click continue to show all {type}.":"Clicca su continua per mostrare tutti {{type}}.","Click continue to hide {type} from untrusted users.":"Clicca su continua per nascondere {{type}} da utenti non fidati.","Trusted users include people you follow and people they follow.":"Gli utenti fidati includono le persone che segui e le persone che seguono loro.",Continue:"Continua","Successfully updated mute list":"Lista di silenziamento aggiornata con successo","No pubkeys found from {url}":"Nessun pubkey trovato da {{url}}","Translating...":"Traduzione in corso...",Translate:"Traduci","Show original":"Mostra originale",Website:"Sito web","Hide untrusted notes":"Nascondi note non fidate","Open in another client":"Apri in un altro client",Community:"Comunità",Group:"Gruppo","Live event":"Evento dal vivo",Article:"Articolo",Unfavorite:"Rimuovi dai preferiti","Recommended relays":"Relay consigliati","Blossom server URLs":"URL del server Blossom","You need to add at least one blossom server in order to upload media files.":"È necessario aggiungere almeno un server Blossom per caricare file multimediali.","Recommended blossom servers":"Server Blossom consigliati","Enter Blossom server URL":"Inserisci URL del server Blossom",Preferred:"Preferito","Multiple choice (select one or more)":"Scelta multipla (seleziona uno o più)",Vote:"Vota","{{number}} votes":"{{number}} voti","Total votes":"Voti totali","Poll has ended":"Il sondaggio è terminato","Poll ends at {{time}}":"Il sondaggio termina alle {{time}}","Load results":"Carica risultati","This is a poll note.":"Questa è una nota sondaggio.","Unlike regular notes, polls are not widely supported and may not display on other clients.":"A differenza delle note regolari, i sondaggi non sono ampiamente supportati e potrebbero non essere visualizzati su altri client.","Option {{number}}":"Opzione {{number}}","Add Option":"Aggiungi Opzione","Allow multiple choices":"Consenti scelte multiple","End Date (optional)":"Data di fine (opzionale)","Clear end date":"Cancella data di fine","Relay URLs (optional, comma-separated)":"URL relay (opzionale, separati da virgole)","Remove poll":"Rimuovi sondaggio","Refresh results":"Aggiorna risultati",Poll:"Sondaggio",Media:"media","Republish to ...":"Ripubblica a...","Successfully republish to your write relays":"Ricondivisione riuscita ai tuoi relay di scrittura","Failed to republish to your write relays: {{error}}":"Impossibile ricondividere ai tuoi relay di scrittura: {{error}}","Successfully republish to relay set: {{name}}":"Ricondivisione riuscita al set di relay: {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"Impossibile ricondividere al set di relay: {{name}}. Errore: {{error}}","Successfully republish to relay: {{url}}":"Ricondivisione riuscita al relay: {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"Impossibile ricondividere al relay: {{url}}. Errore: {{error}}","Write relays":"Relay di scrittura","No more reactions":"Non ci sono più reazioni","No reactions yet":"Ancora nessuna reazione","No more zaps":"Non ci sono più zaps","No zaps yet":"Ancora nessuno zap","No more reposts":"Non ci sono più repost","No reposts yet":"Ancora nessun repost",Reposts:"Repost",FollowListNotFoundConfirmation:"Elenco seguiti non trovato. Vuoi crearne uno nuovo? Se hai già seguito degli utenti in precedenza, per favore NON confermare poiché questa operazione causerà la perdita del tuo elenco seguiti precedente.",MuteListNotFoundConfirmation:"Elenco utenti silenziati non trovato. Vuoi crearne uno nuovo? Se hai già silenziato degli utenti in precedenza, per favore NON confermare poiché questa operazione causerà la perdita del tuo elenco utenti silenziati precedente.","Show NSFW content by default":"Mostra contenuti NSFW per impostazione predefinita","Custom emoji management":"Gestione emoji personalizzate","After changing emojis, you may need to refresh the page":"Dopo aver modificato le emoji, potrebbe essere necessario aggiornare la pagina","Too many read relays":"Troppi relay di lettura","Too many write relays":"Troppi relay di scrittura","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"Hai {{count}} relay di lettura. La maggior parte dei client usa solo 2-4 relay, impostarne di più è inutile.","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"Hai {{count}} relay di scrittura. La maggior parte dei client usa solo 2-4 relay, impostarne di più è inutile.","Optimize Relay Settings":"Ottimizza impostazioni relay","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"La tua configurazione relay attuale potrebbe non essere ottimale. Questo potrebbe rendere difficile per gli altri trovare i tuoi post e potrebbe portare a notifiche incomplete.","Optimize Now":"Ottimizza ora","Maybe Later":"Forse più tardi","Don't remind me again":"Non ricordarmelo più",Posts:"Post",Articles:"Articoli",Highlights:"Evidenziazioni",Polls:"Sondaggi","Voice Posts":"Post vocali","Photo Posts":"Post foto","Video Posts":"Post video","Select All":"Seleziona tutto","Clear All":"Cancella tutto","Set as default filter":"Imposta come filtro predefinito",Apply:"Applica",Reset:"Reimposta","Share something on this Relay":"Condividi qualcosa su questo Relay","Try deleting this note":"Prova a eliminare questa nota","Deletion request sent to {{count}} relays":"Richiesta di eliminazione inviata a {{count}} relays","Suitable Relays":"Relays adatti","People, keywords, or relays":"Persone, parole chiave o relays","Hide content mentioning muted users":"Nascondi contenuto che menziona utenti silenziati","This note mentions a user you muted":"Questa nota menziona un utente che hai silenziato",Filter:"Filtro","mentioned you in a note":"ti ha menzionato in una nota","quoted your note":"ha citato la tua nota","voted in your poll":"ha votato nel tuo sondaggio","reacted to your note":"ha reagito alla tua nota","reposted your note":"ha ricondiviso la tua nota","zapped your note":"ha zappato la tua nota","highlighted your note":"ha evidenziato la tua nota","zapped you":"ti ha zappato","Mark as read":"Segna come letto",Report:"Segnala","Successfully report":"Segnalazione riuscita","Failed to report":"Segnalazione fallita",nudity:"Nudità",malware:"Malware",profanity:"Blasfemia",illegal:"Contenuto illegale",spam:"Spam",other:"Altro","Notification list style":"Stile elenco notifiche","See extra info for each notification":"Visualizza informazioni extra per ogni notifica","See more notifications at a glance":"Visualizza più notifiche a colpo d'occhio",Detailed:"Dettagliato",Compact:"Compatto","Submit Relay":"Invia Relay",Homepage:"Homepage","Proof of Work (difficulty {{minPow}})":"Proof of Work (difficoltà {{minPow}})","Proof of Work":"Proof of Work","Posts & comments difficulty":"Difficoltà di post e commenti","Reactions difficulty":"Difficoltà di reazioni","Image Mode":"Modalità immagine","Media Feed":"Feed media","Text Only":"Feed testo","Text Post":"Post testo","Picture Post":"Post immagine","Video Post":"Post video","Short Video Post":"Video breve",Text:"Testo",Picture:"Immagine",Video:"Video","Short Video":"Video breve","Post Type":"Tipo di post","via {{client}}":"tramite {{client}}","Auto-load media":"Caricamento automatico media",Always:"Sempre","Wi-Fi only":"Solo Wi-Fi",Never:"Mai","Click to load image":"Clicca per caricare l'immagine","Click to load media":"Clicca per caricare i media","Click to load YouTube video":"Clicca per caricare il video di YouTube","{{count}} reviews":"{{count}} recensioni","Write a review":"Scrivi una recensione","No reviews yet. Be the first to write one!":"Nessuna recensione ancora. Sii il primo a scriverne una!","View more reviews":"Visualizza più recensioni","Failed to review":"Recensione fallita","Write a review and pick a star rating":"Scrivi una recensione e scegli una valutazione a stelle",Submit:"Invia","Reviews for {{relay}}":"Recensioni per {{relay}}","No relays selected":"Nessun relay selezionato","Post to":"Pubblica su","Write relays and {{count}} other relays":"Relay di scrittura e {{count}} altri relay","{{count}} relays":"{{count}} relay","Republishing...":"Ricondivisione in corso...","Trending Notes":"Note di tendenza","Connected to":"Connesso a","Disconnect Wallet":"Disconnetti Wallet","Are you absolutely sure?":"Sei assolutamente sicuro?","You will not be able to send zaps to others.":"Non sarai in grado di inviare zaps ad altri.",Disconnect:"Disconnetti","Start with a Rizful Vault":"Inizia con un Rizful Vault","or other wallets":"o altri wallet","Rizful Vault":"Rizful Vault","Rizful Vault connected!":"Rizful Vault connesso!","You can now use your Rizful Vault to zap your favorite notes and creators.":"Puoi ora usare il tuo Rizful Vault per zappare le tue note e creatori preferiti.","Your Lightning Address":"Il tuo Indirizzo Lightning","New to Rizful?":"Nuovo a Rizful?","Sign up for Rizful":"Iscriviti a Rizful","If you already have a Rizful account, you can skip this step.":"Se hai già un account Rizful, puoi saltare questo passaggio.","Get your one-time code":"Ottieni il tuo codice monouso","Get code":"Ottieni codice","Connect to your Rizful Vault":"Connettiti al tuo Rizful Vault","Paste your one-time code here":"Incolla qui il tuo codice monouso",Connect:"Connetti","Set up your wallet to send and receive sats!":"Configura il tuo wallet per inviare e ricevere sats!","Set up":"Configura",Pinned:"Fissato",Unpin:"Rimuovi fissaggio",Unpinning:"Rimozione fissaggio","Pinning...":"Fissaggio in corso...","Pinned!":"Fissato!","Failed to pin: {{error}}":"Failed to pin: {{error}}","Unpinning...":"Rimozione fissaggio in corso...","Unpinned!":"Rimosso fissaggio!","Failed to unpin: {{error}}":"Impossibile rimuovere il fissaggio: {{error}}","Unpin from profile":"Rimuovi fissaggio dal profilo","Pin to profile":"Fissa al profilo",Appearance:"Aspetto","Pure Black":"Nero Puro",Default:"Predefinito",Red:"Rosso",Orange:"Arancione",Amber:"Ambra",Yellow:"Giallo",Lime:"Lime",Green:"Verde",Emerald:"Smeraldo",Teal:"Turchese",Cyan:"Ciano",Sky:"Cielo",Blue:"Blu",Indigo:"Indaco",Violet:"Viola",Purple:"Porpora",Fuchsia:"Fucsia",Pink:"Rosa",Rose:"Rosa","Primary color":"Colore primario",Layout:"Layout","Two-column":"Doppia colonna","Single-column":"Colonna singola",Reviews:"Recensioni",Extension:"Estensione",Remote:"Remoto","Encrypted Key":"Chiave Crittografata","Private Key":"Chiave Privata","Welcome to Jumble":"Benvenuto su Jumble","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","Explore Relays":"Esplora Relay","Choose a feed":"Scegli un feed","and {{x}} others":"e altri {{x}}",selfZapWarning:"Jumble non è responsabile di ciò che accade se zappi te stesso. Procedi a tuo rischio e pericolo. 😉⚡","Emoji Pack":"Pacchetto Emoji","Emoji pack added":"Pacchetto emoji aggiunto","Add emoji pack failed":"Aggiunta del pacchetto emoji non riuscita","Emoji pack removed":"Pacchetto emoji rimosso","Remove emoji pack failed":"Rimozione del pacchetto emoji non riuscita",Added:"Aggiunto","Emoji Packs":"Pacchetti Emoji","My Packs":"I Miei Pacchetti","Adding...":"Aggiunta...","Removing...":"Rimozione...",Reload:"Ricarica","Request to Join Relay":"Richiedi di unirti al Relay","Leave Relay":"Lascia il Relay",Leave:"Esci","Are you sure you want to leave this relay?":"Sei sicuro di voler lasciare questo relay?","Join request sent successfully":"Richiesta di adesione inviata con successo","Failed to send join request":"Impossibile inviare la richiesta di adesione","Leave request sent successfully":"Richiesta di uscita inviata con successo","Failed to send leave request":"Impossibile inviare la richiesta di uscita","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"Inserisci un codice di invito se ne hai uno. Altrimenti, lascialo vuoto per inviare una richiesta.","Invite Code (Optional)":"Codice di Invito (Opzionale)","Enter invite code":"Inserisci il codice di invito","Sending...":"Invio...","Send Request":"Invia Richiesta","You can get an invite code from a relay member.":"Puoi ottenere un codice di invito da un membro del relay.","Enter the invite code you received from a relay member.":"Inserisci il codice di invito che hai ricevuto da un membro del relay.","Get Invite Code":"Ottieni Codice di Invito","Share this invite code with others to invite them to join this relay.":"Condividi questo codice di invito con altri per invitarli a unirsi a questo relay.","Invite Code":"Codice di Invito",Copy:"Copia","This invite code can be used by others to join the relay.":"Questo codice di invito può essere utilizzato da altri per unirsi al relay.","No invite code available from this relay.":"Nessun codice di invito disponibile da questo relay.",Close:"Chiudi","Failed to get invite code from relay":"Impossibile ottenere il codice di invito dal relay","Failed to get invite code":"Impossibile ottenere il codice di invito","Invite code copied to clipboard":"Codice di invito copiato negli appunti","Favicon URL":"URL Favicon","Filter out onion relays":"Filtra relay onion","Click to load X post":"Clicca per caricare il post X","View Nostr comments":"Visualizza commenti Nostr","Search for notes":"Cerca note","Search for hashtag":"Cerca hashtag","Go to note":"Vai alla nota","Go to relay":"Vai al relay","View discussions about this":"Visualizza discussioni su questo contenuto","Open link":"Apri link","View Nostr discussions":"Visualizza discussioni Nostr","Optimal relays":"Relay ottimali","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"Ripubblicato con successo sui relay ottimali (i tuoi relay di scrittura e i relay di lettura degli utenti menzionati)","Failed to republish to optimal relays: {{error}}":"Errore nella ripubblicazione sui relay ottimali: {{error}}","External Content":"Contenuto esterno",Highlight:"Evidenzia","Optimal relays and {{count}} other relays":"Relay ottimali e {{count}} altri relay","Low trust ranking ({{percentile}}%)":"Classifica di fiducia bassa ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"Account sospetto (Punteggio di fiducia: {{percentile}}%)","n users":"{{count}} utenti","View Details":"Visualizza dettagli","Follow Pack Not Found":"Pacchetto di follow non trovato","Follow pack not found":"Pacchetto di follow non trovato",Users:"Utenti",Feed:"Feed","Follow Pack":"Pacchetto di Follow","24h Pulse":"Pulse 24h","Load earlier":"Carica precedente","Last 24 hours":"Ultime 24 ore","Last {{count}} days":"Ultimi {{count}} giorni",notes:"note","Quick reaction":"Reazione rapida","If enabled, you can react with a single click. Click and hold for more options":"Se abilitato, puoi reagire con un solo clic. Fai clic e tieni premuto per altre opzioni","Quick reaction emoji":"Emoji reazione rapida","Select emoji":"Seleziona emoji","NSFW content display":"NSFW content display","Hide completely":"Hide completely","Show but hide content":"Show but hide content","Show directly":"Show directly","Click to view":"Click to view","Special Follow":"Segui Speciale","Unfollow Special":"Smetti di Seguire Speciale","Personal Feeds":"Feed Personali","Relay Feeds":"Feed di Relay","Create Highlight":"Crea Evidenziazione","Write your thoughts about this highlight...":"Scrivi i tuoi pensieri su questa evidenziazione...","Publish Highlight":"Pubblica Evidenziazione","Show replies":"Mostra risposte","Hide replies":"Nascondi risposte","Welcome to Jumble!":"Benvenuto su Jumble!","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"Il tuo feed è vuoto perché non stai ancora seguendo nessuno. Inizia esplorando contenuti interessanti e seguendo gli utenti che ti piacciono!","Search Users":"Cerca Utenti","Create New Account":"Crea nuovo account",Important:"Importante","Generate Your Account":"Genera il tuo account","Your private key IS your account. Keep it safe!":"La tua chiave privata È il tuo account. Tienila al sicuro!","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"In Nostr, la tua chiave privata È il tuo account. Se perdi la tua chiave privata, perdi il tuo account per sempre.","Your Private Key":"La tua chiave privata","Generate new key":"Genera nuova chiave","Download Backup File":"Scarica file di backup","Copied to Clipboard":"Copiato negli appunti","Copy to Clipboard":"Copia negli appunti","I already saved my private key securely.":"Ho già salvato la mia chiave privata in modo sicuro.","Almost Done!":"Quasi fatto!","Set a password to encrypt your key, or skip to finish":"Imposta una password per crittografare la tua chiave, o salta per finire","Password Protection (Optional)":"Protezione con password (facoltativo)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"Impostare una password crittografa la tua chiave privata in questo browser. Puoi saltare questo passaggio, ma ti consigliamo di impostarne una per maggiore sicurezza.","Password (Optional)":"Password (facoltativo)","Enter password or leave empty to skip":"Inserisci la password o lascia vuoto per saltare","Confirm Password":"Conferma password","Re-enter password":"Reinserisci la password","Passwords do not match":"Le password non corrispondono","Finish Signup":"Completa registrazione","Create Your Nostr Account":"Crea il tuo account Nostr","Generate your unique private key. This is your digital identity.":"Genera la tua chiave privata unica. Questa è la tua identità digitale.","Critical: Save Your Private Key":"Critico: Salva la tua chiave privata","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"La tua chiave privata È il tuo account. Non c'è recupero password. Se la perdi, perderai il tuo account per sempre. Per favore salvala in un luogo sicuro.","I have safely backed up my private key":"Ho salvato in modo sicuro la mia chiave privata","Secure Your Account":"Proteggi il tuo account","Add an extra layer of protection with a password":"Aggiungi un ulteriore livello di protezione con una password","Password Protection (Recommended)":"Protezione con password (consigliato)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"Aggiungi una password per crittografare la tua chiave privata in questo browser. È facoltativo ma fortemente consigliato per una migliore sicurezza.","Create a password (or skip)":"Crea una password (o salta)","Enter your password again":"Inserisci di nuovo la tua password","Complete Signup":"Completa registrazione",Recommended:"Consigliato","Enter Password":"Inserisci password",Password:"Password",Confirm:"Conferma","trust-filter.title":"Filtro punteggio di fiducia","trust-filter.off":"Disattivato","trust-filter.low":"Basso","trust-filter.medium":"Medio","trust-filter.high":"Alto","trust-filter.wot":"WoT","trust-filter.filter-threshold":"Soglia di filtro","trust-filter.quick-presets":"Preimpostazioni rapide","trust-filter.show-all-content":"Mostra tutti i contenuti","trust-filter.only-show-wot":"Mostra solo la tua rete di fiducia (seguiti + i loro seguiti)","trust-filter.hide-bottom-percent":"Filtra il {{score}}% inferiore degli utenti per classifica di fiducia","trust-filter.trust-score-description":"Calcolato in base alla reputazione dell'utente e al percentile del social network","Auto-load profile pictures":"Caricamento automatico immagini di profilo","Disable live feed":"Disattiva feed live","Enable live feed":"Attiva feed live","Default relays":"Relay predefiniti","Reset to default":"Ripristina predefiniti","Default relays description":"Utilizzati per interrogare le configurazioni dei relay di altri utenti e come fallback quando gli utenti non hanno relay configurati.","Default relays warning":"Attenzione: Non modificare queste impostazioni alla leggera, potrebbe influire sull'esperienza di base.","Invalid relay URL":"URL relay non valido","Muted words":"Parole silenziate","Add muted word":"Aggiungi parola silenziata","Zap Details":"Dettagli Zap","Default trust score filter threshold ({{n}}%)":"Soglia predefinita del filtro del punteggio di fiducia ({{n}}%)","No notes found":"Nessuna nota trovata","Try again later or check your connection":"Riprova più tardi o controlla la connessione","Hide indirect":"Nascondi indirette","Copy note content":"Copia contenuto della nota","Video loop":"Ripetizione video","Automatically replay videos when they end":"Riprodurre automaticamente i video quando terminano","Relays used for searching notes (NIP-50)":"Relay utilizzati per cercare le note (NIP-50)","Protected event (NIP-70)":"Evento protetto (NIP-70)",Protected:"Protetto","Protected event hint":"Gli eventi protetti (NIP-70) possono essere pubblicati solo dall'autore. I relay rifiuteranno questi eventi da terze parti, impedendo ad altri di ridiffondere i tuoi contenuti. Nota: non tutti i relay supportano gli eventi protetti.","Allow insecure connections":"Consenti connessioni non sicure","Allow insecure connections description":"Consenti il caricamento di risorse http:// e la connessione a relay ws://. Potrebbe attivare avvisi di contenuto misto del browser.","reacted to":"ha reagito a",Reaction:"Reazione","n users_one":"{{count}} utente","n users_other":"{{count}} utenti","Font size":"Dimensione carattere","Advanced mode":"Modalità avanzata","Post type selector":"Selettore tipo di post","Shows post kind dropdown when creating posts":"Mostra il menu a discesa del tipo di post durante la creazione di post","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"Cerca comunità...","No communities found":"Nessuna comunità trovata","No communities yet":"Nessuna comunità ancora"}},c3={translation:{"Welcome! 🥳":"ようこそ! 🥳",About:"情報","New Note":"新規ノート",Post:"投稿",Home:"ホーム","Relay settings":"リレイ設定",Settings:"設定",SidebarRelays:"リレイ",Refresh:"更新",Profile:"プロフィール",Logout:"ログアウト",Following:"フォロー中",followings:"フォロー",reposted:"リポスト済み","just now":"たった今","minute ago_one":"{{count}}分前","minute ago_other":"{{count}}分前","n m":"{{n}}分","hour ago_one":"{{count}}時間前","hour ago_other":"{{count}}時間前","n h":"{{n}}時","day ago_one":"{{count}}日前","day ago_other":"{{count}}日前","n d":"{{n}}日",date:"{{timestamp, date}}",Follow:"フォローする",Unfollow:"フォロー解除","Follow failed":"フォローに失敗しました","Unfollow failed":"フォロー解除に失敗しました","show new notes":"新しいノートを表示","loading...":"読み込み中...","Loading...":"読み込み中...","no more notes":"これ以上ノートはありません","reply to":"返信先",reply:"返信",Reply:"返信","load more older replies":"さらに古い返信を読み込む","Write something...":"何か書いて...",Cancel:"キャンセル",Mentions:"@","Failed to post":"投稿に失敗しました","Post successful":"投稿に成功しました","Your post has been published":"投稿が公開されました",Repost:"リポスト",Quote:"引用","Copy event ID":"イベントIDをコピー","Copy user ID":"ユーザーIDをコピー","View raw event":"生データを表示",Like:"いいね","switch to light theme":"ライトテーマに切替","switch to dark theme":"ダークテーマに切替","switch to system theme":"システムテーマに切替",Note:"ノート",note:"ノート","username's following":"{{username}} のフォロー","username's used relays":"{{username}} の使用リレイ","username's muted":"{{username}} はミュート済み",Login:"ログイン","Follows you":"あなたをフォローしています","Relay Settings":"リレイ設定","Relay set name":"リレイセット名","Add a new relay set":"新しいリレイセットを追加",Add:"追加","n relays":"{{n}} 個のリレイ",Rename:"名前変更","Copy share link":"共有リンクをコピー",Delete:"削除","Relay already exists":"リレイは既に存在します","invalid relay URL":"無効なリレイURL","Add a new relay":"新しいリレイを追加",back:"戻る","Lost in the void":"虚無の中へ","Carry me home":"家まで送って","no replies":"返信がありません","Reply to":"返信先",Search:"検索","The relays you are connected to do not support search":"接続しているリレイは検索をサポートしていません","Show more...":"さらに表示...","All users":"全ユーザー","Display replies":"返信を表示",Notes:"ノート",Replies:"返信",Notifications:"通知","no more notifications":"これ以上通知はありません","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"秘密鍵でのログインは安全ではありません。alby、nostr-keyx、nos2xなどのブラウザ拡張機能を使用してログインすることをお勧めします。秘密鍵を使用する場合は、少なくとも暗号化のためにパスワードを設定してください。","Login with Browser Extension":"ブラウザ拡張でログイン","Login with Bunker":"Bunkerでログイン","Login with Private Key":"秘密鍵でログイン","reload notes":"ノートを再読み込み","Logged in Accounts":"ログイン中のアカウント","Add an Account":"アカウントを追加","More options":"その他のオプション","Add client tag":"クライアントタグを追加","Show others this was sent via RogueJumble":"これがRogueJumble経由で送信されたことを表示","Are you sure you want to logout?":"本当にログアウトしますか？","relay sets":"リレイセット",edit:"編集",Languages:"言語",Theme:"テーマ",System:"システム",Light:"ライト",Dark:"ダーク",Temporary:"一時的","Choose a relay set":"リレイセットを選択","Switch account":"アカウント切替",Pictures:"画像","Picture note":"画像ノート","A special note for picture-first clients like Olas":"Olas のような画像優先クライアント向けの特別なノート","Picture note requires images":"画像ノートには画像が必要です",Relays:"リレイ",Image:"画像","R & W":"読＆書",Read:"読む",Write:"書く","Pull relay sets":"リレイセットをプル","Select the relay sets you want to pull":"プルするリレイセットを選択","No relay sets found":"リレイセットが見つかりません","Pull n relay sets":"{{n}} 個のリレイセットをプル",Pull:"プル","Select all":"すべて選択","Relay Sets":"リレイセット","Read & Write Relays":"読み＆書きリレイ","read relays description":"読みリレイはあなたに関するイベントを取得するために使用されます。他のユーザーはあなたが見るべきイベントをこのリレイに公開します。","write relays description":"書きリレイはあなたのイベントを公開するために使用されます。他のユーザーはこのリレイからあなたのイベントを取得します。","read & write relays notice":"読みリレイと書きリレイは、理想的にはそれぞれ2〜4個に保つべきです。","Don't have an account yet?":"まだアカウントをお持ちでないですか？","or simply generate a private key":"または単に秘密鍵を生成してください","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"これは秘密鍵です。誰にも共有せず、安全な場所に保管してください。紛失すると復旧できません。",Edit:"編集",Save:"保存","Display Name":"表示名",Bio:"自己紹介","Nostr Address (NIP-05)":"Nostrアドレス (NIP-05)","Invalid NIP-05 address":"無効なNIP-05アドレス","Copy private key":"秘密鍵をコピー","Enter the password to decrypt your ncryptsec":"ncryptsecを復号化するためパスワードを入力",Back:"戻る","optional: encrypt nsec":"任意：nsecを暗号化",password:"パスワード","Sign up":"サインアップ","Save to":"保存先","Enter a name for the new relay set":"新しいリレイセットの名前を入力","Save to a new relay set":"新しいリレイセットに保存",Mute:"ミュート",Muted:"ミュート済み",Unmute:"ミュート解除","Unmute user":"ユーザーのミュート解除","Append n relays":"{{n}} 個のリレイを追加",Append:"追加","Select relays to append":"追加するリレイを選択","calculating...":"計算中...","Calculate optimal read relays":"最適な読みリレイを計算","Login to set":"セットにログイン","Please login to view following feed":"フォロー中のフィードを表示するにはログインしてください","Send only to r":"{{r}} にのみ送信","Send only to these relays":"これらのリレイにのみ送信",Explore:"探索","Search relays":"検索リレー",relayInfoBadgeAuth:"認証",relayInfoBadgeSearch:"検索",relayInfoBadgePayment:"支払い",Operator:"運営者",Contact:"連絡先",Software:"ソフトウェア",Version:"バージョン","Random Relays":"ランダムリレイ",randomRelaysRefresh:"更新","Explore more":"もっと探索","Payment page":"支払いページ","Supported NIPs":"対応NIP","Open in a":"{{a}}で開く","Cannot handle event of kind k":"種類{{k}}のイベントは処理できません","Encrypted direct messages not supported":"暗号化ダイレクトメッセージには対応していません","Sorry! The note cannot be found 😔":"申し訳ありません！ノートが見つかりません 😔","This user has been muted":"このユーザーはミュートされています",Wallet:"ウォレット",Sats:"サッツ",sats:"サッツ","Zap to":"Zap送信","Zap n sats":"{{n}} サッツをZap",zapComment:"コメント","Default zap amount":"デフォルトのZap金額","Default zap comment":"デフォルトのZapコメント","Lightning Address (or LNURL)":"Lightningアドレス（またはLNURL）","Quick zap":"クイックZap","If enabled, you can zap with a single click. Click and hold for custom amounts":"有効にすると、1クリックでZapできます。クリックして金額をカスタマイズします",All:"すべて",Reactions:"反応",Zaps:"Zap","Enjoying RogueJumble?":"Jumbleをお楽しみですか？","Your donation helps me maintain RogueJumble and make it better! 😊":"RogueJumbleの維持と改善に役立ちます！ 😊","Earlier notifications":"以前の通知","Temporarily display this note":"このノートを一時的に表示",buttonFollowing:"フォロー中","Are you sure you want to unfollow this user?":"このユーザーのフォローを解除しますか？","Recent Supporters":"最近のサポーター","Seen on":"見た","Temporarily display this reply":"この返信を一時的に表示","Note not found":"ノートが見つかりません","no more replies":"これ以上の返信はありません","Relay sets":"リレイセット","Favorite Relays":"お気に入りのリレイ","Following's Favorites":"フォロー中のお気に入り","no more relays":"これ以上のリレイはありません","Favorited by":"お気に入り","Post settings":"投稿設定","Media upload service":"メディアアップロードサービス","Choose a relay":"リレイを選択","no relays found":"リレイが見つかりません",video:"ビデオ","Show n new notes":"新しいノートを{{n}}件表示",YouTabName:"あなた",Bookmark:"ブックマーク","Remove bookmark":"ブックマークを削除","no bookmarks found":"ブックマークが見つかりません","no more bookmarks":"これ以上ブックマークはありません",Bookmarks:"ブックマーク","Show more":"もっと見る",General:"一般",Autoplay:"自動再生","Enable video autoplay on this device":"このデバイスでのビデオ自動再生を有効にする","Paste or drop media files to upload":"メディアファイルを貼り付けるかドロップしてアップロード",Preview:"プレビュー","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"あなたは[{{eventAuthorName}}]によって署名されたイベントを公開しようとしています。現在[{{currentUsername}}]としてログインしています。よろしいですか？","Platinum Sponsors":"プラチナスポンサー",From:"から","Comment on":"にコメント","View on njump.me":"njump.meで表示","Hide content from untrusted users":"信頼できないユーザーのコンテンツを非表示","Only show content from your followed users and the users they follow":"フォローしているユーザーとそのユーザーがフォローしているユーザーのコンテンツのみを表示","Followed by":"フォロワー","Mute user privately":"ユーザーを非公開でミュート","Mute user publicly":"ユーザーを公開でミュート",Quotes:"引用","Lightning Invoice":"ライトニングインボイス","Bookmark failed":"ブックマークに失敗しました","Remove bookmark failed":"ブックマークの削除に失敗しました",Translation:"翻訳",Balance:"残高",characters:"文字",jumbleTranslateApiKeyDescription:"このAPIキーは、LibreTranslateをサポートする他の場所でも使用できます。サービスURLは{{serviceUrl}}です","Top up":"チャージ","Will receive: {n} characters":"受け取る文字数: {{n}} 文字","Top up {n} sats":"チャージ {{n}} サッツ","Minimum top up is {n} sats":"最低チャージは {{n}} サッツです",Service:"サービス","Reset API key":"APIキーをリセット","Are you sure you want to reset your API key? This action cannot be undone.":"APIキーをリセットしますか？この操作は元に戻せません。",Warning:"警告","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"現在のAPIキーはすぐに無効になり、それを使用しているアプリケーションは新しいキーで更新するまで動作しなくなります。","Service address":"サービスアドレス",Pay:"支払う",interactions:"インタラクション",notifications:"通知","Show untrusted {type}":"信頼されていない{{type}}を表示","Hide untrusted {type}":"信頼されていない{{type}}を非表示","Currently hiding {type} from untrusted users.":"現在、信頼されていないユーザーからの{{type}}を非表示にしています。","Currently showing all {type}.":"現在、すべての{{type}}を表示しています。","Click continue to show all {type}.":"すべての{{type}}を表示するには続行をクリックしてください。","Click continue to hide {type} from untrusted users.":"信頼されていないユーザーからの{{type}}を非表示にするには続行をクリックしてください。","Trusted users include people you follow and people they follow.":"信頼できるユーザーには、あなたがフォローしている人とその人がフォローしている人が含まれます。",Continue:"続行","Successfully updated mute list":"ミュートリストの更新に成功しました","No pubkeys found from {url}":"URL {{url}} からのpubkeyは見つかりませんでした","Translating...":"翻訳中...",Translate:"翻訳","Show original":"原文を表示",Website:"ウェブサイト","Hide untrusted notes":"信頼されていないノートを非表示","Open in another client":"別のクライアントで開く",Community:"コミュニティ",Group:"グループ","Live event":"ライブイベント",Article:"記事",Unfavorite:"お気に入り解除","Recommended relays":"おすすめのリレイ","Blossom server URLs":"BlossomサーバーURL","You need to add at least one blossom server in order to upload media files.":"メディアファイルをアップロードするには、少なくとも1つのBlossomサーバーを追加する必要があります。","Recommended blossom servers":"おすすめのBlossomサーバー","Enter Blossom server URL":"BlossomサーバーURLを入力",Preferred:"優先","Multiple choice (select one or more)":"複数選択（1つ以上選択）",Vote:"投票","{{number}} votes":"{{number}} 票","Total votes":"総票数","Poll has ended":"投票終了","Poll ends at {{time}}":"投票終了時刻：{{time}}","Load results":"結果を読み込み","This is a poll note.":"これは投票ノートです。","Unlike regular notes, polls are not widely supported and may not display on other clients.":"通常のノートとは異なり、投票は広くサポートされておらず、他のクライアントでは表示されない場合があります。","Option {{number}}":"選択肢 {{number}}","Add Option":"選択肢を追加","Allow multiple choices":"複数選択を許可","End Date (optional)":"終了日（任意）","Clear end date":"終了日をクリア","Relay URLs (optional, comma-separated)":"リレーURL（任意、カンマ区切り）","Remove poll":"投票を削除","Refresh results":"結果を更新",Poll:"投票",Media:"メディア","Republish to ...":"再公開先 ...","Successfully republish to your write relays":"書きリレイへの再公開に成功しました","Failed to republish to your write relays: {{error}}":"書きリレイへの再公開に失敗しました: {{error}}","Successfully republish to relay set: {{name}}":"リレイセット {{name}} への再公開に成功しました","Failed to republish to relay set: {{name}}. Error: {{error}}":"リレイセット {{name}} への再公開に失敗しました。エラー: {{error}}","Successfully republish to relay: {{url}}":"リレイ {{url}} への再公開に成功しました","Failed to republish to relay: {{url}}. Error: {{error}}":"リレイ {{url}} への再公開に失敗しました。エラー: {{error}}","Write relays":"書きリレイ","No more reactions":"これ以上の反応はありません","No reactions yet":"まだ反応はありません","No more zaps":"これ以上のZapはありません","No zaps yet":"まだZapはありません","No more reposts":"これ以上のリポストはありません","No reposts yet":"まだリポストはありません",Reposts:"リポスト",FollowListNotFoundConfirmation:"フォローリストが見つかりません。新しいものを作成しますか？以前にユーザーをフォローしたことがある場合は、この操作により前のフォローリストが失われるため、確認しないでください。",MuteListNotFoundConfirmation:"ミュートリストが見つかりません。新しいものを作成しますか？以前にユーザーをミュートしたことがある場合は、この操作により前のミュートリストが失われるため、確認しないでください。","Show NSFW content by default":"デフォルトでNSFWコンテンツを表示","Custom emoji management":"カスタム絵文字管理","After changing emojis, you may need to refresh the page":"絵文字を変更した後、ページを更新する必要がある場合があります","Too many read relays":"読み取りリレイが多すぎます","Too many write relays":"書き込みリレイが多すぎます","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"{{count}} 個の読み取りリレイがあります。ほとんどのクライアントは2〜4個のリレイのみを使用するため、それ以上設定する必要はありません。","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"{{count}} 個の書き込みリレイがあります。ほとんどのクライアントは2〜4個のリレイのみを使用するため、それ以上設定する必要はありません。","Optimize Relay Settings":"リレイ設定を最適化","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"現在のリレイ設定は最適ではない可能性があります。これにより、他の人があなたの投稿を見つけにくくなり、通知が不完全になる可能性があります。","Optimize Now":"今すぐ最適化","Maybe Later":"後で","Don't remind me again":"今後表示しない",Posts:"投稿",Articles:"記事",Highlights:"ハイライト",Polls:"投票","Voice Posts":"音声投稿","Photo Posts":"写真投稿","Video Posts":"ビデオ投稿","Select All":"すべて選択","Clear All":"すべてクリア","Set as default filter":"デフォルトフィルターに設定",Apply:"適用",Reset:"リセット","Share something on this Relay":"このリレーで何かを共有する","Try deleting this note":"このノートを削除してみてください","Deletion request sent to {{count}} relays":"削除リクエストが{{count}}個のリレーに送信されました","Suitable Relays":"適切なリレー","People, keywords, or relays":"人、キーワード、またはリレー","Hide content mentioning muted users":"ミュートしたユーザーを言及するコンテンツを非表示","This note mentions a user you muted":"このノートはミュートしたユーザーを言及しています",Filter:"フィルター","mentioned you in a note":"ノートであなたに言及しました","quoted your note":"あなたのノートを引用しました","voted in your poll":"あなたの投票に投票しました","reacted to your note":"あなたのノートにリアクションしました","reposted your note":"あなたのノートをリポストしました","zapped your note":"あなたのノートにザップしました","highlighted your note":"あなたのノートをハイライトしました","zapped you":"あなたにザップしました","Mark as read":"既読にする",Report:"報告","Successfully report":"報告が成功しました","Failed to report":"報告に失敗しました",nudity:"ヌード",malware:"マルウェア",profanity:"冒涜的な内容",illegal:"違法コンテンツ",spam:"スパム",other:"その他","Notification list style":"通知リストスタイル","See extra info for each notification":"各通知の詳細情報を表示","See more notifications at a glance":"一目でより多くの通知を確認",Detailed:"詳細",Compact:"コンパクト","Submit Relay":"リレーを提出",Homepage:"ホームページ","Proof of Work (difficulty {{minPow}})":"プルーフオブワーク (難易度 {{minPow}})","Proof of Work":"プルーフオブワーク","Posts & comments difficulty":"投稿とコメントの難易度","Reactions difficulty":"リアクションの難易度","Image Mode":"画像モード","Media Feed":"メディアフィード","Text Only":"テキストフィード","Text Post":"テキスト投稿","Picture Post":"画像投稿","Video Post":"動画投稿","Short Video Post":"ショート動画",Text:"テキスト",Picture:"画像",Video:"動画","Short Video":"ショート動画","Post Type":"投稿タイプ","via {{client}}":"{{client}} 経由","Auto-load media":"メディアの自動読み込み",Always:"常に","Wi-Fi only":"Wi-Fiのみ",Never:"しない","Click to load image":"クリックして画像を読み込む","Click to load media":"クリックしてメディアを読み込む","Click to load YouTube video":"クリックしてYouTubeビデオを読み込む","{{count}} reviews":"{{count}}件のレビュー","Write a review":"レビューを書く","No reviews yet. Be the first to write one!":"まだレビューがありません。最初のレビューを書いてみませんか！","View more reviews":"もっとレビューを見る","Failed to review":"レビュー失敗","Write a review and pick a star rating":"レビューを書いて星評価を選択してください",Submit:"送信","Reviews for {{relay}}":"{{relay}} のレビュー","No relays selected":"リレーが選択されていません","Post to":"投稿先","Write relays and {{count}} other relays":"書き込みリレーと他の {{count}} 個のリレー","{{count}} relays":"{{count}} 個のリレー","Republishing...":"再公開中...","Trending Notes":"注目のノート","Connected to":"接続先","Disconnect Wallet":"ウォレットの接続を解除","Are you absolutely sure?":"本当に確かですか？","You will not be able to send zaps to others.":"他の人にZapを送信できなくなります。",Disconnect:"接続解除","Start with a Rizful Vault":"Rizful Vaultで始める","or other wallets":"または他のウォレット","Rizful Vault":"Rizful Vault","Rizful Vault connected!":"Rizful Vaultが接続されました！","You can now use your Rizful Vault to zap your favorite notes and creators.":"これで、Rizful Vaultを使用してお気に入りのノートやクリエイターにZapを送信できます。","Your Lightning Address":"あなたのライトニングアドレス","New to Rizful?":"Rizfulを初めて利用しますか？","Sign up for Rizful":"Rizfulにサインアップ","If you already have a Rizful account, you can skip this step.":"すでにRizfulアカウントをお持ちの場合は、このステップをスキップできます。","Get your one-time code":"ワンタイムコードを取得","Get code":"コードを取得","Connect to your Rizful Vault":"Rizful Vaultに接続","Paste your one-time code here":"ここにワンタイムコードを貼り付けてください",Connect:"接続","Set up your wallet to send and receive sats!":"ウォレットを設定してサッツを送受信しましょう！","Set up":"設定する",Pinned:"固定済み",Unpin:"固定解除",Unpinning:"固定解除中","Pinning...":"固定中...","Pinned!":"固定されました！","Failed to pin: {{error}}":"固定に失敗しました: {{error}}","Unpinning...":"固定解除中...","Unpinned!":"固定が解除されました！","Failed to unpin: {{error}}":"固定解除に失敗しました: {{error}}","Unpin from profile":"プロフィールから固定解除","Pin to profile":"プロフィールに固定",Appearance:"外観","Pure Black":"純黒",Default:"デフォルト",Red:"赤",Orange:"オレンジ",Amber:"アンバー",Yellow:"黄色",Lime:"ライム",Green:"緑",Emerald:"エメラルド",Teal:"ティール",Cyan:"シアン",Sky:"スカイ",Blue:"青",Indigo:"インディゴ",Violet:"バイオレット",Purple:"紫",Fuchsia:"フクシア",Pink:"ピンク",Rose:"ローズ","Primary color":"主要な色",Layout:"レイアウト","Two-column":"2列","Single-column":"1列",Reviews:"レビュー",Extension:"拡張機能",Remote:"リモート","Encrypted Key":"暗号化キー","Private Key":"暗号化されたキー","Welcome to RogueJumble":"RogueJumbleへようこそ","RogueJumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"RogueJumbleはリレーを閲覧することに焦点を当てたクライアントです。興味深いリレーを探索するか、ログインしてフォロー中のフィードを表示してください。","Explore Relays":"リレーを探索","Choose a feed":"フィードを選択","and {{x}} others":"および他{{x}}人",selfZapWarning:"RogueJumble は、あなたが自分自身にザップした場合の結果について責任を負いません。自己責任で続行してください。😉⚡","Emoji Pack":"絵文字パック","Emoji pack added":"絵文字パックを追加しました","Add emoji pack failed":"絵文字パックの追加に失敗しました","Emoji pack removed":"絵文字パックを削除しました","Remove emoji pack failed":"絵文字パックの削除に失敗しました",Added:"追加済み","Emoji Packs":"絵文字パック","My Packs":"マイパック","Adding...":"追加中...","Removing...":"削除中...",Reload:"再読み込み","Request to Join Relay":"リレーへの参加をリクエスト","Leave Relay":"リレーを退出",Leave:"退出","Are you sure you want to leave this relay?":"このリレーを退出してもよろしいですか？","Join request sent successfully":"参加リクエストを送信しました","Failed to send join request":"参加リクエストの送信に失敗しました","Leave request sent successfully":"退出リクエストを送信しました","Failed to send leave request":"退出リクエストの送信に失敗しました","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"招待コードをお持ちの場合は入力してください。それ以外の場合は空白のままリクエストを送信してください。","Invite Code (Optional)":"招待コード（オプション）","Enter invite code":"招待コードを入力","Sending...":"送信中...","Send Request":"リクエストを送信","You can get an invite code from a relay member.":"リレーメンバーから招待コードを取得できます。","Enter the invite code you received from a relay member.":"リレーメンバーから受け取った招待コードを入力してください。","Get Invite Code":"招待コードを取得","Share this invite code with others to invite them to join this relay.":"この招待コードを他の人と共有して、このリレーへの参加を招待してください。","Invite Code":"招待コード",Copy:"コピー","This invite code can be used by others to join the relay.":"この招待コードは他の人がリレーに参加するために使用できます。","No invite code available from this relay.":"このリレーから利用可能な招待コードはありません。",Close:"閉じる","Failed to get invite code from relay":"リレーから招待コードの取得に失敗しました","Failed to get invite code":"招待コードの取得に失敗しました","Invite code copied to clipboard":"招待コードをクリップボードにコピーしました","Favicon URL":"ファビコンURL","Filter out onion relays":"Onionリレーを除外","Click to load X post":"クリックしてX投稿を読み込む","View Nostr comments":"Nostrコメントを表示","Search for notes":"ノートを検索","Search for hashtag":"ハッシュタグを検索","Go to note":"ノートへ移動","Go to relay":"リレーへ移動","View discussions about this":"このコンテンツに関する議論を表示","Open link":"リンクを開く","View Nostr discussions":"Nostr の議論を表示","Optimal relays":"最適なリレー","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"最適なリレー（あなたの書き込みリレーと言及されたユーザーの読み取りリレー）への再公開に成功しました","Failed to republish to optimal relays: {{error}}":"最適なリレーへの再公開に失敗しました：{{error}}","External Content":"外部コンテンツ",Highlight:"ハイライト","Optimal relays and {{count}} other relays":"最適なリレーと他の{{count}}個のリレー","Low trust ranking ({{percentile}}%)":"信頼度が低いアカウント ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"疑わしいアカウント（信頼スコア：{{percentile}}%）","n users":"{{count}}人のユーザー","View Details":"詳細を表示","Follow Pack Not Found":"フォローパックが見つかりません","Follow pack not found":"フォローパックが見つかりません",Users:"ユーザー",Feed:"フィード","Follow Pack":"フォローパック","24h Pulse":"24h パルス","Load earlier":"以前を読み込む","Last 24 hours":"過去24時間","Last {{count}} days":"過去{{count}}日間",notes:"ノート","Quick reaction":"クイックリアクション","If enabled, you can react with a single click. Click and hold for more options":"有効にすると、ワンクリックでリアクションできます。長押しで他のオプションを表示","Quick reaction emoji":"クイックリアクション絵文字","Select emoji":"絵文字を選択","NSFW content display":"NSFWコンテンツの表示","Hide completely":"完全に非表示","Show but hide content":"表示するがコンテンツを非表示","Show directly":"直接表示","Click to view":"クリックして表示","Special Follow":"特別フォロー","Unfollow Special":"特別フォロー解除","Personal Feeds":"個人フィード","Relay Feeds":"リレーフィード","Create Highlight":"ハイライトを作成","Write your thoughts about this highlight...":"このハイライトについての考えを書いてください...","Publish Highlight":"ハイライトを公開","Show replies":"返信を表示","Hide replies":"返信を非表示","Welcome to RogueJumble!":"RogueJumbleへようこそ！","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"まだ誰もフォローしていないため、フィードが空です。興味深いコンテンツを探索して、好きなユーザーをフォローしてみましょう！","Search Users":"ユーザーを検索","Create New Account":"新しいアカウントを作成",Important:"重要","Generate Your Account":"アカウントを生成","Your private key IS your account. Keep it safe!":"秘密鍵があなたのアカウントです。安全に保管してください！","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"Nostrでは、秘密鍵があなたのアカウントです。秘密鍵を紛失すると、アカウントを永久に失います。","Your Private Key":"あなたの秘密鍵","Generate new key":"新しい鍵を生成","Download Backup File":"バックアップファイルをダウンロード","Copied to Clipboard":"クリップボードにコピーしました","Copy to Clipboard":"クリップボードにコピー","I already saved my private key securely.":"秘密鍵を安全に保存しました。","Almost Done!":"もう少しで完了です！","Set a password to encrypt your key, or skip to finish":"鍵を暗号化するためのパスワードを設定するか、スキップして完了してください","Password Protection (Optional)":"パスワード保護（オプション）","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"パスワードを設定すると、このブラウザで秘密鍵が暗号化されます。この手順はスキップできますが、セキュリティ強化のために設定することをお勧めします。","Password (Optional)":"パスワード（オプション）","Enter password or leave empty to skip":"パスワードを入力するか、空のままにしてスキップしてください","Confirm Password":"パスワードを確認","Re-enter password":"パスワードを再入力","Passwords do not match":"パスワードが一致しません","Finish Signup":"登録を完了","Create Your Nostr Account":"Nostrアカウントを作成","Generate your unique private key. This is your digital identity.":"あなた専用の秘密鍵を生成します。これがあなたのデジタルアイデンティティです。","Critical: Save Your Private Key":"重要：秘密鍵を保存してください","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"あなたの秘密鍵があなたのアカウントそのものです。パスワード復旧機能はありません。紛失すると、アカウントを永久に失います。安全な場所に保存してください。","I have safely backed up my private key":"秘密鍵を安全にバックアップしました","Secure Your Account":"アカウントを保護","Add an extra layer of protection with a password":"パスワードで追加の保護層を追加","Password Protection (Recommended)":"パスワード保護（推奨）","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"このブラウザで秘密鍵を暗号化するパスワードを追加します。オプションですが、より良いセキュリティのために強くお勧めします。","Create a password (or skip)":"パスワードを作成（またはスキップ）","Enter your password again":"パスワードをもう一度入力","Complete Signup":"登録を完了",Recommended:"おすすめ","Enter Password":"パスワードを入力",Password:"パスワード",Confirm:"確認","trust-filter.title":"信頼スコアフィルター","trust-filter.off":"オフ","trust-filter.low":"低","trust-filter.medium":"中","trust-filter.high":"高","trust-filter.wot":"WoT","trust-filter.filter-threshold":"フィルター閾値","trust-filter.quick-presets":"クイックプリセット","trust-filter.show-all-content":"すべてのコンテンツを表示","trust-filter.only-show-wot":"あなたの信頼ネットワークのみを表示（フォロー + フォローのフォロー）","trust-filter.hide-bottom-percent":"信頼ランク下位 {{score}}% のユーザーをフィルタリング","trust-filter.trust-score-description":"ユーザーの評判とソーシャルネットワークに基づいて信頼度パーセンタイルを計算","Auto-load profile pictures":"プロフィール画像を自動読み込み","Disable live feed":"ライブフィードを無効にする","Enable live feed":"ライブフィードを有効にする","Default relays":"デフォルトリレー","Reset to default":"デフォルトにリセット","Default relays description":"他のユーザーのリレー設定を照会するために使用され、ユーザーがリレーを設定していない場合のフォールバックとして機能します。","Default relays warning":"警告：これらの設定を無闇に変更しないでください。基本的な体験に影響を与える可能性があります。","Invalid relay URL":"無効なリレーURL","Muted words":"ミュートワード","Add muted word":"ミュートワードを追加","Zap Details":"Zapの詳細","Default trust score filter threshold ({{n}}%)":"デフォルトの信頼スコアフィルター閾値 ({{n}}%)","No notes found":"ノートが見つかりません","Try again later or check your connection":"後でもう一度お試しいただくか、接続を確認してください","Hide indirect":"間接通知を非表示","Copy note content":"ノート内容をコピー","Video loop":"ビデオループ","Automatically replay videos when they end":"ビデオ終了時に自動的にリプレイする","Relays used for searching notes (NIP-50)":"ノート検索に使用するリレー (NIP-50)","Protected event (NIP-70)":"保護されたイベント (NIP-70)",Protected:"保護","Protected event hint":"保護されたイベント（NIP-70）は作成者のみが公開できます。リレーは第三者からのこれらのイベントを拒否し、他者によるコンテンツの再配信を防ぎます。 注意：すべてのリレーが保護されたイベントに対応しているわけではありません。","Allow insecure connections":"安全でない接続を許可","Allow insecure connections description":"http:// リソースの読み込みと ws:// リレーへの接続を許可します。ブラウザの混合コンテンツ警告が表示される場合があります。","reacted to":"にリアクションしました",Reaction:"リアクション","Show others this was sent via Jumble":"RogueJumble経由で送信されたことを他のユーザーに表示","Enjoying Jumble?":"RogueJumbleをお楽しみですか？","Your donation helps me maintain Jumble and make it better! 😊":"あなたの寄付は、RogueJumbleの維持と改善に役立ちます！ 😊","Welcome to Jumble":"RogueJumbleへようこそ","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","n users_one":"{{count}} ユーザー","n users_other":"{{count}} ユーザー","Welcome to Jumble!":"RogueJumbleへようこそ！","Font size":"フォントサイズ","Advanced mode":"上級者モード","Post type selector":"投稿タイプセレクター","Shows post kind dropdown when creating posts":"投稿作成時に投稿種類のドロップダウンを表示","Sans-serif":"ゴシック体","Space Grotesk":"Space Grotesk","Search communities...":"コミュニティを検索...","No communities found":"コミュニティが見つかりません","No communities yet":"まだコミュニティはありません"}},u3={translation:{"Welcome! 🥳":"환영합니다! 🥳",About:"정보","New Note":"새 노트 작성",Post:"노트 게시",Home:"홈","Relay settings":"릴레이 설정",Settings:"설정",SidebarRelays:"릴레이",Refresh:"새로고침",Profile:"프로필",Logout:"로그아웃",Following:"팔로잉",followings:"팔로잉",reposted:"리포스트","just now":"방금 전","minute ago_one":"{{count}}분 전","minute ago_other":"{{count}}분 전","n m":"{{n}}분","hour ago_one":"{{count}}시간 전","hour ago_other":"{{count}}시간 전","n h":"{{n}}시간","day ago_one":"{{count}}일 전","day ago_other":"{{count}}일 전","n d":"{{n}}일",date:"{{timestamp, date}}",Follow:"팔로우",Unfollow:"언팔로우","Follow failed":"팔로우 실패","Unfollow failed":"언팔로우 실패","show new notes":"새 노트 보기","loading...":"로딩 중...","Loading...":"로딩 중...","no more notes":"더 이상 노트 없음","reply to":"답글",reply:"답글",Reply:"답글","load more older replies":"이전 답글 더 보기","Write something...":"무엇인가 작성하세요...",Cancel:"취소",Mentions:"멘션","Failed to post":"게시 실패","Post successful":"게시 성공","Your post has been published":"게시물이 게시되었습니다",Repost:"리포스트",Quote:"인용","Copy event ID":"이벤트 ID 복사","Copy user ID":"사용자 ID 복사","View raw event":"원본 이벤트 보기",Like:"좋아요","switch to light theme":"라이트 테마로 전환","switch to dark theme":"다크 테마로 전환","switch to system theme":"시스템 테마로 전환",Note:"노트",note:"노트","username's following":"{{username}}님의 팔로잉","username's used relays":"{{username}}님이 사용하는 릴레이","username's muted":"{{username}}님이 차단한 사용자",Login:"로그인","Follows you":"회원님을 팔로우함","Relay Settings":"릴레이 설정","Relay set name":"릴레이 세트 이름","Add a new relay set":"새 릴레이 세트 추가",Add:"추가","n relays":"{{n}}개의 릴레이",Rename:"이름 변경","Copy share link":"공유 링크 복사",Delete:"삭제","Relay already exists":"릴레이가 이미 존재합니다","invalid relay URL":"유효하지 않은 릴레이 주소","Add a new relay":"새 릴레이 추가",back:"뒤로","Lost in the void":"공허 속에서 길을 잃음","Carry me home":"집으로 데려다줘","no replies":"답글 없음","Reply to":"답글",Search:"검색","The relays you are connected to do not support search":"연결된 릴레이가 검색을 지원하지 않습니다","Show more...":"더 보기...","All users":"모든 사용자","Display replies":"답글 표시",Notes:"노트",Replies:"답글",Notifications:"알림","no more notifications":"더 이상 알림 없음","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"개인 키 로그인은 안전하지 않습니다. alby, nostr-keyx, nos2x와 같은 브라우저 확장 프로그램을 사용하는 것이 좋습니다. 꼭 개인 키를 사용해야 한다면 최소한 암호를 설정하세요.","Login with Browser Extension":"브라우저 확장으로 로그인","Login with Bunker":"Bunker로 로그인","Login with Private Key":"개인 키로 로그인","reload notes":"노트 다시 불러오기","Logged in Accounts":"로그인된 계정","Add an Account":"계정 추가","More options":"더 많은 옵션","Add client tag":"클라이언트 태그 추가","Show others this was sent via RogueJumble":"이 노트가 Jumble을 통해 전송되었음을 표시","Are you sure you want to logout?":"로그아웃 하시겠습니까?","relay sets":"릴레이 세트",edit:"편집",Languages:"언어",Theme:"테마",System:"시스템",Light:"라이트",Dark:"다크",Temporary:"임시","Choose a relay set":"릴레이 세트 선택","Switch account":"계정 전환",Pictures:"사진","Picture note":"사진 노트","A special note for picture-first clients like Olas":"Olas와 같은 사진 우선 클라이언트에서 표시되는 특별한 노트","Picture note requires images":"사진 노트에는 이미지가 필요합니다",Relays:"릴레이",Image:"이미지",Normal:"일반","R & W":"읽기/쓰기",Read:"읽기 전용",Write:"쓰기 전용","Pull relay sets":"릴레이 세트 가져오기","Select the relay sets you want to pull":"가져올 릴레이 세트 선택","No relay sets found":"릴레이 세트를 찾을 수 없음","Pull n relay sets":"{{n}}개의 릴레이 세트 가져오기",Pull:"가져오기","Select all":"전체 선택","Relay Sets":"릴레이 세트",Mailbox:"메일박스","Read & Write Relays":"읽기/쓰기 릴레이","read relays description":"읽기 릴레이는 회원님과 관련된 이벤트를 찾는 데 사용됩니다. 다른 사용자는 회원님이 보길 원하는 이벤트를 회원님의 읽기 릴레이에 게시합니다.","write relays description":"쓰기 릴레이는 회원님의 이벤트를 게시하는 데 사용됩니다. 다른 사용자는 회원님의 쓰기 릴레이에서 회원님이 게시한 이벤트를 찾습니다.","read & write relays notice":"읽기 및 쓰기 릴레이는 각각 2~4개 정도가 적당합니다.","Don't have an account yet?":"아직 계정이 없으신가요?","or simply generate a private key":"또는 간단히 개인 키 생성","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"이것은 개인 키입니다. 절대 다른 사람과 공유하지 마세요. 안전하게 보관하세요. 분실 시 복구할 수 없습니다.",Edit:"편집",Save:"저장","Display Name":"표시 이름",Bio:"소개","Nostr Address (NIP-05)":"Nostr 주소 (NIP-05)","Invalid NIP-05 address":"유효하지 않은 NIP-05 주소","Copy private key":"개인 키 복사","Enter the password to decrypt your ncryptsec":"ncryptsec를 복호화할 비밀번호 입력",Back:"뒤로","password (optional): encrypt nsec":"비밀번호(선택): nsec 암호화","optional: encrypt nsec":"선택: nsec 암호화",password:"비밀번호","Sign up":"회원가입","Save to":"저장 위치","Enter a name for the new relay set":"새 릴레이 세트 이름 입력","Save to a new relay set":"새 릴레이 세트에 저장",Mute:"차단",Muted:"차단됨",Unmute:"차단 해제","Unmute user":"사용자 차단 해제","Append n relays":"{{n}}개의 릴레이 추가",Append:"추가","Select relays to append":"추가할 릴레이 선택","calculating...":"계산 중...","Calculate optimal read relays":"최적의 읽기 릴레이 계산","Login to set":"설정하려면 로그인","Please login to view following feed":"팔로잉 피드를 보려면 로그인하세요","Send only to r":"{{r}}에만 전송","Send only to these relays":"이 릴레이에만 전송",Explore:"탐색","Search relays":"검색 릴레이",relayInfoBadgeAuth:"로그인 필요",relayInfoBadgeSearch:"검색 지원",relayInfoBadgePayment:"유료",Operator:"운영자",Contact:"연락처",Software:"소프트웨어",Version:"버전","Random Relays":"무작위 릴레이",randomRelaysRefresh:"새로고침","Explore more":"더 탐색하기","Payment page":"결제 페이지","Supported NIPs":"지원 NIP","Open in a":"{{a}}에서 열기","Cannot handle event of kind k":"{{k}} 유형의 이벤트를 처리할 수 없습니다","Encrypted direct messages not supported":"암호화된 다이렉트 메시지는 지원되지 않습니다","Sorry! The note cannot be found 😔":"죄송합니다! 해당 노트를 찾을 수 없습니다 😔","This user has been muted":"이 사용자는 차단되었습니다",Wallet:"지갑",Sats:"사토시",sats:"사토시","Zap to":"잽 보내기","Zap n sats":"{{n}} 사토시 잽 보내기",zapComment:"코멘트","Default zap amount":"기본 잽 금액","Default zap comment":"기본 잽 코멘트","Lightning Address (or LNURL)":"라이트닝 주소(또는 LNURL)","Quick zap":"빠른 잽","If enabled, you can zap with a single click. Click and hold for custom amounts":"활성화하면 한 번 클릭으로 잽을 보낼 수 있습니다. 길게 누르면 금액을 직접 입력할 수 있습니다.",All:"전체",Reactions:"반응",Zaps:"잽","Enjoying RogueJumble?":"Jumble이 마음에 드시나요?","Your donation helps me maintain RogueJumble and make it better! 😊":"후원해주시면 RogueJumble을 더 잘 유지하고 발전시킬 수 있습니다! 😊","Earlier notifications":"이전 알림","Temporarily display this note":"이 노트 임시 표시",buttonFollowing:"팔로잉 중","Are you sure you want to unfollow this user?":"이 사용자를 언팔로우하시겠습니까?","Recent Supporters":"최근 후원자","Seen on":"출처","Temporarily display this reply":"이 답글 임시 표시","Note not found":"노트를 찾을 수 없음","no more replies":"더 이상 답글 없음","Relay sets":"릴레이 세트","Favorite Relays":"즐겨찾는 릴레이","Following's Favorites":"팔로잉의 즐겨찾기","no more relays":"더 이상 릴레이 없음","Favorited by":"즐겨찾기한 사람","Post settings":"게시 설정","Media upload service":"미디어 업로드 서비스","Choose a relay":"릴레이 선택","no relays found":"릴레이를 찾을 수 없음",video:"비디오","Show n new notes":"{{n}}개의 새 노트 보기",YouTabName:"나와 함께",Bookmark:"북마크","Remove bookmark":"북마크 제거","no bookmarks found":"북마크 없음","no more bookmarks":"더 이상 북마크 없음",Bookmarks:"북마크","Show more":"더 보기",General:"일반",Autoplay:"자동 재생","Enable video autoplay on this device":"이 기기에서 비디오 자동 재생 활성화","Paste or drop media files to upload":"미디어 파일을 붙여넣거나 드래그하여 업로드",Preview:"미리보기","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"[{{eventAuthorName}}]가 서명한 이벤트를 게시하려고 합니다. 현재 [{{currentUsername}}]로 로그인되어 있습니다. 계속하시겠습니까?","Platinum Sponsors":"플래티넘 스폰서",From:"출처","Comment on":"댓글","View on njump.me":"njump.me에서 보기","Hide content from untrusted users":"신뢰하지 않는 사용자의 콘텐츠 숨기기","Only show content from your followed users and the users they follow":"내가 팔로우하는 사용자와 그들이 팔로우하는 사용자의 콘텐츠만 표시","Followed by":"팔로워","Mute user privately":"비공개 차단","Mute user publicly":"공개 차단",Quotes:"인용","Lightning Invoice":"라이트닝 인보이스","Bookmark failed":"북마크 실패","Remove bookmark failed":"북마크 제거 실패",Translation:"번역",Balance:"잔액",characters:"글자",jumbleTranslateApiKeyDescription:"이 API 키는 LibreTranslate를 지원하는 모든 곳에서 사용할 수 있습니다. 서비스 주소: {{serviceUrl}}","Top up":"충전","Will receive: {n} characters":"{{n}} 글자를 받게 됩니다","Top up {n} sats":"{{n}} 사토시 충전","Minimum top up is {n} sats":"최소 충전 금액은 {{n}} 사토시입니다",Service:"서비스","Reset API key":"API 키 재설정","Are you sure you want to reset your API key? This action cannot be undone.":"API 키를 재설정하시겠습니까? 이 작업은 되돌릴 수 없습니다.",Warning:"경고","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"현재 API 키는 즉시 무효화되며, 새 키로 업데이트하기 전까지 관련 앱이 작동하지 않습니다.","Service address":"서비스 주소",Pay:"결제",interactions:"상호작용",notifications:"알림","Show untrusted {type}":"신뢰하지 않는 {{type}} 표시","Hide untrusted {type}":"신뢰하지 않는 {{type}} 숨기기","Currently hiding {type} from untrusted users.":"현재 신뢰하지 않는 사용자의 {{type}}을(를) 숨기고 있습니다.","Currently showing all {type}.":"현재 모든 {{type}}을(를) 표시하고 있습니다.","Click continue to show all {type}.":"계속을 클릭하면 모든 {{type}}을(를) 표시합니다.","Click continue to hide {type} from untrusted users.":"계속을 클릭하면 신뢰하지 않는 사용자의 {{type}}을(를) 숨깁니다.","Trusted users include people you follow and people they follow.":"신뢰하는 사용자는 내가 팔로우하는 사람과 그들이 팔로우하는 사람을 포함합니다.",Continue:"계속","Successfully updated mute list":"차단 목록이 성공적으로 업데이트되었습니다","No pubkeys found from {url}":"{{url}}에서 pubkey를 찾을 수 없습니다","Translating...":"번역 중...",Translate:"번역","Show original":"원본 보기",Website:"웹사이트","Hide untrusted notes":"신뢰하지 않는 노트 숨기기","Open in another client":"다른 클라이언트에서 열기",Community:"커뮤니티",Group:"그룹","Live event":"라이브 이벤트",Article:"기사",Unfavorite:"즐겨찾기 취소","Recommended relays":"추천 릴레이","Blossom server URLs":"Blossom 서버 주소","You need to add at least one blossom server in order to upload media files.":"미디어 파일을 업로드하려면 최소한 하나의 Blossom 서버를 추가해야 합니다.","Recommended blossom servers":"추천 Blossom 서버","Enter Blossom server URL":"Blossom 서버 URL 입력",Preferred:"선호","Multiple choice (select one or more)":"다중 선택 (하나 이상 선택)",Vote:"투표","{{number}} votes":"{{number}} 표","Total votes":"총 투표수","Poll has ended":"투표 종료","Poll ends at {{time}}":"투표 종료 시간: {{time}}","Load results":"결과 로드","This is a poll note.":"이것은 투표 노트입니다.","Unlike regular notes, polls are not widely supported and may not display on other clients.":"일반 노트와 달리 투표는 널리 지원되지 않으며 다른 클라이언트에서 표시되지 않을 수 있습니다.","Option {{number}}":"옵션 {{number}}","Add Option":"옵션 추가","Allow multiple choices":"다중 선택 허용","End Date (optional)":"종료 날짜 (선택사항)","Clear end date":"종료 날짜 지우기","Relay URLs (optional, comma-separated)":"릴레이 URL (선택사항, 쉼표로 구분)","Remove poll":"투표 제거","Refresh results":"결과 새로 고침",Poll:"투표",Media:"미디어","Republish to ...":"다시 게시 ...","Successfully republish to your write relays":"쓰기 릴레이에 성공적으로 다시 게시됨","Failed to republish to your write relays: {{error}}":"쓰기 릴레이에 다시 게시하지 못함: {{error}}","Successfully republish to relay set: {{name}}":"릴레이 세트에 성공적으로 다시 게시됨: {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"릴레이 세트에 다시 게시하지 못함: {{name}}. 오류: {{error}}","Successfully republish to relay: {{url}}":"릴레이에 성공적으로 다시 게시됨: {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"릴레이에 다시 게시하지 못함: {{url}}. 오류: {{error}}","Write relays":"쓰기 릴레이","No more reactions":"더 이상 반응이 없습니다","No reactions yet":"아직 반응이 없습니다","No more zaps":"더 이상 잽이 없습니다","No zaps yet":"아직 잽이 없습니다","No more reposts":"더 이상 리포스트가 없습니다","No reposts yet":"아직 리포스트가 없습니다",Reposts:"리포스트",FollowListNotFoundConfirmation:"팔로우 목록을 찾을 수 없습니다. 새로 만드시겠습니까? 이전에 사용자를 팔로우한 적이 있다면 이 작업으로 인해 이전 팔로우 목록을 잃게 되므로 확인하지 마시기 바랍니다.",MuteListNotFoundConfirmation:"음소거 목록을 찾을 수 없습니다. 새로 만드시겠습니까? 이전에 사용자를 음소거한 적이 있다면 이 작업으로 인해 이전 음소거 목록을 잃게 되므로 확인하지 마시기 바랍니다.","Show NSFW content by default":"기본적으로 NSFW 콘텐츠 표시","Custom emoji management":"사용자 정의 이모지 관리","After changing emojis, you may need to refresh the page":"이모지를 변경한 후 페이지를 새로고침해야 할 수 있습니다","Too many read relays":"읽기 릴레이가 너무 많습니다","Too many write relays":"쓰기 릴레이가 너무 많습니다","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"{{count}}개의 읽기 릴레이가 있습니다. 대부분의 클라이언트는 2-4개의 릴레이만 사용하므로 더 설정하는 것은 불필요합니다.","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"{{count}}개의 쓰기 릴레이가 있습니다. 대부분의 클라이언트는 2-4개의 릴레이만 사용하므로 더 설정하는 것은 불필요합니다.","Optimize Relay Settings":"릴레이 설정 최적화","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"현재 릴레이 설정이 최적이 아닐 수 있습니다. 이로 인해 다른 사람들이 귀하의 게시물을 찾기 어려워지고 알림이 불완전할 수 있습니다.","Optimize Now":"지금 최적화","Maybe Later":"나중에","Don't remind me again":"다시 알리지 않기",Posts:"게시물",Articles:"기사",Highlights:"하이라이트",Polls:"투표","Voice Posts":"음성 게시물","Photo Posts":"사진 게시물","Video Posts":"비디오 게시물","Select All":"모두 선택","Clear All":"모두 지우기","Set as default filter":"기본 필터로 설정",Apply:"적용",Reset:"초기화","Share something on this Relay":"이 릴레이에서 무언가를 공유하세요","Try deleting this note":"이 노트를 삭제해 보세요","Deletion request sent to {{count}} relays":"삭제 요청이 {{count}}개의 릴레이로 전송되었습니다","Suitable Relays":"적합한 릴레이","People, keywords, or relays":"사람, 키워드 또는 릴레이","Hide content mentioning muted users":"뮤트된 사용자를 언급하는 콘텐츠 숨기기","This note mentions a user you muted":"이 노트는 뮤트한 사용자를 언급합니다",Filter:"필터","mentioned you in a note":"노트에서 당신을 언급했습니다","quoted your note":"당신의 노트를 인용했습니다","voted in your poll":"당신의 투표에 참여했습니다","reacted to your note":"당신의 노트에 반응했습니다","reposted your note":"당신의 노트를 리포스트했습니다","zapped your note":"당신의 노트를 잽했습니다","highlighted your note":"당신의 노트를 하이라이트했습니다","zapped you":"당신을 잽했습니다","Mark as read":"읽음으로 표시",Report:"신고","Successfully report":"신고가 성공적으로 완료되었습니다","Failed to report":"신고에 실패했습니다",nudity:"음란물",malware:"악성 소프트웨어",profanity:"욕설",illegal:"불법 콘텐츠",spam:"스팸",other:"기타","Notification list style":"알림 목록 스타일","See extra info for each notification":"각 알림의 추가 정보 보기","See more notifications at a glance":"한눈에 더 많은 알림 보기",Detailed:"상세",Compact:"간단","Submit Relay":"릴레이 제출",Homepage:"홈페이지","Proof of Work (difficulty {{minPow}})":"작업 증명 (난이도 {{minPow}})","Proof of Work":"작업 증명","Posts & comments difficulty":"게시물 및 댓글 난이도","Reactions difficulty":"반응 난이도","Image Mode":"이미지 모드","Media Feed":"미디어 피드","Text Only":"텍스트 피드","Text Post":"텍스트 게시","Picture Post":"사진 게시","Video Post":"동영상 게시","Short Video Post":"짧은 동영상",Text:"텍스트",Picture:"사진",Video:"동영상","Short Video":"짧은 동영상","Post Type":"게시물 유형","via {{client}}":"{{client}} 통해","Auto-load media":"미디어 자동 로드",Always:"항상","Wi-Fi only":"Wi-Fi만",Never:"안함","Click to load image":"이미지 로드하려면 클릭","Click to load media":"미디어 로드하려면 클릭","Click to load YouTube video":"YouTube 비디오 로드하려면 클릭","{{count}} reviews":"{{count}}개 리뷰","Write a review":"리뷰 작성","No reviews yet. Be the first to write one!":"아직 리뷰가 없습니다. 첫 번째 리뷰를 작성해보세요!","View more reviews":"더 많은 리뷰 보기","Failed to review":"리뷰 실패","Write a review and pick a star rating":"리뷰를 작성하고 별점을 선택하세요",Submit:"제출","Reviews for {{relay}}":"{{relay}}에 대한 리뷰","No relays selected":"선택된 릴레이가 없습니다","Post to":"게시 대상","Write relays and {{count}} other relays":"쓰기 릴레이 및 기타 {{count}}개 릴레이","{{count}} relays":"{{count}}개 릴레이","Republishing...":"다시 게시 중...","Trending Notes":"트렌딩 노트","Connected to":"연결됨","Disconnect Wallet":"지갑 연결 해제","Are you absolutely sure?":"정말 확실합니까?","You will not be able to send zaps to others.":"다른 사람에게 잽을 보낼 수 없습니다.",Disconnect:"연결 해제","Start with a Rizful Vault":"Rizful Vault로 시작하기","or other wallets":"또는 다른 지갑","Rizful Vault":"Rizful Vault","Rizful Vault connected!":"Rizful Vault 연결됨!","You can now use your Rizful Vault to zap your favorite notes and creators.":"이제 Rizful Vault를 사용하여 좋아하는 노트와 크리에이터에게 잽을 보낼 수 있습니다.","Your Lightning Address":"귀하의 라이트닝 주소","New to Rizful?":"Rizful이 처음이신가요?","Sign up for Rizful":"Rizful에 가입하기","If you already have a Rizful account, you can skip this step.":"이미 Rizful 계정이 있다면 이 단계를 건너뛸 수 있습니다.","Get your one-time code":"일회용 코드 받기","Get code":"코드 받기","Connect to your Rizful Vault":"Rizful Vault에 연결","Paste your one-time code here":"여기에 일회용 코드를 붙여넣기",Connect:"연결","Set up your wallet to send and receive sats!":"사츠를 보내고 받을 수 있도록 지갑을 설정하세요!","Set up":"설정하기",Pinned:"고정됨",Unpin:"고정 해제",Unpinning:"고정 해제 중","Pinning...":"고정 중...","Pinned!":"고정됨!","Failed to pin: {{error}}":"고정 실패: {{error}}","Unpinning...":"고정 해제 중...","Unpinned!":"고정 해제됨!","Failed to unpin: {{error}}":"고정 해제 실패: {{error}}","Unpin from profile":"프로필에서 고정 해제","Pin to profile":"프로필에 고정",Appearance:"외관","Pure Black":"순수한 검은색",Default:"기본",Red:"빨강",Orange:"주황",Amber:"호박색",Yellow:"노랑",Lime:"라임",Green:"초록",Emerald:"에메랄드",Teal:"청록",Cyan:"시안",Sky:"하늘색",Blue:"파랑",Indigo:"남색",Violet:"보라",Purple:"자주",Fuchsia:"자홍",Pink:"분홍",Rose:"장미","Primary color":"기본 색상",Layout:"레이아웃","Two-column":"두 열","Single-column":"한 열",Reviews:"리뷰",Extension:"확장 프로그램",Remote:"원격","Encrypted Key":"암호화된 키","Private Key":"개인 키","Welcome to RogueJumble":"Jumble에 오신 것을 환영합니다","RogueJumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"Jumble은 릴레이 탐색에 중점을 둔 클라이언트입니다. 흥미로운 릴레이를 RogueJumble 탐색하거나 로그인하여 팔로잉 피드를 확인하세요.","Explore Relays":"릴레이 탐색","Choose a feed":"피드 선택","and {{x}} others":"및 기타 {{x}}명",selfZapWarning:"RogueJumble은 자신에게 Zap을 보낼 때 발생하는 일에 대해 책임을 지지 않습니다. 본인의 책임 하에 진행하세요. 😉⚡","Emoji Pack":"이모지 팩","Emoji pack added":"이모지 팩이 추가되었습니다","Add emoji pack failed":"이모지 팩 추가 실패","Emoji pack removed":"이모지 팩이 제거되었습니다","Remove emoji pack failed":"이모지 팩 제거 실패",Added:"추가됨","Emoji Packs":"이모지 팩","My Packs":"내 팩","Adding...":"추가 중...","Removing...":"제거 중...",Reload:"다시 불러오기","Request to Join Relay":"릴레이 가입 요청","Leave Relay":"릴레이 떠나기",Leave:"나가기","Are you sure you want to leave this relay?":"이 릴레이를 떠나시겠습니까?","Join request sent successfully":"가입 요청을 성공적으로 보냈습니다","Failed to send join request":"가입 요청 전송 실패","Leave request sent successfully":"떠나기 요청을 성공적으로 보냈습니다","Failed to send leave request":"떠나기 요청 전송 실패","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"초대 코드가 있으면 입력하세요. 그렇지 않으면 비워두고 요청을 보내세요.","Invite Code (Optional)":"초대 코드 (선택 사항)","Enter invite code":"초대 코드 입력","Sending...":"전송 중...","Send Request":"요청 보내기","You can get an invite code from a relay member.":"릴레이 회원으로부터 초대 코드를 받을 수 있습니다.","Enter the invite code you received from a relay member.":"릴레이 회원으로부터 받은 초대 코드를 입력하세요.","Get Invite Code":"초대 코드 받기","Share this invite code with others to invite them to join this relay.":"이 초대 코드를 다른 사람과 공유하여 이 릴레이에 초대하세요.","Invite Code":"초대 코드",Copy:"복사","This invite code can be used by others to join the relay.":"이 초대 코드는 다른 사람이 릴레이에 가입하는 데 사용할 수 있습니다.","No invite code available from this relay.":"이 릴레이에서 사용 가능한 초대 코드가 없습니다.",Close:"닫기","Failed to get invite code from relay":"릴레이에서 초대 코드 가져오기 실패","Failed to get invite code":"초대 코드 가져오기 실패","Invite code copied to clipboard":"초대 코드가 클립보드에 복사되었습니다","Favicon URL":"파비콘 URL","Filter out onion relays":"어니언 릴레이 필터링","Click to load X post":"클릭하여 X 게시물 로드","View Nostr comments":"Nostr 댓글 보기","Search for notes":"노트 검색","Search for hashtag":"해시태그 검색","Go to note":"노트로 이동","Go to relay":"릴레이로 이동","View discussions about this":"이 콘텐츠에 대한 토론 보기","Open link":"링크 열기","View Nostr discussions":"Nostr 토론 보기","Optimal relays":"최적 릴레이","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"최적 릴레이(쓰기 릴레이 및 언급된 사용자의 읽기 릴레이)에 성공적으로 재게시되었습니다","Failed to republish to optimal relays: {{error}}":"최적 릴레이에 재게시 실패: {{error}}","External Content":"외부 콘텐츠",Highlight:"하이라이트","Optimal relays and {{count}} other relays":"최적 릴레이 및 기타 {{count}}개 릴레이","Low trust ranking ({{percentile}}%)":"신뢰도가 낮은 계정 ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"의심스러운 계정 (신뢰 점수: {{percentile}}%)","n users":"{{count}}명의 사용자","View Details":"세부 정보 보기","Follow Pack Not Found":"팔로우 팩을 찾을 수 없음","Follow pack not found":"팔로우 팩을 찾을 수 없습니다",Users:"사용자",Feed:"피드","Follow Pack":"팔로우 팩","24h Pulse":"24h 펄스","Load earlier":"이전 데이터 로드","Last 24 hours":"최근 24시간","Last {{count}} days":"최근 {{count}}일",notes:"노트","Quick reaction":"빠른 반응","If enabled, you can react with a single click. Click and hold for more options":"활성화하면 한 번의 클릭으로 반응할 수 있습니다. 더 많은 옵션을 보려면 길게 누르세요","Quick reaction emoji":"빠른 반응 이모지","Select emoji":"이모지 선택","NSFW content display":"NSFW content display","Hide completely":"Hide completely","Show but hide content":"Show but hide content","Show directly":"Show directly","Click to view":"Click to view","Special Follow":"특별 팔로우","Unfollow Special":"특별 팔로우 해제","Personal Feeds":"개인 피드","Relay Feeds":"릴레이 피드","Create Highlight":"하이라이트 만들기","Write your thoughts about this highlight...":"이 하이라이트에 대한 생각을 작성하세요...","Publish Highlight":"하이라이트 게시","Show replies":"답글 표시","Hide replies":"답글 숨기기","Welcome to RogueJumble!":"Jumble에 오신 것을 환영합니다!","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"아직 아무도 팔로우하지 않아서 피드가 비어 있습니다. 흥미로운 콘텐츠를 탐색하고 마음에 드는 사용자를 팔로우해보세요!","Search Users":"사용자 검색","Create New Account":"새 계정 만들기",Important:"중요","Generate Your Account":"계정 생성","Your private key IS your account. Keep it safe!":"개인 키가 바로 당신의 계정입니다. 안전하게 보관하세요!","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"Nostr에서는 개인 키가 바로 당신의 계정입니다. 개인 키를 잃으면 계정을 영구적으로 잃게 됩니다.","Your Private Key":"개인 키","Generate new key":"새 키 생성","Download Backup File":"백업 파일 다운로드","Copied to Clipboard":"클립보드에 복사됨","Copy to Clipboard":"클립보드에 복사","I already saved my private key securely.":"이미 개인 키를 안전하게 저장했습니다.","Almost Done!":"거의 완료되었습니다!","Set a password to encrypt your key, or skip to finish":"키를 암호화할 비밀번호를 설정하거나 건너뛰어 완료하세요","Password Protection (Optional)":"비밀번호 보호 (선택사항)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"비밀번호를 설정하면 이 브라우저에서 개인 키가 암호화됩니다. 이 단계를 건너뛸 수 있지만 보안 강화를 위해 설정하는 것을 권장합니다.","Password (Optional)":"비밀번호 (선택사항)","Enter password or leave empty to skip":"비밀번호를 입력하거나 비워두어 건너뛰세요","Confirm Password":"비밀번호 확인","Re-enter password":"비밀번호 재입력","Passwords do not match":"비밀번호가 일치하지 않습니다","Finish Signup":"가입 완료","Create Your Nostr Account":"Nostr 계정 만들기","Generate your unique private key. This is your digital identity.":"고유한 개인 키를 생성합니다. 이것이 당신의 디지털 신원입니다.","Critical: Save Your Private Key":"중요: 개인 키를 저장하세요","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"개인 키가 곧 계정 그 자체입니다. 비밀번호 복구 기능이 없습니다. 분실하면 계정을 영구적으로 잃게 됩니다. 안전한 곳에 저장하세요.","I have safely backed up my private key":"개인 키를 안전하게 백업했습니다","Secure Your Account":"계정 보호하기","Add an extra layer of protection with a password":"비밀번호로 추가 보호 계층 추가","Password Protection (Recommended)":"비밀번호 보호 (권장)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"이 브라우저에서 개인 키를 암호화할 비밀번호를 추가합니다. 선택사항이지만 더 나은 보안을 위해 강력히 권장합니다.","Create a password (or skip)":"비밀번호 생성(또는 건너뛰기)","Enter your password again":"비밀번호를 다시 입력하세요","Complete Signup":"가입 완료",Recommended:"추천","Enter Password":"비밀번호 입력",Password:"비밀번호",Confirm:"확인","trust-filter.title":"신뢰 점수 필터","trust-filter.off":"끄기","trust-filter.low":"낮음","trust-filter.medium":"중간","trust-filter.high":"높음","trust-filter.wot":"WoT","trust-filter.filter-threshold":"필터 임계값","trust-filter.quick-presets":"빠른 프리셋","trust-filter.show-all-content":"모든 콘텐츠 표시","trust-filter.only-show-wot":"신뢰 네트워크만 표시 (팔로우 + 팔로우의 팔로우)","trust-filter.hide-bottom-percent":"신뢰도 하위 {{score}}% 사용자 필터링","trust-filter.trust-score-description":"사용자의 평판과 소셜 네트워크를 기반으로 신뢰도 백분위수 계산","Auto-load profile pictures":"프로필 사진 자동 로드","Disable live feed":"라이브 피드 비활성화","Enable live feed":"라이브 피드 활성화","Default relays":"기본 릴레이","Reset to default":"기본값으로 재설정","Default relays description":"다른 사용자의 릴레이 구성을 조회하는 데 사용되며, 사용자가 릴레이를 구성하지 않은 경우 대체 수단으로 사용됩니다.","Default relays warning":"경고: 이러한 설정을 임의로 수정하지 마십시오. 기본 경험에 영향을 줄 수 있습니다.","Invalid relay URL":"유효하지 않은 릴레이 URL","Muted words":"차단 단어","Add muted word":"차단 단어 추가","Zap Details":"잽 세부 정보","Default trust score filter threshold ({{n}}%)":"기본 신뢰 점수 필터 임계값 ({{n}}%)","No notes found":"노트를 찾을 수 없습니다","Try again later or check your connection":"나중에 다시 시도하거나 연결을 확인하세요","Hide indirect":"간접 숨기기","Copy note content":"노트 내용 복사","Video loop":"비디오 반복","Automatically replay videos when they end":"비디오가 끝나면 자동으로 다시 재생","Relays used for searching notes (NIP-50)":"노트 검색에 사용되는 릴레이 (NIP-50)","Protected event (NIP-70)":"보호된 이벤트 (NIP-70)",Protected:"보호됨","Protected event hint":"보호된 이벤트(NIP-70)는 작성자만 게시할 수 있습니다. 릴레이는 제3자의 이벤트를 거부하여 다른 사람이 콘텐츠를 재배포하는 것을 방지합니다. 참고: 모든 릴레이가 보호된 이벤트를 지원하는 것은 아닙니다.","Allow insecure connections":"안전하지 않은 연결 허용","Allow insecure connections description":"http:// 리소스 로드 및 ws:// 릴레이 연결을 허용합니다. 브라우저 혼합 콘텐츠 경고가 발생할 수 있습니다.","reacted to":"에 반응했습니다",Reaction:"반응","Show others this was sent via Jumble":"다른 사용자에게 이것이 RogueJumble을(를) 통해 전송되었음을 표시","Enjoying Jumble?":"RogueJumble을(를) 즐기고 계신가요?","Your donation helps me maintain Jumble and make it better! 😊":"기부해 주시면 RogueJumble을(를) 유지하고 더 좋게 만드는 데 도움이 됩니다! 😊","Welcome to Jumble":"RogueJumble에 오신 것을 환영합니다","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","n users_one":"{{count}} 사용자","n users_other":"{{count}} 사용자","Welcome to Jumble!":"RogueJumble에 오신 것을 환영합니다!","Font size":"글꼴 크기","Advanced mode":"고급 모드","Post type selector":"게시물 유형 선택기","Shows post kind dropdown when creating posts":"게시물 작성 시 게시물 유형 드롭다운 표시","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"커뮤니티 검색...","No communities found":"커뮤니티를 찾을 수 없습니다","No communities yet":"아직 커뮤니티가 없습니다"}},d3={translation:{"Welcome! 🥳":"Witamy! 🥳",About:"O Nas","New Note":"Nowa Publikacja",Post:"Publikuj",Home:"Strona Główna","Relay settings":"Ustawienia transmiterów",Settings:"Ustawienia",SidebarRelays:"Transmitery",Refresh:"Odśwież",Profile:"Twój Profil",Logout:"Wyloguj",Following:"Obserwowani",followings:"niżej wymienionych",reposted:"Udostępnił","just now":"teraz","minute ago_one":"{{count}} minutę temu","minute ago_other":"{{count}} minut temu","n m":"{{n}}m","hour ago_one":"{{count}} godzinę temu","hour ago_other":"{{count}} godzin temu","n h":"{{n}}h","day ago_one":"{{count}} dzień temu","day ago_other":"{{count}} dni temu","n d":"{{n}}d",date:"{{timestamp, date}}",Follow:"Obserwuj",Unfollow:"Porzuć","Follow failed":"Obserwacja nieudana","Unfollow failed":"Porzucenie obserwacji nieudane","show new notes":"Pokaż nowe wpisy","loading...":"ładowanie...","Loading...":"Ładowanie...","no more notes":"Koniec wpisów","reply to":"Odpowiedź na",reply:"odpowiedz",Reply:"Skomentuj","load more older replies":"Pobierz więcej starszych odpowiedzi","Write something...":"Napisz coś...",Cancel:"Anuluj",Mentions:"Wzmianki","Failed to post":"Nie udało się opublikować","Post successful":"Twój wpis został wysłany.","Your post has been published":"Publikowani są jedynie użytkownicy z białej listy",Repost:"Udostępnij",Quote:"Zacytuj","Copy event ID":"Skopiuj ID wydarzenia","Copy user ID":"Skopiuj ID użytkownika","View raw event":"Pokaż szczegóły wpisu",Like:"Polub","switch to light theme":"Przełącz na jasny motyw","switch to dark theme":"Przełącz na ciemny motyw ","switch to system theme":"Przełącz na motyw systemu (automatyczny)",Note:"Cały wpis",note:"note","username's following":"{{username}} obserwuje:","username's used relays":"{{username}} użył transmiterów","username's muted":"Zablokowani przez {{username}} ",Login:"Logowanie","Follows you":"Obserwujący","Relay Settings":"Ustawienia  transmiterów","Relay set name":"Wpisz nazwę grupy","Add a new relay set":"Utwórz grupę transmiterów",Add:"Dodaj","n relays":"{{n}} szt.",Rename:"Zmień nazwę","Copy share link":"Kopiuj link",Delete:"Usuń","Relay already exists":"Transmiter już istnieje","invalid relay URL":"Nieprawidłowy URL transmitera","Add a new relay":"Dodaj nowy transmiter",back:"z powrotem","Lost in the void":"Zagubiony w przestrzeni","Carry me home":"Na stronę główną","no replies":"Brak komentarzy","Reply to":"Odpowiedz do",Search:"Wyszukaj","The relays you are connected to do not support search":"Podłączone transmitery nie obsługują wyszukiwania","Show more...":"Więcej...","All users":"Wszyscy użytkownicy","Display replies":"Wyświetl komentarze",Notes:"Wpisy",Replies:"Komentarze",Notifications:"Powiadomienia","no more notifications":"Koniec powiadomień","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"Logowanie za pomocą prywatnego klucza jest niebezpieczne. Zaleca się korzystanie z rozszerzenia przeglądarki, takiego jak alby, nostr-keyx lub nos2x. Jeśli musisz użyć prywatnego klucza, ustaw co najmniej hasło do szyfrowania.","Login with Browser Extension":"Logowanie z rozszerzeniem przeglądarki","Login with Bunker":"Logowanie z bunkrem","Login with Private Key":"Logowanie z prywatnym kluczem (nsec)","reload notes":"Odśwież","Logged in Accounts":"Zalogowane konta","Add an Account":"Dodaj Konto","More options":"Więcej opcji","Add client tag":"Dodaj tag klienta","Show others this was sent via RogueJumble":"Pokaż innym, że zostało to wysłane przez RogueJumble","Are you sure you want to logout?":"Czy na pewno chcesz się wylogować?","relay sets":"Zestawy transmiterów",edit:"edytuj",Languages:"Języki",Theme:"Wygląd",System:"Domyślny",Light:"Jasny",Dark:"Ciemny",Temporary:"Tymczasowe","Choose a relay set":"Wybierz zestaw transmiterów","Switch account":"Zmień konto",Pictures:"Zdjęcia","Picture note":"Wpis Graficzny","A special note for picture-first clients like Olas":"Publikacja ze zdjęciami i opisem dla klientów takich jak Olas","Picture note requires images":"Wpis graficzny wymaga obrazów",Relays:"Transmitery",Image:"grafika","R & W":"O & Z",Read:"Odczyt",Write:"Zapis","Pull relay sets":"Pobierz zestaw transmiterów","Select the relay sets you want to pull":"Wybierz zestaw transmiterów do pobrania","No relay sets found":"Nie znaleziono zestawu transmiterów","Pull n relay sets":"Pobierz {{n}} zestawów transmiterów",Pull:"Pobierz","Select all":"Wszystkie","Relay Sets":"Grupy transmiterów","Read & Write Relays":"Transmitery zapisu i odczytu","read relays description":"Transmitery odczytu służą do wyszukiwania zdarzeń dotyczących użytkownika. Inni użytkownicy będą publikować wpisy, które chcą, abyś zobaczył, w transmiterach odczytu.","write relays description":"Transmitery zapisu służą do publikowania wydarzeń. Inni użytkownicy będą wyszukiwać zdarzenia z transmiterów zapisu.","read & write relays notice":"Liczba serwerów odczytu i zapisu powinna wynosić od 2 do 4.","Don't have an account yet?":"Nie masz jeszcze konta?","or simply generate a private key":"lub wygeneruj klucz prywatny nowego konta","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"Jest to klucz prywatny. Nie należy go nikomu udostępniać. Przechowuj go w bezpiecznym miejscu. W przypadku jego utraty nie będzie można go odzyskać.",Edit:"Edytuj",Save:"Zapisz","Display Name":"Twoja nazwa użytkownika",Bio:"O mnie","Nostr Address (NIP-05)":"Adres Nostr (NIP-05)","Invalid NIP-05 address":"Nieprawidłowy adres NIP-05","Copy private key":"Kopiuj klucz prywatny","Enter the password to decrypt your ncryptsec":"Wprowadź hasło, aby odszyfrować ncryptsec",Back:"Wróć","optional: encrypt nsec":"opcjonalnie: encrypt nsec",password:"hasło","Sign up":"Zarejestruj się","Save to":"Zapisz do","Enter a name for the new relay set":"Wpisz nazwę nowegej grupy transmiterów","Save to a new relay set":"Zapisz do nowego zestawu transmiterów",Mute:"Zablokuj",Muted:"Zablokowani",Unmute:"Przywróć","Unmute user":"Przywróć użytkownika ","Append n relays":"Dodaj {{n}} transmiterów",Append:"Dodaj","Select relays to append":"Wybierz transmitery do dodania","calculating...":"obliczanie...","Calculate optimal read relays":"Obliczanie optymalnego odczytu transmiterów","Login to set":"Zaloguj się","Please login to view following feed":"Zaloguj się, aby wyświetlić poniższy wpis","Send only to r":"Wyślij tylko do {{r}}","Send only to these relays":"Wyślij tylko do tych transmiterów",Explore:"Transmitery","Search relays":"Transmitery wyszukiwania",relayInfoBadgeAuth:"✔️",relayInfoBadgeSearch:"Wyszukiwarka",relayInfoBadgePayment:"Płatności",Operator:"Operator",Contact:"Kontakt",Software:"Software",Version:"Wersja","Random Relays":"Losowo wybrane",randomRelaysRefresh:"Odśwież","Explore more":"Zobacz więcej","Payment page":"Strona płatności","Supported NIPs":"Obsługiwane NIP-y","Open in a":"Otwórz w {{a}}","Cannot handle event of kind k":"Nie można obsłużyć zdarzenia typu {{k}}","Encrypted direct messages not supported":"Szyfrowane wiadomości bezpośrednie nie są obsługiwane","Sorry! The note cannot be found 😔 ":"Przepraszam! Nie można znaleźć wpisu 😔","This user has been muted":"Ten użytkownik został przyblokowany",Wallet:"Portfel",Sats:"Satoszy",sats:"satoszy","Zap to":"Zap dla użytkownika ","Zap n sats":"Zap {{n}} satoszów",zapComment:"Komentarz do zapa","Default zap amount":"Standardowa kwota zapa","Default zap comment":"Standardowy komentarz do zapa","Lightning Address (or LNURL)":"Lightning Adres (lub LNURL)","Quick zap":"Szybki zap","If enabled, you can zap with a single click. Click and hold for custom amounts":"Jeśli włączysz tę opcję, będzie można wysyłać zapa jednym kliknięciem. Naciśnij i przytrzymaj, aby wprowadzić inną kwotę",All:"Wszystkie",Reactions:"Odzewy",Zaps:"Zapy","Enjoying RogueJumble?":"Podoba ci się RogueJumble?","Your donation helps me maintain RogueJumble and make it better! 😊":"Twoja darowizna pomoże mi utrzymać i ulepszać RogueJumble! 😊","Earlier notifications":"Wcześniejsze powiadomienia","Temporarily display this note":"Tymczas wyświetl ten wpis",buttonFollowing:"Obserwujesz","Are you sure you want to unfollow this user?":"Czy na pewno chcesz przestać obserwować tego użytkownika?","Recent Supporters":"Ostatni wspierający","Seen on":"Widziany na","Temporarily display this reply":"Tymczasowo wyświetl tę odpowiedź","Note not found":"Nie znaleziono wpisu","no more replies":"brak kolejnych odpowiedzi","Relay sets":"Zestawy transmiterów","Favorite Relays":"Ulubione transmitery","Following's Favorites":"Ulubione transmitery obserwowanych","no more relays":"brak kolejnych transmiterów","Favorited by":"Ulubione od","Post settings":"Ustawienia publikacji","Media upload service":"Usługa przesyłania mediów","Choose a relay":"Wybierz transmiter","no relays found":"Nie znaleziono transmiterów",video:"wideo","Show n new notes":"Nowych wpisów: {{n}} ",YouTabName:"Twoje",Bookmark:"Zakładka","Remove bookmark":"Usuń zakładkę","no bookmarks found":"Nie znaleziono zakładek","no more bookmarks":"Koniec zakładek",Bookmarks:"Zakładki","Show more":"Pokaż więcej",General:"Ogólne",Autoplay:"Autoodtwarzanie","Enable video autoplay on this device":"Włącz automatyczne odtwarzanie wideo na tym urządzeniu","Paste or drop media files to upload":"Wklej lub upuść pliki multimedialne, aby przesłać",Preview:"Podgląd","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"Zaraz opublikujesz zdarzenie podpisane przez [{{eventAuthorName}}]. Obecnie jesteś zalogowany jako [{{currentUsername}}]. Czy jesteś pewien?","Platinum Sponsors":"Sponsorzy Platynowi",From:"Od","Comment on":"Komentarz do","View on njump.me":"Zobacz na njump.me","Hide content from untrusted users":"Ukryj treści od nieznanych użytkowników","Only show content from your followed users and the users they follow":"Pokaż tylko treści od użytkowników, których obserwujesz i ich obserwowanych","Followed by":"Obserwujący","Mute user privately":"Zablokuj użytkownika prywatnie","Mute user publicly":"Zablokuj użytkownika publicznie",Quotes:"Cytaty","Lightning Invoice":"Faktura Lightning","Bookmark failed":"Nie udało się dodać zakładki","Remove bookmark failed":"Nie udało się usunąć zakładki",Translation:"Tłumaczenie",Balance:"Saldo",characters:"znaków",jumbleTranslateApiKeyDescription:"Ten klucz API możesz używać wszędzie tam, gdzie obsługiwane jest LibreTranslate. Adres usługi to {{serviceUrl}}","Top up":"Doładuj","Will receive: {n} characters":"Otrzymasz: {{n}} znaków","Top up {n} sats":"Doładuj {{n}} satoszów","Minimum top up is {n} sats":"Minimalne doładowanie to {{n}} satoszów",Service:"Usługa","Reset API key":"Zresetuj klucz API","Are you sure you want to reset your API key? This action cannot be undone.":"Czy na pewno chcesz zresetować swój klucz API? Ta akcja jest nieodwracalna.",Warning:"Ostrzeżenie","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"Twój obecny klucz API stanie się nieaktywny natychmiast, a wszystkie aplikacje korzystające z niego przestaną działać, dopóki nie zaktualizujesz ich nowym kluczem.","Service address":"Adres usługi",Pay:"Zapłać",interactions:"Interakcje",notifications:"Powiadomienia","Show untrusted {type}":"Pokaż nieznane {{type}}","Hide untrusted {type}":"Ukryj nieznane {{type}}","Currently hiding {type} from untrusted users.":"Obecnie ukrywasz {{type}} od nieznanych użytkowników.","Currently showing all {type}.":"Obecnie wyświetlasz wszystkie {{type}}.","Click continue to show all {type}.":"Kliknij kontynuuj, aby wyświetlić wszystkie {{type}}.","Click continue to hide {type} from untrusted users.":"Kliknij kontynuuj, aby ukryć {{type}} od nieznanych użytkowników.","Trusted users include people you follow and people they follow.":"Zaufani użytkownicy to osoby, które obserwujesz i osoby, które oni obserwują.",Continue:"Kontynuuj","Successfully updated mute list":"Sukces aktualizacji listy zablokowanych użytkowników","No pubkeys found from {url}":"Nie znaleziono kluczy publicznych z {{url}}","Translating...":"Tłumaczenie...",Translate:"Przetłumacz","Show original":"Pokaż oryginał",Website:"Strona internetowa","Hide untrusted notes":"Ukryj wpisy od nieznanych użytkowników","Open in another client":"Otwórz w innym kliencie",Community:"Społeczność",Group:"Grupa","Live event":"Wydarzenie na żywo",Article:"Artykuł",Unfavorite:"Usuń z ulubionych","Recommended relays":"Rekomendowane transmitery","Blossom server URLs":"Adresy serwerów Blossom","You need to add at least one blossom server in order to upload media files.":"Musisz dodać przynajmniej jeden serwer Blossom, aby móc przesyłać pliki multimedialne.","Recommended blossom servers":"Zalecane serwery Blossom","Enter Blossom server URL":"Wprowadź adres URL serwera Blossom",Preferred:"Preferowany","Multiple choice (select one or more)":"Wielokrotny wybór (wybierz jeden lub więcej)",Vote:"Głosuj","{{number}} votes":"{{number}} głosów","Total votes":"Łączna liczba głosów","Poll has ended":"Ankieta zakończona","Poll ends at {{time}}":"Ankieta kończy się o {{time}}","Load results":"Załaduj wyniki","This is a poll note.":"To jest wpis ankiety.","Unlike regular notes, polls are not widely supported and may not display on other clients.":"W przeciwieństwie do zwykłych wpisów, ankiety nie są szeroko obsługiwane i mogą nie wyświetlać się w innych klientach.","Option {{number}}":"Opcja {{number}}","Add Option":"Dodaj opcję","Allow multiple choices":"Zezwól na wielokrotny wybór","End Date (optional)":"Data zakończenia (opcjonalna)","Clear end date":"Wyczyść datę zakończenia","Relay URLs (optional, comma-separated)":"Adresy URL transmiterów (opcjonalne, oddzielone przecinkami)","Remove poll":"Usuń ankietę","Refresh results":"Odśwież wyniki",Poll:"Ankieta",Media:"media","Republish to ...":"Przekaż ponownie do ...","Successfully republish to your write relays":"Pomyślnie ponownie opublikowano na twoich transmiterach zapisu","Failed to republish to your write relays: {{error}}":"Nie udało się ponownie opublikować na twoich transmiterach zapisu: {{error}}","Successfully republish to relay set: {{name}}":"Pomyślnie ponownie opublikowano do zestawu transmiterów: {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"Nie udało się ponownie opublikować do zestawu transmiterów: {{name}}. Błąd: {{error}}","Successfully republish to relay: {{url}}":"Pomyślnie ponownie opublikowano do transmitera: {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"Nie udało się ponownie opublikować do transmitera: {{url}}. Błąd: {{error}}","Write relays":"Transmitery zapisu","No more reactions":"Brak kolejnych reakcji","No reactions yet":"Brak reakcji","No more zaps":"Brak kolejnych zapów","No zaps yet":"Brak zapów","No more reposts":"Brak kolejnych repostów","No reposts yet":"Brak repostów",Reposts:"Reposty",FollowListNotFoundConfirmation:"Lista obserwowanych nie została znaleziona. Czy chcesz utworzyć nową? Jeśli wcześniej obserwowałeś użytkowników, proszę NIE potwierdzaj, ponieważ ta operacja spowoduje utratę poprzedniej listy obserwowanych.",MuteListNotFoundConfirmation:"Lista przyblokowanych nie została znaleziona. Czy chcesz utworzyć nową? Jeśli wcześniej blokowałeś użytkowników, proszę NIE potwierdzaj, ponieważ ta operacja spowoduje utratę poprzedniej listy przyblokowanych.","Show NSFW content by default":"Domyślnie pokazuj treści NSFW","Custom emoji management":"Zarządzanie niestandardowymi emoji","After changing emojis, you may need to refresh the page":"Po zmianie emoji może być konieczne odświeżenie strony","Too many read relays":"Za dużo transmiterów odczytu","Too many write relays":"Za dużo transmiterów zapisu","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"Masz {{count}} transmiterów odczytu. Większość klientów używa tylko 2-4 transmiterów, ustawianie większej liczby jest zbędne.","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"Masz {{count}} transmiterów zapisu. Większość klientów używa tylko 2-4 transmiterów, ustawianie większej liczby jest zbędne.","Optimize Relay Settings":"Optymalizuj ustawienia transmiterów","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"Twoja obecna konfiguracja transmiterów może nie być optymalna. To może utrudnić innym znalezienie Twoich postów i może skutkować niekompletnymi powiadomieniami.","Optimize Now":"Optymalizuj teraz","Maybe Later":"Może później","Don't remind me again":"Nie przypominaj mi więcej",Posts:"Posty",Articles:"Artykuły",Highlights:"Wyróżnienia",Polls:"Ankiety","Voice Posts":"Posty głosowe","Photo Posts":"Posty ze zdjęciami","Video Posts":"Posty wideo","Select All":"Zaznacz wszystko","Clear All":"Wyczyść wszystko","Set as default filter":"Ustaw jako domyślny filtr",Apply:"Zastosuj",Reset:"Resetuj","Share something on this Relay":"Udostępnij coś na tym transmiterze","Try deleting this note":"Spróbuj usunąć ten wpis","Deletion request sent to {{count}} relays":"Żądanie usunięcia wysłano do {{count}} transmiterów","Suitable Relays":"Odpowiednie transmitery","People, keywords, or relays":"Osoby, słowa kluczowe lub transmitery","Hide content mentioning muted users":"Ukryj treści wspominające wyciszonych użytkowników","This note mentions a user you muted":"Ten wpis wspomina użytkownika, którego wyciszyłeś",Filter:"Filtr","mentioned you in a note":"wspomniał o tobie we wpisie","quoted your note":"zacytował twój wpis","voted in your poll":"zagłosował w twojej ankiecie","reacted to your note":"zareagował na twój wpis","reposted your note":"repostował twój wpis","zapped your note":"zappował twój wpis","highlighted your note":"wyróżnił twój wpis","zapped you":"zappował cię","Mark as read":"Oznacz jako przeczytane",Report:"Zgłoś","Successfully report":"Pomyślnie zgłoszono","Failed to report":"Nie udało się zgłosić",nudity:"Nagość",malware:"Złośliwe oprogramowanie",profanity:"Wulgaryzmy",illegal:"Nielegalna treść",spam:"Spam",other:"Inne","Notification list style":"Styl listy powiadomień","See extra info for each notification":"Zobacz dodatkowe informacje dla każdego powiadomienia","See more notifications at a glance":"Zobacz więcej powiadomień na pierwszy rzut oka",Detailed:"Szczegółowy",Compact:"Zwięzły","Submit Relay":"Prześlij transmiter",Homepage:"Strona główna","Proof of Work (difficulty {{minPow}})":"Dowód pracy (trudność {{minPow}})","Proof of Work":"Dowód pracy","Posts & comments difficulty":"Trudność wpisów i komentarzy","Reactions difficulty":"Trudność reakcji","Image Mode":"Tryb obrazu","Media Feed":"Feed mediów","Text Only":"Feed tekstowy","Text Post":"Wpis tekstowy","Picture Post":"Wpis ze zdjęciem","Video Post":"Wpis wideo","Short Video Post":"Krótkie wideo",Text:"Tekst",Picture:"Zdjęcie",Video:"Wideo","Short Video":"Krótkie wideo","Post Type":"Typ wpisu","via {{client}}":"przez {{client}}","Auto-load media":"Automatyczne ładowanie mediów",Always:"Zawsze","Wi-Fi only":"Tylko Wi-Fi",Never:"Nigdy","Click to load image":"Kliknij, aby załadować obraz","Click to load media":"Kliknij, aby załadować media","Click to load YouTube video":"Kliknij, aby załadować wideo z YouTube","{{count}} reviews":"{{count}} opinii","Write a review":"Napisz opinię","No reviews yet. Be the first to write one!":"Jeszcze brak opinii. Bądź pierwszym, który napisze!","View more reviews":"Zobacz więcej opinii","Failed to review":"Błąd opinii","Write a review and pick a star rating":"Napisz opinię i wybierz ocenę gwiazdkową",Submit:"Prześlij","Reviews for {{relay}}":"Opinie o {{relay}}","No relays selected":"Nie wybrano transmiterów","Post to":"Opublikuj na","Write relays and {{count}} other relays":"Transmitery zapisu i {{count}} innych transmitrów","{{count}} relays":"{{count}} transmiterów","Republishing...":"Ponowne publikowanie...","Trending Notes":"Popularne wpisy","Connected to":"Połączono z","Disconnect Wallet":"Odłącz portfel","Are you absolutely sure?":"Czy jesteś całkowicie pewien?","You will not be able to send zaps to others.":"Nie będziesz mógł wysyłać zapów innym.",Disconnect:"Odłącz","Start with a Rizful Vault":"Zacznij od Rizful Vault","or other wallets":"Lub inne portfele","Rizful Vault":"Rizful Vault","Rizful Vault connected!":"Rizful Vault połączony!","You can now use your Rizful Vault to zap your favorite notes and creators.":"Możesz teraz używać swojego Rizful Vault, aby zapować swoje ulubione wpisy i twórców.","Your Lightning Address":"Twój Lightning Adres","New to Rizful?":"Nowy w Rizful?","Sign up for Rizful":"Zarejestruj się w Rizful","If you already have a Rizful account, you can skip this step.":"Jeśli masz już konto Rizful, możesz pominąć ten krok.","Get your one-time code":"Uzyskaj swój jednorazowy kod","Get code":"Uzyskaj kod","Connect to your Rizful Vault":"Połącz się ze swoim Rizful Vault","Paste your one-time code here":"Wklej tutaj swój jednorazowy kod",Connect:"Połącz","Set up your wallet to send and receive sats!":"Skonfiguruj swój portfel, aby wysyłać i odbierać satosze!","Set up":"Skonfiguruj",Pinned:"Przypięte",Unpin:"Odepnij",Unpinning:"Odpinanie","Pinning...":"Przypinanie...","Pinned!":"Przypięte!","Failed to pin: {{error}}":"Nie udało się przypiąć: {{error}}","Unpinning...":"Odpinanie...","Unpinned!":"Odpięte!","Failed to unpin: {{error}}":"Nie udało się przypiąć: {{error}}","Unpin from profile":"Odepnij z profilu","Pin to profile":"Przypnij do profilu",Appearance:"Wygląd","Pure Black":"Czysta Czerń",Default:"Domyślny",Red:"Czerwony",Orange:"Pomarańczowy",Amber:"Bursztynowy",Yellow:"Żółty",Lime:"Limonkowy",Green:"Zielony",Emerald:"Szmaragdowy",Teal:"Morski",Cyan:"Cyjan",Sky:"Niebieski",Blue:"Niebieski",Indigo:"Indygo",Violet:"Fioletowy",Purple:"Purpurowy",Fuchsia:"Fuksja",Pink:"Różowy",Rose:"Różany","Primary color":"Kolor podstawowy",Layout:"Układ","Two-column":"Dwie kolumny","Single-column":"Jedna kolumna",Reviews:"Opinie",Extension:"Rozszerzenie",Remote:"Zdalne","Encrypted Key":"Zaszyfrowany Klucz","Private Key":"Zaszyfrowany Klucz","Welcome to RogueJumble":"Witamy w RogueJumble","RogueJumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"RogueJumble to klient skupiający się na przeglądaniu transmiterów. Rozpocznij od odkrycia interesujących transmiterów lub zaloguj się, aby wyświetlić wpisy  obserwowanych użytkowników.","Explore Relays":"Przeglądaj transmitery","Choose a feed":"Wybierz transmitery","and {{x}} others":"i {{x}} innych",selfZapWarning:"RogueJumble nie ponosi odpowiedzialności za to, co się stanie, jeśli zappujesz samego siebie. Kontynuuj na własne ryzyko. 😉⚡","Emoji Pack":"Pakiet Emoji","Emoji pack added":"Pakiet emoji dodany","Add emoji pack failed":"Dodawanie pakietu emoji nie powiodło się","Emoji pack removed":"Pakiet emoji usunięty","Remove emoji pack failed":"Usuwanie pakietu emoji nie powiodło się",Added:"Dodano","Emoji Packs":"Pakiety Emoji","My Packs":"Moje Pakiety","Adding...":"Dodawanie...","Removing...":"Usuwanie...",Reload:"Przeładuj","Request to Join Relay":"Poproś o dołączenie do transmitera","Leave Relay":"Opuść transmiter",Leave:"Opuść","Are you sure you want to leave this relay?":"Czy na pewno chcesz opuścić ten transmiter?","Join request sent successfully":"Prośba o dołączenie wysłana pomyślnie","Failed to send join request":"Nie udało się wysłać prośby o dołączenie","Leave request sent successfully":"Prośba o opuszczenie wysłana pomyślnie","Failed to send leave request":"Nie udało się wysłać prośby o opuszczenie","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"Wprowadź kod zaproszenia, jeśli go masz, lub pozostaw puste, aby wysłać prośbę.","Invite Code (Optional)":"Kod zaproszenia (opcjonalnie)","Enter invite code":"Wprowadź kod zaproszenia","Sending...":"Wysyłanie...","Send Request":"Wyślij prośbę","You can get an invite code from a relay member.":"Możesz uzyskać kod zaproszenia od obecnego użytkownika transmitera.","Enter the invite code you received from a relay member.":"Wprowadź kod zaproszenia otrzymany od obecnego użytkownika transmitera.","Get Invite Code":"Uzyskaj Kod Zaproszenia","Share this invite code with others to invite them to join this relay.":"Udostępnij ten kod zaproszenia innym, aby zaprosić ich do dołączenia do tego transmitera.","Invite Code":"Kod Zaproszenia",Copy:"Kopiuj","This invite code can be used by others to join the relay.":"Ten kod zaproszenia może być używany przez innych do dołączenia do transmitera.","No invite code available from this relay.":"Brak dostępnego kodu zaproszenia z tego transmitera.",Close:"Zamknij","Failed to get invite code from relay":"Nie udało się uzyskać kodu zaproszenia z transmitera","Failed to get invite code":"Nie udało się uzyskać kodu zaproszenia","Invite code copied to clipboard":"Kod zaproszenia skopiowany do schowka","Favicon URL":"URL Favicon","Filter out onion relays":"Filtruj transmitery onion","Click to load X post":"Kliknij, aby załadować post X","View Nostr comments":"Wyświetl komentarze Nostr","Search for notes":"Szukaj wpisów","Search for hashtag":"Szukaj hashtaga","Go to note":"Przejdź do wpisu","Go to relay":"Przejdź do transmitera","View discussions about this":"Zobacz dyskusje o tej treści","Open link":"Otwórz link","View Nostr discussions":"Zobacz dyskusje Nostr","Optimal relays":"Optymalne transmitery","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"Pomyślnie opublikowano ponownie na optymalnych transmiterach (Twoje transmitery zapisu i transmitery odczytu wspomnianych użytkowników)","Failed to republish to optimal relays: {{error}}":"Nie udało się opublikować ponownie na optymalnych transmiterach: {{error}}","External Content":"Treść zewnętrzna",Highlight:"Podświetl","Optimal relays and {{count}} other relays":"Optymalne transmitery i {{count}} innych transmiterów","Low trust ranking ({{percentile}}%)":"Niski ranking zaufania ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"Podejrzane konto (Wynik zaufania: {{percentile}}%)","n users":"{{count}} użytkowników","View Details":"Zobacz szczegóły","Follow Pack Not Found":"Nie znaleziono pakietu obserwowanych","Follow pack not found":"Nie znaleziono pakietu obserwowanych",Users:"Użytkownicy",Feed:"Kanał","Follow Pack":"Pakiet Obserwowanych","24h Pulse":"Tok 24","Load earlier":"Załaduj poprzednie","Last 24 hours":"Ostatnia doba","Last {{count}} days":"Ostatnie {{count}} dni",notes:"wpisy","Quick reaction":"Szybka reakcja","If enabled, you can react with a single click. Click and hold for more options":"Jeśli włączone, możesz zareagować jednym kliknięciem. Kliknij i przytrzymaj, aby uzyskać więcej opcji","Quick reaction emoji":"Emoji szybkiej reakcji","Select emoji":"Wybierz emoji","NSFW content display":"Wyświetlanie treści NSFW","Hide completely":"Ukryj całkowicie","Show but hide content":"Pokaż, ale ukryj treść","Show directly":"Pokaż bezpośrednio","Click to view":"Wyświetl","Special Follow":"Specjalna obserwacja","Unfollow Special":"Cofnij obserwację specjalną","Personal Feeds":"Kanały osobiste","Relay Feeds":"Kanały Transmiterów","Create Highlight":"Utwórz wyróżnienie","Write your thoughts about this highlight...":"Napisz swoje przemyślenia na temat tego wyróżnienienia...","Publish Highlight":"Opublikuj wyróżnienie","Show replies":"Pokaż odpowiedzi","Hide replies":"Ukryj odpowiedzi","Welcome to RogueJumble!":"Witamy w RogueJumble!","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"Twój kanał jest pusty, ponieważ jeszcze nikogo nie obserwujesz. Zacznij od odkrywania ciekawych treści i obserwowania użytkowników, którzy Ci się podobają!","Search Users":"Szukaj użytkowników","Create New Account":"Utwórz nowe konto",Important:"Ważne","Generate Your Account":"Wygeneruj swoje konto","Your private key IS your account. Keep it safe!":"Twój klucz prywatny TO twoje konto. Przechowuj go bezpiecznie!","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"W Nostr twój klucz prywatny TO twoje konto. Jeśli stracisz swój klucz prywatny, stracisz swoje konto na zawsze.","Your Private Key":"Twój klucz prywatny","Generate new key":"Wygeneruj nowy klucz","Download Backup File":"Pobierz plik kopii zapasowej","Copied to Clipboard":"Skopiowano do schowka","Copy to Clipboard":"Kopiuj do schowka","I already saved my private key securely.":"Już bezpiecznie zapisałem mój klucz prywatny.","Almost Done!":"Prawie gotowe!","Set a password to encrypt your key, or skip to finish":"Ustaw hasło, aby zaszyfrować swój klucz, lub pomiń, aby zakończyć","Password Protection (Optional)":"Ochrona hasłem (opcjonalnie)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"Ustawienie hasła szyfruje twój klucz prywatny w tej przeglądarce. Możesz pominąć ten krok, ale zalecamy ustawienie hasła dla dodatkowego bezpieczeństwa.","Password (Optional)":"Hasło (opcjonalnie)","Enter password or leave empty to skip":"Wprowadź hasło lub pozostaw puste, aby pominąć","Confirm Password":"Potwierdź hasło","Re-enter password":"Wprowadź hasło ponownie","Passwords do not match":"Hasła nie pasują do siebie","Finish Signup":"Zakończ rejestrację","Create Your Nostr Account":"Utwórz swoje konto Nostr","Generate your unique private key. This is your digital identity.":"Wygeneruj swój unikalny klucz prywatny. To jest twoja cyfrowa tożsamość.","Critical: Save Your Private Key":"Krytyczne: Zapisz swój klucz prywatny","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"Twój klucz prywatny TO JEST twoje konto. Nie ma odzyskiwania hasła. Jeśli go stracisz, na zawsze stracisz swoje konto. Proszę zapisać go w bezpiecznym miejscu.","I have safely backed up my private key":"Bezpiecznie wykonałem kopię zapasową mojego klucza prywatnego","Secure Your Account":"Zabezpiecz swoje konto","Add an extra layer of protection with a password":"Dodaj dodatkową warstwę ochrony za pomocą hasła","Password Protection (Recommended)":"Ochrona hasłem (zalecane)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"Dodaj hasło, aby zaszyfrować swój klucz prywatny w tej przeglądarce. Jest to opcjonalne, ale zdecydowanie zalecane dla lepszego bezpieczeństwa.","Create a password (or skip)":"Utwórz hasło (lub pomiń)","Enter your password again":"Wprowadź hasło ponownie","Complete Signup":"Zakończ rejestrację",Recommended:"Polecane","Enter Password":"Wprowadź hasło",Password:"Hasło",Confirm:"Potwierdź","trust-filter.title":"Filtr wyniku zaufania","trust-filter.off":"Wyłączony","trust-filter.low":"Niski","trust-filter.medium":"Średni","trust-filter.high":"Wysoki","trust-filter.wot":"WoT","trust-filter.filter-threshold":"Próg filtrowania","trust-filter.quick-presets":"Szybkie ustawienia","trust-filter.show-all-content":"Pokaż całą zawartość","trust-filter.only-show-wot":"Pokaż tylko swoją sieć zaufania (obserwowani + ich obserwowani)","trust-filter.hide-bottom-percent":"Filtruj dolne {{score}}% użytkowników według rankingu zaufania","trust-filter.trust-score-description":"Obliczany na podstawie reputacji użytkownika i percentyla sieci społecznościowej","Auto-load profile pictures":"Automatyczne ładowanie zdjęć profilowych","Disable live feed":"Wyłącz kanał na żywo","Enable live feed":"Włącz kanał na żywo","Default relays":"Domyślne transmitery","Reset to default":"Przywróć domyślne","Default relays description":"Używane do odpytywania konfiguracji transmiterów innych użytkowników i jako rozwiązanie awaryjne, gdy użytkownicy nie mają skonfigurowanych transmiterów.","Default relays warning":"Ostrzeżenie: Nie modyfikuj tych ustawień pochopnie, może to wpłynąć na komfort użytkowania.","Invalid relay URL":"Nieprawidłowy adres URL transmitera","Muted words":"Wyciszone słowa","Add muted word":"Dodaj wyciszone słowo","Zap Details":"Szczegóły zapu","Default trust score filter threshold ({{n}}%)":"Domyślny próg filtra wyniku zaufania ({{n}}%)","No notes found":"Nie znaleziono wpisów","Try again later or check your connection":"Spróbuj ponownie później lub sprawdź połączenie","Hide indirect":"Ukryj pośrednie","Copy note content":"Kopiuj treść wpisu","Video loop":"Zapętlanie wideo","Automatically replay videos when they end":"Automatycznie powtarzaj filmy po zakończeniu","Relays used for searching notes (NIP-50)":"Transmitery używane do wyszukiwania wpisów (NIP-50)","Protected event (NIP-70)":"Chronione zdarzenie (NIP-70)",Protected:"Chronione","Protected event hint":"Chronione zdarzenia (NIP-70) mogą być publikowane tylko przez autora. Transmitery odrzucą publikację tych zdarzeń przez osoby trzecie, uniemożliwiając innym retransmisję Twoich treści. Uwaga: nie wszystkie transmitery obsługują ochronę zdarzeń.","Allow insecure connections":"Zezwól na niezabezpieczone połączenia","Allow insecure connections description":"Zezwól na ładowanie zasobów http:// i łączenie z transmiterami ws://. Może to wywołać ostrzeżenia przeglądarki o mieszanej zawartości.","reacted to":"zareagował na",Reaction:"Reakcja","Show others this was sent via Jumble":"Pokaż innym, że zostało to wysłane przez RogueJumble","Sorry! The note cannot be found 😔":"Przepraszam! Nie można znaleźć wpisu 😔","Enjoying Jumble?":"Podoba Ci się RogueJumble?","Your donation helps me maintain Jumble and make it better! 😊":"Twoja darowizna pomaga mi utrzymać i ulepszyć RogueJumble! 😊","Welcome to Jumble":"Witaj w RogueJumble","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","n users_one":"{{count}} użytkownik","n users_other":"{{count}} użytkowników","Welcome to Jumble!":"Witaj w RogueJumble!","Font size":"Rozmiar czcionki","Advanced mode":"Tryb zaawansowany","Post type selector":"Selektor typu wpisu","Shows post kind dropdown when creating posts":"Wyświetla listę rozwijaną typu wpisu podczas tworzenia wpisów","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"Szukaj społeczności...","No communities found":"Nie znaleziono społeczności","No communities yet":"Brak społeczności"}},f3={translation:{"Welcome! 🥳":"Bem-vindo! 🥳",About:"Sobre","New Note":"Nova nota",Post:"Postar",Home:"Início","Relay settings":"Configurações de relay",Settings:"Configurações",SidebarRelays:"Relays",Refresh:"Atualizar",Profile:"Perfil",Logout:"Sair",Following:"Seguindo",followings:"Seguidos",reposted:"Repostado","just now":"agora mesmo","minute ago_one":"{{count}} minuto atrás","minute ago_other":"{{count}} minutos atrás","n m":"{{n}}m","hour ago_one":"{{count}} hora atrás","hour ago_other":"{{count}} horas atrás","n h":"{{n}}h","day ago_one":"{{count}} dia atrás","day ago_other":"{{count}} dias atrás","n d":"{{n}}d",date:"{{timestamp, date}}",Follow:"Seguir",Unfollow:"Deixar de seguir","Follow failed":"Falha ao seguir","Unfollow failed":"Falha ao deixar de seguir","show new notes":"Ver novas notas","loading...":"Carregando...","Loading...":"Carregando...","no more notes":"Não há mais notas","reply to":"Respondendo a",reply:"Responder",Reply:"Responder","load more older replies":"Carregar mais respostas antigas","Write something...":"Escreva algo...",Cancel:"Cancelar",Mentions:"Menções","Failed to post":"Falha ao postar","Post successful":"Nota publicada com sucesso","Your post has been published":"Sua nota foi publicada",Repost:"Repostar",Quote:"Citar","Copy event ID":"Copiar ID do evento","Copy user ID":"Copiar ID do usuário","View raw event":"Ver evento bruto",Like:"Curtir","switch to light theme":"Alternar para tema claro","switch to dark theme":"Alternar para tema escuro","switch to system theme":"Alternar para tema do sistema",Note:"Nota",note:"nota","username's following":"seguindo {{username}}","username's used relays":"relays usados por {{username}}","username's muted":"{{username}} silenciado",Login:"Entrar","Follows you":"Segue você","Relay Settings":"Configurações de relay","Relay set name":"Nome do conjunto de relay","Add a new relay set":"Adicionar um novo conjunto de relay",Add:"Adicionar","n relays":"{{n}} relays",Rename:"Renomear","Copy share link":"Copiar link de compartilhamento",Delete:"Excluir","Relay already exists":"Relay já existe","invalid relay URL":"URL de relay inválida","Add a new relay":"Adicionar um novo relay",back:"voltar","Lost in the void":"Perdido no vazio","Carry me home":"Me leve para casa","no replies":"Sem respostas","Reply to":"Responder a",Search:"Pesquisar","The relays you are connected to do not support search":"Os relays aos quais você está conectado não suportam pesquisa","Show more...":"Mostrar mais...","All users":"Todos os usuários","Display replies":"Exibir respostas",Notes:"Notas",Replies:"Respostas",Notifications:"Notificações","no more notifications":"não há mais notificações","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"O uso de login com chave privada é inseguro. Recomenda-se usar uma extensão do navegador para login, como alby, nostr-keyx ou nos2x. Se você precisar usar uma chave privada, defina uma senha para criptografia no mínimo.","Login with Browser Extension":"Entrar com extensão do navegador","Login with Bunker":"Entrar com Bunker","Login with Private Key":"Entrar com chave privada","reload notes":"Recarregar notas","Logged in Accounts":"Contas conectadas","Add an Account":"Nova conta","More options":"Mais opções","Add client tag":"Adicionar tag de cliente","Show others this was sent via Jumble":"Mostrar aos outros que isso foi enviado via Jumble","Are you sure you want to logout?":"Tem certeza de que deseja sair?","relay sets":"Conjuntos de relay",edit:"Editar",Languages:"Idiomas",Theme:"Tema",System:"Sistema",Light:"Claro",Dark:"Escuro",Temporary:"Temporário","Choose a relay set":"Escolha um conjunto de relay","Switch account":"Trocar de conta",Pictures:"Imagens","Picture note":"Nota de imagem","A special note for picture-first clients like Olas":"Uma nota especial para clientes que priorizam imagens, como Olas","Picture note requires images":"Nota de imagem requer imagens",Relays:"Relays",Image:"imagem","R & W":"Leitura & Escrita",Read:"Leitura",Write:"Escrita","Pull relay sets":"Receber conjuntos de relay","Select the relay sets you want to pull":"Selecione os conjuntos de relay que deseja receber","No relay sets found":"Nenhum conjunto de relay encontrado","Pull n relay sets":"Receber {{n}} conjuntos de relay",Pull:"Receber","Select all":"Selecionar todos","Relay Sets":"Conjuntos de relay","Read & Write Relays":"Relays de Leitura & Escrita","read relays description":"Relays de leitura são usados para buscar eventos sobre você. Outros usuários publicarão os eventos que deseja ver nesses relays.","write relays description":"Relays de escrita são usados para publicar seus eventos. Outros usuários buscarão seus eventos nesses relays.","read & write relays notice":"O número de servidores de leitura e escrita deve ser mantido entre 2 e 4, idealmente.","Don't have an account yet?":"Não tem uma conta ainda?","or simply generate a private key":"ou simplesmente gere uma chave privada","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"Esta é uma chave privada. Não a compartilhe com ninguém. Mantenha-a segura, pois não poderá recuperá-la se perdê-la.",Edit:"Editar",Save:"Salvar","Display Name":"Nome de exibição",Bio:"Biografia","Nostr Address (NIP-05)":"Endereço Nostr (NIP-05)","Invalid NIP-05 address":"Endereço NIP-05 inválido","Copy private key":"Copiar chave privada","Enter the password to decrypt your ncryptsec":"Digite a senha para descriptografar seu ncryptsec",Back:"Voltar","optional: encrypt nsec":"opcional: criptografar nsec",password:"Senha","Sign up":"Criar conta","Save to":"Salvar em","Enter a name for the new relay set":"Digite um nome para o novo conjunto de relay","Save to a new relay set":"Salvar em um novo conjunto de relay",Mute:"Silenciar",Muted:"Silenciados",Unmute:"Silenciado","Unmute user":"Usuário silenciado","Append n relays":"Adicionar {{n}} relays",Append:"Adicionar","Select relays to append":"Selecione os relays para adicionar","calculating...":"Calculando...","Calculate optimal read relays":"Calcular relays de leitura ideais","Login to set":"Entrar no conjunto","Please login to view following feed":"Por favor, faça login para ver o conteúdo das pessoas que você segue","Send only to r":"Enviar apenas para {{r}}","Send only to these relays":"Enviar apenas para estes relays",Explore:"Explorar","Search relays":"Relays de busca",relayInfoBadgeAuth:"Auth",relayInfoBadgeSearch:"Pesquisar",relayInfoBadgePayment:"Pagamento",Operator:"Operador",Contact:"Contato",Software:"Software",Version:"Versão","Random Relays":"Relays aleatórios",randomRelaysRefresh:"Atualizar","Explore more":"Explorar mais","Payment page":"Página de pagamento","Supported NIPs":"NIPs Suportados","Open in a":"Abrir em {{a}}","Cannot handle event of kind k":"Não é possível lidar com o evento do tipo {{k}}","Encrypted direct messages not supported":"Mensagens diretas criptografadas não suportadas","Sorry! The note cannot be found 😔":"Desculpe! A nota não pode ser encontrada 😔","This user has been muted":"Este usuário foi silenciado",Wallet:"Carteira",Sats:"Sats",sats:"sats","Zap to":"Zap para","Zap n sats":"Zap {{n}} sats",zapComment:"Comentário","Default zap amount":"Valor padrão do zap","Default zap comment":"Comentário padrão do zap","Lightning Address (or LNURL)":"Endereço Lightning (ou LNURL)","Quick zap":"Zap rápido","If enabled, you can zap with a single click. Click and hold for custom amounts":"Se ativado, você pode zapear com um único clique. Clique e segure para quantias personalizadas",All:"Tudo",Reactions:"Reações",Zaps:"Zaps","Enjoying Jumble?":"Gostando do Jumble?","Your donation helps me maintain Jumble and make it better! 😊":"Sua doação me ajuda a manter o Jumble e torná-lo melhor! 😊","Earlier notifications":"Notificações anteriores","Temporarily display this note":"Exibir esta nota temporariamente",buttonFollowing:"Seguindo","Are you sure you want to unfollow this user?":"Tem certeza de que deseja deixar de seguir este usuário?","Recent Supporters":"Apoiadores recentes","Seen on":"Visto em","Temporarily display this reply":"Exibir temporariamente esta resposta","Note not found":"Nota não encontrada","no more replies":"não há mais respostas","Relay sets":"Conjuntos de relay","Favorite Relays":"Relays favoritos","Following's Favorites":"Favoritos de quem você segue","no more relays":"não há mais relays","Favorited by":"Favoritado por","Post settings":"Ajustes de publicação","Media upload service":"Serviço de upload de mídia","Choose a relay":"Escolher um relay","no relays found":"nenhum relay encontrado",video:"vídeo","Show n new notes":"Ver {{n}} novas notas",YouTabName:"Você",Bookmark:"Salvar nota","Remove bookmark":"Remover dos itens salvos","no bookmarks found":"Nenhum item salvo encontrado","no more bookmarks":"Sem mais itens salvos",Bookmarks:"Itens salvos","Show more":"Mostrar mais",General:"Geral",Autoplay:"Reprodução automática","Enable video autoplay on this device":"Habilitar reprodução automática de vídeo neste dispositivo","Paste or drop media files to upload":"Cole ou arraste arquivos de mídia para fazer upload",Preview:"Pré-visualização","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"Você está prestes a publicar um evento assinado por [{{eventAuthorName}}]. Você está atualmente logado como [{{currentUsername}}]. Tem certeza?","Platinum Sponsors":"Patrocinadores Platinum",From:"Fonte","Comment on":"Comentando","View on njump.me":"Ver em njump.me","Hide content from untrusted users":"Ocultar conteúdo de usuários não confiáveis","Only show content from your followed users and the users they follow":"Mostrar apenas conteúdo dos usuários que você segue e dos usuários que eles seguem","Followed by":"Seguido por","Mute user privately":"Silenciar usuário privadamente","Mute user publicly":"Silenciar usuário publicamente",Quotes:"Citações","Lightning Invoice":"Fatura Lightning","Bookmark failed":"Falha ao favoritar","Remove bookmark failed":"Falha ao remover favorito",Translation:"Tradução",Balance:"Saldo",characters:"caracteres",jumbleTranslateApiKeyDescription:"Esta chave API pode ser usada em qualquer outro lugar que suporte LibreTranslate. O URL do serviço é {{serviceUrl}}","Top up":"Carregar saldo","Will receive: {n} characters":"Receberá: {{n}} caracteres","Top up {n} sats":"Carregar {{n}} sats","Minimum top up is {n} sats":"Carregamento mínimo é {{n}} sats",Service:"Serviço","Reset API key":"Redefinir chave API","Are you sure you want to reset your API key? This action cannot be undone.":"Tem certeza de que deseja redefinir sua chave API? Esta ação não pode ser desfeita.",Warning:"Aviso","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"Sua chave API atual se tornará inválida imediatamente, e qualquer aplicativo que a utilize deixará de funcionar até que você os atualize com a nova chave.","Service address":"Endereço do serviço",Pay:"Pagar",interactions:"interações",notifications:"notificações","Show untrusted {type}":"Mostrar {{type}} não confiáveis","Hide untrusted {type}":"Ocultar {{type}} não confiáveis","Currently hiding {type} from untrusted users.":"Atualmente ocultando {{type}} de usuários não confiáveis.","Currently showing all {type}.":"Atualmente mostrando todas as {{type}}.","Click continue to show all {type}.":"Clique em continuar para mostrar todas as {{type}}.","Click continue to hide {type} from untrusted users.":"Clique em continuar para ocultar {{type}} de usuários não confiáveis.","Trusted users include people you follow and people they follow.":"Usuários confiáveis incluem pessoas que você segue e pessoas que elas seguem.",Continue:"Continuar","Successfully updated mute list":"Lista de silenciados atualizada com sucesso","No pubkeys found from {url}":"Nenhum pubkey encontrado em {{url}}","Translating...":"Traduzindo...",Translate:"Traduzir","Show original":"Mostrar original",Website:"Website","Hide untrusted notes":"Ocultar notas não confiáveis","Open in another client":"Abrir em outro cliente",Community:"Comunidade",Group:"Grupo","Live event":"Evento ao vivo",Article:"Artigo",Unfavorite:"Desfavoritar","Recommended relays":"Relays recomendados","Blossom server URLs":"URLs do servidor Blossom","You need to add at least one blossom server in order to upload media files.":"Você precisa adicionar pelo menos um servidor Blossom para poder carregar arquivos de mídia.","Recommended blossom servers":"Servidores Blossom recomendados","Enter Blossom server URL":"Inserir URL do servidor Blossom",Preferred:"Preferido","Multiple choice (select one or more)":"Múltipla escolha (selecione um ou mais)",Vote:"Votar","{{number}} votes":"{{number}} votos","Total votes":"Total de votos","Poll has ended":"A enquete terminou","Poll ends at {{time}}":"A enquete termina em {{time}}","Load results":"Carregar resultados","This is a poll note.":"Esta é uma nota de enquete.","Unlike regular notes, polls are not widely supported and may not display on other clients.":"Ao contrário das notas regulares, as enquetes não são amplamente suportadas e podem não ser exibidas em outros clientes.","Option {{number}}":"Opção {{number}}","Add Option":"Adicionar Opção","Allow multiple choices":"Permitir múltiplas escolhas","End Date (optional)":"Data de término (opcional)","Clear end date":"Limpar data de término","Relay URLs (optional, comma-separated)":"URLs de relay (opcional, separadas por vírgulas)","Remove poll":"Remover enquete","Refresh results":"Atualizar resultados",Poll:"Enquete",Media:"Mídia","Republish to ...":"Republicar em ...","Successfully republish to your write relays":"Successfully republish to your write relays","Failed to republish to your write relays: {{error}}":"Failed to republish to your write relays: {{error}}","Successfully republish to relay set: {{name}}":"Successfully republish to relay set: {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"Failed to republish to relay set: {{name}}. Error: {{error}}","Successfully republish to relay: {{url}}":"Successfully republish to relay: {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"Failed to republish to relay: {{url}}. Error: {{error}}","Write relays":"Relays de escrita","No more reactions":"Sem mais reações","No reactions yet":"Ainda sem reações","No more zaps":"Sem mais zaps","No zaps yet":"Ainda sem zaps","No more reposts":"Sem mais reposts","No reposts yet":"Ainda sem reposts",Reposts:"Reposts",FollowListNotFoundConfirmation:"Lista de seguindo não encontrada. Deseja criar uma nova? Se você seguiu usuários antes, por favor NÃO confirme, pois esta operação fará você perder sua lista de seguindo anterior.",MuteListNotFoundConfirmation:"Lista de silenciados não encontrada. Deseja criar uma nova? Se você silenciou usuários antes, por favor NÃO confirme, pois esta operação fará você perder sua lista de silenciados anterior.","Show NSFW content by default":"Mostrar conteúdo NSFW por padrão","Custom emoji management":"Gerenciamento de emojis personalizados","After changing emojis, you may need to refresh the page":"Após alterar os emojis, você pode precisar atualizar a página","Too many read relays":"Muitos relays de leitura","Too many write relays":"Muitos relays de escrita","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"Você tem {{count}} relays de leitura. A maioria dos clientes usa apenas 2-4 relays, configurar mais é desnecessário.","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"Você tem {{count}} relays de escrita. A maioria dos clientes usa apenas 2-4 relays, configurar mais é desnecessário.","Optimize Relay Settings":"Otimizar configurações de relay","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"Sua configuração atual de relay pode não ser ideal. Isso pode tornar difícil para outros encontrarem suas postagens e pode resultar em notificações incompletas.","Optimize Now":"Otimizar agora","Maybe Later":"Talvez mais tarde","Don't remind me again":"Não me lembrar novamente",Posts:"Notas",Articles:"Artigos",Highlights:"Marcações",Polls:"Enquetes","Voice Posts":"Áudios","Photo Posts":"Fotos","Video Posts":"Vídeos","Select All":"Selecionar tudo","Clear All":"Limpar tudo","Set as default filter":"Definir como filtro padrão",Apply:"Aplicar",Reset:"Redefinir","Share something on this Relay":"Compartilhe algo neste Relay","Try deleting this note":"Solicitar exclusão desta nota","Deletion request sent to {{count}} relays":"Pedido de exclusão enviado para {{count}} relays","Suitable Relays":"Relays adequados","People, keywords, or relays":"Pessoas, palavras-chave ou relays","Hide content mentioning muted users":"Ocultar conteúdo que menciona usuários silenciados","This note mentions a user you muted":"Esta nota menciona um usuário que você silenciou",Filter:"Filtro","mentioned you in a note":"mencionou você em uma nota","quoted your note":"citou sua nota","voted in your poll":"votou na sua enquete","reacted to your note":"reagiu à sua nota","reposted your note":"republicou sua nota","zapped your note":"zappeou sua nota","highlighted your note":"destacou sua nota","zapped you":"zappeou você","Mark as read":"Marcar como lida",Report:"Denunciar","Successfully report":"Denúncia enviada com sucesso","Failed to report":"Falha ao enviar denúncia",nudity:"Nudez",malware:"Malware",profanity:"Blasfêmia",illegal:"Conteúdo ilegal",spam:"Spam",other:"Outro","Notification list style":"Estilo da lista de notificações","See extra info for each notification":"Ver informações extras para cada notificação","See more notifications at a glance":"Ver mais notificações rapidamente",Detailed:"Detalhado",Compact:"Compacto","Submit Relay":"Enviar Relay",Homepage:"Página inicial","Proof of Work (difficulty {{minPow}})":"Prova de Trabalho (dificuldade {{minPow}})","Proof of Work":"Prova de Trabalho","Posts & comments difficulty":"Dificuldade de publicações e comentários","Reactions difficulty":"Dificuldade de reações","Image Mode":"Modo imagem","Media Feed":"Feed de mídia","Text Only":"Feed de texto","Text Post":"Postagem de texto","Picture Post":"Postagem de imagem","Video Post":"Postagem de vídeo","Short Video Post":"Vídeo curto",Text:"Texto",Picture:"Imagem",Video:"Vídeo","Short Video":"Vídeo curto","Post Type":"Tipo de publicação","via {{client}}":"via {{client}}","Auto-load media":"Carregamento automático de mídia",Always:"Sempre","Wi-Fi only":"Apenas Wi-Fi",Never:"Nunca","Click to load image":"Carregar imagem","Click to load media":"Carregar mídia","Click to load YouTube video":"Carregar vídeo do YouTube","{{count}} reviews":"{{count}} avaliações","Write a review":"Escrever uma avaliação","No reviews yet. Be the first to write one!":"Ainda não há avaliações. Seja o primeiro a escrever uma!","View more reviews":"Ver mais avaliações","Failed to review":"Falha ao avaliar","Write a review and pick a star rating":"Escreva uma avaliação e escolha uma classificação por estrelas",Submit:"Enviar","Reviews for {{relay}}":"Avaliações para {{relay}}","No relays selected":"Nenhum relay selecionado","Post to":"Postar em","Write relays and {{count}} other relays":"Relays de escrita e {{count}} outros relays","{{count}} relays":"{{count}} relays","Republishing...":"Republicando...","Trending Notes":"Notas em tendência","Connected to":"Conectado a","Disconnect Wallet":"Desconectar carteira","Are you absolutely sure?":"Você tem certeza absoluta?","You will not be able to send zaps to others.":"Você não poderá enviar zaps para outros.",Disconnect:"Desconectar","Start with a Rizful Vault":"Comece com um Cofre Rizful","or other wallets":"ou outras carteiras","Rizful Vault":"Cofre Rizful","Rizful Vault connected!":"Cofre Rizful conectado!","You can now use your Rizful Vault to zap your favorite notes and creators.":"Você pode agora usar seu Cofre Rizful para zapear suas notas e criadores favoritos.","Your Lightning Address":"Seu Endereço Lightning","New to Rizful?":"Novo no Rizful?","Sign up for Rizful":"Inscreva-se no Rizful","If you already have a Rizful account, you can skip this step.":"Se você já tem uma conta Rizful, pode pular esta etapa.","Get your one-time code":"Obtenha seu código único","Get code":"Obter código","Connect to your Rizful Vault":"Conecte-se ao seu Cofre Rizful","Paste your one-time code here":"Cole seu código único aqui",Connect:"Conectar","Set up your wallet to send and receive sats!":"Configure sua carteira para enviar e receber sats!","Set up":"Configurar",Pinned:"Fixado",Unpin:"Desafixar",Unpinning:"Desafixando","Pinning...":"Fixando...","Pinned!":"Fixado!","Failed to pin: {{error}}":"Falha ao fixar: {{error}}","Unpinning...":"Desafixando...","Unpinned!":"Desafixado!","Failed to unpin: {{error}}":"Falha ao desafixar: {{error}}","Unpin from profile":"Desafixar do perfil","Pin to profile":"Fixar no perfil",Appearance:"Aparência","Pure Black":"Preto Puro",Default:"Padrão",Red:"Vermelho",Orange:"Laranja",Amber:"Âmbar",Yellow:"Amarelo",Lime:"Lima",Green:"Verde",Emerald:"Esmeralda",Teal:"Turquesa",Cyan:"Ciano",Sky:"Céu",Blue:"Azul",Indigo:"Índigo",Violet:"Violeta",Purple:"Roxo",Fuchsia:"Fúcsia",Pink:"Rosa",Rose:"Rosa","Primary color":"Cor primária",Layout:"Layout","Two-column":"Coluna dupla","Single-column":"Coluna única",Reviews:"Avaliações",Extension:"Extensão",Remote:"Remoto","Encrypted Key":"Chave Criptografada","Private Key":"Chave Privada","Welcome to Jumble":"Bem-vindo ao Jumble","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","Explore Relays":"Explorar Relays","Choose a feed":"Escolha um feed","and {{x}} others":"e {{x}} outros",selfZapWarning:"Jumble não é responsável pelo que acontece se você zapear a si mesmo. Prossiga por sua conta e risco. 😉⚡","Emoji Pack":"Pacote de Emojis","Emoji pack added":"Pacote de emojis adicionado","Add emoji pack failed":"Falha ao adicionar pacote de emojis","Emoji pack removed":"Pacote de emojis removido","Remove emoji pack failed":"Falha ao remover pacote de emojis",Added:"Adicionado","Emoji Packs":"Pacotes de Emojis","My Packs":"Meus Pacotes","Adding...":"Adicionando...","Removing...":"Removendo...",Reload:"Recarregar","Request to Join Relay":"Solicitar entrada no Relay","Leave Relay":"Sair do Relay",Leave:"Sair","Are you sure you want to leave this relay?":"Tem certeza de que deseja sair deste relay?","Join request sent successfully":"Solicitação de entrada enviada com sucesso","Failed to send join request":"Falha ao enviar solicitação de entrada","Leave request sent successfully":"Solicitação de saída enviada com sucesso","Failed to send leave request":"Falha ao enviar solicitação de saída","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"Digite um código de convite se tiver um. Caso contrário, deixe em branco para enviar uma solicitação.","Invite Code (Optional)":"Código de Convite (Opcional)","Enter invite code":"Digite o código de convite","Sending...":"Enviando...","Send Request":"Enviar Solicitação","You can get an invite code from a relay member.":"Você pode obter um código de convite de um membro do relay.","Enter the invite code you received from a relay member.":"Digite o código de convite que você recebeu de um membro do relay.","Get Invite Code":"Obter Código de Convite","Share this invite code with others to invite them to join this relay.":"Compartilhe este código de convite com outros para convidá-los a participar deste relay.","Invite Code":"Código de Convite",Copy:"Copiar","This invite code can be used by others to join the relay.":"Este código de convite pode ser usado por outros para participar do relay.","No invite code available from this relay.":"Nenhum código de convite disponível deste relay.",Close:"Fechar","Failed to get invite code from relay":"Falha ao obter código de convite do relay","Failed to get invite code":"Falha ao obter código de convite","Invite code copied to clipboard":"Código de convite copiado para a área de transferência","Favicon URL":"URL do Favicon","Filter out onion relays":"Filtrar relays onion","Click to load X post":"Clique para carregar a postagem do X","View Nostr comments":"Comentários do link","Search for notes":"Buscar notas","Search for hashtag":"Buscar hashtag","Go to note":"Ir para nota","Go to relay":"Ir para relay","View discussions about this":"Ver discussões sobre este conteúdo","Open link":"Abrir link","View Nostr discussions":"Comentários do link","Optimal relays":"Relays ideais","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"Republicado com sucesso nos relays ideais (seus relays de escrita e os relays de leitura dos usuários mencionados)","Failed to republish to optimal relays: {{error}}":"Falha ao republicar nos relays ideais: {{error}}","External Content":"Conteúdo externo",Highlight:"Marcação","Optimal relays and {{count}} other relays":"Relays ideais e {{count}} outros relays","Low trust ranking ({{percentile}}%)":"Classificação de confiança baixa ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"Conta suspeita (Pontuação de confiança: {{percentile}}%)","n users":"{{count}} usuários","View Details":"Ver detalhes","Follow Pack Not Found":"Pacote de seguir não encontrado","Follow pack not found":"Pacote de seguir não encontrado",Users:"Usuários",Feed:"Feed","Follow Pack":"Pacote de Seguir","24h Pulse":"Pulso 24h","Load earlier":"Carregar anterior","Last 24 hours":"Últimas 24 horas","Last {{count}} days":"Últimos {{count}} dias",notes:"notas","Quick reaction":"Reação rápida","If enabled, you can react with a single click. Click and hold for more options":"Se ativado, você pode reagir com um único clique. Clique e segure para mais opções","Quick reaction emoji":"Emoji de reação rápida","Select emoji":"Selecionar emoji","NSFW content display":"Exibição de conteúdo NSFW","Hide completely":"Ocultar completamente","Show but hide content":"Mostrar, mas ocultar conteúdo","Show directly":"Mostrar diretamente","Click to view":"Clique para ver","Special Follow":"Favoritos","Unfollow Special":"Desfavoritar","Personal Feeds":"Meus feeds","Relay Feeds":"Feeds de relays","Create Highlight":"Criar Destaque","Write your thoughts about this highlight...":"Escreva seus pensamentos sobre este destaque...","Publish Highlight":"Publicar Destaque","Show replies":"Mostrar respostas","Hide replies":"Ocultar respostas","Welcome to Jumble!":"Bem-vindo ao Jumble!","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"Seu feed está vazio porque você ainda não está seguindo ninguém. Comece explorando conteúdo interessante e seguindo usuários que você gosta!","Search Users":"Buscar Usuários","Create New Account":"Criar nova conta",Important:"Importante","Generate Your Account":"Gerar sua conta","Your private key IS your account. Keep it safe!":"Sua chave privada É sua conta. Mantenha-a segura!","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"No Nostr, sua chave privada É sua conta. Se você perder sua chave privada, perderá sua conta para sempre.","Your Private Key":"Sua chave privada","Generate new key":"Gerar nova chave","Download Backup File":"Baixar arquivo de backup","Copied to Clipboard":"Copiado para a área de transferência","Copy to Clipboard":"Copiar para a área de transferência","I already saved my private key securely.":"Já salvei minha chave privada com segurança.","Almost Done!":"Quase pronto!","Set a password to encrypt your key, or skip to finish":"Defina uma senha para criptografar sua chave ou pule para finalizar","Password Protection (Optional)":"Proteção por senha (opcional)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"Definir uma senha criptografa sua chave privada neste navegador. Você pode pular esta etapa, mas recomendamos definir uma para maior segurança.","Password (Optional)":"Senha (opcional)","Enter password or leave empty to skip":"Digite a senha ou deixe em branco para pular","Confirm Password":"Confirmar senha","Re-enter password":"Digite a senha novamente","Passwords do not match":"As senhas não coincidem","Finish Signup":"Concluir cadastro","Create Your Nostr Account":"Criando sua conta Nostr","Generate your unique private key. This is your digital identity.":"Sua chave privada única foi gerada. Ela é sua identidade digital.","Critical: Save Your Private Key":"Importante: Salve a sua chave privada.","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"Sua chave privada é a sua conta. Não há recuperação de senha, se você perdê-la, perderá sua conta para sempre. Por favor, salve-a em um local seguro.","I have safely backed up my private key":"Fiz backup seguro da minha chave privada","Secure Your Account":"Proteja sua conta","Add an extra layer of protection with a password":"Adicione uma camada extra de proteção com uma senha","Password Protection (Recommended)":"Proteção por senha (recomendado)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"Adicione uma senha para criptografar sua chave privada neste navegador. Isso é opcional, mas fortemente recomendado para melhor segurança.","Create a password (or skip)":"Crie uma senha (opcional)","Enter your password again":"Digite sua senha novamente","Complete Signup":"Concluir cadastro",Recommended:"Recomendado","Enter Password":"Digite a senha",Password:"Senha",Confirm:"Confirmar","trust-filter.title":"Filtro de pontuação de confiança","trust-filter.off":"Desativado","trust-filter.low":"Baixo","trust-filter.medium":"Médio","trust-filter.high":"Alto","trust-filter.wot":"WoT","trust-filter.filter-threshold":"Limite de filtro","trust-filter.quick-presets":"Predefinições rápidas","trust-filter.show-all-content":"Mostrar todo o conteúdo","trust-filter.only-show-wot":"Mostrar apenas sua rede de confiança (seguidos + seguidos deles)","trust-filter.hide-bottom-percent":"Filtrar os {{score}}% inferiores de usuários por classificação de confiança","trust-filter.trust-score-description":"Calculado com base na reputação do usuário e no percentil da rede social","Auto-load profile pictures":"Carregar fotos de perfil automaticamente","Disable live feed":"Desativar feed ao vivo","Enable live feed":"Ativar feed ao vivo","Default relays":"Relays padrão","Reset to default":"Redefinir para padrão","Default relays description":"Usados para consultar as configurações de relays de outros usuários e como alternativa quando os usuários não têm relays configurados.","Default relays warning":"Aviso: Não modifique essas configurações casualmente, pois pode afetar sua experiência básica.","Invalid relay URL":"URL de relé inválida","Muted words":"Palavras silenciadas","Add muted word":"Adicionar palavra silenciada","Zap Details":"Detalhes do Zap","Default trust score filter threshold ({{n}}%)":"Limite padrão do filtro de pontuação de confiança ({{n}}%)","No notes found":"Nenhuma nota encontrada","Try again later or check your connection":"Tente novamente mais tarde ou verifique sua conexão","Hide indirect":"Ocultar indiretas","Copy note content":"Copiar conteúdo da nota","Video loop":"Repetir vídeo","Automatically replay videos when they end":"Reproduzir automaticamente os vídeos quando terminarem","Relays used for searching notes (NIP-50)":"Relays usados para buscar notas (NIP-50)","Protected event (NIP-70)":"Evento protegido (NIP-70)",Protected:"Protegido","Protected event hint":"Eventos protegidos (NIP-70) só podem ser publicados pelo autor. Os relays rejeitarão esses eventos de terceiros, impedindo que outros retransmitam seu conteúdo. Nota: nem todos os relays suportam eventos protegidos.","Allow insecure connections":"Permitir conexões inseguras","Allow insecure connections description":"Permitir carregar recursos http:// e conectar a relays ws://. Pode acionar avisos de conteúdo misto do navegador.","reacted to":"reagiu a",Reaction:"Reação","n users_one":"{{count}} usuário","n users_other":"{{count}} usuários","Font size":"Tamanho da fonte","Advanced mode":"Modo avançado","Post type selector":"Seletor de tipo de publicação","Shows post kind dropdown when creating posts":"Mostra o menu suspenso de tipo de publicação ao criar publicações","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"Pesquisar comunidades...","No communities found":"Nenhuma comunidade encontrada","No communities yet":"Nenhuma comunidade ainda"}},h3={translation:{"Welcome! 🥳":"Bem-vindo! 🥳",About:"Sobre","New Note":"Nova Nota",Post:"Postar",Home:"Início","Relay settings":"Configurações de Relé",Settings:"Configurações",SidebarRelays:"Relés",Refresh:"Atualizar",Profile:"Perfil",Logout:"Sair",Following:"Seguindo",followings:"seguidos",reposted:"repostado","just now":"agora mesmo","minute ago_one":"{{count}} minuto atrás","minute ago_other":"{{count}} minutos atrás","n m":"{{n}}m","hour ago_one":"{{count}} hora atrás","hour ago_other":"{{count}} horas atrás","n h":"{{n}}h","day ago_one":"{{count}} dia atrás","day ago_other":"{{count}} dias atrás","n d":"{{n}}d",date:"{{timestamp, date}}",Follow:"Seguir",Unfollow:"Deixar de Seguir","Follow failed":"Falha ao Seguir","Unfollow failed":"Falha ao Deixar de Seguir","show new notes":"mostrar novas notas","loading...":"carregando...","Loading...":"Carregando...","no more notes":"não há mais notas","reply to":"responder a",reply:"responder",Reply:"Responder","load more older replies":"carregar mais respostas antigas","Write something...":"Escreva algo...",Cancel:"Cancelar",Mentions:"Menções","Failed to post":"Falha ao postar","Post successful":"Postagem bem-sucedida","Your post has been published":"Sua postagem foi publicada",Repost:"Repostar",Quote:"Citar","Copy event ID":"Copiar ID do evento","Copy user ID":"Copiar ID do usuário","View raw event":"Ver evento bruto",Like:"Curtir","switch to light theme":"alternar para tema claro","switch to dark theme":"alternar para tema escuro","switch to system theme":"alternar para tema do sistema",Note:"Nota",note:"nota","username's following":"seguindo de {{username}}","username's used relays":"relés usados por {{username}}","username's muted":"{{username}} silenciado",Login:"Entrar","Follows you":"Segue você","Relay Settings":"Configurações de Relé","Relay set name":"Nome do conjunto de relé","Add a new relay set":"Adicionar um novo conjunto de relé",Add:"Adicionar","n relays":"{{n}} relés",Rename:"Renomear","Copy share link":"Copiar link de compartilhamento",Delete:"Excluir","Relay already exists":"Relé já existe","invalid relay URL":"URL de relé inválida","Add a new relay":"Adicionar um novo relé",back:"voltar","Lost in the void":"Perdido no vazio","Carry me home":"Me leve para casa","no replies":"sem respostas","Reply to":"Responder a",Search:"Pesquisar","The relays you are connected to do not support search":"Os relés aos quais você está conectado não suportam pesquisa","Show more...":"Mostrar mais...","All users":"Todos os usuários","Display replies":"Exibir respostas",Notes:"Notas",Replies:"Respostas",Notifications:"Notificações","no more notifications":"não há mais notificações","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x.":"O uso de login com chave privada é inseguro. Recomenda-se usar uma extensão de navegador para login, como alby, nostr-keyx ou nos2x. Se você precisar usar uma chave privada, defina uma senha para criptografia pelo menos.","Login with Browser Extension":"Entrar com Extensão do Navegador","Login with Bunker":"Entrar com Bunker","Login with Private Key":"Entrar com Chave Privada","reload notes":"recarregar notas","Logged in Accounts":"Contas Conectadas","Add an Account":"Adicionar uma Conta","More options":"Mais opções","Add client tag":"Adicionar tag de cliente","Show others this was sent via Jumble":"Mostrar aos outros que isso foi enviado via Jumble","Are you sure you want to logout?":"Tem certeza de que deseja sair?","relay sets":"conjuntos de relé",edit:"editar",Languages:"Idiomas",Theme:"Tema",System:"Sistema",Light:"Claro",Dark:"Escuro",Temporary:"Temporário","Choose a relay set":"Escolha um conjunto de relé","Switch account":"Trocar de Conta",Pictures:"Imagens","Picture note":"Nota de Imagem","A special note for picture-first clients like Olas":"Uma nota especial para clientes que priorizam imagens, como Olas","Picture note requires images":"Nota de imagem requer imagens",Relays:"Relés",Image:"imagem","R & W":"Leitura & Escrita",Read:"Ler",Write:"Escrever","Pull relay sets":"Receber conjuntos de relé","Select the relay sets you want to pull":"Selecione os conjuntos de relé que deseja receber","No relay sets found":"Nenhum conjunto de relé encontrado","Pull n relay sets":"Receber {{n}} conjuntos de relé",Pull:"Receber","Select all":"Selecionar todos","Relay Sets":"Conjuntos de relé","Read & Write Relays":"Relés de Leitura & Escrita","read relays description":"Relés de leitura são usados para buscar eventos sobre você. Outros usuários publicarão os eventos que deseja ver nesses relés.","write relays description":"Relés de escrita são usados para publicar seus eventos. Outros usuários buscarão seus eventos nesses relés.","read & write relays notice":"O número de servidores de leitura e escrita deve ser mantido entre 2 e 4, idealmente.","Don't have an account yet?":"Não tem uma conta ainda?","or simply generate a private key":"ou simplesmente gere uma chave privada","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"Esta é uma chave privada. Não a compartilhe com ninguém. Mantenha-a segura, pois não poderá recuperá-la se perdê-la.",Edit:"Editar",Save:"Salvar","Display Name":"Nome de Exibição",Bio:"Biografia","Nostr Address (NIP-05)":"Endereço Nostr (NIP-05)","Invalid NIP-05 address":"Endereço NIP-05 inválido","Copy private key":"Copiar chave privada","Enter the password to decrypt your ncryptsec":"Digite a senha para descriptografar seu ncryptsec",Back:"Voltar","optional: encrypt nsec":"opcional: criptografar nsec",password:"senha","Sign up":"Registrar-se","Save to":"Salvar em","Enter a name for the new relay set":"Digite um nome para o novo conjunto de relé","Save to a new relay set":"Salvar em um novo conjunto de relé",Mute:"Silenciar",Muted:"Silenciado",Unmute:"Ativar som","Unmute user":"Ativar som do usuário","Append n relays":"Adicionar {{n}} relés",Append:"Adicionar","Select relays to append":"Selecione os relés para adicionar","calculating...":"calculando...","Calculate optimal read relays":"Calcular relés de leitura ideais","Login to set":"Entrar no conjunto","Please login to view following feed":"Por favor, faça login para ver o feed de seguidores","Send only to r":"Enviar apenas para {{r}}","Send only to these relays":"Enviar apenas para estes relés",Explore:"Explorar","Search relays":"Relés de pesquisa",relayInfoBadgeAuth:"Auth",relayInfoBadgeSearch:"Pesquisar",relayInfoBadgePayment:"Pagamento",Operator:"Operador",Contact:"Contato",Software:"Software",Version:"Versão","Random Relays":"Relés Aleatórios",randomRelaysRefresh:"Atualizar","Explore more":"Explorar mais","Payment page":"Página de Pagamento","Supported NIPs":"NIPs Suportados","Open in a":"Abrir em {{a}}","Cannot handle event of kind k":"Não é possível lidar com o evento do tipo {{k}}","Encrypted direct messages not supported":"Mensagens diretas encriptadas não suportadas","Sorry! The note cannot be found 😔":"Desculpe! A nota não pode ser encontrada 😔","This user has been muted":"Este usuário foi silenciado",Wallet:"Carteira",Sats:"Sats",sats:"sats","Zap to":"Zap para","Zap n sats":"Zap {{n}} sats",zapComment:"Comentário","Default zap amount":"Valor padrão do zap","Default zap comment":"Comentário padrão do zap","Lightning Address (or LNURL)":"Endereço Lightning (ou LNURL)","Quick zap":"Zap Rápido","If enabled, you can zap with a single click. Click and hold for custom amounts":"Se ativado, você pode zapar com um único clique. Clique e segure para quantias personalizadas",All:"Tudo",Reactions:"Reações",Zaps:"Zaps","Enjoying Jumble?":"Gostando do Jumble?","Your donation helps me maintain Jumble and make it better! 😊":"Sua doação me ajuda a manter o Jumble e torná-lo melhor! 😊","Earlier notifications":"Notificações anteriores","Temporarily display this note":"Exibir esta nota temporariamente",buttonFollowing:"Seguindo","Are you sure you want to unfollow this user?":"Tem certeza de que deseja deixar de seguir este usuário?","Recent Supporters":"Apoiadores Recentes","Seen on":"Visto em","Temporarily display this reply":"Exibir temporariamente esta resposta","Note not found":"Nota não encontrada","no more replies":"não há mais respostas","Relay sets":"Conjuntos de Relé","Favorite Relays":"Relés Favoritos","Following's Favorites":"Favoritos de quem você segue","no more relays":"não há mais relés","Favorited by":"Favoritado por","Post settings":"Configurações de Postagem","Media upload service":"Serviço de Upload de Mídia","Choose a relay":"Escolher um Relé","no relays found":"nenhum relé encontrado",video:"vídeo","Show n new notes":"Mostrar {{n}} novas notas",YouTabName:"Você",Bookmark:"Favorito","Remove bookmark":"Remover favorito","no bookmarks found":"Nenhum favorito encontrado","no more bookmarks":"Sem mais favoritos",Bookmarks:"Favoritos","Show more":"Mostrar mais",General:"Geral",Autoplay:"Reprodução Automática","Enable video autoplay on this device":"Habilitar reprodução automática de vídeo neste dispositivo","Paste or drop media files to upload":"Cole ou solte arquivos de mídia para fazer upload",Preview:"Pré-visualização","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"Você está prestes a publicar um evento assinado por [{{eventAuthorName}}]. Você está atualmente logado como [{{currentUsername}}]. Tem certeza?","Platinum Sponsors":"Patrocinadores Platinum",From:"De","Comment on":"Comentar em","View on njump.me":"Ver em njump.me","Hide content from untrusted users":"Esconder conteúdo de usuários não confiáveis","Only show content from your followed users and the users they follow":"Mostrar apenas conteúdo dos usuários que você segue e dos usuários que eles seguem","Followed by":"Seguido por","Mute user privately":"Silenciar usuário privadamente","Mute user publicly":"Silenciar usuário publicamente",Quotes:"Citações","Lightning Invoice":"Fatura Lightning","Bookmark failed":"Falha ao favoritar","Remove bookmark failed":"Falha ao remover favorito",Translation:"Tradução",Balance:"Saldo",characters:"caracteres",jumbleTranslateApiKeyDescription:"Esta chave API pode ser usada em qualquer outro lugar que suporte LibreTranslate. O URL do serviço é {{serviceUrl}}","Top up":"Carregar","Will receive: {n} characters":"Receberá: {{n}} caracteres","Top up {n} sats":"Carregar {{n}} sats","Minimum top up is {n} sats":"O carregamento mínimo é de {{n}} sats",Service:"Serviço","Reset API key":"Redefinir chave API","Are you sure you want to reset your API key? This action cannot be undone.":"Tem certeza de que deseja redefinir sua chave API? Esta ação não pode ser desfeita.",Warning:"Aviso","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"Sua chave API atual se tornará inválida imediatamente, e qualquer aplicativo que a utilize deixará de funcionar até que você os atualize com a nova chave.","Service address":"Endereço do serviço",Pay:"Pagar",interactions:"interações",notifications:"notificações","Show untrusted {type}":"Mostrar {{type}} não confiáveis","Hide untrusted {type}":"Esconder {{type}} não confiáveis","Currently hiding {type} from untrusted users.":"Atualmente escondendo {{type}} de usuários não confiáveis.","Currently showing all {type}.":"Atualmente mostrando todos os {{type}}.","Click continue to show all {type}.":"Clique em continuar para mostrar todos os {{type}}.","Click continue to hide {type} from untrusted users.":"Clique em continuar para esconder {{type}} de usuários não confiáveis.","Trusted users include people you follow and people they follow.":"Usuários confiáveis incluem pessoas que você segue e pessoas que elas seguem.",Continue:"Continuar","Successfully updated mute list":"Lista de silenciados atualizada com sucesso","No pubkeys found from {url}":"Nenhum pubkey encontrado em {{url}}","Translating...":"Traduzindo...",Translate:"Traduzir","Show original":"Mostrar original",Website:"Website","Hide untrusted notes":"Esconder notas não confiáveis","Open in another client":"Abrir em outro cliente",Community:"Comunidade",Group:"Grupo","Live event":"Evento ao vivo",Article:"Artigo",Unfavorite:"Desfavoritar","Recommended relays":"Relés recomendados","Blossom server URLs":"URLs do servidor Blossom","You need to add at least one blossom server in order to upload media files.":"Você precisa adicionar pelo menos um servidor Blossom para poder carregar arquivos de mídia.","Recommended blossom servers":"Servidores Blossom recomendados","Enter Blossom server URL":"Inserir URL do servidor Blossom",Preferred:"Preferido","Multiple choice (select one or more)":"Múltipla escolha (selecione um ou mais)",Vote:"Votar","{{number}} votes":"{{number}} votos","Total votes":"Total de votos","Poll has ended":"A sondagem terminou","Poll ends at {{time}}":"A sondagem termina em {{time}}","Load results":"Carregar resultados","This is a poll note.":"Esta é uma nota de sondagem.","Unlike regular notes, polls are not widely supported and may not display on other clients.":"Ao contrário das notas regulares, as sondagens não são amplamente suportadas e podem não ser exibidas noutros clientes.","Option {{number}}":"Opção {{number}}","Add Option":"Adicionar Opção","Allow multiple choices":"Permitir múltiplas escolhas","End Date (optional)":"Data de fim (opcional)","Clear end date":"Limpar data de fim","Relay URLs (optional, comma-separated)":"URLs de relay (opcional, separadas por vírgulas)","Remove poll":"Remover sondagem","Refresh results":"Atualizar resultados",Poll:"Sondagem",Media:"mídia","Republish to ...":"Transmitir para...","Successfully republish to your write relays":"Transmitido com sucesso para seus relays de escrita","Failed to republish to your write relays: {{error}}":"Falha ao transmitir para seus relays de escrita: {{error}}","Successfully republish to relay set: {{name}}":"Transmitido com sucesso para o conjunto de relé: {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"Falha ao transmitir para o conjunto de relé: {{name}}. Erro: {{error}}","Successfully republish to relay: {{url}}":"Transmitido com sucesso para o relé: {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"Falha ao transmitir para o relé: {{url}}. Erro: {{error}}","Write relays":"Relés de escrita","No more reactions":"Sem mais reações","No reactions yet":"Ainda sem reações","No more zaps":"Sem mais zaps","No zaps yet":"Ainda sem zaps","No more reposts":"Sem mais reposts","No reposts yet":"Ainda sem reposts",Reposts:"Reposts",FollowListNotFoundConfirmation:"Lista de seguir não encontrada. Deseja criar uma nova? Se seguiu utilizadores anteriormente, por favor NÃO confirme, pois esta operação fará com que perca a sua lista de seguir anterior.",MuteListNotFoundConfirmation:"Lista de silenciados não encontrada. Deseja criar uma nova? Se silenciou utilizadores anteriormente, por favor NÃO confirme, pois esta operação fará com que perca a sua lista de silenciados anterior.","Show NSFW content by default":"Mostrar conteúdo NSFW por padrão","Custom emoji management":"Gestão de emojis personalizados","After changing emojis, you may need to refresh the page":"Após alterar os emojis, poderá ser necessário actualizar a página","Too many read relays":"Demasiados relays de leitura","Too many write relays":"Demasiados relays de escrita","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"Tem {{count}} relays de leitura. A maioria dos clientes usa apenas 2-4 relays, configurar mais é desnecessário.","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"Tem {{count}} relays de escrita. A maioria dos clientes usa apenas 2-4 relays, configurar mais é desnecessário.","Optimize Relay Settings":"Optimizar definições de relay","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"A sua configuração actual de relay pode não ser ideal. Isto pode tornar difícil para outros encontrarem as suas publicações e pode resultar em notificações incompletas.","Optimize Now":"Optimizar agora","Maybe Later":"Talvez mais tarde","Don't remind me again":"Não me relembrar novamente",Posts:"Publicações",Articles:"Artigos",Highlights:"Destaques",Polls:"Inquéritos","Voice Posts":"Áudios","Photo Posts":"Fotos","Video Posts":"Vídeos","Select All":"Seleccionar tudo","Clear All":"Limpar tudo","Set as default filter":"Definir como filtro predefinido",Apply:"Aplicar",Reset:"Repor","Share something on this Relay":"Partilhe algo neste Relay","Try deleting this note":"Tente eliminar esta nota","Deletion request sent to {{count}} relays":"Pedido de eliminação enviado para {{count}} relays","Suitable Relays":"Relays adequados","People, keywords, or relays":"Pessoas, palavras-chave ou relays","Hide content mentioning muted users":"Ocultar conteúdo que menciona utilizadores silenciados","This note mentions a user you muted":"Esta nota menciona um utilizador que silenciou",Filter:"Filtro","mentioned you in a note":"mencionou-o numa nota","quoted your note":"citou a sua nota","voted in your poll":"votou na sua sondagem","reacted to your note":"reagiu à sua nota","reposted your note":"republicou a sua nota","zapped your note":"zappeou a sua nota","highlighted your note":"destacou a sua nota","zapped you":"zappeou-o","Mark as read":"Marcar como lida",Report:"Denunciar","Successfully report":"Denúncia enviada com sucesso","Failed to report":"Falha ao enviar denúncia",nudity:"Nudez",malware:"Malware",profanity:"Blasfémia",illegal:"Conteúdo ilegal",spam:"Spam",other:"Outro","Notification list style":"Estilo da lista de notificações","See extra info for each notification":"Ver informações extra para cada notificação","See more notifications at a glance":"Ver mais notificações rapidamente",Detailed:"Detalhado",Compact:"Compacto","Submit Relay":"Enviar Relay",Homepage:"Página inicial","Proof of Work (difficulty {{minPow}})":"Prova de Trabalho (dificuldade {{minPow}})","Proof of Work":"Prova de Trabalho","Posts & comments difficulty":"Dificuldade de publicações e comentários","Reactions difficulty":"Dificuldade de reações","Image Mode":"Modo imagem","Media Feed":"Feed multimédia","Text Only":"Feed de texto","Text Post":"Publicação de texto","Picture Post":"Publicação de imagem","Video Post":"Publicação de vídeo","Short Video Post":"Vídeo curto",Text:"Texto",Picture:"Imagem",Video:"Vídeo","Short Video":"Vídeo curto","Post Type":"Tipo de publicação","via {{client}}":"via {{client}}","Auto-load media":"Carregamento automático de multimédia",Always:"Sempre","Wi-Fi only":"Apenas Wi-Fi",Never:"Nunca","Click to load image":"Clique para carregar a imagem","Click to load media":"Clique para carregar a mídia","Click to load YouTube video":"Clique para carregar o vídeo do YouTube","{{count}} reviews":"{{count}} avaliações","Write a review":"Escrever uma avaliação","No reviews yet. Be the first to write one!":"Ainda não há avaliações. Seja o primeiro a escrever uma!","View more reviews":"Ver mais avaliações","Failed to review":"Falha ao avaliar","Write a review and pick a star rating":"Escreva uma avaliação e escolha uma classificação por estrelas",Submit:"Enviar","Reviews for {{relay}}":"Avaliações para {{relay}}","No relays selected":"Nenhum relay selecionado","Post to":"Publicar para","Write relays and {{count}} other relays":"Relays de escrita e {{count}} outros relays","{{count}} relays":"{{count}} relays","Republishing...":"Republicando...","Trending Notes":"Notas em Tendência","Connected to":"Conectado a","Disconnect Wallet":"Desconectar Carteira","Are you absolutely sure?":"Tem certeza absoluta?","You will not be able to send zaps to others.":"Você não poderá enviar zaps para outros.",Disconnect:"Desconectar","Start with a Rizful Vault":"Comece com um Cofre Rizful","or other wallets":"outras carteiras","Rizful Vault":"Cofre Rizful","Rizful Vault connected!":"Cofre Rizful conectado!","You can now use your Rizful Vault to zap your favorite notes and creators.":"Agora você pode usar seu Cofre Rizful para zapear suas notas e criadores favoritos.","Your Lightning Address":"Seu Endereço Lightning","New to Rizful?":"Novo no Rizful?","Sign up for Rizful":"Inscreva-se no Rizful","If you already have a Rizful account, you can skip this step.":"Se você já tem uma conta Rizful, pode pular esta etapa.","Get your one-time code":"Obtenha seu código único","Get code":"Obter código","Connect to your Rizful Vault":"Conecte-se ao seu Cofre Rizful","Paste your one-time code here":"Cole seu código único aqui",Connect:"Conectar","Set up your wallet to send and receive sats!":"Configure a sua carteira para enviar e receber sats!","Set up":"Configurar",Pinned:"Fixado",Unpin:"Desafixar",Unpinning:"Desafixando","Pinning...":"Fixando...","Pinned!":"Fixado!","Failed to pin: {{error}}":"Falha ao fixar: {{error}}","Unpinning...":"Desafixando...","Unpinned!":"Desafixado!","Failed to unpin: {{error}}":"Falha ao desafixar: {{error}}","Unpin from profile":"Desafixar do perfil","Pin to profile":"Fixar no perfil",Appearance:"Aparência","Pure Black":"Preto Puro",Default:"Padrão",Red:"Vermelho",Orange:"Laranja",Amber:"Âmbar",Yellow:"Amarelo",Lime:"Lima",Green:"Verde",Emerald:"Esmeralda",Teal:"Turquesa",Cyan:"Ciano",Sky:"Céu",Blue:"Azul",Indigo:"Índigo",Violet:"Violeta",Purple:"Roxo",Fuchsia:"Fúcsia",Pink:"Rosa",Rose:"Rosa","Primary color":"Cor primária",Layout:"Layout","Two-column":"Coluna dupla","Single-column":"Coluna única",Reviews:"Avaliações",Extension:"Extensão",Remote:"Remoto","Encrypted Key":"Chave Criptografada","Private Key":"Chave Privada","Welcome to Jumble":"Bem-vindo ao Jumble","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","Explore Relays":"Explorar Relays","Choose a feed":"Escolha um feed","and {{x}} others":"e {{x}} outros",selfZapWarning:"Jumble não é responsável pelo que acontece se você zap a si mesmo. Prossiga por sua conta e risco. 😉⚡","Emoji Pack":"Pacote de Emojis","Emoji pack added":"Pacote de emojis adicionado","Add emoji pack failed":"Falha ao adicionar pacote de emojis","Emoji pack removed":"Pacote de emojis removido","Remove emoji pack failed":"Falha ao remover pacote de emojis",Added:"Adicionado","Emoji Packs":"Pacotes de Emojis","My Packs":"Os Meus Pacotes","Adding...":"A adicionar...","Removing...":"A remover...",Reload:"Recarregar","Request to Join Relay":"Solicitar adesão ao Relay","Leave Relay":"Sair do Relay",Leave:"Sair","Are you sure you want to leave this relay?":"Tem a certeza de que deseja sair deste relay?","Join request sent successfully":"Pedido de adesão enviado com sucesso","Failed to send join request":"Falha ao enviar pedido de adesão","Leave request sent successfully":"Pedido de saída enviado com sucesso","Failed to send leave request":"Falha ao enviar pedido de saída","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"Introduza um código de convite se tiver um. Caso contrário, deixe em branco para enviar um pedido.","Invite Code (Optional)":"Código de Convite (Opcional)","Enter invite code":"Introduza o código de convite","Sending...":"A enviar...","Send Request":"Enviar Pedido","You can get an invite code from a relay member.":"Pode obter um código de convite de um membro do relay.","Enter the invite code you received from a relay member.":"Introduza o código de convite que recebeu de um membro do relay.","Get Invite Code":"Obter Código de Convite","Share this invite code with others to invite them to join this relay.":"Partilhe este código de convite com outros para os convidar a aderir a este relay.","Invite Code":"Código de Convite",Copy:"Copiar","This invite code can be used by others to join the relay.":"Este código de convite pode ser usado por outros para aderir ao relay.","No invite code available from this relay.":"Nenhum código de convite disponível deste relay.",Close:"Fechar","Failed to get invite code from relay":"Falha ao obter código de convite do relay","Failed to get invite code":"Falha ao obter código de convite","Invite code copied to clipboard":"Código de convite copiado para a área de transferência","Favicon URL":"URL do Favicon","Filter out onion relays":"Filtrar relays onion","Click to load X post":"Clique para carregar a publicação do X","View Nostr comments":"Ver comentários do Nostr","Search for notes":"Pesquisar notas","Search for hashtag":"Pesquisar hashtag","Go to note":"Ir para nota","Go to relay":"Ir para relay","View discussions about this":"Ver discussões sobre este conteúdo","Open link":"Abrir ligação","View Nostr discussions":"Ver discussões do Nostr","Optimal relays":"Relays ideais","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"Republicado com sucesso nos relays ideais (os seus relays de escrita e os relays de leitura dos utilizadores mencionados)","Failed to republish to optimal relays: {{error}}":"Falha ao republicar nos relays ideais: {{error}}","External Content":"Conteúdo externo",Highlight:"Destacar","Optimal relays and {{count}} other relays":"Relays ideais e {{count}} outros relays","Low trust ranking ({{percentile}}%)":"Classificação de confiança baixa ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"Conta suspeita (Pontuação de confiança: {{percentile}}%)","n users":"{{count}} utilizadores","View Details":"Ver detalhes","Follow Pack Not Found":"Pacote de seguir não encontrado","Follow pack not found":"Pacote de seguir não encontrado",Users:"Utilizadores",Feed:"Feed","Follow Pack":"Pacote de Seguir","24h Pulse":"Pulso 24h","Load earlier":"Carregar anterior","Last 24 hours":"Últimas 24 horas","Last {{count}} days":"Últimos {{count}} dias",notes:"notas","Quick reaction":"Reação rápida","If enabled, you can react with a single click. Click and hold for more options":"Se ativado, pode reagir com um único clique. Clique e mantenha premido para mais opções","Quick reaction emoji":"Emoji de reação rápida","Select emoji":"Selecionar emoji","NSFW content display":"NSFW content display","Hide completely":"Hide completely","Show but hide content":"Show but hide content","Show directly":"Show directly","Click to view":"Click to view","Special Follow":"Seguir Especial","Unfollow Special":"Deixar de Seguir Especial","Personal Feeds":"Feeds Pessoais","Relay Feeds":"Feeds de Relays","Create Highlight":"Criar Destaque","Write your thoughts about this highlight...":"Escreva os seus pensamentos sobre este destaque...","Publish Highlight":"Publicar Destaque","Show replies":"Mostrar respostas","Hide replies":"Ocultar respostas","Welcome to Jumble!":"Bem-vindo ao Jumble!","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"O seu feed está vazio porque ainda não está a seguir ninguém. Comece por explorar conteúdo interessante e siga utilizadores de que gosta!","Search Users":"Procurar Utilizadores","Create New Account":"Criar nova conta",Important:"Importante","Generate Your Account":"Gerar a sua conta","Your private key IS your account. Keep it safe!":"A sua chave privada É a sua conta. Mantenha-a segura!","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"No Nostr, a sua chave privada É a sua conta. Se perder a sua chave privada, perde a sua conta para sempre.","Your Private Key":"A sua chave privada","Generate new key":"Gerar nova chave","Download Backup File":"Transferir ficheiro de cópia de segurança","Copied to Clipboard":"Copiado para a área de transferência","Copy to Clipboard":"Copiar para a área de transferência","I already saved my private key securely.":"Já guardei a minha chave privada de forma segura.","Almost Done!":"Quase pronto!","Set a password to encrypt your key, or skip to finish":"Defina uma palavra-passe para encriptar a sua chave ou ignore para finalizar","Password Protection (Optional)":"Proteção por palavra-passe (opcional)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"Definir uma palavra-passe encripta a sua chave privada neste navegador. Pode ignorar este passo, mas recomendamos que defina uma para maior segurança.","Password (Optional)":"Palavra-passe (opcional)","Enter password or leave empty to skip":"Introduza a palavra-passe ou deixe vazio para ignorar","Confirm Password":"Confirmar palavra-passe","Re-enter password":"Introduza novamente a palavra-passe","Passwords do not match":"As palavras-passe não coincidem","Finish Signup":"Concluir registo","Create Your Nostr Account":"Crie a sua conta Nostr","Generate your unique private key. This is your digital identity.":"Gere a sua chave privada única. Esta é a sua identidade digital.","Critical: Save Your Private Key":"Crítico: Guarde a sua chave privada","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"A sua chave privada É a sua conta. Não há recuperação de palavra-passe. Se a perder, perderá a sua conta para sempre. Por favor, guarde-a num local seguro.","I have safely backed up my private key":"Fiz uma cópia de segurança da minha chave privada","Secure Your Account":"Proteja a sua conta","Add an extra layer of protection with a password":"Adicione uma camada extra de proteção com uma palavra-passe","Password Protection (Recommended)":"Proteção por palavra-passe (recomendado)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"Adicione uma palavra-passe para encriptar a sua chave privada neste navegador. Isto é opcional, mas fortemente recomendado para melhor segurança.","Create a password (or skip)":"Crie uma palavra-passe (ou ignore)","Enter your password again":"Introduza novamente a sua palavra-passe","Complete Signup":"Concluir registo",Recommended:"Recomendado","Enter Password":"Introduza a palavra-passe",Password:"Palavra-passe",Confirm:"Confirmar","trust-filter.title":"Filtro de pontuação de confiança","trust-filter.off":"Desativado","trust-filter.low":"Baixo","trust-filter.medium":"Médio","trust-filter.high":"Alto","trust-filter.wot":"WoT","trust-filter.filter-threshold":"Limite de filtro","trust-filter.quick-presets":"Predefinições rápidas","trust-filter.show-all-content":"Mostrar todo o conteúdo","trust-filter.only-show-wot":"Mostrar apenas a sua rede de confiança (seguidos + seguidos deles)","trust-filter.hide-bottom-percent":"Filtrar os {{score}}% inferiores de utilizadores por classificação de confiança","trust-filter.trust-score-description":"Calculado com base na reputação do utilizador e no percentil da rede social","Auto-load profile pictures":"Carregar fotos de perfil automaticamente","Disable live feed":"Desativar feed ao vivo","Enable live feed":"Ativar feed ao vivo","Default relays":"Relays predefinidos","Reset to default":"Repor predefinições","Default relays description":"Utilizados para consultar as configurações de relays de outros utilizadores e como alternativa quando os utilizadores não têm relays configurados.","Default relays warning":"Aviso: Não modifique estas configurações casualmente, pois pode afetar a sua experiência básica.","Invalid relay URL":"URL de relay inválido","Muted words":"Palavras silenciadas","Add muted word":"Adicionar palavra silenciada","Zap Details":"Detalhes do Zap","Default trust score filter threshold ({{n}}%)":"Limite predefinido do filtro de pontuação de confiança ({{n}}%)","No notes found":"Nenhuma nota encontrada","Try again later or check your connection":"Tente novamente mais tarde ou verifique a sua ligação","Hide indirect":"Ocultar indiretas","Copy note content":"Copiar conteúdo da nota","Video loop":"Repetir vídeo","Automatically replay videos when they end":"Reproduzir automaticamente os vídeos quando terminarem","Relays used for searching notes (NIP-50)":"Relés usados para pesquisar notas (NIP-50)","Protected event (NIP-70)":"Evento protegido (NIP-70)",Protected:"Protegido","Protected event hint":"Eventos protegidos (NIP-70) só podem ser publicados pelo autor. Os relés rejeitarão estes eventos de terceiros, impedindo que outros retransmitam o seu conteúdo. Nota: nem todos os relés suportam eventos protegidos.","Allow insecure connections":"Permitir ligações inseguras","Allow insecure connections description":"Permitir carregar recursos http:// e ligar a relays ws://. Pode acionar avisos de conteúdo misto do navegador.","reacted to":"reagiu a",Reaction:"Reação","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"O login com chave privada é inseguro. Recomenda-se usar uma extensão do navegador para login, como alby, nostr-keyx ou nos2x. Se precisar de usar uma chave privada, defina pelo menos uma palavra-passe para encriptação.","n users_one":"{{count}} utilizador","n users_other":"{{count}} utilizadores","Font size":"Tamanho da fonte","Advanced mode":"Modo avançado","Post type selector":"Seletor de tipo de publicação","Shows post kind dropdown when creating posts":"Mostra o menu pendente de tipo de publicação ao criar publicações","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"Pesquisar comunidades...","No communities found":"Nenhuma comunidade encontrada","No communities yet":"Nenhuma comunidade ainda"}},p3={translation:{"Welcome! 🥳":"Добро пожаловать! 🥳",About:"О нас","New Note":"Новая заметка",Post:"Опубликовать",Home:"Главная","Relay settings":"Настройки ретрансляции",Settings:"Настройки",SidebarRelays:"Ретрансляторы",Refresh:"Обновить",Profile:"Профиль",Logout:"Выйти",Following:"Подписки",followings:"подписки",reposted:"репостнул","just now":"только что","minute ago_one":"{{count}} минуту назад","minute ago_other":"{{count}} минут назад","n m":"{{n}}м","hour ago_one":"{{count}} час назад","hour ago_other":"{{count}} часов назад","n h":"{{n}}ч","day ago_one":"{{count}} день назад","day ago_other":"{{count}} дней назад","n d":"{{n}}д",date:"{{timestamp, date}}",Follow:"Подписаться",Unfollow:"Отписаться","Follow failed":"Ошибка подписки","Unfollow failed":"Ошибка отписки","show new notes":"показать новые заметки","loading...":"загрузка...","Loading...":"Загрузка...","no more notes":"больше нет заметок","reply to":"ответить",reply:"ответить",Reply:"Ответить","load more older replies":"загрузить больше старых ответов","Write something...":"Напишите что-нибудь...",Cancel:"Отмена",Mentions:"Упоминания","Failed to post":"Ошибка публикации","Post successful":"Успешно опубликовано","Your post has been published":"Ваш пост опубликован",Repost:"Репост",Quote:"Цитировать","Copy event ID":"Копировать ID события","Copy user ID":"Копировать ID пользователя","View raw event":"Посмотреть исходное событие",Like:"Нравится","switch to light theme":"переключить на светлую тему","switch to dark theme":"переключить на тёмную тему","switch to system theme":"переключить на системную тему",Note:"Заметка",note:"заметка","username's following":"Подписки пользователя {{username}}","username's used relays":"Ретрансляторы пользователя {{username}}","username's muted":"{{username}} заблокирован",Login:"Войти","Follows you":"Подписан на вас","Relay Settings":"Настройки ретрансляторов","Relay set name":"Имя набора ретрансляторов","Add a new relay set":"Добавить новый набор ретрансляторов",Add:"Добавить","n relays":"{{n}} ретрансляторов",Rename:"Переименовать","Copy share link":"Скопировать ссылку для обмена",Delete:"Удалить","Relay already exists":"Ретранслятор уже существует","invalid relay URL":"неверный URL ретранслятора","Add a new relay":"Добавить новый ретранслятор",back:"назад","Lost in the void":"Потерялся в пустоте","Carry me home":"Отведи меня домой","no replies":"нет ответов","Reply to":"Ответить",Search:"Поиск","The relays you are connected to do not support search":"Подключённые ретрансляторы не поддерживают поиск","Show more...":"Показать больше...","All users":"Все пользователи","Display replies":"Показать ответы",Notes:"Заметки",Replies:"Ответы",Notifications:"Уведомления","no more notifications":"нет новых уведомлений","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"Использование входа с приватным ключом небезопасно. Рекомендуется использовать расширение браузера для входа, такое как alby, nostr-keyx или nos2x. Если вы всё же хотите использовать приватный ключ, установите хотя бы пароль для шифрования.","Login with Browser Extension":"Войти через расширение браузера","Login with Bunker":"Войти через Bunker","Login with Private Key":"Войти с приватным ключом","reload notes":"перезагрузить заметки","Logged in Accounts":"Вошедшие аккаунты","Add an Account":"Добавить аккаунт","More options":"Больше опций","Add client tag":"Добавить тег клиента","Show others this was sent via RogueJumble":"Показать другим, что сообщение отправлено через RogueJumble","Are you sure you want to logout?":"Вы уверены, что хотите выйти?","relay sets":"наборы ретрансляторов",edit:"редактировать",Languages:"Языки",Theme:"Тема",System:"Система",Light:"Светлая",Dark:"Тёмная",Temporary:"Временная","Choose a relay set":"Выберите набор ретрансляторов","Switch account":"Сменить аккаунт",Pictures:"Изображения","Picture note":"Заметка с изображением","A special note for picture-first clients like Olas":"Особенная заметка для клиентов с приоритетом изображений, таких как Olas","Picture note requires images":"Заметка с изображением требует наличия изображений",Relays:"Ретрансляторы",Image:"изображение","R & W":"Чтение & Запись",Read:"Читать",Write:"Писать","Pull relay sets":"Получить наборы ретрансляторов","Select the relay sets you want to pull":"Выберите наборы ретрансляторов для получения","No relay sets found":"Наборы ретрансляторов не найдены","Pull n relay sets":"Получить {{n}} наборов ретрансляторов",Pull:"Получить","Select all":"Выбрать все","Relay Sets":"Наборы ретрансляторов","Read & Write Relays":"Ретрансляторы для чтения и записи","read relays description":"Ретрансляторы для чтения используются для получения событий о вас. Другие пользователи публикуют события, которые вы должны увидеть, через ваши ретрансляторы для чтения.","write relays description":"Ретрансляторы для записи используются для публикации ваших событий. Другие пользователи получают ваши события через ретрансляторы для записи.","read & write relays notice":"Количество серверов для чтения и записи должно быть оптимально от 2 до 4.","Don't have an account yet?":"Ещё нет аккаунта?","or simply generate a private key":"или просто сгенерируйте приватный ключ","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"Это приватный ключ. Не делитесь им с другими. Храните его в надёжном месте – восстановить его будет невозможно.",Edit:"Редактировать",Save:"Сохранить","Display Name":"Отображаемое имя",Bio:"О себе","Nostr Address (NIP-05)":"Адрес Nostr (NIP-05)","Invalid NIP-05 address":"Неверный адрес NIP-05","Copy private key":"Скопировать приватный ключ","Enter the password to decrypt your ncryptsec":"Введите пароль для расшифровки вашего ncryptsec",Back:"Назад","optional: encrypt nsec":"необязательно: зашифровать nsec",password:"пароль","Sign up":"Зарегистрироваться","Save to":"Сохранить в","Enter a name for the new relay set":"Введите имя нового набора ретрансляторов","Save to a new relay set":"Сохранить в новый набор ретрансляторов",Mute:"Заглушить",Muted:"Заглушено",Unmute:"Отменить заглушку","Mute user":"Заглушить пользователя","Unmute user":"Снять заглушку с пользователя","Append n relays":"Добавить {{n}} ретрансляторов",Append:"Добавить","Select relays to append":"Выберите ретрансляторы для добавления","calculating...":"вычисление...","Calculate optimal read relays":"Рассчитать оптимальные ретрансляторы для чтения","Login to set":"Войти в набор","Please login to view following feed":"Войдите, чтобы увидеть ленту подписок","Send only to r":"Отправить только на {{r}}","Send only to these relays":"Отправить только на эти ретрансляторы",Explore:"Обзор","Search relays":"Ретрансляторы для поиска",relayInfoBadgeAuth:"Авторизация",relayInfoBadgeSearch:"Поиск",relayInfoBadgePayment:"Платежи",Operator:"Оператор",Contact:"Контакты",Software:"Программное обеспечение",Version:"Версия","Random Relays":"Случайные ретрансляторы",randomRelaysRefresh:"Обновить","Explore more":"Исследовать больше","Payment page":"Страница оплаты","Supported NIPs":"Поддерживаемые NIP","Open in a":"Открыть в {{a}}","Cannot handle event of kind k":"Невозможно обработать событие типа {{k}}","Encrypted direct messages not supported":"Зашифрованные личные сообщения не поддерживаются","Sorry! The note cannot be found 😔":"Извините! Заметка не найдена 😔","This user has been muted":"Этот пользователь заглушен",Wallet:"Кошелёк",Sats:"Сатс",sats:"сатс","Zap to":"Зап отправить","Zap n sats":"Зап {{n}} сатс",zapComment:"Комментарий","Default zap amount":"Стандартная сумма для зап","Default zap comment":"Стандартный комментарий для зап","Lightning Address (or LNURL)":"Lightning-адрес (или LNURL)","Quick zap":"Быстрый зап","If enabled, you can zap with a single click. Click and hold for custom amounts":"Если включено, вы можете отправить зап одним нажатием. Нажмите и удерживайте для выбора суммы",All:"Все",Reactions:"Реакции",Zaps:"Запы","Enjoying RogueJumble?":"Нравится RogueJumble?","Your donation helps me maintain RogueJumble and make it better! 😊":"Ваше пожертвование помогает поддерживать и улучшать RogueJumble! 😊","Earlier notifications":"Ранние уведомления","Temporarily display this note":"Временно отобразить эту заметку",buttonFollowing:"Подписан","Are you sure you want to unfollow this user?":"Вы уверены, что хотите отписаться от этого пользователя?","Recent Supporters":"Недавние спонсоры","Seen on":"Просмотрено на","Temporarily display this reply":"Временно отобразить этот ответ","Note not found":"Заметка не найдена","no more replies":"больше нет ответов","Relay sets":"Наборы ретрансляторов","Favorite Relays":"Избранные ретрансляторы","Following's Favorites":"Избранные ретрансляторы подписчиков","no more relays":"больше нет ретрансляторов","Favorited by":"Избранные у","Post settings":"Настройки публикации","Media upload service":"Служба загрузки медиафайлов","Choose a relay":"Выберите ретранслятор","no relays found":"ретрансляторы не найдены",video:"видео","Show n new notes":"Показать {{n}} новых заметок",YouTabName:"Вы",Bookmark:"Закладка","Remove bookmark":"Удалить закладку","no bookmarks found":"Закладки не найдены","no more bookmarks":"Больше нет закладок",Bookmarks:"Закладки","Show more":"Показать больше",General:"Общие",Autoplay:"Автовоспроизведение","Enable video autoplay on this device":"Включить автовоспроизведение видео на этом устройстве","Paste or drop media files to upload":"Вставьте или перетащите медиафайлы для загрузки",Preview:"Предварительный просмотр","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"Вы собираетесь опубликовать событие, подписанное [{{eventAuthorName}}]. Вы в данный момент вошли как [{{currentUsername}}]. Вы уверены?","Platinum Sponsors":"Платиновые спонсоры",From:"От","Comment on":"Прокомментировать","View on njump.me":"Посмотреть на njump.me","Hide content from untrusted users":"Скрыть контент от недоверенных пользователей","Only show content from your followed users and the users they follow":"Показывать только контент от пользователей, на которых вы подписаны, и от пользователей, на которых они подписаны","Followed by":"Подписан на","Mute user privately":"Заглушить пользователя приватно","Mute user publicly":"Заглушить пользователя публично",Quotes:"Цитаты","Lightning Invoice":"Lightning-счет","Bookmark failed":"Не удалось добавить закладку","Remove bookmark failed":"Не удалось удалить закладку",Translation:"Перевод",Balance:"Баланс",characters:"символов",jumbleTranslateApiKeyDescription:"Вы можете использовать этот API-ключ в любом другом месте, которое поддерживает LibreTranslate. URL сервиса: {{serviceUrl}}","Top up":"Пополнить","Will receive: {n} characters":"Получите: {{n}} символов","Top up {n} sats":"Пополнить на {{n}} сатс","Minimum top up is {n} sats":"Минимальное пополнение составляет {{n}} сатс",Service:"Сервис","Reset API key":"Сбросить API-ключ","Are you sure you want to reset your API key? This action cannot be undone.":"Вы уверены, что хотите сбросить ваш API-ключ? Это действие не может быть отменено.",Warning:"Предупреждение","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"Ваш текущий API-ключ станет недействительным немедленно, и любые приложения, использующие его, перестанут работать, пока вы не обновите их новым ключом.","Service address":"Адрес сервиса",Pay:"Оплатить",interactions:"взаимодействия",notifications:"уведомления","Show untrusted {type}":"Показать недоверенные {{type}}","Hide untrusted {type}":"Скрыть недоверенные {{type}}","Currently hiding {type} from untrusted users.":"В настоящее время скрываются {{type}} от недоверенных пользователей.","Currently showing all {type}.":"В настоящее время отображаются все {{type}}.","Click continue to show all {type}.":'Нажмите "Продолжить", чтобы показать все {{type}}.',"Click continue to hide {type} from untrusted users.":'Нажмите "Продолжить", чтобы скрыть {{type}} от недоверенных пользователей.',"Trusted users include people you follow and people they follow.":"Доверенные пользователи включают людей, на которых вы подписаны, и людей, на которых они подписаны.",Continue:"Продолжить","Successfully updated mute list":"Успешно обновлен список заглушенных пользователей","No pubkeys found from {url}":"Не найдено pubkeys из {{url}}","Translating...":"Перевод...",Translate:"Перевести","Show original":"Показать оригинал",Website:"Веб-сайт","Hide untrusted notes":"Скрыть недоверенные заметки","Open in another client":"Открыть в другом клиенте",Community:"Сообщество",Group:"Группа","Live event":"Живое событие",Article:"Статья",Unfavorite:"Убрать из избранного","Recommended relays":"Рекомендуемые ретрансляторы","Blossom server URLs":"URLs сервера Blossom","You need to add at least one blossom server in order to upload media files.":"Вам нужно добавить хотя бы один сервер Blossom, чтобы загружать медиафайлы.","Recommended blossom servers":"Рекомендуемые серверы Blossom","Enter Blossom server URL":"Введите URL сервера Blossom",Preferred:"Предпочтительный","Multiple choice (select one or more)":"Множественный выбор (выберите один или несколько)",Vote:"Голосовать","{{number}} votes":"{{number}} голосов","Total votes":"Всего голосов","Poll has ended":"Опрос завершён","Poll ends at {{time}}":"Опрос завершается {{time}}","Load results":"Загрузить результаты","This is a poll note.":"Это заметка с опросом.","Unlike regular notes, polls are not widely supported and may not display on other clients.":"В отличие от обычных заметок, опросы не получили широкой поддержки и могут не отображаться в других клиентах.","Option {{number}}":"Вариант {{number}}","Add Option":"Добавить вариант","Allow multiple choices":"Разрешить множественный выбор","End Date (optional)":"Дата окончания (необязательно)","Clear end date":"Очистить дату окончания","Relay URLs (optional, comma-separated)":"URL релеев (необязательно, через запятую)","Remove poll":"Удалить опрос","Refresh results":"Обновить результаты",Poll:"Опрос",Media:"медиа","Republish to ...":"Ретранслировать в ...","Successfully republish to your write relays":"Успешно ретранслировано в ваши ретрансляторы для записи","Failed to republish to your write relays: {{error}}":"Не удалось ретранслировать в ваши ретрансляторы для записи: {{error}}","Successfully republish to relay set: {{name}}":"Успешно ретранслировано в набор ретрансляторов: {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"Не удалось ретранслировать в набор ретрансляторов: {{name}}. Ошибка: {{error}}","Successfully republish to relay: {{url}}":"Успешно ретранслировано в ретранслятор: {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"Не удалось ретранслировать в ретранслятор: {{url}}. Ошибка: {{error}}","Write relays":"Ретрансляторы для записи","No more reactions":"Больше нет реакций","No reactions yet":"Пока нет реакций","No more zaps":"Больше нет запов","No zaps yet":"Пока нет запов","No more reposts":"Больше нет репостов","No reposts yet":"Пока нет репостов",Reposts:"Репосты",FollowListNotFoundConfirmation:"Список подписок не найден. Хотите создать новый? Если вы уже подписывались на пользователей ранее, пожалуйста, НЕ подтверждайте, так как эта операция приведет к потере вашего предыдущего списка подписок.",MuteListNotFoundConfirmation:"Список заблокированных не найден. Хотите создать новый? Если вы уже блокировали пользователей ранее, пожалуйста, НЕ подтверждайте, так как эта операция приведет к потере вашего предыдущего списка заблокированных.","Show NSFW content by default":"Показывать контент NSFW по умолчанию","Custom emoji management":"Управление пользовательскими эмодзи","After changing emojis, you may need to refresh the page":"После изменения эмодзи может потребоваться обновить страницу","Too many read relays":"Слишком много релеев для чтения","Too many write relays":"Слишком много релеев для записи","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"У вас {{count}} релеев для чтения. Большинство клиентов используют только 2-4 релея, устанавливать больше не нужно.","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"У вас {{count}} релеев для записи. Большинство клиентов используют только 2-4 релея, устанавливать больше не нужно.","Optimize Relay Settings":"Оптимизировать настройки релеев","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"Ваша текущая конфигурация релеев может быть не оптимальной. Это может затруднить поиск ваших сообщений другими пользователями и привести к неполным уведомлениям.","Optimize Now":"Оптимизировать сейчас","Maybe Later":"Возможно, позже","Don't remind me again":"Больше не напоминать",Posts:"Посты",Articles:"Статьи",Highlights:"Выделения",Polls:"Опросы","Voice Posts":"Голосовые посты","Photo Posts":"Фото посты","Video Posts":"Видео посты","Select All":"Выбрать все","Clear All":"Очистить все","Set as default filter":"Установить как фильтр по умолчанию",Apply:"Применить",Reset:"Сбросить","Share something on this Relay":"Поделиться чем-то на этом релее","Try deleting this note":"Попробуйте удалить эту заметку","Deletion request sent to {{count}} relays":"Запрос на удаление отправлен на {{count}} релеев","Suitable Relays":"Подходящие релея","People, keywords, or relays":"Люди, ключевые слова или релея","Hide content mentioning muted users":"Скрыть контент, упоминающий заглушённых пользователей","This note mentions a user you muted":"Эта заметка упоминает пользователя, которого вы заглушили",Filter:"Фильтр","mentioned you in a note":"упомянул вас в заметке","quoted your note":"процитировал вашу заметку","voted in your poll":"проголосовал в вашем опросе","reacted to your note":"отреагировал на вашу заметку","reposted your note":"репостнул вашу заметку","zapped your note":"заппил вашу заметку","highlighted your note":"выделил вашу заметку","zapped you":"заппил вас","Mark as read":"Отметить как прочитанное",Report:"Пожаловаться","Successfully report":"Жалоба успешно отправлена","Failed to report":"Не удалось отправить жалобу",nudity:"Обнаженность",malware:"Вредоносное ПО",profanity:"Ненормативная лексика",illegal:"Незаконный контент",spam:"Спам",other:"Другое","Notification list style":"Стиль списка уведомлений","See extra info for each notification":"Просмотреть дополнительную информацию для каждого уведомления","See more notifications at a glance":"Увидеть больше уведомлений с первого взгляда",Detailed:"Подробный",Compact:"Компактный","Submit Relay":"Отправить релей",Homepage:"Домашняя страница","Proof of Work (difficulty {{minPow}})":"Доказательство работы (сложность {{minPow}})","Proof of Work":"Доказательство работы","Posts & comments difficulty":"Сложность для записей и комментариев","Reactions difficulty":"Сложность реакций","Image Mode":"Режим изображений","Media Feed":"Медиа лента","Text Only":"Текстовая лента","Text Post":"Текстовый пост","Picture Post":"Пост с картинкой","Video Post":"Видео пост","Short Video Post":"Короткое видео",Text:"Текст",Picture:"Картинка",Video:"Видео","Short Video":"Короткое видео","Post Type":"Тип поста","via {{client}}":"через {{client}}","Auto-load media":"Автозагрузка медиа",Always:"Всегда","Wi-Fi only":"Только Wi-Fi",Never:"Никогда","Click to load image":"Нажмите, чтобы загрузить изображение","Click to load media":"Нажмите, чтобы загрузить медиа","Click to load YouTube video":"Нажмите, чтобы загрузить видео YouTube","{{count}} reviews":"{{count}} отзывов","Write a review":"Написать отзыв","No reviews yet. Be the first to write one!":"Отзывов пока нет. Станьте первым, кто напишет отзыв!","View more reviews":"Посмотреть больше отзывов","Failed to review":"Ошибка отзыва","Write a review and pick a star rating":"Напишите отзыв и выберите звездный рейтинг",Submit:"Отправить","Reviews for {{relay}}":"Отзывы для {{relay}}","No relays selected":"Ретрансляторы не выбраны","Post to":"Опубликовать в","Write relays and {{count}} other relays":"Ретрансляторы записи и {{count}} других ретрансляторов","{{count}} relays":"{{count}} ретрансляторов","Republishing...":"Ретрансляция...","Trending Notes":"Популярные заметки","Connected to":"Подключено к","Disconnect Wallet":"Отключить кошелёк","Are you absolutely sure?":"Вы абсолютно уверены?","You will not be able to send zaps to others.":"Вы не сможете отправлять запы другим.",Disconnect:"Отключить","Start with a Rizful Vault":"Начать с Rizful Vault","or other wallets":"или другие кошельки","Rizful Vault":"Rizful Vault","Rizful Vault connected!":"Rizful Vault подключён!","You can now use your Rizful Vault to zap your favorite notes and creators.":"Теперь вы можете использовать свой Rizful Vault, чтобы заппить ваши любимые заметки и создателей.","Your Lightning Address":"Ваш Lightning-адрес","New to Rizful?":"Новичок в Rizful?","Sign up for Rizful":"Зарегистрируйтесь на Rizful","If you already have a Rizful account, you can skip this step.":"Если у вас уже есть аккаунт Rizful, вы можете пропустить этот шаг.","Get your one-time code":"Получите ваш одноразовый код","Get code":"Получить код","Connect to your Rizful Vault":"Подключитесь к вашему Rizful Vault","Paste your one-time code here":"Вставьте ваш одноразовый код здесь",Connect:"Подключить","Set up your wallet to send and receive sats!":"Настройте свой кошелёк, чтобы отправлять и получать саты!","Set up":"Настроить",Pinned:"Закреплено",Unpin:"Открепить",Unpinning:"Открепление","Pinning...":"Закрепление...","Pinned!":"Закреплено!","Failed to pin: {{error}}":"Не удалось закрепить: {{error}}","Unpinning...":"Открепление...","Unpinned!":"Откреплено!","Failed to unpin: {{error}}":"Не удалось открепить: {{error}}","Unpin from profile":"Открепить из профиля","Pin to profile":"Закрепить в профиле",Appearance:"Внешний вид","Pure Black":"Чистый Черный",Default:"По умолчанию",Red:"Красный",Orange:"Оранжевый",Amber:"Янтарный",Yellow:"Желтый",Lime:"Лаймовый",Green:"Зеленый",Emerald:"Изумрудный",Teal:"Бирюзовый",Cyan:"Голубой",Sky:"Небесный",Blue:"Синий",Indigo:"Индиго",Violet:"Фиолетовый",Purple:"Пурпурный",Fuchsia:"Фуксия",Pink:"Розовый",Rose:"Роза","Primary color":"Основной цвет",Layout:"Макет","Two-column":"Две колонки","Single-column":"Одна колонка",Reviews:"Отзывы",Extension:"Расширение",Remote:"Удалённый","Encrypted Key":"Зашифрованный ключ","Private Key":"Приватный ключ","Welcome to RogueJumble":"Добро пожаловать в RogueJumble","RogueJumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"RogueJumble — это клиент, ориентированный на просмотр relay. Начните с изучения интересных relay или войдите, чтобы увидеть ленту подписок.","Explore Relays":"Исследовать Relay","Choose a feed":"Выберите ленту","and {{x}} others":"и {{x}} других",selfZapWarning:"RogueJumble не несет ответственности за то, что произойдет, если вы отправите zap самому себе. Продолжайте на свой страх и риск. 😉⚡","Emoji Pack":"Набор эмодзи","Emoji pack added":"Набор эмодзи добавлен","Add emoji pack failed":"Не удалось добавить набор эмодзи","Emoji pack removed":"Набор эмодзи удален","Remove emoji pack failed":"Не удалось удалить набор эмодзи",Added:"Добавлено","Emoji Packs":"Наборы эмодзи","My Packs":"Мои наборы","Adding...":"Добавление...","Removing...":"Удаление...",Reload:"Перезагрузить","Request to Join Relay":"Запросить присоединение к релею","Leave Relay":"Покинуть релей",Leave:"Выйти","Are you sure you want to leave this relay?":"Вы уверены, что хотите покинуть этот релей?","Join request sent successfully":"Запрос на присоединение успешно отправлен","Failed to send join request":"Не удалось отправить запрос на присоединение","Leave request sent successfully":"Запрос на выход успешно отправлен","Failed to send leave request":"Не удалось отправить запрос на выход","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"Введите код приглашения, если он у вас есть. В противном случае оставьте поле пустым для отправки запроса.","Invite Code (Optional)":"Код приглашения (необязательно)","Enter invite code":"Введите код приглашения","Sending...":"Отправка...","Send Request":"Отправить запрос","You can get an invite code from a relay member.":"Вы можете получить код приглашения у члена релея.","Enter the invite code you received from a relay member.":"Введите код приглашения, который вы получили от члена релея.","Get Invite Code":"Получить Код Приглашения","Share this invite code with others to invite them to join this relay.":"Поделитесь этим кодом приглашения с другими, чтобы пригласить их присоединиться к этому релею.","Invite Code":"Код Приглашения",Copy:"Копировать","This invite code can be used by others to join the relay.":"Этот код приглашения может быть использован другими для присоединения к релею.","No invite code available from this relay.":"Нет доступного кода приглашения от этого релея.",Close:"Закрыть","Failed to get invite code from relay":"Не удалось получить код приглашения от релея","Failed to get invite code":"Не удалось получить код приглашения","Invite code copied to clipboard":"Код приглашения скопирован в буфер обмена","Favicon URL":"URL фавикона","Filter out onion relays":"Фильтровать onion-релеи","Click to load X post":"Нажмите, чтобы загрузить пост X","View Nostr comments":"Просмотреть комментарии Nostr","Search for notes":"Искать заметки","Search for hashtag":"Искать хэштег","Go to note":"Перейти к заметке","Go to relay":"Перейти к релею","View discussions about this":"Просмотреть обсуждения об этом контенте","Open link":"Открыть ссылку","View Nostr discussions":"Просмотреть обсуждения Nostr","Optimal relays":"Оптимальные релеи","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"Успешно опубликовано в оптимальные релеи (ваши релеи для записи и релеи для чтения упомянутых пользователей)","Failed to republish to optimal relays: {{error}}":"Не удалось опубликовать в оптимальные релеи: {{error}}","External Content":"Внешний контент",Highlight:"Выделить","Optimal relays and {{count}} other relays":"Оптимальные релеи и {{count}} других релеев","Low trust ranking ({{percentile}}%)":"Низкий рейтинг доверия ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"Подозрительный аккаунт (Оценка доверия: {{percentile}}%)","n users":"{{count}} пользователей","View Details":"Посмотреть детали","Follow Pack Not Found":"Пакет подписок не найден","Follow pack not found":"Пакет подписок не найден",Users:"Пользователи",Feed:"Лента","Follow Pack":"Пакет Подписок","24h Pulse":"Пульс 24ч","Load earlier":"Загрузить ранее","Last 24 hours":"Последние 24 часа","Last {{count}} days":"Последние {{count}} дней",notes:"заметки","Quick reaction":"Быстрая реакция","If enabled, you can react with a single click. Click and hold for more options":"Если включено, вы можете реагировать одним щелчком. Нажмите и удерживайте для дополнительных параметров","Quick reaction emoji":"Эмодзи быстрой реакции","Select emoji":"Выбрать эмодзи","NSFW content display":"NSFW content display","Hide completely":"Hide completely","Show but hide content":"Show but hide content","Show directly":"Show directly","Click to view":"Click to view","Special Follow":"Особая Подписка","Unfollow Special":"Отменить Особую Подписку","Personal Feeds":"Личные Ленты","Relay Feeds":"Ленты Релеев","Create Highlight":"Создать Выделение","Write your thoughts about this highlight...":"Напишите свои мысли об этом выделении...","Publish Highlight":"Опубликовать Выделение","Show replies":"Показать ответы","Hide replies":"Скрыть ответы","Welcome to RogueJumble!":"Добро пожаловать в RogueJumble!","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"Ваша лента пуста, потому что вы еще ни на кого не подписаны. Начните с изучения интересного контента и подписки на понравившихся пользователей!","Search Users":"Поиск пользователей","Create New Account":"Создать новый аккаунт",Important:"Важно","Generate Your Account":"Создать аккаунт","Your private key IS your account. Keep it safe!":"Ваш приватный ключ — это ваш аккаунт. Храните его в безопасности!","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"В Nostr ваш приватный ключ — это ваш аккаунт. Если вы потеряете приватный ключ, вы навсегда потеряете свой аккаунт.","Your Private Key":"Ваш приватный ключ","Generate new key":"Создать новый ключ","Download Backup File":"Скачать файл резервной копии","Copied to Clipboard":"Скопировано в буфер обмена","Copy to Clipboard":"Копировать в буфер обмена","I already saved my private key securely.":"Я уже сохранил свой приватный ключ в безопасном месте.","Almost Done!":"Почти готово!","Set a password to encrypt your key, or skip to finish":"Установите пароль для шифрования ключа или пропустите, чтобы завершить","Password Protection (Optional)":"Защита паролем (необязательно)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"Установка пароля шифрует ваш приватный ключ в этом браузере. Вы можете пропустить этот шаг, но мы рекомендуем установить пароль для дополнительной безопасности.","Password (Optional)":"Пароль (необязательно)","Enter password or leave empty to skip":"Введите пароль или оставьте пустым, чтобы пропустить","Confirm Password":"Подтвердите пароль","Re-enter password":"Введите пароль повторно","Passwords do not match":"Пароли не совпадают","Finish Signup":"Завершить регистрацию","Create Your Nostr Account":"Создайте свой аккаунт Nostr","Generate your unique private key. This is your digital identity.":"Сгенерируйте ваш уникальный приватный ключ. Это ваша цифровая личность.","Critical: Save Your Private Key":"Критично: Сохраните ваш приватный ключ","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"Ваш приватный ключ И ЕСТЬ ваш аккаунт. Восстановление пароля невозможно. Если вы его потеряете, вы навсегда потеряете свой аккаунт. Пожалуйста, сохраните его в безопасном месте.","I have safely backed up my private key":"Я безопасно сохранил свой приватный ключ","Secure Your Account":"Защитите ваш аккаунт","Add an extra layer of protection with a password":"Добавьте дополнительный уровень защиты с помощью пароля","Password Protection (Recommended)":"Защита паролем (рекомендуется)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"Добавьте пароль для шифрования вашего приватного ключа в этом браузере. Это необязательно, но настоятельно рекомендуется для лучшей безопасности.","Create a password (or skip)":"Создайте пароль (или пропустите)","Enter your password again":"Введите пароль еще раз","Complete Signup":"Завершить регистрацию",Recommended:"Рекомендуемые","Enter Password":"Введите пароль",Password:"Пароль",Confirm:"Подтвердить","trust-filter.title":"Фильтр доверия","trust-filter.off":"Выкл","trust-filter.low":"Низкий","trust-filter.medium":"Средний","trust-filter.high":"Высокий","trust-filter.wot":"WoT","trust-filter.filter-threshold":"Порог фильтрации","trust-filter.quick-presets":"Быстрые предустановки","trust-filter.show-all-content":"Показать весь контент","trust-filter.only-show-wot":"Показывать только вашу сеть доверия (подписки + их подписки)","trust-filter.hide-bottom-percent":"Отфильтровать нижние {{score}}% пользователей по рейтингу доверия","trust-filter.trust-score-description":"Рассчитывается на основе репутации пользователя и процентиля социальной сети","Auto-load profile pictures":"Автозагрузка аватаров","Disable live feed":"Отключить прямую трансляцию","Enable live feed":"Включить прямую трансляцию","Default relays":"Реле по умолчанию","Reset to default":"Сбросить по умолчанию","Default relays description":"Используются для запроса конфигураций реле других пользователей и в качестве резервного варианта, когда у пользователей не настроены реле.","Default relays warning":"Предупреждение: Не изменяйте эти настройки без необходимости, это может повлиять на базовый опыт использования.","Invalid relay URL":"Неверный URL реле","Muted words":"Заблокированные слова","Add muted word":"Добавить заблокированное слово","Zap Details":"Детали запа","Default trust score filter threshold ({{n}}%)":"Порог фильтра рейтинга доверия по умолчанию ({{n}}%)","No notes found":"Заметки не найдены","Try again later or check your connection":"Попробуйте позже или проверьте подключение","Hide indirect":"Скрыть косвенные","Copy note content":"Скопировать содержимое заметки","Video loop":"Зацикливание видео","Automatically replay videos when they end":"Автоматически воспроизводить видео заново после окончания","Relays used for searching notes (NIP-50)":"Ретрансляторы для поиска заметок (NIP-50)","Protected event (NIP-70)":"Защищённое событие (NIP-70)",Protected:"Защищённый","Protected event hint":"Защищённые события (NIP-70) могут быть опубликованы только автором. Ретрансляторы отклонят эти события от третьих лиц, предотвращая повторную трансляцию вашего контента. Примечание: не все ретрансляторы поддерживают защищённые события.","Allow insecure connections":"Разрешить небезопасные соединения","Allow insecure connections description":"Разрешить загрузку ресурсов http:// и подключение к реле ws://. Может вызвать предупреждения браузера о смешанном содержимом.","reacted to":"отреагировал на",Reaction:"Реакция","Show others this was sent via Jumble":"Показать другим, что это было отправлено через RogueJumble","Enjoying Jumble?":"Нравится RogueJumble?","Your donation helps me maintain Jumble and make it better! 😊":"Ваше пожертвование помогает мне поддерживать и улучшать RogueJumble! 😊","Welcome to Jumble":"Добро пожаловать в RogueJumble","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","n users_one":"{{count}} пользователь","n users_other":"{{count}} пользователей","Welcome to Jumble!":"Добро пожаловать в RogueJumble!","Font size":"Размер шрифта","Advanced mode":"Расширенный режим","Post type selector":"Выбор типа публикации","Shows post kind dropdown when creating posts":"Показывает раскрывающийся список типа публикации при создании публикаций","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"Поиск сообществ...","No communities found":"Сообщества не найдены","No communities yet":"Сообществ пока нет"}},m3={translation:{"Welcome! 🥳":"ยินดีต้อนรับ! 🥳",About:"เกี่ยวกับ","New Note":"โน้ตใหม่",Post:"โพสต์",Home:"หน้าหลัก","Relay settings":"การตั้งค่ารีเลย์",Settings:"การตั้งค่า",SidebarRelays:"รีเลย์",Refresh:"รีเฟรช",Profile:"โปรไฟล์",Logout:"ออกจากระบบ",Following:"กำลังติดตาม",followings:"กำลังติดตาม",reposted:"รีโพสต์","just now":"เมื่อสักครู่","minute ago_one":"{{count}} นาทีที่แล้ว","minute ago_other":"{{count}} นาทีที่แล้ว","n m":"{{n}}น","hour ago_one":"{{count}} ชั่วโมงที่แล้ว","hour ago_other":"{{count}} ชั่วโมงที่แล้ว","n h":"{{n}}ชม","day ago_one":"{{count}} วันที่แล้ว","day ago_other":"{{count}} วันที่แล้ว","n d":"{{n}}วัน",date:"{{timestamp, date}}",Follow:"ติดตาม",Unfollow:"เลิกติดตาม","Follow failed":"ติดตามไม่สำเร็จ","Unfollow failed":"เลิกติดตามไม่สำเร็จ","show new notes":"แสดงโน้ตใหม่","loading...":"กำลังโหลด...","Loading...":"กำลังโหลด...","no more notes":"ไม่มีโน้ตเพิ่มเติม","reply to":"ตอบกลับถึง",reply:"ตอบกลับ",Reply:"ตอบกลับ","load more older replies":"โหลดการตอบกลับเพิ่มเติม","Write something...":"เขียนอะไรบางอย่าง...",Cancel:"ยกเลิก",Mentions:"การกล่าวถึง","Failed to post":"โพสต์ไม่สำเร็จ","Post successful":"โพสต์สำเร็จ","Your post has been published":"โพสต์ของคุณถูกเผยแพร่แล้ว",Repost:"รีโพสต์",Quote:"อ้างอิง","Copy event ID":"คัดลอก ID เหตุการณ์","Copy user ID":"คัดลอก ID ผู้ใช้","View raw event":"ดูเหตุการณ์ดิบ",Like:"ถูกใจ","switch to light theme":"เปลี่ยนเป็นธีมสว่าง","switch to dark theme":"เปลี่ยนเป็นธีมมืด","switch to system theme":"เปลี่ยนเป็นธีมระบบ",Note:"โน้ต",note:"โน้ต","username's following":"ผู้ที่ {{username}} กำลังติดตาม","username's used relays":"รีเลย์ที่ {{username}} ใช้งาน","username's muted":"ผู้ที่ {{username}} ปิดเสียง",Login:"เข้าสู่ระบบ","Follows you":"ติดตามคุณ","Relay Settings":"การตั้งค่ารีเลย์","Relay set name":"ชื่อชุดรีเลย์","Add a new relay set":"เพิ่มชุดรีเลย์ใหม่",Add:"เพิ่ม","n relays":"{{n}} รีเลย์",Rename:"เปลี่ยนชื่อ","Copy share link":"คัดลอกลิงก์แชร์",Delete:"ลบ","Relay already exists":"รีเลย์มีอยู่แล้ว","invalid relay URL":"URL รีเลย์ไม่ถูกต้อง","Add a new relay":"เพิ่มรีเลย์ใหม่",back:"ย้อนกลับ","Lost in the void":"หลงอยู่ในความว่างเปล่า","Carry me home":"พาฉันกลับบ้าน","no replies":"ไม่มีการตอบกลับ","Reply to":"ตอบกลับถึง",Search:"ค้นหา","The relays you are connected to do not support search":"รีเลย์ที่คุณเชื่อมต่อไม่รองรับการค้นหา","Show more...":"แสดงเพิ่มเติม...","All users":"ผู้ใช้ทั้งหมด","Display replies":"แสดงการตอบกลับ",Notes:"โน้ต",Replies:"การตอบกลับ",Notifications:"การแจ้งเตือน","no more notifications":"ไม่มีการแจ้งเตือนเพิ่มเติม","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"การเข้าสู่ระบบด้วยคีย์ส่วนตัวไม่ปลอดภัย แนะนำให้ใช้ส่วนขยายเบราว์เซอร์สำหรับการเข้าสู่ระบบ เช่น alby, nostr-keyx หรือ nos2x หากคุณต้องใช้คีย์ส่วนตัว โปรดตั้งรหัสผ่านเพื่อเข้ารหัสอย่างน้อย","Login with Browser Extension":"เข้าสู่ระบบด้วยส่วนขยายเบราว์เซอร์","Login with Bunker":"เข้าสู่ระบบด้วย Bunker","Login with Private Key":"เข้าสู่ระบบด้วยคีย์ส่วนตัว","reload notes":"โหลดโน้ตใหม่","Logged in Accounts":"บัญชีที่เข้าสู่ระบบ","Add an Account":"เพิ่มบัญชี","More options":"ตัวเลือกเพิ่มเติม","Add client tag":"เพิ่มแท็กไคลเอนต์","Show others this was sent via Jumble":"แสดงให้ผู้อื่นเห็นว่าส่งผ่าน Jumble","Are you sure you want to logout?":"คุณแน่ใจหรือไม่ว่าต้องการออกจากระบบ?","relay sets":"ชุดรีเลย์",edit:"แก้ไข",Languages:"ภาษา",Theme:"ธีม",System:"ระบบ",Light:"สว่าง",Dark:"มืด",Temporary:"ชั่วคราว","Choose a relay set":"เลือกชุดรีเลย์","Switch account":"สลับบัญชี",Pictures:"รูปภาพ","Picture note":"โน้ตรูปภาพ","A special note for picture-first clients like Olas":"หมายเหตุพิเศษสำหรับไคลเอนต์ที่เน้นรูปภาพเช่น Olas","Picture note requires images":"โน้ตรูปภาพต้องมีรูปภาพ",Relays:"รีเลย์",Image:"รูปภาพ","R & W":"อ่าน & เขียน",Read:"อ่าน",Write:"เขียน","Pull relay sets":"ดึงชุดรีเลย์","Select the relay sets you want to pull":"เลือกชุดรีเลย์ที่ต้องการดึง","No relay sets found":"ไม่พบชุดรีเลย์","Pull n relay sets":"ดึงชุดรีเลย์ {{n}} ชุด",Pull:"ดึง","Select all":"เลือกทั้งหมด","Relay Sets":"ชุดรีเลย์","Read & Write Relays":"รีเลย์อ่านและเขียน","read relays description":"รีเลย์อ่านใช้สำหรับค้นหาเหตุการณ์เกี่ยวกับคุณ ผู้ใช้อื่นจะเผยแพร่เหตุการณ์ที่ต้องการให้คุณเห็นไปยังรีเลย์อ่านของคุณ","write relays description":"รีเลย์เขียนใช้สำหรับเผยแพร่เหตุการณ์ของคุณ ผู้ใช้อื่นจะค้นหาเหตุการณ์ของคุณจากรีเลย์เขียนของคุณ","read & write relays notice":"จำนวนเซิร์ฟเวอร์อ่านและเขียนควรอยู่ระหว่าง 2 ถึง 4","Don't have an account yet?":"ยังไม่มีบัญชี?","or simply generate a private key":"หรือสร้างคีย์ส่วนตัว","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"นี่คือคีย์ส่วนตัว อย่าแบ่งปันกับใคร เก็บไว้ให้ปลอดภัย หากสูญหายจะไม่สามารถกู้คืนได้",Edit:"แก้ไข",Save:"บันทึก","Display Name":"ชื่อที่แสดง",Bio:"ประวัติ","Nostr Address (NIP-05)":"ที่อยู่ Nostr (NIP-05)","Invalid NIP-05 address":"ที่อยู่ NIP-05 ไม่ถูกต้อง","Copy private key":"คัดลอกคีย์ส่วนตัว","Enter the password to decrypt your ncryptsec":"กรอกรหัสผ่านเพื่อถอดรหัส ncryptsec ของคุณ",Back:"ย้อนกลับ","optional: encrypt nsec":"ตัวเลือก: เข้ารหัส nsec",password:"รหัสผ่าน","Sign up":"สมัครสมาชิก","Save to":"บันทึกไปที่","Enter a name for the new relay set":"กรอกชื่อชุดรีเลย์ใหม่","Save to a new relay set":"บันทึกไปยังชุดรีเลย์ใหม่",Mute:"ปิดเสียง",Muted:"ปิดเสียงแล้ว",Unmute:"ยกเลิกปิดเสียง","Unmute user":"ยกเลิกปิดเสียงผู้ใช้","Append n relays":"เพิ่มรีเลย์ {{n}}",Append:"เพิ่ม","Select relays to append":"เลือกรีเลย์ที่จะเพิ่ม","calculating...":"กำลังคำนวณ...","Calculate optimal read relays":"คำนวณรีเลย์อ่านที่เหมาะสม","Login to set":"เข้าสู่ระบบเพื่อกำหนด","Please login to view following feed":"กรุณาเข้าสู่ระบบเพื่อดูฟีดที่ติดตาม","Send only to r":"ส่งเฉพาะไปยัง {{r}}","Send only to these relays":"ส่งเฉพาะไปยังรีเลย์เหล่านี้",Explore:"สำรวจ","Search relays":"รีเลย์สำหรับค้นหา",relayInfoBadgeAuth:"ยืนยันตัวตน",relayInfoBadgeSearch:"ค้นหา",relayInfoBadgePayment:"ชำระเงิน",Operator:"ผู้ดำเนินการ",Contact:"ติดต่อ",Software:"ซอฟต์แวร์",Version:"เวอร์ชัน","Random Relays":"รีเลย์สุ่ม",randomRelaysRefresh:"รีเฟรช","Explore more":"สำรวจเพิ่มเติม","Payment page":"หน้าชำระเงิน","Supported NIPs":"NIP ที่รองรับ","Open in a":"เปิดใน {{a}}","Cannot handle event of kind k":"ไม่สามารถจัดการเหตุการณ์ประเภท {{k}}","Encrypted direct messages not supported":"ไม่รองรับข้อความส่วนตัวที่เข้ารหัส","Sorry! The note cannot be found 😔":"ขออภัย! ไม่พบโน้ต 😔","This user has been muted":"ผู้ใช้นี้ถูกปิดเสียง",Wallet:"กระเป๋าสตางค์",Sats:"ซาตส์",sats:"ซาตส์","Zap to":"ส่งซาตส์ไปยัง","Zap n sats":"ส่ง {{n}} ซาตส์",zapComment:"ความคิดเห็น","Default zap amount":"จำนวนซาตส์เริ่มต้น","Default zap comment":"ความคิดเห็นเริ่มต้น","Lightning Address (or LNURL)":"ที่อยู่ Lightning (หรือ LNURL)","Quick zap":"ส่งซาตส์ด่วน","If enabled, you can zap with a single click. Click and hold for custom amounts":"หากเปิดใช้งาน คุณสามารถส่งซาตส์ด้วยคลิกเดียว กดค้างเพื่อกำหนดจำนวนเอง",All:"ทั้งหมด",Reactions:"ปฏิกิริยา",Zaps:"ซาตส์","Enjoying Jumble?":"ชอบ Jumble ไหม?","Your donation helps me maintain Jumble and make it better! 😊":"การบริจาคของคุณช่วยให้ฉันดูแลและพัฒนา Jumble ให้ดีขึ้น! 😊","Earlier notifications":"การแจ้งเตือนก่อนหน้า","Temporarily display this note":"แสดงโน้ตนี้ชั่วคราว",buttonFollowing:"กำลังติดตาม","Are you sure you want to unfollow this user?":"คุณแน่ใจหรือไม่ว่าต้องการเลิกติดตามผู้ใช้นี้?","Recent Supporters":"ผู้สนับสนุนล่าสุด","Seen on":"เห็นเมื่อ","Temporarily display this reply":"แสดงการตอบกลับนี้ชั่วคราว","Note not found":"ไม่พบโน้ต","no more replies":"ไม่มีการตอบกลับเพิ่มเติม","Relay sets":"ชุดรีเลย์","Favorite Relays":"รีเลย์โปรด","Following's Favorites":"รายการโปรดของผู้ที่ติดตาม","no more relays":"ไม่มีรีเลย์เพิ่มเติม","Favorited by":"ถูกเพิ่มเป็นรายการโปรดโดย","Post settings":"การตั้งค่าโพสต์","Media upload service":"บริการอัปโหลดสื่อ","Choose a relay":"เลือกรีเลย์","no relays found":"ไม่พบรีเลย์",video:"วิดีโอ","Show n new notes":"แสดงโน้ตใหม่ {{n}} รายการ",YouTabName:"คุณ",Bookmark:"บุ๊กมาร์ก","Remove bookmark":"ลบบุ๊กมาร์ก","no bookmarks found":"ไม่พบบุ๊กมาร์ก","no more bookmarks":"ไม่มีบุ๊กมาร์กเพิ่มเติม",Bookmarks:"บุ๊กมาร์ก","Show more":"แสดงเพิ่มเติม",General:"ทั่วไป",Autoplay:"เล่นอัตโนมัติ","Enable video autoplay on this device":"เปิดใช้งานเล่นวิดีโออัตโนมัติบนอุปกรณ์นี้","Paste or drop media files to upload":"วางหรือหย่อนไฟล์สื่อเพื่ออัปโหลด",Preview:"ดูตัวอย่าง","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"คุณกำลังจะเผยแพร่เหตุการณ์ที่ลงนามโดย [{{eventAuthorName}}] ขณะนี้คุณเข้าสู่ระบบเป็น [{{currentUsername}}] คุณแน่ใจหรือไม่?","Platinum Sponsors":"ผู้สนับสนุนระดับแพลตินัม",From:"จาก","Comment on":"แสดงความคิดเห็นใน","View on njump.me":"ดูบน njump.me","Hide content from untrusted users":"ซ่อนเนื้อหาจากผู้ใช้ที่ไม่น่าเชื่อถือ","Only show content from your followed users and the users they follow":"แสดงเฉพาะเนื้อหาจากผู้ใช้ที่คุณติดตามและผู้ใช้ที่พวกเขาติดตาม","Followed by":"ติดตามโดย","Mute user privately":"ปิดเสียงผู้ใช้แบบส่วนตัว","Mute user publicly":"ปิดเสียงผู้ใช้แบบสาธารณะ",Quotes:"คำพูด","Lightning Invoice":"ใบแจ้งหนี้ Lightning","Bookmark failed":"บุ๊กมาร์กไม่สำเร็จ","Remove bookmark failed":"ลบบุ๊กมาร์กไม่สำเร็จ",Translation:"การแปล",Balance:"ยอดคงเหลือ",characters:"ตัวอักษร",jumbleTranslateApiKeyDescription:"คุณสามารถใช้ API key นี้กับที่อื่นที่รองรับ LibreTranslate ที่อยู่บริการคือ {{serviceUrl}}","Top up":"เติมเงิน","Will receive: {n} characters":"จะได้รับ: {{n}} ตัวอักษร","Top up {n} sats":"เติมเงิน {{n}} ซาตส์","Minimum top up is {n} sats":"เติมเงินขั้นต่ำ {{n}} ซาตส์",Service:"บริการ","Reset API key":"รีเซ็ต API key","Are you sure you want to reset your API key? This action cannot be undone.":"คุณแน่ใจหรือไม่ว่าต้องการรีเซ็ต API key? การกระทำนี้ไม่สามารถย้อนกลับได้",Warning:"คำเตือน","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"API key ปัจจุบันของคุณจะใช้ไม่ได้ทันที และแอปพลิเคชันที่ใช้งานจะหยุดทำงานจนกว่าคุณจะอัปเดตด้วยคีย์ใหม่","Service address":"ที่อยู่บริการ",Pay:"ชำระเงิน",interactions:"การโต้ตอบ",notifications:"การแจ้งเตือน","Show untrusted {type}":"แสดง {{type}} ที่ไม่น่าเชื่อถือ","Hide untrusted {type}":"ซ่อน {{type}} ที่ไม่น่าเชื่อถือ","Currently hiding {type} from untrusted users.":"ขณะนี้กำลังซ่อน {{type}} จากผู้ใช้ที่ไม่น่าเชื่อถือ","Currently showing all {type}.":"ขณะนี้แสดง {{type}} ทั้งหมด","Click continue to show all {type}.":"คลิกดำเนินการต่อเพื่อแสดง {{type}} ทั้งหมด","Click continue to hide {type} from untrusted users.":"คลิกดำเนินการต่อเพื่อซ่อน {{type}} จากผู้ใช้ที่ไม่น่าเชื่อถือ","Trusted users include people you follow and people they follow.":"ผู้ใช้ที่เชื่อถือได้รวมถึงผู้ที่คุณติดตามและผู้ที่พวกเขาติดตาม",Continue:"ดำเนินการต่อ","Successfully updated mute list":"อัปเดตรายการปิดเสียงสำเร็จ","No pubkeys found from {url}":"ไม่พบ pubkeys จาก {{url}}","Translating...":"กำลังแปล...",Translate:"แปล","Show original":"แสดงต้นฉบับ",Website:"เว็บไซต์","Hide untrusted notes":"ซ่อนโน้ตที่ไม่น่าเชื่อถือ","Open in another client":"เปิดในไคลเอนต์อื่น",Community:"ชุมชน",Group:"กลุ่ม","Live event":"เหตุการณ์สด",Article:"บทความ",Unfavorite:"เลิกชื่นชอบ","Recommended relays":"รีเลย์ที่แนะนำ","Blossom server URLs":"URL ของเซิร์ฟเวอร์ Blossom","You need to add at least one blossom server in order to upload media files.":"คุณต้องเพิ่มเซิร์ฟเวอร์ Blossom อย่างน้อยหนึ่งตัวเพื่ออัปโหลดไฟล์สื่อ","Recommended blossom servers":"เซิร์ฟเวอร์ Blossom ที่แนะนำ","Enter Blossom server URL":"ป้อน URL ของเซิร์ฟเวอร์ Blossom",Preferred:"ที่ชื่นชอบ","Multiple choice (select one or more)":"ตัวเลือกหลายรายการ (เลือกหนึ่งหรือมากกว่า)",Vote:"โหวต","{{number}} votes":"{{number}} คะแนน","Total votes":"คะแนนรวม","Poll has ended":"การโพลล์สิ้นสุดแล้ว","Poll ends at {{time}}":"การโพลล์สิ้นสุดเวลา {{time}}","Load results":"โหลดผลลัพธ์","This is a poll note.":"นี่คือโน้ตโพลล์","Unlike regular notes, polls are not widely supported and may not display on other clients.":"ไม่เหมือนโน้ตธรรมดา โพลล์ไม่ได้รับการสนับสนุนอย่างแพร่หลายและอาจไม่แสดงในไคลเอนต์อื่น","Option {{number}}":"ตัวเลือก {{number}}","Add Option":"เพิ่มตัวเลือก","Allow multiple choices":"อนุญาตให้เลือกหลายรายการ","End Date (optional)":"วันที่สิ้นสุด (ไม่บังคับ)","Clear end date":"ล้างวันที่สิ้นสุด","Relay URLs (optional, comma-separated)":"URL รีเลย์ (ไม่บังคับ, คั่นด้วยจุลภาค)","Remove poll":"ลบโพลล์","Refresh results":"รีเฟรชผลลัพธ์",Poll:"โพลล์",Media:"สื่อ","Republish to ...":"เผยแพร่ซ้ำไปยัง ...","Successfully republish to your write relays":"Successfully republish to your write relays","Failed to republish to your write relays: {{error}}":"Failed to republish to your write relays: {{error}}","Successfully republish to relay set: {{name}}":"Successfully republish to relay set: {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"Failed to republish to relay set: {{name}}. Error: {{error}}","Successfully republish to relay: {{url}}":"Successfully republish to relay: {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"Failed to republish to relay: {{url}}. Error: {{error}}","Write relays":"รีเลย์การเขียน","No more reactions":"ไม่มีปฏิกิริยาเพิ่มเติม","No reactions yet":"ยังไม่มีปฏิกิริยา","No more zaps":"ไม่มีซาตส์เพิ่มเติม","No zaps yet":"ยังไม่มีซาตส์","No more reposts":"ไม่มีการรีโพสต์เพิ่มเติม","No reposts yet":"ยังไม่มีการรีโพสต์",Reposts:"การรีโพสต์",FollowListNotFoundConfirmation:"ไม่พบรายการติดตาม คุณต้องการสร้างรายการใหม่หรือไม่? หากคุณเคยติดตามผู้ใช้มาก่อน กรุณาอย่ายืนยัน เพราะการดำเนินการนี้จะทำให้คุณสูญเสียรายการติดตามก่อนหน้านี้",MuteListNotFoundConfirmation:"ไม่พบรายการปิดเสียง คุณต้องการสร้างรายการใหม่หรือไม่? หากคุณเคยปิดเสียงผู้ใช้มาก่อน กรุณาอย่ายืนยัน เพราะการดำเนินการนี้จะทำให้คุณสูญเสียรายการปิดเสียงก่อนหน้านี้","Show NSFW content by default":"แสดงเนื้อหา NSFW โดยค่าเริ่มต้น","Custom emoji management":"จัดการอีโมจิที่กำหนดเอง","After changing emojis, you may need to refresh the page":"หลังจากเปลี่ยนอีโมจิแล้ว คุณอาจต้องรีเฟรชหน้า","Too many read relays":"Too many read relays","Too many write relays":"Too many write relays","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.","Optimize Relay Settings":"ปรับแต่งการตั้งค่า Relay ให้เหมาะสม","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"การตั้งค่า relay ปัจจุบันของคุณอาจไม่เหมาะสม อาจทำให้คนอื่นหาโพสต์ของคุณได้ยากและอาจส่งผลให้การแจ้งเตือนไม่สมบูรณ์","Optimize Now":"ปรับแต่งตอนนี้","Maybe Later":"ทีหลังค่อยว่า","Don't remind me again":"ไม่ต้องเตือนอีก",Posts:"โพสต์",Articles:"บทความ",Highlights:"ไฮไลต์",Polls:"โพล","Voice Posts":"โพสต์เสียง","Photo Posts":"โพสต์รูปภาพ","Video Posts":"โพสต์วิดีโอ","Select All":"เลือกทั้งหมด","Clear All":"ล้างทั้งหมด","Set as default filter":"ตั้งเป็นตัวกรองเริ่มต้น",Apply:"ใช้",Reset:"รีเซ็ต","Share something on this Relay":"แชร์บางอย่างบนรีเลย์นี้","Try deleting this note":"ลองลบโน้ตนี้ดู","Deletion request sent to {{count}} relays":"คำขอลบถูกส่งไปยังรีเลย์ {{count}} รายการ","Suitable Relays":"รีเลย์ที่เหมาะสม","People, keywords, or relays":"ผู้คน คีย์เวิร์ด หรือรีเลย์","Hide content mentioning muted users":"ซ่อนเนื้อหาที่กล่าวถึงผู้ใช้ที่ปิดเสียง","This note mentions a user you muted":"โน้ตนี้กล่าวถึงผู้ใช้ที่คุณปิดเสียง",Filter:"ตัวกรอง","mentioned you in a note":"ได้กล่าวถึงคุณในโน้ต","quoted your note":"ได้ยกคำพูดจากโน้ตของคุณ","voted in your poll":"ได้โหวตในการสำรวจของคุณ","reacted to your note":"ได้แสดงปฏิกิริยาต่อโน้ตของคุณ","reposted your note":"ได้รีโพสต์โน้ตของคุณ","zapped your note":"ได้แซปโน้ตของคุณ","highlighted your note":"ได้ไฮไลต์โน้ตของคุณ","zapped you":"ได้แซปคุณ","Mark as read":"ทำเครื่องหมายว่าอ่านแล้ว",Report:"รายงาน","Successfully report":"รายงานสำเร็จ","Failed to report":"การรายงานล้มเหลว",nudity:"ภาพลามก",malware:"มัลแวร์",profanity:"คำหยาบคาย",illegal:"เนื้อหาผิดกฎหมาย",spam:"สแปม",other:"อื่นๆ","Notification list style":"รูปแบบรายการการแจ้งเตือน","See extra info for each notification":"ดูข้อมูลเพิ่มเติมสำหรับการแจ้งเตือนแต่ละรายการ","See more notifications at a glance":"ดูการแจ้งเตือนเพิ่มเติมในแวบเดียว",Detailed:"รายละเอียด",Compact:"กะทัดรัด","Submit Relay":"ส่งรีเลย์",Homepage:"หน้าแรก","Proof of Work (difficulty {{minPow}})":"หลักฐานการทำงาน (ความยาก {{minPow}})","Proof of Work":"หลักฐานการทำงาน","Posts & comments difficulty":"ความยากของโพสต์และความคิดเห็น","Reactions difficulty":"ความยากของรีแอคชัน","Image Mode":"โหมดภาพ","Media Feed":"ฟีดสื่อ","Text Only":"ฟีดข้อความ","Text Post":"โพสต์ข้อความ","Picture Post":"โพสต์รูปภาพ","Video Post":"โพสต์วิดีโอ","Short Video Post":"วิดีโอสั้น",Text:"ข้อความ",Picture:"รูปภาพ",Video:"วิดีโอ","Short Video":"วิดีโอสั้น","Post Type":"ประเภทโพสต์","via {{client}}":"ผ่าน {{client}}","Auto-load media":"โหลดสื่ออัตโนมัติ",Always:"เสมอ","Wi-Fi only":"Wi-Fi เท่านั้น",Never:"ไม่เลย","Click to load image":"คลิกเพื่อโหลดรูปภาพ","Click to load media":"คลิกเพื่อโหลดสื่อ","Click to load YouTube video":"คลิกเพื่อโหลดวิดีโอ YouTube","{{count}} reviews":"{{count}} รีวิว","Write a review":"เขียนรีวิว","No reviews yet. Be the first to write one!":"ยังไม่มีรีวิว เป็นคนแรกที่เขียนรีวิวสิ!","View more reviews":"ดูรีวิวเพิ่มเติม","Failed to review":"รีวิวล้มเหลว","Write a review and pick a star rating":"เขียนรีวิวและเลือกคะแนนดาว",Submit:"ส่ง","Reviews for {{relay}}":"รีวิวสำหรับ {{relay}}","No relays selected":"ไม่ได้เลือกรีเลย์","Post to":"โพสต์ไปยัง","Write relays and {{count}} other relays":"รีเลย์เขียนและรีเลย์อื่น ๆ {{count}} ตัว","{{count}} relays":"รีเลย์ {{count}} ตัว","Republishing...":"กำลังเผยแพร่ซ้ำ...","Trending Notes":"โน้ตยอดนิยม","Connected to":"เชื่อมต่อกับ","Disconnect Wallet":"ตัดการเชื่อมต่อกระเป๋าสตางค์","Are you absolutely sure?":"คุณแน่ใจอย่างยิ่งหรือไม่?","You will not be able to send zaps to others.":"คุณจะไม่สามารถส่งซาตส์ไปยังผู้อื่นได้",Disconnect:"ตัดการเชื่อมต่อ","Start with a Rizful Vault":"เริ่มต้นด้วย Rizful Vault","or other wallets":"หรือกระเป๋าสตางค์อื่นๆ","Rizful Vault":"Rizful Vault","Rizful Vault connected!":"Rizful Vault เชื่อมต่อแล้ว!","You can now use your Rizful Vault to zap your favorite notes and creators.":"คุณสามารถใช้ Rizful Vault ของคุณเพื่อส่งซาตส์ไปยังโน้ตและผู้สร้างที่คุณชื่นชอบได้แล้ว","Your Lightning Address":"ที่อยู่ Lightning ของคุณ","New to Rizful?":"ใหม่กับ Rizful?","Sign up for Rizful":"สมัครสมาชิก Rizful","If you already have a Rizful account, you can skip this step.":"หากคุณมีบัญชี Rizful อยู่แล้ว คุณสามารถข้ามขั้นตอนนี้ได้","Get your one-time code":"รับรหัสใช้ครั้งเดียวของคุณ","Get code":"รับรหัส","Connect to your Rizful Vault":"เชื่อมต่อกับ Rizful Vault ของคุณ","Paste your one-time code here":"วางรหัสใช้ครั้งเดียวของคุณที่นี่",Connect:"เชื่อมต่อ","Set up your wallet to send and receive sats!":"ตั้งค่ากระเป๋าของคุณเพื่อส่งและรับ sats!","Set up":"ตั้งค่า",Pinned:"ปักหมุดแล้ว",Unpin:"ยกเลิกปักหมุด",Unpinning:"กำลังยกเลิกปักหมุด","Pinning...":"กำลังปักหมุด...","Pinned!":"ปักหมุดแล้ว!","Failed to pin: {{error}}":"ไม่สามารถปักหมุดได้: {{error}}","Unpinning...":"กำลังยกเลิกปักหมุด...","Unpinned!":"ยกเลิกปักหมุดแล้ว!","Failed to unpin: {{error}}":"ไม่สามารถยกเลิกปักหมุดได้: {{error}}","Unpin from profile":"ยกเลิกปักหมุดจากโปรไฟล์","Pin to profile":"ปักหมุดไปที่โปรไฟล์",Appearance:"รูปลักษณ์","Pure Black":"สีดำล้วน",Default:"ค่าเริ่มต้น",Red:"แดง",Orange:"ส้ม",Amber:"อำพัน",Yellow:"เหลือง",Lime:"มะนาว",Green:"เขียว",Emerald:"มรกต",Teal:"ฟ้าเขียว",Cyan:"ฟ้าน้ำทะเล",Sky:"ฟ้า",Blue:"น้ำเงิน",Indigo:"คราม",Violet:"ม่วงอ่อน",Purple:"ม่วง",Fuchsia:"บานเย็น",Pink:"ชมพู",Rose:"กุหลาบ","Primary color":"สีหลัก",Layout:"เค้าโครง","Two-column":"สองคอลัมน์","Single-column":"คอลัมน์เดียว",Reviews:"รีวิว",Extension:"ส่วนขยาย",Remote:"ระยะไกล","Encrypted Key":"คีย์ที่เข้ารหัส","Private Key":"คีย์ส่วนตัว","Welcome to Jumble":"ยินดีต้อนรับสู่ Jumble","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","Explore Relays":"สำรวจรีเลย์","Choose a feed":"เลือกฟีด","and {{x}} others":"และอื่น ๆ {{x}} รายการ",selfZapWarning:"Jumble ไม่รับผิดชอบต่อสิ่งที่เกิดขึ้นหากคุณ zap ตัวเอง ดำเนินการด้วยความเสี่ยงของคุณเอง 😉⚡","Emoji Pack":"แพ็คอีโมจิ","Emoji pack added":"เพิ่มแพ็คอีโมจิแล้ว","Add emoji pack failed":"การเพิ่มแพ็คอีโมจิล้มเหลว","Emoji pack removed":"ลบแพ็คอีโมจิแล้ว","Remove emoji pack failed":"การลบแพ็คอีโมจิล้มเหลว",Added:"เพิ่มแล้ว","Emoji Packs":"แพ็คอีโมจิ","My Packs":"แพ็คของฉัน","Adding...":"กำลังเพิ่ม...","Removing...":"กำลังลบ...",Reload:"โหลดใหม่","Request to Join Relay":"ขอเข้าร่วมรีเลย์","Leave Relay":"ออกจากรีเลย์",Leave:"ออก","Are you sure you want to leave this relay?":"คุณแน่ใจหรือไม่ว่าต้องการออกจากรีเลย์นี้?","Join request sent successfully":"ส่งคำขอเข้าร่วมสำเร็จแล้ว","Failed to send join request":"การส่งคำขอเข้าร่วมล้มเหลว","Leave request sent successfully":"ส่งคำขอออกสำเร็จแล้ว","Failed to send leave request":"การส่งคำขอออกล้มเหลว","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"ป้อนรหัสเชิญหากคุณมี มิฉะนั้นให้เว้นว่างไว้เพื่อส่งคำขอ","Invite Code (Optional)":"รหัสเชิญ (ไม่บังคับ)","Enter invite code":"ป้อนรหัสเชิญ","Sending...":"กำลังส่ง...","Send Request":"ส่งคำขอ","You can get an invite code from a relay member.":"คุณสามารถรับรหัสเชิญจากสมาชิกรีเลย์","Enter the invite code you received from a relay member.":"ป้อนรหัสเชิญที่คุณได้รับจากสมาชิกรีเลย์","Get Invite Code":"รับรหัสเชิญ","Share this invite code with others to invite them to join this relay.":"แชร์รหัสเชิญนี้กับผู้อื่นเพื่อเชิญพวกเขาเข้าร่วมรีเลย์นี้","Invite Code":"รหัสเชิญ",Copy:"คัดลอก","This invite code can be used by others to join the relay.":"รหัสเชิญนี้สามารถใช้โดยผู้อื่นเพื่อเข้าร่วมรีเลย์","No invite code available from this relay.":"ไม่มีรหัสเชิญที่ใช้ได้จากรีเลย์นี้",Close:"ปิด","Failed to get invite code from relay":"ไม่สามารถรับรหัสเชิญจากรีเลย์","Failed to get invite code":"ไม่สามารถรับรหัสเชิญ","Invite code copied to clipboard":"คัดลอกรหัสเชิญไปยังคลิปบอร์ดแล้ว","Favicon URL":"URL ไอคอน","Filter out onion relays":"กรองรีเลย์ onion","Click to load X post":"คลิกเพื่อโหลดโพสต์ X","View Nostr comments":"ดูความคิดเห็น Nostr","Search for notes":"ค้นหาโน้ต","Search for hashtag":"ค้นหาแฮชแท็ก","Go to note":"ไปที่โน้ต","Go to relay":"ไปที่รีเลย์","View discussions about this":"ดูการสนทนาเกี่ยวกับเนื้อหานี้","Open link":"เปิดลิงก์","View Nostr discussions":"ดูการสนทนา Nostr","Optimal relays":"รีเลย์ที่เหมาะสม","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"เผยแพร่ซ้ำไปยังรีเลย์ที่เหมาะสมสำเร็จ (รีเลย์เขียนของคุณและรีเลย์อ่านของผู้ใช้ที่กล่าวถึง)","Failed to republish to optimal relays: {{error}}":"เผยแพร่ซ้ำไปยังรีเลย์ที่เหมาะสมล้มเหลว: {{error}}","External Content":"เนื้อหาภายนอก",Highlight:"ไฮไลต์","Optimal relays and {{count}} other relays":"รีเลย์ที่เหมาะสมและรีเลย์อื่น {{count}} รายการ","Low trust ranking ({{percentile}}%)":"อันดับความน่าเชื่อถือต่ำ ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"บัญชีที่น่าสงสัย (คะแนนความน่าเชื่อถือ: {{percentile}}%)","n users":"{{count}} ผู้ใช้","View Details":"ดูรายละเอียด","Follow Pack Not Found":"ไม่พบแพ็คการติดตาม","Follow pack not found":"ไม่พบแพ็คการติดตาม",Users:"ผู้ใช้",Feed:"ฟีด","Follow Pack":"แพ็คการติดตาม","24h Pulse":"24h พัลส์","Load earlier":"โหลดข้อมูลก่อนหน้า","Last 24 hours":"24 ชั่วโมงที่แล้ว","Last {{count}} days":"{{count}} วันที่แล้ว",notes:"โน้ต","Quick reaction":"รีแอคชั่นด่วน","If enabled, you can react with a single click. Click and hold for more options":"หากเปิดใช้งาน คุณสามารถรีแอคได้ด้วยคลิกเดียว คลิกค้างไว้สำหรับตัวเลือกเพิ่มเติม","Quick reaction emoji":"อีโมจิรีแอคชั่นด่วน","Select emoji":"เลือกอีโมจิ","NSFW content display":"NSFW content display","Hide completely":"Hide completely","Show but hide content":"Show but hide content","Show directly":"Show directly","Click to view":"Click to view","Special Follow":"ติดตามพิเศษ","Unfollow Special":"ยกเลิกติดตามพิเศษ","Personal Feeds":"ฟีดส่วนตัว","Relay Feeds":"ฟีดรีเลย์","Create Highlight":"สร้างไฮไลท์","Write your thoughts about this highlight...":"เขียนความคิดของคุณเกี่ยวกับไฮไลท์นี้...","Publish Highlight":"เผยแพร่ไฮไลท์","Show replies":"แสดงการตอบกลับ","Hide replies":"ซ่อนการตอบกลับ","Welcome to Jumble!":"ยินดีต้อนรับสู่ Jumble!","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"ฟีดของคุณว่างเปล่าเพราะคุณยังไม่ได้ติดตามใครเลย เริ่มต้นด้วยการสำรวจเนื้อหาที่น่าสนใจและติดตามผู้ใช้ที่คุณชอบ!","Search Users":"ค้นหาผู้ใช้","Create New Account":"สร้างบัญชีใหม่",Important:"สำคัญ","Generate Your Account":"สร้างบัญชีของคุณ","Your private key IS your account. Keep it safe!":"คีย์ส่วนตัวของคุณคือบัญชีของคุณ เก็บไว้ให้ปลอดภัย!","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"ใน Nostr คีย์ส่วนตัวของคุณคือบัญชีของคุณ หากคุณสูญเสียคีย์ส่วนตัว คุณจะสูญเสียบัญชีของคุณตลอดไป","Your Private Key":"คีย์ส่วนตัวของคุณ","Generate new key":"สร้างคีย์ใหม่","Download Backup File":"ดาวน์โหลดไฟล์สำรอง","Copied to Clipboard":"คัดลอกไปยังคลิปบอร์ดแล้ว","Copy to Clipboard":"คัดลอกไปยังคลิปบอร์ด","I already saved my private key securely.":"ฉันได้บันทึกคีย์ส่วนตัวของฉันอย่างปลอดภัยแล้ว","Almost Done!":"เกือบเสร็จแล้ว!","Set a password to encrypt your key, or skip to finish":"ตั้งรหัสผ่านเพื่อเข้ารหัสคีย์ของคุณ หรือข้ามเพื่อเสร็จสิ้น","Password Protection (Optional)":"การป้องกันด้วยรหัสผ่าน (ไม่บังคับ)","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"การตั้งรหัสผ่านจะเข้ารหัสคีย์ส่วนตัวของคุณในเบราว์เซอร์นี้ คุณสามารถข้ามขั้นตอนนี้ได้ แต่เราแนะนำให้ตั้งรหัสผ่านเพื่อความปลอดภัยเพิ่มเติม","Password (Optional)":"รหัสผ่าน (ไม่บังคับ)","Enter password or leave empty to skip":"ป้อนรหัสผ่านหรือเว้นว่างเพื่อข้าม","Confirm Password":"ยืนยันรหัสผ่าน","Re-enter password":"ป้อนรหัสผ่านอีกครั้ง","Passwords do not match":"รหัสผ่านไม่ตรงกัน","Finish Signup":"เสร็จสิ้นการลงทะเบียน","Create Your Nostr Account":"สร้างบัญชี Nostr ของคุณ","Generate your unique private key. This is your digital identity.":"สร้างคีย์ส่วนตัวที่ไม่ซ้ำของคุณ นี่คือตัวตนดิจิทัลของคุณ","Critical: Save Your Private Key":"สำคัญมาก: บันทึกคีย์ส่วนตัวของคุณ","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"คีย์ส่วนตัวของคุณคือบัญชีของคุณ ไม่มีการกู้คืนรหัสผ่าน หากคุณทำหาย คุณจะสูญเสียบัญชีของคุณตลอดไป โปรดบันทึกไว้ในที่ปลอดภัย","I have safely backed up my private key":"ฉันได้สำรองคีย์ส่วนตัวของฉันอย่างปลอดภัยแล้ว","Secure Your Account":"รักษาความปลอดภัยบัญชีของคุณ","Add an extra layer of protection with a password":"เพิ่มชั้นความปลอดภัยเพิ่มเติมด้วยรหัสผ่าน","Password Protection (Recommended)":"การป้องกันด้วยรหัสผ่าน (แนะนำ)","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"เพิ่มรหัสผ่านเพื่อเข้ารหัสคีย์ส่วนตัวของคุณในเบราว์เซอร์นี้ เป็นตัวเลือก แต่แนะนำอย่างยิ่งเพื่อความปลอดภัยที่ดีขึ้น","Create a password (or skip)":"สร้างรหัสผ่าน (หรือข้าม)","Enter your password again":"ป้อนรหัสผ่านของคุณอีกครั้ง","Complete Signup":"เสร็จสิ้นการลงทะเบียน",Recommended:"แนะนำ","Enter Password":"ป้อนรหัสผ่าน",Password:"รหัสผ่าน",Confirm:"ยืนยัน","trust-filter.title":"ตัวกรองคะแนนความไว้วางใจ","trust-filter.off":"ปิด","trust-filter.low":"ต่ำ","trust-filter.medium":"ปานกลาง","trust-filter.high":"สูง","trust-filter.wot":"WoT","trust-filter.filter-threshold":"เกณฑ์การกรอง","trust-filter.quick-presets":"ค่าที่ตั้งไว้ล่วงหน้าแบบเร็ว","trust-filter.show-all-content":"แสดงเนื้อหาทั้งหมด","trust-filter.only-show-wot":"แสดงเฉพาะเครือข่ายความไว้วางใจของคุณ (ผู้ติดตาม + ผู้ติดตามของพวกเขา)","trust-filter.hide-bottom-percent":"กรอง {{score}}% ล่างสุดของผู้ใช้ตามอันดับความไว้วางใจ","trust-filter.trust-score-description":"คำนวณจากชื่อเสียงของผู้ใช้และเปอร์เซ็นไทล์ของเครือข่ายสังคม","Auto-load profile pictures":"โหลดรูปโปรไฟล์อัตโนมัติ","Disable live feed":"ปิดฟีดสด","Enable live feed":"เปิดฟีดสด","Default relays":"รีเลย์เริ่มต้น","Reset to default":"รีเซ็ตเป็นค่าเริ่มต้น","Default relays description":"ใช้สำหรับสอบถามการกำหนดค่ารีเลย์ของผู้ใช้อื่นและเป็นทางเลือกสำรองเมื่อผู้ใช้ไม่ได้กำหนดค่ารีเลย์","Default relays warning":"คำเตือน: กรุณาอย่าแก้ไขการตั้งค่าเหล่านี้โดยไม่ระมัดระวัง เพราะอาจส่งผลต่อประสบการณ์พื้นฐานของคุณ","Invalid relay URL":"URL รีเลย์ไม่ถูกต้อง","Muted words":"คำที่ถูกปิดเสียง","Add muted word":"เพิ่มคำที่ถูกปิดเสียง","Zap Details":"รายละเอียดซาตส์","Default trust score filter threshold ({{n}}%)":"เกณฑ์ตัวกรองคะแนนความไว้วางใจเริ่มต้น ({{n}}%)","No notes found":"ไม่พบโน้ต","Try again later or check your connection":"ลองใหม่ภายหลังหรือตรวจสอบการเชื่อมต่อของคุณ","Hide indirect":"ซ่อนทางอ้อม","Copy note content":"คัดลอกเนื้อหาโน้ต","Video loop":"เล่นวิดีโอซ้ำ","Automatically replay videos when they end":"เล่นวิดีโอซ้ำอัตโนมัติเมื่อจบ","Relays used for searching notes (NIP-50)":"รีเลย์ที่ใช้สำหรับค้นหาโน้ต (NIP-50)","Protected event (NIP-70)":"เหตุการณ์ที่ได้รับการป้องกัน (NIP-70)",Protected:"ป้องกัน","Protected event hint":"เหตุการณ์ที่ได้รับการป้องกัน (NIP-70) สามารถเผยแพร่ได้โดยผู้เขียนเท่านั้น รีเลย์จะปฏิเสธเหตุการณ์เหล่านี้จากบุคคลที่สาม ป้องกันไม่ให้ผู้อื่นเผยแพร่เนื้อหาของคุณซ้ำ หมายเหตุ: รีเลย์บางแห่งไม่รองรับเหตุการณ์ที่ได้รับการป้องกัน","Allow insecure connections":"อนุญาตการเชื่อมต่อที่ไม่ปลอดภัย","Allow insecure connections description":"อนุญาตให้โหลดทรัพยากร http:// และเชื่อมต่อกับรีเลย์ ws:// อาจทำให้เบราว์เซอร์แสดงคำเตือนเนื้อหาแบบผสม","reacted to":"รีแอคชันไปที่",Reaction:"รีแอคชัน","n users_one":"{{count}} ผู้ใช้","n users_other":"{{count}} ผู้ใช้","Font size":"ขนาดแบบอักษร","Advanced mode":"โหมดขั้นสูง","Post type selector":"ตัวเลือกประเภทโพสต์","Shows post kind dropdown when creating posts":"แสดงดรอปดาวน์ประเภทโพสต์เมื่อสร้างโพสต์","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"ค้นหาชุมชน...","No communities found":"ไม่พบชุมชน","No communities yet":"ยังไม่มีชุมชน"}},g3={translation:{"Welcome! 🥳":"来都来了",About:"关于","New Note":"发布新笔记",Post:"发布笔记",Home:"主页","Relay settings":"服务器设置",Settings:"设置",SidebarRelays:"服务器",Refresh:"刷新列表",Profile:"个人资料",Logout:"退出登录",Following:"关注",followings:"关注",reposted:"转发","just now":"刚刚","minute ago_one":"{{count}} 分钟前","minute ago_other":"{{count}} 分钟前","n m":"{{n}}分","hour ago_one":"{{count}} 小时前","hour ago_other":"{{count}} 小时前","n h":"{{n}}时","day ago_one":"{{count}} 天前","day ago_other":"{{count}} 天前","n d":"{{n}}天",date:"{{timestamp, date}}",Follow:"关注",Unfollow:"取消关注","Follow failed":"关注失败","Unfollow failed":"取消关注失败","show new notes":"显示新笔记","loading...":"加载中...","Loading...":"加载中...","no more notes":"到底了","reply to":"回复",reply:"回复",Reply:"回复","load more older replies":"加载更多早期回复","Write something...":"写点什么...",Cancel:"取消",Mentions:"提及","Failed to post":"发布失败","Post successful":"发布成功","Your post has been published":"您的笔记已发布",Repost:"转发",Quote:"引用","Copy event ID":"复制事件 ID","Copy user ID":"复制用户 ID","View raw event":"查看原始事件",Like:"点赞","switch to light theme":"切换到浅色主题","switch to dark theme":"切换到深色主题","switch to system theme":"切换到系统主题",Note:"笔记",note:"笔记","username's following":"{{username}} 的关注","username's used relays":"{{username}} 使用的服务器","username's muted":"{{username}} 屏蔽的用户",Login:"登录","Follows you":"关注了你","Relay Settings":"服务器设置","Relay set name":"服务器组名","Add a new relay set":"添加新的服务器组",Add:"添加","n relays":"{{n}} 个服务器",Rename:"重命名","Copy share link":"复制分享链接",Delete:"删除","Relay already exists":"服务器已存在","invalid relay URL":"无效的服务器地址","Add a new relay":"添加新的服务器",back:"返回","Lost in the void":"迷失在虚空中","Carry me home":"带我回家","no replies":"暂无回复","Reply to":"回复",Search:"搜索","The relays you are connected to do not support search":"您连接的服务器不支持搜索","Show more...":"查看更多...","All users":"所有用户","Display replies":"显示回复",Notes:"笔记",Replies:"回复",Notifications:"通知","no more notifications":"到底了","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"使用私钥登录不安全。建议使用浏览器插件登录，如 alby、nostr-keyx 或 nos2x。如果必须使用私钥，请至少设置一个密码进行加密。","Login with Browser Extension":"浏览器插件登录","Login with Bunker":"Bunker 登录","Login with Private Key":"私钥登录","reload notes":"重新加载笔记","Logged in Accounts":"已登录账户","Add an Account":"添加账户","More options":"更多选项","Add client tag":"添加客户端标签","Show others this was sent via Jumble":"告诉别人这是通过 RogueJumble 发送的","Are you sure you want to logout?":"确定要退出登录吗？","relay sets":"服务器组",edit:"编辑",Languages:"语言",Theme:"主题",System:"系统",Light:"浅色",Dark:"深色",Temporary:"临时","Choose a relay set":"选择一个服务器组","Switch account":"切换账户",Pictures:"图片","Picture note":"图片笔记","A special note for picture-first clients like Olas":"一种可以在图片优先客户端 (如 Olas) 中显示的特殊笔记","Picture note requires images":"图片笔记需要有图片",Relays:"服务器",Image:"图片",Normal:"普通","R & W":"读写",Read:"只读",Write:"只写","Pull relay sets":"拉取服务器组","Select the relay sets you want to pull":"选择要拉取的服务器组","No relay sets found":"未找到服务器组","Pull n relay sets":"拉取 {{n}} 个服务器组",Pull:"拉取","Select all":"全选","Relay Sets":"服务器组",Mailbox:"邮箱","Read & Write Relays":"读写服务器","read relays description":"读服务器用于寻找与您有关的事件。其他用户会将想要您看到的事件发布到您的读服务器，比如回复、点赞转发……","write relays description":"写服务器用于发布您的事件。其他用户会从您的写服务器寻找您发布的事件。","read & write relays notice":"读服务器和写服务器的数量都应尽量保持在 2 到 4 个之间。","Don't have an account yet?":"还没有账户？","or simply generate a private key":"或者简单生成一个私钥","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"这是私钥，请勿与他人分享。请妥善保管，否则将无法找回。",Edit:"编辑",Save:"保存","Display Name":"昵称",Bio:"简介","Nostr Address (NIP-05)":"Nostr 地址 (NIP-05)","Invalid NIP-05 address":"无效的 NIP-05 地址","Copy private key":"复制私钥","Enter the password to decrypt your ncryptsec":"输入密码以解密您的 ncryptsec",Back:"返回","password (optional): encrypt nsec":"密码 (可选): 加密 nsec","optional: encrypt nsec":"可选: 加密 nsec",password:"密码","Sign up":"注册","Save to":"保存到","Enter a name for the new relay set":"输入新服务器组的名称","Save to a new relay set":"保存到新服务器组",Mute:"屏蔽",Muted:"已屏蔽",Unmute:"取消屏蔽","Unmute user":"取消屏蔽用户","Append n relays":"追加 {{n}} 个服务器",Append:"追加","Select relays to append":"选择要追加的服务器","calculating...":"计算中...","Calculate optimal read relays":"计算最佳读服务器","Login to set":"登录后设置","Please login to view following feed":"请登录以查看关注动态","Send only to r":"只发送到 {{r}}","Send only to these relays":"只发送到这些服务器",Explore:"探索","Search relays":"搜索服务器",relayInfoBadgeAuth:"需登陆",relayInfoBadgeSearch:"支持搜索",relayInfoBadgePayment:"需付费",Operator:"管理员",Contact:"联系方式",Software:"软件",Version:"版本","Random Relays":"随机服务器",randomRelaysRefresh:"换一批","Explore more":"探索更多","Payment page":"付款页面","Supported NIPs":"支持的 NIP","Open in a":"在 {{a}} 中打开","Cannot handle event of kind k":"无法处理类型为 {{k}} 的事件","Encrypted direct messages not supported":"不支持加密私信","Sorry! The note cannot be found 😔":"抱歉！找不到该笔记 😔","This user has been muted":"该用户已被屏蔽",Wallet:"钱包",Sats:"聪",sats:"聪","Zap to":"打闪给","Zap n sats":"打闪 {{n}} 聪",zapComment:"附言","Default zap amount":"默认打闪金额","Default zap comment":"默认打闪附言","Lightning Address (or LNURL)":"闪电地址 (或 LNURL)","Quick zap":"快速打闪","If enabled, you can zap with a single click. Click and hold for custom amounts":"如果启用，您单击即可打闪。长按以设置自定义金额",All:"全部",Reactions:"互动",Zaps:"打闪","Enjoying Jumble?":"喜欢 RogueJumble 吗？","Your donation helps me maintain Jumble and make it better! 😊":"您的捐赠帮助我维护 RogueJumble 并使其更好！😊","Earlier notifications":"更早的通知","Temporarily display this note":"临时显示此笔记",buttonFollowing:"已关注","Are you sure you want to unfollow this user?":"确定要取消关注此用户吗？","Recent Supporters":"最近的支持者","Seen on":"来自","Temporarily display this reply":"临时显示此回复","Note not found":"未找到该笔记","no more replies":"没有更多回复了","Relay sets":"服务器组","Favorite Relays":"收藏的服务器","Following's Favorites":"关注人的收藏","no more relays":"没有更多服务器了","Favorited by":"收藏自","Post settings":"发布设置","Media upload service":"媒体上传服务","Choose a relay":"选择一个服务器","no relays found":"未找到服务器",video:"视频","Show n new notes":"显示 {{n}} 条新笔记",YouTabName:"与你",Bookmark:"收藏","Remove bookmark":"取消收藏","no bookmarks found":"暂无收藏","no more bookmarks":"到底了",Bookmarks:"收藏","Show more":"显示更多",General:"常规",Autoplay:"自动播放","Enable video autoplay on this device":"在此设备上启用视频自动播放","Paste or drop media files to upload":"支持粘贴或拖放媒体文件进行上传",Preview:"预览","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"您即将发布一条由 [{{eventAuthorName}}] 签名的事件。您当前以 [{{currentUsername}}] 登录。确定吗？","Platinum Sponsors":"白金赞助商",From:"来自","Comment on":"评论于","View on njump.me":"在 njump.me 上查看","Hide content from untrusted users":"隐藏不受信任用户的内容","Only show content from your followed users and the users they follow":"仅显示您关注的用户及其关注的用户的内容","Followed by":"关注者","Mute user privately":"悄悄屏蔽","Mute user publicly":"公开屏蔽",Quotes:"引用","Lightning Invoice":"闪电发票","Bookmark failed":"收藏失败","Remove bookmark failed":"取消收藏失败",Translation:"翻译",Balance:"余额",characters:"字符",jumbleTranslateApiKeyDescription:"您可以在任何支持 LibreTranslate 的地方使用此 API key。服务地址是 {{serviceUrl}}","Top up":"充值","Will receive: {n} characters":"将获得: {{n}} 字符","Top up {n} sats":"充值 {{n}} 聪","Minimum top up is {n} sats":"最低充值金额为 {{n}} 聪",Service:"服务","Reset API key":"重置 API key","Are you sure you want to reset your API key? This action cannot be undone.":"您确定要重置您的 API key？此操作无法撤销。",Warning:"警告","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"您当前的 API key 将立即失效，任何使用它的应用程序将停止工作，直到您用新 key 更新它们。","Service address":"服务地址",Pay:"支付",interactions:"互动",notifications:"通知","Show untrusted {type}":"显示不受信任的{{type}}","Hide untrusted {type}":"隐藏不受信任的{{type}}","Currently hiding {type} from untrusted users.":"当前隐藏来自不受信任用户的{{type}}。","Currently showing all {type}.":"当前显示所有{{type}}。","Click continue to show all {type}.":"点击继续显示所有{{type}}。","Click continue to hide {type} from untrusted users.":"点击继续隐藏来自不受信任用户的{{type}}。","Trusted users include people you follow and people they follow.":"受信任的用户包括您关注的人和他们关注的人。",Continue:"继续","Successfully updated mute list":"成功更新屏蔽列表","No pubkeys found from {url}":"在 {{url}} 中未找到 pubkeys","Translating...":"翻译中...",Translate:"翻译","Show original":"显示原文",Website:"网站","Hide untrusted notes":"隐藏不受信任的笔记","Open in another client":"在其他客户端打开",Community:"社区",Group:"群组","Live event":"直播",Article:"文章",Unfavorite:"取消收藏","Recommended relays":"推荐服务器","Blossom server URLs":"Blossom 服务器地址","You need to add at least one blossom server in order to upload media files.":"您需要添加至少一个 Blossom 服务器才能上传媒体文件。","Recommended blossom servers":"推荐的 Blossom 服务器","Enter Blossom server URL":"输入 Blossom 服务器 URL",Preferred:"首选","Multiple choice (select one or more)":"多选 (选择一个或多个)",Vote:"投票","{{number}} votes":"{{number}} 次投票","Total votes":"总票数","Poll has ended":"投票已结束","Poll ends at {{time}}":"投票结束时间：{{time}}","Load results":"加载结果","This is a poll note.":"这是一个投票帖子。","Unlike regular notes, polls are not widely supported and may not display on other clients.":"与普通帖子不同，投票功能暂时没有得到广泛的支持，可能无法在其他客户端中显示。","Option {{number}}":"选项 {{number}}","Add Option":"添加选项","Allow multiple choices":"允许多选","End Date (optional)":"结束日期（可选）","Clear end date":"清除结束日期","Relay URLs (optional, comma-separated)":"中继服务器 URL（可选，逗号分隔）","Remove poll":"移除投票","Refresh results":"刷新结果",Poll:"投票",Media:"媒体","Republish to ...":"重新发布到 ...","Successfully republish to your write relays":"成功重新发布到您的写服务器","Failed to republish to your write relays: {{error}}":"重新发布到您的写服务器失败: {{error}}","Successfully republish to relay set: {{name}}":"成功重新发布到服务器组: {{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"重新发布到服务器组: {{name}} 失败。错误: {{error}}","Successfully republish to relay: {{url}}":"成功重新发布到服务器: {{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"重新发布到服务器: {{url}} 失败。错误: {{error}}","Write relays":"写服务器","No more reactions":"没有更多互动了","No reactions yet":"暂无互动","No more zaps":"没有更多打闪了","No zaps yet":"暂无打闪","No more reposts":"没有更多转发了","No reposts yet":"暂无转发",Reposts:"转发",FollowListNotFoundConfirmation:"未找到关注列表。你想创建一个新的吗？如果你之前已经关注了用户，请不要确认，因为此操作会导致你丢失之前的关注列表。",MuteListNotFoundConfirmation:"未找到屏蔽列表。你想创建一个新的吗？如果你之前已经屏蔽了用户，请不要确认，因为此操作会导致你丢失之前的屏蔽列表。","Show NSFW content by default":"默认显示 NSFW 内容","Custom emoji management":"自定义表情符号管理","After changing emojis, you may need to refresh the page":"更改表情符号后，您可能需要刷新页面","Too many read relays":"读取中继过多","Too many write relays":"写入中继过多","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"您有 {{count}} 个读取中继。大多数客户端只使用 2-4 个中继，设置更多是不必要的。","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"您有 {{count}} 个写入中继。大多数客户端只使用 2-4 个中继，设置更多是不必要的。","Optimize Relay Settings":"优化中继设置","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"您当前的中继配置可能不是最优的。这可能导致其他人难以找到您发布的内容，也可能导致您无法获取完整的通知列表。","Optimize Now":"立即优化","Maybe Later":"稍后处理","Don't remind me again":"不再提醒",Posts:"帖子",Articles:"文章",Highlights:"高亮",Polls:"投票","Voice Posts":"语音帖子","Photo Posts":"图片帖子","Video Posts":"视频帖子","Select All":"全选","Clear All":"清空","Set as default filter":"设为默认过滤器",Apply:"应用",Reset:"重置","Share something on this Relay":"在此服务器上分享点什么","Try deleting this note":"尝试删除此笔记","Deletion request sent to {{count}} relays":"删除请求已发送到 {{count}} 个服务器","Suitable Relays":"适合的服务器","People, keywords, or relays":"用户、关键词或服务器","Hide content mentioning muted users":"隐藏提及已屏蔽用户的内容","This note mentions a user you muted":"此笔记提及了您已屏蔽的用户",Filter:"过滤器","mentioned you in a note":"在笔记中提及了您","quoted your note":"引用了您的笔记","voted in your poll":"在您的投票中投票","reacted to your note":"对您的笔记做出了反应","reposted your note":"转发了您的笔记","zapped your note":"打闪了您的笔记","highlighted your note":"高亮了您的笔记","zapped you":"给您打闪","Mark as read":"标记为已读",Report:"举报","Successfully report":"举报成功","Failed to report":"举报失败",nudity:"色情内容",malware:"恶意软件",profanity:"亵渎言论",illegal:"违法内容",spam:"垃圾信息",other:"其他","Notification list style":"通知列表样式","See extra info for each notification":"查看每条通知的详细信息","See more notifications at a glance":"一目了然地查看更多通知",Detailed:"详细",Compact:"紧凑","Submit Relay":"提交服务器",Homepage:"主页","Proof of Work (difficulty {{minPow}})":"工作量证明 (难度 {{minPow}})","Proof of Work":"工作量证明","Posts & comments difficulty":"帖子和评论难度","Reactions difficulty":"互动难度","Image Mode":"图片模式","Media Feed":"媒体动态","Text Only":"文字动态","Text Post":"文字帖子","Picture Post":"图片帖子","Video Post":"视频帖子","Short Video Post":"短视频",Text:"文字",Picture:"图片",Video:"视频","Short Video":"短视频","Post Type":"帖子类型","via {{client}}":"来自 {{client}}","Auto-load media":"自动加载媒体文件",Always:"始终","Wi-Fi only":"仅WiFi",Never:"从不","Click to load image":"点击加载图片","Click to load media":"点击加载音视频","Click to load YouTube video":"点击加载 YouTube 视频","{{count}} reviews":"{{count}} 条评价","Write a review":"写评价","No reviews yet. Be the first to write one!":"还没有评价，成为第一个评价的人吧！","View more reviews":"查看更多评价","Failed to review":"评价失败","Write a review and pick a star rating":"写下评价并选择星级评分",Submit:"提交","Reviews for {{relay}}":"关于 {{relay}} 的评价","No relays selected":"未选择服务器","Post to":"发布到","Write relays and {{count}} other relays":"写服务器和其他 {{count}} 个服务器","{{count}} relays":"{{count}} 个服务器","Republishing...":"正在重新发布...","Trending Notes":"热门笔记","Connected to":"已连接到","Disconnect Wallet":"断开钱包连接","Are you absolutely sure?":"您确定吗？","You will not be able to send zaps to others.":"您将无法向他人发送打闪。",Disconnect:"断开连接","Start with a Rizful Vault":"从 Rizful 钱包开始","or other wallets":"或其他钱包","Rizful Vault":"Rizful 钱包","Rizful Vault connected!":"Rizful 钱包已连接！","You can now use your Rizful Vault to zap your favorite notes and creators.":"您现在可以使用您的 Rizful 钱包为您喜欢的笔记和创作者打闪。","Your Lightning Address":"您的闪电地址","New to Rizful?":"第一次使用 Rizful？","Sign up for Rizful":"注册 Rizful","If you already have a Rizful account, you can skip this step.":"如果您已经有一个 Rizful 账户，可以跳过此步骤。","Get your one-time code":"获取一次性代码","Get code":"获取代码","Connect to your Rizful Vault":"连接到您的 Rizful 钱包","Paste your one-time code here":"将您的一次性代码粘贴到此处",Connect:"连接","Set up your wallet to send and receive sats!":"设置你的钱包以发送和接收 sats！","Set up":"去设置",Pinned:"已置顶",Unpin:"取消置顶",Unpinning:"取消置顶中","Pinning...":"置顶中...","Pinned!":"已置顶！","Failed to pin: {{error}}":"置顶失败: {{error}}","Unpinning...":"取消置顶中...","Unpinned!":"已取消置顶！","Failed to unpin: {{error}}":"取消置顶失败: {{error}}","Unpin from profile":"从个人资料取消置顶","Pin to profile":"置顶到个人资料",Appearance:"外观","Pure Black":"纯黑",Default:"默认",Red:"红色",Orange:"橙色",Amber:"琥珀色",Yellow:"黄色",Lime:"青柠色",Green:"绿色",Emerald:"翡翠色",Teal:"蓝绿色",Cyan:"青色",Sky:"天空色",Blue:"蓝色",Indigo:"靛蓝色",Violet:"紫罗兰色",Purple:"紫色",Fuchsia:"紫红色",Pink:"粉色",Rose:"玫瑰色","Primary color":"主色调",Layout:"布局","Two-column":"双栏","Single-column":"单栏",Reviews:"评价",Extension:"扩展",Remote:"远程","Encrypted Key":"加密私钥","Private Key":"私钥","Welcome to Jumble":"欢迎来到 RogueJumble","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","Explore Relays":"探索服务器","Choose a feed":"选择一个动态","and {{x}} others":"和其他 {{x}} 人",selfZapWarning:"Jumble 对您给自己打赏所发生的事情概不负责。风险自负。😉⚡","Emoji Pack":"表情包","Emoji pack added":"表情包已添加","Add emoji pack failed":"添加表情包失败","Emoji pack removed":"表情包已移除","Remove emoji pack failed":"移除表情包失败",Added:"已添加","Emoji Packs":"表情包","My Packs":"我的表情包","Adding...":"添加中...","Removing...":"移除中...",Reload:"重新加载","Request to Join Relay":"申请加入中继器","Leave Relay":"离开中继器",Leave:"离开","Are you sure you want to leave this relay?":"您确定要离开此中继器吗？","Join request sent successfully":"加入请求已成功发送","Failed to send join request":"发送加入请求失败","Leave request sent successfully":"离开请求已成功发送","Failed to send leave request":"发送离开请求失败","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"如果您有邀请码，请输入。否则，留空以发送请求。","Invite Code (Optional)":"邀请码（可选）","Enter invite code":"输入邀请码","Sending...":"发送中...","Send Request":"发送请求","You can get an invite code from a relay member.":"您可以从中继器成员获取邀请码。","Enter the invite code you received from a relay member.":"输入您从中继器成员处获得的邀请码。","Get Invite Code":"获取邀请码","Share this invite code with others to invite them to join this relay.":"将此邀请码分享给他人以邀请他们加入此中继器。","Invite Code":"邀请码",Copy:"复制","This invite code can be used by others to join the relay.":"此邀请码可供他人用于加入中继器。","No invite code available from this relay.":"此中继器没有可用的邀请码。",Close:"关闭","Failed to get invite code from relay":"从中继器获取邀请码失败","Failed to get invite code":"获取邀请码失败","Invite code copied to clipboard":"邀请码已复制到剪贴板","Favicon URL":"网站图标 URL","Filter out onion relays":"过滤洋葱中继","Click to load X post":"点击加载 X 帖子","View Nostr comments":"查看 Nostr 评论","Search for notes":"搜索笔记","Search for hashtag":"搜索话题标签","Go to note":"跳转到笔记","Go to relay":"跳转到中继器","View discussions about this":"查看关于此内容的讨论","Open link":"打开链接","View Nostr discussions":"查看 Nostr 讨论","Optimal relays":"最佳中继器","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"成功重新发布到最佳中继器（你的写入中继器和被提及用户的读取中继器）","Failed to republish to optimal relays: {{error}}":"重新发布到最佳中继器失败：{{error}}","External Content":"外部内容",Highlight:"高亮","Optimal relays and {{count}} other relays":"最佳中继器和其他 {{count}} 个中继器","Low trust ranking ({{percentile}}%)":"可信度较低 ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"可疑账号（信任分数：{{percentile}}%）","n users":"{{count}} 位用户","View Details":"查看详情","Follow Pack Not Found":"未找到关注包","Follow pack not found":"未找到关注包",Users:"用户",Feed:"动态","Follow Pack":"关注包","24h Pulse":"24h 动态","Load earlier":"加载更早","Last 24 hours":"最近 24 小时","Last {{count}} days":"最近 {{count}} 天",notes:"笔记","Quick reaction":"快速点赞","If enabled, you can react with a single click. Click and hold for more options":"启用后，您可以通过单击进行点赞。长按以获取更多选项","Quick reaction emoji":"快速点赞表情","Select emoji":"选择表情","NSFW content display":"NSFW 内容显示","Hide completely":"完全隐藏","Show but hide content":"显示但隐藏内容","Show directly":"直接显示","Click to view":"点击查看","Special Follow":"特别关注","Unfollow Special":"取消特别关注","Personal Feeds":"个人订阅","Relay Feeds":"中继订阅","Create Highlight":"创建高亮","Write your thoughts about this highlight...":"写下你对这段高亮的想法...","Publish Highlight":"发布高亮","Show replies":"显示回复","Hide replies":"隐藏回复","Welcome to Jumble!":"欢迎来到 RogueJumble！","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"你的动态是空的，因为你还没有关注任何人。开始探索有趣的内容并关注你喜欢的用户吧！","Search Users":"搜索用户","Create New Account":"创建新账户",Important:"重要","Generate Your Account":"生成你的账户","Your private key IS your account. Keep it safe!":"你的私钥就是你的账户。请妥善保管！","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"在 Nostr 中，你的私钥就是你的账户。如果你丢失了私钥，你将永远失去你的账户。","Your Private Key":"你的私钥","Generate new key":"生成新密钥","Download Backup File":"下载备份文件","Copied to Clipboard":"已复制到剪贴板","Copy to Clipboard":"复制到剪贴板","I already saved my private key securely.":"我已经安全地保存了我的私钥。","Almost Done!":"即将完成！","Set a password to encrypt your key, or skip to finish":"设置密码来加密你的密钥，或跳过以完成","Password Protection (Optional)":"密码保护（可选）","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"设置密码会在此浏览器中加密你的私钥。你可以跳过此步骤，但我们建议设置密码以增强安全性。","Password (Optional)":"密码（可选）","Enter password or leave empty to skip":"输入密码或留空以跳过","Confirm Password":"确认密码","Re-enter password":"重新输入密码","Passwords do not match":"密码不匹配","Finish Signup":"完成注册","Create Your Nostr Account":"创建你的 Nostr 账户","Generate your unique private key. This is your digital identity.":"生成你的专属私钥。这是你的数字身份。","Critical: Save Your Private Key":"重要：保存你的私钥","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"你的私钥就是你的账户。没有密码找回功能。如果丢失，你将永远失去你的账户。请将其保存在安全的地方。","I have safely backed up my private key":"我已安全备份我的私钥","Secure Your Account":"保护你的账户","Add an extra layer of protection with a password":"使用密码添加额外的保护层","Password Protection (Recommended)":"密码保护（推荐）","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"添加密码以在此浏览器中加密你的私钥。这是可选的，但强烈建议设置以获得更好的安全性。","Create a password (or skip)":"创建密码（或跳过）","Enter your password again":"再次输入你的密码","Complete Signup":"完成注册",Recommended:"推荐","Enter Password":"输入密码",Password:"密码",Confirm:"确认","trust-filter.title":"信任分数过滤器","trust-filter.off":"关闭","trust-filter.low":"低","trust-filter.medium":"中","trust-filter.high":"高","trust-filter.wot":"信任网络","trust-filter.filter-threshold":"过滤阈值","trust-filter.quick-presets":"快速预设","trust-filter.show-all-content":"显示所有内容","trust-filter.only-show-wot":"仅显示你的信任网络（关注的人 + 他们关注的人）","trust-filter.hide-bottom-percent":"过滤掉信任度排名后 {{score}}% 的用户","trust-filter.trust-score-description":"基于用户的声誉和社交网络计算信任度百分位","Auto-load profile pictures":"自动加载头像","Disable live feed":"禁用实时推送","Enable live feed":"启用实时推送","Default relays":"默认中继","Reset to default":"重置为默认","Default relays description":"用于查询其他用户的中继配置，以及当用户没有配置中继时的备用选项。","Default relays warning":"警告：请不要随意修改这些设置，可能会影响您的基本体验。","Invalid relay URL":"无效的中继地址","Muted words":"屏蔽词","Add muted word":"添加屏蔽词","Zap Details":"打闪详情","Default trust score filter threshold ({{n}}%)":"默认信任分数过滤阈值 ({{n}}%)","No notes found":"没有找到笔记","Try again later or check your connection":"请稍后重试或检查网络连接","Hide indirect":"隐藏间接通知","Copy note content":"复制笔记内容","Video loop":"视频循环","Automatically replay videos when they end":"视频播放结束后自动重新播放","Relays used for searching notes (NIP-50)":"用于搜索笔记的服务器 (NIP-50)","Protected event (NIP-70)":"受保护的事件 (NIP-70)",Protected:"受保护","Protected event hint":"受保护的事件（NIP-70）只能由作者发布。服务器将拒绝来自第三方的这些事件，防止他人转播你的内容。 注意：并非所有服务器都支持受保护的事件。","Allow insecure connections":"允许不安全的连接","Allow insecure connections description":"允许加载 http:// 资源和连接 ws:// relay。可能会触发浏览器混合内容警告。","reacted to":"回应了",Reaction:"回应","n users_one":"{{count}} 位用户","n users_other":"{{count}} 位用户","Font size":"字体大小","Advanced mode":"高级模式","Post type selector":"帖子类型选择器","Shows post kind dropdown when creating posts":"创建帖子时显示帖子类型下拉菜单","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"搜索社区...","No communities found":"未找到社区","No communities yet":"暂无社区"}},y3={translation:{"Welcome! 🥳":"來都來了",About:"關於","New Note":"發布新筆記",Post:"發布筆記",Home:"主頁","Relay settings":"伺服器設定",Settings:"設定",SidebarRelays:"伺服器",Refresh:"刷新列表",Profile:"個人資料",Logout:"登出",Following:"關注",followings:"關注",reposted:"轉發","just now":"剛剛","minute ago_one":"{{count}} 分鐘前","minute ago_other":"{{count}} 分鐘前","n m":"{{n}}分","hour ago_one":"{{count}} 小時前","hour ago_other":"{{count}} 小時前","n h":"{{n}}時","day ago_one":"{{count}} 天前","day ago_other":"{{count}} 天前","n d":"{{n}}天",date:"{{timestamp, date}}",Follow:"關注",Unfollow:"取消關注","Follow failed":"關注失敗","Unfollow failed":"取消關注失敗","show new notes":"顯示新筆記","loading...":"載入中...","Loading...":"載入中...","no more notes":"到底了","reply to":"回覆",reply:"回覆",Reply:"回覆","load more older replies":"載入更多早期回覆","Write something...":"寫點什麼...",Cancel:"取消",Mentions:"提及","Failed to post":"發布失敗","Post successful":"發布成功","Your post has been published":"您的筆記已發布",Repost:"轉發",Quote:"引用","Copy event ID":"複製事件 ID","Copy user ID":"複製使用者 ID","View raw event":"檢視原始事件",Like:"按讚","switch to light theme":"切換到淺色主題","switch to dark theme":"切換到深色主題","switch to system theme":"切換到系統主題",Note:"筆記",note:"筆記","username's following":"{{username}} 的關注","username's used relays":"{{username}} 使用的伺服器","username's muted":"{{username}} 封鎖的使用者",Login:"登入","Follows you":"關注了你","Relay Settings":"伺服器設定","Relay set name":"伺服器組名","Add a new relay set":"新增新的伺服器組",Add:"新增","n relays":"{{n}} 個伺服器",Rename:"重新命名","Copy share link":"複製分享連結",Delete:"刪除","Relay already exists":"伺服器已存在","invalid relay URL":"無效的伺服器位址","Add a new relay":"新增新的伺服器",back:"返回","Lost in the void":"迷失在虛空中","Carry me home":"帶我回家","no replies":"暫無回覆","Reply to":"回覆",Search:"搜尋","The relays you are connected to do not support search":"您連接的伺服器不支援搜尋","Show more...":"檢視更多...","All users":"所有使用者","Display replies":"顯示回覆",Notes:"筆記",Replies:"回覆",Notifications:"通知","no more notifications":"到底了","Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.":"使用私鑰登入不安全。建議使用瀏覽器擴充功能登入，如 alby、nostr-keyx 或 nos2x。如果必須使用私鑰，請至少設定一個密碼進行加密。","Login with Browser Extension":"瀏覽器擴充功能登入","Login with Bunker":"Bunker 登入","Login with Private Key":"私鑰登入","reload notes":"重新載入筆記","Logged in Accounts":"已登入帳戶","Add an Account":"新增帳戶","More options":"更多選項","Add client tag":"新增客戶端標籤","Show others this was sent via RogueJumble":"告訴別人這是透過 RogueJumble 發送的","Are you sure you want to logout?":"確定要登出嗎？","relay sets":"伺服器組",edit:"編輯",Languages:"語言",Theme:"主題",System:"系統",Light:"淺色",Dark:"深色",Temporary:"臨時","Choose a relay set":"選擇一個伺服器組","Switch account":"切換帳戶",Pictures:"圖片","Picture note":"圖片筆記","A special note for picture-first clients like Olas":"一種可以在圖片優先客戶端（如 Olas）中顯示的特殊筆記","Picture note requires images":"圖片筆記需要有圖片",Relays:"伺服器",Image:"圖片",Normal:"普通","R & W":"讀寫",Read:"唯讀",Write:"只寫","Pull relay sets":"拉取伺服器組","Select the relay sets you want to pull":"選擇要拉取的伺服器組","No relay sets found":"未找到伺服器組","Pull n relay sets":"拉取 {{n}} 個伺服器組",Pull:"拉取","Select all":"全選","Relay Sets":"伺服器組",Mailbox:"信箱","Read & Write Relays":"讀寫伺服器","read relays description":"讀取伺服器用於尋找與您有關的事件。其他使用者會將想要您看到的事件發布到您的讀取伺服器，例如回覆、按讚轉發……","write relays description":"寫入伺服器用於發布您的事件。其他使用者會從您的寫入伺服器尋找您發布的事件。","read & write relays notice":"讀取伺服器和寫入伺服器的數量都應盡量保持在 2 到 4 個之間。","Don't have an account yet?":"還沒有帳戶？","or simply generate a private key":"或者簡單產生一個私鑰","This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.":"這是私鑰，請勿與他人分享。請妥善保管，否則將無法找回。",Edit:"編輯",Save:"儲存","Display Name":"暱稱",Bio:"簡介","Nostr Address (NIP-05)":"Nostr 位址 (NIP-05)","Invalid NIP-05 address":"無效的 NIP-05 位址","Copy private key":"複製私鑰","Enter the password to decrypt your ncryptsec":"輸入密碼以解密您的 ncryptsec",Back:"返回","password (optional): encrypt nsec":"密碼（可選）：加密 nsec","optional: encrypt nsec":"可選：加密 nsec",password:"密碼","Sign up":"註冊","Save to":"儲存到","Enter a name for the new relay set":"輸入新伺服器組的名稱","Save to a new relay set":"儲存到新伺服器組",Mute:"封鎖",Muted:"已封鎖",Unmute:"取消封鎖","Unmute user":"取消封鎖使用者","Append n relays":"追加 {{n}} 個伺服器",Append:"追加","Select relays to append":"選擇要追加的伺服器","calculating...":"計算中...","Calculate optimal read relays":"計算最佳讀取伺服器","Login to set":"登入後設定","Please login to view following feed":"請登入以檢視關注動態","Send only to r":"只發送到 {{r}}","Send only to these relays":"只發送到這些伺服器",Explore:"探索","Search relays":"搜尋伺服器",relayInfoBadgeAuth:"需登入",relayInfoBadgeSearch:"支援搜尋",relayInfoBadgePayment:"需付費",Operator:"管理員",Contact:"聯絡方式",Software:"軟體",Version:"版本","Random Relays":"隨機伺服器",randomRelaysRefresh:"換一批","Explore more":"探索更多","Payment page":"付款頁面","Supported NIPs":"支援的 NIP","Open in a":"在 {{a}} 中開啟","Cannot handle event of kind k":"無法處理類型為 {{k}} 的事件","Encrypted direct messages not supported":"不支援加密私訊","Sorry! The note cannot be found 😔":"抱歉！找不到該筆記 😔","This user has been muted":"該使用者已被封鎖",Wallet:"錢包",Sats:"聰",sats:"聰","Zap to":"打閃給","Zap n sats":"打閃 {{n}} 聰",zapComment:"附言","Default zap amount":"預設打閃金額","Default zap comment":"預設打閃附言","Lightning Address (or LNURL)":"閃電位址（或 LNURL）","Quick zap":"快速打閃","If enabled, you can zap with a single click. Click and hold for custom amounts":"如果啟用，您單擊即可打閃。長按以設定自訂金額",All:"全部",Reactions:"互動",Zaps:"打閃","Enjoying RogueJumble?":"喜歡 RogueJumble 嗎？","Your donation helps me maintain RogueJumble and make it better! 😊":"您的捐贈幫助我維護 RogueJumble 並使其更好！😊","Earlier notifications":"更早的通知","Temporarily display this note":"臨時顯示此筆記",buttonFollowing:"已關注","Are you sure you want to unfollow this user?":"確定要取消關注此使用者嗎？","Recent Supporters":"最近的支持者","Seen on":"來自","Temporarily display this reply":"臨時顯示此回覆","Note not found":"未找到該筆記","no more replies":"沒有更多回覆了","Relay sets":"伺服器組","Favorite Relays":"收藏的伺服器","Following's Favorites":"關注人的收藏","no more relays":"沒有更多伺服器了","Favorited by":"收藏自","Post settings":"發布設定","Media upload service":"媒體上傳服務","Choose a relay":"選擇一個伺服器","no relays found":"未找到伺服器",video:"影片","Show n new notes":"顯示 {{n}} 條新筆記",YouTabName:"與你",Bookmark:"收藏","Remove bookmark":"取消收藏","no bookmarks found":"暫無收藏","no more bookmarks":"到底了",Bookmarks:"收藏","Show more":"顯示更多",General:"常規",Autoplay:"自動播放","Enable video autoplay on this device":"在此裝置上啟用影片自動播放","Paste or drop media files to upload":"支援貼上或拖放媒體檔案進行上傳",Preview:"預覽","You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?":"您即將發布一條由 [{{eventAuthorName}}] 簽名的事件。您目前以 [{{currentUsername}}] 登入。確定嗎？","Platinum Sponsors":"白金贊助商",From:"來自","Comment on":"評論於","View on njump.me":"在 njump.me 上檢視","Hide content from untrusted users":"隱藏不受信任使用者的內容","Only show content from your followed users and the users they follow":"僅顯示您關注的使用者及其關注的使用者的內容","Followed by":"關注者","Mute user privately":"悄悄封鎖","Mute user publicly":"公開封鎖",Quotes:"引用","Lightning Invoice":"閃電發票","Bookmark failed":"收藏失敗","Remove bookmark failed":"取消收藏失敗",Translation:"翻譯",Balance:"餘額",characters:"字元",jumbleTranslateApiKeyDescription:"您可以在任何支援 LibreTranslate 的地方使用此 API key。服務位址是 {{serviceUrl}}","Top up":"充值","Will receive: {n} characters":"將獲得：{{n}} 字元","Top up {n} sats":"充值 {{n}} 聰","Minimum top up is {n} sats":"最低充值金額為 {{n}} 聰",Service:"服務","Reset API key":"重設 API key","Are you sure you want to reset your API key? This action cannot be undone.":"您確定要重設您的 API key？此操作無法復原。",Warning:"警告","Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.":"您目前的 API key 將立即失效，任何使用它的應用程式將停止工作，直到您用新 key 更新它們。","Service address":"服務位址",Pay:"支付",interactions:"互動",notifications:"通知","Show untrusted {type}":"顯示不受信任的{{type}}","Hide untrusted {type}":"隱藏不受信任的{{type}}","Currently hiding {type} from untrusted users.":"目前隱藏來自不受信任使用者的{{type}}。","Currently showing all {type}.":"目前顯示所有{{type}}。","Click continue to show all {type}.":"點擊繼續顯示所有{{type}}。","Click continue to hide {type} from untrusted users.":"點擊繼續隱藏來自不受信任使用者的{{type}}。","Trusted users include people you follow and people they follow.":"受信任的使用者包括您關注的人和他們關注的人。",Continue:"繼續","Successfully updated mute list":"成功更新封鎖列表","No pubkeys found from {url}":"在 {{url}} 中未找到 pubkeys","Translating...":"翻譯中...",Translate:"翻譯","Show original":"顯示原文",Website:"網站","Hide untrusted notes":"隱藏不受信任的筆記","Open in another client":"在其他客戶端開啟",Community:"社群",Group:"群組","Live event":"直播",Article:"文章",Unfavorite:"取消收藏","Recommended relays":"推薦伺服器","Blossom server URLs":"Blossom 伺服器位址","You need to add at least one blossom server in order to upload media files.":"您需要新增至少一個 Blossom 伺服器才能上傳媒體檔案。","Recommended blossom servers":"推薦的 Blossom 伺服器","Enter Blossom server URL":"輸入 Blossom 伺服器 URL",Preferred:"首選","Multiple choice (select one or more)":"多選（選擇一個或多個）",Vote:"投票","{{number}} votes":"{{number}} 次投票","Total votes":"總票數","Poll has ended":"投票已結束","Poll ends at {{time}}":"投票結束時間：{{time}}","Load results":"載入結果","This is a poll note.":"這是一個投票帖子。","Unlike regular notes, polls are not widely supported and may not display on other clients.":"與普通帖子不同，投票功能暫時沒有得到廣泛的支援，可能無法在其他客戶端中顯示。","Option {{number}}":"選項 {{number}}","Add Option":"新增選項","Allow multiple choices":"允許多選","End Date (optional)":"結束日期（可選）","Clear end date":"清除結束日期","Relay URLs (optional, comma-separated)":"中繼伺服器 URL（可選，逗號分隔）","Remove poll":"移除投票","Refresh results":"刷新結果",Poll:"投票",Media:"媒體","Republish to ...":"重新發布到 ...","Successfully republish to your write relays":"成功重新發布到您的寫入伺服器","Failed to republish to your write relays: {{error}}":"重新發布到您的寫入伺服器失敗：{{error}}","Successfully republish to relay set: {{name}}":"成功重新發布到伺服器組：{{name}}","Failed to republish to relay set: {{name}}. Error: {{error}}":"重新發布到伺服器組：{{name}} 失敗。錯誤：{{error}}","Successfully republish to relay: {{url}}":"成功重新發布到伺服器：{{url}}","Failed to republish to relay: {{url}}. Error: {{error}}":"重新發布到伺服器：{{url}} 失敗。錯誤：{{error}}","Write relays":"寫入伺服器","No more reactions":"沒有更多互動了","No reactions yet":"暫無互動","No more zaps":"沒有更多打閃了","No zaps yet":"暫無打閃","No more reposts":"沒有更多轉發了","No reposts yet":"暫無轉發",Reposts:"轉發",FollowListNotFoundConfirmation:"未找到關注列表。你想建立一個新的嗎？如果你之前已經關注了使用者，請不要確認，因為此操作會導致你遺失之前的關注列表。",MuteListNotFoundConfirmation:"未找到封鎖列表。你想建立一個新的嗎？如果你之前已經封鎖了使用者，請不要確認，因為此操作會導致你遺失之前的封鎖列表。","Show NSFW content by default":"預設顯示 NSFW 內容","Custom emoji management":"自訂表情符號管理","After changing emojis, you may need to refresh the page":"更改表情符號後，您可能需要刷新頁面","Too many read relays":"讀取中繼過多","Too many write relays":"寫入中繼過多","You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.":"您有 {{count}} 個讀取中繼。大多數客戶端只使用 2-4 個中繼，設定更多是不必要的。","You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.":"您有 {{count}} 個寫入中繼。大多數客戶端只使用 2-4 個中繼，設定更多是不必要的。","Optimize Relay Settings":"最佳化中繼設定","Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.":"您目前的中繼配置可能不是最佳的。這可能導致其他人難以找到您發布的內容，也可能導致您無法獲取完整的通知列表。","Optimize Now":"立即最佳化","Maybe Later":"稍後處理","Don't remind me again":"不再提醒",Posts:"帖子",Articles:"文章",Highlights:"精選",Polls:"投票","Voice Posts":"語音帖子","Photo Posts":"圖片帖子","Video Posts":"影片帖子","Select All":"全選","Clear All":"清空","Set as default filter":"設為預設過濾器",Apply:"套用",Reset:"重設","Share something on this Relay":"在此伺服器上分享點什麼","Try deleting this note":"嘗試刪除此筆記","Deletion request sent to {{count}} relays":"刪除請求已發送到 {{count}} 個伺服器","Suitable Relays":"適合的伺服器","People, keywords, or relays":"使用者、關鍵詞或伺服器","Hide content mentioning muted users":"隱藏提及已封鎖使用者的內容","This note mentions a user you muted":"此筆記提及了您已封鎖的使用者",Filter:"過濾器","mentioned you in a note":"在筆記中提及了您","quoted your note":"引用了您的筆記","voted in your poll":"在您的投票中投票","reacted to your note":"對您的筆記做出了反應","reposted your note":"轉發了您的筆記","zapped your note":"打閃了您的筆記","zapped you":"給您打閃","Mark as read":"標記為已讀",Report:"檢舉","Successfully report":"檢舉成功","Failed to report":"檢舉失敗",nudity:"色情內容",malware:"惡意軟體",profanity:"褻瀆言論",illegal:"違法內容",spam:"垃圾訊息",other:"其他","Notification list style":"通知列表樣式","See extra info for each notification":"檢視每條通知的詳細資訊","See more notifications at a glance":"一目了然地檢視更多通知",Detailed:"詳細",Compact:"緊湊","Submit Relay":"提交伺服器",Homepage:"主頁","Proof of Work (difficulty {{minPow}})":"工作量證明（難度 {{minPow}}）","Proof of Work":"工作量證明","Posts & comments difficulty":"貼文和留言難度","Reactions difficulty":"互動難度","Image Mode":"圖片模式","Media Feed":"媒體動態","Text Only":"文字動態","Text Post":"文字貼文","Picture Post":"圖片貼文","Video Post":"影片貼文","Short Video Post":"短影片",Text:"文字",Picture:"圖片",Video:"影片","Short Video":"短影片","Post Type":"貼文類型","via {{client}}":"來自 {{client}}","Auto-load media":"自動載入媒體檔案",Always:"始終","Wi-Fi only":"僅WiFi",Never:"從不","Click to load image":"點擊載入圖片","Click to load media":"點擊載入音視訊","Click to load YouTube video":"點擊載入 YouTube 影片","{{count}} reviews":"{{count}} 條評價","Write a review":"寫評價","No reviews yet. Be the first to write one!":"還沒有評價，成為第一個評價的人吧！","View more reviews":"檢視更多評價","Failed to review":"評價失敗","Write a review and pick a star rating":"寫下評價並選擇星級評分",Submit:"提交","Reviews for {{relay}}":"關於 {{relay}} 的評價","No relays selected":"未選擇伺服器","Post to":"發布到","Write relays and {{count}} other relays":"寫入伺服器和其他 {{count}} 個伺服器","{{count}} relays":"{{count}} 個伺服器","Republishing...":"正在重新發布...","Trending Notes":"熱門筆記","Connected to":"已連接到","Disconnect Wallet":"中斷錢包連接","Are you absolutely sure?":"您確定嗎？","You will not be able to send zaps to others.":"您將無法向他人發送打閃。",Disconnect:"中斷連接","Start with a Rizful Vault":"從 Rizful 錢包開始","or other wallets":"或其他錢包","Rizful Vault":"Rizful 錢包","Rizful Vault connected!":"Rizful 錢包已連接！","You can now use your Rizful Vault to zap your favorite notes and creators.":"您現在可以使用您的 Rizful 錢包為您喜歡的筆記和創作者打閃。","Your Lightning Address":"您的閃電位址","New to Rizful?":"第一次使用 Rizful？","Sign up for Rizful":"註冊 Rizful","If you already have a Rizful account, you can skip this step.":"如果您已經有一個 Rizful 帳戶，可以跳過此步驟。","Get your one-time code":"獲取一次性代碼","Get code":"獲取代碼","Connect to your Rizful Vault":"連接到您的 Rizful 錢包","Paste your one-time code here":"將您的一次性代碼貼上到此處",Connect:"連接","Set up your wallet to send and receive sats!":"設定你的錢包以發送和接收 sats！","Set up":"去設定",Pinned:"已置頂",Unpin:"取消置頂",Unpinning:"取消置頂中","Pinning...":"置頂中...","Pinned!":"已置頂！","Failed to pin: {{error}}":"置頂失敗：{{error}}","Unpinning...":"取消置頂中...","Unpinned!":"已取消置頂！","Failed to unpin: {{error}}":"取消置頂失敗：{{error}}","Unpin from profile":"從個人資料取消置頂","Pin to profile":"置頂到個人資料",Appearance:"外觀","Pure Black":"純黑",Default:"預設",Red:"紅色",Orange:"橙色",Amber:"琥珀色",Yellow:"黃色",Lime:"青檸色",Green:"綠色",Emerald:"翡翠色",Teal:"藍綠色",Cyan:"青色",Sky:"天空色",Blue:"藍色",Indigo:"靛藍色",Violet:"紫羅蘭色",Purple:"紫色",Fuchsia:"紫紅色",Pink:"粉色",Rose:"玫瑰色","Primary color":"主色調",Layout:"版面配置","Two-column":"雙欄","Single-column":"單欄",Reviews:"評價",Extension:"擴充功能",Remote:"遠端","Encrypted Key":"加密私鑰","Private Key":"私鑰","Welcome to RogueJumble":"歡迎來到 RogueJumble","RogueJumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"RogueJumble 是一個專注於瀏覽伺服器的客戶端。從探索有趣的伺服器開始，或者登入檢視你的關注動態。","Explore Relays":"探索伺服器","Choose a feed":"選擇一個動態","and {{x}} others":"和其他 {{x}} 人",selfZapWarning:"RogueJumble 對您給自己打賞所發生的事情概不負責。風險自負。😉⚡","Emoji Pack":"表情包","Emoji pack added":"表情包已新增","Add emoji pack failed":"新增表情包失敗","Emoji pack removed":"表情包已移除","Remove emoji pack failed":"移除表情包失敗",Added:"已新增","Emoji Packs":"表情包","My Packs":"我的表情包","Adding...":"新增中...","Removing...":"移除中...",Reload:"重新載入","Request to Join Relay":"申請加入中繼器","Leave Relay":"離開中繼器",Leave:"離開","Are you sure you want to leave this relay?":"您確定要離開此中繼器嗎？","Join request sent successfully":"加入請求已成功發送","Failed to send join request":"發送加入請求失敗","Leave request sent successfully":"離開請求已成功發送","Failed to send leave request":"發送離開請求失敗","Enter an invite code if you have one. Otherwise, leave it blank to send a request.":"如果您有邀請碼，請輸入。否則，留空以發送請求。","Invite Code (Optional)":"邀請碼（可選）","Enter invite code":"輸入邀請碼","Sending...":"發送中...","Send Request":"發送請求","You can get an invite code from a relay member.":"您可以從中繼器成員獲取邀請碼。","Enter the invite code you received from a relay member.":"輸入您從中繼器成員處獲得的邀請碼。","Get Invite Code":"獲取邀請碼","Share this invite code with others to invite them to join this relay.":"將此邀請碼分享給他人以邀請他們加入此中繼器。","Invite Code":"邀請碼",Copy:"複製","This invite code can be used by others to join the relay.":"此邀請碼可供他人用於加入中繼器。","No invite code available from this relay.":"此中繼器沒有可用的邀請碼。",Close:"關閉","Failed to get invite code from relay":"從中繼器獲取邀請碼失敗","Failed to get invite code":"獲取邀請碼失敗","Invite code copied to clipboard":"邀請碼已複製到剪貼簿","Favicon URL":"網站圖示 URL","Filter out onion relays":"過濾洋蔥中繼","Click to load X post":"點擊載入 X 帖子","View Nostr comments":"檢視 Nostr 評論","Search for notes":"搜尋筆記","Search for hashtag":"搜尋話題標籤","Go to note":"跳轉到筆記","Go to relay":"跳轉到中繼器","View discussions about this":"檢視關於此內容的討論","Open link":"開啟連結","View Nostr discussions":"檢視 Nostr 討論","Optimal relays":"最佳中繼器","Successfully republish to optimal relays (your write relays and mentioned users' read relays)":"成功重新發布到最佳中繼器（你的寫入中繼器和被提及使用者的讀取中繼器）","Failed to republish to optimal relays: {{error}}":"重新發布到最佳中繼器失敗：{{error}}","External Content":"外部內容",Highlight:"精選","Optimal relays and {{count}} other relays":"最佳中繼器和其他 {{count}} 個中繼器","Low trust ranking ({{percentile}}%)":"信任度較低 ({{percentile}}%)","Suspicious account (Trust score: {{percentile}}%)":"可疑帳號（信任分數：{{percentile}}%）","n users":"{{count}} 位使用者","View Details":"檢視詳情","Follow Pack Not Found":"未找到關注包","Follow pack not found":"未找到關注包",Users:"使用者",Feed:"動態","Follow Pack":"關注包","24h Pulse":"24h 動態","Load earlier":"載入更早","Last 24 hours":"最近 24 小時","Last {{count}} days":"最近 {{count}} 天",notes:"筆記","Quick reaction":"快速按讚","If enabled, you can react with a single click. Click and hold for more options":"啟用後，您可以透過單擊進行按讚。長按以獲取更多選項","Quick reaction emoji":"快速按讚表情","Select emoji":"選擇表情","NSFW content display":"NSFW 內容顯示","Hide completely":"完全隱藏","Show but hide content":"顯示但隱藏內容","Show directly":"直接顯示","Click to view":"點擊檢視","Special Follow":"特別關注","Unfollow Special":"取消特別關注","Personal Feeds":"個人訂閱","Relay Feeds":"中繼訂閱","Create Highlight":"建立精選","Write your thoughts about this highlight...":"寫下你對這篇精選的想法...","Publish Highlight":"發佈精選","Show replies":"顯示回覆","Hide replies":"隱藏回覆","Welcome to RogueJumble!":"歡迎來到 RogueJumble！","Your feed is empty because you are not following anyone yet. Start by exploring interesting content and following users you like!":"你的動態是空的，因為你還沒有關注任何人。開始探索有趣的內容並關注你喜歡的用戶吧！","Search Users":"搜尋用戶","Create New Account":"建立新帳戶",Important:"重要","Generate Your Account":"生成你的帳戶","Your private key IS your account. Keep it safe!":"你的私鑰就是你的帳戶。請妥善保管！","In Nostr, your private key IS your account. If you lose your private key, you lose your account forever.":"在 Nostr 中，你的私鑰就是你的帳戶。如果你遺失了私鑰，你將永遠失去你的帳戶。","Your Private Key":"你的私鑰","Generate new key":"生成新金鑰","Download Backup File":"下載備份檔案","Copied to Clipboard":"已複製到剪貼簿","Copy to Clipboard":"複製到剪貼簿","I already saved my private key securely.":"我已經安全地儲存了我的私鑰。","Almost Done!":"即將完成！","Set a password to encrypt your key, or skip to finish":"設定密碼來加密你的金鑰，或跳過以完成","Password Protection (Optional)":"密碼保護（可選）","Setting a password encrypts your private key in this browser. You can skip this step, but we recommend setting one for added security.":"設定密碼會在此瀏覽器中加密你的私鑰。你可以跳過此步驟，但我們建議設定密碼以增強安全性。","Password (Optional)":"密碼（可選）","Enter password or leave empty to skip":"輸入密碼或留空以跳過","Confirm Password":"確認密碼","Re-enter password":"重新輸入密碼","Passwords do not match":"密碼不符合","Finish Signup":"完成註冊","Create Your Nostr Account":"建立你的 Nostr 帳戶","Generate your unique private key. This is your digital identity.":"生成你的專屬私鑰。這是你的數位身份。","Critical: Save Your Private Key":"重要：儲存你的私鑰","Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.":"你的私鑰就是你的帳戶。沒有密碼找回功能。如果遺失，你將永遠失去你的帳戶。請將其儲存在安全的地方。","I have safely backed up my private key":"我已安全備份我的私鑰","Secure Your Account":"保護你的帳戶","Add an extra layer of protection with a password":"使用密碼新增額外的保護層","Password Protection (Recommended)":"密碼保護（推薦）","Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.":"新增密碼以在此瀏覽器中加密你的私鑰。這是可選的，但強烈建議設定以獲得更好的安全性。","Create a password (or skip)":"建立密碼（或跳過）","Enter your password again":"再次輸入你的密碼","Complete Signup":"完成註冊",Recommended:"推薦","Enter Password":"輸入密碼",Password:"密碼",Confirm:"確認","trust-filter.title":"信任分數過濾器","trust-filter.off":"關閉","trust-filter.low":"低","trust-filter.medium":"中","trust-filter.high":"高","trust-filter.wot":"信任網路","trust-filter.filter-threshold":"過濾閾值","trust-filter.quick-presets":"快速預設","trust-filter.show-all-content":"顯示所有內容","trust-filter.only-show-wot":"僅顯示你的信任網路（關注的人 + 他們關注的人）","trust-filter.hide-bottom-percent":"過濾掉信任度排名後 {{score}}% 的使用者","trust-filter.trust-score-description":"基於使用者的聲譽和社交網路計算信任度百分位","Auto-load profile pictures":"自動載入大頭照","Disable live feed":"停用即時推送","Enable live feed":"啟用即時推送","Default relays":"預設中繼","Reset to default":"重置為預設","Default relays description":"用於查詢其他使用者的中繼配置，並在使用者沒有配置中繼時作為回退策略。","Default relays warning":"警告：請不要隨意修改這些設定，可能會影響基礎體驗。","Invalid relay URL":"無效的中繼地址","Muted words":"屏蔽詞","Add muted word":"添加屏蔽詞","Zap Details":"打閃詳情","Default trust score filter threshold ({{n}}%)":"預設信任分數過濾閾值 ({{n}}%)","No notes found":"沒有找到筆記","Try again later or check your connection":"請稍後重試或檢查網路連接","Hide indirect":"隱藏間接通知","Copy note content":"複製筆記內容","Video loop":"影片循環","Automatically replay videos when they end":"影片播放結束後自動重新播放","Relays used for searching notes (NIP-50)":"用於搜尋筆記的伺服器 (NIP-50)","Protected event (NIP-70)":"受保護的事件 (NIP-70)",Protected:"受保護","Protected event hint":"受保護的事件（NIP-70）只能由作者發布。伺服器將拒絕來自第三方的這些事件，防止他人轉播你的內容。 注意：並非所有伺服器都支持受保護的事件。","Allow insecure connections":"允許不安全的連線","Allow insecure connections description":"允許載入 http:// 資源和連線 ws:// relay。可能會觸發瀏覽器混合內容警告。","reacted to":"回應了",Reaction:"回應","Show others this was sent via Jumble":"顯示此訊息是透過 RogueJumble 傳送的","Enjoying Jumble?":"喜歡 RogueJumble 嗎？","Your donation helps me maintain Jumble and make it better! 😊":"您的捐款幫助我維護 RogueJumble 並讓它更好！😊","highlighted your note":"引用了你的筆記","Welcome to Jumble":"歡迎來到 RogueJumble","Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.":"An opinionated Nostr client with a mobile first UI and some customization.","n users_one":"{{count}} 位使用者","n users_other":"{{count}} 位使用者","Welcome to Jumble!":"歡迎來到 RogueJumble！","Font size":"字型大小","Advanced mode":"進階模式","Post type selector":"貼文類型選擇器","Shows post kind dropdown when creating posts":"建立貼文時顯示貼文類型下拉選單","Sans-serif":"Sans-serif","Space Grotesk":"Space Grotesk","Search communities...":"搜尋社群...","No communities found":"找不到社群","No communities yet":"尚無社群"}},w3={ar:{resource:e3,name:"العربية"},de:{resource:t3,name:"Deutsch"},en:{resource:n3,name:"English"},es:{resource:o3,name:"Español"},fa:{resource:a3,name:"فارسی"},fr:{resource:r3,name:"Français"},hi:{resource:i3,name:"हिन्दी"},hu:{resource:s3,name:"Magyar"},it:{resource:l3,name:"Italiano"},ja:{resource:c3,name:"日本語"},ko:{resource:u3,name:"한국어"},pl:{resource:d3,name:"Polski"},"pt-BR":{resource:f3,name:"Português (Brasil)"},"pt-PT":{resource:h3,name:"Português (Portugal)"},ru:{resource:p3,name:"Русский"},th:{resource:m3,name:"ไทย"},zh:{resource:g3,name:"简体中文"},"zh-TW":{resource:y3,name:"繁體中文"}},v3={},_1={},F1=[];for(const[n,e]of Object.entries(w3)){const t=n;v3[t]=e.name,_1[t]=e.resource,F1.push(t)}Zt.use(I1).use(GR).init({fallbackLng:"en",resources:_1,interpolation:{escapeValue:!1},detection:{convertDetectedLanguage:n=>n.startsWith("zh")?["zh","zh-CN","zh-SG"].includes(n)?"zh":"zh-TW":F1.find(t=>n.startsWith(t))||"en"}});var a1;(a1=Zt.services.formatter)==null||a1.add("date",(n,e)=>{switch(e){case"zh":case"zh-TW":case"ja":return Be(n).format("YYYY年MM月DD日");case"pl":case"de":case"ru":return Be(n).format("DD.MM.YYYY");case"fa":case"hu":return Be(n).format("YYYY/MM/DD");case"it":case"es":case"fr":case"pt-BR":case"pt-PT":case"ar":case"hi":case"th":return Be(n).format("DD/MM/YYYY");case"ko":return Be(n).format("YYYY년 MM월 DD일");default:return Be(n).format("MMM D, YYYY")}});Array.prototype.findLast||(Array.prototype.findLast=function(n,e){if(this==null)throw new TypeError("Array.prototype.findLast called on null or undefined");if(typeof n!="function")throw new TypeError("predicate must be a function");const t=Object(this),o=t.length>>>0;let a;for(let r=o-1;r>=0;r--)if(a=t[r],n.call(e,a,r,t))return a});if(typeof AggregateError>"u"){class n extends Error{constructor(o,a){super(a);H(this,"errors");this.errors=o,this.name="AggregateError"}}globalThis.AggregateError=n}Promise.any||(Promise.any=function(n){return new Promise((e,t)=>{const o=[];let a=n.length;if(a===0)return t(new AggregateError([],"All promises were rejected"));n.forEach((r,i)=>{Promise.resolve(r).then(e).catch(s=>{o[i]=s,a-=1,a===0&&t(new AggregateError(o,"All promises were rejected"))})})})});var Kl={},Eg;function b3(){if(Eg)return Kl;Eg=1;var n=fE();return Kl.createRoot=n.createRoot,Kl.hydrateRoot=n.hydrateRoot,Kl}var k3=b3();function S3(n){if(typeof document>"u")return;let e=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css",e.appendChild(t),t.styleSheet?t.styleSheet.cssText=n:t.appendChild(document.createTextNode(n))}const x3=n=>{switch(n){case"success":return R3;case"info":return P3;case"warning":return C3;case"error":return N3;default:return null}},A3=Array(12).fill(0),E3=({visible:n,className:e})=>ee.createElement("div",{className:["sonner-loading-wrapper",e].filter(Boolean).join(" "),"data-visible":n},ee.createElement("div",{className:"sonner-spinner"},A3.map((t,o)=>ee.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${o}`})))),R3=ee.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},ee.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),C3=ee.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},ee.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),P3=ee.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},ee.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),N3=ee.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},ee.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),T3=ee.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},ee.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),ee.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),j3=()=>{const[n,e]=ee.useState(document.hidden);return ee.useEffect(()=>{const t=()=>{e(document.hidden)};return document.addEventListener("visibilitychange",t),()=>window.removeEventListener("visibilitychange",t)},[]),n};let _f=1;class z3{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{const t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{var t;const{message:o,...a}=e,r=typeof(e==null?void 0:e.id)=="number"||((t=e.id)==null?void 0:t.length)>0?e.id:_f++,i=this.toasts.find(l=>l.id===r),s=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(l=>l.id===r?(this.publish({...l,...e,id:r,title:o}),{...l,...e,id:r,dismissible:s,title:o}):l):this.addToast({title:o,...a,dismissible:s,id:r}),r},this.dismiss=e=>(e?(this.dismissedToasts.add(e),requestAnimationFrame(()=>this.subscribers.forEach(t=>t({id:e,dismiss:!0})))):this.toasts.forEach(t=>{this.subscribers.forEach(o=>o({id:t.id,dismiss:!0}))}),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:"error"}),this.success=(e,t)=>this.create({...t,type:"success",message:e}),this.info=(e,t)=>this.create({...t,type:"info",message:e}),this.warning=(e,t)=>this.create({...t,type:"warning",message:e}),this.loading=(e,t)=>this.create({...t,type:"loading",message:e}),this.promise=(e,t)=>{if(!t)return;let o;t.loading!==void 0&&(o=this.create({...t,promise:e,type:"loading",message:t.loading,description:typeof t.description!="function"?t.description:void 0}));const a=Promise.resolve(e instanceof Function?e():e);let r=o!==void 0,i;const s=a.then(async u=>{if(i=["resolve",u],ee.isValidElement(u))r=!1,this.create({id:o,type:"default",message:u});else if(L3(u)&&!u.ok){r=!1;const d=typeof t.error=="function"?await t.error(`HTTP error! status: ${u.status}`):t.error,p=typeof t.description=="function"?await t.description(`HTTP error! status: ${u.status}`):t.description,g=typeof d=="object"&&!ee.isValidElement(d)?d:{message:d};this.create({id:o,type:"error",description:p,...g})}else if(u instanceof Error){r=!1;const d=typeof t.error=="function"?await t.error(u):t.error,p=typeof t.description=="function"?await t.description(u):t.description,g=typeof d=="object"&&!ee.isValidElement(d)?d:{message:d};this.create({id:o,type:"error",description:p,...g})}else if(t.success!==void 0){r=!1;const d=typeof t.success=="function"?await t.success(u):t.success,p=typeof t.description=="function"?await t.description(u):t.description,g=typeof d=="object"&&!ee.isValidElement(d)?d:{message:d};this.create({id:o,type:"success",description:p,...g})}}).catch(async u=>{if(i=["reject",u],t.error!==void 0){r=!1;const f=typeof t.error=="function"?await t.error(u):t.error,d=typeof t.description=="function"?await t.description(u):t.description,m=typeof f=="object"&&!ee.isValidElement(f)?f:{message:f};this.create({id:o,type:"error",description:d,...m})}}).finally(()=>{r&&(this.dismiss(o),o=void 0),t.finally==null||t.finally.call(t)}),l=()=>new Promise((u,f)=>s.then(()=>i[0]==="reject"?f(i[1]):u(i[1])).catch(f));return typeof o!="string"&&typeof o!="number"?{unwrap:l}:Object.assign(o,{unwrap:l})},this.custom=(e,t)=>{const o=(t==null?void 0:t.id)||_f++;return this.create({jsx:e(o),id:o,...t}),o},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const kn=new z3,I3=(n,e)=>{const t=(e==null?void 0:e.id)||_f++;return kn.addToast({title:n,...e,id:t}),t},L3=n=>n&&typeof n=="object"&&"ok"in n&&typeof n.ok=="boolean"&&"status"in n&&typeof n.status=="number",M3=I3,D3=()=>kn.toasts,_3=()=>kn.getActiveToasts(),Ue=Object.assign(M3,{success:kn.success,info:kn.info,warning:kn.warning,error:kn.error,custom:kn.custom,message:kn.message,promise:kn.promise,dismiss:kn.dismiss,loading:kn.loading},{getHistory:D3,getToasts:_3});S3("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function Gl(n){return n.label!==void 0}const F3=3,O3="24px",U3="16px",Rg=4e3,B3=356,V3=14,W3=45,q3=200;function fo(...n){return n.filter(Boolean).join(" ")}function H3(n){const[e,t]=n.split("-"),o=[];return e&&o.push(e),t&&o.push(t),o}const $3=n=>{var e,t,o,a,r,i,s,l,u;const{invert:f,toast:d,unstyled:p,interacting:m,setHeights:g,visibleToasts:y,heights:w,index:v,toasts:k,expanded:E,removeToast:A,defaultRichColors:N,closeButton:T,style:C,cancelButtonStyle:P,actionButtonStyle:M,className:U="",descriptionClassName:O="",duration:W,position:V,gap:j,expandByDefault:L,classNames:I,icons:b,closeButtonAriaLabel:S="Close toast"}=n,[z,F]=ee.useState(null),[D,q]=ee.useState(null),[J,ae]=ee.useState(!1),[ge,ie]=ee.useState(!1),[de,he]=ee.useState(!1),[we,ke]=ee.useState(!1),[Ee,G]=ee.useState(!1),[te,Y]=ee.useState(0),[se,fe]=ee.useState(0),Se=ee.useRef(d.duration||W||Rg),Oe=ee.useRef(null),Le=ee.useRef(null),ye=v===0,Pe=v+1<=y,Te=d.type,qe=d.dismissible!==!1,ct=d.className||"",Ge=d.descriptionClassName||"",et=ee.useMemo(()=>w.findIndex(X=>X.toastId===d.id)||0,[w,d.id]),_=ee.useMemo(()=>{var X;return(X=d.closeButton)!=null?X:T},[d.closeButton,T]),x=ee.useMemo(()=>d.duration||W||Rg,[d.duration,W]),R=ee.useRef(0),B=ee.useRef(0),K=ee.useRef(0),Q=ee.useRef(null),[ue,$e]=V.split("-"),dt=ee.useMemo(()=>w.reduce((X,oe,Ce)=>Ce>=et?X:X+oe.height,0),[w,et]),Xe=j3(),St=d.invert||f,ft=Te==="loading";B.current=ee.useMemo(()=>et*j+dt,[et,dt]),ee.useEffect(()=>{Se.current=x},[x]),ee.useEffect(()=>{ae(!0)},[]),ee.useEffect(()=>{const X=Le.current;if(X){const oe=X.getBoundingClientRect().height;return fe(oe),g(Ce=>[{toastId:d.id,height:oe,position:d.position},...Ce]),()=>g(Ce=>Ce.filter(Me=>Me.toastId!==d.id))}},[g,d.id]),ee.useLayoutEffect(()=>{if(!J)return;const X=Le.current,oe=X.style.height;X.style.height="auto";const Ce=X.getBoundingClientRect().height;X.style.height=oe,fe(Ce),g(Me=>Me.find(ut=>ut.toastId===d.id)?Me.map(ut=>ut.toastId===d.id?{...ut,height:Ce}:ut):[{toastId:d.id,height:Ce,position:d.position},...Me])},[J,d.title,d.description,g,d.id,d.jsx,d.action,d.cancel]);const _e=ee.useCallback(()=>{ie(!0),Y(B.current),g(X=>X.filter(oe=>oe.toastId!==d.id)),setTimeout(()=>{A(d)},q3)},[d,A,g,B]);ee.useEffect(()=>{if(d.promise&&Te==="loading"||d.duration===1/0||d.type==="loading")return;let X;return E||m||Xe?(()=>{if(K.current<R.current){const Me=new Date().getTime()-R.current;Se.current=Se.current-Me}K.current=new Date().getTime()})():(()=>{Se.current!==1/0&&(R.current=new Date().getTime(),X=setTimeout(()=>{d.onAutoClose==null||d.onAutoClose.call(d,d),_e()},Se.current))})(),()=>clearTimeout(X)},[E,m,d,Te,Xe,_e]),ee.useEffect(()=>{d.delete&&(_e(),d.onDismiss==null||d.onDismiss.call(d,d))},[_e,d.delete]);function pt(){var X;if(b!=null&&b.loading){var oe;return ee.createElement("div",{className:fo(I==null?void 0:I.loader,d==null||(oe=d.classNames)==null?void 0:oe.loader,"sonner-loader"),"data-visible":Te==="loading"},b.loading)}return ee.createElement(E3,{className:fo(I==null?void 0:I.loader,d==null||(X=d.classNames)==null?void 0:X.loader),visible:Te==="loading"})}const bt=d.icon||(b==null?void 0:b[Te])||x3(Te);var st,xt;return ee.createElement("li",{tabIndex:0,ref:Le,className:fo(U,ct,I==null?void 0:I.toast,d==null||(e=d.classNames)==null?void 0:e.toast,I==null?void 0:I.default,I==null?void 0:I[Te],d==null||(t=d.classNames)==null?void 0:t[Te]),"data-sonner-toast":"","data-rich-colors":(st=d.richColors)!=null?st:N,"data-styled":!(d.jsx||d.unstyled||p),"data-mounted":J,"data-promise":!!d.promise,"data-swiped":Ee,"data-removed":ge,"data-visible":Pe,"data-y-position":ue,"data-x-position":$e,"data-index":v,"data-front":ye,"data-swiping":de,"data-dismissible":qe,"data-type":Te,"data-invert":St,"data-swipe-out":we,"data-swipe-direction":D,"data-expanded":!!(E||L&&J),style:{"--index":v,"--toasts-before":v,"--z-index":k.length-v,"--offset":`${ge?te:B.current}px`,"--initial-height":L?"auto":`${se}px`,...C,...d.style},onDragEnd:()=>{he(!1),F(null),Q.current=null},onPointerDown:X=>{ft||!qe||(Oe.current=new Date,Y(B.current),X.target.setPointerCapture(X.pointerId),X.target.tagName!=="BUTTON"&&(he(!0),Q.current={x:X.clientX,y:X.clientY}))},onPointerUp:()=>{var X,oe,Ce;if(we||!qe)return;Q.current=null;const Me=Number(((X=Le.current)==null?void 0:X.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),lt=Number(((oe=Le.current)==null?void 0:oe.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),ut=new Date().getTime()-((Ce=Oe.current)==null?void 0:Ce.getTime()),it=z==="x"?Me:lt,dn=Math.abs(it)/ut;if(Math.abs(it)>=W3||dn>.11){Y(B.current),d.onDismiss==null||d.onDismiss.call(d,d),q(z==="x"?Me>0?"right":"left":lt>0?"down":"up"),_e(),ke(!0);return}else{var Yt,bn;(Yt=Le.current)==null||Yt.style.setProperty("--swipe-amount-x","0px"),(bn=Le.current)==null||bn.style.setProperty("--swipe-amount-y","0px")}G(!1),he(!1),F(null)},onPointerMove:X=>{var oe,Ce,Me;if(!Q.current||!qe||((oe=window.getSelection())==null?void 0:oe.toString().length)>0)return;const ut=X.clientY-Q.current.y,it=X.clientX-Q.current.x;var dn;const Yt=(dn=n.swipeDirections)!=null?dn:H3(V);!z&&(Math.abs(it)>1||Math.abs(ut)>1)&&F(Math.abs(it)>Math.abs(ut)?"x":"y");let bn={x:0,y:0};const rs=co=>1/(1.5+Math.abs(co)/20);if(z==="y"){if(Yt.includes("top")||Yt.includes("bottom"))if(Yt.includes("top")&&ut<0||Yt.includes("bottom")&&ut>0)bn.y=ut;else{const co=ut*rs(ut);bn.y=Math.abs(co)<Math.abs(ut)?co:ut}}else if(z==="x"&&(Yt.includes("left")||Yt.includes("right")))if(Yt.includes("left")&&it<0||Yt.includes("right")&&it>0)bn.x=it;else{const co=it*rs(it);bn.x=Math.abs(co)<Math.abs(it)?co:it}(Math.abs(bn.x)>0||Math.abs(bn.y)>0)&&G(!0),(Ce=Le.current)==null||Ce.style.setProperty("--swipe-amount-x",`${bn.x}px`),(Me=Le.current)==null||Me.style.setProperty("--swipe-amount-y",`${bn.y}px`)}},_&&!d.jsx&&Te!=="loading"?ee.createElement("button",{"aria-label":S,"data-disabled":ft,"data-close-button":!0,onClick:ft||!qe?()=>{}:()=>{_e(),d.onDismiss==null||d.onDismiss.call(d,d)},className:fo(I==null?void 0:I.closeButton,d==null||(o=d.classNames)==null?void 0:o.closeButton)},(xt=b==null?void 0:b.close)!=null?xt:T3):null,(Te||d.icon||d.promise)&&d.icon!==null&&((b==null?void 0:b[Te])!==null||d.icon)?ee.createElement("div",{"data-icon":"",className:fo(I==null?void 0:I.icon,d==null||(a=d.classNames)==null?void 0:a.icon)},d.promise||d.type==="loading"&&!d.icon?d.icon||pt():null,d.type!=="loading"?bt:null):null,ee.createElement("div",{"data-content":"",className:fo(I==null?void 0:I.content,d==null||(r=d.classNames)==null?void 0:r.content)},ee.createElement("div",{"data-title":"",className:fo(I==null?void 0:I.title,d==null||(i=d.classNames)==null?void 0:i.title)},d.jsx?d.jsx:typeof d.title=="function"?d.title():d.title),d.description?ee.createElement("div",{"data-description":"",className:fo(O,Ge,I==null?void 0:I.description,d==null||(s=d.classNames)==null?void 0:s.description)},typeof d.description=="function"?d.description():d.description):null),ee.isValidElement(d.cancel)?d.cancel:d.cancel&&Gl(d.cancel)?ee.createElement("button",{"data-button":!0,"data-cancel":!0,style:d.cancelButtonStyle||P,onClick:X=>{Gl(d.cancel)&&qe&&(d.cancel.onClick==null||d.cancel.onClick.call(d.cancel,X),_e())},className:fo(I==null?void 0:I.cancelButton,d==null||(l=d.classNames)==null?void 0:l.cancelButton)},d.cancel.label):null,ee.isValidElement(d.action)?d.action:d.action&&Gl(d.action)?ee.createElement("button",{"data-button":!0,"data-action":!0,style:d.actionButtonStyle||M,onClick:X=>{Gl(d.action)&&(d.action.onClick==null||d.action.onClick.call(d.action,X),!X.defaultPrevented&&_e())},className:fo(I==null?void 0:I.actionButton,d==null||(u=d.classNames)==null?void 0:u.actionButton)},d.action.label):null)};function Cg(){if(typeof window>"u"||typeof document>"u")return"ltr";const n=document.documentElement.getAttribute("dir");return n==="auto"||!n?window.getComputedStyle(document.documentElement).direction:n}function Y3(n,e){const t={};return[n,e].forEach((o,a)=>{const r=a===1,i=r?"--mobile-offset":"--offset",s=r?U3:O3;function l(u){["top","right","bottom","left"].forEach(f=>{t[`${i}-${f}`]=typeof u=="number"?`${u}px`:u})}typeof o=="number"||typeof o=="string"?l(o):typeof o=="object"?["top","right","bottom","left"].forEach(u=>{o[u]===void 0?t[`${i}-${u}`]=s:t[`${i}-${u}`]=typeof o[u]=="number"?`${o[u]}px`:o[u]}):l(s)}),t}const K3=ee.forwardRef(function(e,t){const{invert:o,position:a="bottom-right",hotkey:r=["altKey","KeyT"],expand:i,closeButton:s,className:l,offset:u,mobileOffset:f,theme:d="light",richColors:p,duration:m,style:g,visibleToasts:y=F3,toastOptions:w,dir:v=Cg(),gap:k=V3,icons:E,containerAriaLabel:A="Notifications"}=e,[N,T]=ee.useState([]),C=ee.useMemo(()=>Array.from(new Set([a].concat(N.filter(D=>D.position).map(D=>D.position)))),[N,a]),[P,M]=ee.useState([]),[U,O]=ee.useState(!1),[W,V]=ee.useState(!1),[j,L]=ee.useState(d!=="system"?d:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),I=ee.useRef(null),b=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),S=ee.useRef(null),z=ee.useRef(!1),F=ee.useCallback(D=>{T(q=>{var J;return(J=q.find(ae=>ae.id===D.id))!=null&&J.delete||kn.dismiss(D.id),q.filter(({id:ae})=>ae!==D.id)})},[]);return ee.useEffect(()=>kn.subscribe(D=>{if(D.dismiss){requestAnimationFrame(()=>{T(q=>q.map(J=>J.id===D.id?{...J,delete:!0}:J))});return}setTimeout(()=>{d1.flushSync(()=>{T(q=>{const J=q.findIndex(ae=>ae.id===D.id);return J!==-1?[...q.slice(0,J),{...q[J],...D},...q.slice(J+1)]:[D,...q]})})})}),[N]),ee.useEffect(()=>{if(d!=="system"){L(d);return}if(d==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?L("dark"):L("light")),typeof window>"u")return;const D=window.matchMedia("(prefers-color-scheme: dark)");try{D.addEventListener("change",({matches:q})=>{L(q?"dark":"light")})}catch{D.addListener(({matches:J})=>{try{L(J?"dark":"light")}catch(ae){console.error(ae)}})}},[d]),ee.useEffect(()=>{N.length<=1&&O(!1)},[N]),ee.useEffect(()=>{const D=q=>{var J;if(r.every(ie=>q[ie]||q.code===ie)){var ge;O(!0),(ge=I.current)==null||ge.focus()}q.code==="Escape"&&(document.activeElement===I.current||(J=I.current)!=null&&J.contains(document.activeElement))&&O(!1)};return document.addEventListener("keydown",D),()=>document.removeEventListener("keydown",D)},[r]),ee.useEffect(()=>{if(I.current)return()=>{S.current&&(S.current.focus({preventScroll:!0}),S.current=null,z.current=!1)}},[I.current]),ee.createElement("section",{ref:t,"aria-label":`${A} ${b}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},C.map((D,q)=>{var J;const[ae,ge]=D.split("-");return N.length?ee.createElement("ol",{key:D,dir:v==="auto"?Cg():v,tabIndex:-1,ref:I,className:l,"data-sonner-toaster":!0,"data-sonner-theme":j,"data-y-position":ae,"data-x-position":ge,style:{"--front-toast-height":`${((J=P[0])==null?void 0:J.height)||0}px`,"--width":`${B3}px`,"--gap":`${k}px`,...g,...Y3(u,f)},onBlur:ie=>{z.current&&!ie.currentTarget.contains(ie.relatedTarget)&&(z.current=!1,S.current&&(S.current.focus({preventScroll:!0}),S.current=null))},onFocus:ie=>{ie.target instanceof HTMLElement&&ie.target.dataset.dismissible==="false"||z.current||(z.current=!0,S.current=ie.relatedTarget)},onMouseEnter:()=>O(!0),onMouseMove:()=>O(!0),onMouseLeave:()=>{W||O(!1)},onDragEnd:()=>O(!1),onPointerDown:ie=>{ie.target instanceof HTMLElement&&ie.target.dataset.dismissible==="false"||V(!0)},onPointerUp:()=>V(!1)},N.filter(ie=>!ie.position&&q===0||ie.position===D).map((ie,de)=>{var he,we;return ee.createElement($3,{key:ie.id,icons:E,index:de,toast:ie,defaultRichColors:p,duration:(he=w==null?void 0:w.duration)!=null?he:m,className:w==null?void 0:w.className,descriptionClassName:w==null?void 0:w.descriptionClassName,invert:o,visibleToasts:y,closeButton:(we=w==null?void 0:w.closeButton)!=null?we:s,interacting:W,position:D,style:w==null?void 0:w.style,unstyled:w==null?void 0:w.unstyled,classNames:w==null?void 0:w.classNames,cancelButtonStyle:w==null?void 0:w.cancelButtonStyle,actionButtonStyle:w==null?void 0:w.actionButtonStyle,closeButtonAriaLabel:w==null?void 0:w.closeButtonAriaLabel,removeToast:F,toasts:N.filter(ke=>ke.position==ie.position),heights:P.filter(ke=>ke.position==ie.position),setHeights:M,expandByDefault:i,gap:k,expanded:U,swipeDirections:e.swipeDirections})})):null}))}),G3=({...n})=>c.jsx(K3,{theme:"dark",className:"toaster group",richColors:!0,mobileOffset:64,toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...n});/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const J3=n=>n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),O1=(...n)=>n.filter((e,t,o)=>!!e&&e.trim()!==""&&o.indexOf(e)===t).join(" ").trim();/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */var Z3={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Q3=h.forwardRef(({color:n="currentColor",size:e=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:a="",children:r,iconNode:i,...s},l)=>h.createElement("svg",{ref:l,...Z3,width:e,height:e,stroke:n,strokeWidth:o?Number(t)*24/Number(e):t,className:O1("lucide",a),...s},[...i.map(([u,f])=>h.createElement(u,f)),...Array.isArray(r)?r:[r]]));/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const ze=(n,e)=>{const t=h.forwardRef(({className:o,...a},r)=>h.createElement(Q3,{ref:r,iconNode:e,className:O1(`lucide-${J3(n)}`,o),...a}));return t.displayName=`${n}`,t};/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const X3=ze("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const e4=ze("BadgeAlert",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const t4=ze("BadgeCheck",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const n4=ze("Ban",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Pg=ze("BellOff",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742",key:"178tsu"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05",key:"1hqiys"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const U1=ze("Bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const o4=ze("Bookmark",[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z",key:"1fy3hk"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const _a=ze("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const _c=ze("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const a4=ze("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const B1=ze("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const V1=ze("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const r4=ze("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const W1=ze("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const i4=ze("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const ui=ze("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const ml=ze("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const q1=ze("Ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const s4=ze("Eraser",[["path",{d:"m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21",key:"182aya"}],["path",{d:"M22 21H7",key:"t4ddhn"}],["path",{d:"m5 11 9 9",key:"1mo9qw"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Fc=ze("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const H1=ze("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const l4=ze("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const c4=ze("HandCoins",[["path",{d:"M11 15h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 17",key:"geh8rc"}],["path",{d:"m7 21 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9",key:"1fto5m"}],["path",{d:"m2 16 6 6",key:"1pfhp9"}],["circle",{cx:"16",cy:"9",r:"2.9",key:"1n0dlu"}],["circle",{cx:"6",cy:"5",r:"3",key:"151irh"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const yc=ze("Heart",[["path",{d:"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z",key:"c3ymky"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const u4=ze("Highlighter",[["path",{d:"m9 11-6 6v3h9l3-3",key:"1a3l36"}],["path",{d:"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4",key:"14a9rk"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const d4=ze("House",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const f4=ze("ImageOff",[["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}],["path",{d:"M10.41 10.41a2 2 0 1 1-2.83-2.83",key:"1bzlo9"}],["line",{x1:"13.5",x2:"6",y1:"13.5",y2:"21",key:"1q0aeu"}],["line",{x1:"18",x2:"21",y1:"12",y2:"15",key:"5mozeu"}],["path",{d:"M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59",key:"mmje98"}],["path",{d:"M21 15V5a2 2 0 0 0-2-2H9",key:"43el77"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Ff=ze("ImageUp",[["path",{d:"M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21",key:"9csbqa"}],["path",{d:"m14 19.5 3-3 3 3",key:"9vmjn0"}],["path",{d:"M17 22v-5.5",key:"1aa6fl"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const h4=ze("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const p4=ze("Link",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const m4=ze("ListChecks",[["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const g4=ze("ListTodo",[["rect",{x:"3",y:"5",width:"6",height:"6",rx:"1",key:"1defrl"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Ei=ze("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const wn=ze("Loader",[["path",{d:"M12 2v4",key:"3427ic"}],["path",{d:"m16.2 7.8 2.9-2.9",key:"r700ao"}],["path",{d:"M18 12h4",key:"wj9ykh"}],["path",{d:"m16.2 16.2 2.9 2.9",key:"1bxg5t"}],["path",{d:"M12 18v4",key:"jadmvz"}],["path",{d:"m4.9 19.1 2.9-2.9",key:"bwix9q"}],["path",{d:"M2 12h4",key:"j09sii"}],["path",{d:"m4.9 4.9 2.9 2.9",key:"giyufr"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const zs=ze("MessageCircle",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Ng=ze("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const y4=ze("Minimize2",[["polyline",{points:"4 14 10 14 10 20",key:"11kfnr"}],["polyline",{points:"20 10 14 10 14 4",key:"rlmsce"}],["line",{x1:"14",x2:"21",y1:"10",y2:"3",key:"o5lafz"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const w4=ze("Paperclip",[["path",{d:"M13.234 20.252 21 12.3",key:"1cbrk9"}],["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 0 2.828 2 2 0 0 0 2.828 0l8.414-8.586a4 4 0 0 0 0-5.656 4 4 0 0 0-5.656 0l-8.415 8.585a6 6 0 1 0 8.486 8.486",key:"1pkts6"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const v4=ze("Pause",[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Oc=ze("PencilLine",[["path",{d:"M12 20h9",key:"t2du7b"}],["path",{d:"M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z",key:"1ykcvy"}],["path",{d:"m15 5 3 3",key:"1w25hb"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const $1=ze("Pickaxe",[["path",{d:"M14.531 12.469 6.619 20.38a1 1 0 1 1-3-3l7.912-7.912",key:"we99rg"}],["path",{d:"M15.686 4.314A12.5 12.5 0 0 0 5.461 2.958 1 1 0 0 0 5.58 4.71a22 22 0 0 1 6.318 3.393",key:"1w6hck"}],["path",{d:"M17.7 3.7a1 1 0 0 0-1.4 0l-4.6 4.6a1 1 0 0 0 0 1.4l2.6 2.6a1 1 0 0 0 1.4 0l4.6-4.6a1 1 0 0 0 0-1.4z",key:"15hgfx"}],["path",{d:"M19.686 8.314a12.501 12.501 0 0 1 1.356 10.225 1 1 0 0 1-1.751-.119 22 22 0 0 0-3.393-6.319",key:"452b4h"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const b4=ze("PinOff",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Of=ze("Pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const k4=ze("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Y1=ze("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const S4=ze("RefreshCcw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const x4=ze("Repeat2",[["path",{d:"m2 9 3-3 3 3",key:"1ltn5i"}],["path",{d:"M13 18H7a2 2 0 0 1-2-2V6",key:"1r6tfw"}],["path",{d:"m22 15-3 3-3-3",key:"4rnwn2"}],["path",{d:"M11 6h6a2 2 0 0 1 2 2v10",key:"2f72bc"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Ld=ze("Repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const A4=ze("RotateCw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const E4=ze("SatelliteDish",[["path",{d:"M4 10a7.31 7.31 0 0 0 10 10Z",key:"1fzpp3"}],["path",{d:"m9 15 3-3",key:"88sc13"}],["path",{d:"M17 13a6 6 0 0 0-6-6",key:"15cc6u"}],["path",{d:"M21 13A10 10 0 0 0 11 3",key:"11nf8s"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const R4=ze("ScanQrCode",[["path",{d:"M17 12v4a1 1 0 0 1-1 1h-4",key:"uk4fdo"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M17 8V7",key:"q2g9wo"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M7 17h.01",key:"19xn7k"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["rect",{x:"7",y:"7",width:"5",height:"5",rx:"1",key:"m9kyts"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Tg=ze("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const K1=ze("Server",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const C4=ze("ShieldAlert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const P4=ze("Smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const N4=ze("SmilePlus",[["path",{d:"M22 11v1a10 10 0 1 1-9-10",key:"ew0xw9"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}],["path",{d:"M16 5h6",key:"1vod17"}],["path",{d:"M19 2v6",key:"4bpg5p"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const G1=ze("Smile",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const jg=ze("Star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const T4=ze("Tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const J1=ze("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Z1=ze("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const j4=ze("Tv",[["rect",{width:"20",height:"15",x:"2",y:"7",rx:"2",ry:"2",key:"10ag99"}],["polyline",{points:"17 2 12 7 7 2",key:"11pgbg"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const z4=ze("UserRoundCheck",[["path",{d:"M2 21a8 8 0 0 1 13.292-6",key:"bjp14o"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"m16 19 2 2 4-4",key:"1b14m6"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const I4=ze("Video",[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const L4=ze("Wallet",[["path",{d:"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1",key:"18etb6"}],["path",{d:"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4",key:"xoc0q4"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Dn=ze("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/**
 * @license lucide-react v0.469.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Tu=ze("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),zg="https://api.jumble.social",YB=["https://blossom.band/","https://blossom.primal.net/","https://nostr.media/"],me={VERSION:"version",THEME_SETTING:"themeSetting",RELAY_SETS:"relaySets",ACCOUNTS:"accounts",CURRENT_ACCOUNT:"currentAccount",ADD_CLIENT_TAG:"addClientTag",POW_ENABLED:"powEnabled",POW_POST_DIFFICULTY:"powPostDifficulty",POW_REACTION_DIFFICULTY:"powReactionDifficulty",NOTE_LIST_MODE:"noteListMode",NOTIFICATION_TYPE:"notificationType",DEFAULT_ZAP_SATS:"defaultZapSats",DEFAULT_ZAP_COMMENT:"defaultZapComment",QUICK_ZAP:"quickZap",WALLET_DISPLAY_UNIT:"walletDisplayUnit",WALLET_TRANSACTIONS:"walletTransactions",LAST_READ_NOTIFICATION_TIME_MAP:"lastReadNotificationTimeMap",ACCOUNT_FEED_INFO_MAP:"accountFeedInfoMap",AUTOPLAY:"autoplay",VIDEO_LOOP:"videoLoop",TRANSLATION_SERVICE_CONFIG_MAP:"translationServiceConfigMap",MEDIA_UPLOAD_SERVICE_CONFIG_MAP:"mediaUploadServiceConfigMap",DISMISSED_TOO_MANY_RELAYS_ALERT:"dismissedTooManyRelaysAlert",SHOW_KINDS:"showKinds",SHOW_KINDS_VERSION:"showKindsVersion",HIDE_CONTENT_MENTIONING_MUTED_USERS:"hideContentMentioningMutedUsers",NOTIFICATION_LIST_STYLE:"notificationListStyle",MEDIA_AUTO_LOAD_POLICY:"mediaAutoLoadPolicy",PROFILE_PICTURE_AUTO_LOAD_POLICY:"profilePictureAutoLoadPolicy",SHOWN_CREATE_WALLET_GUIDE_TOAST_PUBKEYS:"shownCreateWalletGuideToastPubkeys",SIDEBAR_COLLAPSE:"sidebarCollapse",PRIMARY_COLOR:"primaryColor",ENABLE_SINGLE_COLUMN_LAYOUT:"enableSingleColumnLayout",FAVICON_URL_TEMPLATE:"faviconUrlTemplate",FILTER_OUT_ONION_RELAYS:"filterOutOnionRelays",ALLOW_INSECURE_CONNECTION:"allowInsecureConnection",ENABLE_TOR_MODE:"enableTorMode",QUICK_REACTION:"quickReaction",QUICK_REACTION_EMOJI:"quickReactionEmoji",NSFW_DISPLAY_POLICY:"nsfwDisplayPolicy",FONT:"font",FONT_SIZE:"fontSize",ADVANCED_MODE:"advancedMode",DEFAULT_RELAY_URLS:"defaultRelayUrls",MUTED_WORDS:"mutedWords",MIN_TRUST_SCORE:"minTrustScore",MIN_TRUST_SCORE_MAP:"minTrustScoreMap",SEARCH_RELAY_URLS:"searchRelayUrls",HIDE_INDIRECT_NOTIFICATIONS:"hideIndirectNotifications",ENABLE_LIVE_FEED:"enableLiveFeed",HIDE_UNTRUSTED_NOTES:"hideUntrustedNotes",HIDE_UNTRUSTED_INTERACTIONS:"hideUntrustedInteractions",HIDE_UNTRUSTED_NOTIFICATIONS:"hideUntrustedNotifications",DEFAULT_SHOW_NSFW:"defaultShowNsfw",PINNED_PUBKEYS:"pinnedPubkeys",MEDIA_UPLOAD_SERVICE:"mediaUploadService",HIDE_UNTRUSTED_EVENTS:"hideUntrustedEvents",ACCOUNT_RELAY_LIST_EVENT_MAP:"accountRelayListEventMap",ACCOUNT_FOLLOW_LIST_EVENT_MAP:"accountFollowListEventMap",ACCOUNT_MUTE_LIST_EVENT_MAP:"accountMuteListEventMap",ACCOUNT_MUTE_DECRYPTED_TAGS_MAP:"accountMuteDecryptedTagsMap",ACCOUNT_PROFILE_EVENT_MAP:"accountProfileEventMap",ACTIVE_RELAY_SET_ID:"activeRelaySetId",FEED_TYPE:"feedType"},Uf={NOTIFICATIONS_SEEN_AT:"seen_notifications_at"},M4=["wss://relay.damus.io/","wss://nos.lol/","wss://relay.primal.net/","wss://relay.ditto.pub/"],D4=["wss://search.nos.today/","wss://relay.ditto.pub/","wss://nostr.polyserv.xyz/"],KB=["wss://trending.relays.land/"],Fi={GROUP_LIST:10009,GROUP_CHAT_MESSAGE:9,GROUP_METADATA:39e3,GROUP_CREATE:9007,GROUP_ADD_USER:9e3,GROUP_REMOVE_USER:9001,GROUP_EDIT_METADATA:9002,GROUP_DELETE_EVENT:9003,GROUP_JOIN_REQUEST:9021,GROUP_LEAVE_REQUEST:9022},ce={EXTERNAL_CONTENT_REACTION:17,SEAL:13,RUMOR_CHAT:14,RUMOR_FILE:15,PICTURE:20,VIDEO:21,SHORT_VIDEO:22,GIFT_WRAP:1059,POLL:1068,POLL_RESPONSE:1018,COMMENT:1111,VOICE:1222,VOICE_COMMENT:1244,CLIENT_KEY_ANNOUNCEMENT:4454,KEY_TRANSFER:4455,PINNED_USERS:10010,FAVORITE_RELAYS:10012,ENCRYPTION_KEY_ANNOUNCEMENT:10044,DM_RELAYS:10050,BLOSSOM_SERVER_LIST:10063,FOLLOW_PACK:39089,RELAY_REVIEW:31987,GROUP_METADATA:39e3,ADDRESSABLE_NORMAL_VIDEO:34235,ADDRESSABLE_SHORT_VIDEO:34236,PAYMENT_INFO:10133},Q1=[Z.ShortTextNote,Z.Repost,Z.GenericRepost,ce.PICTURE,ce.VIDEO,ce.SHORT_VIDEO,ce.POLL,ce.COMMENT,ce.VOICE,ce.VOICE_COMMENT,Z.Highlights,Z.LongFormArticle,ce.ADDRESSABLE_NORMAL_VIDEO,ce.ADDRESSABLE_SHORT_VIDEO,Fi.GROUP_CHAT_MESSAGE],_4=[...Q1,ce.RELAY_REVIEW,Z.Emojisets,ce.FOLLOW_PACK,Z.Reaction,ce.EXTERNAL_CONTENT_REACTION],X1=/https?:\/\/[\w\p{L}\p{N}\p{M}&.\-/?=#@%+_:!~*()]+[^\s.,;:'"(\]}!?，。；："'！？】）]/giu,ew=/wss?:\/\/[\w\p{L}\p{N}\p{M}&.\-/?=#@%+_:!~*()]+[^\s.,;:'"(\]}!?，。；："'！？】）]/giu,F4=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,tw=/:[a-zA-Z0-9_-]+:/g,dp=/nostr:(note1[a-z0-9]{58}|nevent1[a-z0-9]+|naddr1[a-z0-9]+)/g,O4=/(note1[a-z0-9]{58}|nevent1[a-z0-9]+|naddr1[a-z0-9]+)/g,U4=/nostr:group:([a-z0-9-_]+)@([^\s]+)/gi,fp=/nostr:(npub1[a-z0-9]{58}|nprofile1[a-z0-9]+)/g,hp=/#[\p{L}\p{N}\p{M}_]+/gu,nw=/(ln(?:bc|tb|bcrt))([0-9]+[munp]?)?1([02-9ac-hj-np-z]+)/g,Bf=/[\u{1F600}-\u{1F64F}]|[\u{1F300}-\u{1F5FF}]|[\u{1F680}-\u{1F6FF}]|[\u{1F1E0}-\u{1F1FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{1F900}-\u{1F9FF}]|[\u{1FA70}-\u{1FAFF}]|[\u{1F004}]|[\u{1F0CF}]|[\u{1F18E}]|[\u{3030}]|[\u{2B50}]|[\u{2B55}]|[\u{2934}-\u{2935}]|[\u{2B05}-\u{2B07}]|[\u{2B1B}-\u{2B1C}]|[\u{3297}]|[\u{3299}]|[\u{303D}]|[\u{00A9}]|[\u{00AE}]|[\u{2122}]|[\u{23E9}-\u{23EF}]|[\u{23F0}]|[\u{23F3}]|[\u{FE00}-\u{FE0F}]|[\u{200D}]/gu,ow=/https?:\/\/(?:(?:www|m)\.)?(?:youtube\.com\/(?:watch\?[^#\s]*|embed\/[\w-]+|shorts\/[\w-]+|live\/[\w-]+)|youtu\.be\/[\w-]+)(?:\?[^#\s]*)?(?:#[^\s]*)?/i,aw=/https?:\/\/(?:www\.)?(twitter\.com|x\.com)\/(?:#!\/)?(\w+)\/status(?:es)?\/(\d+)(?:[?#].*)?/i,B4="f4eb8e62add1340b9cadcd9861e669b2e907cea534e0f7f3ac974c11c758a51a",rw="bc28aad5b167f31dd37c66d8c95d400c6411d83275ed12c504f60965d1f9eec6",GB=["https://mockingyou.com","https://nostpic.com","https://nostr.build","https://nostrcheck.me","https://nostrmedia.com","https://files.sovbit.host"],Ig="https://nostr.build",V4=["wss://bucket.coracle.social/","wss://relay.primal.net/","wss://relay.damus.io/"],W4=["wss://auth.nostr1.com","wss://relay.0xchat.com","wss://nip17.com","wss://chat.wisp.talk","wss://relay.damus.io","wss://nos.lol"],q4=2*24*60*60,Lg="https://{hostname}/favicon.ico",rr={MULTIPLE_CHOICE:"multiplechoice",SINGLE_CHOICE:"singlechoice"},Jl={COMPACT:"compact",DETAILED:"detailed"},Uc={ALWAYS:"always",WIFI_ONLY:"wifi-only",NEVER:"never"},Bc={ALWAYS:"always",WIFI_ONLY:"wifi-only",NEVER:"never"},ms={HIDE:"hide",HIDE_CONTENT:"hide_content",SHOW:"show"},Md={DEFAULT:"default",MONOSPACE:"monospace",DYSLEXIC:"dyslexic",SOURCESANS:"sourcesans",CAVEAT:"caveat",ORBITRON:"orbitron"},Dd={DEFAULT:"default",MEDIUM:"medium",LARGE:"large"},Vf=10,H4={ember:{name:"Ember",colors:{background:"0 0% 0%",foreground:"0 0% 98%",card:"0 0% 5%",cardForeground:"0 0% 98%",popover:"0 0% 8%",popoverForeground:"0 0% 98%",primary:"25 95% 55%",primaryHover:"25 95% 65%",primaryForeground:"0 0% 0%",secondary:"0 0% 15%",secondaryForeground:"0 0% 98%",muted:"0 0% 12%",mutedForeground:"0 0% 60%",accent:"25 95% 55%",accentForeground:"0 0% 0%",destructive:"0 62% 30%",destructiveForeground:"0 0% 98%",border:"0 0% 18%",input:"0 0% 15%",ring:"25 95% 55%",surfaceBackground:"0 0% 3%",zap:"45 93% 47%",repost:"142 71% 45%",bookmark:"346 86% 56%",comment:"217 91% 60%",noteHover:"0 0% 3.5%"},style:{radius:"1rem",scanlineOpacity:"0",bgGradient:"none",textShadow:"none",fontFamily:"",meshOpacity:"1",cardBorderWidth:"0px"}},emerald:{name:"Emerald",colors:{background:"150 20% 5%",foreground:"150 10% 95%",card:"150 15% 8%",cardForeground:"150 10% 95%",popover:"150 15% 10%",popoverForeground:"150 10% 95%",primary:"152 69% 46%",primaryHover:"152 69% 54%",primaryForeground:"150 20% 5%",secondary:"150 10% 15%",secondaryForeground:"150 10% 95%",muted:"150 10% 12%",mutedForeground:"150 8% 60%",accent:"152 69% 46%",accentForeground:"150 20% 5%",destructive:"0 62% 30%",destructiveForeground:"150 10% 95%",border:"150 10% 18%",input:"150 10% 15%",ring:"152 69% 46%",surfaceBackground:"150 20% 3%",zap:"45 93% 47%",repost:"142 71% 45%",bookmark:"346 86% 56%",comment:"217 91% 60%",noteHover:"150 15% 7%"},style:{radius:"1rem",scanlineOpacity:"0",bgGradient:"none",textShadow:"none",fontFamily:"",meshOpacity:"1",cardBorderWidth:"0px"}},sapphire:{name:"Sapphire",colors:{background:"220 25% 6%",foreground:"220 15% 95%",card:"220 20% 9%",cardForeground:"220 15% 95%",popover:"220 20% 11%",popoverForeground:"220 15% 95%",primary:"213 94% 55%",primaryHover:"213 94% 63%",primaryForeground:"220 25% 6%",secondary:"220 15% 15%",secondaryForeground:"220 15% 95%",muted:"220 15% 13%",mutedForeground:"220 12% 60%",accent:"213 94% 55%",accentForeground:"220 25% 6%",destructive:"0 62% 30%",destructiveForeground:"220 15% 95%",border:"220 15% 19%",input:"220 15% 15%",ring:"213 94% 55%",surfaceBackground:"220 25% 4%",zap:"45 93% 47%",repost:"142 71% 45%",bookmark:"346 86% 56%",comment:"217 91% 60%",noteHover:"220 20% 8%"},style:{radius:"1rem",scanlineOpacity:"0",bgGradient:"none",textShadow:"none",fontFamily:"",meshOpacity:"1",cardBorderWidth:"0px"}},amethyst:{name:"Amethyst",colors:{background:"270 20% 6%",foreground:"270 15% 95%",card:"270 15% 9%",cardForeground:"270 15% 95%",popover:"270 15% 11%",popoverForeground:"270 15% 95%",primary:"271 81% 60%",primaryHover:"271 81% 68%",primaryForeground:"270 20% 6%",secondary:"270 15% 15%",secondaryForeground:"270 15% 95%",muted:"270 15% 13%",mutedForeground:"270 12% 60%",accent:"271 81% 60%",accentForeground:"270 20% 6%",destructive:"0 62% 30%",destructiveForeground:"270 15% 95%",border:"270 15% 19%",input:"270 15% 15%",ring:"271 81% 60%",surfaceBackground:"270 20% 4%",zap:"45 93% 47%",repost:"142 71% 45%",bookmark:"346 86% 56%",comment:"217 91% 60%",noteHover:"270 15% 8%"},style:{radius:"1rem",scanlineOpacity:"0",bgGradient:"none",textShadow:"none",fontFamily:"",meshOpacity:"1",cardBorderWidth:"0px"}},hackerman:{name:"Hackerman",colors:{background:"0 0% 0%",foreground:"120 30% 85%",card:"120 5% 3%",cardForeground:"120 30% 85%",popover:"120 5% 4%",popoverForeground:"120 30% 85%",primary:"120 70% 45%",primaryHover:"120 70% 55%",primaryForeground:"0 0% 0%",secondary:"120 10% 10%",secondaryForeground:"120 30% 85%",muted:"120 10% 8%",mutedForeground:"120 15% 45%",accent:"120 70% 45%",accentForeground:"0 0% 0%",destructive:"0 60% 30%",destructiveForeground:"120 30% 85%",border:"120 15% 12%",input:"120 10% 8%",ring:"120 70% 45%",surfaceBackground:"0 0% 0%",zap:"50 80% 40%",repost:"120 50% 35%",bookmark:"340 60% 45%",comment:"180 50% 40%",noteHover:"120 5% 2%"},style:{radius:"0px",scanlineOpacity:"0.08",bgGradient:"none",textShadow:"0 0 4px hsl(var(--primary) / 0.5), 0 0 10px hsl(var(--primary) / 0.2)",fontFamily:'"JetBrains Mono", "Fira Code", "SF Mono", "Cascadia Code", "Consolas", "Courier New", monospace',meshOpacity:"0.3",cardBorderWidth:"1px"}},phosphor:{name:"Phosphor",colors:{background:"0 0% 0%",foreground:"40 90% 75%",card:"40 10% 3%",cardForeground:"40 90% 75%",popover:"40 10% 4%",popoverForeground:"40 90% 75%",primary:"40 95% 50%",primaryHover:"40 95% 60%",primaryForeground:"0 0% 0%",secondary:"40 10% 10%",secondaryForeground:"40 90% 75%",muted:"40 10% 8%",mutedForeground:"40 15% 45%",accent:"40 95% 50%",accentForeground:"0 0% 0%",destructive:"0 60% 30%",destructiveForeground:"40 90% 75%",border:"40 15% 12%",input:"40 10% 8%",ring:"40 95% 50%",surfaceBackground:"0 0% 0%",zap:"50 80% 40%",repost:"40 50% 35%",bookmark:"340 60% 45%",comment:"180 50% 40%",noteHover:"40 5% 2%"},style:{radius:"0px",scanlineOpacity:"0.08",bgGradient:"none",textShadow:"0 0 4px hsl(var(--primary) / 0.5), 0 0 10px hsl(var(--primary) / 0.2)",fontFamily:'"JetBrains Mono", "Fira Code", "SF Mono", "Cascadia Code", "Consolas", "Courier New", monospace',meshOpacity:"0.3",cardBorderWidth:"1px"}},midnight:{name:"Midnight",colors:{background:"230 25% 4%",foreground:"220 15% 88%",card:"230 20% 7%",cardForeground:"220 15% 88%",popover:"230 20% 8%",popoverForeground:"220 15% 88%",primary:"45 80% 70%",primaryHover:"45 80% 78%",primaryForeground:"230 25% 4%",secondary:"230 10% 14%",secondaryForeground:"220 15% 88%",muted:"230 10% 11%",mutedForeground:"230 8% 50%",accent:"45 80% 70%",accentForeground:"230 25% 4%",destructive:"0 50% 30%",destructiveForeground:"220 15% 88%",border:"230 12% 15%",input:"230 10% 12%",ring:"45 80% 70%",surfaceBackground:"230 25% 2.5%",zap:"45 70% 55%",repost:"160 40% 45%",bookmark:"340 40% 50%",comment:"210 50% 55%",noteHover:"230 15% 5.5%"},style:{radius:"1rem",scanlineOpacity:"0",bgGradient:"none",textShadow:"none",fontFamily:"",meshOpacity:"0.8",cardBorderWidth:"0px"}},nord:{name:"Nord",colors:{background:"230 20% 10%",foreground:"220 20% 92%",card:"230 15% 13%",cardForeground:"220 20% 92%",popover:"230 15% 15%",popoverForeground:"220 20% 92%",primary:"210 35% 65%",primaryHover:"210 35% 72%",primaryForeground:"230 20% 10%",secondary:"230 12% 18%",secondaryForeground:"220 20% 92%",muted:"230 12% 15%",mutedForeground:"220 10% 60%",accent:"210 35% 65%",accentForeground:"230 20% 10%",destructive:"0 35% 60%",destructiveForeground:"220 20% 92%",border:"230 10% 22%",input:"230 12% 18%",ring:"210 35% 65%",surfaceBackground:"230 20% 8%",zap:"25 70% 55%",repost:"150 30% 50%",bookmark:"320 40% 55%",comment:"200 40% 55%",noteHover:"230 12% 12%"},style:{radius:"0.5rem",scanlineOpacity:"0",bgGradient:"none",textShadow:"none",fontFamily:"",meshOpacity:"0.6",cardBorderWidth:"0px"}}},iw=400,JB=60,cr={DEFAULT:"default",INTERACTIONS:"interactions",NOTIFICATIONS:"notifications",SEARCH:"search",HASHTAG:"hashtag",NAK:"nak",TRENDING:"trending",DM:"dm"};function sw(n){var e,t,o="";if(typeof n=="string"||typeof n=="number")o+=n;else if(typeof n=="object")if(Array.isArray(n)){var a=n.length;for(e=0;e<a;e++)n[e]&&(t=sw(n[e]))&&(o&&(o+=" "),o+=t)}else for(t in n)n[t]&&(o&&(o+=" "),o+=t);return o}function lw(){for(var n,e,t=0,o="",a=arguments.length;t<a;t++)(n=arguments[t])&&(e=sw(n))&&(o&&(o+=" "),o+=e);return o}function $4(n){return n.split("-").map(e=>String.fromCodePoint(parseInt(e,16))).join("")}cw(2);const Y4=cw(3);function cw(n){if(typeof n!="number"||Number.isNaN(n)||n<1||n===Number.POSITIVE_INFINITY)throw new Error("`"+n+"` is not a valid argument for `n-gram`");return e;function e(t){const o=[];if(t==null)return o;const a=typeof t.slice=="function"?t:String(t);let r=a.length-n+1;if(r<1)return o;for(;r--;)o[r]=a.slice(r,r+n);return o}}const K4=/\s+/g,G4=/[\t\n\v\f\r ]+/g;function J4(n,e){e?typeof e=="string"&&(e={style:e}):e={};const t=e.preserveLineEndings?Z4:Q4;return String(n).replace(e.style==="html"?G4:K4,e.trim?X4(t):t)}function Z4(n){const e=/\r?\n|\r/.exec(n);return e?e[0]:" "}function Q4(){return" "}function X4(n){return e;function e(t,o,a){return o===0||o+t.length===a.length?"":n(t)}}const uw={}.hasOwnProperty;function eC(n){return n==null?"":J4(String(n).replace(/[\u0021-\u0040]+/g," ")).trim().toLowerCase()}function tC(n){return Y4(" "+eC(n)+" ")}function nC(n){const e=tC(n),t={};let o=-1;for(;++o<e.length;)uw.call(t,e[o])?t[e[o]]++:t[e[o]]=1;return t}function oC(n){const e=nC(n),t=[];let o;for(o in e)uw.call(e,o)&&t.push([o,e[o]]);return t.sort(aC),t}function aC(n,e){return n[1]-e[1]}const rC={cmn:/[\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u3005\u3007\u3021-\u3029\u3038-\u303B\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFA6D\uFA70-\uFAD9]|\uD81B[\uDFE2\uDFE3\uDFF0\uDFF1]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF]/g,Latin:/[A-Za-z\u00AA\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uAB66-\uAB69\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A]|\uD801[\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]/g,Cyrillic:/[\u0400-\u0484\u0487-\u052F\u1C80-\u1C88\u1D2B\u1D78\u2DE0-\u2DFF\uA640-\uA69F\uFE2E\uFE2F]|\uD838[\uDC30-\uDC6D\uDC8F]/g,Arabic:/[\u0600-\u0604\u0606-\u060B\u060D-\u061A\u061C-\u061E\u0620-\u063F\u0641-\u064A\u0656-\u066F\u0671-\u06DC\u06DE-\u06FF\u0750-\u077F\u0870-\u088E\u0890\u0891\u0898-\u08E1\u08E3-\u08FF\uFB50-\uFBC2\uFBD3-\uFD3D\uFD40-\uFD8F\uFD92-\uFDC7\uFDCF\uFDF0-\uFDFF\uFE70-\uFE74\uFE76-\uFEFC]|\uD803[\uDE60-\uDE7E\uDEFD-\uDEFF]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB\uDEF0\uDEF1]/g,ben:/[\u0980-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09FE]/g,Devanagari:/[\u0900-\u0950\u0955-\u0963\u0966-\u097F\uA8E0-\uA8FF]|\uD806[\uDF00-\uDF09]/g,jpn:/[\u3041-\u3096\u309D-\u309F]|\uD82C[\uDC01-\uDD1F\uDD32\uDD50-\uDD52]|\uD83C\uDE00|[\u30A1-\u30FA\u30FD-\u30FF\u31F0-\u31FF\u32D0-\u32FE\u3300-\u3357\uFF66-\uFF6F\uFF71-\uFF9D]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00\uDD20-\uDD22\uDD55\uDD64-\uDD67]|[\u3400-\u4DB5\u4E00-\u9FAF]/g,jav:/[\uA980-\uA9CD\uA9D0-\uA9D9\uA9DE\uA9DF]/g,kor:/[\u1100-\u11FF\u302E\u302F\u3131-\u318E\u3200-\u321E\u3260-\u327E\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/g,tel:/[\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3C-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C5D\u0C60-\u0C63\u0C66-\u0C6F\u0C77-\u0C7F]/g,tam:/[\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BFA]|\uD807[\uDFC0-\uDFF1\uDFFF]/g,guj:/[\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AF1\u0AF9-\u0AFF]/g,kan:/[\u0C80-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDD\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1-\u0CF3]/g,mal:/[\u0D00-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4F\u0D54-\u0D63\u0D66-\u0D7F]/g,mya:/[\u1000-\u109F\uA9E0-\uA9FE\uAA60-\uAA7F]/g,pan:/[\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A76]/g,amh:/[\u1200-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u137C\u1380-\u1399\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]/g,tha:/[\u0E01-\u0E3A\u0E40-\u0E5B]/g,sin:/[\u0D81-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2-\u0DF4]|\uD804[\uDDE1-\uDDF4]/g,ell:/[\u0370-\u0373\u0375-\u0377\u037A-\u037D\u037F\u0384\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03E1\u03F0-\u03FF\u1D26-\u1D2A\u1D5D-\u1D61\u1D66-\u1D6A\u1DBF\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u2126\uAB65]|\uD800[\uDD40-\uDD8E\uDDA0]|\uD834[\uDE00-\uDE45]/g},_d={Latin:{spa:" de|de |os | la| a |la | y |ón |ión|es |ere|rec|ien|o a|der|ció|cho|ech|en |a p|ent|a l|aci|el |na |ona|e d| co|as |da | to|al |ene| en|tod| pe|e l| el|ho |nte| su|per|a t|ad | ti|ers|tie| se|rso|son|e s| pr|o d|oda|te |cia|n d| es|dad|ida| in|ne |est|ion|cio|s d|con|a e| po|men| li|n e|nci|res|su |to |tra| re| lo|tad| na|los|a s| o |ia |que| pa|rá |pro| un|s y|ual|s e|lib|nac|do |ra |er |a d|ue | qu|e e|sta|nal|ar |nes|ica|a c|ser|or |ter|se |por|cci|io |del|l d|des|ado|les|one|a a|ndi| so| cu|s p|ale|s n|ame|par|ici|oci|una|ber|s t|rta|com| di|dos|e a|imi|o s|e c|ert|las|o p|ant|dic|nto| al|ara|ibe|enc|o e|s l|cas| as|e p|ten|ali|o t|soc|y l|n c|nta|so |tos|y a|ria|n t|die|a u| fu|no |l p|ial|qui|dis|s o|hos|gua|igu| ig| ca|sar|l t| ma|l e|pre| ac|tiv|s a|re |nad|vid|era| tr|ier|cua|n p|ta |cla|ade|bre|s s|esa|ntr|ecc|a i| le|lid|das|d d|ido|ari|ind|ada|nda|fun|mie|ca |tic|eli|y d|nid|e i|odo|ios|o y|esp|iva|y e|mat|bli|r a|drá|tri|cti|tal|rim|ont|erá|us |sus|end|pen|tor|ito|ond|ori|uie|lig|n a|ist|rac|lar|rse|tar|mo |omo|ibr|n l|edi|med| me|nio|a y|eda|isf|lo |aso|l m|ias|ico|lic|ple|ste|act|tec|ote|rot|ele|ura| ni|ie |adi|u p|seg|s i|un |und|a n|lqu|alq|o i|inc|sti| si|n s|ern",eng:"the| th| an|he |nd |ion|and| to|to |tio| of|on |of | in|al |ati|or |ght|igh|rig| ri|ne |ent|one|ll |is |as |ver|ed | be|e r|in |t t|all|eve|ht | or|ery|s t|ty | ev|e h|yon| ha|ryo|e a|be |his| fr|ng |d t|has| sh|ing| hi|sha| pr| co| re|hal|nal|y a|s a|n t|ce |men|ree|fre|e s|l b|nat|for|ts |nt |n a|ity|ry |her|nce|ect|d i| pe|pro|n o|cti| fo|e e|ly |es | no|ona|ny |any|er |re |f t|e o| de|s o| wi|ter|nte|e i|ons| en| ar|res|ers|y t|per|d f| a | on|ith|l a|e t|oci|soc|lit| as| se|dom|edo|eed|nti|s e|t o|oth|wit| di|equ|t a|ted|st |y o|int|e p| ma| so| na|l o|e c|ch |d a|enc|th |are|ns |ic | un| fu|tat|ial|cia| ac|hts|nit|qua| eq| al|om |e w|d o|f h|ali|ote|n e| wh|r t|sta|ge |thi|o a|tit|ual|an |te |ess| ch|le |ary|e f|by | by|y i|tec|uni|o t|o o| li|no | la|s r| su|inc|led|rot|con| pu| he|ere|imi|r a|ntr| st| ot|eli|age|dis|s d|tle|itl|hou|son|duc|edu| wo|ate|ble|ces|at | at| fa|com|ive|o s|eme|o e|aw |law|tra|und|pen|nde|unt|oun|n s|s f|f a|tho|ms | is|act|cie|cat|uca| ed|anc|wor|ral|t i| me|o f|ily|pri|ren|ose|s c|en |d n|l c|ful|rar|nta|nst| ag|l p|min|din|sec|y e| tr|rso|ich|hic|whi|cou|ern|uri|r o|tic|iti|igi|lig|rat|rth|t f|oms|rit|d r|ee |e b|era|rou|se |ay |rs | ho|abl|e u",por:"de | de| se|ão |os |to |em | e |do |o d| di|er |ito|eit|ser|ent|ção| a |dir|ire|rei|o s|ade|dad|uma|as |no |e d| to|nte| co|o t|tod| ou|men|que|s e|man| pr| in| qu|es | te|hum|odo|e a|da | hu|ano|te |al |tem|o e|s d|ida|m d| pe| re|o a|ou |r h|e s|cia|a e| li|o p| es|res| do| da| à |ual| em| su|açã|dos|a p|tra|est|ia |con|pro|ar |e p|is | na|rá |qua|a d| pa|com|ais|o c|ame|erá| po|uer|sta|ber|ter| o |ess|ra |e e|das|o à|nto|nal|o o|a c|ido|rda|erd| as|nci|sua|ona|des|ibe|lib|e t|ado|s n|ua |s t|ue | so|ica|ma |lqu|alq|tos|m s|a l|per|ada|oci|soc|cio|a n|par|aci|s a|pre|ont|m o|ura|a s| um|ion|e o|or |e r|pel|nta|ntr|a i|io |nac|ênc|str|ali|ria|nst| tr|a q|int|o n|a o|ca |ela|uçã|lid|e l| at|sen|ese|r d|s p|egu|seg|vid|pri|sso|ém |ime|tic|dis|raç|eci|ara| ca|nid|tru|ões|ass|seu|por|a a|m p| ex|so |r i|eçã|teç|ote|rot| le| ma|ing|a t|ran|era|rio|l d|eli|ça |sti| ne|cid|ern|utr|out|r e|e c|tad|gua|igu| ig| os|s o|ruç|ins|çõe|ios| fa|e n|sse| no|re |art|r p|rar|u p|inc|lei|cas|ico|uém|gué|ngu|nin| ni|gur|la |pen|nça|na |içã|ião|cie|ist|sem|ta |ele|e f|om |tro| ao|rel|m a|s s|tar|eda|ied|uni|e m|s i|a f|ias| cu| ac|r a|á a|rem|ei |omo|rec|for|s f|esc|ant|à s| vi|o q|ver|a u|nda|und|fun",ind:"an |ang|ng | da|ak | pe|ata| se| ke| me|dan| di| be|ber|kan|ran|hak|per|yan| ya|nga|nya|gan| at|ara| ha|eng|asa|ora|men|n p|n k|erh|rha|n d|ya |ap |at |as |tan|n b|ala|a d| or|a s|san|tas|eti|uk |pen|g b|set|ntu|n y|tia|iap|k m|eba|aan| un|n s|tuk|k a|p o|am |lam| ma|unt| de|ter|bas|beb|dak|end|i d|pun|mem|tau|dal|ama|keb|aka|ika|n m| ba|di |ma | sa|den|au |nda|n h|eri| ti|ela|k d|un |n a|ebe|ana|ah |ra |ida|uka| te|al |ada|ri |ole|tid|ngg|lak|leh|dap|a p|dil|g d|ena|eh |gar|na |ert|apa|um |tu |atu|a m|sam|ila|har|n t|asi|ban|erl|t d|bat|uat|ta |lan|adi|h d|neg| ne|kum|mas|nan|pat|aha| in|l d|emp|sem|rus|sua|ser|uan|era|ari|erb|kat|man|a b|g s|rta|ai |nny|n u|ung|ndi|han|uku|huk| hu|sa |ers|in | la|ka | su|ann|car|kes|aku|dip|i s|a a|erk|n i|lai|rga|aru|k h|i m|rka|a u|us |nak|emb|gga|nta|iba| pu|ind|s p|ent|mel|ina|min|ian|dar|ni |rma|lua|rik|ndu|lin|sia|rbu|g p|k s|da |aya|ese|u d|ega|nas|ar |ipe|yar|sya|ik |aga| ta|ain|ua |arg|uar|iny|pem|ut |si |dun|eor|seo|rak|ngs|ami|kel|ini|g t|dik|mer|emu|aks|rat|uru|ewa|il |enu|any|kep|pel|asu|rli|ia |dir|jam|mba|mat|pan|g m|ses|sar|das|kuk|bol|ili|u k|gsa|u p|a k|ern|ant|raa|t p|ema|mua|idi|did|t s|i k|rin|erm|esu|ger|elu|nja|enj|ga |dit",fra:" de|es |de |ion|nt |tio|et |ne |on | et|ent|le |oit|e d| la|e p|la |it | à |t d|roi|dro| dr| le|té |e s|ati|te |re | to|s d|men|tou|e l|ns | pe| co|son|que| au| so|e a|onn|out| un| qu| sa| pr|ute|eme| l’|t à| a |e e|con|des| pa|ue |ers|e c| li|a d|per|ont|s e|t l|les|ts |tre|s l|ant| ou|cti|rso|ou |ce |ux |à l|nne|ons|ité|en |un | en|er |une|n d|sa |lle| in|nte|e t| se|lib|res|a l|ire| d’| re|é d|nat|iqu|ur |r l|t a|s s|aux|par|nal|a p|ans|dan|qui|t p| dé|pro|s p|air| ne| fo|ert|s a|nce|au |ui |ect|du |ond|ale|lit| po|san| ch|és | na|us |com|our|ali|tra| ce|al |e o|e n|rté|ber|ibe|tes|r d|e r|its| di|êtr|pou|été|s c|à u|ell|int|fon|oci|soc|ut |ter| da|aut|ien|rai| do|iss|s n| ma|bli|ge |est|s o| du|ona|n p|pri|rs |éga| êt|ous|ens|ar |age|s t| su|cia|u d|cun|rat| es|ir |n c|e m| ét|t ê|a c| ac|ote|n t|ein| tr|a s|ndi|e q|sur|ée |ser|l n| pl|anc|lig|t s|n e|s i|t e| ég|ain|omm|act|ntr|tec|gal|ul | nu| vi|me |nda|ind|soi|st | te|pay|tat|era|il |rel|n a|dis|n s|pré|peu|rit|é e|t é|bre|sen|ill|l’a|d’a| mo|ass|lic|art| pu|abl|nta|t c|rot| on| lo|ure|l’e|ava|ten|nul|ivi|t i|ess|ys |ays| fa|ine|eur|rés|cla|tés|oir|eut|e f|utr|doi|ibr|ais|ins|éra|’en|iét|l e|s é|nté| ré|ssi| as|nse|ces|é a",deu:"en |er |der|ein| un|nd |und|ung|cht|ich| de|sch|ng | ge|ine|ech|gen|rec|che|ie | re|eit| au|ht |die| di| ha|ch | da|ver| zu|lic|t d|in |auf| ei| in| be|hen|nde|n d|uf |ede| ve|it |ten|n s|sei|at |jed| je| se|and|rei|s r|den|ter|ne |hat|t a|r h|zu |das|ode| od|as |es | an|fre|nge| we|n u|run| fr|ere|e u|lle|ner|nte|hei|ese| so|rde|wer|ige| al|ers|n g|hte|d d| st|n j|lei|all|n a|nen|ege|ent|bei|g d|erd|t u|ren|nsc|chu| gr|kei|ens|le |ben|aft|haf|cha|tli|ges|e s| si|men| vo|lun|em |r s|ion|te |len|gru|gun|tig|unt|uch|spr|n e|ft |ei |e f| wi| sc|r d|n n|geh|r g|dar|sta|erk| er|r e|sen|eic|gle| gl|lie|e e|tz |fen|n i|nie|f g|t w|des|chl|ite|ihe|eih|ies|ruc|st |ist|n w|h a|n z|e a| ni|ang|rf |arf|gem|ale|ati|on |he |t s|ach| na|end|n o|pru|ans|sse|ern|aat|taa|ehe|e d|hli|hre|int|tio|her|nsp|de |mei| ar|r a|ffe|e b|wie|erf|abe|hab|ndl|n v|sic|t i|han|ema|nat|ber|ied|geg|d s|nun|d f|ind| me|gke|igk|ieß| fa|igu|hul|r v|dig|rch|urc|dur| du|utz|hut|tra|aus|alt|bes|str|ell|ste|ger|r o|esc|e g|rbe|arb|ohn|r b|mit|d g|r w|ntl|sow|n h|nne|etz|raf|dlu| ih|lte|man|iem|erh|eru| is|dem|lan|rt |son|isc|eli|rel|n r|e i|rli|r i| mi|e m|ild|bil| bi|eme| en|ins|für| fü|gel|öff| öf|owi|ill|wil|e v|ric|f e",jav:"ng |an | ka|ang|ing|kan| sa|ak |lan| la|hak| pa| ha|ara|ne |abe| in|n k|ngg|ong|ane|nga|ant|won|uwo| an| uw|nin|ata|n u|en |ra |tan| da|ran|ana| ma|nth|ake|ben|beb|hi |ke |sab|nda| ng|adi|thi|nan|a k| ba|san|asa|ni |e h|e k|g k| ut|pan|awa| be|eba|gan|g p|dan| wa|bas|aka|dha|yan|sa |arb|man| di|wa |g d| na|g n|ban| tu|n s|ung|wen|g s|rbe|dar|dak|di |g u|ora|aya|be |ah |a s|eni| or|han|as | pr|a n|na |iya|a a|kar|at |a l|mar|uwe|duw|uta|und|n p|asi|pa | si|ala|n n| un|kab|oni|ya |i h|gar|g b|yat|tum|ta |n m|i k|apa|taw| li|ani| ke|al |ka |kal|ngk|ega| ne|nal|n i|g a|ggo|ina|we |ena|dad|iba|awi|aga|a p| ta|sar|adh|awe|and|uju|ind|min|sin|ndu|uwa|gge|n l|ggu|ngs|n b|a b|pra|iji|n a|ha | bi|kat|go | ku|e p|ron|kak|ngu|a u|gsa|war|nya|g t|pad|bis|k b|i w|ae |wae| nd|ali|a m|er |sak|e s|ku |liy|ama|i l|eh |isa|arg|n t|a d|kap|i s|ayo|gay| pe|ndh|bad|pri|neg|tow|uto|eda|bed|il |ih | ik|ur |k k|rta|art|i p|rga|lak|ami|ro |aro|yom|r k|e d|a w|kon|rib|eng|ger|g l|ras|dil| ti|k l|rap|mra|uma| pi|k h|n d|gaw|wat|ga |k n|ar |per| we|oma|k p|jro|ajr|saj|ase|ini|ken|saw|ona|nas|kas|h k|i t| um|tin|wo | me|aba|rak|pag|yar|sya|t k| te| mu|ngl| ni|i b|men|ate|a i|aku|ebu|a t| du|g m|owo|mat| lu|amp",vie:"ng |̣c |́c | qu|à | th|nh | ng|̣i |̀n |và| va| nh|uyê| ph|quy| ca|ền|yề|̀nh|̀i |̣t | ch|ó | tr|ngư|i n| gi|gươ|ời|ườ|́t | co|ượ| cu|ác|ự |ợc| kh| đư|đươ| tư|có| ha|ông|c t| đê|n t|i đ|ìn|̀u |cá|gia|́i |ọi|mọ| mo|ều|iệ|đề|u c|như|pha| ba| bi|ất|̉a |ủa|củ|hôn| đô|g t|́ q|̃ng| ti|tự|t c|̣n | la|n đ|n c|n n|hiê|ch |ay |hay| vi|ân | đi| na|bả| ho|do | do| tô| hi|ội|há|ị |nà|̀ t|ới|hân| mô|́p |àn|̣ d|́ch|̣p |̀o |ào|khô|́n |ột|mộ| hô|ia |ốc|c h|hữ|i v|g n|́ng|uố|quô|h t|ôn |ên |n v|nhâ|̣ t| bâ|i c|g v|̉ng|iế|c c|ật|thư|hư |ướ|̉n | vơ| cô|c đ| đo| sư|t t|ộc|ữn|vớ| vê|ả |̣ng|g đ|̉o |ảo|uậ| đa|bị|là|sự|bấ|hà|hộ|i t|ản|hươ|̀ng|tro|̉m |o v| mi|ể |ục|i h|ức|áp|g c|̃ h|iá|n b|̉i |a m|h c|côn|ện|ớc|hạ|độ| du| cư|a c|n h|tha|ã | xa|́o |áo|ín|̀y |g b| hư|g h|ong|ron|̀ c|cho|̀ n|mì|ực|h v|c b| lu|i b|ệ |ai |ế |̣ c|xã|kha|c q|iể|tộ|ối|đố|á |hoa|o h|h đ|cả|n l|họ|tiê|y t|̉ c|ại|án|̀ đ|oà|y đ|chi|̉ n|phâ|ề |thu|iên|dụ|o c|i m|luâ|c p|ốn|c l|́ c|ũn|cũ|c g|c n|qua|n g|c m|o n|ải|hả|́ t|ho |về| tâ| hơ|o t|ở |hứ|hì|viê|̀m |̉ t|đó|thô|ứ |cứ|hí|́nh|ày|ởn|ưở| bă|tri| ta|m v|c v|ợp|hợ|h m| nư|ết|thi|ặc|ngh|uy ",ita:" di|to | in|ion|la | de|di |re |e d|ne | e |zio|rit|a d|one|o d|ni |le |lla|itt|ess| al|iri|dir|tto|ent|ell|i i|del|ndi|ere|ind|o a| co|te |tà |ti |a s|uo |e e|gni|azi| pr|idu|ivi|duo|vid|div|ogn| og| es|i e| ha|all|ale|nte|e a|men|ser| su| ne|e l|za |i d|per|a p|ha | pe| un|con|no |sse|li |e i| o | so| li| la|pro|ia |o i|e p|o s|i s|in |ato|o h|na |e s|a l|e o|nza|ali|tti|o p|ta |so |ber|ibe|lib|o e|un | a | ri|ua |il | il|nto|pri|el | po|una|are|ame| qu|a c|ro |oni|nel|e n| ad|ual|gli|sua|ond| re|a a|i c|ri |o o|sta|ita|i o| le|ad |i a|ers|enz|ssi|à e|ità|gua|i p|e c|io | pa|ter|soc|nal|ona|naz|ist|cia|rso|ver|a e|i r|tat|lle|sia| si|rio|tra|che| se|rtà|ert|anz|eri|tut|à d|he | da|al |ant|qua|on |ari|o c| st|oci|er |dis|tri|si |ed | ed|ono| tu|ei |dei|uzi|com|att|a n|opr|rop|par|nes|i l|zza|ese|res|ien|son| eg|n c|ont|nti|pos|int|ico|rà |sun|ial|lit|sen|pre|tta|dev|nit|era|eve|ll |l i| l |nda|ina|non| no|o n|ria|str|d a|art|se |ssu|ica|raz|ett|sci|gio|ati|egu| na|i u|utt|ve | ma|do |e r|ssa|sa |a f|n p|fon| ch|d u|rim| fo|a t| sc|trà|otr|pot|n i| cu|l p|ra |ezz|a o|ini|sso|dic|ltr|uni|cie| ra|i n|ruz|tru|ste| is|der|l m|a r|pie|lia|est|dal|nta| at|tal|ntr| pu|nno|ann|ten|vit|a v",tur:" ve| ha|ve |ir |ler|hak| he|her|in |lar|r h|bir|ya |er |ak |kkı|akk|eti| ka| bi|eya|an |eri|iye|yet|ara|ek | ol|de |vey|ın |ır |nda|arı|esi|ını|dır| ta|tle|e h|ası|etl|e k| va|ı v|sın|ile|ne |rke|erk|ard|ine| sa|ınd|ini|k h|kın|ama|le |tin|rdı|var|a v| me|e m|na |sin|ere|k v| şa| bu|lan|kes|dir|rin|dan| ma|kı |mak|şah|da | te|mek| ge|nı | hi|nin|en |n h| se|lik|rle|ana|lma|e a|ı h|r ş|ill|si | de|aya|zdi|izd|aiz|hai|ret|hiç|ına| iş|e b| ba|kla|et | hü|rın|n k|ola|nma|e t| ya|eme|riy|n v|e i|a h|li |mil|eli|ket|ik |kar|irl|hür|im |evl|mes|e d|ahs|ma |rak|ala|let|lle|un | ed|rri|ürr|bu | mi|i v|dil| il| eş|n i|la |el |mal| mü| ko|e g|se | ki|mas|lek|mle|mem|n b|ili|e e|ser| iç|n s|din| di|es |mel|eke|tir|şit|eşi|r b|akl|yla|n m|len| ke|edi|oru|nde|re |ele|ni |tür|a k|eye|ık |ken|uğu| uy|eml|erd|ede|ame| gö|e s|i m|tim|i b|rde|rşı|arş|a s|it |t v|siy|ar |rme|est|bes|rbe|erb|te |alı| an|ndi|end|hsı|unm|rı |kor|nın| ce|maz|mse|ims|kim|iç | ay|a m|lam|ri |sız|a b|ade|n t|nam|lme|ilm|k g|il |tme|etm|r v|e v|n e|ğre|öğr| öğ|al |ıyl|olm|vle|şma|i s|ger|me | da|ind|lem|i o|may|cak|çin|içi|nun|kan|ye |e y|r t|az |ç k|ece|sı |eni| mu|ulu|und|den|lun| fa|şı |ahi|l v|r a|san|kat| so|enm| ev|iş ",pol:" pr|nie|pra| i |nia|ie |go |ani|raw|ia | po|ego| do|wie|iek|awo| ni|owi|ch |ek |do | ma|wo |a p|ści|ci |ej | cz| za| w |ych|ośc|rze|prz| ka|wa |eni| na| je|ażd|każ|ma |zło|czł|noś|o d|łow|y c|dy |żdy|i p|wol| lu|ny |oln| wy|stw| wo|ub |lub|lno|rod|k m|twa|dzi|na | sw|rzy|ają|ecz|czn|sta| sp|owa|o p|spo|i w|kie|a w|zys|obo|est|neg|ać |mi |cze|e w|nyc|nic|jak| ja|wsz| z |jeg|wan|ńst|o s|a i|awa|e p|yst|pos|pow| ró|o o|jąc|ony|nej|owo|dow|ów | ko|kol|aki|bez|rac|sze|iej| in|zen|pod|i i|ni | ro|cy |o w|zan|eńs|no |zne|a s|lwi|olw|ez |odn|rów|odz|o u|ne |i n|i k|czy| be|acj|wob|inn| ob|ówn|zie| ws|aln|orz|nik|o n|icz|zyn|łec|ołe|poł|aro|nar|a j|i z|tęp|stę|ien|cza|o z|ym |zec|ron|i l|ami| os|kra| kr|owe| od|ji |cji|mie|a z|bod|swo|dni|zes|ełn|peł|iu |edn|iko|a n|raj| st|odo|zna|wyc|em |lni|szy|wia|nym|ą p|ją |zeń|iec|pie|st |jes| to|sob|któ|ale|y w|ieg|och|du |ini|war|zaw|nny|roz|i o|wej|ię |się| si|nau| or|o r|kor|e s|pop|zas|niu|z p|owy|w k|ywa| ta|ymi|hro|chr| oc|jed|ki |o t|ogo|oby|ran|any|oso|a o|tór| kt|w z|dne|to |tan|h i|nan|ejs|ada|a k|iem|aw |h p|wni|ucz|ora|a d| wł|ian| dz| mo|e m|awi|ć s|gan|zez|mu |taw|dst|wią|w c|y p|kow|o j|i m|y s|bow|kog|by |j o|ier|mow|sza|b o|ju |yna",swh:"a k| ya|na |wa |ya | ku|a m| na| ha|i y| wa|a h|a n|ana|aki|ki |la |hak| ka|kwa|tu | kw| ma|li |a a|ila|i k| ki|ni |a w|ali|a u| an| mt|ke |mtu|a y|ake|ati|kil|ka |ika|kat|ili|te |ote|we |a s|e k|ia |zi |u a|za |azi|ifa|ma |yak|yo |i n|ama| yo|au | au|e a|kut|amb|o y|ha |asi|fa |u w|hal|ara|sha|ish|ata|ayo| as|tik|u k| za|i z|ina|u n|mba|uhu|hi |hur|cha|yot|ru |uru|wat| ch|eri|ngi|e y|u y|i a|aif|tai| sh|nay|chi|ra |ani| bi| uh|sa | hi|i h|awa|iwa|a j|ti |mu |o k|ja |kan|uli|iwe|any|i w| am|e n|end|atu|kaz|o h|ria|her|she|shi|nch| nc|uta|ye |wak|ii |ele|ami|adh|eza| wo|iki|oja|moj|jam| ja|aka|bu |kam|kul|mat|fan|a l|agu|ind|ne |iri|lim|wen|da |kup|uto|i m|a b|ini|wan|bil| ta|sta|dha| sa| ni|ao | hu|e w|wot| zi|rik|kuf|aji|ta |wez|nya|har| ye|e m|si |lin| ut|ine|gin|ing| la|a t|zim|imu|ima|tak|e b|uni|ibu|azo|kos|yan|nye|uba|ari|ahi|nde|asa|ri |ham|dhi|eli|hir|ush|pat| nd|kus|maa|di |nda|oa |bar|bo |mbo|oka|tok|ndw|ala|wal| si|uzi|hii|tah|i s|o n|liw| el|upa|zin|hag|a c|ndi|ais|mai|eny|mwe|aa |ewe| al|ndo|e h|lo |umi|kuh|jib|osa|mam|a z|ufu|dwa|u i| in|iyo|nyi| ny|u m|sil|ang|o w|guz|zwa|uwa|kuw|hil|saw|uch|ufa|laz|und|aha|ua | mw|bal| lo|o l|a i|del|nun|anu|nji| ba|lik|le |uku|i i",sun:"an |na |eun|ng | ka|ana| sa| di|ang|ung|un |nga|ak | ha|keu| ba|a b| an|nu |hak| bo|anu|ata|nan|a h|ina| je|aha|ga |ah |awa|jeu| na|ara|ing|oga|bog|gan| ng|asa|kan|a s|ha |ae |bae|n k|a k| pa|a p|sah|g s|sar| si|sin|a n|din|n s|ma | at|aga|a a|tan| ku| ma|n a|san|man|wa |lah|pan|taw|u d|ra |ari|eu | pi|gar| pe|kat| te|n p|sa |per|a d|a m|e b|aan|ban|ran|ala|ike|n n|kum| ti|ama|a j|pik|ima|n d|al |at | ja|ila|ta |nda|bas|rim|teu|n b|eba|beb|udu|aya|ika|ngg|nag|kab|rta|art| me|ola|k n|uma|atu|aba|g k|adi|aca| po|ngt|nar|una|ate|oh |boh|awe|di |tin|asi|uku|n h|dan|aka|iba|car|sac|gaw|are|ent|um |jen|abe|u s|dil|pol|ar |ku |kud|u m|upa|han| hu|ake|bar|ur |hna|aru|h s|a t|sak|wat|kaw| so|n t|pa |mpa|du |ngk|g d|ena|huk| mi|mas|ngs|ti |n j|ka |aku|ren|n m| ta|law|isa| tu|und|a u|h a|tay|ula|aja|ali|nte|gsa|en |gam| wa|ieu|ere|k h|jal|h b|il |dit|ngu|lan|asu|yun|ayu|gta|k d|a r|g n|mah|uda|dip|kas|rup|geu| be|ter|sej|min|ri |ern|u p|k k|amp|ura|kal|e a|k a|ut |g b|nak|bis| bi|k p|tes|end|we |h k|tun|uan| un| de|u n|h t|ksa|u k|ian|wil|u b|ona|nas|uka|rak|eje| se|ami| ke|war| ra| ie|k j|eh |ya |lma|alm|pen|tur|wan|lak|h j|g a|ean|up |rga|arg|r k|u t| ne|deu|gal|gke|e t|h p| ge|g t| da|i n",ron:" de|re | în|și |are|de | și|te |ul | sa|rep|e d|ea |ept|dre|tul|e a| dr|ie |în |ptu|le |ate|la |e p| la| pe|ori| pr|ce |e s| or|au |tat| ar|ice|ii |or |a s| fi| a |ric|ale|per| co|nă |ă a|rea|ers|i s| li|sau| ca|rso|ent|lor|ați|al |a d|e o|men|l l|ei |e c|pri|ană| ac| re|uri|ber|ibe|lib|a p|oan|soa| in|i l|ter| al| să|tea|lă |car|tăț|să |tur|i a|i d|nal| ni|ri |ita|e î|e ș|se |ilo|in |ia |ție|pre|fie|ții|ăți|con|ere|e f|a o|eni|nte| nu| se|ace|ire|ici| cu|i î|a c|i n|a l|pen|ui |nu |ări|ală|ona|l d|ră |ert|ril| su|ntr|n c|rin| as|ni |i o|eri|tă |că |ile|ă d|i c|e n|ele|sa | mo|i p|fi |sal|tor|va |oci|soc|nic|pro| un| tr|est|inț|a î|uni|n m|a a| di|ecu|lui|sta|lit| po|tre|gal|ega|oat|ra |act|ă î|leg|u d|e l|nde|int|a f|n a| so|naț|ara|i f|uie|iun| to|tar|ste|ces|rar|at | ce|eme|i ș|rec|dep| că| o | îm|bui|ebu|reb| eg| na|mân|ntu|ili|văț|ând|iei|r ș|bil|pli|od |mod|res|din|e e|cți| au|ali|ă p|ă f|împ|ial|cia|ion|ă c|dec|nta| om|ită| fa|ță |cu |tra|ăță|nvă|înv|ât |ite|i i|lic| pu| ex|riv|tri|rot|ța |ți |l c|rta|imi|ulu|țio|ică|lig|rel|ta |cla|t î|nt |nit|e m|ânt|ămâ|țăm|ger|nța|ru |tru|gur|u c|bli|abi|ată|art|par|ar |rim|iva|l ș| sc|ime|nim|era|sup|ind|u a|dic|ic | st| va|ini|igi|e r",hau:"da | da|in |a k|ya |a d| ya|an |a a| ko| wa|na | a |sa | ha|kin|wan|ta | ba|a s| ta|a y|a h|wa |ko | na|n d|a t|ba |ma |n a| ma|iya|hak|asa| sa|ar |ata|yan| za|akk|a w|ama| ka|i d|iki|a m|owa|a b| ci| mu| sh|anc|nci|kow|a z|ai |nsa|a c|shi| ƙa|cik|ne |ana|i k|ci |kki|e d|a ƙ| ku|su |n y|uma|ka |uwa|kum|hi |a n|utu| yi|ani| ga| ra|aka|ali|mut|‘ya|tar| do|ɗan|ars| ‘y|sam|ƙas|nda|ane|man|tum|i a|yi |ni | du|ada| su|and|a g|cin| ad|a i|ke | ɗa|n k|yin|um |e m| ab|ins|nan|ki |mi |ami|yar|min|oka|re |i b|kam|mas|i y|mat|za |ann|en |aɗa| ja|m n|li |duk|dai|e s|n s|ra |n w|n h|aik| ai|ida|ga |san|rsa|aba|sar|ce |nin| la|o n|ban|nna|kan|abi|una|dam|me |ara|i m|hal|a r|add|are|n j|abu| ne|zai|a ɗ|wat|ari| ƙu|on |ans|waɗ|ame|ake|kar|din|zam| fa|a l|ƙun|buw|r d| hu|oki|kok|a ‘|u d|n t|abb|aur| id|rin|yak|dok|kiy|ray|jam|n b|ubu|bub|n m|i s| an|am |ili|bba|omi|dan|gam|ayu|ash|nce|tsa|ayi|har|yya|ika|bin|han|kko|rsu|aif|imi|fa | am|i i|dom| ki|yuw|dun|o a|fan|n ƙ|aya|fi |n r|she|uni|bay|riy|n ‘|sab| iy|bat|tab|aga| ir|mar|o w|i w|sha|awa| ak|uns|unc|tun|u k| il|ɗin|mfa|amf|aci|ewa|kas|lin|n n|don|n i|ure|ifi|lai|dda| ts|iri|aye|un |tan|wad|gwa|afi| ay|ace|mba|amb|aid|nta|ant|war|lim|kya| al|aɗi",fuv:"de | e |e n| ha|nde|la | wa|ina| ka|akk| nd|ɗo |na | in|e e|hak|al |di |i h|kke|ii |um |ko |ala|ndi| mu| ne|lla| jo|wal|eɗɗ|neɗ|all|mum| fo|kal|jog|ke |aaw|taa| ko|eed|ɗɗo|aa | le|ji |ade|aad|laa|o k| ng|e h| ta|re |ogi|a j|e w|e m|nnd|gii|e l|ley|awa|aag|ede|waa|e k|gu |e d| go|gal|ɓe |ti |fot|aan|eyd|ydi|ɗe |ee | re|ol |oto|i e|oti|m e|taw|nga|a i|kee|to |ann|eji|am |ni | wo|een|goo|eej|e f| he|enn|gol|agu|pot| po|dee|ay | fa|ka |a k|ond|oot| de|a f|o f|a n|wa |maa|ota|le |hay|i k|o n|ngo|e j|o t| ja|ñaa|hee|nka|i w|awi|a w|ngu|der| to|e t|dim|i n|fof|i f|e g|tee|naa|aak| do|too|a e|ndo|ren|dii|oor|er |o e|i m|of | sa| so|gaa|ani|kam| ma| ña|o w|i l|u m|kaa|ima|dir| ba|igg|lig| li|aar| ɓe|o i|e s| o |e r|so |ooj| nj| la|won|awo|dow|woo|faw|and|e i|ore|nge|nan|are|a t|tin|aam| mo|ɗee|ita|ira|aaɗ|e p|nng|ma |ank|yan|nda|oo |e ɓ|njo|ude|nee|e y|e a|je | ya|en |ine|iin| di|ral| na|ɗi |und| hu|inn|ŋde|aŋd|jaŋ|a d|den| fe| te|go | su|a h|haa|tal|eɗe|e b|y g|baa|tde| yi|ɗɗa|o h|iiɗ|ow | da|do |l n|alt| ho|l e|aga|mii| aa|a a|ama|nna|m t| ke|edd|oga|m w|l m|o j|aɗe|ree|oje|yee| no|ele|ne |ago| pa| al|guu|wi |ge |aaɓ|daa|ind|dew|i j|jey| je|ent|tan|o ɗ|geɗ| ge|ñee|a l| ɗu|kko|mak|a s| ga",bos:" pr| i |je |rav|na |ma |pra| na|ima| sv|a s|da |a p|vo |nje|ko |ako|anj|o i| po|avo|ja |e s|a i|ti | im| da| u |sva|no |ju | za|o n|va |i p|ili|vak|li | ko|ne | il|koj| ne|nja| dr|ost| sl|van|im |i s|u s|i i|a n|ava|ije|a u| bi|stv|se |a d|om |jed|bod|obo|lob|slo| se| ra|ih |sti| ob| je|pri|enj|dru|u i|o d|iti|voj|raz|ova|dje| os|e i|lo |e p| nj|uje|i d|bra|tre| tr| su|jeg|i n|u z|a k|og |u p|oje|cij|reb|a o|a b|lju|i u|ran|mij|ni |nos|jen|ba |edn|svo| iz|jel|pro|e d|žav|bit| ni|i o|sta|a z|avn|vje| ka|bil|ovo|a j|aju|ist|nih|tu |red|gov| od|e o|oji| sm|lje|o k|ilo|ji |aci|e u|e n|pre|o p|eba|u o|su |vim|ičn| sa|u n| dj|a t|ija|čno|jem|rža|drž|elj|stu|dna|odn|eni|za |iva|olj|šti|nom|em |du |vno|smi|jer|e b|de |pos|m i| do|u d|nak|a r|obr| mo|lja|nim|ego| kr|tit|kri|ve |nju|an |iko|nik|nu |i m|nog|eno|sno| st|e k|tup|rug|ka |oda|riv|vol|aln|m s|itu|ašt|zaš|ani|sam|akv|ovi|osn|rod|aro| mi|tva|dno|nst|jan|ak |ite|vič|rad|u m| ta|dst|tiv|nac|rim|kon|ku |odu|živ|amo|tvo|tel|pod|g p|nov|ina|nar| vj|o s|i b|oj | ov|ave|vu |ans|oja|zov|azo|ude|bud| bu|e t|i v|din|edi|nic|tan|nap|mje| is|jal|slu|pun|eds|o o|zak|jav|i k|m p|tno|ivo|ere|nič|m n|jim|kak|ada|vni|ugi| ro|mov|ven|pol|to |te | vr",hrv:" pr| i |ma |rav|ima|pra|je |na | sv|ti | na|a p|vo |vat|ko |a s|nje| po|anj|avo|o i|tko| im|a i|sva|no |i p|e s|ja |o n| za|ju |ili| u |va |li | bi|ne |i s|atk| il|iti|da | ne| ko| dr| sl|van|nja|koj|ije| ra|ova| os|u s|i i|ost|bod|obo|lob|slo|pri|a n|om |jed|ati|ih |im |voj|ava| ob|stv|se | mo|i u|bit|dru| je| se|dje|i o|enj| ka|i n|sti|lo |u i|svo|mij|ni |e i|raz|a o|e n|bra|o p| su|a b|u p|ran|a k|og |i d|bil|ako|e p|a d|edn|aju|mor|eni| nj|iva|jel|žav| ni|a z|avn|ovi|eno|ra |oje|a j| da|a u|ora|jeg| iz|nih|rža|drž|oji|sno|nit|jen|vje|ilo|cij|oda|nim| dj|pro|tit|u z|e d|red|nom|jem| od|nos|sta|nov|osn| sm|lje|o s|ji |ovo|stu|pos|vim| do|odn|rad|ist| sa|e o|tu |nju|em |gov|o d|rod|i m|jer|aci|oj |pre|m i|nak|dna|a r|lju|uje|e m|obr|za |olj|ve |o o|m s|an |nu |du |aro|vno|smi|aln|e k|o k|i b|e u|tva|u u|tup|rug|dno|u o|su |u d|ka |vol| ta|ija|itu|šti|ašt|zaš|itk|živ|ani|sam|elj| st|sob|oso|nar|akv|ada| mi|te |ona|nst|jan|lja|i v|ite|ego|elo|rim|ku |odu|amo|tvo|tel|jim|pod|nog|vi |ina| vj|to |e b|ans|zov|azo|ak | sk|edi|tan|oju|pun|pot|oti|kon|zak|i k|m p|tno|ivo|ere|nič|kak|vni|ugi| ro|mov|ven|štv| be|ara|kla|ave|u b|avi|oja|jal|u m|dni|mje|rak|din|ći |juč|klj|nic|u k|nap|obi|atn",nld:"en |an |de | de| he|ing|cht| en|der|van| va|ng |een|et |ech| ge| ee|n e|rec| re|n v|n d|nde|ver| be|er |ede|den| op|het|n i| te|lij|gen|zij| zi|ht |ijk|eli| in|t o| ve|op |and|ten|ke |ijn|e v|jn |ied| on|eft| ie|sch|n z|n o|aan|ft |eid|te |oor| we|ond|eef|ere|hee|id |in |rde|n w|t r|aar|rij|ord|wor|ens|of | of|hei|n g| vr| vo| aa|r h|hte| wo|n h|al |nd |vri|e o|ren|le |or |n a|jke|lle|eni|n b|ij |e e|g v| st|ige|die|e g|men|nge|t h|e b| za|e s|om |t e|ati|wel|erk|sta|ers| al| om|n t|zal|dig| me|ste|voo|ter|gin|re |ege|ge |g e|bes|nat| na|eke|che|ig |gel|nie|nst|e a|nig|est|e w|erw|r d|end|ona|d v|jhe|ijh|d e|ele| di|ie | do|del|n n|at |it | da|tie|e r|elk|ich|jk |vol|ijd|tel|min|len|str|lin|n s|per|t d|han| zo|hap|cha|wet| to|ven| ni|aat|ion|tio|taa|lke|eze|met|ard|waa|uit|sti|e n|doo|pen|eve|el |toe|ale|ien|ach|st |ns | wa|eme|nin|e d|bij| gr|n m|p v|esc|t w|ont|ite|man|ema| ma|nal|g o|rin|hed|t a|t v|beg|all|ijs|wij|rwi|e h| bi|gro|p d|rmi|erm|her|oon| pe|eit|kin|t z|iet|iem|e i|gem|igi| an|d o|r e|ete|e m|js | hu|oep|g z|edi|arb|zen|tin|ron|daa|teg|g t|raf|tra|eri|soo|nsc|t b| er|lan| la|ern|ar |lit|zon|d z|ze |dez|eho|d m|tig|loo|mee|ger|ali|gev|ije|ezi|gez|nli|l v|tij|eer| ar",srp:" pr| i |rav|na |pra| na|ma | sv|ima|da |ja |a p|vo |je |ko |ti |avo| po|a i|ako|a s| za| u |ju |o i| im|nje|i p|va |sva|anj|vak| da|o n|nja|e s|ost| ko|a n|li |ili|ne |om | ne|i s| sl| il| dr|no |koj|u s|ava| ra|og |slo|im |enj|sti|bod|obo|lob|iti|a o|stv|i u|a d|ni |jed|u p|pri|edn| bi|i i|a k|o d|sta|ih |dru|a u| je| os| ni|nos|pro|aju|i o|ran| de| su|u i|se |van|ova|i d|cij| ob|uje|red|žav|e i|i n|voj|e p|a j|dna| se| od|ve | ka|eni|rža|drž|a z|avn|aci|ovo|u u|m i|oja| iz|lja| nj|ija|u z|e o|rod|jen|lje|e b|raz|jan|lju|svo|za |gov|ičn| st|nov|sno|osn|du |ji |pre| tr|su |vu |odn|a b|jeg|nim|nih|tu |tit|šti|ku |nom|bit|e d|me |iko|čno|oji|lo |vno|nik|e n|đen|ika|bez|ara|de |u o|vim|nak| sa|u n|riv|ave|an |olj|vol| kr|o p|sme|e k|nog| ov|e u|tva|bra|rug|reb|tre|u d|oda| mo| vr|vlj|avl|ego|jav|del|m s|kri|o k|ašt|zaš|nju| sm|ani| li|dno|eđu|aln|la |akv|oj |šen|kom|stu|ugi|avi|a r|ka |rad|oju|tan|odi|vič|tav|itu|ude|bud| bu|pot|odu|živ|ere|m n|tvo|ilo|bil|aro|ovi|por|eno|štv|nac|ove|m p|tup|pos|rem|dni|ba |nst|a t|ast|iva|e m|vre|nu |beđ|ist|pun|en |te |dst|rot|zak|ao |kao|i k|juć|o s|st |sam|ter|nar| me|i m|kol|e r|ušt|ruš|ver|kak| be|i b|kla|ada|eba|ena|ona| on|tvu|ans| do|rak|slu",ckb:" he| û |ên | bi| ma|na |in |maf| di|an |xwe| xw|ku | ku|kes| de| ji|her|kir|iya|ya |rin|iri|ji |bi |es | ne|ye |yên|e b|er |afê|tin|ke | an|iyê|eye|rke|erk|we | be|e h|de | we|hey|fê |i b|yê |ina| bê| li|diy|ber|li |re |î û|nê |ê d| se| ci|eke|di |wî | na|î y|af |ete|hem| wî|sti| ki|rî |kî |î a|yek|n d|kar| te|ne |yî |i h|e k|tî |tê |a w|e d|î b|s m|ast|n b|be |yan|ser|tew|net| tu| ew|hev|aza|ara|û b|n k|adi|ev |zad| az|ras|est|anê| ya|n h|n û|wed| tê|wek|bat|bo | bo| yê|st |n n|ê k|dan|ê h|ema|ê b|iye|î h|din|bûn|r k|ekî| me|par|ûna|ta |wle|ewl|î m| ke|nav|ewe|man|ê t|dî |û m|mû |emû|a m|ika|e û|n w|a x|ê m|e n| ta|ela|n j|eyê|n x|civ|wey|ana| re|khe|ekh|bik|kê |jî |f h|erî| pa|îna|bin|erb|vak|iva|a s| ni|cih|vê |e j|ari| pê|î d|nên|ike|e t|a k|ê x| ye|n a|eyî|n e|ama|bê |ar |ewa|atê|bes|rbe|av |ibe|ist|mî |tem|awa|are|hî |geh|nge|ing|nek|nûn|anû|qan| qa|vî |rti|uke|tuk| şe|eza| da|u d|û a|f û|edi| ra|tu |tiy|tên| mi|xeb| ge|hîn| hî|etê|î j|stî|mal|bib|ra |i d|e m|mam|i a|nik|i m|î k| wi|ûn | ko|a ş|ê j|riy|lat|wel|e e|ine|ane|û h|în |a d|siy|end|aye| za|ija|a n|î n|ek |tek|yet|mbe|emb|û d|rov|iro|mir|eba| xe|mên| ên| hu|nîn|anî|t û|ten|n m|dem|ê û|enê|te |art|i r| jî|u j|ekê|dew",yor:" ní|ti |ọ́ |ní | lá| ẹ̀|àn |ẹ́ |kan|tí | tí|an |ẹ̀ |tọ́|ọ̀ | ẹn|ọn |wọn|í ẹ|bí |áti|lát|̀tọ|ẹ̀t| gb| àt| àw|n l|àti| a |lẹ̀|ẹnì| ó |kọ̀| ló|ì k|sí |ọ̀k| kọ|ra |ni |àbí|tàb| tà|nì | sí|̀ka|ọ̀ọ|n ẹ|àwọ|n t|ó n|̀ọ̀|ílẹ|orí|ló | wọ|tó |dè |ìyà|ún | tó| or|í ì|èdè|kò |‐èd|̀‐è|ẹ̀‐|ríl|í ó|rẹ̀|í à| sì|yàn|gbo|ṣe | kò|í a| rẹ| jẹ|sì | bá|ràn| ṣe|wọ́|nìy|fún| fú|n à|ba |n n|gbà|gbọ|jẹ́|un |ìí | kí|gba|ènì| èn|bá |́ l|a k| ka|dọ̀|kí | òm|in | fi|bò |fi |bẹ́|ọdọ|bọd|́ s|hun|nú |nín|wà |ira|nir|òmì|ìgb| ìg|́ t|ẹni|ínú|i l|ìni|mìn|bà |áà |i ì|ohu| oh|í i|ara| ti|bo |ò l| pé|rú |írà| ọ̀|í ò|ogb|kọ́|pọ̀|ó b|à t|i n|lọ́|ẹ́n| ìb|yìí|gbé|gẹ́|bog|óò |yóò| yó|n k|pé |dá |́wọ|ọ́w|à l|í k| wà|n o|jọ | ir|ọ̀r|ú ì|́ à|ó s|i t|ṣẹ́|̀kọ|í t|yé |lè | lè|fin|àbò| lọ|à n|ùjọ|wùj|irú|ó j| ar|í w|a w| ìm|ú à|̀ t|òfi| òf| àà|fẹ́|àwù|́ni|wù |ìír|mìí| mì|láì| yì|í g|ọ́n|n s|i ẹ|ẹ̀k|àgb|ígb|níg|a n| kú|láà|í o|náà| ná|kẹ́|ípa|níp|ìn | ìk|bé |i g|ọmọ| ọm|i à|iṣẹ|̀ à|ìmọ|n a|n f|jẹ |yí |́ ọ|ó d|́ ò| dá| mú|ààb|ábẹ|láb|ìbá|ò g|jú |i o|lú | èt|̀ ẹ|tọ̀|de |̀ n|i ò| ìy|kàn|́n | bí| iṣ|mọ̀|e ẹ|̀ l| fà|èyí| èy| ìd|mọ́|dé |̀ k|́ p|ò t|mú | fẹ| ìj|rí |ìkẹ|nìk|ìní|n ì|n è|sìn|è ẹ| i |rọ̀| àn|́ b|ùn |́gb|ọ́g|dọ́| dọ|í n|rin|̀ j",uzn:"ish|an |lar|ga |ir | bi|ar | va|da |iga| hu|va |bir|sh |uqu|quq|huq| ha|shi| bo|r b|gan|a e|ida| ta|ini|lis|adi|ng |dir|lik|iy |ili|oʻl|har|ari| oʻ|uqi|ins|lan|hi |ing|dan|nin|kin| yo|son|nso| in| mu|on |qig| ma|ega|r i|boʻ| eg|oʻz|ni |gad|ash|i b|ki |oki|ila|yok|a b|n b|osh|ala|at |in |r h|erk| er|lga| qa|rki|h h| sh|i h|ara|n m| ba|nis|ik |igi|lig|bos|ri |qil|a t|bil|las|eti| et|n o|ani|nli|kla|i v|a q|a h|a o|yat| qo|im |a s|i m|iya|atl|oli|osi|siy|qla|cha|til| ol|ati|a y|mas|qar|inl|lat| qi|taʼ|ham|gi |ib |ʻli|mla|h v|ʻz |hun|n e|mum| da| bu| to|un |mki|umk|sha|tla|ris|iro|ha |rch|bar|iri|oya|ali| be|i o|asi|aro| ke|i t|rla| te|arc|hda|shu|tis|n h|tga| sa| xa|rak|lin|ada|ola|imo|hqa|shq|li | tu|aml|lla|sid| as|nid|a i| ki|ch |n t|nda|k b|era|siz|or |hla|a m|r v|eng|ten|mat|mda|amd|lim|miy|y t|ayo|i a|ino|ilg|tni| is|ana|as |ema| em|ech|a a|tar|kat|aka|ak |rat| de|aza|ill| si| so|gʻi|uql|n q|oda|ʼli|aʼl|nik| ni|tda|uch|gin|a u|him|uni|sit|ay |qon| ja|atn|kim|h k|hec| he|ʻzi|lak|ker|ikl| ch|liy|lli|chi|ur |zar|shl|rig|irl|dam|koh|iko|a d|am |n v|rti|tib|yot|tal|chu| uc|sla|rin|sos|aso| un|na | ka|muh|dig|asl|lma|ra |bu |ush|xal|ʻlg|i k|ekl|r d|qat|aga|i q|oiy|mil| mi|qa |i s|jin",zlm:"an |ang| ke|ng | se| da|ada|ara|dan| pe|ran| be|ak |ber|hak|ata|ala|a s|ah |nya| me|da |per|n s|ya | di|kan|lah|n k|aan|gan|dal|pad|kep|a p|n d|erh|eba|nga|yan|rha| ya|nda|ora|tia|asa| ha|ama|epa| or|iap|ap |a b| at| ma|eti|ra |tau|n a|set|au | ba|pa | ad|n p|tan|p o|eng|a d|men|apa|h b|h d|dak|man|a a|ter| te|k k| sa|n b|ana|g a|end|leh|ole|a k|am |n y|aka|eh |lam|bas|beb|n m| un|pen|sa |keb|sam|n t| ti|ela|san|car|uan|ma |di |han|ega|ban|eri|at |sia|a m|ika|kes|ian|gar|seb|ta |mas|und|neg|nan|ngs|i d|erl|na |epe|emb|bar| la|atu|kla|pem|mem|emu|eca|sec|ngg|nny|any|bol|al |aha|gsa|ebe|ind|akl|n h|erk|ung|ena| bo|a t| ap|ers| de|in |tu |pun|as |agi|ann|g b|bag| ne|ain|hen| he|era|rat|sem| su|adi|lan|g s|dia|mat|ses|iad| ta|iha|g t|tin|k m|k h|i k|gi |i s|ing|uka|enu|den|lai|k d|ert|ti |rka|aja|rga|lua|ker|mel|dun|ndu|lin|rli|nak|ntu|esi|aya|un |uat|jua| in|rma|erm|ai |emp|kem|ri |dil|ua |uk |h m|l d|g m|mba|kat|ese|tik|ni |ini| an|mpu|ka |dar|mar|rja|erj|arg|u k|sua| ol|esa|dap|ar |g u|si |ent|g d| pu|awa|iri|dir|sal|gam|mbe|n i|har|a h|raa|ema|tar|i a|saa|ira|ari|pel|jar|laj|uju|tuj|rak|ura|uar|elu|t d|unt|il |wen|asi|gga|ipa|ksa|tuk|ula|sek|sas|ibu|rta|sep|rsa|nta|ati|ila|mua|yar",ibo:"a n|e n|ke | na| ọ |na | bụ|ọ b|nwe|nye|ere|re | n |ya |la | nk|ye | nw| ma|e ọ| ya| ik|a o|a ọ|ma |ụla|bụl|ike| on|nke|e i|a m|ony|ụ n|kik|iki|bụ | a |ka |wer|ta |i n|do |di | nd| ga|a a|e a|a i|he |kwa| ok| ob|e o|hi |any|ga‐|ha |dụ | mm|ndi|ọ n|wa |rụ |e m|che|a e|oke|wu |aka|ite|o n|a g|odo|bod|obo| dị| ez|ara|we | ih|a‐e|hị |ri |n o|zi |mma|chi|dị |ghi|ụta|iri|ihe| an| oh|a y|gba|ụ ọ| ọz| ak| iw|nya|te |iwu| nt|ro |oro|e ị|zọ |ezi|me |e e|u n|her|ohe| si|a‐a|i m|ala|ụ i| ka|akw| in|ghị|kpe|n e|pụt| e |i i|i o|ide|inw|ụ o|hụ |ahụ|weg|ra |o i|kpa|adụ|mad|si |sit|a s| me|sor|i ọ|gid|edo|u o|e y|n a| en|tar|ozu|toz|bi |be |ụ m|ụrụ|ọrụ| ọr|mak|uso|ama|de |ị o| ọn|ọzọ|chị|egh|enw|apụ|ru | to|i a|a ụ|osi|rị |wet|hed|nch| nc| eb| al|nọd|ọnọ|uru|sir| kw|yer|ji |eny| mk|ịrị|eta| us|tu |ọ d|u ọ| o |ba | mb|ọdụ|ịch| ch|a d|pa | ag|kwe| ha|a u|e s|mkp|n u|nta|ebe|n ọ|o m|kwu|nkw|nwa|obi| ịk|esi|i e|nha| nh|le |ile|nil| ni|eme| og|e k|n i|chọ|o y|asị|otu| ot|ram|u m|ịgh|dịg|zu |nọ |mba| gb|e g|ị m|ọch|ich|pe |agb|i ị|uch|zụz|uny|wun|ọrọ| nn|na‐| di|ge |oge|iji| ij|ọha| ọh|ikp|egi|meg|o o|ụhụ|hụh|mah|n ụ|ọ g|ọta|ekọ|ị n|kwụ|agh|ụmụ|ban|kpu|okp| ah|ịkp|a k|ime| im|zụ |ụzụ|ọzụ| ụz|lit|ali|nat",ceb:"sa | sa|ng |ang| ka| pa|an |ga |nga| ma|pag| ng|on |a p|od |kat|ay | an|g m|a k|ug |ana| ug|ung|ata|ngo|atu|n s|ala|san|d s|tun|ag |a m|god|g s|a a|a s|g k|g p|yon|n u|ong|tag|usa|pan|ing|una|mat|g u|mga| mg|y k| us|ali|syo| o |aga|tan|iya|kin|dun|nay|man|nan|a i| na|ina|nsa|isa|bis|a b|adu| ad|n n| bi|asy|asa|lay|awa|lan|non|a n|nas|o s|al |agp|lin|nal|wal| wa|ili|was|gaw|han| iy| ki|nah|ban|nag|yan|ahi|n k|gan| gi|him| di|a u| ba| un|ini|ama|ya |kas|asu|n a|g a|gka|agk|kan|ags|agt|l n|a g|kag| ta|imo|uns|sam| su|g n|n o|gal|kal|og |taw|aho|uka|gpa|ipo|ika|o p|a t| og| si|gsa|g t|aba|ano|gla|y s|o a|aki|hat|kau|sud|gpi|a w|g i|aha|ot |ran|i s|n m|bal|lip|gon|ud | ga|li |uba|ig |ara|g d|na |kab|aka|gba|ngl|ayo| la| hu|a h|ati|d a|d n| pu| in|uga|ok |ihi|d u|ma |may|awo|agb|ami|say|apa|pod|uha|t n|agh|buh|ins|ad | ub| bu|at |iin|a d|ip |uta|sal|hon|wo |ho |tra|lak|iko|as |aod|bah|mo |aug|ona|dil|gik|sos|lih|pin| pi|k s|nin|oon|abu|la |rab|hun| ti|mah|tar|t s|ngb|uma|hin|bat|lao|mak|it | at|s s|sno|asn|ni |aan|ahu| hi|agi|n p|inu|ulo|y p| ni|iha|mag|o n|duk|edu| ed|a e|til|ura|tin|kip|agl|gay|g h|g b|ato|ghi|nab|kon|in |ter|o u|o o|yal|sya|osy| so|tik| re| tr|hig|a o|ha |but|pak|aya",tgl:"ng |ang| pa|an |sa | ka| sa|at | ma| ng|apa|ala|ata|g p|pan|pag|ay | an| na|ara| at|tan|a p|pat|n a| ba|ga |awa|rap|kar|g k|aya|lan|g m|n n|g b|nga|mga| mg|a k|na |ama|n s|a a|gan|yan|gka| ta|may|tao|agk|asa|man|aka|ao |y m|ana|g a|nan|aha|kan|y k|baw|kal|a m|g n|ing|wat| y |t t|pam|a n|o y|ban| la|ali|san|wal|mag| o |g i|aga|lay|any|g s|in |nya|yon|kas|a s|isa|una|ong|aan|kat|t p| wa|ina|tay|ya |on |o m|ila|ag |nta|t n|aba|ili| ay|o a| ga|no |a i|gal|ant|han|t s|kap|kak|lah|ari|agt|agp|ran|g l|lin|as |lal|gaw|ans|to |ito| it|hay|wa |t m| is|pap|mam|nsa|ahi|nag|bat|lip|gta| di|gay|gpa|pin| si|ngk|ung|aki|y n|iti|tat|ano|yaa|y s|mal|hat|kai|sal|hin|uma|mak|di |agi|pun|ihi|a l|i a|ira|gga|nah|s n|ap | ha|usa|nin|o p|gin|ipu|ika|ngi|i n|lag|la |y p|ini|g t|uka|nap| tu|a g|tas|aru|ipa| ip|li |al |n o|a o|t k|alo| pi|sin|syo|asy|ita|aho|nar|par|o s|pak|t a|uha|sas|gsa|ags|kin|a h|iba|lit|ula|o n|nak|a t| bu|duk|kab|sam|g e|ain|ami|mas|lab|ani|kil|it | al|agb|buh|a b|g g|ba | ib|iyo|ri |yag|ad | da|edu| ed|anl|ma |ais|iga|mba|tun|ipi| ki|od |ayu| li|lih|sar|gi |g w|pah|wir|oob|loo|agg|nli|bay|map|git|mil|ok |hon|ngg|sah|iya|pas|g h|agl|tar|ngu|amb|uku|ayo|s a|p n|n m|rus|i m|l a|abu| aa",hun:"en | sz| va| a |és |min|ek | és| mi|jog| jo|an |ind|nek|sze|ság|nde|a v|den|oga|sza|val|ga |mél|ala|emé|gy |n a|van|zem|ele| me|egy|ély| eg|zab|tás| az|n s|bad|aba|ni |az |gye| el|ak | se|meg|sen|ény|ség|k j|yne|lyn| ne|ben|lam|tt |t a|et |agy|oz |hoz|vag|zet| te|n m|ez |nak|int|re |eté|tet|mel|tel|s a|em |ely|let|hez| al|s s| ki|ete|atá|z a| le|yen|es |ra |tés|ell|nt |sem|t s|len|nem|a s|ese|nki|enk|a m|ásá|i m|ban|kin|k m|szt| ál|ame|köz|k a|dsá|ads|ló | kö|ás |ly |on |ébe|tat|a t|n v|áll|mén| vé|nye|kül|lő |a n| cs|i é|ok |ész|ért|lla|lap|ágo|gok|nyi|tek| ke|nd |éte|ami|zés|yes|szo|t m|a a|het|fel|lat|lem|lle|el |z e|s e|k é|mbe|emb|elé|ot |lis|vet|kor|ág |olg| am|szá|ehe|leh|ogo|ott|ül |nte|éle|i v|ogy|hog| ho|kel|n k|tes|nlő|enl|ssá|áza|ház|ég |vel|ába|lek|ége| ha|a h|rés| fe|ány|del|elő|át |alá|art|tar|zto|zás|tő |yil|koz|tko|aló|s k|i e|árs|tár|mze|emz| ny|más|ett|ny |fej|ass|zas| há|d a|t é|is |ésé|ezé|téb| mu|áso|sít|lye|elm|éde|véd|ine|t k|os |it |izt|biz| bi|y a|m l|tot|a j|atk|nél|t n|ti | má|ai |lás|eve|nev|zte| bá|sel|ll |al |ere|n e|unk|mun|t e| ak|ife|kif|ako|s é| ér|ána| es|s t|got|sül| be|vál|csa|se |ése|ad |ges|tos|ja | gy|asz|ten|lmé| tá|eze|árm|bár|ess|l s|üle",azj:" və|və |ər |ir | hə| bi| hü| ol|üqu|hüq|quq|na |in |lar|hər|də | şə|bir|lər|lik|mal|r b|lma|r h| tə|əxs|şəx|ən |dir|uqu|una|an |ali|a m| ma|ikd|ini|r ş|dən|ar |ilə|qun|aq |ası| ya|mək|yət| mə| mü|kdi|əsi|ək |ilm|nin|ndə|olm|əti|ə y|sin|xs |nda|lmə|yyə|i v| qa| az|olu|iyy|ya |ind|zad|qla|ün |ni |lə |tin|n m|aza|arı|ət |n t|maq|lun|lıq|ə b|un |nun|q v|n h|dan|ın | et|tmə|ərə| öz|da |ə v| on|ə a|ına|ını|bil|a b|sı |il |əmi|ara|si | di|ə m|əri|rlə| va|ə h|etm|ığı|ama|dlı|adl|rin|bər|rın|n i|müd|nın| he|mas|ik |n a|dil|alı|irl|ələ|üda|sın|ınd|xsi|li |ə d|nə | bə|əya| in|ə i|lət| sə|nı | iş|anı|eç |heç|q h|eyn|ə e|dır| da|asi|rı |iş |ifa|lığ|i s|fiə|afi|daf| ed|məz|u v|kil| ha|ola|n v|əni|ır |uq |unm| bu| as|sia|osi|sos|ili|ıdı|lıd|nma|ıq |inə|əra|sil|xil|axi|dax|adə|man|a h|ə o|onu|a q|əz | ki|seç| se|ı h|min|lan|ədə|bu |raq|lı |ılı|al |ə q|r v|nla|hsi|əhs|təh|öz |ist| is|məs| əs|ina|ə t|ətl|a v|iə |n b|tər| ta| cə|edi|ala|kim|qu |i t|ulm|məh|n o|aya|ı o|ial| so|ill|siy| də|var|ins|mi |ğı |nik|r i|aql|k h|təm|tam|çün|üçü| üç|ğın|sas|əsa|z h|əmə|zam| za|sti|rəf|n e|r a|ild|həm|ıql|yan|may|n ə|mən|mil| mi|əqi|din|n d|tün| dö|miy|kah|ika| ni|fad|tif|l o|sər|yni| ey|ana|lən|am |ril|ayə|aşı",ces:" pr|ní | a | ne|prá|ráv|na |ost| po|ho | sv|o n| na|vo |neb|ávo|bo |ebo|nos|má | má|ažd|kaž| ka| ro|ch |dý |ždý|ti |ou |a s| př| za|ání|á p| je| v |svo|ého| st|ý m|sti|ně | by|obo|vob|ter|pro|ení|bod| zá| sp|í a|rod|kte|by |mu |u p|o p| ná|ván|jak| ja|a p|o v|í n|ová|oli|ví |spo|roz| kt|mi |í p|ny | ma|ím |i a|do | so|odn|áro|nár|li |né |tví|at |ých|a z| vy|byl|vol|en |ýt |být| bý|t s|tní|stn|o s|í b|to | do|své|vé |ran|ejn|zák|eho|jeh|nes|pří|mí |čin|kol|ají|sou| vš|ích|it |ným|ým |nu |hra|nou|u s|ému| k |du |žen|pod| ze|kla|a v|stv|pol|dní|eré|m p|stá|je |ci |ečn| ni|néh|a n|aké|áva|maj|em |rov|í m|ké |ole|nýc|ova| ve|ako| ta|i k|chr|och| oc|kon|i p|í v|smí|esm|kdo|st |i n|o z|ave|odu|bez| to|sta|ech|jí |o d|sob|se | se|í s|ými|i s| i |i v| vz|ním|pra|lně|při|tát|ste|a j|aby| ab| s |oln|a o|m n|čen|slu|řís| os|zem|mez| či|lní|áln|oci|jin| ji|y b|í z|y s|va |vše|t v|ovn|chn|děl|níc|leč| pl|vat| vo|vin|rav|vou|lad|inn|é v|anu|tej|u k|stu|est| tr|ky |ikd|nik|ivo|nit|zen|u o|ném|nez|iál|ího|len|ens|ože|oko|kéh|rac|ven|í k|e s|lán|ělá|zdě|vzd|t k|din|odi|tí | od|ré |tup|pov|pln|ště|ákl|nno|tak|erá|řed|o a|a t|res|jíc| mu|u z|rok| ob|čno|u a|y k|i j|é n|luš|ísl|oso|ciá|soc|níh|o j|cké",run:"ra |we |wa |e a| mu|a k|se | n | um| ku|ira|ash|tu |ntu|a i|mu |umu|mun|unt|ere|zwa|ege|ye |ora|teg|a n|a a|ing|ko | bi|sho|iri| ar| we|shi|aba|e n|ese|go |a m|o a|gu |uba|ngo|nga|hir| ca|ugu|obo|hob|za |ndi|ish|gih| at|ara|wes| kw|ger|ate|a b| ba| gu|e k|can|ama|ung|bor|u w|mwe|di | ab|nke|ke |kwi|ka |ank|yo |ezw|n u|na |iwe|e m|rez|ri |a g|gir| am|igi|e i|ro |a u|ngi|e b|ban| ak| in|ari|n i|hug|ihu|e u|riz|ang|nta| vy|ata| ub|and|aka|rwa| nt|kur|ta |iki|kan|iza|u b|ran|sha|o n|i n| ig|ivy| iv|ahi|bah|u n|ana| bu| as|aku|ga |uko|o u|ho | ka|ose|ubu|ako|guk|ite|o y|ba |i b|any|kir|o k|aho|iye|kub|amw|nye|aha| ng|o m|nya| it|re | im|o b|izw|kun|hin|e c|vyo|o i|vyi|ngu|uri|imi|imw|gin|ene|u m|zi |ha |kug|bur|uru|jwe| zi|u g|era|aga|ron|abi| y |e y| uk|gek|ani| gi|eye|ind|wo |u a|i a| ib|i i|ras|bat|gan|amb|n a|onk|rik|ne |ihe|agi|kor| ic|ze |tun|ibi|wub|nge|o z|tse|nka|he |rek|twa|gen|eko|mat|ber| ah|ni |ush|umw| bw|mak|bik|ury|yiw|bwo| nk|ma |no |kiz|uro|gis|aro|ika| ya|gus|y i|wir|ugi|uki| ki|a c|ryo|bir| ma| yi|iro|bwa|mur|eng|ukw|hat|tan|utu|wit|w i| mw|y a|mbe| ha|uza|ham|rah| is|irw|o v|umv|ura|eny|him|eka|bak|bun| ny|bo |yig|kuv|wab|key|eke|yer|vye|i y|ita|ya |a r| ko|kwa|o c",plt:"ny |na |ana| ny|a n|sy |y f|a a|aha|ra | ma|nan|n n|any|y n|a m|y m|y a| fi|an |tra|han|ara| fa| am|ka | ts| na|in |ami| mi|a t|olo|min|man|iza|lon| iz|fan| ol| ha| sy|aka|a i|reh|ay |ian|tsy|ina| ar|on |o a|etr|het|ona|y o|o h|zan|y t|a h|ala| hi|a f|y h|ehe|ira|a s|zo |y i|ndr|jo | jo|n j| an| az|ran|dia| dr|y s|fah|ena|ire|tan|dre| zo|mba| ka|m p|afa| di|n d|and|azo|zy |amp|ia |ren|iny|rah|y z|ry |ika|oan|ao |amb|lal|ho | ho|isy|ony|tsa|asa|a d|ha |fia|mis|ava|ray| pi|am |dra| to|rin| ta|ant|eo |zay|rai|tsi|itr|sa | fo| ra|van|ova|nen|azy| vo|mpi|ari|o f|tok|a k| ir|kan|oto|mah|ly |sia| la|n i|voa|haf|a r|ito|y k|oka|y r|y l|ano|ita|ene|its|ial|zon|aza|ain| re| as|fot|aro|fit|nat|nin|aly|har| ko|ham| no|fa |ary|atr|ila|ata|iha|nam|kon|oko| sa|elo|nja|anj|ive|isa|oa |dy |y d|o m|nto|ank|o n|otr|pan|fir|air|sir|ty |a v|sam|o s|tov|mit|rak|reo|o t|pia|tao| ao|no |y v|iar|a e|a z|hit|hoa| it|to |za |ton|eha|end|vy |idi|tin|ati|adi|lna|aln|rov|ban| za|nga|hah|oni|osi|sos|vah|ino|ity| at|hia|pir|ifa|omb|ame|era|vel|kar|va |tso|jak|fid|ifi|ais|o i|idy|la |ama|ba | pa|tot|ani|rar|mpa|haz|kam| eo| il|iva|aho|nao|n k|ato|lah|ovy| te|dro|lan|ela| mo| si|fin|miv|san|koa| he|aso| mb|sak|kav",qug:"ta | ka|ka |na |una|cha|ash|ari|a k|ana|pak|ish|ach|hka|shk|mi |kta|hay|man| ch|apa|ak |rin|ata|kun|har|akt|ita| ha|ami|lla| pa|ama|pas|shp| ma|tak|ayñ|yñi|in |sh |ina|uku|nka|chi|aka|a c|yta|kuy|all|tap|a h|kan| tu|ñit|tuk| ru|run|chu|an |pay|ayt|ris| ki|aku|hpa|ank|a p|kam| sh|nam|a s|uy |i k|ayp|nak|pi |nta|a m| li|ay |lia|hin|kaw|nap|ant|tam|a t|iri|nat| wa|y r|kay|aws| ya|n t|ypa|wsa|pa |lak|shi|a a|lli|iku|hu |n k|iak|yay|kis| al|shu|a w|ipa| sa| il|api|kas|yku|yac|kat|a r|huk|i c|wan|hik|a i|ill|ush| ti|ayk|hpi| ku|kac|say|hun|uya|ila|ika|yuy|pir|ich|mac|ima|a y|yll|ayl|i p|kin|a l| wi|kus| yu|lan|tan|llu|kpi| ta| pi|aya|la |yan|awa| ni|kak|lat|rik|war|ull|kll|li |ink|nch|un |akp|n s|may| ay|uch|i s|nac|sha|iki|kik|h m|ukt|pip|tin|n p|iya|nal|aki| ri|ura|tik|mak|ypi|i m|i w|n m|his|k i|riy|iwa|y h| hu|han|akl|k t|mas|pik|kap| ña|u t|nmi|nis|k a|i y|k l|kar| im|i i|wil|yma|aym|ksi|iks|uma| su|h k|has| ak|unk|huc|kir|anc|k m|pal|k k|ik |iñi| iñ|ma |n y|mun| mu|mam|tac|a n|i t|k r|sam|ian|asi|k h|was|ywa|iyt|llp|san|sum|ray|si |pan|nki|tar| ii|u k|ñik|uk |iña|kuk|wpa|awp|akk|a u|wat|uri| mi|yar|uyk|ayw|h c|ha |tay|rmi|arm|uta|las|yka|llk|kul|wiñ|ati|ska| ll|kit|n h|uti|kic|mat",mad:"an |eng|ng |ban| sa| ka|dha|ren| se| ba|ak | ha|adh|hak| dh|ang|se | pa|aba|a s|na |aga|ha | or|n s|ore|ara| ag|gad|are|ana|n o|ngg|ale|gan|a k|ala|dhu|tab|sar|ota|asa|eba| ot| ke|sab|ba |wi |uwi|abb|i h|huw|aan|n k|a b|bba| ta| ma|pan|hal|bas|ako|dhi|ra |kab|em |beb|ka |lak|gi |lem|g a|eka|n b|ama|nga|san|at |ong|ran|nge|a o|ggu|sa |a d|ane|n p|ken|par|aja|man|gar|ata|nek|apa| na|agi|abe| ga|e e|sal|a a|tan|g s|al |kal|gen|ta |i s|aka|e a|a p|a e| la| pe|nan| an|era|e d| e | be|n a| al|ena|uy |guy|n n|ate| bi|mas|e k|kat|uan|oan|kon|k k|a m|i d|g e|n t|g k|ada|koa|lan|ela| da|bad|ma |ne |as |lab|ega| mo|ar |car|one|i p|bi |kaa|bat|ri |on |pon| so|e b|le |ah |abi|ase|adi|epa| ep|k h|and|pam|te |ok |ste|aon|om |oko|aha|ari|ona|asi|ter| di|di |pad|e s|sad|yar|neg|ton|set|rga|ost|mos|gap|nda|a l|har|i k|ina| a | ng|kom|isa|si |a t|a h| kl|jan|daj|iga|hig|idh|hid|ndh|n m|ngs|tto|ett|arg|la |k b|ler|k d|nna| to|nao|n d|mat| ca|tad|bis|aya|epo|aen| po|bin|nya|kas|k s|n h|sya|nta|gsa|en |ant|n g|kar|i e|das|e t|e p|iba| pr|g p| ho| el|i a|hi |os |sao|uwa|tes| ja|nag|nas|lae|sia|t s|k o|nto|int|yat|arn|m p|duw|adu|eta| ko|i b|ni |g n|kla|rak|ame|mpo|jua|sok|aso|ggi|eja|pel|jam|ele| et|dil",nya:"ali|ndi|a m|a k| nd|wa |na | al|yen| ku|nth|ra |di |se |nse| mu|a n|thu|hu |nga| wa|la |mun|u a|unt|iye| ka|ce |ace| lo|a l|ang|e a| la| pa|liy|a u|ens| ma|idw|ons|dwa|e m|i n|ala|kha|lo |li |ira|era|ene|ga |ana|za |o m| mo|yo |o w| ci|we |dzi|ko |o l|and|dan|hal|zik|chi|oyo|pa |ner|ulu|ena|moy| um|a p| da|ape|kap|ka |iko| an|pen|a c|to |ito|hit|nch| nc|iri|lir|wac|umo|e k|lu |a a|aye| dz|kuk|a z|dwe|tha|mal| za|ing|ufu|mu |ro |ful| uf|o c|i d|lin|e l|zo |edw| zo|o a|mwa|u w|iro|o n|lan|amu|ere| mw|nzi|dza|alo|ri | li|fun|lid|gan|so | ca|kul|ofu|nso|o z|ulo|unz|o k|mul|lam|i c|san|a b|kwa| na|a d| a |una|u k|i l|nkh|ant|aku|ca |cit|oli|ipo|dip|ama|lac|wir|han|yan|osa|uli|tsa|i m|pon|kup|u d|ti |gwi|ukh|ung|hun|lon|ank|nda|iki|ina| ko|ao |diz|phu|ati|oma|i a|tsi|pat|iya|siy|kut| ya|zid|eze|ma |i k|mer|ome|mol|u n|u o|aph|ogw|izo|mba|sid|ku |sam|awi|adz| ad|izi|ula|say|e n|khu| kh|rez|vom|bvo|okh|lok|win|akh|o o| am| on|zir|map| zi|eza|ja |go |ngo|ika|its|ats|osi|gwe| co|isa|ya |haw|ani|o p|zi |ndu|kho|ezo|kir|uni|i u| ay|lal|gal|sa |bom| bo|ola|amb|wak|ha |ba |nja|anj|ban| ba|iza| bu|udz|ngw|bun|oye|o d|nal|kus|i p|i o|i y|wi | nt|e p| si|aka|ne |men|jir|nji|sed|ets|end|eka|uma|du ",zyb:"bou|iz |aeu|enz|eng|uz | bo|ih |oux|nz | di|ing|z g|ux |uq |dih|ngh| ca|ng |gen|ung|z c| mi|miz|ij |cae|z d| gi| de| ge|euq|you| ci|ngz|ouj|aen|uj | yi|ien|gya| gu|ngj|mbo| mb|zli|dae|gij|cin|ang|j d|nae| se| ba|z y|euz| cu|de |x m|oz |j g|ouz|x b|li |z b|h g| da| yo|nj |xna|oxn|rox| ro|h c|nzl|vei|yau|wz |z m|ix | si|i c|iq |gh |j b| cw|nda|yin| hi| nd|dan|vun|inh| ga|can|ei |cun|yie|q g|hoz|bau| li| gy|wyo|cwy|z h|gue|gz |gun|faz|unz|yen|uh |den|ciz| go|q c|gj | bi|ej |aej| fa|hin|zci| wn|j n|goz|gai|au |z s|q d| vu|h m|gva|hu |auj|ouq|az |h d|ya |uek|ci |nh |u d|ou |sou|jso|gjs|din|awz|enj| do|h s|eve|sev|z r|nq |sin|nhy|g g|g b|liz|kgy|ekg|sen|eix|wng|lij|ngq|bin|i d|ghc| ha|bae|hix|h y|j c|ghg|i b|ouh|en |n d|h f|j s|z v|j y|law|hci|anh|inz|q y|nei|anj|ozc|ez |enh|q s|aiq|uen|zsi|zda|hye|ujc|e c|siz|eiz|anz|g y|i g|q n|bie| ne| ae|giz|u c|hgy|g d|gda|ngd|cou| la|z l|auy|ai |in |iuz|zdi|jhu|ujh|yuz| du|j m| fu|cuz|eiq|g c|gzd| co|uyu|coz|zbi|biu| dw|i s|i n|aw |dun|yun|izy|daw| he|nho| ho|enq|x l|cie|q b|cij|uzl|x d|iuj|awj| ya|eij|dei|nde|sae|izc|wnq|wnh|sei|h b|aih|gzs|bwn|a d|u g|ngg|jca|e b|ran| ra|hcu| me|iet|van| bu|guh|hen|si |wnj| ve|u b|azl|inj|gak|gan|ozg|siu|yaw|i m",kin:"ra | ku|se | mu|a k|ntu|tu |nga|umu|ye | um|unt|mun|e n| gu|we |ira|a n| n |wa |ere|mu |ko |gom|a b|e a| ab|li |e k|mba|a a|e b|aba|ga |e u|ba |omb|o k| ba|a u|ose|u b|o a| cy|ash|eng| ag|kwi| bu|za |gih|ren|ndi| ub|ang|yo |aka|gu |igi| ib|a g|a m| nt|uli|o b|ama|ihu|e i|nta| ak|ago|ro |ora| ka|ugu|hug|di |iye|ban| am|cya|ku |ta | bw|and|sha|re | ig|gan|ubu|na | kw|obo| by| bi|a i|yan|ka |sho|kub|era|ese| we|kan|aga|hob|bor|ana|byo|ura|uru|ibi|rwa|wes|u w|no |uko|i m|mo |u a|ure|ili|uba|o n|uha|uga|n a| im|ish|bwa|bwo|wiy|ali|ber|ze |ne |ush|are|o i|u m|ger|bur|ran| ki| no|ane|bye| y |ege|teg|guh| uk|n i|rag|i a|ya |u g|e m|anz|bo |abo|gar|wo |y i|ho |age|ind|o m|eke|a s|ara|zir|ite|kug|kim|aci| as|u n|ani|kir|mbe| gi|yos|kur|ugo|gir|e c|iza|aho|i b|tur|ata|o u| se|u u|zo |i i|aha|nge|mwe|iro|akw|any|eza|uki|imi|o y|ate|u k|iki|atu|bat| in|go |tan|n u|bos| bo| na|hak|iby| at|ihe|ung|ha |bul|kar|eye|eko|gek|nya|o g|shy|e y|awe|ngo|bit|mul|nzi|rer|bag|ge |imw|bah|cir|gac|bak|je |gez|imu|eze|tse|ets|mat| ru|irw|he | ni| ur| yi|ako|ngi| ng|i n|rez|ubi|gus|fit|afi|ugi|uka|amb|o c|utu|ufa|ruk|mug|bas|bis|uku|hin|e g|ige|amo|ing| af|yem|ni | ry|a r|gaz|te |erw|bwe|ubw|hwa|iko| al|ant|zi ",zul:"nge|oku| ng|a n|lo |ung|nga|la |le | no|elo|lun| um|e n|wa |we |gel|e u|ele|nel|thi|ke |nom|ezi|ma |ntu|oma|hi |o n|ngo|tu |nke|onk|o l|uth|ni |a u|lek|unt| wo|o e| lo|mun|umu|pha| ku|ang|ho |kwe|ulu| ne|won|une|lul|elu| un|a i|gok|kul|ath|hla|lok|khe|eni|tho|ela|zwe|akh|kel|a k|enz|ana|ban|aka|u u|ing|ule|elw|kho|uku|ala|lwa|gen| uk|wen|ama|na |e k|ko |gan|a e|he |zin|enk|o y| ez|kat| kw|lan|eth|het|o o| ok|okw|i n|nzi|aba|e a|hak|lel|lwe|eko|ane|ka |so |yo |ayo|o a|uhl|nku|nye| na|thu|mph|do |ben|ise|kut|ike|kun| is| im|hol|obu|fan|i k|e w|nhl|nok|ini|and|kuh|ukh|kuk| ak|e i|isi|aph|zi |ile|eki|ekh| ba|eka|the|a a| le| ye|kwa|e e|fut| fu|za |mal| ab|ebe|isa| em|o w|kub|mth|i w|ndl|emp|any|olo|ga | ko|nen|nis|alu|ith|eli|ndo|seb|nda| ya|i i|eke|vik|ake|uba|abe|ezw|yok|ba |ale|zo |olu|ume|ye |esi|kil|khu|yen|emi|nez|hlo|a l|ase|ula|kek|a o|iph|o u|no |azw|kan|mel|uny|ne |ufa|ahl|lin|hul|ant|und|sa |enh|kus|kuv|lak| in|o i|din|kom|amb|zis|ind|ola|uph|wez|eng|yez|phe|phi|mba|nya|han|kuf|nem|isw|ani|iyo| iy|fun| yo|uvi|i a|ene|izi| el|cal|i e|eze|ano|nay|hwe|kup|lal|uyo|ubu|kol|oko|ulo| la|e l|tha|nan|mfu|hon|nza|hin| ey|omp|da |bo |ilu|wak|lon|iso|kug|nka|ink|i l|sek|eku| ek|thw|gez",swe:"ar |er |tt |ch |och| oc|ing|ätt|ill|rät|en | ti|til|för|ll | rä|nde| fö|var|et |and| en|ell| ha|om |het|lle|lig|de |nin| de|ng | in| fr|as |ler| el|gen|nva|und|att|env|r h| i |r r|ska|fri| so|har|der| at|ör |ter|all|t t| ut|den|ka |lla|som|av |sam|ghe|ga | sk| vi| av|ete|la |ens|t a| si|r s|iga|igh|tig| va|ig |a s| st|ion|ra |tti|a o| är|ten|ns |t e|na | be|han| un| an| sa|a f| la| gr| må|nge|n s|vis|lan|må |ati|nat| åt|an |nna| li| al|t f|ans|nsk|sni|gru|äll|tio|ad | me|isk|kli|s f|t i|stä|t s|ri |med|sta|h r|lik|da |dig|ta |r o|run|on | re|lag|tta|är |kap|a i|a r|änd|erv|n e|kte|n f|rvi|nom|itt|id | mo|sky|r e|ver|äns|vil|gt |igt| na|tan|uta|dra|t o|ro |isn| fa|kal|ihe|rih|erk|r u|e s|per|l v|vid|one|rel|ber|ran|ot |mot|ndl|d f|ed |ika|män|l s|bet|t b|dd |ydd|kyd|n o|s s|str|n m|tet|sin|r f| om|rna|int|r i|end|nad|l a|ap |ers|nda|t v|ent|rbe|arb| hä|ets|häl|amh|ckl|gar|nga|r m|je |rje|arj|n i|s e|lin|r t|i s|rän| pe|ilk|t l|ern|på | på|täl|d e|dom|ege|g e|tni|r a|lit|ras| så|lln|kil|ski|enn|i o|a d|erä|n a|ara| ge|äro|a m| ar|t d|ilj|els|yck| ve|g o|frå|nas|tra|ess|del|m s|liv|l l|in |v s|g a|ast|e e|val|son|rso|e t|age|nd | eg|ial|cia|oci|soc|upp|igi|eli|g s|rkl|gad|ndr|nte|öra",lin:"na | na| ya|ya |a m| mo|to | ko|li |a b| li|o n| bo|i n|a y|a n|ki |a l|kok|la | ma|zal|i y|oki| pe|ngo|ali|pe |so |nso|oto|ons| ba|ala|mot|a k|eng|nyo|eko|o e|nge|yon| ny|kol|lik|iko|a e|o y|ang|ye | ye|oko|ma |o a|go | ek|ko |e m|aza|te |olo|sal|ama|si | az|mak|e b|lo | te|ta |isa|ako|amb|sen|ong|e n|ela|oyo|i k|ani| es|o m|ni |osa| to|ban|bat|a t|mba|ing|yo | oy|eli|a p|mbo|o p|mi | mi| nd|ba |i m|bok|i p|isi|mok|lis|nga|ge |nde|koz|bo |gel|ato|o t|mos|aka|oba|ese|lam|kop| ez|lon|den|omb|o b|ota|sa |ga |e a|e y|eza|kos|lin|esa|e e|kob|e k|sam|kot|kan|bot|ika|ngi|kam|ka | po|gom|oli|ope|yan|elo| lo|ata| el|bon|oka|po |bik|ate| bi|a s|i t|i b|omi|pes|wa | se|oza|lok|bom|oke|som|zwa|mis|i e|bek|iki| at|ola|ti |ozw|lib|o l|osu|oso|e t|nda|ase|ele|kel|omo|bos|su |usu|sus|bal|i l|ami|o o|bak| nz|pon|tel|mob|mu | ep|nza|asi|mbi|ati|kat|le |gi |ana|oti|ndi|tan|a o|wan|obe|kum|nya|mab|bis|nis|opo|tal|mat| ka|bol|and|aye|baz|u y|eta| ta|ne |ene|emb|sem|e l|gis|ben| ak| en|mal|obo|gob|ike|se |ibo|’te| ’t|umb| so|mik|oku|be |mbe|bi |i a|eni|i o| mb|tey|san| et|abo|ebe|geb|eba|yeb|bu | as|ote|sik|ema|eya|ibe|mib|ai |pai|mwa|kes|da |may|boz|amu|a a|kom|mel|ona|ebi|ia |ina|tin| ti|bwa|sol|son",som:" ka|ka |ay |uu |an |yo |oo |aan|aha| wa|da | qo| in| u |sha| xa|a i|ada|iyo| iy|ma |ama| ah| la|qof|aa |hay|ga |a a|a w|ah | dh|a s| da|in |xaq| oo|a d|aad|yah|eey| le|isa|lee|u l|q u|aq | si|taa|eya|ast|la |of |iya|sa |y i|u x|sta|kas|xuu|uxu|wux| wu|iis|nuu|inu|ro | am| ma|a q|wax|dha|ala|kal|nay|f k|a k|le |ku | ku| sh|o i|a l|ta |maa|a u|dii|loo| lo|o a|ale|ara|ana|iga|o d| uu|ha |lo |o m|o x|doo|aro|kar|yaa|gu |si |ima|na | xo| fa|adk|do |a x|ad |aas| qa| so|a o| ba|lag| aa| he|dka|adi|soo|o k|aqa| is|ash|u d|had| ga|eed|san|u k|a m|iin|i k| ca|u s|n l|yad|rka|axa|elo|hel|aga|hii|o h|o q| ha|id |n k| mi|baa| xu|har|xor|aar|ax |mad|add|nta|mid|aal|waa|haa|ina|qaa|daa|agu|ark|o w|nka|u h|dad|ihi| bu| ho|naa|n a|ays|haq|a h|o l| gu|o s|aya|saa|lka| ee| sa|dda|ab |nim|quu|gga|ank|kii|rci|arc|n s|a g| ji|gel| ge|eli|ysa|a f|siy|int|laa|uuq|uqu|xuq| mu|i a|uur|mar|ra |iri|o u| ci|riy|ya |ado|alk|dal|ee |al |rri|ayn|asa| di|ooc|aam|ofk|oon|to |ayo|dar| xi|dhi|jee|a c| ay|yih|a j|ban|caa|lad|sho|d k|ida|uqd|agg|sag|ras|bar|ar | ko| ra|o f|gaa|gal|fal|u a| de| ya|o c|ii |xay|eel|aab|sig|aba|orr|hoo|u q|y d|ed |ho |sad|qda|h q|fka|n i|xag|n x|qay|lsh|uls|bul|u w|jin| do|raa| ug|ido|ood",hms:"ang|gd |ngd|ib | na|nan|ex | ji|eb |id |d n|b n|ud | li|nl |ad | le|jid|leb|l l| ga|ot | me|x n|anl|aot|mex|d g|b l|d d|ob |gs |ngs|jan| ne|ul | ni|nja| nj|lib|ong|nd | zh|jex| je|b j| sh|ngb| gh|gb | gu|gao|l n|han| ad|gan| da|t n| wu|il |x g|nb |b m| nh|she|is |l j|d l|nha|l g|d j|b g|el |end|wud|nex|gho|d s|d z|oul|hob|ub |nis| ch| ya|it |b y|eib| gi|s g|lie| yo| zi|oud|s j|d b|nx | de|es |d y| hu|uel|gue|ies|aob|you| ba|d m|chu|gia|dao|b d|s n|zib| go|zha|eit|hei|al |hud| do|nt |ol | fa|t g|hen|ut |gx |ngx|ab |fal|x j|b z|ian|d h|don|b w|t j|iad|nen| xi|gou|d c|b h|hao|x z|nib|anx|ant|gua| mi|s z|dan|ox |inl|hib|lil|uan|and| xa|b x| se|x m|uib|hui|d x|anb|enl| we|od |enb| du|at |ix |s m|bao| ho|hub| ng|zhi|jil|l s|yad|t m|t l|yan| ze| ju|heb|had|os |aos|t h|l d|nga| he|b a|xan|b s|sen|xin|dud|jul|d a|lou| lo|dei|d w| bi|b c| di|zhe|gt |ngt|x l|bad|x b| ja|hon|zho|blo| bl|d k| ma|deb|l z|wei| yi| qi|b b|x d|d p|eud| ge|x a|can| ca|t w|lol| si|hol|s w|aod|pao| pa|ren| re|x s|eut|pud| pu|aox|mis|gl |ngl|x w|zei|gon|enx|gha|s a|b f|l y|oub|eab|hea| to|did| ko|unb|ghu|t p|x c|geu|t s|x x|jao|ed |t c|l m|l h|jib|ax |l c|d f|nia| pi|eul|d r| no|min|l t|heu|ux |tou|ns |s y|iel|s l|hun",hnj:"it | zh| ni|ab |at |ang| sh|nit| do|uat|os |ax |ox |ol |nx |ob | nd|t d|zhi|nf |x n|if |uax| mu|d n|tab| ta| cu|mua|cua|as |ad |ef |uf |id |dos|gd |ngd|hit|ib |us |enx|f n|she|s d|t l|nb |ux |x z|ed |inf|b n|l n|t n|aob|b z| lo|ong|ix |dol| go|zhe|f g| ho| yi|t z|d z|b d| le|euf|d s|ut |yao| yo| zi|gb |ngb|ndo|enb|len| dr|zha|uab|dro|hox| ge|nen| ne|han| ja|das|x d|x c|x j|f z|shi|f h|il | da|oux|nda|s n|nd |s z|b g| ny|heu| de|gf |ngf| du|od |gox| na|uad| gu|inx|b c| ya|uef| xa| ji|ous| ua| hu|xan|hen|zhu|nil|jai|rou|t g|f d| la|enf|ged|ik | bu|nya|you|f y|lob|af |bua|uk |is |yin|out|of |l m|ud |hua| qi|ot |t s| ba|ait| kh|s s|nad| di|aib|x l|lol| id|dou|ex |aod|bao| re| ga|d d|b y|las|hed|b h|b s|f b|t y|jua| ju| dl|x s|hue|b l| xi|zif|dus|b b|x g|hif|x y|hai| nz|sha| li|x t| be|d j|und|hun|ren|d y|hef|xin| ib|b t|l d|aos|s l| ha|gai|nzh|gx |ngx| ao|s b|s x|el |gt |ngt|hik|aid|s t|x m|f l|f t| pi|aof|t r|eb | gh|s y|d l|gua| bi| za| fu|t h| zu|hou|deu|lb | lb|d g| mo|b k| bo|iao|ros|gon|eut|x h|al |uaf|hab|t t|k n|f x|hix|pin|yua| no|t b|ak | zo|s m| nb| we|d b|gha|f s|mol|euk|dax|l b|nof| ko|lou|guk|end|uas|t k|dis|dan|yol|uan|d t|x b|lan|t m| ch|jix|x x| hl|aox|zis|x i|et | ro",ilo:"ti |iti|an |nga|ga | ng| it| pa|en | ma| ka| a | ke| ti|ana|pan|ken|ang|a n|agi|a k|n a|gan|a m|a a|lin|ali|aya|man|int|teg|n t|i p|nte| na|awa|a p|na |kal|ng |dag|git|ega|sa |da |add|way|n i|n n|no |ysa|al |dda|n k|ada|aba|nag|nna|ngg|eys| me|a i|i a|mey|ann|pag|wen|i k|gal|gga| tu|enn| da| sa|nno| we|ung| ad|tun|mai| ba|l m| ag|ya |i s|i n|yan|nan|ata|nak| si|aka|kad|aan|kas|asa|wan|ami|aki|ay |li |i m|apa|yaw|a t|mak| an|i t|g k|a s|ina|eng|ala|ika|ama|ong|ara|ili|dad| aw|gpa|nai|et |yon|ani|aik|on |at |oma|sin|bal|ipa|n d|uma|g i|ket|ag |in |aen|n p|ram|sab|aga|nom|ino|lya|ily|syo|i b| ki|nia|agp|gim|kab|asi|kin|iam|ags|bab|oy |toy|n m|agt| ta|bag|sia|g a|gil|mil| um|o p|ngi|n w|i i|pad|pap|daa|iwa|naa|eg |ias|ed |nat|bae|o k|saa|san|pam|gsa|ta |kit|ma |dum|yto|tan|i e|t n|uka|t k|apu|lan|sta|sal| li|a b|ari|g n|den|mid|ad |o i|y a|ida|ar |aar|y n|dey| de| wa|a d|ak |bia|ao |tao|min|asy|mon|imo| gi|maa|sap|abi|i u|aib|kni|i l|gin|ged|o a| ar|kap|pul|eyt|abs|ibi| am|akn|i g|kip|isu|g t|bas|nay|ing|i d|kar|ban|iba|nib|t i|as |d n|y i|ura|a w|nal|aad|i w|lak|adu|kai|bsa|duk|edu| ed|may|agb|agk|tra|gge|sol|aso|agr|ngs|ian|ila|dde|edd|tal|aip|kua|umi|pay|sas|ita|pak|g d|ulo|inn|aw "},Cyrillic:{rus:" пр| и |рав| на|пра|ств|го |ени|во |ове| ка|на |ть | по|ия |о н| об|ет | в |сво| св|аво|ани|ост|ого|ый |ажд|лов|т п| им|ния| че| со|ело|име| не|льн|ли |чел|каж|ест|век|ать|ова|или| ра|ек |й ч|дый|жды| до|ие |еет|мее|но | ил|ии |ся |его|обо|и п|ние|к и| бы|и с|и и|ми |бод|воб|ван| за|ой |ых |ом |лен|аци|енн|о с|о п|ьно|тва|тво|при|ног|аль|ако|ва |и н|сти|ных|то |бра|олж|дол|сто|и в|ным|ое | ег|нов|их |ель|тел|ти |нос|не |пол|раз| вс|и о| ли|и р|ыть|быт|вле|ред|ию |тор| ос|ься|тьс|оди|щес|я и|как|про|жен|ым |пре|а с|сно|е д|нно|о и|ий | ко|о в| ни| де|сту|лжн|сов|е в|ном|оль|ран|оже|иче|ей |аст|нны| от|туп|м и|одн|зов|рес| мо|осу|ля |осн|а о|вен| то|о б|шен|тве|общ|а и|е м|ьны|обр|вер|чен|я н|жно|чес|ак |лич|нии|е и|все|бще|ват|есп|мож|й и|ное|о д|бес| во|я в|ду | ст|дно|она|нац|ден|ежд|х и| бе|и д|ны |дос|для| дл| та|льс|ате|ции|я п|ую |ите|е о|ной|под|ото|стр|ста| ме|ели| ре|я к|тоя|ами|ен |ь в|ю и|азо|гос|м п|ь п|т б|жет|уча|суд|ьст|дст|щит|ащи|защ|кон|нию|ам |оду|ере|гра|печ|о о|оро|кот|и к|тра|ник|уще|циа|оци|соц|нал|еск|о р|ког|дру| др|ни |ава|нст|ем |авн|ыми|едс|дин|дов| го| вы|в к|ые |обе|му |я е|слу|уда|так|кой|ту |иту|зак|ход|вол|раб|кто|икт|ичн|нич|от |ина| к |тер|род|нар",ukr:"на | пр|пра| і |рав| на| по|ня |ння| за|ого|ти |во |го | ко|аво| ма|люд|о н| не| лю|юди|ожн|кож|льн|жна|дин|ати|ає |их |ина|пов|сво| св|анн|є п|має|або|а л| бу|не |енн|бо | аб|а м|ови|ні | ви| ос|аці|вин| та|без|обо| ві| як|ере| до|і п|ува|о п|аль|них|ом |ми |іль|ног|та |ий |при|ою |ть |ста| об|ван|инн|ті |ост| у |ся |ват|бут|ист| мо|езп|ути|нов|пер|ії |и п|бод|воб|ств| в |о в|від| бе|ако|під|тис|кон|но |ва |нні|і с|а п|сті| сп|ний|ду |ьно|она| ін|дно|ним|ій |а з|ну |мож|її | її|ля |соб|му |ої |яко| пе| ра|ід | де|і в|и і|чин|вно|ому|ном|у п|і н|а с| су|а о|нен|ися|ово|нан|одн|у в|і д|ава|ідн|рів| рі|і р|ими|віл|им |ції|о д|а в|сту|оду|буд|ова| пі| ні|я н|е п|нац|и с|нна| од| ро|нос|ьни|ють|и з|ки |і з|а б|спр|чен|же |оже|е м|овн|рим|е б|то |ніх|осо|удь|ві | ре| ст|рац|до | со|роз|лен|вни|івн|род| вс|спі|ков|зпе|ів |для| дл|ї о|хис|ахи|зах|‐як|ь‐я|дь‐|я і|так|зна|заб|сть|ту |ною|а н|тор|сно|о с|жен|ціа|оці|соц|інш|і м|кла|и в|тер| ді|іст|ові|у с|я в|аро|сі |віт|сві|осв|роб|піл|рес|за |печ|абе|ку |лив|ерж|дер|в і|авн|тав|ав |ами|ком|вле|о б|ь п| що|їх |тво|хто|іхт|ког| кр|ано|тан|іал|нал|нь |х п|жно|леж|але|про|тва|рат|о о|х в|нар|льс|цій|кор|час|ржа|ї с|ину|дст|о з|раз|мін|а р|зак",bos:" пр| и |рав|на |ма |пра| на|има| св|а с|да |а п|во |је |ко |ако|о и| по|аво|е с|а и|ти | им| да| у |сва|но | за|о н|ва |и п|или|вак|ли | ко|не | ил|кој| не| др|ост| сл|ња |им |и с|у с|и и|ава|ије|а у| би|ств|се |вањ|а д|ом |јед|бод|обо|лоб|сло| се| ра|их |сти|а н|ње | об| је|при|дру|у и|ју |о д|ити|вој|раз|ање|ова|дје| ос|е и|ло |е п|ања|ује|и д|бра|тре| тр| су|у з|а к|ог |у п|оје|циј|реб|а о|а б| ње|и у|миј|ни |нос|ба |едн|сво|њег| из|про|е д|жав|бит| ни|и о|ста|а з|авн|вје| ка|бил|ово|а ј|ају|ист|и н|них|јел|ту |ред|гов| од|е о|оји| см|ја |о к|ило|аци|е у|пре|о п|еба|у о|су |вим|ичн| са| дј|а т|ија|шти|чно|ржа|држ|сту|дна|одн|ени|за |ива|ном|ем |ду |ран|вно|сми|јер|е б|е н|де |пос|м и| до|у д|нак|а р|обр| мо|ним|его| кр|тит|кри|ве |ан |ико|ник|ну |и м|ног|ено|сно|е к|туп|руг|ка |ода|рив|вољ|алн|м с|иту|ашт|заш|ани|сам| ст|акв|ови|осн|род|аро| ми|ји |тва|дно|нст|ак |ите|љу |вич|рад|у н|у м| та|дст|тив|нац|рим|кон|ку |њу |оду|жив|амо|тво|тељ|под|ећу|г п|нов|ина|нар| вј|и б|ој | ов|аве|ву |анс|оја|зов|азо|уде|буд| бу|е т|и в|ења|еди|ниц|нап|мје| ис|слу|едс|о о|зак|и к|м п|тно|иво|ере|нич|как|ада|вни|уги| ро|мов|вен|о с|то |те | вр| бе|ара|кла| бр|у б|у у|и т|она| он|ави|јал|дни| ск",srp:" пр| и |рав|на |пра| на|ма | св|има|да |а п|во |ко |ти |аво| по|а и|ако|а с| за| у |о и| им|и п|ва |сва|вак| да|о н|е с|ост| ко|ња |ли |или|не |ом | не|а н| сл| ил|је | др|и с|но |кој|у с|ава| ра|ог |сло|ју |им |сти|бод|обо|лоб|ити|а о|ств|и у|а д|ни |јед|у п|при|едн| би|и и|а к|о д|ста|их |дру|а у| је|ања| ос| ни|нос|про|ају|и о| де| су|у и|се |ње |ја |ова|и д|циј| об|ује|ред|жав|е и|е п|а ј|дна| се| од|ве | ка|ени|ржа|држ|а з|авн|ења|аци|вој|ово|у у|м и|оја|вањ| из|ија|у з|ање|ран|е о|род|и н|е б|раз|за | ње|гов|ичн| ст|нов|сно|осн|ду |пре| тр|су |ву |одн|а б|сво|њег|ним|них|ту |тит|шти|ку |ном|бит|е д|ме |ико|чно|оји|ло |вно|ник|ика|без|ара|де |у о|вим|нак| са|рив|аве|ан |вољ| кр|о п|сме|е к|ног|ји | ов|е у|тва|бра|руг|реб|тре|у д|ода| мо| вр|ављ|у н|его|дел|м с|кри|о к|ашт|заш|њу | см|ани| ли|дно|еђу|алн|ла |акв|ој |ком|сту|уги|ави|а р|ка |рад|оди|вич|тав|иту|уде|буд| бу|пот|оду|жив|ере|тво|ило|бил|аро|е н|ови|пор|ено|штв|нац|ове|м п|туп|пос|рем|дни|ба |нст|а т|оју|аст|ива|е м|вре|вља|ну |беђ|ист|ен |те |дст|рот|зак|ао |као|и к|јућ|о с|ст |сам|м н|тер|нар| ме|и м|кол|е р|ушт|руш|вер|как| бе|и б|кла|ада|еба|ена|она| он|тву|анс| до|рак|слу|и в|ниц|у к|мен|врш|еме|едс|иви|о о|јав",uzn:"ан |лар|га |ир | би|ар | ва|да |ига| ҳу|ва |бир|уқу|қуқ|ҳуқ| ҳа|р б|ган|иш |ида| та|а э|ини|ади|нг |дир|иши|лик|лиш|ий |или|ари|уқи|ҳар|лан|инг|ши |дан|нин|инс|кин|сон|нсо| ин| му|қиг| ма|он |р и| бў|эга| эг| ўз|ни |бўл|гад|и б|ки |ила|ёки| ёк|а б|н б|ин |р ҳ|ала|эрк| эр|лга| қа|рки|ш ҳ|и ҳ|н м| бо| ба|ик |ара|иги|лиг|ри |қил|а т|бил| эт|ниш|нли|кла|и в|бош|эти|ани|им |и м|оли|қла|а ҳ|лаш|атл|тил|а қ| ол|оси|мас|қар|инл|лат| қи|таъ|ҳам|ги |иб |мла|ўз |н э|мум| да| бу|ат |ш в|ун |ати|мки|умк|тла|иро|ўли|бар|ири|риш|ият|али| бе| қо|а ш|аро| ке|и т|рла| те|ча |рча|арч|а ў| шу|тиш|н ҳ|тга| са|аси| ха|рак|лин|ола|имо|шқа|ли | ту|амл|лла|сид|н ў| ас|нид|а и| ки|н т|нда|к б|ера|ошқ|сиз|ор |а м|р в|енг|тен|мат|мда|амд|лим|й т|ят |и а|ино|илг| то|тни|ана|ас |эма| эм|а ё| ша|аш |а а|тар|кат|ака|ак | де|аза|илл|сий| си| со|уқл|н қ|ода|ъли|аъл|ник|ада| ни|тда|гин|уни|сит|ай |қон|н о| жа|ким|еч |ҳеч| ҳе|ўзи|лак|кер|икл|лли|ур |зар|шла|риг|ирл|дам|коҳ|ико|а д|ам |н в|рти|тиб|тал| иш|чун|учу| уч|сла|а у|рин|сос|асо| ун|на | ка|муҳ|диг|ч к|асл|лма|ра |бу |хал|ўлг|и к|екл|р д|қат|ага|и қ|оий|мил| ми|қа |и с|жин| жи|син|рор|а в|лад|а о|тли|мия|н и|аб |тир|з м|дав|рга|аги|а к|нла|ақт|вақ|арт|аёт|лаб",azj:" вә|вә |әр |ир | һә| би| һү| ол|үгу|һүг|гуг|на |ин |лар|һәр|дә | шә|бир|ләр|лик|мал|р б|лма|р һ| тә|әхс|шәх|ән |дир|угу|уна|ан |али|а м| ма|икд|ини|р ш|дән|ар |илә|гун|аг |асы| ја|мәк|јәт| мә| мү|кди|әси|әк |илм|нин|ндә|олм|әти|ә ј|син|хс |нда|лмә|јјә|и в| га| аз|олу|ијј|ја |инд|зад|гла|үн |ни |лә |тин|н м|аза|ары|әт |н т|маг|лун|лыг|ә б|ун |нун|г в|н һ|дан|ын | ет|тмә|әрә| өз|да |ә в| он|ә а|ына|ыны|бил|а б|сы |ил |әми|ара|си | ди|ә м|әри|рлә| ва|ә һ|етм|ығы|ама|длы|адл|рин|бәр|рын|н и|мүд|нын| һе|мас|ик |н а|дил|алы|ирл|әлә|үда|сын|ынд|хси|ли |ә д|нә | бә|әја| ин|ә и|ләт| сә|ны | иш|аны|еч |һеч|г һ|ејн|ә е|дыр| да|аси|ры |иш |ифа|лығ|и с|фиә|афи|даф| ед|мәз|у в|кил| һа|ола|н в|әни|ыр |уг |унм| бу| ас|сиа|оси|сос|или|ыды|лыд|нма|ыг |инә|әра|сил|хил|ахи|дах|адә|ман|а һ|ә о|ону|а г|әз | ки|сеч| се|ы һ|мин|лан|әдә|бу |раг|лы |ылы|ал |ә г|р в|нла|һси|әһс|тәһ|өз |ист| ис|мәс| әс|ина|ә т|әтл|а в|иә |н б|тәр| та| ҹә|еди|ала|ким|гу |и т|улм|мәһ|н о|аја|ы о|иал| со|илл|сиј| дә|вар|инс|ми |ғы |ник|р и|агл|к һ|тәм|там|чүн|үчү| үч|ғын|сас|әса|з һ|әмә|зам| за|сти|рәф|н е|р а|илд|һәм|ыгл|јан|мај|н ә|мән|мил| ми|әги|дин|н д|түн| дө|миј|каһ|ика| ни|фад|тиф|л о|сәр|јни| еј|ана|лән|ам |рил|ајә|ашы",koi:"ны |ӧн | бы|да | пр|лӧн|рав| мо|пра| да|быд| ве|орт|лӧ |ӧй |мор|ӧм |аво| не|во |ыд |ыс |нӧй|ын |м п|д м|ыны|тны| ас|тӧм|льн| эм|вер|сь |ьнӧ|эм |н э|тлӧ| кы|сӧ | по|ерм|сьӧ|ртл|аль| кӧ|эз | ӧт|ӧ в|то |ето|нет|ылӧ| ко|тшӧ| от| и |ы с|бы |ӧ б|ств|кӧр| вӧ|шӧм|кыт|та |на |з в| се| до|вол|ӧс | сы|ы а|ола|рмӧ|ас |оз | оз| сі|а с|тво|с о| вы|ліс|ӧ к|ытш|ӧ д|ис |ісь|ӧтн|ась| ол| на|аци| эт|а в|злӧ|сет| во| чу|лас|лан|мӧ |тыс|рты|ӧрт|ы п|ӧтл|о с|эта|дз |кӧт|ӧдн|вны| мы|н н|удж| уд|выл|ӧ м|рті|орй|ись| со|воэ|ыдӧ|й о|кол| го|с с|сси|сыл|ысл|йын|кин|олӧ|тӧн| сь|ана|ӧр |ция|а д|ӧмӧ| ви|з к| эз|ы б|тӧг|ӧт |мӧд|ест|ост|ӧны|тир|оти|укӧ|чук|н п|онд|пон|слӧ|кер| ке| об|сис|суд|а н|дор|кон|нек|н б|лӧт|с в|ті |ьӧр|тра| ст|нал|она|нац|н к|кӧд|ӧг |скӧ|ть |етӧ|дӧс|быт|рны|ӧ н|тсӧ|рре|а б|нда|с д|асс|ы к|асл| ло|ьны|сьн|ы м|еки|ы д| мӧ|ь м|ы н|ытӧ| ме|рйӧ|иал|й д|итӧ|а к|ӧсь|мӧс|овн|зын|а п|отс| ли|оля|ӧ а|осу|ӧя |нӧя|езл|рез|мед|с м| сэ|ь к|рйы|ако|зак| за|ьын|ннё|мӧл|умӧ| ум|ы у|н в|м д|н с| дз|н о|ран|стр|озь|поз|з п|о д|циа|оци|соц|ион|а м|еск|чес|нӧ |з д|тсь|бӧр| бӧ| ов|вес|кыд|ӧ с|воы|код|тко|ӧтк|оль|дбы|едб|сьы|чын|тчы|ӧтч|тла|мӧн|сла|йӧз| йӧ|т в|ы и|ез |о в|оны|йӧ |анн|ӧль| пы|ан |нӧс|нит| су|м с",bel:" пр|пра| і |ава|на |рав| на| па|ны |ва |або|ць | аб|ае | ма|аве|анн|ацы|сва| св|е п|льн| ча|не |ння|ала|а н|ай |лав|чал| ко| ад| не|га |ожн|кож|век|ня | як|жны|ы ч|мае|а п|ага|бо |ек |а а|ца |цца| ў | за|ых |пав|а с|го |він|дна|бод|мі |ваб|ван|ам | вы| са| да|ста|аві|нне|асц|най|цыя|наг|ара|і н|к м|яго| яг|ьна|пры|аць|і п|одн|ств|ама|ных| бы|тва|дзе|аль| ра|ні |і с|і а|ыць|а б|енн|лен|ці |оўн|ым |рац|інн|іх | ас| та|то |нас|які| дз|чын|оль|і д|аво|ад | ні|сці|ымі|ным|быц|я п|ьны|ыя |аро|ана|іна|і і|рад| гр|ля |ўле|о п|а ў|рым|пад|ыі | ін|амі|дзя|рам|цыі|аба|а і|ду |жна|ўна|нал|нац|ры |эта|гэт| гэ|нен|да |ах |гра|кац|ука|а з|кі |адс|ў і|нст|энн|я а|нні|оду|а р|нна|ход|нан|пер|х п| у |адз|і р|мад|м п|е м|аду|дст|для| дл|оў |нае|і м|ако| ка|ы ў|бар|е а|ацц|ую |ыцц|сам|яўл|але|род|раб| пе|што| ўс|адн| су|роў| ро|дук|люб|ь с| шл|раз|нав|зна|вол|удз|ада|жыц|чна|ве |а т|асн|сац|ера| рэ|яко|кла|аны| шт|ь у|аюц|нар| ус|соб|асо|пам|я ў|авя|чэн|воў|так|ну |ю а|ь п|зак|кар|е і|ь а|бес|ія |кія|х і|заб|аса|ім |жав|і з|леж|тан|ахо|яль|ыял|о с|яна|кан|ака|інш|алі|вы | мо|нах|я я|м н|ога| бе|й д|о а| ст|ены|і ў|а д|есп|шлю|цця|ы і|ыст|рыс|люч|клю|тац|уль|ынс|ачы|спр| сп|аў |ыма|ары|кам|е ў|і к|кон",bul:" на|на | пр|то | и |рав|да | да|пра|ств|ва |а с|а п|во |но |ите|та |о и|ени| за|не | не|а н| вс|ван|аво|ото|е н|о н|а и|ки |ие |те |ни |има| им|ли |или|ия | по|ове|ане|чов|ма | чо|и ч|а д|ние|и д|ест| ил|ани|век|все| об|ек |еки|сек|ава|тво|сво| св|вот|а в|и с|ост| ра|ова|а о|е и|ват|и н|е п|к и|а б| в |и п|лно|о д| се|раз|ето|ъде|бъд| бъ|при|ата| ко| тр| ос| съ|бод|обо|воб|ат |за |тел| е |аци|о с|де |о п|ен |бра|и в| от|се |ния|алн| де|его|нег| из|от |ран|ята|как|оди|е с|и и|ден|пре|бва|ябв|ряб|тря|нит| ка|ява|про|ст |а з|гов|вен|тве|о о|а р|акв|о в|и з|ред|нос|ият|е д|щес|нов| ни|ция| до|йст|о т|е т|ржа|ърж|дър|ено|пол| с |обр|тва|нот|рес|ейс|и о|е в|кой|общ|лен|она|нац|иче|ез |без| бе|ежд|ува|вит|ри |зак|и к| ли|а е|под|ели|ник|си |е о|а т|авн|и р|т с|ка |оет|елн|нен|ой |гра|жен|дру| ре|а к|сно|осн|лич|зи | та|са |нст|вни|чки|ичк|сич|вси|люч|клю|дно| мо|еме|а у|изв|тви|дей|я н|кри|ато|о р|й н|ико|ичн|жав| дъ| то|бще|иал| со|лит|т н| си|т и|одн|жда|зов|азо|уча| гр|кое|тъп|стъ|вол|лни|сре| ср|ква|кон|тно|ака|и у|ко |ган|ода|чен|лст|елс|стр| къ|ста|род|нар|и м|нал|руг| др|чес|въз|ди | са| те|сто|дос|раж|рез|чре|гат|еоб|а м|о е|ине|аст|ово|чно|аве|му | му|ано|ита|ими|ако|нак|лаг|ови",kaz:"не | құ|ен |ұқы| ба| қа|құқ|ық |ға | жә|әне|жән| не| бо|де |дам|ада|а қ|тар|ына| ад|ылы| әр|ың |ан |ін |қыл|ар |еме|на |р а|лық|уға|ала|ықт| өз|мес|әр | жа|мен|ығы|лы | де|қта|ның|н қ|ған|іне|бас|ары| ме| қо|еке|ын |да |е қ|ды |асы|се |есе|ам |бол|анд|нем| бі|ара|ы б|ста|тан|нды|н б|ің |е б|ілі|тиі| ти|бар|ғы |нде|етт|иіс|қығ|іс |лар|ге |ы т|інд|ік |бір| бе| ке|алу|е а|алы|луы|а ж|ері|олы| те|қық|н к| та|н ж|ғын|тті|іні|тын| ер|нда|ім | са|е ж|аты| ар|рға|еті|ана|ы ә|уын|лға|өзі|ост|егі|тік|қа |сқа|рын|кін|луғ|ң қ|нің|уы |бос|асқ|қар|дық|нан|мыс|мны|амн|ы м|айд|ке | же|зін|рде|рін|е т|ген|ып |ры |ті |сын|қам|ден|і б|гіз|рал|е ө|лан|сы |ама|тта|тық|бер|ді |біл|ркі|өз |зде|кет|қор|дай|уге|ы е|ынд|нег|оны|ей |мет|аны|а т|жас|ауы|лге|аса|еге|дар|ру |ау |ерк|ы ж|рыл| то|н н|е н|тін|ір |сіз|тер|лма|і т|кім| ал|р м|лік| мү|е м|түр| тү|кел|лып|ең |тең|рлы|лім|рды|ард|атт|с б|ыры|сыз|ыс |елг|дал|йда|орғ|рқы|арқ| жү|тал|ылм|а б|ігі|лде|із |қты| еш|дей|ай |жағ|кті|ікт|гін| әл|тты|ұлт| ұл|е д|ыны|лін|р б|еле|кұқ| кұ|амд|м б| ет|оға|құр| кө|аға|тол|шін|айы| қы|қал|жек|і н|ес |ағы|е о|елі| ел|н е|зі |шкі|ешк|олу|ция|мас|ғда|ағд|лтт|імд|ным| да|а д|әсі|с ә|қат|ірі| со|ң б|аза|мда|айл| ас|ғам|қоғ"},Arabic:{arb:" ال|ية |في | في|الح| أو|أو | وا|وال|حق |ة ا|لحق|الت|كل |الم|لكل| لك|لى |ق ف|ته |و ا|ة و|شخص|ة ل|ات |الأ|ي أ|ون | شخ|م ا|أي | أي|ان |أن |مة |ي ا|الا|لا |ها |اء | أن| عل|خص |ن ا| لل|د ا|من |فرد|ما |الع|ت ا|حري|على|ل ف|رد |ل ش| لا|رية| إل|ة أ|ا ا|ن ي| ول|ا ل|ا ي| فر| من|ة م|الق|جتم|ن أ|ق ا|الإ| حر|له |ه ل|اية|لك |ه ا| دو|دة |اً |ين |ه و|لة |ي ح| عن|ماع|ي ت|ذا | حق|قوق|حقو|، و|ن ت|مع |ص ا|ام |د أ| كا|هذا|الو| إن|مل |امة|ع ا|إلى|ة ع|ماي|حما|ن و|لتع| وي|ير |نون|ي و|اسي|الج| هذ|نسا|وق |ترا|عية|ه أ| له|سية| يج| با|دول|انو|قان|لقا|ة ب|ة ت|تما|الد|يات|ع ب|سان|إنس|هم |علي| مت|لمج|ذلك|عمل|لأس|وز |جوز|يجو|بال|غير|ك ا|كان|ساس|أسا|دم |لاد|اعي|الر|تمي|دون|تمت|لتم| يع|ليه|ساو|اجت|ي م|لعا|لجم|تعل|ر و|تمع|مجت| مع|يه |ى أ|فيه|ى ا| كل|لات|ملا|ود |انت|الف|يها|ي إ|تي |الب|لي |قدم|ال |اد |ل ا|يز |ييز|ميي| تم|لحر|تع |متع|ا ب|عام|ا و|ق و|رام|ل ل|لاج|را |الش| وإ|يم |ليم|شتر|ا ح|واج|لزو|ول |ا ف|ولة|لحم|أسر| ذل|ه ف|اته|مسا|لمس| تع|عن |ه ع|وله|يته|ن ل|رة | وس|اة |يد | تح| مس|ي ي|لتي|عة |ولي|لدو| أس| وف|ل و|أية|ني |الس|لان|لإع|ة ف|ريا|ل إ|م ب|امل|كرا|تسا|ميع|جمي| جم|أول|بية|عيش|تحق|ادة|س ا| مم|معي|جما|عات|اعا|ارس|مار|مما|م و|راك|اشت|الط|اج |زوا|الز| وم|حدة|تحد|لمت|مم |لأم|ده |بلا| بل|ار |يار|تيا|ختي|اخت|ن م| مر",urd:"ور | او|اور|کے | کے| کی| کا|یں | حق|کی |کا | کو|ئے |ے ک|یا |سے |کو |شخص| شخ|نے | اس| ہے|میں|حق | ہو| می|خص |ے ا| جا|اس | سے| یا|ہر |ی ا| کر| ہر|ے۔ |سی |ہیں|ا ح|ص ک|وں |ے م| ان|ر ش|۔ ہ|ائے|زاد|آزا| آز|ام |ر ا|ق ہ|ادی|جائ|ں ک|ہے۔|م ک| کس|ا ج|ی ک|س ک|کسی| پر|ے گ|ہے |ار |ت ک|دی |پر |و ا| حا| جو| ہی|ان |ی ج|ری | نہ| مع|جو |ل ک|ی ت|ن ک|کرن|ئی |ل ہ|تی |ہو |ہ ا| ای|صل |اصل|حاص|رنے|ی ش|نہ |۔ ا|ں۔ |یں۔|ر ک|ر م| مل|وہ |معا|رے |ں ا|نہی|ے ہ|ے ب|ایس|ے ل| تع| گا|یت |ی ح|ا ا|ی م|اپن| اپ|کیا|می |ی س| جس|ہ ک|نی |اشر|عاش| دو|لئے| لئ|انہ|وق |قوق|حقو|مل | قا|کہ | گی|ر ب|ہ م| وہ| بن|ی ب|ملک|جس |ا۔ |ریق|ر ن|ے ج|اد |ات |گی |د ک|ے ح|دار|ر ہ|گا۔|قوم| قو|ے، |ا س|دوس|ر پ| و | شا|ی آ|ں م|ق ح| پو| با|خلا|انے|یم |لیم|و ت|ون | کہ|ی، |۔ ک|ا پ|ن ا|لک |علا|ا م|ق ک|ائی|وسر|ی ہ|وئی|یر |ا ہ|علی|و گ|وری|دگی|ندگ|و ک|یسے| من|ائد|رائ| مر|پور| طر|ومی|ے خ|سب |نون|انو|قان| سک|وام|ین | رک|تعل|لاق|غیر|دان|، ا| بی| مس|یوں|نا | بھ| بر|رتی|ادا|امل|یہ | یہ|ہ و| عا|ی پ| بچ|اف |لاف| خل|ی۔ |گی۔| دی|ھی |بھی|دہ |جا |پنی|قوا|اقو|رکھ|ے ی| عل|کوئ|، م| چا|ے س|ر ع| پی|برا|ر س|ر ح|سان|م ا|کام|شرت| را|شام|من |زند| زن|ب ک|ت م|اہ |اری|س م|ر ج| مح|ورا|ے پ|طری|ہوں|ال |ں س|ی ن|کرے| مق|ت س|تحف| تح|و۔ |ہو۔|بند| اق|د ہ| ام|امی|الا|لت |شرے|ے ع|ا ک|فری",pes:" و | حق| با|ند |رد |دار| دا|که |هر | در| که|در | هر|ر ک|حق |د ه|از |یت | از|یا |کس |ود |ارد| یا| کس|ای |د و| بر| خو|ق د|باش|شد |د ک|ار |د ب| را|ه ب|ان |آزا| آز|را |اشد|ی و|ه ا|ین |ید |زاد|س ح|خود|ی ب| اس|ده |دی |ور |اید|ه د|ری |و ا|تما|ات | نم|ی ک|ادی|نه |رای|د ا| آن|است|ر ا|ر م| اج|مای|ون |قوق|حقو|و م| ان|انه| هم|وق |ایت| شو|ی ا| مو| بی|با | تا|ورد|انو|ست |وان|برا|ام |شود|آن |جتم|ی ی| کن|ر ب|کند| مر|ت م|های|ت ا| مس|ی، |ماع|اجت|توا|یگر|و ب|دان|ت و|ا م| بد|عی |کار| من|مور| مق|ی د| زن|ی م|ن ب|ر خ|اه |ا ب|اری|د آ|مل | به|اعی|د، |دیگ|ت ب|بای|این| می|ن و|ق م| عم| کا|ن ا|و آ| حم|نون|ه و|و د|د ش| ای|شور|کشو| کش|لی |نی |ه م|بعی|ر ش|یه | مل|میت|ی ر|رند| شر|می |وی |ساو|قان| قا|مقا|او | او|د م|گی |نمی| اح| مح|مین|ئی |ادا| آم|خوا|گرد| گر|مند| شد|ائی| دی|ز ح|هیچ| هی|اده| مت|نما|ت ک|ران| بم|ن ح|ر ت|حما|ارن|مسا|دگی|ومی|ن ت|ملل|بر |هد |واه|بهر| اع|‌ها|ق و|، ا|عیت|یتو|ا ر|ن م| عق|همه|ا ه|زش |وزش|موز|آمو|انت|تی |جام|موم|عمو|تخا| فر|طور|د د|ه ح|ردا|اوی|نوا|انی|رار| مج|ی ن|حدی|احد|ندگ|زند|شخص| شخ|‌من|ه‌م|ره‌|هره|شده|ع ا|و ه|اسی|هٔ |یده|عقی|ا ا|مه | بش|اد |دیه|ا د|دوا|ی ح|ابع|ی ت|خاب|نتخ|رور|و ر|شرا| خا|ٔمی|أم|تأ|اً |امل|له |د ر|اسا|خور|بل |ابل|قاب|یک |سان|قرا|ا ن|خصی| ام| بو|یر |الم|بین|اهد|تبع| تب",zlm:" دا|ان |دان| بر| او|ن س|رڠ |دال| ڤر|له |كن | كڤ|ن ا|ن ك|ن د|يڠ | يڠ|ڤد |حق |ورڠ|تيا|ياڤ|ارا|كڤد|اور|رحق|برح|اله|أن |ولي| ات|اتا|ڠن |تاو|اڤ |ستي|ليه|او | ست|ڤ ا|يه |را |ه ب|ه د|عدا| عد|ن ڤ|ن ب|ين | تر|ق ك|ن ي|يبس|بيب| تي| سو| كب| سا|ن م|ن ت|لم |الم|د س|ڠ ع| من|چار|د ڤ|رن |سام| ما|ڽ س|ن، | بو| اي|ندق| حق|ڬار|نڬا|بول|سبا| سب|اتو|ا س|قله| ڤم| مم|وان|سچا| سچ| كس|ا ب|سن | سم|ڤرل|اون|نڽ |تن | با|هن |سيا|ا ڤ|ارڠ|بار|ڤا |بسن|كبي|ام |يند|ي د|اڬي|ڠ ب|باڬ|ي ا|مان| لا| د |دقل|هند| هن|ت د|ادي|وين|يكن| نڬ|، ك|ن٢ | ڤو|بڠس|ق٢ |ات |اول|اكن|اڽ | سس|ون |اد | كو|اين|دڠن| دڠ|ائن|تو |تي |ن ه|ڬي |سي |ق م|وڠن|دوڠ|ندو|لين|رلي|نتو|ڤون|وات|ياد|تيك|ڠسا|ڤمب|ترم|٢ د|حق٢|وا |لوا|ماس|وق |ه م|ل د| مل|وند| ڤڠ|ا، |، ت|لائ|اي |مڤو|يك |ي ك|رات|مرا| بي|سمو|و ك|، د|سوا|ڠ م|ڠ س|ڠ٢ |ڤري|يري|دير|ا ا|اسا|ڤ٢ |تا |سوس|، س|جوا|ڠ ت|رأن| ان|سأن|ريك|يأن|ري | در|امر|كرج| ڤل|ا د|جرن|اجر|ارك|لاج|د ك|وار|برس|ونت|منو|سال|ينڠ|دڠ٢|ندڠ| مڠ|اڤا|سسي|ساس|نن |ڤول|اڬا| بڠ| سڤ|مبي| اڤ|ڠ ا|ارأ|ڤرا|ي س|بس | دل|ا م|موا|ڤلا|ملا|ڤرك|كور|وبو| كأ|وكن|أنڽ|كسا|ڠڬو|ادڤ|هاد|رها|تره|كوم|توق|م س|ڠ د|دي | دي|٢ س|ندي|اس |ادا|بوا| دب|ڠ ڤ|ڽ، |اڤ٢|رتا|ال |يال|وسي| كت|أن،|نڤا|تنڤ| تن|م ڤ|رسا|ممڤ| مر|ن ح| كم|نسي|جأن|ؤي |لؤي|الؤ|لال|كڤر|كت |ركت|شار|مشا| مش|جاد|رڬا",skr:"تے |اں |دی |دے | ۔ |وں | تے| دا| کو|کوں| حق|دا | دی|یاں| دے|یں |ے ا|شخص| شخ|ہر |ے ۔|اصل| حا|حق |خص | ہر|صل |حاص|ہے | ہے|ال |ق ح|ل ہ| نا| کی| وچ|۔ ہ|یا |سی |ے م| او|وچ |اتے|کیت|ا ح|ادی|نال|ص ک| ات|ر ش|ہیں| یا|ں د| ای|یسی| مل|وند|کہی| کہ|ی ت|زاد|ازا| از|ندے|ں ک|ار | وی|ے ک|ئے | ان|ڻ د|نہ | کر|اون|ے و|دیا|ی د|ں ا|ے ب|ویس|وڻ |ی ن| ہو|تی |ی ۔| نہ|ی ا|یند|و ڄ|آپڻ| آپ|ا و|ے ج| کن|ے ن|ندی|ت د|ے ح|ی ک|ئی |ملک|یتے|ن ۔|تھی| تھ|ون |ں م| بچ|۔ ا|نوں|کنو|ڻے |اری|ا ا|ے ہ|ل ت| ڄئ|وق |قوق|حقو|ل ک|خلا| جی|لک |دار|یت |کرڻ|انہ|کو |ہکو| ہک|ن ا|مل | وس|ں و|پڻے| تع|ی م|اف |ے خ|نون|قنو| قن| لو|۔ ک|ری |لے |تا |یتا| قو| چا|ہاں|ڄئے|ق ت|ایہ|رڻ |ے د|ر ک| و |لاف| خل| جو|ی و|او |ہو |ئو |چئو|بچئ|یر |ہوو|ا م|ی ج|الا|ین | جا|می |نہا|ان |ات |سڱد| سڱ|یب |سیب|وسی| شا|ب د|یوڻ|ام |اوڻ|ے ت|ڻ ک| مط|ں ت| ون| کم|ن د|رکھ| رک|ڻی |ں آ|ریا|ی ہ|اد |یاد|علا|ر ہ|ں س|ی ح|جھی|ائد|ہی |لوک| ڋو| سم| سا| من| مع|بق |ابق|طاب|مطا|ھیو|ں ف|ہن | ہن|جو |و ک|ں ش|ر ت|کار|م د|ھیا| ٻا|غیر|و ل|وئی|جیا|وام|قوا|ی س| جھ|ل ا|قوم| سی|ذہب|مذہ| مذ|اے | اے|دن |ا ت|سان|نسا|انس|رے |لیم|علی|تعل|امل|ہ د|ے ر|د ا|کم |یہو|فائ|چ ا| کھ|م ت|را |ورا|پور|ں ب|ق د|ے ق|وکو|کھی|ا ک|و د|ے ذ|پڻی|بند| فر|کوئ|امی|ی ی|ائی|لاق|ایں|ہ ا| نظ|سما|ومی|ی، |ے س|ت و|ھین|ے ع|یم |سہو| سہ",pbu:" د | او|او |په | په|ي۔ | حق|چې | چې|ره |ي ا|ې د| هر|نه |هر |حق | څو|وک |څوک|و ا|ه د|ه ا|۔ ه|ه و| شي| لر|ي چ|و د|ري |لري|ق ل| کښ|وي |ښې |کښې|ه ک|غه |لو |ر څ|سره| سر|ه پ| ټو|و پ|له |يت |ټول|يا |کړي| کو|خه |ي، |دي | له| از|د م| هي| وا| يا| څخ|ازا|د ا|ولو|ه ت|څخه| کړ|ول |هغه|ه ش|ي د| هغ|کول|زاد|نو | وي|و ي|ه ب|شي۔|دې |يو | دي|ته |خپل| پر|اد |د د|ک ح| تو|ه م|ګه |ه ه|قوق|حقو|و م|ه ح|د ه| تر| مس|شي | نه|ړي۔|ني |د پ|واد|ې پ|ادي|ولن| يو|د ت|ونو|وګه|ي و|لي | دا|يد | با|تون| خپ|ي پ|توګ|ار |اند|يوا|ې و|دان| بر|ړي | عم|انه| ده|يڅ |هيڅ|امي|لني|بعي|ډول| ډو|ه ل|ايد|باي|اتو|ه ګ| تا|پل | مل|ايت|وم |ون | لا|هيو| شو| دغ|م د|ده |ې ا|ان | ته|کار|تو |مي |اره|اوي|ساو|مسا|نون|دهغ|و ت|ي ش|انو| مح|ين |اخل| ګټ|شوي|دغه|و ح|وي،|نيز|سي |اسي|وند|قو |وقو|و ک|ونه|ومي| وک|ي ت| ان|قان|ندې|و ر|ک د|ه ي|مين|پر |ټه |لام|غو |هغو|د ټ|و ه|ل ت|لے |ولے|وون|کي |رو |ن ک|موم|وکړ|پار|ن ش|من | نو| وړ| قا|ې چ| وس|څ څ|شخص| شخ|ژون| ژو|تر |ګټه|و څ|هم |عقي|رته| ور|بل | بل|و ب|ه س|ښوو| ښو| کا|ې ک|و س|اده|ونک| غو|دو |و ن|ت ک|مل |عمو|ل ه| پي|وسي|ړان|وړا|يز |خصي|ي م|ا ب|ادا|ه ن|خلي|واخ|ديو|، د|د ق| هم|ا د| بي|تبع| تب|ه چ| عق|پلو|و ل| را|د ب|راي| دخ|نې |نکي|ت د|ابع| مق|د خ|وره|شرا| شر|ر م|رسر|تام|ه ټ| من|طه |سطه|اسط|واس|لې | اس|۔ د|برخ|ې ن"},Devanagari:{hin:"के |प्र| प्| का| के| । |और | और|का | को|कार|ार |ति |या |को |ने |ों |िका|्रत| है| कि|ं क|है |धिक|व्य|अधि| अध|्ति| सम|्यक|ि क|क्त|ा अ|की |ा क| व्|ें | हो|यक्|सी |से |े क| या| की|में|न्त| मे|त्य|ै ।|ता |रत्|क्ष|ेक |येक|्ये|िक |र ह|भी |किस| जा| स्|क व|ा ज|िसी|मान| वि|र स|त्र|ी स|। प| कर|्रा|गा |ित | अप| पर|स्व|ी क| से|ा स|्य | अन|्त्|िया|ा ह| सा|ना |्त |प्त|समा|ान |र क|ाप्|तन्| भी| उस|राप|वतन|्वत|रों|वार|े स|था |हो |े अ|ा ।|न क| न |देश| रा|षा |अन्|त ह|्षा|्वा|जाए|ी प|करन|ा प|अपन|ष्ट| सं|े व|होग|िवा|ट्र|्ट्|ाष्|राष|सके| मा|ओं |ाओं|री |क स|े प| नि|ीय |रक्|ो स|ाएग|रने| इस|व क|पर |रता|र अ| सभ|तथा| तथ| ऐस|रा |पने|्री|िक्|किय|ा व|माज|ं औ|र उ|द्ध|सभी|श्य| जि|ाने|ार्|ारा|द्व| द्|एगा|सम्|ेश |िए |ाव |र प| दे|्तर|ा औ|ारो|यों|परा|पूर|चित|्ध |रूप| रू| सु| लि|त क|ो प|ं स|े ल|शिक| शि|वाह|े औ|जो |राध|जिस|ूर्|ी भ|ूप |ोगा|स्थ|रीय|तिक|्र |। इ|इस | उन|ले |े म|लिए|म क|कता|े य| जो|न म|अपर| पू|ो क|ा उ|ाह |नून|ानू|गी |दी |ारी|ं म|। क|तर्|ी र|श क|परि|स्त|ोई |कोई|र्य|ी अ|हित|भाव| भा|ताओ|ास |साम|विक|विव|म्म| सक|कर |ाना|ध क|निक|य क|उसक|कृत| क़ा|न स|जीव|्या|रका|्रक|ाज |न्य|्म |र्ण|क़ ह|हक़ | हक़|ी म|जिक|ाजि|ामा|क औ|मिल|ेने|लेन| ले|ये |ो अ|े ज|रिव|मय |समय|वश्|आवश| आव|ऐसी|ाध |र द|र्व|सार|प स|बन्| सह|िधा|विध|ी न|ून |क़ान",mar:"्या|या |त्य|याच|चा |ण्य|ाचा| व |कार|प्र| प्|िका|धिक|ार | अध|अधि|च्य|आहे| आह|ा अ|हे |ा क|ास |वा |्ये|्रत| स्|ता |ा स| अस| कर|स्व| का|ल्य|रत्|ाहि|कोण| को|िक |येक|्वा|ा व| त्|र आ|्य |त्र|ेका|क्ष|ा न| सं|ामा|ाच्|ंवा|िंव|किं| कि|ात |ष्ट|कास| या|यां|ांच|र्य|मिळ| मि| सा|व्य|ोणत|ने |े प|काम| सम|ंत्|ये | रा|समा|तंत|करण|ा आ|े क|हि |े स|ना |िळण|ून |ा प|ट्र|्ट्|ाष्|राष|ीय |व स|क्त|मान|र्व| आप|ळण्|्र्|ातं|वात|चे | वि|्षण|रण्| दे| व्|आपल|ही |ार्|नये| नय|मा |यास| जा|लेल| नि|े अ| पा|ा म|ले |ाही|बंध|े व|्यक| मा|शिक| शि|देश|ा द|माज|्री|ली |ान |ांन|पल्| हो|ा ह|षण |जे |िजे|हिज|पाह|ारा|यात|सर्| सर|रां|असल|ंबं|संब|िक्|ी प|ंच्|रक्|णत्| आण|ला |स्थ|रीय|ीत |ंना|त व|्व |क व|णे |ाचे|न क|त क|रता|्रा|याह|्त |ची |य क|द्ध|्वत|यक्|णि |आणि|स स|ंधा|क स|च्छ|य अ|त स|ीने|ोणा|करत|त्व|ील |ी अ|सार|र व|भाव|व त|थवा|अथव| अथ|े त|े ज|याय|ंचा|ेल्|ाने|ेण्|क आ|क्क|हक्| हक|ण म|ंरक|संर|न्य|ायद|ा त|त आ| उप|वस्|िवा|ेशा|साम|े य|े आ|ी व|व म|तीन|व आ|ध्य| अश|धात|कृत|्क |द्य|ित |सले|ेश |तो |ेल |ती |्ती|असे|इतर| इत|स्त|र्ण|ा ब|ेले| के|हीर|जाह|ा ज|ेत |ूर्|पूर|ेच | वा|ाजा|ी स|शा |य व| न्|याव|द्द|्ध |रून|यद्|काय|ा श|गण्|क क|राध| शा|यत्|ल अ|्यव|ी क|ाव |ा य|त्त|जिक|ाजि|रणा| धर|ा ध|भेद| बा|रका|्रक|केल|ि व|िष्|तील|योग|साध|ांत|विव|श्र| धे| मु|वतः",mai:"ाक |प्र|कार| प्|ार |िका|्यक|धिक|क अ|्रत|्ति|व्य| अध|ेँ |अधि|िक | व्|आʼ | आʼ|क्त|यक्|तिक|केँ|क व|बाक|क स|छैक| छै|त्य|मे |ेक | सम|क्ष|हि |रत्|र छ|येक|्ये|न्त|वा |िके|क। |ैक।|। प| अप| स्| वि| जा|ित |सँ | हो|कोन| को|त्र|स्व| वा|क आ|ष्ट| कर|अपन|मान| का| अन|ति |्त्|नो |नहि| पर|ट्र|्य | एह|ि क|्ट्|ाष्|राष| रा|समा|ोनो|ल ज| नह|ताक|ार्|पन |तन्|वतन|्वत|्षा| कए| सा|्री| नि|ा आ|िवा| सं| दे|जाए|ीय |करब|था |एबा|ा प|ना |्वा|देश|त। |रक |क ह|ँ अ| सभ| आ |त क|चित|्त |वार|ता |ारक|माज|ा स|रीय|न्य|रता|ान |्रा|्या|रक्|ारण|परि|एल |कएल|अन्|रबा|क प|ओर |आओर| आओ|अछि| अछ|िर्|ान्|नक |होए|कर |धार|स्थ|ा अ|िमे|र आ|एहि| एक|े स|तथा| तथ| मा|िक्|शिक| शि|प्त|र्व|निर|च्छ|र्य|ँ स|क क|हो |ाहि|एत।|र प|ामा|साम|षा |ʼ स|ँ ए|ैक |द्ध|र अ|क ज|स्त|ाप्|ँ क| सक|यक |कान|हन |एहन|ेल |ोएत|त आ|ा व|। क|्तर|ाएत|्रक|हु |क उ|पूर|विव|ʼ अ|छि | ले|न प|ास |राप|धक |पएब| पए|रा |यता|रूप|न व| के|षाक|य प|त ह|जाह| ओ |भाव|पर |थवा|अथव| अथ|सम्|जिक|ाजि|ूर्|रति| दो|सभक|। स| जन|सभ |बाध|अनु|िसँ| सह|ँ व|ए स|रिव|तु |ेतु|हेत| हे|ाध |ेबा|न स|िष्|राध| अव|ित्|वास|चार| उच|ारा|न क|वक |ा क|नून|ानू|एत |री |ेओ |केओ|रण |्रस|ि द|ओ व| भे|नहु|ोनह|्थि|पत्|म्प|राज| भा|हिम| हक|ामे|्ण |र्ण|हार|ि स|क द|न अ|त अ|लेब| अभ|िश्|जक |ाजक|न आ|वाह|काज|श्य|वस्|ओहि| ओह|योग|। ए|कए |े ओ|अपर",bho:" के|के |े क|ार |कार|िका|धिक|अधि| अध|ओर |आओर| आओ|े अ|े स|ा क| सं|िक |र ह|ा स| हो|र स|ें |में| मे| कर| से|नो |क्ष|से | का|। स|खे |ा। |रा | सम| सब|्रा| सक|र क|न क|वे |ौनो|कौन| कौ|चाह| चा| बा|प्र| प्|था |ि क|ति | जा| सा|े आ|पन |करे|ता |होख|त क|े। |े ब|तथा| तथ| आप|केल|सके| स्|रे |सबह|कर |आपन|े ओ|जा | पर|ष्ट| रा|ना |हवे| हव|ला |ेला|बहि| ओक|ोखे|र ब|ह। | ह।|न स|ाष्|राष|्त | और|े च|। क|संग|र आ|ट्र|्ट्|षा |मान|ा आ|ं क|ा प|्षा|रक्|हे |ाहे|ाति|ावे| जे|ही |ओकर|मिल|ित |ो स|ल ज|इखे|नइख| नइ|त्र|माज| बि|वे।|े ज|क स|िं |हिं|करा|और |े म|समा|हु | ओ |पर |े न|स्थ|रीय|्री|ला।|ाज |ान |कान|े त|िर |तिर|खात| खा|े उ|नून|ानू|ाम | सु| दे|ी क| मा|र म|प्त|िया|ाही|बा।|योग|ी स|ल ह|ून |व्य|ु क|ए क|े व|ंत्|स्व|केह|ीय |खल |साम|यता|तिक|े ह|ाप्|राप|र प|र अ| लो| सह|जे |ोग |म क|ले | नि|ेकर|ा ह|पूर|र न|ेहु|्य |या | या|देश|दी |ा म|ाव | दो|े द| पा|हि |िक्|शिक| शि|बा |िल | उप|्रत| वि| ही| ले|रो |े ख|ठन |गठन|ंगठ| मि|षण |्षण|ंरक|संर| आद| एक|ने | अप|तंत|वतं|्वत|्तर|्या|ेश |ादी|्ति|जिक|ाजि|क आ|्म |चार| उच| शा|री |ाह |याह|बिय|चित|क्त|पयो|उपय|रता|र व|न म|लोग|ह क|न प|काम| पू| इ |आदि|ईल | कई| व्|मी |ुरक|सुर| जी|धार|य स|तर्|भे |सभे| सभ|भाव|्थि|ामा|सर |र्म| को| बे|ोसर|दोस|ण क|ास |े प|जाद|आजा| आज|उचि|ग क|ारी| जर|गे |ज क|ी ब|सन |हो |ा त",npi:"को |ने | र |ार |क्त|कार|प्र| प्|्यक|व्य| गर|िका| व्|्रत|धिक|्ति|यक्|अधि| अध|ाई |मा |लाई|त्य|िक | । | सम|वा | वा|क व|्ने|र्न|गर्|न्त|छ ।|तिल|रत्|त्र|ेक |येक|्ये|िला|र स|ो स| स्|मान|क्ष| वि|हुन|ा स| हु| छ |र छ|्त्|समा|स्व|। प| सं|नेछ|ुने|हरु|तन्|वतन|े अ|िने|ो अ|्वत| का|े छ|गरि| रा|्र |ति |ाको| कु|ष्ट|ना |स्त|क स|ुनै|कुन|ट्र|ले | नि|ान |छैन| छै|्ट्|ाष्|राष|तिक|छ। |ार्|ता |ित |नै |ा अ| सा|ा व|रु | मा| अन|ा र|रता|र र|हरू|ेछ |ा प|रक्|्त | पर|था | ला|परि|देश|सको| यस|माज|ामा|्रा|िवा|ाहर|ो प|्य |वार|न स|। क|नि |्षा| त्|द्ध|र ह|तथा| तथ|यस्|्यस|री |र व|पनि|रिन|ंरक|संर|भाव|ै व|सबै| सब| शि| सह|ताक|े र|त र|लाग| सु|्षण|द्द| अप|ैन |ो व|िक्|ाव |धार|्या|्रि|ा भ|एको|र म|न अ|ो ल| उस|शिक|ात्|स्थ|वाह|ूर्|श्य|ित्|रको|ारक|ुद्|तो |्तो|ाउन|कान|िएक|ा न| पन|न। |ैन।|का |ेछ।| भे|र्य|सम्|त्प|साम|रिय|चार|निज|ुन |गि |ागि|उसक| मत| अभ|पूर|र त| सक|सार|राध|परा|अपर|ुक्|जको| उप|रा |ारा|्वा|विध|्न |ा त|न ग|णको| पा| दि|क र|र प|अन्|भेद|ारम|ो आ| अर|जिक|ाजि|िय |षा |ाट |बाट| बा|ि र| छ।|त्व|त स|रू |छ र|रका|विक|र उ|ोग |्दे|रिव|सकि|ै प|रति|अनु| आव|युक|ा ग|नमा|योग|ग ग|क अ|द्व|्ध |रुद| बि|। स|उने|ान्|ा म|िको|र्द|ारी|्तर|ो ह|हित| दे|रिक|ा क| आध|राज|र्म|्ण |र्ण|ि व|्यव|विच|बै |सहि|रोज|र्स|ई उ|्प |रात|निक|मिक|च्छ|्था|विव|कता|अभि|्धा",mag:" के|के |ार | हई|कार|ई। |हई।|िका|े अ|धिक|अधि| अध|र ह|े क|और | और|ा क|े स|सब | सब| कर|ें |था |में| मे|तथा| तथ|िक | हो| सम|क्ष|ना |ब क|र स| सं|ा स|कर | भी|। स| सा| से| का| अप|्रा|प्र| प्|से |भी | को|त क| पर|रा |क ह|पन |अपन| सक|या |ति |र क|ी क| या|करे| जा|रे | ओक|्त |सक |नो |ान |मान|ओकर|ा प|न क|ेल | ना|। क|रक्| स्|ही |होए| एक|पर |दी |ट्र|ता |व्य|हई | शा|े उ| दे|त्र|ादी| रा| ही|कान|ित |म क|ल ज|ाम |ी स|े भ|न स|माज|ष्ट|षा | ले|क स|बे |वे |ावे|मिल|र म|्य |ा ह|ला |प्त|नून|ानू|जा |ेकर|्षा|्रत|ंत्|र औ|ोई |कोई|्ट्|ाष्|राष| मा|रो | जे|करा|ोए |ाप्|राप|समा|ून |ो स|स्व|्ति|साम|ोनो|कोन| व्|र अ|्म | वि| सह|े म|क्त|योग|र व|काम|ल ह| नि|देश|पूर|वार| इ |ंरक|संर|ए क|र प| सु|तंत|वतं|्वत|ा म|व क|े व|ाथ |साथ| दो|होब| पा|ो क|े ब|ोग | उप|स्त|परि|न प|े त|्तर|लेल|े ओ|चाह| चा|य क|वा |ेश |य स|न ह|षण |ा ब|। त|एक |एल |ीय |केक|े ह|र आ|ि क|स्थ|जिक|ाजि|ामा|रीय|्री|तिक|ाति| बि|चार|े आ|ास | उच|ा त|यक्|्यक|िल |मय |समय|शाद|पयो|उपय|े ख|रिव| पू|े ल|े च|ौनो|कौन| कौ|ं क|संग|न द|ं स|ण प|्षण|र न|े न|ो भ|करो|ा औ|रता|ाव |भाव|क औ|र्म|ोसर|दोस|ण क|े प|न औ|ब ह|िक्|शिक| शि|ाबे|निय|चित|उचि|ित्|ग क|े। |त स|ी श|ं श|एकर|। ए|तन | ओ |री |्र |जे |क क| सी|सन |िवा| अन|ूरा| बच|ए। | बे|त ह| तक| मि|धार|थवा|अथव| अथ|िला|्वा|ि म| आद|ने |कएल| कए|्या"}},iC=2048,sC=10,dw=300,Vc={}.hasOwnProperty;let ss;const Wc={};for(ss in _d)if(Vc.call(_d,ss)){const n=_d[ss];let e;Wc[ss]={};for(e in n)if(Vc.call(n,e)){const t=n[e].split("|"),o={};let a=t.length;for(;a--;)o[t[a]]=a;Wc[ss][e]=o}}function lC(n,e){return cC(n,e)[0][0]}function cC(n,e={}){const t=[...e.whitelist||[],...e.only||[]],o=[...e.blacklist||[],...e.ignore||[]],a=e.minLength!==null&&e.minLength!==void 0?e.minLength:sC;if(!n||n.length<a)return Wf();n=n.slice(0,iC);const r=dC(n,rC);return!r[0]||!(r[0]in Wc)?!r[0]||r[1]===0||!fw(r[0],t,o)?Wf():hw(r[0]):uC(n,hC(oC(n),Wc[r[0]],t,o))}function uC(n,e){const t=e[0][1],o=n.length*dw-t;let a=-1;for(;++a<e.length;)e[a][1]=1-(e[a][1]-t)/o||0;return e}function dC(n,e){let t=-1,o,a;for(a in e)if(Vc.call(e,a)){const r=fC(n,e[a]);r>t&&(t=r,o=a)}return[o,t]}function fC(n,e){const t=n.match(e);return(t?t.length:0)/n.length||0}function hC(n,e,t,o){e=mC(e,t,o);const a=[];let r;if(e)for(r in e)Vc.call(e,r)&&a.push([r,pC(n,e[r])]);return a.length===0?Wf():a.sort(gC)}function pC(n,e){let t=0,o=-1;for(;++o<n.length;){const a=n[o];let r=dw;a[0]in e&&(r=a[1]-e[a[0]]-1,r<0&&(r=-r)),t+=r}return t}function mC(n,e,t){if(e.length===0&&t.length===0)return n;const o={};let a;for(a in n)fw(a,e,t)&&(o[a]=n[a]);return o}function fw(n,e,t){return e.length===0&&t.length===0?!0:(e.length===0||e.includes(n))&&!t.includes(n)}function Wf(){return hw("und")}function hw(n){return[[n,1]]}function gC(n,e){return n[1]-e[1]}const pp="-",yC=n=>{const e=vC(n),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=n;return{getClassGroupId:i=>{const s=i.split(pp);return s[0]===""&&s.length!==1&&s.shift(),pw(s,e)||wC(i)},getConflictingClassGroupIds:(i,s)=>{const l=t[i]||[];return s&&o[i]?[...l,...o[i]]:l}}},pw=(n,e)=>{var i;if(n.length===0)return e.classGroupId;const t=n[0],o=e.nextPart.get(t),a=o?pw(n.slice(1),o):void 0;if(a)return a;if(e.validators.length===0)return;const r=n.join(pp);return(i=e.validators.find(({validator:s})=>s(r)))==null?void 0:i.classGroupId},Mg=/^\[(.+)\]$/,wC=n=>{if(Mg.test(n)){const e=Mg.exec(n)[1],t=e==null?void 0:e.substring(0,e.indexOf(":"));if(t)return"arbitrary.."+t}},vC=n=>{const{theme:e,prefix:t}=n,o={nextPart:new Map,validators:[]};return kC(Object.entries(n.classGroups),t).forEach(([r,i])=>{qf(i,o,r,e)}),o},qf=(n,e,t,o)=>{n.forEach(a=>{if(typeof a=="string"){const r=a===""?e:Dg(e,a);r.classGroupId=t;return}if(typeof a=="function"){if(bC(a)){qf(a(o),e,t,o);return}e.validators.push({validator:a,classGroupId:t});return}Object.entries(a).forEach(([r,i])=>{qf(i,Dg(e,r),t,o)})})},Dg=(n,e)=>{let t=n;return e.split(pp).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},bC=n=>n.isThemeGetter,kC=(n,e)=>e?n.map(([t,o])=>{const a=o.map(r=>typeof r=="string"?e+r:typeof r=="object"?Object.fromEntries(Object.entries(r).map(([i,s])=>[e+i,s])):r);return[t,a]}):n,SC=n=>{if(n<1)return{get:()=>{},set:()=>{}};let e=0,t=new Map,o=new Map;const a=(r,i)=>{t.set(r,i),e++,e>n&&(e=0,o=t,t=new Map)};return{get(r){let i=t.get(r);if(i!==void 0)return i;if((i=o.get(r))!==void 0)return a(r,i),i},set(r,i){t.has(r)?t.set(r,i):a(r,i)}}},mw="!",xC=n=>{const{separator:e,experimentalParseClassName:t}=n,o=e.length===1,a=e[0],r=e.length,i=s=>{const l=[];let u=0,f=0,d;for(let w=0;w<s.length;w++){let v=s[w];if(u===0){if(v===a&&(o||s.slice(w,w+r)===e)){l.push(s.slice(f,w)),f=w+r;continue}if(v==="/"){d=w;continue}}v==="["?u++:v==="]"&&u--}const p=l.length===0?s:s.substring(f),m=p.startsWith(mw),g=m?p.substring(1):p,y=d&&d>f?d-f:void 0;return{modifiers:l,hasImportantModifier:m,baseClassName:g,maybePostfixModifierPosition:y}};return t?s=>t({className:s,parseClassName:i}):i},AC=n=>{if(n.length<=1)return n;const e=[];let t=[];return n.forEach(o=>{o[0]==="["?(e.push(...t.sort(),o),t=[]):t.push(o)}),e.push(...t.sort()),e},EC=n=>({cache:SC(n.cacheSize),parseClassName:xC(n),...yC(n)}),RC=/\s+/,CC=(n,e)=>{const{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:a}=e,r=[],i=n.trim().split(RC);let s="";for(let l=i.length-1;l>=0;l-=1){const u=i[l],{modifiers:f,hasImportantModifier:d,baseClassName:p,maybePostfixModifierPosition:m}=t(u);let g=!!m,y=o(g?p.substring(0,m):p);if(!y){if(!g){s=u+(s.length>0?" "+s:s);continue}if(y=o(p),!y){s=u+(s.length>0?" "+s:s);continue}g=!1}const w=AC(f).join(":"),v=d?w+mw:w,k=v+y;if(r.includes(k))continue;r.push(k);const E=a(y,g);for(let A=0;A<E.length;++A){const N=E[A];r.push(v+N)}s=u+(s.length>0?" "+s:s)}return s};function PC(){let n=0,e,t,o="";for(;n<arguments.length;)(e=arguments[n++])&&(t=gw(e))&&(o&&(o+=" "),o+=t);return o}const gw=n=>{if(typeof n=="string")return n;let e,t="";for(let o=0;o<n.length;o++)n[o]&&(e=gw(n[o]))&&(t&&(t+=" "),t+=e);return t};function NC(n,...e){let t,o,a,r=i;function i(l){const u=e.reduce((f,d)=>d(f),n());return t=EC(u),o=t.cache.get,a=t.cache.set,r=s,s(l)}function s(l){const u=o(l);if(u)return u;const f=CC(l,t);return a(l,f),f}return function(){return r(PC.apply(null,arguments))}}const At=n=>{const e=t=>t[n]||[];return e.isThemeGetter=!0,e},yw=/^\[(?:([a-z-]+):)?(.+)\]$/i,TC=/^\d+\/\d+$/,jC=new Set(["px","full","screen"]),zC=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,IC=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,LC=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,MC=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,DC=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Mo=n=>di(n)||jC.has(n)||TC.test(n),sa=n=>Oi(n,"length",qC),di=n=>!!n&&!Number.isNaN(Number(n)),Fd=n=>Oi(n,"number",di),ls=n=>!!n&&Number.isInteger(Number(n)),_C=n=>n.endsWith("%")&&di(n.slice(0,-1)),ot=n=>yw.test(n),la=n=>zC.test(n),FC=new Set(["length","size","percentage"]),OC=n=>Oi(n,FC,ww),UC=n=>Oi(n,"position",ww),BC=new Set(["image","url"]),VC=n=>Oi(n,BC,$C),WC=n=>Oi(n,"",HC),cs=()=>!0,Oi=(n,e,t)=>{const o=yw.exec(n);return o?o[1]?typeof e=="string"?o[1]===e:e.has(o[1]):t(o[2]):!1},qC=n=>IC.test(n)&&!LC.test(n),ww=()=>!1,HC=n=>MC.test(n),$C=n=>DC.test(n),YC=()=>{const n=At("colors"),e=At("spacing"),t=At("blur"),o=At("brightness"),a=At("borderColor"),r=At("borderRadius"),i=At("borderSpacing"),s=At("borderWidth"),l=At("contrast"),u=At("grayscale"),f=At("hueRotate"),d=At("invert"),p=At("gap"),m=At("gradientColorStops"),g=At("gradientColorStopPositions"),y=At("inset"),w=At("margin"),v=At("opacity"),k=At("padding"),E=At("saturate"),A=At("scale"),N=At("sepia"),T=At("skew"),C=At("space"),P=At("translate"),M=()=>["auto","contain","none"],U=()=>["auto","hidden","clip","visible","scroll"],O=()=>["auto",ot,e],W=()=>[ot,e],V=()=>["",Mo,sa],j=()=>["auto",di,ot],L=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],I=()=>["solid","dashed","dotted","double","none"],b=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],S=()=>["start","end","center","between","around","evenly","stretch"],z=()=>["","0",ot],F=()=>["auto","avoid","all","avoid-page","page","left","right","column"],D=()=>[di,ot];return{cacheSize:500,separator:":",theme:{colors:[cs],spacing:[Mo,sa],blur:["none","",la,ot],brightness:D(),borderColor:[n],borderRadius:["none","","full",la,ot],borderSpacing:W(),borderWidth:V(),contrast:D(),grayscale:z(),hueRotate:D(),invert:z(),gap:W(),gradientColorStops:[n],gradientColorStopPositions:[_C,sa],inset:O(),margin:O(),opacity:D(),padding:W(),saturate:D(),scale:D(),sepia:z(),skew:D(),space:W(),translate:W()},classGroups:{aspect:[{aspect:["auto","square","video",ot]}],container:["container"],columns:[{columns:[la]}],"break-after":[{"break-after":F()}],"break-before":[{"break-before":F()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...L(),ot]}],overflow:[{overflow:U()}],"overflow-x":[{"overflow-x":U()}],"overflow-y":[{"overflow-y":U()}],overscroll:[{overscroll:M()}],"overscroll-x":[{"overscroll-x":M()}],"overscroll-y":[{"overscroll-y":M()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[y]}],"inset-x":[{"inset-x":[y]}],"inset-y":[{"inset-y":[y]}],start:[{start:[y]}],end:[{end:[y]}],top:[{top:[y]}],right:[{right:[y]}],bottom:[{bottom:[y]}],left:[{left:[y]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",ls,ot]}],basis:[{basis:O()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",ot]}],grow:[{grow:z()}],shrink:[{shrink:z()}],order:[{order:["first","last","none",ls,ot]}],"grid-cols":[{"grid-cols":[cs]}],"col-start-end":[{col:["auto",{span:["full",ls,ot]},ot]}],"col-start":[{"col-start":j()}],"col-end":[{"col-end":j()}],"grid-rows":[{"grid-rows":[cs]}],"row-start-end":[{row:["auto",{span:[ls,ot]},ot]}],"row-start":[{"row-start":j()}],"row-end":[{"row-end":j()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",ot]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",ot]}],gap:[{gap:[p]}],"gap-x":[{"gap-x":[p]}],"gap-y":[{"gap-y":[p]}],"justify-content":[{justify:["normal",...S()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...S(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...S(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[k]}],px:[{px:[k]}],py:[{py:[k]}],ps:[{ps:[k]}],pe:[{pe:[k]}],pt:[{pt:[k]}],pr:[{pr:[k]}],pb:[{pb:[k]}],pl:[{pl:[k]}],m:[{m:[w]}],mx:[{mx:[w]}],my:[{my:[w]}],ms:[{ms:[w]}],me:[{me:[w]}],mt:[{mt:[w]}],mr:[{mr:[w]}],mb:[{mb:[w]}],ml:[{ml:[w]}],"space-x":[{"space-x":[C]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[C]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",ot,e]}],"min-w":[{"min-w":[ot,e,"min","max","fit"]}],"max-w":[{"max-w":[ot,e,"none","full","min","max","fit","prose",{screen:[la]},la]}],h:[{h:[ot,e,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[ot,e,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[ot,e,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[ot,e,"auto","min","max","fit"]}],"font-size":[{text:["base",la,sa]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Fd]}],"font-family":[{font:[cs]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",ot]}],"line-clamp":[{"line-clamp":["none",di,Fd]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Mo,ot]}],"list-image":[{"list-image":["none",ot]}],"list-style-type":[{list:["none","disc","decimal",ot]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[n]}],"placeholder-opacity":[{"placeholder-opacity":[v]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[n]}],"text-opacity":[{"text-opacity":[v]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...I(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Mo,sa]}],"underline-offset":[{"underline-offset":["auto",Mo,ot]}],"text-decoration-color":[{decoration:[n]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:W()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ot]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ot]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[v]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...L(),UC]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",OC]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},VC]}],"bg-color":[{bg:[n]}],"gradient-from-pos":[{from:[g]}],"gradient-via-pos":[{via:[g]}],"gradient-to-pos":[{to:[g]}],"gradient-from":[{from:[m]}],"gradient-via":[{via:[m]}],"gradient-to":[{to:[m]}],rounded:[{rounded:[r]}],"rounded-s":[{"rounded-s":[r]}],"rounded-e":[{"rounded-e":[r]}],"rounded-t":[{"rounded-t":[r]}],"rounded-r":[{"rounded-r":[r]}],"rounded-b":[{"rounded-b":[r]}],"rounded-l":[{"rounded-l":[r]}],"rounded-ss":[{"rounded-ss":[r]}],"rounded-se":[{"rounded-se":[r]}],"rounded-ee":[{"rounded-ee":[r]}],"rounded-es":[{"rounded-es":[r]}],"rounded-tl":[{"rounded-tl":[r]}],"rounded-tr":[{"rounded-tr":[r]}],"rounded-br":[{"rounded-br":[r]}],"rounded-bl":[{"rounded-bl":[r]}],"border-w":[{border:[s]}],"border-w-x":[{"border-x":[s]}],"border-w-y":[{"border-y":[s]}],"border-w-s":[{"border-s":[s]}],"border-w-e":[{"border-e":[s]}],"border-w-t":[{"border-t":[s]}],"border-w-r":[{"border-r":[s]}],"border-w-b":[{"border-b":[s]}],"border-w-l":[{"border-l":[s]}],"border-opacity":[{"border-opacity":[v]}],"border-style":[{border:[...I(),"hidden"]}],"divide-x":[{"divide-x":[s]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[s]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[v]}],"divide-style":[{divide:I()}],"border-color":[{border:[a]}],"border-color-x":[{"border-x":[a]}],"border-color-y":[{"border-y":[a]}],"border-color-s":[{"border-s":[a]}],"border-color-e":[{"border-e":[a]}],"border-color-t":[{"border-t":[a]}],"border-color-r":[{"border-r":[a]}],"border-color-b":[{"border-b":[a]}],"border-color-l":[{"border-l":[a]}],"divide-color":[{divide:[a]}],"outline-style":[{outline:["",...I()]}],"outline-offset":[{"outline-offset":[Mo,ot]}],"outline-w":[{outline:[Mo,sa]}],"outline-color":[{outline:[n]}],"ring-w":[{ring:V()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[n]}],"ring-opacity":[{"ring-opacity":[v]}],"ring-offset-w":[{"ring-offset":[Mo,sa]}],"ring-offset-color":[{"ring-offset":[n]}],shadow:[{shadow:["","inner","none",la,WC]}],"shadow-color":[{shadow:[cs]}],opacity:[{opacity:[v]}],"mix-blend":[{"mix-blend":[...b(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":b()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[l]}],"drop-shadow":[{"drop-shadow":["","none",la,ot]}],grayscale:[{grayscale:[u]}],"hue-rotate":[{"hue-rotate":[f]}],invert:[{invert:[d]}],saturate:[{saturate:[E]}],sepia:[{sepia:[N]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[t]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[l]}],"backdrop-grayscale":[{"backdrop-grayscale":[u]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[f]}],"backdrop-invert":[{"backdrop-invert":[d]}],"backdrop-opacity":[{"backdrop-opacity":[v]}],"backdrop-saturate":[{"backdrop-saturate":[E]}],"backdrop-sepia":[{"backdrop-sepia":[N]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[i]}],"border-spacing-x":[{"border-spacing-x":[i]}],"border-spacing-y":[{"border-spacing-y":[i]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",ot]}],duration:[{duration:D()}],ease:[{ease:["linear","in","out","in-out",ot]}],delay:[{delay:D()}],animate:[{animate:["none","spin","ping","pulse","bounce",ot]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[A]}],"scale-x":[{"scale-x":[A]}],"scale-y":[{"scale-y":[A]}],rotate:[{rotate:[ls,ot]}],"translate-x":[{"translate-x":[P]}],"translate-y":[{"translate-y":[P]}],"skew-x":[{"skew-x":[T]}],"skew-y":[{"skew-y":[T]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",ot]}],accent:[{accent:["auto",n]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",ot]}],"caret-color":[{caret:[n]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":W()}],"scroll-mx":[{"scroll-mx":W()}],"scroll-my":[{"scroll-my":W()}],"scroll-ms":[{"scroll-ms":W()}],"scroll-me":[{"scroll-me":W()}],"scroll-mt":[{"scroll-mt":W()}],"scroll-mr":[{"scroll-mr":W()}],"scroll-mb":[{"scroll-mb":W()}],"scroll-ml":[{"scroll-ml":W()}],"scroll-p":[{"scroll-p":W()}],"scroll-px":[{"scroll-px":W()}],"scroll-py":[{"scroll-py":W()}],"scroll-ps":[{"scroll-ps":W()}],"scroll-pe":[{"scroll-pe":W()}],"scroll-pt":[{"scroll-pt":W()}],"scroll-pr":[{"scroll-pr":W()}],"scroll-pb":[{"scroll-pb":W()}],"scroll-pl":[{"scroll-pl":W()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",ot]}],fill:[{fill:[n,"none"]}],"stroke-w":[{stroke:[Mo,sa,Fd]}],stroke:[{stroke:[n,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},KC=NC(YC);function ne(...n){return KC(lw(n))}function GC(){if(typeof window>"u"||!window.navigator)return!1;const n=window.navigator.userAgent,e=window.navigator.vendor;return/Safari/.test(n)&&/Apple Computer/.test(e)&&!/Chrome/.test(n)}function mp(){if(typeof window>"u"||!window.navigator)return!1;const n=window.navigator.userAgent;return/torbrowser/i.test(n)}function gl(){return window.innerWidth>768||typeof window>"u"||!window.navigator?!1:"ontouchstart"in window||navigator.maxTouchPoints>0}function JC(n){const e=n.getBoundingClientRect();return e.top>=0&&e.left>=0&&e.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&e.right<=(window.innerWidth||document.documentElement.clientWidth)}function ZC(n){const e=n.getBoundingClientRect();return e.top<(window.innerHeight||document.documentElement.clientHeight)&&e.bottom>0&&e.left<(window.innerWidth||document.documentElement.clientWidth)&&e.right>0}function ZB(){return typeof window>"u"||!navigator.connection?!1:typeof navigator.connection.type=="string"}function _g(n){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)}function QC(){return!1}function XC(n){if(!n)return null;const e=n.replace(X1,"").replace(ew,"").replace(F4,"").replace(fp,"").replace(dp,"").replace(hp,"").replace(Bf,"").trim();if(!e)return null;if(/[\u3040-\u309f\u30a0-\u30ff]/.test(e))return"ja";if(/[\u0e00-\u0e7f]/.test(e))return"th";if(/[\u4e00-\u9fff]/.test(e))return"zh";if(/[\u0600-\u06ff]/.test(e))return"ar";if(/[\u0590-\u05FF]/.test(e))return"fa";if(/[\u0400-\u04ff]/.test(e))return"ru";if(/[\u0900-\u097f]/.test(e))return"hi";try{const t=lC(e),a={ara:"ar",deu:"de",eng:"en",spa:"es",fas:"fa",pes:"fa",fra:"fr",hin:"hi",hun:"hu",ita:"it",jpn:"ja",pol:"pl",por:"pt",rus:"ru",cmn:"zh",zho:"zh"}[t];return a||"und"}catch{return"und"}}function gp(n){if(n.startsWith(":")){const e=n.indexOf(":",1);if(e<0)return;const t=n.slice(1,e),o=n.slice(e+1);return{shortcode:t,url:o}}else return $4(n)}function eP(){return typeof navigator<"u"&&navigator.userAgent?navigator.userAgent:"RogueJumble"}function tP(){const{t:n}=Ae(),[e,t]=h.useState(null),[o,a]=h.useState(!1),[r,i]=h.useState(!1);h.useEffect(()=>{if(window.matchMedia("(display-mode: standalone)").matches){i(!0);return}const f=p=>{p.preventDefault(),t(p),setTimeout(()=>{a(!0)},3e3)},d=()=>{i(!0),a(!1)};return window.addEventListener("beforeinstallprompt",f),window.addEventListener("appinstalled",d),()=>{window.removeEventListener("beforeinstallprompt",f),window.removeEventListener("appinstalled",d)}},[]);const s=async()=>{if(!e)return;e.prompt();const{outcome:u}=await e.userChoice;u==="accepted"&&a(!1),t(null)},l=()=>{a(!1)};return r||!o||!e?null:c.jsx("div",{className:ne("fixed inset-x-0 bottom-0 z-50 p-4 transition-all duration-300","animate-[slideUp_0.3s_ease-out]","md:inset-x-auto md:left-4 md:right-auto md:bottom-4 md:max-w-sm"),children:c.jsx("div",{className:"rounded-2xl border bg-card p-4 shadow-xl shadow-black/10",children:c.jsxs("div",{className:"flex items-start gap-3",children:[c.jsx("div",{className:"flex size-10 shrink-0 items-center justify-center rounded-full bg-primary/10",children:c.jsx(P4,{className:"size-5 text-primary"})}),c.jsxs("div",{className:"flex-1",children:[c.jsx("h3",{className:"font-semibold text-foreground",children:n("Install RogueJumble")}),c.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:n("Install for a native app experience with offline support")}),c.jsxs("div",{className:"mt-3 flex gap-2",children:[c.jsxs("button",{onClick:s,className:"inline-flex items-center gap-1.5 rounded-lg bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground shadow-sm transition-colors hover:bg-primary/90",children:[c.jsx(ml,{className:"size-3.5"}),n("Install")]}),c.jsx("button",{onClick:l,className:"inline-flex items-center rounded-lg px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",children:n("Later")})]})]}),c.jsx("button",{onClick:l,className:"shrink-0 rounded-full p-1 text-muted-foreground hover:bg-accent hover:text-foreground",children:c.jsx(Dn,{className:"size-4"})})]})})})}const Dr=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,vw=new Set,Hf=typeof process=="object"&&process?process:{},bw=(n,e,t,o)=>{typeof Hf.emitWarning=="function"?Hf.emitWarning(n,e,t,o):console.error(`[${t}] ${e}: ${n}`)};let qc=globalThis.AbortController,Fg=globalThis.AbortSignal;var r1;if(typeof qc>"u"){Fg=class{constructor(){H(this,"onabort");H(this,"_onabort",[]);H(this,"reason");H(this,"aborted",!1)}addEventListener(o,a){this._onabort.push(a)}},qc=class{constructor(){H(this,"signal",new Fg);e()}abort(o){var a,r;if(!this.signal.aborted){this.signal.reason=o,this.signal.aborted=!0;for(const i of this.signal._onabort)i(o);(r=(a=this.signal).onabort)==null||r.call(a,o)}}};let n=((r1=Hf.env)==null?void 0:r1.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const e=()=>{n&&(n=!1,bw("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}const nP=n=>!vw.has(n),da=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),kw=n=>da(n)?n<=Math.pow(2,8)?Uint8Array:n<=Math.pow(2,16)?Uint16Array:n<=Math.pow(2,32)?Uint32Array:n<=Number.MAX_SAFE_INTEGER?wc:null:null;class wc extends Array{constructor(e){super(e),this.fill(0)}}var bi;const Ga=class Ga{constructor(e,t){H(this,"heap");H(this,"length");if(!$(Ga,bi))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new t(e),this.length=0}static create(e){const t=kw(e);if(!t)return[];We(Ga,bi,!0);const o=new Ga(e,t);return We(Ga,bi,!1),o}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}};bi=new WeakMap,mt(Ga,bi,!1);let $f=Ga;var i1,s1,Hn,An,$n,Yn,ki,Si,_t,Kn,Mt,Rt,Qe,hn,En,en,Wt,Gn,qt,Jn,Zn,Rn,Qn,ba,pn,Re,Yf,nr,Oo,cl,Cn,Sw,or,xi,ul,fa,ha,Kf,vc,bc,Et,Gf,gs,pa,Jf;const Ym=class Ym{constructor(e){mt(this,Re);mt(this,Hn);mt(this,An);mt(this,$n);mt(this,Yn);mt(this,ki);mt(this,Si);H(this,"ttl");H(this,"ttlResolution");H(this,"ttlAutopurge");H(this,"updateAgeOnGet");H(this,"updateAgeOnHas");H(this,"allowStale");H(this,"noDisposeOnSet");H(this,"noUpdateTTL");H(this,"maxEntrySize");H(this,"sizeCalculation");H(this,"noDeleteOnFetchRejection");H(this,"noDeleteOnStaleGet");H(this,"allowStaleOnFetchAbort");H(this,"allowStaleOnFetchRejection");H(this,"ignoreFetchAbort");mt(this,_t);mt(this,Kn);mt(this,Mt);mt(this,Rt);mt(this,Qe);mt(this,hn);mt(this,En);mt(this,en);mt(this,Wt);mt(this,Gn);mt(this,qt);mt(this,Jn);mt(this,Zn);mt(this,Rn);mt(this,Qn);mt(this,ba);mt(this,pn);mt(this,nr,()=>{});mt(this,Oo,()=>{});mt(this,cl,()=>{});mt(this,Cn,()=>!1);mt(this,or,e=>{});mt(this,xi,(e,t,o)=>{});mt(this,ul,(e,t,o,a)=>{if(o||a)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});H(this,i1,"LRUCache");const{max:t=0,ttl:o,ttlResolution:a=1,ttlAutopurge:r,updateAgeOnGet:i,updateAgeOnHas:s,allowStale:l,dispose:u,disposeAfter:f,noDisposeOnSet:d,noUpdateTTL:p,maxSize:m=0,maxEntrySize:g=0,sizeCalculation:y,fetchMethod:w,memoMethod:v,noDeleteOnFetchRejection:k,noDeleteOnStaleGet:E,allowStaleOnFetchRejection:A,allowStaleOnFetchAbort:N,ignoreFetchAbort:T}=e;if(t!==0&&!da(t))throw new TypeError("max option must be a nonnegative integer");const C=t?kw(t):Array;if(!C)throw new Error("invalid max value: "+t);if(We(this,Hn,t),We(this,An,m),this.maxEntrySize=g||$(this,An),this.sizeCalculation=y,this.sizeCalculation){if(!$(this,An)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(v!==void 0&&typeof v!="function")throw new TypeError("memoMethod must be a function if defined");if(We(this,Si,v),w!==void 0&&typeof w!="function")throw new TypeError("fetchMethod must be a function if specified");if(We(this,ki,w),We(this,ba,!!w),We(this,Mt,new Map),We(this,Rt,new Array(t).fill(void 0)),We(this,Qe,new Array(t).fill(void 0)),We(this,hn,new C(t)),We(this,En,new C(t)),We(this,en,0),We(this,Wt,0),We(this,Gn,$f.create(t)),We(this,_t,0),We(this,Kn,0),typeof u=="function"&&We(this,$n,u),typeof f=="function"?(We(this,Yn,f),We(this,qt,[])):(We(this,Yn,void 0),We(this,qt,void 0)),We(this,Qn,!!$(this,$n)),We(this,pn,!!$(this,Yn)),this.noDisposeOnSet=!!d,this.noUpdateTTL=!!p,this.noDeleteOnFetchRejection=!!k,this.allowStaleOnFetchRejection=!!A,this.allowStaleOnFetchAbort=!!N,this.ignoreFetchAbort=!!T,this.maxEntrySize!==0){if($(this,An)!==0&&!da($(this,An)))throw new TypeError("maxSize must be a positive integer if specified");if(!da(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");Ie(this,Re,Sw).call(this)}if(this.allowStale=!!l,this.noDeleteOnStaleGet=!!E,this.updateAgeOnGet=!!i,this.updateAgeOnHas=!!s,this.ttlResolution=da(a)||a===0?a:1,this.ttlAutopurge=!!r,this.ttl=o||0,this.ttl){if(!da(this.ttl))throw new TypeError("ttl must be a positive integer if specified");Ie(this,Re,Yf).call(this)}if($(this,Hn)===0&&this.ttl===0&&$(this,An)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!$(this,Hn)&&!$(this,An)){const P="LRU_CACHE_UNBOUNDED";nP(P)&&(vw.add(P),bw("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",P,Ym))}}static unsafeExposeInternals(e){return{starts:$(e,Zn),ttls:$(e,Rn),sizes:$(e,Jn),keyMap:$(e,Mt),keyList:$(e,Rt),valList:$(e,Qe),next:$(e,hn),prev:$(e,En),get head(){return $(e,en)},get tail(){return $(e,Wt)},free:$(e,Gn),isBackgroundFetch:t=>{var o;return Ie(o=e,Re,Et).call(o,t)},backgroundFetch:(t,o,a,r)=>{var i;return Ie(i=e,Re,bc).call(i,t,o,a,r)},moveToTail:t=>{var o;return Ie(o=e,Re,gs).call(o,t)},indexes:t=>{var o;return Ie(o=e,Re,fa).call(o,t)},rindexes:t=>{var o;return Ie(o=e,Re,ha).call(o,t)},isStale:t=>{var o;return $(o=e,Cn).call(o,t)}}}get max(){return $(this,Hn)}get maxSize(){return $(this,An)}get calculatedSize(){return $(this,Kn)}get size(){return $(this,_t)}get fetchMethod(){return $(this,ki)}get memoMethod(){return $(this,Si)}get dispose(){return $(this,$n)}get disposeAfter(){return $(this,Yn)}getRemainingTTL(e){return $(this,Mt).has(e)?1/0:0}*entries(){for(const e of Ie(this,Re,fa).call(this))$(this,Qe)[e]!==void 0&&$(this,Rt)[e]!==void 0&&!Ie(this,Re,Et).call(this,$(this,Qe)[e])&&(yield[$(this,Rt)[e],$(this,Qe)[e]])}*rentries(){for(const e of Ie(this,Re,ha).call(this))$(this,Qe)[e]!==void 0&&$(this,Rt)[e]!==void 0&&!Ie(this,Re,Et).call(this,$(this,Qe)[e])&&(yield[$(this,Rt)[e],$(this,Qe)[e]])}*keys(){for(const e of Ie(this,Re,fa).call(this)){const t=$(this,Rt)[e];t!==void 0&&!Ie(this,Re,Et).call(this,$(this,Qe)[e])&&(yield t)}}*rkeys(){for(const e of Ie(this,Re,ha).call(this)){const t=$(this,Rt)[e];t!==void 0&&!Ie(this,Re,Et).call(this,$(this,Qe)[e])&&(yield t)}}*values(){for(const e of Ie(this,Re,fa).call(this))$(this,Qe)[e]!==void 0&&!Ie(this,Re,Et).call(this,$(this,Qe)[e])&&(yield $(this,Qe)[e])}*rvalues(){for(const e of Ie(this,Re,ha).call(this))$(this,Qe)[e]!==void 0&&!Ie(this,Re,Et).call(this,$(this,Qe)[e])&&(yield $(this,Qe)[e])}[(s1=Symbol.iterator,i1=Symbol.toStringTag,s1)](){return this.entries()}find(e,t={}){for(const o of Ie(this,Re,fa).call(this)){const a=$(this,Qe)[o],r=Ie(this,Re,Et).call(this,a)?a.__staleWhileFetching:a;if(r!==void 0&&e(r,$(this,Rt)[o],this))return this.get($(this,Rt)[o],t)}}forEach(e,t=this){for(const o of Ie(this,Re,fa).call(this)){const a=$(this,Qe)[o],r=Ie(this,Re,Et).call(this,a)?a.__staleWhileFetching:a;r!==void 0&&e.call(t,r,$(this,Rt)[o],this)}}rforEach(e,t=this){for(const o of Ie(this,Re,ha).call(this)){const a=$(this,Qe)[o],r=Ie(this,Re,Et).call(this,a)?a.__staleWhileFetching:a;r!==void 0&&e.call(t,r,$(this,Rt)[o],this)}}purgeStale(){let e=!1;for(const t of Ie(this,Re,ha).call(this,{allowStale:!0}))$(this,Cn).call(this,t)&&(Ie(this,Re,pa).call(this,$(this,Rt)[t],"expire"),e=!0);return e}info(e){const t=$(this,Mt).get(e);if(t===void 0)return;const o=$(this,Qe)[t],a=Ie(this,Re,Et).call(this,o)?o.__staleWhileFetching:o;if(a===void 0)return;const r={value:a};if($(this,Rn)&&$(this,Zn)){const i=$(this,Rn)[t],s=$(this,Zn)[t];if(i&&s){const l=i-(Dr.now()-s);r.ttl=l,r.start=Date.now()}}return $(this,Jn)&&(r.size=$(this,Jn)[t]),r}dump(){const e=[];for(const t of Ie(this,Re,fa).call(this,{allowStale:!0})){const o=$(this,Rt)[t],a=$(this,Qe)[t],r=Ie(this,Re,Et).call(this,a)?a.__staleWhileFetching:a;if(r===void 0||o===void 0)continue;const i={value:r};if($(this,Rn)&&$(this,Zn)){i.ttl=$(this,Rn)[t];const s=Dr.now()-$(this,Zn)[t];i.start=Math.floor(Date.now()-s)}$(this,Jn)&&(i.size=$(this,Jn)[t]),e.unshift([o,i])}return e}load(e){this.clear();for(const[t,o]of e){if(o.start){const a=Date.now()-o.start;o.start=Dr.now()-a}this.set(t,o.value,o)}}set(e,t,o={}){var p,m,g,y,w;if(t===void 0)return this.delete(e),this;const{ttl:a=this.ttl,start:r,noDisposeOnSet:i=this.noDisposeOnSet,sizeCalculation:s=this.sizeCalculation,status:l}=o;let{noUpdateTTL:u=this.noUpdateTTL}=o;const f=$(this,ul).call(this,e,t,o.size||0,s);if(this.maxEntrySize&&f>this.maxEntrySize)return l&&(l.set="miss",l.maxEntrySizeExceeded=!0),Ie(this,Re,pa).call(this,e,"set"),this;let d=$(this,_t)===0?void 0:$(this,Mt).get(e);if(d===void 0)d=$(this,_t)===0?$(this,Wt):$(this,Gn).length!==0?$(this,Gn).pop():$(this,_t)===$(this,Hn)?Ie(this,Re,vc).call(this,!1):$(this,_t),$(this,Rt)[d]=e,$(this,Qe)[d]=t,$(this,Mt).set(e,d),$(this,hn)[$(this,Wt)]=d,$(this,En)[d]=$(this,Wt),We(this,Wt,d),ql(this,_t)._++,$(this,xi).call(this,d,f,l),l&&(l.set="add"),u=!1;else{Ie(this,Re,gs).call(this,d);const v=$(this,Qe)[d];if(t!==v){if($(this,ba)&&Ie(this,Re,Et).call(this,v)){v.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:k}=v;k!==void 0&&!i&&($(this,Qn)&&((p=$(this,$n))==null||p.call(this,k,e,"set")),$(this,pn)&&((m=$(this,qt))==null||m.push([k,e,"set"])))}else i||($(this,Qn)&&((g=$(this,$n))==null||g.call(this,v,e,"set")),$(this,pn)&&((y=$(this,qt))==null||y.push([v,e,"set"])));if($(this,or).call(this,d),$(this,xi).call(this,d,f,l),$(this,Qe)[d]=t,l){l.set="replace";const k=v&&Ie(this,Re,Et).call(this,v)?v.__staleWhileFetching:v;k!==void 0&&(l.oldValue=k)}}else l&&(l.set="update")}if(a!==0&&!$(this,Rn)&&Ie(this,Re,Yf).call(this),$(this,Rn)&&(u||$(this,cl).call(this,d,a,r),l&&$(this,Oo).call(this,l,d)),!i&&$(this,pn)&&$(this,qt)){const v=$(this,qt);let k;for(;k=v==null?void 0:v.shift();)(w=$(this,Yn))==null||w.call(this,...k)}return this}pop(){var e;try{for(;$(this,_t);){const t=$(this,Qe)[$(this,en)];if(Ie(this,Re,vc).call(this,!0),Ie(this,Re,Et).call(this,t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if($(this,pn)&&$(this,qt)){const t=$(this,qt);let o;for(;o=t==null?void 0:t.shift();)(e=$(this,Yn))==null||e.call(this,...o)}}}has(e,t={}){const{updateAgeOnHas:o=this.updateAgeOnHas,status:a}=t,r=$(this,Mt).get(e);if(r!==void 0){const i=$(this,Qe)[r];if(Ie(this,Re,Et).call(this,i)&&i.__staleWhileFetching===void 0)return!1;if($(this,Cn).call(this,r))a&&(a.has="stale",$(this,Oo).call(this,a,r));else return o&&$(this,nr).call(this,r),a&&(a.has="hit",$(this,Oo).call(this,a,r)),!0}else a&&(a.has="miss");return!1}peek(e,t={}){const{allowStale:o=this.allowStale}=t,a=$(this,Mt).get(e);if(a===void 0||!o&&$(this,Cn).call(this,a))return;const r=$(this,Qe)[a];return Ie(this,Re,Et).call(this,r)?r.__staleWhileFetching:r}async fetch(e,t={}){const{allowStale:o=this.allowStale,updateAgeOnGet:a=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:i=this.ttl,noDisposeOnSet:s=this.noDisposeOnSet,size:l=0,sizeCalculation:u=this.sizeCalculation,noUpdateTTL:f=this.noUpdateTTL,noDeleteOnFetchRejection:d=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:p=this.allowStaleOnFetchRejection,ignoreFetchAbort:m=this.ignoreFetchAbort,allowStaleOnFetchAbort:g=this.allowStaleOnFetchAbort,context:y,forceRefresh:w=!1,status:v,signal:k}=t;if(!$(this,ba))return v&&(v.fetch="get"),this.get(e,{allowStale:o,updateAgeOnGet:a,noDeleteOnStaleGet:r,status:v});const E={allowStale:o,updateAgeOnGet:a,noDeleteOnStaleGet:r,ttl:i,noDisposeOnSet:s,size:l,sizeCalculation:u,noUpdateTTL:f,noDeleteOnFetchRejection:d,allowStaleOnFetchRejection:p,allowStaleOnFetchAbort:g,ignoreFetchAbort:m,status:v,signal:k};let A=$(this,Mt).get(e);if(A===void 0){v&&(v.fetch="miss");const N=Ie(this,Re,bc).call(this,e,A,E,y);return N.__returned=N}else{const N=$(this,Qe)[A];if(Ie(this,Re,Et).call(this,N)){const U=o&&N.__staleWhileFetching!==void 0;return v&&(v.fetch="inflight",U&&(v.returnedStale=!0)),U?N.__staleWhileFetching:N.__returned=N}const T=$(this,Cn).call(this,A);if(!w&&!T)return v&&(v.fetch="hit"),Ie(this,Re,gs).call(this,A),a&&$(this,nr).call(this,A),v&&$(this,Oo).call(this,v,A),N;const C=Ie(this,Re,bc).call(this,e,A,E,y),M=C.__staleWhileFetching!==void 0&&o;return v&&(v.fetch=T?"stale":"refresh",M&&T&&(v.returnedStale=!0)),M?C.__staleWhileFetching:C.__returned=C}}async forceFetch(e,t={}){const o=await this.fetch(e,t);if(o===void 0)throw new Error("fetch() returned undefined");return o}memo(e,t={}){const o=$(this,Si);if(!o)throw new Error("no memoMethod provided to constructor");const{context:a,forceRefresh:r,...i}=t,s=this.get(e,i);if(!r&&s!==void 0)return s;const l=o(e,s,{options:i,context:a});return this.set(e,l,i),l}get(e,t={}){const{allowStale:o=this.allowStale,updateAgeOnGet:a=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:i}=t,s=$(this,Mt).get(e);if(s!==void 0){const l=$(this,Qe)[s],u=Ie(this,Re,Et).call(this,l);return i&&$(this,Oo).call(this,i,s),$(this,Cn).call(this,s)?(i&&(i.get="stale"),u?(i&&o&&l.__staleWhileFetching!==void 0&&(i.returnedStale=!0),o?l.__staleWhileFetching:void 0):(r||Ie(this,Re,pa).call(this,e,"expire"),i&&o&&(i.returnedStale=!0),o?l:void 0)):(i&&(i.get="hit"),u?l.__staleWhileFetching:(Ie(this,Re,gs).call(this,s),a&&$(this,nr).call(this,s),l))}else i&&(i.get="miss")}delete(e){return Ie(this,Re,pa).call(this,e,"delete")}clear(){return Ie(this,Re,Jf).call(this,"delete")}};Hn=new WeakMap,An=new WeakMap,$n=new WeakMap,Yn=new WeakMap,ki=new WeakMap,Si=new WeakMap,_t=new WeakMap,Kn=new WeakMap,Mt=new WeakMap,Rt=new WeakMap,Qe=new WeakMap,hn=new WeakMap,En=new WeakMap,en=new WeakMap,Wt=new WeakMap,Gn=new WeakMap,qt=new WeakMap,Jn=new WeakMap,Zn=new WeakMap,Rn=new WeakMap,Qn=new WeakMap,ba=new WeakMap,pn=new WeakMap,Re=new WeakSet,Yf=function(){const e=new wc($(this,Hn)),t=new wc($(this,Hn));We(this,Rn,e),We(this,Zn,t),We(this,cl,(r,i,s=Dr.now())=>{if(t[r]=i!==0?s:0,e[r]=i,i!==0&&this.ttlAutopurge){const l=setTimeout(()=>{$(this,Cn).call(this,r)&&Ie(this,Re,pa).call(this,$(this,Rt)[r],"expire")},i+1);l.unref&&l.unref()}}),We(this,nr,r=>{t[r]=e[r]!==0?Dr.now():0}),We(this,Oo,(r,i)=>{if(e[i]){const s=e[i],l=t[i];if(!s||!l)return;r.ttl=s,r.start=l,r.now=o||a();const u=r.now-l;r.remainingTTL=s-u}});let o=0;const a=()=>{const r=Dr.now();if(this.ttlResolution>0){o=r;const i=setTimeout(()=>o=0,this.ttlResolution);i.unref&&i.unref()}return r};this.getRemainingTTL=r=>{const i=$(this,Mt).get(r);if(i===void 0)return 0;const s=e[i],l=t[i];if(!s||!l)return 1/0;const u=(o||a())-l;return s-u},We(this,Cn,r=>{const i=t[r],s=e[r];return!!s&&!!i&&(o||a())-i>s})},nr=new WeakMap,Oo=new WeakMap,cl=new WeakMap,Cn=new WeakMap,Sw=function(){const e=new wc($(this,Hn));We(this,Kn,0),We(this,Jn,e),We(this,or,t=>{We(this,Kn,$(this,Kn)-e[t]),e[t]=0}),We(this,ul,(t,o,a,r)=>{if(Ie(this,Re,Et).call(this,o))return 0;if(!da(a))if(r){if(typeof r!="function")throw new TypeError("sizeCalculation must be a function");if(a=r(o,t),!da(a))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return a}),We(this,xi,(t,o,a)=>{if(e[t]=o,$(this,An)){const r=$(this,An)-e[t];for(;$(this,Kn)>r;)Ie(this,Re,vc).call(this,!0)}We(this,Kn,$(this,Kn)+e[t]),a&&(a.entrySize=o,a.totalCalculatedSize=$(this,Kn))})},or=new WeakMap,xi=new WeakMap,ul=new WeakMap,fa=function*({allowStale:e=this.allowStale}={}){if($(this,_t))for(let t=$(this,Wt);!(!Ie(this,Re,Kf).call(this,t)||((e||!$(this,Cn).call(this,t))&&(yield t),t===$(this,en)));)t=$(this,En)[t]},ha=function*({allowStale:e=this.allowStale}={}){if($(this,_t))for(let t=$(this,en);!(!Ie(this,Re,Kf).call(this,t)||((e||!$(this,Cn).call(this,t))&&(yield t),t===$(this,Wt)));)t=$(this,hn)[t]},Kf=function(e){return e!==void 0&&$(this,Mt).get($(this,Rt)[e])===e},vc=function(e){var r,i;const t=$(this,en),o=$(this,Rt)[t],a=$(this,Qe)[t];return $(this,ba)&&Ie(this,Re,Et).call(this,a)?a.__abortController.abort(new Error("evicted")):($(this,Qn)||$(this,pn))&&($(this,Qn)&&((r=$(this,$n))==null||r.call(this,a,o,"evict")),$(this,pn)&&((i=$(this,qt))==null||i.push([a,o,"evict"]))),$(this,or).call(this,t),e&&($(this,Rt)[t]=void 0,$(this,Qe)[t]=void 0,$(this,Gn).push(t)),$(this,_t)===1?(We(this,en,We(this,Wt,0)),$(this,Gn).length=0):We(this,en,$(this,hn)[t]),$(this,Mt).delete(o),ql(this,_t)._--,t},bc=function(e,t,o,a){const r=t===void 0?void 0:$(this,Qe)[t];if(Ie(this,Re,Et).call(this,r))return r;const i=new qc,{signal:s}=o;s==null||s.addEventListener("abort",()=>i.abort(s.reason),{signal:i.signal});const l={signal:i.signal,options:o,context:a},u=(y,w=!1)=>{const{aborted:v}=i.signal,k=o.ignoreFetchAbort&&y!==void 0;if(o.status&&(v&&!w?(o.status.fetchAborted=!0,o.status.fetchError=i.signal.reason,k&&(o.status.fetchAbortIgnored=!0)):o.status.fetchResolved=!0),v&&!k&&!w)return d(i.signal.reason);const E=m;return $(this,Qe)[t]===m&&(y===void 0?E.__staleWhileFetching?$(this,Qe)[t]=E.__staleWhileFetching:Ie(this,Re,pa).call(this,e,"fetch"):(o.status&&(o.status.fetchUpdated=!0),this.set(e,y,l.options))),y},f=y=>(o.status&&(o.status.fetchRejected=!0,o.status.fetchError=y),d(y)),d=y=>{const{aborted:w}=i.signal,v=w&&o.allowStaleOnFetchAbort,k=v||o.allowStaleOnFetchRejection,E=k||o.noDeleteOnFetchRejection,A=m;if($(this,Qe)[t]===m&&(!E||A.__staleWhileFetching===void 0?Ie(this,Re,pa).call(this,e,"fetch"):v||($(this,Qe)[t]=A.__staleWhileFetching)),k)return o.status&&A.__staleWhileFetching!==void 0&&(o.status.returnedStale=!0),A.__staleWhileFetching;if(A.__returned===A)throw y},p=(y,w)=>{var k;const v=(k=$(this,ki))==null?void 0:k.call(this,e,r,l);v&&v instanceof Promise&&v.then(E=>y(E===void 0?void 0:E),w),i.signal.addEventListener("abort",()=>{(!o.ignoreFetchAbort||o.allowStaleOnFetchAbort)&&(y(void 0),o.allowStaleOnFetchAbort&&(y=E=>u(E,!0)))})};o.status&&(o.status.fetchDispatched=!0);const m=new Promise(p).then(u,f),g=Object.assign(m,{__abortController:i,__staleWhileFetching:r,__returned:void 0});return t===void 0?(this.set(e,g,{...l.options,status:void 0}),t=$(this,Mt).get(e)):$(this,Qe)[t]=g,g},Et=function(e){if(!$(this,ba))return!1;const t=e;return!!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof qc},Gf=function(e,t){$(this,En)[t]=e,$(this,hn)[e]=t},gs=function(e){e!==$(this,Wt)&&(e===$(this,en)?We(this,en,$(this,hn)[e]):Ie(this,Re,Gf).call(this,$(this,En)[e],$(this,hn)[e]),Ie(this,Re,Gf).call(this,$(this,Wt),e),We(this,Wt,e))},pa=function(e,t){var a,r,i,s;let o=!1;if($(this,_t)!==0){const l=$(this,Mt).get(e);if(l!==void 0)if(o=!0,$(this,_t)===1)Ie(this,Re,Jf).call(this,t);else{$(this,or).call(this,l);const u=$(this,Qe)[l];if(Ie(this,Re,Et).call(this,u)?u.__abortController.abort(new Error("deleted")):($(this,Qn)||$(this,pn))&&($(this,Qn)&&((a=$(this,$n))==null||a.call(this,u,e,t)),$(this,pn)&&((r=$(this,qt))==null||r.push([u,e,t]))),$(this,Mt).delete(e),$(this,Rt)[l]=void 0,$(this,Qe)[l]=void 0,l===$(this,Wt))We(this,Wt,$(this,En)[l]);else if(l===$(this,en))We(this,en,$(this,hn)[l]);else{const f=$(this,En)[l];$(this,hn)[f]=$(this,hn)[l];const d=$(this,hn)[l];$(this,En)[d]=$(this,En)[l]}ql(this,_t)._--,$(this,Gn).push(l)}}if($(this,pn)&&((i=$(this,qt))!=null&&i.length)){const l=$(this,qt);let u;for(;u=l==null?void 0:l.shift();)(s=$(this,Yn))==null||s.call(this,...u)}return o},Jf=function(e){var t,o,a;for(const r of Ie(this,Re,ha).call(this,{allowStale:!0})){const i=$(this,Qe)[r];if(Ie(this,Re,Et).call(this,i))i.__abortController.abort(new Error("deleted"));else{const s=$(this,Rt)[r];$(this,Qn)&&((t=$(this,$n))==null||t.call(this,i,s,e)),$(this,pn)&&((o=$(this,qt))==null||o.push([i,s,e]))}}if($(this,Mt).clear(),$(this,Qe).fill(void 0),$(this,Rt).fill(void 0),$(this,Rn)&&$(this,Zn)&&($(this,Rn).fill(0),$(this,Zn).fill(0)),$(this,Jn)&&$(this,Jn).fill(0),We(this,en,0),We(this,Wt,0),$(this,Gn).length=0,We(this,Kn,0),We(this,_t,0),$(this,pn)&&$(this,qt)){const r=$(this,qt);let i;for(;i=r==null?void 0:r.shift();)(a=$(this,Yn))==null||a.call(this,...i)}};let mn=Ym;new TextDecoder("utf-8");var oP=new TextEncoder;function xw(n){let e=0;for(let t=0;t<64;t+=8){const o=parseInt(n.substring(t,t+8),16);if(o===0)e+=32;else{e+=Math.clz32(o);break}}return e}function aP(n){return nn(io(oP.encode(JSON.stringify([0,n.pubkey,n.created_at,n.kind,n.tags,n.content]))))}var rP=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","#","$","%","*","+",",","-",".",":",";","=","?","@","[","]","^","_","{","|","}","~"],ys=n=>{let e=0;for(let t=0;t<n.length;t++){let o=n[t],a=rP.indexOf(o);e=e*83+a}return e},Od=n=>{let e=n/255;return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},Ud=n=>{let e=Math.max(0,Math.min(1,n));return e<=.0031308?Math.trunc(e*12.92*255+.5):Math.trunc((1.055*Math.pow(e,.4166666666666667)-.055)*255+.5)},iP=n=>n<0?-1:1,Bd=(n,e)=>iP(n)*Math.pow(Math.abs(n),e),Og=class extends Error{constructor(n){super(n),this.name="ValidationError",this.message=n}},Aw=n=>{if(!n||n.length<6)throw new Og("The blurhash string must be at least 6 characters");let e=ys(n[0]),t=Math.floor(e/9)+1,o=e%9+1;if(n.length!==4+2*o*t)throw new Og(`blurhash length mismatch: length is ${n.length} but it should be ${4+2*o*t}`)},sP=n=>{try{Aw(n)}catch(e){return{result:!1,errorReason:e.message}}return{result:!0}},lP=n=>{let e=n>>16,t=n>>8&255,o=n&255;return[Od(e),Od(t),Od(o)]},cP=(n,e)=>{let t=Math.floor(n/361),o=Math.floor(n/19)%19,a=n%19;return[Bd((t-9)/9,2)*e,Bd((o-9)/9,2)*e,Bd((a-9)/9,2)*e]},uP=(n,e,t,o)=>{Aw(n),o=o|1;let a=ys(n[0]),r=Math.floor(a/9)+1,i=a%9+1,s=(ys(n[1])+1)/166,l=new Array(i*r);for(let d=0;d<l.length;d++)if(d===0){let p=ys(n.substring(2,6));l[d]=lP(p)}else{let p=ys(n.substring(4+d*2,6+d*2));l[d]=cP(p,s*o)}let u=e*4,f=new Uint8ClampedArray(u*t);for(let d=0;d<t;d++)for(let p=0;p<e;p++){let m=0,g=0,y=0;for(let E=0;E<r;E++)for(let A=0;A<i;A++){let N=Math.cos(Math.PI*p*A/e)*Math.cos(Math.PI*d*E/t),T=l[A+E*i];m+=T[0]*N,g+=T[1]*N,y+=T[2]*N}let w=Ud(m),v=Ud(g),k=Ud(y);f[4*p+0+d*u]=w,f[4*p+1+d*u]=v,f[4*p+2+d*u]=k,f[4*p+3+d*u]=255}return f},dP=uP;function Ri(n){const e=ur(n);return e?ju(e):n.slice(0,4)+"..."+n.slice(-4)}function ju(n,e=12){if(e<12&&(e=12),e>=63)return n;const t=Math.floor((e-5)/2)+5,o=e-t;return n.slice(0,t)+"..."+n.slice(-o)}function fP(n){return n.startsWith("npub1")?ju(n):Ri(n)}function ur(n){try{return Nt.npubEncode(n)}catch{return null}}function dr(n,e=!1){if(n.startsWith("npub1")||n.startsWith("nprofile1"))try{const{type:t,data:o}=Nt.decode(n);if(t==="npub")return o;if(t==="nprofile")return o.pubkey}catch(t){if(e)throw new Error("Invalid id");console.error("Error decoding userId:",n,"error:",t)}return n}function Sa(n){return/^[0-9a-f]{64}$/.test(n)}const Vd=new mn({max:1e3});function hP(n){if(Vd.has(n))return Vd.get(n);const e=n.padEnd(2,"0"),t=[],o=[];for(let s=0;s<11;s++){const l=e.slice(s*6,(s+1)*6);s<3?t.push(`#${l}`):o.push(l)}const a=o.map((s,l)=>{const u=parseInt(s.slice(0,2),16)%100,f=parseInt(s.slice(2,4),16)%100,d=parseInt(s.slice(4,6),16)%35+30,p=t[l%(t.length-1)];return`
        <radialGradient id="grad${l}-${n}" cx="${u}%" cy="${f}%" r="${d}%">
          <stop offset="0%" style="stop-color:${p};stop-opacity:1" />
          <stop offset="100%" style="stop-color:${p};stop-opacity:0" />
        </radialGradient>
        <rect width="100%" height="100%" fill="url(#grad${l}-${n})" />
      `}).join(""),r=`
    <svg width="100" height="100" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
      <rect width="100%" height="100%" fill="${t[2]}" fill-opacity="0.3" />
      ${a}
    </svg>
  `,i=`data:image/svg+xml;base64,${btoa(r)}`;return Vd.set(n,i),i}function yl(n){try{const e=new URL(n).protocol;return e==="ws:"||e==="wss:"}catch{return!1}}function Ar(n){try{const e=new URL(n).protocol;return e==="ws:"||e==="http:"}catch{return!1}}function Ew(n){try{return new URL(n).hostname.endsWith(".onion")}catch{return!1}}function jn(n){try{n.indexOf("://")===-1&&(n.startsWith("localhost:")||n.startsWith("localhost/")||n.startsWith("127.")||n.startsWith("192.168.")?n="ws://"+n:n="wss://"+n);const e=new URL(n);return e.pathname=e.pathname.replace(/\/+/g,"/"),e.pathname.endsWith("/")&&(e.pathname=e.pathname.slice(0,-1)),e.protocol==="https:"?e.protocol="wss:":e.protocol==="http:"&&(e.protocol="ws:"),(e.port==="80"&&e.protocol==="ws:"||e.port==="443"&&e.protocol==="wss:")&&(e.port=""),e.searchParams.sort(),e.hash="",e.toString()}catch{return console.error("Invalid URL:",n),""}}function Rw(n){try{n.indexOf("://")===-1&&(n="https://"+n);const e=new URL(n);return e.pathname=e.pathname.replace(/\/+/g,"/"),e.pathname.endsWith("/")&&(e.pathname=e.pathname.slice(0,-1)),e.protocol==="wss:"?e.protocol="https:":e.protocol==="ws:"&&(e.protocol="http:"),(e.port==="80"&&e.protocol==="http:"||e.port==="443"&&e.protocol==="https:")&&(e.port=""),e.searchParams.sort(),e.hash="",e.toString()}catch{return console.error("Invalid URL:",n),""}}function Fn(n){return n.replace("wss://","").replace("ws://","").replace("https://","").replace("http://","").replace(/\/$/,"")}function Ug(n){try{const t=new URL(n).hostname;if(t==="localhost"||t==="::1")return!0;const o=t.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);if(o){const[,a,r,i,s]=o.map(Number);return a===10||a===172&&r>=16&&r<=31||a===192&&r===168||a===127&&r===0&&i===0&&s===1}return!!(t.includes(":")&&(t==="::1"||t.startsWith("fe80:")||t.startsWith("fc")||t.startsWith("fd")))}catch{return!1}}function pP(n){return Cw(n,[".jpg",".jpeg",".png",".gif",".webp",".heic",".svg"])}function mP(n){return Cw(n,[".mp4",".webm",".ogg",".mov",".mp3",".wav",".flac",".aac",".m4a",".opus",".wma",".3gp"])}function Cw(n,e){try{const t=n.toLowerCase();if(e.some(s=>t.endsWith(s)))return!0;const a=new URL(t);if(e.some(s=>a.pathname.endsWith(s)))return!0;const i=a.searchParams.get("filename");return i?e.some(s=>i.endsWith(s)):!1}catch{return!1}}const gP=(n,e=40)=>{try{const t=new URL(n);let o=t.hostname,a=t.pathname;if(o.startsWith("www.")&&(o=o.slice(4)),!a||a==="/")return o;a.endsWith("/")&&(a=a.slice(0,-1));const r=o+a;return r.length>e?o+a.slice(0,e-o.length-3)+"...":r}catch{let t=n;return t.startsWith("https://")?t=t.slice(8):t.startsWith("http://")&&(t=t.slice(7)),t.startsWith("www.")&&(t=t.slice(4)),t.length>e?t.slice(0,e-3)+"...":t}};function Ke(n){return e=>e[0]===n}function Er(n){try{const[,e,t,o,a]=n;let r;return o&&Sa(o)?r=o:a&&Sa(a)&&(r=a),Nt.neventEncode({id:e,relays:t?[t]:void 0,author:r})}catch{return}}function Is(n){try{const[,e,t]=n,[o,a,...r]=e.split(":"),i=r.join(":");return Nt.naddrEncode({kind:Number(o),pubkey:a,identifier:i,relays:t?[t]:void 0})}catch{return}}function Pw(n,e){if(n[0]!=="imeta")return null;const t={pubkey:e};for(let o=1;o<n.length;o++){const[a,r]=n[o].split(" ");switch(a){case"url":t.url=r;break;case"thumbhash":try{t.thumbHash=fl.decode(r)}catch{}break;case"blurhash":{sP(r).result&&(t.blurHash=r);break}case"dim":{const[i,s]=r.split("x").map(Number);i&&s&&(t.dim={width:i,height:s});break}}}return t.url?t:null}function Ls(n){return Array.from(new Set(n.filter(Ke("p")).map(([,e])=>e).filter(e=>!!e&&Sa(e)).reverse()))}function Ko(n=[]){return n.map(e=>e.length<3||e[0]!=="emoji"?null:{shortcode:e[1],url:e[2]}).filter(Boolean)}function yP(n=[]){return n.filter(Ke("server")).map(([,e])=>e?Rw(e):"").filter(Boolean)}const Bg="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",wP="abcdef0123456789";function ea(n=32,{hex:e}={hex:!1}){let t="";const o=e?wP:Bg;for(let a=0;a<n;a++)t+=o[Math.floor(Math.random()*Bg.length)];return t}const Vg=new mn({max:1e4}),Wg=new mn({max:1e4}),qg=new mn({max:1e4});function vP(n){return n.tags.some(([e,t])=>e==="content-warning"||e==="t"&&t.toLowerCase()==="nsfw")}function bP(n){if([ce.COMMENT,ce.VOICE_COMMENT].includes(n.kind))return!0;if(n.kind!==Z.ShortTextNote)return!1;const e=qg.get(n.id);if(e!==void 0)return e;const t=!!Hc(n);return qg.set(n.id,t),t}function Bt(n){return isNaN(n)?!1:Z.isReplaceableKind(n)||Z.isAddressableKind(n)}function Ui(n){return n.tags.some(([e])=>e==="-")}function zu(n,e){for(const[t,o]of n.tags)if(t==="p"&&e.has(o))return!0;return!1}function Hg(n){if(!n)return;if(n.kind===ce.COMMENT||n.kind===ce.VOICE_COMMENT)return n.tags.find(Ke("e"))??n.tags.find(Ke("E"));if(n.kind!==Z.ShortTextNote)return;let e=n.tags.find(([t,,,o])=>t==="e"&&o==="reply");if(!e){const t=jw(n);e=n.tags.findLast(([o,a,,r])=>o==="e"&&!!a&&r!=="mention"&&!t.includes(a))}return e}function kP(n){if(!(!n||n.kind!==Z.ShortTextNote))return n.tags.find(([e,,,t])=>e==="a"&&t==="reply")}function SP(n){if(!(!n||![Z.ShortTextNote,ce.COMMENT,ce.VOICE_COMMENT].includes(n.kind)))return n.tags.find(Ke("a"))??n.tags.find(Ke("A"))}function Nw(n){if(!(!n||![Z.ShortTextNote,ce.COMMENT,ce.VOICE_COMMENT].includes(n.kind)))return n.tags.find(Ke("i"))??n.tags.find(Ke("I"))}function Hc(n){var a;if(!n)return;if(n.kind===Z.ShortTextNote){const r=kP(n)??Hg(n)??Tw(n);return r?{type:r[0]==="e"?"e":"a",tag:r}:void 0}const e=(a=n.tags.find(Ke("k")))==null?void 0:a[1];if(e&&Bt(parseInt(e))){const r=SP(n);return r?{type:"a",tag:r}:void 0}const t=Hg(n);if(t)return{type:"e",tag:t};const o=Nw(n);return o?{type:"i",tag:o}:void 0}function xP(n){const e=Hc(n);if(e)return e.type==="e"?Er(e.tag):Is(e.tag)}function $g(n){if(!n)return;if(n.kind===ce.COMMENT||n.kind===ce.VOICE_COMMENT)return n.tags.find(Ke("E"));if(n.kind!==Z.ShortTextNote)return;let e=n.tags.find(([t,,,o])=>t==="e"&&o==="root");if(!e){const t=jw(n);e=n.tags.find(([o,a])=>o==="e"&&!!a&&!t.includes(a))}return e}function Tw(n){if(!(!n||n.kind!==Z.ShortTextNote))return n.tags.find(([e,,,t])=>e==="a"&&t==="root")}function AP(n){if(!(!n||![Z.ShortTextNote,ce.COMMENT,ce.VOICE_COMMENT].includes(n.kind)))return n.tags.find(Ke("A"))}function EP(n){if(!(!n||![Z.ShortTextNote,ce.COMMENT,ce.VOICE_COMMENT].includes(n.kind)))return n.tags.find(Ke("I"))}function yp(n){var a;if(!n)return;if(n.kind===Z.ShortTextNote){const r=Tw(n)??$g(n);return r?{type:r[0]==="e"?"e":"a",tag:r}:void 0}const e=(a=n.tags.find(Ke("K")))==null?void 0:a[1];if(e&&Bt(parseInt(e))){const r=AP(n);return r?{type:"a",tag:r}:void 0}const t=$g(n);if(t)return{type:"e",tag:t};const o=EP(n);return o?{type:"i",tag:o}:void 0}function eV(n){const e=yp(n);if(e)return e.type==="e"?Er(e.tag):Is(e.tag)}function RP(n){const e=xP(n);if(e)return{parentEventId:e};const t=Nw(n);return{parentExternalContent:t==null?void 0:t[1]}}function _n(n){return Bt(n.kind)?ln(n):n.id}function Yg([,n]){return n}function wp(n,e,t=""){return`${n}:${e}:${t}`}function ln(n){var t;const e=(t=n.tags.find(Ke("d")))==null?void 0:t[1];return wp(n.kind,n.pubkey,e)}function xa(n){var t;const e=le.getEventHints(n.id).slice(0,2);if(Bt(n.kind)){const o=((t=n.tags.find(Ke("d")))==null?void 0:t[1])??"";return Nt.naddrEncode({pubkey:n.pubkey,kind:n.kind,identifier:o,relays:e})}return Nt.neventEncode({id:n.id,author:n.pubkey,kind:n.kind,relays:e})}function CP(n){var e;return(e=n.tags.find(Ke("client")))==null?void 0:e[1]}function $c(n){const e=[];return n.tags.forEach(t=>{const o=Pw(t,n.pubkey);o&&e.push(o)}),e}function jw(n){const e=Vg.get(n.id);if(e)return e;const t=[],o=/nostr:(note1[a-z0-9]{58}|nevent1[a-z0-9]+)/g;return(n.content.match(o)||[]).forEach(a=>{try{const{type:r,data:i}=Nt.decode(a.split(":")[1]);r==="nevent"?t.push(i.id):r==="note"&&t.push(i)}catch{}}),Vg.set(n.id,t),t}function tV(n){const e=Wg.get(n.id);if(e)return e;const t=new Set;(n.content.match(fp)||[]).forEach(a=>{try{const{type:r,data:i}=Nt.decode(a.split(":")[1]);r==="npub"?t.add(i):r==="nprofile"&&t.add(i.pubkey)}catch{}});const o=Array.from(t);return Wg.set(n.id,o),o}function PP(n){return n.sort((e,t)=>t.created_at-e.created_at)[0]}function ir(n){var e;return((e=n.tags.find(Ke("d")))==null?void 0:e[1])??""}function vp(n){return{id:ea(64,{hex:!0}),kind:1,pubkey:"",content:"",created_at:0,tags:[],sig:"",...n}}async function NP(n,e){let t=0;const o=n,a=["nonce",t.toString(),e.toString()];return o.tags.push(a),new Promise(r=>{const i=()=>{let s=0;for(;s<1e3;){const l=Math.floor(new Date().getTime()/1e3);if(l!==o.created_at&&(t=0,o.created_at=l),a[1]=(++t).toString(),o.id=aP(o),xw(o.id)>=e){r(o);return}s++}setTimeout(i,0)};i()})}function Uo(n,e){return n.created_at!==e.created_at?n.created_at-e.created_at:n.id!==e.id?n.id<e.id?1:-1:0}function nV(n){return n.sort((e,t)=>Uo(t,e))}function zw(n){try{return new Es({pr:n}).satoshi}catch(e){return console.error("Invalid Lightning invoice:",e),0}}function TP(n){try{const e=new Es({pr:n});return{amount:e.satoshi,description:e.description}}catch(e){return console.error("Invalid Lightning invoice:",e),{amount:0,description:null}}}function Iw(n){const{lud16:e,lud06:t}=n;let o,a;return e&&_g(e)?o=e:t&&_g(t)?o=t:t&&t.startsWith("lnurl")?a=t:e&&e.startsWith("lnurl")&&(a=e),o||a||void 0}function va(n,e){return(n==null?void 0:n.pubkey)===(e==null?void 0:e.pubkey)&&(n==null?void 0:n.signerType)===(e==null?void 0:e.signerType)}const Gr=class Gr{constructor(){H(this,"relaySets",[]);H(this,"themeSetting","sapphire");H(this,"accounts",[]);H(this,"currentAccount",null);H(this,"noteListMode","posts");H(this,"lastReadNotificationTimeMap",{});H(this,"defaultZapSats",21);H(this,"defaultZapComment","Zap!");H(this,"quickZap",!1);H(this,"walletDisplayUnit","sats");H(this,"accountFeedInfoMap",{});H(this,"mediaUploadService",Ig);H(this,"autoplay",!0);H(this,"videoLoop",!1);H(this,"translationServiceConfigMap",{});H(this,"mediaUploadServiceConfigMap",{});H(this,"dismissedTooManyRelaysAlert",!1);H(this,"showKinds",[]);H(this,"hideContentMentioningMutedUsers",!1);H(this,"notificationListStyle",Jl.DETAILED);H(this,"mediaAutoLoadPolicy",Uc.ALWAYS);H(this,"profilePictureAutoLoadPolicy",Bc.ALWAYS);H(this,"shownCreateWalletGuideToastPubkeys",new Set);H(this,"sidebarCollapse",!1);H(this,"primaryColor","DEFAULT");H(this,"enableSingleColumnLayout",!0);H(this,"faviconUrlTemplate",Lg);H(this,"filterOutOnionRelays",!mp());H(this,"allowInsecureConnection",!1);H(this,"enableTorMode",!1);H(this,"quickReaction",!1);H(this,"quickReactionEmoji","+");H(this,"nsfwDisplayPolicy",ms.HIDE_CONTENT);H(this,"font",Md.DEFAULT);H(this,"fontSize",Dd.DEFAULT);H(this,"defaultRelayUrls",M4);H(this,"searchRelayUrls",D4);H(this,"mutedWords",[]);H(this,"minTrustScore",0);H(this,"minTrustScoreMap",{});H(this,"hideIndirectNotifications",!1);return Gr.instance||(this.init(),Gr.instance=this),Gr.instance}init(){this.themeSetting=window.localStorage.getItem(me.THEME_SETTING)??"sapphire";const e=window.localStorage.getItem(me.ACCOUNTS);this.accounts=e?JSON.parse(e):[];const t=window.localStorage.getItem(me.CURRENT_ACCOUNT);this.currentAccount=t?JSON.parse(t):null;const o=window.localStorage.getItem(me.NOTE_LIST_MODE);this.noteListMode=o&&["posts","postsAndReplies","24h"].includes(o)?o:"posts";const a=window.localStorage.getItem(me.LAST_READ_NOTIFICATION_TIME_MAP)??"{}";this.lastReadNotificationTimeMap=JSON.parse(a);const r=window.localStorage.getItem(me.RELAY_SETS);if(r)this.relaySets=JSON.parse(r);else{let P=[];const M=window.localStorage.getItem("relayGroups");M&&(P=JSON.parse(M).map(O=>({id:ea(),name:O.groupName,relayUrls:O.relayUrls}))),P.length||(P=[]),window.localStorage.setItem(me.RELAY_SETS,JSON.stringify(P)),this.relaySets=P}const i=window.localStorage.getItem(me.DEFAULT_ZAP_SATS);if(i){const P=parseInt(i);isNaN(P)||(this.defaultZapSats=P)}this.defaultZapComment=window.localStorage.getItem(me.DEFAULT_ZAP_COMMENT)??"Zap!",this.quickZap=window.localStorage.getItem(me.QUICK_ZAP)==="true",this.walletDisplayUnit=window.localStorage.getItem(me.WALLET_DISPLAY_UNIT)??"sats";const s=window.localStorage.getItem(me.ACCOUNT_FEED_INFO_MAP)??"{}";this.accountFeedInfoMap=JSON.parse(s),this.mediaUploadService=window.localStorage.getItem(me.MEDIA_UPLOAD_SERVICE)??Ig,this.autoplay=window.localStorage.getItem(me.AUTOPLAY)!=="false",this.videoLoop=window.localStorage.getItem(me.VIDEO_LOOP)==="true";const l=window.localStorage.getItem(me.TRANSLATION_SERVICE_CONFIG_MAP);l&&(this.translationServiceConfigMap=JSON.parse(l));const u=window.localStorage.getItem(me.MEDIA_UPLOAD_SERVICE_CONFIG_MAP);u&&(this.mediaUploadServiceConfigMap=JSON.parse(u));const f=window.localStorage.getItem(me.NSFW_DISPLAY_POLICY);if(f&&Object.values(ms).includes(f))this.nsfwDisplayPolicy=f;else{const P=window.localStorage.getItem(me.DEFAULT_SHOW_NSFW);this.nsfwDisplayPolicy=P==="true"?ms.SHOW:ms.HIDE_CONTENT,window.localStorage.setItem(me.NSFW_DISPLAY_POLICY,this.nsfwDisplayPolicy)}const d=window.localStorage.getItem(me.FONT);d&&Object.values(Md).includes(d)?this.font=d:(this.font=Md.DEFAULT,window.localStorage.setItem(me.FONT,this.font));const p=window.localStorage.getItem(me.FONT_SIZE);p&&Object.values(Dd).includes(p)?this.fontSize=p:(this.fontSize=Dd.DEFAULT,window.localStorage.setItem(me.FONT_SIZE,this.fontSize)),this.dismissedTooManyRelaysAlert=window.localStorage.getItem(me.DISMISSED_TOO_MANY_RELAYS_ALERT)==="true";const m=window.localStorage.getItem(me.SHOW_KINDS);if(!m)this.showKinds=Q1;else{const P=window.localStorage.getItem(me.SHOW_KINDS_VERSION),M=P?parseInt(P):0,U=new Set(JSON.parse(m));M<1&&(U.add(ce.VIDEO),U.add(ce.SHORT_VIDEO)),M<2&&U.has(ce.VIDEO)&&(U.add(ce.ADDRESSABLE_NORMAL_VIDEO),U.add(ce.ADDRESSABLE_SHORT_VIDEO)),M<3&&U.has(24236)&&(U.delete(24236),U.add(ce.ADDRESSABLE_SHORT_VIDEO)),M<4&&U.has(Z.Repost)&&U.add(Z.GenericRepost),this.showKinds=Array.from(U)}window.localStorage.setItem(me.SHOW_KINDS,JSON.stringify(this.showKinds)),window.localStorage.setItem(me.SHOW_KINDS_VERSION,"4"),this.hideContentMentioningMutedUsers=window.localStorage.getItem(me.HIDE_CONTENT_MENTIONING_MUTED_USERS)==="true",this.notificationListStyle=window.localStorage.getItem(me.NOTIFICATION_LIST_STYLE)===Jl.COMPACT?Jl.COMPACT:Jl.DETAILED;const g=window.localStorage.getItem(me.MEDIA_AUTO_LOAD_POLICY);g&&Object.values(Uc).includes(g)&&(this.mediaAutoLoadPolicy=g);const y=window.localStorage.getItem(me.PROFILE_PICTURE_AUTO_LOAD_POLICY);y&&Object.values(Bc).includes(y)&&(this.profilePictureAutoLoadPolicy=y);const w=window.localStorage.getItem(me.SHOWN_CREATE_WALLET_GUIDE_TOAST_PUBKEYS);this.shownCreateWalletGuideToastPubkeys=w?new Set(JSON.parse(w)):new Set,this.sidebarCollapse=window.localStorage.getItem(me.SIDEBAR_COLLAPSE)==="true",this.primaryColor=window.localStorage.getItem(me.PRIMARY_COLOR)??"DEFAULT",this.enableSingleColumnLayout=window.localStorage.getItem(me.ENABLE_SINGLE_COLUMN_LAYOUT)!=="false",this.faviconUrlTemplate=window.localStorage.getItem(me.FAVICON_URL_TEMPLATE)??Lg;const v=window.localStorage.getItem(me.FILTER_OUT_ONION_RELAYS);v&&(this.filterOutOnionRelays=v!=="false"),this.allowInsecureConnection=window.localStorage.getItem(me.ALLOW_INSECURE_CONNECTION)==="true",this.enableTorMode=window.localStorage.getItem(me.ENABLE_TOR_MODE)==="true",this.quickReaction=window.localStorage.getItem(me.QUICK_REACTION)==="true";const k=window.localStorage.getItem(me.QUICK_REACTION_EMOJI)??"+";k.startsWith("{")?this.quickReactionEmoji=JSON.parse(k):this.quickReactionEmoji=k;const E=window.localStorage.getItem(me.MIN_TRUST_SCORE);if(E){const P=parseInt(E,10);!isNaN(P)&&P>=0&&P<=100&&(this.minTrustScore=P)}else{const P=window.localStorage.getItem(me.HIDE_UNTRUSTED_INTERACTIONS)==="true",M=window.localStorage.getItem(me.HIDE_UNTRUSTED_NOTIFICATIONS)==="true",U=window.localStorage.getItem(me.HIDE_UNTRUSTED_NOTES)==="true";(P||M||U)&&(this.minTrustScore=100)}const A=window.localStorage.getItem(me.MIN_TRUST_SCORE_MAP);if(A)try{const P=JSON.parse(A);typeof P=="object"&&P!==null&&(this.minTrustScoreMap=P)}catch{}const N=window.localStorage.getItem(me.DEFAULT_RELAY_URLS);if(N)try{const P=JSON.parse(N);Array.isArray(P)&&P.length>0&&P.every(M=>typeof M=="string")&&(this.defaultRelayUrls=P)}catch{}const T=window.localStorage.getItem(me.SEARCH_RELAY_URLS);if(T)try{const P=JSON.parse(T);Array.isArray(P)&&P.length>0&&P.every(M=>typeof M=="string")&&(this.searchRelayUrls=P)}catch{}const C=window.localStorage.getItem(me.MUTED_WORDS);if(C)try{const P=JSON.parse(C);Array.isArray(P)&&P.every(M=>typeof M=="string")&&(this.mutedWords=P)}catch{}this.hideIndirectNotifications=window.localStorage.getItem(me.HIDE_INDIRECT_NOTIFICATIONS)==="true",window.localStorage.removeItem(me.PINNED_PUBKEYS),window.localStorage.removeItem(me.ACCOUNT_PROFILE_EVENT_MAP),window.localStorage.removeItem(me.ACCOUNT_FOLLOW_LIST_EVENT_MAP),window.localStorage.removeItem(me.ACCOUNT_RELAY_LIST_EVENT_MAP),window.localStorage.removeItem(me.ACCOUNT_MUTE_LIST_EVENT_MAP),window.localStorage.removeItem(me.ACCOUNT_MUTE_DECRYPTED_TAGS_MAP),window.localStorage.removeItem(me.ACTIVE_RELAY_SET_ID),window.localStorage.removeItem(me.FEED_TYPE),window.localStorage.removeItem(me.ENABLE_LIVE_FEED)}getRelaySets(){return this.relaySets}setRelaySets(e){this.relaySets=e,window.localStorage.setItem(me.RELAY_SETS,JSON.stringify(this.relaySets))}getThemeSetting(){return this.themeSetting}setThemeSetting(e){window.localStorage.setItem(me.THEME_SETTING,e),this.themeSetting=e}getNoteListMode(){return this.noteListMode}setNoteListMode(e){window.localStorage.setItem(me.NOTE_LIST_MODE,e),this.noteListMode=e}getAccounts(){return this.accounts}findAccount(e){return this.accounts.find(t=>va(t,e))}getCurrentAccount(){return this.currentAccount}getAccountNsec(e){const t=this.accounts.find(o=>o.pubkey===e&&o.signerType==="nsec");return t==null?void 0:t.nsec}getAccountNcryptsec(e){const t=this.accounts.find(o=>o.pubkey===e&&o.signerType==="ncryptsec");return t==null?void 0:t.ncryptsec}addAccount(e){const t=this.accounts.findIndex(o=>va(o,e));return t!==-1?this.accounts[t]=e:this.accounts.push(e),window.localStorage.setItem(me.ACCOUNTS,JSON.stringify(this.accounts)),this.accounts}removeAccount(e){return this.accounts=this.accounts.filter(t=>!va(t,e)),window.localStorage.setItem(me.ACCOUNTS,JSON.stringify(this.accounts)),this.accounts}switchAccount(e){if(va(this.currentAccount,e))return;const t=this.accounts.find(o=>va(o,e));t&&(this.currentAccount=t,window.localStorage.setItem(me.CURRENT_ACCOUNT,JSON.stringify(t)))}getDefaultZapSats(){return this.defaultZapSats}setDefaultZapSats(e){this.defaultZapSats=e,window.localStorage.setItem(me.DEFAULT_ZAP_SATS,e.toString())}getDefaultZapComment(){return this.defaultZapComment}setDefaultZapComment(e){this.defaultZapComment=e,window.localStorage.setItem(me.DEFAULT_ZAP_COMMENT,e)}getQuickZap(){return this.quickZap}setQuickZap(e){this.quickZap=e,window.localStorage.setItem(me.QUICK_ZAP,e.toString())}getWalletDisplayUnit(){return this.walletDisplayUnit}setWalletDisplayUnit(e){this.walletDisplayUnit=e,window.localStorage.setItem(me.WALLET_DISPLAY_UNIT,e)}getLastReadNotificationTime(e){return this.lastReadNotificationTimeMap[e]??0}setLastReadNotificationTime(e,t){this.lastReadNotificationTimeMap[e]=t,window.localStorage.setItem(me.LAST_READ_NOTIFICATION_TIME_MAP,JSON.stringify(this.lastReadNotificationTimeMap))}getFeedInfo(e){return this.accountFeedInfoMap[e]}setFeedInfo(e,t){this.accountFeedInfoMap[t??"default"]=e,window.localStorage.setItem(me.ACCOUNT_FEED_INFO_MAP,JSON.stringify(this.accountFeedInfoMap))}getAutoplay(){return this.autoplay}setAutoplay(e){this.autoplay=e,window.localStorage.setItem(me.AUTOPLAY,e.toString())}getVideoLoop(){return this.videoLoop}setVideoLoop(e){this.videoLoop=e,window.localStorage.setItem(me.VIDEO_LOOP,e.toString())}getTranslationServiceConfig(e){return this.translationServiceConfigMap[e??"_"]??{service:"roguejumble"}}setTranslationServiceConfig(e,t){this.translationServiceConfigMap[t??"_"]=e,window.localStorage.setItem(me.TRANSLATION_SERVICE_CONFIG_MAP,JSON.stringify(this.translationServiceConfigMap))}getMediaUploadServiceConfig(e){const t={type:"nip96",service:this.mediaUploadService};return e?this.mediaUploadServiceConfigMap[e]??t:t}setMediaUploadServiceConfig(e,t){return this.mediaUploadServiceConfigMap[e]=t,window.localStorage.setItem(me.MEDIA_UPLOAD_SERVICE_CONFIG_MAP,JSON.stringify(this.mediaUploadServiceConfigMap)),t}getDismissedTooManyRelaysAlert(){return this.dismissedTooManyRelaysAlert}setDismissedTooManyRelaysAlert(e){this.dismissedTooManyRelaysAlert=e,window.localStorage.setItem(me.DISMISSED_TOO_MANY_RELAYS_ALERT,e.toString())}getShowKinds(){return this.showKinds}setShowKinds(e){this.showKinds=e,window.localStorage.setItem(me.SHOW_KINDS,JSON.stringify(e))}getHideContentMentioningMutedUsers(){return this.hideContentMentioningMutedUsers}setHideContentMentioningMutedUsers(e){this.hideContentMentioningMutedUsers=e,window.localStorage.setItem(me.HIDE_CONTENT_MENTIONING_MUTED_USERS,e.toString())}getNotificationListStyle(){return this.notificationListStyle}setNotificationListStyle(e){this.notificationListStyle=e,window.localStorage.setItem(me.NOTIFICATION_LIST_STYLE,e)}getMediaAutoLoadPolicy(){return this.mediaAutoLoadPolicy}setMediaAutoLoadPolicy(e){this.mediaAutoLoadPolicy=e,window.localStorage.setItem(me.MEDIA_AUTO_LOAD_POLICY,e)}getProfilePictureAutoLoadPolicy(){return this.profilePictureAutoLoadPolicy}setProfilePictureAutoLoadPolicy(e){this.profilePictureAutoLoadPolicy=e,window.localStorage.setItem(me.PROFILE_PICTURE_AUTO_LOAD_POLICY,e)}getFont(){return this.font}setFont(e){this.font=e,window.localStorage.setItem(me.FONT,e)}getFontSize(){return this.fontSize}setFontSize(e){this.fontSize=e,window.localStorage.setItem(me.FONT_SIZE,e)}hasShownCreateWalletGuideToast(e){return this.shownCreateWalletGuideToastPubkeys.has(e)}markCreateWalletGuideToastAsShown(e){this.shownCreateWalletGuideToastPubkeys.has(e)||(this.shownCreateWalletGuideToastPubkeys.add(e),window.localStorage.setItem(me.SHOWN_CREATE_WALLET_GUIDE_TOAST_PUBKEYS,JSON.stringify(Array.from(this.shownCreateWalletGuideToastPubkeys))))}getSidebarCollapse(){return this.sidebarCollapse}setSidebarCollapse(e){this.sidebarCollapse=e,window.localStorage.setItem(me.SIDEBAR_COLLAPSE,e.toString())}getPrimaryColor(){return this.primaryColor}setPrimaryColor(e){this.primaryColor=e,window.localStorage.setItem(me.PRIMARY_COLOR,e)}getEnableSingleColumnLayout(){return this.enableSingleColumnLayout}setEnableSingleColumnLayout(e){this.enableSingleColumnLayout=e,window.localStorage.setItem(me.ENABLE_SINGLE_COLUMN_LAYOUT,e.toString())}getFaviconUrlTemplate(){return this.faviconUrlTemplate}setFaviconUrlTemplate(e){this.faviconUrlTemplate=e,window.localStorage.setItem(me.FAVICON_URL_TEMPLATE,e)}getFilterOutOnionRelays(){return this.filterOutOnionRelays}setFilterOutOnionRelays(e){this.filterOutOnionRelays=e,window.localStorage.setItem(me.FILTER_OUT_ONION_RELAYS,e.toString())}getAllowInsecureConnection(){return this.allowInsecureConnection}setAllowInsecureConnection(e){this.allowInsecureConnection=e,window.localStorage.setItem(me.ALLOW_INSECURE_CONNECTION,e.toString())}getEnableTorMode(){return this.enableTorMode}setEnableTorMode(e){this.enableTorMode=e,window.localStorage.setItem(me.ENABLE_TOR_MODE,e.toString())}getQuickReaction(){return this.quickReaction}setQuickReaction(e){this.quickReaction=e,window.localStorage.setItem(me.QUICK_REACTION,e.toString())}getQuickReactionEmoji(){return this.quickReactionEmoji}setQuickReactionEmoji(e){this.quickReactionEmoji=e,window.localStorage.setItem(me.QUICK_REACTION_EMOJI,typeof e=="string"?e:JSON.stringify(e))}getNsfwDisplayPolicy(){return this.nsfwDisplayPolicy}setNsfwDisplayPolicy(e){this.nsfwDisplayPolicy=e,window.localStorage.setItem(me.NSFW_DISPLAY_POLICY,e)}getMinTrustScore(){return this.minTrustScore}setMinTrustScore(e){e>=0&&e<=100&&(this.minTrustScore=e,window.localStorage.setItem(me.MIN_TRUST_SCORE,e.toString()))}getMinTrustScoreMap(){return this.minTrustScoreMap}setMinTrustScoreMap(e){this.minTrustScoreMap=e,window.localStorage.setItem(me.MIN_TRUST_SCORE_MAP,JSON.stringify(e))}getDefaultRelayUrls(){return this.defaultRelayUrls}setDefaultRelayUrls(e){this.defaultRelayUrls=e,window.localStorage.setItem(me.DEFAULT_RELAY_URLS,JSON.stringify(e))}getSearchRelayUrls(){return this.searchRelayUrls}setSearchRelayUrls(e){this.searchRelayUrls=e,window.localStorage.setItem(me.SEARCH_RELAY_URLS,JSON.stringify(e))}getMutedWords(){return this.mutedWords}setMutedWords(e){this.mutedWords=e,window.localStorage.setItem(me.MUTED_WORDS,JSON.stringify(this.mutedWords))}getHideIndirectNotifications(){return this.hideIndirectNotifications}setHideIndirectNotifications(e){this.hideIndirectNotifications=e,window.localStorage.setItem(me.HIDE_INDIRECT_NOTIFICATIONS,e.toString())}getWalletTransactions(){try{const e=window.localStorage.getItem(me.WALLET_TRANSACTIONS);return e?JSON.parse(e).map(o=>({...o,date:new Date(o.date)})):[]}catch(e){return console.error("Failed to load wallet transactions:",e),[]}}setWalletTransactions(e){try{window.localStorage.setItem(me.WALLET_TRANSACTIONS,JSON.stringify(e))}catch(t){console.error("Failed to save wallet transactions:",t)}}clearWalletTransactions(){window.localStorage.removeItem(me.WALLET_TRANSACTIONS)}getEncryptionKeyPrivkey(e){try{const t=window.localStorage.getItem("encryptionKeyPrivkeyMap")??"{}";return JSON.parse(t)[e]??null}catch{return null}}setEncryptionKeyPrivkey(e,t){try{const o=window.localStorage.getItem("encryptionKeyPrivkeyMap")??"{}",a=JSON.parse(o);a[e]=t,window.localStorage.setItem("encryptionKeyPrivkeyMap",JSON.stringify(a))}catch{}}removeEncryptionKeyPrivkey(e){try{const t=window.localStorage.getItem("encryptionKeyPrivkeyMap")??"{}",o=JSON.parse(t);delete o[e],window.localStorage.setItem("encryptionKeyPrivkeyMap",JSON.stringify(o))}catch{}}getClientKeyPrivkey(e){try{const t=window.localStorage.getItem("clientKeyPrivkeyMap")??"{}";return JSON.parse(t)[e]??null}catch{return null}}setClientKeyPrivkey(e,t){try{const o=window.localStorage.getItem("clientKeyPrivkeyMap")??"{}",a=JSON.parse(o);a[e]=t,window.localStorage.setItem("clientKeyPrivkeyMap",JSON.stringify(a))}catch{}}getDmLastSyncedAt(e){try{const t=window.localStorage.getItem("dmLastSyncedAtMap")??"{}";return JSON.parse(t)[e]??null}catch{return null}}setDmLastSyncedAt(e,t){try{const o=window.localStorage.getItem("dmLastSyncedAtMap")??"{}",a=JSON.parse(o);a[e]=t,window.localStorage.setItem("dmLastSyncedAtMap",JSON.stringify(a))}catch{}}clearDmSyncState(e){try{const t=window.localStorage.getItem("dmLastSyncedAtMap")??"{}",o=JSON.parse(t);delete o[e],window.localStorage.setItem("dmLastSyncedAtMap",JSON.stringify(o));const a=window.localStorage.getItem("dmBackwardCursorMap")??"{}",r=JSON.parse(a);delete r[e],window.localStorage.setItem("dmBackwardCursorMap",JSON.stringify(r))}catch{}}addProcessedSyncRequestId(e){try{const t=window.localStorage.getItem("processedSyncRequestIds")??"[]",o=JSON.parse(t);o.includes(e)||(o.push(e),window.localStorage.setItem("processedSyncRequestIds",JSON.stringify(o)))}catch{}}getProcessedSyncRequestIds(){try{const e=window.localStorage.getItem("processedSyncRequestIds")??"[]";return JSON.parse(e)}catch{return[]}}getDmBackwardCursor(e){try{const t=window.localStorage.getItem("dmBackwardCursorMap")??"{}";return JSON.parse(t)[e]??null}catch{return null}}setDmBackwardCursor(e,t){try{const o=window.localStorage.getItem("dmBackwardCursorMap")??"{}",a=JSON.parse(o);a[e]=t,window.localStorage.setItem("dmBackwardCursorMap",JSON.stringify(a))}catch{}}setLastReadDmTime(e,t,o){try{const a=window.localStorage.getItem("lastReadDmTimeMap")??"{}",r=JSON.parse(a);r[e]=r[e]||{},r[e][t]=o,window.localStorage.setItem("lastReadDmTimeMap",JSON.stringify(r))}catch{}}getLastReadDmTime(e,t){try{const o=window.localStorage.getItem("lastReadDmTimeMap")??"{}",a=JSON.parse(o);return(a[e]&&a[e][t])??null}catch{return null}}};H(Gr,"instance");let Zf=Gr;const pe=new Zf;function kt(){return pe.getDefaultRelayUrls()}function jP(){return pe.getSearchRelayUrls()}function oV(n){return(n==null?void 0:n.software)==="https://github.com/bitvora/algo-relay"}function aV(n){var e;return((e=n==null?void 0:n.supported_nips)==null?void 0:e.includes(43))&&!!n.pubkey}function Wd(n){const e=kt();return n.filter(t=>!e.includes(t))}function rV(n){return n.startsWith("zh")?["wss://relay.nostrzh.org/","wss://relay.nostr.moe/","wss://lang.relays.land/zh","wss://relay.stream/"]:n.startsWith("ja")?["wss://yabu.me/","wss://lang.relays.land/ja"]:n.startsWith("es")?["wss://lang.relays.land/es"]:n.startsWith("it")?["wss://lang.relays.land/it"]:n.startsWith("pt")?["wss://lang.relays.land/pt"]:[]}function kc(n,e=!0){const t=kt();if(!n)return{write:t,read:t,originalRelays:[]};const o=pe.getEnableTorMode(),a=e&&!o,r={write:[],read:[],originalRelays:[]};return n.tags.filter(Ke("r")).forEach(([,i,s])=>{if(!i||!yl(i))return;const l=jn(i);if(!l)return;const u=s==="read"?"read":s==="write"?"write":"both";r.originalRelays.push({url:l,scope:u}),!(a&&Ew(l))&&(s==="write"?r.write.push(l):(s==="read"||r.write.push(l),r.read.push(l)))}),{write:r.write.length&&r.write.length<=8?r.write:t,read:r.read.length&&r.write.length<=8?r.read:t,originalRelays:r.originalRelays}}function fi(n){var e,t,o,a;try{const r=JSON.parse(n.content),i=((e=r.display_name)==null?void 0:e.trim())||((t=r.name)==null?void 0:t.trim())||((a=(o=r.nip05)==null?void 0:o.split("@")[0])==null?void 0:a.trim()),s=Ko(n.tags);return{pubkey:n.pubkey,npub:ur(n.pubkey)??"",banner:r.banner,avatar:r.picture,username:i||Ri(n.pubkey),original_username:i,nip05:r.nip05,about:r.about,website:r.website?Rw(r.website):void 0,lud06:r.lud06,lud16:r.lud16,lightningAddress:Iw(r),sp:r.sp,created_at:n.created_at,emojis:s.length>0?s:void 0}}catch(r){return console.error(n.content,r),{pubkey:n.pubkey,npub:ur(n.pubkey)??"",username:Ri(n.pubkey)}}}function Lw(n){var a;const e=ir(n),t=n.tags.filter(Ke("relay")).map(r=>r[1]).filter(r=>r&&yl(r)).map(r=>jn(r));let o=(a=n.tags.find(Ke("title")))==null?void 0:a[1];return o||(o=e),{id:e,name:o,relayUrls:t,aTag:Oa(n)}}function ws(n){if(n.kind!==Z.Zap)return null;let e,t,o,a,r,i,s,l,u;try{if(n.tags.forEach(f=>{const[d,p]=f;switch(d){case"P":e=p;break;case"p":t=p;break;case"e":o=f[1],a=Er(f);break;case"bolt11":r=p;break;case"description":l=p;break;case"preimage":u=p;break}}),!t||!r)return null;if(i=r?zw(r):0,l)try{const f=JSON.parse(l);s=f.content,e||(e=f.pubkey)}catch{}return{senderPubkey:e,recipientPubkey:t,eventId:a,originalEventId:o,invoice:r,amount:i,comment:s,preimage:u}}catch{return null}}function zP(n){if(n.kind!==10133)return null;let e={};try{n.content&&(e=JSON.parse(n.content))}catch{}const t=n.tags.filter(a=>a[0]==="payto"&&a[1]&&a[2]),o=[];return t.forEach(a=>{var u;const r=((u=a[1])==null?void 0:u.toLowerCase())||"lightning",i=a[2]||"",s=a.slice(3),l=`payto://${r}/${i}`;o.push({type:r,authority:i,payto:l,displayType:r==="lightning"?"Lightning Network":r.charAt(0).toUpperCase()+r.slice(1),...s.length>0&&{extra:s}})}),o.length===0&&e.methods&&Array.isArray(e.methods)&&o.push(...e.methods.map(a=>({...a,payto:a.payto||(a.type&&a.authority?`payto://${a.type}/${a.authority}`:void 0)}))),o.length===0&&e.payto&&o.push({payto:e.payto,type:e.type||"lightning",authority:e.authority,displayType:e.type==="lightning"?"Lightning Network":e.type||"Payment"}),{...e,methods:o.length>0?o:void 0}}function bp(n){var r;let e,t,o;const a=new Set;return n.tags.forEach(([i,s])=>{i==="title"?e=s:i==="summary"?t=s:i==="image"?o=s:i==="t"&&s&&a.size<6&&a.add(s.toLocaleLowerCase())}),e||(e=((r=n.tags.find(Ke("d")))==null?void 0:r[1])??"no title"),{title:e,summary:t,image:o,tags:Array.from(a)}}function Mw(n){var i;let e,t,o,a;const r=new Set;return n.tags.forEach(([s,l])=>{s==="title"?e=l:s==="summary"?t=l:s==="image"?o=l:s==="status"?a=l:s==="t"&&l&&r.size<6&&r.add(l.toLocaleLowerCase())}),e||(e=((i=n.tags.find(Ke("d")))==null?void 0:i[1])??"no title"),{title:e,summary:t,image:o,status:a,tags:Array.from(r)}}function iV(n){var r,i,s;if(n.kind!==30315||((r=n.tags.find(Ke("d")))==null?void 0:r[1])!=="general")return null;const t=(i=n.tags.find(Ke("expiration")))==null?void 0:i[1],o=t?parseInt(t,10):void 0;if(o&&o<Be().unix())return null;const a=(s=n.tags.find(Ke("r")))==null?void 0:s[1];return{content:n.content,type:"general",expiration:o,link:a,updated_at:n.created_at}}function Dw(n){let e,t,o,a;const r=new Set;return n.tags.forEach(([i,s])=>{i==="name"?t=s:i==="about"?o=s:i==="picture"?a=s:i==="t"&&s?r.add(s.toLocaleLowerCase()):i==="d"&&(e=s)}),t||(t=e??"no name"),{d:e,name:t,about:o,picture:a,tags:Array.from(r)}}function _w(n){const e=[],t=[];let o=rr.SINGLE_CHOICE,a;for(const[r,...i]of n.tags)if(r==="option"&&i.length>=2){const[s,l]=i;s&&l&&e.push({id:s,label:l})}else if(r==="relay"&&i[0])jn(i[0])&&t.push(i[0]);else if(r==="polltype"&&i[0])i[0]===rr.MULTIPLE_CHOICE&&(o=rr.MULTIPLE_CHOICE);else if(r==="endsAt"&&i[0]){const s=parseInt(i[0]);isNaN(s)||(a=s)}return e.length===0?null:{options:e,pollType:o,relayUrls:t,endsAt:a}}function IP(n,e,t){const o=[];for(const[a,...r]of n.tags)if(a==="response"&&r[0]){if(e&&!e.includes(r[0]))continue;o.push(r[0])}return o.length===0||o.length>1&&!t?null:{id:n.id,pubkey:n.pubkey,selectedOptionIds:o,created_at:n.created_at}}function LP(n){const e=[],t=[];return n.tags.forEach(([o,...a])=>{o==="emoji"&&a.length>=2?e.push({shortcode:a[0],url:a[1]}):o==="a"&&a[0]&&t.push(a[0])}),{emojis:e,emojiSetPointers:t}}function kp(n){let e;const t=[];return n.tags.forEach(([o,...a])=>{o==="title"&&a[0]?e=a[0]:o==="emoji"&&a.length>=2&&t.push({shortcode:a[0],url:a[1]})}),{title:e,emojis:t}}function MP(n){return kp(n).emojis}function Fw(n){var o;let e;const t=new Set;return n.tags.forEach(([a,r])=>{a==="title"?e=r:a==="t"&&r&&t.size<6&&t.add(r.toLocaleLowerCase())}),e||(e=(o=n.tags.find(Ke("d")))==null?void 0:o[1]),{title:e,tags:Array.from(t)}}function DP(n){const e=n.tags.find(t=>t[0]==="rating");if(e){const t=parseFloat(e[1])*5;if(t>0&&t<=5)return t}return 0}function _P(n){return new Set((n==null?void 0:n.tags.filter(e=>e[0]==="e").map(e=>e[1]).reverse().slice(0,Vf))??[])}function Ow(n){var r;let e,t,o;const a=[];return n.tags.forEach(([i,s])=>{i==="title"?e=s:i==="description"?t=s:i==="image"?o=s:i==="p"&&Sa(s)&&a.push(s)}),e||(e=((r=n.tags.find(Ke("d")))==null?void 0:r[1])??"Untitled Follow Pack"),{title:e,description:t,image:o,pubkeys:a}}const FP=5*1e3,OP=15,UP=30*1e3,BP=10*1e3;class VP extends CE{constructor(){super({enablePing:!0,enableReconnect:!0});H(this,"relayIdleTracker",new Map);setInterval(()=>this.cleanIdleRelays(),UP)}ensureRelay(t){if(!pe.getAllowInsecureConnection()&&Ar(t))return Promise.reject(new Error(`Insecure relay connection blocked: ${t}`));const o=pe.getEnableTorMode(),a=mp();return o&&!a&&!Ew(t)?Promise.reject(new Error(`Tor mode enabled: only .onion relays allowed (${t})`)):(!this.relayIdleTracker.has(t)&&this.relayIdleTracker.size>OP&&this.cleanIdleRelays(),this.relayIdleTracker.set(t,Date.now()),super.ensureRelay(t,{connectionTimeout:FP}))}cleanIdleRelays(){const t=[];this.relays.forEach((o,a)=>{if(!o.connected||o.openSubs.size>0)return;const r=this.relayIdleTracker.get(a)??0;Date.now()-r<BP||(t.push(a),this.relayIdleTracker.delete(a))}),t.length>0&&this.close(t)}markRelayActive(t){this.relayIdleTracker.set(t,Date.now())}}function WP(n,e){return n.length===0?[]:n.length===1?[...n[0]]:n.reduce((t,o)=>qP(t,o,e),[])}function qP(n,e,t){if(n.length===0)return[...e];if(e.length===0)return[...n];const o=[];let a=0,r=0;for(;a<n.length&&r<e.length;){const i=Uo(n[a],e[r]);i>0?(o.push(n[a]),a++):i<0?(o.push(e[r]),r++):(o.push(n[a]),a++,r++)}if(t&&o.length>=t)return o;for(;a<n.length&&(!t||o.length<t);)o.push(n[a]),a++;for(;r<e.length&&(!t||o.length<t);)o.push(e[r]),r++;return o}/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function HP(n){return n instanceof Uint8Array||ArrayBuffer.isView(n)&&n.constructor.name==="Uint8Array"}function Iu(n,...e){if(!HP(n))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(n.length))throw new Error("Uint8Array expected of length "+e+", got length="+n.length)}function Kg(n,e=!0){if(n.destroyed)throw new Error("Hash instance has been destroyed");if(e&&n.finished)throw new Error("Hash#digest() has already been called")}function $P(n,e){Iu(n);const t=e.outputLen;if(n.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function Qf(...n){for(let e=0;e<n.length;e++)n[e].fill(0)}function qd(n){return new DataView(n.buffer,n.byteOffset,n.byteLength)}function ho(n,e){return n<<32-e|n>>>e}const Uw=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",YP=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function hi(n){if(Iu(n),Uw)return n.toHex();let e="";for(let t=0;t<n.length;t++)e+=YP[n[t]];return e}const Do={_0:48,_9:57,A:65,F:70,a:97,f:102};function Gg(n){if(n>=Do._0&&n<=Do._9)return n-Do._0;if(n>=Do.A&&n<=Do.F)return n-(Do.A-10);if(n>=Do.a&&n<=Do.f)return n-(Do.a-10)}function bo(n){if(typeof n!="string")throw new Error("hex string expected, got "+typeof n);if(Uw)return Uint8Array.fromHex(n);const e=n.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const o=new Uint8Array(t);for(let a=0,r=0;a<t;a++,r+=2){const i=Gg(n.charCodeAt(r)),s=Gg(n.charCodeAt(r+1));if(i===void 0||s===void 0){const l=n[r]+n[r+1];throw new Error('hex string expected, got non-hex character "'+l+'" at index '+r)}o[a]=i*16+s}return o}function KP(n){if(typeof n!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(n))}function Bw(n){return typeof n=="string"&&(n=KP(n)),Iu(n),n}class GP{}function JP(n){const e=o=>n().update(Bw(o)).digest(),t=n();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>n(),e}function ZP(n,e,t,o){if(typeof n.setBigUint64=="function")return n.setBigUint64(e,t,o);const a=BigInt(32),r=BigInt(4294967295),i=Number(t>>a&r),s=Number(t&r),l=o?4:0,u=o?0:4;n.setUint32(e+l,i,o),n.setUint32(e+u,s,o)}function QP(n,e,t){return n&e^~n&t}function XP(n,e,t){return n&e^n&t^e&t}class e6 extends GP{constructor(e,t,o,a){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=t,this.padOffset=o,this.isLE=a,this.buffer=new Uint8Array(e),this.view=qd(this.buffer)}update(e){Kg(this),e=Bw(e),Iu(e);const{view:t,buffer:o,blockLen:a}=this,r=e.length;for(let i=0;i<r;){const s=Math.min(a-this.pos,r-i);if(s===a){const l=qd(e);for(;a<=r-i;i+=a)this.process(l,i);continue}o.set(e.subarray(i,i+s),this.pos),this.pos+=s,i+=s,this.pos===a&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Kg(this),$P(e,this),this.finished=!0;const{buffer:t,view:o,blockLen:a,isLE:r}=this;let{pos:i}=this;t[i++]=128,Qf(this.buffer.subarray(i)),this.padOffset>a-i&&(this.process(o,0),i=0);for(let d=i;d<a;d++)t[d]=0;ZP(o,a-8,BigInt(this.length*8),r),this.process(o,0);const s=qd(e),l=this.outputLen;if(l%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const u=l/4,f=this.get();if(u>f.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<u;d++)s.setUint32(4*d,f[d],r)}digest(){const{buffer:e,outputLen:t}=this;this.digestInto(e);const o=e.slice(0,t);return this.destroy(),o}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:t,buffer:o,length:a,finished:r,destroyed:i,pos:s}=this;return e.destroyed=i,e.finished=r,e.length=a,e.pos=s,a%t&&e.buffer.set(o),e}clone(){return this._cloneInto()}}const ca=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t6=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),ua=new Uint32Array(64);class Vw extends e6{constructor(e=32){super(64,e,8,!1),this.A=ca[0]|0,this.B=ca[1]|0,this.C=ca[2]|0,this.D=ca[3]|0,this.E=ca[4]|0,this.F=ca[5]|0,this.G=ca[6]|0,this.H=ca[7]|0}get(){const{A:e,B:t,C:o,D:a,E:r,F:i,G:s,H:l}=this;return[e,t,o,a,r,i,s,l]}set(e,t,o,a,r,i,s,l){this.A=e|0,this.B=t|0,this.C=o|0,this.D=a|0,this.E=r|0,this.F=i|0,this.G=s|0,this.H=l|0}process(e,t){for(let d=0;d<16;d++,t+=4)ua[d]=e.getUint32(t,!1);for(let d=16;d<64;d++){const p=ua[d-15],m=ua[d-2],g=ho(p,7)^ho(p,18)^p>>>3,y=ho(m,17)^ho(m,19)^m>>>10;ua[d]=y+ua[d-7]+g+ua[d-16]|0}let{A:o,B:a,C:r,D:i,E:s,F:l,G:u,H:f}=this;for(let d=0;d<64;d++){const p=ho(s,6)^ho(s,11)^ho(s,25),m=f+p+QP(s,l,u)+t6[d]+ua[d]|0,y=(ho(o,2)^ho(o,13)^ho(o,22))+XP(o,a,r)|0;f=u,u=l,l=s,s=i+m|0,i=r,r=a,a=o,o=m+y|0}o=o+this.A|0,a=a+this.B|0,r=r+this.C|0,i=i+this.D|0,s=s+this.E|0,l=l+this.F|0,u=u+this.G|0,f=f+this.H|0,this.set(o,a,r,i,s,l,u,f)}roundClean(){Qf(ua)}destroy(){this.set(0,0,0,0,0,0,0,0),Qf(this.buffer)}}const Ms=JP(()=>new Vw),n6=Object.freeze(Object.defineProperty({__proto__:null,SHA256:Vw,sha256:Ms},Symbol.toStringTag,{value:"Module"}));var Hd,Jg;function o6(){if(Jg)return Hd;Jg=1;var n=function(){function m(y,w){if(typeof y!="function")throw new TypeError("DataLoader must be constructed with a function which accepts "+("Array<key> and returns Promise<Array<value>>, but got: "+y+"."));this._batchLoadFn=y,this._maxBatchSize=s(w),this._batchScheduleFn=l(w),this._cacheKeyFn=u(w),this._cacheMap=f(w),this._batch=null,this.name=d(w)}var g=m.prototype;return g.load=function(w){if(w==null)throw new TypeError("The loader.load() function must be called with a value, "+("but got: "+String(w)+"."));var v=o(this),k=this._cacheMap,E;if(k){E=this._cacheKeyFn(w);var A=k.get(E);if(A){var N=v.cacheHits||(v.cacheHits=[]);return new Promise(function(C){N.push(function(){C(A)})})}}v.keys.push(w);var T=new Promise(function(C,P){v.callbacks.push({resolve:C,reject:P})});return k&&k.set(E,T),T},g.loadMany=function(w){if(!p(w))throw new TypeError("The loader.loadMany() function must be called with Array<key> "+("but got: "+w+"."));for(var v=[],k=0;k<w.length;k++)v.push(this.load(w[k]).catch(function(E){return E}));return Promise.all(v)},g.clear=function(w){var v=this._cacheMap;if(v){var k=this._cacheKeyFn(w);v.delete(k)}return this},g.clearAll=function(){var w=this._cacheMap;return w&&w.clear(),this},g.prime=function(w,v){var k=this._cacheMap;if(k){var E=this._cacheKeyFn(w);if(k.get(E)===void 0){var A;v instanceof Error?(A=Promise.reject(v),A.catch(function(){})):A=Promise.resolve(v),k.set(E,A)}}return this},m}(),e=typeof process=="object"&&typeof process.nextTick=="function"?function(m){t||(t=Promise.resolve()),t.then(function(){process.nextTick(m)})}:typeof setImmediate=="function"?function(m){setImmediate(m)}:function(m){setTimeout(m)},t;function o(m){var g=m._batch;if(g!==null&&!g.hasDispatched&&g.keys.length<m._maxBatchSize)return g;var y={hasDispatched:!1,keys:[],callbacks:[]};return m._batch=y,m._batchScheduleFn(function(){a(m,y)}),y}function a(m,g){if(g.hasDispatched=!0,g.keys.length===0){i(g);return}var y;try{y=m._batchLoadFn(g.keys)}catch(w){return r(m,g,new TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function "+("errored synchronously: "+String(w)+".")))}if(!y||typeof y.then!="function")return r(m,g,new TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did "+("not return a Promise: "+String(y)+".")));y.then(function(w){if(!p(w))throw new TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did "+("not return a Promise of an Array: "+String(w)+"."));if(w.length!==g.keys.length)throw new TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did not return a Promise of an Array of the same length as the Array of keys."+(`

Keys:
`+String(g.keys))+(`

Values:
`+String(w)));i(g);for(var v=0;v<g.callbacks.length;v++){var k=w[v];k instanceof Error?g.callbacks[v].reject(k):g.callbacks[v].resolve(k)}}).catch(function(w){r(m,g,w)})}function r(m,g,y){i(g);for(var w=0;w<g.keys.length;w++)m.clear(g.keys[w]),g.callbacks[w].reject(y)}function i(m){if(m.cacheHits)for(var g=0;g<m.cacheHits.length;g++)m.cacheHits[g]()}function s(m){var g=!m||m.batch!==!1;if(!g)return 1;var y=m&&m.maxBatchSize;if(y===void 0)return 1/0;if(typeof y!="number"||y<1)throw new TypeError("maxBatchSize must be a positive number: "+y);return y}function l(m){var g=m&&m.batchScheduleFn;if(g===void 0)return e;if(typeof g!="function")throw new TypeError("batchScheduleFn must be a function: "+g);return g}function u(m){var g=m&&m.cacheKeyFn;if(g===void 0)return function(y){return y};if(typeof g!="function")throw new TypeError("cacheKeyFn must be a function: "+g);return g}function f(m){var g=!m||m.cache!==!1;if(!g)return null;var y=m&&m.cacheMap;if(y===void 0)return new Map;if(y!==null){var w=["get","set","delete","clear"],v=w.filter(function(k){return y&&typeof y[k]!="function"});if(v.length!==0)throw new TypeError("Custom cacheMap missing methods: "+v.join(", "))}return y}function d(m){return m&&m.name?m.name:null}function p(m){return typeof m=="object"&&m!==null&&typeof m.length=="number"&&(m.length===0||m.length>0&&Object.prototype.hasOwnProperty.call(m,m.length-1))}return Hd=n,Hd}var a6=o6();const Bo=Ru(a6);var It;function Sc(n){return typeof n<"u"?n:!0}function Zg(n){const e=Array(n);for(let t=0;t<n;t++)e[t]=Pt();return e}function Pt(){return Object.create(null)}function r6(n,e){return e.length-n.length}function an(n){return typeof n=="string"}function Aa(n){return typeof n=="object"}function Sp(n){return typeof n=="function"}function Ww(n,e){var t=i6;if(n&&(e&&(n=xc(n,e)),this.H&&(n=xc(n,this.H)),this.J&&1<n.length&&(n=xc(n,this.J)),t||t==="")){if(e=n.split(t),this.filter){n=this.filter,t=e.length;const o=[];for(let a=0,r=0;a<t;a++){const i=e[a];i&&!n[i]&&(o[r++]=i)}n=o}else n=e;return n}return n}const i6=/[\p{Z}\p{S}\p{P}\p{C}]+/u,s6=/[\u0300-\u036f]/g;function Qg(n,e){const t=Object.keys(n),o=t.length,a=[];let r="",i=0;for(let s=0,l,u;s<o;s++)l=t[s],(u=n[l])?(a[i++]=Lt(e?"(?!\\b)"+l+"(\\b|_)":l),a[i++]=u):r+=(r?"|":"")+l;return r&&(a[i++]=Lt(e?"(?!\\b)("+r+")(\\b|_)":"("+r+")"),a[i]=""),a}function xc(n,e){for(let t=0,o=e.length;t<o&&(n=n.replace(e[t],e[t+1]),n);t+=2);return n}function Lt(n){return new RegExp(n,"g")}function qw(n){let e="",t="";for(let o=0,a=n.length,r;o<a;o++)(r=n[o])!==t&&(e+=t=r);return e}var l6={encode:Hw,F:!1,G:""};function Hw(n){return Ww.call(this,(""+n).toLowerCase(),!1)}const $w={},Rr={};function Yw(n){us(n,"add"),us(n,"append"),us(n,"search"),us(n,"update"),us(n,"remove")}function us(n,e){n[e+"Async"]=function(){const t=this,o=arguments;var a=o[o.length-1];let r;return Sp(a)&&(r=a,delete o[o.length-1]),a=new Promise(function(i){setTimeout(function(){t.async=!0;const s=t[e].apply(t,o);t.async=!1,i(s)})}),r?(a.then(r),this):a}}function Kw(n,e,t,o){const a=n.length;let r=[],i,s,l=0;o&&(o=[]);for(let u=a-1;0<=u;u--){const f=n[u],d=f.length,p=Pt();let m=!i;for(let g=0;g<d;g++){const y=f[g],w=y.length;if(w)for(let v=0,k,E;v<w;v++)if(E=y[v],i){if(i[E]){if(!u){if(t)t--;else if(r[l++]=E,l===e)return r}(u||o)&&(p[E]=1),m=!0}if(o&&(k=(s[E]||0)+1,s[E]=k,k<a)){const A=o[k-2]||(o[k-2]=[]);A[A.length]=E}}else p[E]=1}if(o)i||(s=p);else if(!m)return[];i=p}if(o)for(let u=o.length-1,f,d;0<=u;u--){f=o[u],d=f.length;for(let p=0,m;p<d;p++)if(m=f[p],!i[m]){if(t)t--;else if(r[l++]=m,l===e)return r;i[m]=1}}return r}function c6(n,e){const t=Pt(),o=Pt(),a=[];for(let r=0;r<n.length;r++)t[n[r]]=1;for(let r=0,i;r<e.length;r++){i=e[r];for(let s=0,l;s<i.length;s++)l=i[s],t[l]&&!o[l]&&(o[l]=1,a[a.length]=l)}return a}function Lu(n){this.l=n!==!0&&n,this.cache=Pt(),this.h=[]}function Gw(n,e,t){Aa(n)&&(n=n.query);let o=this.cache.get(n);return o||(o=this.search(n,e,t),this.cache.set(n,o)),o}Lu.prototype.set=function(n,e){if(!this.cache[n]){var t=this.h.length;for(t===this.l?delete this.cache[this.h[t-1]]:t++,--t;0<t;t--)this.h[t]=this.h[t-1];this.h[0]=n}this.cache[n]=e};Lu.prototype.get=function(n){const e=this.cache[n];if(this.l&&e&&(n=this.h.indexOf(n))){const t=this.h[n-1];this.h[n-1]=this.h[n],this.h[n]=t}return e};const u6={memory:{charset:"latin:extra",D:3,B:4,m:!1},performance:{D:3,B:3,s:!1,context:{depth:2,D:1}},match:{charset:"latin:extra",G:"reverse"},score:{charset:"latin:advanced",D:20,B:3,context:{depth:3,D:9}},default:{}};function Jw(n,e,t,o,a,r,i,s){setTimeout(function(){const l=n(t?t+"."+o:o,JSON.stringify(i));l&&l.then?l.then(function(){e.export(n,e,t,a,r+1,s)}):e.export(n,e,t,a,r+1,s)})}function fr(n,e){if(!(this instanceof fr))return new fr(n);var t;if(n){an(n)?n=u6[n]:(t=n.preset)&&(n=Object.assign({},t[t],n)),t=n.charset;var o=n.lang;an(t)&&(t.indexOf(":")===-1&&(t+=":default"),t=Rr[t]),an(o)&&(o=$w[o])}else n={};let a,r,i=n.context||{};if(this.encode=n.encode||t&&t.encode||Hw,this.register=e||Pt(),this.D=a=n.resolution||9,this.G=e=t&&t.G||n.tokenize||"strict",this.depth=e==="strict"&&i.depth,this.l=Sc(i.bidirectional),this.s=r=Sc(n.optimize),this.m=Sc(n.fastupdate),this.B=n.minlength||1,this.C=n.boost,this.map=r?Zg(a):Pt(),this.A=a=i.resolution||1,this.h=r?Zg(a):Pt(),this.F=t&&t.F||n.rtl,this.H=(e=n.matcher||o&&o.H)&&Qg(e,!1),this.J=(e=n.stemmer||o&&o.J)&&Qg(e,!0),t=e=n.filter||o&&o.filter){t=e,o=Pt();for(let s=0,l=t.length;s<l;s++)o[t[s]]=1;t=o}this.filter=t,this.cache=(e=n.cache)&&new Lu(e)}It=fr.prototype;It.append=function(n,e){return this.add(n,e,!0)};It.add=function(n,e,t,o){if(e&&(n||n===0)){if(!o&&!t&&this.register[n])return this.update(n,e);if(e=this.encode(e),o=e.length){const u=Pt(),f=Pt(),d=this.depth,p=this.D;for(let m=0;m<o;m++){let g=e[this.F?o-1-m:m];var a=g.length;if(g&&a>=this.B&&(d||!f[g])){var r=Zl(p,o,m),i="";switch(this.G){case"full":if(2<a){for(r=0;r<a;r++)for(var s=a;s>r;s--)if(s-r>=this.B){var l=Zl(p,o,m,a,r);i=g.substring(r,s),ds(this,f,i,l,n,t)}break}case"reverse":if(1<a){for(s=a-1;0<s;s--)i=g[s]+i,i.length>=this.B&&ds(this,f,i,Zl(p,o,m,a,s),n,t);i=""}case"forward":if(1<a){for(s=0;s<a;s++)i+=g[s],i.length>=this.B&&ds(this,f,i,r,n,t);break}default:if(this.C&&(r=Math.min(r/this.C(e,g,m)|0,p-1)),ds(this,f,g,r,n,t),d&&1<o&&m<o-1){for(a=Pt(),i=this.A,r=g,s=Math.min(d+1,o-m),a[r]=1,l=1;l<s;l++)if((g=e[this.F?o-1-m-l:m+l])&&g.length>=this.B&&!a[g]){a[g]=1;const y=this.l&&g>r;ds(this,u,y?r:g,Zl(i+(o/2>i?0:1),o,m,s-1,l-1),n,t,y?g:r)}}}}}this.m||(this.register[n]=1)}}return this};function Zl(n,e,t,o,a){return t&&1<n?e+(o||0)<=n?t+(a||0):(n-1)/(e+(o||0))*(t+(a||0))+1|0:0}function ds(n,e,t,o,a,r,i){let s=i?n.h:n.map;(!e[t]||i&&!e[t][i])&&(n.s&&(s=s[o]),i?(e=e[t]||(e[t]=Pt()),e[i]=1,s=s[i]||(s[i]=Pt())):e[t]=1,s=s[t]||(s[t]=[]),n.s||(s=s[o]||(s[o]=[])),r&&s.includes(a)||(s[s.length]=a,n.m&&(n=n.register[a]||(n.register[a]=[]),n[n.length]=s)))}It.search=function(n,e,t){t||(!e&&Aa(n)?(t=n,n=t.query):Aa(e)&&(t=e));let o=[],a,r,i=0;if(t){n=t.query||n,e=t.limit,i=t.offset||0;var s=t.context;r=t.suggest}if(n&&(n=this.encode(""+n),a=n.length,1<a)){t=Pt();var l=[];for(let f=0,d=0,p;f<a;f++)if((p=n[f])&&p.length>=this.B&&!t[p])if(this.s||r||this.map[p])l[d++]=p,t[p]=1;else return o;n=l,a=n.length}if(!a)return o;e||(e=100),s=this.depth&&1<a&&s!==!1,t=0;let u;s?(u=n[0],t=1):1<a&&n.sort(r6);for(let f,d;t<a;t++){if(d=n[t],s?(f=Xg(this,o,r,e,i,a===2,d,u),r&&f===!1&&o.length||(u=d)):f=Xg(this,o,r,e,i,a===1,d),f)return f;if(r&&t===a-1){if(l=o.length,!l){if(s){s=0,t=-1;continue}return o}if(l===1)return Zw(o[0],e,i)}}return Kw(o,e,i,r)};function Xg(n,e,t,o,a,r,i,s){let l=[],u=s?n.h:n.map;if(n.s||(u=ey(u,i,s,n.l)),u){let f=0;const d=Math.min(u.length,s?n.A:n.D);for(let p=0,m=0,g,y;p<d&&!((g=u[p])&&(n.s&&(g=ey(g,i,s,n.l)),a&&g&&r&&(y=g.length,y<=a?(a-=y,g=null):(g=g.slice(a),a=0)),g&&(l[f++]=g,r&&(m+=g.length,m>=o))));p++);if(f){if(r)return Zw(l,o,0);e[e.length]=l;return}}return!t&&l}function Zw(n,e,t){return n=n.length===1?n[0]:[].concat.apply([],n),t||n.length>e?n.slice(t,t+e):n}function ey(n,e,t,o){return t?(o=o&&e>t,n=(n=n[o?e:t])&&n[o?t:e]):n=n[e],n}It.contain=function(n){return!!this.register[n]};It.update=function(n,e){return this.remove(n).add(n,e)};It.remove=function(n,e){const t=this.register[n];if(t){if(this.m)for(let o=0,a;o<t.length;o++)a=t[o],a.splice(a.indexOf(n),1);else Yc(this.map,n,this.D,this.s),this.depth&&Yc(this.h,n,this.A,this.s);if(e||delete this.register[n],this.cache){e=this.cache;for(let o=0,a,r;o<e.h.length;o++)r=e.h[o],a=e.cache[r],a.includes(n)&&(e.h.splice(o--,1),delete e.cache[r])}}return this};function Yc(n,e,t,o,a){let r=0;if(n.constructor===Array)if(a)e=n.indexOf(e),e!==-1?1<n.length&&(n.splice(e,1),r++):r++;else{a=Math.min(n.length,t);for(let i=0,s;i<a;i++)(s=n[i])&&(r=Yc(s,e,t,o,a),o||r||delete n[i])}else for(let i in n)(r=Yc(n[i],e,t,o,a))||delete n[i];return r}It.searchCache=Gw;It.export=function(n,e,t,o,a,r){let i=!0;typeof r>"u"&&(i=new Promise(u=>{r=u}));let s,l;switch(a||(a=0)){case 0:if(s="reg",this.m){l=Pt();for(let u in this.register)l[u]=1}else l=this.register;break;case 1:s="cfg",l={doc:0,opt:this.s?1:0};break;case 2:s="map",l=this.map;break;case 3:s="ctx",l=this.h;break;default:typeof t>"u"&&r&&r();return}return Jw(n,e||this,t,s,o,a,l,r),i};It.import=function(n,e){if(e)switch(an(e)&&(e=JSON.parse(e)),n){case"cfg":this.s=!!e.opt;break;case"reg":this.m=!1,this.register=e;break;case"map":this.map=e;break;case"ctx":this.h=e}};Yw(fr.prototype);function d6(n){n=n.data;var e=self._index;const t=n.args;var o=n.task;switch(o){case"init":o=n.options||{},n=n.factory,e=o.encode,o.cache=!1,e&&e.indexOf("function")===0&&(o.encode=Function("return "+e)()),n?(Function("return "+n)()(self),self._index=new self.FlexSearch.Index(o),delete self.FlexSearch):self._index=new fr(o);break;default:n=n.id,e=e[o].apply(e,t),postMessage(o==="search"?{id:n,msg:e}:{id:n})}}let ty=0;function Ci(n){if(!(this instanceof Ci))return new Ci(n);var e;n?Sp(e=n.encode)&&(n.encode=e.toString()):n={},(e=(self||window)._factory)&&(e=e.toString());const t=typeof window>"u"&&self.exports,o=this;this.o=f6(e,t,n.worker),this.h=Pt(),this.o&&(t?this.o.on("message",function(a){o.h[a.id](a.msg),delete o.h[a.id]}):this.o.onmessage=function(a){a=a.data,o.h[a.id](a.msg),delete o.h[a.id]},this.o.postMessage({task:"init",factory:e,options:n}))}wl("add");wl("append");wl("search");wl("update");wl("remove");function wl(n){Ci.prototype[n]=Ci.prototype[n+"Async"]=function(){const e=this,t=[].slice.call(arguments);var o=t[t.length-1];let a;return Sp(o)&&(a=o,t.splice(t.length-1,1)),o=new Promise(function(r){setTimeout(function(){e.h[++ty]=r,e.o.postMessage({task:n,id:ty,args:t})})}),a?(o.then(a),this):o}}function f6(n,e,t){let o;try{o=e?new(require("worker_threads")).Worker(__dirname+"/node/node.js"):n?new Worker(URL.createObjectURL(new Blob(["onmessage="+d6.toString()],{type:"text/javascript"}))):new Worker(an(t)?t:"worker/worker.js",{type:"module"})}catch{}return o}function Ds(n){if(!(this instanceof Ds))return new Ds(n);var e=n.document||n.doc||n,t;this.K=[],this.h=[],this.A=[],this.register=Pt(),this.key=(t=e.key||e.id)&&Ql(t,this.A)||"id",this.m=Sc(n.fastupdate),this.C=(t=e.store)&&t!==!0&&[],this.store=t&&Pt(),this.I=(t=e.tag)&&Ql(t,this.A),this.l=t&&Pt(),this.cache=(t=n.cache)&&new Lu(t),n.cache=!1,this.o=n.worker,this.async=!1,t=Pt();let o=e.index||e.field||e;an(o)&&(o=[o]);for(let a=0,r,i;a<o.length;a++)r=o[a],an(r)||(i=r,r=r.field),i=Aa(i)?Object.assign({},n,i):n,this.o&&(t[r]=new Ci(i),t[r].o||(this.o=!1)),this.o||(t[r]=new fr(i,this.register)),this.K[a]=Ql(r,this.A),this.h[a]=r;if(this.C)for(n=e.store,an(n)&&(n=[n]),e=0;e<n.length;e++)this.C[e]=Ql(n[e],this.A);this.index=t}function Ql(n,e){const t=n.split(":");let o=0;for(let a=0;a<t.length;a++)n=t[a],0<=n.indexOf("[]")&&(n=n.substring(0,n.length-2))&&(e[o]=!0),n&&(t[o++]=n);return o<t.length&&(t.length=o),1<o?t:t[0]}function Xf(n,e){if(an(e))n=n[e];else for(let t=0;n&&t<e.length;t++)n=n[e[t]];return n}function eh(n,e,t,o,a){if(n=n[a],o===t.length-1)e[a]=n;else if(n)if(n.constructor===Array)for(e=e[a]=Array(n.length),a=0;a<n.length;a++)eh(n,e,t,o,a);else e=e[a]||(e[a]=Pt()),a=t[++o],eh(n,e,t,o,a)}function th(n,e,t,o,a,r,i,s){if(n=n[i])if(o===e.length-1){if(n.constructor===Array){if(t[o]){for(e=0;e<n.length;e++)a.add(r,n[e],!0,!0);return}n=n.join(" ")}a.add(r,n,s,!0)}else if(n.constructor===Array)for(i=0;i<n.length;i++)th(n,e,t,o,a,r,i,s);else i=e[++o],th(n,e,t,o,a,r,i,s)}It=Ds.prototype;It.add=function(n,e,t){if(Aa(n)&&(e=n,n=Xf(e,this.key)),e&&(n||n===0)){if(!t&&this.register[n])return this.update(n,e);for(let o=0,a,r;o<this.h.length;o++)r=this.h[o],a=this.K[o],an(a)&&(a=[a]),th(e,a,this.A,0,this.index[r],n,a[0],t);if(this.I){let o=Xf(e,this.I),a=Pt();an(o)&&(o=[o]);for(let r=0,i,s;r<o.length;r++)if(i=o[r],!a[i]&&(a[i]=1,s=this.l[i]||(this.l[i]=[]),!t||!s.includes(n))&&(s[s.length]=n,this.m)){const l=this.register[n]||(this.register[n]=[]);l[l.length]=s}}if(this.store&&(!t||!this.store[n])){let o;if(this.C){o=Pt();for(let a=0,r;a<this.C.length;a++)r=this.C[a],an(r)?o[r]=e[r]:eh(e,o,r,0,r[0])}this.store[n]=o||e}}return this};It.append=function(n,e){return this.add(n,e,!0)};It.update=function(n,e){return this.remove(n).add(n,e)};It.remove=function(n){if(Aa(n)&&(n=Xf(n,this.key)),this.register[n]){for(var e=0;e<this.h.length&&(this.index[this.h[e]].remove(n,!this.o),!this.m);e++);if(this.I&&!this.m)for(let t in this.l){e=this.l[t];const o=e.indexOf(n);o!==-1&&(1<e.length?e.splice(o,1):delete this.l[t])}this.store&&delete this.store[n],delete this.register[n]}return this};It.search=function(n,e,t,o){t||(!e&&Aa(n)?(t=n,n=""):Aa(e)&&(t=e,e=0));let a=[],r=[],i,s,l,u,f,d,p=0;if(t)if(t.constructor===Array)l=t,t=null;else{if(n=t.query||n,l=(i=t.pluck)||t.index||t.field,u=t.tag,s=this.store&&t.enrich,f=t.bool==="and",e=t.limit||e||100,d=t.offset||0,u&&(an(u)&&(u=[u]),!n)){for(let g=0,y;g<u.length;g++)(y=h6.call(this,u[g],e,d,s))&&(a[a.length]=y,p++);return p?a:[]}an(l)&&(l=[l])}l||(l=this.h),f=f&&(1<l.length||u&&1<u.length);const m=!o&&(this.o||this.async)&&[];for(let g=0,y,w,v;g<l.length;g++){let k;if(w=l[g],an(w)||(k=w,w=k.field,n=k.query||n,e=k.limit||e,s=k.enrich||s),m)m[g]=this.index[w].searchAsync(n,e,k||t);else{if(o?y=o[g]:y=this.index[w].search(n,e,k||t),v=y&&y.length,u&&v){const E=[];let A=0;f&&(E[0]=[y]);for(let N=0,T,C;N<u.length;N++)T=u[N],(v=(C=this.l[T])&&C.length)&&(A++,E[E.length]=f?[C]:C);A&&(y=f?Kw(E,e||100,d||0):c6(y,E),v=y.length)}if(v)r[p]=w,a[p++]=y;else if(f)return[]}}if(m){const g=this;return new Promise(function(y){Promise.all(m).then(function(w){y(g.search(n,e,t,w))})})}if(!p)return[];if(i&&(!s||!this.store))return a[0];for(let g=0,y;g<r.length;g++){if(y=a[g],y.length&&s&&(y=Qw.call(this,y)),i)return y;a[g]={field:r[g],result:y}}return a};function h6(n,e,t,o){let a=this.l[n],r=a&&a.length-t;if(r&&0<r)return(r>e||t)&&(a=a.slice(t,t+e)),o&&(a=Qw.call(this,a)),{tag:n,result:a}}function Qw(n){const e=Array(n.length);for(let t=0,o;t<n.length;t++)o=n[t],e[t]={id:o,doc:this.store[o]};return e}It.contain=function(n){return!!this.register[n]};It.get=function(n){return this.store[n]};It.set=function(n,e){return this.store[n]=e,this};It.searchCache=Gw;It.export=function(n,e,t,o,a,r){let i;if(typeof r>"u"&&(i=new Promise(s=>{r=s})),a||(a=0),o||(o=0),o<this.h.length){const s=this.h[o],l=this.index[s];e=this,setTimeout(function(){l.export(n,e,a?s:"",o,a++,r)||(o++,a=1,e.export(n,e,s,o,a,r))})}else{let s,l;switch(a){case 1:s="tag",l=this.l,t=null;break;case 2:s="store",l=this.store,t=null;break;default:r();return}Jw(n,this,t,s,o,a,l,r)}return i};It.import=function(n,e){if(e)switch(an(e)&&(e=JSON.parse(e)),n){case"tag":this.l=e;break;case"reg":this.m=!1,this.register=e;for(let o=0,a;o<this.h.length;o++)a=this.index[this.h[o]],a.register=e,a.m=!1;break;case"store":this.store=e;break;default:n=n.split(".");const t=n[0];n=n[1],t&&n&&this.index[t].import(n,e)}};Yw(Ds.prototype);var p6={encode:Xw,F:!1,G:""};const m6=[Lt("[àáâãäå]"),"a",Lt("[èéêë]"),"e",Lt("[ìíîï]"),"i",Lt("[òóôõöő]"),"o",Lt("[ùúûüű]"),"u",Lt("[ýŷÿ]"),"y",Lt("ñ"),"n",Lt("[çc]"),"k",Lt("ß"),"s",Lt(" & ")," and "];function Xw(n){var e=n=""+n;return e.normalize&&(e=e.normalize("NFD").replace(s6,"")),Ww.call(this,e.toLowerCase(),!n.normalize&&m6)}var g6={encode:ev,F:!1,G:"strict"};const y6=/[^a-z0-9]+/,ny={b:"p",v:"f",w:"f",z:"s",x:"s",ß:"s",d:"t",n:"m",c:"k",g:"k",j:"k",q:"k",i:"e",y:"e",u:"o"};function ev(n){n=Xw.call(this,n).join(" ");const e=[];if(n){const t=n.split(y6),o=t.length;for(let a=0,r,i=0;a<o;a++)if((n=t[a])&&(!this.filter||!this.filter[n])){r=n[0];let s=ny[r]||r,l=s;for(let u=1;u<n.length;u++){r=n[u];const f=ny[r]||r;f&&f!==l&&(s+=f,l=f)}e[i++]=s}}return e}var w6={encode:tv,F:!1,G:""};const v6=[Lt("ae"),"a",Lt("oe"),"o",Lt("sh"),"s",Lt("th"),"t",Lt("ph"),"f",Lt("pf"),"f",Lt("(?![aeo])h(?![aeo])"),"",Lt("(?!^[aeo])h(?!^[aeo])"),""];function tv(n,e){return n&&(n=ev.call(this,n).join(" "),2<n.length&&(n=xc(n,v6)),e||(1<n.length&&(n=qw(n)),n&&(n=n.split(" ")))),n||[]}var b6={encode:S6,F:!1,G:""};const k6=Lt("(?!\\b)[aeo]");function S6(n){return n&&(n=tv.call(this,n,!0),1<n.length&&(n=n.replace(k6,"")),1<n.length&&(n=qw(n)),n&&(n=n.split(" "))),n||[]}Rr["latin:default"]=l6;Rr["latin:simple"]=p6;Rr["latin:balance"]=g6;Rr["latin:advanced"]=w6;Rr["latin:extra"]=b6;const nv={Index:fr,Document:Ds,Worker:Ci,registerCharset:function(n,e){Rr[n]=e},registerLanguage:function(n,e){$w[n]=e}},re={PROFILE_EVENTS:"profileEvents",RELAY_LIST_EVENTS:"relayListEvents",FOLLOW_LIST_EVENTS:"followListEvents",MUTE_LIST_EVENTS:"muteListEvents",BOOKMARK_LIST_EVENTS:"bookmarkListEvents",BLOSSOM_SERVER_LIST_EVENTS:"blossomServerListEvents",USER_EMOJI_LIST_EVENTS:"userEmojiListEvents",EMOJI_SET_EVENTS:"emojiSetEvents",PIN_LIST_EVENTS:"pinListEvents",FAVORITE_RELAYS:"favoriteRelays",RELAY_SETS:"relaySets",FOLLOWING_FAVORITE_RELAYS:"followingFavoriteRelays",RELAY_INFOS:"relayInfos",DECRYPTED_CONTENTS:"decryptedContents",PINNED_USERS_EVENTS:"pinnedUsersEvents",EVENTS:"events",MUTE_DECRYPTED_TAGS:"muteDecryptedTags",RELAY_INFO_EVENTS:"relayInfoEvents",TIMELINE_REFS:"timelineRefs",GROUP_MESSAGES:"groupMessages",STUFF_STATS:"stuffStats",THREAD_REPLIES:"threadReplies",DM_MESSAGES:"dmMessages",DM_CONVERSATIONS:"dmConversations",SUB_REQUESTS:"subRequests",DM_RELAYS_EVENTS:"dmRelaysEvents",ENCRYPTION_KEY_ANNOUNCEMENT_EVENTS:"encryptionKeyAnnouncementEvents"},ya=class ya{constructor(){H(this,"db",null);H(this,"initPromise",null)}static getInstance(){return ya.instance||(ya.instance=new ya,ya.instance.init()),ya.instance}init(){return this.initPromise||(this.initPromise=new Promise((e,t)=>{const o=window.indexedDB.open("roguejumble",15);o.onerror=a=>{t(a)},o.onsuccess=()=>{this.db=o.result,e()},o.onupgradeneeded=()=>{const a=o.result;if(a.objectStoreNames.contains(re.PROFILE_EVENTS)||a.createObjectStore(re.PROFILE_EVENTS,{keyPath:"key"}),a.objectStoreNames.contains(re.RELAY_LIST_EVENTS)||a.createObjectStore(re.RELAY_LIST_EVENTS,{keyPath:"key"}),a.objectStoreNames.contains(re.FOLLOW_LIST_EVENTS)||a.createObjectStore(re.FOLLOW_LIST_EVENTS,{keyPath:"key"}),a.objectStoreNames.contains(re.MUTE_LIST_EVENTS)||a.createObjectStore(re.MUTE_LIST_EVENTS,{keyPath:"key"}),a.objectStoreNames.contains(re.BOOKMARK_LIST_EVENTS)||a.createObjectStore(re.BOOKMARK_LIST_EVENTS,{keyPath:"key"}),a.objectStoreNames.contains(re.DECRYPTED_CONTENTS)||a.createObjectStore(re.DECRYPTED_CONTENTS,{keyPath:"key"}),a.objectStoreNames.contains(re.FAVORITE_RELAYS)||a.createObjectStore(re.FAVORITE_RELAYS,{keyPath:"key"}),a.objectStoreNames.contains(re.RELAY_SETS)||a.createObjectStore(re.RELAY_SETS,{keyPath:"key"}),a.objectStoreNames.contains(re.FOLLOWING_FAVORITE_RELAYS)||a.createObjectStore(re.FOLLOWING_FAVORITE_RELAYS,{keyPath:"key"}),a.objectStoreNames.contains(re.BLOSSOM_SERVER_LIST_EVENTS)||a.createObjectStore(re.BLOSSOM_SERVER_LIST_EVENTS,{keyPath:"key"}),a.objectStoreNames.contains(re.USER_EMOJI_LIST_EVENTS)||a.createObjectStore(re.USER_EMOJI_LIST_EVENTS,{keyPath:"key"}),a.objectStoreNames.contains(re.EMOJI_SET_EVENTS)||a.createObjectStore(re.EMOJI_SET_EVENTS,{keyPath:"key"}),a.objectStoreNames.contains(re.RELAY_INFOS)||a.createObjectStore(re.RELAY_INFOS,{keyPath:"key"}),a.objectStoreNames.contains(re.PIN_LIST_EVENTS)||a.createObjectStore(re.PIN_LIST_EVENTS,{keyPath:"key"}),a.objectStoreNames.contains(re.PINNED_USERS_EVENTS)||a.createObjectStore(re.PINNED_USERS_EVENTS,{keyPath:"key"}),a.objectStoreNames.contains(re.EVENTS)||a.createObjectStore(re.EVENTS,{keyPath:"event.id"}).createIndex("createdAtIndex","event.created_at"),a.objectStoreNames.contains(re.TIMELINE_REFS)||a.createObjectStore(re.TIMELINE_REFS,{keyPath:"key"}),a.objectStoreNames.contains(re.GROUP_MESSAGES)||a.createObjectStore(re.GROUP_MESSAGES,{keyPath:"key"}).createIndex("addedAtIndex","addedAt"),a.objectStoreNames.contains(re.STUFF_STATS)||a.createObjectStore(re.STUFF_STATS,{keyPath:"key"}).createIndex("addedAtIndex","addedAt"),a.objectStoreNames.contains(re.THREAD_REPLIES)||a.createObjectStore(re.THREAD_REPLIES,{keyPath:"key"}).createIndex("addedAtIndex","addedAt"),a.objectStoreNames.contains(re.RELAY_INFO_EVENTS)&&a.deleteObjectStore(re.RELAY_INFO_EVENTS),a.objectStoreNames.contains(re.MUTE_DECRYPTED_TAGS)&&a.deleteObjectStore(re.MUTE_DECRYPTED_TAGS),!a.objectStoreNames.contains(re.DM_MESSAGES)){const r=a.createObjectStore(re.DM_MESSAGES,{keyPath:"id"});r.createIndex("participantsKeyIndex","participantsKey"),r.createIndex("createdAtIndex","createdAt")}if(!a.objectStoreNames.contains(re.DM_CONVERSATIONS)){const r=a.createObjectStore(re.DM_CONVERSATIONS,{keyPath:"key"});r.createIndex("pubkeyIndex","pubkey"),r.createIndex("lastMessageAtIndex","lastMessageAt")}a.objectStoreNames.contains(re.SUB_REQUESTS)||a.createObjectStore(re.SUB_REQUESTS,{keyPath:"key"}),a.objectStoreNames.contains(re.DM_RELAYS_EVENTS)||a.createObjectStore(re.DM_RELAYS_EVENTS,{keyPath:"key"}),a.objectStoreNames.contains(re.ENCRYPTION_KEY_ANNOUNCEMENT_EVENTS)||a.createObjectStore(re.ENCRYPTION_KEY_ANNOUNCEMENT_EVENTS,{keyPath:"key"}),this.db=a}}),setTimeout(()=>{this.cleanUpOldEvents(),this.cleanUp()},1e3*30)),this.initPromise}async putNullReplaceableEvent(e,t,o){const a=this.getStoreNameByKind(t);return a?(await this.initPromise,new Promise((r,i)=>{if(!this.db)return i("database not initialized");const s=this.db.transaction(a,"readwrite"),l=s.objectStore(a),u=this.getReplaceableEventKey(e,o),f=l.get(u);f.onsuccess=()=>{const d=f.result;if(d)return s.commit(),r(d.value);const p=l.put(this.formatValue(u,null));p.onsuccess=()=>{s.commit(),r(null)},p.onerror=m=>{s.commit(),i(m)}},f.onerror=d=>{s.commit(),i(d)}})):Promise.reject("store name not found")}async putReplaceableEvent(e){const t=this.getStoreNameByKind(e.kind);return t?(await this.initPromise,new Promise((o,a)=>{if(!this.db)return a("database not initialized");const r=this.db.transaction(t,"readwrite"),i=r.objectStore(t),s=this.getReplaceableEventKeyFromEvent(e),l=i.get(s);l.onsuccess=()=>{const u=l.result;if(u!=null&&u.value&&u.value.created_at>=e.created_at)return r.commit(),o(u.value);const f=i.put(this.formatValue(s,e));f.onsuccess=()=>{r.commit(),o(e)},f.onerror=d=>{r.commit(),a(d)}},l.onerror=u=>{r.commit(),a(u)}})):Promise.reject("store name not found")}async getReplaceableEventByCoordinate(e){const[t,o,...a]=e.split(":"),r=a.length>0?a.join(":"):void 0;return this.getReplaceableEvent(o,parseInt(t),r)}async getReplaceableEvent(e,t,o){const a=this.getStoreNameByKind(t);if(a)return await this.initPromise,new Promise((r,i)=>{if(!this.db)return i("database not initialized");const s=this.db.transaction(a,"readonly"),l=s.objectStore(a),u=this.getReplaceableEventKey(e,o),f=l.get(u);f.onsuccess=()=>{var d;s.commit(),r((d=f.result)==null?void 0:d.value)},f.onerror=d=>{s.commit(),i(d)}})}async getManyReplaceableEvents(e,t){const o=this.getStoreNameByKind(t);return o?(await this.initPromise,new Promise((a,r)=>{if(!this.db)return r("database not initialized");const i=this.db.transaction(o,"readonly"),s=i.objectStore(o),l=new Array(e.length).fill(void 0);let u=0;e.forEach((f,d)=>{const p=s.get(this.getReplaceableEventKey(f));p.onsuccess=()=>{var g;const m=(g=p.result)==null?void 0:g.value;(m||m===null)&&(l[d]=m),++u===e.length&&(i.commit(),a(l))},p.onerror=()=>{++u===e.length&&(i.commit(),a(l))}})})):Promise.reject("store name not found")}async getDecryptedContent(e){return await this.initPromise,new Promise((t,o)=>{if(!this.db)return o("database not initialized");const a=this.db.transaction(re.DECRYPTED_CONTENTS,"readonly"),i=a.objectStore(re.DECRYPTED_CONTENTS).get(e);i.onsuccess=()=>{var s;a.commit(),t((s=i.result)==null?void 0:s.value)},i.onerror=s=>{a.commit(),o(s)}})}async putDecryptedContent(e,t){return await this.initPromise,new Promise((o,a)=>{if(!this.db)return a("database not initialized");const r=this.db.transaction(re.DECRYPTED_CONTENTS,"readwrite"),s=r.objectStore(re.DECRYPTED_CONTENTS).put(this.formatValue(e,t));s.onsuccess=()=>{r.commit(),o()},s.onerror=l=>{r.commit(),a(l)}})}async iterateProfileEvents(e){if(await this.initPromise,!!this.db)return new Promise((t,o)=>{const a=this.db.transaction(re.PROFILE_EVENTS,"readwrite"),i=a.objectStore(re.PROFILE_EVENTS).openCursor();i.onsuccess=s=>{const l=s.target.result;if(l){const u=l.value.value;u&&e(u),l.continue()}else a.commit(),t()},i.onerror=s=>{a.commit(),o(s)}})}async putFollowingFavoriteRelays(e,t){return await this.initPromise,new Promise((o,a)=>{if(!this.db)return a("database not initialized");const r=this.db.transaction(re.FOLLOWING_FAVORITE_RELAYS,"readwrite"),s=r.objectStore(re.FOLLOWING_FAVORITE_RELAYS).put(this.formatValue(e,t));s.onsuccess=()=>{r.commit(),o()},s.onerror=l=>{r.commit(),a(l)}})}async getFollowingFavoriteRelays(e){return await this.initPromise,new Promise((t,o)=>{if(!this.db)return o("database not initialized");const a=this.db.transaction(re.FOLLOWING_FAVORITE_RELAYS,"readonly"),i=a.objectStore(re.FOLLOWING_FAVORITE_RELAYS).get(e);i.onsuccess=()=>{var s;a.commit(),t((s=i.result)==null?void 0:s.value)},i.onerror=s=>{a.commit(),o(s)}})}async putRelayInfo(e){return await this.initPromise,new Promise((t,o)=>{if(!this.db)return o("database not initialized");const a=this.db.transaction(re.RELAY_INFOS,"readwrite"),i=a.objectStore(re.RELAY_INFOS).put(this.formatValue(e.url,e));i.onsuccess=()=>{a.commit(),t()},i.onerror=s=>{a.commit(),o(s)}})}async getRelayInfo(e){return await this.initPromise,new Promise((t,o)=>{if(!this.db)return o("database not initialized");const a=this.db.transaction(re.RELAY_INFOS,"readonly"),i=a.objectStore(re.RELAY_INFOS).get(e);i.onsuccess=()=>{var s;a.commit(),t((s=i.result)==null?void 0:s.value)},i.onerror=s=>{a.commit(),o(s)}})}async putEvents(e){return await this.initPromise,new Promise((t,o)=>{if(!this.db)return o("database not initialized");const a=this.db.transaction(re.EVENTS,"readwrite"),r=a.objectStore(re.EVENTS);let i=0;e.forEach(s=>{const l=r.put(s);l.onsuccess=()=>{i++,i===e.length&&(a.commit(),t())},l.onerror=u=>{a.commit(),o(u)}})})}async getEvents({limit:e,...t}){return await this.initPromise,new Promise((o,a)=>{if(!this.db)return a("database not initialized");const r=this.db.transaction(re.EVENTS,"readonly"),l=r.objectStore(re.EVENTS).index("createdAtIndex").openCursor(null,"prev"),u=[];l.onsuccess=f=>{const d=f.target.result;if(d&&(!e||u.length<e)){const p=d.value;tg(t,p.event)&&u.push(p),d.continue()}else r.commit(),o(u)},l.onerror=f=>{r.commit(),a(f)}})}async deleteEvents(e){return await this.initPromise,new Promise((t,o)=>{if(!this.db)return o("database not initialized");const a=this.db.transaction(re.EVENTS,"readwrite"),s=a.objectStore(re.EVENTS).index("createdAtIndex").openCursor(IDBKeyRange.upperBound(e.until,!0));s.onsuccess=l=>{const u=l.target.result;if(u){const f=u.value;tg(e,f.event)&&u.delete(),u.continue()}else a.commit(),t()},s.onerror=l=>{a.commit(),o(l)}})}async putTimelineRefs(e,t){return await this.initPromise,new Promise((o,a)=>{if(!this.db)return a("database not initialized");const r=this.db.transaction(re.TIMELINE_REFS,"readwrite"),i=r.objectStore(re.TIMELINE_REFS),s={key:e,refs:t.map(u=>[u.event.id,u.event.created_at]),addedAt:Date.now()},l=i.put(s);l.onsuccess=()=>{r.commit(),o()},l.onerror=u=>{r.commit(),a(u)}})}async getTimelineRefs(e){return await this.initPromise,new Promise((t,o)=>{if(!this.db)return o("database not initialized");const a=this.db.transaction(re.TIMELINE_REFS,"readonly"),i=a.objectStore(re.TIMELINE_REFS).get(e);i.onsuccess=()=>{a.commit();const s=i.result;if(s!=null&&s.refs)if(s.addedAt<Date.now()-1e3*60*60*24*7){const l=this.db.transaction(re.TIMELINE_REFS,"readwrite");l.objectStore(re.TIMELINE_REFS).delete(e),l.commit(),t(null)}else t(s.refs.map(([l,u])=>({id:l,created_at:u})));else t(null)},i.onerror=s=>{a.commit(),o(s)}})}async putGroupMessages(e,t){return await this.initPromise,new Promise((o,a)=>{if(!this.db)return a("database not initialized");const r=this.db.transaction(re.GROUP_MESSAGES,"readwrite"),i=r.objectStore(re.GROUP_MESSAGES),s={key:e,messages:t,addedAt:Date.now()},l=i.put(s);l.onsuccess=()=>{r.commit(),o()},l.onerror=u=>{r.commit(),a(u)}})}async getGroupMessages(e){return await this.initPromise,new Promise((t,o)=>{if(!this.db)return o("database not initialized");const a=this.db.transaction(re.GROUP_MESSAGES,"readonly"),i=a.objectStore(re.GROUP_MESSAGES).get(e);i.onsuccess=()=>{a.commit();const s=i.result;if(s!=null&&s.messages)if(s.addedAt<Date.now()-1e3*60*60*24*7){const l=this.db.transaction(re.GROUP_MESSAGES,"readwrite");l.objectStore(re.GROUP_MESSAGES).delete(e),l.commit(),t(null)}else t(s.messages);else t(null)},i.onerror=s=>{a.commit(),o(s)}})}async putStuffStats(e,t){return await this.initPromise,new Promise((o,a)=>{if(!this.db)return a("database not initialized");const r=this.db.transaction(re.STUFF_STATS,"readwrite"),i=r.objectStore(re.STUFF_STATS),s={key:e,stats:t,addedAt:Date.now()},l=i.put(s);l.onsuccess=()=>{r.commit(),o()},l.onerror=u=>{r.commit(),a(u)}})}async getStuffStats(e){return await this.initPromise,new Promise((t,o)=>{if(!this.db)return o("database not initialized");const a=this.db.transaction(re.STUFF_STATS,"readonly"),i=a.objectStore(re.STUFF_STATS).get(e);i.onsuccess=()=>{a.commit();const s=i.result;if(s!=null&&s.stats)if(s.addedAt<Date.now()-1e3*60*60*24*14){const l=this.db.transaction(re.STUFF_STATS,"readwrite");l.objectStore(re.STUFF_STATS).delete(e),l.commit(),t(null)}else t(s.stats);else t(null)},i.onerror=s=>{a.commit(),o(s)}})}async putThreadReplies(e,t){return await this.initPromise,new Promise((o,a)=>{if(!this.db)return a("database not initialized");const r=this.db.transaction(re.THREAD_REPLIES,"readwrite"),i=r.objectStore(re.THREAD_REPLIES),s={key:e,replies:t,addedAt:Date.now()},l=i.put(s);l.onsuccess=()=>{r.commit(),o()},l.onerror=u=>{r.commit(),a(u)}})}async getThreadReplies(e){return await this.initPromise,new Promise((t,o)=>{if(!this.db)return o("database not initialized");const a=this.db.transaction(re.THREAD_REPLIES,"readonly"),i=a.objectStore(re.THREAD_REPLIES).get(e);i.onsuccess=()=>{a.commit();const s=i.result;if(s!=null&&s.replies)if(s.addedAt<Date.now()-1e3*60*60*24*7){const l=this.db.transaction(re.THREAD_REPLIES,"readwrite");l.objectStore(re.THREAD_REPLIES).delete(e),l.commit(),t(null)}else t(s.replies);else t(null)},i.onerror=s=>{a.commit(),o(s)}})}getReplaceableEventKeyFromEvent(e){if([Z.Metadata,Z.Contacts].includes(e.kind)||e.kind>=1e4&&e.kind<2e4)return this.getReplaceableEventKey(e.pubkey);const[,t]=e.tags.find(Ke("d"))??[];return this.getReplaceableEventKey(e.pubkey,t)}getReplaceableEventKey(e,t){return t===void 0?e:`${e}:${t}`}getStoreNameByKind(e){switch(e){case Z.Metadata:return re.PROFILE_EVENTS;case Z.RelayList:return re.RELAY_LIST_EVENTS;case Z.Contacts:return re.FOLLOW_LIST_EVENTS;case Z.Mutelist:return re.MUTE_LIST_EVENTS;case ce.BLOSSOM_SERVER_LIST:return re.BLOSSOM_SERVER_LIST_EVENTS;case Z.Relaysets:return re.RELAY_SETS;case ce.FAVORITE_RELAYS:return re.FAVORITE_RELAYS;case Z.BookmarkList:return re.BOOKMARK_LIST_EVENTS;case Z.UserEmojiList:return re.USER_EMOJI_LIST_EVENTS;case Z.Emojisets:return re.EMOJI_SET_EVENTS;case Z.Pinlist:return re.PIN_LIST_EVENTS;case ce.PINNED_USERS:return re.PINNED_USERS_EVENTS;case ce.DM_RELAYS:return re.DM_RELAYS_EVENTS;case ce.ENCRYPTION_KEY_ANNOUNCEMENT:return re.ENCRYPTION_KEY_ANNOUNCEMENT_EVENTS;default:return}}formatValue(e,t){return{key:e,value:t,addedAt:Date.now()}}async cleanUp(){if(await this.initPromise,!this.db)return;const e=[{name:re.PROFILE_EVENTS,expirationTimestamp:Date.now()-1e3*60*60*24*30},{name:re.RELAY_LIST_EVENTS,expirationTimestamp:Date.now()-1e3*60*60*24*30},{name:re.FOLLOW_LIST_EVENTS,expirationTimestamp:Date.now()-1e3*60*60*24*30},{name:re.BLOSSOM_SERVER_LIST_EVENTS,expirationTimestamp:Date.now()-1e3*60*60*24*30},{name:re.RELAY_INFOS,expirationTimestamp:Date.now()-1e3*60*60*24*30},{name:re.PIN_LIST_EVENTS,expirationTimestamp:Date.now()-1e3*60*60*24*30},{name:re.USER_EMOJI_LIST_EVENTS,expirationTimestamp:Date.now()-1e3*60*60*24*7},{name:re.EMOJI_SET_EVENTS,expirationTimestamp:Date.now()-1e3*60*60*24*7},{name:re.STUFF_STATS,expirationTimestamp:Date.now()-1e3*60*60*24*14},{name:re.THREAD_REPLIES,expirationTimestamp:Date.now()-1e3*60*60*24*7}],t=this.db.transaction(e.map(o=>o.name),"readwrite");await Promise.allSettled(e.map(({name:o,expirationTimestamp:a})=>a<0?Promise.resolve():new Promise((r,i)=>{const l=t.objectStore(o).openCursor();l.onsuccess=u=>{const f=u.target.result;f?(f.value.addedAt<a&&f.delete(),f.continue()):r()},l.onerror=u=>{i(u)}})))}async cleanUpOldEvents(){if(await this.initPromise,!this.db)return;const e=this.db.transaction(re.EVENTS,"readwrite"),a=e.objectStore(re.EVENTS).index("createdAtIndex").openCursor(IDBKeyRange.upperBound(Be().subtract(14,"days").unix()));a.onsuccess=r=>{const i=r.target.result;i?(i.delete(),i.continue()):e.commit()},a.onerror=r=>{e.commit(),console.error("Failed to clean up old events:",r)}}async putSubRequests(e,t){return await this.initPromise,new Promise((o,a)=>{if(!this.db)return a("database not initialized");const r=this.db.transaction(re.SUB_REQUESTS,"readwrite"),i=r.objectStore(re.SUB_REQUESTS),s={key:e,subRequests:t,addedAt:Date.now()},l=i.put(s);l.onsuccess=()=>{o()},l.onerror=u=>{a(u)},r.oncomplete=()=>{o()},r.onerror=u=>{a(u)}})}async getSubRequests(e){return await this.initPromise,new Promise((t,o)=>{if(!this.db)return o("database not initialized");const a=this.db.transaction(re.SUB_REQUESTS,"readonly"),i=a.objectStore(re.SUB_REQUESTS).get(e);i.onsuccess=()=>{const s=i.result;if(s!=null&&s.subRequests)if(s.addedAt<Date.now()-1e3*60*60){const u=this.db.transaction(re.SUB_REQUESTS,"readwrite").objectStore(re.SUB_REQUESTS).delete(e);u.onsuccess=()=>{t(null)},u.onerror=()=>{t(null)}}else t(s.subRequests);else t(null)},i.onerror=s=>{o(s)},a.oncomplete=()=>{},a.onerror=s=>{o(s)}})}async hasDmMessages(){return await this.initPromise,this.db?new Promise(e=>{const a=this.db.transaction(re.DM_MESSAGES,"readonly").objectStore(re.DM_MESSAGES).count();a.onsuccess=()=>e(a.result>0),a.onerror=()=>e(!1)}):!1}async getAllDmMessagesForAccount(e){return await this.initPromise,this.db?new Promise((t,o)=>{const i=this.db.transaction(re.DM_MESSAGES,"readonly").objectStore(re.DM_MESSAGES).openCursor(),s=[];i.onsuccess=l=>{const u=l.target.result;if(u){const f=u.value;f&&typeof f.participantsKey=="string"&&f.participantsKey.split(":").includes(e)&&s.push(f),u.continue()}else s.sort((f,d)=>f.createdAt-d.createdAt),t(s)},i.onerror=l=>o(l)}):[]}async getDmMessages(e,t){return await this.initPromise,this.db?new Promise((o,a)=>{try{const s=this.db.transaction(re.DM_MESSAGES,"readonly").objectStore(re.DM_MESSAGES).index("participantsKeyIndex"),l=IDBKeyRange.only(e),u=s.openCursor(l),f=[];u.onsuccess=d=>{const p=d.target.result;if(p){const m=p.value;if((t==null?void 0:t.after)!==void 0&&m.createdAt<=t.after){p.continue();return}if((t==null?void 0:t.before)!==void 0&&m.createdAt>=t.before){p.continue();return}if(f.push(m),t!=null&&t.limit&&f.length>=t.limit){o(f.sort((g,y)=>g.createdAt-y.createdAt));return}p.continue()}else o(f.sort((m,g)=>m.createdAt-g.createdAt))},u.onerror=d=>a(d)}catch(r){a(r)}}):[]}async getDmMessageById(e){return await this.initPromise,this.db?new Promise((t,o)=>{const i=this.db.transaction(re.DM_MESSAGES,"readonly").objectStore(re.DM_MESSAGES).get(e);i.onsuccess=()=>t(i.result??null),i.onerror=s=>o(s)}):null}async putDmMessage(e){if(await this.initPromise,!!this.db)return new Promise((t,o)=>{const i=this.db.transaction(re.DM_MESSAGES,"readwrite").objectStore(re.DM_MESSAGES).put(e);i.onsuccess=()=>t(),i.onerror=s=>o(s)})}async getDmConversation(e){return await this.initPromise,this.db?new Promise((t,o)=>{const i=this.db.transaction(re.DM_CONVERSATIONS,"readonly").objectStore(re.DM_CONVERSATIONS).get(e);i.onsuccess=()=>t(i.result??null),i.onerror=s=>o(s)}):null}async putDmConversation(e){if(await this.initPromise,!!this.db)return new Promise((t,o)=>{const i=this.db.transaction(re.DM_CONVERSATIONS,"readwrite").objectStore(re.DM_CONVERSATIONS).put(e);i.onsuccess=()=>t(),i.onerror=s=>o(s)})}async getAllDmConversations(e){return await this.initPromise,this.db?new Promise((t,o)=>{const i=this.db.transaction(re.DM_CONVERSATIONS,"readonly").objectStore(re.DM_CONVERSATIONS).openCursor(),s=[];i.onsuccess=l=>{const u=l.target.result;if(u){const f=u.value;typeof f.key=="string"&&f.key.startsWith(e+":")&&s.push(f),u.continue()}else s.sort((f,d)=>(d.lastMessageAt??0)-(f.lastMessageAt??0)),t(s)},i.onerror=l=>o(l)}):[]}};H(ya,"instance");let nh=ya;const be=nh.getInstance(),wa=class wa extends EventTarget{constructor(){super();H(this,"signer");H(this,"pubkey");H(this,"currentRelays",[]);H(this,"pool");H(this,"externalSeenOn",new Map);H(this,"timelines",{});H(this,"replaceableEventCacheMap",new mn({max:5e3,ttl:1e3*60*60*24}));H(this,"eventCacheMap",new mn({max:5e3,ttl:1e3*60*60*24}));H(this,"eventDataLoader",new Bo(t=>Promise.all(t.map(o=>this._fetchEvent(o))),{cacheMap:this.eventCacheMap}));H(this,"fetchEventFromBigRelaysDataloader",new Bo(this.fetchEventsFromBigRelays.bind(this),{cache:!1,batchScheduleFn:t=>setTimeout(t,50)}));H(this,"userIndex",new nv.Index({tokenize:"forward"}));H(this,"followingFavoriteRelaysCache",new mn({max:10,fetchMethod:this._fetchFollowingFavoriteRelays.bind(this)}));H(this,"profileDataloader",new Bo(async t=>(await Promise.allSettled(t.map(a=>this._fetchProfile(a)))).map(a=>a.status==="fulfilled"?a.value:null)));H(this,"replaceableEventFromBigRelaysDataloader",new Bo(this.replaceableEventFromBigRelaysBatchLoadFn.bind(this),{batchScheduleFn:t=>setTimeout(t,50),maxBatchSize:500,cacheKeyFn:({pubkey:t,kind:o})=>`${t}:${o}`}));H(this,"replaceableEventDataLoader",new Bo(this.replaceableEventBatchLoadFn.bind(this),{cacheKeyFn:({pubkey:t,kind:o,d:a})=>`${o}:${t}:${a??""}`}));this.pool=new VP,this.pool.trackRelays=!0}static getInstance(){return wa.instance||(wa.instance=new wa,wa.instance.init()),wa.instance}async init(){await be.iterateProfileEvents(t=>this.addUsernameToIndex(t))}async determineTargetRelays(t,{specifiedRelayUrls:o,additionalRelayUrls:a}={}){var s;if(t.kind===Z.Report){const l=(s=t.tags.find(Ke("e")))==null?void 0:s[1];if(l)return this.getSeenEventRelayUrls(l)}const r=kt(),i=new Set;if(o!=null&&o.length)o.forEach(l=>i.add(l));else{if(a==null||a.forEach(u=>i.add(u)),!(o!=null&&o.length)&&![Z.Contacts,Z.Mutelist,ce.PINNED_USERS].includes(t.kind)){const u=[];t.tags.forEach(([f,d])=>{["p","P"].includes(f)&&d&&Sa(d)&&!u.includes(d)&&u.push(d)}),u.length>0&&(await Promise.race([this.fetchRelayLists(u),new Promise((d,p)=>setTimeout(()=>p(new Error("Relay list fetch timeout")),3e3))]).catch(d=>(console.warn("[determineTargetRelays] Relay list fetch failed:",d),[]))).forEach(d=>{d.read.slice(0,5).forEach(p=>i.add(p))})}(await Promise.race([this.fetchRelayList(t.pubkey),new Promise((u,f)=>setTimeout(()=>f(new Error("Relay list fetch timeout")),3e3))]).catch(u=>(console.warn("[determineTargetRelays] Author relay list fetch failed:",u),{write:r,read:r,originalRelays:[]}))).write.forEach(u=>i.add(u)),[Z.RelayList,Z.Contacts,ce.FAVORITE_RELAYS,ce.BLOSSOM_SERVER_LIST,ce.RELAY_REVIEW].includes(t.kind)&&r.forEach(u=>i.add(u)),t.kind===ce.COMMENT&&t.tags.find(Ke("I"))&&r.forEach(f=>i.add(f))}return i.size||r.forEach(l=>i.add(l)),Array.from(i)}async determineRelaysByFilter(t){var o,a;if(t.search)return jP();if((o=t.authors)!=null&&o.length){const r=await this.fetchRelayLists(t.authors);return Array.from(new Set(r.flatMap(i=>i.write.slice(0,5))))}else if((a=t["#p"])!=null&&a.length){const r=await this.fetchRelayLists(t["#p"]);return Array.from(new Set(r.flatMap(i=>i.read.slice(0,5))))}return kt()}async publishEvent(t,o){const a=Array.from(new Set(t));await new Promise((r,i)=>{let s=0,l=0;const u=Math.max(1,a.length/3),f=[],d=(p,m,g)=>{g&&f.push({url:p,error:g}),m&&s++,l++,s>=u&&(this.emitNewEvent(o,a),(o.kind===ce.DM_RELAYS||o.kind===ce.ENCRYPTION_KEY_ANNOUNCEMENT)&&this.updateReplaceableEventCache(o),r()),l>=a.length&&s<u&&i(new AggregateError(f.map(({url:y,error:w})=>new Error(`${y}: ${w instanceof Error?w.message:String(w)}`)),"Failed to publish to relays"))};Promise.allSettled(a.map(async p=>{const m=this,g=await this.pool.ensureRelay(p).catch(()=>{});if(!g){d(p,!1,new Error("Cannot connect to relay"));return}return g.publishTimeout=1e4,(async()=>{try{await g.publish(o),m.trackEventSeenOn(o.id,g),d(p,!0)}catch(w){d(p,!1,w)}})()}))})}emitNewEvent(t,o=[]){this.dispatchEvent(new CustomEvent("newEvent",{detail:{event:t,relays:o}}))}async signHttpAuth(t,o,a=""){var i;if(!this.signer)throw new Error("Please login first to sign the event");const r=await((i=this.signer)==null?void 0:i.signEvent({content:a,kind:Z.HTTPAuth,created_at:Be().unix(),tags:[["u",t],["method",o]]}));return"Nostr "+btoa(JSON.stringify(r))}generateTimelineKey(t,o){const a={};Object.entries(o).sort().forEach(([f,d])=>{f!=="limit"&&(Array.isArray(d)&&(a[f]=[...d].sort()),a[f]=d)});const r=JSON.stringify({urls:[...t].sort(),filter:a}),s=new TextEncoder().encode(r),l=Ms(s);return Array.from(new Uint8Array(l)).map(f=>f.toString(16).padStart(2,"0")).join("")}generateMultipleTimelinesKey(t){const o=t.map(({urls:l,filter:u})=>this.generateTimelineKey(l,u)),r=new TextEncoder().encode(JSON.stringify(o.sort())),i=Ms(r);return Array.from(new Uint8Array(i)).map(l=>l.toString(16).padStart(2,"0")).join("")}async getEventsFromIndexed(t){const o=await be.getEvents(t),a=[];return o.forEach(r=>{a.push(r.event),this.trackEventExternalSeenOn(r.event.id,r.relays),this.addEventToCache(r.event)}),a}async subscribeTimeline(t,{onEvents:o,onNew:a,onClose:r},{startLogin:i,needSort:s=!0,needSaveToDb:l=!1}={}){const u=new Set,f=t.length,d=Math.floor(f/2),p=new Array(f).fill(0).map(()=>[]);let m=0;const g=await Promise.all(t.map(({urls:w,filter:v},k)=>this._subscribeTimeline(w,v,{onEvents:(E,A)=>{if(A&&m++,p[k]=E,m>=d){const N=WP(p,v.limit);o(N,m>=f)}},onNew:E=>{u.has(E.id)||(u.add(E.id),a(E))},onClose:r},{needSort:s,needSaveToDb:l}))),y=this.generateMultipleTimelinesKey(t);return this.timelines[y]=g.map(w=>w.timelineKey),{closer:()=>{o=()=>{},a=()=>{},g.forEach(w=>{w.closer()})},timelineKey:y}}async loadMoreTimeline(t,o,a){const r=this.timelines[t];if(!r)return[];if(!Array.isArray(r))return this._loadMoreTimeline(t,o,a);const i=await Promise.all(r.map(u=>this._loadMoreTimeline(u,o,a))),s=new Set,l=[];return i.forEach(u=>{u.forEach(f=>{s.has(f.id)||(s.add(f.id),l.push(f))})}),l.sort((u,f)=>Uo(f,u)).slice(0,a)}subscribe(t,o,{onevent:a,oneose:r,onclose:i,onAllClose:s}){const l=Array.from(new Set(t)),u=Array.isArray(o)?o:[o],f=this,d=new Set,p=l.length;let m=0,g=!1,y=0;const w=[],v=[];l.forEach(E=>{v.push(A());async function A(){const N=await f.pool.ensureRelay(E).catch(()=>{});return N?N.subscribe(u,{receivedEvent:(T,C)=>{f.trackEventSeenOn(C,T)},alreadyHaveEvent:T=>d.has(T)?!0:(d.add(T),!1),onevent:T=>{a==null||a(T)},oneose:()=>{g||(m++,g=m>=p,r==null||r(g))},onclose:T=>{y++,w.push(T),i==null||i(E,T),y>=p&&(s==null||s(w))},eoseTimeout:1e4}):(g||(m++,g=m>=p,r==null||r(g)),{close:()=>{}})}});const k=E=>{const A=E,{event:N,relays:T}=A.detail;if(!T.some(U=>l.includes(U)))return;const C=u.filter(U=>!U.search);if(C.length===0||!PE(C,N))return;const P=N.id;d.has(P)||(d.add(P),a==null||a(N))};return this.addEventListener("newEvent",k),{close:()=>{this.removeEventListener("newEvent",k),v.forEach(E=>{E.then(A=>{A.close()}).catch(A=>{console.error(A)})})}}}async _subscribeTimeline(t,o,{onEvents:a,onNew:r,onClose:i},{needSort:s=!0,needSaveToDb:l=!1}={}){const u=Array.from(new Set(t)),f=this.generateTimelineKey(u,o),d=this.timelines[f];let p=[],m;if((!d||Array.isArray(d)||!d.refs.length)&&s){const E=await be.getTimelineRefs(f);E&&E.length>0&&(this.timelines[f]={refs:E.map(({id:A,created_at:N})=>[A,N]),filter:o,urls:t})}const g=this.timelines[f];g&&!Array.isArray(g)&&g.refs.length&&s&&(p=(await this.eventDataLoader.loadMany(g.refs.map(([E])=>E))).filter(E=>!!E&&!(E instanceof Error)),p.length&&(a([...p],!1),m=p[0].created_at+1));const y=this;let w=[],v=null;const k=this.subscribe(u,m?{...o,since:m}:o,{onevent:E=>{if(y.addEventToCache(E),!v)return w.push(E);E.created_at>v&&(r(E),l&&be.putEvents([{event:E,relays:y.getEventHints(E.id)}]));const A=y.timelines[f];if(!A||Array.isArray(A)||!A.refs.length)return;let N=0;for(const T of A.refs){if(E.created_at>T[1]||E.created_at===T[1]&&E.id<T[0])break;if(E.created_at===T[1]&&E.id===T[0])return;N++}N>=A.refs.length||A.refs.splice(N,0,[E.id,E.created_at])},oneose:E=>{if(E&&!v&&(v=Be().unix()),!s)return a([...w],!!v);if(!E)return w=w.sort((C,P)=>Uo(P,C)).slice(0,o.limit),a([...w.concat(p).slice(0,o.limit)],!1);w=w.sort((C,P)=>Uo(P,C)).slice(0,o.limit),l&&be.putEvents(w.map(C=>({event:C,relays:this.getEventHints(C.id)})));const A=y.timelines[f];if(!A||Array.isArray(A)||!A.refs.length){const C=w.map(P=>[P.id,P.created_at]);return y.timelines[f]={refs:C,filter:o,urls:t},l&&be.putTimelineRefs(f,w.map(P=>({event:P,relays:y.getEventHints(P.id)}))),a([...w],!0)}const N=A.refs[0][1],T=w.filter(C=>C.created_at>N).map(C=>[C.id,C.created_at]);if(w.length>=o.limit)A.refs=T,a([...w],!0),l&&(be.putTimelineRefs(f,w.map(C=>({event:C,relays:y.getEventHints(C.id)}))),be.deleteEvents({...o,until:w[w.length-1].created_at}));else if(A.refs=T.concat(A.refs),a([...w.concat(p).slice(0,o.limit)],!0),l){const C=A.refs.slice(0,o.limit*2);be.putTimelineRefs(f,C.map(([P,M])=>({event:{id:P,created_at:M},relays:[]})))}},onclose:i});return{timelineKey:f,closer:()=>{a=()=>{},r=()=>{},k.close()}}}async _loadMoreTimeline(t,o,a){const r=this.timelines[t];if(!r||Array.isArray(r))return[];const{filter:i,urls:s,refs:l}=r,u=l.findIndex(([,m])=>m<=o),f=u>=0?(await this.eventDataLoader.loadMany(l.slice(u,u+a).map(([m])=>m))).filter(m=>!!m&&!(m instanceof Error)):[];if(f.length>=a)return f;o=f.length?f[f.length-1].created_at-1:o,a=a-f.length;let d=await this.query(s,{...i,until:o,limit:a});d.forEach(m=>{this.addEventToCache(m)}),d=d.sort((m,g)=>Uo(g,m)).slice(0,a);const p=l.length>0?l[l.length-1][1]:Be().unix();return r.refs.push(...d.filter(m=>m.created_at<p).map(m=>[m.id,m.created_at])),[...f,...d]}getSeenEventRelays(t){var o;return Array.from(((o=this.pool.seenOn.get(t))==null?void 0:o.values())||[])}getSeenEventRelayUrls(t){return Array.from(new Set([...this.getSeenEventRelays(t).map(o=>o.url),...this.externalSeenOn.get(t)||[]]))}getEventHints(t){return this.getSeenEventRelayUrls(t).filter(o=>!Ug(o))}getEventHint(t){return this.getSeenEventRelayUrls(t).find(o=>!Ug(o))??""}trackEventSeenOn(t,o){let a=this.pool.seenOn.get(t);a||(a=new Set,this.pool.seenOn.set(t,a)),a.add(o)}trackEventExternalSeenOn(t,o){let a=this.externalSeenOn.get(t);a||(a=new Set,this.externalSeenOn.set(t,a)),o.forEach(r=>a.add(r))}keepRelayAlive(t){this.pool.markRelayActive(t)}async query(t,o,a){return await new Promise(r=>{const i=[],s=this.subscribe(t,o,{onevent(l){a==null||a(l),i.push(l)},oneose:l=>{l&&(s.close(),r(i))},onAllClose:()=>{r(i)}})})}async fetchEvents(t,o,{onevent:a,cache:r=!1}={}){const i=Array.from(new Set(t)),s=await this.query(i.length>0?i:kt(),o,a);return r&&s.forEach(l=>{this.addEventToCache(l)}),s}async fetchEvent(t){if(!/^[0-9a-f]{64}$/.test(t)){let o,a;const{type:r,data:i}=Nt.decode(t);switch(r){case"note":o=i;break;case"nevent":o=i.id;break;case"naddr":a=wp(i.kind,i.pubkey,i.identifier);break}if(a){const s=this.replaceableEventCacheMap.get(a);if(s)return s;const l=await be.getReplaceableEventByCoordinate(a);if(l)return this.replaceableEventCacheMap.set(a,l),l}else if(o){const s=this.eventCacheMap.get(o);if(s)return s}}return this.eventDataLoader.load(t)}addEventToCache(t){if(this.eventDataLoader.prime(t.id,Promise.resolve(t)),Bt(t.kind)){const o=ln(t),a=this.replaceableEventCacheMap.get(o);(!a||Uo(t,a)>0)&&this.replaceableEventCacheMap.set(o,t)}}getReplaeableEventFromCache(t){return this.replaceableEventCacheMap.get(t)}async fetchEventById(t,o){const a=await this.fetchEventFromBigRelaysDataloader.load(o);return a||this.fetchEventFromRelays(Wd(t),{ids:[o],limit:1})}async _fetchEvent(t){var s;let o,a=[],r;if(/^[0-9a-f]{64}$/.test(t))o={ids:[t]};else{const{type:l,data:u}=Nt.decode(t);switch(l){case"note":o={ids:[u]};break;case"nevent":o={ids:[u.id]},u.relays&&(a=u.relays),u.author&&(r=u.author);break;case"naddr":o={authors:[u.pubkey],kinds:[u.kind],limit:1},r=u.pubkey,u.identifier&&(o["#d"]=[u.identifier]),u.relays&&(a=u.relays)}}if(!o)throw new Error("Invalid id");let i;if((s=o.ids)!=null&&s.length&&(i=await this.fetchEventById(a,o.ids[0])),!i&&r){const l=await this.fetchRelayList(r);i=await this.fetchEventFromRelays(l.write.slice(0,5),o)}return i&&i.id!==t&&this.addEventToCache(i),i}async fetchEventFromRelays(t,o){return t.length?(await this.query(t,o)).sort((r,i)=>i.created_at-r.created_at)[0]:void 0}async fetchEventsFromBigRelays(t){const o=await this.query(kt(),{ids:Array.from(new Set(t)),limit:t.length}),a=new Map;for(const r of o)a.set(r.id,r);return t.map(r=>a.get(r))}async fetchFollowingFavoriteRelays(t){return this.followingFavoriteRelaysCache.fetch(t)}async _fetchFollowingFavoriteRelays(t){const o=async()=>{const r=await this.fetchFollowings(t),i=await this.fetchEvents(kt(),{authors:r,kinds:[ce.FAVORITE_RELAYS,Z.Relaysets],limit:1e3}),s=new Set,l=new Set,u=[];i.sort((p,m)=>m.created_at-p.created_at).forEach(p=>{if(p.kind===ce.FAVORITE_RELAYS){if(s.has(p.pubkey))return;s.add(p.pubkey)}else if(p.kind===Z.Relaysets){if(l.has(p.pubkey))return;l.add(p.pubkey)}else return;u.push(p)});const f=new Map;u.forEach(p=>{p.tags.forEach(([m,g])=>{if(m==="relay"&&g&&yl(g)){const y=jn(g);f.set(y,(f.get(y)||new Set).add(p.pubkey))}})});const d=Array.from(f.entries()).sort((p,m)=>m[1].size-p[1].size).map(([p,m])=>[p,Array.from(m)]);return be.putFollowingFavoriteRelays(t,d),d},a=await be.getFollowingFavoriteRelays(t);return a?(o(),a):o()}async initUserIndexFromFollowings(t,o){const a=await this.fetchFollowings(t,!1);for(let r=0;r*20<a.length;r++){if(o.aborted)return;await Promise.all(a.slice(r*20,(r+1)*20).map(i=>this.fetchProfile(i,!1))),await new Promise(i=>setTimeout(i,1e3))}}async searchNpubsFromLocal(t,o=100){return(await this.userIndex.searchAsync(t.normalize("NFKD"),{limit:o})).map(r=>ur(r)).filter(Boolean)}async searchProfilesFromLocal(t,o=100){const a=await this.searchNpubsFromLocal(t,o);return(await Promise.all(a.map(i=>this.fetchProfile(i)))).filter(i=>!!i)}async addUsernameToIndex(t){var o,a,r;try{const i=JSON.parse(t.content),s=[((o=i.display_name)==null?void 0:o.trim())??"",((a=i.name)==null?void 0:a.trim())??"",((r=i.nip05)==null?void 0:r.split("@").map(l=>l.trim()).join(" "))??""].join(" ").normalize("NFKD");if(!s)return;await this.userIndex.addAsync(t.pubkey,s)}catch{return}}async _fetchProfileEvent(t){let o,a=[];if(/^[0-9a-f]{64}$/.test(t))o=t;else{const{data:s,type:l}=Nt.decode(t);switch(l){case"npub":o=s;break;case"nprofile":o=s.pubkey,s.relays&&(a=s.relays);break}}if(!o)throw new Error("Invalid id");const r=await this.replaceableEventFromBigRelaysDataloader.load({pubkey:o,kind:Z.Metadata});if(r)return this.addUsernameToIndex(r),r;if(!a.length){const s=await this.fetchRelayList(o);a=Wd(s.write).slice(0,5)}a.length||(a=Wd(this.currentRelays));const i=await this.fetchEventFromRelays(a,{authors:[o],kinds:[Z.Metadata],limit:1});return i&&(this.addUsernameToIndex(i),be.putReplaceableEvent(i)),i}async fetchProfile(t,o=!1){if(o)return this._fetchProfile(t);const a=dr(t,!0),r=await be.getReplaceableEvent(a,Z.Metadata);return r?(r.created_at<Be().subtract(3,"day").unix()&&this.profileDataloader.load(t),fi(r)):await this.profileDataloader.load(t)}async _fetchProfile(t){const o=await this._fetchProfileEvent(t);if(o)return fi(o);try{const a=dr(t);return{pubkey:a,npub:ur(a)??"",username:Ri(a)}}catch{return null}}async updateProfileEventCache(t){await Promise.allSettled([this.updateReplaceableEventFromBigRelaysCache(t),this.addUsernameToIndex(t)])}async fetchUserStatus(t){return await this.replaceableEventFromBigRelaysDataloader.load({pubkey:t,kind:30315})}async fetchRelayList(t){const[o]=await this.fetchRelayLists([t]);return o}async fetchRelayLists(t){return(await this.fetchReplaceableEventsFromBigRelays(t,Z.RelayList)).map(a=>{if(a)return kc(a,pe.getFilterOutOnionRelays());const r=kt();return{write:r,read:r,originalRelays:[]}})}async forceUpdateRelayListEvent(t){await this.replaceableEventFromBigRelaysBatchLoadFn([{pubkey:t,kind:Z.RelayList}])}async updateRelayListCache(t){return await this.updateReplaceableEventFromBigRelaysCache(t)}async replaceableEventFromBigRelaysBatchLoadFn(t){const o=new Map;t.forEach(({pubkey:r,kind:i})=>{o.has(i)||o.set(i,[]),o.get(i).push(r)});const a=new Map;return await Promise.allSettled(Array.from(o.entries()).map(async([r,i])=>{const s=await this.query(kt(),{authors:i,kinds:[r]});for(const l of s){const u=`${l.pubkey}:${l.kind}`,f=a.get(u);(!f||f.created_at<l.created_at)&&a.set(u,l)}})),t.map(({pubkey:r,kind:i})=>{const s=`${r}:${i}`,l=a.get(s);return l?(be.putReplaceableEvent(l),l):(be.putNullReplaceableEvent(r,i),null)})}async fetchReplaceableEventsFromBigRelays(t,o){const a=await be.getManyReplaceableEvents(t,o),r=new Map,i=[];return t.forEach((l,u)=>{a[u]===void 0?r.set(l,u):i.push(l)}),(await this.replaceableEventFromBigRelaysDataloader.loadMany(Array.from(r.keys()).map(l=>({pubkey:l,kind:o})))).forEach(l=>{if(l&&!(l instanceof Error)){const u=r.get(l.pubkey);u!==void 0&&(a[u]=l)}}),this.replaceableEventFromBigRelaysDataloader.loadMany(i.map(l=>({pubkey:l,kind:o}))),a}async updateReplaceableEventFromBigRelaysCache(t){const o=await be.putReplaceableEvent(t);return o.id!==t.id||(this.replaceableEventFromBigRelaysDataloader.clear({pubkey:t.pubkey,kind:t.kind}),this.replaceableEventFromBigRelaysDataloader.prime({pubkey:t.pubkey,kind:t.kind},Promise.resolve(t))),o}async replaceableEventBatchLoadFn(t){const o=new Map;t.forEach(({pubkey:r,kind:i,d:s})=>{o.has(r)||o.set(r,[]),o.get(r).push({kind:i,d:s})});const a=new Map;return await Promise.allSettled(Array.from(o.entries()).map(async([r,i])=>{const s=new Map;i.forEach(({kind:p,d:m})=>{s.has(p)||s.set(p,[]),m&&s.get(p).push(m)});const l=Array.from(s.entries()).map(([p,m])=>m.length>0?{authors:[r],kinds:[p],"#d":m}:{authors:[r],kinds:[p]}),f=(await this.fetchRelayList(r)).write.concat(kt()).slice(0,5),d=await this.query(f,l);for(const p of d){const m=ln(p),g=a.get(m);(!g||g.created_at<p.created_at)&&a.set(m,p)}})),t.map(({pubkey:r,kind:i,d:s})=>{const l=`${i}:${r}:${s??""}`,u=a.get(l);return i===Z.Pinlist?u??null:u?(be.putReplaceableEvent(u),u):(be.putNullReplaceableEvent(r,i,s),null)})}async fetchReplaceableEvent(t,o,a,r=!0,i=!1){const s=await be.getReplaceableEvent(t,o,a);return s!==void 0?(r&&this.replaceableEventDataLoader.load({pubkey:t,kind:o,d:a}),s):await this.replaceableEventDataLoader.load({pubkey:t,kind:o,d:a})}async updateReplaceableEventCache(t){(await be.putReplaceableEvent(t)).id===t.id&&(this.replaceableEventDataLoader.clear({pubkey:t.pubkey,kind:t.kind}),this.replaceableEventDataLoader.prime({pubkey:t.pubkey,kind:t.kind},Promise.resolve(t)))}async fetchFollowListEvent(t,o=!0){return await this.fetchReplaceableEvent(t,Z.Contacts,void 0,o)}async fetchFollowings(t,o=!0){const a=await this.fetchFollowListEvent(t,o);return a?Ls(a.tags):[]}async updateFollowListCache(t){await this.updateReplaceableEventCache(t)}async fetchMuteListEvent(t){return await this.fetchReplaceableEvent(t,Z.Mutelist)}async fetchBookmarkListEvent(t){return this.fetchReplaceableEvent(t,Z.BookmarkList)}async fetchBlossomServerListEvent(t){return await this.fetchReplaceableEvent(t,ce.BLOSSOM_SERVER_LIST)}async fetchBlossomServerList(t){const o=await this.fetchBlossomServerListEvent(t);return o?yP(o.tags):[]}async fetchPinListEvent(t){return this.fetchReplaceableEvent(t,Z.Pinlist)}async fetchUserEmojiListEvent(t){return this.fetchReplaceableEvent(t,Z.UserEmojiList)}async fetchPinnedUsersList(t){return this.fetchReplaceableEvent(t,ce.PINNED_USERS)}async fetchDmRelaysEvent(t,o=!0,a=!1){return await this.fetchReplaceableEvent(t,ce.DM_RELAYS,void 0,o,a)}async fetchDmRelays(t,o=!0){const a=await this.fetchDmRelaysEvent(t,o),r=a?Array.from(new Set(a.tags.filter(i=>i[0]==="relay"&&i[1]).map(i=>jn(i[1])).filter(Boolean))):[];return r.length===0?W4:r}async fetchEncryptionKeyAnnouncementEvent(t,o=!0,a=!1){return await this.fetchReplaceableEvent(t,ce.ENCRYPTION_KEY_ANNOUNCEMENT,void 0,o,a)}async updateEncryptionKeyAnnouncementCache(t){await this.updateReplaceableEventCache(t)}async updateBlossomServerListEventCache(t){await this.updateReplaceableEventCache(t)}async fetchEmojiSetEvents(t,o=!0){const a=t.map(r=>{const[i,s,l=""]=r.split(":");if(!s||!i)return null;const u=parseInt(i,10);return u!==Z.Emojisets?null:{pubkey:s,kind:u,d:l}}).filter(Boolean);return await Promise.all(a.map(({pubkey:r,kind:i,d:s})=>this.fetchReplaceableEvent(r,i,s,o)))}async fetchPaymentInfoEvent(t){return this.fetchReplaceableEvent(t,ce.PAYMENT_INFO)}async updatePaymentInfoEventCache(t){await this.updateReplaceableEventCache(t)}async generateSubRequestsForPubkeys(t,o,a){if(a)try{const f=await be.getSubRequests(a);if(f)return f}catch(f){console.warn("[generateSubRequestsForPubkeys] Failed to get cached sub requests:",f)}if(GC()){let f=kt();o&&(f=(await this.fetchRelayList(o)).read.concat(kt()).slice(0,5));const d=[{urls:f,filter:{authors:t}}];return a&&be.putSubRequests(a,d).catch(p=>{console.warn("[generateSubRequestsForPubkeys] Failed to cache sub requests:",p)}),d}const r=await this.fetchRelayLists(t),i={};r.forEach((f,d)=>{f.write.slice(0,4).forEach(p=>{i[p]||(i[p]=new Set),i[p].add(t[d])})});const s=Object.keys(i).length,l=new Map;Object.entries(i).sort(([,f],[,d])=>d.size-f.size).forEach(([f,d])=>{s>10&&d.size<10&&Array.from(d).every(p=>(l.get(p)??0)>=2)?delete i[f]:d.forEach(p=>{l.set(p,(l.get(p)??0)+1)})});const u=Object.entries(i).map(([f,d])=>({urls:[f],filter:{authors:Array.from(d)}}));return a&&be.putSubRequests(a,u).catch(f=>{console.warn("[generateSubRequestsForPubkeys] Failed to cache sub requests:",f)}),u}};H(wa,"instance");let oh=wa;const le=oh.getInstance();var ov=(n=>(n.RECENT="recent",n.FREQUENT="frequent",n))(ov||{}),ga=(n=>(n.NEUTRAL="neutral",n.LIGHT="1f3fb",n.MEDIUM_LIGHT="1f3fc",n.MEDIUM="1f3fd",n.MEDIUM_DARK="1f3fe",n.DARK="1f3ff",n))(ga||{}),yt=(n=>(n.SUGGESTED="suggested",n.CUSTOM="custom",n.SMILEYS_PEOPLE="smileys_people",n.ANIMALS_NATURE="animals_nature",n.FOOD_DRINK="food_drink",n.TRAVEL_PLACES="travel_places",n.ACTIVITIES="activities",n.OBJECTS="objects",n.SYMBOLS="symbols",n.FLAGS="flags",n))(yt||{});yt.SUGGESTED,yt.CUSTOM,yt.SMILEYS_PEOPLE,yt.ANIMALS_NATURE,yt.FOOD_DRINK,yt.TRAVEL_PLACES,yt.ACTIVITIES,yt.OBJECTS,yt.SYMBOLS,yt.FLAGS;yt.SUGGESTED;yt.SUGGESTED+"",yt.SUGGESTED,yt.CUSTOM+"",yt.CUSTOM,yt.SMILEYS_PEOPLE+"",yt.SMILEYS_PEOPLE,yt.ANIMALS_NATURE+"",yt.ANIMALS_NATURE,yt.FOOD_DRINK+"",yt.FOOD_DRINK,yt.TRAVEL_PLACES+"",yt.TRAVEL_PLACES,yt.ACTIVITIES+"",yt.ACTIVITIES,yt.OBJECTS+"",yt.OBJECTS,yt.SYMBOLS+"",yt.SYMBOLS,yt.FLAGS+"",yt.FLAGS;const x6={custom:[],smileys_people:[{n:["grinning","grinning face"],u:"1f600",a:"1.0"},{n:["smiley","smiling face with open mouth"],u:"1f603",a:"0.6"},{n:["smile","smiling face with open mouth and smiling eyes"],u:"1f604",a:"0.6"},{n:["grin","grinning face with smiling eyes"],u:"1f601",a:"0.6"},{n:["laughing","satisfied","smiling face with open mouth and tightly-closed eyes"],u:"1f606",a:"0.6"},{n:["sweat smile","smiling face with open mouth and cold sweat"],u:"1f605",a:"0.6"},{n:["rolling on the floor laughing"],u:"1f923",a:"3.0"},{n:["joy","face with tears of joy"],u:"1f602",a:"0.6"},{n:["slightly smiling face"],u:"1f642",a:"1.0"},{n:["upside-down face","upside down face"],u:"1f643",a:"1.0"},{n:["melting face"],u:"1fae0",a:"14.0"},{n:["wink","winking face"],u:"1f609",a:"0.6"},{n:["blush","smiling face with smiling eyes"],u:"1f60a",a:"0.6"},{n:["innocent","smiling face with halo"],u:"1f607",a:"1.0"},{n:["smiling face with 3 hearts","smiling face with smiling eyes and three hearts"],u:"1f970",a:"11.0"},{n:["heart eyes","smiling face with heart-shaped eyes"],u:"1f60d",a:"0.6"},{n:["star-struck","grinning face with star eyes"],u:"1f929",a:"5.0"},{n:["kissing heart","face throwing a kiss"],u:"1f618",a:"0.6"},{n:["kissing","kissing face"],u:"1f617",a:"1.0"},{n:["relaxed","white smiling face"],u:"263a-fe0f",a:"0.6"},{n:["kissing closed eyes","kissing face with closed eyes"],u:"1f61a",a:"0.6"},{n:["kissing smiling eyes","kissing face with smiling eyes"],u:"1f619",a:"1.0"},{n:["smiling face with tear"],u:"1f972",a:"13.0"},{n:["yum","face savouring delicious food"],u:"1f60b",a:"0.6"},{n:["stuck out tongue","face with stuck-out tongue"],u:"1f61b",a:"1.0"},{n:["stuck out tongue winking eye","face with stuck-out tongue and winking eye"],u:"1f61c",a:"0.6"},{n:["zany face","grinning face with one large and one small eye"],u:"1f92a",a:"5.0"},{n:["stuck out tongue closed eyes","face with stuck-out tongue and tightly-closed eyes"],u:"1f61d",a:"0.6"},{n:["money-mouth face","money mouth face"],u:"1f911",a:"1.0"},{n:["hugging face"],u:"1f917",a:"1.0"},{n:["face with hand over mouth","smiling face with smiling eyes and hand covering mouth"],u:"1f92d",a:"5.0"},{n:["face with open eyes and hand over mouth"],u:"1fae2",a:"14.0"},{n:["face with peeking eye"],u:"1fae3",a:"14.0"},{n:["shushing face","face with finger covering closed lips"],u:"1f92b",a:"5.0"},{n:["thinking face"],u:"1f914",a:"1.0"},{n:["saluting face"],u:"1fae1",a:"14.0"},{n:["zipper-mouth face","zipper mouth face"],u:"1f910",a:"1.0"},{n:["face with raised eyebrow","face with one eyebrow raised"],u:"1f928",a:"5.0"},{n:["neutral face"],u:"1f610",a:"0.7"},{n:["expressionless","expressionless face"],u:"1f611",a:"1.0"},{n:["no mouth","face without mouth"],u:"1f636",a:"1.0"},{n:["dotted line face"],u:"1fae5",a:"14.0"},{n:["face in clouds"],u:"1f636-200d-1f32b-fe0f",a:"13.1"},{n:["smirk","smirking face"],u:"1f60f",a:"0.6"},{n:["unamused","unamused face"],u:"1f612",a:"0.6"},{n:["face with rolling eyes"],u:"1f644",a:"1.0"},{n:["grimacing","grimacing face"],u:"1f62c",a:"1.0"},{n:["face exhaling"],u:"1f62e-200d-1f4a8",a:"13.1"},{n:["lying face"],u:"1f925",a:"3.0"},{n:["relieved","relieved face"],u:"1f60c",a:"0.6"},{n:["pensive","pensive face"],u:"1f614",a:"0.6"},{n:["sleepy","sleepy face"],u:"1f62a",a:"0.6"},{n:["drooling face"],u:"1f924",a:"3.0"},{n:["sleeping","sleeping face"],u:"1f634",a:"1.0"},{n:["mask","face with medical mask"],u:"1f637",a:"0.6"},{n:["face with thermometer"],u:"1f912",a:"1.0"},{n:["face with head-bandage","face with head bandage"],u:"1f915",a:"1.0"},{n:["nauseated face"],u:"1f922",a:"3.0"},{n:["face vomiting","face with open mouth vomiting"],u:"1f92e",a:"5.0"},{n:["sneezing face"],u:"1f927",a:"3.0"},{n:["hot face","overheated face"],u:"1f975",a:"11.0"},{n:["cold face","freezing face"],u:"1f976",a:"11.0"},{n:["woozy face","face with uneven eyes and wavy mouth"],u:"1f974",a:"11.0"},{n:["dizzy face"],u:"1f635",a:"0.6"},{n:["face with spiral eyes"],u:"1f635-200d-1f4ab",a:"13.1"},{n:["exploding head","shocked face with exploding head"],u:"1f92f",a:"5.0"},{n:["face with cowboy hat"],u:"1f920",a:"3.0"},{n:["partying face","face with party horn and party hat"],u:"1f973",a:"11.0"},{n:["disguised face"],u:"1f978",a:"13.0"},{n:["sunglasses","smiling face with sunglasses"],u:"1f60e",a:"1.0"},{n:["nerd face"],u:"1f913",a:"1.0"},{n:["face with monocle"],u:"1f9d0",a:"5.0"},{n:["confused","confused face"],u:"1f615",a:"1.0"},{n:["face with diagonal mouth"],u:"1fae4",a:"14.0"},{n:["worried","worried face"],u:"1f61f",a:"1.0"},{n:["slightly frowning face"],u:"1f641",a:"1.0"},{n:["frowning face","white frowning face"],u:"2639-fe0f",a:"0.7"},{n:["open mouth","face with open mouth"],u:"1f62e",a:"1.0"},{n:["hushed","hushed face"],u:"1f62f",a:"1.0"},{n:["astonished","astonished face"],u:"1f632",a:"0.6"},{n:["flushed","flushed face"],u:"1f633",a:"0.6"},{n:["pleading face","face with pleading eyes"],u:"1f97a",a:"11.0"},{n:["face holding back tears"],u:"1f979",a:"14.0"},{n:["frowning","frowning face with open mouth"],u:"1f626",a:"1.0"},{n:["anguished","anguished face"],u:"1f627",a:"1.0"},{n:["fearful","fearful face"],u:"1f628",a:"0.6"},{n:["cold sweat","face with open mouth and cold sweat"],u:"1f630",a:"0.6"},{n:["disappointed relieved","disappointed but relieved face"],u:"1f625",a:"0.6"},{n:["cry","crying face"],u:"1f622",a:"0.6"},{n:["sob","loudly crying face"],u:"1f62d",a:"0.6"},{n:["scream","face screaming in fear"],u:"1f631",a:"0.6"},{n:["confounded","confounded face"],u:"1f616",a:"0.6"},{n:["persevere","persevering face"],u:"1f623",a:"0.6"},{n:["disappointed","disappointed face"],u:"1f61e",a:"0.6"},{n:["sweat","face with cold sweat"],u:"1f613",a:"0.6"},{n:["weary","weary face"],u:"1f629",a:"0.6"},{n:["tired face"],u:"1f62b",a:"0.6"},{n:["yawning face"],u:"1f971",a:"12.0"},{n:["triumph","face with look of triumph"],u:"1f624",a:"0.6"},{n:["rage","pouting face"],u:"1f621",a:"0.6"},{n:["angry","angry face"],u:"1f620",a:"0.6"},{n:["face with symbols on mouth","serious face with symbols covering mouth"],u:"1f92c",a:"5.0"},{n:["smiling imp","smiling face with horns"],u:"1f608",a:"1.0"},{n:["imp"],u:"1f47f",a:"0.6"},{n:["skull"],u:"1f480",a:"0.6"},{n:["skull and crossbones"],u:"2620-fe0f",a:"1.0"},{n:["poop","shit","hankey","pile of poo"],u:"1f4a9",a:"0.6"},{n:["clown face"],u:"1f921",a:"3.0"},{n:["japanese ogre"],u:"1f479",a:"0.6"},{n:["japanese goblin"],u:"1f47a",a:"0.6"},{n:["ghost"],u:"1f47b",a:"0.6"},{n:["alien","extraterrestrial alien"],u:"1f47d",a:"0.6"},{n:["alien monster","space invader"],u:"1f47e",a:"0.6"},{n:["robot face"],u:"1f916",a:"1.0"},{n:["smiley cat","smiling cat face with open mouth"],u:"1f63a",a:"0.6"},{n:["smile cat","grinning cat face with smiling eyes"],u:"1f638",a:"0.6"},{n:["joy cat","cat face with tears of joy"],u:"1f639",a:"0.6"},{n:["heart eyes cat","smiling cat face with heart-shaped eyes"],u:"1f63b",a:"0.6"},{n:["smirk cat","cat face with wry smile"],u:"1f63c",a:"0.6"},{n:["kissing cat","kissing cat face with closed eyes"],u:"1f63d",a:"0.6"},{n:["scream cat","weary cat face"],u:"1f640",a:"0.6"},{n:["crying cat face"],u:"1f63f",a:"0.6"},{n:["pouting cat","pouting cat face"],u:"1f63e",a:"0.6"},{n:["see no evil","see-no-evil monkey"],u:"1f648",a:"0.6"},{n:["hear no evil","hear-no-evil monkey"],u:"1f649",a:"0.6"},{n:["speak no evil","speak-no-evil monkey"],u:"1f64a",a:"0.6"},{n:["kiss","kiss mark"],u:"1f48b",a:"0.6"},{n:["love letter"],u:"1f48c",a:"0.6"},{n:["cupid","heart with arrow"],u:"1f498",a:"0.6"},{n:["gift heart","heart with ribbon"],u:"1f49d",a:"0.6"},{n:["sparkling heart"],u:"1f496",a:"0.6"},{n:["heartpulse","growing heart"],u:"1f497",a:"0.6"},{n:["heartbeat","beating heart"],u:"1f493",a:"0.6"},{n:["revolving hearts"],u:"1f49e",a:"0.6"},{n:["two hearts"],u:"1f495",a:"0.6"},{n:["heart decoration"],u:"1f49f",a:"0.6"},{n:["heart exclamation","heavy heart exclamation mark ornament"],u:"2763-fe0f",a:"1.0"},{n:["broken heart"],u:"1f494",a:"0.6"},{n:["heart on fire"],u:"2764-fe0f-200d-1f525",a:"13.1"},{n:["mending heart"],u:"2764-fe0f-200d-1fa79",a:"13.1"},{n:["heart","heavy black heart"],u:"2764-fe0f",a:"0.6"},{n:["orange heart"],u:"1f9e1",a:"5.0"},{n:["yellow heart"],u:"1f49b",a:"0.6"},{n:["green heart"],u:"1f49a",a:"0.6"},{n:["blue heart"],u:"1f499",a:"0.6"},{n:["purple heart"],u:"1f49c",a:"0.6"},{n:["brown heart"],u:"1f90e",a:"12.0"},{n:["black heart"],u:"1f5a4",a:"3.0"},{n:["white heart"],u:"1f90d",a:"12.0"},{n:["100","hundred points symbol"],u:"1f4af",a:"0.6"},{n:["anger","anger symbol"],u:"1f4a2",a:"0.6"},{n:["boom","collision","collision symbol"],u:"1f4a5",a:"0.6"},{n:["dizzy","dizzy symbol"],u:"1f4ab",a:"0.6"},{n:["sweat drops","splashing sweat symbol"],u:"1f4a6",a:"0.6"},{n:["dash","dash symbol"],u:"1f4a8",a:"0.6"},{n:["hole"],u:"1f573-fe0f",a:"0.7"},{n:["bomb"],u:"1f4a3",a:"0.6"},{n:["speech balloon"],u:"1f4ac",a:"0.6"},{n:["eye in speech bubble","eye-in-speech-bubble"],u:"1f441-fe0f-200d-1f5e8-fe0f",a:"2.0"},{n:["left speech bubble"],u:"1f5e8-fe0f",a:"2.0"},{n:["right anger bubble"],u:"1f5ef-fe0f",a:"0.7"},{n:["thought balloon"],u:"1f4ad",a:"1.0"},{n:["zzz","sleeping symbol"],u:"1f4a4",a:"0.6"},{n:["wave","waving hand sign"],u:"1f44b",v:["1f44b-1f3fb","1f44b-1f3fc","1f44b-1f3fd","1f44b-1f3fe","1f44b-1f3ff"],a:"0.6"},{n:["raised back of hand"],u:"1f91a",v:["1f91a-1f3fb","1f91a-1f3fc","1f91a-1f3fd","1f91a-1f3fe","1f91a-1f3ff"],a:"3.0"},{n:["hand with fingers splayed","raised hand with fingers splayed"],u:"1f590-fe0f",v:["1f590-1f3fb","1f590-1f3fc","1f590-1f3fd","1f590-1f3fe","1f590-1f3ff"],a:"0.7"},{n:["hand","raised hand"],u:"270b",v:["270b-1f3fb","270b-1f3fc","270b-1f3fd","270b-1f3fe","270b-1f3ff"],a:"0.6"},{n:["spock-hand","raised hand with part between middle and ring fingers"],u:"1f596",v:["1f596-1f3fb","1f596-1f3fc","1f596-1f3fd","1f596-1f3fe","1f596-1f3ff"],a:"1.0"},{n:["rightwards hand"],u:"1faf1",v:["1faf1-1f3fb","1faf1-1f3fc","1faf1-1f3fd","1faf1-1f3fe","1faf1-1f3ff"],a:"14.0"},{n:["leftwards hand"],u:"1faf2",v:["1faf2-1f3fb","1faf2-1f3fc","1faf2-1f3fd","1faf2-1f3fe","1faf2-1f3ff"],a:"14.0"},{n:["palm down hand"],u:"1faf3",v:["1faf3-1f3fb","1faf3-1f3fc","1faf3-1f3fd","1faf3-1f3fe","1faf3-1f3ff"],a:"14.0"},{n:["palm up hand"],u:"1faf4",v:["1faf4-1f3fb","1faf4-1f3fc","1faf4-1f3fd","1faf4-1f3fe","1faf4-1f3ff"],a:"14.0"},{n:["ok hand","ok hand sign"],u:"1f44c",v:["1f44c-1f3fb","1f44c-1f3fc","1f44c-1f3fd","1f44c-1f3fe","1f44c-1f3ff"],a:"0.6"},{n:["pinched fingers"],u:"1f90c",v:["1f90c-1f3fb","1f90c-1f3fc","1f90c-1f3fd","1f90c-1f3fe","1f90c-1f3ff"],a:"13.0"},{n:["pinching hand"],u:"1f90f",v:["1f90f-1f3fb","1f90f-1f3fc","1f90f-1f3fd","1f90f-1f3fe","1f90f-1f3ff"],a:"12.0"},{n:["v","victory hand"],u:"270c-fe0f",v:["270c-1f3fb","270c-1f3fc","270c-1f3fd","270c-1f3fe","270c-1f3ff"],a:"0.6"},{n:["crossed fingers","hand with index and middle fingers crossed"],u:"1f91e",v:["1f91e-1f3fb","1f91e-1f3fc","1f91e-1f3fd","1f91e-1f3fe","1f91e-1f3ff"],a:"3.0"},{n:["hand with index finger and thumb crossed"],u:"1faf0",v:["1faf0-1f3fb","1faf0-1f3fc","1faf0-1f3fd","1faf0-1f3fe","1faf0-1f3ff"],a:"14.0"},{n:["i love you hand sign"],u:"1f91f",v:["1f91f-1f3fb","1f91f-1f3fc","1f91f-1f3fd","1f91f-1f3fe","1f91f-1f3ff"],a:"5.0"},{n:["the horns","sign of the horns"],u:"1f918",v:["1f918-1f3fb","1f918-1f3fc","1f918-1f3fd","1f918-1f3fe","1f918-1f3ff"],a:"1.0"},{n:["call me hand"],u:"1f919",v:["1f919-1f3fb","1f919-1f3fc","1f919-1f3fd","1f919-1f3fe","1f919-1f3ff"],a:"3.0"},{n:["point left","white left pointing backhand index"],u:"1f448",v:["1f448-1f3fb","1f448-1f3fc","1f448-1f3fd","1f448-1f3fe","1f448-1f3ff"],a:"0.6"},{n:["point right","white right pointing backhand index"],u:"1f449",v:["1f449-1f3fb","1f449-1f3fc","1f449-1f3fd","1f449-1f3fe","1f449-1f3ff"],a:"0.6"},{n:["point up 2","white up pointing backhand index"],u:"1f446",v:["1f446-1f3fb","1f446-1f3fc","1f446-1f3fd","1f446-1f3fe","1f446-1f3ff"],a:"0.6"},{n:["middle finger","reversed hand with middle finger extended"],u:"1f595",v:["1f595-1f3fb","1f595-1f3fc","1f595-1f3fd","1f595-1f3fe","1f595-1f3ff"],a:"1.0"},{n:["point down","white down pointing backhand index"],u:"1f447",v:["1f447-1f3fb","1f447-1f3fc","1f447-1f3fd","1f447-1f3fe","1f447-1f3ff"],a:"0.6"},{n:["point up","white up pointing index"],u:"261d-fe0f",v:["261d-1f3fb","261d-1f3fc","261d-1f3fd","261d-1f3fe","261d-1f3ff"],a:"0.6"},{n:["index pointing at the viewer"],u:"1faf5",v:["1faf5-1f3fb","1faf5-1f3fc","1faf5-1f3fd","1faf5-1f3fe","1faf5-1f3ff"],a:"14.0"},{n:["+1","thumbsup","thumbs up sign"],u:"1f44d",v:["1f44d-1f3fb","1f44d-1f3fc","1f44d-1f3fd","1f44d-1f3fe","1f44d-1f3ff"],a:"0.6"},{n:["-1","thumbsdown","thumbs down sign"],u:"1f44e",v:["1f44e-1f3fb","1f44e-1f3fc","1f44e-1f3fd","1f44e-1f3fe","1f44e-1f3ff"],a:"0.6"},{n:["fist","raised fist"],u:"270a",v:["270a-1f3fb","270a-1f3fc","270a-1f3fd","270a-1f3fe","270a-1f3ff"],a:"0.6"},{n:["punch","facepunch","fisted hand sign"],u:"1f44a",v:["1f44a-1f3fb","1f44a-1f3fc","1f44a-1f3fd","1f44a-1f3fe","1f44a-1f3ff"],a:"0.6"},{n:["left-facing fist"],u:"1f91b",v:["1f91b-1f3fb","1f91b-1f3fc","1f91b-1f3fd","1f91b-1f3fe","1f91b-1f3ff"],a:"3.0"},{n:["right-facing fist"],u:"1f91c",v:["1f91c-1f3fb","1f91c-1f3fc","1f91c-1f3fd","1f91c-1f3fe","1f91c-1f3ff"],a:"3.0"},{n:["clap","clapping hands sign"],u:"1f44f",v:["1f44f-1f3fb","1f44f-1f3fc","1f44f-1f3fd","1f44f-1f3fe","1f44f-1f3ff"],a:"0.6"},{n:["raised hands","person raising both hands in celebration"],u:"1f64c",v:["1f64c-1f3fb","1f64c-1f3fc","1f64c-1f3fd","1f64c-1f3fe","1f64c-1f3ff"],a:"0.6"},{n:["heart hands"],u:"1faf6",v:["1faf6-1f3fb","1faf6-1f3fc","1faf6-1f3fd","1faf6-1f3fe","1faf6-1f3ff"],a:"14.0"},{n:["open hands","open hands sign"],u:"1f450",v:["1f450-1f3fb","1f450-1f3fc","1f450-1f3fd","1f450-1f3fe","1f450-1f3ff"],a:"0.6"},{n:["palms up together"],u:"1f932",v:["1f932-1f3fb","1f932-1f3fc","1f932-1f3fd","1f932-1f3fe","1f932-1f3ff"],a:"5.0"},{n:["handshake"],u:"1f91d",v:["1f91d-1f3fb","1f91d-1f3fc","1f91d-1f3fd","1f91d-1f3fe","1f91d-1f3ff","1faf1-1f3fb-200d-1faf2-1f3fc","1faf1-1f3fb-200d-1faf2-1f3fd","1faf1-1f3fb-200d-1faf2-1f3fe","1faf1-1f3fb-200d-1faf2-1f3ff","1faf1-1f3fc-200d-1faf2-1f3fb","1faf1-1f3fc-200d-1faf2-1f3fd","1faf1-1f3fc-200d-1faf2-1f3fe","1faf1-1f3fc-200d-1faf2-1f3ff","1faf1-1f3fd-200d-1faf2-1f3fb","1faf1-1f3fd-200d-1faf2-1f3fc","1faf1-1f3fd-200d-1faf2-1f3fe","1faf1-1f3fd-200d-1faf2-1f3ff","1faf1-1f3fe-200d-1faf2-1f3fb","1faf1-1f3fe-200d-1faf2-1f3fc","1faf1-1f3fe-200d-1faf2-1f3fd","1faf1-1f3fe-200d-1faf2-1f3ff","1faf1-1f3ff-200d-1faf2-1f3fb","1faf1-1f3ff-200d-1faf2-1f3fc","1faf1-1f3ff-200d-1faf2-1f3fd","1faf1-1f3ff-200d-1faf2-1f3fe"],a:"3.0"},{n:["pray","person with folded hands"],u:"1f64f",v:["1f64f-1f3fb","1f64f-1f3fc","1f64f-1f3fd","1f64f-1f3fe","1f64f-1f3ff"],a:"0.6"},{n:["writing hand"],u:"270d-fe0f",v:["270d-1f3fb","270d-1f3fc","270d-1f3fd","270d-1f3fe","270d-1f3ff"],a:"0.7"},{n:["nail care","nail polish"],u:"1f485",v:["1f485-1f3fb","1f485-1f3fc","1f485-1f3fd","1f485-1f3fe","1f485-1f3ff"],a:"0.6"},{n:["selfie"],u:"1f933",v:["1f933-1f3fb","1f933-1f3fc","1f933-1f3fd","1f933-1f3fe","1f933-1f3ff"],a:"3.0"},{n:["muscle","flexed biceps"],u:"1f4aa",v:["1f4aa-1f3fb","1f4aa-1f3fc","1f4aa-1f3fd","1f4aa-1f3fe","1f4aa-1f3ff"],a:"0.6"},{n:["mechanical arm"],u:"1f9be",a:"12.0"},{n:["mechanical leg"],u:"1f9bf",a:"12.0"},{n:["leg"],u:"1f9b5",v:["1f9b5-1f3fb","1f9b5-1f3fc","1f9b5-1f3fd","1f9b5-1f3fe","1f9b5-1f3ff"],a:"11.0"},{n:["foot"],u:"1f9b6",v:["1f9b6-1f3fb","1f9b6-1f3fc","1f9b6-1f3fd","1f9b6-1f3fe","1f9b6-1f3ff"],a:"11.0"},{n:["ear"],u:"1f442",v:["1f442-1f3fb","1f442-1f3fc","1f442-1f3fd","1f442-1f3fe","1f442-1f3ff"],a:"0.6"},{n:["ear with hearing aid"],u:"1f9bb",v:["1f9bb-1f3fb","1f9bb-1f3fc","1f9bb-1f3fd","1f9bb-1f3fe","1f9bb-1f3ff"],a:"12.0"},{n:["nose"],u:"1f443",v:["1f443-1f3fb","1f443-1f3fc","1f443-1f3fd","1f443-1f3fe","1f443-1f3ff"],a:"0.6"},{n:["brain"],u:"1f9e0",a:"5.0"},{n:["anatomical heart"],u:"1fac0",a:"13.0"},{n:["lungs"],u:"1fac1",a:"13.0"},{n:["tooth"],u:"1f9b7",a:"11.0"},{n:["bone"],u:"1f9b4",a:"11.0"},{n:["eyes"],u:"1f440",a:"0.6"},{n:["eye"],u:"1f441-fe0f",a:"0.7"},{n:["tongue"],u:"1f445",a:"0.6"},{n:["lips","mouth"],u:"1f444",a:"0.6"},{n:["biting lip"],u:"1fae6",a:"14.0"},{n:["baby"],u:"1f476",v:["1f476-1f3fb","1f476-1f3fc","1f476-1f3fd","1f476-1f3fe","1f476-1f3ff"],a:"0.6"},{n:["child"],u:"1f9d2",v:["1f9d2-1f3fb","1f9d2-1f3fc","1f9d2-1f3fd","1f9d2-1f3fe","1f9d2-1f3ff"],a:"5.0"},{n:["boy"],u:"1f466",v:["1f466-1f3fb","1f466-1f3fc","1f466-1f3fd","1f466-1f3fe","1f466-1f3ff"],a:"0.6"},{n:["girl"],u:"1f467",v:["1f467-1f3fb","1f467-1f3fc","1f467-1f3fd","1f467-1f3fe","1f467-1f3ff"],a:"0.6"},{n:["adult"],u:"1f9d1",v:["1f9d1-1f3fb","1f9d1-1f3fc","1f9d1-1f3fd","1f9d1-1f3fe","1f9d1-1f3ff"],a:"5.0"},{n:["person with blond hair"],u:"1f471",v:["1f471-1f3fb","1f471-1f3fc","1f471-1f3fd","1f471-1f3fe","1f471-1f3ff"],a:"0.6"},{n:["man"],u:"1f468",v:["1f468-1f3fb","1f468-1f3fc","1f468-1f3fd","1f468-1f3fe","1f468-1f3ff"],a:"0.6"},{n:["bearded person"],u:"1f9d4",v:["1f9d4-1f3fb","1f9d4-1f3fc","1f9d4-1f3fd","1f9d4-1f3fe","1f9d4-1f3ff"],a:"5.0"},{n:["man: beard","man with beard"],u:"1f9d4-200d-2642-fe0f",v:["1f9d4-1f3fb-200d-2642-fe0f","1f9d4-1f3fc-200d-2642-fe0f","1f9d4-1f3fd-200d-2642-fe0f","1f9d4-1f3fe-200d-2642-fe0f","1f9d4-1f3ff-200d-2642-fe0f"],a:"13.1"},{n:["woman: beard","woman with beard"],u:"1f9d4-200d-2640-fe0f",v:["1f9d4-1f3fb-200d-2640-fe0f","1f9d4-1f3fc-200d-2640-fe0f","1f9d4-1f3fd-200d-2640-fe0f","1f9d4-1f3fe-200d-2640-fe0f","1f9d4-1f3ff-200d-2640-fe0f"],a:"13.1"},{n:["man: red hair","red haired man"],u:"1f468-200d-1f9b0",v:["1f468-1f3fb-200d-1f9b0","1f468-1f3fc-200d-1f9b0","1f468-1f3fd-200d-1f9b0","1f468-1f3fe-200d-1f9b0","1f468-1f3ff-200d-1f9b0"],a:"11.0"},{n:["man: curly hair","curly haired man"],u:"1f468-200d-1f9b1",v:["1f468-1f3fb-200d-1f9b1","1f468-1f3fc-200d-1f9b1","1f468-1f3fd-200d-1f9b1","1f468-1f3fe-200d-1f9b1","1f468-1f3ff-200d-1f9b1"],a:"11.0"},{n:["man: white hair","white haired man"],u:"1f468-200d-1f9b3",v:["1f468-1f3fb-200d-1f9b3","1f468-1f3fc-200d-1f9b3","1f468-1f3fd-200d-1f9b3","1f468-1f3fe-200d-1f9b3","1f468-1f3ff-200d-1f9b3"],a:"11.0"},{n:["bald man","man: bald"],u:"1f468-200d-1f9b2",v:["1f468-1f3fb-200d-1f9b2","1f468-1f3fc-200d-1f9b2","1f468-1f3fd-200d-1f9b2","1f468-1f3fe-200d-1f9b2","1f468-1f3ff-200d-1f9b2"],a:"11.0"},{n:["woman"],u:"1f469",v:["1f469-1f3fb","1f469-1f3fc","1f469-1f3fd","1f469-1f3fe","1f469-1f3ff"],a:"0.6"},{n:["woman: red hair","red haired woman"],u:"1f469-200d-1f9b0",v:["1f469-1f3fb-200d-1f9b0","1f469-1f3fc-200d-1f9b0","1f469-1f3fd-200d-1f9b0","1f469-1f3fe-200d-1f9b0","1f469-1f3ff-200d-1f9b0"],a:"11.0"},{n:["person: red hair","red haired person"],u:"1f9d1-200d-1f9b0",v:["1f9d1-1f3fb-200d-1f9b0","1f9d1-1f3fc-200d-1f9b0","1f9d1-1f3fd-200d-1f9b0","1f9d1-1f3fe-200d-1f9b0","1f9d1-1f3ff-200d-1f9b0"],a:"12.1"},{n:["woman: curly hair","curly haired woman"],u:"1f469-200d-1f9b1",v:["1f469-1f3fb-200d-1f9b1","1f469-1f3fc-200d-1f9b1","1f469-1f3fd-200d-1f9b1","1f469-1f3fe-200d-1f9b1","1f469-1f3ff-200d-1f9b1"],a:"11.0"},{n:["person: curly hair","curly haired person"],u:"1f9d1-200d-1f9b1",v:["1f9d1-1f3fb-200d-1f9b1","1f9d1-1f3fc-200d-1f9b1","1f9d1-1f3fd-200d-1f9b1","1f9d1-1f3fe-200d-1f9b1","1f9d1-1f3ff-200d-1f9b1"],a:"12.1"},{n:["woman: white hair","white haired woman"],u:"1f469-200d-1f9b3",v:["1f469-1f3fb-200d-1f9b3","1f469-1f3fc-200d-1f9b3","1f469-1f3fd-200d-1f9b3","1f469-1f3fe-200d-1f9b3","1f469-1f3ff-200d-1f9b3"],a:"11.0"},{n:["person: white hair","white haired person"],u:"1f9d1-200d-1f9b3",v:["1f9d1-1f3fb-200d-1f9b3","1f9d1-1f3fc-200d-1f9b3","1f9d1-1f3fd-200d-1f9b3","1f9d1-1f3fe-200d-1f9b3","1f9d1-1f3ff-200d-1f9b3"],a:"12.1"},{n:["bald woman","woman: bald"],u:"1f469-200d-1f9b2",v:["1f469-1f3fb-200d-1f9b2","1f469-1f3fc-200d-1f9b2","1f469-1f3fd-200d-1f9b2","1f469-1f3fe-200d-1f9b2","1f469-1f3ff-200d-1f9b2"],a:"11.0"},{n:["bald person","person: bald"],u:"1f9d1-200d-1f9b2",v:["1f9d1-1f3fb-200d-1f9b2","1f9d1-1f3fc-200d-1f9b2","1f9d1-1f3fd-200d-1f9b2","1f9d1-1f3fe-200d-1f9b2","1f9d1-1f3ff-200d-1f9b2"],a:"12.1"},{n:["woman: blond hair","blond-haired-woman"],u:"1f471-200d-2640-fe0f",v:["1f471-1f3fb-200d-2640-fe0f","1f471-1f3fc-200d-2640-fe0f","1f471-1f3fd-200d-2640-fe0f","1f471-1f3fe-200d-2640-fe0f","1f471-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["man: blond hair","blond-haired-man"],u:"1f471-200d-2642-fe0f",v:["1f471-1f3fb-200d-2642-fe0f","1f471-1f3fc-200d-2642-fe0f","1f471-1f3fd-200d-2642-fe0f","1f471-1f3fe-200d-2642-fe0f","1f471-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["older adult"],u:"1f9d3",v:["1f9d3-1f3fb","1f9d3-1f3fc","1f9d3-1f3fd","1f9d3-1f3fe","1f9d3-1f3ff"],a:"5.0"},{n:["older man"],u:"1f474",v:["1f474-1f3fb","1f474-1f3fc","1f474-1f3fd","1f474-1f3fe","1f474-1f3ff"],a:"0.6"},{n:["older woman"],u:"1f475",v:["1f475-1f3fb","1f475-1f3fc","1f475-1f3fd","1f475-1f3fe","1f475-1f3ff"],a:"0.6"},{n:["person frowning"],u:"1f64d",v:["1f64d-1f3fb","1f64d-1f3fc","1f64d-1f3fd","1f64d-1f3fe","1f64d-1f3ff"],a:"0.6"},{n:["man frowning","man-frowning"],u:"1f64d-200d-2642-fe0f",v:["1f64d-1f3fb-200d-2642-fe0f","1f64d-1f3fc-200d-2642-fe0f","1f64d-1f3fd-200d-2642-fe0f","1f64d-1f3fe-200d-2642-fe0f","1f64d-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman frowning","woman-frowning"],u:"1f64d-200d-2640-fe0f",v:["1f64d-1f3fb-200d-2640-fe0f","1f64d-1f3fc-200d-2640-fe0f","1f64d-1f3fd-200d-2640-fe0f","1f64d-1f3fe-200d-2640-fe0f","1f64d-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["person with pouting face"],u:"1f64e",v:["1f64e-1f3fb","1f64e-1f3fc","1f64e-1f3fd","1f64e-1f3fe","1f64e-1f3ff"],a:"0.6"},{n:["man pouting","man-pouting"],u:"1f64e-200d-2642-fe0f",v:["1f64e-1f3fb-200d-2642-fe0f","1f64e-1f3fc-200d-2642-fe0f","1f64e-1f3fd-200d-2642-fe0f","1f64e-1f3fe-200d-2642-fe0f","1f64e-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman pouting","woman-pouting"],u:"1f64e-200d-2640-fe0f",v:["1f64e-1f3fb-200d-2640-fe0f","1f64e-1f3fc-200d-2640-fe0f","1f64e-1f3fd-200d-2640-fe0f","1f64e-1f3fe-200d-2640-fe0f","1f64e-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["no good","face with no good gesture"],u:"1f645",v:["1f645-1f3fb","1f645-1f3fc","1f645-1f3fd","1f645-1f3fe","1f645-1f3ff"],a:"0.6"},{n:["man gesturing no","man-gesturing-no"],u:"1f645-200d-2642-fe0f",v:["1f645-1f3fb-200d-2642-fe0f","1f645-1f3fc-200d-2642-fe0f","1f645-1f3fd-200d-2642-fe0f","1f645-1f3fe-200d-2642-fe0f","1f645-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman gesturing no","woman-gesturing-no"],u:"1f645-200d-2640-fe0f",v:["1f645-1f3fb-200d-2640-fe0f","1f645-1f3fc-200d-2640-fe0f","1f645-1f3fd-200d-2640-fe0f","1f645-1f3fe-200d-2640-fe0f","1f645-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["ok woman","face with ok gesture"],u:"1f646",v:["1f646-1f3fb","1f646-1f3fc","1f646-1f3fd","1f646-1f3fe","1f646-1f3ff"],a:"0.6"},{n:["man gesturing ok","man-gesturing-ok"],u:"1f646-200d-2642-fe0f",v:["1f646-1f3fb-200d-2642-fe0f","1f646-1f3fc-200d-2642-fe0f","1f646-1f3fd-200d-2642-fe0f","1f646-1f3fe-200d-2642-fe0f","1f646-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman gesturing ok","woman-gesturing-ok"],u:"1f646-200d-2640-fe0f",v:["1f646-1f3fb-200d-2640-fe0f","1f646-1f3fc-200d-2640-fe0f","1f646-1f3fd-200d-2640-fe0f","1f646-1f3fe-200d-2640-fe0f","1f646-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["information desk person"],u:"1f481",v:["1f481-1f3fb","1f481-1f3fc","1f481-1f3fd","1f481-1f3fe","1f481-1f3ff"],a:"0.6"},{n:["man tipping hand","man-tipping-hand"],u:"1f481-200d-2642-fe0f",v:["1f481-1f3fb-200d-2642-fe0f","1f481-1f3fc-200d-2642-fe0f","1f481-1f3fd-200d-2642-fe0f","1f481-1f3fe-200d-2642-fe0f","1f481-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman tipping hand","woman-tipping-hand"],u:"1f481-200d-2640-fe0f",v:["1f481-1f3fb-200d-2640-fe0f","1f481-1f3fc-200d-2640-fe0f","1f481-1f3fd-200d-2640-fe0f","1f481-1f3fe-200d-2640-fe0f","1f481-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["raising hand","happy person raising one hand"],u:"1f64b",v:["1f64b-1f3fb","1f64b-1f3fc","1f64b-1f3fd","1f64b-1f3fe","1f64b-1f3ff"],a:"0.6"},{n:["man raising hand","man-raising-hand"],u:"1f64b-200d-2642-fe0f",v:["1f64b-1f3fb-200d-2642-fe0f","1f64b-1f3fc-200d-2642-fe0f","1f64b-1f3fd-200d-2642-fe0f","1f64b-1f3fe-200d-2642-fe0f","1f64b-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman raising hand","woman-raising-hand"],u:"1f64b-200d-2640-fe0f",v:["1f64b-1f3fb-200d-2640-fe0f","1f64b-1f3fc-200d-2640-fe0f","1f64b-1f3fd-200d-2640-fe0f","1f64b-1f3fe-200d-2640-fe0f","1f64b-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["deaf person"],u:"1f9cf",v:["1f9cf-1f3fb","1f9cf-1f3fc","1f9cf-1f3fd","1f9cf-1f3fe","1f9cf-1f3ff"],a:"12.0"},{n:["deaf man"],u:"1f9cf-200d-2642-fe0f",v:["1f9cf-1f3fb-200d-2642-fe0f","1f9cf-1f3fc-200d-2642-fe0f","1f9cf-1f3fd-200d-2642-fe0f","1f9cf-1f3fe-200d-2642-fe0f","1f9cf-1f3ff-200d-2642-fe0f"],a:"12.0"},{n:["deaf woman"],u:"1f9cf-200d-2640-fe0f",v:["1f9cf-1f3fb-200d-2640-fe0f","1f9cf-1f3fc-200d-2640-fe0f","1f9cf-1f3fd-200d-2640-fe0f","1f9cf-1f3fe-200d-2640-fe0f","1f9cf-1f3ff-200d-2640-fe0f"],a:"12.0"},{n:["bow","person bowing deeply"],u:"1f647",v:["1f647-1f3fb","1f647-1f3fc","1f647-1f3fd","1f647-1f3fe","1f647-1f3ff"],a:"0.6"},{n:["man bowing","man-bowing"],u:"1f647-200d-2642-fe0f",v:["1f647-1f3fb-200d-2642-fe0f","1f647-1f3fc-200d-2642-fe0f","1f647-1f3fd-200d-2642-fe0f","1f647-1f3fe-200d-2642-fe0f","1f647-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman bowing","woman-bowing"],u:"1f647-200d-2640-fe0f",v:["1f647-1f3fb-200d-2640-fe0f","1f647-1f3fc-200d-2640-fe0f","1f647-1f3fd-200d-2640-fe0f","1f647-1f3fe-200d-2640-fe0f","1f647-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["face palm"],u:"1f926",v:["1f926-1f3fb","1f926-1f3fc","1f926-1f3fd","1f926-1f3fe","1f926-1f3ff"],a:"3.0"},{n:["man facepalming","man-facepalming"],u:"1f926-200d-2642-fe0f",v:["1f926-1f3fb-200d-2642-fe0f","1f926-1f3fc-200d-2642-fe0f","1f926-1f3fd-200d-2642-fe0f","1f926-1f3fe-200d-2642-fe0f","1f926-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman facepalming","woman-facepalming"],u:"1f926-200d-2640-fe0f",v:["1f926-1f3fb-200d-2640-fe0f","1f926-1f3fc-200d-2640-fe0f","1f926-1f3fd-200d-2640-fe0f","1f926-1f3fe-200d-2640-fe0f","1f926-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["shrug"],u:"1f937",v:["1f937-1f3fb","1f937-1f3fc","1f937-1f3fd","1f937-1f3fe","1f937-1f3ff"],a:"3.0"},{n:["man shrugging","man-shrugging"],u:"1f937-200d-2642-fe0f",v:["1f937-1f3fb-200d-2642-fe0f","1f937-1f3fc-200d-2642-fe0f","1f937-1f3fd-200d-2642-fe0f","1f937-1f3fe-200d-2642-fe0f","1f937-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman shrugging","woman-shrugging"],u:"1f937-200d-2640-fe0f",v:["1f937-1f3fb-200d-2640-fe0f","1f937-1f3fc-200d-2640-fe0f","1f937-1f3fd-200d-2640-fe0f","1f937-1f3fe-200d-2640-fe0f","1f937-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["health worker"],u:"1f9d1-200d-2695-fe0f",v:["1f9d1-1f3fb-200d-2695-fe0f","1f9d1-1f3fc-200d-2695-fe0f","1f9d1-1f3fd-200d-2695-fe0f","1f9d1-1f3fe-200d-2695-fe0f","1f9d1-1f3ff-200d-2695-fe0f"],a:"12.1"},{n:["male-doctor","man health worker"],u:"1f468-200d-2695-fe0f",v:["1f468-1f3fb-200d-2695-fe0f","1f468-1f3fc-200d-2695-fe0f","1f468-1f3fd-200d-2695-fe0f","1f468-1f3fe-200d-2695-fe0f","1f468-1f3ff-200d-2695-fe0f"],a:"4.0"},{n:["female-doctor","woman health worker"],u:"1f469-200d-2695-fe0f",v:["1f469-1f3fb-200d-2695-fe0f","1f469-1f3fc-200d-2695-fe0f","1f469-1f3fd-200d-2695-fe0f","1f469-1f3fe-200d-2695-fe0f","1f469-1f3ff-200d-2695-fe0f"],a:"4.0"},{n:["student"],u:"1f9d1-200d-1f393",v:["1f9d1-1f3fb-200d-1f393","1f9d1-1f3fc-200d-1f393","1f9d1-1f3fd-200d-1f393","1f9d1-1f3fe-200d-1f393","1f9d1-1f3ff-200d-1f393"],a:"12.1"},{n:["man student","male-student"],u:"1f468-200d-1f393",v:["1f468-1f3fb-200d-1f393","1f468-1f3fc-200d-1f393","1f468-1f3fd-200d-1f393","1f468-1f3fe-200d-1f393","1f468-1f3ff-200d-1f393"],a:"4.0"},{n:["woman student","female-student"],u:"1f469-200d-1f393",v:["1f469-1f3fb-200d-1f393","1f469-1f3fc-200d-1f393","1f469-1f3fd-200d-1f393","1f469-1f3fe-200d-1f393","1f469-1f3ff-200d-1f393"],a:"4.0"},{n:["teacher"],u:"1f9d1-200d-1f3eb",v:["1f9d1-1f3fb-200d-1f3eb","1f9d1-1f3fc-200d-1f3eb","1f9d1-1f3fd-200d-1f3eb","1f9d1-1f3fe-200d-1f3eb","1f9d1-1f3ff-200d-1f3eb"],a:"12.1"},{n:["man teacher","male-teacher"],u:"1f468-200d-1f3eb",v:["1f468-1f3fb-200d-1f3eb","1f468-1f3fc-200d-1f3eb","1f468-1f3fd-200d-1f3eb","1f468-1f3fe-200d-1f3eb","1f468-1f3ff-200d-1f3eb"],a:"4.0"},{n:["woman teacher","female-teacher"],u:"1f469-200d-1f3eb",v:["1f469-1f3fb-200d-1f3eb","1f469-1f3fc-200d-1f3eb","1f469-1f3fd-200d-1f3eb","1f469-1f3fe-200d-1f3eb","1f469-1f3ff-200d-1f3eb"],a:"4.0"},{n:["judge"],u:"1f9d1-200d-2696-fe0f",v:["1f9d1-1f3fb-200d-2696-fe0f","1f9d1-1f3fc-200d-2696-fe0f","1f9d1-1f3fd-200d-2696-fe0f","1f9d1-1f3fe-200d-2696-fe0f","1f9d1-1f3ff-200d-2696-fe0f"],a:"12.1"},{n:["man judge","male-judge"],u:"1f468-200d-2696-fe0f",v:["1f468-1f3fb-200d-2696-fe0f","1f468-1f3fc-200d-2696-fe0f","1f468-1f3fd-200d-2696-fe0f","1f468-1f3fe-200d-2696-fe0f","1f468-1f3ff-200d-2696-fe0f"],a:"4.0"},{n:["woman judge","female-judge"],u:"1f469-200d-2696-fe0f",v:["1f469-1f3fb-200d-2696-fe0f","1f469-1f3fc-200d-2696-fe0f","1f469-1f3fd-200d-2696-fe0f","1f469-1f3fe-200d-2696-fe0f","1f469-1f3ff-200d-2696-fe0f"],a:"4.0"},{n:["farmer"],u:"1f9d1-200d-1f33e",v:["1f9d1-1f3fb-200d-1f33e","1f9d1-1f3fc-200d-1f33e","1f9d1-1f3fd-200d-1f33e","1f9d1-1f3fe-200d-1f33e","1f9d1-1f3ff-200d-1f33e"],a:"12.1"},{n:["man farmer","male-farmer"],u:"1f468-200d-1f33e",v:["1f468-1f3fb-200d-1f33e","1f468-1f3fc-200d-1f33e","1f468-1f3fd-200d-1f33e","1f468-1f3fe-200d-1f33e","1f468-1f3ff-200d-1f33e"],a:"4.0"},{n:["woman farmer","female-farmer"],u:"1f469-200d-1f33e",v:["1f469-1f3fb-200d-1f33e","1f469-1f3fc-200d-1f33e","1f469-1f3fd-200d-1f33e","1f469-1f3fe-200d-1f33e","1f469-1f3ff-200d-1f33e"],a:"4.0"},{n:["cook"],u:"1f9d1-200d-1f373",v:["1f9d1-1f3fb-200d-1f373","1f9d1-1f3fc-200d-1f373","1f9d1-1f3fd-200d-1f373","1f9d1-1f3fe-200d-1f373","1f9d1-1f3ff-200d-1f373"],a:"12.1"},{n:["man cook","male-cook"],u:"1f468-200d-1f373",v:["1f468-1f3fb-200d-1f373","1f468-1f3fc-200d-1f373","1f468-1f3fd-200d-1f373","1f468-1f3fe-200d-1f373","1f468-1f3ff-200d-1f373"],a:"4.0"},{n:["woman cook","female-cook"],u:"1f469-200d-1f373",v:["1f469-1f3fb-200d-1f373","1f469-1f3fc-200d-1f373","1f469-1f3fd-200d-1f373","1f469-1f3fe-200d-1f373","1f469-1f3ff-200d-1f373"],a:"4.0"},{n:["mechanic"],u:"1f9d1-200d-1f527",v:["1f9d1-1f3fb-200d-1f527","1f9d1-1f3fc-200d-1f527","1f9d1-1f3fd-200d-1f527","1f9d1-1f3fe-200d-1f527","1f9d1-1f3ff-200d-1f527"],a:"12.1"},{n:["man mechanic","male-mechanic"],u:"1f468-200d-1f527",v:["1f468-1f3fb-200d-1f527","1f468-1f3fc-200d-1f527","1f468-1f3fd-200d-1f527","1f468-1f3fe-200d-1f527","1f468-1f3ff-200d-1f527"],a:"4.0"},{n:["woman mechanic","female-mechanic"],u:"1f469-200d-1f527",v:["1f469-1f3fb-200d-1f527","1f469-1f3fc-200d-1f527","1f469-1f3fd-200d-1f527","1f469-1f3fe-200d-1f527","1f469-1f3ff-200d-1f527"],a:"4.0"},{n:["factory worker"],u:"1f9d1-200d-1f3ed",v:["1f9d1-1f3fb-200d-1f3ed","1f9d1-1f3fc-200d-1f3ed","1f9d1-1f3fd-200d-1f3ed","1f9d1-1f3fe-200d-1f3ed","1f9d1-1f3ff-200d-1f3ed"],a:"12.1"},{n:["man factory worker","male-factory-worker"],u:"1f468-200d-1f3ed",v:["1f468-1f3fb-200d-1f3ed","1f468-1f3fc-200d-1f3ed","1f468-1f3fd-200d-1f3ed","1f468-1f3fe-200d-1f3ed","1f468-1f3ff-200d-1f3ed"],a:"4.0"},{n:["woman factory worker","female-factory-worker"],u:"1f469-200d-1f3ed",v:["1f469-1f3fb-200d-1f3ed","1f469-1f3fc-200d-1f3ed","1f469-1f3fd-200d-1f3ed","1f469-1f3fe-200d-1f3ed","1f469-1f3ff-200d-1f3ed"],a:"4.0"},{n:["office worker"],u:"1f9d1-200d-1f4bc",v:["1f9d1-1f3fb-200d-1f4bc","1f9d1-1f3fc-200d-1f4bc","1f9d1-1f3fd-200d-1f4bc","1f9d1-1f3fe-200d-1f4bc","1f9d1-1f3ff-200d-1f4bc"],a:"12.1"},{n:["man office worker","male-office-worker"],u:"1f468-200d-1f4bc",v:["1f468-1f3fb-200d-1f4bc","1f468-1f3fc-200d-1f4bc","1f468-1f3fd-200d-1f4bc","1f468-1f3fe-200d-1f4bc","1f468-1f3ff-200d-1f4bc"],a:"4.0"},{n:["woman office worker","female-office-worker"],u:"1f469-200d-1f4bc",v:["1f469-1f3fb-200d-1f4bc","1f469-1f3fc-200d-1f4bc","1f469-1f3fd-200d-1f4bc","1f469-1f3fe-200d-1f4bc","1f469-1f3ff-200d-1f4bc"],a:"4.0"},{n:["scientist"],u:"1f9d1-200d-1f52c",v:["1f9d1-1f3fb-200d-1f52c","1f9d1-1f3fc-200d-1f52c","1f9d1-1f3fd-200d-1f52c","1f9d1-1f3fe-200d-1f52c","1f9d1-1f3ff-200d-1f52c"],a:"12.1"},{n:["man scientist","male-scientist"],u:"1f468-200d-1f52c",v:["1f468-1f3fb-200d-1f52c","1f468-1f3fc-200d-1f52c","1f468-1f3fd-200d-1f52c","1f468-1f3fe-200d-1f52c","1f468-1f3ff-200d-1f52c"],a:"4.0"},{n:["woman scientist","female-scientist"],u:"1f469-200d-1f52c",v:["1f469-1f3fb-200d-1f52c","1f469-1f3fc-200d-1f52c","1f469-1f3fd-200d-1f52c","1f469-1f3fe-200d-1f52c","1f469-1f3ff-200d-1f52c"],a:"4.0"},{n:["technologist"],u:"1f9d1-200d-1f4bb",v:["1f9d1-1f3fb-200d-1f4bb","1f9d1-1f3fc-200d-1f4bb","1f9d1-1f3fd-200d-1f4bb","1f9d1-1f3fe-200d-1f4bb","1f9d1-1f3ff-200d-1f4bb"],a:"12.1"},{n:["man technologist","male-technologist"],u:"1f468-200d-1f4bb",v:["1f468-1f3fb-200d-1f4bb","1f468-1f3fc-200d-1f4bb","1f468-1f3fd-200d-1f4bb","1f468-1f3fe-200d-1f4bb","1f468-1f3ff-200d-1f4bb"],a:"4.0"},{n:["woman technologist","female-technologist"],u:"1f469-200d-1f4bb",v:["1f469-1f3fb-200d-1f4bb","1f469-1f3fc-200d-1f4bb","1f469-1f3fd-200d-1f4bb","1f469-1f3fe-200d-1f4bb","1f469-1f3ff-200d-1f4bb"],a:"4.0"},{n:["singer"],u:"1f9d1-200d-1f3a4",v:["1f9d1-1f3fb-200d-1f3a4","1f9d1-1f3fc-200d-1f3a4","1f9d1-1f3fd-200d-1f3a4","1f9d1-1f3fe-200d-1f3a4","1f9d1-1f3ff-200d-1f3a4"],a:"12.1"},{n:["man singer","male-singer"],u:"1f468-200d-1f3a4",v:["1f468-1f3fb-200d-1f3a4","1f468-1f3fc-200d-1f3a4","1f468-1f3fd-200d-1f3a4","1f468-1f3fe-200d-1f3a4","1f468-1f3ff-200d-1f3a4"],a:"4.0"},{n:["woman singer","female-singer"],u:"1f469-200d-1f3a4",v:["1f469-1f3fb-200d-1f3a4","1f469-1f3fc-200d-1f3a4","1f469-1f3fd-200d-1f3a4","1f469-1f3fe-200d-1f3a4","1f469-1f3ff-200d-1f3a4"],a:"4.0"},{n:["artist"],u:"1f9d1-200d-1f3a8",v:["1f9d1-1f3fb-200d-1f3a8","1f9d1-1f3fc-200d-1f3a8","1f9d1-1f3fd-200d-1f3a8","1f9d1-1f3fe-200d-1f3a8","1f9d1-1f3ff-200d-1f3a8"],a:"12.1"},{n:["man artist","male-artist"],u:"1f468-200d-1f3a8",v:["1f468-1f3fb-200d-1f3a8","1f468-1f3fc-200d-1f3a8","1f468-1f3fd-200d-1f3a8","1f468-1f3fe-200d-1f3a8","1f468-1f3ff-200d-1f3a8"],a:"4.0"},{n:["woman artist","female-artist"],u:"1f469-200d-1f3a8",v:["1f469-1f3fb-200d-1f3a8","1f469-1f3fc-200d-1f3a8","1f469-1f3fd-200d-1f3a8","1f469-1f3fe-200d-1f3a8","1f469-1f3ff-200d-1f3a8"],a:"4.0"},{n:["pilot"],u:"1f9d1-200d-2708-fe0f",v:["1f9d1-1f3fb-200d-2708-fe0f","1f9d1-1f3fc-200d-2708-fe0f","1f9d1-1f3fd-200d-2708-fe0f","1f9d1-1f3fe-200d-2708-fe0f","1f9d1-1f3ff-200d-2708-fe0f"],a:"12.1"},{n:["man pilot","male-pilot"],u:"1f468-200d-2708-fe0f",v:["1f468-1f3fb-200d-2708-fe0f","1f468-1f3fc-200d-2708-fe0f","1f468-1f3fd-200d-2708-fe0f","1f468-1f3fe-200d-2708-fe0f","1f468-1f3ff-200d-2708-fe0f"],a:"4.0"},{n:["woman pilot","female-pilot"],u:"1f469-200d-2708-fe0f",v:["1f469-1f3fb-200d-2708-fe0f","1f469-1f3fc-200d-2708-fe0f","1f469-1f3fd-200d-2708-fe0f","1f469-1f3fe-200d-2708-fe0f","1f469-1f3ff-200d-2708-fe0f"],a:"4.0"},{n:["astronaut"],u:"1f9d1-200d-1f680",v:["1f9d1-1f3fb-200d-1f680","1f9d1-1f3fc-200d-1f680","1f9d1-1f3fd-200d-1f680","1f9d1-1f3fe-200d-1f680","1f9d1-1f3ff-200d-1f680"],a:"12.1"},{n:["man astronaut","male-astronaut"],u:"1f468-200d-1f680",v:["1f468-1f3fb-200d-1f680","1f468-1f3fc-200d-1f680","1f468-1f3fd-200d-1f680","1f468-1f3fe-200d-1f680","1f468-1f3ff-200d-1f680"],a:"4.0"},{n:["woman astronaut","female-astronaut"],u:"1f469-200d-1f680",v:["1f469-1f3fb-200d-1f680","1f469-1f3fc-200d-1f680","1f469-1f3fd-200d-1f680","1f469-1f3fe-200d-1f680","1f469-1f3ff-200d-1f680"],a:"4.0"},{n:["firefighter"],u:"1f9d1-200d-1f692",v:["1f9d1-1f3fb-200d-1f692","1f9d1-1f3fc-200d-1f692","1f9d1-1f3fd-200d-1f692","1f9d1-1f3fe-200d-1f692","1f9d1-1f3ff-200d-1f692"],a:"12.1"},{n:["man firefighter","male-firefighter"],u:"1f468-200d-1f692",v:["1f468-1f3fb-200d-1f692","1f468-1f3fc-200d-1f692","1f468-1f3fd-200d-1f692","1f468-1f3fe-200d-1f692","1f468-1f3ff-200d-1f692"],a:"4.0"},{n:["woman firefighter","female-firefighter"],u:"1f469-200d-1f692",v:["1f469-1f3fb-200d-1f692","1f469-1f3fc-200d-1f692","1f469-1f3fd-200d-1f692","1f469-1f3fe-200d-1f692","1f469-1f3ff-200d-1f692"],a:"4.0"},{n:["cop","police officer"],u:"1f46e",v:["1f46e-1f3fb","1f46e-1f3fc","1f46e-1f3fd","1f46e-1f3fe","1f46e-1f3ff"],a:"0.6"},{n:["man police officer","male-police-officer"],u:"1f46e-200d-2642-fe0f",v:["1f46e-1f3fb-200d-2642-fe0f","1f46e-1f3fc-200d-2642-fe0f","1f46e-1f3fd-200d-2642-fe0f","1f46e-1f3fe-200d-2642-fe0f","1f46e-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman police officer","female-police-officer"],u:"1f46e-200d-2640-fe0f",v:["1f46e-1f3fb-200d-2640-fe0f","1f46e-1f3fc-200d-2640-fe0f","1f46e-1f3fd-200d-2640-fe0f","1f46e-1f3fe-200d-2640-fe0f","1f46e-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["detective","sleuth or spy"],u:"1f575-fe0f",v:["1f575-1f3fb","1f575-1f3fc","1f575-1f3fd","1f575-1f3fe","1f575-1f3ff"],a:"0.7"},{n:["man detective","male-detective"],u:"1f575-fe0f-200d-2642-fe0f",v:["1f575-1f3fb-200d-2642-fe0f","1f575-1f3fc-200d-2642-fe0f","1f575-1f3fd-200d-2642-fe0f","1f575-1f3fe-200d-2642-fe0f","1f575-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman detective","female-detective"],u:"1f575-fe0f-200d-2640-fe0f",v:["1f575-1f3fb-200d-2640-fe0f","1f575-1f3fc-200d-2640-fe0f","1f575-1f3fd-200d-2640-fe0f","1f575-1f3fe-200d-2640-fe0f","1f575-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["guardsman"],u:"1f482",v:["1f482-1f3fb","1f482-1f3fc","1f482-1f3fd","1f482-1f3fe","1f482-1f3ff"],a:"0.6"},{n:["man guard","male-guard"],u:"1f482-200d-2642-fe0f",v:["1f482-1f3fb-200d-2642-fe0f","1f482-1f3fc-200d-2642-fe0f","1f482-1f3fd-200d-2642-fe0f","1f482-1f3fe-200d-2642-fe0f","1f482-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman guard","female-guard"],u:"1f482-200d-2640-fe0f",v:["1f482-1f3fb-200d-2640-fe0f","1f482-1f3fc-200d-2640-fe0f","1f482-1f3fd-200d-2640-fe0f","1f482-1f3fe-200d-2640-fe0f","1f482-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["ninja"],u:"1f977",v:["1f977-1f3fb","1f977-1f3fc","1f977-1f3fd","1f977-1f3fe","1f977-1f3ff"],a:"13.0"},{n:["construction worker"],u:"1f477",v:["1f477-1f3fb","1f477-1f3fc","1f477-1f3fd","1f477-1f3fe","1f477-1f3ff"],a:"0.6"},{n:["man construction worker","male-construction-worker"],u:"1f477-200d-2642-fe0f",v:["1f477-1f3fb-200d-2642-fe0f","1f477-1f3fc-200d-2642-fe0f","1f477-1f3fd-200d-2642-fe0f","1f477-1f3fe-200d-2642-fe0f","1f477-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman construction worker","female-construction-worker"],u:"1f477-200d-2640-fe0f",v:["1f477-1f3fb-200d-2640-fe0f","1f477-1f3fc-200d-2640-fe0f","1f477-1f3fd-200d-2640-fe0f","1f477-1f3fe-200d-2640-fe0f","1f477-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["person with crown"],u:"1fac5",v:["1fac5-1f3fb","1fac5-1f3fc","1fac5-1f3fd","1fac5-1f3fe","1fac5-1f3ff"],a:"14.0"},{n:["prince"],u:"1f934",v:["1f934-1f3fb","1f934-1f3fc","1f934-1f3fd","1f934-1f3fe","1f934-1f3ff"],a:"3.0"},{n:["princess"],u:"1f478",v:["1f478-1f3fb","1f478-1f3fc","1f478-1f3fd","1f478-1f3fe","1f478-1f3ff"],a:"0.6"},{n:["man with turban"],u:"1f473",v:["1f473-1f3fb","1f473-1f3fc","1f473-1f3fd","1f473-1f3fe","1f473-1f3ff"],a:"0.6"},{n:["man wearing turban","man-wearing-turban"],u:"1f473-200d-2642-fe0f",v:["1f473-1f3fb-200d-2642-fe0f","1f473-1f3fc-200d-2642-fe0f","1f473-1f3fd-200d-2642-fe0f","1f473-1f3fe-200d-2642-fe0f","1f473-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman wearing turban","woman-wearing-turban"],u:"1f473-200d-2640-fe0f",v:["1f473-1f3fb-200d-2640-fe0f","1f473-1f3fc-200d-2640-fe0f","1f473-1f3fd-200d-2640-fe0f","1f473-1f3fe-200d-2640-fe0f","1f473-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["man with gua pi mao"],u:"1f472",v:["1f472-1f3fb","1f472-1f3fc","1f472-1f3fd","1f472-1f3fe","1f472-1f3ff"],a:"0.6"},{n:["person with headscarf"],u:"1f9d5",v:["1f9d5-1f3fb","1f9d5-1f3fc","1f9d5-1f3fd","1f9d5-1f3fe","1f9d5-1f3ff"],a:"5.0"},{n:["man in tuxedo","person in tuxedo"],u:"1f935",v:["1f935-1f3fb","1f935-1f3fc","1f935-1f3fd","1f935-1f3fe","1f935-1f3ff"],a:"3.0"},{n:["man in tuxedo"],u:"1f935-200d-2642-fe0f",v:["1f935-1f3fb-200d-2642-fe0f","1f935-1f3fc-200d-2642-fe0f","1f935-1f3fd-200d-2642-fe0f","1f935-1f3fe-200d-2642-fe0f","1f935-1f3ff-200d-2642-fe0f"],a:"13.0"},{n:["woman in tuxedo"],u:"1f935-200d-2640-fe0f",v:["1f935-1f3fb-200d-2640-fe0f","1f935-1f3fc-200d-2640-fe0f","1f935-1f3fd-200d-2640-fe0f","1f935-1f3fe-200d-2640-fe0f","1f935-1f3ff-200d-2640-fe0f"],a:"13.0"},{n:["bride with veil"],u:"1f470",v:["1f470-1f3fb","1f470-1f3fc","1f470-1f3fd","1f470-1f3fe","1f470-1f3ff"],a:"0.6"},{n:["man with veil"],u:"1f470-200d-2642-fe0f",v:["1f470-1f3fb-200d-2642-fe0f","1f470-1f3fc-200d-2642-fe0f","1f470-1f3fd-200d-2642-fe0f","1f470-1f3fe-200d-2642-fe0f","1f470-1f3ff-200d-2642-fe0f"],a:"13.0"},{n:["woman with veil"],u:"1f470-200d-2640-fe0f",v:["1f470-1f3fb-200d-2640-fe0f","1f470-1f3fc-200d-2640-fe0f","1f470-1f3fd-200d-2640-fe0f","1f470-1f3fe-200d-2640-fe0f","1f470-1f3ff-200d-2640-fe0f"],a:"13.0"},{n:["pregnant woman"],u:"1f930",v:["1f930-1f3fb","1f930-1f3fc","1f930-1f3fd","1f930-1f3fe","1f930-1f3ff"],a:"3.0"},{n:["pregnant man"],u:"1fac3",v:["1fac3-1f3fb","1fac3-1f3fc","1fac3-1f3fd","1fac3-1f3fe","1fac3-1f3ff"],a:"14.0"},{n:["pregnant person"],u:"1fac4",v:["1fac4-1f3fb","1fac4-1f3fc","1fac4-1f3fd","1fac4-1f3fe","1fac4-1f3ff"],a:"14.0"},{n:["breast-feeding"],u:"1f931",v:["1f931-1f3fb","1f931-1f3fc","1f931-1f3fd","1f931-1f3fe","1f931-1f3ff"],a:"5.0"},{n:["woman feeding baby"],u:"1f469-200d-1f37c",v:["1f469-1f3fb-200d-1f37c","1f469-1f3fc-200d-1f37c","1f469-1f3fd-200d-1f37c","1f469-1f3fe-200d-1f37c","1f469-1f3ff-200d-1f37c"],a:"13.0"},{n:["man feeding baby"],u:"1f468-200d-1f37c",v:["1f468-1f3fb-200d-1f37c","1f468-1f3fc-200d-1f37c","1f468-1f3fd-200d-1f37c","1f468-1f3fe-200d-1f37c","1f468-1f3ff-200d-1f37c"],a:"13.0"},{n:["person feeding baby"],u:"1f9d1-200d-1f37c",v:["1f9d1-1f3fb-200d-1f37c","1f9d1-1f3fc-200d-1f37c","1f9d1-1f3fd-200d-1f37c","1f9d1-1f3fe-200d-1f37c","1f9d1-1f3ff-200d-1f37c"],a:"13.0"},{n:["angel","baby angel"],u:"1f47c",v:["1f47c-1f3fb","1f47c-1f3fc","1f47c-1f3fd","1f47c-1f3fe","1f47c-1f3ff"],a:"0.6"},{n:["santa","father christmas"],u:"1f385",v:["1f385-1f3fb","1f385-1f3fc","1f385-1f3fd","1f385-1f3fe","1f385-1f3ff"],a:"0.6"},{n:["mrs claus","mother christmas"],u:"1f936",v:["1f936-1f3fb","1f936-1f3fc","1f936-1f3fd","1f936-1f3fe","1f936-1f3ff"],a:"3.0"},{n:["mx claus"],u:"1f9d1-200d-1f384",v:["1f9d1-1f3fb-200d-1f384","1f9d1-1f3fc-200d-1f384","1f9d1-1f3fd-200d-1f384","1f9d1-1f3fe-200d-1f384","1f9d1-1f3ff-200d-1f384"],a:"13.0"},{n:["superhero"],u:"1f9b8",v:["1f9b8-1f3fb","1f9b8-1f3fc","1f9b8-1f3fd","1f9b8-1f3fe","1f9b8-1f3ff"],a:"11.0"},{n:["man superhero","male superhero"],u:"1f9b8-200d-2642-fe0f",v:["1f9b8-1f3fb-200d-2642-fe0f","1f9b8-1f3fc-200d-2642-fe0f","1f9b8-1f3fd-200d-2642-fe0f","1f9b8-1f3fe-200d-2642-fe0f","1f9b8-1f3ff-200d-2642-fe0f"],a:"11.0"},{n:["woman superhero","female superhero"],u:"1f9b8-200d-2640-fe0f",v:["1f9b8-1f3fb-200d-2640-fe0f","1f9b8-1f3fc-200d-2640-fe0f","1f9b8-1f3fd-200d-2640-fe0f","1f9b8-1f3fe-200d-2640-fe0f","1f9b8-1f3ff-200d-2640-fe0f"],a:"11.0"},{n:["supervillain"],u:"1f9b9",v:["1f9b9-1f3fb","1f9b9-1f3fc","1f9b9-1f3fd","1f9b9-1f3fe","1f9b9-1f3ff"],a:"11.0"},{n:["man supervillain","male supervillain"],u:"1f9b9-200d-2642-fe0f",v:["1f9b9-1f3fb-200d-2642-fe0f","1f9b9-1f3fc-200d-2642-fe0f","1f9b9-1f3fd-200d-2642-fe0f","1f9b9-1f3fe-200d-2642-fe0f","1f9b9-1f3ff-200d-2642-fe0f"],a:"11.0"},{n:["woman supervillain","female supervillain"],u:"1f9b9-200d-2640-fe0f",v:["1f9b9-1f3fb-200d-2640-fe0f","1f9b9-1f3fc-200d-2640-fe0f","1f9b9-1f3fd-200d-2640-fe0f","1f9b9-1f3fe-200d-2640-fe0f","1f9b9-1f3ff-200d-2640-fe0f"],a:"11.0"},{n:["mage"],u:"1f9d9",v:["1f9d9-1f3fb","1f9d9-1f3fc","1f9d9-1f3fd","1f9d9-1f3fe","1f9d9-1f3ff"],a:"5.0"},{n:["man mage","male mage"],u:"1f9d9-200d-2642-fe0f",v:["1f9d9-1f3fb-200d-2642-fe0f","1f9d9-1f3fc-200d-2642-fe0f","1f9d9-1f3fd-200d-2642-fe0f","1f9d9-1f3fe-200d-2642-fe0f","1f9d9-1f3ff-200d-2642-fe0f"],a:"5.0"},{n:["woman mage","female mage"],u:"1f9d9-200d-2640-fe0f",v:["1f9d9-1f3fb-200d-2640-fe0f","1f9d9-1f3fc-200d-2640-fe0f","1f9d9-1f3fd-200d-2640-fe0f","1f9d9-1f3fe-200d-2640-fe0f","1f9d9-1f3ff-200d-2640-fe0f"],a:"5.0"},{n:["fairy"],u:"1f9da",v:["1f9da-1f3fb","1f9da-1f3fc","1f9da-1f3fd","1f9da-1f3fe","1f9da-1f3ff"],a:"5.0"},{n:["man fairy","male fairy"],u:"1f9da-200d-2642-fe0f",v:["1f9da-1f3fb-200d-2642-fe0f","1f9da-1f3fc-200d-2642-fe0f","1f9da-1f3fd-200d-2642-fe0f","1f9da-1f3fe-200d-2642-fe0f","1f9da-1f3ff-200d-2642-fe0f"],a:"5.0"},{n:["woman fairy","female fairy"],u:"1f9da-200d-2640-fe0f",v:["1f9da-1f3fb-200d-2640-fe0f","1f9da-1f3fc-200d-2640-fe0f","1f9da-1f3fd-200d-2640-fe0f","1f9da-1f3fe-200d-2640-fe0f","1f9da-1f3ff-200d-2640-fe0f"],a:"5.0"},{n:["vampire"],u:"1f9db",v:["1f9db-1f3fb","1f9db-1f3fc","1f9db-1f3fd","1f9db-1f3fe","1f9db-1f3ff"],a:"5.0"},{n:["man vampire","male vampire"],u:"1f9db-200d-2642-fe0f",v:["1f9db-1f3fb-200d-2642-fe0f","1f9db-1f3fc-200d-2642-fe0f","1f9db-1f3fd-200d-2642-fe0f","1f9db-1f3fe-200d-2642-fe0f","1f9db-1f3ff-200d-2642-fe0f"],a:"5.0"},{n:["woman vampire","female vampire"],u:"1f9db-200d-2640-fe0f",v:["1f9db-1f3fb-200d-2640-fe0f","1f9db-1f3fc-200d-2640-fe0f","1f9db-1f3fd-200d-2640-fe0f","1f9db-1f3fe-200d-2640-fe0f","1f9db-1f3ff-200d-2640-fe0f"],a:"5.0"},{n:["merperson"],u:"1f9dc",v:["1f9dc-1f3fb","1f9dc-1f3fc","1f9dc-1f3fd","1f9dc-1f3fe","1f9dc-1f3ff"],a:"5.0"},{n:["merman"],u:"1f9dc-200d-2642-fe0f",v:["1f9dc-1f3fb-200d-2642-fe0f","1f9dc-1f3fc-200d-2642-fe0f","1f9dc-1f3fd-200d-2642-fe0f","1f9dc-1f3fe-200d-2642-fe0f","1f9dc-1f3ff-200d-2642-fe0f"],a:"5.0"},{n:["mermaid"],u:"1f9dc-200d-2640-fe0f",v:["1f9dc-1f3fb-200d-2640-fe0f","1f9dc-1f3fc-200d-2640-fe0f","1f9dc-1f3fd-200d-2640-fe0f","1f9dc-1f3fe-200d-2640-fe0f","1f9dc-1f3ff-200d-2640-fe0f"],a:"5.0"},{n:["elf"],u:"1f9dd",v:["1f9dd-1f3fb","1f9dd-1f3fc","1f9dd-1f3fd","1f9dd-1f3fe","1f9dd-1f3ff"],a:"5.0"},{n:["man elf","male elf"],u:"1f9dd-200d-2642-fe0f",v:["1f9dd-1f3fb-200d-2642-fe0f","1f9dd-1f3fc-200d-2642-fe0f","1f9dd-1f3fd-200d-2642-fe0f","1f9dd-1f3fe-200d-2642-fe0f","1f9dd-1f3ff-200d-2642-fe0f"],a:"5.0"},{n:["woman elf","female elf"],u:"1f9dd-200d-2640-fe0f",v:["1f9dd-1f3fb-200d-2640-fe0f","1f9dd-1f3fc-200d-2640-fe0f","1f9dd-1f3fd-200d-2640-fe0f","1f9dd-1f3fe-200d-2640-fe0f","1f9dd-1f3ff-200d-2640-fe0f"],a:"5.0"},{n:["genie"],u:"1f9de",a:"5.0"},{n:["man genie","male genie"],u:"1f9de-200d-2642-fe0f",a:"5.0"},{n:["woman genie","female genie"],u:"1f9de-200d-2640-fe0f",a:"5.0"},{n:["zombie"],u:"1f9df",a:"5.0"},{n:["man zombie","male zombie"],u:"1f9df-200d-2642-fe0f",a:"5.0"},{n:["woman zombie","female zombie"],u:"1f9df-200d-2640-fe0f",a:"5.0"},{n:["troll"],u:"1f9cc",a:"14.0"},{n:["massage","face massage"],u:"1f486",v:["1f486-1f3fb","1f486-1f3fc","1f486-1f3fd","1f486-1f3fe","1f486-1f3ff"],a:"0.6"},{n:["man getting massage","man-getting-massage"],u:"1f486-200d-2642-fe0f",v:["1f486-1f3fb-200d-2642-fe0f","1f486-1f3fc-200d-2642-fe0f","1f486-1f3fd-200d-2642-fe0f","1f486-1f3fe-200d-2642-fe0f","1f486-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman getting massage","woman-getting-massage"],u:"1f486-200d-2640-fe0f",v:["1f486-1f3fb-200d-2640-fe0f","1f486-1f3fc-200d-2640-fe0f","1f486-1f3fd-200d-2640-fe0f","1f486-1f3fe-200d-2640-fe0f","1f486-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["haircut"],u:"1f487",v:["1f487-1f3fb","1f487-1f3fc","1f487-1f3fd","1f487-1f3fe","1f487-1f3ff"],a:"0.6"},{n:["man getting haircut","man-getting-haircut"],u:"1f487-200d-2642-fe0f",v:["1f487-1f3fb-200d-2642-fe0f","1f487-1f3fc-200d-2642-fe0f","1f487-1f3fd-200d-2642-fe0f","1f487-1f3fe-200d-2642-fe0f","1f487-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman getting haircut","woman-getting-haircut"],u:"1f487-200d-2640-fe0f",v:["1f487-1f3fb-200d-2640-fe0f","1f487-1f3fc-200d-2640-fe0f","1f487-1f3fd-200d-2640-fe0f","1f487-1f3fe-200d-2640-fe0f","1f487-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["walking","pedestrian"],u:"1f6b6",v:["1f6b6-1f3fb","1f6b6-1f3fc","1f6b6-1f3fd","1f6b6-1f3fe","1f6b6-1f3ff"],a:"0.6"},{n:["man walking","man-walking"],u:"1f6b6-200d-2642-fe0f",v:["1f6b6-1f3fb-200d-2642-fe0f","1f6b6-1f3fc-200d-2642-fe0f","1f6b6-1f3fd-200d-2642-fe0f","1f6b6-1f3fe-200d-2642-fe0f","1f6b6-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman walking","woman-walking"],u:"1f6b6-200d-2640-fe0f",v:["1f6b6-1f3fb-200d-2640-fe0f","1f6b6-1f3fc-200d-2640-fe0f","1f6b6-1f3fd-200d-2640-fe0f","1f6b6-1f3fe-200d-2640-fe0f","1f6b6-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["standing person"],u:"1f9cd",v:["1f9cd-1f3fb","1f9cd-1f3fc","1f9cd-1f3fd","1f9cd-1f3fe","1f9cd-1f3ff"],a:"12.0"},{n:["man standing"],u:"1f9cd-200d-2642-fe0f",v:["1f9cd-1f3fb-200d-2642-fe0f","1f9cd-1f3fc-200d-2642-fe0f","1f9cd-1f3fd-200d-2642-fe0f","1f9cd-1f3fe-200d-2642-fe0f","1f9cd-1f3ff-200d-2642-fe0f"],a:"12.0"},{n:["woman standing"],u:"1f9cd-200d-2640-fe0f",v:["1f9cd-1f3fb-200d-2640-fe0f","1f9cd-1f3fc-200d-2640-fe0f","1f9cd-1f3fd-200d-2640-fe0f","1f9cd-1f3fe-200d-2640-fe0f","1f9cd-1f3ff-200d-2640-fe0f"],a:"12.0"},{n:["kneeling person"],u:"1f9ce",v:["1f9ce-1f3fb","1f9ce-1f3fc","1f9ce-1f3fd","1f9ce-1f3fe","1f9ce-1f3ff"],a:"12.0"},{n:["man kneeling"],u:"1f9ce-200d-2642-fe0f",v:["1f9ce-1f3fb-200d-2642-fe0f","1f9ce-1f3fc-200d-2642-fe0f","1f9ce-1f3fd-200d-2642-fe0f","1f9ce-1f3fe-200d-2642-fe0f","1f9ce-1f3ff-200d-2642-fe0f"],a:"12.0"},{n:["woman kneeling"],u:"1f9ce-200d-2640-fe0f",v:["1f9ce-1f3fb-200d-2640-fe0f","1f9ce-1f3fc-200d-2640-fe0f","1f9ce-1f3fd-200d-2640-fe0f","1f9ce-1f3fe-200d-2640-fe0f","1f9ce-1f3ff-200d-2640-fe0f"],a:"12.0"},{n:["person with white cane","person with probing cane"],u:"1f9d1-200d-1f9af",v:["1f9d1-1f3fb-200d-1f9af","1f9d1-1f3fc-200d-1f9af","1f9d1-1f3fd-200d-1f9af","1f9d1-1f3fe-200d-1f9af","1f9d1-1f3ff-200d-1f9af"],a:"12.1"},{n:["man with white cane","man with probing cane"],u:"1f468-200d-1f9af",v:["1f468-1f3fb-200d-1f9af","1f468-1f3fc-200d-1f9af","1f468-1f3fd-200d-1f9af","1f468-1f3fe-200d-1f9af","1f468-1f3ff-200d-1f9af"],a:"12.0"},{n:["woman with white cane","woman with probing cane"],u:"1f469-200d-1f9af",v:["1f469-1f3fb-200d-1f9af","1f469-1f3fc-200d-1f9af","1f469-1f3fd-200d-1f9af","1f469-1f3fe-200d-1f9af","1f469-1f3ff-200d-1f9af"],a:"12.0"},{n:["person in motorized wheelchair"],u:"1f9d1-200d-1f9bc",v:["1f9d1-1f3fb-200d-1f9bc","1f9d1-1f3fc-200d-1f9bc","1f9d1-1f3fd-200d-1f9bc","1f9d1-1f3fe-200d-1f9bc","1f9d1-1f3ff-200d-1f9bc"],a:"12.1"},{n:["man in motorized wheelchair"],u:"1f468-200d-1f9bc",v:["1f468-1f3fb-200d-1f9bc","1f468-1f3fc-200d-1f9bc","1f468-1f3fd-200d-1f9bc","1f468-1f3fe-200d-1f9bc","1f468-1f3ff-200d-1f9bc"],a:"12.0"},{n:["woman in motorized wheelchair"],u:"1f469-200d-1f9bc",v:["1f469-1f3fb-200d-1f9bc","1f469-1f3fc-200d-1f9bc","1f469-1f3fd-200d-1f9bc","1f469-1f3fe-200d-1f9bc","1f469-1f3ff-200d-1f9bc"],a:"12.0"},{n:["person in manual wheelchair"],u:"1f9d1-200d-1f9bd",v:["1f9d1-1f3fb-200d-1f9bd","1f9d1-1f3fc-200d-1f9bd","1f9d1-1f3fd-200d-1f9bd","1f9d1-1f3fe-200d-1f9bd","1f9d1-1f3ff-200d-1f9bd"],a:"12.1"},{n:["man in manual wheelchair"],u:"1f468-200d-1f9bd",v:["1f468-1f3fb-200d-1f9bd","1f468-1f3fc-200d-1f9bd","1f468-1f3fd-200d-1f9bd","1f468-1f3fe-200d-1f9bd","1f468-1f3ff-200d-1f9bd"],a:"12.0"},{n:["woman in manual wheelchair"],u:"1f469-200d-1f9bd",v:["1f469-1f3fb-200d-1f9bd","1f469-1f3fc-200d-1f9bd","1f469-1f3fd-200d-1f9bd","1f469-1f3fe-200d-1f9bd","1f469-1f3ff-200d-1f9bd"],a:"12.0"},{n:["runner","running"],u:"1f3c3",v:["1f3c3-1f3fb","1f3c3-1f3fc","1f3c3-1f3fd","1f3c3-1f3fe","1f3c3-1f3ff"],a:"0.6"},{n:["man running","man-running"],u:"1f3c3-200d-2642-fe0f",v:["1f3c3-1f3fb-200d-2642-fe0f","1f3c3-1f3fc-200d-2642-fe0f","1f3c3-1f3fd-200d-2642-fe0f","1f3c3-1f3fe-200d-2642-fe0f","1f3c3-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman running","woman-running"],u:"1f3c3-200d-2640-fe0f",v:["1f3c3-1f3fb-200d-2640-fe0f","1f3c3-1f3fc-200d-2640-fe0f","1f3c3-1f3fd-200d-2640-fe0f","1f3c3-1f3fe-200d-2640-fe0f","1f3c3-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["dancer"],u:"1f483",v:["1f483-1f3fb","1f483-1f3fc","1f483-1f3fd","1f483-1f3fe","1f483-1f3ff"],a:"0.6"},{n:["man dancing"],u:"1f57a",v:["1f57a-1f3fb","1f57a-1f3fc","1f57a-1f3fd","1f57a-1f3fe","1f57a-1f3ff"],a:"3.0"},{n:["person in suit levitating","man in business suit levitating"],u:"1f574-fe0f",v:["1f574-1f3fb","1f574-1f3fc","1f574-1f3fd","1f574-1f3fe","1f574-1f3ff"],a:"0.7"},{n:["dancers","woman with bunny ears"],u:"1f46f",a:"0.6"},{n:["men with bunny ears","men-with-bunny-ears-partying","man-with-bunny-ears-partying"],u:"1f46f-200d-2642-fe0f",a:"4.0"},{n:["women with bunny ears","women-with-bunny-ears-partying","woman-with-bunny-ears-partying"],u:"1f46f-200d-2640-fe0f",a:"4.0"},{n:["person in steamy room"],u:"1f9d6",v:["1f9d6-1f3fb","1f9d6-1f3fc","1f9d6-1f3fd","1f9d6-1f3fe","1f9d6-1f3ff"],a:"5.0"},{n:["man in steamy room"],u:"1f9d6-200d-2642-fe0f",v:["1f9d6-1f3fb-200d-2642-fe0f","1f9d6-1f3fc-200d-2642-fe0f","1f9d6-1f3fd-200d-2642-fe0f","1f9d6-1f3fe-200d-2642-fe0f","1f9d6-1f3ff-200d-2642-fe0f"],a:"5.0"},{n:["woman in steamy room"],u:"1f9d6-200d-2640-fe0f",v:["1f9d6-1f3fb-200d-2640-fe0f","1f9d6-1f3fc-200d-2640-fe0f","1f9d6-1f3fd-200d-2640-fe0f","1f9d6-1f3fe-200d-2640-fe0f","1f9d6-1f3ff-200d-2640-fe0f"],a:"5.0"},{n:["person climbing"],u:"1f9d7",v:["1f9d7-1f3fb","1f9d7-1f3fc","1f9d7-1f3fd","1f9d7-1f3fe","1f9d7-1f3ff"],a:"5.0"},{n:["man climbing"],u:"1f9d7-200d-2642-fe0f",v:["1f9d7-1f3fb-200d-2642-fe0f","1f9d7-1f3fc-200d-2642-fe0f","1f9d7-1f3fd-200d-2642-fe0f","1f9d7-1f3fe-200d-2642-fe0f","1f9d7-1f3ff-200d-2642-fe0f"],a:"5.0"},{n:["woman climbing"],u:"1f9d7-200d-2640-fe0f",v:["1f9d7-1f3fb-200d-2640-fe0f","1f9d7-1f3fc-200d-2640-fe0f","1f9d7-1f3fd-200d-2640-fe0f","1f9d7-1f3fe-200d-2640-fe0f","1f9d7-1f3ff-200d-2640-fe0f"],a:"5.0"},{n:["fencer"],u:"1f93a",a:"3.0"},{n:["horse racing"],u:"1f3c7",v:["1f3c7-1f3fb","1f3c7-1f3fc","1f3c7-1f3fd","1f3c7-1f3fe","1f3c7-1f3ff"],a:"1.0"},{n:["skier"],u:"26f7-fe0f",a:"0.7"},{n:["snowboarder"],u:"1f3c2",v:["1f3c2-1f3fb","1f3c2-1f3fc","1f3c2-1f3fd","1f3c2-1f3fe","1f3c2-1f3ff"],a:"0.6"},{n:["golfer","person golfing"],u:"1f3cc-fe0f",v:["1f3cc-1f3fb","1f3cc-1f3fc","1f3cc-1f3fd","1f3cc-1f3fe","1f3cc-1f3ff"],a:"0.7"},{n:["man golfing","man-golfing"],u:"1f3cc-fe0f-200d-2642-fe0f",v:["1f3cc-1f3fb-200d-2642-fe0f","1f3cc-1f3fc-200d-2642-fe0f","1f3cc-1f3fd-200d-2642-fe0f","1f3cc-1f3fe-200d-2642-fe0f","1f3cc-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman golfing","woman-golfing"],u:"1f3cc-fe0f-200d-2640-fe0f",v:["1f3cc-1f3fb-200d-2640-fe0f","1f3cc-1f3fc-200d-2640-fe0f","1f3cc-1f3fd-200d-2640-fe0f","1f3cc-1f3fe-200d-2640-fe0f","1f3cc-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["surfer"],u:"1f3c4",v:["1f3c4-1f3fb","1f3c4-1f3fc","1f3c4-1f3fd","1f3c4-1f3fe","1f3c4-1f3ff"],a:"0.6"},{n:["man surfing","man-surfing"],u:"1f3c4-200d-2642-fe0f",v:["1f3c4-1f3fb-200d-2642-fe0f","1f3c4-1f3fc-200d-2642-fe0f","1f3c4-1f3fd-200d-2642-fe0f","1f3c4-1f3fe-200d-2642-fe0f","1f3c4-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman surfing","woman-surfing"],u:"1f3c4-200d-2640-fe0f",v:["1f3c4-1f3fb-200d-2640-fe0f","1f3c4-1f3fc-200d-2640-fe0f","1f3c4-1f3fd-200d-2640-fe0f","1f3c4-1f3fe-200d-2640-fe0f","1f3c4-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["rowboat"],u:"1f6a3",v:["1f6a3-1f3fb","1f6a3-1f3fc","1f6a3-1f3fd","1f6a3-1f3fe","1f6a3-1f3ff"],a:"1.0"},{n:["man rowing boat","man-rowing-boat"],u:"1f6a3-200d-2642-fe0f",v:["1f6a3-1f3fb-200d-2642-fe0f","1f6a3-1f3fc-200d-2642-fe0f","1f6a3-1f3fd-200d-2642-fe0f","1f6a3-1f3fe-200d-2642-fe0f","1f6a3-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman rowing boat","woman-rowing-boat"],u:"1f6a3-200d-2640-fe0f",v:["1f6a3-1f3fb-200d-2640-fe0f","1f6a3-1f3fc-200d-2640-fe0f","1f6a3-1f3fd-200d-2640-fe0f","1f6a3-1f3fe-200d-2640-fe0f","1f6a3-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["swimmer"],u:"1f3ca",v:["1f3ca-1f3fb","1f3ca-1f3fc","1f3ca-1f3fd","1f3ca-1f3fe","1f3ca-1f3ff"],a:"0.6"},{n:["man swimming","man-swimming"],u:"1f3ca-200d-2642-fe0f",v:["1f3ca-1f3fb-200d-2642-fe0f","1f3ca-1f3fc-200d-2642-fe0f","1f3ca-1f3fd-200d-2642-fe0f","1f3ca-1f3fe-200d-2642-fe0f","1f3ca-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman swimming","woman-swimming"],u:"1f3ca-200d-2640-fe0f",v:["1f3ca-1f3fb-200d-2640-fe0f","1f3ca-1f3fc-200d-2640-fe0f","1f3ca-1f3fd-200d-2640-fe0f","1f3ca-1f3fe-200d-2640-fe0f","1f3ca-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["person with ball","person bouncing ball"],u:"26f9-fe0f",v:["26f9-1f3fb","26f9-1f3fc","26f9-1f3fd","26f9-1f3fe","26f9-1f3ff"],a:"0.7"},{n:["man bouncing ball","man-bouncing-ball"],u:"26f9-fe0f-200d-2642-fe0f",v:["26f9-1f3fb-200d-2642-fe0f","26f9-1f3fc-200d-2642-fe0f","26f9-1f3fd-200d-2642-fe0f","26f9-1f3fe-200d-2642-fe0f","26f9-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman bouncing ball","woman-bouncing-ball"],u:"26f9-fe0f-200d-2640-fe0f",v:["26f9-1f3fb-200d-2640-fe0f","26f9-1f3fc-200d-2640-fe0f","26f9-1f3fd-200d-2640-fe0f","26f9-1f3fe-200d-2640-fe0f","26f9-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["weight lifter","person lifting weights"],u:"1f3cb-fe0f",v:["1f3cb-1f3fb","1f3cb-1f3fc","1f3cb-1f3fd","1f3cb-1f3fe","1f3cb-1f3ff"],a:"0.7"},{n:["man lifting weights","man-lifting-weights"],u:"1f3cb-fe0f-200d-2642-fe0f",v:["1f3cb-1f3fb-200d-2642-fe0f","1f3cb-1f3fc-200d-2642-fe0f","1f3cb-1f3fd-200d-2642-fe0f","1f3cb-1f3fe-200d-2642-fe0f","1f3cb-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman lifting weights","woman-lifting-weights"],u:"1f3cb-fe0f-200d-2640-fe0f",v:["1f3cb-1f3fb-200d-2640-fe0f","1f3cb-1f3fc-200d-2640-fe0f","1f3cb-1f3fd-200d-2640-fe0f","1f3cb-1f3fe-200d-2640-fe0f","1f3cb-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["bicyclist"],u:"1f6b4",v:["1f6b4-1f3fb","1f6b4-1f3fc","1f6b4-1f3fd","1f6b4-1f3fe","1f6b4-1f3ff"],a:"1.0"},{n:["man biking","man-biking"],u:"1f6b4-200d-2642-fe0f",v:["1f6b4-1f3fb-200d-2642-fe0f","1f6b4-1f3fc-200d-2642-fe0f","1f6b4-1f3fd-200d-2642-fe0f","1f6b4-1f3fe-200d-2642-fe0f","1f6b4-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman biking","woman-biking"],u:"1f6b4-200d-2640-fe0f",v:["1f6b4-1f3fb-200d-2640-fe0f","1f6b4-1f3fc-200d-2640-fe0f","1f6b4-1f3fd-200d-2640-fe0f","1f6b4-1f3fe-200d-2640-fe0f","1f6b4-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["mountain bicyclist"],u:"1f6b5",v:["1f6b5-1f3fb","1f6b5-1f3fc","1f6b5-1f3fd","1f6b5-1f3fe","1f6b5-1f3ff"],a:"1.0"},{n:["man mountain biking","man-mountain-biking"],u:"1f6b5-200d-2642-fe0f",v:["1f6b5-1f3fb-200d-2642-fe0f","1f6b5-1f3fc-200d-2642-fe0f","1f6b5-1f3fd-200d-2642-fe0f","1f6b5-1f3fe-200d-2642-fe0f","1f6b5-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman mountain biking","woman-mountain-biking"],u:"1f6b5-200d-2640-fe0f",v:["1f6b5-1f3fb-200d-2640-fe0f","1f6b5-1f3fc-200d-2640-fe0f","1f6b5-1f3fd-200d-2640-fe0f","1f6b5-1f3fe-200d-2640-fe0f","1f6b5-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["person doing cartwheel"],u:"1f938",v:["1f938-1f3fb","1f938-1f3fc","1f938-1f3fd","1f938-1f3fe","1f938-1f3ff"],a:"3.0"},{n:["man cartwheeling","man-cartwheeling"],u:"1f938-200d-2642-fe0f",v:["1f938-1f3fb-200d-2642-fe0f","1f938-1f3fc-200d-2642-fe0f","1f938-1f3fd-200d-2642-fe0f","1f938-1f3fe-200d-2642-fe0f","1f938-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman cartwheeling","woman-cartwheeling"],u:"1f938-200d-2640-fe0f",v:["1f938-1f3fb-200d-2640-fe0f","1f938-1f3fc-200d-2640-fe0f","1f938-1f3fd-200d-2640-fe0f","1f938-1f3fe-200d-2640-fe0f","1f938-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["wrestlers"],u:"1f93c",a:"3.0"},{n:["men wrestling","man-wrestling"],u:"1f93c-200d-2642-fe0f",a:"4.0"},{n:["women wrestling","woman-wrestling"],u:"1f93c-200d-2640-fe0f",a:"4.0"},{n:["water polo"],u:"1f93d",v:["1f93d-1f3fb","1f93d-1f3fc","1f93d-1f3fd","1f93d-1f3fe","1f93d-1f3ff"],a:"3.0"},{n:["man playing water polo","man-playing-water-polo"],u:"1f93d-200d-2642-fe0f",v:["1f93d-1f3fb-200d-2642-fe0f","1f93d-1f3fc-200d-2642-fe0f","1f93d-1f3fd-200d-2642-fe0f","1f93d-1f3fe-200d-2642-fe0f","1f93d-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman playing water polo","woman-playing-water-polo"],u:"1f93d-200d-2640-fe0f",v:["1f93d-1f3fb-200d-2640-fe0f","1f93d-1f3fc-200d-2640-fe0f","1f93d-1f3fd-200d-2640-fe0f","1f93d-1f3fe-200d-2640-fe0f","1f93d-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["handball"],u:"1f93e",v:["1f93e-1f3fb","1f93e-1f3fc","1f93e-1f3fd","1f93e-1f3fe","1f93e-1f3ff"],a:"3.0"},{n:["man playing handball","man-playing-handball"],u:"1f93e-200d-2642-fe0f",v:["1f93e-1f3fb-200d-2642-fe0f","1f93e-1f3fc-200d-2642-fe0f","1f93e-1f3fd-200d-2642-fe0f","1f93e-1f3fe-200d-2642-fe0f","1f93e-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman playing handball","woman-playing-handball"],u:"1f93e-200d-2640-fe0f",v:["1f93e-1f3fb-200d-2640-fe0f","1f93e-1f3fc-200d-2640-fe0f","1f93e-1f3fd-200d-2640-fe0f","1f93e-1f3fe-200d-2640-fe0f","1f93e-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["juggling"],u:"1f939",v:["1f939-1f3fb","1f939-1f3fc","1f939-1f3fd","1f939-1f3fe","1f939-1f3ff"],a:"3.0"},{n:["man juggling","man-juggling"],u:"1f939-200d-2642-fe0f",v:["1f939-1f3fb-200d-2642-fe0f","1f939-1f3fc-200d-2642-fe0f","1f939-1f3fd-200d-2642-fe0f","1f939-1f3fe-200d-2642-fe0f","1f939-1f3ff-200d-2642-fe0f"],a:"4.0"},{n:["woman juggling","woman-juggling"],u:"1f939-200d-2640-fe0f",v:["1f939-1f3fb-200d-2640-fe0f","1f939-1f3fc-200d-2640-fe0f","1f939-1f3fd-200d-2640-fe0f","1f939-1f3fe-200d-2640-fe0f","1f939-1f3ff-200d-2640-fe0f"],a:"4.0"},{n:["person in lotus position"],u:"1f9d8",v:["1f9d8-1f3fb","1f9d8-1f3fc","1f9d8-1f3fd","1f9d8-1f3fe","1f9d8-1f3ff"],a:"5.0"},{n:["man in lotus position"],u:"1f9d8-200d-2642-fe0f",v:["1f9d8-1f3fb-200d-2642-fe0f","1f9d8-1f3fc-200d-2642-fe0f","1f9d8-1f3fd-200d-2642-fe0f","1f9d8-1f3fe-200d-2642-fe0f","1f9d8-1f3ff-200d-2642-fe0f"],a:"5.0"},{n:["woman in lotus position"],u:"1f9d8-200d-2640-fe0f",v:["1f9d8-1f3fb-200d-2640-fe0f","1f9d8-1f3fc-200d-2640-fe0f","1f9d8-1f3fd-200d-2640-fe0f","1f9d8-1f3fe-200d-2640-fe0f","1f9d8-1f3ff-200d-2640-fe0f"],a:"5.0"},{n:["bath"],u:"1f6c0",v:["1f6c0-1f3fb","1f6c0-1f3fc","1f6c0-1f3fd","1f6c0-1f3fe","1f6c0-1f3ff"],a:"0.6"},{n:["sleeping accommodation"],u:"1f6cc",v:["1f6cc-1f3fb","1f6cc-1f3fc","1f6cc-1f3fd","1f6cc-1f3fe","1f6cc-1f3ff"],a:"1.0"},{n:["people holding hands"],u:"1f9d1-200d-1f91d-200d-1f9d1",v:["1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fb","1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fc","1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fd","1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fe","1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3ff","1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fb","1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fc","1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fd","1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fe","1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3ff","1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fb","1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fc","1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fd","1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fe","1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3ff","1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fb","1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fc","1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fd","1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fe","1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3ff","1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fb","1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fc","1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fd","1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fe","1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3ff"],a:"12.0"},{n:["women holding hands","two women holding hands"],u:"1f46d",v:["1f46d-1f3fb","1f46d-1f3fc","1f46d-1f3fd","1f46d-1f3fe","1f46d-1f3ff","1f469-1f3fb-200d-1f91d-200d-1f469-1f3fc","1f469-1f3fb-200d-1f91d-200d-1f469-1f3fd","1f469-1f3fb-200d-1f91d-200d-1f469-1f3fe","1f469-1f3fb-200d-1f91d-200d-1f469-1f3ff","1f469-1f3fc-200d-1f91d-200d-1f469-1f3fb","1f469-1f3fc-200d-1f91d-200d-1f469-1f3fd","1f469-1f3fc-200d-1f91d-200d-1f469-1f3fe","1f469-1f3fc-200d-1f91d-200d-1f469-1f3ff","1f469-1f3fd-200d-1f91d-200d-1f469-1f3fb","1f469-1f3fd-200d-1f91d-200d-1f469-1f3fc","1f469-1f3fd-200d-1f91d-200d-1f469-1f3fe","1f469-1f3fd-200d-1f91d-200d-1f469-1f3ff","1f469-1f3fe-200d-1f91d-200d-1f469-1f3fb","1f469-1f3fe-200d-1f91d-200d-1f469-1f3fc","1f469-1f3fe-200d-1f91d-200d-1f469-1f3fd","1f469-1f3fe-200d-1f91d-200d-1f469-1f3ff","1f469-1f3ff-200d-1f91d-200d-1f469-1f3fb","1f469-1f3ff-200d-1f91d-200d-1f469-1f3fc","1f469-1f3ff-200d-1f91d-200d-1f469-1f3fd","1f469-1f3ff-200d-1f91d-200d-1f469-1f3fe"],a:"1.0"},{n:["couple","man and woman holding hands","woman and man holding hands"],u:"1f46b",v:["1f46b-1f3fb","1f46b-1f3fc","1f46b-1f3fd","1f46b-1f3fe","1f46b-1f3ff","1f469-1f3fb-200d-1f91d-200d-1f468-1f3fc","1f469-1f3fb-200d-1f91d-200d-1f468-1f3fd","1f469-1f3fb-200d-1f91d-200d-1f468-1f3fe","1f469-1f3fb-200d-1f91d-200d-1f468-1f3ff","1f469-1f3fc-200d-1f91d-200d-1f468-1f3fb","1f469-1f3fc-200d-1f91d-200d-1f468-1f3fd","1f469-1f3fc-200d-1f91d-200d-1f468-1f3fe","1f469-1f3fc-200d-1f91d-200d-1f468-1f3ff","1f469-1f3fd-200d-1f91d-200d-1f468-1f3fb","1f469-1f3fd-200d-1f91d-200d-1f468-1f3fc","1f469-1f3fd-200d-1f91d-200d-1f468-1f3fe","1f469-1f3fd-200d-1f91d-200d-1f468-1f3ff","1f469-1f3fe-200d-1f91d-200d-1f468-1f3fb","1f469-1f3fe-200d-1f91d-200d-1f468-1f3fc","1f469-1f3fe-200d-1f91d-200d-1f468-1f3fd","1f469-1f3fe-200d-1f91d-200d-1f468-1f3ff","1f469-1f3ff-200d-1f91d-200d-1f468-1f3fb","1f469-1f3ff-200d-1f91d-200d-1f468-1f3fc","1f469-1f3ff-200d-1f91d-200d-1f468-1f3fd","1f469-1f3ff-200d-1f91d-200d-1f468-1f3fe"],a:"0.6"},{n:["men holding hands","two men holding hands"],u:"1f46c",v:["1f46c-1f3fb","1f46c-1f3fc","1f46c-1f3fd","1f46c-1f3fe","1f46c-1f3ff","1f468-1f3fb-200d-1f91d-200d-1f468-1f3fc","1f468-1f3fb-200d-1f91d-200d-1f468-1f3fd","1f468-1f3fb-200d-1f91d-200d-1f468-1f3fe","1f468-1f3fb-200d-1f91d-200d-1f468-1f3ff","1f468-1f3fc-200d-1f91d-200d-1f468-1f3fb","1f468-1f3fc-200d-1f91d-200d-1f468-1f3fd","1f468-1f3fc-200d-1f91d-200d-1f468-1f3fe","1f468-1f3fc-200d-1f91d-200d-1f468-1f3ff","1f468-1f3fd-200d-1f91d-200d-1f468-1f3fb","1f468-1f3fd-200d-1f91d-200d-1f468-1f3fc","1f468-1f3fd-200d-1f91d-200d-1f468-1f3fe","1f468-1f3fd-200d-1f91d-200d-1f468-1f3ff","1f468-1f3fe-200d-1f91d-200d-1f468-1f3fb","1f468-1f3fe-200d-1f91d-200d-1f468-1f3fc","1f468-1f3fe-200d-1f91d-200d-1f468-1f3fd","1f468-1f3fe-200d-1f91d-200d-1f468-1f3ff","1f468-1f3ff-200d-1f91d-200d-1f468-1f3fb","1f468-1f3ff-200d-1f91d-200d-1f468-1f3fc","1f468-1f3ff-200d-1f91d-200d-1f468-1f3fd","1f468-1f3ff-200d-1f91d-200d-1f468-1f3fe"],a:"1.0"},{n:["kiss","couplekiss"],u:"1f48f",v:["1f48f-1f3fb","1f48f-1f3fc","1f48f-1f3fd","1f48f-1f3fe","1f48f-1f3ff","1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe"],a:"0.6"},{n:["woman-kiss-man","kiss: woman, man"],u:"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468",v:["1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff"],a:"2.0"},{n:["man-kiss-man","kiss: man, man"],u:"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468",v:["1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff"],a:"2.0"},{n:["woman-kiss-woman","kiss: woman, woman"],u:"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469",v:["1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff"],a:"2.0"},{n:["couple with heart"],u:"1f491",v:["1f491-1f3fb","1f491-1f3fc","1f491-1f3fd","1f491-1f3fe","1f491-1f3ff","1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc","1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd","1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe","1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff","1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb","1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd","1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe","1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff","1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb","1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc","1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe","1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff","1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb","1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc","1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd","1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff","1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb","1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc","1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd","1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe"],a:"0.6"},{n:["woman-heart-man","couple with heart: woman, man"],u:"1f469-200d-2764-fe0f-200d-1f468",v:["1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff"],a:"2.0"},{n:["man-heart-man","couple with heart: man, man"],u:"1f468-200d-2764-fe0f-200d-1f468",v:["1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff"],a:"2.0"},{n:["woman-heart-woman","couple with heart: woman, woman"],u:"1f469-200d-2764-fe0f-200d-1f469",v:["1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc","1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd","1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe","1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff","1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb","1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd","1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe","1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff","1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb","1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc","1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe","1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff","1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb","1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc","1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd","1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff","1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb","1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc","1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd","1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe","1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff"],a:"2.0"},{n:["family"],u:"1f46a",a:"0.6"},{n:["man-woman-boy","family: man, woman, boy"],u:"1f468-200d-1f469-200d-1f466",a:"2.0"},{n:["man-woman-girl","family: man, woman, girl"],u:"1f468-200d-1f469-200d-1f467",a:"2.0"},{n:["man-woman-girl-boy","family: man, woman, girl, boy"],u:"1f468-200d-1f469-200d-1f467-200d-1f466",a:"2.0"},{n:["man-woman-boy-boy","family: man, woman, boy, boy"],u:"1f468-200d-1f469-200d-1f466-200d-1f466",a:"2.0"},{n:["man-woman-girl-girl","family: man, woman, girl, girl"],u:"1f468-200d-1f469-200d-1f467-200d-1f467",a:"2.0"},{n:["man-man-boy","family: man, man, boy"],u:"1f468-200d-1f468-200d-1f466",a:"2.0"},{n:["man-man-girl","family: man, man, girl"],u:"1f468-200d-1f468-200d-1f467",a:"2.0"},{n:["man-man-girl-boy","family: man, man, girl, boy"],u:"1f468-200d-1f468-200d-1f467-200d-1f466",a:"2.0"},{n:["man-man-boy-boy","family: man, man, boy, boy"],u:"1f468-200d-1f468-200d-1f466-200d-1f466",a:"2.0"},{n:["man-man-girl-girl","family: man, man, girl, girl"],u:"1f468-200d-1f468-200d-1f467-200d-1f467",a:"2.0"},{n:["woman-woman-boy","family: woman, woman, boy"],u:"1f469-200d-1f469-200d-1f466",a:"2.0"},{n:["woman-woman-girl","family: woman, woman, girl"],u:"1f469-200d-1f469-200d-1f467",a:"2.0"},{n:["woman-woman-girl-boy","family: woman, woman, girl, boy"],u:"1f469-200d-1f469-200d-1f467-200d-1f466",a:"2.0"},{n:["woman-woman-boy-boy","family: woman, woman, boy, boy"],u:"1f469-200d-1f469-200d-1f466-200d-1f466",a:"2.0"},{n:["woman-woman-girl-girl","family: woman, woman, girl, girl"],u:"1f469-200d-1f469-200d-1f467-200d-1f467",a:"2.0"},{n:["man-boy","family: man, boy"],u:"1f468-200d-1f466",a:"4.0"},{n:["man-boy-boy","family: man, boy, boy"],u:"1f468-200d-1f466-200d-1f466",a:"4.0"},{n:["man-girl","family: man, girl"],u:"1f468-200d-1f467",a:"4.0"},{n:["man-girl-boy","family: man, girl, boy"],u:"1f468-200d-1f467-200d-1f466",a:"4.0"},{n:["man-girl-girl","family: man, girl, girl"],u:"1f468-200d-1f467-200d-1f467",a:"4.0"},{n:["woman-boy","family: woman, boy"],u:"1f469-200d-1f466",a:"4.0"},{n:["woman-boy-boy","family: woman, boy, boy"],u:"1f469-200d-1f466-200d-1f466",a:"4.0"},{n:["woman-girl","family: woman, girl"],u:"1f469-200d-1f467",a:"4.0"},{n:["woman-girl-boy","family: woman, girl, boy"],u:"1f469-200d-1f467-200d-1f466",a:"4.0"},{n:["woman-girl-girl","family: woman, girl, girl"],u:"1f469-200d-1f467-200d-1f467",a:"4.0"},{n:["speaking head","speaking head in silhouette"],u:"1f5e3-fe0f",a:"0.7"},{n:["bust in silhouette"],u:"1f464",a:"0.6"},{n:["busts in silhouette"],u:"1f465",a:"1.0"},{n:["people hugging"],u:"1fac2",a:"13.0"},{n:["footprints"],u:"1f463",a:"0.6"}],animals_nature:[{n:["monkey face"],u:"1f435",a:"0.6"},{n:["monkey"],u:"1f412",a:"0.6"},{n:["gorilla"],u:"1f98d",a:"3.0"},{n:["orangutan"],u:"1f9a7",a:"12.0"},{n:["dog","dog face"],u:"1f436",a:"0.6"},{n:["dog","dog2"],u:"1f415",a:"0.7"},{n:["guide dog"],u:"1f9ae",a:"12.0"},{n:["service dog"],u:"1f415-200d-1f9ba",a:"12.0"},{n:["poodle"],u:"1f429",a:"0.6"},{n:["wolf","wolf face"],u:"1f43a",a:"0.6"},{n:["fox face"],u:"1f98a",a:"3.0"},{n:["raccoon"],u:"1f99d",a:"11.0"},{n:["cat","cat face"],u:"1f431",a:"0.6"},{n:["cat","cat2"],u:"1f408",a:"0.7"},{n:["black cat"],u:"1f408-200d-2b1b",a:"13.0"},{n:["lion face"],u:"1f981",a:"1.0"},{n:["tiger","tiger face"],u:"1f42f",a:"0.6"},{n:["tiger","tiger2"],u:"1f405",a:"1.0"},{n:["leopard"],u:"1f406",a:"1.0"},{n:["horse","horse face"],u:"1f434",a:"0.6"},{n:["horse","racehorse"],u:"1f40e",a:"0.6"},{n:["unicorn face"],u:"1f984",a:"1.0"},{n:["zebra face"],u:"1f993",a:"5.0"},{n:["deer"],u:"1f98c",a:"3.0"},{n:["bison"],u:"1f9ac",a:"13.0"},{n:["cow","cow face"],u:"1f42e",a:"0.6"},{n:["ox"],u:"1f402",a:"1.0"},{n:["water buffalo"],u:"1f403",a:"1.0"},{n:["cow","cow2"],u:"1f404",a:"1.0"},{n:["pig","pig face"],u:"1f437",a:"0.6"},{n:["pig","pig2"],u:"1f416",a:"1.0"},{n:["boar"],u:"1f417",a:"0.6"},{n:["pig nose"],u:"1f43d",a:"0.6"},{n:["ram"],u:"1f40f",a:"1.0"},{n:["sheep"],u:"1f411",a:"0.6"},{n:["goat"],u:"1f410",a:"1.0"},{n:["dromedary camel"],u:"1f42a",a:"1.0"},{n:["camel","bactrian camel"],u:"1f42b",a:"0.6"},{n:["llama"],u:"1f999",a:"11.0"},{n:["giraffe face"],u:"1f992",a:"5.0"},{n:["elephant"],u:"1f418",a:"0.6"},{n:["mammoth"],u:"1f9a3",a:"13.0"},{n:["rhinoceros"],u:"1f98f",a:"3.0"},{n:["hippopotamus"],u:"1f99b",a:"11.0"},{n:["mouse","mouse face"],u:"1f42d",a:"0.6"},{n:["mouse","mouse2"],u:"1f401",a:"1.0"},{n:["rat"],u:"1f400",a:"1.0"},{n:["hamster","hamster face"],u:"1f439",a:"0.6"},{n:["rabbit","rabbit face"],u:"1f430",a:"0.6"},{n:["rabbit","rabbit2"],u:"1f407",a:"1.0"},{n:["chipmunk"],u:"1f43f-fe0f",a:"0.7"},{n:["beaver"],u:"1f9ab",a:"13.0"},{n:["hedgehog"],u:"1f994",a:"5.0"},{n:["bat"],u:"1f987",a:"3.0"},{n:["bear","bear face"],u:"1f43b",a:"0.6"},{n:["polar bear"],u:"1f43b-200d-2744-fe0f",a:"13.0"},{n:["koala"],u:"1f428",a:"0.6"},{n:["panda face"],u:"1f43c",a:"0.6"},{n:["sloth"],u:"1f9a5",a:"12.0"},{n:["otter"],u:"1f9a6",a:"12.0"},{n:["skunk"],u:"1f9a8",a:"12.0"},{n:["kangaroo"],u:"1f998",a:"11.0"},{n:["badger"],u:"1f9a1",a:"11.0"},{n:["feet","paw prints"],u:"1f43e",a:"0.6"},{n:["turkey"],u:"1f983",a:"1.0"},{n:["chicken"],u:"1f414",a:"0.6"},{n:["rooster"],u:"1f413",a:"1.0"},{n:["hatching chick"],u:"1f423",a:"0.6"},{n:["baby chick"],u:"1f424",a:"0.6"},{n:["hatched chick","front-facing baby chick"],u:"1f425",a:"0.6"},{n:["bird"],u:"1f426",a:"0.6"},{n:["penguin"],u:"1f427",a:"0.6"},{n:["dove","dove of peace"],u:"1f54a-fe0f",a:"0.7"},{n:["eagle"],u:"1f985",a:"3.0"},{n:["duck"],u:"1f986",a:"3.0"},{n:["swan"],u:"1f9a2",a:"11.0"},{n:["owl"],u:"1f989",a:"3.0"},{n:["dodo"],u:"1f9a4",a:"13.0"},{n:["feather"],u:"1fab6",a:"13.0"},{n:["flamingo"],u:"1f9a9",a:"12.0"},{n:["peacock"],u:"1f99a",a:"11.0"},{n:["parrot"],u:"1f99c",a:"11.0"},{n:["frog","frog face"],u:"1f438",a:"0.6"},{n:["crocodile"],u:"1f40a",a:"1.0"},{n:["turtle"],u:"1f422",a:"0.6"},{n:["lizard"],u:"1f98e",a:"3.0"},{n:["snake"],u:"1f40d",a:"0.6"},{n:["dragon face"],u:"1f432",a:"0.6"},{n:["dragon"],u:"1f409",a:"1.0"},{n:["sauropod"],u:"1f995",a:"5.0"},{n:["t-rex"],u:"1f996",a:"5.0"},{n:["whale","spouting whale"],u:"1f433",a:"0.6"},{n:["whale","whale2"],u:"1f40b",a:"1.0"},{n:["dolphin","flipper"],u:"1f42c",a:"0.6"},{n:["seal"],u:"1f9ad",a:"13.0"},{n:["fish"],u:"1f41f",a:"0.6"},{n:["tropical fish"],u:"1f420",a:"0.6"},{n:["blowfish"],u:"1f421",a:"0.6"},{n:["shark"],u:"1f988",a:"3.0"},{n:["octopus"],u:"1f419",a:"0.6"},{n:["shell","spiral shell"],u:"1f41a",a:"0.6"},{n:["coral"],u:"1fab8",a:"14.0"},{n:["snail"],u:"1f40c",a:"0.6"},{n:["butterfly"],u:"1f98b",a:"3.0"},{n:["bug"],u:"1f41b",a:"0.6"},{n:["ant"],u:"1f41c",a:"0.6"},{n:["bee","honeybee"],u:"1f41d",a:"0.6"},{n:["beetle"],u:"1fab2",a:"13.0"},{n:["ladybug","lady beetle"],u:"1f41e",a:"0.6"},{n:["cricket"],u:"1f997",a:"5.0"},{n:["cockroach"],u:"1fab3",a:"13.0"},{n:["spider"],u:"1f577-fe0f",a:"0.7"},{n:["spider web"],u:"1f578-fe0f",a:"0.7"},{n:["scorpion"],u:"1f982",a:"1.0"},{n:["mosquito"],u:"1f99f",a:"11.0"},{n:["fly"],u:"1fab0",a:"13.0"},{n:["worm"],u:"1fab1",a:"13.0"},{n:["microbe"],u:"1f9a0",a:"11.0"},{n:["bouquet"],u:"1f490",a:"0.6"},{n:["cherry blossom"],u:"1f338",a:"0.6"},{n:["white flower"],u:"1f4ae",a:"0.6"},{n:["lotus"],u:"1fab7",a:"14.0"},{n:["rosette"],u:"1f3f5-fe0f",a:"0.7"},{n:["rose"],u:"1f339",a:"0.6"},{n:["wilted flower"],u:"1f940",a:"3.0"},{n:["hibiscus"],u:"1f33a",a:"0.6"},{n:["sunflower"],u:"1f33b",a:"0.6"},{n:["blossom"],u:"1f33c",a:"0.6"},{n:["tulip"],u:"1f337",a:"0.6"},{n:["seedling"],u:"1f331",a:"0.6"},{n:["potted plant"],u:"1fab4",a:"13.0"},{n:["evergreen tree"],u:"1f332",a:"1.0"},{n:["deciduous tree"],u:"1f333",a:"1.0"},{n:["palm tree"],u:"1f334",a:"0.6"},{n:["cactus"],u:"1f335",a:"0.6"},{n:["ear of rice"],u:"1f33e",a:"0.6"},{n:["herb"],u:"1f33f",a:"0.6"},{n:["shamrock"],u:"2618-fe0f",a:"1.0"},{n:["four leaf clover"],u:"1f340",a:"0.6"},{n:["maple leaf"],u:"1f341",a:"0.6"},{n:["fallen leaf"],u:"1f342",a:"0.6"},{n:["leaves","leaf fluttering in wind"],u:"1f343",a:"0.6"},{n:["empty nest"],u:"1fab9",a:"14.0"},{n:["nest with eggs"],u:"1faba",a:"14.0"}],food_drink:[{n:["grapes"],u:"1f347",a:"0.6"},{n:["melon"],u:"1f348",a:"0.6"},{n:["watermelon"],u:"1f349",a:"0.6"},{n:["tangerine"],u:"1f34a",a:"0.6"},{n:["lemon"],u:"1f34b",a:"1.0"},{n:["banana"],u:"1f34c",a:"0.6"},{n:["pineapple"],u:"1f34d",a:"0.6"},{n:["mango"],u:"1f96d",a:"11.0"},{n:["apple","red apple"],u:"1f34e",a:"0.6"},{n:["green apple"],u:"1f34f",a:"0.6"},{n:["pear"],u:"1f350",a:"1.0"},{n:["peach"],u:"1f351",a:"0.6"},{n:["cherries"],u:"1f352",a:"0.6"},{n:["strawberry"],u:"1f353",a:"0.6"},{n:["blueberries"],u:"1fad0",a:"13.0"},{n:["kiwifruit"],u:"1f95d",a:"3.0"},{n:["tomato"],u:"1f345",a:"0.6"},{n:["olive"],u:"1fad2",a:"13.0"},{n:["coconut"],u:"1f965",a:"5.0"},{n:["avocado"],u:"1f951",a:"3.0"},{n:["eggplant","aubergine"],u:"1f346",a:"0.6"},{n:["potato"],u:"1f954",a:"3.0"},{n:["carrot"],u:"1f955",a:"3.0"},{n:["corn","ear of maize"],u:"1f33d",a:"0.6"},{n:["hot pepper"],u:"1f336-fe0f",a:"0.7"},{n:["bell pepper"],u:"1fad1",a:"13.0"},{n:["cucumber"],u:"1f952",a:"3.0"},{n:["leafy green"],u:"1f96c",a:"11.0"},{n:["broccoli"],u:"1f966",a:"5.0"},{n:["garlic"],u:"1f9c4",a:"12.0"},{n:["onion"],u:"1f9c5",a:"12.0"},{n:["mushroom"],u:"1f344",a:"0.6"},{n:["peanuts"],u:"1f95c",a:"3.0"},{n:["beans"],u:"1fad8",a:"14.0"},{n:["chestnut"],u:"1f330",a:"0.6"},{n:["bread"],u:"1f35e",a:"0.6"},{n:["croissant"],u:"1f950",a:"3.0"},{n:["baguette bread"],u:"1f956",a:"3.0"},{n:["flatbread"],u:"1fad3",a:"13.0"},{n:["pretzel"],u:"1f968",a:"5.0"},{n:["bagel"],u:"1f96f",a:"11.0"},{n:["pancakes"],u:"1f95e",a:"3.0"},{n:["waffle"],u:"1f9c7",a:"12.0"},{n:["cheese wedge"],u:"1f9c0",a:"1.0"},{n:["meat on bone"],u:"1f356",a:"0.6"},{n:["poultry leg"],u:"1f357",a:"0.6"},{n:["cut of meat"],u:"1f969",a:"5.0"},{n:["bacon"],u:"1f953",a:"3.0"},{n:["hamburger"],u:"1f354",a:"0.6"},{n:["fries","french fries"],u:"1f35f",a:"0.6"},{n:["pizza","slice of pizza"],u:"1f355",a:"0.6"},{n:["hotdog","hot dog"],u:"1f32d",a:"1.0"},{n:["sandwich"],u:"1f96a",a:"5.0"},{n:["taco"],u:"1f32e",a:"1.0"},{n:["burrito"],u:"1f32f",a:"1.0"},{n:["tamale"],u:"1fad4",a:"13.0"},{n:["stuffed flatbread"],u:"1f959",a:"3.0"},{n:["falafel"],u:"1f9c6",a:"12.0"},{n:["egg"],u:"1f95a",a:"3.0"},{n:["cooking","fried egg"],u:"1f373",a:"0.6"},{n:["shallow pan of food"],u:"1f958",a:"3.0"},{n:["stew","pot of food"],u:"1f372",a:"0.6"},{n:["fondue"],u:"1fad5",a:"13.0"},{n:["bowl with spoon"],u:"1f963",a:"5.0"},{n:["green salad"],u:"1f957",a:"3.0"},{n:["popcorn"],u:"1f37f",a:"1.0"},{n:["butter"],u:"1f9c8",a:"12.0"},{n:["salt","salt shaker"],u:"1f9c2",a:"11.0"},{n:["canned food"],u:"1f96b",a:"5.0"},{n:["bento","bento box"],u:"1f371",a:"0.6"},{n:["rice cracker"],u:"1f358",a:"0.6"},{n:["rice ball"],u:"1f359",a:"0.6"},{n:["rice","cooked rice"],u:"1f35a",a:"0.6"},{n:["curry","curry and rice"],u:"1f35b",a:"0.6"},{n:["ramen","steaming bowl"],u:"1f35c",a:"0.6"},{n:["spaghetti"],u:"1f35d",a:"0.6"},{n:["sweet potato","roasted sweet potato"],u:"1f360",a:"0.6"},{n:["oden"],u:"1f362",a:"0.6"},{n:["sushi"],u:"1f363",a:"0.6"},{n:["fried shrimp"],u:"1f364",a:"0.6"},{n:["fish cake","fish cake with swirl design"],u:"1f365",a:"0.6"},{n:["moon cake"],u:"1f96e",a:"11.0"},{n:["dango"],u:"1f361",a:"0.6"},{n:["dumpling"],u:"1f95f",a:"5.0"},{n:["fortune cookie"],u:"1f960",a:"5.0"},{n:["takeout box"],u:"1f961",a:"5.0"},{n:["crab"],u:"1f980",a:"1.0"},{n:["lobster"],u:"1f99e",a:"11.0"},{n:["shrimp"],u:"1f990",a:"3.0"},{n:["squid"],u:"1f991",a:"3.0"},{n:["oyster"],u:"1f9aa",a:"12.0"},{n:["icecream","soft ice cream"],u:"1f366",a:"0.6"},{n:["shaved ice"],u:"1f367",a:"0.6"},{n:["ice cream"],u:"1f368",a:"0.6"},{n:["doughnut"],u:"1f369",a:"0.6"},{n:["cookie"],u:"1f36a",a:"0.6"},{n:["birthday","birthday cake"],u:"1f382",a:"0.6"},{n:["cake","shortcake"],u:"1f370",a:"0.6"},{n:["cupcake"],u:"1f9c1",a:"11.0"},{n:["pie"],u:"1f967",a:"5.0"},{n:["chocolate bar"],u:"1f36b",a:"0.6"},{n:["candy"],u:"1f36c",a:"0.6"},{n:["lollipop"],u:"1f36d",a:"0.6"},{n:["custard"],u:"1f36e",a:"0.6"},{n:["honey pot"],u:"1f36f",a:"0.6"},{n:["baby bottle"],u:"1f37c",a:"1.0"},{n:["glass of milk"],u:"1f95b",a:"3.0"},{n:["coffee","hot beverage"],u:"2615",a:"0.6"},{n:["teapot"],u:"1fad6",a:"13.0"},{n:["tea","teacup without handle"],u:"1f375",a:"0.6"},{n:["sake","sake bottle and cup"],u:"1f376",a:"0.6"},{n:["champagne","bottle with popping cork"],u:"1f37e",a:"1.0"},{n:["wine glass"],u:"1f377",a:"0.6"},{n:["cocktail","cocktail glass"],u:"1f378",a:"0.6"},{n:["tropical drink"],u:"1f379",a:"0.6"},{n:["beer","beer mug"],u:"1f37a",a:"0.6"},{n:["beers","clinking beer mugs"],u:"1f37b",a:"0.6"},{n:["clinking glasses"],u:"1f942",a:"3.0"},{n:["tumbler glass"],u:"1f943",a:"3.0"},{n:["pouring liquid"],u:"1fad7",a:"14.0"},{n:["cup with straw"],u:"1f964",a:"5.0"},{n:["bubble tea"],u:"1f9cb",a:"13.0"},{n:["beverage box"],u:"1f9c3",a:"12.0"},{n:["mate drink"],u:"1f9c9",a:"12.0"},{n:["ice cube"],u:"1f9ca",a:"12.0"},{n:["chopsticks"],u:"1f962",a:"5.0"},{n:["knife fork plate","fork and knife with plate"],u:"1f37d-fe0f",a:"0.7"},{n:["fork and knife"],u:"1f374",a:"0.6"},{n:["spoon"],u:"1f944",a:"3.0"},{n:["hocho","knife"],u:"1f52a",a:"0.6"},{n:["jar"],u:"1fad9",a:"14.0"},{n:["amphora"],u:"1f3fa",a:"1.0"}],travel_places:[{n:["earth africa","earth globe europe-africa"],u:"1f30d",a:"0.7"},{n:["earth americas","earth globe americas"],u:"1f30e",a:"0.7"},{n:["earth asia","earth globe asia-australia"],u:"1f30f",a:"0.6"},{n:["globe with meridians"],u:"1f310",a:"1.0"},{n:["world map"],u:"1f5fa-fe0f",a:"0.7"},{n:["japan","silhouette of japan"],u:"1f5fe",a:"0.6"},{n:["compass"],u:"1f9ed",a:"11.0"},{n:["snow-capped mountain","snow capped mountain"],u:"1f3d4-fe0f",a:"0.7"},{n:["mountain"],u:"26f0-fe0f",a:"0.7"},{n:["volcano"],u:"1f30b",a:"0.6"},{n:["mount fuji"],u:"1f5fb",a:"0.6"},{n:["camping"],u:"1f3d5-fe0f",a:"0.7"},{n:["beach with umbrella"],u:"1f3d6-fe0f",a:"0.7"},{n:["desert"],u:"1f3dc-fe0f",a:"0.7"},{n:["desert island"],u:"1f3dd-fe0f",a:"0.7"},{n:["national park"],u:"1f3de-fe0f",a:"0.7"},{n:["stadium"],u:"1f3df-fe0f",a:"0.7"},{n:["classical building"],u:"1f3db-fe0f",a:"0.7"},{n:["building construction"],u:"1f3d7-fe0f",a:"0.7"},{n:["brick","bricks"],u:"1f9f1",a:"11.0"},{n:["rock"],u:"1faa8",a:"13.0"},{n:["wood"],u:"1fab5",a:"13.0"},{n:["hut"],u:"1f6d6",a:"13.0"},{n:["houses","house buildings"],u:"1f3d8-fe0f",a:"0.7"},{n:["derelict house","derelict house building"],u:"1f3da-fe0f",a:"0.7"},{n:["house","house building"],u:"1f3e0",a:"0.6"},{n:["house with garden"],u:"1f3e1",a:"0.6"},{n:["office","office building"],u:"1f3e2",a:"0.6"},{n:["post office","japanese post office"],u:"1f3e3",a:"0.6"},{n:["european post office"],u:"1f3e4",a:"1.0"},{n:["hospital"],u:"1f3e5",a:"0.6"},{n:["bank"],u:"1f3e6",a:"0.6"},{n:["hotel"],u:"1f3e8",a:"0.6"},{n:["love hotel"],u:"1f3e9",a:"0.6"},{n:["convenience store"],u:"1f3ea",a:"0.6"},{n:["school"],u:"1f3eb",a:"0.6"},{n:["department store"],u:"1f3ec",a:"0.6"},{n:["factory"],u:"1f3ed",a:"0.6"},{n:["japanese castle"],u:"1f3ef",a:"0.6"},{n:["european castle"],u:"1f3f0",a:"0.6"},{n:["wedding"],u:"1f492",a:"0.6"},{n:["tokyo tower"],u:"1f5fc",a:"0.6"},{n:["statue of liberty"],u:"1f5fd",a:"0.6"},{n:["church"],u:"26ea",a:"0.6"},{n:["mosque"],u:"1f54c",a:"1.0"},{n:["hindu temple"],u:"1f6d5",a:"12.0"},{n:["synagogue"],u:"1f54d",a:"1.0"},{n:["shinto shrine"],u:"26e9-fe0f",a:"0.7"},{n:["kaaba"],u:"1f54b",a:"1.0"},{n:["fountain"],u:"26f2",a:"0.6"},{n:["tent"],u:"26fa",a:"0.6"},{n:["foggy"],u:"1f301",a:"0.6"},{n:["night with stars"],u:"1f303",a:"0.6"},{n:["cityscape"],u:"1f3d9-fe0f",a:"0.7"},{n:["sunrise over mountains"],u:"1f304",a:"0.6"},{n:["sunrise"],u:"1f305",a:"0.6"},{n:["city sunset","cityscape at dusk"],u:"1f306",a:"0.6"},{n:["city sunrise","sunset over buildings"],u:"1f307",a:"0.6"},{n:["bridge at night"],u:"1f309",a:"0.6"},{n:["hotsprings","hot springs"],u:"2668-fe0f",a:"0.6"},{n:["carousel horse"],u:"1f3a0",a:"0.6"},{n:["playground slide"],u:"1f6dd",a:"14.0"},{n:["ferris wheel"],u:"1f3a1",a:"0.6"},{n:["roller coaster"],u:"1f3a2",a:"0.6"},{n:["barber","barber pole"],u:"1f488",a:"0.6"},{n:["circus tent"],u:"1f3aa",a:"0.6"},{n:["steam locomotive"],u:"1f682",a:"1.0"},{n:["railway car"],u:"1f683",a:"0.6"},{n:["high-speed train","bullettrain side"],u:"1f684",a:"0.6"},{n:["bullettrain front","high-speed train with bullet nose"],u:"1f685",a:"0.6"},{n:["train","train2"],u:"1f686",a:"1.0"},{n:["metro"],u:"1f687",a:"0.6"},{n:["light rail"],u:"1f688",a:"1.0"},{n:["station"],u:"1f689",a:"0.6"},{n:["tram"],u:"1f68a",a:"1.0"},{n:["monorail"],u:"1f69d",a:"1.0"},{n:["mountain railway"],u:"1f69e",a:"1.0"},{n:["train","tram car"],u:"1f68b",a:"1.0"},{n:["bus"],u:"1f68c",a:"0.6"},{n:["oncoming bus"],u:"1f68d",a:"0.7"},{n:["trolleybus"],u:"1f68e",a:"1.0"},{n:["minibus"],u:"1f690",a:"1.0"},{n:["ambulance"],u:"1f691",a:"0.6"},{n:["fire engine"],u:"1f692",a:"0.6"},{n:["police car"],u:"1f693",a:"0.6"},{n:["oncoming police car"],u:"1f694",a:"0.7"},{n:["taxi"],u:"1f695",a:"0.6"},{n:["oncoming taxi"],u:"1f696",a:"1.0"},{n:["car","red car","automobile"],u:"1f697",a:"0.6"},{n:["oncoming automobile"],u:"1f698",a:"0.7"},{n:["blue car","recreational vehicle"],u:"1f699",a:"0.6"},{n:["pickup truck"],u:"1f6fb",a:"13.0"},{n:["truck","delivery truck"],u:"1f69a",a:"0.6"},{n:["articulated lorry"],u:"1f69b",a:"1.0"},{n:["tractor"],u:"1f69c",a:"1.0"},{n:["racing car"],u:"1f3ce-fe0f",a:"0.7"},{n:["motorcycle","racing motorcycle"],u:"1f3cd-fe0f",a:"0.7"},{n:["motor scooter"],u:"1f6f5",a:"3.0"},{n:["manual wheelchair"],u:"1f9bd",a:"12.0"},{n:["motorized wheelchair"],u:"1f9bc",a:"12.0"},{n:["auto rickshaw"],u:"1f6fa",a:"12.0"},{n:["bike","bicycle"],u:"1f6b2",a:"0.6"},{n:["scooter"],u:"1f6f4",a:"3.0"},{n:["skateboard"],u:"1f6f9",a:"11.0"},{n:["roller skate"],u:"1f6fc",a:"13.0"},{n:["busstop","bus stop"],u:"1f68f",a:"0.6"},{n:["motorway"],u:"1f6e3-fe0f",a:"0.7"},{n:["railway track"],u:"1f6e4-fe0f",a:"0.7"},{n:["oil drum"],u:"1f6e2-fe0f",a:"0.7"},{n:["fuelpump","fuel pump"],u:"26fd",a:"0.6"},{n:["wheel"],u:"1f6de",a:"14.0"},{n:["rotating light","police cars revolving light"],u:"1f6a8",a:"0.6"},{n:["traffic light","horizontal traffic light"],u:"1f6a5",a:"0.6"},{n:["vertical traffic light"],u:"1f6a6",a:"1.0"},{n:["octagonal sign"],u:"1f6d1",a:"3.0"},{n:["construction","construction sign"],u:"1f6a7",a:"0.6"},{n:["anchor"],u:"2693",a:"0.6"},{n:["ring buoy"],u:"1f6df",a:"14.0"},{n:["boat","sailboat"],u:"26f5",a:"0.6"},{n:["canoe"],u:"1f6f6",a:"3.0"},{n:["speedboat"],u:"1f6a4",a:"0.6"},{n:["passenger ship"],u:"1f6f3-fe0f",a:"0.7"},{n:["ferry"],u:"26f4-fe0f",a:"0.7"},{n:["motor boat"],u:"1f6e5-fe0f",a:"0.7"},{n:["ship"],u:"1f6a2",a:"0.6"},{n:["airplane"],u:"2708-fe0f",a:"0.6"},{n:["small airplane"],u:"1f6e9-fe0f",a:"0.7"},{n:["airplane departure"],u:"1f6eb",a:"1.0"},{n:["airplane arriving"],u:"1f6ec",a:"1.0"},{n:["parachute"],u:"1fa82",a:"12.0"},{n:["seat"],u:"1f4ba",a:"0.6"},{n:["helicopter"],u:"1f681",a:"1.0"},{n:["suspension railway"],u:"1f69f",a:"1.0"},{n:["mountain cableway"],u:"1f6a0",a:"1.0"},{n:["aerial tramway"],u:"1f6a1",a:"1.0"},{n:["satellite"],u:"1f6f0-fe0f",a:"0.7"},{n:["rocket"],u:"1f680",a:"0.6"},{n:["flying saucer"],u:"1f6f8",a:"5.0"},{n:["bellhop bell"],u:"1f6ce-fe0f",a:"0.7"},{n:["luggage"],u:"1f9f3",a:"11.0"},{n:["hourglass"],u:"231b",a:"0.6"},{n:["hourglass flowing sand","hourglass with flowing sand"],u:"23f3",a:"0.6"},{n:["watch"],u:"231a",a:"0.6"},{n:["alarm clock"],u:"23f0",a:"0.6"},{n:["stopwatch"],u:"23f1-fe0f",a:"1.0"},{n:["timer clock"],u:"23f2-fe0f",a:"1.0"},{n:["mantelpiece clock"],u:"1f570-fe0f",a:"0.7"},{n:["clock12","clock face twelve oclock"],u:"1f55b",a:"0.6"},{n:["clock1230","clock face twelve-thirty"],u:"1f567",a:"0.7"},{n:["clock1","clock face one oclock"],u:"1f550",a:"0.6"},{n:["clock130","clock face one-thirty"],u:"1f55c",a:"0.7"},{n:["clock2","clock face two oclock"],u:"1f551",a:"0.6"},{n:["clock230","clock face two-thirty"],u:"1f55d",a:"0.7"},{n:["clock3","clock face three oclock"],u:"1f552",a:"0.6"},{n:["clock330","clock face three-thirty"],u:"1f55e",a:"0.7"},{n:["clock4","clock face four oclock"],u:"1f553",a:"0.6"},{n:["clock430","clock face four-thirty"],u:"1f55f",a:"0.7"},{n:["clock5","clock face five oclock"],u:"1f554",a:"0.6"},{n:["clock530","clock face five-thirty"],u:"1f560",a:"0.7"},{n:["clock6","clock face six oclock"],u:"1f555",a:"0.6"},{n:["clock630","clock face six-thirty"],u:"1f561",a:"0.7"},{n:["clock7","clock face seven oclock"],u:"1f556",a:"0.6"},{n:["clock730","clock face seven-thirty"],u:"1f562",a:"0.7"},{n:["clock8","clock face eight oclock"],u:"1f557",a:"0.6"},{n:["clock830","clock face eight-thirty"],u:"1f563",a:"0.7"},{n:["clock9","clock face nine oclock"],u:"1f558",a:"0.6"},{n:["clock930","clock face nine-thirty"],u:"1f564",a:"0.7"},{n:["clock10","clock face ten oclock"],u:"1f559",a:"0.6"},{n:["clock1030","clock face ten-thirty"],u:"1f565",a:"0.7"},{n:["clock11","clock face eleven oclock"],u:"1f55a",a:"0.6"},{n:["clock1130","clock face eleven-thirty"],u:"1f566",a:"0.7"},{n:["new moon","new moon symbol"],u:"1f311",a:"0.6"},{n:["waxing crescent moon","waxing crescent moon symbol"],u:"1f312",a:"1.0"},{n:["first quarter moon","first quarter moon symbol"],u:"1f313",a:"0.6"},{n:["moon","waxing gibbous moon","waxing gibbous moon symbol"],u:"1f314",a:"0.6"},{n:["full moon","full moon symbol"],u:"1f315",a:"0.6"},{n:["waning gibbous moon","waning gibbous moon symbol"],u:"1f316",a:"1.0"},{n:["last quarter moon","last quarter moon symbol"],u:"1f317",a:"1.0"},{n:["waning crescent moon","waning crescent moon symbol"],u:"1f318",a:"1.0"},{n:["crescent moon"],u:"1f319",a:"0.6"},{n:["new moon with face"],u:"1f31a",a:"1.0"},{n:["first quarter moon with face"],u:"1f31b",a:"0.6"},{n:["last quarter moon with face"],u:"1f31c",a:"0.7"},{n:["thermometer"],u:"1f321-fe0f",a:"0.7"},{n:["sunny","black sun with rays"],u:"2600-fe0f",a:"0.6"},{n:["full moon with face"],u:"1f31d",a:"1.0"},{n:["sun with face"],u:"1f31e",a:"1.0"},{n:["ringed planet"],u:"1fa90",a:"12.0"},{n:["star","white medium star"],u:"2b50",a:"0.6"},{n:["star2","glowing star"],u:"1f31f",a:"0.6"},{n:["stars","shooting star"],u:"1f320",a:"0.6"},{n:["milky way"],u:"1f30c",a:"0.6"},{n:["cloud"],u:"2601-fe0f",a:"0.6"},{n:["partly sunny","sun behind cloud"],u:"26c5",a:"0.6"},{n:["thunder cloud and rain","cloud with lightning and rain"],u:"26c8-fe0f",a:"0.7"},{n:["mostly sunny","sun small cloud","sun behind small cloud"],u:"1f324-fe0f",a:"0.7"},{n:["barely sunny","sun behind cloud","sun behind large cloud"],u:"1f325-fe0f",a:"0.7"},{n:["partly sunny rain","sun behind rain cloud"],u:"1f326-fe0f",a:"0.7"},{n:["rain cloud","cloud with rain"],u:"1f327-fe0f",a:"0.7"},{n:["snow cloud","cloud with snow"],u:"1f328-fe0f",a:"0.7"},{n:["lightning","lightning cloud","cloud with lightning"],u:"1f329-fe0f",a:"0.7"},{n:["tornado","tornado cloud"],u:"1f32a-fe0f",a:"0.7"},{n:["fog"],u:"1f32b-fe0f",a:"0.7"},{n:["wind face","wind blowing face"],u:"1f32c-fe0f",a:"0.7"},{n:["cyclone"],u:"1f300",a:"0.6"},{n:["rainbow"],u:"1f308",a:"0.6"},{n:["closed umbrella"],u:"1f302",a:"0.6"},{n:["umbrella"],u:"2602-fe0f",a:"0.7"},{n:["umbrella with rain drops"],u:"2614",a:"0.6"},{n:["umbrella on ground"],u:"26f1-fe0f",a:"0.7"},{n:["zap","high voltage sign"],u:"26a1",a:"0.6"},{n:["snowflake"],u:"2744-fe0f",a:"0.6"},{n:["snowman"],u:"2603-fe0f",a:"0.7"},{n:["snowman without snow"],u:"26c4",a:"0.6"},{n:["comet"],u:"2604-fe0f",a:"1.0"},{n:["fire"],u:"1f525",a:"0.6"},{n:["droplet"],u:"1f4a7",a:"0.6"},{n:["ocean","water wave"],u:"1f30a",a:"0.6"}],activities:[{n:["jack-o-lantern","jack o lantern"],u:"1f383",a:"0.6"},{n:["christmas tree"],u:"1f384",a:"0.6"},{n:["fireworks"],u:"1f386",a:"0.6"},{n:["sparkler","firework sparkler"],u:"1f387",a:"0.6"},{n:["firecracker"],u:"1f9e8",a:"11.0"},{n:["sparkles"],u:"2728",a:"0.6"},{n:["balloon"],u:"1f388",a:"0.6"},{n:["tada","party popper"],u:"1f389",a:"0.6"},{n:["confetti ball"],u:"1f38a",a:"0.6"},{n:["tanabata tree"],u:"1f38b",a:"0.6"},{n:["bamboo","pine decoration"],u:"1f38d",a:"0.6"},{n:["dolls","japanese dolls"],u:"1f38e",a:"0.6"},{n:["flags","carp streamer"],u:"1f38f",a:"0.6"},{n:["wind chime"],u:"1f390",a:"0.6"},{n:["rice scene","moon viewing ceremony"],u:"1f391",a:"0.6"},{n:["red envelope","red gift envelope"],u:"1f9e7",a:"11.0"},{n:["ribbon"],u:"1f380",a:"0.6"},{n:["gift","wrapped present"],u:"1f381",a:"0.6"},{n:["reminder ribbon"],u:"1f397-fe0f",a:"0.7"},{n:["admission tickets"],u:"1f39f-fe0f",a:"0.7"},{n:["ticket"],u:"1f3ab",a:"0.6"},{n:["medal","military medal"],u:"1f396-fe0f",a:"0.7"},{n:["trophy"],u:"1f3c6",a:"0.6"},{n:["sports medal"],u:"1f3c5",a:"1.0"},{n:["first place medal"],u:"1f947",a:"3.0"},{n:["second place medal"],u:"1f948",a:"3.0"},{n:["third place medal"],u:"1f949",a:"3.0"},{n:["soccer","soccer ball"],u:"26bd",a:"0.6"},{n:["baseball"],u:"26be",a:"0.6"},{n:["softball"],u:"1f94e",a:"11.0"},{n:["basketball","basketball and hoop"],u:"1f3c0",a:"0.6"},{n:["volleyball"],u:"1f3d0",a:"1.0"},{n:["football","american football"],u:"1f3c8",a:"0.6"},{n:["rugby football"],u:"1f3c9",a:"1.0"},{n:["tennis","tennis racquet and ball"],u:"1f3be",a:"0.6"},{n:["flying disc"],u:"1f94f",a:"11.0"},{n:["bowling"],u:"1f3b3",a:"0.6"},{n:["cricket bat and ball"],u:"1f3cf",a:"1.0"},{n:["field hockey stick and ball"],u:"1f3d1",a:"1.0"},{n:["ice hockey stick and puck"],u:"1f3d2",a:"1.0"},{n:["lacrosse","lacrosse stick and ball"],u:"1f94d",a:"11.0"},{n:["table tennis paddle and ball"],u:"1f3d3",a:"1.0"},{n:["badminton racquet and shuttlecock"],u:"1f3f8",a:"1.0"},{n:["boxing glove"],u:"1f94a",a:"3.0"},{n:["martial arts uniform"],u:"1f94b",a:"3.0"},{n:["goal net"],u:"1f945",a:"3.0"},{n:["golf","flag in hole"],u:"26f3",a:"0.6"},{n:["ice skate"],u:"26f8-fe0f",a:"0.7"},{n:["fishing pole and fish"],u:"1f3a3",a:"0.6"},{n:["diving mask"],u:"1f93f",a:"12.0"},{n:["running shirt with sash"],u:"1f3bd",a:"0.6"},{n:["ski","ski and ski boot"],u:"1f3bf",a:"0.6"},{n:["sled"],u:"1f6f7",a:"5.0"},{n:["curling stone"],u:"1f94c",a:"5.0"},{n:["dart","direct hit"],u:"1f3af",a:"0.6"},{n:["yo-yo"],u:"1fa80",a:"12.0"},{n:["kite"],u:"1fa81",a:"12.0"},{n:["8ball","billiards"],u:"1f3b1",a:"0.6"},{n:["crystal ball"],u:"1f52e",a:"0.6"},{n:["magic wand"],u:"1fa84",a:"13.0"},{n:["nazar amulet"],u:"1f9ff",a:"11.0"},{n:["hamsa"],u:"1faac",a:"14.0"},{n:["video game"],u:"1f3ae",a:"0.6"},{n:["joystick"],u:"1f579-fe0f",a:"0.7"},{n:["slot machine"],u:"1f3b0",a:"0.6"},{n:["game die"],u:"1f3b2",a:"0.6"},{n:["jigsaw","jigsaw puzzle piece"],u:"1f9e9",a:"11.0"},{n:["teddy bear"],u:"1f9f8",a:"11.0"},{n:["pinata"],u:"1fa85",a:"13.0"},{n:["mirror ball"],u:"1faa9",a:"14.0"},{n:["nesting dolls"],u:"1fa86",a:"13.0"},{n:["spades","black spade suit"],u:"2660-fe0f",a:"0.6"},{n:["hearts","black heart suit"],u:"2665-fe0f",a:"0.6"},{n:["diamonds","black diamond suit"],u:"2666-fe0f",a:"0.6"},{n:["clubs","black club suit"],u:"2663-fe0f",a:"0.6"},{n:["chess pawn"],u:"265f-fe0f",a:"11.0"},{n:["black joker","playing card black joker"],u:"1f0cf",a:"0.6"},{n:["mahjong","mahjong tile red dragon"],u:"1f004",a:"0.6"},{n:["flower playing cards"],u:"1f3b4",a:"0.6"},{n:["performing arts"],u:"1f3ad",a:"0.6"},{n:["framed picture","frame with picture"],u:"1f5bc-fe0f",a:"0.7"},{n:["art","artist palette"],u:"1f3a8",a:"0.6"},{n:["thread","spool of thread"],u:"1f9f5",a:"11.0"},{n:["sewing needle"],u:"1faa1",a:"13.0"},{n:["yarn","ball of yarn"],u:"1f9f6",a:"11.0"},{n:["knot"],u:"1faa2",a:"13.0"}],objects:[{n:["eyeglasses"],u:"1f453",a:"0.6"},{n:["sunglasses","dark sunglasses"],u:"1f576-fe0f",a:"0.7"},{n:["goggles"],u:"1f97d",a:"11.0"},{n:["lab coat"],u:"1f97c",a:"11.0"},{n:["safety vest"],u:"1f9ba",a:"12.0"},{n:["necktie"],u:"1f454",a:"0.6"},{n:["shirt","tshirt","t-shirt"],u:"1f455",a:"0.6"},{n:["jeans"],u:"1f456",a:"0.6"},{n:["scarf"],u:"1f9e3",a:"5.0"},{n:["gloves"],u:"1f9e4",a:"5.0"},{n:["coat"],u:"1f9e5",a:"5.0"},{n:["socks"],u:"1f9e6",a:"5.0"},{n:["dress"],u:"1f457",a:"0.6"},{n:["kimono"],u:"1f458",a:"0.6"},{n:["sari"],u:"1f97b",a:"12.0"},{n:["one-piece swimsuit"],u:"1fa71",a:"12.0"},{n:["briefs"],u:"1fa72",a:"12.0"},{n:["shorts"],u:"1fa73",a:"12.0"},{n:["bikini"],u:"1f459",a:"0.6"},{n:["womans clothes"],u:"1f45a",a:"0.6"},{n:["purse"],u:"1f45b",a:"0.6"},{n:["handbag"],u:"1f45c",a:"0.6"},{n:["pouch"],u:"1f45d",a:"0.6"},{n:["shopping bags"],u:"1f6cd-fe0f",a:"0.7"},{n:["school satchel"],u:"1f392",a:"0.6"},{n:["thong sandal"],u:"1fa74",a:"13.0"},{n:["shoe","mans shoe"],u:"1f45e",a:"0.6"},{n:["athletic shoe"],u:"1f45f",a:"0.6"},{n:["hiking boot"],u:"1f97e",a:"11.0"},{n:["flat shoe","womans flat shoe"],u:"1f97f",a:"11.0"},{n:["high heel","high-heeled shoe"],u:"1f460",a:"0.6"},{n:["sandal","womans sandal"],u:"1f461",a:"0.6"},{n:["ballet shoes"],u:"1fa70",a:"12.0"},{n:["boot","womans boots"],u:"1f462",a:"0.6"},{n:["crown"],u:"1f451",a:"0.6"},{n:["womans hat"],u:"1f452",a:"0.6"},{n:["tophat","top hat"],u:"1f3a9",a:"0.6"},{n:["mortar board","graduation cap"],u:"1f393",a:"0.6"},{n:["billed cap"],u:"1f9e2",a:"5.0"},{n:["military helmet"],u:"1fa96",a:"13.0"},{n:["rescue worker’s helmet","helmet with white cross"],u:"26d1-fe0f",a:"0.7"},{n:["prayer beads"],u:"1f4ff",a:"1.0"},{n:["lipstick"],u:"1f484",a:"0.6"},{n:["ring"],u:"1f48d",a:"0.6"},{n:["gem","gem stone"],u:"1f48e",a:"0.6"},{n:["mute","speaker with cancellation stroke"],u:"1f507",a:"1.0"},{n:["speaker"],u:"1f508",a:"0.7"},{n:["sound","speaker with one sound wave"],u:"1f509",a:"1.0"},{n:["loud sound","speaker with three sound waves"],u:"1f50a",a:"0.6"},{n:["loudspeaker","public address loudspeaker"],u:"1f4e2",a:"0.6"},{n:["mega","cheering megaphone"],u:"1f4e3",a:"0.6"},{n:["postal horn"],u:"1f4ef",a:"1.0"},{n:["bell"],u:"1f514",a:"0.6"},{n:["no bell","bell with cancellation stroke"],u:"1f515",a:"1.0"},{n:["musical score"],u:"1f3bc",a:"0.6"},{n:["musical note"],u:"1f3b5",a:"0.6"},{n:["notes","multiple musical notes"],u:"1f3b6",a:"0.6"},{n:["studio microphone"],u:"1f399-fe0f",a:"0.7"},{n:["level slider"],u:"1f39a-fe0f",a:"0.7"},{n:["control knobs"],u:"1f39b-fe0f",a:"0.7"},{n:["microphone"],u:"1f3a4",a:"0.6"},{n:["headphone","headphones"],u:"1f3a7",a:"0.6"},{n:["radio"],u:"1f4fb",a:"0.6"},{n:["saxophone"],u:"1f3b7",a:"0.6"},{n:["accordion"],u:"1fa97",a:"13.0"},{n:["guitar"],u:"1f3b8",a:"0.6"},{n:["musical keyboard"],u:"1f3b9",a:"0.6"},{n:["trumpet"],u:"1f3ba",a:"0.6"},{n:["violin"],u:"1f3bb",a:"0.6"},{n:["banjo"],u:"1fa95",a:"12.0"},{n:["drum with drumsticks"],u:"1f941",a:"3.0"},{n:["long drum"],u:"1fa98",a:"13.0"},{n:["iphone","mobile phone"],u:"1f4f1",a:"0.6"},{n:["calling","mobile phone with rightwards arrow at left"],u:"1f4f2",a:"0.6"},{n:["phone","telephone","black telephone"],u:"260e-fe0f",a:"0.6"},{n:["telephone receiver"],u:"1f4de",a:"0.6"},{n:["pager"],u:"1f4df",a:"0.6"},{n:["fax","fax machine"],u:"1f4e0",a:"0.6"},{n:["battery"],u:"1f50b",a:"0.6"},{n:["low battery"],u:"1faab",a:"14.0"},{n:["electric plug"],u:"1f50c",a:"0.6"},{n:["computer","personal computer"],u:"1f4bb",a:"0.6"},{n:["desktop computer"],u:"1f5a5-fe0f",a:"0.7"},{n:["printer"],u:"1f5a8-fe0f",a:"0.7"},{n:["keyboard"],u:"2328-fe0f",a:"1.0"},{n:["computer mouse","three button mouse"],u:"1f5b1-fe0f",a:"0.7"},{n:["trackball"],u:"1f5b2-fe0f",a:"0.7"},{n:["minidisc"],u:"1f4bd",a:"0.6"},{n:["floppy disk"],u:"1f4be",a:"0.6"},{n:["cd","optical disc"],u:"1f4bf",a:"0.6"},{n:["dvd"],u:"1f4c0",a:"0.6"},{n:["abacus"],u:"1f9ee",a:"11.0"},{n:["movie camera"],u:"1f3a5",a:"0.6"},{n:["film frames"],u:"1f39e-fe0f",a:"0.7"},{n:["film projector"],u:"1f4fd-fe0f",a:"0.7"},{n:["clapper","clapper board"],u:"1f3ac",a:"0.6"},{n:["tv","television"],u:"1f4fa",a:"0.6"},{n:["camera"],u:"1f4f7",a:"0.6"},{n:["camera with flash"],u:"1f4f8",a:"1.0"},{n:["video camera"],u:"1f4f9",a:"0.6"},{n:["vhs","videocassette"],u:"1f4fc",a:"0.6"},{n:["mag","left-pointing magnifying glass"],u:"1f50d",a:"0.6"},{n:["mag right","right-pointing magnifying glass"],u:"1f50e",a:"0.6"},{n:["candle"],u:"1f56f-fe0f",a:"0.7"},{n:["bulb","electric light bulb"],u:"1f4a1",a:"0.6"},{n:["flashlight","electric torch"],u:"1f526",a:"0.6"},{n:["lantern","izakaya lantern"],u:"1f3ee",a:"0.6"},{n:["diya lamp"],u:"1fa94",a:"12.0"},{n:["notebook with decorative cover"],u:"1f4d4",a:"0.6"},{n:["closed book"],u:"1f4d5",a:"0.6"},{n:["book","open book"],u:"1f4d6",a:"0.6"},{n:["green book"],u:"1f4d7",a:"0.6"},{n:["blue book"],u:"1f4d8",a:"0.6"},{n:["orange book"],u:"1f4d9",a:"0.6"},{n:["books"],u:"1f4da",a:"0.6"},{n:["notebook"],u:"1f4d3",a:"0.6"},{n:["ledger"],u:"1f4d2",a:"0.6"},{n:["page with curl"],u:"1f4c3",a:"0.6"},{n:["scroll"],u:"1f4dc",a:"0.6"},{n:["page facing up"],u:"1f4c4",a:"0.6"},{n:["newspaper"],u:"1f4f0",a:"0.6"},{n:["rolled-up newspaper","rolled up newspaper"],u:"1f5de-fe0f",a:"0.7"},{n:["bookmark tabs"],u:"1f4d1",a:"0.6"},{n:["bookmark"],u:"1f516",a:"0.6"},{n:["label"],u:"1f3f7-fe0f",a:"0.7"},{n:["moneybag","money bag"],u:"1f4b0",a:"0.6"},{n:["coin"],u:"1fa99",a:"13.0"},{n:["yen","banknote with yen sign"],u:"1f4b4",a:"0.6"},{n:["dollar","banknote with dollar sign"],u:"1f4b5",a:"0.6"},{n:["euro","banknote with euro sign"],u:"1f4b6",a:"1.0"},{n:["pound","banknote with pound sign"],u:"1f4b7",a:"1.0"},{n:["money with wings"],u:"1f4b8",a:"0.6"},{n:["credit card"],u:"1f4b3",a:"0.6"},{n:["receipt"],u:"1f9fe",a:"11.0"},{n:["chart","chart with upwards trend and yen sign"],u:"1f4b9",a:"0.6"},{n:["email","envelope"],u:"2709-fe0f",a:"0.6"},{n:["e-mail","e-mail symbol"],u:"1f4e7",a:"0.6"},{n:["incoming envelope"],u:"1f4e8",a:"0.6"},{n:["envelope with arrow","envelope with downwards arrow above"],u:"1f4e9",a:"0.6"},{n:["outbox tray"],u:"1f4e4",a:"0.6"},{n:["inbox tray"],u:"1f4e5",a:"0.6"},{n:["package"],u:"1f4e6",a:"0.6"},{n:["mailbox","closed mailbox with raised flag"],u:"1f4eb",a:"0.6"},{n:["mailbox closed","closed mailbox with lowered flag"],u:"1f4ea",a:"0.6"},{n:["mailbox with mail","open mailbox with raised flag"],u:"1f4ec",a:"0.7"},{n:["mailbox with no mail","open mailbox with lowered flag"],u:"1f4ed",a:"0.7"},{n:["postbox"],u:"1f4ee",a:"0.6"},{n:["ballot box with ballot"],u:"1f5f3-fe0f",a:"0.7"},{n:["pencil","pencil2"],u:"270f-fe0f",a:"0.6"},{n:["black nib"],u:"2712-fe0f",a:"0.6"},{n:["fountain pen","lower left fountain pen"],u:"1f58b-fe0f",a:"0.7"},{n:["pen","lower left ballpoint pen"],u:"1f58a-fe0f",a:"0.7"},{n:["paintbrush","lower left paintbrush"],u:"1f58c-fe0f",a:"0.7"},{n:["crayon","lower left crayon"],u:"1f58d-fe0f",a:"0.7"},{n:["memo","pencil"],u:"1f4dd",a:"0.6"},{n:["briefcase"],u:"1f4bc",a:"0.6"},{n:["file folder"],u:"1f4c1",a:"0.6"},{n:["open file folder"],u:"1f4c2",a:"0.6"},{n:["card index dividers"],u:"1f5c2-fe0f",a:"0.7"},{n:["date","calendar"],u:"1f4c5",a:"0.6"},{n:["calendar","tear-off calendar"],u:"1f4c6",a:"0.6"},{n:["spiral notepad","spiral note pad"],u:"1f5d2-fe0f",a:"0.7"},{n:["spiral calendar","spiral calendar pad"],u:"1f5d3-fe0f",a:"0.7"},{n:["card index"],u:"1f4c7",a:"0.6"},{n:["chart with upwards trend"],u:"1f4c8",a:"0.6"},{n:["chart with downwards trend"],u:"1f4c9",a:"0.6"},{n:["bar chart"],u:"1f4ca",a:"0.6"},{n:["clipboard"],u:"1f4cb",a:"0.6"},{n:["pushpin"],u:"1f4cc",a:"0.6"},{n:["round pushpin"],u:"1f4cd",a:"0.6"},{n:["paperclip"],u:"1f4ce",a:"0.6"},{n:["linked paperclips"],u:"1f587-fe0f",a:"0.7"},{n:["straight ruler"],u:"1f4cf",a:"0.6"},{n:["triangular ruler"],u:"1f4d0",a:"0.6"},{n:["scissors","black scissors"],u:"2702-fe0f",a:"0.6"},{n:["card file box"],u:"1f5c3-fe0f",a:"0.7"},{n:["file cabinet"],u:"1f5c4-fe0f",a:"0.7"},{n:["wastebasket"],u:"1f5d1-fe0f",a:"0.7"},{n:["lock"],u:"1f512",a:"0.6"},{n:["unlock","open lock"],u:"1f513",a:"0.6"},{n:["lock with ink pen"],u:"1f50f",a:"0.6"},{n:["closed lock with key"],u:"1f510",a:"0.6"},{n:["key"],u:"1f511",a:"0.6"},{n:["old key"],u:"1f5dd-fe0f",a:"0.7"},{n:["hammer"],u:"1f528",a:"0.6"},{n:["axe"],u:"1fa93",a:"12.0"},{n:["pick"],u:"26cf-fe0f",a:"0.7"},{n:["hammer and pick"],u:"2692-fe0f",a:"1.0"},{n:["hammer and wrench"],u:"1f6e0-fe0f",a:"0.7"},{n:["dagger","dagger knife"],u:"1f5e1-fe0f",a:"0.7"},{n:["crossed swords"],u:"2694-fe0f",a:"1.0"},{n:["gun","pistol"],u:"1f52b",a:"0.6"},{n:["boomerang"],u:"1fa83",a:"13.0"},{n:["bow and arrow"],u:"1f3f9",a:"1.0"},{n:["shield"],u:"1f6e1-fe0f",a:"0.7"},{n:["carpentry saw"],u:"1fa9a",a:"13.0"},{n:["wrench"],u:"1f527",a:"0.6"},{n:["screwdriver"],u:"1fa9b",a:"13.0"},{n:["nut and bolt"],u:"1f529",a:"0.6"},{n:["gear"],u:"2699-fe0f",a:"1.0"},{n:["clamp","compression"],u:"1f5dc-fe0f",a:"0.7"},{n:["scales","balance scale"],u:"2696-fe0f",a:"1.0"},{n:["probing cane"],u:"1f9af",a:"12.0"},{n:["link","link symbol"],u:"1f517",a:"0.6"},{n:["chains"],u:"26d3-fe0f",a:"0.7"},{n:["hook"],u:"1fa9d",a:"13.0"},{n:["toolbox"],u:"1f9f0",a:"11.0"},{n:["magnet"],u:"1f9f2",a:"11.0"},{n:["ladder"],u:"1fa9c",a:"13.0"},{n:["alembic"],u:"2697-fe0f",a:"1.0"},{n:["test tube"],u:"1f9ea",a:"11.0"},{n:["petri dish"],u:"1f9eb",a:"11.0"},{n:["dna","dna double helix"],u:"1f9ec",a:"11.0"},{n:["microscope"],u:"1f52c",a:"1.0"},{n:["telescope"],u:"1f52d",a:"1.0"},{n:["satellite antenna"],u:"1f4e1",a:"0.6"},{n:["syringe"],u:"1f489",a:"0.6"},{n:["drop of blood"],u:"1fa78",a:"12.0"},{n:["pill"],u:"1f48a",a:"0.6"},{n:["adhesive bandage"],u:"1fa79",a:"12.0"},{n:["crutch"],u:"1fa7c",a:"14.0"},{n:["stethoscope"],u:"1fa7a",a:"12.0"},{n:["x-ray"],u:"1fa7b",a:"14.0"},{n:["door"],u:"1f6aa",a:"0.6"},{n:["elevator"],u:"1f6d7",a:"13.0"},{n:["mirror"],u:"1fa9e",a:"13.0"},{n:["window"],u:"1fa9f",a:"13.0"},{n:["bed"],u:"1f6cf-fe0f",a:"0.7"},{n:["couch and lamp"],u:"1f6cb-fe0f",a:"0.7"},{n:["chair"],u:"1fa91",a:"12.0"},{n:["toilet"],u:"1f6bd",a:"0.6"},{n:["plunger"],u:"1faa0",a:"13.0"},{n:["shower"],u:"1f6bf",a:"1.0"},{n:["bathtub"],u:"1f6c1",a:"1.0"},{n:["mouse trap"],u:"1faa4",a:"13.0"},{n:["razor"],u:"1fa92",a:"12.0"},{n:["lotion bottle"],u:"1f9f4",a:"11.0"},{n:["safety pin"],u:"1f9f7",a:"11.0"},{n:["broom"],u:"1f9f9",a:"11.0"},{n:["basket"],u:"1f9fa",a:"11.0"},{n:["roll of paper"],u:"1f9fb",a:"11.0"},{n:["bucket"],u:"1faa3",a:"13.0"},{n:["soap","bar of soap"],u:"1f9fc",a:"11.0"},{n:["bubbles"],u:"1fae7",a:"14.0"},{n:["toothbrush"],u:"1faa5",a:"13.0"},{n:["sponge"],u:"1f9fd",a:"11.0"},{n:["fire extinguisher"],u:"1f9ef",a:"11.0"},{n:["shopping trolley"],u:"1f6d2",a:"3.0"},{n:["smoking","smoking symbol"],u:"1f6ac",a:"0.6"},{n:["coffin"],u:"26b0-fe0f",a:"1.0"},{n:["headstone"],u:"1faa6",a:"13.0"},{n:["funeral urn"],u:"26b1-fe0f",a:"1.0"},{n:["moyai"],u:"1f5ff",a:"0.6"},{n:["placard"],u:"1faa7",a:"13.0"},{n:["identification card"],u:"1faaa",a:"14.0"}],symbols:[{n:["atm","automated teller machine"],u:"1f3e7",a:"0.6"},{n:["put litter in its place","put litter in its place symbol"],u:"1f6ae",a:"1.0"},{n:["potable water","potable water symbol"],u:"1f6b0",a:"1.0"},{n:["wheelchair","wheelchair symbol"],u:"267f",a:"0.6"},{n:["mens","mens symbol"],u:"1f6b9",a:"0.6"},{n:["womens","womens symbol"],u:"1f6ba",a:"0.6"},{n:["restroom"],u:"1f6bb",a:"0.6"},{n:["baby symbol"],u:"1f6bc",a:"0.6"},{n:["wc","water closet"],u:"1f6be",a:"0.6"},{n:["passport control"],u:"1f6c2",a:"1.0"},{n:["customs"],u:"1f6c3",a:"1.0"},{n:["baggage claim"],u:"1f6c4",a:"1.0"},{n:["left luggage"],u:"1f6c5",a:"1.0"},{n:["warning","warning sign"],u:"26a0-fe0f",a:"0.6"},{n:["children crossing"],u:"1f6b8",a:"1.0"},{n:["no entry"],u:"26d4",a:"0.6"},{n:["no entry sign"],u:"1f6ab",a:"0.6"},{n:["no bicycles"],u:"1f6b3",a:"1.0"},{n:["no smoking","no smoking symbol"],u:"1f6ad",a:"0.6"},{n:["do not litter","do not litter symbol"],u:"1f6af",a:"1.0"},{n:["non-potable water","non-potable water symbol"],u:"1f6b1",a:"1.0"},{n:["no pedestrians"],u:"1f6b7",a:"1.0"},{n:["no mobile phones"],u:"1f4f5",a:"1.0"},{n:["underage","no one under eighteen symbol"],u:"1f51e",a:"0.6"},{n:["radioactive","radioactive sign"],u:"2622-fe0f",a:"1.0"},{n:["biohazard","biohazard sign"],u:"2623-fe0f",a:"1.0"},{n:["arrow up","upwards black arrow"],u:"2b06-fe0f",a:"0.6"},{n:["north east arrow","arrow upper right"],u:"2197-fe0f",a:"0.6"},{n:["arrow right","black rightwards arrow"],u:"27a1-fe0f",a:"0.6"},{n:["south east arrow","arrow lower right"],u:"2198-fe0f",a:"0.6"},{n:["arrow down","downwards black arrow"],u:"2b07-fe0f",a:"0.6"},{n:["south west arrow","arrow lower left"],u:"2199-fe0f",a:"0.6"},{n:["arrow left","leftwards black arrow"],u:"2b05-fe0f",a:"0.6"},{n:["north west arrow","arrow upper left"],u:"2196-fe0f",a:"0.6"},{n:["up down arrow","arrow up down"],u:"2195-fe0f",a:"0.6"},{n:["left right arrow"],u:"2194-fe0f",a:"0.6"},{n:["leftwards arrow with hook"],u:"21a9-fe0f",a:"0.6"},{n:["arrow right hook","rightwards arrow with hook"],u:"21aa-fe0f",a:"0.6"},{n:["arrow heading up","arrow pointing rightwards then curving upwards"],u:"2934-fe0f",a:"0.6"},{n:["arrow heading down","arrow pointing rightwards then curving downwards"],u:"2935-fe0f",a:"0.6"},{n:["arrows clockwise","clockwise downwards and upwards open circle arrows"],u:"1f503",a:"0.6"},{n:["arrows counterclockwise","anticlockwise downwards and upwards open circle arrows"],u:"1f504",a:"1.0"},{n:["back","back with leftwards arrow above"],u:"1f519",a:"0.6"},{n:["end","end with leftwards arrow above"],u:"1f51a",a:"0.6"},{n:["on","on with exclamation mark with left right arrow above"],u:"1f51b",a:"0.6"},{n:["soon","soon with rightwards arrow above"],u:"1f51c",a:"0.6"},{n:["top","top with upwards arrow above"],u:"1f51d",a:"0.6"},{n:["place of worship"],u:"1f6d0",a:"1.0"},{n:["atom symbol"],u:"269b-fe0f",a:"1.0"},{n:["om","om symbol"],u:"1f549-fe0f",a:"0.7"},{n:["star of david"],u:"2721-fe0f",a:"0.7"},{n:["wheel of dharma"],u:"2638-fe0f",a:"0.7"},{n:["yin yang"],u:"262f-fe0f",a:"0.7"},{n:["latin cross"],u:"271d-fe0f",a:"0.7"},{n:["orthodox cross"],u:"2626-fe0f",a:"1.0"},{n:["star and crescent"],u:"262a-fe0f",a:"0.7"},{n:["peace symbol"],u:"262e-fe0f",a:"1.0"},{n:["menorah with nine branches"],u:"1f54e",a:"1.0"},{n:["six pointed star","six pointed star with middle dot"],u:"1f52f",a:"0.6"},{n:["aries"],u:"2648",a:"0.6"},{n:["taurus"],u:"2649",a:"0.6"},{n:["gemini"],u:"264a",a:"0.6"},{n:["cancer"],u:"264b",a:"0.6"},{n:["leo"],u:"264c",a:"0.6"},{n:["virgo"],u:"264d",a:"0.6"},{n:["libra"],u:"264e",a:"0.6"},{n:["scorpius"],u:"264f",a:"0.6"},{n:["sagittarius"],u:"2650",a:"0.6"},{n:["capricorn"],u:"2651",a:"0.6"},{n:["aquarius"],u:"2652",a:"0.6"},{n:["pisces"],u:"2653",a:"0.6"},{n:["ophiuchus"],u:"26ce",a:"0.6"},{n:["twisted rightwards arrows"],u:"1f500",a:"1.0"},{n:["repeat","clockwise rightwards and leftwards open circle arrows"],u:"1f501",a:"1.0"},{n:["repeat one","clockwise rightwards and leftwards open circle arrows with circled one overlay"],u:"1f502",a:"1.0"},{n:["arrow forward","black right-pointing triangle"],u:"25b6-fe0f",a:"0.6"},{n:["fast forward","black right-pointing double triangle"],u:"23e9",a:"0.6"},{n:["next track button","black right pointing double triangle with vertical bar"],u:"23ed-fe0f",a:"0.7"},{n:["play or pause button","black right pointing triangle with double vertical bar"],u:"23ef-fe0f",a:"1.0"},{n:["arrow backward","black left-pointing triangle"],u:"25c0-fe0f",a:"0.6"},{n:["rewind","black left-pointing double triangle"],u:"23ea",a:"0.6"},{n:["last track button","black left pointing double triangle with vertical bar"],u:"23ee-fe0f",a:"0.7"},{n:["arrow up small","up-pointing small red triangle"],u:"1f53c",a:"0.6"},{n:["arrow double up","black up-pointing double triangle"],u:"23eb",a:"0.6"},{n:["arrow down small","down-pointing small red triangle"],u:"1f53d",a:"0.6"},{n:["arrow double down","black down-pointing double triangle"],u:"23ec",a:"0.6"},{n:["pause button","double vertical bar"],u:"23f8-fe0f",a:"0.7"},{n:["stop button","black square for stop"],u:"23f9-fe0f",a:"0.7"},{n:["record button","black circle for record"],u:"23fa-fe0f",a:"0.7"},{n:["eject","eject button"],u:"23cf-fe0f",a:"1.0"},{n:["cinema"],u:"1f3a6",a:"0.6"},{n:["low brightness","low brightness symbol"],u:"1f505",a:"1.0"},{n:["high brightness","high brightness symbol"],u:"1f506",a:"1.0"},{n:["signal strength","antenna with bars"],u:"1f4f6",a:"0.6"},{n:["vibration mode"],u:"1f4f3",a:"0.6"},{n:["mobile phone off"],u:"1f4f4",a:"0.6"},{n:["female sign"],u:"2640-fe0f",a:"4.0"},{n:["male sign"],u:"2642-fe0f",a:"4.0"},{n:["transgender symbol"],u:"26a7-fe0f",a:"13.0"},{n:["heavy multiplication x"],u:"2716-fe0f",a:"0.6"},{n:["heavy plus sign"],u:"2795",a:"0.6"},{n:["heavy minus sign"],u:"2796",a:"0.6"},{n:["heavy division sign"],u:"2797",a:"0.6"},{n:["heavy equals sign"],u:"1f7f0",a:"14.0"},{n:["infinity"],u:"267e-fe0f",a:"11.0"},{n:["bangbang","double exclamation mark"],u:"203c-fe0f",a:"0.6"},{n:["interrobang","exclamation question mark"],u:"2049-fe0f",a:"0.6"},{n:["question","black question mark ornament"],u:"2753",a:"0.6"},{n:["grey question","white question mark ornament"],u:"2754",a:"0.6"},{n:["grey exclamation","white exclamation mark ornament"],u:"2755",a:"0.6"},{n:["exclamation","heavy exclamation mark","heavy exclamation mark symbol"],u:"2757",a:"0.6"},{n:["wavy dash"],u:"3030-fe0f",a:"0.6"},{n:["currency exchange"],u:"1f4b1",a:"0.6"},{n:["heavy dollar sign"],u:"1f4b2",a:"0.6"},{n:["medical symbol","staff of aesculapius"],u:"2695-fe0f",a:"4.0"},{n:["recycle","black universal recycling symbol"],u:"267b-fe0f",a:"0.6"},{n:["fleur-de-lis","fleur de lis"],u:"269c-fe0f",a:"1.0"},{n:["trident","trident emblem"],u:"1f531",a:"0.6"},{n:["name badge"],u:"1f4db",a:"0.6"},{n:["beginner","japanese symbol for beginner"],u:"1f530",a:"0.6"},{n:["o","heavy large circle"],u:"2b55",a:"0.6"},{n:["white check mark","white heavy check mark"],u:"2705",a:"0.6"},{n:["ballot box with check"],u:"2611-fe0f",a:"0.6"},{n:["heavy check mark"],u:"2714-fe0f",a:"0.6"},{n:["x","cross mark"],u:"274c",a:"0.6"},{n:["negative squared cross mark"],u:"274e",a:"0.6"},{n:["curly loop"],u:"27b0",a:"0.6"},{n:["loop","double curly loop"],u:"27bf",a:"1.0"},{n:["part alternation mark"],u:"303d-fe0f",a:"0.6"},{n:["eight spoked asterisk"],u:"2733-fe0f",a:"0.6"},{n:["eight pointed black star"],u:"2734-fe0f",a:"0.6"},{n:["sparkle"],u:"2747-fe0f",a:"0.6"},{n:["copyright","copyright sign"],u:"00a9-fe0f",a:"0.6"},{n:["registered","registered sign"],u:"00ae-fe0f",a:"0.6"},{n:["tm","trade mark sign"],u:"2122-fe0f",a:"0.6"},{n:["hash","hash key"],u:"0023-fe0f-20e3",a:"0.6"},{n:["keycap: *","keycap star"],u:"002a-fe0f-20e3",a:"2.0"},{n:["zero","keycap 0"],u:"0030-fe0f-20e3",a:"0.6"},{n:["one","keycap 1"],u:"0031-fe0f-20e3",a:"0.6"},{n:["two","keycap 2"],u:"0032-fe0f-20e3",a:"0.6"},{n:["three","keycap 3"],u:"0033-fe0f-20e3",a:"0.6"},{n:["four","keycap 4"],u:"0034-fe0f-20e3",a:"0.6"},{n:["five","keycap 5"],u:"0035-fe0f-20e3",a:"0.6"},{n:["six","keycap 6"],u:"0036-fe0f-20e3",a:"0.6"},{n:["seven","keycap 7"],u:"0037-fe0f-20e3",a:"0.6"},{n:["eight","keycap 8"],u:"0038-fe0f-20e3",a:"0.6"},{n:["nine","keycap 9"],u:"0039-fe0f-20e3",a:"0.6"},{n:["keycap ten"],u:"1f51f",a:"0.6"},{n:["capital abcd","input symbol for latin capital letters"],u:"1f520",a:"0.6"},{n:["abcd","input symbol for latin small letters"],u:"1f521",a:"0.6"},{n:["1234","input symbol for numbers"],u:"1f522",a:"0.6"},{n:["symbols","input symbol for symbols"],u:"1f523",a:"0.6"},{n:["abc","input symbol for latin letters"],u:"1f524",a:"0.6"},{n:["a","negative squared latin capital letter a"],u:"1f170-fe0f",a:"0.6"},{n:["ab","negative squared ab"],u:"1f18e",a:"0.6"},{n:["b","negative squared latin capital letter b"],u:"1f171-fe0f",a:"0.6"},{n:["cl","squared cl"],u:"1f191",a:"0.6"},{n:["cool","squared cool"],u:"1f192",a:"0.6"},{n:["free","squared free"],u:"1f193",a:"0.6"},{n:["information source"],u:"2139-fe0f",a:"0.6"},{n:["id","squared id"],u:"1f194",a:"0.6"},{n:["m","circled latin capital letter m"],u:"24c2-fe0f",a:"0.6"},{n:["new","squared new"],u:"1f195",a:"0.6"},{n:["ng","squared ng"],u:"1f196",a:"0.6"},{n:["o2","negative squared latin capital letter o"],u:"1f17e-fe0f",a:"0.6"},{n:["ok","squared ok"],u:"1f197",a:"0.6"},{n:["parking","negative squared latin capital letter p"],u:"1f17f-fe0f",a:"0.6"},{n:["sos","squared sos"],u:"1f198",a:"0.6"},{n:["up","squared up with exclamation mark"],u:"1f199",a:"0.6"},{n:["vs","squared vs"],u:"1f19a",a:"0.6"},{n:["koko","squared katakana koko"],u:"1f201",a:"0.6"},{n:["sa","squared katakana sa"],u:"1f202-fe0f",a:"0.6"},{n:["u6708","squared cjk unified ideograph-6708"],u:"1f237-fe0f",a:"0.6"},{n:["u6709","squared cjk unified ideograph-6709"],u:"1f236",a:"0.6"},{n:["u6307","squared cjk unified ideograph-6307"],u:"1f22f",a:"0.6"},{n:["ideograph advantage","circled ideograph advantage"],u:"1f250",a:"0.6"},{n:["u5272","squared cjk unified ideograph-5272"],u:"1f239",a:"0.6"},{n:["u7121","squared cjk unified ideograph-7121"],u:"1f21a",a:"0.6"},{n:["u7981","squared cjk unified ideograph-7981"],u:"1f232",a:"0.6"},{n:["accept","circled ideograph accept"],u:"1f251",a:"0.6"},{n:["u7533","squared cjk unified ideograph-7533"],u:"1f238",a:"0.6"},{n:["u5408","squared cjk unified ideograph-5408"],u:"1f234",a:"0.6"},{n:["u7a7a","squared cjk unified ideograph-7a7a"],u:"1f233",a:"0.6"},{n:["congratulations","circled ideograph congratulation"],u:"3297-fe0f",a:"0.6"},{n:["secret","circled ideograph secret"],u:"3299-fe0f",a:"0.6"},{n:["u55b6","squared cjk unified ideograph-55b6"],u:"1f23a",a:"0.6"},{n:["u6e80","squared cjk unified ideograph-6e80"],u:"1f235",a:"0.6"},{n:["red circle","large red circle"],u:"1f534",a:"0.6"},{n:["large orange circle"],u:"1f7e0",a:"12.0"},{n:["large yellow circle"],u:"1f7e1",a:"12.0"},{n:["large green circle"],u:"1f7e2",a:"12.0"},{n:["large blue circle"],u:"1f535",a:"0.6"},{n:["large purple circle"],u:"1f7e3",a:"12.0"},{n:["large brown circle"],u:"1f7e4",a:"12.0"},{n:["black circle","medium black circle"],u:"26ab",a:"0.6"},{n:["white circle","medium white circle"],u:"26aa",a:"0.6"},{n:["large red square"],u:"1f7e5",a:"12.0"},{n:["large orange square"],u:"1f7e7",a:"12.0"},{n:["large yellow square"],u:"1f7e8",a:"12.0"},{n:["large green square"],u:"1f7e9",a:"12.0"},{n:["large blue square"],u:"1f7e6",a:"12.0"},{n:["large purple square"],u:"1f7ea",a:"12.0"},{n:["large brown square"],u:"1f7eb",a:"12.0"},{n:["black large square"],u:"2b1b",a:"0.6"},{n:["white large square"],u:"2b1c",a:"0.6"},{n:["black medium square"],u:"25fc-fe0f",a:"0.6"},{n:["white medium square"],u:"25fb-fe0f",a:"0.6"},{n:["black medium small square"],u:"25fe",a:"0.6"},{n:["white medium small square"],u:"25fd",a:"0.6"},{n:["black small square"],u:"25aa-fe0f",a:"0.6"},{n:["white small square"],u:"25ab-fe0f",a:"0.6"},{n:["large orange diamond"],u:"1f536",a:"0.6"},{n:["large blue diamond"],u:"1f537",a:"0.6"},{n:["small orange diamond"],u:"1f538",a:"0.6"},{n:["small blue diamond"],u:"1f539",a:"0.6"},{n:["small red triangle","up-pointing red triangle"],u:"1f53a",a:"0.6"},{n:["small red triangle down","down-pointing red triangle"],u:"1f53b",a:"0.6"},{n:["diamond shape with a dot inside"],u:"1f4a0",a:"0.6"},{n:["radio button"],u:"1f518",a:"0.6"},{n:["white square button"],u:"1f533",a:"0.6"},{n:["black square button"],u:"1f532",a:"0.6"}],flags:[{n:["chequered flag","checkered flag"],u:"1f3c1",a:"0.6"},{n:["triangular flag on post"],u:"1f6a9",a:"0.6"},{n:["crossed flags"],u:"1f38c",a:"0.6"},{n:["waving black flag"],u:"1f3f4",a:"1.0"},{n:["white flag","waving white flag"],u:"1f3f3-fe0f",a:"0.7"},{n:["rainbow flag","rainbow-flag"],u:"1f3f3-fe0f-200d-1f308",a:"4.0"},{n:["transgender flag"],u:"1f3f3-fe0f-200d-26a7-fe0f",a:"13.0"},{n:["pirate flag"],u:"1f3f4-200d-2620-fe0f",a:"11.0"},{n:["flag-ac","ascension island flag"],u:"1f1e6-1f1e8",a:"2.0"},{n:["flag-ad","andorra flag"],u:"1f1e6-1f1e9",a:"2.0"},{n:["flag-ae","united arab emirates flag"],u:"1f1e6-1f1ea",a:"2.0"},{n:["flag-af","afghanistan flag"],u:"1f1e6-1f1eb",a:"2.0"},{n:["flag-ag","antigua & barbuda flag"],u:"1f1e6-1f1ec",a:"2.0"},{n:["flag-ai","anguilla flag"],u:"1f1e6-1f1ee",a:"2.0"},{n:["flag-al","albania flag"],u:"1f1e6-1f1f1",a:"2.0"},{n:["flag-am","armenia flag"],u:"1f1e6-1f1f2",a:"2.0"},{n:["flag-ao","angola flag"],u:"1f1e6-1f1f4",a:"2.0"},{n:["flag-aq","antarctica flag"],u:"1f1e6-1f1f6",a:"2.0"},{n:["flag-ar","argentina flag"],u:"1f1e6-1f1f7",a:"2.0"},{n:["flag-as","american samoa flag"],u:"1f1e6-1f1f8",a:"2.0"},{n:["flag-at","austria flag"],u:"1f1e6-1f1f9",a:"2.0"},{n:["flag-au","australia flag"],u:"1f1e6-1f1fa",a:"2.0"},{n:["flag-aw","aruba flag"],u:"1f1e6-1f1fc",a:"2.0"},{n:["flag-ax","åland islands flag"],u:"1f1e6-1f1fd",a:"2.0"},{n:["flag-az","azerbaijan flag"],u:"1f1e6-1f1ff",a:"2.0"},{n:["flag-ba","bosnia & herzegovina flag"],u:"1f1e7-1f1e6",a:"2.0"},{n:["flag-bb","barbados flag"],u:"1f1e7-1f1e7",a:"2.0"},{n:["flag-bd","bangladesh flag"],u:"1f1e7-1f1e9",a:"2.0"},{n:["flag-be","belgium flag"],u:"1f1e7-1f1ea",a:"2.0"},{n:["flag-bf","burkina faso flag"],u:"1f1e7-1f1eb",a:"2.0"},{n:["flag-bg","bulgaria flag"],u:"1f1e7-1f1ec",a:"2.0"},{n:["flag-bh","bahrain flag"],u:"1f1e7-1f1ed",a:"2.0"},{n:["flag-bi","burundi flag"],u:"1f1e7-1f1ee",a:"2.0"},{n:["flag-bj","benin flag"],u:"1f1e7-1f1ef",a:"2.0"},{n:["flag-bl","st. barthélemy flag"],u:"1f1e7-1f1f1",a:"2.0"},{n:["flag-bm","bermuda flag"],u:"1f1e7-1f1f2",a:"2.0"},{n:["flag-bn","brunei flag"],u:"1f1e7-1f1f3",a:"2.0"},{n:["flag-bo","bolivia flag"],u:"1f1e7-1f1f4",a:"2.0"},{n:["flag-bq","caribbean netherlands flag"],u:"1f1e7-1f1f6",a:"2.0"},{n:["flag-br","brazil flag"],u:"1f1e7-1f1f7",a:"2.0"},{n:["flag-bs","bahamas flag"],u:"1f1e7-1f1f8",a:"2.0"},{n:["flag-bt","bhutan flag"],u:"1f1e7-1f1f9",a:"2.0"},{n:["flag-bv","bouvet island flag"],u:"1f1e7-1f1fb",a:"2.0"},{n:["flag-bw","botswana flag"],u:"1f1e7-1f1fc",a:"2.0"},{n:["flag-by","belarus flag"],u:"1f1e7-1f1fe",a:"2.0"},{n:["flag-bz","belize flag"],u:"1f1e7-1f1ff",a:"2.0"},{n:["flag-ca","canada flag"],u:"1f1e8-1f1e6",a:"2.0"},{n:["flag-cc","cocos (keeling) islands flag"],u:"1f1e8-1f1e8",a:"2.0"},{n:["flag-cd","congo - kinshasa flag"],u:"1f1e8-1f1e9",a:"2.0"},{n:["flag-cf","central african republic flag"],u:"1f1e8-1f1eb",a:"2.0"},{n:["flag-cg","congo - brazzaville flag"],u:"1f1e8-1f1ec",a:"2.0"},{n:["flag-ch","switzerland flag"],u:"1f1e8-1f1ed",a:"2.0"},{n:["flag-ci","côte d’ivoire flag"],u:"1f1e8-1f1ee",a:"2.0"},{n:["flag-ck","cook islands flag"],u:"1f1e8-1f1f0",a:"2.0"},{n:["flag-cl","chile flag"],u:"1f1e8-1f1f1",a:"2.0"},{n:["flag-cm","cameroon flag"],u:"1f1e8-1f1f2",a:"2.0"},{n:["cn","flag-cn","china flag"],u:"1f1e8-1f1f3",a:"0.6"},{n:["flag-co","colombia flag"],u:"1f1e8-1f1f4",a:"2.0"},{n:["flag-cp","clipperton island flag"],u:"1f1e8-1f1f5",a:"2.0"},{n:["flag-cr","costa rica flag"],u:"1f1e8-1f1f7",a:"2.0"},{n:["flag-cu","cuba flag"],u:"1f1e8-1f1fa",a:"2.0"},{n:["flag-cv","cape verde flag"],u:"1f1e8-1f1fb",a:"2.0"},{n:["flag-cw","curaçao flag"],u:"1f1e8-1f1fc",a:"2.0"},{n:["flag-cx","christmas island flag"],u:"1f1e8-1f1fd",a:"2.0"},{n:["flag-cy","cyprus flag"],u:"1f1e8-1f1fe",a:"2.0"},{n:["flag-cz","czechia flag"],u:"1f1e8-1f1ff",a:"2.0"},{n:["de","flag-de","germany flag"],u:"1f1e9-1f1ea",a:"0.6"},{n:["flag-dg","diego garcia flag"],u:"1f1e9-1f1ec",a:"2.0"},{n:["flag-dj","djibouti flag"],u:"1f1e9-1f1ef",a:"2.0"},{n:["flag-dk","denmark flag"],u:"1f1e9-1f1f0",a:"2.0"},{n:["flag-dm","dominica flag"],u:"1f1e9-1f1f2",a:"2.0"},{n:["flag-do","dominican republic flag"],u:"1f1e9-1f1f4",a:"2.0"},{n:["flag-dz","algeria flag"],u:"1f1e9-1f1ff",a:"2.0"},{n:["flag-ea","ceuta & melilla flag"],u:"1f1ea-1f1e6",a:"2.0"},{n:["flag-ec","ecuador flag"],u:"1f1ea-1f1e8",a:"2.0"},{n:["flag-ee","estonia flag"],u:"1f1ea-1f1ea",a:"2.0"},{n:["flag-eg","egypt flag"],u:"1f1ea-1f1ec",a:"2.0"},{n:["flag-eh","western sahara flag"],u:"1f1ea-1f1ed",a:"2.0"},{n:["flag-er","eritrea flag"],u:"1f1ea-1f1f7",a:"2.0"},{n:["es","flag-es","spain flag"],u:"1f1ea-1f1f8",a:"0.6"},{n:["flag-et","ethiopia flag"],u:"1f1ea-1f1f9",a:"2.0"},{n:["flag-eu","european union flag"],u:"1f1ea-1f1fa",a:"2.0"},{n:["flag-fi","finland flag"],u:"1f1eb-1f1ee",a:"2.0"},{n:["flag-fj","fiji flag"],u:"1f1eb-1f1ef",a:"2.0"},{n:["flag-fk","falkland islands flag"],u:"1f1eb-1f1f0",a:"2.0"},{n:["flag-fm","micronesia flag"],u:"1f1eb-1f1f2",a:"2.0"},{n:["flag-fo","faroe islands flag"],u:"1f1eb-1f1f4",a:"2.0"},{n:["fr","flag-fr","france flag"],u:"1f1eb-1f1f7",a:"0.6"},{n:["flag-ga","gabon flag"],u:"1f1ec-1f1e6",a:"2.0"},{n:["gb","uk","flag-gb","united kingdom flag"],u:"1f1ec-1f1e7",a:"0.6"},{n:["flag-gd","grenada flag"],u:"1f1ec-1f1e9",a:"2.0"},{n:["flag-ge","georgia flag"],u:"1f1ec-1f1ea",a:"2.0"},{n:["flag-gf","french guiana flag"],u:"1f1ec-1f1eb",a:"2.0"},{n:["flag-gg","guernsey flag"],u:"1f1ec-1f1ec",a:"2.0"},{n:["flag-gh","ghana flag"],u:"1f1ec-1f1ed",a:"2.0"},{n:["flag-gi","gibraltar flag"],u:"1f1ec-1f1ee",a:"2.0"},{n:["flag-gl","greenland flag"],u:"1f1ec-1f1f1",a:"2.0"},{n:["flag-gm","gambia flag"],u:"1f1ec-1f1f2",a:"2.0"},{n:["flag-gn","guinea flag"],u:"1f1ec-1f1f3",a:"2.0"},{n:["flag-gp","guadeloupe flag"],u:"1f1ec-1f1f5",a:"2.0"},{n:["flag-gq","equatorial guinea flag"],u:"1f1ec-1f1f6",a:"2.0"},{n:["flag-gr","greece flag"],u:"1f1ec-1f1f7",a:"2.0"},{n:["flag-gs","south georgia & south sandwich islands flag"],u:"1f1ec-1f1f8",a:"2.0"},{n:["flag-gt","guatemala flag"],u:"1f1ec-1f1f9",a:"2.0"},{n:["flag-gu","guam flag"],u:"1f1ec-1f1fa",a:"2.0"},{n:["flag-gw","guinea-bissau flag"],u:"1f1ec-1f1fc",a:"2.0"},{n:["flag-gy","guyana flag"],u:"1f1ec-1f1fe",a:"2.0"},{n:["flag-hk","hong kong sar china flag"],u:"1f1ed-1f1f0",a:"2.0"},{n:["flag-hm","heard & mcdonald islands flag"],u:"1f1ed-1f1f2",a:"2.0"},{n:["flag-hn","honduras flag"],u:"1f1ed-1f1f3",a:"2.0"},{n:["flag-hr","croatia flag"],u:"1f1ed-1f1f7",a:"2.0"},{n:["flag-ht","haiti flag"],u:"1f1ed-1f1f9",a:"2.0"},{n:["flag-hu","hungary flag"],u:"1f1ed-1f1fa",a:"2.0"},{n:["flag-ic","canary islands flag"],u:"1f1ee-1f1e8",a:"2.0"},{n:["flag-id","indonesia flag"],u:"1f1ee-1f1e9",a:"2.0"},{n:["flag-ie","ireland flag"],u:"1f1ee-1f1ea",a:"2.0"},{n:["flag-il","israel flag"],u:"1f1ee-1f1f1",a:"2.0"},{n:["flag-im","isle of man flag"],u:"1f1ee-1f1f2",a:"2.0"},{n:["flag-in","india flag"],u:"1f1ee-1f1f3",a:"2.0"},{n:["flag-io","british indian ocean territory flag"],u:"1f1ee-1f1f4",a:"2.0"},{n:["flag-iq","iraq flag"],u:"1f1ee-1f1f6",a:"2.0"},{n:["flag-ir","iran flag"],u:"1f1ee-1f1f7",a:"2.0"},{n:["flag-is","iceland flag"],u:"1f1ee-1f1f8",a:"2.0"},{n:["it","flag-it","italy flag"],u:"1f1ee-1f1f9",a:"0.6"},{n:["flag-je","jersey flag"],u:"1f1ef-1f1ea",a:"2.0"},{n:["flag-jm","jamaica flag"],u:"1f1ef-1f1f2",a:"2.0"},{n:["flag-jo","jordan flag"],u:"1f1ef-1f1f4",a:"2.0"},{n:["jp","flag-jp","japan flag"],u:"1f1ef-1f1f5",a:"0.6"},{n:["flag-ke","kenya flag"],u:"1f1f0-1f1ea",a:"2.0"},{n:["flag-kg","kyrgyzstan flag"],u:"1f1f0-1f1ec",a:"2.0"},{n:["flag-kh","cambodia flag"],u:"1f1f0-1f1ed",a:"2.0"},{n:["flag-ki","kiribati flag"],u:"1f1f0-1f1ee",a:"2.0"},{n:["flag-km","comoros flag"],u:"1f1f0-1f1f2",a:"2.0"},{n:["flag-kn","st. kitts & nevis flag"],u:"1f1f0-1f1f3",a:"2.0"},{n:["flag-kp","north korea flag"],u:"1f1f0-1f1f5",a:"2.0"},{n:["kr","flag-kr","south korea flag"],u:"1f1f0-1f1f7",a:"0.6"},{n:["flag-kw","kuwait flag"],u:"1f1f0-1f1fc",a:"2.0"},{n:["flag-ky","cayman islands flag"],u:"1f1f0-1f1fe",a:"2.0"},{n:["flag-kz","kazakhstan flag"],u:"1f1f0-1f1ff",a:"2.0"},{n:["flag-la","laos flag"],u:"1f1f1-1f1e6",a:"2.0"},{n:["flag-lb","lebanon flag"],u:"1f1f1-1f1e7",a:"2.0"},{n:["flag-lc","st. lucia flag"],u:"1f1f1-1f1e8",a:"2.0"},{n:["flag-li","liechtenstein flag"],u:"1f1f1-1f1ee",a:"2.0"},{n:["flag-lk","sri lanka flag"],u:"1f1f1-1f1f0",a:"2.0"},{n:["flag-lr","liberia flag"],u:"1f1f1-1f1f7",a:"2.0"},{n:["flag-ls","lesotho flag"],u:"1f1f1-1f1f8",a:"2.0"},{n:["flag-lt","lithuania flag"],u:"1f1f1-1f1f9",a:"2.0"},{n:["flag-lu","luxembourg flag"],u:"1f1f1-1f1fa",a:"2.0"},{n:["flag-lv","latvia flag"],u:"1f1f1-1f1fb",a:"2.0"},{n:["flag-ly","libya flag"],u:"1f1f1-1f1fe",a:"2.0"},{n:["flag-ma","morocco flag"],u:"1f1f2-1f1e6",a:"2.0"},{n:["flag-mc","monaco flag"],u:"1f1f2-1f1e8",a:"2.0"},{n:["flag-md","moldova flag"],u:"1f1f2-1f1e9",a:"2.0"},{n:["flag-me","montenegro flag"],u:"1f1f2-1f1ea",a:"2.0"},{n:["flag-mf","st. martin flag"],u:"1f1f2-1f1eb",a:"2.0"},{n:["flag-mg","madagascar flag"],u:"1f1f2-1f1ec",a:"2.0"},{n:["flag-mh","marshall islands flag"],u:"1f1f2-1f1ed",a:"2.0"},{n:["flag-mk","north macedonia flag"],u:"1f1f2-1f1f0",a:"2.0"},{n:["flag-ml","mali flag"],u:"1f1f2-1f1f1",a:"2.0"},{n:["flag-mm","myanmar (burma) flag"],u:"1f1f2-1f1f2",a:"2.0"},{n:["flag-mn","mongolia flag"],u:"1f1f2-1f1f3",a:"2.0"},{n:["flag-mo","macao sar china flag"],u:"1f1f2-1f1f4",a:"2.0"},{n:["flag-mp","northern mariana islands flag"],u:"1f1f2-1f1f5",a:"2.0"},{n:["flag-mq","martinique flag"],u:"1f1f2-1f1f6",a:"2.0"},{n:["flag-mr","mauritania flag"],u:"1f1f2-1f1f7",a:"2.0"},{n:["flag-ms","montserrat flag"],u:"1f1f2-1f1f8",a:"2.0"},{n:["flag-mt","malta flag"],u:"1f1f2-1f1f9",a:"2.0"},{n:["flag-mu","mauritius flag"],u:"1f1f2-1f1fa",a:"2.0"},{n:["flag-mv","maldives flag"],u:"1f1f2-1f1fb",a:"2.0"},{n:["flag-mw","malawi flag"],u:"1f1f2-1f1fc",a:"2.0"},{n:["flag-mx","mexico flag"],u:"1f1f2-1f1fd",a:"2.0"},{n:["flag-my","malaysia flag"],u:"1f1f2-1f1fe",a:"2.0"},{n:["flag-mz","mozambique flag"],u:"1f1f2-1f1ff",a:"2.0"},{n:["flag-na","namibia flag"],u:"1f1f3-1f1e6",a:"2.0"},{n:["flag-nc","new caledonia flag"],u:"1f1f3-1f1e8",a:"2.0"},{n:["flag-ne","niger flag"],u:"1f1f3-1f1ea",a:"2.0"},{n:["flag-nf","norfolk island flag"],u:"1f1f3-1f1eb",a:"2.0"},{n:["flag-ng","nigeria flag"],u:"1f1f3-1f1ec",a:"2.0"},{n:["flag-ni","nicaragua flag"],u:"1f1f3-1f1ee",a:"2.0"},{n:["flag-nl","netherlands flag"],u:"1f1f3-1f1f1",a:"2.0"},{n:["flag-no","norway flag"],u:"1f1f3-1f1f4",a:"2.0"},{n:["flag-np","nepal flag"],u:"1f1f3-1f1f5",a:"2.0"},{n:["flag-nr","nauru flag"],u:"1f1f3-1f1f7",a:"2.0"},{n:["flag-nu","niue flag"],u:"1f1f3-1f1fa",a:"2.0"},{n:["flag-nz","new zealand flag"],u:"1f1f3-1f1ff",a:"2.0"},{n:["flag-om","oman flag"],u:"1f1f4-1f1f2",a:"2.0"},{n:["flag-pa","panama flag"],u:"1f1f5-1f1e6",a:"2.0"},{n:["flag-pe","peru flag"],u:"1f1f5-1f1ea",a:"2.0"},{n:["flag-pf","french polynesia flag"],u:"1f1f5-1f1eb",a:"2.0"},{n:["flag-pg","papua new guinea flag"],u:"1f1f5-1f1ec",a:"2.0"},{n:["flag-ph","philippines flag"],u:"1f1f5-1f1ed",a:"2.0"},{n:["flag-pk","pakistan flag"],u:"1f1f5-1f1f0",a:"2.0"},{n:["flag-pl","poland flag"],u:"1f1f5-1f1f1",a:"2.0"},{n:["flag-pm","st. pierre & miquelon flag"],u:"1f1f5-1f1f2",a:"2.0"},{n:["flag-pn","pitcairn islands flag"],u:"1f1f5-1f1f3",a:"2.0"},{n:["flag-pr","puerto rico flag"],u:"1f1f5-1f1f7",a:"2.0"},{n:["flag-ps","palestinian territories flag"],u:"1f1f5-1f1f8",a:"2.0"},{n:["flag-pt","portugal flag"],u:"1f1f5-1f1f9",a:"2.0"},{n:["flag-pw","palau flag"],u:"1f1f5-1f1fc",a:"2.0"},{n:["flag-py","paraguay flag"],u:"1f1f5-1f1fe",a:"2.0"},{n:["flag-qa","qatar flag"],u:"1f1f6-1f1e6",a:"2.0"},{n:["flag-re","réunion flag"],u:"1f1f7-1f1ea",a:"2.0"},{n:["flag-ro","romania flag"],u:"1f1f7-1f1f4",a:"2.0"},{n:["flag-rs","serbia flag"],u:"1f1f7-1f1f8",a:"2.0"},{n:["ru","flag-ru","russia flag"],u:"1f1f7-1f1fa",a:"0.6"},{n:["flag-rw","rwanda flag"],u:"1f1f7-1f1fc",a:"2.0"},{n:["flag-sa","saudi arabia flag"],u:"1f1f8-1f1e6",a:"2.0"},{n:["flag-sb","solomon islands flag"],u:"1f1f8-1f1e7",a:"2.0"},{n:["flag-sc","seychelles flag"],u:"1f1f8-1f1e8",a:"2.0"},{n:["flag-sd","sudan flag"],u:"1f1f8-1f1e9",a:"2.0"},{n:["flag-se","sweden flag"],u:"1f1f8-1f1ea",a:"2.0"},{n:["flag-sg","singapore flag"],u:"1f1f8-1f1ec",a:"2.0"},{n:["flag-sh","st. helena flag"],u:"1f1f8-1f1ed",a:"2.0"},{n:["flag-si","slovenia flag"],u:"1f1f8-1f1ee",a:"2.0"},{n:["flag-sj","svalbard & jan mayen flag"],u:"1f1f8-1f1ef",a:"2.0"},{n:["flag-sk","slovakia flag"],u:"1f1f8-1f1f0",a:"2.0"},{n:["flag-sl","sierra leone flag"],u:"1f1f8-1f1f1",a:"2.0"},{n:["flag-sm","san marino flag"],u:"1f1f8-1f1f2",a:"2.0"},{n:["flag-sn","senegal flag"],u:"1f1f8-1f1f3",a:"2.0"},{n:["flag-so","somalia flag"],u:"1f1f8-1f1f4",a:"2.0"},{n:["flag-sr","suriname flag"],u:"1f1f8-1f1f7",a:"2.0"},{n:["flag-ss","south sudan flag"],u:"1f1f8-1f1f8",a:"2.0"},{n:["flag-st","são tomé & príncipe flag"],u:"1f1f8-1f1f9",a:"2.0"},{n:["flag-sv","el salvador flag"],u:"1f1f8-1f1fb",a:"2.0"},{n:["flag-sx","sint maarten flag"],u:"1f1f8-1f1fd",a:"2.0"},{n:["flag-sy","syria flag"],u:"1f1f8-1f1fe",a:"2.0"},{n:["flag-sz","eswatini flag"],u:"1f1f8-1f1ff",a:"2.0"},{n:["flag-ta","tristan da cunha flag"],u:"1f1f9-1f1e6",a:"2.0"},{n:["flag-tc","turks & caicos islands flag"],u:"1f1f9-1f1e8",a:"2.0"},{n:["flag-td","chad flag"],u:"1f1f9-1f1e9",a:"2.0"},{n:["flag-tf","french southern territories flag"],u:"1f1f9-1f1eb",a:"2.0"},{n:["flag-tg","togo flag"],u:"1f1f9-1f1ec",a:"2.0"},{n:["flag-th","thailand flag"],u:"1f1f9-1f1ed",a:"2.0"},{n:["flag-tj","tajikistan flag"],u:"1f1f9-1f1ef",a:"2.0"},{n:["flag-tk","tokelau flag"],u:"1f1f9-1f1f0",a:"2.0"},{n:["flag-tl","timor-leste flag"],u:"1f1f9-1f1f1",a:"2.0"},{n:["flag-tm","turkmenistan flag"],u:"1f1f9-1f1f2",a:"2.0"},{n:["flag-tn","tunisia flag"],u:"1f1f9-1f1f3",a:"2.0"},{n:["flag-to","tonga flag"],u:"1f1f9-1f1f4",a:"2.0"},{n:["flag-tr","turkey flag"],u:"1f1f9-1f1f7",a:"2.0"},{n:["flag-tt","trinidad & tobago flag"],u:"1f1f9-1f1f9",a:"2.0"},{n:["flag-tv","tuvalu flag"],u:"1f1f9-1f1fb",a:"2.0"},{n:["flag-tw","taiwan flag"],u:"1f1f9-1f1fc",a:"2.0"},{n:["flag-tz","tanzania flag"],u:"1f1f9-1f1ff",a:"2.0"},{n:["flag-ua","ukraine flag"],u:"1f1fa-1f1e6",a:"2.0"},{n:["flag-ug","uganda flag"],u:"1f1fa-1f1ec",a:"2.0"},{n:["flag-um","u.s. outlying islands flag"],u:"1f1fa-1f1f2",a:"2.0"},{n:["flag-un","united nations flag"],u:"1f1fa-1f1f3",a:"4.0"},{n:["us","flag-us","united states flag"],u:"1f1fa-1f1f8",a:"0.6"},{n:["flag-uy","uruguay flag"],u:"1f1fa-1f1fe",a:"2.0"},{n:["flag-uz","uzbekistan flag"],u:"1f1fa-1f1ff",a:"2.0"},{n:["flag-va","vatican city flag"],u:"1f1fb-1f1e6",a:"2.0"},{n:["flag-vc","st. vincent & grenadines flag"],u:"1f1fb-1f1e8",a:"2.0"},{n:["flag-ve","venezuela flag"],u:"1f1fb-1f1ea",a:"2.0"},{n:["flag-vg","british virgin islands flag"],u:"1f1fb-1f1ec",a:"2.0"},{n:["flag-vi","u.s. virgin islands flag"],u:"1f1fb-1f1ee",a:"2.0"},{n:["flag-vn","vietnam flag"],u:"1f1fb-1f1f3",a:"2.0"},{n:["flag-vu","vanuatu flag"],u:"1f1fb-1f1fa",a:"2.0"},{n:["flag-wf","wallis & futuna flag"],u:"1f1fc-1f1eb",a:"2.0"},{n:["flag-ws","samoa flag"],u:"1f1fc-1f1f8",a:"2.0"},{n:["flag-xk","kosovo flag"],u:"1f1fd-1f1f0",a:"2.0"},{n:["flag-ye","yemen flag"],u:"1f1fe-1f1ea",a:"2.0"},{n:["flag-yt","mayotte flag"],u:"1f1fe-1f1f9",a:"2.0"},{n:["flag-za","south africa flag"],u:"1f1ff-1f1e6",a:"2.0"},{n:["flag-zm","zambia flag"],u:"1f1ff-1f1f2",a:"2.0"},{n:["flag-zw","zimbabwe flag"],u:"1f1ff-1f1fc",a:"2.0"},{n:["england flag","flag-england"],u:"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f",a:"5.0"},{n:["scotland flag","flag-scotland"],u:"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f",a:"5.0"},{n:["wales flag","flag-wales"],u:"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f",a:"5.0"}]},A6=[ga.NEUTRAL,ga.LIGHT,ga.MEDIUM_LIGHT,ga.MEDIUM,ga.MEDIUM_DARK,ga.DARK];Object.entries(ga).reduce((n,[e,t])=>(n[t]=e,n),{});A6.reduce((n,e)=>Object.assign(n,{[e]:e}),{});var Mu=(n=>(n.name="n",n.unified="u",n.variations="v",n.added_in="a",n.imgUrl="imgUrl",n))(Mu||{});const Ac={};setTimeout(()=>{rv.reduce((n,e)=>(E6(e),n),Ac)});function E6(n){R6(n).flat().join("").toLowerCase().replace(/[^a-zA-Z\d]/g,"").split("").forEach(t=>{Ac[t]=Ac[t]??{},Ac[t][_s(n)]=n})}function R6(n){return n[Mu.name]??[]}function _s(n,e){const t=n[Mu.unified];return!e||!av(n)?t:C6(n,e)??t}function xp(n){return n[Mu.variations]??[]}function av(n){return xp(n).length>0}function C6(n,e){return e?xp(n).find(t=>t.includes(e)):_s(n)}const rv=Object.values(x6).flat(),P6={};setTimeout(()=>{rv.reduce((n,e)=>(n[_s(e)]=e,av(e)&&xp(e).forEach(t=>{n[t]=e}),n),P6)});const iv="epr_suggested";function Ap(n){try{if(!(window!=null&&window.localStorage))return[];const e=JSON.parse((window==null?void 0:window.localStorage.getItem(iv))??"[]");return n===ov.FREQUENT?e.sort((t,o)=>o.count-t.count):e}catch{return[]}}function N6(n,e){const t=Ap(),o=_s(n,e),a=_s(n);let r=t.find(({unified:s})=>s===o),i;r?i=[r].concat(t.filter(s=>s!==r)):(r={unified:o,original:a,count:0},i=[r,...t]),r.count++,i.length=Math.min(i.length,14);try{window==null||window.localStorage.setItem(iv,JSON.stringify(i))}catch{}}const Jr=class Jr{constructor(){H(this,"emojiMap",new Map);H(this,"emojiIndex",new nv.Index({tokenize:"full"}));return Jr.instance||(Jr.instance=this),Jr.instance}async init(e){if(!e)return;const{emojis:t,emojiSetPointers:o}=LP(e);await this.addEmojisToIndex(t);const a=await le.fetchEmojiSetEvents(o,!1);await Promise.allSettled(a.map(async r=>{!r||r instanceof Error||await this.addEmojisToIndex(MP(r))}))}async searchEmojis(e=""){if(!e){const o=new Set;Ap().sort((a,r)=>r.count-a.count).map(a=>gp(a.unified)).forEach(a=>{if(a&&typeof a!="string"){const r=this.getEmojiId(a);o.has(r)||o.add(r)}});for(const a of this.emojiMap.keys())o.add(a);return Array.from(o)}return(await this.emojiIndex.searchAsync(e)).filter(o=>typeof o=="string")}getEmojiById(e){if(!e)return;if(this.emojiMap.has(e))return this.emojiMap.get(e);const t=e.replace(/^:|:$/g,"");for(const o of this.emojiMap.values())if(o.shortcode===t)return o}getAllCustomEmojisForPicker(){return Array.from(this.emojiMap.values()).map(e=>({id:`:${e.shortcode}:${e.url}`,imgUrl:e.url,names:[e.shortcode]}))}isCustomEmojiId(e){if(this.emojiMap.has(e))return!0;const t=e.replace(/^:|:$/g,"");for(const o of this.emojiMap.values())if(o.shortcode===t)return!0;return!1}async addEmojisToIndex(e){await Promise.allSettled(e.map(async t=>{const o=this.getEmojiId(t);this.emojiMap.set(o,t),await this.emojiIndex.addAsync(o,t.shortcode)}))}getEmojiId(e){const o=new TextEncoder().encode(`${e.shortcode}:${e.url}`.toLowerCase()),a=Ms(o);return Array.from(new Uint8Array(a)).map(i=>i.toString(16).padStart(2,"0")).join("")}updateSuggested(e){const t=this.getEmojiById(e);t&&N6({n:[t.shortcode.toLowerCase()],u:`:${t.shortcode}:${t.url}`.toLowerCase(),a:"0",imgUrl:t.url},DE.NEUTRAL)}};H(Jr,"instance");let ah=Jr;const gn=new ah,T6=24242;function oy(n){return n.match(/^[0-9a-f]{64}$/)}const $d=Symbol.for("sha256");function Du(n){return Reflect.has(n,$d)?Reflect.get(n,$d):j6(n).then(e=>(Reflect.set(n,$d,e),e))}async function j6(n){let e;typeof File<"u"&&n instanceof File||n instanceof Blob?e=await n.arrayBuffer():e=n;let t;if(typeof crypto<"u"&&crypto.subtle){const o=await crypto.subtle.digest("SHA-256",e);t=new Uint8Array(o)}else{const{sha256:o}=await Ve(async()=>{const{sha256:a}=await Promise.resolve().then(()=>n6);return{sha256:a}},void 0);t=o.create().update(new Uint8Array(e)).digest()}return hi(t)}function sv(n){return typeof File<"u"&&n instanceof File||n instanceof Blob?n.size:n.length}function lv(n){if(typeof File<"u"&&n instanceof File||n instanceof Blob)return n.type}function z6(n){typeof n=="string"&&(n=new URL(n));const e=Array.from(n.pathname.matchAll(/[0-9a-f]{64}/gi));return e.length>0?e[e.length-1][0]:null}const cv=()=>Math.floor(new Date().valueOf()/1e3),I6=()=>cv()+60*60;function Ut(n){return"Nostr "+btoa(JSON.stringify(n))}async function ay(n){return typeof n=="string"?n:Du(n)}async function vl(n,e,t){const o={created_at:cv(),kind:T6,content:(t==null?void 0:t.message)??"",tags:[["t",e],["expiration",String((t==null?void 0:t.expiration)??I6())]]};if(t!=null&&t.blobs)if(Array.isArray(t.blobs)){const a=new Set;for(const r of t.blobs){const i=await ay(r);a.has(i)||(o.tags.push(["x",i]),a.add(i))}}else o.tags.push(["x",await ay(t.blobs)]);if(t!=null&&t.servers)if(Array.isArray(t.servers))for(const a of new Set(t.servers))o.tags.push(["server",a]);else o.tags.push(["server",t.servers]);return await n(o)}async function ry(n,e,t){return Array.isArray(e)||(e=[e]),await vl(n,"get",{message:"Download Blob",...t,blobs:e.filter(o=>typeof o=="string"?oy(o):!0),servers:e.filter(o=>typeof o=="string"&&!oy(o)&&URL.canParse(o))})}async function iy(n,e,t){return await vl(n,(t==null?void 0:t.type)??"upload",{message:"Upload Blob",...t,blobs:e})}async function L6(n,e,t){return await vl(n,"upload",{message:"Mirror Blob",...t,blobs:e})}async function sy(n,e){return await vl(n,"list",{message:"List Blobs",...e})}async function ly(n,e,t){return await vl(n,"delete",{message:"Delete Blob",...t,blobs:e})}class Fa extends Error{constructor(t,o){super(typeof o=="string"?o:o.message);H(this,"response");H(this,"status");H(this,"body");this.response=t,this.status=t.status,typeof o=="object"&&(this.body=o)}static async handleErrorResponse(t){if(!t.ok)try{throw new Fa(t,t.headers.get("x-reason")||"Something went wrong")}catch(o){throw o}}}var Yd={},fs={},cy;function M6(){if(cy)return fs;cy=1,fs.byteLength=s,fs.toByteArray=u,fs.fromByteArray=p;for(var n=[],e=[],t=typeof Uint8Array<"u"?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,r=o.length;a<r;++a)n[a]=o[a],e[o.charCodeAt(a)]=a;e[45]=62,e[95]=63;function i(m){var g=m.length;if(g%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var y=m.indexOf("=");y===-1&&(y=g);var w=y===g?0:4-y%4;return[y,w]}function s(m){var g=i(m),y=g[0],w=g[1];return(y+w)*3/4-w}function l(m,g,y){return(g+y)*3/4-y}function u(m){var g,y=i(m),w=y[0],v=y[1],k=new t(l(m,w,v)),E=0,A=v>0?w-4:w,N;for(N=0;N<A;N+=4)g=e[m.charCodeAt(N)]<<18|e[m.charCodeAt(N+1)]<<12|e[m.charCodeAt(N+2)]<<6|e[m.charCodeAt(N+3)],k[E++]=g>>16&255,k[E++]=g>>8&255,k[E++]=g&255;return v===2&&(g=e[m.charCodeAt(N)]<<2|e[m.charCodeAt(N+1)]>>4,k[E++]=g&255),v===1&&(g=e[m.charCodeAt(N)]<<10|e[m.charCodeAt(N+1)]<<4|e[m.charCodeAt(N+2)]>>2,k[E++]=g>>8&255,k[E++]=g&255),k}function f(m){return n[m>>18&63]+n[m>>12&63]+n[m>>6&63]+n[m&63]}function d(m,g,y){for(var w,v=[],k=g;k<y;k+=3)w=(m[k]<<16&16711680)+(m[k+1]<<8&65280)+(m[k+2]&255),v.push(f(w));return v.join("")}function p(m){for(var g,y=m.length,w=y%3,v=[],k=16383,E=0,A=y-w;E<A;E+=k)v.push(d(m,E,E+k>A?A:E+k));return w===1?(g=m[y-1],v.push(n[g>>2]+n[g<<4&63]+"==")):w===2&&(g=(m[y-2]<<8)+m[y-1],v.push(n[g>>10]+n[g>>4&63]+n[g<<2&63]+"=")),v.join("")}return fs}var Xl={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */var uy;function D6(){return uy||(uy=1,Xl.read=function(n,e,t,o,a){var r,i,s=a*8-o-1,l=(1<<s)-1,u=l>>1,f=-7,d=t?a-1:0,p=t?-1:1,m=n[e+d];for(d+=p,r=m&(1<<-f)-1,m>>=-f,f+=s;f>0;r=r*256+n[e+d],d+=p,f-=8);for(i=r&(1<<-f)-1,r>>=-f,f+=o;f>0;i=i*256+n[e+d],d+=p,f-=8);if(r===0)r=1-u;else{if(r===l)return i?NaN:(m?-1:1)*(1/0);i=i+Math.pow(2,o),r=r-u}return(m?-1:1)*i*Math.pow(2,r-o)},Xl.write=function(n,e,t,o,a,r){var i,s,l,u=r*8-a-1,f=(1<<u)-1,d=f>>1,p=a===23?Math.pow(2,-24)-Math.pow(2,-77):0,m=o?0:r-1,g=o?1:-1,y=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,i=f):(i=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-i))<1&&(i--,l*=2),i+d>=1?e+=p/l:e+=p*Math.pow(2,1-d),e*l>=2&&(i++,l/=2),i+d>=f?(s=0,i=f):i+d>=1?(s=(e*l-1)*Math.pow(2,a),i=i+d):(s=e*Math.pow(2,d-1)*Math.pow(2,a),i=0));a>=8;n[t+m]=s&255,m+=g,s/=256,a-=8);for(i=i<<a|s,u+=a;u>0;n[t+m]=i&255,m+=g,i/=256,u-=8);n[t+m-g]|=y*128}),Xl}/*!
 * The buffer module from node.js, for the browser.
 *
 * @author   Feross Aboukhadijeh <https://feross.org>
 * @license  MIT
 */var dy;function _6(){return dy||(dy=1,function(n){const e=M6(),t=D6(),o=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;n.Buffer=s,n.SlowBuffer=k,n.INSPECT_MAX_BYTES=50;const a=2147483647;n.kMaxLength=a,s.TYPED_ARRAY_SUPPORT=r(),!s.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function r(){try{const _=new Uint8Array(1),x={foo:function(){return 42}};return Object.setPrototypeOf(x,Uint8Array.prototype),Object.setPrototypeOf(_,x),_.foo()===42}catch{return!1}}Object.defineProperty(s.prototype,"parent",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}});function i(_){if(_>a)throw new RangeError('The value "'+_+'" is invalid for option "size"');const x=new Uint8Array(_);return Object.setPrototypeOf(x,s.prototype),x}function s(_,x,R){if(typeof _=="number"){if(typeof x=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return d(_)}return l(_,x,R)}s.poolSize=8192;function l(_,x,R){if(typeof _=="string")return p(_,x);if(ArrayBuffer.isView(_))return g(_);if(_==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof _);if(Te(_,ArrayBuffer)||_&&Te(_.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Te(_,SharedArrayBuffer)||_&&Te(_.buffer,SharedArrayBuffer)))return y(_,x,R);if(typeof _=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const B=_.valueOf&&_.valueOf();if(B!=null&&B!==_)return s.from(B,x,R);const K=w(_);if(K)return K;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof _[Symbol.toPrimitive]=="function")return s.from(_[Symbol.toPrimitive]("string"),x,R);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof _)}s.from=function(_,x,R){return l(_,x,R)},Object.setPrototypeOf(s.prototype,Uint8Array.prototype),Object.setPrototypeOf(s,Uint8Array);function u(_){if(typeof _!="number")throw new TypeError('"size" argument must be of type number');if(_<0)throw new RangeError('The value "'+_+'" is invalid for option "size"')}function f(_,x,R){return u(_),_<=0?i(_):x!==void 0?typeof R=="string"?i(_).fill(x,R):i(_).fill(x):i(_)}s.alloc=function(_,x,R){return f(_,x,R)};function d(_){return u(_),i(_<0?0:v(_)|0)}s.allocUnsafe=function(_){return d(_)},s.allocUnsafeSlow=function(_){return d(_)};function p(_,x){if((typeof x!="string"||x==="")&&(x="utf8"),!s.isEncoding(x))throw new TypeError("Unknown encoding: "+x);const R=E(_,x)|0;let B=i(R);const K=B.write(_,x);return K!==R&&(B=B.slice(0,K)),B}function m(_){const x=_.length<0?0:v(_.length)|0,R=i(x);for(let B=0;B<x;B+=1)R[B]=_[B]&255;return R}function g(_){if(Te(_,Uint8Array)){const x=new Uint8Array(_);return y(x.buffer,x.byteOffset,x.byteLength)}return m(_)}function y(_,x,R){if(x<0||_.byteLength<x)throw new RangeError('"offset" is outside of buffer bounds');if(_.byteLength<x+(R||0))throw new RangeError('"length" is outside of buffer bounds');let B;return x===void 0&&R===void 0?B=new Uint8Array(_):R===void 0?B=new Uint8Array(_,x):B=new Uint8Array(_,x,R),Object.setPrototypeOf(B,s.prototype),B}function w(_){if(s.isBuffer(_)){const x=v(_.length)|0,R=i(x);return R.length===0||_.copy(R,0,0,x),R}if(_.length!==void 0)return typeof _.length!="number"||qe(_.length)?i(0):m(_);if(_.type==="Buffer"&&Array.isArray(_.data))return m(_.data)}function v(_){if(_>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return _|0}function k(_){return+_!=_&&(_=0),s.alloc(+_)}s.isBuffer=function(x){return x!=null&&x._isBuffer===!0&&x!==s.prototype},s.compare=function(x,R){if(Te(x,Uint8Array)&&(x=s.from(x,x.offset,x.byteLength)),Te(R,Uint8Array)&&(R=s.from(R,R.offset,R.byteLength)),!s.isBuffer(x)||!s.isBuffer(R))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(x===R)return 0;let B=x.length,K=R.length;for(let Q=0,ue=Math.min(B,K);Q<ue;++Q)if(x[Q]!==R[Q]){B=x[Q],K=R[Q];break}return B<K?-1:K<B?1:0},s.isEncoding=function(x){switch(String(x).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},s.concat=function(x,R){if(!Array.isArray(x))throw new TypeError('"list" argument must be an Array of Buffers');if(x.length===0)return s.alloc(0);let B;if(R===void 0)for(R=0,B=0;B<x.length;++B)R+=x[B].length;const K=s.allocUnsafe(R);let Q=0;for(B=0;B<x.length;++B){let ue=x[B];if(Te(ue,Uint8Array))Q+ue.length>K.length?(s.isBuffer(ue)||(ue=s.from(ue)),ue.copy(K,Q)):Uint8Array.prototype.set.call(K,ue,Q);else if(s.isBuffer(ue))ue.copy(K,Q);else throw new TypeError('"list" argument must be an Array of Buffers');Q+=ue.length}return K};function E(_,x){if(s.isBuffer(_))return _.length;if(ArrayBuffer.isView(_)||Te(_,ArrayBuffer))return _.byteLength;if(typeof _!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof _);const R=_.length,B=arguments.length>2&&arguments[2]===!0;if(!B&&R===0)return 0;let K=!1;for(;;)switch(x){case"ascii":case"latin1":case"binary":return R;case"utf8":case"utf-8":return Se(_).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R*2;case"hex":return R>>>1;case"base64":return ye(_).length;default:if(K)return B?-1:Se(_).length;x=(""+x).toLowerCase(),K=!0}}s.byteLength=E;function A(_,x,R){let B=!1;if((x===void 0||x<0)&&(x=0),x>this.length||((R===void 0||R>this.length)&&(R=this.length),R<=0)||(R>>>=0,x>>>=0,R<=x))return"";for(_||(_="utf8");;)switch(_){case"hex":return z(this,x,R);case"utf8":case"utf-8":return j(this,x,R);case"ascii":return b(this,x,R);case"latin1":case"binary":return S(this,x,R);case"base64":return V(this,x,R);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return F(this,x,R);default:if(B)throw new TypeError("Unknown encoding: "+_);_=(_+"").toLowerCase(),B=!0}}s.prototype._isBuffer=!0;function N(_,x,R){const B=_[x];_[x]=_[R],_[R]=B}s.prototype.swap16=function(){const x=this.length;if(x%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let R=0;R<x;R+=2)N(this,R,R+1);return this},s.prototype.swap32=function(){const x=this.length;if(x%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let R=0;R<x;R+=4)N(this,R,R+3),N(this,R+1,R+2);return this},s.prototype.swap64=function(){const x=this.length;if(x%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let R=0;R<x;R+=8)N(this,R,R+7),N(this,R+1,R+6),N(this,R+2,R+5),N(this,R+3,R+4);return this},s.prototype.toString=function(){const x=this.length;return x===0?"":arguments.length===0?j(this,0,x):A.apply(this,arguments)},s.prototype.toLocaleString=s.prototype.toString,s.prototype.equals=function(x){if(!s.isBuffer(x))throw new TypeError("Argument must be a Buffer");return this===x?!0:s.compare(this,x)===0},s.prototype.inspect=function(){let x="";const R=n.INSPECT_MAX_BYTES;return x=this.toString("hex",0,R).replace(/(.{2})/g,"$1 ").trim(),this.length>R&&(x+=" ... "),"<Buffer "+x+">"},o&&(s.prototype[o]=s.prototype.inspect),s.prototype.compare=function(x,R,B,K,Q){if(Te(x,Uint8Array)&&(x=s.from(x,x.offset,x.byteLength)),!s.isBuffer(x))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof x);if(R===void 0&&(R=0),B===void 0&&(B=x?x.length:0),K===void 0&&(K=0),Q===void 0&&(Q=this.length),R<0||B>x.length||K<0||Q>this.length)throw new RangeError("out of range index");if(K>=Q&&R>=B)return 0;if(K>=Q)return-1;if(R>=B)return 1;if(R>>>=0,B>>>=0,K>>>=0,Q>>>=0,this===x)return 0;let ue=Q-K,$e=B-R;const dt=Math.min(ue,$e),Xe=this.slice(K,Q),St=x.slice(R,B);for(let ft=0;ft<dt;++ft)if(Xe[ft]!==St[ft]){ue=Xe[ft],$e=St[ft];break}return ue<$e?-1:$e<ue?1:0};function T(_,x,R,B,K){if(_.length===0)return-1;if(typeof R=="string"?(B=R,R=0):R>2147483647?R=2147483647:R<-2147483648&&(R=-2147483648),R=+R,qe(R)&&(R=K?0:_.length-1),R<0&&(R=_.length+R),R>=_.length){if(K)return-1;R=_.length-1}else if(R<0)if(K)R=0;else return-1;if(typeof x=="string"&&(x=s.from(x,B)),s.isBuffer(x))return x.length===0?-1:C(_,x,R,B,K);if(typeof x=="number")return x=x&255,typeof Uint8Array.prototype.indexOf=="function"?K?Uint8Array.prototype.indexOf.call(_,x,R):Uint8Array.prototype.lastIndexOf.call(_,x,R):C(_,[x],R,B,K);throw new TypeError("val must be string, number or Buffer")}function C(_,x,R,B,K){let Q=1,ue=_.length,$e=x.length;if(B!==void 0&&(B=String(B).toLowerCase(),B==="ucs2"||B==="ucs-2"||B==="utf16le"||B==="utf-16le")){if(_.length<2||x.length<2)return-1;Q=2,ue/=2,$e/=2,R/=2}function dt(St,ft){return Q===1?St[ft]:St.readUInt16BE(ft*Q)}let Xe;if(K){let St=-1;for(Xe=R;Xe<ue;Xe++)if(dt(_,Xe)===dt(x,St===-1?0:Xe-St)){if(St===-1&&(St=Xe),Xe-St+1===$e)return St*Q}else St!==-1&&(Xe-=Xe-St),St=-1}else for(R+$e>ue&&(R=ue-$e),Xe=R;Xe>=0;Xe--){let St=!0;for(let ft=0;ft<$e;ft++)if(dt(_,Xe+ft)!==dt(x,ft)){St=!1;break}if(St)return Xe}return-1}s.prototype.includes=function(x,R,B){return this.indexOf(x,R,B)!==-1},s.prototype.indexOf=function(x,R,B){return T(this,x,R,B,!0)},s.prototype.lastIndexOf=function(x,R,B){return T(this,x,R,B,!1)};function P(_,x,R,B){R=Number(R)||0;const K=_.length-R;B?(B=Number(B),B>K&&(B=K)):B=K;const Q=x.length;B>Q/2&&(B=Q/2);let ue;for(ue=0;ue<B;++ue){const $e=parseInt(x.substr(ue*2,2),16);if(qe($e))return ue;_[R+ue]=$e}return ue}function M(_,x,R,B){return Pe(Se(x,_.length-R),_,R,B)}function U(_,x,R,B){return Pe(Oe(x),_,R,B)}function O(_,x,R,B){return Pe(ye(x),_,R,B)}function W(_,x,R,B){return Pe(Le(x,_.length-R),_,R,B)}s.prototype.write=function(x,R,B,K){if(R===void 0)K="utf8",B=this.length,R=0;else if(B===void 0&&typeof R=="string")K=R,B=this.length,R=0;else if(isFinite(R))R=R>>>0,isFinite(B)?(B=B>>>0,K===void 0&&(K="utf8")):(K=B,B=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const Q=this.length-R;if((B===void 0||B>Q)&&(B=Q),x.length>0&&(B<0||R<0)||R>this.length)throw new RangeError("Attempt to write outside buffer bounds");K||(K="utf8");let ue=!1;for(;;)switch(K){case"hex":return P(this,x,R,B);case"utf8":case"utf-8":return M(this,x,R,B);case"ascii":case"latin1":case"binary":return U(this,x,R,B);case"base64":return O(this,x,R,B);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return W(this,x,R,B);default:if(ue)throw new TypeError("Unknown encoding: "+K);K=(""+K).toLowerCase(),ue=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function V(_,x,R){return x===0&&R===_.length?e.fromByteArray(_):e.fromByteArray(_.slice(x,R))}function j(_,x,R){R=Math.min(_.length,R);const B=[];let K=x;for(;K<R;){const Q=_[K];let ue=null,$e=Q>239?4:Q>223?3:Q>191?2:1;if(K+$e<=R){let dt,Xe,St,ft;switch($e){case 1:Q<128&&(ue=Q);break;case 2:dt=_[K+1],(dt&192)===128&&(ft=(Q&31)<<6|dt&63,ft>127&&(ue=ft));break;case 3:dt=_[K+1],Xe=_[K+2],(dt&192)===128&&(Xe&192)===128&&(ft=(Q&15)<<12|(dt&63)<<6|Xe&63,ft>2047&&(ft<55296||ft>57343)&&(ue=ft));break;case 4:dt=_[K+1],Xe=_[K+2],St=_[K+3],(dt&192)===128&&(Xe&192)===128&&(St&192)===128&&(ft=(Q&15)<<18|(dt&63)<<12|(Xe&63)<<6|St&63,ft>65535&&ft<1114112&&(ue=ft))}}ue===null?(ue=65533,$e=1):ue>65535&&(ue-=65536,B.push(ue>>>10&1023|55296),ue=56320|ue&1023),B.push(ue),K+=$e}return I(B)}const L=4096;function I(_){const x=_.length;if(x<=L)return String.fromCharCode.apply(String,_);let R="",B=0;for(;B<x;)R+=String.fromCharCode.apply(String,_.slice(B,B+=L));return R}function b(_,x,R){let B="";R=Math.min(_.length,R);for(let K=x;K<R;++K)B+=String.fromCharCode(_[K]&127);return B}function S(_,x,R){let B="";R=Math.min(_.length,R);for(let K=x;K<R;++K)B+=String.fromCharCode(_[K]);return B}function z(_,x,R){const B=_.length;(!x||x<0)&&(x=0),(!R||R<0||R>B)&&(R=B);let K="";for(let Q=x;Q<R;++Q)K+=ct[_[Q]];return K}function F(_,x,R){const B=_.slice(x,R);let K="";for(let Q=0;Q<B.length-1;Q+=2)K+=String.fromCharCode(B[Q]+B[Q+1]*256);return K}s.prototype.slice=function(x,R){const B=this.length;x=~~x,R=R===void 0?B:~~R,x<0?(x+=B,x<0&&(x=0)):x>B&&(x=B),R<0?(R+=B,R<0&&(R=0)):R>B&&(R=B),R<x&&(R=x);const K=this.subarray(x,R);return Object.setPrototypeOf(K,s.prototype),K};function D(_,x,R){if(_%1!==0||_<0)throw new RangeError("offset is not uint");if(_+x>R)throw new RangeError("Trying to access beyond buffer length")}s.prototype.readUintLE=s.prototype.readUIntLE=function(x,R,B){x=x>>>0,R=R>>>0,B||D(x,R,this.length);let K=this[x],Q=1,ue=0;for(;++ue<R&&(Q*=256);)K+=this[x+ue]*Q;return K},s.prototype.readUintBE=s.prototype.readUIntBE=function(x,R,B){x=x>>>0,R=R>>>0,B||D(x,R,this.length);let K=this[x+--R],Q=1;for(;R>0&&(Q*=256);)K+=this[x+--R]*Q;return K},s.prototype.readUint8=s.prototype.readUInt8=function(x,R){return x=x>>>0,R||D(x,1,this.length),this[x]},s.prototype.readUint16LE=s.prototype.readUInt16LE=function(x,R){return x=x>>>0,R||D(x,2,this.length),this[x]|this[x+1]<<8},s.prototype.readUint16BE=s.prototype.readUInt16BE=function(x,R){return x=x>>>0,R||D(x,2,this.length),this[x]<<8|this[x+1]},s.prototype.readUint32LE=s.prototype.readUInt32LE=function(x,R){return x=x>>>0,R||D(x,4,this.length),(this[x]|this[x+1]<<8|this[x+2]<<16)+this[x+3]*16777216},s.prototype.readUint32BE=s.prototype.readUInt32BE=function(x,R){return x=x>>>0,R||D(x,4,this.length),this[x]*16777216+(this[x+1]<<16|this[x+2]<<8|this[x+3])},s.prototype.readBigUInt64LE=Ge(function(x){x=x>>>0,te(x,"offset");const R=this[x],B=this[x+7];(R===void 0||B===void 0)&&Y(x,this.length-8);const K=R+this[++x]*2**8+this[++x]*2**16+this[++x]*2**24,Q=this[++x]+this[++x]*2**8+this[++x]*2**16+B*2**24;return BigInt(K)+(BigInt(Q)<<BigInt(32))}),s.prototype.readBigUInt64BE=Ge(function(x){x=x>>>0,te(x,"offset");const R=this[x],B=this[x+7];(R===void 0||B===void 0)&&Y(x,this.length-8);const K=R*2**24+this[++x]*2**16+this[++x]*2**8+this[++x],Q=this[++x]*2**24+this[++x]*2**16+this[++x]*2**8+B;return(BigInt(K)<<BigInt(32))+BigInt(Q)}),s.prototype.readIntLE=function(x,R,B){x=x>>>0,R=R>>>0,B||D(x,R,this.length);let K=this[x],Q=1,ue=0;for(;++ue<R&&(Q*=256);)K+=this[x+ue]*Q;return Q*=128,K>=Q&&(K-=Math.pow(2,8*R)),K},s.prototype.readIntBE=function(x,R,B){x=x>>>0,R=R>>>0,B||D(x,R,this.length);let K=R,Q=1,ue=this[x+--K];for(;K>0&&(Q*=256);)ue+=this[x+--K]*Q;return Q*=128,ue>=Q&&(ue-=Math.pow(2,8*R)),ue},s.prototype.readInt8=function(x,R){return x=x>>>0,R||D(x,1,this.length),this[x]&128?(255-this[x]+1)*-1:this[x]},s.prototype.readInt16LE=function(x,R){x=x>>>0,R||D(x,2,this.length);const B=this[x]|this[x+1]<<8;return B&32768?B|4294901760:B},s.prototype.readInt16BE=function(x,R){x=x>>>0,R||D(x,2,this.length);const B=this[x+1]|this[x]<<8;return B&32768?B|4294901760:B},s.prototype.readInt32LE=function(x,R){return x=x>>>0,R||D(x,4,this.length),this[x]|this[x+1]<<8|this[x+2]<<16|this[x+3]<<24},s.prototype.readInt32BE=function(x,R){return x=x>>>0,R||D(x,4,this.length),this[x]<<24|this[x+1]<<16|this[x+2]<<8|this[x+3]},s.prototype.readBigInt64LE=Ge(function(x){x=x>>>0,te(x,"offset");const R=this[x],B=this[x+7];(R===void 0||B===void 0)&&Y(x,this.length-8);const K=this[x+4]+this[x+5]*2**8+this[x+6]*2**16+(B<<24);return(BigInt(K)<<BigInt(32))+BigInt(R+this[++x]*2**8+this[++x]*2**16+this[++x]*2**24)}),s.prototype.readBigInt64BE=Ge(function(x){x=x>>>0,te(x,"offset");const R=this[x],B=this[x+7];(R===void 0||B===void 0)&&Y(x,this.length-8);const K=(R<<24)+this[++x]*2**16+this[++x]*2**8+this[++x];return(BigInt(K)<<BigInt(32))+BigInt(this[++x]*2**24+this[++x]*2**16+this[++x]*2**8+B)}),s.prototype.readFloatLE=function(x,R){return x=x>>>0,R||D(x,4,this.length),t.read(this,x,!0,23,4)},s.prototype.readFloatBE=function(x,R){return x=x>>>0,R||D(x,4,this.length),t.read(this,x,!1,23,4)},s.prototype.readDoubleLE=function(x,R){return x=x>>>0,R||D(x,8,this.length),t.read(this,x,!0,52,8)},s.prototype.readDoubleBE=function(x,R){return x=x>>>0,R||D(x,8,this.length),t.read(this,x,!1,52,8)};function q(_,x,R,B,K,Q){if(!s.isBuffer(_))throw new TypeError('"buffer" argument must be a Buffer instance');if(x>K||x<Q)throw new RangeError('"value" argument is out of bounds');if(R+B>_.length)throw new RangeError("Index out of range")}s.prototype.writeUintLE=s.prototype.writeUIntLE=function(x,R,B,K){if(x=+x,R=R>>>0,B=B>>>0,!K){const $e=Math.pow(2,8*B)-1;q(this,x,R,B,$e,0)}let Q=1,ue=0;for(this[R]=x&255;++ue<B&&(Q*=256);)this[R+ue]=x/Q&255;return R+B},s.prototype.writeUintBE=s.prototype.writeUIntBE=function(x,R,B,K){if(x=+x,R=R>>>0,B=B>>>0,!K){const $e=Math.pow(2,8*B)-1;q(this,x,R,B,$e,0)}let Q=B-1,ue=1;for(this[R+Q]=x&255;--Q>=0&&(ue*=256);)this[R+Q]=x/ue&255;return R+B},s.prototype.writeUint8=s.prototype.writeUInt8=function(x,R,B){return x=+x,R=R>>>0,B||q(this,x,R,1,255,0),this[R]=x&255,R+1},s.prototype.writeUint16LE=s.prototype.writeUInt16LE=function(x,R,B){return x=+x,R=R>>>0,B||q(this,x,R,2,65535,0),this[R]=x&255,this[R+1]=x>>>8,R+2},s.prototype.writeUint16BE=s.prototype.writeUInt16BE=function(x,R,B){return x=+x,R=R>>>0,B||q(this,x,R,2,65535,0),this[R]=x>>>8,this[R+1]=x&255,R+2},s.prototype.writeUint32LE=s.prototype.writeUInt32LE=function(x,R,B){return x=+x,R=R>>>0,B||q(this,x,R,4,4294967295,0),this[R+3]=x>>>24,this[R+2]=x>>>16,this[R+1]=x>>>8,this[R]=x&255,R+4},s.prototype.writeUint32BE=s.prototype.writeUInt32BE=function(x,R,B){return x=+x,R=R>>>0,B||q(this,x,R,4,4294967295,0),this[R]=x>>>24,this[R+1]=x>>>16,this[R+2]=x>>>8,this[R+3]=x&255,R+4};function J(_,x,R,B,K){G(x,B,K,_,R,7);let Q=Number(x&BigInt(4294967295));_[R++]=Q,Q=Q>>8,_[R++]=Q,Q=Q>>8,_[R++]=Q,Q=Q>>8,_[R++]=Q;let ue=Number(x>>BigInt(32)&BigInt(4294967295));return _[R++]=ue,ue=ue>>8,_[R++]=ue,ue=ue>>8,_[R++]=ue,ue=ue>>8,_[R++]=ue,R}function ae(_,x,R,B,K){G(x,B,K,_,R,7);let Q=Number(x&BigInt(4294967295));_[R+7]=Q,Q=Q>>8,_[R+6]=Q,Q=Q>>8,_[R+5]=Q,Q=Q>>8,_[R+4]=Q;let ue=Number(x>>BigInt(32)&BigInt(4294967295));return _[R+3]=ue,ue=ue>>8,_[R+2]=ue,ue=ue>>8,_[R+1]=ue,ue=ue>>8,_[R]=ue,R+8}s.prototype.writeBigUInt64LE=Ge(function(x,R=0){return J(this,x,R,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeBigUInt64BE=Ge(function(x,R=0){return ae(this,x,R,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeIntLE=function(x,R,B,K){if(x=+x,R=R>>>0,!K){const dt=Math.pow(2,8*B-1);q(this,x,R,B,dt-1,-dt)}let Q=0,ue=1,$e=0;for(this[R]=x&255;++Q<B&&(ue*=256);)x<0&&$e===0&&this[R+Q-1]!==0&&($e=1),this[R+Q]=(x/ue>>0)-$e&255;return R+B},s.prototype.writeIntBE=function(x,R,B,K){if(x=+x,R=R>>>0,!K){const dt=Math.pow(2,8*B-1);q(this,x,R,B,dt-1,-dt)}let Q=B-1,ue=1,$e=0;for(this[R+Q]=x&255;--Q>=0&&(ue*=256);)x<0&&$e===0&&this[R+Q+1]!==0&&($e=1),this[R+Q]=(x/ue>>0)-$e&255;return R+B},s.prototype.writeInt8=function(x,R,B){return x=+x,R=R>>>0,B||q(this,x,R,1,127,-128),x<0&&(x=255+x+1),this[R]=x&255,R+1},s.prototype.writeInt16LE=function(x,R,B){return x=+x,R=R>>>0,B||q(this,x,R,2,32767,-32768),this[R]=x&255,this[R+1]=x>>>8,R+2},s.prototype.writeInt16BE=function(x,R,B){return x=+x,R=R>>>0,B||q(this,x,R,2,32767,-32768),this[R]=x>>>8,this[R+1]=x&255,R+2},s.prototype.writeInt32LE=function(x,R,B){return x=+x,R=R>>>0,B||q(this,x,R,4,2147483647,-2147483648),this[R]=x&255,this[R+1]=x>>>8,this[R+2]=x>>>16,this[R+3]=x>>>24,R+4},s.prototype.writeInt32BE=function(x,R,B){return x=+x,R=R>>>0,B||q(this,x,R,4,2147483647,-2147483648),x<0&&(x=4294967295+x+1),this[R]=x>>>24,this[R+1]=x>>>16,this[R+2]=x>>>8,this[R+3]=x&255,R+4},s.prototype.writeBigInt64LE=Ge(function(x,R=0){return J(this,x,R,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),s.prototype.writeBigInt64BE=Ge(function(x,R=0){return ae(this,x,R,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function ge(_,x,R,B,K,Q){if(R+B>_.length)throw new RangeError("Index out of range");if(R<0)throw new RangeError("Index out of range")}function ie(_,x,R,B,K){return x=+x,R=R>>>0,K||ge(_,x,R,4),t.write(_,x,R,B,23,4),R+4}s.prototype.writeFloatLE=function(x,R,B){return ie(this,x,R,!0,B)},s.prototype.writeFloatBE=function(x,R,B){return ie(this,x,R,!1,B)};function de(_,x,R,B,K){return x=+x,R=R>>>0,K||ge(_,x,R,8),t.write(_,x,R,B,52,8),R+8}s.prototype.writeDoubleLE=function(x,R,B){return de(this,x,R,!0,B)},s.prototype.writeDoubleBE=function(x,R,B){return de(this,x,R,!1,B)},s.prototype.copy=function(x,R,B,K){if(!s.isBuffer(x))throw new TypeError("argument should be a Buffer");if(B||(B=0),!K&&K!==0&&(K=this.length),R>=x.length&&(R=x.length),R||(R=0),K>0&&K<B&&(K=B),K===B||x.length===0||this.length===0)return 0;if(R<0)throw new RangeError("targetStart out of bounds");if(B<0||B>=this.length)throw new RangeError("Index out of range");if(K<0)throw new RangeError("sourceEnd out of bounds");K>this.length&&(K=this.length),x.length-R<K-B&&(K=x.length-R+B);const Q=K-B;return this===x&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(R,B,K):Uint8Array.prototype.set.call(x,this.subarray(B,K),R),Q},s.prototype.fill=function(x,R,B,K){if(typeof x=="string"){if(typeof R=="string"?(K=R,R=0,B=this.length):typeof B=="string"&&(K=B,B=this.length),K!==void 0&&typeof K!="string")throw new TypeError("encoding must be a string");if(typeof K=="string"&&!s.isEncoding(K))throw new TypeError("Unknown encoding: "+K);if(x.length===1){const ue=x.charCodeAt(0);(K==="utf8"&&ue<128||K==="latin1")&&(x=ue)}}else typeof x=="number"?x=x&255:typeof x=="boolean"&&(x=Number(x));if(R<0||this.length<R||this.length<B)throw new RangeError("Out of range index");if(B<=R)return this;R=R>>>0,B=B===void 0?this.length:B>>>0,x||(x=0);let Q;if(typeof x=="number")for(Q=R;Q<B;++Q)this[Q]=x;else{const ue=s.isBuffer(x)?x:s.from(x,K),$e=ue.length;if($e===0)throw new TypeError('The value "'+x+'" is invalid for argument "value"');for(Q=0;Q<B-R;++Q)this[Q+R]=ue[Q%$e]}return this};const he={};function we(_,x,R){he[_]=class extends R{constructor(){super(),Object.defineProperty(this,"message",{value:x.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${_}]`,this.stack,delete this.name}get code(){return _}set code(K){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:K,writable:!0})}toString(){return`${this.name} [${_}]: ${this.message}`}}}we("ERR_BUFFER_OUT_OF_BOUNDS",function(_){return _?`${_} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),we("ERR_INVALID_ARG_TYPE",function(_,x){return`The "${_}" argument must be of type number. Received type ${typeof x}`},TypeError),we("ERR_OUT_OF_RANGE",function(_,x,R){let B=`The value of "${_}" is out of range.`,K=R;return Number.isInteger(R)&&Math.abs(R)>2**32?K=ke(String(R)):typeof R=="bigint"&&(K=String(R),(R>BigInt(2)**BigInt(32)||R<-(BigInt(2)**BigInt(32)))&&(K=ke(K)),K+="n"),B+=` It must be ${x}. Received ${K}`,B},RangeError);function ke(_){let x="",R=_.length;const B=_[0]==="-"?1:0;for(;R>=B+4;R-=3)x=`_${_.slice(R-3,R)}${x}`;return`${_.slice(0,R)}${x}`}function Ee(_,x,R){te(x,"offset"),(_[x]===void 0||_[x+R]===void 0)&&Y(x,_.length-(R+1))}function G(_,x,R,B,K,Q){if(_>R||_<x){const ue=typeof x=="bigint"?"n":"";let $e;throw x===0||x===BigInt(0)?$e=`>= 0${ue} and < 2${ue} ** ${(Q+1)*8}${ue}`:$e=`>= -(2${ue} ** ${(Q+1)*8-1}${ue}) and < 2 ** ${(Q+1)*8-1}${ue}`,new he.ERR_OUT_OF_RANGE("value",$e,_)}Ee(B,K,Q)}function te(_,x){if(typeof _!="number")throw new he.ERR_INVALID_ARG_TYPE(x,"number",_)}function Y(_,x,R){throw Math.floor(_)!==_?(te(_,R),new he.ERR_OUT_OF_RANGE("offset","an integer",_)):x<0?new he.ERR_BUFFER_OUT_OF_BOUNDS:new he.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${x}`,_)}const se=/[^+/0-9A-Za-z-_]/g;function fe(_){if(_=_.split("=")[0],_=_.trim().replace(se,""),_.length<2)return"";for(;_.length%4!==0;)_=_+"=";return _}function Se(_,x){x=x||1/0;let R;const B=_.length;let K=null;const Q=[];for(let ue=0;ue<B;++ue){if(R=_.charCodeAt(ue),R>55295&&R<57344){if(!K){if(R>56319){(x-=3)>-1&&Q.push(239,191,189);continue}else if(ue+1===B){(x-=3)>-1&&Q.push(239,191,189);continue}K=R;continue}if(R<56320){(x-=3)>-1&&Q.push(239,191,189),K=R;continue}R=(K-55296<<10|R-56320)+65536}else K&&(x-=3)>-1&&Q.push(239,191,189);if(K=null,R<128){if((x-=1)<0)break;Q.push(R)}else if(R<2048){if((x-=2)<0)break;Q.push(R>>6|192,R&63|128)}else if(R<65536){if((x-=3)<0)break;Q.push(R>>12|224,R>>6&63|128,R&63|128)}else if(R<1114112){if((x-=4)<0)break;Q.push(R>>18|240,R>>12&63|128,R>>6&63|128,R&63|128)}else throw new Error("Invalid code point")}return Q}function Oe(_){const x=[];for(let R=0;R<_.length;++R)x.push(_.charCodeAt(R)&255);return x}function Le(_,x){let R,B,K;const Q=[];for(let ue=0;ue<_.length&&!((x-=2)<0);++ue)R=_.charCodeAt(ue),B=R>>8,K=R%256,Q.push(K),Q.push(B);return Q}function ye(_){return e.toByteArray(fe(_))}function Pe(_,x,R,B){let K;for(K=0;K<B&&!(K+R>=x.length||K>=_.length);++K)x[K+R]=_[K];return K}function Te(_,x){return _ instanceof x||_!=null&&_.constructor!=null&&_.constructor.name!=null&&_.constructor.name===x.name}function qe(_){return _!==_}const ct=function(){const _="0123456789abcdef",x=new Array(256);for(let R=0;R<16;++R){const B=R*16;for(let K=0;K<16;++K)x[B+K]=_[R]+_[K]}return x}();function Ge(_){return typeof BigInt>"u"?et:_}function et(){throw new Error("BigInt not supported")}}(Yd)),Yd}var _u=_6();bo("536563703235366b315f48617368546f43757276655f43617368755f");function F6(n){return _u.Buffer.from(n).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function O6(n){return _u.Buffer.from(n,"base64")}function U6(n){const e=JSON.stringify(n);return B6(_u.Buffer.from(e).toString("base64"))}function B6(n){return n.replace(/\+/g,"-").replace(/\//g,"_").split("=")[0]}function V6(n){return typeof n=="number"||typeof n=="string"}function uv(n){const e=[];return Ep(n,e),new Uint8Array(e)}function Ep(n,e){if(n===null)e.push(246);else if(n===void 0)e.push(247);else if(typeof n=="boolean")e.push(n?245:244);else if(typeof n=="number")dv(n,e);else if(typeof n=="string")fv(n,e);else if(Array.isArray(n))q6(n,e);else if(n instanceof Uint8Array)W6(n,e);else if(typeof n=="object")H6(n,e);else throw new Error("Unsupported type")}function dv(n,e){if(n<24)e.push(n);else if(n<256)e.push(24,n);else if(n<65536)e.push(25,n>>8,n&255);else if(n<4294967296)e.push(26,n>>24,n>>16&255,n>>8&255,n&255);else throw new Error("Unsupported integer size")}function W6(n,e){const t=n.length;if(t<24)e.push(64+t);else if(t<256)e.push(88,t);else if(t<65536)e.push(89,t>>8&255,t&255);else if(t<4294967296)e.push(90,t>>24&255,t>>16&255,t>>8&255,t&255);else throw new Error("Byte string too long to encode");for(let o=0;o<n.length;o++)e.push(n[o])}function fv(n,e){const t=new TextEncoder().encode(n),o=t.length;if(o<24)e.push(96+o);else if(o<256)e.push(120,o);else if(o<65536)e.push(121,o>>8&255,o&255);else if(o<4294967296)e.push(122,o>>24&255,o>>16&255,o>>8&255,o&255);else throw new Error("String too long to encode");for(let a=0;a<t.length;a++)e.push(t[a])}function q6(n,e){const t=n.length;if(t<24)e.push(128|t);else if(t<256)e.push(152,t);else if(t<65536)e.push(153,t>>8,t&255);else throw new Error("Unsupported array length");for(const o of n)Ep(o,e)}function H6(n,e){const t=Object.keys(n);dv(t.length,e),e[e.length-1]|=160;for(const o of t)fv(o,e),Ep(n[o],e)}function $6(n){const e=new DataView(n.buffer,n.byteOffset,n.byteLength);return Kc(e,0).value}function Kc(n,e){if(e>=n.byteLength)throw new Error("Unexpected end of data");const t=n.getUint8(e++),o=t>>5,a=t&31;switch(o){case 0:return Y6(n,e,a);case 1:return K6(n,e,a);case 2:return G6(n,e,a);case 3:return J6(n,e,a);case 4:return Z6(n,e,a);case 5:return Q6(n,e,a);case 7:return eN(n,e,a);default:throw new Error(`Unsupported major type: ${o}`)}}function Bi(n,e,t){if(t<24)return{value:t,offset:e};if(t===24)return{value:n.getUint8(e++),offset:e};if(t===25){const o=n.getUint16(e,!1);return e+=2,{value:o,offset:e}}if(t===26){const o=n.getUint32(e,!1);return e+=4,{value:o,offset:e}}if(t===27){const o=n.getUint32(e,!1),a=n.getUint32(e+4,!1);return e+=8,{value:o*2**32+a,offset:e}}throw new Error(`Unsupported length: ${t}`)}function Y6(n,e,t){const{value:o,offset:a}=Bi(n,e,t);return{value:o,offset:a}}function K6(n,e,t){const{value:o,offset:a}=Bi(n,e,t);return{value:-1-o,offset:a}}function G6(n,e,t){const{value:o,offset:a}=Bi(n,e,t);if(a+o>n.byteLength)throw new Error("Byte string length exceeds data length");return{value:new Uint8Array(n.buffer,n.byteOffset+a,o),offset:a+o}}function J6(n,e,t){const{value:o,offset:a}=Bi(n,e,t);if(a+o>n.byteLength)throw new Error("String length exceeds data length");const r=new Uint8Array(n.buffer,n.byteOffset+a,o);return{value:new TextDecoder().decode(r),offset:a+o}}function Z6(n,e,t){const{value:o,offset:a}=Bi(n,e,t),r=[];let i=a;for(let s=0;s<o;s++){const l=Kc(n,i);r.push(l.value),i=l.offset}return{value:r,offset:i}}function Q6(n,e,t){const{value:o,offset:a}=Bi(n,e,t),r={};let i=a;for(let s=0;s<o;s++){const l=Kc(n,i);if(!V6(l.value))throw new Error("Invalid key type");const u=Kc(n,l.offset);r[l.value]=u.value,i=u.offset}return{value:r,offset:i}}function X6(n){const e=(n&31744)>>10,t=n&1023,o=n&32768?-1:1;return e===0?o*2**-14*(t/1024):e===31?t?NaN:o*(1/0):o*2**(e-15)*(1+t/1024)}function eN(n,e,t){if(t<24)switch(t){case 20:return{value:!1,offset:e};case 21:return{value:!0,offset:e};case 22:return{value:null,offset:e};case 23:return{value:void 0,offset:e};default:throw new Error(`Unknown simple value: ${t}`)}if(t===24)return{value:n.getUint8(e++),offset:e};if(t===25){const o=X6(n.getUint16(e,!1));return e+=2,{value:o,offset:e}}if(t===26){const o=n.getFloat32(e,!1);return e+=4,{value:o,offset:e}}if(t===27){const o=n.getFloat64(e,!1);return e+=8,{value:o,offset:e}}throw new Error(`Unknown simple or float value: ${t}`)}class Fu{constructor(e,t,o,a,r,i,s=!1,l){this.transport=e,this.id=t,this.amount=o,this.unit=a,this.mints=r,this.description=i,this.singleUse=s,this.nut10=l}toRawRequest(){const e={};return this.transport&&(e.t=this.transport.map(t=>({t:t.type,a:t.target,g:t.tags}))),this.id&&(e.i=this.id),this.amount&&(e.a=this.amount),this.unit&&(e.u=this.unit),this.mints&&(e.m=this.mints),this.description&&(e.d=this.description),this.singleUse&&(e.s=this.singleUse),this.nut10&&(e.nut10={k:this.nut10.kind,d:this.nut10.data,t:this.nut10.tags}),e}toEncodedRequest(){const e=this.toRawRequest(),t=uv(e);return"creqA"+_u.Buffer.from(t).toString("base64")}getTransport(e){var t;return(t=this.transport)==null?void 0:t.find(o=>o.type===e)}static fromRawRequest(e){const t=e.t?e.t.map(a=>({type:a.t,target:a.a,tags:a.g})):void 0,o=e.nut10?{kind:e.nut10.k,data:e.nut10.d,tags:e.nut10.t}:void 0;return new Fu(t,e.i,e.a,e.u,e.m,e.d,e.s,o)}static fromEncodedRequest(e){if(!e.startsWith("creq"))throw new Error("unsupported pr: invalid prefix");if(e[4]!=="A")throw new Error("unsupported pr version");const t=e.slice(5),o=O6(t),a=$6(o);return this.fromRawRequest(a)}}const tN="A",nN="cashu";function fy(n){return/^[a-f0-9]*$/i.test(n)}function hv(n){return Array.isArray(n)?n.some(e=>!fy(e.id)):fy(n.id)}function oN(n){const e={token:[{mint:n.mint,proofs:n.proofs}]};return n.unit&&(e.unit=n.unit),n.memo&&(e.memo=n.memo),nN+tN+U6(e)}function aN(n,e){if(hv(n.proofs)||(e==null?void 0:e.version)===3){if((e==null?void 0:e.version)===4)throw new Error("can not encode to v4 token if proofs contain non-hex keyset id");return oN(n)}return pv(n)}function pv(n){if(n.proofs.forEach(i=>{if(i.dleq&&i.dleq.r==null)throw new Error("Missing blinding factor in included DLEQ proof")}),hv(n.proofs))throw new Error("can not encode to v4 token if proofs contain non-hex keyset id");const e=rN(n),t=uv(e),o="cashu",a="B",r=F6(t);return o+a+r}function rN(n){const e={},t=n.mint;for(let a=0;a<n.proofs.length;a++){const r=n.proofs[a];e[r.id]?e[r.id].push(r):e[r.id]=[r]}const o={m:t,u:n.unit||"sat",t:Object.keys(e).map(a=>({i:bo(a),p:e[a].map(r=>({a:r.amount,s:r.secret,c:bo(r.C),...r.dleq&&{d:{e:bo(r.dleq.e),s:bo(r.dleq.s),r:bo(r.dleq.r??"00")}},...r.witness&&{w:JSON.stringify(r.witness)}}))}))};return n.memo&&(o.d=n.memo),o}function iN(n){return Fu.fromEncodedRequest(n)}const Vi=Object.freeze(Object.defineProperty({__proto__:null,PaymentRequest:Fu,decodePaymentRequest:iN,getEncodedToken:aN,getEncodedTokenV4:pv},Symbol.toStringTag,{value:"Module"}));class sN extends Error{}function lN(n,e,t){const o=new AbortController;t&&t.addEventListener("abort",i=>o.abort(i),{once:!0});const a=setTimeout(()=>{o.abort(new sN(e))},n);return{cancel:()=>clearTimeout(a),signal:o.signal}}function Kt(n,e){if(e!=null&&e.timeout){const{cancel:t,signal:o}=lN(e.timeout,e.timeoutMessage??"Timeout",e.signal??void 0);return fetch(n,{...e,signal:o}).finally(t)}else return fetch(n,e)}async function hy(n,e,t){var s;const o=new URL("/mirror",n),a={"X-SHA-256":e.sha256,"X-Content-Length":String(e.size),"Content-Type":"application/json"};if(e.type&&(a["X-Content-Type"]=e.type),t!=null&&t.auth)if(typeof t.auth=="boolean"){if(!t.onAuth)throw new Error("Missing onAuth handler");a.Authorization=Ut(await t.onAuth(n,e.sha256,e))}else a.Authorization=Ut(t.auth);const r=JSON.stringify({url:e.url});let i=await Kt(o,{method:"PUT",signal:t==null?void 0:t.signal,headers:a,body:r,timeout:t==null?void 0:t.timeout});switch(i.status){case 401:{if((t==null?void 0:t.auth)===!1)throw new Error("Authorization disabled");const l=await((s=t==null?void 0:t.onAuth)==null?void 0:s.call(t,n,e.sha256,e));if(!l)throw new Error("Missing auth handler");i=await Kt(o,{signal:t==null?void 0:t.signal,method:"PUT",body:r,headers:{...a,Authorization:Ut(l)},timeout:t==null?void 0:t.timeout});break}case 402:{if(!(t!=null&&t.onPayment))throw new Error("Missing payment handler");const{getEncodedToken:l}=await Ve(async()=>{const{getEncodedToken:m}=await Promise.resolve().then(()=>Vi);return{getEncodedToken:m}},void 0),{getPaymentRequestFromHeaders:u}=await Ve(async()=>{const{getPaymentRequestFromHeaders:m}=await import("./cashu-Dwu7xxGi.js");return{getPaymentRequestFromHeaders:m}},__vite__mapDeps([0,1,2,3,4,5,6])),f=u(i.headers),d=await t.onPayment(n,e.sha256,e,f),p=l(d);i=await Kt(o,{signal:t==null?void 0:t.signal,method:"PUT",body:r,headers:{...a,"X-Cashu":p},timeout:t==null?void 0:t.timeout});break}}return await Fa.handleErrorResponse(i),i.json()}async function py(n,e,t){var f;const o=new URL("/upload",n),a=await Du(e),r={"X-SHA-256":a};if(t!=null&&t.auth)if(typeof t.auth=="boolean"){if(!t.onAuth)throw new Error("Missing onAuth handler");r.Authorization=Ut(await t.onAuth(n,a,"upload",e))}else r.Authorization=Ut(t.auth);const i={...r,"X-Content-Length":String(sv(e))},s=lv(e);s&&(i["X-Content-Type"]=s);let l=await Kt(o,{method:"HEAD",signal:t==null?void 0:t.signal,headers:i,timeout:t==null?void 0:t.timeout}),u;switch(l.status===404&&(u=l=await Kt(o,{body:e,method:"PUT",signal:t==null?void 0:t.signal,timeout:t==null?void 0:t.timeout})),l.status){case 401:{if((t==null?void 0:t.auth)===!1)throw new Error("Authorization disabled");const d=await((f=t==null?void 0:t.onAuth)==null?void 0:f.call(t,n,a,"upload",e));if(!d)throw new Error("Missing auth handler");u=await Kt(o,{method:"PUT",body:e,headers:{...r,Authorization:Ut(d)},signal:t==null?void 0:t.signal,timeout:t==null?void 0:t.timeout});break}case 402:{if(!(t!=null&&t.onPayment))throw new Error("Missing payment handler");const{getEncodedToken:d}=await Ve(async()=>{const{getEncodedToken:w}=await Promise.resolve().then(()=>Vi);return{getEncodedToken:w}},void 0),{getPaymentRequestFromHeaders:p}=await Ve(async()=>{const{getPaymentRequestFromHeaders:w}=await import("./cashu-Dwu7xxGi.js");return{getPaymentRequestFromHeaders:w}},__vite__mapDeps([0,1,2,3,4,5,6])),m=p(l.headers),g=await t.onPayment(n,a,e,m),y=d(g);u=await Kt(o,{method:"PUT",body:e,headers:{...r,"X-Cashu":y},signal:t==null?void 0:t.signal,timeout:t==null?void 0:t.timeout});break}}if(l.status>=500)throw new Error("Server error");return u||(u=await Kt(o,{method:"PUT",body:e,headers:{...r},signal:t==null?void 0:t.signal,timeout:t==null?void 0:t.timeout})),await Fa.handleErrorResponse(u),u.json()}async function my(n,e,t){var i;const o=new URL("/list/"+e,n);t!=null&&t.since&&o.searchParams.append("since",String(t.since)),t!=null&&t.until&&o.searchParams.append("until",String(t.until));const a={};if(t!=null&&t.auth)if(typeof t.auth=="boolean"){if(!t.onAuth)throw new Error("Missing onAuth handler");a.Authorization=Ut(await t.onAuth(n))}else a.Authorization=Ut(t.auth);let r=await Kt(o,{headers:a,signal:t==null?void 0:t.signal,timeout:t==null?void 0:t.timeout});switch(r.status){case 401:{if((t==null?void 0:t.auth)===!1)throw new Error("Authorization disabled");const s=await((i=t==null?void 0:t.onAuth)==null?void 0:i.call(t,n));if(!s)throw new Error("Missing auth handler");r=await Kt(o,{headers:{...a,Authorization:Ut(s)},signal:t==null?void 0:t.signal,timeout:t==null?void 0:t.timeout});break}case 402:{if(!(t!=null&&t.onPayment))throw new Error("Missing payment handler");const{getEncodedToken:s}=await Ve(async()=>{const{getEncodedToken:p}=await Promise.resolve().then(()=>Vi);return{getEncodedToken:p}},void 0),{getPaymentRequestFromHeaders:l}=await Ve(async()=>{const{getPaymentRequestFromHeaders:p}=await import("./cashu-Dwu7xxGi.js");return{getPaymentRequestFromHeaders:p}},__vite__mapDeps([0,1,2,3,4,5,6])),u=l(r.headers),f=await t.onPayment(n,u),d=s(f);r=await Kt(o,{headers:{...a,"X-Cashu":d},signal:t==null?void 0:t.signal,timeout:t==null?void 0:t.timeout});break}}return await Fa.handleErrorResponse(r),r.json()}async function gy(n,e,t){var i;const o=new URL("/"+e,n),a={};if(t!=null&&t.auth)if(typeof t.auth=="boolean"){if(!t.onAuth)throw new Error("Missing onAuth handler");a.Authorization=Ut(await t.onAuth(n,e))}else a.Authorization=Ut(t.auth);let r=await Kt(o,{headers:a,signal:t==null?void 0:t.signal,timeout:t==null?void 0:t.timeout});switch(r.status){case 401:{if((t==null?void 0:t.auth)===!1)throw new Error("Authorization disabled");const s=await((i=t==null?void 0:t.onAuth)==null?void 0:i.call(t,n,e));if(!s)throw new Error("Missing auth handler");r=await Kt(o,{headers:{...a,Authorization:Ut(s)},signal:t==null?void 0:t.signal,timeout:t==null?void 0:t.timeout});break}case 402:{if(!(t!=null&&t.onPayment))throw new Error("Missing payment handler");const{getEncodedToken:s}=await Ve(async()=>{const{getEncodedToken:p}=await Promise.resolve().then(()=>Vi);return{getEncodedToken:p}},void 0),{getPaymentRequestFromHeaders:l}=await Ve(async()=>{const{getPaymentRequestFromHeaders:p}=await import("./cashu-Dwu7xxGi.js");return{getPaymentRequestFromHeaders:p}},__vite__mapDeps([0,1,2,3,4,5,6])),u=l(r.headers),f=await t.onPayment(n,e,u),d=s(f);r=await Kt(o,{headers:{...a,"X-Cashu":d},signal:t==null?void 0:t.signal,timeout:t==null?void 0:t.timeout});break}}return await Fa.handleErrorResponse(r),r}async function cN(n,e,t){var i;const o=new URL("/"+e,n),a={};if(t!=null&&t.auth)if(typeof t.auth=="boolean"){if(!t.onAuth)throw new Error("Missing onAuth handler");a.Authorization=Ut(await t.onAuth(n,e))}else a.Authorization=Ut(t.auth);let r=await Kt(o,{method:"DELETE",headers:a,signal:t==null?void 0:t.signal,timeout:t==null?void 0:t.timeout});switch(r.status){case 401:{if((t==null?void 0:t.auth)===!1)throw new Error("Authorization disabled");const s=await((i=t==null?void 0:t.onAuth)==null?void 0:i.call(t,n,e));if(!s)throw new Error("Missing auth handler");r=await Kt(o,{signal:t==null?void 0:t.signal,method:"DELETE",headers:{...a,Authorization:Ut(s)},timeout:t==null?void 0:t.timeout});break}case 402:{if(!(t!=null&&t.onPayment))throw new Error("Missing payment handler");const{getEncodedToken:s}=await Ve(async()=>{const{getEncodedToken:p}=await Promise.resolve().then(()=>Vi);return{getEncodedToken:p}},void 0),{getPaymentRequestFromHeaders:l}=await Ve(async()=>{const{getPaymentRequestFromHeaders:p}=await import("./cashu-Dwu7xxGi.js");return{getPaymentRequestFromHeaders:p}},__vite__mapDeps([0,1,2,3,4,5,6])),u=l(r.headers),f=await t.onPayment(n,e,u),d=s(f);r=await Kt(o,{signal:t==null?void 0:t.signal,method:"DELETE",headers:{...a,"X-Cashu":d},timeout:t==null?void 0:t.timeout});break}}return await Fa.handleErrorResponse(r),r.ok}class uN extends Error{}async function yy(n,e,t){var f;const o=new URL("/media",n),a=await Du(e),r={"X-SHA-256":a};if(t!=null&&t.auth)if(typeof t.auth=="boolean"){if(!t.onAuth)throw new Error("Missing onAuth handler");r.Authorization=Ut(await t.onAuth(n,a,"media",e))}else r.Authorization=Ut(t.auth);const i={...r,"X-Content-Length":String(sv(e))},s=lv(e);s&&(i["X-Content-Type"]=s);let l=await fetch(o,{method:"HEAD",signal:t==null?void 0:t.signal,headers:i}),u;if(l.status===404)throw new uN("/media endpoint not supported");switch(l.status){case 401:{if((t==null?void 0:t.auth)===!1)throw new Error("Authorization disabled");const d=await((f=t==null?void 0:t.onAuth)==null?void 0:f.call(t,n,a,"media",e));if(!d)throw new Error("Missing auth handler");u=await fetch(o,{signal:t==null?void 0:t.signal,method:"PUT",body:e,headers:{...r,Authorization:Ut(d)}});break}case 402:{if(!(t!=null&&t.onPayment))throw new Error("Missing payment handler");const{getEncodedToken:d}=await Ve(async()=>{const{getEncodedToken:w}=await Promise.resolve().then(()=>Vi);return{getEncodedToken:w}},void 0),{getPaymentRequestFromHeaders:p}=await Ve(async()=>{const{getPaymentRequestFromHeaders:w}=await import("./cashu-Dwu7xxGi.js");return{getPaymentRequestFromHeaders:w}},__vite__mapDeps([0,1,2,3,4,5,6])),m=p(l.headers),g=await t.onPayment(n,a,e,m),y=d(g);u=await fetch(o,{signal:t==null?void 0:t.signal,method:"PUT",body:e,headers:{...r,"X-Cashu":y}});break}}if(l.status>=500)throw new Error("Server error");return u||(u=await fetch(o,{signal:t==null?void 0:t.signal,method:"PUT",body:e,headers:{...r}})),await Fa.handleErrorResponse(u),u.json()}const Xt=class Xt{constructor(e,t){H(this,"server");H(this,"signer");H(this,"payment");this.server=new URL("/",e),this.signer=t}async createDownloadAuth(e,t){if(!this.signer)throw new Error("Missing signer");return await ry(this.signer,e,t)}async downloadBlob(e,t){const o={signal:t==null?void 0:t.signal};return(t==null?void 0:t.auth)!==!1&&(this.signer&&(o.onAuth=(r,i)=>this.createDownloadAuth(i,{message:`Download ${i}`})),typeof(t==null?void 0:t.auth)=="object"&&(o.auth=t.auth)),(t==null?void 0:t.payment)!==!1&&this.payment&&(o.onPayment=this.payment.download),(await gy(this.server,e,o)).blob()}async createUploadAuth(e,t){if(!this.signer)throw new Error("Missing signer");return await iy(this.signer,e,t)}async uploadBlob(e,t){const o={signal:t==null?void 0:t.signal};return(t==null?void 0:t.auth)!==!1&&(this.signer&&(o.onAuth=(a,r,i)=>this.createUploadAuth(r,{type:i})),typeof(t==null?void 0:t.auth)=="object"&&(o.auth=t.auth)),(t==null?void 0:t.payment)!==!1&&this.payment&&(o.onPayment=this.payment.upload),py(this.server,e,o)}async createMirrorAuth(e,t){if(!this.signer)throw new Error("Missing signer");return await L6(this.signer,typeof e=="string"?e:e.sha256,t)}async mirrorBlob(e,t){const o={signal:t==null?void 0:t.signal};return(t==null?void 0:t.auth)!==!1&&(this.signer&&(o.onAuth=(a,r)=>this.createMirrorAuth(r)),typeof(t==null?void 0:t.auth)=="object"&&(o.auth=t.auth)),(t==null?void 0:t.payment)!==!1&&this.payment&&(o.onPayment=this.payment.mirror),hy(this.server,e,o)}async createMediaAuth(e,t){return await this.createUploadAuth(e,{...t,type:"media"})}async uploadMedia(e,t){const o={signal:t==null?void 0:t.signal};return(t==null?void 0:t.auth)!==!1&&(this.signer&&(o.onAuth=(a,r,i)=>this.createUploadAuth(r,{type:i})),typeof(t==null?void 0:t.auth)=="object"&&(o.auth=t.auth)),(t==null?void 0:t.payment)!==!1&&this.payment&&(o.onPayment=this.payment.upload),yy(this.server,e,o)}static async hasBlob(e,t){return(await fetch(new URL("/"+t,e),{method:"HEAD"})).status!==404}async hasBlob(e){return Xt.hasBlob(this.server,e)}async createListAuth(e){if(!this.signer)throw new Error("Missing signer");return await sy(this.signer,e)}async listBlobs(e,t){const o={signal:t==null?void 0:t.signal};return(t==null?void 0:t.auth)!==!1&&(this.signer&&(o.onAuth=a=>this.createListAuth()),typeof(t==null?void 0:t.auth)=="object"&&(o.auth=t.auth)),(t==null?void 0:t.payment)!==!1&&this.payment&&(o.onPayment=this.payment.list),my(this.server,e,o)}async createDeleteAuth(e,t){if(!this.signer)throw new Error("Missing signer");return await ly(this.signer,e,t)}async deleteBlob(e,t){const o={signal:t==null?void 0:t.signal};return(t==null?void 0:t.auth)!==!1&&(this.signer&&(o.onAuth=(a,r)=>this.createDeleteAuth(r)),typeof(t==null?void 0:t.auth)=="object"&&(o.auth=t.auth)),(t==null?void 0:t.payment)!==!1&&this.payment&&(o.onPayment=this.payment.delete),Xt.deleteBlob(this.server,e,o)}};H(Xt,"getFileSha256",Du),H(Xt,"createGetAuth",ry),H(Xt,"createUploadAuth",iy),H(Xt,"createListAuth",sy),H(Xt,"createDeleteAuth",ly),H(Xt,"encodeAuthorizationHeader",Ut),H(Xt,"mirrorBlob",hy),H(Xt,"uploadBlob",py),H(Xt,"listBlobs",my),H(Xt,"downloadBlob",gy),H(Xt,"deleteBlob",cN),H(Xt,"uploadMedia",yy);let Cs=Xt;var ht;(function(n){n.assertEqual=a=>a;function e(a){}n.assertIs=e;function t(a){throw new Error}n.assertNever=t,n.arrayToEnum=a=>{const r={};for(const i of a)r[i]=i;return r},n.getValidEnumValues=a=>{const r=n.objectKeys(a).filter(s=>typeof a[a[s]]!="number"),i={};for(const s of r)i[s]=a[s];return n.objectValues(i)},n.objectValues=a=>n.objectKeys(a).map(function(r){return a[r]}),n.objectKeys=typeof Object.keys=="function"?a=>Object.keys(a):a=>{const r=[];for(const i in a)Object.prototype.hasOwnProperty.call(a,i)&&r.push(i);return r},n.find=(a,r)=>{for(const i of a)if(r(i))return i},n.isInteger=typeof Number.isInteger=="function"?a=>Number.isInteger(a):a=>typeof a=="number"&&isFinite(a)&&Math.floor(a)===a;function o(a,r=" | "){return a.map(i=>typeof i=="string"?`'${i}'`:i).join(r)}n.joinValues=o,n.jsonStringifyReplacer=(a,r)=>typeof r=="bigint"?r.toString():r})(ht||(ht={}));var rh;(function(n){n.mergeShapes=(e,t)=>({...e,...t})})(rh||(rh={}));const je=ht.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Fo=n=>{switch(typeof n){case"undefined":return je.undefined;case"string":return je.string;case"number":return isNaN(n)?je.nan:je.number;case"boolean":return je.boolean;case"function":return je.function;case"bigint":return je.bigint;case"symbol":return je.symbol;case"object":return Array.isArray(n)?je.array:n===null?je.null:n.then&&typeof n.then=="function"&&n.catch&&typeof n.catch=="function"?je.promise:typeof Map<"u"&&n instanceof Map?je.map:typeof Set<"u"&&n instanceof Set?je.set:typeof Date<"u"&&n instanceof Date?je.date:je.object;default:return je.unknown}},ve=ht.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),dN=n=>JSON.stringify(n,null,2).replace(/"([^"]+)":/g,"$1:");class In extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=o=>{this.issues=[...this.issues,o]},this.addIssues=(o=[])=>{this.issues=[...this.issues,...o]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){const t=e||function(r){return r.message},o={_errors:[]},a=r=>{for(const i of r.issues)if(i.code==="invalid_union")i.unionErrors.map(a);else if(i.code==="invalid_return_type")a(i.returnTypeError);else if(i.code==="invalid_arguments")a(i.argumentsError);else if(i.path.length===0)o._errors.push(t(i));else{let s=o,l=0;for(;l<i.path.length;){const u=i.path[l];l===i.path.length-1?(s[u]=s[u]||{_errors:[]},s[u]._errors.push(t(i))):s[u]=s[u]||{_errors:[]},s=s[u],l++}}};return a(this),o}static assert(e){if(!(e instanceof In))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,ht.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=t=>t.message){const t={},o=[];for(const a of this.issues)a.path.length>0?(t[a.path[0]]=t[a.path[0]]||[],t[a.path[0]].push(e(a))):o.push(e(a));return{formErrors:o,fieldErrors:t}}get formErrors(){return this.flatten()}}In.create=n=>new In(n);const Pi=(n,e)=>{let t;switch(n.code){case ve.invalid_type:n.received===je.undefined?t="Required":t=`Expected ${n.expected}, received ${n.received}`;break;case ve.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(n.expected,ht.jsonStringifyReplacer)}`;break;case ve.unrecognized_keys:t=`Unrecognized key(s) in object: ${ht.joinValues(n.keys,", ")}`;break;case ve.invalid_union:t="Invalid input";break;case ve.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${ht.joinValues(n.options)}`;break;case ve.invalid_enum_value:t=`Invalid enum value. Expected ${ht.joinValues(n.options)}, received '${n.received}'`;break;case ve.invalid_arguments:t="Invalid function arguments";break;case ve.invalid_return_type:t="Invalid function return type";break;case ve.invalid_date:t="Invalid date";break;case ve.invalid_string:typeof n.validation=="object"?"includes"in n.validation?(t=`Invalid input: must include "${n.validation.includes}"`,typeof n.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${n.validation.position}`)):"startsWith"in n.validation?t=`Invalid input: must start with "${n.validation.startsWith}"`:"endsWith"in n.validation?t=`Invalid input: must end with "${n.validation.endsWith}"`:ht.assertNever(n.validation):n.validation!=="regex"?t=`Invalid ${n.validation}`:t="Invalid";break;case ve.too_small:n.type==="array"?t=`Array must contain ${n.exact?"exactly":n.inclusive?"at least":"more than"} ${n.minimum} element(s)`:n.type==="string"?t=`String must contain ${n.exact?"exactly":n.inclusive?"at least":"over"} ${n.minimum} character(s)`:n.type==="number"?t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`:n.type==="date"?t=`Date must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(n.minimum))}`:t="Invalid input";break;case ve.too_big:n.type==="array"?t=`Array must contain ${n.exact?"exactly":n.inclusive?"at most":"less than"} ${n.maximum} element(s)`:n.type==="string"?t=`String must contain ${n.exact?"exactly":n.inclusive?"at most":"under"} ${n.maximum} character(s)`:n.type==="number"?t=`Number must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`:n.type==="bigint"?t=`BigInt must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`:n.type==="date"?t=`Date must be ${n.exact?"exactly":n.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(n.maximum))}`:t="Invalid input";break;case ve.custom:t="Invalid input";break;case ve.invalid_intersection_types:t="Intersection results could not be merged";break;case ve.not_multiple_of:t=`Number must be a multiple of ${n.multipleOf}`;break;case ve.not_finite:t="Number must be finite";break;default:t=e.defaultError,ht.assertNever(n)}return{message:t}};let mv=Pi;function fN(n){mv=n}function Gc(){return mv}const Jc=n=>{const{data:e,path:t,errorMaps:o,issueData:a}=n,r=[...t,...a.path||[]],i={...a,path:r};if(a.message!==void 0)return{...a,path:r,message:a.message};let s="";const l=o.filter(u=>!!u).slice().reverse();for(const u of l)s=u(i,{data:e,defaultError:s}).message;return{...a,path:r,message:s}},hN=[];function Ne(n,e){const t=Gc(),o=Jc({issueData:e,data:n.data,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,t,t===Pi?void 0:Pi].filter(a=>!!a)});n.common.issues.push(o)}class cn{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){const o=[];for(const a of t){if(a.status==="aborted")return Ye;a.status==="dirty"&&e.dirty(),o.push(a.value)}return{status:e.value,value:o}}static async mergeObjectAsync(e,t){const o=[];for(const a of t){const r=await a.key,i=await a.value;o.push({key:r,value:i})}return cn.mergeObjectSync(e,o)}static mergeObjectSync(e,t){const o={};for(const a of t){const{key:r,value:i}=a;if(r.status==="aborted"||i.status==="aborted")return Ye;r.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),r.value!=="__proto__"&&(typeof i.value<"u"||a.alwaysSet)&&(o[r.value]=i.value)}return{status:e.value,value:o}}}const Ye=Object.freeze({status:"aborted"}),Hr=n=>({status:"dirty",value:n}),vn=n=>({status:"valid",value:n}),ih=n=>n.status==="aborted",sh=n=>n.status==="dirty",hr=n=>n.status==="valid",Fs=n=>typeof Promise<"u"&&n instanceof Promise;function Zc(n,e,t,o){if(typeof e=="function"?n!==e||!o:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e.get(n)}function gv(n,e,t,o,a){if(typeof e=="function"?n!==e||!a:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e.set(n,t),t}var De;(function(n){n.errToObj=e=>typeof e=="string"?{message:e}:e||{},n.toString=e=>typeof e=="string"?e:e==null?void 0:e.message})(De||(De={}));var vs,bs;class Co{constructor(e,t,o,a){this._cachedPath=[],this.parent=e,this.data=t,this._path=o,this._key=a}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const wy=(n,e)=>{if(hr(e))return{success:!0,data:e.value};if(!n.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const t=new In(n.common.issues);return this._error=t,this._error}}};function tt(n){if(!n)return{};const{errorMap:e,invalid_type_error:t,required_error:o,description:a}=n;if(e&&(t||o))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:a}:{errorMap:(i,s)=>{var l,u;const{message:f}=n;return i.code==="invalid_enum_value"?{message:f??s.defaultError}:typeof s.data>"u"?{message:(l=f??o)!==null&&l!==void 0?l:s.defaultError}:i.code!=="invalid_type"?{message:s.defaultError}:{message:(u=f??t)!==null&&u!==void 0?u:s.defaultError}},description:a}}class at{get description(){return this._def.description}_getType(e){return Fo(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:Fo(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new cn,ctx:{common:e.parent.common,data:e.data,parsedType:Fo(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const t=this._parse(e);if(Fs(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){const t=this._parse(e);return Promise.resolve(t)}parse(e,t){const o=this.safeParse(e,t);if(o.success)return o.data;throw o.error}safeParse(e,t){var o;const a={common:{issues:[],async:(o=t==null?void 0:t.async)!==null&&o!==void 0?o:!1,contextualErrorMap:t==null?void 0:t.errorMap},path:(t==null?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Fo(e)},r=this._parseSync({data:e,path:a.path,parent:a});return wy(a,r)}"~validate"(e){var t,o;const a={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Fo(e)};if(!this["~standard"].async)try{const r=this._parseSync({data:e,path:[],parent:a});return hr(r)?{value:r.value}:{issues:a.common.issues}}catch(r){!((o=(t=r==null?void 0:r.message)===null||t===void 0?void 0:t.toLowerCase())===null||o===void 0)&&o.includes("encountered")&&(this["~standard"].async=!0),a.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:a}).then(r=>hr(r)?{value:r.value}:{issues:a.common.issues})}async parseAsync(e,t){const o=await this.safeParseAsync(e,t);if(o.success)return o.data;throw o.error}async safeParseAsync(e,t){const o={common:{issues:[],contextualErrorMap:t==null?void 0:t.errorMap,async:!0},path:(t==null?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Fo(e)},a=this._parse({data:e,path:o.path,parent:o}),r=await(Fs(a)?a:Promise.resolve(a));return wy(o,r)}refine(e,t){const o=a=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(a):t;return this._refinement((a,r)=>{const i=e(a),s=()=>r.addIssue({code:ve.custom,...o(a)});return typeof Promise<"u"&&i instanceof Promise?i.then(l=>l?!0:(s(),!1)):i?!0:(s(),!1)})}refinement(e,t){return this._refinement((o,a)=>e(o)?!0:(a.addIssue(typeof t=="function"?t(o,a):t),!1))}_refinement(e){return new to({schema:this,typeName:He.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:t=>this["~validate"](t)}}optional(){return xo.create(this,this._def)}nullable(){return Pa.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return eo.create(this)}promise(){return Ti.create(this,this._def)}or(e){return Vs.create([this,e],this._def)}and(e){return Ws.create(this,e,this._def)}transform(e){return new to({...tt(this._def),schema:this,typeName:He.ZodEffects,effect:{type:"transform",transform:e}})}default(e){const t=typeof e=="function"?e:()=>e;return new Ks({...tt(this._def),innerType:this,defaultValue:t,typeName:He.ZodDefault})}brand(){return new Rp({typeName:He.ZodBranded,type:this,...tt(this._def)})}catch(e){const t=typeof e=="function"?e:()=>e;return new Gs({...tt(this._def),innerType:this,catchValue:t,typeName:He.ZodCatch})}describe(e){const t=this.constructor;return new t({...this._def,description:e})}pipe(e){return bl.create(this,e)}readonly(){return Js.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const pN=/^c[^\s-]{8,}$/i,mN=/^[0-9a-z]+$/,gN=/^[0-9A-HJKMNP-TV-Z]{26}$/i,yN=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,wN=/^[a-z0-9_-]{21}$/i,vN=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,bN=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,kN=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,SN="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let Kd;const xN=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,AN=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,EN=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,RN=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,CN=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,PN=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,yv="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",NN=new RegExp(`^${yv}$`);function wv(n){let e="([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";return n.precision?e=`${e}\\.\\d{${n.precision}}`:n.precision==null&&(e=`${e}(\\.\\d+)?`),e}function TN(n){return new RegExp(`^${wv(n)}$`)}function vv(n){let e=`${yv}T${wv(n)}`;const t=[];return t.push(n.local?"Z?":"Z"),n.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}function jN(n,e){return!!((e==="v4"||!e)&&xN.test(n)||(e==="v6"||!e)&&EN.test(n))}function zN(n,e){if(!vN.test(n))return!1;try{const[t]=n.split("."),o=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),a=JSON.parse(atob(o));return!(typeof a!="object"||a===null||!a.typ||!a.alg||e&&a.alg!==e)}catch{return!1}}function IN(n,e){return!!((e==="v4"||!e)&&AN.test(n)||(e==="v6"||!e)&&RN.test(n))}class Xn extends at{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==je.string){const r=this._getOrReturnCtx(e);return Ne(r,{code:ve.invalid_type,expected:je.string,received:r.parsedType}),Ye}const o=new cn;let a;for(const r of this._def.checks)if(r.kind==="min")e.data.length<r.value&&(a=this._getOrReturnCtx(e,a),Ne(a,{code:ve.too_small,minimum:r.value,type:"string",inclusive:!0,exact:!1,message:r.message}),o.dirty());else if(r.kind==="max")e.data.length>r.value&&(a=this._getOrReturnCtx(e,a),Ne(a,{code:ve.too_big,maximum:r.value,type:"string",inclusive:!0,exact:!1,message:r.message}),o.dirty());else if(r.kind==="length"){const i=e.data.length>r.value,s=e.data.length<r.value;(i||s)&&(a=this._getOrReturnCtx(e,a),i?Ne(a,{code:ve.too_big,maximum:r.value,type:"string",inclusive:!0,exact:!0,message:r.message}):s&&Ne(a,{code:ve.too_small,minimum:r.value,type:"string",inclusive:!0,exact:!0,message:r.message}),o.dirty())}else if(r.kind==="email")kN.test(e.data)||(a=this._getOrReturnCtx(e,a),Ne(a,{validation:"email",code:ve.invalid_string,message:r.message}),o.dirty());else if(r.kind==="emoji")Kd||(Kd=new RegExp(SN,"u")),Kd.test(e.data)||(a=this._getOrReturnCtx(e,a),Ne(a,{validation:"emoji",code:ve.invalid_string,message:r.message}),o.dirty());else if(r.kind==="uuid")yN.test(e.data)||(a=this._getOrReturnCtx(e,a),Ne(a,{validation:"uuid",code:ve.invalid_string,message:r.message}),o.dirty());else if(r.kind==="nanoid")wN.test(e.data)||(a=this._getOrReturnCtx(e,a),Ne(a,{validation:"nanoid",code:ve.invalid_string,message:r.message}),o.dirty());else if(r.kind==="cuid")pN.test(e.data)||(a=this._getOrReturnCtx(e,a),Ne(a,{validation:"cuid",code:ve.invalid_string,message:r.message}),o.dirty());else if(r.kind==="cuid2")mN.test(e.data)||(a=this._getOrReturnCtx(e,a),Ne(a,{validation:"cuid2",code:ve.invalid_string,message:r.message}),o.dirty());else if(r.kind==="ulid")gN.test(e.data)||(a=this._getOrReturnCtx(e,a),Ne(a,{validation:"ulid",code:ve.invalid_string,message:r.message}),o.dirty());else if(r.kind==="url")try{new URL(e.data)}catch{a=this._getOrReturnCtx(e,a),Ne(a,{validation:"url",code:ve.invalid_string,message:r.message}),o.dirty()}else r.kind==="regex"?(r.regex.lastIndex=0,r.regex.test(e.data)||(a=this._getOrReturnCtx(e,a),Ne(a,{validation:"regex",code:ve.invalid_string,message:r.message}),o.dirty())):r.kind==="trim"?e.data=e.data.trim():r.kind==="includes"?e.data.includes(r.value,r.position)||(a=this._getOrReturnCtx(e,a),Ne(a,{code:ve.invalid_string,validation:{includes:r.value,position:r.position},message:r.message}),o.dirty()):r.kind==="toLowerCase"?e.data=e.data.toLowerCase():r.kind==="toUpperCase"?e.data=e.data.toUpperCase():r.kind==="startsWith"?e.data.startsWith(r.value)||(a=this._getOrReturnCtx(e,a),Ne(a,{code:ve.invalid_string,validation:{startsWith:r.value},message:r.message}),o.dirty()):r.kind==="endsWith"?e.data.endsWith(r.value)||(a=this._getOrReturnCtx(e,a),Ne(a,{code:ve.invalid_string,validation:{endsWith:r.value},message:r.message}),o.dirty()):r.kind==="datetime"?vv(r).test(e.data)||(a=this._getOrReturnCtx(e,a),Ne(a,{code:ve.invalid_string,validation:"datetime",message:r.message}),o.dirty()):r.kind==="date"?NN.test(e.data)||(a=this._getOrReturnCtx(e,a),Ne(a,{code:ve.invalid_string,validation:"date",message:r.message}),o.dirty()):r.kind==="time"?TN(r).test(e.data)||(a=this._getOrReturnCtx(e,a),Ne(a,{code:ve.invalid_string,validation:"time",message:r.message}),o.dirty()):r.kind==="duration"?bN.test(e.data)||(a=this._getOrReturnCtx(e,a),Ne(a,{validation:"duration",code:ve.invalid_string,message:r.message}),o.dirty()):r.kind==="ip"?jN(e.data,r.version)||(a=this._getOrReturnCtx(e,a),Ne(a,{validation:"ip",code:ve.invalid_string,message:r.message}),o.dirty()):r.kind==="jwt"?zN(e.data,r.alg)||(a=this._getOrReturnCtx(e,a),Ne(a,{validation:"jwt",code:ve.invalid_string,message:r.message}),o.dirty()):r.kind==="cidr"?IN(e.data,r.version)||(a=this._getOrReturnCtx(e,a),Ne(a,{validation:"cidr",code:ve.invalid_string,message:r.message}),o.dirty()):r.kind==="base64"?CN.test(e.data)||(a=this._getOrReturnCtx(e,a),Ne(a,{validation:"base64",code:ve.invalid_string,message:r.message}),o.dirty()):r.kind==="base64url"?PN.test(e.data)||(a=this._getOrReturnCtx(e,a),Ne(a,{validation:"base64url",code:ve.invalid_string,message:r.message}),o.dirty()):ht.assertNever(r);return{status:o.value,value:e.data}}_regex(e,t,o){return this.refinement(a=>e.test(a),{validation:t,code:ve.invalid_string,...De.errToObj(o)})}_addCheck(e){return new Xn({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...De.errToObj(e)})}url(e){return this._addCheck({kind:"url",...De.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...De.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...De.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...De.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...De.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...De.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...De.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...De.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...De.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...De.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...De.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...De.errToObj(e)})}datetime(e){var t,o;return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,offset:(t=e==null?void 0:e.offset)!==null&&t!==void 0?t:!1,local:(o=e==null?void 0:e.local)!==null&&o!==void 0?o:!1,...De.errToObj(e==null?void 0:e.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,...De.errToObj(e==null?void 0:e.message)})}duration(e){return this._addCheck({kind:"duration",...De.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...De.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t==null?void 0:t.position,...De.errToObj(t==null?void 0:t.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...De.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...De.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...De.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...De.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...De.errToObj(t)})}nonempty(e){return this.min(1,De.errToObj(e))}trim(){return new Xn({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new Xn({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new Xn({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}}Xn.create=n=>{var e;return new Xn({checks:[],typeName:He.ZodString,coerce:(e=n==null?void 0:n.coerce)!==null&&e!==void 0?e:!1,...tt(n)})};function LN(n,e){const t=(n.toString().split(".")[1]||"").length,o=(e.toString().split(".")[1]||"").length,a=t>o?t:o,r=parseInt(n.toFixed(a).replace(".","")),i=parseInt(e.toFixed(a).replace(".",""));return r%i/Math.pow(10,a)}class Ea extends at{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==je.number){const r=this._getOrReturnCtx(e);return Ne(r,{code:ve.invalid_type,expected:je.number,received:r.parsedType}),Ye}let o;const a=new cn;for(const r of this._def.checks)r.kind==="int"?ht.isInteger(e.data)||(o=this._getOrReturnCtx(e,o),Ne(o,{code:ve.invalid_type,expected:"integer",received:"float",message:r.message}),a.dirty()):r.kind==="min"?(r.inclusive?e.data<r.value:e.data<=r.value)&&(o=this._getOrReturnCtx(e,o),Ne(o,{code:ve.too_small,minimum:r.value,type:"number",inclusive:r.inclusive,exact:!1,message:r.message}),a.dirty()):r.kind==="max"?(r.inclusive?e.data>r.value:e.data>=r.value)&&(o=this._getOrReturnCtx(e,o),Ne(o,{code:ve.too_big,maximum:r.value,type:"number",inclusive:r.inclusive,exact:!1,message:r.message}),a.dirty()):r.kind==="multipleOf"?LN(e.data,r.value)!==0&&(o=this._getOrReturnCtx(e,o),Ne(o,{code:ve.not_multiple_of,multipleOf:r.value,message:r.message}),a.dirty()):r.kind==="finite"?Number.isFinite(e.data)||(o=this._getOrReturnCtx(e,o),Ne(o,{code:ve.not_finite,message:r.message}),a.dirty()):ht.assertNever(r);return{status:a.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,De.toString(t))}gt(e,t){return this.setLimit("min",e,!1,De.toString(t))}lte(e,t){return this.setLimit("max",e,!0,De.toString(t))}lt(e,t){return this.setLimit("max",e,!1,De.toString(t))}setLimit(e,t,o,a){return new Ea({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:o,message:De.toString(a)}]})}_addCheck(e){return new Ea({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:De.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:De.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:De.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:De.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:De.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:De.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:De.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:De.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:De.toString(e)})}get minValue(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&ht.isInteger(e.value))}get isFinite(){let e=null,t=null;for(const o of this._def.checks){if(o.kind==="finite"||o.kind==="int"||o.kind==="multipleOf")return!0;o.kind==="min"?(t===null||o.value>t)&&(t=o.value):o.kind==="max"&&(e===null||o.value<e)&&(e=o.value)}return Number.isFinite(t)&&Number.isFinite(e)}}Ea.create=n=>new Ea({checks:[],typeName:He.ZodNumber,coerce:(n==null?void 0:n.coerce)||!1,...tt(n)});class Ra extends at{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==je.bigint)return this._getInvalidInput(e);let o;const a=new cn;for(const r of this._def.checks)r.kind==="min"?(r.inclusive?e.data<r.value:e.data<=r.value)&&(o=this._getOrReturnCtx(e,o),Ne(o,{code:ve.too_small,type:"bigint",minimum:r.value,inclusive:r.inclusive,message:r.message}),a.dirty()):r.kind==="max"?(r.inclusive?e.data>r.value:e.data>=r.value)&&(o=this._getOrReturnCtx(e,o),Ne(o,{code:ve.too_big,type:"bigint",maximum:r.value,inclusive:r.inclusive,message:r.message}),a.dirty()):r.kind==="multipleOf"?e.data%r.value!==BigInt(0)&&(o=this._getOrReturnCtx(e,o),Ne(o,{code:ve.not_multiple_of,multipleOf:r.value,message:r.message}),a.dirty()):ht.assertNever(r);return{status:a.value,value:e.data}}_getInvalidInput(e){const t=this._getOrReturnCtx(e);return Ne(t,{code:ve.invalid_type,expected:je.bigint,received:t.parsedType}),Ye}gte(e,t){return this.setLimit("min",e,!0,De.toString(t))}gt(e,t){return this.setLimit("min",e,!1,De.toString(t))}lte(e,t){return this.setLimit("max",e,!0,De.toString(t))}lt(e,t){return this.setLimit("max",e,!1,De.toString(t))}setLimit(e,t,o,a){return new Ra({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:o,message:De.toString(a)}]})}_addCheck(e){return new Ra({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:De.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:De.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:De.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:De.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:De.toString(t)})}get minValue(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}}Ra.create=n=>{var e;return new Ra({checks:[],typeName:He.ZodBigInt,coerce:(e=n==null?void 0:n.coerce)!==null&&e!==void 0?e:!1,...tt(n)})};class Os extends at{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==je.boolean){const o=this._getOrReturnCtx(e);return Ne(o,{code:ve.invalid_type,expected:je.boolean,received:o.parsedType}),Ye}return vn(e.data)}}Os.create=n=>new Os({typeName:He.ZodBoolean,coerce:(n==null?void 0:n.coerce)||!1,...tt(n)});class pr extends at{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==je.date){const r=this._getOrReturnCtx(e);return Ne(r,{code:ve.invalid_type,expected:je.date,received:r.parsedType}),Ye}if(isNaN(e.data.getTime())){const r=this._getOrReturnCtx(e);return Ne(r,{code:ve.invalid_date}),Ye}const o=new cn;let a;for(const r of this._def.checks)r.kind==="min"?e.data.getTime()<r.value&&(a=this._getOrReturnCtx(e,a),Ne(a,{code:ve.too_small,message:r.message,inclusive:!0,exact:!1,minimum:r.value,type:"date"}),o.dirty()):r.kind==="max"?e.data.getTime()>r.value&&(a=this._getOrReturnCtx(e,a),Ne(a,{code:ve.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:"date"}),o.dirty()):ht.assertNever(r);return{status:o.value,value:new Date(e.data.getTime())}}_addCheck(e){return new pr({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:De.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:De.toString(t)})}get minDate(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e!=null?new Date(e):null}}pr.create=n=>new pr({checks:[],coerce:(n==null?void 0:n.coerce)||!1,typeName:He.ZodDate,...tt(n)});class Qc extends at{_parse(e){if(this._getType(e)!==je.symbol){const o=this._getOrReturnCtx(e);return Ne(o,{code:ve.invalid_type,expected:je.symbol,received:o.parsedType}),Ye}return vn(e.data)}}Qc.create=n=>new Qc({typeName:He.ZodSymbol,...tt(n)});class Us extends at{_parse(e){if(this._getType(e)!==je.undefined){const o=this._getOrReturnCtx(e);return Ne(o,{code:ve.invalid_type,expected:je.undefined,received:o.parsedType}),Ye}return vn(e.data)}}Us.create=n=>new Us({typeName:He.ZodUndefined,...tt(n)});class Bs extends at{_parse(e){if(this._getType(e)!==je.null){const o=this._getOrReturnCtx(e);return Ne(o,{code:ve.invalid_type,expected:je.null,received:o.parsedType}),Ye}return vn(e.data)}}Bs.create=n=>new Bs({typeName:He.ZodNull,...tt(n)});class Ni extends at{constructor(){super(...arguments),this._any=!0}_parse(e){return vn(e.data)}}Ni.create=n=>new Ni({typeName:He.ZodAny,...tt(n)});class sr extends at{constructor(){super(...arguments),this._unknown=!0}_parse(e){return vn(e.data)}}sr.create=n=>new sr({typeName:He.ZodUnknown,...tt(n)});class Go extends at{_parse(e){const t=this._getOrReturnCtx(e);return Ne(t,{code:ve.invalid_type,expected:je.never,received:t.parsedType}),Ye}}Go.create=n=>new Go({typeName:He.ZodNever,...tt(n)});class Xc extends at{_parse(e){if(this._getType(e)!==je.undefined){const o=this._getOrReturnCtx(e);return Ne(o,{code:ve.invalid_type,expected:je.void,received:o.parsedType}),Ye}return vn(e.data)}}Xc.create=n=>new Xc({typeName:He.ZodVoid,...tt(n)});class eo extends at{_parse(e){const{ctx:t,status:o}=this._processInputParams(e),a=this._def;if(t.parsedType!==je.array)return Ne(t,{code:ve.invalid_type,expected:je.array,received:t.parsedType}),Ye;if(a.exactLength!==null){const i=t.data.length>a.exactLength.value,s=t.data.length<a.exactLength.value;(i||s)&&(Ne(t,{code:i?ve.too_big:ve.too_small,minimum:s?a.exactLength.value:void 0,maximum:i?a.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:a.exactLength.message}),o.dirty())}if(a.minLength!==null&&t.data.length<a.minLength.value&&(Ne(t,{code:ve.too_small,minimum:a.minLength.value,type:"array",inclusive:!0,exact:!1,message:a.minLength.message}),o.dirty()),a.maxLength!==null&&t.data.length>a.maxLength.value&&(Ne(t,{code:ve.too_big,maximum:a.maxLength.value,type:"array",inclusive:!0,exact:!1,message:a.maxLength.message}),o.dirty()),t.common.async)return Promise.all([...t.data].map((i,s)=>a.type._parseAsync(new Co(t,i,t.path,s)))).then(i=>cn.mergeArray(o,i));const r=[...t.data].map((i,s)=>a.type._parseSync(new Co(t,i,t.path,s)));return cn.mergeArray(o,r)}get element(){return this._def.type}min(e,t){return new eo({...this._def,minLength:{value:e,message:De.toString(t)}})}max(e,t){return new eo({...this._def,maxLength:{value:e,message:De.toString(t)}})}length(e,t){return new eo({...this._def,exactLength:{value:e,message:De.toString(t)}})}nonempty(e){return this.min(1,e)}}eo.create=(n,e)=>new eo({type:n,minLength:null,maxLength:null,exactLength:null,typeName:He.ZodArray,...tt(e)});function Wr(n){if(n instanceof jt){const e={};for(const t in n.shape){const o=n.shape[t];e[t]=xo.create(Wr(o))}return new jt({...n._def,shape:()=>e})}else return n instanceof eo?new eo({...n._def,type:Wr(n.element)}):n instanceof xo?xo.create(Wr(n.unwrap())):n instanceof Pa?Pa.create(Wr(n.unwrap())):n instanceof Po?Po.create(n.items.map(e=>Wr(e))):n}class jt extends at{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const e=this._def.shape(),t=ht.objectKeys(e);return this._cached={shape:e,keys:t}}_parse(e){if(this._getType(e)!==je.object){const u=this._getOrReturnCtx(e);return Ne(u,{code:ve.invalid_type,expected:je.object,received:u.parsedType}),Ye}const{status:o,ctx:a}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),s=[];if(!(this._def.catchall instanceof Go&&this._def.unknownKeys==="strip"))for(const u in a.data)i.includes(u)||s.push(u);const l=[];for(const u of i){const f=r[u],d=a.data[u];l.push({key:{status:"valid",value:u},value:f._parse(new Co(a,d,a.path,u)),alwaysSet:u in a.data})}if(this._def.catchall instanceof Go){const u=this._def.unknownKeys;if(u==="passthrough")for(const f of s)l.push({key:{status:"valid",value:f},value:{status:"valid",value:a.data[f]}});else if(u==="strict")s.length>0&&(Ne(a,{code:ve.unrecognized_keys,keys:s}),o.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const u=this._def.catchall;for(const f of s){const d=a.data[f];l.push({key:{status:"valid",value:f},value:u._parse(new Co(a,d,a.path,f)),alwaysSet:f in a.data})}}return a.common.async?Promise.resolve().then(async()=>{const u=[];for(const f of l){const d=await f.key,p=await f.value;u.push({key:d,value:p,alwaysSet:f.alwaysSet})}return u}).then(u=>cn.mergeObjectSync(o,u)):cn.mergeObjectSync(o,l)}get shape(){return this._def.shape()}strict(e){return De.errToObj,new jt({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,o)=>{var a,r,i,s;const l=(i=(r=(a=this._def).errorMap)===null||r===void 0?void 0:r.call(a,t,o).message)!==null&&i!==void 0?i:o.defaultError;return t.code==="unrecognized_keys"?{message:(s=De.errToObj(e).message)!==null&&s!==void 0?s:l}:{message:l}}}:{}})}strip(){return new jt({...this._def,unknownKeys:"strip"})}passthrough(){return new jt({...this._def,unknownKeys:"passthrough"})}extend(e){return new jt({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new jt({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:He.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new jt({...this._def,catchall:e})}pick(e){const t={};return ht.objectKeys(e).forEach(o=>{e[o]&&this.shape[o]&&(t[o]=this.shape[o])}),new jt({...this._def,shape:()=>t})}omit(e){const t={};return ht.objectKeys(this.shape).forEach(o=>{e[o]||(t[o]=this.shape[o])}),new jt({...this._def,shape:()=>t})}deepPartial(){return Wr(this)}partial(e){const t={};return ht.objectKeys(this.shape).forEach(o=>{const a=this.shape[o];e&&!e[o]?t[o]=a:t[o]=a.optional()}),new jt({...this._def,shape:()=>t})}required(e){const t={};return ht.objectKeys(this.shape).forEach(o=>{if(e&&!e[o])t[o]=this.shape[o];else{let r=this.shape[o];for(;r instanceof xo;)r=r._def.innerType;t[o]=r}}),new jt({...this._def,shape:()=>t})}keyof(){return bv(ht.objectKeys(this.shape))}}jt.create=(n,e)=>new jt({shape:()=>n,unknownKeys:"strip",catchall:Go.create(),typeName:He.ZodObject,...tt(e)});jt.strictCreate=(n,e)=>new jt({shape:()=>n,unknownKeys:"strict",catchall:Go.create(),typeName:He.ZodObject,...tt(e)});jt.lazycreate=(n,e)=>new jt({shape:n,unknownKeys:"strip",catchall:Go.create(),typeName:He.ZodObject,...tt(e)});class Vs extends at{_parse(e){const{ctx:t}=this._processInputParams(e),o=this._def.options;function a(r){for(const s of r)if(s.result.status==="valid")return s.result;for(const s of r)if(s.result.status==="dirty")return t.common.issues.push(...s.ctx.common.issues),s.result;const i=r.map(s=>new In(s.ctx.common.issues));return Ne(t,{code:ve.invalid_union,unionErrors:i}),Ye}if(t.common.async)return Promise.all(o.map(async r=>{const i={...t,common:{...t.common,issues:[]},parent:null};return{result:await r._parseAsync({data:t.data,path:t.path,parent:i}),ctx:i}})).then(a);{let r;const i=[];for(const l of o){const u={...t,common:{...t.common,issues:[]},parent:null},f=l._parseSync({data:t.data,path:t.path,parent:u});if(f.status==="valid")return f;f.status==="dirty"&&!r&&(r={result:f,ctx:u}),u.common.issues.length&&i.push(u.common.issues)}if(r)return t.common.issues.push(...r.ctx.common.issues),r.result;const s=i.map(l=>new In(l));return Ne(t,{code:ve.invalid_union,unionErrors:s}),Ye}}get options(){return this._def.options}}Vs.create=(n,e)=>new Vs({options:n,typeName:He.ZodUnion,...tt(e)});const _o=n=>n instanceof Hs?_o(n.schema):n instanceof to?_o(n.innerType()):n instanceof $s?[n.value]:n instanceof Ca?n.options:n instanceof Ys?ht.objectValues(n.enum):n instanceof Ks?_o(n._def.innerType):n instanceof Us?[void 0]:n instanceof Bs?[null]:n instanceof xo?[void 0,..._o(n.unwrap())]:n instanceof Pa?[null,..._o(n.unwrap())]:n instanceof Rp||n instanceof Js?_o(n.unwrap()):n instanceof Gs?_o(n._def.innerType):[];class Ou extends at{_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==je.object)return Ne(t,{code:ve.invalid_type,expected:je.object,received:t.parsedType}),Ye;const o=this.discriminator,a=t.data[o],r=this.optionsMap.get(a);return r?t.common.async?r._parseAsync({data:t.data,path:t.path,parent:t}):r._parseSync({data:t.data,path:t.path,parent:t}):(Ne(t,{code:ve.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[o]}),Ye)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,o){const a=new Map;for(const r of t){const i=_o(r.shape[e]);if(!i.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(const s of i){if(a.has(s))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(s)}`);a.set(s,r)}}return new Ou({typeName:He.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:a,...tt(o)})}}function lh(n,e){const t=Fo(n),o=Fo(e);if(n===e)return{valid:!0,data:n};if(t===je.object&&o===je.object){const a=ht.objectKeys(e),r=ht.objectKeys(n).filter(s=>a.indexOf(s)!==-1),i={...n,...e};for(const s of r){const l=lh(n[s],e[s]);if(!l.valid)return{valid:!1};i[s]=l.data}return{valid:!0,data:i}}else if(t===je.array&&o===je.array){if(n.length!==e.length)return{valid:!1};const a=[];for(let r=0;r<n.length;r++){const i=n[r],s=e[r],l=lh(i,s);if(!l.valid)return{valid:!1};a.push(l.data)}return{valid:!0,data:a}}else return t===je.date&&o===je.date&&+n==+e?{valid:!0,data:n}:{valid:!1}}class Ws extends at{_parse(e){const{status:t,ctx:o}=this._processInputParams(e),a=(r,i)=>{if(ih(r)||ih(i))return Ye;const s=lh(r.value,i.value);return s.valid?((sh(r)||sh(i))&&t.dirty(),{status:t.value,value:s.data}):(Ne(o,{code:ve.invalid_intersection_types}),Ye)};return o.common.async?Promise.all([this._def.left._parseAsync({data:o.data,path:o.path,parent:o}),this._def.right._parseAsync({data:o.data,path:o.path,parent:o})]).then(([r,i])=>a(r,i)):a(this._def.left._parseSync({data:o.data,path:o.path,parent:o}),this._def.right._parseSync({data:o.data,path:o.path,parent:o}))}}Ws.create=(n,e,t)=>new Ws({left:n,right:e,typeName:He.ZodIntersection,...tt(t)});class Po extends at{_parse(e){const{status:t,ctx:o}=this._processInputParams(e);if(o.parsedType!==je.array)return Ne(o,{code:ve.invalid_type,expected:je.array,received:o.parsedType}),Ye;if(o.data.length<this._def.items.length)return Ne(o,{code:ve.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),Ye;!this._def.rest&&o.data.length>this._def.items.length&&(Ne(o,{code:ve.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());const r=[...o.data].map((i,s)=>{const l=this._def.items[s]||this._def.rest;return l?l._parse(new Co(o,i,o.path,s)):null}).filter(i=>!!i);return o.common.async?Promise.all(r).then(i=>cn.mergeArray(t,i)):cn.mergeArray(t,r)}get items(){return this._def.items}rest(e){return new Po({...this._def,rest:e})}}Po.create=(n,e)=>{if(!Array.isArray(n))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Po({items:n,typeName:He.ZodTuple,rest:null,...tt(e)})};class qs extends at{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:o}=this._processInputParams(e);if(o.parsedType!==je.object)return Ne(o,{code:ve.invalid_type,expected:je.object,received:o.parsedType}),Ye;const a=[],r=this._def.keyType,i=this._def.valueType;for(const s in o.data)a.push({key:r._parse(new Co(o,s,o.path,s)),value:i._parse(new Co(o,o.data[s],o.path,s)),alwaysSet:s in o.data});return o.common.async?cn.mergeObjectAsync(t,a):cn.mergeObjectSync(t,a)}get element(){return this._def.valueType}static create(e,t,o){return t instanceof at?new qs({keyType:e,valueType:t,typeName:He.ZodRecord,...tt(o)}):new qs({keyType:Xn.create(),valueType:e,typeName:He.ZodRecord,...tt(t)})}}class eu extends at{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:o}=this._processInputParams(e);if(o.parsedType!==je.map)return Ne(o,{code:ve.invalid_type,expected:je.map,received:o.parsedType}),Ye;const a=this._def.keyType,r=this._def.valueType,i=[...o.data.entries()].map(([s,l],u)=>({key:a._parse(new Co(o,s,o.path,[u,"key"])),value:r._parse(new Co(o,l,o.path,[u,"value"]))}));if(o.common.async){const s=new Map;return Promise.resolve().then(async()=>{for(const l of i){const u=await l.key,f=await l.value;if(u.status==="aborted"||f.status==="aborted")return Ye;(u.status==="dirty"||f.status==="dirty")&&t.dirty(),s.set(u.value,f.value)}return{status:t.value,value:s}})}else{const s=new Map;for(const l of i){const u=l.key,f=l.value;if(u.status==="aborted"||f.status==="aborted")return Ye;(u.status==="dirty"||f.status==="dirty")&&t.dirty(),s.set(u.value,f.value)}return{status:t.value,value:s}}}}eu.create=(n,e,t)=>new eu({valueType:e,keyType:n,typeName:He.ZodMap,...tt(t)});class mr extends at{_parse(e){const{status:t,ctx:o}=this._processInputParams(e);if(o.parsedType!==je.set)return Ne(o,{code:ve.invalid_type,expected:je.set,received:o.parsedType}),Ye;const a=this._def;a.minSize!==null&&o.data.size<a.minSize.value&&(Ne(o,{code:ve.too_small,minimum:a.minSize.value,type:"set",inclusive:!0,exact:!1,message:a.minSize.message}),t.dirty()),a.maxSize!==null&&o.data.size>a.maxSize.value&&(Ne(o,{code:ve.too_big,maximum:a.maxSize.value,type:"set",inclusive:!0,exact:!1,message:a.maxSize.message}),t.dirty());const r=this._def.valueType;function i(l){const u=new Set;for(const f of l){if(f.status==="aborted")return Ye;f.status==="dirty"&&t.dirty(),u.add(f.value)}return{status:t.value,value:u}}const s=[...o.data.values()].map((l,u)=>r._parse(new Co(o,l,o.path,u)));return o.common.async?Promise.all(s).then(l=>i(l)):i(s)}min(e,t){return new mr({...this._def,minSize:{value:e,message:De.toString(t)}})}max(e,t){return new mr({...this._def,maxSize:{value:e,message:De.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}mr.create=(n,e)=>new mr({valueType:n,minSize:null,maxSize:null,typeName:He.ZodSet,...tt(e)});class pi extends at{constructor(){super(...arguments),this.validate=this.implement}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==je.function)return Ne(t,{code:ve.invalid_type,expected:je.function,received:t.parsedType}),Ye;function o(s,l){return Jc({data:s,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Gc(),Pi].filter(u=>!!u),issueData:{code:ve.invalid_arguments,argumentsError:l}})}function a(s,l){return Jc({data:s,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Gc(),Pi].filter(u=>!!u),issueData:{code:ve.invalid_return_type,returnTypeError:l}})}const r={errorMap:t.common.contextualErrorMap},i=t.data;if(this._def.returns instanceof Ti){const s=this;return vn(async function(...l){const u=new In([]),f=await s._def.args.parseAsync(l,r).catch(m=>{throw u.addIssue(o(l,m)),u}),d=await Reflect.apply(i,this,f);return await s._def.returns._def.type.parseAsync(d,r).catch(m=>{throw u.addIssue(a(d,m)),u})})}else{const s=this;return vn(function(...l){const u=s._def.args.safeParse(l,r);if(!u.success)throw new In([o(l,u.error)]);const f=Reflect.apply(i,this,u.data),d=s._def.returns.safeParse(f,r);if(!d.success)throw new In([a(f,d.error)]);return d.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new pi({...this._def,args:Po.create(e).rest(sr.create())})}returns(e){return new pi({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,o){return new pi({args:e||Po.create([]).rest(sr.create()),returns:t||sr.create(),typeName:He.ZodFunction,...tt(o)})}}class Hs extends at{get schema(){return this._def.getter()}_parse(e){const{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}Hs.create=(n,e)=>new Hs({getter:n,typeName:He.ZodLazy,...tt(e)});class $s extends at{_parse(e){if(e.data!==this._def.value){const t=this._getOrReturnCtx(e);return Ne(t,{received:t.data,code:ve.invalid_literal,expected:this._def.value}),Ye}return{status:"valid",value:e.data}}get value(){return this._def.value}}$s.create=(n,e)=>new $s({value:n,typeName:He.ZodLiteral,...tt(e)});function bv(n,e){return new Ca({values:n,typeName:He.ZodEnum,...tt(e)})}class Ca extends at{constructor(){super(...arguments),vs.set(this,void 0)}_parse(e){if(typeof e.data!="string"){const t=this._getOrReturnCtx(e),o=this._def.values;return Ne(t,{expected:ht.joinValues(o),received:t.parsedType,code:ve.invalid_type}),Ye}if(Zc(this,vs)||gv(this,vs,new Set(this._def.values)),!Zc(this,vs).has(e.data)){const t=this._getOrReturnCtx(e),o=this._def.values;return Ne(t,{received:t.data,code:ve.invalid_enum_value,options:o}),Ye}return vn(e.data)}get options(){return this._def.values}get enum(){const e={};for(const t of this._def.values)e[t]=t;return e}get Values(){const e={};for(const t of this._def.values)e[t]=t;return e}get Enum(){const e={};for(const t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return Ca.create(e,{...this._def,...t})}exclude(e,t=this._def){return Ca.create(this.options.filter(o=>!e.includes(o)),{...this._def,...t})}}vs=new WeakMap;Ca.create=bv;class Ys extends at{constructor(){super(...arguments),bs.set(this,void 0)}_parse(e){const t=ht.getValidEnumValues(this._def.values),o=this._getOrReturnCtx(e);if(o.parsedType!==je.string&&o.parsedType!==je.number){const a=ht.objectValues(t);return Ne(o,{expected:ht.joinValues(a),received:o.parsedType,code:ve.invalid_type}),Ye}if(Zc(this,bs)||gv(this,bs,new Set(ht.getValidEnumValues(this._def.values))),!Zc(this,bs).has(e.data)){const a=ht.objectValues(t);return Ne(o,{received:o.data,code:ve.invalid_enum_value,options:a}),Ye}return vn(e.data)}get enum(){return this._def.values}}bs=new WeakMap;Ys.create=(n,e)=>new Ys({values:n,typeName:He.ZodNativeEnum,...tt(e)});class Ti extends at{unwrap(){return this._def.type}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==je.promise&&t.common.async===!1)return Ne(t,{code:ve.invalid_type,expected:je.promise,received:t.parsedType}),Ye;const o=t.parsedType===je.promise?t.data:Promise.resolve(t.data);return vn(o.then(a=>this._def.type.parseAsync(a,{path:t.path,errorMap:t.common.contextualErrorMap})))}}Ti.create=(n,e)=>new Ti({type:n,typeName:He.ZodPromise,...tt(e)});class to extends at{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===He.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:t,ctx:o}=this._processInputParams(e),a=this._def.effect||null,r={addIssue:i=>{Ne(o,i),i.fatal?t.abort():t.dirty()},get path(){return o.path}};if(r.addIssue=r.addIssue.bind(r),a.type==="preprocess"){const i=a.transform(o.data,r);if(o.common.async)return Promise.resolve(i).then(async s=>{if(t.value==="aborted")return Ye;const l=await this._def.schema._parseAsync({data:s,path:o.path,parent:o});return l.status==="aborted"?Ye:l.status==="dirty"||t.value==="dirty"?Hr(l.value):l});{if(t.value==="aborted")return Ye;const s=this._def.schema._parseSync({data:i,path:o.path,parent:o});return s.status==="aborted"?Ye:s.status==="dirty"||t.value==="dirty"?Hr(s.value):s}}if(a.type==="refinement"){const i=s=>{const l=a.refinement(s,r);if(o.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return s};if(o.common.async===!1){const s=this._def.schema._parseSync({data:o.data,path:o.path,parent:o});return s.status==="aborted"?Ye:(s.status==="dirty"&&t.dirty(),i(s.value),{status:t.value,value:s.value})}else return this._def.schema._parseAsync({data:o.data,path:o.path,parent:o}).then(s=>s.status==="aborted"?Ye:(s.status==="dirty"&&t.dirty(),i(s.value).then(()=>({status:t.value,value:s.value}))))}if(a.type==="transform")if(o.common.async===!1){const i=this._def.schema._parseSync({data:o.data,path:o.path,parent:o});if(!hr(i))return i;const s=a.transform(i.value,r);if(s instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:s}}else return this._def.schema._parseAsync({data:o.data,path:o.path,parent:o}).then(i=>hr(i)?Promise.resolve(a.transform(i.value,r)).then(s=>({status:t.value,value:s})):i);ht.assertNever(a)}}to.create=(n,e,t)=>new to({schema:n,typeName:He.ZodEffects,effect:e,...tt(t)});to.createWithPreprocess=(n,e,t)=>new to({schema:e,effect:{type:"preprocess",transform:n},typeName:He.ZodEffects,...tt(t)});class xo extends at{_parse(e){return this._getType(e)===je.undefined?vn(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}xo.create=(n,e)=>new xo({innerType:n,typeName:He.ZodOptional,...tt(e)});class Pa extends at{_parse(e){return this._getType(e)===je.null?vn(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Pa.create=(n,e)=>new Pa({innerType:n,typeName:He.ZodNullable,...tt(e)});class Ks extends at{_parse(e){const{ctx:t}=this._processInputParams(e);let o=t.data;return t.parsedType===je.undefined&&(o=this._def.defaultValue()),this._def.innerType._parse({data:o,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}Ks.create=(n,e)=>new Ks({innerType:n,typeName:He.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...tt(e)});class Gs extends at{_parse(e){const{ctx:t}=this._processInputParams(e),o={...t,common:{...t.common,issues:[]}},a=this._def.innerType._parse({data:o.data,path:o.path,parent:{...o}});return Fs(a)?a.then(r=>({status:"valid",value:r.status==="valid"?r.value:this._def.catchValue({get error(){return new In(o.common.issues)},input:o.data})})):{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new In(o.common.issues)},input:o.data})}}removeCatch(){return this._def.innerType}}Gs.create=(n,e)=>new Gs({innerType:n,typeName:He.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...tt(e)});class tu extends at{_parse(e){if(this._getType(e)!==je.nan){const o=this._getOrReturnCtx(e);return Ne(o,{code:ve.invalid_type,expected:je.nan,received:o.parsedType}),Ye}return{status:"valid",value:e.data}}}tu.create=n=>new tu({typeName:He.ZodNaN,...tt(n)});const MN=Symbol("zod_brand");class Rp extends at{_parse(e){const{ctx:t}=this._processInputParams(e),o=t.data;return this._def.type._parse({data:o,path:t.path,parent:t})}unwrap(){return this._def.type}}class bl extends at{_parse(e){const{status:t,ctx:o}=this._processInputParams(e);if(o.common.async)return(async()=>{const r=await this._def.in._parseAsync({data:o.data,path:o.path,parent:o});return r.status==="aborted"?Ye:r.status==="dirty"?(t.dirty(),Hr(r.value)):this._def.out._parseAsync({data:r.value,path:o.path,parent:o})})();{const a=this._def.in._parseSync({data:o.data,path:o.path,parent:o});return a.status==="aborted"?Ye:a.status==="dirty"?(t.dirty(),{status:"dirty",value:a.value}):this._def.out._parseSync({data:a.value,path:o.path,parent:o})}}static create(e,t){return new bl({in:e,out:t,typeName:He.ZodPipeline})}}class Js extends at{_parse(e){const t=this._def.innerType._parse(e),o=a=>(hr(a)&&(a.value=Object.freeze(a.value)),a);return Fs(t)?t.then(a=>o(a)):o(t)}unwrap(){return this._def.innerType}}Js.create=(n,e)=>new Js({innerType:n,typeName:He.ZodReadonly,...tt(e)});function kv(n,e={},t){return n?Ni.create().superRefine((o,a)=>{var r,i;if(!n(o)){const s=typeof e=="function"?e(o):typeof e=="string"?{message:e}:e,l=(i=(r=s.fatal)!==null&&r!==void 0?r:t)!==null&&i!==void 0?i:!0,u=typeof s=="string"?{message:s}:s;a.addIssue({code:"custom",...u,fatal:l})}}):Ni.create()}const DN={object:jt.lazycreate};var He;(function(n){n.ZodString="ZodString",n.ZodNumber="ZodNumber",n.ZodNaN="ZodNaN",n.ZodBigInt="ZodBigInt",n.ZodBoolean="ZodBoolean",n.ZodDate="ZodDate",n.ZodSymbol="ZodSymbol",n.ZodUndefined="ZodUndefined",n.ZodNull="ZodNull",n.ZodAny="ZodAny",n.ZodUnknown="ZodUnknown",n.ZodNever="ZodNever",n.ZodVoid="ZodVoid",n.ZodArray="ZodArray",n.ZodObject="ZodObject",n.ZodUnion="ZodUnion",n.ZodDiscriminatedUnion="ZodDiscriminatedUnion",n.ZodIntersection="ZodIntersection",n.ZodTuple="ZodTuple",n.ZodRecord="ZodRecord",n.ZodMap="ZodMap",n.ZodSet="ZodSet",n.ZodFunction="ZodFunction",n.ZodLazy="ZodLazy",n.ZodLiteral="ZodLiteral",n.ZodEnum="ZodEnum",n.ZodEffects="ZodEffects",n.ZodNativeEnum="ZodNativeEnum",n.ZodOptional="ZodOptional",n.ZodNullable="ZodNullable",n.ZodDefault="ZodDefault",n.ZodCatch="ZodCatch",n.ZodPromise="ZodPromise",n.ZodBranded="ZodBranded",n.ZodPipeline="ZodPipeline",n.ZodReadonly="ZodReadonly"})(He||(He={}));const _N=(n,e={message:`Input not instance of ${n.name}`})=>kv(t=>t instanceof n,e),Sv=Xn.create,xv=Ea.create,FN=tu.create,ON=Ra.create,Av=Os.create,UN=pr.create,BN=Qc.create,VN=Us.create,WN=Bs.create,qN=Ni.create,HN=sr.create,$N=Go.create,YN=Xc.create,KN=eo.create,GN=jt.create,JN=jt.strictCreate,ZN=Vs.create,QN=Ou.create,XN=Ws.create,eT=Po.create,tT=qs.create,nT=eu.create,oT=mr.create,aT=pi.create,rT=Hs.create,iT=$s.create,sT=Ca.create,lT=Ys.create,cT=Ti.create,vy=to.create,uT=xo.create,dT=Pa.create,fT=to.createWithPreprocess,hT=bl.create,pT=()=>Sv().optional(),mT=()=>xv().optional(),gT=()=>Av().optional(),yT={string:n=>Xn.create({...n,coerce:!0}),number:n=>Ea.create({...n,coerce:!0}),boolean:n=>Os.create({...n,coerce:!0}),bigint:n=>Ra.create({...n,coerce:!0}),date:n=>pr.create({...n,coerce:!0})},wT=Ye;var Mn=Object.freeze({__proto__:null,defaultErrorMap:Pi,setErrorMap:fN,getErrorMap:Gc,makeIssue:Jc,EMPTY_PATH:hN,addIssueToContext:Ne,ParseStatus:cn,INVALID:Ye,DIRTY:Hr,OK:vn,isAborted:ih,isDirty:sh,isValid:hr,isAsync:Fs,get util(){return ht},get objectUtil(){return rh},ZodParsedType:je,getParsedType:Fo,ZodType:at,datetimeRegex:vv,ZodString:Xn,ZodNumber:Ea,ZodBigInt:Ra,ZodBoolean:Os,ZodDate:pr,ZodSymbol:Qc,ZodUndefined:Us,ZodNull:Bs,ZodAny:Ni,ZodUnknown:sr,ZodNever:Go,ZodVoid:Xc,ZodArray:eo,ZodObject:jt,ZodUnion:Vs,ZodDiscriminatedUnion:Ou,ZodIntersection:Ws,ZodTuple:Po,ZodRecord:qs,ZodMap:eu,ZodSet:mr,ZodFunction:pi,ZodLazy:Hs,ZodLiteral:$s,ZodEnum:Ca,ZodNativeEnum:Ys,ZodPromise:Ti,ZodEffects:to,ZodTransformer:to,ZodOptional:xo,ZodNullable:Pa,ZodDefault:Ks,ZodCatch:Gs,ZodNaN:tu,BRAND:MN,ZodBranded:Rp,ZodPipeline:bl,ZodReadonly:Js,custom:kv,Schema:at,ZodSchema:at,late:DN,get ZodFirstPartyTypeKind(){return He},coerce:yT,any:qN,array:KN,bigint:ON,boolean:Av,date:UN,discriminatedUnion:QN,effect:vy,enum:sT,function:aT,instanceof:_N,intersection:XN,lazy:rT,literal:iT,map:nT,nan:FN,nativeEnum:lT,never:$N,null:WN,nullable:dT,number:xv,object:GN,oboolean:gT,onumber:mT,optional:uT,ostring:pT,pipeline:hT,preprocess:fT,promise:cT,record:tT,set:oT,strictObject:JN,string:Sv,symbol:BN,transformer:vy,tuple:eT,undefined:VN,union:ZN,unknown:HN,void:YN,NEVER:wT,ZodIssueCode:ve,quotelessJson:dN,ZodError:In});const $r="Upload aborted",Zr=class Zr{constructor(){H(this,"serviceConfig",pe.getMediaUploadServiceConfig());H(this,"nip96ServiceUploadUrlMap",new Map);H(this,"imetaTagMap",new Map);return Zr.instance||(Zr.instance=this),Zr.instance}setServiceConfig(e){this.serviceConfig=e}async upload(e,t){let o;return this.serviceConfig.type==="nip96"?o=await this.uploadByNip96(this.serviceConfig.service,e,t):o=await this.uploadByBlossom(e,t),o.tags.length>0&&this.imetaTagMap.set(o.url,["imeta",...o.tags.map(([a,r])=>`${a} ${r}`)]),o}async uploadByBlossom(e,t){var w,v,k,E;const o=le.pubkey,a=async A=>{if(!le.signer)throw new Error("You need to be logged in to upload media");return le.signer.signEvent(A)};if(!o)throw new Error("You need to be logged in to upload media");if((w=t==null?void 0:t.signal)!=null&&w.aborted)throw new Error($r);(v=t==null?void 0:t.onProgress)==null||v.call(t,0);let r=1,i;const s=()=>{i===void 0&&(i=window.setInterval(()=>{var A;r=Math.min(r+3,90),(A=t==null?void 0:t.onProgress)==null||A.call(t,r),r>=90&&l()},300))},l=()=>{i!==void 0&&(clearInterval(i),i=void 0)};s();const u=await le.fetchBlossomServerList(o);if(u.length===0)throw new Error("No Blossom services available");const[f,...d]=u,p=await Cs.createUploadAuth(a,e,{message:"Uploading media file"}),m=await Cs.uploadBlob(f,e,{auth:p});l(),(k=t==null?void 0:t.onProgress)==null||k.call(t,80),d.length>0&&await Promise.allSettled(d.map(A=>Cs.mirrorBlob(A,m,{auth:p})));let g=[];const y=Mn.array(Mn.array(Mn.string())).safeParse(m.nip94??[]);return y.success&&(g=y.data),(E=t==null?void 0:t.onProgress)==null||E.call(t,100),{url:m.url,tags:g}}async uploadByNip96(e,t,o){var l,u;if((l=o==null?void 0:o.signal)!=null&&l.aborted)throw new Error($r);let a=this.nip96ServiceUploadUrlMap.get(e);if(!a){const f=await fetch(`${e}/.well-known/nostr/nip96.json`);if(!f.ok)throw new Error(`${Fn(e)} does not work, please try another service in your settings`);const d=await f.json();if(a=d==null?void 0:d.api_url,!a)throw new Error(`${Fn(e)} does not work, please try another service in your settings`);this.nip96ServiceUploadUrlMap.set(e,a)}if((u=o==null?void 0:o.signal)!=null&&u.aborted)throw new Error($r);const r=new FormData;r.append("file",t);const i=await le.signHttpAuth(a,"POST","Uploading media file");return await new Promise((f,d)=>{const p=new XMLHttpRequest;p.open("POST",a),p.responseType="json",p.setRequestHeader("Authorization",i);const m=()=>{try{p.abort()}catch{}d(new Error($r))};if(o!=null&&o.signal){if(o.signal.aborted)return m();o.signal.addEventListener("abort",m,{once:!0})}p.upload.onprogress=g=>{var y;if(g.lengthComputable){const w=Math.round(g.loaded/g.total*100);(y=o==null?void 0:o.onProgress)==null||y.call(o,w)}},p.onerror=()=>d(new Error("Network error")),p.onload=()=>{var g,y;if(p.status>=200&&p.status<300){const w=p.response;try{const v=Mn.array(Mn.array(Mn.string())).parse(((g=w==null?void 0:w.nip94_event)==null?void 0:g.tags)??[]),k=(y=v.find(([E])=>E==="url"))==null?void 0:y[1];k?f({url:k,tags:v}):d(new Error("No url found"))}catch(v){d(v)}}else d(new Error(p.status.toString()+" "+p.statusText))},p.send(r)})}getImetaTagByUrl(e){return this.imetaTagMap.get(e)}};H(Zr,"instance");let ch=Zr;const gr=new ch;function Cp(n){if(n.startsWith("http"))return"web";if(n.startsWith("isbn:"))return"isbn";if(n.startsWith("isan:"))return"isan";if(n.startsWith("doi:"))return"doi";if(n.startsWith("#"))return"#";if(n.startsWith("podcast:guid:"))return"podcast:guid";if(n.startsWith("podcast:item:guid:"))return"podcast:item:guid";if(n.startsWith("podcast:publisher:guid:"))return"podcast:publisher:guid";const e=n.match(/^([a-z]+):(?:[^:]+:)?tx:[a-f0-9]+$/i);if(e)return`${e[1].toLowerCase()}:tx`;const t=n.match(/^([a-z]+):(?:[^:]+:)?address:[a-zA-Z0-9]+$/i);if(t)return`${t[1].toLowerCase()}:address`}const uh=new Map;function vT(n){const e=Ev(n);uh.delete(e)}function kl(n){const e=Ev(n),t=uh.get(e);if(t)return JSON.parse(t);const o={...n,created_at:Be().unix()};return uh.set(e,JSON.stringify(o)),o}function Ev(n){const e=JSON.stringify({content:n.content,kind:n.kind,tags:n.tags}),o=new TextEncoder().encode(e),a=Ms(o);return Array.from(new Uint8Array(a)).map(i=>i.toString(16).padStart(2,"0")).join("")}function Rv(n,e="+"){const t=[];t.push(wr(n.id,n.pubkey)),t.push(qo(n.pubkey)),n.kind!==Z.ShortTextNote&&t.push(Ii(n.kind)),Bt(n.kind)&&t.push(Oa(n));let o;return typeof e=="string"?o=e:(o=`:${e.shortcode}:`,t.push(Tp(e))),{kind:Z.Reaction,content:o,tags:t,created_at:Be().unix()}}function Cv(n,e="+"){const t=[];t.push(hh(n));const o=Cp(n);o&&t.push(Ii(o));let a;return typeof e=="string"?a=e:(a=`:${e.shortcode}:`,t.push(Tp(e))),{kind:ce.EXTERNAL_CONTENT_REACTION,content:a,tags:t,created_at:Be().unix()}}function bT(n){const e=Ui(n),t=[wr(n.id,n.pubkey),qo(n.pubkey)];if(n.kind===Z.ShortTextNote)return{kind:Z.Repost,content:e?"":JSON.stringify(n),tags:t,created_at:Be().unix()};t.push(Ii(n.kind));const o=Bt(n.kind);return o&&t.push(Oa(n)),{kind:Z.GenericRepost,content:e||o?"":JSON.stringify(n),tags:t,created_at:Be().unix()}}async function kT(n,e,t={}){const o=t.postKind==="picture",a=t.postKind==="video"||t.postKind==="shortVideo",r=o||a,i=o?zi(n):[],s=a?Ay(n):[],{content:l,emojiTags:u}=yr(n),f=r?l.replace(/https?:\/\/[^\s"']*\.(jpg|jpeg|png|gif|webp|heic|mp4|webm|mov|avi|mkv|m4v)[^\s"']*/gi,"").replace(/\n\s*\n/g,`
`).trim():l,{content:d,emojiTags:p}=u.length>0?{content:f,emojiTags:u}:yr(f),{quoteTags:m,rootTag:g,parentTag:y}=await Pv(d,t.parentEvent),w=Uu(d),v=p.concat(w.map(N=>Sl(N))),k=i&&i.length?i:zi(d);k&&k.length&&v.push(...ji(k));const E=s&&s.length?s:Ay(d);E&&E.length&&v.push(...ji(E)),v.push(...m),g&&v.push(g),y&&v.push(y),v.push(...e.map(N=>qo(N))),t.addClientTag&&v.push(xl()),t.isNsfw&&v.push(Al()),t.protectedEvent&&v.push(Bu());const A={kind:t.postKind==="picture"?ce.PICTURE:t.postKind==="video"?ce.VIDEO:t.postKind==="shortVideo"?ce.SHORT_VIDEO:Z.ShortTextNote,content:d,tags:v};return kl(A)}function by(n){return{kind:Z.Relaysets,content:"",tags:[Np(n.id),Nv(n.name),...n.relayUrls.map(e=>nu(e))],created_at:Be().unix()}}async function ST(n,e,t,o={}){const{content:a,emojiTags:r}=yr(n),{quoteTags:i,rootEventId:s,rootCoordinateTag:l,rootKind:u,rootPubkey:f,rootUrl:d,parentEvent:p,externalContent:m}=await jT(a,e),g=Uu(a),y=r.concat(g.map(E=>Sl(E))).concat(i),w=zi(a);w&&w.length&&y.push(...ji(w)),y.push(...t.filter(E=>E!==(p==null?void 0:p.pubkey)).map(E=>qo(E))),l?y.push(l):s&&y.push(wr(s,f,"",!0)),f&&y.push(qo(f,!0)),u&&y.push(Ii(u,!0)),d&&y.push(hh(d,!0)),y.push(...p?[Bt(p.kind)?Oa(p):wr(p.id,p.pubkey),qo(p.pubkey)]:m?[hh(m)]:[]);const v=p?p.kind:m?Cp(m):void 0;v&&y.push(Ii(v)),o.addClientTag&&y.push(xl()),o.isNsfw&&y.push(Al()),o.protectedEvent&&y.push(Bu());const k={kind:ce.COMMENT,content:a,tags:y};return kl(k)}function xT(n,e="",t,o,a={}){const{content:r,emojiTags:i}=yr(e),s=Pp(e),l=Uu(r),u=i.concat(l.map(m=>Sl(m))),f=zi(r);f&&f.length&&u.push(...ji(f)),u.push(...s),u.push(...o.filter(m=>m!==t.pubkey).map(m=>["p",m,"","mention"])),r&&u.push(["comment",r]);const d=le.getEventHint(t.id);Bt(t.kind)?u.push(["a",ln(t),d,"source"]):u.push(["e",t.id,d,"source"]),u.push(["p",t.pubkey,"","author"]),a.addClientTag&&u.push(xl()),a.isNsfw&&u.push(Al()),a.protectedEvent&&u.push(Bu());const p={kind:Z.Highlights,content:n,tags:u};return kl(p)}function AT(n){return{kind:Z.RelayList,content:"",tags:n.map(({url:e,scope:t})=>IT(e,t)),created_at:Be().unix()}}function dh(n,e){return{kind:Z.Contacts,content:e??"",created_at:Be().unix(),tags:n}}function fh(n,e){return{kind:Z.Mutelist,content:e??"",created_at:Be().unix(),tags:n}}function lV(n,e=[]){return{kind:Z.Metadata,content:n,tags:e,created_at:Be().unix()}}function cV(n,e,t){const o=[["d","general"]];return t&&o.push(["expiration",t.toString()]),{kind:30315,content:n,tags:o,created_at:Be().unix()}}function $a(n,e){const t=[];return n.forEach(o=>{t.push(nu(o))}),e.forEach(o=>{Array.isArray(o)?t.push(o):t.push(Oa(o))}),{kind:ce.FAVORITE_RELAYS,content:"",tags:t,created_at:Be().unix()}}function ET(){return{kind:Z.Application,content:"Records read time to sync notification status across devices.",tags:[Np(Uf.NOTIFICATIONS_SEEN_AT)],created_at:Be().unix()}}function ky(n,e=""){return{kind:Z.BookmarkList,content:e,tags:n,created_at:Be().unix()}}function Sy(n,e=""){return{kind:Z.Pinlist,content:e,tags:n,created_at:Be().unix()}}function xy(n,e=""){return{kind:Z.UserEmojiList,content:e,tags:n,created_at:Be().unix()}}function uV(n){return{kind:ce.BLOSSOM_SERVER_LIST,content:"",tags:n.map(e=>LT(e)),created_at:Be().unix()}}async function RT(n,e,t,{isMultipleChoice:o,relays:a,options:r,endsAt:i},{addClientTag:s,isNsfw:l}={}){const{content:u,emojiTags:f}=yr(e),{quoteTags:d}=await Pv(u),p=Uu(u),m=f.concat(p.map(v=>Sl(v))),g=zi(u);g&&g.length&&m.push(...ji(g)),m.push(...d),m.push(...t.map(v=>qo(v)));const y=r.filter(v=>v.trim());m.push(...y.map(v=>["option",ea(9),v.trim()])),m.push(["polltype",o?rr.MULTIPLE_CHOICE:rr.SINGLE_CHOICE]),i&&m.push(["endsAt",i.toString()]),a.length?a.forEach(v=>m.push(nu(v))):(await le.fetchRelayList(n)).read.slice(0,4).forEach(k=>{m.push(nu(k))}),s&&m.push(xl()),l&&m.push(Al());const w={content:u.trim(),kind:ce.POLL,tags:m};return kl(w)}async function CT(n,e,t,o,a={}){const{content:r,emojiTags:i}=yr(n),s=[...i];t.trim()&&t.trim().split(/\s+/).map(d=>d.replace(/^#/,"")).filter(Boolean).forEach(d=>{s.push(Sl(d.toLowerCase()))}),s.push(Np(`article-${Be().unix()}`)),s.push(Nv(e));const l=zi(r);l&&l.length&&s.push(...ji(l)),s.push(...o.map(f=>qo(f))),a.addClientTag&&s.push(xl()),a.isNsfw&&s.push(Al()),a.protectedEvent&&s.push(Bu());const u={kind:Z.LongFormArticle,content:r,tags:s};return kl(u)}function PT(n,e){return{content:"",kind:ce.POLL_RESPONSE,tags:[wr(n.id,n.pubkey),qo(n.pubkey),...e.map(t=>MT(t))],created_at:Be().unix()}}function NT(n){const e=[Ii(n.kind)];return Bt(n.kind)?e.push(["a",ln(n)]):e.push(["e",n.id]),{kind:Z.EventDeletion,content:"Request for deletion of the event.",tags:e,created_at:Be().unix()}}function TT(n,e){const t=[];return n.kind===Z.Metadata?t.push(["p",n.pubkey,e]):(t.push(["p",n.pubkey]),t.push(["e",n.id,e]),Bt(n.kind)&&t.push(["a",ln(n),e])),{kind:Z.Report,content:"",tags:t,created_at:Be().unix()}}function dV(n,e,t){return{kind:ce.RELAY_REVIEW,content:e,tags:[["d",n],["rating",(t/5).toString()]],created_at:Be().unix()}}function fV(n){return{kind:28934,created_at:Math.floor(Date.now()/1e3),tags:[["claim",n],["-"]],content:""}}function hV(){return{kind:28936,created_at:Math.floor(Date.now()/1e3),tags:[["-"]],content:""}}function pV(n){const e=[],t={methods:n.map(o=>({type:o.type,authority:o.authority}))};return n.forEach(o=>{const a=["payto",o.type,o.authority];o.extra&&o.extra.length>0&&a.push(...o.extra),e.push(a)}),{kind:ce.PAYMENT_INFO,content:JSON.stringify(t),created_at:Be().unix(),tags:e}}function mV(n){const e=n.map(t=>["relay",t]);return{kind:ce.DM_RELAYS,content:"",created_at:Be().unix(),tags:e}}function ji(n){return n.map(e=>gr.getImetaTagByUrl(e)??null).filter(Boolean)}async function Pv(n,e){let t=null,o=null;const a=Pp(n);if(e){const r=yp(e);if((r==null?void 0:r.type)==="e"){o=_r(e.id,e.pubkey,"","reply");const[,i,s,,l]=r.tag;if(l)t=_r(i,l,s,"root");else{const u=Er(r.tag),f=u?await le.fetchEvent(u):void 0;t=f?_r(f.id,f.pubkey,s,"root"):_r(i,l,s,"root")}}else if((r==null?void 0:r.type)==="a"){o=_r(e.id,e.pubkey,"","reply");const[,i,s]=r.tag;t=zT(i,s)}else t=_r(e.id,e.pubkey,"","root")}return{quoteTags:a,rootTag:t,parentTag:o}}async function jT(n,e){var d,p,m,g;const{parentEvent:t,externalContent:o}=typeof e=="string"?{parentEvent:void 0,externalContent:e}:{parentEvent:e,externalContent:void 0},a=t&&[ce.COMMENT,ce.VOICE_COMMENT].includes(t.kind),r=t?a?t.tags.find(Ke("A")):Bt(t.kind)?Oa(t,!0):void 0:void 0,i=a?(d=t.tags.find(Ke("E")))==null?void 0:d[1]:t==null?void 0:t.id,s=a?(p=t.tags.find(Ke("K")))==null?void 0:p[1]:t?t.kind:Cp(e),l=a?(m=t.tags.find(Ke("P")))==null?void 0:m[1]:t==null?void 0:t.pubkey,u=a?(g=t.tags.find(Ke("I")))==null?void 0:g[1]:o;return{quoteTags:Pp(n),rootEventId:i,rootCoordinateTag:r,rootKind:s,rootPubkey:l,rootUrl:u,parentEvent:t,externalContent:o}}function Pp(n){var a,r;const e=new Set,t=[],o=n.match(dp);for(const i of o||[])try{const s=i.split(":")[1],{type:l,data:u}=Nt.decode(s);if(l==="nevent"){const f=u.id;if(!e.has(f)){e.add(f);const d=((a=u.relays)==null?void 0:a[0])??le.getEventHint(f);t.push(Gd(f,d,u.author))}}else if(l==="note"){const f=u;if(!e.has(f)){e.add(f);const d=le.getEventHint(f);t.push(Gd(f,d))}}else if(l==="naddr"){const f=wp(u.kind,u.pubkey,u.identifier);if(!e.has(f)){e.add(f);const d=(r=u.relays)==null?void 0:r[0];t.push(Gd(f,d))}}}catch(s){console.error(s)}return t}function Uu(n){const e=[],t=n.match(/#[\p{L}\p{N}\p{M}]+/gu);return t==null||t.forEach(o=>{const a=o.slice(1).toLowerCase();a&&e.push(a)}),e}function zi(n){return n.match(/https?:\/\/[^\s"']*\.(jpg|jpeg|png|gif|webp|heic)[^\s"']*/gi)}function Ay(n){return n.match(/https?:\/\/[^\s"']*\.(mp4|webm|mov|avi|mkv|m4v)[^\s"']*/gi)}function yr(n){const e=[];let t=n;const o=n.match(/:[a-zA-Z0-9_-]+:/g),a=new Set;return o==null||o.forEach(r=>{if(a.has(r))return;a.add(r);const i=gn.getEmojiById(r.slice(1,-1));i&&(e.push(Tp(i)),t=t.replace(new RegExp(r,"g"),`:${i.shortcode}:`))}),{emojiTags:e,content:t}}function Oa(n,e=!1){const t=ln(n),o=le.getEventHint(n.id);return Vu([e?"A":"a",t,o])}function Np(n){return["d",n]}function wr(n,e="",t="",o=!1){return t||(t=le.getEventHint(n)),Vu([o?"E":"e",n,t,e])}function _r(n,e="",t="",o=""){return t||(t=le.getEventHint(n)),Vu(["e",n,t,o,e])}function zT(n,e=""){if(!e){const t=le.getReplaeableEventFromCache(n);t&&(e=le.getEventHint(t.id))}return Vu(["a",n,e,"root"])}function hh(n,e=!1){return[e?"I":"i",n]}function Ii(n,e=!1){return[e?"K":"k",n.toString()]}function qo(n,e=!1){return[e?"P":"p",n]}function Gd(n,e,t){const o=["q",n];return!e||(o.push(e),!t)||o.push(t),o}function IT(n,e){return e!=="both"?["r",n,e]:["r",n]}function Sl(n){return["t",n]}function Tp(n){return["emoji",n.shortcode,n.url]}function Nv(n){return["title",n]}function nu(n){return["relay",n]}function LT(n){return["server",n]}function MT(n){return["response",n]}function xl(){return["client","roguejumble"]}function Al(){return["content-warning","NSFW"]}function Bu(){return["-"]}function Vu(n){let e=n.length-1;for(;e>=0&&n[e]==="";)e--;return n.slice(0,e+1)}function wt(n){return(n instanceof AggregateError?n.errors:[n]).map(t=>t instanceof Error?t.message:String(t))}function Fe(n,e,{checkForDefaultPrevented:t=!0}={}){return function(a){if(n==null||n(a),t===!1||!a.defaultPrevented)return e==null?void 0:e(a)}}function Ey(n,e){if(typeof n=="function")return n(e);n!=null&&(n.current=e)}function ta(...n){return e=>{let t=!1;const o=n.map(a=>{const r=Ey(a,e);return!t&&typeof r=="function"&&(t=!0),r});if(t)return()=>{for(let a=0;a<o.length;a++){const r=o[a];typeof r=="function"?r():Ey(n[a],null)}}}}function zt(...n){return h.useCallback(ta(...n),n)}function DT(n,e){const t=h.createContext(e),o=r=>{const{children:i,...s}=r,l=h.useMemo(()=>s,Object.values(s));return c.jsx(t.Provider,{value:l,children:i})};o.displayName=n+"Provider";function a(r){const i=h.useContext(t);if(i)return i;if(e!==void 0)return e;throw new Error(`\`${r}\` must be used within \`${n}\``)}return[o,a]}function Bn(n,e=[]){let t=[];function o(r,i){const s=h.createContext(i),l=t.length;t=[...t,i];const u=d=>{var v;const{scope:p,children:m,...g}=d,y=((v=p==null?void 0:p[n])==null?void 0:v[l])||s,w=h.useMemo(()=>g,Object.values(g));return c.jsx(y.Provider,{value:w,children:m})};u.displayName=r+"Provider";function f(d,p){var y;const m=((y=p==null?void 0:p[n])==null?void 0:y[l])||s,g=h.useContext(m);if(g)return g;if(i!==void 0)return i;throw new Error(`\`${d}\` must be used within \`${r}\``)}return[u,f]}const a=()=>{const r=t.map(i=>h.createContext(i));return function(s){const l=(s==null?void 0:s[n])||r;return h.useMemo(()=>({[`__scope${n}`]:{...s,[n]:l}}),[s,l])}};return a.scopeName=n,[o,_T(a,...e)]}function _T(...n){const e=n[0];if(n.length===1)return e;const t=()=>{const o=n.map(a=>({useScope:a(),scopeName:a.scopeName}));return function(r){const i=o.reduce((s,{useScope:l,scopeName:u})=>{const d=l(r)[`__scope${u}`];return{...s,...d}},{});return h.useMemo(()=>({[`__scope${e.scopeName}`]:i}),[i])}};return t.scopeName=e.scopeName,t}var No=globalThis!=null&&globalThis.document?h.useLayoutEffect:()=>{},FT=dl.useId||(()=>{}),OT=0;function Ao(n){const[e,t]=h.useState(FT());return No(()=>{n||t(o=>o??String(OT++))},[n]),n||(e?`radix-${e}`:"")}function Ot(n){const e=h.useRef(n);return h.useEffect(()=>{e.current=n}),h.useMemo(()=>(...t)=>{var o;return(o=e.current)==null?void 0:o.call(e,...t)},[])}function Ua({prop:n,defaultProp:e,onChange:t=()=>{}}){const[o,a]=UT({defaultProp:e,onChange:t}),r=n!==void 0,i=r?n:o,s=Ot(t),l=h.useCallback(u=>{if(r){const d=typeof u=="function"?u(n):u;d!==n&&s(d)}else a(u)},[r,n,a,s]);return[i,l]}function UT({defaultProp:n,onChange:e}){const t=h.useState(n),[o]=t,a=h.useRef(o),r=Ot(e);return h.useEffect(()=>{a.current!==o&&(r(o),a.current=o)},[o,a,r]),t}var Tv=h.forwardRef((n,e)=>{const{children:t,...o}=n,a=h.Children.toArray(t),r=a.find(VT);if(r){const i=r.props.children,s=a.map(l=>l===r?h.Children.count(i)>1?h.Children.only(null):h.isValidElement(i)?i.props.children:null:l);return c.jsx(ph,{...o,ref:e,children:h.isValidElement(i)?h.cloneElement(i,void 0,s):null})}return c.jsx(ph,{...o,ref:e,children:t})});Tv.displayName="Slot";var ph=h.forwardRef((n,e)=>{const{children:t,...o}=n;if(h.isValidElement(t)){const a=qT(t);return h.cloneElement(t,{...WT(o,t.props),ref:e?ta(e,a):a})}return h.Children.count(t)>1?h.Children.only(null):null});ph.displayName="SlotClone";var BT=({children:n})=>c.jsx(c.Fragment,{children:n});function VT(n){return h.isValidElement(n)&&n.type===BT}function WT(n,e){const t={...e};for(const o in e){const a=n[o],r=e[o];/^on[A-Z]/.test(o)?a&&r?t[o]=(...s)=>{r(...s),a(...s)}:a&&(t[o]=a):o==="style"?t[o]={...a,...r}:o==="className"&&(t[o]=[a,r].filter(Boolean).join(" "))}return{...n,...t}}function qT(n){var o,a;let e=(o=Object.getOwnPropertyDescriptor(n.props,"ref"))==null?void 0:o.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=(a=Object.getOwnPropertyDescriptor(n,"ref"))==null?void 0:a.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}var HT=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],vt=HT.reduce((n,e)=>{const t=h.forwardRef((o,a)=>{const{asChild:r,...i}=o,s=r?Tv:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),c.jsx(s,{...i,ref:a})});return t.displayName=`Primitive.${e}`,{...n,[e]:t}},{});function jv(n,e){n&&_i.flushSync(()=>n.dispatchEvent(e))}function $T(n,e=globalThis==null?void 0:globalThis.document){const t=Ot(n);h.useEffect(()=>{const o=a=>{a.key==="Escape"&&t(a)};return e.addEventListener("keydown",o,{capture:!0}),()=>e.removeEventListener("keydown",o,{capture:!0})},[t,e])}var YT="DismissableLayer",mh="dismissableLayer.update",KT="dismissableLayer.pointerDownOutside",GT="dismissableLayer.focusOutside",Ry,zv=h.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),El=h.forwardRef((n,e)=>{const{disableOutsidePointerEvents:t=!1,onEscapeKeyDown:o,onPointerDownOutside:a,onFocusOutside:r,onInteractOutside:i,onDismiss:s,...l}=n,u=h.useContext(zv),[f,d]=h.useState(null),p=(f==null?void 0:f.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,m]=h.useState({}),g=zt(e,C=>d(C)),y=Array.from(u.layers),[w]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),v=y.indexOf(w),k=f?y.indexOf(f):-1,E=u.layersWithOutsidePointerEventsDisabled.size>0,A=k>=v,N=QT(C=>{const P=C.target,M=[...u.branches].some(U=>U.contains(P));!A||M||(a==null||a(C),i==null||i(C),C.defaultPrevented||s==null||s())},p),T=XT(C=>{const P=C.target;[...u.branches].some(U=>U.contains(P))||(r==null||r(C),i==null||i(C),C.defaultPrevented||s==null||s())},p);return $T(C=>{k===u.layers.size-1&&(o==null||o(C),!C.defaultPrevented&&s&&(C.preventDefault(),s()))},p),h.useEffect(()=>{if(f)return t&&(u.layersWithOutsidePointerEventsDisabled.size===0&&(Ry=p.body.style.pointerEvents,p.body.style.pointerEvents="none"),u.layersWithOutsidePointerEventsDisabled.add(f)),u.layers.add(f),Cy(),()=>{t&&u.layersWithOutsidePointerEventsDisabled.size===1&&(p.body.style.pointerEvents=Ry)}},[f,p,t,u]),h.useEffect(()=>()=>{f&&(u.layers.delete(f),u.layersWithOutsidePointerEventsDisabled.delete(f),Cy())},[f,u]),h.useEffect(()=>{const C=()=>m({});return document.addEventListener(mh,C),()=>document.removeEventListener(mh,C)},[]),c.jsx(vt.div,{...l,ref:g,style:{pointerEvents:E?A?"auto":"none":void 0,...n.style},onFocusCapture:Fe(n.onFocusCapture,T.onFocusCapture),onBlurCapture:Fe(n.onBlurCapture,T.onBlurCapture),onPointerDownCapture:Fe(n.onPointerDownCapture,N.onPointerDownCapture)})});El.displayName=YT;var JT="DismissableLayerBranch",ZT=h.forwardRef((n,e)=>{const t=h.useContext(zv),o=h.useRef(null),a=zt(e,o);return h.useEffect(()=>{const r=o.current;if(r)return t.branches.add(r),()=>{t.branches.delete(r)}},[t.branches]),c.jsx(vt.div,{...n,ref:a})});ZT.displayName=JT;function QT(n,e=globalThis==null?void 0:globalThis.document){const t=Ot(n),o=h.useRef(!1),a=h.useRef(()=>{});return h.useEffect(()=>{const r=s=>{if(s.target&&!o.current){let l=function(){Iv(KT,t,u,{discrete:!0})};const u={originalEvent:s};s.pointerType==="touch"?(e.removeEventListener("click",a.current),a.current=l,e.addEventListener("click",a.current,{once:!0})):l()}else e.removeEventListener("click",a.current);o.current=!1},i=window.setTimeout(()=>{e.addEventListener("pointerdown",r)},0);return()=>{window.clearTimeout(i),e.removeEventListener("pointerdown",r),e.removeEventListener("click",a.current)}},[e,t]),{onPointerDownCapture:()=>o.current=!0}}function XT(n,e=globalThis==null?void 0:globalThis.document){const t=Ot(n),o=h.useRef(!1);return h.useEffect(()=>{const a=r=>{r.target&&!o.current&&Iv(GT,t,{originalEvent:r},{discrete:!1})};return e.addEventListener("focusin",a),()=>e.removeEventListener("focusin",a)},[e,t]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}function Cy(){const n=new CustomEvent(mh);document.dispatchEvent(n)}function Iv(n,e,t,{discrete:o}){const a=t.originalEvent.target,r=new CustomEvent(n,{bubbles:!1,cancelable:!0,detail:t});e&&a.addEventListener(n,e,{once:!0}),o?jv(a,r):a.dispatchEvent(r)}var Jd="focusScope.autoFocusOnMount",Zd="focusScope.autoFocusOnUnmount",Py={bubbles:!1,cancelable:!0},ej="FocusScope",Wu=h.forwardRef((n,e)=>{const{loop:t=!1,trapped:o=!1,onMountAutoFocus:a,onUnmountAutoFocus:r,...i}=n,[s,l]=h.useState(null),u=Ot(a),f=Ot(r),d=h.useRef(null),p=zt(e,y=>l(y)),m=h.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;h.useEffect(()=>{if(o){let y=function(E){if(m.paused||!s)return;const A=E.target;s.contains(A)?d.current=A:ma(d.current,{select:!0})},w=function(E){if(m.paused||!s)return;const A=E.relatedTarget;A!==null&&(s.contains(A)||ma(d.current,{select:!0}))},v=function(E){if(document.activeElement===document.body)for(const N of E)N.removedNodes.length>0&&ma(s)};document.addEventListener("focusin",y),document.addEventListener("focusout",w);const k=new MutationObserver(v);return s&&k.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",y),document.removeEventListener("focusout",w),k.disconnect()}}},[o,s,m.paused]),h.useEffect(()=>{if(s){Ty.add(m);const y=document.activeElement;if(!s.contains(y)){const v=new CustomEvent(Jd,Py);s.addEventListener(Jd,u),s.dispatchEvent(v),v.defaultPrevented||(tj(ij(Lv(s)),{select:!0}),document.activeElement===y&&ma(s))}return()=>{s.removeEventListener(Jd,u),setTimeout(()=>{const v=new CustomEvent(Zd,Py);s.addEventListener(Zd,f),s.dispatchEvent(v),v.defaultPrevented||ma(y??document.body,{select:!0}),s.removeEventListener(Zd,f),Ty.remove(m)},0)}}},[s,u,f,m]);const g=h.useCallback(y=>{if(!t&&!o||m.paused)return;const w=y.key==="Tab"&&!y.altKey&&!y.ctrlKey&&!y.metaKey,v=document.activeElement;if(w&&v){const k=y.currentTarget,[E,A]=nj(k);E&&A?!y.shiftKey&&v===A?(y.preventDefault(),t&&ma(E,{select:!0})):y.shiftKey&&v===E&&(y.preventDefault(),t&&ma(A,{select:!0})):v===k&&y.preventDefault()}},[t,o,m.paused]);return c.jsx(vt.div,{tabIndex:-1,...i,ref:p,onKeyDown:g})});Wu.displayName=ej;function tj(n,{select:e=!1}={}){const t=document.activeElement;for(const o of n)if(ma(o,{select:e}),document.activeElement!==t)return}function nj(n){const e=Lv(n),t=Ny(e,n),o=Ny(e.reverse(),n);return[t,o]}function Lv(n){const e=[],t=document.createTreeWalker(n,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const a=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||a?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;t.nextNode();)e.push(t.currentNode);return e}function Ny(n,e){for(const t of n)if(!oj(t,{upTo:e}))return t}function oj(n,{upTo:e}){if(getComputedStyle(n).visibility==="hidden")return!0;for(;n;){if(e!==void 0&&n===e)return!1;if(getComputedStyle(n).display==="none")return!0;n=n.parentElement}return!1}function aj(n){return n instanceof HTMLInputElement&&"select"in n}function ma(n,{select:e=!1}={}){if(n&&n.focus){const t=document.activeElement;n.focus({preventScroll:!0}),n!==t&&aj(n)&&e&&n.select()}}var Ty=rj();function rj(){let n=[];return{add(e){const t=n[0];e!==t&&(t==null||t.pause()),n=jy(n,e),n.unshift(e)},remove(e){var t;n=jy(n,e),(t=n[0])==null||t.resume()}}}function jy(n,e){const t=[...n],o=t.indexOf(e);return o!==-1&&t.splice(o,1),t}function ij(n){return n.filter(e=>e.tagName!=="A")}var sj="Portal",qu=h.forwardRef((n,e)=>{var s;const{container:t,...o}=n,[a,r]=h.useState(!1);No(()=>r(!0),[]);const i=t||a&&((s=globalThis==null?void 0:globalThis.document)==null?void 0:s.body);return i?d1.createPortal(c.jsx(vt.div,{...o,ref:e}),i):null});qu.displayName=sj;function lj(n,e){return h.useReducer((t,o)=>e[t][o]??t,n)}var Vn=n=>{const{present:e,children:t}=n,o=cj(e),a=typeof t=="function"?t({present:o.isPresent}):h.Children.only(t),r=zt(o.ref,uj(a));return typeof t=="function"||o.isPresent?h.cloneElement(a,{ref:r}):null};Vn.displayName="Presence";function cj(n){const[e,t]=h.useState(),o=h.useRef({}),a=h.useRef(n),r=h.useRef("none"),i=n?"mounted":"unmounted",[s,l]=lj(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return h.useEffect(()=>{const u=ec(o.current);r.current=s==="mounted"?u:"none"},[s]),No(()=>{const u=o.current,f=a.current;if(f!==n){const p=r.current,m=ec(u);n?l("MOUNT"):m==="none"||(u==null?void 0:u.display)==="none"?l("UNMOUNT"):l(f&&p!==m?"ANIMATION_OUT":"UNMOUNT"),a.current=n}},[n,l]),No(()=>{if(e){let u;const f=e.ownerDocument.defaultView??window,d=m=>{const y=ec(o.current).includes(m.animationName);if(m.target===e&&y&&(l("ANIMATION_END"),!a.current)){const w=e.style.animationFillMode;e.style.animationFillMode="forwards",u=f.setTimeout(()=>{e.style.animationFillMode==="forwards"&&(e.style.animationFillMode=w)})}},p=m=>{m.target===e&&(r.current=ec(o.current))};return e.addEventListener("animationstart",p),e.addEventListener("animationcancel",d),e.addEventListener("animationend",d),()=>{f.clearTimeout(u),e.removeEventListener("animationstart",p),e.removeEventListener("animationcancel",d),e.removeEventListener("animationend",d)}}else l("ANIMATION_END")},[e,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:h.useCallback(u=>{u&&(o.current=getComputedStyle(u)),t(u)},[])}}function ec(n){return(n==null?void 0:n.animationName)||"none"}function uj(n){var o,a;let e=(o=Object.getOwnPropertyDescriptor(n.props,"ref"))==null?void 0:o.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=(a=Object.getOwnPropertyDescriptor(n,"ref"))==null?void 0:a.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}var Qd=0;function jp(){h.useEffect(()=>{const n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",n[0]??zy()),document.body.insertAdjacentElement("beforeend",n[1]??zy()),Qd++,()=>{Qd===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),Qd--}},[])}function zy(){const n=document.createElement("span");return n.setAttribute("data-radix-focus-guard",""),n.tabIndex=0,n.style.outline="none",n.style.opacity="0",n.style.position="fixed",n.style.pointerEvents="none",n}var ko=function(){return ko=Object.assign||function(e){for(var t,o=1,a=arguments.length;o<a;o++){t=arguments[o];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},ko.apply(this,arguments)};function Mv(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,o=Object.getOwnPropertySymbols(n);a<o.length;a++)e.indexOf(o[a])<0&&Object.prototype.propertyIsEnumerable.call(n,o[a])&&(t[o[a]]=n[o[a]]);return t}function dj(n,e,t){if(t||arguments.length===2)for(var o=0,a=e.length,r;o<a;o++)(r||!(o in e))&&(r||(r=Array.prototype.slice.call(e,0,o)),r[o]=e[o]);return n.concat(r||Array.prototype.slice.call(e))}var Ec="right-scroll-bar-position",Rc="width-before-scroll-bar",fj="with-scroll-bars-hidden",hj="--removed-body-scroll-bar-size";function Xd(n,e){return typeof n=="function"?n(e):n&&(n.current=e),n}function pj(n,e){var t=h.useState(function(){return{value:n,callback:e,facade:{get current(){return t.value},set current(o){var a=t.value;a!==o&&(t.value=o,t.callback(o,a))}}}})[0];return t.callback=e,t.facade}var mj=typeof window<"u"?h.useLayoutEffect:h.useEffect,Iy=new WeakMap;function gj(n,e){var t=pj(null,function(o){return n.forEach(function(a){return Xd(a,o)})});return mj(function(){var o=Iy.get(t);if(o){var a=new Set(o),r=new Set(n),i=t.current;a.forEach(function(s){r.has(s)||Xd(s,null)}),r.forEach(function(s){a.has(s)||Xd(s,i)})}Iy.set(t,n)},[n]),t}function yj(n){return n}function wj(n,e){e===void 0&&(e=yj);var t=[],o=!1,a={read:function(){if(o)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return t.length?t[t.length-1]:n},useMedium:function(r){var i=e(r,o);return t.push(i),function(){t=t.filter(function(s){return s!==i})}},assignSyncMedium:function(r){for(o=!0;t.length;){var i=t;t=[],i.forEach(r)}t={push:function(s){return r(s)},filter:function(){return t}}},assignMedium:function(r){o=!0;var i=[];if(t.length){var s=t;t=[],s.forEach(r),i=t}var l=function(){var f=i;i=[],f.forEach(r)},u=function(){return Promise.resolve().then(l)};u(),t={push:function(f){i.push(f),u()},filter:function(f){return i=i.filter(f),t}}}};return a}function vj(n){n===void 0&&(n={});var e=wj(null);return e.options=ko({async:!0,ssr:!1},n),e}var Dv=function(n){var e=n.sideCar,t=Mv(n,["sideCar"]);if(!e)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var o=e.read();if(!o)throw new Error("Sidecar medium not found");return h.createElement(o,ko({},t))};Dv.isSideCarExport=!0;function bj(n,e){return n.useMedium(e),Dv}var _v=vj(),ef=function(){},Hu=h.forwardRef(function(n,e){var t=h.useRef(null),o=h.useState({onScrollCapture:ef,onWheelCapture:ef,onTouchMoveCapture:ef}),a=o[0],r=o[1],i=n.forwardProps,s=n.children,l=n.className,u=n.removeScrollBar,f=n.enabled,d=n.shards,p=n.sideCar,m=n.noIsolation,g=n.inert,y=n.allowPinchZoom,w=n.as,v=w===void 0?"div":w,k=n.gapMode,E=Mv(n,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as","gapMode"]),A=p,N=gj([t,e]),T=ko(ko({},E),a);return h.createElement(h.Fragment,null,f&&h.createElement(A,{sideCar:_v,removeScrollBar:u,shards:d,noIsolation:m,inert:g,setCallbacks:r,allowPinchZoom:!!y,lockRef:t,gapMode:k}),i?h.cloneElement(h.Children.only(s),ko(ko({},T),{ref:N})):h.createElement(v,ko({},T,{className:l,ref:N}),s))});Hu.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};Hu.classNames={fullWidth:Rc,zeroRight:Ec};var kj=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function Sj(){if(!document)return null;var n=document.createElement("style");n.type="text/css";var e=kj();return e&&n.setAttribute("nonce",e),n}function xj(n,e){n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}function Aj(n){var e=document.head||document.getElementsByTagName("head")[0];e.appendChild(n)}var Ej=function(){var n=0,e=null;return{add:function(t){n==0&&(e=Sj())&&(xj(e,t),Aj(e)),n++},remove:function(){n--,!n&&e&&(e.parentNode&&e.parentNode.removeChild(e),e=null)}}},Rj=function(){var n=Ej();return function(e,t){h.useEffect(function(){return n.add(e),function(){n.remove()}},[e&&t])}},Fv=function(){var n=Rj(),e=function(t){var o=t.styles,a=t.dynamic;return n(o,a),null};return e},Cj={left:0,top:0,right:0,gap:0},tf=function(n){return parseInt(n||"",10)||0},Pj=function(n){var e=window.getComputedStyle(document.body),t=e[n==="padding"?"paddingLeft":"marginLeft"],o=e[n==="padding"?"paddingTop":"marginTop"],a=e[n==="padding"?"paddingRight":"marginRight"];return[tf(t),tf(o),tf(a)]},Nj=function(n){if(n===void 0&&(n="margin"),typeof window>"u")return Cj;var e=Pj(n),t=document.documentElement.clientWidth,o=window.innerWidth;return{left:e[0],top:e[1],right:e[2],gap:Math.max(0,o-t+e[2]-e[0])}},Tj=Fv(),mi="data-scroll-locked",jj=function(n,e,t,o){var a=n.left,r=n.top,i=n.right,s=n.gap;return t===void 0&&(t="margin"),`
  .`.concat(fj,` {
   overflow: hidden `).concat(o,`;
   padding-right: `).concat(s,"px ").concat(o,`;
  }
  body[`).concat(mi,`] {
    overflow: hidden `).concat(o,`;
    overscroll-behavior: contain;
    `).concat([e&&"position: relative ".concat(o,";"),t==="margin"&&`
    padding-left: `.concat(a,`px;
    padding-top: `).concat(r,`px;
    padding-right: `).concat(i,`px;
    margin-left:0;
    margin-top:0;
    margin-right: `).concat(s,"px ").concat(o,`;
    `),t==="padding"&&"padding-right: ".concat(s,"px ").concat(o,";")].filter(Boolean).join(""),`
  }
  
  .`).concat(Ec,` {
    right: `).concat(s,"px ").concat(o,`;
  }
  
  .`).concat(Rc,` {
    margin-right: `).concat(s,"px ").concat(o,`;
  }
  
  .`).concat(Ec," .").concat(Ec,` {
    right: 0 `).concat(o,`;
  }
  
  .`).concat(Rc," .").concat(Rc,` {
    margin-right: 0 `).concat(o,`;
  }
  
  body[`).concat(mi,`] {
    `).concat(hj,": ").concat(s,`px;
  }
`)},Ly=function(){var n=parseInt(document.body.getAttribute(mi)||"0",10);return isFinite(n)?n:0},zj=function(){h.useEffect(function(){return document.body.setAttribute(mi,(Ly()+1).toString()),function(){var n=Ly()-1;n<=0?document.body.removeAttribute(mi):document.body.setAttribute(mi,n.toString())}},[])},Ij=function(n){var e=n.noRelative,t=n.noImportant,o=n.gapMode,a=o===void 0?"margin":o;zj();var r=h.useMemo(function(){return Nj(a)},[a]);return h.createElement(Tj,{styles:jj(r,!e,a,t?"":"!important")})},gh=!1;if(typeof window<"u")try{var tc=Object.defineProperty({},"passive",{get:function(){return gh=!0,!0}});window.addEventListener("test",tc,tc),window.removeEventListener("test",tc,tc)}catch{gh=!1}var Fr=gh?{passive:!1}:!1,Lj=function(n){return n.tagName==="TEXTAREA"},Ov=function(n,e){if(!(n instanceof Element))return!1;var t=window.getComputedStyle(n);return t[e]!=="hidden"&&!(t.overflowY===t.overflowX&&!Lj(n)&&t[e]==="visible")},Mj=function(n){return Ov(n,"overflowY")},Dj=function(n){return Ov(n,"overflowX")},My=function(n,e){var t=e.ownerDocument,o=e;do{typeof ShadowRoot<"u"&&o instanceof ShadowRoot&&(o=o.host);var a=Uv(n,o);if(a){var r=Bv(n,o),i=r[1],s=r[2];if(i>s)return!0}o=o.parentNode}while(o&&o!==t.body);return!1},_j=function(n){var e=n.scrollTop,t=n.scrollHeight,o=n.clientHeight;return[e,t,o]},Fj=function(n){var e=n.scrollLeft,t=n.scrollWidth,o=n.clientWidth;return[e,t,o]},Uv=function(n,e){return n==="v"?Mj(e):Dj(e)},Bv=function(n,e){return n==="v"?_j(e):Fj(e)},Oj=function(n,e){return n==="h"&&e==="rtl"?-1:1},Uj=function(n,e,t,o,a){var r=Oj(n,window.getComputedStyle(e).direction),i=r*o,s=t.target,l=e.contains(s),u=!1,f=i>0,d=0,p=0;do{var m=Bv(n,s),g=m[0],y=m[1],w=m[2],v=y-w-r*g;(g||v)&&Uv(n,s)&&(d+=v,p+=g),s instanceof ShadowRoot?s=s.host:s=s.parentNode}while(!l&&s!==document.body||l&&(e.contains(s)||e===s));return(f&&(Math.abs(d)<1||!a)||!f&&(Math.abs(p)<1||!a))&&(u=!0),u},nc=function(n){return"changedTouches"in n?[n.changedTouches[0].clientX,n.changedTouches[0].clientY]:[0,0]},Dy=function(n){return[n.deltaX,n.deltaY]},_y=function(n){return n&&"current"in n?n.current:n},Bj=function(n,e){return n[0]===e[0]&&n[1]===e[1]},Vj=function(n){return`
  .block-interactivity-`.concat(n,` {pointer-events: none;}
  .allow-interactivity-`).concat(n,` {pointer-events: all;}
`)},Wj=0,Or=[];function qj(n){var e=h.useRef([]),t=h.useRef([0,0]),o=h.useRef(),a=h.useState(Wj++)[0],r=h.useState(Fv)[0],i=h.useRef(n);h.useEffect(function(){i.current=n},[n]),h.useEffect(function(){if(n.inert){document.body.classList.add("block-interactivity-".concat(a));var y=dj([n.lockRef.current],(n.shards||[]).map(_y),!0).filter(Boolean);return y.forEach(function(w){return w.classList.add("allow-interactivity-".concat(a))}),function(){document.body.classList.remove("block-interactivity-".concat(a)),y.forEach(function(w){return w.classList.remove("allow-interactivity-".concat(a))})}}},[n.inert,n.lockRef.current,n.shards]);var s=h.useCallback(function(y,w){if("touches"in y&&y.touches.length===2||y.type==="wheel"&&y.ctrlKey)return!i.current.allowPinchZoom;var v=nc(y),k=t.current,E="deltaX"in y?y.deltaX:k[0]-v[0],A="deltaY"in y?y.deltaY:k[1]-v[1],N,T=y.target,C=Math.abs(E)>Math.abs(A)?"h":"v";if("touches"in y&&C==="h"&&T.type==="range")return!1;var P=My(C,T);if(!P)return!0;if(P?N=C:(N=C==="v"?"h":"v",P=My(C,T)),!P)return!1;if(!o.current&&"changedTouches"in y&&(E||A)&&(o.current=N),!N)return!0;var M=o.current||N;return Uj(M,w,y,M==="h"?E:A,!0)},[]),l=h.useCallback(function(y){var w=y;if(!(!Or.length||Or[Or.length-1]!==r)){var v="deltaY"in w?Dy(w):nc(w),k=e.current.filter(function(N){return N.name===w.type&&(N.target===w.target||w.target===N.shadowParent)&&Bj(N.delta,v)})[0];if(k&&k.should){w.cancelable&&w.preventDefault();return}if(!k){var E=(i.current.shards||[]).map(_y).filter(Boolean).filter(function(N){return N.contains(w.target)}),A=E.length>0?s(w,E[0]):!i.current.noIsolation;A&&w.cancelable&&w.preventDefault()}}},[]),u=h.useCallback(function(y,w,v,k){var E={name:y,delta:w,target:v,should:k,shadowParent:Hj(v)};e.current.push(E),setTimeout(function(){e.current=e.current.filter(function(A){return A!==E})},1)},[]),f=h.useCallback(function(y){t.current=nc(y),o.current=void 0},[]),d=h.useCallback(function(y){u(y.type,Dy(y),y.target,s(y,n.lockRef.current))},[]),p=h.useCallback(function(y){u(y.type,nc(y),y.target,s(y,n.lockRef.current))},[]);h.useEffect(function(){return Or.push(r),n.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:p}),document.addEventListener("wheel",l,Fr),document.addEventListener("touchmove",l,Fr),document.addEventListener("touchstart",f,Fr),function(){Or=Or.filter(function(y){return y!==r}),document.removeEventListener("wheel",l,Fr),document.removeEventListener("touchmove",l,Fr),document.removeEventListener("touchstart",f,Fr)}},[]);var m=n.removeScrollBar,g=n.inert;return h.createElement(h.Fragment,null,g?h.createElement(r,{styles:Vj(a)}):null,m?h.createElement(Ij,{gapMode:n.gapMode}):null)}function Hj(n){for(var e=null;n!==null;)n instanceof ShadowRoot&&(e=n.host,n=n.host),n=n.parentNode;return e}const $j=bj(_v,qj);var $u=h.forwardRef(function(n,e){return h.createElement(Hu,ko({},n,{ref:e,sideCar:$j}))});$u.classNames=Hu.classNames;var Yj=function(n){if(typeof document>"u")return null;var e=Array.isArray(n)?n[0]:n;return e.ownerDocument.body},Ur=new WeakMap,oc=new WeakMap,ac={},nf=0,Vv=function(n){return n&&(n.host||Vv(n.parentNode))},Kj=function(n,e){return e.map(function(t){if(n.contains(t))return t;var o=Vv(t);return o&&n.contains(o)?o:(console.error("aria-hidden",t,"in not contained inside",n,". Doing nothing"),null)}).filter(function(t){return!!t})},Gj=function(n,e,t,o){var a=Kj(e,Array.isArray(n)?n:[n]);ac[t]||(ac[t]=new WeakMap);var r=ac[t],i=[],s=new Set,l=new Set(a),u=function(d){!d||s.has(d)||(s.add(d),u(d.parentNode))};a.forEach(u);var f=function(d){!d||l.has(d)||Array.prototype.forEach.call(d.children,function(p){if(s.has(p))f(p);else try{var m=p.getAttribute(o),g=m!==null&&m!=="false",y=(Ur.get(p)||0)+1,w=(r.get(p)||0)+1;Ur.set(p,y),r.set(p,w),i.push(p),y===1&&g&&oc.set(p,!0),w===1&&p.setAttribute(t,"true"),g||p.setAttribute(o,"true")}catch(v){console.error("aria-hidden: cannot operate on ",p,v)}})};return f(e),s.clear(),nf++,function(){i.forEach(function(d){var p=Ur.get(d)-1,m=r.get(d)-1;Ur.set(d,p),r.set(d,m),p||(oc.has(d)||d.removeAttribute(o),oc.delete(d)),m||d.removeAttribute(t)}),nf--,nf||(Ur=new WeakMap,Ur=new WeakMap,oc=new WeakMap,ac={})}},zp=function(n,e,t){t===void 0&&(t="data-aria-hidden");var o=Array.from(Array.isArray(n)?n:[n]),a=Yj(n);return a?(o.push.apply(o,Array.from(a.querySelectorAll("[aria-live]"))),Gj(o,a,t,"aria-hidden")):function(){return null}},Wv=h.forwardRef((n,e)=>{const{children:t,...o}=n,a=h.Children.toArray(t),r=a.find(Zj);if(r){const i=r.props.children,s=a.map(l=>l===r?h.Children.count(i)>1?h.Children.only(null):h.isValidElement(i)?i.props.children:null:l);return c.jsx(yh,{...o,ref:e,children:h.isValidElement(i)?h.cloneElement(i,void 0,s):null})}return c.jsx(yh,{...o,ref:e,children:t})});Wv.displayName="Slot";var yh=h.forwardRef((n,e)=>{const{children:t,...o}=n;if(h.isValidElement(t)){const a=Xj(t);return h.cloneElement(t,{...Qj(o,t.props),ref:e?ta(e,a):a})}return h.Children.count(t)>1?h.Children.only(null):null});yh.displayName="SlotClone";var Jj=({children:n})=>c.jsx(c.Fragment,{children:n});function Zj(n){return h.isValidElement(n)&&n.type===Jj}function Qj(n,e){const t={...e};for(const o in e){const a=n[o],r=e[o];/^on[A-Z]/.test(o)?a&&r?t[o]=(...s)=>{r(...s),a(...s)}:a&&(t[o]=a):o==="style"?t[o]={...a,...r}:o==="className"&&(t[o]=[a,r].filter(Boolean).join(" "))}return{...n,...t}}function Xj(n){var o,a;let e=(o=Object.getOwnPropertyDescriptor(n.props,"ref"))==null?void 0:o.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=(a=Object.getOwnPropertyDescriptor(n,"ref"))==null?void 0:a.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}var Ip="Dialog",[qv,Hv]=Bn(Ip),[ez,so]=qv(Ip),$v=n=>{const{__scopeDialog:e,children:t,open:o,defaultOpen:a,onOpenChange:r,modal:i=!0}=n,s=h.useRef(null),l=h.useRef(null),[u=!1,f]=Ua({prop:o,defaultProp:a,onChange:r});return c.jsx(ez,{scope:e,triggerRef:s,contentRef:l,contentId:Ao(),titleId:Ao(),descriptionId:Ao(),open:u,onOpenChange:f,onOpenToggle:h.useCallback(()=>f(d=>!d),[f]),modal:i,children:t})};$v.displayName=Ip;var Yv="DialogTrigger",Kv=h.forwardRef((n,e)=>{const{__scopeDialog:t,...o}=n,a=so(Yv,t),r=zt(e,a.triggerRef);return c.jsx(vt.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":Dp(a.open),...o,ref:r,onClick:Fe(n.onClick,a.onOpenToggle)})});Kv.displayName=Yv;var Lp="DialogPortal",[tz,Gv]=qv(Lp,{forceMount:void 0}),Jv=n=>{const{__scopeDialog:e,forceMount:t,children:o,container:a}=n,r=so(Lp,e);return c.jsx(tz,{scope:e,forceMount:t,children:h.Children.map(o,i=>c.jsx(Vn,{present:t||r.open,children:c.jsx(qu,{asChild:!0,container:a,children:i})}))})};Jv.displayName=Lp;var ou="DialogOverlay",Zv=h.forwardRef((n,e)=>{const t=Gv(ou,n.__scopeDialog),{forceMount:o=t.forceMount,...a}=n,r=so(ou,n.__scopeDialog);return r.modal?c.jsx(Vn,{present:o||r.open,children:c.jsx(nz,{...a,ref:e})}):null});Zv.displayName=ou;var nz=h.forwardRef((n,e)=>{const{__scopeDialog:t,...o}=n,a=so(ou,t);return c.jsx($u,{as:Wv,allowPinchZoom:!0,shards:[a.contentRef],children:c.jsx(vt.div,{"data-state":Dp(a.open),...o,ref:e,style:{pointerEvents:"auto",...o.style}})})}),vr="DialogContent",Qv=h.forwardRef((n,e)=>{const t=Gv(vr,n.__scopeDialog),{forceMount:o=t.forceMount,...a}=n,r=so(vr,n.__scopeDialog);return c.jsx(Vn,{present:o||r.open,children:r.modal?c.jsx(oz,{...a,ref:e}):c.jsx(az,{...a,ref:e})})});Qv.displayName=vr;var oz=h.forwardRef((n,e)=>{const t=so(vr,n.__scopeDialog),o=h.useRef(null),a=zt(e,t.contentRef,o);return h.useEffect(()=>{const r=o.current;if(r)return zp(r)},[]),c.jsx(Xv,{...n,ref:a,trapFocus:t.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Fe(n.onCloseAutoFocus,r=>{var i;r.preventDefault(),(i=t.triggerRef.current)==null||i.focus()}),onPointerDownOutside:Fe(n.onPointerDownOutside,r=>{const i=r.detail.originalEvent,s=i.button===0&&i.ctrlKey===!0;(i.button===2||s)&&r.preventDefault()}),onFocusOutside:Fe(n.onFocusOutside,r=>r.preventDefault())})}),az=h.forwardRef((n,e)=>{const t=so(vr,n.__scopeDialog),o=h.useRef(!1),a=h.useRef(!1);return c.jsx(Xv,{...n,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:r=>{var i,s;(i=n.onCloseAutoFocus)==null||i.call(n,r),r.defaultPrevented||(o.current||(s=t.triggerRef.current)==null||s.focus(),r.preventDefault()),o.current=!1,a.current=!1},onInteractOutside:r=>{var l,u;(l=n.onInteractOutside)==null||l.call(n,r),r.defaultPrevented||(o.current=!0,r.detail.originalEvent.type==="pointerdown"&&(a.current=!0));const i=r.target;((u=t.triggerRef.current)==null?void 0:u.contains(i))&&r.preventDefault(),r.detail.originalEvent.type==="focusin"&&a.current&&r.preventDefault()}})}),Xv=h.forwardRef((n,e)=>{const{__scopeDialog:t,trapFocus:o,onOpenAutoFocus:a,onCloseAutoFocus:r,...i}=n,s=so(vr,t),l=h.useRef(null),u=zt(e,l);return jp(),c.jsxs(c.Fragment,{children:[c.jsx(Wu,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:a,onUnmountAutoFocus:r,children:c.jsx(El,{role:"dialog",id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":Dp(s.open),...i,ref:u,onDismiss:()=>s.onOpenChange(!1)})}),c.jsxs(c.Fragment,{children:[c.jsx(iz,{titleId:s.titleId}),c.jsx(lz,{contentRef:l,descriptionId:s.descriptionId})]})]})}),Mp="DialogTitle",eb=h.forwardRef((n,e)=>{const{__scopeDialog:t,...o}=n,a=so(Mp,t);return c.jsx(vt.h2,{id:a.titleId,...o,ref:e})});eb.displayName=Mp;var tb="DialogDescription",nb=h.forwardRef((n,e)=>{const{__scopeDialog:t,...o}=n,a=so(tb,t);return c.jsx(vt.p,{id:a.descriptionId,...o,ref:e})});nb.displayName=tb;var ob="DialogClose",ab=h.forwardRef((n,e)=>{const{__scopeDialog:t,...o}=n,a=so(ob,t);return c.jsx(vt.button,{type:"button",...o,ref:e,onClick:Fe(n.onClick,()=>a.onOpenChange(!1))})});ab.displayName=ob;function Dp(n){return n?"open":"closed"}var rb="DialogTitleWarning",[rz,ib]=DT(rb,{contentName:vr,titleName:Mp,docsSlug:"dialog"}),iz=({titleId:n})=>{const e=ib(rb),t=`\`${e.contentName}\` requires a \`${e.titleName}\` for the component to be accessible for screen reader users.

If you want to hide the \`${e.titleName}\`, you can wrap it with our VisuallyHidden component.

For more information, see https://radix-ui.com/primitives/docs/components/${e.docsSlug}`;return h.useEffect(()=>{n&&(document.getElementById(n)||console.error(t))},[t,n]),null},sz="DialogDescriptionWarning",lz=({contentRef:n,descriptionId:e})=>{const o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${ib(sz).contentName}}.`;return h.useEffect(()=>{var r;const a=(r=n.current)==null?void 0:r.getAttribute("aria-describedby");e&&a&&(document.getElementById(e)||console.warn(o))},[o,n,e]),null},Yu=$v,_p=Kv,Ku=Jv,Wi=Zv,qi=Qv,Hi=eb,$i=nb,Rl=ab;const Qr=class Qr{constructor(){H(this,"modals",[]);return Qr.instance||(Qr.instance=this),Qr.instance}register(e,t){const o=this.modals.find(a=>a.id===e);if(o){o.cb=t;return}this.modals.push({id:e,cb:t})}unregister(e){const t=this.modals.find(o=>o.id===e);t&&(t.cb(),this.modals=this.modals.filter(o=>o.id!==e))}pop(){const e=this.modals.pop();return e?(e.cb(),!0):!1}};H(Qr,"instance");let wh=Qr;const Gt=new wh,na=({children:n,open:e,onOpenChange:t,...o})=>{const[a,r]=h.useState(e??!1),i=h.useMemo(()=>`dialog-${ea()}`,[]);return h.useEffect(()=>{e?Gt.register(i,()=>{t==null||t(!1)}):Gt.unregister(i)},[e]),h.useEffect(()=>{e===void 0&&(a?Gt.register(i,()=>{r(!1)}):Gt.unregister(i))},[a]),c.jsx(Yu,{open:e??a,onOpenChange:t??r,...o,children:n})},cz=_p,uz=Ku,sb=h.forwardRef(({className:n,...e},t)=>c.jsx(Wi,{ref:t,className:ne("fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...e}));sb.displayName=Wi.displayName;const jo=h.forwardRef(({className:n,children:e,withoutClose:t,hideOverlay:o=!1,...a},r)=>c.jsxs(uz,{children:[!o&&c.jsx(sb,{}),c.jsxs(qi,{ref:r,className:ne("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border/20 bg-card p-6 shadow-xl duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-2xl",n),...a,children:[e,!t&&c.jsxs(Rl,{className:"absolute right-4 top-4 rounded-full p-1.5 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[c.jsx(Dn,{className:"h-4 w-4"}),c.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));jo.displayName=qi.displayName;const Ba=({className:n,...e})=>c.jsx("div",{className:ne("flex flex-col space-y-1.5 text-center sm:text-left",n),...e});Ba.displayName="DialogHeader";const lb=({className:n,...e})=>c.jsx("div",{className:ne("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...e});lb.displayName="DialogFooter";const Va=h.forwardRef(({className:n,...e},t)=>c.jsx(Hi,{ref:t,className:ne("text-lg font-semibold leading-none tracking-tight",n),...e}));Va.displayName=Hi.displayName;const Cr=h.forwardRef(({className:n,...e},t)=>c.jsx($i,{ref:t,className:ne("text-sm text-muted-foreground",n),...e}));Cr.displayName=$i.displayName;function dz(n){if(typeof document>"u")return;let e=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css",e.appendChild(t),t.styleSheet?t.styleSheet.cssText=n:t.appendChild(document.createTextNode(n))}const cb=ee.createContext({drawerRef:{current:null},overlayRef:{current:null},onPress:()=>{},onRelease:()=>{},onDrag:()=>{},onNestedDrag:()=>{},onNestedOpenChange:()=>{},onNestedRelease:()=>{},openProp:void 0,dismissible:!1,isOpen:!1,isDragging:!1,keyboardIsOpen:{current:!1},snapPointsOffset:null,snapPoints:null,handleOnly:!1,modal:!1,shouldFade:!1,activeSnapPoint:null,onOpenChange:()=>{},setActiveSnapPoint:()=>{},closeDrawer:()=>{},direction:"bottom",shouldAnimate:{current:!0},shouldScaleBackground:!1,setBackgroundColorOnScale:!0,noBodyStyles:!1,container:null,autoFocus:!1}),Yi=()=>{const n=ee.useContext(cb);if(!n)throw new Error("useDrawerContext must be used within a Drawer.Root");return n};dz(`[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(
[data-state=closed]
){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}`);function fz(){const n=navigator.userAgent;return typeof window<"u"&&(/Firefox/.test(n)&&/Mobile/.test(n)||/FxiOS/.test(n))}function hz(){return Fp(/^Mac/)}function pz(){return Fp(/^iPhone/)}function Fy(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function mz(){return Fp(/^iPad/)||hz()&&navigator.maxTouchPoints>1}function ub(){return pz()||mz()}function Fp(n){return typeof window<"u"&&window.navigator!=null?n.test(window.navigator.platform):void 0}const gz=24,yz=typeof window<"u"?h.useLayoutEffect:h.useEffect;function Oy(...n){return(...e)=>{for(let t of n)typeof t=="function"&&t(...e)}}const of=typeof document<"u"&&window.visualViewport;function Uy(n){let e=window.getComputedStyle(n);return/(auto|scroll)/.test(e.overflow+e.overflowX+e.overflowY)}function db(n){for(Uy(n)&&(n=n.parentElement);n&&!Uy(n);)n=n.parentElement;return n||document.scrollingElement||document.documentElement}const wz=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);let rc=0,af;function vz(n={}){let{isDisabled:e}=n;yz(()=>{if(!e)return rc++,rc===1&&ub()&&(af=bz()),()=>{rc--,rc===0&&(af==null||af())}},[e])}function bz(){let n,e=0,t=d=>{n=db(d.target),!(n===document.documentElement&&n===document.body)&&(e=d.changedTouches[0].pageY)},o=d=>{if(!n||n===document.documentElement||n===document.body){d.preventDefault();return}let p=d.changedTouches[0].pageY,m=n.scrollTop,g=n.scrollHeight-n.clientHeight;g!==0&&((m<=0&&p>e||m>=g&&p<e)&&d.preventDefault(),e=p)},a=d=>{let p=d.target;vh(p)&&p!==document.activeElement&&(d.preventDefault(),p.style.transform="translateY(-2000px)",p.focus(),requestAnimationFrame(()=>{p.style.transform=""}))},r=d=>{let p=d.target;vh(p)&&(p.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{p.style.transform="",of&&(of.height<window.innerHeight?requestAnimationFrame(()=>{By(p)}):of.addEventListener("resize",()=>By(p),{once:!0}))}))},i=()=>{window.scrollTo(0,0)},s=window.pageXOffset,l=window.pageYOffset,u=Oy(kz(document.documentElement,"paddingRight",`${window.innerWidth-document.documentElement.clientWidth}px`));window.scrollTo(0,0);let f=Oy(hs(document,"touchstart",t,{passive:!1,capture:!0}),hs(document,"touchmove",o,{passive:!1,capture:!0}),hs(document,"touchend",a,{passive:!1,capture:!0}),hs(document,"focus",r,!0),hs(window,"scroll",i));return()=>{u(),f(),window.scrollTo(s,l)}}function kz(n,e,t){let o=n.style[e];return n.style[e]=t,()=>{n.style[e]=o}}function hs(n,e,t,o){return n.addEventListener(e,t,o),()=>{n.removeEventListener(e,t,o)}}function By(n){let e=document.scrollingElement||document.documentElement;for(;n&&n!==e;){let t=db(n);if(t!==document.documentElement&&t!==document.body&&t!==n){let o=t.getBoundingClientRect().top,a=n.getBoundingClientRect().top,r=n.getBoundingClientRect().bottom;const i=t.getBoundingClientRect().bottom+gz;r>i&&(t.scrollTop+=a-o)}n=t.parentElement}}function vh(n){return n instanceof HTMLInputElement&&!wz.has(n.type)||n instanceof HTMLTextAreaElement||n instanceof HTMLElement&&n.isContentEditable}function Sz(n,e){typeof n=="function"?n(e):n!=null&&(n.current=e)}function xz(...n){return e=>n.forEach(t=>Sz(t,e))}function fb(...n){return h.useCallback(xz(...n),n)}const hb=new WeakMap;function Ft(n,e,t=!1){if(!n||!(n instanceof HTMLElement))return;let o={};Object.entries(e).forEach(([a,r])=>{if(a.startsWith("--")){n.style.setProperty(a,r);return}o[a]=n.style[a],n.style[a]=r}),!t&&hb.set(n,o)}function Az(n,e){if(!n||!(n instanceof HTMLElement))return;let t=hb.get(n);t&&(n.style[e]=t[e])}const Dt=n=>{switch(n){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return n}};function ic(n,e){if(!n)return null;const t=window.getComputedStyle(n),o=t.transform||t.webkitTransform||t.mozTransform;let a=o.match(/^matrix3d\((.+)\)$/);return a?parseFloat(a[1].split(", ")[Dt(e)?13:12]):(a=o.match(/^matrix\((.+)\)$/),a?parseFloat(a[1].split(", ")[Dt(e)?5:4]):null)}function Ez(n){return 8*(Math.log(n+1)-2)}function rf(n,e){if(!n)return()=>{};const t=n.style.cssText;return Object.assign(n.style,e),()=>{n.style.cssText=t}}function Rz(...n){return(...e)=>{for(const t of n)typeof t=="function"&&t(...e)}}const Tt={DURATION:.5,EASE:[.32,.72,0,1]},pb=.4,Cz=.25,Pz=100,mb=8,Ya=16,bh=26,sf="vaul-dragging";function gb(n){const e=ee.useRef(n);return ee.useEffect(()=>{e.current=n}),ee.useMemo(()=>(...t)=>e.current==null?void 0:e.current.call(e,...t),[])}function Nz({defaultProp:n,onChange:e}){const t=ee.useState(n),[o]=t,a=ee.useRef(o),r=gb(e);return ee.useEffect(()=>{a.current!==o&&(r(o),a.current=o)},[o,a,r]),t}function yb({prop:n,defaultProp:e,onChange:t=()=>{}}){const[o,a]=Nz({defaultProp:e,onChange:t}),r=n!==void 0,i=r?n:o,s=gb(t),l=ee.useCallback(u=>{if(r){const d=typeof u=="function"?u(n):u;d!==n&&s(d)}else a(u)},[r,n,a,s]);return[i,l]}function Tz({activeSnapPointProp:n,setActiveSnapPointProp:e,snapPoints:t,drawerRef:o,overlayRef:a,fadeFromIndex:r,onSnapPointChange:i,direction:s="bottom",container:l,snapToSequentialPoint:u}){const[f,d]=yb({prop:n,defaultProp:t==null?void 0:t[0],onChange:e}),[p,m]=ee.useState(typeof window<"u"?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);ee.useEffect(()=>{function C(){m({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",C),()=>window.removeEventListener("resize",C)},[]);const g=ee.useMemo(()=>f===(t==null?void 0:t[t.length-1])||null,[t,f]),y=ee.useMemo(()=>{var C;return(C=t==null?void 0:t.findIndex(P=>P===f))!=null?C:null},[t,f]),w=t&&t.length>0&&(r||r===0)&&!Number.isNaN(r)&&t[r]===f||!t,v=ee.useMemo(()=>{const C=l?{width:l.getBoundingClientRect().width,height:l.getBoundingClientRect().height}:typeof window<"u"?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0};var P;return(P=t==null?void 0:t.map(M=>{const U=typeof M=="string";let O=0;if(U&&(O=parseInt(M,10)),Dt(s)){const V=U?O:p?M*C.height:0;return p?s==="bottom"?C.height-V:-C.height+V:V}const W=U?O:p?M*C.width:0;return p?s==="right"?C.width-W:-C.width+W:W}))!=null?P:[]},[t,p,l]),k=ee.useMemo(()=>y!==null?v==null?void 0:v[y]:null,[v,y]),E=ee.useCallback(C=>{var P;const M=(P=v==null?void 0:v.findIndex(U=>U===C))!=null?P:null;i(M),Ft(o.current,{transition:`transform ${Tt.DURATION}s cubic-bezier(${Tt.EASE.join(",")})`,transform:Dt(s)?`translate3d(0, ${C}px, 0)`:`translate3d(${C}px, 0, 0)`}),v&&M!==v.length-1&&r!==void 0&&M!==r&&M<r?Ft(a.current,{transition:`opacity ${Tt.DURATION}s cubic-bezier(${Tt.EASE.join(",")})`,opacity:"0"}):Ft(a.current,{transition:`opacity ${Tt.DURATION}s cubic-bezier(${Tt.EASE.join(",")})`,opacity:"1"}),d(t==null?void 0:t[Math.max(M,0)])},[o.current,t,v,r,a,d]);ee.useEffect(()=>{if(f||n){var C;const P=(C=t==null?void 0:t.findIndex(M=>M===n||M===f))!=null?C:-1;v&&P!==-1&&typeof v[P]=="number"&&E(v[P])}},[f,n,t,v,E]);function A({draggedDistance:C,closeDrawer:P,velocity:M,dismissible:U}){if(r===void 0)return;const O=s==="bottom"||s==="right"?(k??0)-C:(k??0)+C,W=y===r-1,V=y===0,j=C>0;if(W&&Ft(a.current,{transition:`opacity ${Tt.DURATION}s cubic-bezier(${Tt.EASE.join(",")})`}),!u&&M>2&&!j){U?P():E(v[0]);return}if(!u&&M>2&&j&&v&&t){E(v[t.length-1]);return}const L=v==null?void 0:v.reduce((b,S)=>typeof b!="number"||typeof S!="number"?b:Math.abs(S-O)<Math.abs(b-O)?S:b),I=Dt(s)?window.innerHeight:window.innerWidth;if(M>pb&&Math.abs(C)<I*.4){const b=j?1:-1;if(b>0&&g&&t){E(v[t.length-1]);return}if(V&&b<0&&U&&P(),y===null)return;E(v[y+b]);return}E(L)}function N({draggedDistance:C}){if(k===null)return;const P=s==="bottom"||s==="right"?k-C:k+C;(s==="bottom"||s==="right")&&P<v[v.length-1]||(s==="top"||s==="left")&&P>v[v.length-1]||Ft(o.current,{transform:Dt(s)?`translate3d(0, ${P}px, 0)`:`translate3d(${P}px, 0, 0)`})}function T(C,P){if(!t||typeof y!="number"||!v||r===void 0)return null;const M=y===r-1;if(y>=r&&P)return 0;if(M&&!P)return 1;if(!w&&!M)return null;const O=M?y+1:y-1,W=M?v[O]-v[O-1]:v[O+1]-v[O],V=C/Math.abs(W);return M?1-V:V}return{isLastSnapPoint:g,activeSnapPoint:f,shouldFade:w,getPercentageDragged:T,setActiveSnapPoint:d,activeSnapPointIndex:y,onRelease:A,onDrag:N,snapPointsOffset:v}}const jz=()=>()=>{};function zz(){const{direction:n,isOpen:e,shouldScaleBackground:t,setBackgroundColorOnScale:o,noBodyStyles:a}=Yi(),r=ee.useRef(null),i=h.useMemo(()=>document.body.style.backgroundColor,[]);function s(){return(window.innerWidth-bh)/window.innerWidth}ee.useEffect(()=>{if(e&&t){r.current&&clearTimeout(r.current);const l=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!l)return;Rz(o&&!a?rf(document.body,{background:"black"}):jz,rf(l,{transformOrigin:Dt(n)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:`${Tt.DURATION}s`,transitionTimingFunction:`cubic-bezier(${Tt.EASE.join(",")})`}));const u=rf(l,{borderRadius:`${mb}px`,overflow:"hidden",...Dt(n)?{transform:`scale(${s()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${s()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{u(),r.current=window.setTimeout(()=>{i?document.body.style.background=i:document.body.style.removeProperty("background")},Tt.DURATION*1e3)}}},[e,t,i])}let ps=null;function Iz({isOpen:n,modal:e,nested:t,hasBeenOpened:o,preventScrollRestoration:a,noBodyStyles:r}){const[i,s]=ee.useState(()=>typeof window<"u"?window.location.href:""),l=ee.useRef(0),u=ee.useCallback(()=>{if(Fy()&&ps===null&&n&&!r){ps={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};const{scrollX:d,innerHeight:p}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:`${-l.current}px`,left:`${-d}px`,right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{const m=p-window.innerHeight;m&&l.current>=p&&(document.body.style.top=`${-(l.current+m)}px`)}),300)}},[n]),f=ee.useCallback(()=>{if(Fy()&&ps!==null&&!r){const d=-parseInt(document.body.style.top,10),p=-parseInt(document.body.style.left,10);Object.assign(document.body.style,ps),window.requestAnimationFrame(()=>{if(a&&i!==window.location.href){s(window.location.href);return}window.scrollTo(p,d)}),ps=null}},[i]);return ee.useEffect(()=>{function d(){l.current=window.scrollY}return d(),window.addEventListener("scroll",d),()=>{window.removeEventListener("scroll",d)}},[]),ee.useEffect(()=>{if(e)return()=>{typeof document>"u"||document.querySelector("[data-vaul-drawer]")||f()}},[e,f]),ee.useEffect(()=>{t||!o||(n?(!window.matchMedia("(display-mode: standalone)").matches&&u(),e||window.setTimeout(()=>{f()},500)):f())},[n,o,i,e,t,u,f]),{restorePositionSetting:f}}function wb({open:n,onOpenChange:e,children:t,onDrag:o,onRelease:a,snapPoints:r,shouldScaleBackground:i=!1,setBackgroundColorOnScale:s=!0,closeThreshold:l=Cz,scrollLockTimeout:u=Pz,dismissible:f=!0,handleOnly:d=!1,fadeFromIndex:p=r&&r.length-1,activeSnapPoint:m,setActiveSnapPoint:g,fixed:y,modal:w=!0,onClose:v,nested:k,noBodyStyles:E=!1,direction:A="bottom",defaultOpen:N=!1,disablePreventScroll:T=!0,snapToSequentialPoint:C=!1,preventScrollRestoration:P=!1,repositionInputs:M=!0,onAnimationEnd:U,container:O,autoFocus:W=!1}){var V,j;const[L=!1,I]=yb({defaultProp:N,prop:n,onChange:_e=>{e==null||e(_e),!_e&&!k&&_(),setTimeout(()=>{U==null||U(_e)},Tt.DURATION*1e3),_e&&!w&&typeof window<"u"&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),_e||(document.body.style.pointerEvents="auto")}}),[b,S]=ee.useState(!1),[z,F]=ee.useState(!1),[D,q]=ee.useState(!1),J=ee.useRef(null),ae=ee.useRef(null),ge=ee.useRef(null),ie=ee.useRef(null),de=ee.useRef(null),he=ee.useRef(!1),we=ee.useRef(null),ke=ee.useRef(0),Ee=ee.useRef(!1),G=ee.useRef(!N),te=ee.useRef(0),Y=ee.useRef(null),se=ee.useRef(((V=Y.current)==null?void 0:V.getBoundingClientRect().height)||0),fe=ee.useRef(((j=Y.current)==null?void 0:j.getBoundingClientRect().width)||0),Se=ee.useRef(0),Oe=ee.useCallback(_e=>{r&&_e===qe.length-1&&(ae.current=new Date)},[]),{activeSnapPoint:Le,activeSnapPointIndex:ye,setActiveSnapPoint:Pe,onRelease:Te,snapPointsOffset:qe,onDrag:ct,shouldFade:Ge,getPercentageDragged:et}=Tz({snapPoints:r,activeSnapPointProp:m,setActiveSnapPointProp:g,drawerRef:Y,fadeFromIndex:p,overlayRef:J,onSnapPointChange:Oe,direction:A,container:O,snapToSequentialPoint:C});vz({isDisabled:!L||z||!w||D||!b||!M||!T});const{restorePositionSetting:_}=Iz({isOpen:L,modal:w,nested:k??!1,hasBeenOpened:b,preventScrollRestoration:P,noBodyStyles:E});function x(){return(window.innerWidth-bh)/window.innerWidth}function R(_e){var pt,bt;!f&&!r||Y.current&&!Y.current.contains(_e.target)||(se.current=((pt=Y.current)==null?void 0:pt.getBoundingClientRect().height)||0,fe.current=((bt=Y.current)==null?void 0:bt.getBoundingClientRect().width)||0,F(!0),ge.current=new Date,ub()&&window.addEventListener("touchend",()=>he.current=!1,{once:!0}),_e.target.setPointerCapture(_e.pointerId),ke.current=Dt(A)?_e.pageY:_e.pageX)}function B(_e,pt){var bt;let st=_e;const xt=(bt=window.getSelection())==null?void 0:bt.toString(),X=Y.current?ic(Y.current,A):null,oe=new Date;if(st.tagName==="SELECT"||st.hasAttribute("data-vaul-no-drag")||st.closest("[data-vaul-no-drag]"))return!1;if(A==="right"||A==="left")return!0;if(ae.current&&oe.getTime()-ae.current.getTime()<500)return!1;if(X!==null&&(A==="bottom"?X>0:X<0))return!0;if(xt&&xt.length>0)return!1;if(de.current&&oe.getTime()-de.current.getTime()<u&&X===0||pt)return de.current=oe,!1;for(;st;){if(st.scrollHeight>st.clientHeight){if(st.scrollTop!==0)return de.current=new Date,!1;if(st.getAttribute("role")==="dialog")return!0}st=st.parentNode}return!0}function K(_e){if(Y.current&&z){const pt=A==="bottom"||A==="right"?1:-1,bt=(ke.current-(Dt(A)?_e.pageY:_e.pageX))*pt,st=bt>0,xt=r&&!f&&!st;if(xt&&ye===0)return;const X=Math.abs(bt),oe=document.querySelector("[data-vaul-drawer-wrapper]"),Ce=A==="bottom"||A==="top"?se.current:fe.current;let Me=X/Ce;const lt=et(X,st);if(lt!==null&&(Me=lt),xt&&Me>=1||!he.current&&!B(_e.target,st))return;if(Y.current.classList.add(sf),he.current=!0,Ft(Y.current,{transition:"none"}),Ft(J.current,{transition:"none"}),r&&ct({draggedDistance:bt}),st&&!r){const it=Ez(bt),dn=Math.min(it*-1,0)*pt;Ft(Y.current,{transform:Dt(A)?`translate3d(0, ${dn}px, 0)`:`translate3d(${dn}px, 0, 0)`});return}const ut=1-Me;if((Ge||p&&ye===p-1)&&(o==null||o(_e,Me),Ft(J.current,{opacity:`${ut}`,transition:"none"},!0)),oe&&J.current&&i){const it=Math.min(x()+Me*(1-x()),1),dn=8-Me*8,Yt=Math.max(0,14-Me*14);Ft(oe,{borderRadius:`${dn}px`,transform:Dt(A)?`scale(${it}) translate3d(0, ${Yt}px, 0)`:`scale(${it}) translate3d(${Yt}px, 0, 0)`,transition:"none"},!0)}if(!r){const it=X*pt;Ft(Y.current,{transform:Dt(A)?`translate3d(0, ${it}px, 0)`:`translate3d(${it}px, 0, 0)`})}}}ee.useEffect(()=>{window.requestAnimationFrame(()=>{G.current=!0})},[]),ee.useEffect(()=>{var _e;function pt(){if(!Y.current||!M)return;const bt=document.activeElement;if(vh(bt)||Ee.current){var st;const xt=((st=window.visualViewport)==null?void 0:st.height)||0,X=window.innerHeight;let oe=X-xt;const Ce=Y.current.getBoundingClientRect().height||0,Me=Ce>X*.8;Se.current||(Se.current=Ce);const lt=Y.current.getBoundingClientRect().top;if(Math.abs(te.current-oe)>60&&(Ee.current=!Ee.current),r&&r.length>0&&qe&&ye){const ut=qe[ye]||0;oe+=ut}if(te.current=oe,Ce>xt||Ee.current){const ut=Y.current.getBoundingClientRect().height;let it=ut;ut>xt&&(it=xt-(Me?lt:bh)),y?Y.current.style.height=`${ut-Math.max(oe,0)}px`:Y.current.style.height=`${Math.max(it,xt-lt)}px`}else fz()||(Y.current.style.height=`${Se.current}px`);r&&r.length>0&&!Ee.current?Y.current.style.bottom="0px":Y.current.style.bottom=`${Math.max(oe,0)}px`}}return(_e=window.visualViewport)==null||_e.addEventListener("resize",pt),()=>{var bt;return(bt=window.visualViewport)==null?void 0:bt.removeEventListener("resize",pt)}},[ye,r,qe]);function Q(_e){$e(),v==null||v(),_e||I(!1),setTimeout(()=>{r&&Pe(r[0])},Tt.DURATION*1e3)}function ue(){if(!Y.current)return;const _e=document.querySelector("[data-vaul-drawer-wrapper]"),pt=ic(Y.current,A);Ft(Y.current,{transform:"translate3d(0, 0, 0)",transition:`transform ${Tt.DURATION}s cubic-bezier(${Tt.EASE.join(",")})`}),Ft(J.current,{transition:`opacity ${Tt.DURATION}s cubic-bezier(${Tt.EASE.join(",")})`,opacity:"1"}),i&&pt&&pt>0&&L&&Ft(_e,{borderRadius:`${mb}px`,overflow:"hidden",...Dt(A)?{transform:`scale(${x()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${x()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:`${Tt.DURATION}s`,transitionTimingFunction:`cubic-bezier(${Tt.EASE.join(",")})`},!0)}function $e(){!z||!Y.current||(Y.current.classList.remove(sf),he.current=!1,F(!1),ie.current=new Date)}function dt(_e){if(!z||!Y.current)return;Y.current.classList.remove(sf),he.current=!1,F(!1),ie.current=new Date;const pt=ic(Y.current,A);if(!_e||!B(_e.target,!1)||!pt||Number.isNaN(pt)||ge.current===null)return;const bt=ie.current.getTime()-ge.current.getTime(),st=ke.current-(Dt(A)?_e.pageY:_e.pageX),xt=Math.abs(st)/bt;if(xt>.05&&(q(!0),setTimeout(()=>{q(!1)},200)),r){Te({draggedDistance:st*(A==="bottom"||A==="right"?1:-1),closeDrawer:Q,velocity:xt,dismissible:f}),a==null||a(_e,!0);return}if(A==="bottom"||A==="right"?st>0:st<0){ue(),a==null||a(_e,!0);return}if(xt>pb){Q(),a==null||a(_e,!1);return}var X;const oe=Math.min((X=Y.current.getBoundingClientRect().height)!=null?X:0,window.innerHeight);var Ce;const Me=Math.min((Ce=Y.current.getBoundingClientRect().width)!=null?Ce:0,window.innerWidth),lt=A==="left"||A==="right";if(Math.abs(pt)>=(lt?Me:oe)*l){Q(),a==null||a(_e,!1);return}a==null||a(_e,!0),ue()}ee.useEffect(()=>(L&&(Ft(document.documentElement,{scrollBehavior:"auto"}),ae.current=new Date),()=>{Az(document.documentElement,"scrollBehavior")}),[L]);function Xe(_e){const pt=_e?(window.innerWidth-Ya)/window.innerWidth:1,bt=_e?-Ya:0;we.current&&window.clearTimeout(we.current),Ft(Y.current,{transition:`transform ${Tt.DURATION}s cubic-bezier(${Tt.EASE.join(",")})`,transform:Dt(A)?`scale(${pt}) translate3d(0, ${bt}px, 0)`:`scale(${pt}) translate3d(${bt}px, 0, 0)`}),!_e&&Y.current&&(we.current=setTimeout(()=>{const st=ic(Y.current,A);Ft(Y.current,{transition:"none",transform:Dt(A)?`translate3d(0, ${st}px, 0)`:`translate3d(${st}px, 0, 0)`})},500))}function St(_e,pt){if(pt<0)return;const bt=(window.innerWidth-Ya)/window.innerWidth,st=bt+pt*(1-bt),xt=-Ya+pt*Ya;Ft(Y.current,{transform:Dt(A)?`scale(${st}) translate3d(0, ${xt}px, 0)`:`scale(${st}) translate3d(${xt}px, 0, 0)`,transition:"none"})}function ft(_e,pt){const bt=Dt(A)?window.innerHeight:window.innerWidth,st=pt?(bt-Ya)/bt:1,xt=pt?-Ya:0;pt&&Ft(Y.current,{transition:`transform ${Tt.DURATION}s cubic-bezier(${Tt.EASE.join(",")})`,transform:Dt(A)?`scale(${st}) translate3d(0, ${xt}px, 0)`:`scale(${st}) translate3d(${xt}px, 0, 0)`})}return ee.useEffect(()=>{w||window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"})},[w]),ee.createElement(Yu,{defaultOpen:N,onOpenChange:_e=>{!f&&!_e||(_e?S(!0):Q(!0),I(_e))},open:L},ee.createElement(cb.Provider,{value:{activeSnapPoint:Le,snapPoints:r,setActiveSnapPoint:Pe,drawerRef:Y,overlayRef:J,onOpenChange:e,onPress:R,onRelease:dt,onDrag:K,dismissible:f,shouldAnimate:G,handleOnly:d,isOpen:L,isDragging:z,shouldFade:Ge,closeDrawer:Q,onNestedDrag:St,onNestedOpenChange:Xe,onNestedRelease:ft,keyboardIsOpen:Ee,modal:w,snapPointsOffset:qe,activeSnapPointIndex:ye,direction:A,shouldScaleBackground:i,setBackgroundColorOnScale:s,noBodyStyles:E,container:O,autoFocus:W}},t))}const vb=ee.forwardRef(function({...n},e){const{overlayRef:t,snapPoints:o,onRelease:a,shouldFade:r,isOpen:i,modal:s,shouldAnimate:l}=Yi(),u=fb(e,t),f=o&&o.length>0;if(!s)return null;const d=ee.useCallback(p=>a(p),[a]);return ee.createElement(Wi,{onMouseUp:d,ref:u,"data-vaul-overlay":"","data-vaul-snap-points":i&&f?"true":"false","data-vaul-snap-points-overlay":i&&r?"true":"false","data-vaul-animate":l!=null&&l.current?"true":"false",...n})});vb.displayName="Drawer.Overlay";const bb=ee.forwardRef(function({onPointerDownOutside:n,style:e,onOpenAutoFocus:t,...o},a){const{drawerRef:r,onPress:i,onRelease:s,onDrag:l,keyboardIsOpen:u,snapPointsOffset:f,activeSnapPointIndex:d,modal:p,isOpen:m,direction:g,snapPoints:y,container:w,handleOnly:v,shouldAnimate:k,autoFocus:E}=Yi(),[A,N]=ee.useState(!1),T=fb(a,r),C=ee.useRef(null),P=ee.useRef(null),M=ee.useRef(!1),U=y&&y.length>0;zz();const O=(V,j,L=0)=>{if(M.current)return!0;const I=Math.abs(V.y),b=Math.abs(V.x),S=b>I,z=["bottom","right"].includes(j)?1:-1;if(j==="left"||j==="right"){if(!(V.x*z<0)&&b>=0&&b<=L)return S}else if(!(V.y*z<0)&&I>=0&&I<=L)return!S;return M.current=!0,!0};ee.useEffect(()=>{U&&window.requestAnimationFrame(()=>{N(!0)})},[]);function W(V){C.current=null,M.current=!1,s(V)}return ee.createElement(qi,{"data-vaul-drawer-direction":g,"data-vaul-drawer":"","data-vaul-delayed-snap-points":A?"true":"false","data-vaul-snap-points":m&&U?"true":"false","data-vaul-custom-container":w?"true":"false","data-vaul-animate":k!=null&&k.current?"true":"false",...o,ref:T,style:f&&f.length>0?{"--snap-point-height":`${f[d??0]}px`,...e}:e,onPointerDown:V=>{v||(o.onPointerDown==null||o.onPointerDown.call(o,V),C.current={x:V.pageX,y:V.pageY},i(V))},onOpenAutoFocus:V=>{t==null||t(V),E||V.preventDefault()},onPointerDownOutside:V=>{if(n==null||n(V),!p||V.defaultPrevented){V.preventDefault();return}u.current&&(u.current=!1)},onFocusOutside:V=>{if(!p){V.preventDefault();return}},onPointerMove:V=>{if(P.current=V,v||(o.onPointerMove==null||o.onPointerMove.call(o,V),!C.current))return;const j=V.pageY-C.current.y,L=V.pageX-C.current.x,I=V.pointerType==="touch"?10:2;O({x:L,y:j},g,I)?l(V):(Math.abs(L)>I||Math.abs(j)>I)&&(C.current=null)},onPointerUp:V=>{o.onPointerUp==null||o.onPointerUp.call(o,V),C.current=null,M.current=!1,s(V)},onPointerOut:V=>{o.onPointerOut==null||o.onPointerOut.call(o,V),W(P.current)},onContextMenu:V=>{o.onContextMenu==null||o.onContextMenu.call(o,V),P.current&&W(P.current)}})});bb.displayName="Drawer.Content";const Lz=250,Mz=120,kb=ee.forwardRef(function({preventCycle:n=!1,children:e,...t},o){const{closeDrawer:a,isDragging:r,snapPoints:i,activeSnapPoint:s,setActiveSnapPoint:l,dismissible:u,handleOnly:f,isOpen:d,onPress:p,onDrag:m}=Yi(),g=ee.useRef(null),y=ee.useRef(!1);function w(){if(y.current){E();return}window.setTimeout(()=>{v()},Mz)}function v(){if(r||n||y.current){E();return}if(E(),!i||i.length===0){u||a();return}if(s===i[i.length-1]&&u){a();return}const N=i.findIndex(C=>C===s);if(N===-1)return;const T=i[N+1];l(T)}function k(){g.current=window.setTimeout(()=>{y.current=!0},Lz)}function E(){g.current&&window.clearTimeout(g.current),y.current=!1}return ee.createElement("div",{onClick:w,onPointerCancel:E,onPointerDown:A=>{f&&p(A),k()},onPointerMove:A=>{f&&m(A)},ref:o,"data-vaul-drawer-visible":d?"true":"false","data-vaul-handle":"","aria-hidden":"true",...t},ee.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},e))});kb.displayName="Drawer.Handle";function Dz({onDrag:n,onOpenChange:e,open:t,...o}){const{onNestedDrag:a,onNestedOpenChange:r,onNestedRelease:i}=Yi();if(!a)throw new Error("Drawer.NestedRoot must be placed in another drawer");return ee.createElement(wb,{nested:!0,open:t,onClose:()=>{r(!1)},onDrag:(s,l)=>{a(s,l),n==null||n(s,l)},onOpenChange:s=>{s&&r(s),e==null||e(s)},onRelease:i,...o})}function _z(n){const e=Yi(),{container:t=e.container,...o}=n;return ee.createElement(Ku,{container:t,...o})}const lo={Root:wb,NestedRoot:Dz,Content:bb,Overlay:vb,Trigger:_p,Portal:_z,Handle:kb,Close:Rl,Title:Hi,Description:$i},Ht=({shouldScaleBackground:n=!0,open:e,onOpenChange:t,...o})=>{const[a,r]=h.useState(e??!1),i=h.useMemo(()=>`drawer-${ea()}`,[]);return h.useEffect(()=>{e?Gt.register(i,()=>{t==null||t(!1)}):Gt.unregister(i)},[e]),h.useEffect(()=>{e===void 0&&(a?Gt.register(i,()=>{r(!1)}):Gt.unregister(i))},[a]),c.jsx(lo.Root,{shouldScaleBackground:n,open:e??a,onOpenChange:t??r,...o})};Ht.displayName="Drawer";const Sb=lo.Trigger,Fz=lo.Portal,gV=lo.Close,Wn=h.forwardRef(({className:n,...e},t)=>c.jsx(lo.Overlay,{ref:t,className:ne("fixed inset-0 z-50 bg-black/50",n),...e}));Wn.displayName=lo.Overlay.displayName;const $t=h.forwardRef(({className:n,children:e,hideOverlay:t=!1,...o},a)=>c.jsxs(Fz,{children:[!t&&c.jsx(Wn,{}),c.jsxs(lo.Content,{ref:a,className:ne("fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-2xl border-t bg-background",n),style:{paddingBottom:"env(safe-area-inset-bottom)"},onOpenAutoFocus:r=>r.preventDefault(),...o,children:[c.jsx("div",{className:"mx-auto mb-2 mt-4 h-2 w-[100px] rounded-full bg-muted"}),e]})]}));$t.displayName="DrawerContent";const Ki=({className:n,...e})=>c.jsx("div",{className:ne("grid gap-1.5 p-4 text-center sm:text-left",n),...e});Ki.displayName="DrawerHeader";const xb=({className:n,...e})=>c.jsx("div",{className:ne("mt-auto flex flex-col gap-2 p-4",n),...e});xb.displayName="DrawerFooter";const Gi=h.forwardRef(({className:n,...e},t)=>c.jsx(lo.Title,{ref:t,className:ne("text-lg font-semibold leading-none tracking-tight",n),...e}));Gi.displayName=lo.Title.displayName;const Op=h.forwardRef(({className:n,...e},t)=>c.jsx(lo.Description,{ref:t,className:ne("text-sm text-muted-foreground",n),...e}));Op.displayName=lo.Description.displayName;const Ab=h.createContext(void 0),Ct=()=>{const n=h.useContext(Ab);if(!n)throw new Error("useScreenSize must be used within a ScreenSizeProvider");return n};function Oz({children:n}){const e=h.useMemo(()=>window.innerWidth<=768,[]),t=h.useMemo(()=>window.innerWidth>=1280,[]);return c.jsx(Ab.Provider,{value:{isSmallScreen:e,isLargeScreen:t},children:n})}function Vy(n,e){if(typeof n=="function")return n(e);n!=null&&(n.current=e)}function Uz(...n){return e=>{let t=!1;const o=n.map(a=>{const r=Vy(a,e);return!t&&typeof r=="function"&&(t=!0),r});if(t)return()=>{for(let a=0;a<o.length;a++){const r=o[a];typeof r=="function"?r():Vy(n[a],null)}}}}function Na(n){const e=Vz(n),t=h.forwardRef((o,a)=>{const{children:r,...i}=o,s=h.Children.toArray(r),l=s.find(qz);if(l){const u=l.props.children,f=s.map(d=>d===l?h.Children.count(u)>1?h.Children.only(null):h.isValidElement(u)?u.props.children:null:d);return c.jsx(e,{...i,ref:a,children:h.isValidElement(u)?h.cloneElement(u,void 0,f):null})}return c.jsx(e,{...i,ref:a,children:r})});return t.displayName=`${n}.Slot`,t}var Bz=Na("Slot");function Vz(n){const e=h.forwardRef((t,o)=>{const{children:a,...r}=t;if(h.isValidElement(a)){const i=$z(a),s=Hz(r,a.props);return a.type!==h.Fragment&&(s.ref=o?Uz(o,i):i),h.cloneElement(a,s)}return h.Children.count(a)>1?h.Children.only(null):null});return e.displayName=`${n}.SlotClone`,e}var Wz=Symbol("radix.slottable");function qz(n){return h.isValidElement(n)&&typeof n.type=="function"&&"__radixId"in n.type&&n.type.__radixId===Wz}function Hz(n,e){const t={...e};for(const o in e){const a=n[o],r=e[o];/^on[A-Z]/.test(o)?a&&r?t[o]=(...s)=>{const l=r(...s);return a(...s),l}:a&&(t[o]=a):o==="style"?t[o]={...a,...r}:o==="className"&&(t[o]=[a,r].filter(Boolean).join(" "))}return{...n,...t}}function $z(n){var o,a;let e=(o=Object.getOwnPropertyDescriptor(n.props,"ref"))==null?void 0:o.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=(a=Object.getOwnPropertyDescriptor(n,"ref"))==null?void 0:a.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}const Wy=n=>typeof n=="boolean"?`${n}`:n===0?"0":n,qy=lw,Gu=(n,e)=>t=>{var o;if((e==null?void 0:e.variants)==null)return qy(n,t==null?void 0:t.class,t==null?void 0:t.className);const{variants:a,defaultVariants:r}=e,i=Object.keys(a).map(u=>{const f=t==null?void 0:t[u],d=r==null?void 0:r[u];if(f===null)return null;const p=Wy(f)||Wy(d);return a[u][p]}),s=t&&Object.entries(t).reduce((u,f)=>{let[d,p]=f;return p===void 0||(u[d]=p),u},{}),l=e==null||(o=e.compoundVariants)===null||o===void 0?void 0:o.reduce((u,f)=>{let{class:d,className:p,...m}=f;return Object.entries(m).every(g=>{let[y,w]=g;return Array.isArray(w)?w.includes({...r,...s}[y]):{...r,...s}[y]===w})?[...u,d,p]:u},[]);return qy(n,i,l,t==null?void 0:t.class,t==null?void 0:t.className)},Up=Gu("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary-hover",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-border/30 bg-background/50 hover:bg-accent/40 hover:border-primary/30 backdrop-blur-sm",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80","secondary-2":"bg-secondary text-secondary-foreground hover:bg-primary hover:text-primary-foreground",ghost:"clickable hover:bg-muted/40 hover:text-accent-foreground","ghost-destructive":"cursor-pointer hover:bg-destructive/20 text-destructive hover:text-destructive",link:"text-foreground underline-offset-4 hover:underline"},size:{default:"h-10 px-5 py-2.5",sm:"h-8 rounded-lg px-3 text-xs",lg:"h-12 rounded-xl px-8 text-base",icon:"h-10 w-10 shrink-0","titlebar-icon":"h-10 w-10 shrink-0 rounded-xl [&_svg]:size-5"}},defaultVariants:{variant:"default",size:"default"}}),xe=h.forwardRef(({className:n,variant:e,size:t,asChild:o=!1,...a},r)=>{const i=o?Bz:"button";return c.jsx(i,{className:ne(Up({variant:e,size:t,className:n})),ref:r,...a})});xe.displayName="Button";var Yz="Separator",Hy="horizontal",Kz=["horizontal","vertical"],Eb=h.forwardRef((n,e)=>{const{decorative:t,orientation:o=Hy,...a}=n,r=Gz(o)?o:Hy,s=t?{role:"none"}:{"aria-orientation":r==="vertical"?r:void 0,role:"separator"};return c.jsx(vt.div,{"data-orientation":r,...s,...a,ref:e})});Eb.displayName=Yz;function Gz(n){return Kz.includes(n)}var Rb=Eb;const Zs=h.forwardRef(({className:n,orientation:e="horizontal",decorative:t=!0,...o},a)=>c.jsx(Rb,{ref:a,decorative:t,orientation:e,className:ne("shrink-0 bg-border/60",e==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",n),...o}));Zs.displayName=Rb.displayName;const Jz=Gu("inline-flex items-center rounded-lg border px-2.5 py-0.5 text-xs font-semibold transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary-hover",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground hover:bg-accent"}},defaultVariants:{variant:"default"}});function Vo({className:n,variant:e,...t}){return c.jsx("div",{className:ne(Jz({variant:e}),n),...t})}function Zz({signerType:n}){const{t:e}=Ae();if(n==="nip-07")return c.jsx(Vo,{className:"bg-green-400 px-1 py-0 hover:bg-green-400",children:e("Extension")});if(n==="bunker")return c.jsx(Vo,{className:"bg-blue-400 px-1 py-0 hover:bg-blue-400",children:e("Remote")});if(n==="ncryptsec")return c.jsx(Vo,{className:"bg-violet-400 px-1 py-0 hover:bg-violet-400",children:e("Encrypted Key")});if(n==="nsec")return c.jsx(Vo,{className:"bg-orange-400 px-1 py-0 hover:bg-orange-400",children:e("Private Key")});if(n==="npub")return c.jsx(Vo,{className:"bg-yellow-400 px-1 py-0 hover:bg-yellow-400",children:"NPUB"})}const Qz=["top","right","bottom","left"],Ta=Math.min,Nn=Math.max,au=Math.round,sc=Math.floor,Eo=n=>({x:n,y:n}),Xz={left:"right",right:"left",bottom:"top",top:"bottom"},eI={start:"end",end:"start"};function kh(n,e,t){return Nn(n,Ta(e,t))}function Jo(n,e){return typeof n=="function"?n(e):n}function Zo(n){return n.split("-")[0]}function Ji(n){return n.split("-")[1]}function Bp(n){return n==="x"?"y":"x"}function Vp(n){return n==="y"?"height":"width"}function ja(n){return["top","bottom"].includes(Zo(n))?"y":"x"}function Wp(n){return Bp(ja(n))}function tI(n,e,t){t===void 0&&(t=!1);const o=Ji(n),a=Wp(n),r=Vp(a);let i=a==="x"?o===(t?"end":"start")?"right":"left":o==="start"?"bottom":"top";return e.reference[r]>e.floating[r]&&(i=ru(i)),[i,ru(i)]}function nI(n){const e=ru(n);return[Sh(n),e,Sh(e)]}function Sh(n){return n.replace(/start|end/g,e=>eI[e])}function oI(n,e,t){const o=["left","right"],a=["right","left"],r=["top","bottom"],i=["bottom","top"];switch(n){case"top":case"bottom":return t?e?a:o:e?o:a;case"left":case"right":return e?r:i;default:return[]}}function aI(n,e,t,o){const a=Ji(n);let r=oI(Zo(n),t==="start",o);return a&&(r=r.map(i=>i+"-"+a),e&&(r=r.concat(r.map(Sh)))),r}function ru(n){return n.replace(/left|right|bottom|top/g,e=>Xz[e])}function rI(n){return{top:0,right:0,bottom:0,left:0,...n}}function Cb(n){return typeof n!="number"?rI(n):{top:n,right:n,bottom:n,left:n}}function iu(n){const{x:e,y:t,width:o,height:a}=n;return{width:o,height:a,top:t,left:e,right:e+o,bottom:t+a,x:e,y:t}}function $y(n,e,t){let{reference:o,floating:a}=n;const r=ja(e),i=Wp(e),s=Vp(i),l=Zo(e),u=r==="y",f=o.x+o.width/2-a.width/2,d=o.y+o.height/2-a.height/2,p=o[s]/2-a[s]/2;let m;switch(l){case"top":m={x:f,y:o.y-a.height};break;case"bottom":m={x:f,y:o.y+o.height};break;case"right":m={x:o.x+o.width,y:d};break;case"left":m={x:o.x-a.width,y:d};break;default:m={x:o.x,y:o.y}}switch(Ji(e)){case"start":m[i]-=p*(t&&u?-1:1);break;case"end":m[i]+=p*(t&&u?-1:1);break}return m}const iI=async(n,e,t)=>{const{placement:o="bottom",strategy:a="absolute",middleware:r=[],platform:i}=t,s=r.filter(Boolean),l=await(i.isRTL==null?void 0:i.isRTL(e));let u=await i.getElementRects({reference:n,floating:e,strategy:a}),{x:f,y:d}=$y(u,o,l),p=o,m={},g=0;for(let y=0;y<s.length;y++){const{name:w,fn:v}=s[y],{x:k,y:E,data:A,reset:N}=await v({x:f,y:d,initialPlacement:o,placement:p,strategy:a,middlewareData:m,rects:u,platform:i,elements:{reference:n,floating:e}});f=k??f,d=E??d,m={...m,[w]:{...m[w],...A}},N&&g<=50&&(g++,typeof N=="object"&&(N.placement&&(p=N.placement),N.rects&&(u=N.rects===!0?await i.getElementRects({reference:n,floating:e,strategy:a}):N.rects),{x:f,y:d}=$y(u,p,l)),y=-1)}return{x:f,y:d,placement:p,strategy:a,middlewareData:m}};async function Qs(n,e){var t;e===void 0&&(e={});const{x:o,y:a,platform:r,rects:i,elements:s,strategy:l}=n,{boundary:u="clippingAncestors",rootBoundary:f="viewport",elementContext:d="floating",altBoundary:p=!1,padding:m=0}=Jo(e,n),g=Cb(m),w=s[p?d==="floating"?"reference":"floating":d],v=iu(await r.getClippingRect({element:(t=await(r.isElement==null?void 0:r.isElement(w)))==null||t?w:w.contextElement||await(r.getDocumentElement==null?void 0:r.getDocumentElement(s.floating)),boundary:u,rootBoundary:f,strategy:l})),k=d==="floating"?{x:o,y:a,width:i.floating.width,height:i.floating.height}:i.reference,E=await(r.getOffsetParent==null?void 0:r.getOffsetParent(s.floating)),A=await(r.isElement==null?void 0:r.isElement(E))?await(r.getScale==null?void 0:r.getScale(E))||{x:1,y:1}:{x:1,y:1},N=iu(r.convertOffsetParentRelativeRectToViewportRelativeRect?await r.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:k,offsetParent:E,strategy:l}):k);return{top:(v.top-N.top+g.top)/A.y,bottom:(N.bottom-v.bottom+g.bottom)/A.y,left:(v.left-N.left+g.left)/A.x,right:(N.right-v.right+g.right)/A.x}}const sI=n=>({name:"arrow",options:n,async fn(e){const{x:t,y:o,placement:a,rects:r,platform:i,elements:s,middlewareData:l}=e,{element:u,padding:f=0}=Jo(n,e)||{};if(u==null)return{};const d=Cb(f),p={x:t,y:o},m=Wp(a),g=Vp(m),y=await i.getDimensions(u),w=m==="y",v=w?"top":"left",k=w?"bottom":"right",E=w?"clientHeight":"clientWidth",A=r.reference[g]+r.reference[m]-p[m]-r.floating[g],N=p[m]-r.reference[m],T=await(i.getOffsetParent==null?void 0:i.getOffsetParent(u));let C=T?T[E]:0;(!C||!await(i.isElement==null?void 0:i.isElement(T)))&&(C=s.floating[E]||r.floating[g]);const P=A/2-N/2,M=C/2-y[g]/2-1,U=Ta(d[v],M),O=Ta(d[k],M),W=U,V=C-y[g]-O,j=C/2-y[g]/2+P,L=kh(W,j,V),I=!l.arrow&&Ji(a)!=null&&j!==L&&r.reference[g]/2-(j<W?U:O)-y[g]/2<0,b=I?j<W?j-W:j-V:0;return{[m]:p[m]+b,data:{[m]:L,centerOffset:j-L-b,...I&&{alignmentOffset:b}},reset:I}}}),lI=function(n){return n===void 0&&(n={}),{name:"flip",options:n,async fn(e){var t,o;const{placement:a,middlewareData:r,rects:i,initialPlacement:s,platform:l,elements:u}=e,{mainAxis:f=!0,crossAxis:d=!0,fallbackPlacements:p,fallbackStrategy:m="bestFit",fallbackAxisSideDirection:g="none",flipAlignment:y=!0,...w}=Jo(n,e);if((t=r.arrow)!=null&&t.alignmentOffset)return{};const v=Zo(a),k=ja(s),E=Zo(s)===s,A=await(l.isRTL==null?void 0:l.isRTL(u.floating)),N=p||(E||!y?[ru(s)]:nI(s)),T=g!=="none";!p&&T&&N.push(...aI(s,y,g,A));const C=[s,...N],P=await Qs(e,w),M=[];let U=((o=r.flip)==null?void 0:o.overflows)||[];if(f&&M.push(P[v]),d){const j=tI(a,i,A);M.push(P[j[0]],P[j[1]])}if(U=[...U,{placement:a,overflows:M}],!M.every(j=>j<=0)){var O,W;const j=(((O=r.flip)==null?void 0:O.index)||0)+1,L=C[j];if(L)return{data:{index:j,overflows:U},reset:{placement:L}};let I=(W=U.filter(b=>b.overflows[0]<=0).sort((b,S)=>b.overflows[1]-S.overflows[1])[0])==null?void 0:W.placement;if(!I)switch(m){case"bestFit":{var V;const b=(V=U.filter(S=>{if(T){const z=ja(S.placement);return z===k||z==="y"}return!0}).map(S=>[S.placement,S.overflows.filter(z=>z>0).reduce((z,F)=>z+F,0)]).sort((S,z)=>S[1]-z[1])[0])==null?void 0:V[0];b&&(I=b);break}case"initialPlacement":I=s;break}if(a!==I)return{reset:{placement:I}}}return{}}}};function Yy(n,e){return{top:n.top-e.height,right:n.right-e.width,bottom:n.bottom-e.height,left:n.left-e.width}}function Ky(n){return Qz.some(e=>n[e]>=0)}const cI=function(n){return n===void 0&&(n={}),{name:"hide",options:n,async fn(e){const{rects:t}=e,{strategy:o="referenceHidden",...a}=Jo(n,e);switch(o){case"referenceHidden":{const r=await Qs(e,{...a,elementContext:"reference"}),i=Yy(r,t.reference);return{data:{referenceHiddenOffsets:i,referenceHidden:Ky(i)}}}case"escaped":{const r=await Qs(e,{...a,altBoundary:!0}),i=Yy(r,t.floating);return{data:{escapedOffsets:i,escaped:Ky(i)}}}default:return{}}}}};async function uI(n,e){const{placement:t,platform:o,elements:a}=n,r=await(o.isRTL==null?void 0:o.isRTL(a.floating)),i=Zo(t),s=Ji(t),l=ja(t)==="y",u=["left","top"].includes(i)?-1:1,f=r&&l?-1:1,d=Jo(e,n);let{mainAxis:p,crossAxis:m,alignmentAxis:g}=typeof d=="number"?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof g=="number"&&(m=s==="end"?g*-1:g),l?{x:m*f,y:p*u}:{x:p*u,y:m*f}}const dI=function(n){return n===void 0&&(n=0),{name:"offset",options:n,async fn(e){var t,o;const{x:a,y:r,placement:i,middlewareData:s}=e,l=await uI(e,n);return i===((t=s.offset)==null?void 0:t.placement)&&(o=s.arrow)!=null&&o.alignmentOffset?{}:{x:a+l.x,y:r+l.y,data:{...l,placement:i}}}}},fI=function(n){return n===void 0&&(n={}),{name:"shift",options:n,async fn(e){const{x:t,y:o,placement:a}=e,{mainAxis:r=!0,crossAxis:i=!1,limiter:s={fn:w=>{let{x:v,y:k}=w;return{x:v,y:k}}},...l}=Jo(n,e),u={x:t,y:o},f=await Qs(e,l),d=ja(Zo(a)),p=Bp(d);let m=u[p],g=u[d];if(r){const w=p==="y"?"top":"left",v=p==="y"?"bottom":"right",k=m+f[w],E=m-f[v];m=kh(k,m,E)}if(i){const w=d==="y"?"top":"left",v=d==="y"?"bottom":"right",k=g+f[w],E=g-f[v];g=kh(k,g,E)}const y=s.fn({...e,[p]:m,[d]:g});return{...y,data:{x:y.x-t,y:y.y-o,enabled:{[p]:r,[d]:i}}}}}},hI=function(n){return n===void 0&&(n={}),{options:n,fn(e){const{x:t,y:o,placement:a,rects:r,middlewareData:i}=e,{offset:s=0,mainAxis:l=!0,crossAxis:u=!0}=Jo(n,e),f={x:t,y:o},d=ja(a),p=Bp(d);let m=f[p],g=f[d];const y=Jo(s,e),w=typeof y=="number"?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(l){const E=p==="y"?"height":"width",A=r.reference[p]-r.floating[E]+w.mainAxis,N=r.reference[p]+r.reference[E]-w.mainAxis;m<A?m=A:m>N&&(m=N)}if(u){var v,k;const E=p==="y"?"width":"height",A=["top","left"].includes(Zo(a)),N=r.reference[d]-r.floating[E]+(A&&((v=i.offset)==null?void 0:v[d])||0)+(A?0:w.crossAxis),T=r.reference[d]+r.reference[E]+(A?0:((k=i.offset)==null?void 0:k[d])||0)-(A?w.crossAxis:0);g<N?g=N:g>T&&(g=T)}return{[p]:m,[d]:g}}}},pI=function(n){return n===void 0&&(n={}),{name:"size",options:n,async fn(e){var t,o;const{placement:a,rects:r,platform:i,elements:s}=e,{apply:l=()=>{},...u}=Jo(n,e),f=await Qs(e,u),d=Zo(a),p=Ji(a),m=ja(a)==="y",{width:g,height:y}=r.floating;let w,v;d==="top"||d==="bottom"?(w=d,v=p===(await(i.isRTL==null?void 0:i.isRTL(s.floating))?"start":"end")?"left":"right"):(v=d,w=p==="end"?"top":"bottom");const k=y-f.top-f.bottom,E=g-f.left-f.right,A=Ta(y-f[w],k),N=Ta(g-f[v],E),T=!e.middlewareData.shift;let C=A,P=N;if((t=e.middlewareData.shift)!=null&&t.enabled.x&&(P=E),(o=e.middlewareData.shift)!=null&&o.enabled.y&&(C=k),T&&!p){const U=Nn(f.left,0),O=Nn(f.right,0),W=Nn(f.top,0),V=Nn(f.bottom,0);m?P=g-2*(U!==0||O!==0?U+O:Nn(f.left,f.right)):C=y-2*(W!==0||V!==0?W+V:Nn(f.top,f.bottom))}await l({...e,availableWidth:P,availableHeight:C});const M=await i.getDimensions(s.floating);return g!==M.width||y!==M.height?{reset:{rects:!0}}:{}}}};function Ju(){return typeof window<"u"}function Zi(n){return Pb(n)?(n.nodeName||"").toLowerCase():"#document"}function Ln(n){var e;return(n==null||(e=n.ownerDocument)==null?void 0:e.defaultView)||window}function zo(n){var e;return(e=(Pb(n)?n.ownerDocument:n.document)||window.document)==null?void 0:e.documentElement}function Pb(n){return Ju()?n instanceof Node||n instanceof Ln(n).Node:!1}function no(n){return Ju()?n instanceof Element||n instanceof Ln(n).Element:!1}function To(n){return Ju()?n instanceof HTMLElement||n instanceof Ln(n).HTMLElement:!1}function Gy(n){return!Ju()||typeof ShadowRoot>"u"?!1:n instanceof ShadowRoot||n instanceof Ln(n).ShadowRoot}function Cl(n){const{overflow:e,overflowX:t,overflowY:o,display:a}=oo(n);return/auto|scroll|overlay|hidden|clip/.test(e+o+t)&&!["inline","contents"].includes(a)}function mI(n){return["table","td","th"].includes(Zi(n))}function Zu(n){return[":popover-open",":modal"].some(e=>{try{return n.matches(e)}catch{return!1}})}function qp(n){const e=Hp(),t=no(n)?oo(n):n;return t.transform!=="none"||t.perspective!=="none"||(t.containerType?t.containerType!=="normal":!1)||!e&&(t.backdropFilter?t.backdropFilter!=="none":!1)||!e&&(t.filter?t.filter!=="none":!1)||["transform","perspective","filter"].some(o=>(t.willChange||"").includes(o))||["paint","layout","strict","content"].some(o=>(t.contain||"").includes(o))}function gI(n){let e=za(n);for(;To(e)&&!Li(e);){if(qp(e))return e;if(Zu(e))return null;e=za(e)}return null}function Hp(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Li(n){return["html","body","#document"].includes(Zi(n))}function oo(n){return Ln(n).getComputedStyle(n)}function Qu(n){return no(n)?{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}:{scrollLeft:n.scrollX,scrollTop:n.scrollY}}function za(n){if(Zi(n)==="html")return n;const e=n.assignedSlot||n.parentNode||Gy(n)&&n.host||zo(n);return Gy(e)?e.host:e}function Nb(n){const e=za(n);return Li(e)?n.ownerDocument?n.ownerDocument.body:n.body:To(e)&&Cl(e)?e:Nb(e)}function Xs(n,e,t){var o;e===void 0&&(e=[]),t===void 0&&(t=!0);const a=Nb(n),r=a===((o=n.ownerDocument)==null?void 0:o.body),i=Ln(a);if(r){const s=xh(i);return e.concat(i,i.visualViewport||[],Cl(a)?a:[],s&&t?Xs(s):[])}return e.concat(a,Xs(a,[],t))}function xh(n){return n.parent&&Object.getPrototypeOf(n.parent)?n.frameElement:null}function Tb(n){const e=oo(n);let t=parseFloat(e.width)||0,o=parseFloat(e.height)||0;const a=To(n),r=a?n.offsetWidth:t,i=a?n.offsetHeight:o,s=au(t)!==r||au(o)!==i;return s&&(t=r,o=i),{width:t,height:o,$:s}}function $p(n){return no(n)?n:n.contextElement}function gi(n){const e=$p(n);if(!To(e))return Eo(1);const t=e.getBoundingClientRect(),{width:o,height:a,$:r}=Tb(e);let i=(r?au(t.width):t.width)/o,s=(r?au(t.height):t.height)/a;return(!i||!Number.isFinite(i))&&(i=1),(!s||!Number.isFinite(s))&&(s=1),{x:i,y:s}}const yI=Eo(0);function jb(n){const e=Ln(n);return!Hp()||!e.visualViewport?yI:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function wI(n,e,t){return e===void 0&&(e=!1),!t||e&&t!==Ln(n)?!1:e}function br(n,e,t,o){e===void 0&&(e=!1),t===void 0&&(t=!1);const a=n.getBoundingClientRect(),r=$p(n);let i=Eo(1);e&&(o?no(o)&&(i=gi(o)):i=gi(n));const s=wI(r,t,o)?jb(r):Eo(0);let l=(a.left+s.x)/i.x,u=(a.top+s.y)/i.y,f=a.width/i.x,d=a.height/i.y;if(r){const p=Ln(r),m=o&&no(o)?Ln(o):o;let g=p,y=xh(g);for(;y&&o&&m!==g;){const w=gi(y),v=y.getBoundingClientRect(),k=oo(y),E=v.left+(y.clientLeft+parseFloat(k.paddingLeft))*w.x,A=v.top+(y.clientTop+parseFloat(k.paddingTop))*w.y;l*=w.x,u*=w.y,f*=w.x,d*=w.y,l+=E,u+=A,g=Ln(y),y=xh(g)}}return iu({width:f,height:d,x:l,y:u})}function Yp(n,e){const t=Qu(n).scrollLeft;return e?e.left+t:br(zo(n)).left+t}function zb(n,e,t){t===void 0&&(t=!1);const o=n.getBoundingClientRect(),a=o.left+e.scrollLeft-(t?0:Yp(n,o)),r=o.top+e.scrollTop;return{x:a,y:r}}function vI(n){let{elements:e,rect:t,offsetParent:o,strategy:a}=n;const r=a==="fixed",i=zo(o),s=e?Zu(e.floating):!1;if(o===i||s&&r)return t;let l={scrollLeft:0,scrollTop:0},u=Eo(1);const f=Eo(0),d=To(o);if((d||!d&&!r)&&((Zi(o)!=="body"||Cl(i))&&(l=Qu(o)),To(o))){const m=br(o);u=gi(o),f.x=m.x+o.clientLeft,f.y=m.y+o.clientTop}const p=i&&!d&&!r?zb(i,l,!0):Eo(0);return{width:t.width*u.x,height:t.height*u.y,x:t.x*u.x-l.scrollLeft*u.x+f.x+p.x,y:t.y*u.y-l.scrollTop*u.y+f.y+p.y}}function bI(n){return Array.from(n.getClientRects())}function kI(n){const e=zo(n),t=Qu(n),o=n.ownerDocument.body,a=Nn(e.scrollWidth,e.clientWidth,o.scrollWidth,o.clientWidth),r=Nn(e.scrollHeight,e.clientHeight,o.scrollHeight,o.clientHeight);let i=-t.scrollLeft+Yp(n);const s=-t.scrollTop;return oo(o).direction==="rtl"&&(i+=Nn(e.clientWidth,o.clientWidth)-a),{width:a,height:r,x:i,y:s}}function SI(n,e){const t=Ln(n),o=zo(n),a=t.visualViewport;let r=o.clientWidth,i=o.clientHeight,s=0,l=0;if(a){r=a.width,i=a.height;const u=Hp();(!u||u&&e==="fixed")&&(s=a.offsetLeft,l=a.offsetTop)}return{width:r,height:i,x:s,y:l}}function xI(n,e){const t=br(n,!0,e==="fixed"),o=t.top+n.clientTop,a=t.left+n.clientLeft,r=To(n)?gi(n):Eo(1),i=n.clientWidth*r.x,s=n.clientHeight*r.y,l=a*r.x,u=o*r.y;return{width:i,height:s,x:l,y:u}}function Jy(n,e,t){let o;if(e==="viewport")o=SI(n,t);else if(e==="document")o=kI(zo(n));else if(no(e))o=xI(e,t);else{const a=jb(n);o={x:e.x-a.x,y:e.y-a.y,width:e.width,height:e.height}}return iu(o)}function Ib(n,e){const t=za(n);return t===e||!no(t)||Li(t)?!1:oo(t).position==="fixed"||Ib(t,e)}function AI(n,e){const t=e.get(n);if(t)return t;let o=Xs(n,[],!1).filter(s=>no(s)&&Zi(s)!=="body"),a=null;const r=oo(n).position==="fixed";let i=r?za(n):n;for(;no(i)&&!Li(i);){const s=oo(i),l=qp(i);!l&&s.position==="fixed"&&(a=null),(r?!l&&!a:!l&&s.position==="static"&&!!a&&["absolute","fixed"].includes(a.position)||Cl(i)&&!l&&Ib(n,i))?o=o.filter(f=>f!==i):a=s,i=za(i)}return e.set(n,o),o}function EI(n){let{element:e,boundary:t,rootBoundary:o,strategy:a}=n;const i=[...t==="clippingAncestors"?Zu(e)?[]:AI(e,this._c):[].concat(t),o],s=i[0],l=i.reduce((u,f)=>{const d=Jy(e,f,a);return u.top=Nn(d.top,u.top),u.right=Ta(d.right,u.right),u.bottom=Ta(d.bottom,u.bottom),u.left=Nn(d.left,u.left),u},Jy(e,s,a));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function RI(n){const{width:e,height:t}=Tb(n);return{width:e,height:t}}function CI(n,e,t){const o=To(e),a=zo(e),r=t==="fixed",i=br(n,!0,r,e);let s={scrollLeft:0,scrollTop:0};const l=Eo(0);if(o||!o&&!r)if((Zi(e)!=="body"||Cl(a))&&(s=Qu(e)),o){const p=br(e,!0,r,e);l.x=p.x+e.clientLeft,l.y=p.y+e.clientTop}else a&&(l.x=Yp(a));const u=a&&!o&&!r?zb(a,s):Eo(0),f=i.left+s.scrollLeft-l.x-u.x,d=i.top+s.scrollTop-l.y-u.y;return{x:f,y:d,width:i.width,height:i.height}}function lf(n){return oo(n).position==="static"}function Zy(n,e){if(!To(n)||oo(n).position==="fixed")return null;if(e)return e(n);let t=n.offsetParent;return zo(n)===t&&(t=t.ownerDocument.body),t}function Lb(n,e){const t=Ln(n);if(Zu(n))return t;if(!To(n)){let a=za(n);for(;a&&!Li(a);){if(no(a)&&!lf(a))return a;a=za(a)}return t}let o=Zy(n,e);for(;o&&mI(o)&&lf(o);)o=Zy(o,e);return o&&Li(o)&&lf(o)&&!qp(o)?t:o||gI(n)||t}const PI=async function(n){const e=this.getOffsetParent||Lb,t=this.getDimensions,o=await t(n.floating);return{reference:CI(n.reference,await e(n.floating),n.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function NI(n){return oo(n).direction==="rtl"}const TI={convertOffsetParentRelativeRectToViewportRelativeRect:vI,getDocumentElement:zo,getClippingRect:EI,getOffsetParent:Lb,getElementRects:PI,getClientRects:bI,getDimensions:RI,getScale:gi,isElement:no,isRTL:NI};function jI(n,e){let t=null,o;const a=zo(n);function r(){var s;clearTimeout(o),(s=t)==null||s.disconnect(),t=null}function i(s,l){s===void 0&&(s=!1),l===void 0&&(l=1),r();const{left:u,top:f,width:d,height:p}=n.getBoundingClientRect();if(s||e(),!d||!p)return;const m=sc(f),g=sc(a.clientWidth-(u+d)),y=sc(a.clientHeight-(f+p)),w=sc(u),k={rootMargin:-m+"px "+-g+"px "+-y+"px "+-w+"px",threshold:Nn(0,Ta(1,l))||1};let E=!0;function A(N){const T=N[0].intersectionRatio;if(T!==l){if(!E)return i();T?i(!1,T):o=setTimeout(()=>{i(!1,1e-7)},1e3)}E=!1}try{t=new IntersectionObserver(A,{...k,root:a.ownerDocument})}catch{t=new IntersectionObserver(A,k)}t.observe(n)}return i(!0),r}function zI(n,e,t,o){o===void 0&&(o={});const{ancestorScroll:a=!0,ancestorResize:r=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:s=typeof IntersectionObserver=="function",animationFrame:l=!1}=o,u=$p(n),f=a||r?[...u?Xs(u):[],...Xs(e)]:[];f.forEach(v=>{a&&v.addEventListener("scroll",t,{passive:!0}),r&&v.addEventListener("resize",t)});const d=u&&s?jI(u,t):null;let p=-1,m=null;i&&(m=new ResizeObserver(v=>{let[k]=v;k&&k.target===u&&m&&(m.unobserve(e),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var E;(E=m)==null||E.observe(e)})),t()}),u&&!l&&m.observe(u),m.observe(e));let g,y=l?br(n):null;l&&w();function w(){const v=br(n);y&&(v.x!==y.x||v.y!==y.y||v.width!==y.width||v.height!==y.height)&&t(),y=v,g=requestAnimationFrame(w)}return t(),()=>{var v;f.forEach(k=>{a&&k.removeEventListener("scroll",t),r&&k.removeEventListener("resize",t)}),d==null||d(),(v=m)==null||v.disconnect(),m=null,l&&cancelAnimationFrame(g)}}const II=dI,LI=fI,MI=lI,DI=pI,_I=cI,Qy=sI,FI=hI,OI=(n,e,t)=>{const o=new Map,a={platform:TI,...t},r={...a.platform,_c:o};return iI(n,e,{...a,platform:r})};var Cc=typeof document<"u"?h.useLayoutEffect:h.useEffect;function su(n,e){if(n===e)return!0;if(typeof n!=typeof e)return!1;if(typeof n=="function"&&n.toString()===e.toString())return!0;let t,o,a;if(n&&e&&typeof n=="object"){if(Array.isArray(n)){if(t=n.length,t!==e.length)return!1;for(o=t;o--!==0;)if(!su(n[o],e[o]))return!1;return!0}if(a=Object.keys(n),t=a.length,t!==Object.keys(e).length)return!1;for(o=t;o--!==0;)if(!{}.hasOwnProperty.call(e,a[o]))return!1;for(o=t;o--!==0;){const r=a[o];if(!(r==="_owner"&&n.$$typeof)&&!su(n[r],e[r]))return!1}return!0}return n!==n&&e!==e}function Mb(n){return typeof window>"u"?1:(n.ownerDocument.defaultView||window).devicePixelRatio||1}function Xy(n,e){const t=Mb(n);return Math.round(e*t)/t}function cf(n){const e=h.useRef(n);return Cc(()=>{e.current=n}),e}function UI(n){n===void 0&&(n={});const{placement:e="bottom",strategy:t="absolute",middleware:o=[],platform:a,elements:{reference:r,floating:i}={},transform:s=!0,whileElementsMounted:l,open:u}=n,[f,d]=h.useState({x:0,y:0,strategy:t,placement:e,middlewareData:{},isPositioned:!1}),[p,m]=h.useState(o);su(p,o)||m(o);const[g,y]=h.useState(null),[w,v]=h.useState(null),k=h.useCallback(S=>{S!==T.current&&(T.current=S,y(S))},[]),E=h.useCallback(S=>{S!==C.current&&(C.current=S,v(S))},[]),A=r||g,N=i||w,T=h.useRef(null),C=h.useRef(null),P=h.useRef(f),M=l!=null,U=cf(l),O=cf(a),W=cf(u),V=h.useCallback(()=>{if(!T.current||!C.current)return;const S={placement:e,strategy:t,middleware:p};O.current&&(S.platform=O.current),OI(T.current,C.current,S).then(z=>{const F={...z,isPositioned:W.current!==!1};j.current&&!su(P.current,F)&&(P.current=F,_i.flushSync(()=>{d(F)}))})},[p,e,t,O,W]);Cc(()=>{u===!1&&P.current.isPositioned&&(P.current.isPositioned=!1,d(S=>({...S,isPositioned:!1})))},[u]);const j=h.useRef(!1);Cc(()=>(j.current=!0,()=>{j.current=!1}),[]),Cc(()=>{if(A&&(T.current=A),N&&(C.current=N),A&&N){if(U.current)return U.current(A,N,V);V()}},[A,N,V,U,M]);const L=h.useMemo(()=>({reference:T,floating:C,setReference:k,setFloating:E}),[k,E]),I=h.useMemo(()=>({reference:A,floating:N}),[A,N]),b=h.useMemo(()=>{const S={position:t,left:0,top:0};if(!I.floating)return S;const z=Xy(I.floating,f.x),F=Xy(I.floating,f.y);return s?{...S,transform:"translate("+z+"px, "+F+"px)",...Mb(I.floating)>=1.5&&{willChange:"transform"}}:{position:t,left:z,top:F}},[t,s,I.floating,f.x,f.y]);return h.useMemo(()=>({...f,update:V,refs:L,elements:I,floatingStyles:b}),[f,V,L,I,b])}const BI=n=>{function e(t){return{}.hasOwnProperty.call(t,"current")}return{name:"arrow",options:n,fn(t){const{element:o,padding:a}=typeof n=="function"?n(t):n;return o&&e(o)?o.current!=null?Qy({element:o.current,padding:a}).fn(t):{}:o?Qy({element:o,padding:a}).fn(t):{}}}},VI=(n,e)=>({...II(n),options:[n,e]}),WI=(n,e)=>({...LI(n),options:[n,e]}),qI=(n,e)=>({...FI(n),options:[n,e]}),HI=(n,e)=>({...MI(n),options:[n,e]}),$I=(n,e)=>({...DI(n),options:[n,e]}),YI=(n,e)=>({..._I(n),options:[n,e]}),KI=(n,e)=>({...BI(n),options:[n,e]});var GI="Arrow",Db=h.forwardRef((n,e)=>{const{children:t,width:o=10,height:a=5,...r}=n;return c.jsx(vt.svg,{...r,ref:e,width:o,height:a,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:n.asChild?t:c.jsx("polygon",{points:"0,0 30,0 15,10"})})});Db.displayName=GI;var JI=Db;function _b(n){const[e,t]=h.useState(void 0);return No(()=>{if(n){t({width:n.offsetWidth,height:n.offsetHeight});const o=new ResizeObserver(a=>{if(!Array.isArray(a)||!a.length)return;const r=a[0];let i,s;if("borderBoxSize"in r){const l=r.borderBoxSize,u=Array.isArray(l)?l[0]:l;i=u.inlineSize,s=u.blockSize}else i=n.offsetWidth,s=n.offsetHeight;t({width:i,height:s})});return o.observe(n,{box:"border-box"}),()=>o.unobserve(n)}else t(void 0)},[n]),e}var Kp="Popper",[Fb,Qi]=Bn(Kp),[ZI,Ob]=Fb(Kp),Ub=n=>{const{__scopePopper:e,children:t}=n,[o,a]=h.useState(null);return c.jsx(ZI,{scope:e,anchor:o,onAnchorChange:a,children:t})};Ub.displayName=Kp;var Bb="PopperAnchor",Vb=h.forwardRef((n,e)=>{const{__scopePopper:t,virtualRef:o,...a}=n,r=Ob(Bb,t),i=h.useRef(null),s=zt(e,i);return h.useEffect(()=>{r.onAnchorChange((o==null?void 0:o.current)||i.current)}),o?null:c.jsx(vt.div,{...a,ref:s})});Vb.displayName=Bb;var Gp="PopperContent",[QI,XI]=Fb(Gp),Wb=h.forwardRef((n,e)=>{var de,he,we,ke,Ee,G;const{__scopePopper:t,side:o="bottom",sideOffset:a=0,align:r="center",alignOffset:i=0,arrowPadding:s=0,avoidCollisions:l=!0,collisionBoundary:u=[],collisionPadding:f=0,sticky:d="partial",hideWhenDetached:p=!1,updatePositionStrategy:m="optimized",onPlaced:g,...y}=n,w=Ob(Gp,t),[v,k]=h.useState(null),E=zt(e,te=>k(te)),[A,N]=h.useState(null),T=_b(A),C=(T==null?void 0:T.width)??0,P=(T==null?void 0:T.height)??0,M=o+(r!=="center"?"-"+r:""),U=typeof f=="number"?f:{top:0,right:0,bottom:0,left:0,...f},O=Array.isArray(u)?u:[u],W=O.length>0,V={padding:U,boundary:O.filter(tL),altBoundary:W},{refs:j,floatingStyles:L,placement:I,isPositioned:b,middlewareData:S}=UI({strategy:"fixed",placement:M,whileElementsMounted:(...te)=>zI(...te,{animationFrame:m==="always"}),elements:{reference:w.anchor},middleware:[VI({mainAxis:a+P,alignmentAxis:i}),l&&WI({mainAxis:!0,crossAxis:!1,limiter:d==="partial"?qI():void 0,...V}),l&&HI({...V}),$I({...V,apply:({elements:te,rects:Y,availableWidth:se,availableHeight:fe})=>{const{width:Se,height:Oe}=Y.reference,Le=te.floating.style;Le.setProperty("--radix-popper-available-width",`${se}px`),Le.setProperty("--radix-popper-available-height",`${fe}px`),Le.setProperty("--radix-popper-anchor-width",`${Se}px`),Le.setProperty("--radix-popper-anchor-height",`${Oe}px`)}}),A&&KI({element:A,padding:s}),nL({arrowWidth:C,arrowHeight:P}),p&&YI({strategy:"referenceHidden",...V})]}),[z,F]=$b(I),D=Ot(g);No(()=>{b&&(D==null||D())},[b,D]);const q=(de=S.arrow)==null?void 0:de.x,J=(he=S.arrow)==null?void 0:he.y,ae=((we=S.arrow)==null?void 0:we.centerOffset)!==0,[ge,ie]=h.useState();return No(()=>{v&&ie(window.getComputedStyle(v).zIndex)},[v]),c.jsx("div",{ref:j.setFloating,"data-radix-popper-content-wrapper":"",style:{...L,transform:b?L.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ge,"--radix-popper-transform-origin":[(ke=S.transformOrigin)==null?void 0:ke.x,(Ee=S.transformOrigin)==null?void 0:Ee.y].join(" "),...((G=S.hide)==null?void 0:G.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:n.dir,children:c.jsx(QI,{scope:t,placedSide:z,onArrowChange:N,arrowX:q,arrowY:J,shouldHideArrow:ae,children:c.jsx(vt.div,{"data-side":z,"data-align":F,...y,ref:E,style:{...y.style,animation:b?void 0:"none"}})})})});Wb.displayName=Gp;var qb="PopperArrow",eL={top:"bottom",right:"left",bottom:"top",left:"right"},Hb=h.forwardRef(function(e,t){const{__scopePopper:o,...a}=e,r=XI(qb,o),i=eL[r.placedSide];return c.jsx("span",{ref:r.onArrowChange,style:{position:"absolute",left:r.arrowX,top:r.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[r.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[r.placedSide],visibility:r.shouldHideArrow?"hidden":void 0},children:c.jsx(JI,{...a,ref:t,style:{...a.style,display:"block"}})})});Hb.displayName=qb;function tL(n){return n!==null}var nL=n=>({name:"transformOrigin",options:n,fn(e){var w,v,k;const{placement:t,rects:o,middlewareData:a}=e,i=((w=a.arrow)==null?void 0:w.centerOffset)!==0,s=i?0:n.arrowWidth,l=i?0:n.arrowHeight,[u,f]=$b(t),d={start:"0%",center:"50%",end:"100%"}[f],p=(((v=a.arrow)==null?void 0:v.x)??0)+s/2,m=(((k=a.arrow)==null?void 0:k.y)??0)+l/2;let g="",y="";return u==="bottom"?(g=i?d:`${p}px`,y=`${-l}px`):u==="top"?(g=i?d:`${p}px`,y=`${o.floating.height+l}px`):u==="right"?(g=`${-l}px`,y=i?d:`${m}px`):u==="left"&&(g=`${o.floating.width+l}px`,y=i?d:`${m}px`),{data:{x:g,y}}}});function $b(n){const[e,t="center"]=n.split("-");return[e,t]}var Xu=Ub,ed=Vb,Jp=Wb,Zp=Hb,uf,Qp="HoverCard",[Yb,yV]=Bn(Qp,[Qi]),td=Qi(),[oL,Xp]=Yb(Qp),Kb=n=>{const{__scopeHoverCard:e,children:t,open:o,defaultOpen:a,onOpenChange:r,openDelay:i=700,closeDelay:s=300}=n,l=td(e),u=h.useRef(0),f=h.useRef(0),d=h.useRef(!1),p=h.useRef(!1),[m=!1,g]=Ua({prop:o,defaultProp:a,onChange:r}),y=h.useCallback(()=>{clearTimeout(f.current),u.current=window.setTimeout(()=>g(!0),i)},[i,g]),w=h.useCallback(()=>{clearTimeout(u.current),!d.current&&!p.current&&(f.current=window.setTimeout(()=>g(!1),s))},[s,g]),v=h.useCallback(()=>g(!1),[g]);return h.useEffect(()=>()=>{clearTimeout(u.current),clearTimeout(f.current)},[]),c.jsx(oL,{scope:e,open:m,onOpenChange:g,onOpen:y,onClose:w,onDismiss:v,hasSelectionRef:d,isPointerDownOnContentRef:p,children:c.jsx(Xu,{...l,children:t})})};Kb.displayName=Qp;var Gb="HoverCardTrigger",Jb=h.forwardRef((n,e)=>{const{__scopeHoverCard:t,...o}=n,a=Xp(Gb,t),r=td(t);return c.jsx(ed,{asChild:!0,...r,children:c.jsx(vt.a,{"data-state":a.open?"open":"closed",...o,ref:e,onPointerEnter:Fe(n.onPointerEnter,cu(a.onOpen)),onPointerLeave:Fe(n.onPointerLeave,cu(a.onClose)),onFocus:Fe(n.onFocus,a.onOpen),onBlur:Fe(n.onBlur,a.onClose),onTouchStart:Fe(n.onTouchStart,i=>i.preventDefault())})})});Jb.displayName=Gb;var aL="HoverCardPortal",[wV,rL]=Yb(aL,{forceMount:void 0}),lu="HoverCardContent",Zb=h.forwardRef((n,e)=>{const t=rL(lu,n.__scopeHoverCard),{forceMount:o=t.forceMount,...a}=n,r=Xp(lu,n.__scopeHoverCard);return c.jsx(Vn,{present:o||r.open,children:c.jsx(iL,{"data-state":r.open?"open":"closed",...a,onPointerEnter:Fe(n.onPointerEnter,cu(r.onOpen)),onPointerLeave:Fe(n.onPointerLeave,cu(r.onClose)),ref:e})})});Zb.displayName=lu;var iL=h.forwardRef((n,e)=>{const{__scopeHoverCard:t,onEscapeKeyDown:o,onPointerDownOutside:a,onFocusOutside:r,onInteractOutside:i,...s}=n,l=Xp(lu,t),u=td(t),f=h.useRef(null),d=zt(e,f),[p,m]=h.useState(!1);return h.useEffect(()=>{if(p){const g=document.body;return uf=g.style.userSelect||g.style.webkitUserSelect,g.style.userSelect="none",g.style.webkitUserSelect="none",()=>{g.style.userSelect=uf,g.style.webkitUserSelect=uf}}},[p]),h.useEffect(()=>{if(f.current){const g=()=>{m(!1),l.isPointerDownOnContentRef.current=!1,setTimeout(()=>{var w;((w=document.getSelection())==null?void 0:w.toString())!==""&&(l.hasSelectionRef.current=!0)})};return document.addEventListener("pointerup",g),()=>{document.removeEventListener("pointerup",g),l.hasSelectionRef.current=!1,l.isPointerDownOnContentRef.current=!1}}},[l.isPointerDownOnContentRef,l.hasSelectionRef]),h.useEffect(()=>{f.current&&cL(f.current).forEach(y=>y.setAttribute("tabindex","-1"))}),c.jsx(El,{asChild:!0,disableOutsidePointerEvents:!1,onInteractOutside:i,onEscapeKeyDown:o,onPointerDownOutside:a,onFocusOutside:Fe(r,g=>{g.preventDefault()}),onDismiss:l.onDismiss,children:c.jsx(Jp,{...u,...s,onPointerDown:Fe(s.onPointerDown,g=>{g.currentTarget.contains(g.target)&&m(!0),l.hasSelectionRef.current=!1,l.isPointerDownOnContentRef.current=!0}),ref:d,style:{...s.style,userSelect:p?"text":void 0,WebkitUserSelect:p?"text":void 0,"--radix-hover-card-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-hover-card-content-available-width":"var(--radix-popper-available-width)","--radix-hover-card-content-available-height":"var(--radix-popper-available-height)","--radix-hover-card-trigger-width":"var(--radix-popper-anchor-width)","--radix-hover-card-trigger-height":"var(--radix-popper-anchor-height)"}})})}),sL="HoverCardArrow",lL=h.forwardRef((n,e)=>{const{__scopeHoverCard:t,...o}=n,a=td(t);return c.jsx(Zp,{...a,...o,ref:e})});lL.displayName=sL;function cu(n){return e=>e.pointerType==="touch"?void 0:n()}function cL(n){const e=[],t=document.createTreeWalker(n,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();)e.push(t.currentNode);return e}var uL=Kb,dL=Jb,Qb=Zb;const em=uL,tm=dL,nd=h.forwardRef(({className:n,align:e="center",sideOffset:t=4,...o},a)=>c.jsx(Qb,{ref:a,align:e,sideOffset:t,collisionPadding:10,className:ne("z-50 w-64 rounded-xl border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",n),...o}));nd.displayName=Qb.displayName;function Tn({className:n,...e}){return c.jsx("div",{className:ne("animate-pulse rounded-lg bg-primary/10",n),...e})}const Xb=h.createContext(void 0),e2=()=>{const n=h.useContext(Xb);if(!n)throw new Error("useDeletedEvent must be used within a DeletedEventProvider");return n};function fL({children:n}){const[e,t]=h.useState(new Set),o=h.useCallback(r=>e.has(e0(r)),[e]),a=r=>{t(i=>new Set(i).add(e0(r)))};return c.jsx(Xb.Provider,{value:{addDeletedEvent:a,isEventDeleted:o},children:n})}function e0(n){return Bt(n.kind)?ln(n):n.id}function nm(n){const{isEventDeleted:e}=e2(),[t,o]=h.useState(!0),[a,r]=h.useState(null),[i,s]=h.useState(void 0);return h.useEffect(()=>{(async()=>{if(o(!0),!n){o(!1),r(new Error("No id provided"));return}const u=await le.fetchEvent(n);u&&!e(u)&&s(u)})().catch(u=>{console.error("Error fetching event in useFetchEvent:",n,a),r(u)}).finally(()=>{o(!1)})},[n]),h.useEffect(()=>{i&&e(i)&&s(void 0)},[e]),{isFetching:t,error:a,event:i}}const hL=new mn({max:1e3,fetchMethod:n=>{const{nip05:e,pubkey:t}=JSON.parse(n);return pL(e,t)}});async function pL(n,e){var r;const[t,o]=(n==null?void 0:n.split("@"))||[void 0,void 0],a={isVerified:!1,nip05Name:t,nip05Domain:o};if(!t||!o||!e)return a;try{if(((r=(await(await fetch(t2(o,t))).json()).names)==null?void 0:r[t])===e)return{...a,isVerified:!0}}catch{}return a}async function mL(n,e){const t=await hL.fetch(JSON.stringify({nip05:n,pubkey:e}));if(t)return t;const[o,a]=(n==null?void 0:n.split("@"))||[void 0,void 0];return{isVerified:!1,nip05Name:o,nip05Domain:a}}function t2(n,e){const t=new URL("/.well-known/nostr.json",`https://${n}`);return e&&t.searchParams.set("name",e),t.toString()}async function vV(n){try{const t=await(await fetch(t2(n))).json(),o=new Set;return Object.values(t.names||{}).filter(a=>typeof a!="string"||!Sa(a)||o.has(a)?!1:(o.add(a),!0))}catch(e){return console.error("Error fetching pubkeys from domain:",e),[]}}function gL(n,e){const[t,o]=h.useState(!1),[a,r]=h.useState(""),[i,s]=h.useState(""),[l,u]=h.useState(!0);return h.useEffect(()=>{if(!n||!e){u(!1);return}mL(n,e).then(({isVerified:f,nip05Name:d,nip05Domain:p})=>{o(f),r(d),s(p),u(!1)})},[n,e]),{nip05IsVerified:t,nip05Name:a,nip05Domain:i,isFetching:l}}function Xi(n){const{profile:e}=Je(),[t,o]=h.useState(!0),[a,r]=h.useState(null),[i,s]=h.useState(null),[l,u]=h.useState(null);return h.useEffect(()=>{s(null),u(null),(async()=>{o(!0);try{if(!n){o(!1),r(new Error("No id provided"));return}const d=dr(n);u(d);const p=await le.fetchProfile(n);p&&s(p)}catch(d){r(d)}finally{o(!1)}})()},[n]),h.useEffect(()=>{e&&l===e.pubkey&&s(e)},[e,l]),{isFetching:t,error:a,profile:i}}const Ja=class Ja{constructor(){H(this,"awesomeRelayCollections",null);H(this,"fetchDataloader",new Bo(async e=>(await Promise.allSettled(e.map(o=>this._getRelayInfo(o)))).map(o=>o.status==="fulfilled"?o.value:void 0),{maxBatchSize:1}))}static getInstance(){return Ja.instance||(Ja.instance=new Ja),Ja.instance}async getRelayInfos(e){return e.length===0?[]:(await this.fetchDataloader.loadMany(e)).map(o=>o instanceof Error?void 0:o)}async getRelayInfo(e){return this.fetchDataloader.load(e)}async getAwesomeRelayCollections(){return this.awesomeRelayCollections?this.awesomeRelayCollections:(this.awesomeRelayCollections=(async()=>{try{const e=await fetch("https://raw.githubusercontent.com/CodyTseng/awesome-nostr-relays/master/dist/collections.json");if(!e.ok)throw new Error("Failed to fetch awesome relay collections");return(await e.json()).collections}catch(e){return console.error("Error fetching awesome relay collections:",e),[]}})(),this.awesomeRelayCollections)}async _getRelayInfo(e){const t=async a=>{const i={...await this.fetchRelayNip11(e)??{},url:e,shortUrl:Fn(e)};return Array.isArray(i.supported_nips)||(i.supported_nips=[]),await be.putRelayInfo(i),a&&(this.fetchDataloader.clear(e),this.fetchDataloader.prime(e,i)),i},o=await be.getRelayInfo(e);return o?(t(!0),o):t(!1)}async fetchRelayNip11(e){try{return(await fetch(e.replace("ws://","http://").replace("wss://","https://"),{headers:{Accept:"application/nostr+json"}})).json()}catch{return}}};H(Ja,"instance");let Ah=Ja;const yL=Ah.getInstance();function wL(n){const[e,t]=h.useState(!0),[o,a]=h.useState(void 0);return h.useEffect(()=>{if(!n)return;(async()=>{t(!0);const i=setTimeout(()=>{t(!1)},5e3);try{const s=await yL.getRelayInfo(n);a(s)}catch(s){console.error(s)}finally{clearTimeout(i),t(!1)}})()},[n]),{relayInfo:o,isFetching:e}}const n2=h.createContext(void 0),Qt=()=>{const n=h.useContext(n2);if(!n)throw new Error("useContentPolicy must be used within an ContentPolicyProvider");return n};function vL({children:n}){var V;const[e,t]=h.useState(pe.getAutoplay()),[o,a]=h.useState(pe.getVideoLoop()),[r,i]=h.useState(pe.getNsfwDisplayPolicy()),[s,l]=h.useState(pe.getHideContentMentioningMutedUsers()),[u,f]=h.useState(pe.getMediaAutoLoadPolicy()),[d,p]=h.useState(pe.getProfilePictureAutoLoadPolicy()),[m,g]=h.useState(pe.getFaviconUrlTemplate()),[y,w]=h.useState(pe.getMutedWords()),[v,k]=h.useState((V=navigator.connection)==null?void 0:V.type);h.useEffect(()=>{const j=navigator.connection;if(!j){k(void 0);return}const L=()=>{k(j.type)};return j.addEventListener("change",L),()=>{j.removeEventListener("change",L)}},[]);const E=h.useMemo(()=>u===Uc.ALWAYS?!0:u===Uc.NEVER?!1:v==="wifi"||v==="ethernet",[u,v]),A=h.useMemo(()=>d===Bc.ALWAYS?!0:d===Bc.NEVER?!1:v==="wifi"||v==="ethernet",[d,v]),N=j=>{pe.setAutoplay(j),t(j)},T=j=>{pe.setVideoLoop(j),a(j)},C=j=>{pe.setNsfwDisplayPolicy(j),i(j)},P=j=>{pe.setHideContentMentioningMutedUsers(j),l(j)},M=j=>{pe.setMediaAutoLoadPolicy(j),f(j)},U=j=>{pe.setProfilePictureAutoLoadPolicy(j),p(j)},O=j=>{pe.setFaviconUrlTemplate(j),g(j)},W=j=>{pe.setMutedWords(j),w(j)};return c.jsx(n2.Provider,{value:{autoplay:e,setAutoplay:N,videoLoop:o,setVideoLoop:T,nsfwDisplayPolicy:r,setNsfwDisplayPolicy:C,hideContentMentioningMutedUsers:s,setHideContentMentioningMutedUsers:P,autoLoadMedia:E,mediaAutoLoadPolicy:u,setMediaAutoLoadPolicy:M,autoLoadProfilePicture:A,profilePictureAutoLoadPolicy:d,setProfilePictureAutoLoadPolicy:U,faviconUrlTemplate:m,setFaviconUrlTemplate:O,mutedWords:y,setMutedWords:W},children:n})}const o2=h.createContext(void 0),Pr=()=>{const n=h.useContext(o2);if(!n)throw new Error("useMuteList must be used within a MuteListProvider");return n};function bL({children:n}){const{t:e}=Ae(),{pubkey:t,muteListEvent:o,publish:a,updateMuteListEvent:r,nip04Decrypt:i,nip44Encrypt:s,nip44Decrypt:l}=Je(),[u,f]=h.useState([]),[d,p]=h.useState([]),m=h.useMemo(()=>new Set(Ls(u)),[u]),g=h.useMemo(()=>new Set(Ls(d)),[d]),y=h.useMemo(()=>new Set([...Array.from(g),...Array.from(m)]),[m,g]),[w,v]=h.useState(!1),k=h.useCallback(async V=>{if(!V.content)return{privateTags:[],wasNip04:!1};try{const j=V.content.includes("?iv="),L=await be.getDecryptedContent(V.id);let I;return L?I=L:(I=j?await i(V.pubkey,V.content):await l(V.pubkey,V.content),await be.putDecryptedContent(V.id,I)),{privateTags:Mn.array(Mn.array(Mn.string())).parse(JSON.parse(I)),wasNip04:j}}catch(j){return console.error("Failed to decrypt mute list content",j),{privateTags:[],wasNip04:!1}}},[i,l]),E=h.useCallback(async(V,j)=>{if(t)try{const L=await s(t,JSON.stringify(j)),I=fh(V.tags,L),b=await a(I);await r(b,j)}catch(L){console.error("[MuteList] Failed to migrate to NIP-44",L)}},[t,s,a,r]);h.useEffect(()=>{(async()=>{if(!o){f([]),p([]);return}const{privateTags:j,wasNip04:L}=await k(o).catch(()=>({privateTags:[],wasNip04:!1}));p(j),f(o.tags),L&&j.length>0&&E(o,j)})()},[o]);const A=()=>Array.from(y),N=h.useCallback(V=>m.has(V)?"public":g.has(V)?"private":null,[m,g]),T=async(V,j)=>{Be().unix()===(o==null?void 0:o.created_at)&&await new Promise(b=>setTimeout(b,1e3));const L=fh(V,j);return await a(L)},C=V=>{if(!V&&!confirm(e("MuteListNotFoundConfirmation")))throw new Error("Mute list not found")},P=async V=>{if(!(!t||w)){v(!0);try{const j=await le.fetchMuteListEvent(t);if(C(j),j&&j.tags.some(([z,F])=>z==="p"&&F===V))return;const L=((j==null?void 0:j.tags)??[]).concat([["p",V]]),{privateTags:I}=j?await k(j):{privateTags:[]},b=I.length>0?await s(t,JSON.stringify(I)):"",S=await T(L,b);await r(S,I)}catch(j){wt(j).forEach(I=>{Ue.error(e("Failed to mute user publicly")+": "+I,{duration:1e4})})}finally{v(!1)}}},M=async V=>{if(!(!t||w)){v(!0);try{const j=await le.fetchMuteListEvent(t);C(j);const{privateTags:L}=j?await k(j):{privateTags:[]};if(L.some(([z,F])=>z==="p"&&F===V))return;const I=L.concat([["p",V]]),b=await s(t,JSON.stringify(I)),S=await T((j==null?void 0:j.tags)??[],b);await r(S,I)}catch(j){wt(j).forEach(I=>{Ue.error(e("Failed to mute user privately")+": "+I,{duration:1e4})})}finally{v(!1)}}},U=async V=>{if(!(!t||w)){v(!0);try{const j=await le.fetchMuteListEvent(t);if(!j)return;const{privateTags:L}=await k(j),I=L.filter(z=>z[0]!=="p"||z[1]!==V);let b=j.content;I.length!==L.length&&(b=await s(t,JSON.stringify(I)));const S=await T(j.tags.filter(z=>z[0]!=="p"||z[1]!==V),b);await r(S,I)}catch(j){wt(j).forEach(I=>{Ue.error(e("Failed to unmute user")+": "+I,{duration:1e4})})}finally{v(!1)}}},O=async V=>{if(!(!t||w)){v(!0);try{const j=await le.fetchMuteListEvent(t);if(!j)return;const{privateTags:L}=await k(j),I=L.filter(z=>z[0]!=="p"||z[1]!==V);if(I.length===L.length)return;const b=await s(t,JSON.stringify(I)),S=await T(j.tags.filter(z=>z[0]!=="p"||z[1]!==V).concat([["p",V]]),b);await r(S,I)}catch(j){wt(j).forEach(I=>{Ue.error(e("Failed to switch to public mute")+": "+I,{duration:1e4})})}finally{v(!1)}}},W=async V=>{if(!(!t||w)){v(!0);try{const j=await le.fetchMuteListEvent(t);if(!j)return;const L=j.tags.filter(F=>F[0]!=="p"||F[1]!==V);if(L.length===j.tags.length)return;const{privateTags:I}=await k(j),b=I.filter(F=>F[0]!=="p"||F[1]!==V).concat([["p",V]]),S=await s(t,JSON.stringify(b)),z=await T(L,S);await r(z,b)}catch(j){wt(j).forEach(I=>{Ue.error(e("Failed to switch to private mute")+": "+I,{duration:1e4})})}finally{v(!1)}}};return c.jsx(o2.Provider,{value:{mutePubkeySet:y,changing:w,getMutePubkeys:A,getMuteType:N,mutePubkeyPublicly:P,mutePubkeyPrivately:M,unmutePubkey:U,switchToPublicMute:O,switchToPrivateMute:W},children:n})}const t0="https://fayan.jumble.social",Xr=class Xr{constructor(){H(this,"userPercentileDataLoader",new Bo(async e=>{try{const t=await fetch(`${t0}/users`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pubkeys:e})});if(!t.ok)return new Array(e.length).fill(null);const o=await t.json();return e.map(a=>{var r;return((r=o[a])==null?void 0:r.percentile)??0})}catch{return new Array(e.length).fill(null)}},{maxBatchSize:50,cacheKeyFn:e=>dr(e)}));H(this,"searchResultCache",new Map);return Xr.instance||(Xr.instance=this),Xr.instance}async fetchUserPercentile(e){return await this.userPercentileDataLoader.load(e)}async searchUsers(e,t=20,o=0){const a=this.searchResultCache.get(e);if(a&&o+t<=a.length)return a.slice(o,o+t);try{const r=new URL("/search",t0);r.searchParams.append("q",e),r.searchParams.append("limit",t.toString()),o>0&&r.searchParams.append("offset",o.toString());const i=await fetch(r.toString());if(!i.ok)return[];const s=await i.json(),l=[];s.forEach(({event:f,percentile:d})=>{const p=fi(f);l.push(p),this.userPercentileDataLoader.prime(p.pubkey,d),le.updateProfileEventCache(f)});const u=this.searchResultCache.get(e)||[];if(o===0)this.searchResultCache.set(e,l);else if(o<=u.length){const f=u.slice(0,o).concat(l);this.searchResultCache.set(e,f)}return l}catch{return[]}}};H(Xr,"instance");let Eh=Xr;const Rh=new Eh,a2=h.createContext(void 0),es=()=>{const n=h.useContext(a2);if(!n)throw new Error("useUserTrust must be used within a UserTrustProvider");return n},lc=new Set;function kL({children:n}){const{pubkey:e}=Je(),[t,o]=h.useState(()=>pe.getMinTrustScore()),[a,r]=h.useState(()=>pe.getMinTrustScoreMap());h.useEffect(()=>{if(!e)return;(async()=>{const p=await le.fetchFollowings(e,!1);p.forEach(g=>lc.add(g));const m=20;for(let g=0;g<p.length;g+=m){const y=p.slice(g,g+m);await Promise.allSettled(y.map(async w=>{(await le.fetchFollowings(w,!1)).forEach(k=>{lc.add(k)})})),await new Promise(w=>setTimeout(w,200))}})()},[e]);const i=h.useCallback(d=>!e||d===e?!0:lc.has(d),[e]),s=h.useCallback(async d=>{if(i(d))return!1;const p=await Rh.fetchUserPercentile(d);return p===null?!1:p<60},[i]),l=h.useCallback(d=>d===cr.DEFAULT?t:a[d]??t,[t,a]),u=(d,p)=>{if(!(p<0||p>100))if(d===cr.DEFAULT)o(p),pe.setMinTrustScore(p);else{const m={...a,[d]:p};r(m),pe.setMinTrustScoreMap(m)}},f=h.useCallback(async(d,p)=>{if(p===0||d===e||lc.has(d))return!0;const m=await Rh.fetchUserPercentile(d);return m===null?!0:m>=p},[e]);return c.jsx(a2.Provider,{value:{minTrustScore:t,minTrustScoreMap:a,getMinTrustScore:l,updateMinTrustScore:u,isUserTrusted:i,isSpammer:s,meetsMinTrustScore:f},children:n})}const ei=class ei{constructor(){H(this,"rootInfoCache",new mn({max:1e3,ttl:1e3*60*60}));H(this,"subscriptions",new Map);H(this,"threadMap",new mn({max:500,ttl:1e3*60*60*24}));H(this,"processedReplyKeys",new mn({max:1e4,ttl:1e3*60*60*24}));H(this,"parentKeyMap",new mn({max:1e4,ttl:1e3*60*60*24}));H(this,"descendantCache",new Map);H(this,"threadCacheInitialized",new Set);H(this,"threadListeners",new Map);H(this,"allDescendantThreadsListeners",new Map);H(this,"EMPTY_ARRAY",[]);H(this,"EMPTY_MAP",new Map);return ei.instance||(ei.instance=this),ei.instance}async loadThreadFromCache(e){if(this.threadCacheInitialized.has(e))return;this.threadCacheInitialized.add(e);const t=await be.getThreadReplies(e);if(t&&t.length>0){const o=t.map(a=>a.event);this.threadMap.set(e,o),o.forEach(a=>{const r=_n(a);this.processedReplyKeys.set(r,!0);const i=Hc(a);if(i){const s=Yg(i.tag);s&&this.parentKeyMap.set(r,s)}})}}async saveThreadToCache(e){const t=this.threadMap.get(e);t&&t.length>0&&await be.putThreadReplies(e,t.map(o=>({event:o,relays:[]})))}async subscribe(e,t=100){const{event:o}=this.resolveStuff(e),a=await this.parseRootInfo(e);if(!a)return;const r=this.subscriptions.get(a.id);if(r){r.count+=1;return}const s=(async()=>{let l=[];const u=a.pubkey??(o==null?void 0:o.pubkey);if(u&&(l=(await le.fetchRelayList(u)).read),l=l.concat(kt()).slice(0,4),o&&Ui(o)){const y=le.getSeenEventRelayUrls(o.id);l.concat(...y)}const f=[];a.type==="E"?(f.push({"#e":[a.id],kinds:[Z.ShortTextNote],limit:t}),(o==null?void 0:o.kind)!==Z.ShortTextNote&&f.push({"#E":[a.id],kinds:[ce.COMMENT,ce.VOICE_COMMENT],limit:t})):a.type==="A"?(f.push({"#a":[a.id],kinds:[Z.ShortTextNote],limit:t},{"#A":[a.id],kinds:[ce.COMMENT,ce.VOICE_COMMENT],limit:t}),a.relay&&l.push(a.relay)):f.push({"#I":[a.id],kinds:[ce.COMMENT,ce.VOICE_COMMENT],limit:t});let d;const p=new Promise(y=>{d=y}),{closer:m,timelineKey:g}=await le.subscribeTimeline(f.map(y=>({urls:l.slice(0,8),filter:y})),{onEvents:(y,w)=>{if(y.length>0&&this.addRepliesToThread(y),w){const v=this.subscriptions.get(a.id);v&&y.length>0&&(v.until=y[y.length-1].created_at-1),d()}},onNew:y=>{this.addRepliesToThread([y])}});return await p,{closer:m,timelineKey:g}})();this.subscriptions.set(a.id,{promise:s,count:1,until:Be().unix()}),await s}async unsubscribe(e){const t=await this.parseRootInfo(e);if(!t)return;const o=this.subscriptions.get(t.id);o&&setTimeout(()=>{o.count-=1,o.count<=0&&(this.subscriptions.delete(t.id),o.promise.then(({closer:a})=>{a()}))},2e3)}async loadMore(e,t=100){const o=await this.parseRootInfo(e);if(!o)return!1;const a=this.subscriptions.get(o.id);if(!a)return!1;const{timelineKey:r}=await a.promise;if(!r||!a.until)return!1;const i=await le.loadMoreTimeline(r,a.until,t);this.addRepliesToThread(i);const{event:s}=this.resolveStuff(e);let l=i.length?i[i.length-1].created_at-1:void 0;return l&&s&&!Bt(s.kind)&&l<s.created_at&&(l=void 0),a.until=l,!!l}addRepliesToThread(e){const t=new Map;if(e.forEach(o=>{const a=_n(o);if(this.processedReplyKeys.has(a)||(this.processedReplyKeys.set(a,!0),!bP(o)))return;const r=Hc(o);if(r){const i=Yg(r.tag);if(i){const s=t.get(i)??[];s.push(o),t.set(i,s),this.parentKeyMap.set(a,i)}}}),t.size!==0){for(const[o,a]of t.entries()){const r=this.threadMap.get(o),i=r?[...r,...a]:a;this.threadMap.set(o,i),this.saveThreadToCache(o)}this.descendantCache.clear();for(const o of t.keys())this.notifyThreadUpdate(o),this.notifyAllDescendantThreadsUpdate(o)}}getThread(e){return this.loadThreadFromCache(e),this.threadMap.get(e)??this.EMPTY_ARRAY}getAllDescendantThreads(e){const t=this.descendantCache.get(e);if(t)return t;const a=(()=>{const r=this.threadMap.get(e);if(!r||r.length===0)return this.EMPTY_MAP;const i=new Map,s=[e];for(;s.length>0;){const l=s.pop(),u=this.threadMap.get(l)??[];u.length>0&&(i.set(l,u),u.forEach(f=>{const d=_n(f);s.push(d)}))}return i})();return this.descendantCache.set(e,a),a}listenThread(e,t){let o=this.threadListeners.get(e);return o||(o=new Set,this.threadListeners.set(e,o)),o.add(t),()=>{o==null||o.delete(t),(o==null?void 0:o.size)===0&&this.threadListeners.delete(e)}}notifyThreadUpdate(e){const t=this.threadListeners.get(e);t&&t.forEach(o=>o())}listenAllDescendantThreads(e,t){let o=this.allDescendantThreadsListeners.get(e);return o||(o=new Set,this.allDescendantThreadsListeners.set(e,o)),o.add(t),()=>{o==null||o.delete(t),(o==null?void 0:o.size)===0&&this.allDescendantThreadsListeners.delete(e)}}notifyAllDescendantThreadsUpdate(e){const t=a=>{const r=this.allDescendantThreadsListeners.get(a);r&&r.forEach(i=>i())};t(e);let o=this.parentKeyMap.get(e);for(;o;)t(o),o=this.parentKeyMap.get(o)}async parseRootInfo(e){const{event:t,externalContent:o}=this.resolveStuff(e);if(!t&&!o)return;const a=t?_n(t):o,r=this.rootInfoCache.get(a);if(r)return r;const s=(async()=>{let l=t?Bt(t.kind)?{type:"A",id:ln(t),pubkey:t.pubkey,relay:le.getEventHint(t.id)}:{type:"E",id:t.id,pubkey:t.pubkey}:{type:"I",id:o};const u=yp(t);if((u==null?void 0:u.type)==="e"){const[,f,,,d]=u.tag;if(f&&d)l={type:"E",id:f,pubkey:d};else{const p=Er(u.tag);if(p){const m=await le.fetchEvent(p);m&&(l={type:"E",id:m.id,pubkey:m.pubkey})}}}else if((u==null?void 0:u.type)==="a"){const[,f,d]=u.tag,[,p]=f.split(":");l={type:"A",id:f,pubkey:p,relay:d}}else(u==null?void 0:u.type)==="i"&&(l={type:"I",id:u.tag[1]});return l})();return this.rootInfoCache.set(a,s),s}resolveStuff(e){return typeof e=="string"?{event:void 0,externalContent:e,stuffKey:e}:{event:e,externalContent:void 0,stuffKey:_n(e)}}};H(ei,"instance");let Ch=ei;const el=new Ch;function bV(n){return h.useSyncExternalStore(e=>el.listenThread(n,e),()=>el.getThread(n))}function r2(n){return h.useSyncExternalStore(e=>el.listenAllDescendantThreads(n,e),()=>el.getAllDescendantThreads(n))}function kV(n){const{pubkey:e}=Je(),{getMinTrustScore:t,meetsMinTrustScore:o}=es(),{mutePubkeySet:a}=Pr(),{hideContentMentioningMutedUsers:r}=Qt(),i=r2(n),[s,l]=h.useState([]),[u,f]=h.useState(!1);return h.useEffect(()=>{(async()=>{const p=new Set,m=i.get(n)||[],g=[],y=t(cr.INTERACTIONS);await Promise.all(m.map(async w=>{const v=_n(w);if(p.has(v)||(p.add(v),a.has(w.pubkey))||r&&zu(w,a))return;if(!await o(w.pubkey,y)){const E=_n(w),A=i.get(E);if(A&&A.length>0){let N=!1;for(const T of A)if(await o(T.pubkey,y)){N=!0;break}if(!N)return}else return}g.push(w)})),g.sort((w,v)=>v.created_at-w.created_at),l(g)})()},[n,i,a,r,t,o]),h.useEffect(()=>{let d=!1;for(const p of s)if(p.pubkey===e){d=!0;break}f(d)},[s,e]),{replies:s,hasReplied:u}}function SL(n){const{pubkey:e}=Je(),t=r2(n),{getMinTrustScore:o,meetsMinTrustScore:a}=es(),{mutePubkeySet:r}=Pr(),{hideContentMentioningMutedUsers:i}=Qt(),[s,l]=h.useState([]),[u,f]=h.useState(!1);return h.useEffect(()=>{(async()=>{const p=new Set,m=[],g=o(cr.INTERACTIONS);let y=[n];for(;y.length>0;){const w=y.flatMap(v=>t.get(v)??[]);await Promise.all(w.map(async v=>{const k=_n(v);if(p.has(k)||(p.add(k),r.has(v.pubkey))||i&&zu(v,r))return;if(!await a(v.pubkey,g)){const A=_n(v),N=t.get(A);if(N&&N.length>0){let T=!1;for(const C of N)if(await a(C.pubkey,g)){T=!0;break}if(!T)return}else return}m.push(v)})),y=w.map(v=>_n(v))}l(m.sort((w,v)=>w.created_at-v.created_at))})()},[n,t,r,i,o,a]),h.useEffect(()=>{let d=!1;for(const p of s)if(p.pubkey===e){d=!0;break}f(d)},[s,e]),{replies:s,hasReplied:u}}const ti=class ti{constructor(){return ti.instance||(ti.instance=this),ti.instance}async translate(e,t,o,a){if(!e)return e;if(!o)throw new Error("LibreTranslate server address is not configured");const r=new URL("/translate",o).toString(),i=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({q:e,target:t,source:"auto",api_key:a})}),s=await i.json();if(!i.ok)throw new Error(s.error??"Failed to translate");const l=s.translatedText;if(!l)throw new Error("Translation failed");return l}};H(ti,"instance");let Ph=ti;const xL=new Ph,ni=class ni{constructor(){H(this,"apiKeyMap",{});H(this,"currentPubkey",null);return ni.instance||(ni.instance=this),ni.instance}async getAccount(){if(!this.currentPubkey)throw new Error("Please login first");const e=this.apiKeyMap[this.currentPubkey],t="/v1/translation/account",o="GET";let a;e||(a=await le.signHttpAuth(new URL(t,zg).toString(),o,"Auth to get RogueJumble translation service account"));const r=await this._fetch({path:t,method:o,auth:a,retryWhenUnauthorized:!a});return r.api_key&&r.pubkey&&(this.apiKeyMap[r.pubkey]=r.api_key),r}async regenerateApiKey(){try{const e=await this._fetch({path:"/v1/translation/regenerate-api-key",method:"POST"});return e.api_key&&this.currentPubkey&&(this.apiKeyMap[this.currentPubkey]=e.api_key),e.api_key}catch(e){const t=e instanceof Error?e.message:"";throw new Error(t||"Failed to regenerate API key")}}async translate(e,t){if(!e)return e;try{const a=(await this._fetch({path:"/v1/translation/translate",method:"POST",body:JSON.stringify({q:e,target:t})})).translatedText;if(!a)throw new Error("Translation failed");return a}catch(o){const a=o instanceof Error?o.message:"";throw new Error(a||"Failed to translate")}}changeCurrentPubkey(e){this.currentPubkey=e}async _fetch({path:e,method:t,body:o,auth:a,retryWhenUnauthorized:r=!0}){if(!this.currentPubkey)throw new Error("Please login first");const i=this.apiKeyMap[this.currentPubkey],s=!!i;let l;a?l=a:s?l=`Bearer ${i}`:l=`Bearer ${(await this.getAccount()).api_key}`;const u=new URL(e,zg).toString(),f=await fetch(u,{method:t,headers:{"Content-Type":"application/json",Authorization:l},body:o}),d=await f.json();if(!f.ok){if(d.code==="00403"&&s&&r)return this.apiKeyMap[this.currentPubkey]=void 0,this._fetch({path:e,method:t,body:o,retryWhenUnauthorized:!1});throw new Error(d.error)}return d}};H(ni,"instance");let Nh=ni;const cc=new Nh,df=new Map,n0=new Map,i2=h.createContext(void 0),s2=()=>{const n=h.useContext(i2);if(!n)throw new Error("useTranslation must be used within a TranslationProvider");return n};function AL({children:n}){const{i18n:e}=Ae(),[t,o]=h.useState({service:"roguejumble"}),{pubkey:a,startLogin:r}=Je(),[i,s]=h.useState(new Set);h.useEffect(()=>{cc.changeCurrentPubkey(a);const k=pe.getTranslationServiceConfig(a);o(k)},[a]);const l=async()=>{if(t.service==="roguejumble"){if(!a){r();return}return await cc.getAccount()}},u=async()=>{if(t.service==="roguejumble"){if(!a){r();return}return await cc.regenerateApiKey()}},f=k=>{const A=e.language+"_"+k;return df.get(A)??null},d=async(k,E)=>t.service==="roguejumble"?await cc.translate(k,E):await xL.translate(k,E,t.server,t.api_key),p=async k=>{if(!k)return k;const E=e.language,A=E+"_"+k,N=n0.get(A);if(N)return N;const T=await d(k,E);return n0.set(A,T),T},m=async k=>{var M;const E=e.language,A=(M=k.tags.find(U=>U[0]==="comment"))==null?void 0:M[1],N={content:k.content,comment:A},T=o0(N);if(!T)return k;const C=await d(T,E),P=a0(C);return{...k,content:P.content??k.content,tags:k.tags.map(U=>U[0]==="comment"?["comment",P.comment??U[1]]:U)}},g=async k=>{const E=e.language,A=_w(k),N={question:k.content,...A==null?void 0:A.options.reduce((M,U)=>(M[U.id]=U.label,M),{})},T=o0(N);if(!T)return k;const C=await d(T,E),P=a0(C);return{...k,content:P.question??"",tags:k.tags.map(M=>M[0]==="option"?["option",M[1],P[M[1]]??M[2]]:M)}},y=async k=>{if(t.service==="roguejumble"&&!a){r();return}const E=e.language,A=E+"_"+k.id,N=df.get(A);if(N)return s(C=>new Set(C.add(k.id))),N;let T;if(k.kind===Z.Highlights)T=await m(k);else if(k.kind===ce.POLL)T=await g(k);else{const C=await d(k.content,E);if(!C)return;T={...k,content:C}}return df.set(A,T),s(C=>new Set(C.add(k.id))),T},w=k=>{s(E=>{const A=new Set(E);return A.delete(k),A})},v=k=>{o(k),pe.setTranslationServiceConfig(k,a)};return c.jsx(i2.Provider,{value:{config:t,translatedEventIdSet:i,getAccount:l,regenerateApiKey:u,translateText:p,translateEvent:y,getTranslatedEvent:f,showOriginalEvent:w,updateConfig:v},children:n})}function o0(n){return Object.entries(n).filter(([,e])=>e&&e.trim()!=="").map(([e,t])=>`=== ${e} ===
${t.trim()}
=== ${e} ===`).join(`

`)}function a0(n){const e=/=== (.+?) ===\n([\s\S]*?)\n=== \1 ===/g,t={};let o;for(;(o=e.exec(n))!==null;){const a=o[1].trim(),r=o[2].trim();t[a]=r}return t}function ts(n){const{translatedEventIdSet:e,getTranslatedEvent:t}=s2(),o=h.useMemo(()=>n?e.has(n):!1,[n,e]),[a,r]=h.useState(null);return h.useEffect(()=>{r(o&&n?t(n):null)},[o,n]),a}const kr=n=>typeof n=="string"?`/notes/${n}`:`/notes/${xa(n)}`,EL=n=>`https://jumble.social${kr(n)}`,od=({hashtag:n,search:e,domain:t,kinds:o})=>{const a="/notes",r=new URLSearchParams;return n&&r.set("t",n.toLowerCase()),o!=null&&o.length&&o.forEach(i=>r.append("k",i.toString())),e&&r.set("s",e),t&&r.set("d",t),`${a}?${r.toString()}`},ad=n=>n.startsWith("npub")||n.startsWith("nprofile")?`/users/${n}`:`/users/${Nt.npubEncode(n)}`,SV=({search:n,domain:e})=>{const t="/users",o=new URLSearchParams;return n&&o.set("s",n),e&&o.set("d",e),`${t}?${o.toString()}`},xV=n=>`/users/${Nt.npubEncode(n)}/following`,AV=n=>`/users/${Nt.npubEncode(n)}/relays`,EV=n=>{if(!n)return"/search";const e=new URLSearchParams;return e.set("t",n.type),e.set("q",n.search),n.input&&e.set("i",n.input),`/search?${e.toString()}`},uu=n=>`/external-content?id=${encodeURIComponent(n)}`,RV=()=>"/settings",RL=n=>"/settings/relays"+(n?"#"+n:""),CV=()=>"/settings/wallet",PV=()=>"/settings/wallet/history",NV=()=>"/settings/posts",TV=()=>"/settings/general",jV=()=>"/settings/appearance",zV=()=>"/settings/translation",IV=()=>"/settings/emoji-packs",LV=()=>"/settings/system",MV=()=>"/profile-editor",du=n=>`/relays/${encodeURIComponent(n)}`,DV=n=>`/relays/${encodeURIComponent(n)}/reviews`,_V=()=>"/mutes",FV=()=>"/rizful",OV=()=>"/bookmarks",CL=n=>typeof n=="string"?`/follow-packs/${n}`:`/follow-packs/${xa(n)}`,PL=(n,e)=>`https://chachi.chat/${n.replace(/^wss?:\/\//,"").replace(/\/$/,"")}/${e}`,NL=(n,e,t)=>{const o=`/groups/${encodeURIComponent(n)}/${encodeURIComponent(e)}`;if(t){const a=new URLSearchParams({name:t}).toString();return`${o}?${a}`}return o},UV=(n,e)=>{const t=Nt.npubEncode(e);return`/user-aggregation/${n}/${t}`},BV=n=>`/dms/${n.startsWith("npub")?n:Nt.npubEncode(n)}`,l2=h.createContext(void 0),c2=()=>{const n=h.useContext(l2);if(!n)throw new Error("useCurrentRelays must be used within a CurrentRelaysProvider");return n};function TL({children:n}){const[e,t]=h.useState({}),o=h.useMemo(()=>Object.keys(e),[e]);h.useEffect(()=>{le.currentRelays=o},[o]);const a=h.useCallback(i=>{t(s=>{const l={...s};return i.forEach(u=>{l[u]=(l[u]||0)+1}),l})},[]),r=h.useCallback(i=>{t(s=>{const l={...s};return i.forEach(u=>{l[u]&&(l[u]-=1,l[u]<=0&&delete l[u])}),l})},[]);return c.jsx(l2.Provider,{value:{relayUrls:o,addRelayUrls:a,removeRelayUrls:r},children:n})}const u2=h.createContext(void 0),jL=()=>{const n=h.useContext(u2);if(!n)throw new Error("useGroupChatContext must be used within a GroupChatContextProvider");return n};function zL({children:n}){const[e,t]=h.useState(null),[o,a]=h.useState(null),[r,i]=h.useState(0),s=h.useCallback((f,d)=>{t(f),a(d)},[]),l=h.useCallback(()=>{t(null),a(null)},[]),u=h.useCallback(()=>{i(f=>f+1)},[]);return c.jsx(u2.Provider,{value:{groupId:e,relayUrl:o,registerGroupChat:s,unregisterGroupChat:l,onMessageSent:u,refreshMessages:r},children:n})}function IL({className:n=""}){const e=[{top:"10%",left:"20%",delay:"0s"},{top:"60%",left:"80%",delay:"-5s"},{top:"30%",left:"10%",delay:"-2s"},{top:"80%",left:"30%",delay:"-7s"},{top:"20%",left:"70%",delay:"-12s"},{top:"50%",left:"90%",delay:"-3s"},{top:"90%",left:"60%",delay:"-15s"},{top:"15%",left:"50%",delay:"-8s"},{top:"70%",left:"15%",delay:"-10s"},{top:"45%",left:"45%",delay:"-4s"}];return c.jsx("div",{className:`pointer-events-none fixed inset-0 z-0 ${n}`,"aria-hidden":"true",children:e.map((t,o)=>c.jsx("div",{className:"absolute rounded-full bg-primary animate-float-slow",style:{width:"6px",height:"6px",top:t.top,left:t.left,opacity:.6,animationDelay:t.delay}},o))})}function d2(n){return"init"in n}function f2(n){return!!n.write}function r0(n){return"v"in n||"e"in n}function fu(n){if("e"in n)throw n.e;return n.v}const hu=new WeakMap;function h2(n){var e;return pu(n)&&!!((e=hu.get(n))!=null&&e[0])}function LL(n){const e=hu.get(n);e!=null&&e[0]&&(e[0]=!1,e[1].forEach(t=>t()))}function ML(n,e){let t=hu.get(n);if(!t){t=[!0,new Set],hu.set(n,t);const o=()=>{t[0]=!1};n.then(o,o)}t[1].add(e)}function pu(n){return typeof(n==null?void 0:n.then)=="function"}function p2(n,e,t){if(!t.p.has(n)){t.p.add(n);const o=()=>t.p.delete(n);e.then(o,o)}}function m2(n,e,t){var o;const a=new Set;for(const r of((o=t.get(n))==null?void 0:o.t)||[])t.has(r)&&a.add(r);for(const r of e.p)a.add(r);return a}const DL=(n,e,...t)=>e.read(...t),_L=(n,e,...t)=>e.write(...t),FL=(n,e)=>{var t;return(t=e.unstable_onInit)==null?void 0:t.call(e,n)},OL=(n,e,t)=>{var o;return(o=e.onMount)==null?void 0:o.call(e,t)},UL=(n,e)=>{const t=rn(n),o=t[0],a=t[9];let r=o.get(e);return r||(r={d:new Map,p:new Set,n:0},o.set(e,r),a==null||a(n,e)),r},BL=n=>{const e=rn(n),t=e[1],o=e[3],a=e[4],r=e[5],i=e[6],s=e[13],l=[],u=f=>{try{f()}catch(d){l.push(d)}};do{i.f&&u(i.f);const f=new Set,d=f.add.bind(f);o.forEach(p=>{var m;return(m=t.get(p))==null?void 0:m.l.forEach(d)}),o.clear(),r.forEach(d),r.clear(),a.forEach(d),a.clear(),f.forEach(u),o.size&&s(n)}while(o.size||r.size||a.size);if(l.length)throw new AggregateError(l)},VL=n=>{const e=rn(n),t=e[1],o=e[2],a=e[3],r=e[11],i=e[14],s=e[17],l=[],u=new WeakSet,f=new WeakSet,d=Array.from(a);for(;d.length;){const p=d[d.length-1],m=r(n,p);if(f.has(p)){d.pop();continue}if(u.has(p)){o.get(p)===m.n&&l.push([p,m]),f.add(p),d.pop();continue}u.add(p);for(const g of m2(p,m,t))u.has(g)||d.push(g)}for(let p=l.length-1;p>=0;--p){const[m,g]=l[p];let y=!1;for(const w of g.d.keys())if(w!==m&&a.has(w)){y=!0;break}y&&(i(n,m),s(n,m)),o.delete(m)}},WL=(n,e)=>{var t,o;const a=rn(n),r=a[1],i=a[2],s=a[3],l=a[6],u=a[7],f=a[11],d=a[12],p=a[13],m=a[14],g=a[16],y=a[17],w=f(n,e);if(r0(w)&&(r.has(e)&&i.get(e)!==w.n||Array.from(w.d).every(([P,M])=>m(n,P).n===M)))return w;w.d.clear();let v=!0;function k(){r.has(e)&&(y(n,e),p(n),d(n))}function E(P){var M;if(P===e){const O=f(n,P);if(!r0(O))if(d2(P))mu(n,P,P.init);else throw new Error("no atom init");return fu(O)}const U=m(n,P);try{return fu(U)}finally{w.d.set(P,U.n),h2(w.v)&&p2(e,w.v,U),(M=r.get(P))==null||M.t.add(e),v||k()}}let A,N;const T={get signal(){return A||(A=new AbortController),A.signal},get setSelf(){return!N&&f2(e)&&(N=(...P)=>{if(!v)try{return g(n,e,...P)}finally{p(n),d(n)}}),N}},C=w.n;try{const P=u(n,e,E,T);return mu(n,e,P),pu(P)&&(ML(P,()=>A==null?void 0:A.abort()),P.then(k,k)),(t=l.r)==null||t.call(l,e),w}catch(P){return delete w.v,w.e=P,++w.n,w}finally{v=!1,C!==w.n&&i.get(e)===C&&(i.set(e,w.n),s.add(e),(o=l.c)==null||o.call(l,e))}},qL=(n,e)=>{const t=rn(n),o=t[1],a=t[2],r=t[11],i=[e];for(;i.length;){const s=i.pop(),l=r(n,s);for(const u of m2(s,l,o)){const f=r(n,u);a.set(u,f.n),i.push(u)}}},g2=(n,e,...t)=>{const o=rn(n),a=o[3],r=o[6],i=o[8],s=o[11],l=o[12],u=o[13],f=o[14],d=o[15],p=o[17];let m=!0;const g=w=>fu(f(n,w)),y=(w,...v)=>{var k;const E=s(n,w);try{if(w===e){if(!d2(w))throw new Error("atom not writable");const A=E.n,N=v[0];mu(n,w,N),p(n,w),A!==E.n&&(a.add(w),(k=r.c)==null||k.call(r,w),d(n,w));return}else return g2(n,w,...v)}finally{m||(u(n),l(n))}};try{return i(n,e,g,y,...t)}finally{m=!1}},HL=(n,e)=>{var t;const o=rn(n),a=o[1],r=o[3],i=o[6],s=o[11],l=o[15],u=o[18],f=o[19],d=s(n,e),p=a.get(e);if(p&&!h2(d.v)){for(const[m,g]of d.d)if(!p.d.has(m)){const y=s(n,m);u(n,m).t.add(e),p.d.add(m),g!==y.n&&(r.add(m),(t=i.c)==null||t.call(i,m),l(n,m))}for(const m of p.d||[])if(!d.d.has(m)){p.d.delete(m);const g=f(n,m);g==null||g.t.delete(e)}}},y2=(n,e)=>{var t;const o=rn(n),a=o[1],r=o[4],i=o[6],s=o[10],l=o[11],u=o[12],f=o[13],d=o[14],p=o[16],m=l(n,e);let g=a.get(e);if(!g){d(n,e);for(const y of m.d.keys())y2(n,y).t.add(e);if(g={l:new Set,d:new Set(m.d.keys()),t:new Set},a.set(e,g),(t=i.m)==null||t.call(i,e),f2(e)){const y=()=>{let w=!0;const v=(...k)=>{try{return p(n,e,...k)}finally{w||(f(n),u(n))}};try{const k=s(n,e,v);k&&(g.u=()=>{w=!0;try{k()}finally{w=!1}})}finally{w=!1}};r.add(y)}}return g},$L=(n,e)=>{var t;const o=rn(n),a=o[1],r=o[5],i=o[6],s=o[11],l=o[19],u=s(n,e);let f=a.get(e);if(f&&!f.l.size&&!Array.from(f.t).some(d=>{var p;return(p=a.get(d))==null?void 0:p.d.has(e)})){f.u&&r.add(f.u),f=void 0,a.delete(e),(t=i.u)==null||t.call(i,e);for(const d of u.d.keys()){const p=l(n,d);p==null||p.t.delete(e)}return}return f},mu=(n,e,t)=>{const o=rn(n)[11],a=o(n,e),r="v"in a,i=a.v;if(pu(t))for(const s of a.d.keys())p2(e,t,o(n,s));a.v=t,delete a.e,(!r||!Object.is(i,a.v))&&(++a.n,pu(i)&&LL(i))},YL=(n,e)=>{const t=rn(n)[14];return fu(t(n,e))},KL=(n,e,...t)=>{const o=rn(n),a=o[12],r=o[13],i=o[16];try{return i(n,e,...t)}finally{r(n),a(n)}},GL=(n,e,t)=>{const o=rn(n),a=o[12],r=o[18],i=o[19],l=r(n,e).l;return l.add(t),a(n),()=>{l.delete(t),i(n,e),a(n)}},w2=new WeakMap,rn=n=>w2.get(n);function JL(...n){const e={get(o){const a=rn(e)[21];return a(e,o)},set(o,...a){const r=rn(e)[22];return r(e,o,...a)},sub(o,a){const r=rn(e)[23];return r(e,o,a)}},t=[new WeakMap,new WeakMap,new WeakMap,new Set,new Set,new Set,{},DL,_L,FL,OL,UL,BL,VL,WL,qL,g2,HL,y2,$L,mu,YL,KL,GL,void 0].map((o,a)=>n[a]||o);return w2.set(e,Object.freeze(t)),e}let ZL=0;function QL(n,e){const t=`atom${++ZL}`,o={toString(){return t}};return o.init=n,o.read=XL,o.write=eM,o}function XL(n){return n(this)}function eM(n,e,t){return e(this,typeof t=="function"?t(n(this)):t)}function tM(){return JL()}let ff;function nM(){return ff||(ff=tM()),ff}const hf=QL(!1),pf=nM(),Za=class Za extends EventTarget{constructor(){super();H(this,"currentMedia",null)}static getInstance(){return Za.instance||(Za.instance=new Za),Za.instance}pause(t){t&&(oM(t)||(this.currentMedia===t&&(this.currentMedia=null),i0(t)))}autoPlay(t){document.pictureInPictureElement&&mf(document.pictureInPictureElement)||pf.get(hf)&&this.currentMedia&&mf(this.currentMedia)||this.play(t)}play(t){t&&(document.pictureInPictureElement&&document.pictureInPictureElement!==t&&document.pictureInPictureElement.pause(),this.currentMedia&&this.currentMedia!==t&&i0(this.currentMedia),this.currentMedia=t,!mf(t)&&aM(this.currentMedia).catch(o=>{console.error("Error playing media:",o),this.currentMedia=null}))}playAudioBackground(t,o=0){this.dispatchEvent(new CustomEvent("playAudioBackground",{detail:{src:t,time:o}})),pf.set(hf,!0)}stopAudioBackground(){this.dispatchEvent(new Event("stopAudioBackground")),pf.set(hf,!1)}};H(Za,"instance");let Th=Za;const zn=Th.getInstance();function rd(n){return n.pauseVideo!==void 0}function mf(n){return rd(n)?n.getPlayerState()===window.YT.PlayerState.PLAYING:n.currentTime>0&&!n.paused&&!n.ended&&n.readyState>=2}function oM(n){return rd(n)?!1:document.pictureInPictureElement===n?!0:n.webkitPresentationMode==="picture-in-picture"}function i0(n){return rd(n)?n.pauseVideo():n.pause()}async function aM(n){return rd(n)?n.playVideo():n.play()}function v2(n,[e,t]){return Math.min(t,Math.max(e,n))}function Yr(n,e,{checkForDefaultPrevented:t=!0}={}){return function(a){if(n==null||n(a),t===!1||!a.defaultPrevented)return e==null?void 0:e(a)}}function s0(n,e){if(typeof n=="function")return n(e);n!=null&&(n.current=e)}function rM(...n){return e=>{let t=!1;const o=n.map(a=>{const r=s0(a,e);return!t&&typeof r=="function"&&(t=!0),r});if(t)return()=>{for(let a=0;a<o.length;a++){const r=o[a];typeof r=="function"?r():s0(n[a],null)}}}}function Ia(...n){return h.useCallback(rM(...n),n)}function b2(n,e=[]){let t=[];function o(r,i){const s=h.createContext(i),l=t.length;t=[...t,i];const u=d=>{var v;const{scope:p,children:m,...g}=d,y=((v=p==null?void 0:p[n])==null?void 0:v[l])||s,w=h.useMemo(()=>g,Object.values(g));return c.jsx(y.Provider,{value:w,children:m})};u.displayName=r+"Provider";function f(d,p){var y;const m=((y=p==null?void 0:p[n])==null?void 0:y[l])||s,g=h.useContext(m);if(g)return g;if(i!==void 0)return i;throw new Error(`\`${d}\` must be used within \`${r}\``)}return[u,f]}const a=()=>{const r=t.map(i=>h.createContext(i));return function(s){const l=(s==null?void 0:s[n])||r;return h.useMemo(()=>({[`__scope${n}`]:{...s,[n]:l}}),[s,l])}};return a.scopeName=n,[o,iM(a,...e)]}function iM(...n){const e=n[0];if(n.length===1)return e;const t=()=>{const o=n.map(a=>({useScope:a(),scopeName:a.scopeName}));return function(r){const i=o.reduce((s,{useScope:l,scopeName:u})=>{const d=l(r)[`__scope${u}`];return{...s,...d}},{});return h.useMemo(()=>({[`__scope${e.scopeName}`]:i}),[i])}};return t.scopeName=e.scopeName,t}var k2=globalThis!=null&&globalThis.document?h.useLayoutEffect:()=>{},sM=dl[" useInsertionEffect ".trim().toString()]||k2;function lM({prop:n,defaultProp:e,onChange:t=()=>{},caller:o}){const[a,r,i]=cM({defaultProp:e,onChange:t}),s=n!==void 0,l=s?n:a;{const f=h.useRef(n!==void 0);h.useEffect(()=>{const d=f.current;d!==s&&console.warn(`${o} is changing from ${d?"controlled":"uncontrolled"} to ${s?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),f.current=s},[s,o])}const u=h.useCallback(f=>{var d;if(s){const p=uM(f)?f(n):f;p!==n&&((d=i.current)==null||d.call(i,p))}else r(f)},[s,n,r,i]);return[l,u]}function cM({defaultProp:n,onChange:e}){const[t,o]=h.useState(n),a=h.useRef(t),r=h.useRef(e);return sM(()=>{r.current=e},[e]),h.useEffect(()=>{var i;a.current!==t&&((i=r.current)==null||i.call(r,t),a.current=t)},[t,a]),[t,o,r]}function uM(n){return typeof n=="function"}var dM=h.createContext(void 0);function fM(n){const e=h.useContext(dM);return n||e||"ltr"}function hM(n){const e=h.useRef({value:n,previous:n});return h.useMemo(()=>(e.current.value!==n&&(e.current.previous=e.current.value,e.current.value=n),e.current.previous),[n])}function pM(n){const[e,t]=h.useState(void 0);return k2(()=>{if(n){t({width:n.offsetWidth,height:n.offsetHeight});const o=new ResizeObserver(a=>{if(!Array.isArray(a)||!a.length)return;const r=a[0];let i,s;if("borderBoxSize"in r){const l=r.borderBoxSize,u=Array.isArray(l)?l[0]:l;i=u.inlineSize,s=u.blockSize}else i=n.offsetWidth,s=n.offsetHeight;t({width:i,height:s})});return o.observe(n,{box:"border-box"}),()=>o.unobserve(n)}else t(void 0)},[n]),e}var mM=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Pl=mM.reduce((n,e)=>{const t=Na(`Primitive.${e}`),o=h.forwardRef((a,r)=>{const{asChild:i,...s}=a,l=i?t:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),c.jsx(l,{...s,ref:r})});return o.displayName=`Primitive.${e}`,{...n,[e]:o}},{});function gM(n){const e=n+"CollectionProvider",[t,o]=b2(e),[a,r]=t(e,{collectionRef:{current:null},itemMap:new Map}),i=y=>{const{scope:w,children:v}=y,k=ee.useRef(null),E=ee.useRef(new Map).current;return c.jsx(a,{scope:w,itemMap:E,collectionRef:k,children:v})};i.displayName=e;const s=n+"CollectionSlot",l=Na(s),u=ee.forwardRef((y,w)=>{const{scope:v,children:k}=y,E=r(s,v),A=Ia(w,E.collectionRef);return c.jsx(l,{ref:A,children:k})});u.displayName=s;const f=n+"CollectionItemSlot",d="data-radix-collection-item",p=Na(f),m=ee.forwardRef((y,w)=>{const{scope:v,children:k,...E}=y,A=ee.useRef(null),N=Ia(w,A),T=r(f,v);return ee.useEffect(()=>(T.itemMap.set(A,{ref:A,...E}),()=>void T.itemMap.delete(A))),c.jsx(p,{[d]:"",ref:N,children:k})});m.displayName=f;function g(y){const w=r(n+"CollectionConsumer",y);return ee.useCallback(()=>{const k=w.collectionRef.current;if(!k)return[];const E=Array.from(k.querySelectorAll(`[${d}]`));return Array.from(w.itemMap.values()).sort((T,C)=>E.indexOf(T.ref.current)-E.indexOf(C.ref.current))},[w.collectionRef,w.itemMap])}return[{Provider:i,Slot:u,ItemSlot:m},g,o]}var S2=["PageUp","PageDown"],x2=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],A2={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},ns="Slider",[jh,yM,wM]=gM(ns),[E2,VV]=b2(ns,[wM]),[vM,id]=E2(ns),R2=h.forwardRef((n,e)=>{const{name:t,min:o=0,max:a=100,step:r=1,orientation:i="horizontal",disabled:s=!1,minStepsBetweenThumbs:l=0,defaultValue:u=[o],value:f,onValueChange:d=()=>{},onValueCommit:p=()=>{},inverted:m=!1,form:g,...y}=n,w=h.useRef(new Set),v=h.useRef(0),E=i==="horizontal"?bM:kM,[A=[],N]=lM({prop:f,defaultProp:u,onChange:O=>{var V;(V=[...w.current][v.current])==null||V.focus(),d(O)}}),T=h.useRef(A);function C(O){const W=RM(A,O);U(O,W)}function P(O){U(O,v.current)}function M(){const O=T.current[v.current];A[v.current]!==O&&p(A)}function U(O,W,{commit:V}={commit:!1}){const j=TM(r),L=jM(Math.round((O-o)/r)*r+o,j),I=v2(L,[o,a]);N((b=[])=>{const S=AM(b,I,W);if(NM(S,l*r)){v.current=S.indexOf(I);const z=String(S)!==String(b);return z&&V&&p(S),z?S:b}else return b})}return c.jsx(vM,{scope:n.__scopeSlider,name:t,disabled:s,min:o,max:a,valueIndexToChangeRef:v,thumbs:w.current,values:A,orientation:i,form:g,children:c.jsx(jh.Provider,{scope:n.__scopeSlider,children:c.jsx(jh.Slot,{scope:n.__scopeSlider,children:c.jsx(E,{"aria-disabled":s,"data-disabled":s?"":void 0,...y,ref:e,onPointerDown:Yr(y.onPointerDown,()=>{s||(T.current=A)}),min:o,max:a,inverted:m,onSlideStart:s?void 0:C,onSlideMove:s?void 0:P,onSlideEnd:s?void 0:M,onHomeKeyDown:()=>!s&&U(o,0,{commit:!0}),onEndKeyDown:()=>!s&&U(a,A.length-1,{commit:!0}),onStepKeyDown:({event:O,direction:W})=>{if(!s){const L=S2.includes(O.key)||O.shiftKey&&x2.includes(O.key)?10:1,I=v.current,b=A[I],S=r*L*W;U(b+S,I,{commit:!0})}}})})})})});R2.displayName=ns;var[C2,P2]=E2(ns,{startEdge:"left",endEdge:"right",size:"width",direction:1}),bM=h.forwardRef((n,e)=>{const{min:t,max:o,dir:a,inverted:r,onSlideStart:i,onSlideMove:s,onSlideEnd:l,onStepKeyDown:u,...f}=n,[d,p]=h.useState(null),m=Ia(e,E=>p(E)),g=h.useRef(void 0),y=fM(a),w=y==="ltr",v=w&&!r||!w&&r;function k(E){const A=g.current||d.getBoundingClientRect(),N=[0,A.width],C=om(N,v?[t,o]:[o,t]);return g.current=A,C(E-A.left)}return c.jsx(C2,{scope:n.__scopeSlider,startEdge:v?"left":"right",endEdge:v?"right":"left",direction:v?1:-1,size:"width",children:c.jsx(N2,{dir:y,"data-orientation":"horizontal",...f,ref:m,style:{...f.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:E=>{const A=k(E.clientX);i==null||i(A)},onSlideMove:E=>{const A=k(E.clientX);s==null||s(A)},onSlideEnd:()=>{g.current=void 0,l==null||l()},onStepKeyDown:E=>{const N=A2[v?"from-left":"from-right"].includes(E.key);u==null||u({event:E,direction:N?-1:1})}})})}),kM=h.forwardRef((n,e)=>{const{min:t,max:o,inverted:a,onSlideStart:r,onSlideMove:i,onSlideEnd:s,onStepKeyDown:l,...u}=n,f=h.useRef(null),d=Ia(e,f),p=h.useRef(void 0),m=!a;function g(y){const w=p.current||f.current.getBoundingClientRect(),v=[0,w.height],E=om(v,m?[o,t]:[t,o]);return p.current=w,E(y-w.top)}return c.jsx(C2,{scope:n.__scopeSlider,startEdge:m?"bottom":"top",endEdge:m?"top":"bottom",size:"height",direction:m?1:-1,children:c.jsx(N2,{"data-orientation":"vertical",...u,ref:d,style:{...u.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:y=>{const w=g(y.clientY);r==null||r(w)},onSlideMove:y=>{const w=g(y.clientY);i==null||i(w)},onSlideEnd:()=>{p.current=void 0,s==null||s()},onStepKeyDown:y=>{const v=A2[m?"from-bottom":"from-top"].includes(y.key);l==null||l({event:y,direction:v?-1:1})}})})}),N2=h.forwardRef((n,e)=>{const{__scopeSlider:t,onSlideStart:o,onSlideMove:a,onSlideEnd:r,onHomeKeyDown:i,onEndKeyDown:s,onStepKeyDown:l,...u}=n,f=id(ns,t);return c.jsx(Pl.span,{...u,ref:e,onKeyDown:Yr(n.onKeyDown,d=>{d.key==="Home"?(i(d),d.preventDefault()):d.key==="End"?(s(d),d.preventDefault()):S2.concat(x2).includes(d.key)&&(l(d),d.preventDefault())}),onPointerDown:Yr(n.onPointerDown,d=>{const p=d.target;p.setPointerCapture(d.pointerId),d.preventDefault(),f.thumbs.has(p)?p.focus():o(d)}),onPointerMove:Yr(n.onPointerMove,d=>{d.target.hasPointerCapture(d.pointerId)&&a(d)}),onPointerUp:Yr(n.onPointerUp,d=>{const p=d.target;p.hasPointerCapture(d.pointerId)&&(p.releasePointerCapture(d.pointerId),r(d))})})}),T2="SliderTrack",j2=h.forwardRef((n,e)=>{const{__scopeSlider:t,...o}=n,a=id(T2,t);return c.jsx(Pl.span,{"data-disabled":a.disabled?"":void 0,"data-orientation":a.orientation,...o,ref:e})});j2.displayName=T2;var zh="SliderRange",z2=h.forwardRef((n,e)=>{const{__scopeSlider:t,...o}=n,a=id(zh,t),r=P2(zh,t),i=h.useRef(null),s=Ia(e,i),l=a.values.length,u=a.values.map(p=>M2(p,a.min,a.max)),f=l>1?Math.min(...u):0,d=100-Math.max(...u);return c.jsx(Pl.span,{"data-orientation":a.orientation,"data-disabled":a.disabled?"":void 0,...o,ref:s,style:{...n.style,[r.startEdge]:f+"%",[r.endEdge]:d+"%"}})});z2.displayName=zh;var Ih="SliderThumb",I2=h.forwardRef((n,e)=>{const t=yM(n.__scopeSlider),[o,a]=h.useState(null),r=Ia(e,s=>a(s)),i=h.useMemo(()=>o?t().findIndex(s=>s.ref.current===o):-1,[t,o]);return c.jsx(SM,{...n,ref:r,index:i})}),SM=h.forwardRef((n,e)=>{const{__scopeSlider:t,index:o,name:a,...r}=n,i=id(Ih,t),s=P2(Ih,t),[l,u]=h.useState(null),f=Ia(e,k=>u(k)),d=l?i.form||!!l.closest("form"):!0,p=pM(l),m=i.values[o],g=m===void 0?0:M2(m,i.min,i.max),y=EM(o,i.values.length),w=p==null?void 0:p[s.size],v=w?CM(w,g,s.direction):0;return h.useEffect(()=>{if(l)return i.thumbs.add(l),()=>{i.thumbs.delete(l)}},[l,i.thumbs]),c.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[s.startEdge]:`calc(${g}% + ${v}px)`},children:[c.jsx(jh.ItemSlot,{scope:n.__scopeSlider,children:c.jsx(Pl.span,{role:"slider","aria-label":n["aria-label"]||y,"aria-valuemin":i.min,"aria-valuenow":m,"aria-valuemax":i.max,"aria-orientation":i.orientation,"data-orientation":i.orientation,"data-disabled":i.disabled?"":void 0,tabIndex:i.disabled?void 0:0,...r,ref:f,style:m===void 0?{display:"none"}:n.style,onFocus:Yr(n.onFocus,()=>{i.valueIndexToChangeRef.current=o})})}),d&&c.jsx(L2,{name:a??(i.name?i.name+(i.values.length>1?"[]":""):void 0),form:i.form,value:m},o)]})});I2.displayName=Ih;var xM="RadioBubbleInput",L2=h.forwardRef(({__scopeSlider:n,value:e,...t},o)=>{const a=h.useRef(null),r=Ia(a,o),i=hM(e);return h.useEffect(()=>{const s=a.current;if(!s)return;const l=window.HTMLInputElement.prototype,f=Object.getOwnPropertyDescriptor(l,"value").set;if(i!==e&&f){const d=new Event("input",{bubbles:!0});f.call(s,e),s.dispatchEvent(d)}},[i,e]),c.jsx(Pl.input,{style:{display:"none"},...t,ref:r,defaultValue:e})});L2.displayName=xM;function AM(n=[],e,t){const o=[...n];return o[t]=e,o.sort((a,r)=>a-r)}function M2(n,e,t){const r=100/(t-e)*(n-e);return v2(r,[0,100])}function EM(n,e){return e>2?`Value ${n+1} of ${e}`:e===2?["Minimum","Maximum"][n]:void 0}function RM(n,e){if(n.length===1)return 0;const t=n.map(a=>Math.abs(a-e)),o=Math.min(...t);return t.indexOf(o)}function CM(n,e,t){const o=n/2,r=om([0,50],[0,o]);return(o-r(e)*t)*t}function PM(n){return n.slice(0,-1).map((e,t)=>n[t+1]-e)}function NM(n,e){if(e>0){const t=PM(n);return Math.min(...t)>=e}return!0}function om(n,e){return t=>{if(n[0]===n[1]||e[0]===e[1])return e[0];const o=(e[1]-e[0])/(n[1]-n[0]);return e[0]+o*(t-n[0])}}function TM(n){return(String(n).split(".")[1]||"").length}function jM(n,e){const t=Math.pow(10,e);return Math.round(n*t)/t}var D2=R2,zM=j2,IM=z2,LM=I2;const _2=h.forwardRef(({className:n,hideThumb:e,enableHoverAnimation:t,...o},a)=>{const[r,i]=h.useState(!1);return c.jsxs(D2,{ref:a,className:ne("relative flex w-full touch-none select-none items-center",n),...o,onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),onTouchStart:()=>i(!0),onTouchEnd:()=>i(!1),children:[c.jsx(zM,{className:ne("relative w-full grow cursor-pointer overflow-hidden rounded-full bg-primary/20 transition-all",r&&t?"h-3":"h-1.5"),children:c.jsx(IM,{className:"absolute h-full rounded-full bg-primary disabled:bg-primary/30"})}),!e&&c.jsx(LM,{className:ne("block h-4 w-4 cursor-pointer rounded-full border-2 border-primary bg-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50")})]})});_2.displayName=D2.displayName;const po={ComicNeue:{400:"https://fonts.gstatic.com/s/comicneue/v9/4UaHrEJDsxBrF37olUeDx60.ttf",700:"https://fonts.gstatic.com/s/comicneue/v9/4UaErEJDsxBrF37olUeD_xHMwps.ttf"},JetBrainsMono:{400:"https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbY2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKxjPQ.ttf",700:"https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbY2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8L6tjPQ.ttf"},SpaceGrotesk:{400:"https://fonts.gstatic.com/s/spacegrotesk/v22/V8mQoQDjQSkFtoMM3T6r8E7mF71Q-gOoraIAEj7oUUsj.ttf",700:"https://fonts.gstatic.com/s/spacegrotesk/v22/V8mQoQDjQSkFtoMM3T6r8E7mF71Q-gOoraIAEj4PVksj.ttf"},Caveat:{400:"https://fonts.gstatic.com/s/caveat/v23/Wnz6HAc5bAfYB2Q7ZjYY.woff2",700:"https://fonts.gstatic.com/s/caveat/v23/Wnz6HAc5bAfYB2Q7ZjYY.woff2"},Orbitron:{400:"https://fonts.gstatic.com/s/orbitron/v35/yMJRMIlzdpvBhQQL_Qq7dy0.woff2",700:"https://fonts.gstatic.com/s/orbitron/v35/yMJRMIlzdpvBhQQL_Qq7dy0.woff2"}};let Br=null;function MM(n){const e={default:'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',monospace:'"JetBrains Mono", monospace',dyslexic:'"Comic Neue", sans-serif',sourcesans:'"Space Grotesk", sans-serif',caveat:'"Caveat", cursive',orbitron:'"Orbitron", sans-serif'},t=e[n]||e.default;Br&&Br.remove(),Br=document.createElement("style"),Br.setAttribute("data-app-font","true"),Br.textContent=`*, *::before, *::after { font-family: ${t} !important; }`,document.head.appendChild(Br)}async function mo(n,e,t){try{const a=await new FontFace(n,`url(${t})`,{weight:e,style:"normal",display:"swap"}).load();document.fonts.add(a)}catch(o){console.warn(`Font load failed: ${n} ${e}`,o)}}async function DM(){await Promise.all([mo("Comic Neue","400",po.ComicNeue[400]),mo("Comic Neue","700",po.ComicNeue[700]),mo("JetBrains Mono","400",po.JetBrainsMono[400]),mo("JetBrains Mono","700",po.JetBrainsMono[700]),mo("Space Grotesk","400",po.SpaceGrotesk[400]),mo("Space Grotesk","700",po.SpaceGrotesk[700]),mo("Caveat","400",po.Caveat[400]),mo("Caveat","700",po.Caveat[700]),mo("Orbitron","400",po.Orbitron[400]),mo("Orbitron","700",po.Orbitron[700])])}const F2=h.createContext(void 0),Wa=()=>{const n=h.useContext(F2);if(!n)throw new Error("useUserPreferences must be used within a UserPreferencesProvider");return n};function _M({children:n}){const[e,t]=h.useState(pe.getNotificationListStyle()),[o,a]=h.useState(pe.getFont()),[r,i]=h.useState(pe.getFontSize()),[s,l]=h.useState(!0),[u,f]=h.useState(pe.getSidebarCollapse()),[d,p]=h.useState(pe.getQuickReaction()),[m,g]=h.useState(pe.getQuickReactionEmoji()),[y,w]=h.useState(pe.getAllowInsecureConnection()),[v,k]=h.useState(pe.getEnableTorMode()||mp()),E=O=>{t(O),pe.setNotificationListStyle(O)},A=O=>{f(O),pe.setSidebarCollapse(O)},N=O=>{p(O),pe.setQuickReaction(O)},T=O=>{g(O),pe.setQuickReactionEmoji(O)},C=O=>{w(O),pe.setAllowInsecureConnection(O)},P=O=>{k(O),pe.setEnableTorMode(O)},M=O=>{a(O),pe.setFont(O),MM(O)},U=O=>{i(O),pe.setFontSize(O);const W={default:"100%",medium:"112.5%",large:"125%"};document.documentElement.style.setProperty("font-size",W[O])};return h.useEffect(()=>{M(o),U(r)},[]),c.jsx(F2.Provider,{value:{notificationListStyle:e,updateNotificationListStyle:E,font:o,updateFont:M,fontSize:r,updateFontSize:U,muteMedia:s,updateMuteMedia:l,sidebarCollapse:u,updateSidebarCollapse:A,quickReaction:d,updateQuickReaction:N,quickReactionEmoji:m,updateQuickReactionEmoji:T,allowInsecureConnection:y,updateAllowInsecureConnection:C,enableTorMode:v,updateEnableTorMode:P},children:n})}var Lh=h.forwardRef((n,e)=>{const{children:t,...o}=n,a=h.Children.toArray(t),r=a.find(OM);if(r){const i=r.props.children,s=a.map(l=>l===r?h.Children.count(i)>1?h.Children.only(null):h.isValidElement(i)?i.props.children:null:l);return c.jsx(Mh,{...o,ref:e,children:h.isValidElement(i)?h.cloneElement(i,void 0,s):null})}return c.jsx(Mh,{...o,ref:e,children:t})});Lh.displayName="Slot";var Mh=h.forwardRef((n,e)=>{const{children:t,...o}=n;if(h.isValidElement(t)){const a=BM(t);return h.cloneElement(t,{...UM(o,t.props),ref:e?ta(e,a):a})}return h.Children.count(t)>1?h.Children.only(null):null});Mh.displayName="SlotClone";var FM=({children:n})=>c.jsx(c.Fragment,{children:n});function OM(n){return h.isValidElement(n)&&n.type===FM}function UM(n,e){const t={...e};for(const o in e){const a=n[o],r=e[o];/^on[A-Z]/.test(o)?a&&r?t[o]=(...s)=>{r(...s),a(...s)}:a&&(t[o]=a):o==="style"?t[o]={...a,...r}:o==="className"&&(t[o]=[a,r].filter(Boolean).join(" "))}return{...n,...t}}function BM(n){var o,a;let e=(o=Object.getOwnPropertyDescriptor(n.props,"ref"))==null?void 0:o.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=(a=Object.getOwnPropertyDescriptor(n,"ref"))==null?void 0:a.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}function O2(n){const e=n+"CollectionProvider",[t,o]=Bn(e),[a,r]=t(e,{collectionRef:{current:null},itemMap:new Map}),i=m=>{const{scope:g,children:y}=m,w=ee.useRef(null),v=ee.useRef(new Map).current;return c.jsx(a,{scope:g,itemMap:v,collectionRef:w,children:y})};i.displayName=e;const s=n+"CollectionSlot",l=ee.forwardRef((m,g)=>{const{scope:y,children:w}=m,v=r(s,y),k=zt(g,v.collectionRef);return c.jsx(Lh,{ref:k,children:w})});l.displayName=s;const u=n+"CollectionItemSlot",f="data-radix-collection-item",d=ee.forwardRef((m,g)=>{const{scope:y,children:w,...v}=m,k=ee.useRef(null),E=zt(g,k),A=r(u,y);return ee.useEffect(()=>(A.itemMap.set(k,{ref:k,...v}),()=>void A.itemMap.delete(k))),c.jsx(Lh,{[f]:"",ref:E,children:w})});d.displayName=u;function p(m){const g=r(n+"CollectionConsumer",m);return ee.useCallback(()=>{const w=g.collectionRef.current;if(!w)return[];const v=Array.from(w.querySelectorAll(`[${f}]`));return Array.from(g.itemMap.values()).sort((A,N)=>v.indexOf(A.ref.current)-v.indexOf(N.ref.current))},[g.collectionRef,g.itemMap])}return[{Provider:i,Slot:l,ItemSlot:d},p,o]}var VM=h.createContext(void 0);function sd(n){const e=h.useContext(VM);return n||e||"ltr"}var gf="rovingFocusGroup.onEntryFocus",WM={bubbles:!1,cancelable:!0},ld="RovingFocusGroup",[Dh,U2,qM]=O2(ld),[HM,cd]=Bn(ld,[qM]),[$M,YM]=HM(ld),B2=h.forwardRef((n,e)=>c.jsx(Dh.Provider,{scope:n.__scopeRovingFocusGroup,children:c.jsx(Dh.Slot,{scope:n.__scopeRovingFocusGroup,children:c.jsx(KM,{...n,ref:e})})}));B2.displayName=ld;var KM=h.forwardRef((n,e)=>{const{__scopeRovingFocusGroup:t,orientation:o,loop:a=!1,dir:r,currentTabStopId:i,defaultCurrentTabStopId:s,onCurrentTabStopIdChange:l,onEntryFocus:u,preventScrollOnEntryFocus:f=!1,...d}=n,p=h.useRef(null),m=zt(e,p),g=sd(r),[y=null,w]=Ua({prop:i,defaultProp:s,onChange:l}),[v,k]=h.useState(!1),E=Ot(u),A=U2(t),N=h.useRef(!1),[T,C]=h.useState(0);return h.useEffect(()=>{const P=p.current;if(P)return P.addEventListener(gf,E),()=>P.removeEventListener(gf,E)},[E]),c.jsx($M,{scope:t,orientation:o,dir:g,loop:a,currentTabStopId:y,onItemFocus:h.useCallback(P=>w(P),[w]),onItemShiftTab:h.useCallback(()=>k(!0),[]),onFocusableItemAdd:h.useCallback(()=>C(P=>P+1),[]),onFocusableItemRemove:h.useCallback(()=>C(P=>P-1),[]),children:c.jsx(vt.div,{tabIndex:v||T===0?-1:0,"data-orientation":o,...d,ref:m,style:{outline:"none",...n.style},onMouseDown:Fe(n.onMouseDown,()=>{N.current=!0}),onFocus:Fe(n.onFocus,P=>{const M=!N.current;if(P.target===P.currentTarget&&M&&!v){const U=new CustomEvent(gf,WM);if(P.currentTarget.dispatchEvent(U),!U.defaultPrevented){const O=A().filter(I=>I.focusable),W=O.find(I=>I.active),V=O.find(I=>I.id===y),L=[W,V,...O].filter(Boolean).map(I=>I.ref.current);q2(L,f)}}N.current=!1}),onBlur:Fe(n.onBlur,()=>k(!1))})})}),V2="RovingFocusGroupItem",W2=h.forwardRef((n,e)=>{const{__scopeRovingFocusGroup:t,focusable:o=!0,active:a=!1,tabStopId:r,...i}=n,s=Ao(),l=r||s,u=YM(V2,t),f=u.currentTabStopId===l,d=U2(t),{onFocusableItemAdd:p,onFocusableItemRemove:m}=u;return h.useEffect(()=>{if(o)return p(),()=>m()},[o,p,m]),c.jsx(Dh.ItemSlot,{scope:t,id:l,focusable:o,active:a,children:c.jsx(vt.span,{tabIndex:f?0:-1,"data-orientation":u.orientation,...i,ref:e,onMouseDown:Fe(n.onMouseDown,g=>{o?u.onItemFocus(l):g.preventDefault()}),onFocus:Fe(n.onFocus,()=>u.onItemFocus(l)),onKeyDown:Fe(n.onKeyDown,g=>{if(g.key==="Tab"&&g.shiftKey){u.onItemShiftTab();return}if(g.target!==g.currentTarget)return;const y=ZM(g,u.orientation,u.dir);if(y!==void 0){if(g.metaKey||g.ctrlKey||g.altKey||g.shiftKey)return;g.preventDefault();let v=d().filter(k=>k.focusable).map(k=>k.ref.current);if(y==="last")v.reverse();else if(y==="prev"||y==="next"){y==="prev"&&v.reverse();const k=v.indexOf(g.currentTarget);v=u.loop?QM(v,k+1):v.slice(k+1)}setTimeout(()=>q2(v))}})})})});W2.displayName=V2;var GM={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function JM(n,e){return e!=="rtl"?n:n==="ArrowLeft"?"ArrowRight":n==="ArrowRight"?"ArrowLeft":n}function ZM(n,e,t){const o=JM(n.key,t);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(o))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(o)))return GM[o]}function q2(n,e=!1){const t=document.activeElement;for(const o of n)if(o===t||(o.focus({preventScroll:e}),document.activeElement!==t))return}function QM(n,e){return n.map((t,o)=>n[(e+o)%n.length])}var H2=B2,$2=W2,Y2=h.forwardRef((n,e)=>{const{children:t,...o}=n,a=h.Children.toArray(t),r=a.find(eD);if(r){const i=r.props.children,s=a.map(l=>l===r?h.Children.count(i)>1?h.Children.only(null):h.isValidElement(i)?i.props.children:null:l);return c.jsx(_h,{...o,ref:e,children:h.isValidElement(i)?h.cloneElement(i,void 0,s):null})}return c.jsx(_h,{...o,ref:e,children:t})});Y2.displayName="Slot";var _h=h.forwardRef((n,e)=>{const{children:t,...o}=n;if(h.isValidElement(t)){const a=nD(t);return h.cloneElement(t,{...tD(o,t.props),ref:e?ta(e,a):a})}return h.Children.count(t)>1?h.Children.only(null):null});_h.displayName="SlotClone";var XM=({children:n})=>c.jsx(c.Fragment,{children:n});function eD(n){return h.isValidElement(n)&&n.type===XM}function tD(n,e){const t={...e};for(const o in e){const a=n[o],r=e[o];/^on[A-Z]/.test(o)?a&&r?t[o]=(...s)=>{r(...s),a(...s)}:a&&(t[o]=a):o==="style"?t[o]={...a,...r}:o==="className"&&(t[o]=[a,r].filter(Boolean).join(" "))}return{...n,...t}}function nD(n){var o,a;let e=(o=Object.getOwnPropertyDescriptor(n.props,"ref"))==null?void 0:o.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=(a=Object.getOwnPropertyDescriptor(n,"ref"))==null?void 0:a.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}var Fh=["Enter"," "],oD=["ArrowDown","PageUp","Home"],K2=["ArrowUp","PageDown","End"],aD=[...oD,...K2],rD={ltr:[...Fh,"ArrowRight"],rtl:[...Fh,"ArrowLeft"]},iD={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Nl="Menu",[tl,sD,lD]=O2(Nl),[Nr,G2]=Bn(Nl,[lD,Qi,cd]),Tl=Qi(),J2=cd(),[Z2,qa]=Nr(Nl),[cD,jl]=Nr(Nl),Q2=n=>{const{__scopeMenu:e,open:t=!1,children:o,dir:a,onOpenChange:r,modal:i=!0}=n,s=Tl(e),[l,u]=h.useState(null),f=h.useRef(!1),d=Ot(r),p=sd(a);return h.useEffect(()=>{const m=()=>{f.current=!0,document.addEventListener("pointerdown",g,{capture:!0,once:!0}),document.addEventListener("pointermove",g,{capture:!0,once:!0})},g=()=>f.current=!1;return document.addEventListener("keydown",m,{capture:!0}),()=>{document.removeEventListener("keydown",m,{capture:!0}),document.removeEventListener("pointerdown",g,{capture:!0}),document.removeEventListener("pointermove",g,{capture:!0})}},[]),c.jsx(Xu,{...s,children:c.jsx(Z2,{scope:e,open:t,onOpenChange:d,content:l,onContentChange:u,children:c.jsx(cD,{scope:e,onClose:h.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:f,dir:p,modal:i,children:o})})})};Q2.displayName=Nl;var uD="MenuAnchor",am=h.forwardRef((n,e)=>{const{__scopeMenu:t,...o}=n,a=Tl(t);return c.jsx(ed,{...a,...o,ref:e})});am.displayName=uD;var rm="MenuPortal",[dD,X2]=Nr(rm,{forceMount:void 0}),ek=n=>{const{__scopeMenu:e,forceMount:t,children:o,container:a}=n,r=qa(rm,e);return c.jsx(dD,{scope:e,forceMount:t,children:c.jsx(Vn,{present:t||r.open,children:c.jsx(qu,{asChild:!0,container:a,children:o})})})};ek.displayName=rm;var On="MenuContent",[fD,im]=Nr(On),tk=h.forwardRef((n,e)=>{const t=X2(On,n.__scopeMenu),{forceMount:o=t.forceMount,...a}=n,r=qa(On,n.__scopeMenu),i=jl(On,n.__scopeMenu);return c.jsx(tl.Provider,{scope:n.__scopeMenu,children:c.jsx(Vn,{present:o||r.open,children:c.jsx(tl.Slot,{scope:n.__scopeMenu,children:i.modal?c.jsx(hD,{...a,ref:e}):c.jsx(pD,{...a,ref:e})})})})}),hD=h.forwardRef((n,e)=>{const t=qa(On,n.__scopeMenu),o=h.useRef(null),a=zt(e,o);return h.useEffect(()=>{const r=o.current;if(r)return zp(r)},[]),c.jsx(sm,{...n,ref:a,trapFocus:t.open,disableOutsidePointerEvents:t.open,disableOutsideScroll:!0,onFocusOutside:Fe(n.onFocusOutside,r=>r.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>t.onOpenChange(!1)})}),pD=h.forwardRef((n,e)=>{const t=qa(On,n.__scopeMenu);return c.jsx(sm,{...n,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>t.onOpenChange(!1)})}),sm=h.forwardRef((n,e)=>{const{__scopeMenu:t,loop:o=!1,trapFocus:a,onOpenAutoFocus:r,onCloseAutoFocus:i,disableOutsidePointerEvents:s,onEntryFocus:l,onEscapeKeyDown:u,onPointerDownOutside:f,onFocusOutside:d,onInteractOutside:p,onDismiss:m,disableOutsideScroll:g,...y}=n,w=qa(On,t),v=jl(On,t),k=Tl(t),E=J2(t),A=sD(t),[N,T]=h.useState(null),C=h.useRef(null),P=zt(e,C,w.onContentChange),M=h.useRef(0),U=h.useRef(""),O=h.useRef(0),W=h.useRef(null),V=h.useRef("right"),j=h.useRef(0),L=g?$u:h.Fragment,I=g?{as:Y2,allowPinchZoom:!0}:void 0,b=z=>{var de,he;const F=U.current+z,D=A().filter(we=>!we.disabled),q=document.activeElement,J=(de=D.find(we=>we.ref.current===q))==null?void 0:de.textValue,ae=D.map(we=>we.textValue),ge=RD(ae,F,J),ie=(he=D.find(we=>we.textValue===ge))==null?void 0:he.ref.current;(function we(ke){U.current=ke,window.clearTimeout(M.current),ke!==""&&(M.current=window.setTimeout(()=>we(""),1e3))})(F),ie&&setTimeout(()=>ie.focus())};h.useEffect(()=>()=>window.clearTimeout(M.current),[]),jp();const S=h.useCallback(z=>{var D,q;return V.current===((D=W.current)==null?void 0:D.side)&&PD(z,(q=W.current)==null?void 0:q.area)},[]);return c.jsx(fD,{scope:t,searchRef:U,onItemEnter:h.useCallback(z=>{S(z)&&z.preventDefault()},[S]),onItemLeave:h.useCallback(z=>{var F;S(z)||((F=C.current)==null||F.focus(),T(null))},[S]),onTriggerLeave:h.useCallback(z=>{S(z)&&z.preventDefault()},[S]),pointerGraceTimerRef:O,onPointerGraceIntentChange:h.useCallback(z=>{W.current=z},[]),children:c.jsx(L,{...I,children:c.jsx(Wu,{asChild:!0,trapped:a,onMountAutoFocus:Fe(r,z=>{var F;z.preventDefault(),(F=C.current)==null||F.focus({preventScroll:!0})}),onUnmountAutoFocus:i,children:c.jsx(El,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:u,onPointerDownOutside:f,onFocusOutside:d,onInteractOutside:p,onDismiss:m,children:c.jsx(H2,{asChild:!0,...E,dir:v.dir,orientation:"vertical",loop:o,currentTabStopId:N,onCurrentTabStopIdChange:T,onEntryFocus:Fe(l,z=>{v.isUsingKeyboardRef.current||z.preventDefault()}),preventScrollOnEntryFocus:!0,children:c.jsx(Jp,{role:"menu","aria-orientation":"vertical","data-state":wk(w.open),"data-radix-menu-content":"",dir:v.dir,...k,...y,ref:P,style:{outline:"none",...y.style},onKeyDown:Fe(y.onKeyDown,z=>{const D=z.target.closest("[data-radix-menu-content]")===z.currentTarget,q=z.ctrlKey||z.altKey||z.metaKey,J=z.key.length===1;D&&(z.key==="Tab"&&z.preventDefault(),!q&&J&&b(z.key));const ae=C.current;if(z.target!==ae||!aD.includes(z.key))return;z.preventDefault();const ie=A().filter(de=>!de.disabled).map(de=>de.ref.current);K2.includes(z.key)&&ie.reverse(),AD(ie)}),onBlur:Fe(n.onBlur,z=>{z.currentTarget.contains(z.target)||(window.clearTimeout(M.current),U.current="")}),onPointerMove:Fe(n.onPointerMove,nl(z=>{const F=z.target,D=j.current!==z.clientX;if(z.currentTarget.contains(F)&&D){const q=z.clientX>j.current?"right":"left";V.current=q,j.current=z.clientX}}))})})})})})})});tk.displayName=On;var mD="MenuGroup",lm=h.forwardRef((n,e)=>{const{__scopeMenu:t,...o}=n;return c.jsx(vt.div,{role:"group",...o,ref:e})});lm.displayName=mD;var gD="MenuLabel",nk=h.forwardRef((n,e)=>{const{__scopeMenu:t,...o}=n;return c.jsx(vt.div,{...o,ref:e})});nk.displayName=gD;var gu="MenuItem",l0="menu.itemSelect",ud=h.forwardRef((n,e)=>{const{disabled:t=!1,onSelect:o,...a}=n,r=h.useRef(null),i=jl(gu,n.__scopeMenu),s=im(gu,n.__scopeMenu),l=zt(e,r),u=h.useRef(!1),f=()=>{const d=r.current;if(!t&&d){const p=new CustomEvent(l0,{bubbles:!0,cancelable:!0});d.addEventListener(l0,m=>o==null?void 0:o(m),{once:!0}),jv(d,p),p.defaultPrevented?u.current=!1:i.onClose()}};return c.jsx(ok,{...a,ref:l,disabled:t,onClick:Fe(n.onClick,f),onPointerDown:d=>{var p;(p=n.onPointerDown)==null||p.call(n,d),u.current=!0},onPointerUp:Fe(n.onPointerUp,d=>{var p;u.current||(p=d.currentTarget)==null||p.click()}),onKeyDown:Fe(n.onKeyDown,d=>{const p=s.searchRef.current!=="";t||p&&d.key===" "||Fh.includes(d.key)&&(d.currentTarget.click(),d.preventDefault())})})});ud.displayName=gu;var ok=h.forwardRef((n,e)=>{const{__scopeMenu:t,disabled:o=!1,textValue:a,...r}=n,i=im(gu,t),s=J2(t),l=h.useRef(null),u=zt(e,l),[f,d]=h.useState(!1),[p,m]=h.useState("");return h.useEffect(()=>{const g=l.current;g&&m((g.textContent??"").trim())},[r.children]),c.jsx(tl.ItemSlot,{scope:t,disabled:o,textValue:a??p,children:c.jsx($2,{asChild:!0,...s,focusable:!o,children:c.jsx(vt.div,{role:"menuitem","data-highlighted":f?"":void 0,"aria-disabled":o||void 0,"data-disabled":o?"":void 0,...r,ref:u,onPointerMove:Fe(n.onPointerMove,nl(g=>{o?i.onItemLeave(g):(i.onItemEnter(g),g.defaultPrevented||g.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:Fe(n.onPointerLeave,nl(g=>i.onItemLeave(g))),onFocus:Fe(n.onFocus,()=>d(!0)),onBlur:Fe(n.onBlur,()=>d(!1))})})})}),yD="MenuCheckboxItem",ak=h.forwardRef((n,e)=>{const{checked:t=!1,onCheckedChange:o,...a}=n;return c.jsx(ck,{scope:n.__scopeMenu,checked:t,children:c.jsx(ud,{role:"menuitemcheckbox","aria-checked":yu(t)?"mixed":t,...a,ref:e,"data-state":dm(t),onSelect:Fe(a.onSelect,()=>o==null?void 0:o(yu(t)?!0:!t),{checkForDefaultPrevented:!1})})})});ak.displayName=yD;var rk="MenuRadioGroup",[wD,vD]=Nr(rk,{value:void 0,onValueChange:()=>{}}),ik=h.forwardRef((n,e)=>{const{value:t,onValueChange:o,...a}=n,r=Ot(o);return c.jsx(wD,{scope:n.__scopeMenu,value:t,onValueChange:r,children:c.jsx(lm,{...a,ref:e})})});ik.displayName=rk;var sk="MenuRadioItem",lk=h.forwardRef((n,e)=>{const{value:t,...o}=n,a=vD(sk,n.__scopeMenu),r=t===a.value;return c.jsx(ck,{scope:n.__scopeMenu,checked:r,children:c.jsx(ud,{role:"menuitemradio","aria-checked":r,...o,ref:e,"data-state":dm(r),onSelect:Fe(o.onSelect,()=>{var i;return(i=a.onValueChange)==null?void 0:i.call(a,t)},{checkForDefaultPrevented:!1})})})});lk.displayName=sk;var cm="MenuItemIndicator",[ck,bD]=Nr(cm,{checked:!1}),uk=h.forwardRef((n,e)=>{const{__scopeMenu:t,forceMount:o,...a}=n,r=bD(cm,t);return c.jsx(Vn,{present:o||yu(r.checked)||r.checked===!0,children:c.jsx(vt.span,{...a,ref:e,"data-state":dm(r.checked)})})});uk.displayName=cm;var kD="MenuSeparator",dk=h.forwardRef((n,e)=>{const{__scopeMenu:t,...o}=n;return c.jsx(vt.div,{role:"separator","aria-orientation":"horizontal",...o,ref:e})});dk.displayName=kD;var SD="MenuArrow",fk=h.forwardRef((n,e)=>{const{__scopeMenu:t,...o}=n,a=Tl(t);return c.jsx(Zp,{...a,...o,ref:e})});fk.displayName=SD;var um="MenuSub",[xD,hk]=Nr(um),pk=n=>{const{__scopeMenu:e,children:t,open:o=!1,onOpenChange:a}=n,r=qa(um,e),i=Tl(e),[s,l]=h.useState(null),[u,f]=h.useState(null),d=Ot(a);return h.useEffect(()=>(r.open===!1&&d(!1),()=>d(!1)),[r.open,d]),c.jsx(Xu,{...i,children:c.jsx(Z2,{scope:e,open:o,onOpenChange:d,content:u,onContentChange:f,children:c.jsx(xD,{scope:e,contentId:Ao(),triggerId:Ao(),trigger:s,onTriggerChange:l,children:t})})})};pk.displayName=um;var ks="MenuSubTrigger",mk=h.forwardRef((n,e)=>{const t=qa(ks,n.__scopeMenu),o=jl(ks,n.__scopeMenu),a=hk(ks,n.__scopeMenu),r=im(ks,n.__scopeMenu),i=h.useRef(null),{pointerGraceTimerRef:s,onPointerGraceIntentChange:l}=r,u={__scopeMenu:n.__scopeMenu},f=h.useCallback(()=>{i.current&&window.clearTimeout(i.current),i.current=null},[]);return h.useEffect(()=>f,[f]),h.useEffect(()=>{const d=s.current;return()=>{window.clearTimeout(d),l(null)}},[s,l]),c.jsx(am,{asChild:!0,...u,children:c.jsx(ok,{id:a.triggerId,"aria-haspopup":"menu","aria-expanded":t.open,"aria-controls":a.contentId,"data-state":wk(t.open),...n,ref:ta(e,a.onTriggerChange),onClick:d=>{var p;(p=n.onClick)==null||p.call(n,d),!(n.disabled||d.defaultPrevented)&&(d.currentTarget.focus(),t.open||t.onOpenChange(!0))},onPointerMove:Fe(n.onPointerMove,nl(d=>{r.onItemEnter(d),!d.defaultPrevented&&!n.disabled&&!t.open&&!i.current&&(r.onPointerGraceIntentChange(null),i.current=window.setTimeout(()=>{t.onOpenChange(!0),f()},100))})),onPointerLeave:Fe(n.onPointerLeave,nl(d=>{var m,g;f();const p=(m=t.content)==null?void 0:m.getBoundingClientRect();if(p){const y=(g=t.content)==null?void 0:g.dataset.side,w=y==="right",v=w?-5:5,k=p[w?"left":"right"],E=p[w?"right":"left"];r.onPointerGraceIntentChange({area:[{x:d.clientX+v,y:d.clientY},{x:k,y:p.top},{x:E,y:p.top},{x:E,y:p.bottom},{x:k,y:p.bottom}],side:y}),window.clearTimeout(s.current),s.current=window.setTimeout(()=>r.onPointerGraceIntentChange(null),300)}else{if(r.onTriggerLeave(d),d.defaultPrevented)return;r.onPointerGraceIntentChange(null)}})),onKeyDown:Fe(n.onKeyDown,d=>{var m;const p=r.searchRef.current!=="";n.disabled||p&&d.key===" "||rD[o.dir].includes(d.key)&&(t.onOpenChange(!0),(m=t.content)==null||m.focus(),d.preventDefault())})})})});mk.displayName=ks;var gk="MenuSubContent",yk=h.forwardRef((n,e)=>{const t=X2(On,n.__scopeMenu),{forceMount:o=t.forceMount,...a}=n,r=qa(On,n.__scopeMenu),i=jl(On,n.__scopeMenu),s=hk(gk,n.__scopeMenu),l=h.useRef(null),u=zt(e,l);return c.jsx(tl.Provider,{scope:n.__scopeMenu,children:c.jsx(Vn,{present:o||r.open,children:c.jsx(tl.Slot,{scope:n.__scopeMenu,children:c.jsx(sm,{id:s.contentId,"aria-labelledby":s.triggerId,...a,ref:u,align:"start",side:i.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:f=>{var d;i.isUsingKeyboardRef.current&&((d=l.current)==null||d.focus()),f.preventDefault()},onCloseAutoFocus:f=>f.preventDefault(),onFocusOutside:Fe(n.onFocusOutside,f=>{f.target!==s.trigger&&r.onOpenChange(!1)}),onEscapeKeyDown:Fe(n.onEscapeKeyDown,f=>{i.onClose(),f.preventDefault()}),onKeyDown:Fe(n.onKeyDown,f=>{var m;const d=f.currentTarget.contains(f.target),p=iD[i.dir].includes(f.key);d&&p&&(r.onOpenChange(!1),(m=s.trigger)==null||m.focus(),f.preventDefault())})})})})})});yk.displayName=gk;function wk(n){return n?"open":"closed"}function yu(n){return n==="indeterminate"}function dm(n){return yu(n)?"indeterminate":n?"checked":"unchecked"}function AD(n){const e=document.activeElement;for(const t of n)if(t===e||(t.focus(),document.activeElement!==e))return}function ED(n,e){return n.map((t,o)=>n[(e+o)%n.length])}function RD(n,e,t){const a=e.length>1&&Array.from(e).every(u=>u===e[0])?e[0]:e,r=t?n.indexOf(t):-1;let i=ED(n,Math.max(r,0));a.length===1&&(i=i.filter(u=>u!==t));const l=i.find(u=>u.toLowerCase().startsWith(a.toLowerCase()));return l!==t?l:void 0}function CD(n,e){const{x:t,y:o}=n;let a=!1;for(let r=0,i=e.length-1;r<e.length;i=r++){const s=e[r].x,l=e[r].y,u=e[i].x,f=e[i].y;l>o!=f>o&&t<(u-s)*(o-l)/(f-l)+s&&(a=!a)}return a}function PD(n,e){if(!e)return!1;const t={x:n.clientX,y:n.clientY};return CD(t,e)}function nl(n){return e=>e.pointerType==="mouse"?n(e):void 0}var ND=Q2,TD=am,jD=ek,zD=tk,ID=lm,LD=nk,MD=ud,DD=ak,_D=ik,FD=lk,OD=uk,UD=dk,BD=fk,VD=pk,WD=mk,qD=yk,fm="DropdownMenu",[HD,WV]=Bn(fm,[G2]),un=G2(),[$D,vk]=HD(fm),bk=n=>{const{__scopeDropdownMenu:e,children:t,dir:o,open:a,defaultOpen:r,onOpenChange:i,modal:s=!0}=n,l=un(e),u=h.useRef(null),[f=!1,d]=Ua({prop:a,defaultProp:r,onChange:i});return c.jsx($D,{scope:e,triggerId:Ao(),triggerRef:u,contentId:Ao(),open:f,onOpenChange:d,onOpenToggle:h.useCallback(()=>d(p=>!p),[d]),modal:s,children:c.jsx(ND,{...l,open:f,onOpenChange:d,dir:o,modal:s,children:t})})};bk.displayName=fm;var kk="DropdownMenuTrigger",Sk=h.forwardRef((n,e)=>{const{__scopeDropdownMenu:t,disabled:o=!1,...a}=n,r=vk(kk,t),i=un(t);return c.jsx(TD,{asChild:!0,...i,children:c.jsx(vt.button,{type:"button",id:r.triggerId,"aria-haspopup":"menu","aria-expanded":r.open,"aria-controls":r.open?r.contentId:void 0,"data-state":r.open?"open":"closed","data-disabled":o?"":void 0,disabled:o,...a,ref:ta(e,r.triggerRef),onPointerDown:Fe(n.onPointerDown,s=>{!o&&s.button===0&&s.ctrlKey===!1&&(r.onOpenToggle(),r.open||s.preventDefault())}),onKeyDown:Fe(n.onKeyDown,s=>{o||(["Enter"," "].includes(s.key)&&r.onOpenToggle(),s.key==="ArrowDown"&&r.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(s.key)&&s.preventDefault())})})})});Sk.displayName=kk;var YD="DropdownMenuPortal",xk=n=>{const{__scopeDropdownMenu:e,...t}=n,o=un(e);return c.jsx(jD,{...o,...t})};xk.displayName=YD;var Ak="DropdownMenuContent",Ek=h.forwardRef((n,e)=>{const{__scopeDropdownMenu:t,...o}=n,a=vk(Ak,t),r=un(t),i=h.useRef(!1);return c.jsx(zD,{id:a.contentId,"aria-labelledby":a.triggerId,...r,...o,ref:e,onCloseAutoFocus:Fe(n.onCloseAutoFocus,s=>{var l;i.current||(l=a.triggerRef.current)==null||l.focus(),i.current=!1,s.preventDefault()}),onInteractOutside:Fe(n.onInteractOutside,s=>{const l=s.detail.originalEvent,u=l.button===0&&l.ctrlKey===!0,f=l.button===2||u;(!a.modal||f)&&(i.current=!0)}),style:{...n.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});Ek.displayName=Ak;var KD="DropdownMenuGroup",GD=h.forwardRef((n,e)=>{const{__scopeDropdownMenu:t,...o}=n,a=un(t);return c.jsx(ID,{...a,...o,ref:e})});GD.displayName=KD;var JD="DropdownMenuLabel",Rk=h.forwardRef((n,e)=>{const{__scopeDropdownMenu:t,...o}=n,a=un(t);return c.jsx(LD,{...a,...o,ref:e})});Rk.displayName=JD;var ZD="DropdownMenuItem",Ck=h.forwardRef((n,e)=>{const{__scopeDropdownMenu:t,...o}=n,a=un(t);return c.jsx(MD,{...a,...o,ref:e})});Ck.displayName=ZD;var QD="DropdownMenuCheckboxItem",Pk=h.forwardRef((n,e)=>{const{__scopeDropdownMenu:t,...o}=n,a=un(t);return c.jsx(DD,{...a,...o,ref:e})});Pk.displayName=QD;var XD="DropdownMenuRadioGroup",e9=h.forwardRef((n,e)=>{const{__scopeDropdownMenu:t,...o}=n,a=un(t);return c.jsx(_D,{...a,...o,ref:e})});e9.displayName=XD;var t9="DropdownMenuRadioItem",Nk=h.forwardRef((n,e)=>{const{__scopeDropdownMenu:t,...o}=n,a=un(t);return c.jsx(FD,{...a,...o,ref:e})});Nk.displayName=t9;var n9="DropdownMenuItemIndicator",Tk=h.forwardRef((n,e)=>{const{__scopeDropdownMenu:t,...o}=n,a=un(t);return c.jsx(OD,{...a,...o,ref:e})});Tk.displayName=n9;var o9="DropdownMenuSeparator",jk=h.forwardRef((n,e)=>{const{__scopeDropdownMenu:t,...o}=n,a=un(t);return c.jsx(UD,{...a,...o,ref:e})});jk.displayName=o9;var a9="DropdownMenuArrow",r9=h.forwardRef((n,e)=>{const{__scopeDropdownMenu:t,...o}=n,a=un(t);return c.jsx(BD,{...a,...o,ref:e})});r9.displayName=a9;var i9=n=>{const{__scopeDropdownMenu:e,children:t,open:o,onOpenChange:a,defaultOpen:r}=n,i=un(e),[s=!1,l]=Ua({prop:o,defaultProp:r,onChange:a});return c.jsx(VD,{...i,open:s,onOpenChange:l,children:t})},s9="DropdownMenuSubTrigger",zk=h.forwardRef((n,e)=>{const{__scopeDropdownMenu:t,...o}=n,a=un(t);return c.jsx(WD,{...a,...o,ref:e})});zk.displayName=s9;var l9="DropdownMenuSubContent",Ik=h.forwardRef((n,e)=>{const{__scopeDropdownMenu:t,...o}=n,a=un(t);return c.jsx(qD,{...a,...o,ref:e,style:{...n.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});Ik.displayName=l9;var c9=bk,Lk=Sk,Mk=xk,Dk=Ek,_k=Rk,Fk=Ck,Ok=Pk,Uk=Nk,Bk=Tk,Vk=jk,u9=i9,Wk=zk,qk=Ik;const oa=({open:n,onOpenChange:e,...t})=>{const[o,a]=h.useState(!1),r=n!==void 0,i=r?n:o,s=h.useRef(null),l=h.useRef(!1),u=h.useCallback(f=>{f&&(l.current=!0,setTimeout(()=>{l.current=!1},500)),r||a(f),e==null||e(f)},[r,e]);return h.useEffect(()=>{if(i){const f=d=>d.preventDefault();return document.addEventListener("wheel",f,{passive:!1}),document.addEventListener("touchmove",f,{passive:!1}),()=>{document.removeEventListener("wheel",f),document.removeEventListener("touchmove",f)}}},[i]),c.jsxs(c.Fragment,{children:[i&&_i.createPortal(c.jsx("div",{ref:s,className:"pointer-events-auto fixed inset-0 z-50",onClick:f=>{f.stopPropagation(),u(!1)}}),document.body),c.jsx(c9,{...t,open:i,onOpenChange:u,modal:!1})]})};oa.displayName="DropdownMenu";const aa=h.forwardRef(({children:n,...e},t)=>c.jsx(Lk,{ref:t,...e,onClick:o=>{o.stopPropagation()},onTouchEnd:o=>{o.stopPropagation()},children:n}));aa.displayName=Lk.displayName;const d9=u9,Hk=h.forwardRef(({className:n,inset:e,children:t,...o},a)=>c.jsxs(Wk,{ref:a,className:ne("flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",e&&"pl-8",n),...o,children:[t,c.jsx(a4,{className:"ml-auto"})]}));Hk.displayName=Wk.displayName;const $k=h.forwardRef(({className:n,showScrollButtons:e=!0,...t},o)=>{const[a,r]=h.useState(!1),[i,s]=h.useState(!1),l=h.useRef(null),u=h.useRef(null);h.useImperativeHandle(o,()=>l.current);const f=h.useCallback(()=>{const m=u.current;m&&(r(m.scrollTop>0),s(m.scrollTop<m.scrollHeight-m.clientHeight))},[]),d=()=>{var m;(m=u.current)==null||m.scroll({top:0,behavior:"smooth"})},p=()=>{var m;(m=u.current)==null||m.scroll({top:u.current.scrollHeight,behavior:"smooth"})};return c.jsx(Mk,{children:c.jsxs(qk,{ref:l,className:ne("relative z-50 min-w-52 overflow-hidden rounded-xl border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"),onAnimationEnd:()=>{e&&f()},collisionPadding:10,...t,children:[e&&a&&c.jsx("div",{className:"absolute inset-x-0 top-0 z-10 flex items-center justify-center bg-popover",children:c.jsx("button",{onClick:d,onMouseEnter:d,className:"flex h-6 w-full items-center justify-center rounded-sm transition-colors hover:bg-accent",type:"button",children:c.jsx(B1,{className:"h-4 w-4"})})}),c.jsx("div",{ref:u,className:ne("scrollbar-hide overflow-y-auto p-1",n),onScroll:f,children:t.children}),e&&i&&c.jsx("div",{className:"absolute inset-x-0 bottom-0 flex items-center justify-center bg-popover",children:c.jsx("button",{onClick:p,onMouseEnter:p,className:"flex h-6 w-full items-center justify-center rounded-sm transition-colors hover:bg-accent",type:"button",children:c.jsx(_c,{className:"h-4 w-4"})})})]})})});$k.displayName=qk.displayName;const ra=h.forwardRef(({className:n,sideOffset:e=4,showScrollButtons:t=!1,...o},a)=>{const[r,i]=h.useState(!1),[s,l]=h.useState(!1),u=h.useRef(null),f=h.useRef(null),d=h.useRef(!1),p=h.useRef(0);h.useEffect(()=>(d.current=!0,p.current=Date.now()+300,()=>{d.current=!1,p.current=0}),[]);const m=h.useCallback(v=>{if(Date.now()<p.current){v.stopPropagation(),v.preventDefault();return}},[]);h.useImperativeHandle(a,()=>u.current);const g=h.useCallback(()=>{const v=f.current;v&&(i(v.scrollTop>0),l(v.scrollTop<v.scrollHeight-v.clientHeight))},[]),y=()=>{var v;(v=f.current)==null||v.scroll({top:0,behavior:"smooth"})},w=()=>{var v;(v=f.current)==null||v.scroll({top:f.current.scrollHeight,behavior:"smooth"})};return c.jsx(Mk,{children:c.jsxs(Dk,{ref:u,sideOffset:e,onInteractOutside:m,onPointerDownOutside:m,className:ne("relative z-50 min-w-52 overflow-hidden rounded-lg border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"),onAnimationEnd:()=>{t&&g()},collisionPadding:10,...o,children:[t&&r&&c.jsx("div",{className:"absolute inset-x-0 top-0 z-10 flex items-center justify-center bg-popover",children:c.jsx("button",{onClick:y,onMouseEnter:y,className:"flex h-6 w-full items-center justify-center rounded-sm transition-colors hover:bg-accent",type:"button",children:c.jsx(B1,{className:"h-4 w-4"})})}),c.jsx("div",{ref:f,className:ne("scrollbar-hide overflow-y-auto p-1",n),onScroll:g,onWheel:v=>v.stopPropagation(),children:o.children}),t&&s&&c.jsx("div",{className:"absolute inset-x-0 bottom-0 flex items-center justify-center bg-popover",children:c.jsx("button",{onClick:w,onMouseEnter:w,className:"flex h-6 w-full items-center justify-center rounded-sm transition-colors hover:bg-accent",type:"button",children:c.jsx(_c,{className:"h-4 w-4"})})})]})})});ra.displayName=Dk.displayName;const La=h.forwardRef(({className:n,inset:e,...t},o)=>c.jsx(Fk,{ref:o,className:ne("relative flex cursor-pointer select-none items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",e&&"pl-8",n),...t}));La.displayName=Fk.displayName;const hm=h.forwardRef(({className:n,children:e,checked:t,...o},a)=>c.jsxs(Ok,{ref:a,className:ne("relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),checked:t,...o,children:[c.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:c.jsx(Bk,{children:c.jsx(_a,{className:"h-4 w-4"})})}),e]}));hm.displayName=Ok.displayName;const f9=h.forwardRef(({className:n,children:e,...t},o)=>c.jsxs(Uk,{ref:o,className:ne("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...t,children:[c.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:c.jsx(Bk,{children:c.jsx(W1,{className:"h-2 w-2 fill-current"})})}),e]}));f9.displayName=Uk.displayName;const Yk=h.forwardRef(({className:n,inset:e,...t},o)=>c.jsx(_k,{ref:o,className:ne("px-2 py-1.5 text-sm font-semibold",e&&"pl-8",n),...t}));Yk.displayName=_k.displayName;const ol=h.forwardRef(({className:n,...e},t)=>c.jsx(Vk,{ref:t,className:ne("-mx-1 my-1 h-px bg-muted",n),...e}));ol.displayName=Vk.displayName;function ao({url:n,className:e,justOpenLink:t}){const{t:o}=Ae(),{isSmallScreen:a}=Ct(),{push:r}=Vt(),[i,s]=h.useState(!1),l=h.useMemo(()=>gP(n),[n]),u=p=>{p.stopPropagation(),a&&s(!1),window.open(n,"_blank","noreferrer")},f=p=>{if(p.stopPropagation(),a){s(!1),setTimeout(()=>r(uu(n)),100);return}r(uu(n))};if(t)return c.jsx("a",{href:n,target:"_blank",rel:"noreferrer",className:ne("cursor-pointer text-primary hover:underline",e),onClick:p=>p.stopPropagation(),children:l});const d=c.jsx("span",{className:ne("cursor-pointer text-primary hover:underline",e),onClick:p=>{p.stopPropagation(),a&&s(!0)},title:n,children:l});return a?c.jsxs(c.Fragment,{children:[d,c.jsxs(Ht,{open:i,onOpenChange:s,children:[c.jsx(Wn,{onClick:p=>{p.stopPropagation(),s(!1)}}),c.jsx($t,{className:"max-h-[85vh] border-t border-border/20 bg-card/90 backdrop-blur-xl",children:c.jsxs("div",{className:"flex-1 overflow-y-auto overscroll-contain px-4 py-4",style:{touchAction:"pan-y",WebkitOverflowScrolling:"touch"},children:[c.jsxs(xe,{onClick:u,className:"w-full justify-start gap-4 p-6 text-lg [&_svg]:size-5",variant:"ghost",children:[c.jsx(Fc,{}),o("Open link")]}),c.jsxs(xe,{onClick:f,className:"w-full justify-start gap-4 p-6 text-lg [&_svg]:size-5",variant:"ghost",children:[c.jsx(Ng,{}),o("View Nostr discussions")]})]})})]})]}):c.jsxs(oa,{children:[c.jsx(aa,{children:c.jsx("span",{className:ne("cursor-pointer text-primary hover:underline",e),title:n,children:l})}),c.jsxs(ra,{align:"start",onClick:p=>p.stopPropagation(),children:[c.jsxs(La,{onClick:u,children:[c.jsx(Fc,{}),o("Open link")]}),c.jsxs(La,{onClick:f,children:[c.jsx(Ng,{}),o("View Nostr discussions")]})]})]})}function pm({src:n,autoPlay:e=!1,startTime:t,isMinimized:o=!1,className:a}){const r=h.useRef(null),{allowInsecureConnection:i}=Wa(),[s,l]=h.useState(!1),[u,f]=h.useState(0),[d,p]=h.useState(0),[m,g]=h.useState(!1),y=h.useRef(),w=h.useRef(!1),v=h.useRef(null);h.useEffect(()=>{const A=r.current;if(!A)return;t&&(f(t),A.currentTime=t),e&&k();const N=()=>{w.current||f(A.currentTime)},T=()=>p(A.duration),C=()=>l(!1),P=()=>l(!1),M=()=>l(!0);return A.addEventListener("timeupdate",N),A.addEventListener("loadedmetadata",T),A.addEventListener("ended",C),A.addEventListener("pause",P),A.addEventListener("play",M),()=>{A.removeEventListener("timeupdate",N),A.removeEventListener("loadedmetadata",T),A.removeEventListener("ended",C),A.removeEventListener("pause",P),A.removeEventListener("play",M)}},[]),h.useEffect(()=>{const A=r.current,N=v.current;if(!A||!N)return;const T=new IntersectionObserver(([C])=>{C.isIntersecting||A.pause()},{threshold:1});return T.observe(N),()=>{T.unobserve(N)}},[]);const k=()=>{const A=r.current;A&&(s?(A.pause(),l(!1)):(A.play(),l(!0),zn.play(A)))},E=A=>{const N=r.current;N&&(w.current=!0,f(A[0]),y.current&&clearTimeout(y.current),y.current=setTimeout(()=>{N.currentTime=A[0],w.current=!1},300))};return m||!i&&Ar(n)?c.jsx(ao,{url:n}):c.jsxs("div",{ref:v,className:ne("flex max-w-md items-center gap-3 rounded-full border bg-background px-2 py-2",a),onClick:A=>A.stopPropagation(),children:[c.jsx("audio",{ref:r,src:n,preload:"metadata",onError:()=>g(!1)}),c.jsx(xe,{size:"icon",className:"shrink-0 rounded-full",onClick:k,children:s?c.jsx(v4,{fill:"currentColor"}):c.jsx(k4,{fill:"currentColor"})}),c.jsx("div",{className:"relative flex-1",children:c.jsx(_2,{value:[u],max:d||100,step:1,onValueChange:E,hideThumb:!0,enableHoverAnimation:!0})}),c.jsx("div",{className:"font-mono text-sm text-muted-foreground",children:h9(Math.max(d-u,0))}),o?c.jsx(xe,{variant:"ghost",size:"icon",className:"shrink-0 rounded-full text-muted-foreground",onClick:()=>zn.stopAudioBackground(),children:c.jsx(Dn,{})}):c.jsx(xe,{variant:"ghost",size:"icon",className:"shrink-0 rounded-full text-muted-foreground",onClick:()=>{var A;return zn.playAudioBackground(n,((A=r.current)==null?void 0:A.currentTime)||0)},children:c.jsx(y4,{})})]})}const h9=n=>{if(n===1/0||isNaN(n))return"-:--";const e=Math.floor(n/60),t=Math.floor(n%60);return`${e}:${t.toString().padStart(2,"0")}`};function p9({className:n}){const[e,t]=h.useState(null),[o,a]=h.useState(null);return h.useEffect(()=>{const r=s=>{const{src:l,time:u}=s.detail;e!==l&&(a(c.jsx(m9,{src:l,time:u,className:n},l+u)),t(l))},i=()=>{a(null)};return zn.addEventListener("playAudioBackground",r),zn.addEventListener("stopAudioBackground",i),()=>{zn.removeEventListener("playAudioBackground",r),zn.removeEventListener("stopAudioBackground",i)}},[]),o}function m9({src:n,time:e,className:t}){return c.jsx(pm,{src:n,className:t,startTime:e,autoPlay:!0,isMinimized:!0})}const g9={light:10,medium:20,heavy:40,success:[30],warning:[50,30,50],error:[100],click:5,press:15};function Un(n="click"){if("vibrate"in navigator&&y9())try{const e=g9[n];navigator.vibrate(e)}catch{}}function y9(){return typeof navigator>"u"?!1:"ontouchstart"in window||navigator.maxTouchPoints>0?!0:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}function dd({children:n,active:e=!1,onClick:t,onPointerDown:o,onPointerUp:a}){const[r,i]=h.useState(!1),s=l=>{r||(i(!0),setTimeout(()=>i(!1),300)),t==null||t(l)};return c.jsx("button",{type:"button",className:ne("group relative m-0 flex h-12 w-full items-center justify-center rounded-none p-3 text-muted-foreground outline-none [&_svg]:size-6",e&&"text-primary",r&&"[&>svg]:animate-icon-bounce"),style:{WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",boxShadow:"none",outline:"none"},onClick:s,onPointerDown:o,onPointerUp:a,children:n})}function w9(){const{navigate:n,current:e,display:t}=Ol(),{pop:o,currentIndex:a}=Vt(),r=e==="home"&&t;return c.jsx(dd,{active:r,onClick:()=>{Un("click"),t||o(-(a+1)),n("home")},children:c.jsx(d4,{})})}function Kr(){var e,t;const n=((e=globalThis.crypto)==null?void 0:e.subtle)??((t=globalThis.crypto)==null?void 0:t.webkitSubtle);if(!n)throw new Error("Web Crypto API is not available. A secure context (HTTPS) is required.");return n}function Kk(n){return Array.from(n).map(e=>e.toString(16).padStart(2,"0")).join("")}function v9(n){const e=new Uint8Array(n.length/2);for(let t=0;t<n.length;t+=2)e[t/2]=parseInt(n.substring(t,t+2),16);return e}async function b9(n){const e=await Kr().generateKey({name:"AES-GCM",length:256},!0,["encrypt"]),t=crypto.getRandomValues(new Uint8Array(12)),o=await n.arrayBuffer(),a=await Kr().encrypt({name:"AES-GCM",iv:t},e,o),r=await Kr().digest("SHA-256",o),i=Kk(new Uint8Array(r)),s=new Uint8Array(await Kr().exportKey("raw",e));return{encryptedBlob:new Blob([a],{type:"application/octet-stream"}),key:s,nonce:t,originalHash:i}}async function k9(n,e,t){const o=await Kr().importKey("raw",e,{name:"AES-GCM"},!1,["decrypt"]);return Kr().decrypt({name:"AES-GCM",iv:t},o,n)}const c0={encryptFile:b9,decryptFile:k9,bytesToHex:Kk,hexToBytes:v9};var S9=new TextDecoder("utf-8"),x9=new TextEncoder,Gk=1,Jk=65535;function A9(n,e){const t=w1.getSharedSecret(n,"02"+e).subarray(1,33);return v1(io,t,"nip44-v2")}function Zk(n,e){const t=k1(io,n,e,76);return{chacha_key:t.subarray(0,32),chacha_nonce:t.subarray(32,44),hmac_key:t.subarray(44,76)}}function mm(n){if(!Number.isSafeInteger(n)||n<1)throw new Error("expected positive integer");if(n<=32)return 32;const e=1<<Math.floor(Math.log2(n-1))+1,t=e<=256?32:e/8;return t*(Math.floor((n-1)/t)+1)}function E9(n){if(!Number.isSafeInteger(n)||n<Gk||n>Jk)throw new Error("invalid plaintext size: must be between 1 and 65535 bytes");const e=new Uint8Array(2);return new DataView(e.buffer).setUint16(0,n,!1),e}function R9(n){const e=x9.encode(n),t=e.length,o=E9(t),a=new Uint8Array(mm(t)-t);return xr(o,e,a)}function C9(n){const e=new DataView(n.buffer).getUint16(0),t=n.subarray(2,2+e);if(e<Gk||e>Jk||t.length!==e||n.length!==2+mm(e))throw new Error("invalid padding");return S9.decode(t)}function Qk(n,e,t){if(t.length!==32)throw new Error("AAD associated data must be 32 bytes");const o=xr(t,e);return cp(io,n,o)}function P9(n){if(typeof n!="string")throw new Error("payload must be a valid string");const e=n.length;if(e<132||e>87472)throw new Error("invalid payload length: "+e);if(n[0]==="#")throw new Error("unknown encryption version");let t;try{t=fl.decode(n)}catch(r){throw new Error("invalid base64: "+r.message)}const o=t.length;if(o<99||o>65603)throw new Error("invalid data length: "+o);const a=t[0];if(a!==2)throw new Error("unknown encryption version "+a);return{nonce:t.subarray(1,33),ciphertext:t.subarray(33,-32),mac:t.subarray(-32)}}function N9(n,e,t=zc(32)){const{chacha_key:o,chacha_nonce:a,hmac_key:r}=Zk(e,t),i=R9(n),s=Cu(o,a,i),l=Qk(r,s,t);return fl.encode(xr(new Uint8Array([2]),t,s,l))}function T9(n,e){const{nonce:t,ciphertext:o,mac:a}=P9(n),{chacha_key:r,chacha_nonce:i,hmac_key:s}=Zk(e,t),l=Qk(s,o,t);if(!b1(l,a))throw new Error("invalid MAC");const u=Cu(r,i,o);return C9(u)}var tn={utils:{getConversationKey:A9,calcPaddedLen:mm},encrypt:N9,decrypt:T9};const Qa=class Qa{constructor(){}static getInstance(){return Qa.instance||(Qa.instance=new Qa),Qa.instance}hasEncryptionKey(e){return!!pe.getEncryptionKeyPrivkey(e)}getEncryptionKeypair(e){const t=pe.getEncryptionKeyPrivkey(e);if(!t)return null;const o=bo(t),a=As(o);return{privkey:o,pubkey:a}}removeEncryptionKey(e){pe.removeEncryptionKeyPrivkey(e)}generateEncryptionKey(e){const t=Ai(),o=As(t);return pe.setEncryptionKeyPrivkey(e,hi(t)),{privkey:t,pubkey:o}}getClientKeypair(e){let t=pe.getClientKeyPrivkey(e);if(!t){const r=Ai();t=hi(r),pe.setClientKeyPrivkey(e,t)}const o=bo(t),a=As(o);return{privkey:o,pubkey:a}}async queryEncryptionKeyAnnouncement(e){const{relays:t}=await this.getRelays(e);return(await le.fetchEvents(t,{kinds:[ce.ENCRYPTION_KEY_ANNOUNCEMENT],authors:[e],limit:1}))[0]??null}async publishEncryptionKeyAnnouncement(e,t){const{dmRelays:o,relays:a}=await this.getRelays(t);if(o.length===0)throw new Error("You should set up at least one DM relay before announcing encryption key");const r=this.getEncryptionKeypair(t);if(!r)return null;const i={kind:ce.ENCRYPTION_KEY_ANNOUNCEMENT,content:"",created_at:Be().unix(),tags:[["n",r.pubkey]]},s=await e.signEvent(i);return await le.publishEvent(a,s),await le.updateEncryptionKeyAnnouncementCache(s),s}async publishClientKeyAnnouncement(e,t,o=eP()){const{relays:a}=await this.getRelays(t),r=this.getClientKeypair(t),i={kind:ce.CLIENT_KEY_ANNOUNCEMENT,content:"",created_at:Be().unix(),tags:[["client",o],["pubkey",r.pubkey],["P",r.pubkey]]},s=await e.signEvent(i);return await le.publishEvent(a,s),s}async exportKeyForTransfer(e,t,o){const{relays:a}=await this.getRelays(t),r=this.getEncryptionKeypair(t);if(!r)return null;const i=this.getClientKeypair(t),s=hi(r.privkey),l=this.encryptWithNip44(i.privkey,o,s),u={kind:ce.KEY_TRANSFER,content:l,created_at:Be().unix(),tags:[["P",i.pubkey],["p",o]]},f=await e.signEvent(u);return await le.publishEvent(a,f),f}async importKeyFromTransfer(e,t){var r;const o=this.getClientKeypair(e),a=(r=t.tags.find(Ke("P")))==null?void 0:r[1];if(!a)return!1;try{const i=this.decryptWithNip44(o.privkey,a,t.content);return/^[0-9a-fA-F]{64}$/.test(i)?(pe.setEncryptionKeyPrivkey(e,i),!0):!1}catch{return!1}}async initializeEncryption(e,t){let o=this.getEncryptionKeypair(t);if(o)return o;if(await this.queryEncryptionKeyAnnouncement(t))throw new Error("EXISTING_KEY_ANNOUNCEMENT");return o=this.generateEncryptionKey(t),await this.publishEncryptionKeyAnnouncement(e,t),o}getEncryptionPubkeyFromEvent(e){const t=e.tags.find(Ke("n"));return(t==null?void 0:t[1])??null}getClientPubkeyFromEvent(e){const t=e.tags.find(Ke("P"))??e.tags.find(Ke("pubkey"));return(t==null?void 0:t[1])??null}async subscribeToKeyTransfer(e,t){const{relays:o}=await this.getRelays(e),a=this.getClientKeypair(e),r=le.subscribe(o,{kinds:[ce.KEY_TRANSFER],"#p":[a.pubkey],limit:0},{onevent:async i=>{const s=await this.importKeyFromTransfer(e,i);t(s),s&&r.close()}});return()=>r.close()}async checkOtherDeviceClientKeys(e){const{relays:t}=await this.getRelays(e);return await le.fetchEvents(t,{kinds:[ce.CLIENT_KEY_ANNOUNCEMENT],authors:[e]})}encryptWithNip44(e,t,o){const a=tn.utils.getConversationKey(e,t);return tn.encrypt(o,a)}decryptWithNip44(e,t,o){const a=tn.utils.getConversationKey(e,t);return tn.decrypt(o,a)}async getRelays(e){const[t,o]=await Promise.all([le.fetchDmRelays(e),le.fetchRelayList(e)]),a=o.write.slice(0,5),r=Array.from(new Set([...t,...a]));return{dmRelays:t,writeRelays:a,relays:r}}};H(Qa,"instance");let Oh=Qa;const Pn=Oh.getInstance();var Vr=Symbol("verified"),j9=n=>n instanceof Object;function z9(n){if(!j9(n)||typeof n.kind!="number"||typeof n.content!="string"||typeof n.created_at!="number"||typeof n.pubkey!="string"||!n.pubkey.match(/^[a-f0-9]{64}$/)||!Array.isArray(n.tags))return!1;for(let e=0;e<n.tags.length;e++){let t=n.tags[e];if(!Array.isArray(t))return!1;for(let o=0;o<t.length;o++)if(typeof t[o]!="string")return!1}return!0}new TextDecoder("utf-8");var I9=new TextEncoder,L9=class{generateSecretKey(){return vo.utils.randomPrivateKey()}getPublicKey(e){return nn(vo.getPublicKey(e))}finalizeEvent(e,t){const o=e;return o.pubkey=nn(vo.getPublicKey(t)),o.id=Pc(o),o.sig=nn(vo.sign(Pc(o),t)),o[Vr]=!0,o}verifyEvent(e){if(typeof e[Vr]=="boolean")return e[Vr];const t=Pc(e);if(t!==e.id)return e[Vr]=!1,!1;try{const o=vo.verify(e.sig,t,e.pubkey);return e[Vr]=o,o}catch{return e[Vr]=!1,!1}}};function M9(n){if(!z9(n))throw new Error("can't serialize event with wrong or missing properties");return JSON.stringify([0,n.pubkey,n.created_at,n.kind,n.tags,n.content])}function Pc(n){let e=io(I9.encode(M9(n)));return nn(e)}var fd=new L9;fd.generateSecretKey;fd.getPublicKey;var u0=fd.finalizeEvent;fd.verifyEvent;const Xa=class Xa{constructor(){}static getInstance(){return Xa.instance||(Xa.instance=new Xa),Xa.instance}createGiftWrappedMessage(e,t,o,a,r,i,s){const l={created_at:Be().unix(),kind:s??Z.PrivateDirectMessage,tags:[["p",a],...i??[]],content:e,pubkey:t},u={...l,id:Pc(l)},f=this.createSeal(u,o,r);return{giftWrap:this.createGiftWrap(f,r,[["p",r],["p",a]]),seal:f,rumor:u}}createGiftWrapForSelf(e,t,o,a){const r=this.createSeal(e,t,o);return this.createGiftWrap(r,o,[["p",o],["p",a]])}createSeal(e,t,o){const a=tn.utils.getConversationKey(t,o),r=tn.encrypt(JSON.stringify(e),a);return u0({kind:Z.Seal,content:r,created_at:d0(),tags:[]},t)}createGiftWrap(e,t,o){const a=Ai(),r=tn.utils.getConversationKey(a,t),i=tn.encrypt(JSON.stringify(e),r);return u0({kind:Z.GiftWrap,content:i,created_at:d0(),tags:o},a)}unwrapGiftWrap(e,t){try{const o=tn.utils.getConversationKey(t,e.pubkey),a=tn.decrypt(e.content,o),r=JSON.parse(a),i=tn.utils.getConversationKey(t,r.pubkey),s=tn.decrypt(r.content,i),l=JSON.parse(s),u=this.getRecipientPubkeyFromGiftWrap(e);if(!u)throw new Error("Recipient pubkey not found in gift wrap tags");return{rumor:l,senderPubkey:l.pubkey,senderEncryptionPubkey:r.pubkey,recipientPubkey:u,giftWrapId:e.id,giftWrapCreatedAt:e.created_at}}catch(o){return console.error("Failed to unwrap gift wrap:",o),null}}getRecipientPubkeyFromGiftWrap(e){const t=e.tags.find(o=>o[0]==="p");return(t==null?void 0:t[1])??null}};H(Xa,"instance");let Uh=Xa;function d0(){return Math.round(Date.now()/1e3-Math.random()*172800)}const go=Uh.getInstance(),er=class er{constructor(){H(this,"currentAccountPubkey",null);H(this,"currentEncryptionKeypair",null);H(this,"isInitialized",!1);H(this,"isInitializing",!1);H(this,"relaySubscription",null);H(this,"messageListeners",new Set);H(this,"reactionListeners",new Set);H(this,"dataChangedListeners",new Set);H(this,"loadingListeners",new Set);H(this,"sendingStatuses",new Map);H(this,"sendingStatusListeners",new Set);H(this,"pendingPublishData",new Map);H(this,"syncRequestListeners",new Set);H(this,"encryptionKeyChangedListeners",new Set);H(this,"activeConversationKey",null)}static getInstance(){return er.instance||(er.instance=new er),er.instance}async init(e,t){if(!this.isInitializing&&!(this.isInitialized&&this.currentAccountPubkey===e)){this.currentAccountPubkey&&this.currentAccountPubkey!==e&&this.destroy(),this.isInitializing=!0,this.emitLoadingChanged(),this.currentAccountPubkey=e,this.currentEncryptionKeypair=t;try{let o=pe.getDmLastSyncedAt(e);o&&!await be.hasDmMessages()&&(pe.clearDmSyncState(e),o=0),await this.initMessages(e,t,o||void 0),pe.setDmLastSyncedAt(e,Math.floor(Date.now()/1e3)),this.emitDataChanged(),this.startRelaySubscription(e,t),this.isInitialized=!0}finally{this.isInitializing=!1,this.emitLoadingChanged()}}}async reinit(){if(!this.currentAccountPubkey||!this.currentEncryptionKeypair)return;const e=this.currentAccountPubkey,t=this.currentEncryptionKeypair;this.relaySubscription&&(this.relaySubscription.close(),this.relaySubscription=null),this.isInitialized=!1,this.isInitializing=!1,await this.init(e,t)}resetEncryption(){this.relaySubscription&&(this.relaySubscription.close(),this.relaySubscription=null),this.currentEncryptionKeypair=null,this.isInitialized=!1,this.isInitializing=!1}destroy(){this.resetEncryption(),this.messageListeners.clear(),this.reactionListeners.clear(),this.dataChangedListeners.clear(),this.loadingListeners.clear(),this.sendingStatuses.clear(),this.sendingStatusListeners.clear(),this.syncRequestListeners.clear(),this.encryptionKeyChangedListeners.clear(),this.activeConversationKey=null,this.currentAccountPubkey=null}onNewMessage(e){return this.messageListeners.add(e),()=>{this.messageListeners.delete(e)}}onDataChanged(e){return this.dataChangedListeners.add(e),()=>{this.dataChangedListeners.delete(e)}}getIsLoading(){return this.isInitializing}onLoadingChanged(e){return this.loadingListeners.add(e),()=>{this.loadingListeners.delete(e)}}emitLoadingChanged(){for(const e of this.loadingListeners)e(this.isInitializing)}getSendingStatus(e){return this.sendingStatuses.get(e)}async resendMessage(e){const t=this.pendingPublishData.get(e);if(t){this.sendingStatuses.set(e,"sending"),this.emitSendingStatusChanged();try{const o=this.currentAccountPubkey,a=o?await le.fetchDmRelays(o):[],[r,i]=await Promise.allSettled([le.publishEvent(t.recipientDmRelays,t.giftWrap),a.length>0?le.publishEvent(a,t.selfGiftWrap):Promise.resolve()]);if(i.status==="rejected"&&console.warn("[DM] selfGiftWrap publish failed:",i.reason),r.status==="rejected")throw r.reason;this.sendingStatuses.set(e,"sent"),this.pendingPublishData.delete(e),this.emitSendingStatusChanged(),setTimeout(()=>{this.sendingStatuses.delete(e),this.emitSendingStatusChanged()},3e3)}catch{this.sendingStatuses.set(e,"failed"),this.emitSendingStatusChanged()}}}onSendingStatusChanged(e){return this.sendingStatusListeners.add(e),()=>{this.sendingStatusListeners.delete(e)}}emitNewMessage(e){for(const t of this.messageListeners)t(e);this.emitDataChanged()}onNewReaction(e){return this.reactionListeners.add(e),()=>{this.reactionListeners.delete(e)}}emitNewReaction(e){for(const t of this.reactionListeners)t(e)}emitDataChanged(){for(const e of this.dataChangedListeners)e()}emitSendingStatusChanged(){for(const e of this.sendingStatusListeners)e()}onSyncRequest(e){return this.syncRequestListeners.add(e),()=>{this.syncRequestListeners.delete(e)}}emitSyncRequest(e){for(const t of this.syncRequestListeners)t(e)}onEncryptionKeyChanged(e){return this.encryptionKeyChangedListeners.add(e),()=>{this.encryptionKeyChangedListeners.delete(e)}}emitEncryptionKeyChanged(e){for(const t of this.encryptionKeyChangedListeners)t(e)}markSyncRequestProcessed(e){pe.addProcessedSyncRequestId(e)}async importMessages(e,t){var a;let o=0;for(const r of t){const i=(a=r.tags.find(m=>m[0]==="p"))==null?void 0:a[1];if(!i)continue;const l=r.pubkey===e?i:r.pubkey,u=this.getParticipantsKey(r.pubkey,i),f=r.tags.find(m=>m[0]==="e"),d=f==null?void 0:f[1],p={id:r.id,participantsKey:u,senderPubkey:r.pubkey,content:r.content,createdAt:r.created_at,originalEvent:r,decryptedRumor:r,...d?{replyTo:{id:d,content:"",senderPubkey:""}}:{}};await this.saveMessage(p),r.kind!==Z.Reaction&&await this.updateConversation(e,l,p),o++}return this.emitDataChanged(),o}async checkDmSupport(e,t=!1){const[o,a]=await Promise.all([le.fetchDmRelaysEvent(e,!0,t),le.fetchEncryptionKeyAnnouncementEvent(e,!0,t)]);let r=a?Pn.getEncryptionPubkeyFromEvent(a):null,i=!!a;if(!i&&this.currentAccountPubkey){const s=await this.getConversation(this.currentAccountPubkey,e);if(s!=null&&s.encryptionPubkey)i=!0,r=s.encryptionPubkey;else if(s&&this.currentEncryptionKeypair){const l=await this.extractEncryptionPubkeyFromRelays(this.currentAccountPubkey,e,this.currentEncryptionKeypair);l&&(i=!0,r=l)}}return{hasDmRelays:!0,hasEncryptionKey:i,encryptionPubkey:r}}async getRecipientEncryptionPubkey(e){var o;const t=await le.fetchEncryptionKeyAnnouncementEvent(e);if(t){const a=(o=t.tags.find(Ke("n")))==null?void 0:o[1];if(a&&Sa(a))return a}if(this.currentAccountPubkey){const a=await this.getConversation(this.currentAccountPubkey,e);if(a!=null&&a.encryptionPubkey)return a.encryptionPubkey}return null}async subscribeRecipientEncryptionKey(e,t){const o=await le.fetchDmRelays(e);return le.subscribe(o,{kinds:[ce.ENCRYPTION_KEY_ANNOUNCEMENT],authors:[e],limit:0},{onevent:async a=>{await le.updateEncryptionKeyAnnouncementCache(a);const r=Pn.getEncryptionPubkeyFromEvent(a);r&&(t==null||t(r))}})}async initMessages(e,t,o){const a=await le.fetchDmRelays(e);if(a.length===0)return;const r=1e3;if(!await be.hasDmMessages())try{console.log("[DM] No local DM messages found — attempting migration from local events store"),await this.migrateFromLocalEvents(e,t)}catch(s){console.warn("[DM] migration from local events failed:",s)}if(o){let s=o-q4;for(;;){const l=await le.fetchEvents(a,{kinds:[ce.GIFT_WRAP],"#p":[e],since:s,limit:r});if(l.length===0)break;s=l[0].created_at+1,await this.processGiftWrapBatch(e,t,l)}}let i=pe.getDmBackwardCursor(e);if(i!==0)for(;;){const s={kinds:[ce.GIFT_WRAP],"#p":[e],limit:r};i&&i>0&&(s.until=i);const l=await le.fetchEvents(a,s);if(l.length===0){pe.setDmBackwardCursor(e,0);break}await this.processGiftWrapBatch(e,t,l),this.emitDataChanged();const u=l[l.length-1].created_at-1;if(u>=(i??1/0)){pe.setDmBackwardCursor(e,0);break}i=u,pe.setDmBackwardCursor(e,i)}}async migrateFromLocalEvents(e,t){const a=await be.getEvents({kinds:[ce.GIFT_WRAP],authors:[e],limit:1e4}),r=await be.getEvents({kinds:[ce.GIFT_WRAP],"#p":[e],limit:1e4}),i=new Map;for(const u of a)i.set(u.event.id,u.event);for(const u of r)i.set(u.event.id,u.event);const s=Array.from(i.values()).sort((u,f)=>u.created_at-f.created_at);if(s.length===0)return;const l=[];for(const u of s)try{const f=go.unwrapGiftWrap(u,t.privkey);if(!f)continue;const d=this.createMessageFromUnwrapped(e,t.pubkey,f,u);d&&(await this.resolveReplyTo(d),await this.saveMessage(d),l.push(d))}catch(f){console.warn("[DM migration] failed to process event",u.id,f)}l.length>0&&(await this.rebuildConversationsFromMessages(e,l),console.log(`[DM migration] imported ${l.length} messages from local events`))}async processGiftWrapBatch(e,t,o){const a=[],r=new Map;let i=0,s=0;for(const f of o){const d=go.unwrapGiftWrap(f,t.privkey);if(!d){i++;continue}const p=this.createMessageFromUnwrapped(e,t.pubkey,d,f);p?(await this.resolveReplyTo(p),await this.saveMessage(p),a.push(p),!this.isFromMe(d.senderPubkey,e,t.pubkey)&&d.senderEncryptionPubkey&&r.set(d.senderPubkey,d.senderEncryptionPubkey)):s++}const l=a.filter(f=>f.senderPubkey===e).length,u=a.length-l;console.log(`[DM sync] batch: ${o.length} events, ${a.length} messages (${l} sent, ${u} received), ${i} unwrap failed, ${s} parse failed`),await this.rebuildConversationsFromMessages(e,a,r)}async sendMessage(e,t,o,a,r){const i=this.currentEncryptionKeypair??Pn.getEncryptionKeypair(e);if(!i)throw new Error("Encryption keypair not available");const s=await this.getRecipientEncryptionPubkey(t);if(!s)throw new Error("Recipient does not have encryption key published");const l=await le.fetchDmRelays(t),u=l[0]??"",d=[...a?[["e",a.id,u]]:[],...r??[]],{giftWrap:p,seal:m,rumor:g}=go.createGiftWrappedMessage(o,e,i.privkey,t,s,d);console.debug("[DM] rumor:",g),console.debug("[DM] seal:",m),console.debug("[DM] giftWrap:",p);const y=go.createGiftWrapForSelf(g,i.privkey,i.pubkey,e),w=this.getParticipantsKey(e,t),v={id:g.id,participantsKey:w,senderPubkey:e,content:g.content,createdAt:g.created_at,originalEvent:y,decryptedRumor:g,...a?{replyTo:a}:{}};await this.saveMessage(v),await this.updateConversation(e,t,v),this.pendingPublishData.set(v.id,{giftWrap:p,selfGiftWrap:y,recipientDmRelays:l}),this.sendingStatuses.set(v.id,"sending"),this.emitNewMessage(v);try{const k=await le.fetchDmRelays(e),[E,A]=await Promise.allSettled([le.publishEvent(l,p),le.publishEvent(k,y)]);if(A.status==="rejected"&&console.warn("[DM] selfGiftWrap publish failed:",A.reason),E.status==="rejected")throw E.reason;this.sendingStatuses.set(v.id,"sent"),this.pendingPublishData.delete(v.id),this.emitSendingStatusChanged(),setTimeout(()=>{this.sendingStatuses.delete(v.id),this.emitSendingStatusChanged()},3e3)}catch(k){throw this.sendingStatuses.set(v.id,"failed"),this.emitSendingStatusChanged(),k}return v}async sendFileMessage(e,t,o,a,r,i,s,l,u,f){const d=this.currentEncryptionKeypair??Pn.getEncryptionKeypair(e);if(!d)throw new Error("Encryption keypair not available");const p=await this.getRecipientEncryptionPubkey(t);if(!p)throw new Error("Recipient does not have encryption key published");const m=await le.fetchDmRelays(t),g=c0.bytesToHex(r),y=c0.bytesToHex(i),w=[["file-type",a],["encryption-algorithm","aes-gcm"],["decryption-key",g],["decryption-nonce",y],["ox",s]];l&&w.push(["dim",l]),u!==void 0&&w.push(["size",String(u)]),f&&w.push(["thumbhash",f]);const{giftWrap:v,seal:k,rumor:E}=go.createGiftWrappedMessage(o,e,d.privkey,t,p,w,ce.RUMOR_FILE);console.debug("[DM] file rumor:",E),console.debug("[DM] file seal:",k),console.debug("[DM] file giftWrap:",v);const A=go.createGiftWrapForSelf(E,d.privkey,d.pubkey,e),N=this.getParticipantsKey(e,t),T={id:E.id,participantsKey:N,senderPubkey:e,content:E.content,createdAt:E.created_at,originalEvent:A,decryptedRumor:E};await this.saveMessage(T),await this.updateConversation(e,t,T),this.pendingPublishData.set(T.id,{giftWrap:v,selfGiftWrap:A,recipientDmRelays:m}),this.sendingStatuses.set(T.id,"sending"),this.emitNewMessage(T);try{const C=await le.fetchDmRelays(e),[P,M]=await Promise.allSettled([le.publishEvent(m,v),le.publishEvent(C,A)]);if(M.status==="rejected"&&console.warn("[DM] selfGiftWrap publish failed:",M.reason),P.status==="rejected")throw P.reason;this.sendingStatuses.set(T.id,"sent"),this.pendingPublishData.delete(T.id),this.emitSendingStatusChanged(),setTimeout(()=>{this.sendingStatuses.delete(T.id),this.emitSendingStatusChanged()},3e3)}catch(C){throw this.sendingStatuses.set(T.id,"failed"),this.emitSendingStatusChanged(),C}return T}async sendReaction(e,t,o,a,r){const i=this.currentEncryptionKeypair??Pn.getEncryptionKeypair(e);if(!i)throw new Error("Encryption keypair not available");const s=await this.getRecipientEncryptionPubkey(t);if(!s)throw new Error("Recipient does not have encryption key published");const l=await le.fetchDmRelays(t),u=l[0]??"",f=[["e",o,u]];r&&f.push(r);const{giftWrap:d,rumor:p}=go.createGiftWrappedMessage(a,e,i.privkey,t,s,f,Z.Reaction),m=go.createGiftWrapForSelf(p,i.privkey,i.pubkey,e),g=this.getParticipantsKey(e,t),y={id:p.id,participantsKey:g,senderPubkey:e,content:p.content,createdAt:p.created_at,originalEvent:m,decryptedRumor:p};await this.saveMessage(y),this.emitNewReaction(y);const w=await le.fetchDmRelays(e);return await Promise.allSettled([le.publishEvent(l,d),le.publishEvent(w,m)]),y}async startRelaySubscription(e,t){const o=await le.fetchDmRelays(e),a=Pn.getClientKeypair(e),r=Math.floor(Date.now()/1e3)-300,i=le.subscribe(o,[{kinds:[ce.GIFT_WRAP],"#p":[e],limit:0},{kinds:[ce.CLIENT_KEY_ANNOUNCEMENT],authors:[e],since:r,limit:1},{kinds:[ce.ENCRYPTION_KEY_ANNOUNCEMENT],authors:[e],limit:0}],{onevent:async s=>{var d;if(s.kind===ce.CLIENT_KEY_ANNOUNCEMENT){const p=Pn.getClientPubkeyFromEvent(s);if(!p||p===a.pubkey||pe.getProcessedSyncRequestIds().includes(s.id))return;this.emitSyncRequest(s);return}if(s.kind===ce.ENCRYPTION_KEY_ANNOUNCEMENT){const p=Pn.getEncryptionPubkeyFromEvent(s);if(!p||p===t.pubkey)return;this.emitEncryptionKeyChanged(p);return}const l=s,u=go.unwrapGiftWrap(l,t.privkey);if(!u)return;const f=this.createMessageFromUnwrapped(e,t.pubkey,u,l);if(f){const p=u.rumor.kind===Z.Reaction;if(p||await this.resolveReplyTo(f),await this.saveMessage(f),p)this.emitNewReaction(f);else{const m=this.isFromMe(u.senderPubkey,e,t.pubkey),g=m?(d=u.rumor.tags.find(w=>w[0]==="p"))==null?void 0:d[1]:u.senderPubkey,y=m?void 0:u.senderEncryptionPubkey;g&&await this.updateConversation(e,g,f,y),this.emitNewMessage(f)}}}});this.relaySubscription={close:()=>i.close()}}async deleteConversation(e,t){const o=this.getConversationKey(e,t),a=await be.getDmConversation(o);if(!a)return;const r=Math.floor(Date.now()/1e3);await be.putDmConversation({...a,deleted:!0,deletedAt:r,unreadCount:0,hasReplied:!1}),this.emitDataChanged()}async getConversations(e){const t=(await be.getAllDmConversations(e)).filter(a=>!a.deleted),o=t.filter(a=>!a.lastMessageRumor||a.lastMessageRumor.kind===Z.Reaction);return o.length>0&&await Promise.all(o.map(async a=>{const r=this.getParticipantsKey(e,a.pubkey),s=(await be.getDmMessages(r,{after:a.deletedAt})).filter(l=>{var u;return((u=l.decryptedRumor)==null?void 0:u.kind)!==Z.Reaction}).sort((l,u)=>u.createdAt-l.createdAt)[0];s!=null&&s.decryptedRumor&&(a.lastMessageRumor=s.decryptedRumor,await be.putDmConversation(a))})),t}async getConversation(e,t){const o=this.getConversationKey(e,t);return be.getDmConversation(o)}async getMessages(e,t,o){const a=this.getParticipantsKey(e,t),r=this.getConversationKey(e,t),i=await be.getDmConversation(r);return be.getDmMessages(a,{...o,after:i==null?void 0:i.deletedAt})}async markConversationAsRead(e,t){const o=this.getConversationKey(e,t),a=Math.floor(Date.now()/1e3);pe.setLastReadDmTime(e,t,a);const r=await be.getDmConversation(o);r&&r.unreadCount>0&&(await be.putDmConversation({...r,unreadCount:0}),this.emitDataChanged())}setActiveConversation(e,t){this.activeConversationKey=this.getConversationKey(e,t)}clearActiveConversation(e,t){const o=this.getConversationKey(e,t);this.activeConversationKey===o&&(this.activeConversationKey=null)}isActiveConversation(e,t){return this.activeConversationKey===this.getConversationKey(e,t)}getConversationKey(e,t){return`${e}:${t}`}getParticipantsKey(e,t){return[e,t].sort().join(":")}async extractEncryptionPubkeyFromRelays(e,t,o){try{const a=await le.fetchDmRelays(e);if(a.length===0)return null;const r=await le.fetchEvents(a,{kinds:[ce.GIFT_WRAP],"#p":[e],limit:20});for(const i of r){const s=go.unwrapGiftWrap(i,o.privkey);if(!s)continue;if(!this.isFromMe(s.senderPubkey,e,o.pubkey)&&s.senderPubkey===t){const u=await this.getConversation(e,t);return u&&(u.encryptionPubkey=s.senderEncryptionPubkey,await be.putDmConversation(u)),s.senderEncryptionPubkey}}}catch(a){console.error("[checkDmSupport] extractEncryptionPubkeyFromRelays failed:",a)}return null}isFromMe(e,t,o){return e===t||e===o}createMessageFromUnwrapped(e,t,o,a){const{rumor:r,senderPubkey:i}=o;if(r.kind!==ce.RUMOR_CHAT&&r.kind!==ce.RUMOR_FILE&&r.kind!==Z.Reaction)return null;const s=r.tags.filter(g=>g[0]==="p");if(s.length!==1)return null;const l=s[0][1],f=this.isFromMe(i,e,t)?e:i,d=this.getParticipantsKey(f,l),p=r.tags.find(g=>g[0]==="e"),m=p==null?void 0:p[1];return{id:r.id,participantsKey:d,senderPubkey:f,content:r.content,createdAt:r.created_at,originalEvent:a,decryptedRumor:r,...m?{replyTo:{id:m,content:"",senderPubkey:""}}:{}}}getFilePreviewContent(e){var o;const t=((o=e==null?void 0:e.find(a=>a[0]==="file-type"))==null?void 0:o[1])??"";return t.startsWith("image/")?"[Image]":t.startsWith("video/")?"[Video]":t.startsWith("audio/")?"[Audio]":"[File]"}async resolveReplyTo(e){var o,a,r;if(!e.replyTo||e.replyTo.content&&e.replyTo.senderPubkey)return e;const t=await be.getDmMessageById(e.replyTo.id);if(t){const i=((o=t.decryptedRumor)==null?void 0:o.kind)===ce.RUMOR_FILE;e.replyTo={id:t.id,content:i?this.getFilePreviewContent((a=t.decryptedRumor)==null?void 0:a.tags):t.content,senderPubkey:t.senderPubkey,tags:(r=t.decryptedRumor)==null?void 0:r.tags}}return e}async saveMessage(e){await be.putDmMessage(e)}async updateConversation(e,t,o,a){var g;const r=this.getConversationKey(e,t),i=await be.getDmConversation(r);if((i==null?void 0:i.deletedAt)!==void 0&&o.createdAt<=i.deletedAt){a&&a!==i.encryptionPubkey&&await be.putDmConversation({...i,encryptionPubkey:a});return}const s=pe.getLastReadDmTime(e,t),u=!(this.activeConversationKey===r)&&o.senderPubkey!==e&&o.createdAt>(s??0),f=((g=o.decryptedRumor)==null?void 0:g.kind)===Z.Reaction,d=o.createdAt>=((i==null?void 0:i.lastMessageAt)??0),p=d&&!f&&o.senderPubkey===e;p&&o.createdAt>(s??0)&&pe.setLastReadDmTime(e,t,o.createdAt);const m={key:r,pubkey:t,lastMessageAt:Math.max((i==null?void 0:i.lastMessageAt)??0,o.createdAt),lastMessageRumor:d&&!f?o.decryptedRumor:i==null?void 0:i.lastMessageRumor,unreadCount:p?0:((i==null?void 0:i.unreadCount)??0)+(u?1:0),hasReplied:(i==null?void 0:i.hasReplied)||o.senderPubkey===e,encryptionPubkey:a??(i==null?void 0:i.encryptionPubkey),deleted:!1,deletedAt:i==null?void 0:i.deletedAt};await be.putDmConversation(m)}async rebuildConversationsFromMessages(e,t,o){var r,i;const a=new Map;for(const s of t){const l=s.senderPubkey===e?(i=(r=s.decryptedRumor.tags)==null?void 0:r.find(f=>f[0]==="p"))==null?void 0:i[1]:s.senderPubkey;if(!l)continue;const u=this.getConversationKey(e,l);a.has(u)||a.set(u,{otherPubkey:l,messages:[]}),a.get(u).messages.push(s)}for(const[s,{otherPubkey:l,messages:u}]of a){const f=pe.getLastReadDmTime(e,l),d=await be.getDmConversation(s),p=d==null?void 0:d.deletedAt,m=this.getParticipantsKey(e,l),y=[...await be.getDmMessages(m,{after:p})];for(const M of u)p!==void 0&&M.createdAt<=p||y.some(U=>U.id===M.id)||y.push(M);const w=y.filter(M=>{var U;return((U=M.decryptedRumor)==null?void 0:U.kind)!==Z.Reaction}),k=w.sort((M,U)=>U.createdAt-M.createdAt)[0],E=!!k&&k.senderPubkey===e;E&&k.createdAt>(f??0)&&pe.setLastReadDmTime(e,l,k.createdAt);const A=E?0:w.filter(M=>M.senderPubkey!==e&&M.createdAt>(f??0)).length,N=(d==null?void 0:d.hasReplied)||w.some(M=>M.senderPubkey===e),C=w.length>0?!1:(d==null?void 0:d.deleted)??!1,P={key:s,pubkey:l,lastMessageAt:(k==null?void 0:k.createdAt)??(d==null?void 0:d.lastMessageAt)??0,lastMessageRumor:(k==null?void 0:k.decryptedRumor)??(d==null?void 0:d.lastMessageRumor),unreadCount:A,hasReplied:N,encryptionPubkey:(o==null?void 0:o.get(l))??(d==null?void 0:d.encryptionPubkey),deleted:C,deletedAt:p};await be.putDmConversation(P)}}};H(er,"instance");let Bh=er;const xn=Bh.getInstance(),Xk=h.createContext(void 0),D9=()=>{const n=h.useContext(Xk);if(!n)throw new Error("useDm must be used within a DmProvider");return n};function _9({children:n}){const{pubkey:e}=Je(),[t,o]=h.useState([]),[a,r]=h.useState(!1),[i,s]=h.useState(!1),l=h.useRef(!1);h.useEffect(()=>{if(!e){xn.destroy(),o([]),s(!1),l.current=!1;return}if(l.current)return;l.current=!0,(async()=>{const N=Pn.getEncryptionKeypair(e)||Pn.generateEncryptionKey(e);if(N){r(!0);try{await xn.init(e,N),s(!0);const T=await xn.getConversations(e);o(T)}catch(T){console.error("Failed to init DM service:",T)}finally{r(!1)}}})();const E=xn.onDataChanged(async()=>{if(!e)return;const N=await xn.getConversations(e);o(N)}),A=xn.onLoadingChanged(N=>{r(N)});return()=>{E(),A()}},[e]);const u=h.useCallback(async(k,E,A)=>{if(!e)throw new Error("Not logged in");return xn.sendMessage(e,k,E,A)},[e]),f=h.useCallback(async(k,E)=>{if(!e)throw new Error("Not logged in");return xn.getMessages(e,k,E)},[e]),d=h.useCallback(async k=>{e&&await xn.markConversationAsRead(e,k)},[e]),p=h.useCallback(async k=>{if(!e)return;await xn.deleteConversation(e,k);const E=await xn.getConversations(e);o(E)},[e]),m=h.useCallback(k=>{e&&xn.setActiveConversation(e,k)},[e]),g=h.useCallback(k=>{e&&xn.clearActiveConversation(e,k)},[e]),y=!!e&&Pn.hasEncryptionKey(e),w=h.useCallback(()=>e?Pn.generateEncryptionKey(e):null,[e]),v=h.useCallback(()=>e?Pn.getEncryptionKeypair(e):null,[e]);return c.jsx(Xk.Provider,{value:{conversations:t,loading:a,isInitialized:i,sendMessage:u,getMessages:f,markAsRead:d,deleteConversation:p,setActiveConversation:m,clearActiveConversation:g,hasEncryptionKey:y,generateEncryptionKey:w,getEncryptionKeypair:v},children:n})}function F9(){const{checkLogin:n}=Je(),{navigate:e,current:t,display:o}=Ol(),{pop:a,currentIndex:r}=Vt(),{conversations:i}=D9(),s=t==="dms"&&o,l=h.useMemo(()=>i.reduce((u,f)=>u+(f.unreadCount||0),0),[i]);return c.jsx(dd,{active:s,onClick:()=>{Un("click"),n(()=>{o||a(-(r+1)),e("dms")})},children:c.jsxs("div",{className:"relative",children:[c.jsx(zs,{}),l>0&&c.jsx("div",{className:"absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-primary/90 text-center text-[8px] font-bold text-primary-foreground shadow-sm shadow-primary/50 ring-2 ring-primary/30",children:l>=10?"9+":l})]})})}async function O9(n,{pubkey:e,mutePubkeySet:t,hideContentMentioningMutedUsers:o,meetsMinTrustScore:a}){var r;return!(t.has(n.pubkey)||o&&zu(n,t)||!await a(n.pubkey)||e&&n.kind===Z.Reaction&&((r=n.tags.findLast(Ke("p")))==null?void 0:r[1])!==e)}const eS=h.createContext(void 0),U9=()=>{const n=h.useContext(eS);if(!n)throw new Error("useNotification must be used within a NotificationProvider");return n};function B9({children:n}){const{current:e}=Ol(),t=h.useMemo(()=>e==="notifications",[e]),{pubkey:o,notificationsSeenAt:a,updateNotificationsSeenAt:r}=Je(),{mutePubkeySet:i}=Pr(),{getMinTrustScore:s,meetsMinTrustScore:l}=es(),{hideContentMentioningMutedUsers:u}=Qt(),[f,d]=h.useState([]),[p,m]=h.useState(new Set),[g,y]=h.useState([]);h.useEffect(()=>{if(t||a<0){y([]);return}(async()=>{const A=[],N=s(cr.NOTIFICATIONS);await Promise.allSettled(f.map(async T=>{T.created_at<=a||A.length>=10||await O9(T,{pubkey:o,mutePubkeySet:i,hideContentMentioningMutedUsers:u,meetsMinTrustScore:async C=>N===0?!0:l(C,N)})&&A.push(T)})),y(A)})()},[f,a,i,u,l]),h.useEffect(()=>{d([]),r(!t),t&&"clearAppBadge"in navigator&&navigator.clearAppBadge()},[t]),h.useEffect(()=>{if(!o)return;d([]),m(new Set);const A=(async()=>{let N=!1;const T=await le.fetchRelayList(o),C=T.read.length>0?T.read.slice(0,5):kt();return le.subscribe(C,[{kinds:[Z.ShortTextNote,Z.Repost,Z.GenericRepost,Z.Reaction,Z.Zap,Z.Highlights,ce.COMMENT,ce.POLL_RESPONSE,ce.VOICE_COMMENT,ce.POLL,Fi.GROUP_CHAT_MESSAGE],"#p":[o],limit:20}],{oneose:P=>{P&&(N=P,d(M=>[...M.sort((U,O)=>Uo(O,U))]))},onevent:P=>{P.pubkey!==o&&d(M=>N?M.length&&Uo(M[0],P)>=0?M:(le.emitNewEvent(P,C),[P,...M]):[P,...M])}})})();return()=>{A.then(N=>N.close())}},[o]),h.useEffect(()=>{const E=g.length;E>0?document.title=`(${E>=10?"9+":E}) RogueJumble`:document.title="RogueJumble","setAppBadge"in navigator&&(E>0?navigator.setAppBadge(E):navigator.clearAppBadge());const A=document.querySelectorAll("link[rel*='icon']");if(A.length)if(E===0)A.forEach(N=>{N.href="/favicon.ico"});else{const N=document.createElement("img");N.src="/favicon.ico",N.onload=()=>{const T=Math.max(N.width,N.height,32),C=document.createElement("canvas");C.width=T,C.height=T;const P=C.getContext("2d");if(!P)return;P.drawImage(N,0,0,T,T);const M=T*.16;P.beginPath(),P.arc(T-M-6,M+6,M,0,2*Math.PI),P.fillStyle="#FF0000",P.fill(),A.forEach(U=>{U.href=C.toDataURL("image/png")})}}},[g]);const w=()=>a>=0?a:o?pe.getLastReadNotificationTime(o):0,v=E=>p.has(E),k=E=>{m(A=>new Set([...A,E]))};return c.jsx(eS.Provider,{value:{hasNewNotification:g.length>0,unreadCount:g.length,getNotificationsSeenAt:w,isNotificationRead:v,markNotificationAsRead:k},children:n})}function V9(){const{checkLogin:n}=Je(),{navigate:e,current:t,display:o}=Ol(),{pop:a,currentIndex:r}=Vt(),{unreadCount:i}=U9(),s=t==="notifications"&&o;return c.jsx(dd,{active:s,onClick:()=>{Un("click"),n(()=>{o||a(-(r+1)),e("notifications")})},children:c.jsxs("div",{className:"relative",children:[c.jsx(U1,{}),i>0&&c.jsx("div",{className:"absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-primary/90 text-center text-[8px] font-bold text-primary-foreground shadow-sm shadow-primary/50 ring-2 ring-primary/30",children:i>=10?"9+":i})]})})}var W9=h.forwardRef((n,e)=>{const{children:t,...o}=n,a=h.Children.toArray(t),r=a.find(q9);if(r){const i=r.props.children,s=a.map(l=>l===r?h.Children.count(i)>1?h.Children.only(null):h.isValidElement(i)?i.props.children:null:l);return c.jsx(Vh,{...o,ref:e,children:h.isValidElement(i)?h.cloneElement(i,void 0,s):null})}return c.jsx(Vh,{...o,ref:e,children:t})});W9.displayName="Slot";var Vh=h.forwardRef((n,e)=>{const{children:t,...o}=n;if(h.isValidElement(t)){const a=$9(t);return h.cloneElement(t,{...H9(o,t.props),ref:e?ta(e,a):a})}return h.Children.count(t)>1?h.Children.only(null):null});Vh.displayName="SlotClone";var tS=({children:n})=>c.jsx(c.Fragment,{children:n});function q9(n){return h.isValidElement(n)&&n.type===tS}function H9(n,e){const t={...e};for(const o in e){const a=n[o],r=e[o];/^on[A-Z]/.test(o)?a&&r?t[o]=(...s)=>{r(...s),a(...s)}:a&&(t[o]=a):o==="style"?t[o]={...a,...r}:o==="className"&&(t[o]=[a,r].filter(Boolean).join(" "))}return{...n,...t}}function $9(n){var o,a;let e=(o=Object.getOwnPropertyDescriptor(n.props,"ref"))==null?void 0:o.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=(a=Object.getOwnPropertyDescriptor(n,"ref"))==null?void 0:a.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}var nS="AlertDialog",[Y9,HV]=Bn(nS,[Hv]),ia=Hv(),oS=n=>{const{__scopeAlertDialog:e,...t}=n,o=ia(e);return c.jsx(Yu,{...o,...t,modal:!0})};oS.displayName=nS;var K9="AlertDialogTrigger",aS=h.forwardRef((n,e)=>{const{__scopeAlertDialog:t,...o}=n,a=ia(t);return c.jsx(_p,{...a,...o,ref:e})});aS.displayName=K9;var G9="AlertDialogPortal",rS=n=>{const{__scopeAlertDialog:e,...t}=n,o=ia(e);return c.jsx(Ku,{...o,...t})};rS.displayName=G9;var J9="AlertDialogOverlay",iS=h.forwardRef((n,e)=>{const{__scopeAlertDialog:t,...o}=n,a=ia(t);return c.jsx(Wi,{...a,...o,ref:e})});iS.displayName=J9;var yi="AlertDialogContent",[Z9,Q9]=Y9(yi),sS=h.forwardRef((n,e)=>{const{__scopeAlertDialog:t,children:o,...a}=n,r=ia(t),i=h.useRef(null),s=zt(e,i),l=h.useRef(null);return c.jsx(rz,{contentName:yi,titleName:lS,docsSlug:"alert-dialog",children:c.jsx(Z9,{scope:t,cancelRef:l,children:c.jsxs(qi,{role:"alertdialog",...r,...a,ref:s,onOpenAutoFocus:Fe(a.onOpenAutoFocus,u=>{var f;u.preventDefault(),(f=l.current)==null||f.focus({preventScroll:!0})}),onPointerDownOutside:u=>u.preventDefault(),onInteractOutside:u=>u.preventDefault(),children:[c.jsx(tS,{children:o}),c.jsx(e_,{contentRef:i})]})})})});sS.displayName=yi;var lS="AlertDialogTitle",cS=h.forwardRef((n,e)=>{const{__scopeAlertDialog:t,...o}=n,a=ia(t);return c.jsx(Hi,{...a,...o,ref:e})});cS.displayName=lS;var uS="AlertDialogDescription",dS=h.forwardRef((n,e)=>{const{__scopeAlertDialog:t,...o}=n,a=ia(t);return c.jsx($i,{...a,...o,ref:e})});dS.displayName=uS;var X9="AlertDialogAction",fS=h.forwardRef((n,e)=>{const{__scopeAlertDialog:t,...o}=n,a=ia(t);return c.jsx(Rl,{...a,...o,ref:e})});fS.displayName=X9;var hS="AlertDialogCancel",pS=h.forwardRef((n,e)=>{const{__scopeAlertDialog:t,...o}=n,{cancelRef:a}=Q9(hS,t),r=ia(t),i=zt(e,a);return c.jsx(Rl,{...r,...o,ref:i})});pS.displayName=hS;var e_=({contentRef:n})=>{const e=`\`${yi}\` requires a description for the component to be accessible for screen reader users.

You can add a description to the \`${yi}\` by passing a \`${uS}\` component as a child, which also benefits sighted users by adding visible context to the dialog.

Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${yi}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.

For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return h.useEffect(()=>{var o;document.getElementById((o=n.current)==null?void 0:o.getAttribute("aria-describedby"))||console.warn(e)},[e,n]),null},t_=oS,n_=aS,o_=rS,mS=iS,gS=sS,yS=fS,wS=pS,vS=cS,bS=dS;const kS=t_,a_=n_,r_=o_,SS=h.forwardRef(({className:n,...e},t)=>c.jsx(mS,{className:ne("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...e,ref:t}));SS.displayName=mS.displayName;const gm=h.forwardRef(({className:n,...e},t)=>c.jsxs(r_,{children:[c.jsx(SS,{}),c.jsx(gS,{ref:t,className:ne("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),...e})]}));gm.displayName=gS.displayName;const ym=({className:n,...e})=>c.jsx("div",{className:ne("flex flex-col space-y-2 text-center sm:text-left",n),...e});ym.displayName="AlertDialogHeader";const wm=({className:n,...e})=>c.jsx("div",{className:ne("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...e});wm.displayName="AlertDialogFooter";const vm=h.forwardRef(({className:n,...e},t)=>c.jsx(vS,{ref:t,className:ne("text-lg font-semibold",n),...e}));vm.displayName=vS.displayName;const bm=h.forwardRef(({className:n,...e},t)=>c.jsx(bS,{ref:t,className:ne("text-sm text-muted-foreground",n),...e}));bm.displayName=bS.displayName;const xS=h.forwardRef(({className:n,variant:e,size:t,...o},a)=>c.jsx(yS,{ref:a,className:ne(Up({variant:e,size:t,className:n})),...o}));xS.displayName=yS.displayName;const AS=h.forwardRef(({className:n,...e},t)=>c.jsx(wS,{ref:t,className:ne(Up({variant:"outline"}),"mt-2 sm:mt-0",n),...e}));AS.displayName=wS.displayName;const ES=h.createContext(void 0),RS=()=>{const n=h.useContext(ES);if(!n)throw new Error("useFollowList must be used within a FollowListProvider");return n};function i_({children:n}){const{t:e}=Ae(),{pubkey:t,followListEvent:o,publish:a,updateFollowListEvent:r}=Je(),i=h.useMemo(()=>new Set(o?Ls(o.tags):[]),[o]),s=async u=>{if(!t)return;const f=await le.fetchFollowListEvent(t);if(!f&&!confirm(e("FollowListNotFoundConfirmation")))return;const d=dh(((f==null?void 0:f.tags)??[]).concat([["p",u]]),f==null?void 0:f.content);try{const p=await a(d);if(p.pubkey!==t)return;await r(p)}catch(p){wt(p).forEach(g=>{Ue.error(`Failed to follow: ${g}`,{duration:1e4})})}},l=async u=>{if(!t)return;const f=await le.fetchFollowListEvent(t);if(!f)return;const d=dh(f.tags.filter(([p,m])=>p!=="p"||m!==u),f.content);try{const p=await a(d);if(p.pubkey!==t)return;await r(p)}catch(p){wt(p).forEach(g=>{Ue.error(`Failed to unfollow: ${g}`,{duration:1e4})})}};return c.jsx(ES.Provider,{value:{followingSet:i,follow:s,unfollow:l},children:n})}function s_({pubkey:n}){const{t:e}=Ae(),{pubkey:t,checkLogin:o}=Je(),{followingSet:a,follow:r,unfollow:i}=RS(),[s,l]=h.useState(!1),[u,f]=h.useState(!1),d=h.useMemo(()=>a.has(n),[a,n]);if(!t||n&&n===t)return null;const p=async g=>{g.stopPropagation(),o(async()=>{d||(l(!0),await r(n),l(!1))})},m=async g=>{g.stopPropagation(),o(async()=>{d&&(l(!0),await i(n),l(!1))})};return d?c.jsx("div",{onClick:g=>g.stopPropagation(),children:c.jsxs(kS,{children:[c.jsx(a_,{asChild:!0,children:c.jsx(xe,{className:"min-w-28 rounded-full",variant:u?"destructive":"secondary",disabled:s,onMouseEnter:()=>f(!0),onMouseLeave:()=>f(!1),children:s?c.jsx(wn,{className:"animate-spin"}):e(u?"Unfollow":"buttonFollowing")})}),c.jsxs(gm,{children:[c.jsxs(ym,{children:[c.jsxs(vm,{children:[e("Unfollow"),"?"]}),c.jsx(bm,{children:e("Are you sure you want to unfollow this user?")})]}),c.jsxs(wm,{children:[c.jsx(AS,{children:e("Cancel")}),c.jsx(xS,{onClick:m,variant:"destructive",children:e("Unfollow")})]})]})]})}):c.jsx(xe,{className:"min-w-28 rounded-full",onClick:p,disabled:s,children:s?c.jsx(wn,{className:"animate-spin"}):e("Follow")})}var Nc={exports:{}},l_=Nc.exports,f0;function c_(){return f0||(f0=1,function(n){(function(e,t){n.exports?n.exports=t():e.UriTemplate=t()})(l_,function(){var e={"+":!0,"#":!0,".":!0,"/":!0,";":!0,"?":!0,"&":!0},t={"*":!0};function o(s){return encodeURI(s).replace(/%25[0-9][0-9]/g,function(l){return"%"+l.substring(3)})}function a(s){return s=s.replace(/%../g,""),encodeURIComponent(s)===s}function r(s){var l="";e[s.charAt(0)]&&(l=s.charAt(0),s=s.substring(1));var u="",f="",d=!0,p=!1,m=!1;l=="+"?d=!1:l=="."?(f=".",u="."):l=="/"?(f="/",u="/"):l=="#"?(f="#",d=!1):l==";"?(f=";",u=";",p=!0,m=!0):l=="?"?(f="?",u="&",p=!0):l=="&"&&(f="&",u="&",p=!0);for(var g=[],y=s.split(","),w=[],v={},k=0;k<y.length;k++){var E=y[k],A=null;if(E.indexOf(":")!=-1){var N=E.split(":");E=N[0],A=parseInt(N[1])}for(var T={};t[E.charAt(E.length-1)];)T[E.charAt(E.length-1)]=!0,E=E.substring(0,E.length-1);var C={truncate:A,name:E,suffices:T};w.push(C),v[E]=C,g.push(E)}var P=function(U){for(var O="",W=0,V=0;V<w.length;V++){var j=w[V],L=U(j.name);if(L==null||Array.isArray(L)&&L.length==0||typeof L=="object"&&Object.keys(L).length==0){W++;continue}if(V==W?O+=f:O+=u||",",Array.isArray(L)){p&&(O+=j.name+"=");for(var I=0;I<L.length;I++)I>0&&(O+=j.suffices["*"]&&u||",",j.suffices["*"]&&p&&(O+=j.name+"=")),O+=d?encodeURIComponent(L[I]).replace(/!/g,"%21"):o(L[I])}else if(typeof L=="object"){p&&!j.suffices["*"]&&(O+=j.name+"=");var b=!0;for(var S in L)b||(O+=j.suffices["*"]&&u||","),b=!1,O+=d?encodeURIComponent(S).replace(/!/g,"%21"):o(S),O+=j.suffices["*"]?"=":",",O+=d?encodeURIComponent(L[S]).replace(/!/g,"%21"):o(L[S])}else p&&(O+=j.name,(!m||L!="")&&(O+="=")),j.truncate!=null&&(L=L.substring(0,j.truncate)),O+=d?encodeURIComponent(L).replace(/!/g,"%21"):o(L)}return O},M=function(U,O,W){if(f&&(U=U.substring(f.length)),w.length==1&&w[0].suffices["*"]){for(var V=w[0],j=V.name,L=V.suffices["*"]?U.split(u||","):[U],I=d&&U.indexOf("=")!=-1,b=1;b<L.length;b++){var U=L[b];I&&U.indexOf("=")==-1&&(L[b-1]+=(u||",")+U,L.splice(b,1),b--)}for(var b=0;b<L.length;b++){var U=L[b];d&&U.indexOf("=")!=-1&&(I=!0);var S=U.split(",");S.length==1?L[b]=S[0]:L[b]=S}if(p||I){for(var z=O[j]||{},F=0;F<L.length;F++){var D=U;if(!(p&&!D)){if(typeof L[F]=="string"){var U=L[F],q=U.split("=",1)[0],U=U.substring(q.length+1);if(d){if(W&&!a(U))return;U=decodeURIComponent(U)}D=U}else{var U=L[F][0],q=U.split("=",1)[0],U=U.substring(q.length+1);if(d){if(W&&!a(U))return;U=decodeURIComponent(U)}L[F][0]=U,D=L[F]}if(d){if(W&&!a(q))return;q=decodeURIComponent(q)}z[q]!==void 0?Array.isArray(z[q])?z[q].push(D):z[q]=[z[q],D]:z[q]=D}}Object.keys(z).length==1&&z[j]!==void 0?O[j]=z[j]:O[j]=z}else{if(d)for(var F=0;F<L.length;F++){var S=L[F];if(Array.isArray(S))for(var J=0;J<S.length;J++){if(W&&!a(S[J]))return;S[J]=decodeURIComponent(S[J])}else{if(W&&!a(S))return;L[F]=decodeURIComponent(S)}}O[j]!==void 0?Array.isArray(O[j])?O[j]=O[j].concat(L):O[j]=[O[j]].concat(L):L.length==1&&!V.suffices["*"]?O[j]=L[0]:O[j]=L}}else{for(var L=w.length==1?[U]:U.split(u||","),ae={},b=0;b<L.length;b++){for(var ge=0;ge<w.length-1&&ge<b&&!w[ge].suffices["*"];ge++);if(ge==b){ae[b]=b;continue}else{for(var ie=w.length-1;ie>0&&w.length-ie<L.length-b&&!w[ie].suffices["*"];ie--);if(w.length-ie==L.length-b){ae[b]=ie;continue}}ae[b]=ge}for(var b=0;b<L.length;b++){var U=L[b];if(!(!U&&p)){var S=U.split(","),I=!1;if(p){var U=S[0],j=U.split("=",1)[0],U=U.substring(j.length+1);S[0]=U;var V=v[j]||w[0]}else var V=w[ae[b]],j=V.name;for(var F=0;F<S.length;F++)if(d){if(W&&!a(S[F]))return;S[F]=decodeURIComponent(S[F])}(p||V.suffices["*"])&&O[j]!==void 0?Array.isArray(O[j])?O[j]=O[j].concat(S):O[j]=[O[j]].concat(S):S.length==1&&!V.suffices["*"]?O[j]=S[0]:O[j]=S}}}return 1};return{varNames:g,prefix:f,substitution:P,unSubstitution:M}}function i(s){if(!(this instanceof i))return new i(s);for(var l=s.split("{"),u=[l.shift()],f=[],d=[],p=[],m=[];l.length>0;){var g=l.shift(),y=g.split("}")[0],w=g.substring(y.length+1),v=r(y);d.push(v.substitution),p.push(v.unSubstitution),f.push(v.prefix),u.push(w),m=m.concat(v.varNames)}this.fill=function(k){if(k&&typeof k!="function"){var E=k;k=function(C){return E[C]}}for(var A=u[0],N=0;N<d.length;N++){var T=d[N];A+=T(k),A+=u[N+1]}return A},this.fromUri=function(k,E){E=E||{};for(var A={},N=0;N<u.length;N++){var T=u[N];if(k.substring(0,T.length)!==T)return;if(k=k.substring(T.length),N>=u.length-1){if(k=="")break;return}var C=f[N];if(!(C&&k.substring(0,C.length)!==C)){for(var P=u[N+1],M=N;;){if(M==u.length-2){var U=k.substring(k.length-P.length);if(U!==P)return;var O=k.substring(0,k.length-P.length);k=U}else if(P){var W=k.indexOf(P),O=k.substring(0,W);k=k.substring(W)}else if(f[M+1]){var W=k.indexOf(f[M+1]);W===-1&&(W=k.length);var O=k.substring(0,W);k=k.substring(W)}else if(u.length>M+2){M++,P=u[M+1];continue}else{var O=k;k=""}break}if(!p[N](O,A,E.strict))return}}return A},this.varNames=m,this.template=s}return i.prototype={toString:function(){return this.template},fillFromObject:function(s){return this.fill(s)},test:function(s,l){return!!this.fromUri(s,l)}},i})}(Nc)),Nc.exports}var u_=c_();const d_=Ru(u_);function f_(n,e){const t=new URL(e);return d_(n).fill({href:t.href,origin:t.origin,protocol:t.protocol,username:t.username,password:t.password,host:t.host,hostname:t.hostname,port:t.port,pathname:t.pathname,hash:t.hash,search:t.search})}function h_({domain:n,className:e,fallback:t=null}){const{faviconUrlTemplate:o}=Qt(),[a,r]=h.useState(!0),[i,s]=h.useState(!1);if(i)return t;const l=f_(o,`https://${n}`);return c.jsxs("div",{className:ne("relative",e),children:[a&&c.jsx("div",{className:ne("absolute inset-0",e),children:t}),c.jsx("img",{src:l,alt:n,className:ne("absolute inset-0",a&&"opacity-0",e),onError:()=>s(!0),onLoad:()=>r(!1)})]})}function km({pubkey:n,append:e}){const{profile:t}=Xi(n),{nip05IsVerified:o,nip05Name:a,nip05Domain:r,isFetching:i}=gL(t==null?void 0:t.nip05,n);return i?c.jsx("div",{className:"flex items-center py-1",children:c.jsx(Tn,{className:"h-3 w-16"})}):!(t!=null&&t.nip05)||!a||!r?null:c.jsxs("div",{className:"flex items-center gap-1 truncate [&_svg]:!size-3.5 [&_svg]:shrink-0",onClick:s=>s.stopPropagation(),children:[a!=="_"?c.jsxs("span",{className:"truncate text-sm text-muted-foreground",children:["@",a]}):null,o?c.jsx(h_,{domain:r,className:"h-3.5 w-3.5 shrink-0 rounded-full",fallback:c.jsx(t4,{className:"shrink-0 text-primary"})}):c.jsx(e4,{className:"shrink-0 text-muted-foreground"}),c.jsx(Ma,{to:od({domain:r}),className:`truncate text-sm hover:underline ${o?"text-primary":"text-muted-foreground"}`,children:r}),e&&c.jsx("span",{className:"truncate text-sm text-muted-foreground",children:e})]})}const CS={type:"hashtag",regex:hp},Sm={type:"mention",regex:fp},p_={type:"legacy-mention",regex:/npub1[a-z0-9]{58}|nprofile1[a-z0-9]+/g},PS={type:"event",regex:dp},m_={type:"bech32-event",regex:O4},g_={type:"group-link",regex:U4},NS={type:"websocket-url",regex:ew},hd={type:"emoji",regex:tw},y_={type:"invoice",regex:nw},xm=n=>{const e=n.matchAll(X1),t=[];let o=0;for(const a of e){const r=a.index;r>o&&t.push({type:"text",data:n.slice(o,r)});let i=a[0];if(i.endsWith(")")){const l=(i.match(/\(/g)||[]).length;(i.match(/\)/g)||[]).length>l&&(i=i.slice(0,-1))}let s="url";pP(i)?s="image":mP(i)?s="media":i.match(ow)?s="youtube":i.match(aw)&&(s="x-post"),t.push({type:s,data:i}),o=r+i.length}return o<n.length&&t.push({type:"text",data:n.slice(o)}),t};function pd(n,e){let t=[{type:"text",data:n.trim()}];return e.forEach(o=>{t=t.flatMap(a=>{if(a.type!=="text")return[a];if(typeof o=="function")return o(a.data);const r=a.data.matchAll(o.regex),i=[];let s=0;for(const l of r){const u=l.index;u>s&&i.push({type:"text",data:a.data.slice(s,u)}),i.push({type:o.type,data:l[0]}),s=u+l[0].length}return s<a.data.length&&i.push({type:"text",data:a.data.slice(s)}),i}).filter(a=>a.data!=="")}),t=w_(t),t=v_(t),t=b_(t),t}function w_(n){const e=[];let t="";return n.forEach(o=>{o.type==="text"?t+=o.data:(t&&(e.push({type:"text",data:t}),t=""),e.push(o))}),t&&e.push({type:"text",data:t}),e}function v_(n){const e=[];return n.forEach((t,o)=>{if(t.type==="image"){const a=e[e.length-1];a&&a.type==="images"?a.data.push(t.data):e.push({type:"images",data:[t.data]})}else if(t.type==="text"&&t.data.trim()===""){const a=e[e.length-1],r=n[o+1];if(a&&a.type==="images"&&r&&r.type==="image")return;e.push(t)}else e.push(t)}),e}function b_(n){const e=o=>["image","images","video","event"].includes(o.type),t=[];return n.forEach((o,a)=>{if(e(o)){t.push(o);return}const r=n[a-1],i=n[a+1];let s=o.data;r&&e(r)&&(s=s.replace(/^[ ]*\n/,"")),i&&e(i)&&(s=s.replace(/\n[ ]*$/,"")),t.push({type:o.type,data:s})}),t}function wi({hashtag:n}){return c.jsx(Ma,{className:"text-primary hover:underline",to:od({hashtag:n.replace("#","")}),onClick:e=>e.stopPropagation(),children:n})}const h0=[B4,rw],oi=class oi{constructor(){H(this,"provider",null);H(this,"recentSupportersCache",null);H(this,"transactionHistoryCache",null);H(this,"pendingTransactions",[]);H(this,"onBalanceChangeCallbacks",[]);H(this,"onTransactionChangeCallbacks",[]);return oi.instance||(oi.instance=this,IE({appName:"RogueJumble",showBalance:!0})),oi.instance}onBalanceChange(e){return this.onBalanceChangeCallbacks.push(e),()=>{this.onBalanceChangeCallbacks=this.onBalanceChangeCallbacks.filter(t=>t!==e)}}onTransactionChange(e){return this.onTransactionChangeCallbacks.push(e),()=>{this.onTransactionChangeCallbacks=this.onTransactionChangeCallbacks.filter(t=>t!==e)}}notifyBalanceChange(){this.onBalanceChangeCallbacks.forEach(e=>e())}notifyTransactionChange(){this.persistTransactions(),this.transactionHistoryCache=null,this.onTransactionChangeCallbacks.forEach(e=>e())}persistTransactions(){const e=[...this.pendingTransactions,...this.transactionHistoryCache||[]],t=this.deduplicateTransactions(e);pe.setWalletTransactions(t)}deduplicateTransactions(e){const t=new Set,o=[];for(const a of e)t.has(a.id)||a.invoice&&t.has(a.invoice)||(o.push(a),t.add(a.id),a.invoice&&t.add(a.invoice));return o}recordTransaction(e){this.pendingTransactions.unshift(e),this.onTransactionChangeCallbacks.forEach(t=>t())}completePendingTransaction(e,t){const o=this.pendingTransactions.findIndex(a=>a.id===e);if(o!==-1){const a=this.pendingTransactions[o];this.pendingTransactions.splice(o,1);const r={...a,status:"completed",preimage:t};this.pendingTransactions.unshift(r),this.onTransactionChangeCallbacks.forEach(i=>i())}}async zap(e,t,o,a,r){if(!le.signer)throw new Error("You need to be logged in to zap");const{recipient:i,event:s}=typeof t=="string"?{recipient:t}:{recipient:t.pubkey,event:t},[l,u,f]=await Promise.all([le.fetchProfile(i),le.fetchRelayList(i),e?le.fetchRelayList(e):Promise.resolve({read:kt(),write:kt()})]);if(!l)throw new Error("Recipient not found");const d=await this.getZapEndpoint(l);if(!d)throw new Error("Recipient's lightning address is invalid");const{callback:p,lnurl:m}=d,g=o*1e3,y=NE({...s?{event:s}:{pubkey:i},amount:g,relays:u.read.slice(0,4).concat(f.write.slice(0,3)).concat(kt()),comment:a}),w=await le.signer.signEvent(y),v=new URL(p);v.searchParams.append("amount",g.toString()),v.searchParams.append("nostr",JSON.stringify(w)),v.searchParams.append("lnurl",m);const E=await(await fetch(v.toString())).json();if(E.error)throw new Error(E.message);const{pr:A,verify:N,reason:T}=E;if(!A)throw new Error(T??"Failed to create invoice");if(this.recordTransaction({id:A,type:"sent",amount:o,status:"pending",date:new Date,invoice:A,description:a}),this.provider){const{preimage:C}=await this.provider.sendPayment(A);return r==null||r(),this.completePendingTransaction(A,C),this.notifyBalanceChange(),this.notifyTransactionChange(),{preimage:C,invoice:A}}return new Promise(C=>{r==null||r();let P,M;const{setPaid:U}=ag({invoice:A,onPaid:O=>{clearInterval(P),M==null||M.close(),this.completePendingTransaction(A,O.preimage),this.notifyBalanceChange(),this.notifyTransactionChange(),C({preimage:O.preimage,invoice:A})},onCancelled:()=>{clearInterval(P),M==null||M.close(),C(null)}});if(N)P=setInterval(async()=>{const O=new Es({pr:A,verify:N});await O.verifyPayment()&&O.preimage&&U({preimage:O.preimage})},1e3);else{const O={kinds:[Z.Zap],"#p":[i],since:Be().subtract(1,"minute").unix()};s&&(O["#e"]=[s.id]),M=le.subscribe(f.write.concat(kt()).slice(0,4),O,{onevent:W=>{const V=ws(W);V&&V.invoice===A&&U({preimage:V.preimage??""})}})}})}async payInvoice(e,t){let o=0;try{o=new Es({pr:e}).satoshi}catch{o=zw(e)}const a=`pending-${Date.now()}`;if(this.recordTransaction({id:a,type:"sent",amount:o,status:"pending",date:new Date,invoice:e,description:""}),this.provider){const{preimage:r}=await this.provider.sendPayment(e);return t==null||t(),this.completePendingTransaction(e,r),this.notifyBalanceChange(),this.notifyTransactionChange(),{preimage:r,invoice:e}}return new Promise(r=>{t==null||t(),ag({invoice:e,onPaid:i=>{this.completePendingTransaction(e,i.preimage),this.notifyBalanceChange(),this.notifyTransactionChange(),r({preimage:i.preimage,invoice:e})},onCancelled:()=>{const i=this.pendingTransactions.findIndex(s=>s.id===e);i!==-1&&this.pendingTransactions.splice(i,1),this.notifyTransactionChange(),r(null)}})})}async fetchRecentSupporters(){if(this.recentSupportersCache)return this.recentSupportersCache;const e=await le.fetchRelayList(rw),t=await le.fetchEvents(e.read.slice(0,4),{authors:["79f00d3f5a19ec806189fcab03c1be4ff81d18ee4f653c88fac41fe03570f432"],kinds:[Z.Zap],"#p":h0,since:Be().subtract(1,"month").unix()});t.sort((a,r)=>r.created_at-a.created_at);const o=new Map;return t.forEach(a=>{const r=ws(a);if(!r||!r.senderPubkey||h0.includes(r.senderPubkey))return;const{amount:i,comment:s,senderPubkey:l}=r,u=o.get(l);u?(u.amount+=i,!u.comment&&s&&(u.comment=s)):o.set(l,{pubkey:l,amount:i,comment:s})}),this.recentSupportersCache=Array.from(o.values()).filter(a=>a.amount>=1e3).sort((a,r)=>r.amount-a.amount),this.recentSupportersCache}async getZapEndpoint(e){try{let t="";if(!e.lightningAddress)return console.warn("Profile has no lightning address",e),null;if(e.lightningAddress.includes("@")){const[r,i]=e.lightningAddress.split("@");t=new URL(`/.well-known/lnurlp/${r}`,`https://${i}`).toString()}else{const{words:r}=Ro.decode(e.lightningAddress,1e3),i=Ro.fromWords(r);t=TE.decode(i)}const a=await(await fetch(t)).json();if(a.allowsNostr!==!1&&a.callback)return{callback:a.callback,lnurl:t}}catch(t){console.error(t)}return null}async makeInvoice(e,t){if(!this.provider)throw new Error("No wallet connected");try{return await this.provider.makeInvoice({amount:e.toString(),defaultMemo:t||""})}catch(o){throw console.error("Failed to make invoice:",o),o}}async sendToAddress(e,t,o){if(!this.provider)throw new Error("No wallet connected");let a;if(e.includes("@")){const[r,i]=e.split("@");a=new URL(`/.well-known/lnurlp/${r}`,`https://${i}`).toString()}else a=e;try{const i=await(await fetch(a)).json();if(i.status==="ERROR")throw new Error(i.reason||"Failed to fetch invoice");const s=new URL(i.callback);s.searchParams.set("amount",(t*1e3).toString()),o&&s.searchParams.set("comment",o);const u=await(await fetch(s.toString())).json();if(u.status==="ERROR")throw new Error(u.reason||"Failed to create invoice");const f=u.pr;if(!f)throw new Error("No invoice returned");this.recordTransaction({id:f,type:"sent",amount:t,status:"pending",date:new Date,invoice:f,description:o||""});const{preimage:d}=await this.provider.sendPayment(f);return this.completePendingTransaction(f,d),this.notifyBalanceChange(),this.notifyTransactionChange(),{preimage:d,invoice:f}}catch(r){throw console.error("Failed to send to address:",r),r}}async getTransactionHistory(e){if(!this.provider)return pe.getWalletTransactions()||[];if(this.transactionHistoryCache)return this.deduplicateTransactions([...this.pendingTransactions,...this.transactionHistoryCache]);const t=pe.getWalletTransactions(),o=[...this.pendingTransactions],a=new Set;for(const i of this.pendingTransactions)a.add(i.id),i.invoice&&a.add(i.invoice);for(const i of t)a.has(i.id)||i.invoice&&a.has(i.invoice)||(o.push(i),a.add(i.id),i.invoice&&a.add(i.invoice));try{if(typeof this.provider.request=="function"){const i=await this.provider.request("request.listpayments");if(i.payments)for(const l of i.payments){if(a.has(l.payment_hash)||a.has(l.payment_request))continue;const u=l.payment_request;let f="";try{f=new Es({pr:u}).description||""}catch{}const d={id:l.payment_hash,type:"sent",amount:parseInt(l.value_sat)||Math.round(parseInt(l.value)/1e3),status:l.status==="complete"?"completed":l.status==="failed"?"failed":"pending",date:new Date(parseInt(l.creation_date)*1e3),invoice:l.payment_request,preimage:l.payment_preimage,description:f};o.push(d),a.add(l.payment_hash),l.payment_request&&a.add(l.payment_request)}const s=await this.provider.request("request.listinvoices",{reversed:!0});if(s.invoices){for(const l of s.invoices)if(!(a.has(l.r_hash)||a.has(l.payment_request))&&l.r_preimage){const u={id:l.r_hash,type:"received",amount:parseInt(l.value_sat)||Math.round(parseInt(l.value)/1e3),status:l.state==="SETTLED"?"completed":l.state==="CANCELED"?"failed":"pending",date:new Date(parseInt(l.creation_date)*1e3),invoice:l.payment_request,preimage:l.r_preimage,description:l.memo};o.push(u),a.add(l.r_hash),l.payment_request&&a.add(l.payment_request)}}}}catch(i){console.error("Failed to get WebLN transaction history:",i)}if(e)try{const i=Be().subtract(3,"month").unix(),s={kinds:[Z.Zap],since:i},l=kt(),u=await le.fetchEvents(l.slice(0,4),{...s,"#p":[e]});for(const d of u){const p=ws(d);!p||!p.senderPubkey||a.has(p.invoice||d.id)||(o.push({id:p.invoice||d.id,type:"received",amount:p.amount||0,status:p.preimage?"completed":"pending",date:new Date(d.created_at*1e3),invoice:p.invoice,preimage:p.preimage,description:p.comment||""}),a.add(p.invoice||d.id))}const f=await le.fetchEvents(l.slice(0,4),{...s,"#P":[e]});for(const d of f){const p=ws(d);if(!p||!p.recipientPubkey)continue;const m=p.invoice||d.id;a.has(m)||p.invoice&&a.has(p.invoice)||(o.push({id:m,type:"sent",amount:p.amount||0,status:p.preimage?"completed":"pending",date:new Date(d.created_at*1e3),invoice:p.invoice,preimage:p.preimage,description:p.comment||""}),a.add(m),p.invoice&&a.add(p.invoice))}}catch(i){console.error("Failed to fetch zap history:",i)}o.sort((i,s)=>s.date.getTime()-i.date.getTime());const r=this.deduplicateTransactions(o);return this.transactionHistoryCache=r,r}clearTransactionCache(){this.transactionHistoryCache=null,pe.clearWalletTransactions()}};H(oi,"instance");let Wh=oi;const fn=new Wh,TS=h.createContext(void 0),zl=()=>{const n=h.useContext(TS);if(!n)throw new Error("useZap must be used within a ZapProvider");return n};function k_({children:n}){const[e,t]=h.useState(pe.getDefaultZapSats()),[o,a]=h.useState(pe.getDefaultZapComment()),[r,i]=h.useState(pe.getQuickZap()),[s,l]=h.useState(pe.getWalletDisplayUnit()),[u,f]=h.useState(!1),[d,p]=h.useState(null),[m,g]=h.useState(null),[y,w]=h.useState(null),[v,k]=h.useState([]),E=async()=>{if(fn.provider){const W=le.pubkey,V=await fn.getTransactionHistory(W),j=new Set,L=V.filter(I=>{const b=I.id||I.invoice||"";return j.has(b)?!1:(j.add(b),!0)});k(L)}},A=()=>{fn.clearTransactionCache(),k([])},N=async()=>{if(fn.provider)try{if(typeof fn.provider.getBalance=="function"){const W=await fn.provider.getBalance();(W==null?void 0:W.balance)!==void 0&&w(W.balance)}}catch(W){console.warn("Failed to refresh balance:",W)}},T=W=>{switch(s){case"sats":return`丰${W.toLocaleString()}`;case"bits":return`μ₿${(W/100).toFixed(2)}`;case"btc":return`₿${(W/1e8).toFixed(8)}`}},C=W=>{switch(s){case"sats":return W;case"bits":return Math.round(W*100);case"btc":return Math.round(W*1e8)}},P=W=>{pe.setWalletDisplayUnit(W),l(W)};h.useEffect(()=>{const W=pe.getWalletTransactions();W.length>0&&k(W);const V=LE(async b=>{f(!0),g(null),w(null),p(b),fn.provider=b;const S=await b.getInfo();g(S);try{if(typeof b.getBalance=="function"){const F=await b.getBalance();(F==null?void 0:F.balance)!==void 0&&w(F.balance)}}catch(F){console.warn("Failed to get balance:",F)}const z=await fn.getTransactionHistory(le.pubkey);k(z)}),j=()=>{f(!1),p(null),g(null),k([]),fn.clearTransactionCache(),w(null),fn.provider=null};ME(j);const L=fn.onBalanceChange(N),I=fn.onTransactionChange(E);return()=>{V(),j(),L(),I()}},[]);const M=W=>{pe.setDefaultZapSats(W),t(W)},U=W=>{pe.setDefaultZapComment(W),a(W)},O=W=>{pe.setQuickZap(W),i(W)};return c.jsx(TS.Provider,{value:{isWalletConnected:u,provider:d,walletInfo:m,balance:y,balanceDisplayUnit:s,setBalanceDisplayUnit:P,formatBalance:T,toSats:C,defaultZapSats:e,updateDefaultSats:M,defaultZapComment:o,updateDefaultComment:U,quickZap:r,updateQuickZap:O,transactionHistory:v,refreshTransactionHistory:E,clearTransactionHistory:A,refreshBalance:N},children:n})}function qh({invoice:n,className:e}){const{t}=Ae(),{checkLogin:o,pubkey:a}=Je(),{formatBalance:r}=zl(),[i,s]=h.useState(!1),{amount:l,description:u}=h.useMemo(()=>TP(n),[n]),f=async()=>{try{if(!a)throw new Error("You need to be logged in to zap");if(s(!0),!await fn.payInvoice(n))return}catch(p){Ue.error(t("Lightning payment failed")+": "+p.message)}finally{s(!1)}},d=p=>{p.stopPropagation(),o(()=>f())};return c.jsxs("div",{className:ne("flex max-w-sm cursor-default flex-col gap-3 rounded-lg border p-3",e),onClick:p=>p.stopPropagation(),children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(Tu,{className:"h-5 w-5 text-zap"}),c.jsx("div",{className:"text-sm font-semibold",children:t("Lightning Invoice")})]}),u&&c.jsx("div",{className:"break-words text-sm text-muted-foreground",children:u}),c.jsx("div",{className:"text-lg font-bold",children:r(l)}),c.jsxs(xe,{onClick:d,children:[i&&c.jsx(wn,{className:"h-4 w-4 animate-spin"}),t("Pay")]})]})}function Ps({userId:n,className:e}){return c.jsx(Yo,{userId:n,showAt:!0,className:ne("inline font-normal text-primary",e),withoutSkeleton:!0})}function S_({userId:n,className:e}){return c.jsx(kd,{userId:n,showAt:!0,className:ne("inline",e),withoutSkeleton:!0})}const x_={nosta:{name:"Nosta",getUrl:n=>`https://nosta.me/${n}`},snort:{name:"Snort",getUrl:n=>`https://snort.social/${n}`},olas:{name:"Olas",getUrl:n=>`https://olas.app/e/${n}`},primal:{name:"Primal",getUrl:n=>`https://primal.net/e/${n}`},nostrudel:{name:"Nostrudel",getUrl:n=>`https://nostrudel.ninja/l/${n}`},nostter:{name:"Nostter",getUrl:n=>`https://nostter.app/${n}`},coracle:{name:"Coracle",getUrl:n=>`https://coracle.social/${n}`},iris:{name:"Iris",getUrl:n=>`https://iris.to/${n}`},lumilumi:{name:"Lumilumi",getUrl:n=>`https://lumilumi.app/${n}`},zapStream:{name:"zap.stream",getUrl:n=>`https://zap.stream/${n}`},yakihonne:{name:"YakiHonne",getUrl:n=>`https://yakihonne.com/${n}`},habla:{name:"Habla",getUrl:n=>`https://habla.news/a/${n}`},pareto:{name:"Pareto",getUrl:n=>`https://pareto.space/a/${n}`},shosho:{name:"Shosho",getUrl:n=>`https://shosho.live/live/${n}`},njump:{name:"Njump",getUrl:n=>`https://njump.me/${n}`}};function al({event:n,originalNoteId:e,...t}){const{isSmallScreen:o}=Ct(),[a,r]=h.useState(!1),{t:i}=Ae(),s=h.useMemo(()=>{let f;if(n)f=n.kind;else if(e)try{const d=Nt.decode(e);d.type==="naddr"&&(f=d.data.kind)}catch(d){return console.error("Failed to decode NIP-19 pointer:",d),["njump"]}if(!f)return["njump"];switch(f){case Z.LongFormArticle:case Z.DraftLong:return["yakihonne","coracle","habla","lumilumi","pareto","njump"];case Z.LiveEvent:return["zapStream","shosho","nostrudel","njump"];case Z.Date:case Z.Time:return["coracle","njump"];default:return["njump"]}},[n]);if(!e&&!n)return null;const l=c.jsxs("div",{className:"space-y-2",children:[(n==null?void 0:n.kind)===ce.GROUP_METADATA?c.jsx(A_,{event:n,originalNoteId:e,setOpen:r}):s.map(f=>{const d=x_[f];return d?c.jsx(jS,{onClick:()=>r(!1),href:d.getUrl(e??xa(n)),name:d.name},f):null}),c.jsx(Zs,{}),c.jsx(xe,{variant:"ghost",className:"w-full py-6 font-semibold",onClick:()=>{navigator.clipboard.writeText(e??xa(n)),r(!1)},children:i("Copy event ID")})]}),u=c.jsxs(xe,{variant:"outline",...t,children:[c.jsx(Fc,{})," ",i("Open in another client")]});return o?c.jsx("div",{onClick:f=>f.stopPropagation(),children:c.jsxs(Ht,{open:a,onOpenChange:r,children:[c.jsx(Sb,{asChild:!0,children:u}),c.jsx(Wn,{onClick:f=>{f.stopPropagation(),r(!1)}}),c.jsx($t,{hideOverlay:!0,children:l})]})}):c.jsx("div",{onClick:f=>f.stopPropagation(),children:c.jsxs(na,{open:a,onOpenChange:r,children:[c.jsx(cz,{asChild:!0,children:u}),c.jsx(jo,{className:"px-8",onOpenAutoFocus:f=>f.preventDefault(),children:l})]})})}function A_({event:n,originalNoteId:e,setOpen:t}){const{relay:o,id:a}=h.useMemo(()=>{var i;let r;if(e){const s=Nt.decode(e);s.type==="naddr"&&((i=s.data.relays)!=null&&i.length)&&(r=s.data.relays[0])}return r||(r=le.getEventHint(n.id)),{relay:r,id:ir(n)}},[n,e]);return c.jsx(jS,{onClick:()=>t(!1),href:PL(o,a),name:"Chachi Chat"})}function jS({onClick:n,href:e,name:t}){return c.jsx(xe,{asChild:!0,variant:"ghost",className:"w-full py-6 font-semibold",onClick:n,children:c.jsx("a",{href:e,target:"_blank",rel:"noopener noreferrer",children:t})})}function E_({alwaysExpand:n=!1,children:e,className:t,threshold:o=1e3,collapsedHeight:a=600,...r}){const{t:i}=Ae(),s=h.useRef(null),[l,u]=h.useState(!1),[f,d]=h.useState(!1);return h.useEffect(()=>{if(n||f)return;const p=s.current;if(!p)return;const m=()=>{p.scrollHeight>o&&d(!0)};m();const g=new ResizeObserver(()=>{m()});return g.observe(p),()=>{g.disconnect()}},[n,f]),c.jsxs("div",{className:ne("relative overflow-hidden text-left",t),ref:s,...r,style:{maxHeight:!f||l?"none":`${a}px`},children:[e,f&&!l&&c.jsx("div",{className:"absolute bottom-0 z-10 flex h-40 w-full items-end justify-center bg-gradient-to-b from-transparent to-background/90 pb-4",children:c.jsx("div",{className:"rounded-lg bg-background",children:c.jsx(xe,{className:"bg-foreground hover:bg-foreground/80",onClick:p=>{p.stopPropagation(),u(!l)},children:i("Show more")})})})]})}function R_({event:n}){const{t:e}=Ae(),t=h.useMemo(()=>CP(n),[n]);return t?c.jsx("span",{className:"shrink-0 text-sm text-muted-foreground",children:e("via {{client}}",{client:t})}):null}function C_(n){const e=n.replace(/https?:\/\/[^\s)>\]]+/g,"").replace(/nostr:[a-z0-9]+/g,""),t=[/^```/m,/\|[\s]*:?-+:?[\s]*\|/,/!\[[^\]]*\]\(/];for(const r of t)if(r.test(e))return!0;const o=[/^#{1,6}\s+\S/m,/\*\*[^*\n]+\*\*/,/__[^_\n]+__/,/\[[^\]]+\]\([^)]+\)/,/^>\s+\S/m,/^[-*]\s+\S/m,/^\d+\.\s+\S/m,/^---$/m,/~~[^~\n]+~~/];let a=0;for(const r of o){const i=new RegExp(r.source,r.flags.includes("m")?"gm":"g"),s=(e.match(i)||[]).length;if(a+=s,a>=2)return!0}return!1}function yn({emoji:n,classNames:e}){const{allowInsecureConnection:t}=Wa(),[o,a]=h.useState(!1);return typeof n=="string"?n==="+"?c.jsx(yc,{className:ne("size-5 fill-red-400 text-red-400",e==null?void 0:e.img)}):c.jsx("span",{className:ne("whitespace-nowrap",e==null?void 0:e.text),children:n}):o||!t&&Ar(n.url)?c.jsx("span",{className:ne("whitespace-nowrap",e==null?void 0:e.text),children:`:${n.shortcode}:`}):c.jsx("img",{src:n.url,alt:n.shortcode,draggable:!1,className:ne("pointer-events-none inline-block size-5",e==null?void 0:e.img),onLoad:()=>{a(!1)},onError:()=>{a(!0)}})}function p0({groupId:n,relayUrl:e,name:t}){const{t:o}=Ae(),{pubkey:a,publish:r}=Je(),{push:i}=Vt(),[s,l]=h.useState(!1),[u,f]=h.useState(!1),d=t||n,p=async()=>{if(!a){Ue.error(o("You must be logged in to join"));return}l(!0);try{const m=jn(e),g=await le.fetchEvents([m],{kinds:[Fi.GROUP_METADATA],"#d":[n],limit:1});if(g.length===0){Ue.error(o("Group not found on this relay"));return}let y=d;g[0].tags.forEach(T=>{T[0]==="name"&&T[1]&&(y=T[1])});const w=await le.fetchRelayList(a),v=w.write.length>0?w.write.slice(0,3):kt(),k=await le.fetchEvents(v,{kinds:[10009],authors:[a],limit:1});let E=[];if(k.length>0&&(E=k[0].tags.filter(T=>T[0]==="group"||T[0]==="r")),!E.some(T=>T[0]==="group"&&T[1]===n)){const T=["group",n,m,y],C=[...E,T];C.some(U=>U[0]==="r"&&U[1]===m)||C.push(["r",m]);const M={kind:10009,content:"",tags:C,created_at:Math.floor(Date.now()/1e3)};await r(M)}f(!0),Ue.success(o("Joined group!"));const N=m.replace(/^wss?:\/\//,"").replace(/\/$/,"");i(NL(N,n,y))}catch(m){console.error("Failed to join group:",m),Ue.error(o("Failed to join group"))}finally{l(!1)}};return c.jsxs("div",{className:"my-2 flex items-center gap-3 rounded-xl border border-primary/20 bg-primary/5 p-3",children:[c.jsx("div",{className:"flex size-8 shrink-0 items-center justify-center rounded-lg bg-primary/10",children:c.jsx(zs,{className:"size-4 text-primary"})}),c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsx("p",{className:"truncate text-sm font-medium",children:d}),c.jsx("p",{className:"truncate text-xs text-muted-foreground",children:e})]}),c.jsx("button",{onClick:p,disabled:s||u,className:"flex shrink-0 items-center gap-1.5 rounded-lg bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground transition-colors hover:bg-primary-hover disabled:opacity-50",children:s?c.jsxs(c.Fragment,{children:[c.jsx(Ei,{className:"size-3 animate-spin"}),o("Joining...")]}):u?c.jsxs(c.Fragment,{children:[c.jsx(_a,{className:"size-3"}),o("Joined")]}):c.jsxs(c.Fragment,{children:[c.jsx(zs,{className:"size-3"}),o("Join")]})})]})}function Ss({onHighlight:n,containerRef:e}){const{t}=Ae(),[o,a]=h.useState(null),[r,i]=h.useState(""),s=h.useRef(null);return h.useEffect(()=>{const l=()=>{setTimeout(()=>{const u=window.getSelection(),f=u==null?void 0:u.toString().trim();if(!f||f.length===0){a(null),i("");return}if(e!=null&&e.current){const y=u==null?void 0:u.getRangeAt(0);if(y&&!e.current.contains(y.commonAncestorContainer)){a(null),i("");return}}const d=u==null?void 0:u.getRangeAt(0);if(!d)return;const p=d.getBoundingClientRect(),m=window.pageYOffset||document.documentElement.scrollTop,g=window.pageXOffset||document.documentElement.scrollLeft;a({top:p.top+m-48,left:p.left+g+p.width/2}),i(f)},10)};return document.addEventListener("mouseup",l),document.addEventListener("touchend",l),()=>{document.removeEventListener("mouseup",l),document.removeEventListener("touchend",l)}},[e]),h.useEffect(()=>{const l=u=>{if(s.current&&!s.current.contains(u.target)){const f=window.getSelection();f!=null&&f.toString().trim()||(a(null),i(""))}};return document.addEventListener("mousedown",l),()=>{document.removeEventListener("mousedown",l)}},[]),!o||!r?null:c.jsx("div",{className:"fixed z-50 duration-200 animate-in fade-in-0 slide-in-from-bottom-4",style:{top:`${o.top}px`,left:`${o.left}px`},children:c.jsxs(xe,{ref:s,size:"sm",variant:"default",className:"-translate-x-1/2 gap-2 shadow-lg",onClick:l=>{var u;l.stopPropagation(),n(r),(u=window.getSelection())==null||u.removeAllRanges(),a(null),i("")},children:[c.jsx(u4,{className:"h-4 w-4"}),t("Highlight")]})})}const ai=class ai{constructor(){H(this,"cacheMap",new Map);return ai.instance||(ai.instance=this),ai.instance}async getValidUrl(e,t){const o=this.cacheMap.get(e);if(o)return o.validUrl??o.promise;let a;const r=new Promise(s=>{a=s}),i=new Set;return this.cacheMap.set(e,{pubkey:t,resolve:a,promise:r,tried:i}),e}async tryNextUrl(e){const t=this.cacheMap.get(e);if(!t)return null;if(t.validUrl)return t.validUrl;const{pubkey:o,tried:a,resolve:r}=t;let i,s=null;try{i=new URL(e),s=z6(i)}catch(p){console.error("Invalid image URL:",p)}if(!o||!s||!i)return r(e),null;const l=i.pathname.match(/\.\w+$/i),d=(await le.fetchBlossomServerList(o)).map(p=>{try{return new URL(p)}catch(m){console.error("Invalid Blossom server URL:",p,m);return}}).filter(p=>!!p&&!a.has(p.hostname))[0];return d?(a.add(d.hostname),d.pathname="/"+s+l,d.toString()):(r(e),null)}markAsSuccess(e,t){const o=this.cacheMap.get(e);if(!o){this.cacheMap.set(e,{resolve:()=>{},promise:Promise.resolve(t),tried:new Set,validUrl:t});return}o.resolve(t),o.validUrl=t}};H(ai,"instance");let Hh=ai;const vi=new Hh,P_={maxZoomPixelRatio:1,zoomInMultiplier:2,doubleTapDelay:300,doubleClickDelay:500,doubleClickMaxStops:2,keyboardMoveDistance:50,wheelZoomDistanceFactor:100,pinchZoomDistanceFactor:100,scrollToZoom:!1},zS=n=>({...P_,...n});function N_(n,e,t,o){const a=h.useRef(),r=h.useRef(),{zoom:i}=Da().animation,s=nR(),l=Wo(()=>{var u,f,d;if((u=a.current)===null||u===void 0||u.cancel(),a.current=void 0,r.current&&(o!=null&&o.current)){try{a.current=(d=(f=o.current).animate)===null||d===void 0?void 0:d.call(f,[{transform:r.current},{transform:`scale(${n}) translateX(${e}px) translateY(${t}px)`}],{duration:s?0:i??500,easing:a.current?"ease-out":"ease-in-out"})}catch(p){console.error(p)}r.current=void 0,a.current&&(a.current.onfinish=()=>{a.current=void 0})}});return Ts(l,[n,e,t,l]),h.useCallback(()=>{r.current=o!=null&&o.current?window.getComputedStyle(o.current).transform:void 0},[o])}function T_(n,e){const{on:t}=Da(),o=Wo(()=>{var a;e||(a=t.zoom)===null||a===void 0||a.call(t,{zoom:n})});h.useEffect(o,[n,o])}function md(){const{zoom:n}=Da();return zS(n)}function j_(n,e){var t,o;let a={width:0,height:0},r={width:0,height:0};const{currentSlide:i}=pl(),{imageFit:s}=Da().carousel,{maxZoomPixelRatio:l}=md();if(n&&i){const f={...i,...e};if(hl(f)){const d=R1(f,s),p=Math.max(...(((t=f.srcSet)===null||t===void 0?void 0:t.map(g=>g.width))||[]).concat(f.width?[f.width]:[])),m=Math.max(...(((o=f.srcSet)===null||o===void 0?void 0:o.map(g=>g.height))||[]).concat(f.height?[f.height]:[]));p>0&&m>0&&n.width>0&&n.height>0&&(r=d?{width:Math.round(Math.min(p,n.width/n.height*m)),height:Math.round(Math.min(m,n.height/n.width*p))}:{width:p,height:m},r={width:r.width*l,height:r.height*l},a=d?{width:Math.min(n.width,r.width,p),height:Math.min(n.height,r.height,m)}:{width:Math.round(Math.min(n.width,n.height/m*p,p)),height:Math.round(Math.min(n.height,n.width/p*m,m))})}}const u=a.width?Math.max(C1(r.width/a.width,5),1):1;return{imageRect:a,maxZoom:u}}function m0(n,e){return((n.clientX-e.clientX)**2+(n.clientY-e.clientY)**2)**.5}function g0(n,e,t=100,o=2){return n*Math.min(1+Math.abs(e/t),o)**Math.sign(e)}function z_(n,e,t,o,a,r){const i=h.useRef([]),s=h.useRef(0),l=h.useRef(),{globalIndex:u}=pl(),{getOwnerWindow:f}=GE(),{containerRef:d,subscribeSensors:p}=Pu(),{keyboardMoveDistance:m,zoomInMultiplier:g,wheelZoomDistanceFactor:y,scrollToZoom:w,doubleTapDelay:v,doubleClickDelay:k,doubleClickMaxStops:E,pinchZoomDistanceFactor:A}=md(),N=h.useCallback(j=>{if(d.current){const{pageX:L,pageY:I}=j,{scrollX:b,scrollY:S}=f(),{left:z,top:F,width:D,height:q}=d.current.getBoundingClientRect();return[L-z-b-D/2,I-F-S-q/2]}return[]},[d,f]),T=Wo(j=>{const L=()=>{j.preventDefault(),j.stopPropagation()};if(n>1){const S=(z,F)=>{L(),a(z,F)};j.key==="ArrowDown"?S(0,m):j.key==="ArrowUp"?S(0,-m):j.key==="ArrowLeft"?S(-m,0):j.key==="ArrowRight"&&S(m,0)}const I=S=>{L(),o(S)},b=()=>j.getModifierState("Meta");j.key==="+"||j.key==="="&&b()?I(n*g):j.key==="-"||j.key==="_"&&b()?I(n/g):j.key==="0"&&b()&&I(1)}),C=Wo(j=>{if((j.ctrlKey||w)&&Math.abs(j.deltaY)>Math.abs(j.deltaX)){j.stopPropagation(),o(g0(n,-j.deltaY,y),!0,...N(j));return}n>1&&(j.stopPropagation(),w||a(j.deltaX,j.deltaY))}),P=h.useCallback(j=>{const L=i.current;L.splice(0,L.length,...L.filter(I=>I.pointerId!==j.pointerId))},[]),M=h.useCallback(j=>{P(j),j.persist(),i.current.push(j)},[P]),U=Wo(j=>{var L;const I=i.current;if(j.pointerType==="mouse"&&j.buttons>1||!(!((L=r==null?void 0:r.current)===null||L===void 0)&&L.contains(j.target)))return;n>1&&j.stopPropagation();const{timeStamp:b}=j;I.length===0&&b-s.current<(j.pointerType==="touch"?v:k)?(s.current=0,o(n!==e?n*Math.max(e**(1/E),g):1,!1,...N(j))):s.current=b,M(j),I.length===2&&(l.current=m0(I[0],I[1]))}),O=Wo(j=>{const L=i.current,I=L.find(b=>b.pointerId===j.pointerId);if(L.length===2&&l.current){j.stopPropagation(),M(j);const b=m0(L[0],L[1]),S=b-l.current;Math.abs(S)>0&&(o(g0(n,S,A),!0,...L.map(z=>N(z)).reduce((z,F)=>F.map((D,q)=>z[q]+D/2))),l.current=b);return}n>1&&(j.stopPropagation(),I&&(L.length===1&&a((I.clientX-j.clientX)/n,(I.clientY-j.clientY)/n),M(j)))}),W=h.useCallback(j=>{const L=i.current;L.length===2&&L.find(I=>I.pointerId===j.pointerId)&&(l.current=void 0),P(j)},[P]),V=h.useCallback(()=>{const j=i.current;j.splice(0,j.length),s.current=0,l.current=void 0},[]);JE(p,U,O,W,t),h.useEffect(V,[u,V]),h.useEffect(()=>t?()=>{}:ZE(V,p(XE,T),p(QE,C)),[t,p,V,T,C])}function I_(n,e,t){const[o,a]=h.useState(1),[r,i]=h.useState(0),[s,l]=h.useState(0),u=N_(o,r,s,t),{currentSlide:f,globalIndex:d}=pl(),{containerRect:p,slideRect:m}=Pu(),{zoomInMultiplier:g}=md(),y=f&&hl(f)?f.src:void 0,w=!y||!(t!=null&&t.current);Ts(()=>{a(1),i(0),l(0)},[d,y]);const v=h.useCallback((T,C,P)=>{const M=P||o,U=r-(T||0),O=s-(C||0),W=(n.width*M-m.width)/2/M,V=(n.height*M-m.height)/2/M;i(Math.min(Math.abs(U),Math.max(W,0))*Math.sign(U)),l(Math.min(Math.abs(O),Math.max(V,0))*Math.sign(O))},[o,r,s,m,n.width,n.height]),k=h.useCallback((T,C,P,M)=>{const U=C1(Math.min(Math.max(T+.001<e?T:e,1),e),5);U!==o&&(C||u(),v(P?P*(1/o-1/U):0,M?M*(1/o-1/U):0,U),a(U))},[o,e,v,u]),E=Wo(()=>{o>1&&(o>e&&k(e,!0),v())});Ts(E,[p.width,p.height,E]);const A=h.useCallback(()=>k(o*g),[o,g,k]),N=h.useCallback(()=>k(o/g),[o,g,k]);return{zoom:o,offsetX:r,offsetY:s,disabled:w,changeOffsets:v,changeZoom:k,zoomIn:A,zoomOut:N}}const IS=h.createContext(null),Am=WE("useZoom","ZoomControllerContext",IS);function L_({children:n}){const[e,t]=h.useState(),{slideRect:o}=Pu(),{imageRect:a,maxZoom:r}=j_(o,e==null?void 0:e.imageDimensions),{zoom:i,offsetX:s,offsetY:l,disabled:u,changeZoom:f,changeOffsets:d,zoomIn:p,zoomOut:m}=I_(a,r,e==null?void 0:e.zoomWrapperRef);T_(i,u),z_(i,r,u,f,d,e==null?void 0:e.zoomWrapperRef);const g=h.useMemo(()=>({zoom:i,maxZoom:r,offsetX:s,offsetY:l,disabled:u,zoomIn:p,zoomOut:m,changeZoom:f}),[i,r,s,l,u,p,m,f]);h.useImperativeHandle(md().ref,()=>g,[g]);const y=h.useMemo(()=>({...g,setZoomWrapper:t}),[g,t]);return h.createElement(IS.Provider,{value:y},n)}const M_=up("ZoomIn",h.createElement(h.Fragment,null,h.createElement("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}),h.createElement("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z"}))),D_=up("ZoomOut",h.createElement("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z"})),y0=h.forwardRef(function({zoomIn:e,onLoseFocus:t},o){const a=h.useRef(!1),r=h.useRef(!1),{zoom:i,maxZoom:s,zoomIn:l,zoomOut:u,disabled:f}=Am(),{render:d}=Da(),p=f||(e?i>=s:i<=1);return h.useEffect(()=>{p&&a.current&&r.current&&t(),p||(a.current=!0)},[p,t]),h.createElement(A1,{ref:o,disabled:p,label:e?"Zoom in":"Zoom out",icon:e?M_:D_,renderIcon:e?d.iconZoomIn:d.iconZoomOut,onClick:e?l:u,onFocus:()=>{r.current=!0},onBlur:()=>{r.current=!1}})});function __(){const n=h.useRef(null),e=h.useRef(null),{focus:t}=Pu(),o=h.useCallback(i=>{var s,l;!((s=i.current)===null||s===void 0)&&s.disabled?t():(l=i.current)===null||l===void 0||l.focus()},[t]),a=h.useCallback(()=>o(n),[o]),r=h.useCallback(()=>o(e),[o]);return h.createElement(h.Fragment,null,h.createElement(y0,{zoomIn:!0,ref:n,onLoseFocus:r}),h.createElement(y0,{ref:e,onLoseFocus:a}))}function F_(){const{render:n}=Da(),e=Am();return n.buttonZoom?h.createElement(h.Fragment,null,n.buttonZoom(e)):h.createElement(__,null)}function O_(n){var e;return(((e=n.srcSet)===null||e===void 0?void 0:e.length)||0)>0}function U_({current:n,preload:e},{type:t,source:o}){switch(t){case"fetch":return n?{current:n,preload:o}:{current:o};case"done":return o===e?{current:o}:{current:n,preload:e};default:throw new Error(eR)}}function B_(n){var e,t;const[{current:o,preload:a},r]=h.useReducer(U_,{}),{slide:i,rect:s,imageFit:l,render:u,interactive:f}=n,d=i.srcSet.sort((N,T)=>N.width-T.width),p=(e=i.width)!==null&&e!==void 0?e:d[d.length-1].width,m=(t=i.height)!==null&&t!==void 0?t:d[d.length-1].height,g=R1(i,l),y=Math.max(...d.map(N=>N.width)),w=Math.min((g?Math.max:Math.min)(s.width,p*(s.height/m)),y),v=tR(),k=Wo(()=>{var N;const T=(N=d.find(C=>C.width>=w*v))!==null&&N!==void 0?N:d[d.length-1];(!o||d.findIndex(C=>C.src===o)<d.findIndex(C=>C===T))&&r({type:"fetch",source:T.src})});Ts(k,[s.width,s.height,v,k]);const E=Wo(N=>r({type:"done",source:N})),A={WebkitTransform:f?"initial":"translateZ(0)"};return g||Object.assign(A,s.width/s.height<p/m?{width:"100%",height:"auto"}:{width:"auto",height:"100%"}),h.createElement(h.Fragment,null,a&&a!==o&&h.createElement(zf,{key:"preload",...n,slide:{...i,src:a,srcSet:void 0},style:{position:"absolute",visibility:"hidden",...A},onLoad:()=>E(a),render:{...u,iconLoading:()=>null,iconError:()=>null}}),o&&h.createElement(zf,{key:"current",...n,slide:{...i,src:o,srcSet:void 0},style:A}))}function V_({render:n,slide:e,offset:t,rect:o}){var a;const[r,i]=h.useState(),s=h.useRef(null),{zoom:l,maxZoom:u,offsetX:f,offsetY:d,setZoomWrapper:p}=Am(),m=l>1,{carousel:g,on:y}=Da(),{currentIndex:w}=pl();Ts(()=>t===0?(p({zoomWrapperRef:s,imageDimensions:r}),()=>p(void 0)):()=>{},[t,r,p]);let v=(a=n.slide)===null||a===void 0?void 0:a.call(n,{slide:e,offset:t,rect:o,zoom:l,maxZoom:u});if(!v&&hl(e)){const k={slide:e,offset:t,rect:o,render:n,imageFit:g.imageFit,imageProps:g.imageProps,onClick:t===0?()=>{var E;return(E=y.click)===null||E===void 0?void 0:E.call(y,{index:w})}:void 0};v=O_(e)?h.createElement(B_,{...k,slide:e,interactive:m,rect:t===0?{width:o.width*l,height:o.height*l}:o}):h.createElement(zf,{onLoad:E=>i({width:E.naturalWidth,height:E.naturalHeight}),...k})}return v?h.createElement("div",{ref:s,className:qE($l(KE),$l(YE),$l($E),m&&$l(HE)),style:t===0?{transform:`scale(${l}) translateX(${f}px) translateY(${d}px)`}:void 0},v):null}const LS=({augment:n,addModule:e})=>{n(({zoom:t,toolbar:o,render:a,controller:r,...i})=>{const s=zS(t);return{zoom:s,toolbar:E1(o,rg,h.createElement(F_,null)),render:{...a,slide:l=>{var u;return hl(l.slide)?h.createElement(V_,{render:a,...l}):(u=a.slide)===null||u===void 0?void 0:u.call(a,l)}},controller:{...r,preventDefaultWheelY:s.scrollToZoom},...i}}),e(VE(rg,L_))},W_={download:void 0},MS=n=>({...W_,...n});function q_(n,e){const t=new XMLHttpRequest;t.open("GET",n),t.responseType="blob",t.onload=()=>{$h(t.response,e)},t.onerror=()=>{console.error("Failed to download file")},t.send()}function H_(n){const e=new XMLHttpRequest;e.open("HEAD",n,!1);try{e.send()}catch{}return e.status>=200&&e.status<=299}function yf(n){try{n.dispatchEvent(new MouseEvent("click"))}catch{const t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),n.dispatchEvent(t)}}function $h(n,e){const t=document.createElement("a");t.rel="noopener",t.download=e||"",t.download||(t.target="_blank"),typeof n=="string"?(t.href=n,t.origin!==window.location.origin?H_(t.href)?q_(n,e):(t.target="_blank",yf(t)):yf(t)):(t.href=URL.createObjectURL(n),setTimeout(()=>URL.revokeObjectURL(t.href),3e4),setTimeout(()=>yf(t),0))}const $_=up("DownloadIcon",h.createElement("path",{d:"M18 15v3H6v-3H4v3c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-3h-2zm-1-4-1.41-1.41L13 12.17V4h-2v8.17L8.41 9.59 7 11l5 5 5-5z"}));function Y_(){const{render:n,on:e,download:t}=Da(),{download:o}=MS(t),{currentSlide:a,currentIndex:r}=pl();if(n.buttonDownload)return h.createElement(h.Fragment,null,n.buttonDownload());const i=a&&(a.downloadUrl||typeof a.download=="string"&&a.download||typeof a.download=="object"&&a.download.url||hl(a)&&a.src)||void 0,s=o?(a==null?void 0:a.download)!==!1:!!i,l=()=>{if(a&&i){const f=a.downloadFilename||typeof a.download=="object"&&a.download.filename||void 0;$h(i,f)}},u=()=>{var f;a&&((o||l)({slide:a,saveAs:$h}),(f=e.download)===null||f===void 0||f.call(e,{index:r}))};return h.createElement(A1,{label:"Download",icon:$_,renderIcon:n.iconDownload,disabled:!s,onClick:u})}function DS({augment:n}){n(({toolbar:e,download:t,...o})=>({toolbar:E1(e,oR,h.createElement(Y_,null)),download:MS(t),...o}))}function K_(n){let{PI:e,min:t,max:o,cos:a,round:r}=Math,i=n[0]|n[1]<<8|n[2]<<16,s=n[3]|n[4]<<8,l=(i&63)/63,u=(i>>6&63)/31.5-1,f=(i>>12&63)/31.5-1,d=(i>>18&31)/31,p=i>>23,m=(s>>3&63)/63,g=(s>>9&63)/63,y=s>>15,w=o(3,y?p?5:7:s&7),v=o(3,y?s&7:p?5:7),k=p?(n[5]&15)/15:1,E=(n[5]>>4)/15,A=p?6:5,N=0,T=(b,S,z)=>{let F=[];for(let D=0;D<S;D++)for(let q=D?0:1;q*S<b*(S-D);q++)F.push(((n[A+(N>>1)]>>((N++&1)<<2)&15)/7.5-1)*z);return F},C=T(w,v,d),P=T(3,3,m*1.25),M=T(3,3,g*1.25),U=p&&T(5,5,E),O=G_(n),W=r(O>1?32:32*O),V=r(O>1?32/O:32),j=new Uint8Array(W*V*4),L=[],I=[];for(let b=0,S=0;b<V;b++)for(let z=0;z<W;z++,S+=4){let F=l,D=u,q=f,J=k;for(let de=0,he=o(w,p?5:3);de<he;de++)L[de]=a(e/W*(z+.5)*de);for(let de=0,he=o(v,p?5:3);de<he;de++)I[de]=a(e/V*(b+.5)*de);for(let de=0,he=0;de<v;de++)for(let we=de?0:1,ke=I[de]*2;we*v<w*(v-de);we++,he++)F+=C[he]*L[we]*ke;for(let de=0,he=0;de<3;de++)for(let we=de?0:1,ke=I[de]*2;we<3-de;we++,he++){let Ee=L[we]*ke;D+=P[he]*Ee,q+=M[he]*Ee}if(p)for(let de=0,he=0;de<5;de++)for(let we=de?0:1,ke=I[de]*2;we<5-de;we++,he++)J+=U[he]*L[we]*ke;let ae=F-2/3*D,ge=(3*F-ae+q)/2,ie=ge-q;j[S]=o(0,255*t(1,ge)),j[S+1]=o(0,255*t(1,ie)),j[S+2]=o(0,255*t(1,ae)),j[S+3]=o(0,255*t(1,J))}return{w:W,h:V,rgba:j}}function G_(n){let e=n[3],t=n[2]&128,o=n[4]&128,a=o?t?5:7:e&7,r=o?e&7:t?5:7;return a/r}function J_(n,e,t){let o=n*4+1,a=6+e*(5+o),r=[137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,n>>8,n&255,0,0,e>>8,e&255,8,6,0,0,0,0,0,0,0,a>>>24,a>>16&255,a>>8&255,a&255,73,68,65,84,120,1],i=[0,498536548,997073096,651767980,1994146192,1802195444,1303535960,1342533948,-306674912,-267414716,-690576408,-882789492,-1687895376,-2032938284,-1609899400,-1111625188],s=1,l=0;for(let u=0,f=0,d=o-1;u<e;u++,d+=o-1)for(r.push(u+1<e?0:1,o&255,o>>8,~o&255,o>>8^255,0),l=(l+s)%65521;f<d;f++){let p=t[f]&255;r.push(p),s=(s+p)%65521,l=(l+s)%65521}r.push(l>>8,l&255,s>>8,s&255,0,0,0,0,0,0,0,0,73,69,78,68,174,66,96,130);for(let[u,f]of[[12,29],[37,41+a]]){let d=-1;for(let p=u;p<f;p++)d^=r[p],d=d>>>4^i[d&15],d=d>>>4^i[d&15];d=~d,r[f++]=d>>>24,r[f++]=d>>16&255,r[f++]=d>>8&255,r[f++]=d&255}return"data:image/png;base64,"+btoa(String.fromCharCode(...r))}function Z_(n){let e=K_(n);return J_(e.w,e.h,e.rgba)}function sn({image:{url:n,blurHash:e,thumbHash:t,pubkey:o,dim:a},alt:r,className:i="",classNames:s={},hideIfError:l=!1,errorPlaceholder:u=c.jsx(f4,{}),...f}){const{allowInsecureConnection:d}=Wa(),[p,m]=h.useState(!0),[g,y]=h.useState(!0),[w,v]=h.useState(!1),[k,E]=h.useState(),A=h.useRef(null);if(h.useEffect(()=>{if(m(!0),v(!1),y(!0),!d&&Ar(n)){v(!0),m(!1);return}o?(vi.getValidUrl(n,o).then(C=>{E(C),A.current&&(clearTimeout(A.current),A.current=null)}),A.current=setTimeout(()=>{E(n)},5e3)):E(n)},[n,d]),l&&w)return null;const N=async()=>{const C=await vi.tryNextUrl(n);C?E(C):(m(!1),v(!0))},T=()=>{m(!1),v(!1),setTimeout(()=>y(!1),600),vi.markAsSuccess(n,k||n)};return c.jsxs("div",{className:ne("relative overflow-hidden rounded-xl",s.wrapper),...f,children:[p&&(a==null?void 0:a.width)&&(a==null?void 0:a.height)&&c.jsx("img",{src:`data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='${a.width}' height='${a.height}'%3E%3C/svg%3E`,className:ne("pointer-events-none h-full w-full object-cover transition-opacity",i),alt:""}),g&&c.jsx("div",{className:"absolute inset-0 z-10",children:t?c.jsx(X_,{thumbHash:t,className:ne("h-full w-full transition-opacity",p?"opacity-100":"opacity-0")}):e?c.jsx(Q_,{blurHash:e,className:ne("h-full w-full transition-opacity",p?"opacity-100":"opacity-0")}):c.jsx(Tn,{className:ne("h-full w-full transition-opacity",p?"opacity-100":"opacity-0",s.skeleton)})}),!w&&c.jsx("img",{src:k,alt:r,decoding:"async",draggable:!1,...f,onLoad:T,onError:N,className:ne("pointer-events-none h-full w-full object-cover transition-opacity",p?"absolute inset-0 opacity-0":"",i)}),w&&(typeof u=="string"?c.jsx("img",{src:u,alt:r,decoding:"async",loading:"lazy",className:ne("h-full w-full object-cover transition-opacity",i)}):c.jsx("div",{className:ne("flex h-full w-full flex-col items-center justify-center bg-muted object-cover",i,s.errorPlaceholder),children:u}))]})}const wf=32,vf=32;function Q_({blurHash:n,className:e=""}){const t=h.useRef(null),o=h.useMemo(()=>{if(!n)return null;try{return dP(n,wf,vf)}catch(a){return console.warn("Failed to decode blurhash:",a),null}},[n]);return h.useEffect(()=>{if(!o||!t.current)return;const r=t.current.getContext("2d");if(!r)return;const i=r.createImageData(wf,vf);i.data.set(o),r.putImageData(i,0,0)},[o]),n?c.jsx("canvas",{ref:t,width:wf,height:vf,className:ne("h-full w-full rounded-xl object-cover",e),style:{imageRendering:"auto",filter:"blur(0.5px)"}}):null}function X_({thumbHash:n,className:e=""}){const t=h.useMemo(()=>{if(!n)return null;try{return Z_(n)}catch(o){return console.warn("failed to decode thumbhash:",o),null}},[n]);return t?c.jsx("div",{className:ne("h-full w-full rounded-lg object-cover",e),style:{backgroundImage:`url(${t})`,backgroundSize:"cover",backgroundPosition:"center",filter:"blur(1px)"}}):null}function wu({image:n,className:e,classNames:t={},errorPlaceholder:o,ignoreAutoLoadPolicy:a=!1}){const r=h.useMemo(()=>`image-with-lightbox-${ea()}`,[]),{t:i}=Ae(),{autoLoadMedia:s}=Qt(),[l,u]=h.useState(a?!0:s),[f,d]=h.useState(-1);if(h.useEffect(()=>{f>=0?Gt.register(r,()=>{d(-1)}):Gt.unregister(r)},[f]),!l)return c.jsxs("div",{className:"w-fit cursor-pointer truncate text-primary hover:underline",onClick:m=>{m.stopPropagation(),u(!0)},children:["[",i("Click to load image"),"]"]});const p=m=>{m.stopPropagation(),m.preventDefault(),d(0)};return c.jsxs("div",{className:"group relative w-fit max-w-full",children:[c.jsx(sn,{className:e,classNames:{wrapper:ne("border cursor-zoom-in",t.wrapper),errorPlaceholder:"aspect-square h-[30vh]",skeleton:t.skeleton},image:n,onClick:m=>p(m),errorPlaceholder:o},0),c.jsx("button",{onClick:m=>{m.stopPropagation();const g=document.createElement("a");g.href=n.url,g.target="_blank",g.download=n.url.split("/").pop()||"image",document.body.appendChild(g),g.click(),document.body.removeChild(g)},className:"absolute right-2 top-2 rounded-full bg-black/50 p-2 text-white opacity-0 transition-opacity hover:bg-black/70 group-hover:opacity-100",title:"Download",children:c.jsx(ml,{className:"h-4 w-4"})}),f>=0&&_i.createPortal(c.jsx("div",{onClick:m=>m.stopPropagation(),children:c.jsx(P1,{index:f,slides:[{src:n.url}],plugins:[LS,DS],open:f>=0,close:()=>d(-1),controller:{closeOnBackdropClick:!0,closeOnPullUp:!0,closeOnPullDown:!0},styles:{toolbar:{paddingTop:"2.25rem"}}})}),document.body)]})}function Yh({className:n,images:e,start:t=0,end:o=e.length,mustLoad:a=!1}){const r=h.useMemo(()=>`image-gallery-${ea()}`,[]),{autoLoadMedia:i}=Qt(),[s,l]=h.useState(-1),[u,f]=h.useState(e.map(({url:y})=>({src:y})));h.useEffect(()=>{s>=0?Gt.register(r,()=>{l(-1)}):Gt.unregister(r)},[s]),h.useEffect(()=>{(async()=>{const w=await Promise.all(e.map(({url:v,pubkey:k})=>new Promise(E=>{const A=new window.Image;let N=v;A.onload=()=>{vi.markAsSuccess(v,N),E({src:N})},A.onerror=()=>{vi.tryNextUrl(v).then(T=>{T?(N=T,E({src:N})):E({src:v})})},k?vi.getValidUrl(v,k).then(T=>{N=T,A.src=N}).catch(()=>{E({src:v})}):A.src=v})));f(w)})()},[e]);const d=(y,w)=>{y.stopPropagation(),y.preventDefault();const v=document.createElement("a");v.href=w,v.target="_blank",v.download=w.split("/").pop()||"image",document.body.appendChild(v),v.click(),document.body.removeChild(v)},p=(y,w)=>{y.stopPropagation(),y.preventDefault(),l(t+w)},m=e.slice(t,o);if(!a&&!i)return m.map((y,w)=>c.jsx(wu,{image:y,className:"max-h-[80vh] object-contain sm:max-h-[50vh]",classNames:{wrapper:ne("w-fit max-w-full border",n)}},w));let g=null;return m.length===1?g=c.jsxs("div",{className:"group relative w-fit max-w-full",children:[c.jsx(sn,{className:"max-h-[80vh] object-contain sm:max-h-[50vh]",classNames:{errorPlaceholder:"aspect-square h-[30vh]",wrapper:"cursor-zoom-in border"},image:m[0],onClick:y=>p(y,0)},0),c.jsx("button",{onClick:y=>d(y,m[0].url),className:"absolute right-2 top-2 rounded-full bg-black/50 p-2 text-white opacity-0 transition-opacity hover:bg-black/70 group-hover:opacity-100",title:"Download",children:c.jsx(ml,{className:"h-4 w-4"})})]}):m.length===2||m.length===4?g=c.jsx("div",{className:"grid w-full grid-cols-2 gap-2",children:m.map((y,w)=>c.jsx(sn,{className:"aspect-square w-full",classNames:{wrapper:"cursor-zoom-in border"},image:y,onClick:v=>p(v,w)},w))}):g=c.jsx("div",{className:"grid w-full grid-cols-3 gap-2",children:m.map((y,w)=>c.jsx(sn,{className:"aspect-square w-full",classNames:{wrapper:"cursor-zoom-in border"},image:y,onClick:v=>p(v,w)},w))}),c.jsxs("div",{className:ne(m.length===1?"w-fit max-w-full":"w-full",n),children:[g,s>=0&&_i.createPortal(c.jsx("div",{onClick:y=>y.stopPropagation(),children:c.jsx(P1,{index:s,slides:u,plugins:[LS,DS],open:s>=0,close:()=>l(-1),controller:{closeOnBackdropClick:!0,closeOnPullUp:!0,closeOnPullDown:!0},styles:{toolbar:{paddingTop:"2.25rem"}}})}),document.body)]})}function _S({rawText:n,bech32Id:e}){const{type:t,id:o}=h.useMemo(()=>{if(!e)return{type:"invalid",id:""};try{const{type:a}=Nt.decode(e);if(a==="npub"||a==="nprofile")return{type:"mention",id:e};if(a==="nevent"||a==="naddr"||a==="note")return{type:"note",id:e}}catch(a){console.error("Invalid bech32 ID:",e,a)}return{type:"invalid",id:""}},[e]);return t==="invalid"?n:t==="mention"?c.jsx(Ps,{userId:o,className:"not-prose"}):c.jsx(xs,{noteId:o,className:"not-prose"})}const eF=/nostr:(npub1[a-z0-9]{58}|nprofile1[a-z0-9]+|note1[a-z0-9]{58}|nevent1[a-z0-9]+|naddr1[a-z0-9]+)/g,tF=/\[[^\]]+\]\[(nostr:(npub1[a-z0-9]{58}|nprofile1[a-z0-9]+|note1[a-z0-9]{58}|nevent1[a-z0-9]+|naddr1[a-z0-9]+))\]/g,FS=()=>n=>{l1(n,"text",(e,t,o)=>{if(!o||typeof t!="number")return;const a=e.value,r=Array.from(a.matchAll(tF)),i=Array.from(a.matchAll(eF)).filter(f=>!r.some(d=>f.index>=d.index&&f.index<d.index+d[0].length)),s=[...r.map(f=>({...f,type:"reference",bech32Id:f[2],rawText:f[0]})),...i.map(f=>({...f,type:"direct",bech32Id:f[1],rawText:f[0]}))].sort((f,d)=>f.index-d.index);if(s.length===0)return;const l=[];let u=0;s.forEach(f=>{const d=f.index,p=d+f[0].length;d>u&&l.push({type:"text",value:a.slice(u,d)});const m={type:"nostr",data:{hName:"nostr",hProperties:{bech32Id:f.bech32Id,rawText:f.rawText}}};l.push(m),u=p}),u<a.length&&l.push({type:"text",value:a.slice(u)}),o.children.splice(t,1,...l)})},OS=h.memo(({tweetId:n,url:e,className:t,embedded:o=!0})=>{const{t:a}=Ae(),{push:r}=Vt(),i=h.useMemo(()=>gl(),[]),[s,l]=h.useState(!1),u=h.useRef(!1),f=h.useRef(null),d=h.useRef(!1);h.useEffect(()=>{if(d.current=!1,!n||!f.current||u.current)return;if(u.current=!0,window.twttr)m();else{const g=document.createElement("script");g.src="https://platform.twitter.com/widgets.js",g.async=!0,g.onload=()=>{d.current||m()},g.onerror=()=>{d.current||(console.error("Failed to load Twitter widgets script"),u.current=!1)},document.body.appendChild(g)}function m(){!f.current||!window.twttr||!n||d.current||window.twttr.widgets.createTweet(n,f.current,{theme:"dark",dnt:!0,conversation:"none"}).then(g=>{d.current||(g?setTimeout(()=>{d.current||l(!0)},100):console.error("Failed to embed tweet"))}).catch(g=>{d.current||console.error("Error embedding tweet:",g)}).finally(()=>{u.current=!1})}return()=>{d.current=!0,f.current&&(f.current.innerHTML="")}},[n]);const p=h.useCallback(m=>{m.stopPropagation(),r(uu(e))},[e,r]);return c.jsxs("div",{className:ne("group relative",t),style:{maxWidth:"550px",minHeight:"225px"},children:[c.jsx("div",{ref:f,className:"cursor-pointer",onClick:p}),!s&&c.jsx(Tn,{className:"absolute inset-0 h-full w-full rounded-lg"}),s&&o&&!i&&c.jsx("div",{className:"absolute inset-0 flex cursor-pointer items-center justify-center rounded-lg bg-muted/40 opacity-0 backdrop-blur-md transition-opacity duration-200 group-hover:opacity-100",onClick:p,children:c.jsxs("div",{className:"flex flex-col items-center gap-3",children:[c.jsx(zs,{className:"size-12",strokeWidth:1.5}),c.jsx("span",{className:"text-lg font-medium",children:a("View Nostr comments")})]})})]})});OS.displayName="XPost";function Kh({url:n,className:e,mustLoad:t=!1,embedded:o=!0}){const{t:a}=Ae(),{autoLoadMedia:r}=Qt(),[i,s]=h.useState(r||t),{tweetId:l}=h.useMemo(()=>nF(n),[n]);return h.useEffect(()=>{(r||t)&&s(!0)},[r,t]),l?i?c.jsx(OS,{tweetId:l,url:n,className:e,embedded:o}):c.jsxs("div",{className:"w-fit cursor-pointer truncate text-primary hover:underline",onClick:u=>{u.stopPropagation(),s(!0)},children:["[",a("Click to load X post"),"]"]}):c.jsx(ao,{url:n})}function nF(n){const e=/(?:twitter\.com|x\.com)\/(?:#!\/)?(?:\w+)\/status(?:es)?\/(\d+)/i,t=n.match(e);return{tweetId:t?t[1]:null}}let w0=!1;const bf=[];function oF(n){var e;if(w0&&((e=window.YT)!=null&&e.Player)){n();return}if(bf.push(n),!document.querySelector('script[src="https://www.youtube.com/iframe_api"]')){const t=document.createElement("script");t.src="https://www.youtube.com/iframe_api",document.body.appendChild(t),window.onYouTubeIframeAPIReady=()=>{w0=!0,bf.forEach(o=>o()),bf.length=0}}}const US=h.memo(({videoId:n,isShort:e,className:t})=>{const{muteMedia:o,updateMuteMedia:a}=Wa(),[r,i]=h.useState(!1),s=h.useRef(null),l=h.useRef(null),u=h.useRef(null),f=h.useRef(o),d=h.useRef(`yt-player-${Math.random().toString(36).substr(2,9)}`),p=h.useRef(!1);return h.useEffect(()=>{if(p.current=!1,!n||!l.current)return;oF(()=>{p.current||g()});let m=null;function g(){try{if(!n||!l.current||!window.YT.Player||p.current)return;let y=f.current;s.current=new window.YT.Player(d.current,{videoId:n,playerVars:{mute:y?1:0},events:{onStateChange:w=>{p.current||(w.data===window.YT.PlayerState.PLAYING?zn.play(s.current):(w.data===window.YT.PlayerState.PAUSED||w.data===window.YT.PlayerState.ENDED)&&zn.pause(s.current))},onReady:()=>{var w;if(p.current){(w=s.current)==null||w.destroy();return}i(!0),m=setInterval(()=>{if(!s.current||p.current||typeof s.current.isMuted!="function"){m&&(clearInterval(m),m=null);return}const v=s.current.isMuted();v!==y?(y=v,v!==f.current&&a(y)):f.current!==v&&(f.current?s.current.mute():s.current.unMute())},200)},onError:()=>{p.current||console.error("YouTube player error")}}})}catch(y){console.error("Failed to initialize YouTube player:",y);return}}return()=>{if(p.current=!0,m&&(clearInterval(m),m=null),s.current){try{s.current.destroy()}catch{}s.current=null}}},[n]),h.useEffect(()=>{f.current=o},[o]),h.useEffect(()=>{const m=u.current;if(!m||!r)return;const g=new IntersectionObserver(([y])=>{const w=s.current;!w||p.current||!y.isIntersecting&&[window.YT.PlayerState.PLAYING,window.YT.PlayerState.BUFFERING].includes(w.getPlayerState())&&zn.pause(w)},{threshold:1});return g.observe(m),()=>{g.unobserve(m)}},[r]),c.jsx("div",{ref:u,className:ne("overflow-hidden rounded-xl border",e?"aspect-[9/16] max-h-[80vh] sm:max-h-[60vh]":"aspect-video max-h-[60vh]",t),children:c.jsx("div",{id:d.current,ref:l,className:"h-full w-full"})})});US.displayName="YoutubePlayer";function Gh({url:n,className:e,mustLoad:t=!1}){const{t:o}=Ae(),{autoLoadMedia:a}=Qt(),[r,i]=h.useState(a||t),{videoId:s,isShort:l}=h.useMemo(()=>aF(n),[n]);return h.useEffect(()=>{(a||t)&&i(!0)},[a,t]),s?r?c.jsx(US,{videoId:s,isShort:l,className:e}):c.jsxs("div",{className:"w-fit cursor-pointer truncate text-primary hover:underline",onClick:u=>{u.stopPropagation(),i(!0)},children:["[",o("Click to load YouTube video"),"]"]}):c.jsx(ao,{url:n})}function aF(n){const e=[/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([^&\n?#]+)/,/youtube\.com\/watch\?.*v=([^&\n?#]+)/,/youtube\.com\/shorts\/([^&\n?#]+)/,/youtube\.com\/live\/([^&\n?#]+)/];let t=null,o=!1;for(const[a,r]of e.entries()){const i=n.match(r);if(i){t=i[1].trim(),o=a===2;break}}return{videoId:t,isShort:o}}const rF=[{type:"invoice",regex:nw},{type:"hashtag",regex:hp},{type:"emoji",regex:tw}],iF=()=>n=>{l1(n,"text",(e,t,o)=>{if(!o||typeof t!="number")return;let a=[{type:"text",value:e.value}];for(const{type:r,regex:i}of rF){const s=[];for(const l of a){if(l.type!=="text"){s.push(l);continue}const u=l.value,f=new RegExp(i.source,i.flags),d=Array.from(u.matchAll(f));if(d.length===0){s.push(l);continue}let p=0;for(const m of d){const g=m.index;g>p&&s.push({type:"text",value:u.slice(p,g)}),s.push({type:r,data:{hName:r,hProperties:{value:m[0]}}}),p=g+m[0].length}p<u.length&&s.push({type:"text",value:u.slice(p)})}a=s}(a.length>1||a.length===1&&a[0].type!=="text")&&o.children.splice(t,1,...a)})};function sF({content:n,event:e}){const t=h.useMemo(()=>Ko(e==null?void 0:e.tags),[e==null?void 0:e.tags]),o=h.useMemo(()=>({nostr:({rawText:a,bech32Id:r})=>c.jsx(_S,{rawText:a,bech32Id:r}),hashtag:({value:a})=>c.jsx(wi,{hashtag:a}),emoji:({value:a})=>{const r=a.slice(1,-1),i=t.find(s=>s.shortcode===r);return i?c.jsx(yn,{classNames:{img:"mb-1"},emoji:i}):a},invoice:({value:a})=>c.jsx(qh,{invoice:a,className:"mt-2"}),a:({href:a,children:r})=>a?a.startsWith("note1")||a.startsWith("nevent1")||a.startsWith("naddr1")?c.jsx(Ma,{to:kr(a),className:"text-primary hover:underline",children:r}):a.startsWith("npub1")||a.startsWith("nprofile1")?c.jsx(Ma,{to:ad(a),className:"text-primary hover:underline",children:r}):ow.test(a)?c.jsx(Gh,{url:a,className:"mt-2"}):aw.test(a)?c.jsx(Kh,{url:a,className:"mt-2"}):c.jsx(ao,{url:a,justOpenLink:!0}):c.jsx("span",{children:r}),h1:({children:a})=>c.jsx("p",{className:"font-bold",children:a}),h2:({children:a})=>c.jsx("p",{className:"font-bold",children:a}),h3:({children:a})=>c.jsx("p",{className:"font-bold",children:a}),h4:({children:a})=>c.jsx("p",{className:"font-bold",children:a}),h5:({children:a})=>c.jsx("p",{className:"font-bold",children:a}),h6:({children:a})=>c.jsx("p",{className:"font-bold",children:a}),p:({children:a})=>c.jsx("p",{children:a}),img:({src:a})=>c.jsx(wu,{image:{url:a||"",pubkey:e==null?void 0:e.pubkey},className:"max-h-[80vh] object-contain sm:max-h-[50vh]",classNames:{wrapper:"w-fit max-w-full mt-2"}}),pre:({children:a})=>c.jsx("pre",{className:"overflow-x-auto rounded-md bg-muted p-3 text-sm",children:a}),code:({children:a,className:r})=>r?c.jsx("code",{className:"whitespace-pre-wrap break-words",children:a}):c.jsx("code",{className:"rounded bg-muted px-1 py-0.5 text-sm",children:a}),blockquote:({children:a})=>c.jsx("blockquote",{className:"border-l-2 border-muted-foreground/30 pl-3 text-muted-foreground",children:a}),ul:({children:a})=>c.jsx("ul",{className:"list-disc pl-5",children:a}),ol:({children:a})=>c.jsx("ol",{className:"list-decimal pl-5",children:a}),li:({children:a})=>c.jsx("li",{children:a}),table:({children:a})=>c.jsx("div",{className:"overflow-x-auto",children:c.jsx("table",{className:"border-collapse text-sm",children:a})}),th:({children:a})=>c.jsx("th",{className:"whitespace-nowrap border border-border bg-muted px-3 py-1.5 text-left font-semibold",children:a}),td:({children:a})=>c.jsx("td",{className:"whitespace-nowrap border border-border px-3 py-1.5",children:a}),hr:()=>c.jsx("hr",{className:"border-border"})}),[e==null?void 0:e.pubkey,t]);return c.jsx("div",{className:"space-y-3 whitespace-normal",children:c.jsx(c1,{remarkPlugins:[u1,FS,iF],urlTransform:a=>a.startsWith("nostr:")?a.slice(6):a,components:o,children:n})})}function lF({src:n,className:e}){const{autoplay:t,videoLoop:o}=Qt(),{muteMedia:a,updateMuteMedia:r,allowInsecureConnection:i}=Wa(),[s,l]=h.useState(!1),u=h.useRef(null),f=h.useRef(null);return h.useEffect(()=>{const d=u.current,p=f.current;if(!d||!p||s)return;const m=new IntersectionObserver(([g])=>{g.isIntersecting&&t&&setTimeout(()=>{JC(p)&&zn.autoPlay(d)},200),g.isIntersecting||zn.pause(d)},{threshold:1});return m.observe(p),()=>{m.unobserve(p)}},[t,s]),h.useEffect(()=>{if(!u.current)return;const d=u.current,p=()=>{r(d.muted)};return d.addEventListener("volumechange",p),()=>{d.removeEventListener("volumechange",p)}},[]),h.useEffect(()=>{const d=u.current;!d||d.muted===a||(a?d.muted=!0:d.muted=!1)},[a]),s||!i&&Ar(n)?c.jsx(ao,{url:n}):c.jsxs("div",{ref:f,className:"group relative",children:[c.jsx("video",{ref:u,controls:!0,playsInline:!0,loop:o,className:ne("max-h-[80vh] rounded-xl border sm:max-h-[60vh]",e),src:n,onClick:d=>d.stopPropagation(),onPlay:d=>{zn.play(d.currentTarget)},muted:a,onError:()=>l(!0)}),c.jsx("button",{onClick:d=>{d.stopPropagation();const p=document.createElement("a");p.href=n,p.target="_blank",p.download=n.split("/").pop()||"video",document.body.appendChild(p),p.click(),document.body.removeChild(p)},className:"absolute right-2 top-2 rounded-full bg-black/50 p-2 text-white opacity-0 transition-opacity hover:bg-black/70 group-hover:opacity-100",title:"Download",children:c.jsx(ml,{className:"h-4 w-4"})})]})}function Jh({src:n,className:e,mustLoad:t=!1}){const{t:o}=Ae(),{autoLoadMedia:a}=Qt(),[r,i]=h.useState(a),[s,l]=h.useState(null),[u,f]=h.useState(!1);return h.useEffect(()=>{i(!!a)},[a]),h.useEffect(()=>{var g;if(!t&&!r){l(null);return}if(!n){l(null);return}const p=(g=new URL(n).pathname.split(".").pop())==null?void 0:g.toLowerCase();if(p&&["mp3","wav","flac","aac","m4a","opus","wma"].includes(p)){l("audio");return}const m=document.createElement("video");return m.src=n,m.preload="metadata",m.crossOrigin="anonymous",m.onloadedmetadata=()=>{f(!1),l(m.videoWidth>0||m.videoHeight>0?"video":"audio")},m.onerror=()=>{f(!0)},()=>{m.src=""}},[n,r,t]),u?c.jsx(ao,{url:n}):!t&&!r?c.jsxs("div",{className:"w-fit cursor-pointer truncate text-primary hover:underline",onClick:d=>{d.stopPropagation(),i(!0)},children:["[",o("Click to load media"),"]"]}):s?s==="video"?c.jsx(lF,{src:n,className:e}):c.jsx(pm,{src:n,className:e}):null}function cF(n,e){typeof n=="function"?n(e):n!=null&&(n.current=e)}function BS(...n){return e=>n.forEach(t=>cF(t,e))}function Tr(...n){return h.useCallback(BS(...n),n)}var VS=h.forwardRef((n,e)=>{const{children:t,...o}=n,a=h.Children.toArray(t),r=a.find(dF);if(r){const i=r.props.children,s=a.map(l=>l===r?h.Children.count(i)>1?h.Children.only(null):h.isValidElement(i)?i.props.children:null:l);return c.jsx(Zh,{...o,ref:e,children:h.isValidElement(i)?h.cloneElement(i,void 0,s):null})}return c.jsx(Zh,{...o,ref:e,children:t})});VS.displayName="Slot";var Zh=h.forwardRef((n,e)=>{const{children:t,...o}=n;if(h.isValidElement(t)){const a=hF(t);return h.cloneElement(t,{...fF(o,t.props),ref:e?BS(e,a):a})}return h.Children.count(t)>1?h.Children.only(null):null});Zh.displayName="SlotClone";var uF=({children:n})=>c.jsx(c.Fragment,{children:n});function dF(n){return h.isValidElement(n)&&n.type===uF}function fF(n,e){const t={...e};for(const o in e){const a=n[o],r=e[o];/^on[A-Z]/.test(o)?a&&r?t[o]=(...s)=>{r(...s),a(...s)}:a&&(t[o]=a):o==="style"?t[o]={...a,...r}:o==="className"&&(t[o]=[a,r].filter(Boolean).join(" "))}return{...n,...t}}function hF(n){var o,a;let e=(o=Object.getOwnPropertyDescriptor(n.props,"ref"))==null?void 0:o.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=(a=Object.getOwnPropertyDescriptor(n,"ref"))==null?void 0:a.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}var pF=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],Il=pF.reduce((n,e)=>{const t=h.forwardRef((o,a)=>{const{asChild:r,...i}=o,s=r?VS:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),c.jsx(s,{...i,ref:a})});return t.displayName=`Primitive.${e}`,{...n,[e]:t}},{});function mF(n,e){return h.useReducer((t,o)=>e[t][o]??t,n)}var Ll=n=>{const{present:e,children:t}=n,o=gF(e),a=typeof t=="function"?t({present:o.isPresent}):h.Children.only(t),r=Tr(o.ref,yF(a));return typeof t=="function"||o.isPresent?h.cloneElement(a,{ref:r}):null};Ll.displayName="Presence";function gF(n){const[e,t]=h.useState(),o=h.useRef({}),a=h.useRef(n),r=h.useRef("none"),i=n?"mounted":"unmounted",[s,l]=mF(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return h.useEffect(()=>{const u=uc(o.current);r.current=s==="mounted"?u:"none"},[s]),No(()=>{const u=o.current,f=a.current;if(f!==n){const p=r.current,m=uc(u);n?l("MOUNT"):m==="none"||(u==null?void 0:u.display)==="none"?l("UNMOUNT"):l(f&&p!==m?"ANIMATION_OUT":"UNMOUNT"),a.current=n}},[n,l]),No(()=>{if(e){let u;const f=e.ownerDocument.defaultView??window,d=m=>{const y=uc(o.current).includes(m.animationName);if(m.target===e&&y&&(l("ANIMATION_END"),!a.current)){const w=e.style.animationFillMode;e.style.animationFillMode="forwards",u=f.setTimeout(()=>{e.style.animationFillMode==="forwards"&&(e.style.animationFillMode=w)})}},p=m=>{m.target===e&&(r.current=uc(o.current))};return e.addEventListener("animationstart",p),e.addEventListener("animationcancel",d),e.addEventListener("animationend",d),()=>{f.clearTimeout(u),e.removeEventListener("animationstart",p),e.removeEventListener("animationcancel",d),e.removeEventListener("animationend",d)}}else l("ANIMATION_END")},[e,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:h.useCallback(u=>{u&&(o.current=getComputedStyle(u)),t(u)},[])}}function uc(n){return(n==null?void 0:n.animationName)||"none"}function yF(n){var o,a;let e=(o=Object.getOwnPropertyDescriptor(n.props,"ref"))==null?void 0:o.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=(a=Object.getOwnPropertyDescriptor(n,"ref"))==null?void 0:a.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}function wF(n,[e,t]){return Math.min(t,Math.max(e,n))}function lr(n,e,{checkForDefaultPrevented:t=!0}={}){return function(a){if(n==null||n(a),t===!1||!a.defaultPrevented)return e==null?void 0:e(a)}}function vF(n,e){return h.useReducer((t,o)=>e[t][o]??t,n)}var Em="ScrollArea",[WS,$V]=Bn(Em),[bF,qn]=WS(Em),qS=h.forwardRef((n,e)=>{const{__scopeScrollArea:t,type:o="hover",dir:a,scrollHideDelay:r=600,...i}=n,[s,l]=h.useState(null),[u,f]=h.useState(null),[d,p]=h.useState(null),[m,g]=h.useState(null),[y,w]=h.useState(null),[v,k]=h.useState(0),[E,A]=h.useState(0),[N,T]=h.useState(!1),[C,P]=h.useState(!1),M=Tr(e,O=>l(O)),U=sd(a);return c.jsx(bF,{scope:t,type:o,dir:U,scrollHideDelay:r,scrollArea:s,viewport:u,onViewportChange:f,content:d,onContentChange:p,scrollbarX:m,onScrollbarXChange:g,scrollbarXEnabled:N,onScrollbarXEnabledChange:T,scrollbarY:y,onScrollbarYChange:w,scrollbarYEnabled:C,onScrollbarYEnabledChange:P,onCornerWidthChange:k,onCornerHeightChange:A,children:c.jsx(Il.div,{dir:U,...i,ref:M,style:{position:"relative","--radix-scroll-area-corner-width":v+"px","--radix-scroll-area-corner-height":E+"px",...n.style}})})});qS.displayName=Em;var HS="ScrollAreaViewport",$S=h.forwardRef((n,e)=>{const{__scopeScrollArea:t,children:o,asChild:a,nonce:r,...i}=n,s=qn(HS,t),l=h.useRef(null),u=Tr(e,l,s.onViewportChange);return c.jsxs(c.Fragment,{children:[c.jsx("style",{dangerouslySetInnerHTML:{__html:`
[data-radix-scroll-area-viewport] {
  scrollbar-width: none;
  -ms-overflow-style: none;
  -webkit-overflow-scrolling: touch;
}
[data-radix-scroll-area-viewport]::-webkit-scrollbar {
  display: none;
}
:where([data-radix-scroll-area-viewport]) {
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
:where([data-radix-scroll-area-content]) {
  flex-grow: 1;
}
`},nonce:r}),c.jsx(Il.div,{"data-radix-scroll-area-viewport":"",...i,asChild:a,ref:u,style:{overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden",...n.style},children:TF({asChild:a,children:o},f=>c.jsx("div",{"data-radix-scroll-area-content":"",ref:s.onContentChange,style:{minWidth:s.scrollbarXEnabled?"fit-content":void 0},children:f}))})]})});$S.displayName=HS;var Io="ScrollAreaScrollbar",Rm=h.forwardRef((n,e)=>{const{forceMount:t,...o}=n,a=qn(Io,n.__scopeScrollArea),{onScrollbarXEnabledChange:r,onScrollbarYEnabledChange:i}=a,s=n.orientation==="horizontal";return h.useEffect(()=>(s?r(!0):i(!0),()=>{s?r(!1):i(!1)}),[s,r,i]),a.type==="hover"?c.jsx(kF,{...o,ref:e,forceMount:t}):a.type==="scroll"?c.jsx(SF,{...o,ref:e,forceMount:t}):a.type==="auto"?c.jsx(YS,{...o,ref:e,forceMount:t}):a.type==="always"?c.jsx(Cm,{...o,ref:e}):null});Rm.displayName=Io;var kF=h.forwardRef((n,e)=>{const{forceMount:t,...o}=n,a=qn(Io,n.__scopeScrollArea),[r,i]=h.useState(!1);return h.useEffect(()=>{const s=a.scrollArea;let l=0;if(s){const u=()=>{window.clearTimeout(l),i(!0)},f=()=>{l=window.setTimeout(()=>i(!1),a.scrollHideDelay)};return s.addEventListener("pointerenter",u),s.addEventListener("pointerleave",f),()=>{window.clearTimeout(l),s.removeEventListener("pointerenter",u),s.removeEventListener("pointerleave",f)}}},[a.scrollArea,a.scrollHideDelay]),c.jsx(Ll,{present:t||r,children:c.jsx(YS,{"data-state":r?"visible":"hidden",...o,ref:e})})}),SF=h.forwardRef((n,e)=>{const{forceMount:t,...o}=n,a=qn(Io,n.__scopeScrollArea),r=n.orientation==="horizontal",i=yd(()=>l("SCROLL_END"),100),[s,l]=vF("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return h.useEffect(()=>{if(s==="idle"){const u=window.setTimeout(()=>l("HIDE"),a.scrollHideDelay);return()=>window.clearTimeout(u)}},[s,a.scrollHideDelay,l]),h.useEffect(()=>{const u=a.viewport,f=r?"scrollLeft":"scrollTop";if(u){let d=u[f];const p=()=>{const m=u[f];d!==m&&(l("SCROLL"),i()),d=m};return u.addEventListener("scroll",p),()=>u.removeEventListener("scroll",p)}},[a.viewport,r,l,i]),c.jsx(Ll,{present:t||s!=="hidden",children:c.jsx(Cm,{"data-state":s==="hidden"?"hidden":"visible",...o,ref:e,onPointerEnter:lr(n.onPointerEnter,()=>l("POINTER_ENTER")),onPointerLeave:lr(n.onPointerLeave,()=>l("POINTER_LEAVE"))})})}),YS=h.forwardRef((n,e)=>{const t=qn(Io,n.__scopeScrollArea),{forceMount:o,...a}=n,[r,i]=h.useState(!1),s=n.orientation==="horizontal",l=yd(()=>{if(t.viewport){const u=t.viewport.offsetWidth<t.viewport.scrollWidth,f=t.viewport.offsetHeight<t.viewport.scrollHeight;i(s?u:f)}},10);return Mi(t.viewport,l),Mi(t.content,l),c.jsx(Ll,{present:o||r,children:c.jsx(Cm,{"data-state":r?"visible":"hidden",...a,ref:e})})}),Cm=h.forwardRef((n,e)=>{const{orientation:t="vertical",...o}=n,a=qn(Io,n.__scopeScrollArea),r=h.useRef(null),i=h.useRef(0),[s,l]=h.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=QS(s.viewport,s.content),f={...o,sizes:s,onSizesChange:l,hasThumb:u>0&&u<1,onThumbChange:p=>r.current=p,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:p=>i.current=p};function d(p,m){return PF(p,i.current,s,m)}return t==="horizontal"?c.jsx(xF,{...f,ref:e,onThumbPositionChange:()=>{if(a.viewport&&r.current){const p=a.viewport.scrollLeft,m=v0(p,s,a.dir);r.current.style.transform=`translate3d(${m}px, 0, 0)`}},onWheelScroll:p=>{a.viewport&&(a.viewport.scrollLeft=p)},onDragScroll:p=>{a.viewport&&(a.viewport.scrollLeft=d(p,a.dir))}}):t==="vertical"?c.jsx(AF,{...f,ref:e,onThumbPositionChange:()=>{if(a.viewport&&r.current){const p=a.viewport.scrollTop,m=v0(p,s);r.current.style.transform=`translate3d(0, ${m}px, 0)`}},onWheelScroll:p=>{a.viewport&&(a.viewport.scrollTop=p)},onDragScroll:p=>{a.viewport&&(a.viewport.scrollTop=d(p))}}):null}),xF=h.forwardRef((n,e)=>{const{sizes:t,onSizesChange:o,...a}=n,r=qn(Io,n.__scopeScrollArea),[i,s]=h.useState(),l=h.useRef(null),u=Tr(e,l,r.onScrollbarXChange);return h.useEffect(()=>{l.current&&s(getComputedStyle(l.current))},[l]),c.jsx(GS,{"data-orientation":"horizontal",...a,ref:u,sizes:t,style:{bottom:0,left:r.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:r.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":gd(t)+"px",...n.style},onThumbPointerDown:f=>n.onThumbPointerDown(f.x),onDragScroll:f=>n.onDragScroll(f.x),onWheelScroll:(f,d)=>{if(r.viewport){const p=r.viewport.scrollLeft+f.deltaX;n.onWheelScroll(p),ex(p,d)&&f.preventDefault()}},onResize:()=>{l.current&&r.viewport&&i&&o({content:r.viewport.scrollWidth,viewport:r.viewport.offsetWidth,scrollbar:{size:l.current.clientWidth,paddingStart:bu(i.paddingLeft),paddingEnd:bu(i.paddingRight)}})}})}),AF=h.forwardRef((n,e)=>{const{sizes:t,onSizesChange:o,...a}=n,r=qn(Io,n.__scopeScrollArea),[i,s]=h.useState(),l=h.useRef(null),u=Tr(e,l,r.onScrollbarYChange);return h.useEffect(()=>{l.current&&s(getComputedStyle(l.current))},[l]),c.jsx(GS,{"data-orientation":"vertical",...a,ref:u,sizes:t,style:{top:0,right:r.dir==="ltr"?0:void 0,left:r.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":gd(t)+"px",...n.style},onThumbPointerDown:f=>n.onThumbPointerDown(f.y),onDragScroll:f=>n.onDragScroll(f.y),onWheelScroll:(f,d)=>{if(r.viewport){const p=r.viewport.scrollTop+f.deltaY;n.onWheelScroll(p),ex(p,d)&&f.preventDefault()}},onResize:()=>{l.current&&r.viewport&&i&&o({content:r.viewport.scrollHeight,viewport:r.viewport.offsetHeight,scrollbar:{size:l.current.clientHeight,paddingStart:bu(i.paddingTop),paddingEnd:bu(i.paddingBottom)}})}})}),[EF,KS]=WS(Io),GS=h.forwardRef((n,e)=>{const{__scopeScrollArea:t,sizes:o,hasThumb:a,onThumbChange:r,onThumbPointerUp:i,onThumbPointerDown:s,onThumbPositionChange:l,onDragScroll:u,onWheelScroll:f,onResize:d,...p}=n,m=qn(Io,t),[g,y]=h.useState(null),w=Tr(e,M=>y(M)),v=h.useRef(null),k=h.useRef(""),E=m.viewport,A=o.content-o.viewport,N=Ot(f),T=Ot(l),C=yd(d,10);function P(M){if(v.current){const U=M.clientX-v.current.left,O=M.clientY-v.current.top;u({x:U,y:O})}}return h.useEffect(()=>{const M=U=>{const O=U.target;(g==null?void 0:g.contains(O))&&N(U,A)};return document.addEventListener("wheel",M,{passive:!1}),()=>document.removeEventListener("wheel",M,{passive:!1})},[E,g,A,N]),h.useEffect(T,[o,T]),Mi(g,C),Mi(m.content,C),c.jsx(EF,{scope:t,scrollbar:g,hasThumb:a,onThumbChange:Ot(r),onThumbPointerUp:Ot(i),onThumbPositionChange:T,onThumbPointerDown:Ot(s),children:c.jsx(Il.div,{...p,ref:w,style:{position:"absolute",...p.style},onPointerDown:lr(n.onPointerDown,M=>{M.button===0&&(M.target.setPointerCapture(M.pointerId),v.current=g.getBoundingClientRect(),k.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",m.viewport&&(m.viewport.style.scrollBehavior="auto"),P(M))}),onPointerMove:lr(n.onPointerMove,P),onPointerUp:lr(n.onPointerUp,M=>{const U=M.target;U.hasPointerCapture(M.pointerId)&&U.releasePointerCapture(M.pointerId),document.body.style.webkitUserSelect=k.current,m.viewport&&(m.viewport.style.scrollBehavior=""),v.current=null})})})}),vu="ScrollAreaThumb",JS=h.forwardRef((n,e)=>{const{forceMount:t,...o}=n,a=KS(vu,n.__scopeScrollArea);return c.jsx(Ll,{present:t||a.hasThumb,children:c.jsx(RF,{ref:e,...o})})}),RF=h.forwardRef((n,e)=>{const{__scopeScrollArea:t,style:o,...a}=n,r=qn(vu,t),i=KS(vu,t),{onThumbPositionChange:s}=i,l=Tr(e,d=>i.onThumbChange(d)),u=h.useRef(),f=yd(()=>{u.current&&(u.current(),u.current=void 0)},100);return h.useEffect(()=>{const d=r.viewport;if(d){const p=()=>{if(f(),!u.current){const m=NF(d,s);u.current=m,s()}};return s(),d.addEventListener("scroll",p),()=>d.removeEventListener("scroll",p)}},[r.viewport,f,s]),c.jsx(Il.div,{"data-state":i.hasThumb?"visible":"hidden",...a,ref:l,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...o},onPointerDownCapture:lr(n.onPointerDownCapture,d=>{const m=d.target.getBoundingClientRect(),g=d.clientX-m.left,y=d.clientY-m.top;i.onThumbPointerDown({x:g,y})}),onPointerUp:lr(n.onPointerUp,i.onThumbPointerUp)})});JS.displayName=vu;var Pm="ScrollAreaCorner",ZS=h.forwardRef((n,e)=>{const t=qn(Pm,n.__scopeScrollArea),o=!!(t.scrollbarX&&t.scrollbarY);return t.type!=="scroll"&&o?c.jsx(CF,{...n,ref:e}):null});ZS.displayName=Pm;var CF=h.forwardRef((n,e)=>{const{__scopeScrollArea:t,...o}=n,a=qn(Pm,t),[r,i]=h.useState(0),[s,l]=h.useState(0),u=!!(r&&s);return Mi(a.scrollbarX,()=>{var d;const f=((d=a.scrollbarX)==null?void 0:d.offsetHeight)||0;a.onCornerHeightChange(f),l(f)}),Mi(a.scrollbarY,()=>{var d;const f=((d=a.scrollbarY)==null?void 0:d.offsetWidth)||0;a.onCornerWidthChange(f),i(f)}),u?c.jsx(Il.div,{...o,ref:e,style:{width:r,height:s,position:"absolute",right:a.dir==="ltr"?0:void 0,left:a.dir==="rtl"?0:void 0,bottom:0,...n.style}}):null});function bu(n){return n?parseInt(n,10):0}function QS(n,e){const t=n/e;return isNaN(t)?0:t}function gd(n){const e=QS(n.viewport,n.content),t=n.scrollbar.paddingStart+n.scrollbar.paddingEnd,o=(n.scrollbar.size-t)*e;return Math.max(o,18)}function PF(n,e,t,o="ltr"){const a=gd(t),r=a/2,i=e||r,s=a-i,l=t.scrollbar.paddingStart+i,u=t.scrollbar.size-t.scrollbar.paddingEnd-s,f=t.content-t.viewport,d=o==="ltr"?[0,f]:[f*-1,0];return XS([l,u],d)(n)}function v0(n,e,t="ltr"){const o=gd(e),a=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=e.scrollbar.size-a,i=e.content-e.viewport,s=r-o,l=t==="ltr"?[0,i]:[i*-1,0],u=wF(n,l);return XS([0,i],[0,s])(u)}function XS(n,e){return t=>{if(n[0]===n[1]||e[0]===e[1])return e[0];const o=(e[1]-e[0])/(n[1]-n[0]);return e[0]+o*(t-n[0])}}function ex(n,e){return n>0&&n<e}var NF=(n,e=()=>{})=>{let t={left:n.scrollLeft,top:n.scrollTop},o=0;return function a(){const r={left:n.scrollLeft,top:n.scrollTop},i=t.left!==r.left,s=t.top!==r.top;(i||s)&&e(),t=r,o=window.requestAnimationFrame(a)}(),()=>window.cancelAnimationFrame(o)};function yd(n,e){const t=Ot(n),o=h.useRef(0);return h.useEffect(()=>()=>window.clearTimeout(o.current),[]),h.useCallback(()=>{window.clearTimeout(o.current),o.current=window.setTimeout(t,e)},[t,e])}function Mi(n,e){const t=Ot(e);No(()=>{let o=0;if(n){const a=new ResizeObserver(()=>{cancelAnimationFrame(o),o=window.requestAnimationFrame(t)});return a.observe(n),()=>{window.cancelAnimationFrame(o),a.unobserve(n)}}},[n,t])}function TF(n,e){const{asChild:t,children:o}=n;if(!t)return typeof e=="function"?e(o):e;const a=h.Children.only(o);return h.cloneElement(a,{children:typeof e=="function"?e(a.props.children):e})}var tx=qS,jF=$S,zF=ZS;const Qo=h.forwardRef(({className:n,scrollBarClassName:e,children:t,...o},a)=>c.jsxs(tx,{className:ne("relative overflow-hidden",n),...o,children:[c.jsx(jF,{ref:a,className:"h-full w-full rounded-[inherit] *:!block",children:t}),c.jsx(Ml,{className:e}),c.jsx(zF,{})]}));Qo.displayName=tx.displayName;const Ml=h.forwardRef(({className:n,orientation:e="vertical",...t},o)=>c.jsx(Rm,{ref:o,orientation:e,className:ne("flex touch-none select-none transition-colors",e==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",e==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",n),...t,children:c.jsx(JS,{className:"relative flex-1 rounded-full bg-border"})}));Ml.displayName=Rm.displayName;const IF=({children:n,open:e,onOpenChange:t,...o})=>{const[a,r]=h.useState(e??!1),i=h.useMemo(()=>`sheet-${ea()}`,[]);return h.useEffect(()=>{e?Gt.register(i,()=>{t==null||t(!1)}):Gt.unregister(i)},[e]),h.useEffect(()=>{e===void 0&&(a?Gt.register(i,()=>{r(!1)}):Gt.unregister(i))},[a]),c.jsx(Yu,{open:e??a,onOpenChange:t??r,...o,children:n})},LF=Ku,nx=h.forwardRef(({className:n,...e},t)=>c.jsx(Wi,{className:ne("fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...e,ref:t}));nx.displayName=Wi.displayName;const MF=Gu("fixed z-50 gap-4 bg-card p-6 shadow-xl transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out border-border/20",{variants:{side:{top:"inset-x-0 top-0 border-b rounded-b-2xl data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t rounded-t-2xl data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r rounded-r-2xl data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l rounded-l-2xl data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),ox=h.forwardRef(({side:n="right",className:e,children:t,hideClose:o=!1,...a},r)=>c.jsxs(LF,{children:[c.jsx(nx,{}),c.jsxs(qi,{ref:r,className:ne(MF({side:n}),e),...a,children:[!o&&c.jsxs(Rl,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",children:[c.jsx(Dn,{className:"h-4 w-4"}),c.jsx("span",{className:"sr-only",children:"Close"})]}),t]})]}));ox.displayName=qi.displayName;const ax=({className:n,...e})=>c.jsx("div",{className:ne("flex flex-col space-y-2 text-center sm:text-left",n),...e});ax.displayName="SheetHeader";const rx=h.forwardRef(({className:n,...e},t)=>c.jsx(Hi,{ref:t,className:ne("text-lg font-semibold text-foreground",n),...e}));rx.displayName=Hi.displayName;const ix=h.forwardRef(({className:n,...e},t)=>c.jsx($i,{ref:t,className:ne("text-sm text-muted-foreground",n),...e}));ix.displayName=$i.displayName;const ri=class ri extends EventTarget{constructor(){super();H(this,"isSuggestionPopupOpen",!1);return ri.instance||(ri.instance=this),ri.instance}closeSuggestionPopup(){this.isSuggestionPopupOpen&&(this.isSuggestionPopupOpen=!1,this.dispatchEvent(new CustomEvent("closeSuggestionPopup")))}};H(ri,"instance");let Qh=ri;const on=new Qh,ii=class ii{constructor(){H(this,"postContentCache",new Map);H(this,"postSettingsCache",new Map);return ii.instance||(ii.instance=this),ii.instance}getPostContentCache({defaultContent:e,parentStuff:t}={}){return this.postContentCache.get(this.generateCacheKey(e,t))??e}setPostContentCache({defaultContent:e,parentStuff:t},o){this.postContentCache.set(this.generateCacheKey(e,t),o)}getPostSettingsCache({defaultContent:e,parentStuff:t}={}){return this.postSettingsCache.get(this.generateCacheKey(e,t))}setPostSettingsCache({defaultContent:e,parentStuff:t},o){this.postSettingsCache.set(this.generateCacheKey(e,t),o)}clearPostCache({defaultContent:e,parentStuff:t}){const o=this.generateCacheKey(e,t);this.postContentCache.delete(o),this.postSettingsCache.delete(o)}generateCacheKey(e="",t){return t?typeof t=="string"?t:t.id:e}};H(ii,"instance");let Xh=ii;const Ns=new Xh;var DF="Label",sx=h.forwardRef((n,e)=>c.jsx(vt.label,{...n,ref:e,onMouseDown:t=>{var a;t.target.closest("button, input, select, textarea")||((a=n.onMouseDown)==null||a.call(n,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));sx.displayName=DF;var lx=sx;const _F=Gu("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),Jt=h.forwardRef(({className:n,...e},t)=>c.jsx(lx,{ref:t,className:ne(_F(),n),...e}));Jt.displayName=lx.displayName;var cx=h.forwardRef((n,e)=>{const{children:t,...o}=n,a=h.Children.toArray(t),r=a.find(OF);if(r){const i=r.props.children,s=a.map(l=>l===r?h.Children.count(i)>1?h.Children.only(null):h.isValidElement(i)?i.props.children:null:l);return c.jsx(ep,{...o,ref:e,children:h.isValidElement(i)?h.cloneElement(i,void 0,s):null})}return c.jsx(ep,{...o,ref:e,children:t})});cx.displayName="Slot";var ep=h.forwardRef((n,e)=>{const{children:t,...o}=n;if(h.isValidElement(t)){const a=BF(t);return h.cloneElement(t,{...UF(o,t.props),ref:e?ta(e,a):a})}return h.Children.count(t)>1?h.Children.only(null):null});ep.displayName="SlotClone";var FF=({children:n})=>c.jsx(c.Fragment,{children:n});function OF(n){return h.isValidElement(n)&&n.type===FF}function UF(n,e){const t={...e};for(const o in e){const a=n[o],r=e[o];/^on[A-Z]/.test(o)?a&&r?t[o]=(...s)=>{r(...s),a(...s)}:a&&(t[o]=a):o==="style"?t[o]={...a,...r}:o==="className"&&(t[o]=[a,r].filter(Boolean).join(" "))}return{...n,...t}}function BF(n){var o,a;let e=(o=Object.getOwnPropertyDescriptor(n.props,"ref"))==null?void 0:o.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=(a=Object.getOwnPropertyDescriptor(n,"ref"))==null?void 0:a.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}var Nm="Popover",[ux,YV]=Bn(Nm,[Qi]),Dl=Qi(),[VF,Ha]=ux(Nm),dx=n=>{const{__scopePopover:e,children:t,open:o,defaultOpen:a,onOpenChange:r,modal:i=!1}=n,s=Dl(e),l=h.useRef(null),[u,f]=h.useState(!1),[d=!1,p]=Ua({prop:o,defaultProp:a,onChange:r});return c.jsx(Xu,{...s,children:c.jsx(VF,{scope:e,contentId:Ao(),triggerRef:l,open:d,onOpenChange:p,onOpenToggle:h.useCallback(()=>p(m=>!m),[p]),hasCustomAnchor:u,onCustomAnchorAdd:h.useCallback(()=>f(!0),[]),onCustomAnchorRemove:h.useCallback(()=>f(!1),[]),modal:i,children:t})})};dx.displayName=Nm;var fx="PopoverAnchor",hx=h.forwardRef((n,e)=>{const{__scopePopover:t,...o}=n,a=Ha(fx,t),r=Dl(t),{onCustomAnchorAdd:i,onCustomAnchorRemove:s}=a;return h.useEffect(()=>(i(),()=>s()),[i,s]),c.jsx(ed,{...r,...o,ref:e})});hx.displayName=fx;var px="PopoverTrigger",mx=h.forwardRef((n,e)=>{const{__scopePopover:t,...o}=n,a=Ha(px,t),r=Dl(t),i=zt(e,a.triggerRef),s=c.jsx(vt.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":bx(a.open),...o,ref:i,onClick:Fe(n.onClick,a.onOpenToggle)});return a.hasCustomAnchor?s:c.jsx(ed,{asChild:!0,...r,children:s})});mx.displayName=px;var Tm="PopoverPortal",[WF,qF]=ux(Tm,{forceMount:void 0}),gx=n=>{const{__scopePopover:e,forceMount:t,children:o,container:a}=n,r=Ha(Tm,e);return c.jsx(WF,{scope:e,forceMount:t,children:c.jsx(Vn,{present:t||r.open,children:c.jsx(qu,{asChild:!0,container:a,children:o})})})};gx.displayName=Tm;var Di="PopoverContent",yx=h.forwardRef((n,e)=>{const t=qF(Di,n.__scopePopover),{forceMount:o=t.forceMount,...a}=n,r=Ha(Di,n.__scopePopover);return c.jsx(Vn,{present:o||r.open,children:r.modal?c.jsx(HF,{...a,ref:e}):c.jsx($F,{...a,ref:e})})});yx.displayName=Di;var HF=h.forwardRef((n,e)=>{const t=Ha(Di,n.__scopePopover),o=h.useRef(null),a=zt(e,o),r=h.useRef(!1);return h.useEffect(()=>{const i=o.current;if(i)return zp(i)},[]),c.jsx($u,{as:cx,allowPinchZoom:!0,children:c.jsx(wx,{...n,ref:a,trapFocus:t.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Fe(n.onCloseAutoFocus,i=>{var s;i.preventDefault(),r.current||(s=t.triggerRef.current)==null||s.focus()}),onPointerDownOutside:Fe(n.onPointerDownOutside,i=>{const s=i.detail.originalEvent,l=s.button===0&&s.ctrlKey===!0,u=s.button===2||l;r.current=u},{checkForDefaultPrevented:!1}),onFocusOutside:Fe(n.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1})})})}),$F=h.forwardRef((n,e)=>{const t=Ha(Di,n.__scopePopover),o=h.useRef(!1),a=h.useRef(!1);return c.jsx(wx,{...n,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:r=>{var i,s;(i=n.onCloseAutoFocus)==null||i.call(n,r),r.defaultPrevented||(o.current||(s=t.triggerRef.current)==null||s.focus(),r.preventDefault()),o.current=!1,a.current=!1},onInteractOutside:r=>{var l,u;(l=n.onInteractOutside)==null||l.call(n,r),r.defaultPrevented||(o.current=!0,r.detail.originalEvent.type==="pointerdown"&&(a.current=!0));const i=r.target;((u=t.triggerRef.current)==null?void 0:u.contains(i))&&r.preventDefault(),r.detail.originalEvent.type==="focusin"&&a.current&&r.preventDefault()}})}),wx=h.forwardRef((n,e)=>{const{__scopePopover:t,trapFocus:o,onOpenAutoFocus:a,onCloseAutoFocus:r,disableOutsidePointerEvents:i,onEscapeKeyDown:s,onPointerDownOutside:l,onFocusOutside:u,onInteractOutside:f,...d}=n,p=Ha(Di,t),m=Dl(t);return jp(),c.jsx(Wu,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:a,onUnmountAutoFocus:r,children:c.jsx(El,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:f,onEscapeKeyDown:s,onPointerDownOutside:l,onFocusOutside:u,onDismiss:()=>p.onOpenChange(!1),children:c.jsx(Jp,{"data-state":bx(p.open),role:"dialog",id:p.contentId,...m,...d,ref:e,style:{...d.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),vx="PopoverClose",YF=h.forwardRef((n,e)=>{const{__scopePopover:t,...o}=n,a=Ha(vx,t);return c.jsx(vt.button,{type:"button",...o,ref:e,onClick:Fe(n.onClick,()=>a.onOpenChange(!1))})});YF.displayName=vx;var KF="PopoverArrow",GF=h.forwardRef((n,e)=>{const{__scopePopover:t,...o}=n,a=Dl(t);return c.jsx(Zp,{...a,...o,ref:e})});GF.displayName=KF;function bx(n){return n?"open":"closed"}var JF=dx,ZF=hx,QF=mx,XF=gx,kx=yx;const jm=({open:n,onOpenChange:e,...t})=>{const[o,a]=h.useState(!1),r=n!==void 0,i=r?n:o,s=h.useRef(null),l=h.useCallback(u=>{r||a(u),e==null||e(u)},[r,e]);return c.jsxs(c.Fragment,{children:[_i.createPortal(i?c.jsx("div",{ref:s,className:"pointer-events-auto fixed inset-0 z-40",onClick:u=>{u.stopPropagation(),l(!1)}}):null,document.body),c.jsx(JF,{...t,open:i,onOpenChange:l,modal:!1})]})};jm.displayName="Popover";const eO=QF,tO=ZF,zm=h.forwardRef(({className:n,align:e="center",sideOffset:t=4,...o},a)=>c.jsx(XF,{children:c.jsx(kx,{ref:a,align:e,sideOffset:t,collisionPadding:10,className:ne("z-50 w-72 rounded-2xl border border-border/20 bg-popover p-4 text-popover-foreground shadow-xl outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",n),onOpenAutoFocus:r=>r.preventDefault(),...o})}));zm.displayName=kx.displayName;function nO(n){const e=h.useRef({value:n,previous:n});return h.useMemo(()=>(e.current.value!==n&&(e.current.previous=e.current.value,e.current.value=n),e.current.previous),[n])}var Im="Switch",[oO,KV]=Bn(Im),[aO,rO]=oO(Im),Sx=h.forwardRef((n,e)=>{const{__scopeSwitch:t,name:o,checked:a,defaultChecked:r,required:i,disabled:s,value:l="on",onCheckedChange:u,form:f,...d}=n,[p,m]=h.useState(null),g=zt(e,E=>m(E)),y=h.useRef(!1),w=p?f||!!p.closest("form"):!0,[v=!1,k]=Ua({prop:a,defaultProp:r,onChange:u});return c.jsxs(aO,{scope:t,checked:v,disabled:s,children:[c.jsx(vt.button,{type:"button",role:"switch","aria-checked":v,"aria-required":i,"data-state":Ex(v),"data-disabled":s?"":void 0,disabled:s,value:l,...d,ref:g,onClick:Fe(n.onClick,E=>{k(A=>!A),w&&(y.current=E.isPropagationStopped(),y.current||E.stopPropagation())})}),w&&c.jsx(iO,{control:p,bubbles:!y.current,name:o,value:l,checked:v,required:i,disabled:s,form:f,style:{transform:"translateX(-100%)"}})]})});Sx.displayName=Im;var xx="SwitchThumb",Ax=h.forwardRef((n,e)=>{const{__scopeSwitch:t,...o}=n,a=rO(xx,t);return c.jsx(vt.span,{"data-state":Ex(a.checked),"data-disabled":a.disabled?"":void 0,...o,ref:e})});Ax.displayName=xx;var iO=n=>{const{control:e,checked:t,bubbles:o=!0,...a}=n,r=h.useRef(null),i=nO(t),s=_b(e);return h.useEffect(()=>{const l=r.current,u=window.HTMLInputElement.prototype,d=Object.getOwnPropertyDescriptor(u,"checked").set;if(i!==t&&d){const p=new Event("click",{bubbles:o});d.call(l,t),l.dispatchEvent(p)}},[i,t,o]),c.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:t,...a,tabIndex:-1,ref:r,style:{...n.style,...s,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function Ex(n){return n?"checked":"unchecked"}var Rx=Sx,sO=Ax;const Lm=h.forwardRef(({className:n,...e},t)=>c.jsx(Rx,{className:ne("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-foreground/30",n),...e,ref:t,children:c.jsx(sO,{className:ne("pointer-events-none block h-4 w-4 rounded-full bg-background ring-0 transition-all duration-200 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Lm.displayName=Rx.displayName;function rl({onEmojiClick:n}){const{isSmallScreen:e}=Ct();return c.jsx(_E,{theme:FE.DARK,width:e?"100%":400,height:e?350:450,autoFocusSearch:!1,emojiStyle:OE.NATIVE,skinTonePickerLocation:UE.PREVIEW,style:{"--epr-bg-color":"hsl(var(--background))","--epr-category-label-bg-color":"hsl(var(--background))","--epr-text-color":"hsl(var(--foreground))","--epr-hover-bg-color":"hsl(var(--muted) / 0.5)","--epr-picker-border-color":"transparent","--epr-search-input-bg-color":"hsl(var(--muted) / 0.5)"},suggestedEmojisMode:BE.FREQUENT,onEmojiClick:(t,o)=>{var a,r;if(t.isCustom&&t.imageUrl){const i=(r=(a=t.names)==null?void 0:a[0])==null?void 0:r.replace(/^:|:$/g,"");n({shortcode:i,url:t.imageUrl},o)}else{const i=gp(t.unified);n(i,o)}},customEmojis:gn.getAllCustomEmojisForPicker()})}function lO({children:n,onEmojiClick:e}){const{isSmallScreen:t}=Ct(),[o,a]=h.useState(!1);return t?c.jsxs(Ht,{open:o,onOpenChange:a,children:[c.jsx(Sb,{asChild:!0,children:n}),c.jsx($t,{children:c.jsx(rl,{onEmojiClick:(r,i)=>{i.stopPropagation(),a(!1),e==null||e(r)}})})]}):c.jsxs(oa,{open:o,onOpenChange:a,children:[c.jsx(aa,{asChild:!0,children:n}),c.jsx(ra,{side:"top",className:"w-fit p-0",children:c.jsx(rl,{onEmojiClick:(r,i)=>{i.stopPropagation(),a(!1),e==null||e(r)}})})]})}function cO({content:n,mentions:e,setMentions:t,parentEvent:o}){const{t:a}=Ae(),{isSmallScreen:r}=Ct(),[i,s]=h.useState(!1),{pubkey:l}=Je(),{mutePubkeySet:u}=Pr(),[f,d]=h.useState([]),[p,m]=h.useState(),[g,y]=h.useState([]);h.useEffect(()=>{dO(n,o).then(({pubkeys:v,relatedPubkeys:k,parentEventPubkey:E})=>{const A=E!==l?E:void 0;m(A);const N=[...v,...k].filter(T=>T!==l);A&&N.push(A),d(N),y(T=>Array.from(new Set(T.filter(C=>N.includes(C)).concat(N.filter(C=>u.has(C)&&C!==A)))))})},[n,o,l,u]),h.useEffect(()=>{const v=f.filter(k=>!g.includes(k));t(v)},[f,g]);const w=h.useMemo(()=>f.map((v,k)=>{const E=f[f.length-1-k],A=E===p;return c.jsxs(uO,{checked:A?!0:e.includes(E),onCheckedChange:N=>{A||y(N?T=>T.filter(C=>C!==E):T=>[...T,E])},disabled:A,children:[c.jsx(as,{userId:E,size:"small"}),c.jsx(kd,{userId:E,className:"truncate text-sm font-semibold",skeletonClassName:"h-3"})]},`${E}-${k}`)}),[f,p,e]);return r?c.jsxs(c.Fragment,{children:[c.jsxs(xe,{className:"px-3",variant:"ghost",disabled:f.length===0,onClick:()=>s(!0),children:[a("Mentions")," ",f.length>0&&`(${e.length}/${f.length})`]}),c.jsxs(Ht,{open:i,onOpenChange:s,children:[c.jsx(Wn,{onClick:()=>s(!1)}),c.jsx($t,{className:"max-h-[80vh]",hideOverlay:!0,children:c.jsx("div",{className:"overflow-y-auto overscroll-contain py-2",style:{touchAction:"pan-y"},children:w})})]})]}):c.jsxs(oa,{children:[c.jsx(aa,{asChild:!0,children:c.jsxs(xe,{className:"px-3",variant:"ghost",disabled:f.length===0,onClick:v=>v.stopPropagation(),children:[a("Mentions")," ",f.length>0&&`(${e.length}/${f.length})`]})}),c.jsx(ra,{align:"start",className:"max-h-[50vh] max-w-96",showScrollButtons:!0,children:w})]})}function uO({children:n,checked:e,disabled:t,onCheckedChange:o}){const{isSmallScreen:a}=Ct();return a?c.jsxs("div",{onClick:()=>{t||o(!e)},className:ne("clickable flex items-center gap-2 px-4 py-3",t?"pointer-events-none opacity-50":""),children:[c.jsx("div",{className:"flex size-4 shrink-0 items-center justify-center",children:e&&c.jsx(_a,{className:"size-4"})}),n]}):c.jsx(hm,{checked:e,disabled:t,onSelect:r=>r.preventDefault(),onCheckedChange:o,className:"flex items-center gap-2",children:n})}async function dO(n,e){const t=e?e.pubkey:void 0,o=[],a=[],r=n.match(/nostr:(npub1[a-z0-9]{58}|nprofile1[a-z0-9]+|note1[a-z0-9]{58}|nevent1[a-z0-9]+)/g),i=(s,l)=>{l!==t&&(s.includes(l)||s.push(l))};for(const s of r||[])try{const l=s.split(":")[1],{type:u,data:f}=Nt.decode(l);if(u==="nprofile")i(o,f.pubkey);else if(u==="npub")i(o,f);else if(["nevent","note"].includes(u)){const d=await le.fetchEvent(l);d&&i(o,d.pubkey)}}catch(l){console.error(l)}return e&&e.tags.forEach(([s,l])=>{["p","P"].includes(s)&&l&&i(a,l)}),{pubkeys:o,relatedPubkeys:a.filter(s=>!o.includes(s)),parentEventPubkey:t}}const Sn=h.forwardRef(({className:n,type:e,...t},o)=>c.jsx("input",{type:e,className:ne("flex h-10 w-full rounded-xl border border-border/20 bg-muted/30 px-3.5 py-2.5 text-base transition-all duration-300 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground/60 hover:border-primary/30 hover:bg-muted/40 focus-visible:border-primary/50 focus-visible:bg-background/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/20 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm backdrop-blur-sm",n),ref:o,...t}));Sn.displayName="Input";const fO={info:c.jsx(h4,{}),success:c.jsx(V1,{}),alert:c.jsx(Z1,{})},hO={info:"bg-blue-100/20 dark:bg-blue-950/20 border border-blue-500 text-blue-500",success:"bg-green-100/20 dark:bg-green-950/20 border border-green-500 text-green-500",alert:"bg-amber-100/20 dark:bg-amber-950/20 border border-amber-500 text-amber-500"};function tp({title:n,content:e,icon:t,variant:o="info"}){return c.jsxs("div",{className:ne("rounded-lg p-3 text-sm [&_svg]:size-4",hO[o]),children:[c.jsxs("div",{className:"flex items-center gap-2",children:[t??fO[o],c.jsx("div",{className:"font-medium",children:n})]}),e&&c.jsx("div",{className:"pl-6",children:e})]})}function pO({pollCreateData:n,setPollCreateData:e,setIsPoll:t}){const{t:o}=Ae(),[a,r]=h.useState(n.isMultipleChoice),[i,s]=h.useState(n.options),[l,u]=h.useState(n.endsAt?Be(n.endsAt*1e3).format("YYYY-MM-DDTHH:mm"):""),[f,d]=h.useState(n.relays.join(", "));h.useEffect(()=>{e({isMultipleChoice:a,options:i,endsAt:l?Be(l).startOf("minute").unix():void 0,relays:f?f.split(",").map(y=>jn(y.trim())).filter(Boolean):[]})},[a,i,l,f]);const p=()=>{s([...i,""])},m=y=>{i.length>2&&s(i.filter((w,v)=>v!==y))},g=(y,w)=>{const v=[...i];v[y]=w,s(v)};return c.jsxs("div",{className:"space-y-4 rounded-lg border p-3",children:[c.jsxs("div",{className:"space-y-2",children:[i.map((y,w)=>c.jsxs("div",{className:"flex gap-2",children:[c.jsx(Sn,{value:y,onChange:v=>g(w,v.target.value),placeholder:o("Option {{number}}",{number:w+1})}),c.jsx(xe,{type:"button",variant:"ghost-destructive",size:"icon",onClick:()=>m(w),disabled:i.length<=2,children:c.jsx(Dn,{})})]},w)),c.jsx(xe,{type:"button",variant:"outline",onClick:p,children:o("Add Option")})]}),c.jsxs("div",{className:"flex items-center space-x-2",children:[c.jsx(Jt,{htmlFor:"multiple-choice",children:o("Allow multiple choices")}),c.jsx(Lm,{id:"multiple-choice",checked:a,onCheckedChange:r})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx(Jt,{htmlFor:"ends-at",children:o("End Date (optional)")}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(Sn,{id:"ends-at",type:"datetime-local",value:l,onChange:y=>u(y.target.value)}),c.jsx(xe,{type:"button",variant:"ghost-destructive",size:"icon",onClick:()=>u(""),disabled:!l,title:o("Clear end date"),children:c.jsx(s4,{})})]})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx(Jt,{htmlFor:"relay-urls",children:o("Relay URLs (optional, comma-separated)")}),c.jsx(Sn,{id:"relay-urls",value:f,onChange:y=>d(y.target.value),placeholder:"wss://relay1.com, wss://relay2.com"})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx(tp,{variant:"alert",title:o("This is a poll note."),content:o("Unlike regular notes, polls are not widely supported and may not display on other clients.")}),c.jsx(xe,{variant:"ghost-destructive",className:"w-full",onClick:()=>t(!1),children:o("Remove poll")})]})]})}const b0=[{key:"text",icon:Oc,label:"Text Post",shortLabel:"Text"},{key:"picture",icon:Ff,label:"Picture Post",shortLabel:"Picture"},{key:"video",icon:j4,label:"Video Post",shortLabel:"Video"},{key:"shortVideo",icon:I4,label:"Short Video Post",shortLabel:"Short Video"},{key:"poll",icon:m4,label:"Poll",shortLabel:"Poll"},{key:"longForm",icon:l4,label:"Long Form Article",shortLabel:"Long Form"}];function mO({value:n,onChange:e}){const{t}=Ae(),o=h.useMemo(()=>gl(),[]),[a,r]=h.useState(!1),i=b0.find(u=>u.key===n),s=(i==null?void 0:i.icon)??Oc,l=()=>c.jsx("div",{className:"space-y-1.5 p-2",children:b0.map(({key:u,icon:f,label:d})=>{const p=u===n;return c.jsx("div",{className:ne("group relative w-full rounded-xl border px-3.5 py-3 transition-colors duration-200",p?"border-primary/40 bg-primary/5":"clickable border-border/20 hover:border-primary/30 hover:bg-muted/20"),onClick:()=>{e(u),r(!1)},children:c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center",children:c.jsx(f,{className:"size-5"})}),c.jsx("div",{className:"flex-1 font-medium",children:t(d)})]})},u)})});return c.jsx(c.Fragment,{children:o?c.jsxs(Ht,{open:a,onOpenChange:r,children:[c.jsxs(xe,{variant:"outline",size:"sm",className:"gap-1 text-xs",onClick:()=>r(!0),children:[c.jsx(s,{className:"size-3.5"}),t((i==null?void 0:i.shortLabel)??"Text"),c.jsx(_c,{className:"size-3"})]}),c.jsxs($t,{className:"border-t border-border/20 bg-card/90 backdrop-blur-xl",children:[c.jsx("div",{className:"px-4 py-3 text-sm font-semibold",children:t("Post Type")}),c.jsx(l,{})]})]}):c.jsxs(oa,{open:a,onOpenChange:r,children:[c.jsx(aa,{asChild:!0,children:c.jsxs(xe,{variant:"outline",size:"sm",className:"gap-1 text-xs",children:[c.jsx(s,{className:"size-3.5"}),t((i==null?void 0:i.shortLabel)??"Text"),c.jsx(_c,{className:"size-3"})]})}),c.jsx(ra,{align:"end",className:"border-border/20",children:c.jsx(l,{})})]})})}const Cx=h.createContext(void 0),Mm=()=>{const n=h.useContext(Cx);if(!n)throw new Error("useFavoriteRelays must be used within a FavoriteRelaysProvider");return n};function gO({children:n}){const{favoriteRelaysEvent:e,updateFavoriteRelaysEvent:t,pubkey:o,relayList:a,publish:r}=Je(),[i,s]=h.useState([]),[l,u]=h.useState([]),[f,d]=h.useState([]);h.useEffect(()=>{if(!e){const N=[];pe.getRelaySets().forEach(({relayUrls:C})=>{C.forEach(P=>{N.includes(P)||N.push(P)})}),s(N),u([]);return}(async()=>{const N=[],T=[];if(e.tags.forEach(([O,W])=>{if(W){if(O==="relay"){const V=jn(W);V&&!N.includes(V)&&N.push(V)}else if(O==="a"){const[V,j,L]=W.split(":");if(V!==Z.Relaysets.toString()||!o||j!==o||!L)return;T.includes(L)||T.push(L)}}}),s(N),!o||!T.length){d([]);return}const C=await Promise.all(T.map(O=>be.getReplaceableEvent(o,Z.Relaysets,O)));u(C.filter(Boolean));const P=await le.fetchEvents(((a==null?void 0:a.write)??[]).concat(kt()).slice(0,5),{kinds:[Z.Relaysets],authors:[o],"#d":T}),M=new Map;P.forEach(O=>{const W=ir(O);if(!W)return;const V=M.get(W);(!V||V.created_at<O.created_at)&&M.set(W,O)});const U=T.map((O,W)=>{const V=M.get(O);return V||C[W]||null}).filter(Boolean);u(U),await Promise.all(U.map(O=>be.putReplaceableEvent(O)))})()},[e]),h.useEffect(()=>{d(l.map(A=>Lw(A)).filter(Boolean))},[l]);const p=async A=>{const N=A.map(C=>jn(C)).filter(C=>!!C&&!i.includes(C));if(!N.length)return;const T=$a([...i,...N],l);try{const C=await r(T);t(C)}catch(C){wt(C).forEach(M=>{Ue.error(`Failed to add favorite relays: ${M}`,{duration:1e4})})}},m=async A=>{const N=A.map(C=>jn(C)).filter(C=>!!C&&i.includes(C));if(!N.length)return;const T=$a(i.filter(C=>!N.includes(C)),l);try{const C=await r(T);t(C)}catch(C){wt(C).forEach(M=>{Ue.error(`Failed to delete favorite relays: ${M}`,{duration:1e4})})}},g=async(A,N=[])=>{const T=N.map(M=>jn(M)).filter(M=>yl(M)),C=ea(),P=by({id:C,name:A,relayUrls:T});try{const M=await r(P);await be.putReplaceableEvent(M);const U=$a(i,[...l,M]),O=await r(U);t(O)}catch(M){wt(M).forEach(O=>{Ue.error(`Failed to create relay set: ${O}`,{duration:1e4})})}},y=async A=>{const N=$a(i,[...l,...A]);try{const T=await r(N);t(T)}catch(T){wt(T).forEach(P=>{Ue.error(`Failed to add relay sets: ${P}`,{duration:1e4})})}},w=async A=>{const N=l.filter(C=>ir(C)!==A);if(N.length===l.length)return;const T=$a(i,N);try{const C=await r(T);t(C)}catch(C){wt(C).forEach(M=>{Ue.error(`Failed to delete relay set: ${M}`,{duration:1e4})})}},v=async A=>{const N=by(A);try{const T=await r(N);await be.putReplaceableEvent(T),u(C=>C.map(P=>ir(P)===A.id?T:P))}catch(T){wt(T).forEach(P=>{Ue.error(`Failed to update relay set: ${P}`,{duration:1e4})})}},k=async A=>{s(A);const N=$a(A,l);try{const T=await r(N);t(T)}catch(T){wt(T).forEach(P=>{Ue.error(`Failed to reorder favorite relays: ${P}`,{duration:1e4})})}},E=async A=>{d(A);const N=$a(i,A.map(T=>T.aTag));try{const T=await r(N);t(T)}catch(T){wt(T).forEach(P=>{Ue.error(`Failed to reorder relay sets: ${P}`,{duration:1e4})})}};return c.jsx(Cx.Provider,{value:{favoriteRelays:i,addFavoriteRelays:p,deleteFavoriteRelays:m,reorderFavoriteRelays:k,relaySets:f,createRelaySet:g,addRelaySets:y,deleteRelaySet:w,updateRelaySet:v,reorderRelaySets:E},children:n})}function ku({url:n,className:e,classNames:t}){const{relayInfo:o}=wL(n),a=h.useMemo(()=>{if(o!=null&&o.icon)return o.icon;if(!n)return;const i=new URL(n);return`${i.protocol==="wss:"?"https:":"http:"}//${i.host}/favicon.ico`},[n,o]),r=c.jsx(K1,{className:ne("size-5 bg-transparent",t==null?void 0:t.fallback)});return a?c.jsx(sn,{image:{url:a,dim:{width:20,height:20}},className:ne("size-6 rounded-full",e),classNames:{skeleton:ne("size-6 rounded-full",e),errorPlaceholder:"bg-transparent rounded-none shrink-0"},errorPlaceholder:r}):r}function yO({parentEvent:n,openFrom:e,onProtectedSuggestionChange:t,setAdditionalRelayUrls:o}){const{t:a}=Ae(),{isSmallScreen:r}=Ct(),[i,s]=h.useState(!1),{relayUrls:l}=c2(),{relaySets:u,favoriteRelays:f}=Mm(),[d,p]=h.useState([]),m=h.useMemo(()=>!n||!Ui(n)?[]:le.getSeenEventRelayUrls(n.id),[n]),g=h.useMemo(()=>Array.from(new Set(m.concat(l).concat(f))),[m,l,f]),y=h.useMemo(()=>{if(d.length===0)return a("No relays selected");if(d.length===1){const T=d[0];if(T.type==="optimalRelays")return a("Optimal relays");if(T.type==="relay")return Fn(T.url);if(T.type==="relaySet")return T.urls.length>1?a("{{count}} relays",{count:T.urls.length}):Fn(T.urls[0])}const A=d.some(T=>T.type==="optimalRelays"),N=d.reduce((T,C)=>C.type==="relay"?T+1:C.type==="relaySet"?T+C.urls.length:T,0);return A?a("Optimal relays and {{count}} other relays",{count:N}):a("{{count}} relays",{count:N})},[d]);h.useEffect(()=>{if(e&&e.length){p(Array.from(new Set(e)).map(A=>({type:"relay",url:A})));return}if(m&&m.length){p(m.map(A=>({type:"relay",url:A})));return}p([{type:"optimalRelays"}])},[e,m]),h.useEffect(()=>{const A=d.length>0&&d.every(T=>T.type!=="optimalRelays"),N=d.flatMap(T=>T.type==="relay"?[T.url]:T.type==="relaySet"?T.urls:[]);t(A),o(N)},[d]);const w=h.useCallback(A=>{p(A?N=>[...N,{type:"optimalRelays"}]:N=>N.filter(T=>T.type!=="optimalRelays"))},[]),v=h.useCallback((A,N)=>{p(A?T=>[...T,{type:"relay",url:N}]:T=>T.filter(C=>!(C.type==="relay"&&C.url===N)))},[]),k=h.useCallback((A,N,T)=>{p(A?C=>[...C,{type:"relaySet",id:N,urls:T}]:C=>C.filter(P=>!(P.type==="relaySet"&&P.id===N)))},[]),E=h.useMemo(()=>c.jsxs(c.Fragment,{children:[c.jsx(kf,{checked:d.some(A=>A.type==="optimalRelays"),onCheckedChange:w,children:a("Optimal relays")}),u.length>0&&c.jsxs(c.Fragment,{children:[c.jsx(k0,{}),u.filter(({relayUrls:A})=>A.length).map(({id:A,name:N,relayUrls:T})=>c.jsx(kf,{checked:d.some(C=>C.type==="relaySet"&&C.id===A),onCheckedChange:C=>k(C,A,T),children:c.jsxs("div",{className:"truncate",children:[N," (",T.length,")"]})},A))]}),g.length>0&&c.jsxs(c.Fragment,{children:[c.jsx(k0,{}),g.map(A=>c.jsx(kf,{checked:d.some(N=>N.type==="relay"&&N.url===A),onCheckedChange:N=>v(N,A),children:c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(ku,{url:A}),c.jsx("div",{className:"truncate",children:Fn(A)})]})},A))]})]}),[d,u,g]);return r?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(Jt,{className:"shrink-0",children:a("Post to")}),c.jsx(xe,{variant:"outline",className:"min-w-0 max-w-fit justify-start px-2",onClick:()=>s(!0),children:c.jsx("div",{className:"truncate",children:y})})]}),c.jsxs(Ht,{open:i,onOpenChange:s,children:[c.jsx(Wn,{onClick:()=>s(!1)}),c.jsx($t,{className:"max-h-[80vh]",hideOverlay:!0,children:c.jsx("div",{className:"overflow-y-auto overscroll-contain py-2",style:{touchAction:"pan-y"},children:E})})]})]}):c.jsxs(oa,{children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(Jt,{className:"shrink-0",children:a("Post to")}),c.jsx(aa,{asChild:!0,children:c.jsx(xe,{variant:"outline",className:"min-w-0 max-w-fit justify-start px-2",children:c.jsx("div",{className:"truncate",children:y})})})]}),c.jsx(ra,{align:"start",className:"max-h-[50vh] max-w-96",showScrollButtons:!0,children:E})]})}function k0(){const{isSmallScreen:n}=Ct();return n?c.jsx(Zs,{}):c.jsx(ol,{})}function kf({children:n,checked:e,onCheckedChange:t}){const{isSmallScreen:o}=Ct();return o?c.jsxs("div",{onClick:()=>t(!e),className:"clickable flex items-center gap-2 px-4 py-3",children:[c.jsx("div",{className:"flex size-4 shrink-0 items-center justify-center",children:e&&c.jsx(_a,{className:"size-4"})}),n]}):c.jsx(hm,{checked:e,onSelect:a=>a.preventDefault(),onCheckedChange:t,className:"flex items-center gap-2",children:n})}var Dm="Tabs",[wO,GV]=Bn(Dm,[cd]),Px=cd(),[vO,_m]=wO(Dm),Nx=h.forwardRef((n,e)=>{const{__scopeTabs:t,value:o,onValueChange:a,defaultValue:r,orientation:i="horizontal",dir:s,activationMode:l="automatic",...u}=n,f=sd(s),[d,p]=Ua({prop:o,onChange:a,defaultProp:r});return c.jsx(vO,{scope:t,baseId:Ao(),value:d,onValueChange:p,orientation:i,dir:f,activationMode:l,children:c.jsx(vt.div,{dir:f,"data-orientation":i,...u,ref:e})})});Nx.displayName=Dm;var Tx="TabsList",jx=h.forwardRef((n,e)=>{const{__scopeTabs:t,loop:o=!0,...a}=n,r=_m(Tx,t),i=Px(t);return c.jsx(H2,{asChild:!0,...i,orientation:r.orientation,dir:r.dir,loop:o,children:c.jsx(vt.div,{role:"tablist","aria-orientation":r.orientation,...a,ref:e})})});jx.displayName=Tx;var zx="TabsTrigger",Ix=h.forwardRef((n,e)=>{const{__scopeTabs:t,value:o,disabled:a=!1,...r}=n,i=_m(zx,t),s=Px(t),l=Dx(i.baseId,o),u=_x(i.baseId,o),f=o===i.value;return c.jsx($2,{asChild:!0,...s,focusable:!a,active:f,children:c.jsx(vt.button,{type:"button",role:"tab","aria-selected":f,"aria-controls":u,"data-state":f?"active":"inactive","data-disabled":a?"":void 0,disabled:a,id:l,...r,ref:e,onMouseDown:Fe(n.onMouseDown,d=>{!a&&d.button===0&&d.ctrlKey===!1?i.onValueChange(o):d.preventDefault()}),onKeyDown:Fe(n.onKeyDown,d=>{[" ","Enter"].includes(d.key)&&i.onValueChange(o)}),onFocus:Fe(n.onFocus,()=>{const d=i.activationMode!=="manual";!f&&!a&&d&&i.onValueChange(o)})})})});Ix.displayName=zx;var Lx="TabsContent",Mx=h.forwardRef((n,e)=>{const{__scopeTabs:t,value:o,forceMount:a,children:r,...i}=n,s=_m(Lx,t),l=Dx(s.baseId,o),u=_x(s.baseId,o),f=o===s.value,d=h.useRef(f);return h.useEffect(()=>{const p=requestAnimationFrame(()=>d.current=!1);return()=>cancelAnimationFrame(p)},[]),c.jsx(Vn,{present:a||f,children:({present:p})=>c.jsx(vt.div,{"data-state":f?"active":"inactive","data-orientation":s.orientation,role:"tabpanel","aria-labelledby":l,hidden:!p,id:u,tabIndex:0,...i,ref:e,style:{...n.style,animationDuration:d.current?"0s":void 0},children:p&&r})})});Mx.displayName=Lx;function Dx(n,e){return`${n}-trigger-${e}`}function _x(n,e){return`${n}-content-${e}`}var bO=Nx,Fx=jx,Ox=Ix,Ux=Mx;const np=bO,Fm=h.forwardRef(({className:n,...e},t)=>c.jsx(Fx,{ref:t,className:ne("inline-flex h-10 items-center justify-center rounded-full bg-muted/60 p-1 text-muted-foreground backdrop-blur-sm",n),...e}));Fm.displayName=Fx.displayName;const il=h.forwardRef(({className:n,...e},t)=>c.jsx(Ox,{ref:t,className:ne("inline-flex items-center justify-center whitespace-nowrap rounded-full px-4 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",n),...e}));il.displayName=Ox.displayName;const sl=h.forwardRef(({className:n,...e},t)=>c.jsx(Ux,{ref:t,className:ne("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",n),...e}));sl.displayName=Ux.displayName;function Sf(n){const e=Bx(n),t=/(^|\s+|@)(nostr:)?(nevent|naddr|nprofile|npub)1[a-zA-Z0-9]+/g;return e.replace(t,(o,a)=>{let r=o.trim();const i=a||"";r.startsWith("@nostr:")?r=r.slice(7):r.startsWith("@")?r=r.slice(1):r.startsWith("nostr:")&&(r=r.slice(6));try{return Nt.decode(r),`${i}nostr:${r}`}catch{return o}}).trim()}function Bx(n){var e;if(!n)return"";if(typeof n=="string")return n;if(n.type==="text")return n.text||"";if(n.type==="hardBreak")return`
`;if(Array.isArray(n.content))return n.content.map(Bx).join("")+(n.type==="paragraph"?`
`:"");switch(n.type){case"paragraph":return`
`;case"mention":return n.attrs?`nostr:${n.attrs.id}`:"";case"emoji":return kO((e=n.attrs)==null?void 0:e.name);default:return""}}function kO(n){if(!n)return"";if(gn.isCustomEmojiId(n))return`:${n}:`;const e=f1(n,h1);return e?e.emoji??"":""}const dc=["outline-2","outline-offset-4","outline-dashed","outline-border","rounded-md"],SO=hE.create({name:"clipboardAndDropHandler",addOptions(){return{onUploadStart:void 0,onUploadSuccess:void 0,onUploadError:void 0,onUploadEnd:void 0,onUploadProgress:void 0,onProvideCancel:void 0}},addProseMirrorPlugins(){const n=this.options;return[new pE({props:{handleDOMEvents:{dragenter(e,t){return t.preventDefault(),e.dom.classList.add(...dc),!0},dragover(e,t){return t.preventDefault(),e.dom.classList.add(...dc),!0},dragleave(e){return e.dom.classList.remove(...dc),!0}},handleDrop(e,t){var r;t.preventDefault(),t.stopPropagation(),e.dom.classList.remove(...dc);const a=Array.from(((r=t.dataTransfer)==null?void 0:r.files)??[]).filter(i=>i.type.includes("image")||i.type.includes("video")||i.type.includes("audio"));return a.length?(S0(e,a,n),!0):!1},handlePaste(e,t){var a;const o=Array.from(((a=t.clipboardData)==null?void 0:a.items)??[]);for(const r of o)if(r.kind==="file"&&(r.type.includes("image")||r.type.includes("video")||r.type.includes("audio"))){t.preventDefault();const i=r.getAsFile();if(i)return S0(e,[i],n),!0}return!1}}})]}});async function S0(n,e,t){const o=new Map;e.forEach(a=>{var i;const r=new AbortController;o.set(a,r),(i=t.onUploadStart)==null||i.call(t,a,()=>r.abort())});for(const a of e){const r=a.name,i=`[Uploading "${r}"...]`,s=n.state.schema.text(i),l=n.state.schema.nodes.hardBreak.create();let u=n.state.tr.replaceSelectionWith(s);u=u.insert(u.selection.from,l),n.dispatch(u);const f=o.get(a);gr.upload(a,{onProgress:d=>{var p;return(p=t.onUploadProgress)==null?void 0:p.call(t,a,d)},signal:f==null?void 0:f.signal}).then(d=>{var y;(y=t.onUploadEnd)==null||y.call(t,a);const p=n.state.schema.text(d.url),m=n.state.tr;let g=!1;if(n.state.doc.descendants((w,v)=>{if(w.isText&&w.text&&w.text.includes(i)&&!g){const k=w.text.indexOf(i),E=v+k,A=E+i.length;return m.replaceWith(E,A,p),g=!0,!1}return!0}),g)n.dispatch(m);else{const w=n.state.doc.content.size,v=n.state.schema.nodes.paragraph.create(null,n.state.schema.text(d.url)),k=n.state.tr.insert(w,v),E=w+1+d.url.length;k.setSelection(p1.near(k.doc.resolve(E))),n.dispatch(k)}}).catch(d=>{var g;console.error("Upload failed:",d),(g=t.onUploadEnd)==null||g.call(t,a);const p=n.state.tr;let m=!1;throw n.state.doc.descendants((y,w)=>{if(y.isText&&y.text&&y.text.includes(i)&&!m){const v=y.text.indexOf(i),k=w+v,E=k+i.length,A=n.state.schema.text(`[Error uploading "${r}"]`);return p.replaceWith(k,E,A),m=!0,!1}return!0}),m&&n.dispatch(p),d})}}function xO(n){const e=h.useMemo(()=>{var o;const t=n.node.attrs.name;return gn.isCustomEmojiId(t)?gn.getEmojiById(t):(o=f1(t,h1))==null?void 0:o.emoji},[n.node.attrs.name]);return e?typeof e=="string"?c.jsx(jf,{className:"inline",children:c.jsx("span",{children:e})}):c.jsx(jf,{className:"inline",children:c.jsx(yn,{emoji:e,classNames:{img:"mb-1"}})}):null}const AO=mE.extend({selectable:!0,addNodeView(){return m1(xO)}}),EO=h.forwardRef((n,e)=>{var l;const[t,o]=h.useState(0),a=u=>{const f=n.items[u];f&&n.command({name:f}),gn.updateSuggested(f)},r=()=>{o((t+n.items.length-1)%n.items.length)},i=()=>{o((t+1)%n.items.length)},s=()=>{a(t)};return h.useEffect(()=>o(n.items.length?0:-1),[n.items]),h.useImperativeHandle(e,()=>({onKeyDown:u=>u.event.key==="ArrowUp"?(r(),!0):u.event.key==="ArrowDown"?(i(),!0):u.event.key==="Enter"&&t>=0?(s(),!0):!1}),[r,i,s]),(l=n.items)!=null&&l.length?c.jsx(Qo,{className:"pointer-events-auto z-50 flex max-h-80 flex-col overflow-y-auto rounded-lg border bg-background",onWheel:u=>u.stopPropagation(),onTouchMove:u=>u.stopPropagation(),children:c.jsx("div",{className:"p-1",children:n.items.map((u,f)=>c.jsx(RO,{id:u,selectedIndex:t,index:f,selectItem:a,setSelectedIndex:o},u))})}):null});function RO({id:n,selectedIndex:e,index:t,selectItem:o,setSelectedIndex:a}){const r=h.useMemo(()=>gn.getEmojiById(n),[n]);return r?c.jsx("button",{className:ne("w-full cursor-pointer rounded-lg p-1 transition-colors [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",e===t&&"bg-muted text-foreground"),onClick:()=>o(t),onMouseEnter:()=>a(t),children:c.jsxs("div",{className:"pointer-events-none flex items-center gap-2 truncate",children:[c.jsx(yn,{emoji:r,classNames:{img:"size-8 shrink-0 rounded-md",text:"w-8 text-center shrink-0"}}),c.jsxs("span",{className:"truncate",children:[":",r.shortcode,":"]})]})}):null}const CO={items:async({query:n})=>await gn.searchEmojis(n),render:()=>{let n,e=[],t,o;return{onBeforeStart:()=>{t=a=>{if(e&&e[0]&&on.isSuggestionPopupOpen){const r=e[0].popper;r&&!r.contains(a.target)&&e[0].hide()}},document.addEventListener("touchstart",t),o=()=>{e&&e[0]&&e[0].hide()},on.addEventListener("closeSuggestionPopup",o)},onStart:a=>{n=new g1(EO,{props:a,editor:a.editor}),a.clientRect&&(e=y1("body",{getReferenceClientRect:a.clientRect,appendTo:()=>document.body,content:n.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:"bottom-start",hideOnClick:!0,touch:!0,onShow(){on.isSuggestionPopupOpen=!0},onHide(){on.isSuggestionPopupOpen=!1}}))},onUpdate(a){var r;n==null||n.updateProps(a),a.clientRect&&((r=e[0])==null||r.setProps({getReferenceClientRect:a.clientRect}))},onKeyDown(a){var r,i;return a.event.key==="Escape"?((r=e[0])==null||r.hide(),!0):((i=n==null?void 0:n.ref)==null?void 0:i.onKeyDown(a))??!1},onExit(){var a;on.isSuggestionPopupOpen=!1,(a=e[0])==null||a.destroy(),n==null||n.destroy(),document.removeEventListener("touchstart",t),on.removeEventListener("closeSuggestionPopup",o)}}}},PO=new gE("mention"),NO=yE.create({name:"mention",priority:101,addOptions(){return{HTMLAttributes:{},renderText({options:n,node:e}){var t;return`${n.suggestion.char}${(t=e.attrs.label)!==null&&t!==void 0?t:e.attrs.id}`},deleteTriggerWithBackspace:!1,renderHTML({options:n,node:e}){var t;return["span",Hl(this.HTMLAttributes,n.HTMLAttributes),`${n.suggestion.char}${(t=e.attrs.label)!==null&&t!==void 0?t:e.attrs.id}`]},suggestion:{char:"@",pluginKey:PO,command:({editor:n,range:e,props:t})=>{var o,a,r;const i=n.view.state.selection.$to.nodeAfter;((o=i==null?void 0:i.text)===null||o===void 0?void 0:o.startsWith(" "))&&(e.to+=1),n.chain().focus().insertContentAt(e,[{type:this.name,attrs:t},{type:"text",text:" "}]).run(),(r=(a=n.view.dom.ownerDocument.defaultView)===null||a===void 0?void 0:a.getSelection())===null||r===void 0||r.collapseToEnd()},allow:({state:n,range:e})=>{const t=n.doc.resolve(e.from),o=n.schema.nodes[this.name];return!!t.parent.type.contentMatch.matchType(o)}}}},group:"inline",inline:!0,selectable:!1,atom:!0,addAttributes(){return{id:{default:null,parseHTML:n=>n.getAttribute("data-id"),renderHTML:n=>n.id?{"data-id":n.id}:{}},label:{default:null,parseHTML:n=>n.getAttribute("data-label"),renderHTML:n=>n.label?{"data-label":n.label}:{}}}},parseHTML(){return[{tag:`span[data-type="${this.name}"]`}]},renderHTML({node:n,HTMLAttributes:e}){if(this.options.renderLabel!==void 0)return console.warn("renderLabel is deprecated use renderText and renderHTML instead"),["span",Hl({"data-type":this.name},this.options.HTMLAttributes,e),this.options.renderLabel({options:this.options,node:n})];const t={...this.options};t.HTMLAttributes=Hl({"data-type":this.name},this.options.HTMLAttributes,e);const o=this.options.renderHTML({options:t,node:n});return typeof o=="string"?["span",Hl({"data-type":this.name},this.options.HTMLAttributes,e),o]:o},renderText({node:n}){return this.options.renderLabel!==void 0?(console.warn("renderLabel is deprecated use renderText and renderHTML instead"),this.options.renderLabel({options:this.options,node:n})):this.options.renderText({options:this.options,node:n})},addKeyboardShortcuts(){return{Backspace:()=>this.editor.commands.command(({tr:n,state:e})=>{let t=!1;const{selection:o}=e,{empty:a,anchor:r}=o;return a?(e.doc.nodesBetween(r-1,r,(i,s)=>{if(i.type.name===this.name)return t=!0,n.insertText(this.options.deleteTriggerWithBackspace?"":this.options.suggestion.char||"",s,s+i.nodeSize),!1}),t):!1})}},addProseMirrorPlugins(){return[wE({editor:this.editor,...this.options.suggestion})]}}),TO=new RegExp("(?:\\p{Extended_Pictographic}|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Extended_Pictographic}|\\p{Emoji_Presentation}))*","gu");function wd({text:n,emojis:e,className:t,emojiClassName:o,gradient:a=!1}){const r=h.useMemo(()=>!e||e.length===0?[{type:"text",data:n}]:pd(n,[hd]),[n,e]),i=h.useMemo(()=>{const u=new Map;return e==null||e.forEach(f=>{u.set(f.shortcode,f)}),u},[e]),s=u=>{const f=[],d=[...u.matchAll(TO)];if(d.length===0)return[{isEmoji:!1,text:u}];let p=0;for(const m of d){const g=m.index;g>p&&f.push({isEmoji:!1,text:u.slice(p,g)}),f.push({isEmoji:!0,text:m[0]}),p=g+m[0].length}return p<u.length&&f.push({isEmoji:!1,text:u.slice(p)}),f},l=(u,f)=>{if(!a)return u;const d=s(u);return d.length===0?u:d.length===1&&!d[0].isEmoji?c.jsx("span",{className:"pointer-events-none inline-block select-none bg-gradient-to-r from-[hsl(var(--primary))] via-[hsl(var(--accent))] to-[hsl(var(--primary-hover))] bg-clip-text text-transparent animate-gradient",style:{WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:u},f):c.jsx("span",{className:"inline-flex items-center gap-0",children:d.map((p,m)=>p.isEmoji?c.jsx("span",{className:"inline-block",children:p.text},m):c.jsx("span",{className:"pointer-events-none inline-block select-none bg-gradient-to-r from-[hsl(var(--primary))] via-[hsl(var(--accent))] to-[hsl(var(--primary-hover))] bg-clip-text text-transparent animate-gradient",style:{WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:p.text},m))},f)};return c.jsx("span",{className:ne("inline-flex items-center gap-0",t),children:r.map((u,f)=>{if(u.type==="text")return l(u.data,f);if(u.type==="emoji"){const d=u.data.split(":")[1],p=i.get(d);return p?c.jsx("span",{className:"inline-block",children:c.jsx(yn,{emoji:p,classNames:{img:o}})},f):u.data}return null})})}function jO(n){const{profile:e}=Xi(n.node.attrs.id);return c.jsxs(jf,{className:ne("inline text-primary",n.selected?"rounded-sm bg-primary/20":""),children:["@",e?c.jsx(wd,{text:e.username,emojis:e.emojis,emojiClassName:"mb-1"}):fP(n.node.attrs.id)]})}const zO=NO.extend({selectable:!0,addNodeView(){return m1(jO)},addCommands(){var n;return{...(n=this.parent)==null?void 0:n.call(this),createMention:e=>({chain:t})=>(t().focus().insertContent([{type:"mention",attrs:{id:e,label:ju(e)}},{type:"text",text:" "}]).run(),!0)}}});function Vx({pubkey:n,userId:e}){const{t}=Ae(),{followingSet:o}=RS();return h.useMemo(()=>n?o.has(n):e?o.has(dr(e)):!1,[o,n,e])?c.jsx("div",{className:"flex items-center rounded-full bg-muted px-2 py-0.5",title:t("Following"),children:c.jsx(z4,{className:"!size-3"})}):null}const Wx=h.forwardRef((n,e)=>{var l;const[t,o]=h.useState(0),a=u=>{const f=n.items[u];f&&n.command({id:f,label:ju(f)})},r=()=>{o((t+n.items.length-1)%n.items.length)},i=()=>{o((t+1)%n.items.length)},s=()=>{a(t)};return h.useEffect(()=>{o(n.items.length?0:-1)},[n.items]),h.useImperativeHandle(e,()=>({onKeyDown:({event:u})=>u.key==="ArrowUp"?(r(),!0):u.key==="ArrowDown"?(i(),!0):u.key==="Enter"&&t>=0?(s(),!0):!1})),(l=n.items)!=null&&l.length?c.jsx(Qo,{className:"pointer-events-auto z-50 flex max-h-80 flex-col overflow-y-auto rounded-lg border bg-background",onWheel:u=>u.stopPropagation(),onTouchMove:u=>u.stopPropagation(),children:n.items.map((u,f)=>c.jsx("button",{className:ne("m-1 cursor-pointer items-center rounded-md p-2 text-start outline-none transition-colors [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",t===f&&"bg-muted text-foreground"),onClick:()=>a(f),onMouseEnter:()=>o(f),children:c.jsxs("div",{className:"pointer-events-none flex w-80 items-center gap-2 truncate",children:[c.jsx(as,{userId:u}),c.jsxs("div",{className:"w-0 flex-1",children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(kd,{userId:u,className:"truncate font-semibold"}),c.jsx(Vx,{userId:u})]}),c.jsx(km,{pubkey:dr(u)})]})]})},u))}):null});Wx.displayName="MentionList";const IO={items:async({query:n})=>await le.searchNpubsFromLocal(n,20),render:()=>{let n,e=[],t,o;return{onBeforeStart:()=>{t=a=>{if(e&&e[0]&&on.isSuggestionPopupOpen){const r=e[0].popper;r&&!r.contains(a.target)&&e[0].hide()}},document.addEventListener("touchstart",t),o=()=>{e&&e[0]&&e[0].hide()},on.addEventListener("closeSuggestionPopup",o)},onStart:a=>{n=new g1(Wx,{props:a,editor:a.editor}),a.clientRect&&(e=y1("body",{getReferenceClientRect:a.clientRect,appendTo:()=>document.body,content:n.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:"bottom-start",hideOnClick:!0,touch:!0,onShow(){on.isSuggestionPopupOpen=!0},onHide(){on.isSuggestionPopupOpen=!1}}))},onUpdate(a){var r;n==null||n.updateProps(a),a.clientRect&&((r=e[0])==null||r.setProps({getReferenceClientRect:a.clientRect}))},onKeyDown(a){var r,i;return a.event.key==="Escape"?((r=e[0])==null||r.hide(),!0):((i=n==null?void 0:n.ref)==null?void 0:i.onKeyDown(a))??!1},onExit(){var a;on.isSuggestionPopupOpen=!1,(a=e[0])==null||a.destroy(),n==null||n.destroy(),document.removeEventListener("touchstart",t),on.removeEventListener("closeSuggestionPopup",o)}}}},qx=h.forwardRef(({className:n,...e},t)=>c.jsx("div",{ref:t,className:ne("rounded-2xl glass-card",n),...e}));qx.displayName="Card";const LO=h.forwardRef(({className:n,...e},t)=>c.jsx("div",{ref:t,className:ne("flex flex-col space-y-1.5 p-6",n),...e}));LO.displayName="CardHeader";const MO=h.forwardRef(({className:n,...e},t)=>c.jsx("div",{ref:t,className:ne("font-semibold leading-none tracking-tight",n),...e}));MO.displayName="CardTitle";const DO=h.forwardRef(({className:n,...e},t)=>c.jsx("div",{ref:t,className:ne("text-sm text-muted-foreground",n),...e}));DO.displayName="CardDescription";const _O=h.forwardRef(({className:n,...e},t)=>c.jsx("div",{ref:t,className:ne("p-6 pt-0",n),...e}));_O.displayName="CardContent";const FO=h.forwardRef(({className:n,...e},t)=>c.jsx("div",{ref:t,className:ne("flex items-center p-6 pt-0",n),...e}));FO.displayName="CardFooter";function OO({content:n,className:e}){const{content:t,emojiTags:o}=h.useMemo(()=>yr(n),[n]);return c.jsx(qx,{className:ne("p-3",e),children:c.jsx(Ho,{event:vp({content:t,tags:o}),className:"pointer-events-none h-full",mustLoadMedia:!0})})}const Tc=h.forwardRef(({text:n="",setText:e,defaultContent:t,parentStuff:o,onSubmit:a,className:r,onUploadStart:i,onUploadProgress:s,onUploadEnd:l,placeholder:u,postKind:f="text"},d)=>{const{t:p}=Ae(),[m,g]=h.useState("edit"),y=u??(()=>{switch(f){case"picture":return p("Add a caption...");case"video":return p("Add a description...");case"shortVideo":return p("Add a caption...");case"poll":return p("Ask a question...");case"longForm":return p("Write your article...");default:return p("Write something...")+" ("+p("Paste or drop media files to upload")+")"}})(),w=vE({extensions:[bE,kE,SE,xE,AE,EE.configure({placeholder:y}),AO.configure({suggestion:CO}),zO.configure({suggestion:IO}),SO.configure({onUploadStart:(v,k)=>{i==null||i(v,k)},onUploadEnd:v=>l==null?void 0:l(v),onUploadProgress:(v,k)=>s==null?void 0:s(v,k)})],editorProps:{attributes:{class:ne("border rounded-lg p-3 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",r)},handleKeyDown:(v,k)=>(k.ctrlKey||k.metaKey)&&k.key==="Enter"?(k.preventDefault(),a==null||a(),!0):!1,clipboardTextSerializer(v){return Sf(v.toJSON())}},content:Ns.getPostContentCache({defaultContent:t,parentStuff:o}),onUpdate(v){e(Sf(v.editor.getJSON())),Ns.setPostContentCache({defaultContent:t,parentStuff:o},v.editor.getJSON())},onCreate(v){e(Sf(v.editor.getJSON()))}});return h.useImperativeHandle(d,()=>({appendText:(v,k=!1)=>{if(w){let E=w.chain().focus().command(({tr:A,dispatch:N})=>{if(N){const T=A.doc.content.size,C=p1.create(A.doc,T);A.setSelection(C),N(A)}return!0}).insertContent(v);k&&(E=E.setHardBreak()),E.run()}},insertText:v=>{w&&w.chain().focus().insertContent(v).run()},insertEmoji:v=>{if(w)if(typeof v=="string")w.chain().insertContent(v).run();else{const k=w.schema.nodes.emoji.create({name:gn.getEmojiId(v)});w.chain().insertContent(k).run()}},insertImageUrl:v=>{w&&w.chain().focus().insertContent(v).setHardBreak().run()}})),w?c.jsxs("div",{className:"space-y-2",children:[c.jsx(np,{defaultValue:"edit",value:m,onValueChange:v=>g(v),children:c.jsxs(Fm,{children:[c.jsx(il,{value:"edit",children:p("Edit")}),c.jsx(il,{value:"preview",children:p("Preview")})]})}),c.jsxs(np,{value:m,onValueChange:v=>g(v),children:[c.jsx(sl,{value:"edit",className:"mt-0",children:c.jsx(RE,{className:"tiptap",editor:w})}),c.jsx(sl,{value:"preview",className:"mt-0",onClick:()=>{g("edit"),w.commands.focus()},children:c.jsx(OO,{content:n,className:r})})]})]}):null});Tc.displayName="PostTextarea";function x0({children:n,onUploadSuccess:e,onUploadStart:t,onUploadEnd:o,onProgress:a,className:r,accept:i="image/*"}){const s=h.useRef(null),l=async f=>{if(!f.target.files)return;const d=new Map;for(const p of f.target.files){const m=new AbortController;d.set(p,m),t==null||t(p,()=>m.abort())}for(const p of f.target.files)try{const m=d.get(p),g=await gr.upload(p,{onProgress:y=>a==null?void 0:a(p,y),signal:m==null?void 0:m.signal});e(g),o==null||o(p)}catch(m){console.error("Error uploading file",m);const g=m.message;g!==$r&&Ue.error(`Failed to upload file: ${g}`),s.current&&(s.current.value=""),o==null||o(p)}},u=()=>{s.current&&(s.current.value="",s.current.click())};return c.jsxs("div",{className:r,children:[c.jsx("div",{onClick:u,children:n}),c.jsx("input",{type:"file",ref:s,style:{display:"none"},onChange:l,accept:i,multiple:!0})]})}function UO({defaultContent:n="",parentStuff:e,close:t,openFrom:o,highlightedText:a}){const{t:r}=Ae(),{pubkey:i,publish:s,checkLogin:l}=Je(),[u,f]=h.useState(""),d=h.useRef(null),[p,m]=h.useState(!1),[g,y]=h.useState([]),w=h.useMemo(()=>e&&typeof e!="string"?e:void 0,[e]),[v,k]=h.useState(()=>window.localStorage.getItem(me.ADD_CLIENT_TAG)!=="false"),[E,A]=h.useState([]),[N,T]=h.useState(!1),[C,P]=h.useState(!1),[M,U]=h.useState(!1),[O,W]=h.useState([]),[V,j]=h.useState({isMultipleChoice:!1,options:["",""],endsAt:void 0,relays:[]}),[L,I]=h.useState(()=>{if(window.localStorage.getItem(me.POW_ENABLED)==="false")return 0;const Pe=window.localStorage.getItem(me.POW_POST_DIFFICULTY);return Pe?parseInt(Pe,10):16}),[b,S]=h.useState("text"),[z,F]=h.useState(""),[D,q]=h.useState(""),[J,ae]=h.useState(""),[ge,ie]=h.useState([]),de=h.useRef(!1),he=h.useCallback(ye=>{ye&&!de.current&&U(!0)},[]),we=h.useCallback(ye=>{ye||(de.current=!0),U(ye)},[]),ke=h.useRef(!0),Ee=h.useMemo(()=>!!i&&(b==="longForm"?!!z.trim()&&!!D.trim():!!u||!!a)&&!p&&!g.length&&(!(b==="poll"||C)||V.options.filter(ye=>!!ye.trim()).length>=2)&&(!M||O.length>0),[i,u,a,p,g,C,V,M,O,b,z,D,J]);h.useEffect(()=>{if(ke.current){ke.current=!1;const ye=Ns.getPostSettingsCache({defaultContent:n,parentStuff:e});ye&&(T(ye.isNsfw??!1),P(ye.isPoll??!1),j(ye.pollCreateData??{isMultipleChoice:!1,options:["",""],endsAt:void 0,relays:[]}),k(ye.addClientTag??localStorage.getItem(me.ADD_CLIENT_TAG)!=="false"));return}Ns.setPostSettingsCache({defaultContent:n,parentStuff:e},{isNsfw:N,isPoll:C,pollCreateData:V,addClientTag:v})},[n,e,N,C,V,v]);const G=h.useRef(!1),te=async ye=>{ye==null||ye.stopPropagation(),l(async()=>{if(!(!Ee||!i||G.current)){G.current=!0,m(!0);try{const Te=(ge.length>0?ge.join(`
`)+`
`:"")+u,qe=await BO({parentStuff:e,highlightedText:a,text:Te,mentions:E,isPoll:C,pollCreateData:V,pubkey:i,addClientTag:v,isProtectedEvent:M,isNsfw:N,postKind:b,articleTitle:z,articleContent:D,articleTags:J}),ct=[...O];e&&typeof e=="string"&&ct.push(...kt());const Ge=await s(qe,{specifiedRelayUrls:M?O:void 0,additionalRelayUrls:C?V.relays:ct,minPow:L});Ns.clearPostCache({defaultContent:n,parentStuff:e}),vT(qe),el.addRepliesToThread([Ge]),Ue.success(r("Post successful"),{duration:2e3}),Un("success"),t()}catch(Pe){wt(Pe).forEach(qe=>{Ue.error(`${r("Failed to post")}: ${qe}`,{duration:1e4})});return}finally{m(!1),G.current=!1}}})},Y=()=>{e||P(ye=>!ye)},se=(ye,Pe)=>{y(Te=>[...Te,{file:ye,progress:0,cancel:Pe}])},fe=(ye,Pe)=>{y(Te=>Te.map(qe=>qe.file===ye?{...qe,progress:Pe}:qe))},Se=ye=>{y(Pe=>Pe.filter(Te=>Te.file!==ye))},Oe=({url:ye})=>{ie(Pe=>[...Pe,ye])},Le=ye=>{ie(Pe=>Pe.filter((Te,qe)=>qe!==ye))};return c.jsxs("div",{className:"space-y-2",children:[w&&c.jsx(Qo,{className:"flex max-h-48 flex-col overflow-y-auto rounded-lg border bg-muted/40",children:c.jsx("div",{className:"pointer-events-none p-2 sm:p-3",children:a?c.jsxs("div",{className:"flex gap-4",children:[c.jsx("div",{className:"my-1 w-1 flex-shrink-0 rounded-md bg-primary/60"}),c.jsx("div",{className:"whitespace-pre-line italic",children:a})]}):c.jsx(kA,{size:"small",event:w,hideParentNotePreview:!0})})}),!e&&c.jsx("div",{className:"flex justify-end",children:c.jsx(mO,{value:b,onChange:S})}),b==="longForm"&&c.jsxs("div",{className:"space-y-2",children:[c.jsx("input",{type:"text",placeholder:r("Title..."),value:z,onChange:ye=>F(ye.target.value),className:"w-full rounded-lg border border-input bg-background px-3 py-2 text-base font-semibold transition-all duration-200 placeholder:text-muted-foreground focus-visible:border-ring focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30"}),c.jsx("textarea",{rows:8,placeholder:r("Type your article..."),value:D,onChange:ye=>q(ye.target.value),className:"w-full resize-none rounded-lg border border-input bg-background px-3 py-2 text-sm transition-all duration-200 placeholder:text-muted-foreground focus-visible:border-ring focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30"}),c.jsxs("div",{className:"space-y-1",children:[c.jsx("input",{type:"text",placeholder:r("Tags (e.g. #nostr #btc #note)..."),value:J,onChange:ye=>ae(ye.target.value),className:"w-full rounded-lg border border-input bg-background px-3 py-2 text-sm transition-all duration-200 placeholder:text-muted-foreground focus-visible:border-ring focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30"}),J.trim()&&c.jsx("div",{className:"flex flex-wrap gap-1.5 px-1",children:J.trim().split(/\s+/).map((ye,Pe)=>{const Te=ye.replace(/^#/,"");return Te?c.jsxs("span",{className:"rounded-full bg-primary/10 px-2.5 py-0.5 text-xs font-medium text-primary",children:["#",Te]},Pe):null})})]})]}),b!=="longForm"&&c.jsxs(c.Fragment,{children:[(b==="picture"||b==="video"||b==="shortVideo")&&c.jsxs("div",{className:"space-y-2",children:[ge.map((ye,Pe)=>c.jsxs("div",{className:"group relative overflow-hidden rounded-xl border bg-muted/40",children:[b==="picture"?c.jsx("img",{src:ye,alt:"",className:"h-auto max-h-[300px] w-full object-contain"}):c.jsx("video",{src:ye,controls:!0,className:"h-auto max-h-[300px] w-full object-contain"}),c.jsx("button",{type:"button",onClick:()=>Le(Pe),className:"absolute right-2 top-2 rounded-full bg-black/60 p-1 text-white opacity-0 transition-opacity group-hover:opacity-100 hover:bg-black/80",children:c.jsx(Dn,{className:"size-4"})})]},Pe)),c.jsx(x0,{onUploadSuccess:Oe,onUploadStart:se,onUploadEnd:Se,onProgress:fe,accept:b==="picture"?"image/*":"video/*",children:c.jsxs("div",{className:"flex w-full flex-col items-center justify-center rounded-xl border-2 border-dashed border-muted-foreground/30 bg-muted/20 px-4 py-6 transition-colors hover:border-primary/40 hover:bg-muted/40",children:[c.jsxs("div",{className:"flex cursor-pointer items-center gap-2 text-muted-foreground hover:text-primary",children:[c.jsx(Ff,{className:"size-5"}),c.jsx("span",{className:"text-sm font-medium",children:r(b==="picture"?"Tap to add a picture":b==="video"?"Tap to add a video":"Tap to add a short video")})]}),c.jsx("span",{className:"mt-1 text-xs text-muted-foreground/60",children:b==="picture"?"JPG, PNG, GIF, WEBP":"MP4, WEBM, MOV"})]})})]}),b==="picture"&&c.jsx(Tc,{ref:d,text:u,setText:f,defaultContent:n,parentStuff:e,onSubmit:()=>te(),className:"min-h-32",postKind:b,onUploadStart:se,onUploadProgress:fe,onUploadEnd:Se,placeholder:a?r("Write your thoughts about this highlight..."):void 0}),(b==="video"||b==="shortVideo")&&c.jsx(Tc,{ref:d,text:u,setText:f,defaultContent:n,parentStuff:e,onSubmit:()=>te(),className:"min-h-32",postKind:b,onUploadStart:se,onUploadProgress:fe,onUploadEnd:Se,placeholder:a?r("Write your thoughts about this highlight..."):void 0}),b!=="picture"&&b!=="video"&&b!=="shortVideo"&&c.jsx(Tc,{ref:d,text:u,setText:f,defaultContent:n,parentStuff:e,onSubmit:()=>te(),className:b==="poll"||C?"min-h-20":"min-h-52",postKind:b,onUploadStart:se,onUploadProgress:fe,onUploadEnd:Se,placeholder:a?r("Write your thoughts about this highlight..."):void 0}),(b==="poll"||C)&&c.jsx(pO,{pollCreateData:V,setPollCreateData:j,setIsPoll:P}),g.length>0&&g.map(({file:ye,progress:Pe,cancel:Te},qe)=>c.jsxs("div",{className:"mt-2 flex items-end gap-2",children:[c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsx("div",{className:"mb-1 truncate text-xs text-muted-foreground",children:ye.name??r("Uploading...")}),c.jsx("div",{className:"h-0.5 w-full overflow-hidden rounded-full bg-muted",children:c.jsx("div",{className:"h-full bg-primary transition-[width] duration-200 ease-out",style:{width:`${Pe}%`}})})]}),c.jsx("button",{type:"button",onClick:()=>{Te==null||Te(),Se(ye)},className:"text-muted-foreground hover:text-foreground",title:r("Cancel"),children:c.jsx(Dn,{className:"h-4 w-4"})})]},`${ye.name}-${qe}`)),!C&&c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx("div",{className:"min-w-0",children:c.jsx(yO,{onProtectedSuggestionChange:he,setAdditionalRelayUrls:W,parentEvent:w,openFrom:o})}),c.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[c.jsx(Lm,{id:"protected-event",checked:M,onCheckedChange:we}),c.jsx(Jt,{htmlFor:"protected-event",className:"cursor-pointer text-xs text-muted-foreground",children:r("Protected")}),c.jsxs(jm,{children:[c.jsx(eO,{asChild:!0,children:c.jsx("button",{type:"button",className:"flex shrink-0",children:c.jsx(r4,{className:"!size-3.5 text-muted-foreground"})})}),c.jsx(zm,{className:"text-sm",children:r("Protected event hint")})]})]})]})]}),c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(x0,{onUploadSuccess:({url:ye})=>{var Pe;(Pe=d.current)==null||Pe.appendText(ye,!0)},onUploadStart:se,onUploadEnd:Se,onProgress:fe,accept:"image/*,video/*,audio/*",children:c.jsx(xe,{variant:"ghost",size:"icon",type:"button",children:c.jsx(Ff,{className:"size-5"})})}),!gl()&&c.jsx(lO,{onEmojiClick:ye=>{var Pe;ye&&((Pe=d.current)==null||Pe.insertEmoji(ye))},children:c.jsx(xe,{variant:"ghost",size:"icon",type:"button",children:c.jsx(G1,{className:"size-5"})})}),!e&&c.jsx(xe,{variant:"ghost",size:"icon",title:r("Create Poll"),className:ne("text-muted-foreground",C&&"text-primary"),onClick:Y,children:c.jsx(g4,{className:"size-5"})}),c.jsx(xe,{variant:"ghost",size:"icon",title:r("Client Tag"),className:v?"text-primary":"text-muted-foreground",onClick:()=>{const ye=!v;k(ye),window.localStorage.setItem(me.ADD_CLIENT_TAG,ye.toString())},children:c.jsx(T4,{className:"size-5"})}),c.jsx(xe,{variant:"ghost",size:"icon",title:r("Proof of Work"),className:L>0?"text-primary":"text-muted-foreground",onClick:()=>{const ye=L>0?0:(()=>{const Pe=window.localStorage.getItem(me.POW_POST_DIFFICULTY);return Pe?parseInt(Pe,10):16})();I(ye),window.localStorage.setItem(me.POW_ENABLED,(ye>0).toString())},children:c.jsx($1,{className:"size-5"})}),c.jsx(xe,{variant:"ghost",size:"icon",title:r("NSFW"),className:N?"text-primary":"text-muted-foreground",onClick:()=>T(!N),children:c.jsx(n4,{className:"size-5"})})]}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(cO,{content:u,parentEvent:w,mentions:E,setMentions:A}),c.jsxs("div",{className:"flex items-center gap-2 max-sm:hidden",children:[c.jsx(xe,{variant:"secondary",onClick:ye=>{ye.stopPropagation(),t()},children:r("Cancel")}),c.jsxs(xe,{type:"submit",disabled:!Ee,onClick:te,children:[p&&c.jsx(Ei,{className:"animate-spin"}),r(e?a?"Publish Highlight":"Reply":"Post")]})]})]})]}),c.jsxs("div",{className:"flex items-center justify-around gap-2 sm:hidden",children:[c.jsx(xe,{className:"w-full",variant:"secondary",onClick:ye=>{ye.stopPropagation(),t()},children:r("Cancel")}),c.jsxs(xe,{className:"w-full",type:"submit",disabled:!Ee,onClick:te,children:[p&&c.jsx(Ei,{className:"animate-spin"}),r(e?"Reply":"Post")]})]})]})}async function BO({parentStuff:n,text:e,mentions:t,isPoll:o,pollCreateData:a,pubkey:r,addClientTag:i,isProtectedEvent:s,isNsfw:l,highlightedText:u,postKind:f="text",articleTitle:d,articleContent:p,articleTags:m}){const{parentEvent:g,externalContent:y}=typeof n=="string"?{parentEvent:void 0,externalContent:n}:{parentEvent:n,externalContent:void 0};return u&&g?xT(u,e,g,t,{addClientTag:i,protectedEvent:s,isNsfw:l}):n&&(y||(g==null?void 0:g.kind)!==Z.ShortTextNote)?await ST(e,n,t,{addClientTag:i,protectedEvent:s,isNsfw:l}):f==="poll"||o?await RT(r,e,t,a,{addClientTag:i,isNsfw:l}):f==="longForm"?await CT(p??"",d??"",m??"",t,{addClientTag:i,protectedEvent:s,isNsfw:l}):await kT(e,t,{parentEvent:g,addClientTag:i,protectedEvent:s,isNsfw:l,postKind:f})}function A0({parentStuff:n}){const{t:e}=Ae();return n?c.jsxs("div",{className:"flex w-full items-center gap-2",children:[c.jsx("div",{className:"shrink-0",children:e("Reply to")}),typeof n=="string"&&c.jsx("div",{className:"truncate text-primary",children:n})]}):e("New Note")}function tr({defaultContent:n="",parentStuff:e,open:t,setOpen:o,openFrom:a,highlightedText:r}){const{t:i}=Ae(),{isSmallScreen:s}=Ct(),l=h.useMemo(()=>c.jsx(UO,{defaultContent:n,parentStuff:e,close:()=>o(!1),openFrom:a,highlightedText:r}),[r]);return s?c.jsx(IF,{open:t,onOpenChange:o,children:c.jsx(ox,{className:"h-full w-full border-none p-0",side:"bottom",hideClose:!0,onEscapeKeyDown:u=>{on.isSuggestionPopupOpen&&(u.preventDefault(),on.closeSuggestionPopup())},children:c.jsx(Qo,{className:"h-full max-h-screen px-4",children:c.jsxs("div",{className:"space-y-4 px-2 py-6",children:[c.jsxs(ax,{children:[c.jsx(rx,{className:"text-start",children:r?i("Create Highlight"):c.jsx(A0,{parentStuff:e})}),c.jsx(ix,{className:"hidden"})]}),l]})})})}):c.jsx(na,{open:t,onOpenChange:o,children:c.jsx(jo,{className:"max-w-2xl p-0",withoutClose:!0,onEscapeKeyDown:u=>{on.isSuggestionPopupOpen&&(u.preventDefault(),on.closeSuggestionPopup())},children:c.jsx(Qo,{className:"h-full max-h-screen px-4",children:c.jsxs("div",{className:"space-y-4 px-2 py-6",children:[c.jsxs(Ba,{children:[c.jsx(Va,{children:r?i("Create Highlight"):c.jsx(A0,{parentStuff:e})}),c.jsx(Cr,{className:"hidden"})]}),l]})})})})}const E0=new mn({max:500,ttl:1e3*60*60*24}),si=class si{constructor(){H(this,"webMetadataDataLoader",new Bo(async e=>await Promise.all(e.map(async t=>{var a,r,i,s,l;const o=E0.get(t);if(o)return o;try{const f=await(await fetch(t)).text(),p=new DOMParser().parseFromString(f,"text/html"),m=((a=p.querySelector('meta[property="og:title"]'))==null?void 0:a.getAttribute("content"))||((r=p.querySelector("title"))==null?void 0:r.textContent),g=((i=p.querySelector('meta[property="og:description"]'))==null?void 0:i.getAttribute("content"))||((s=p.querySelector('meta[name="description"]'))==null?void 0:s.content),y=(l=p.querySelector('meta[property="og:image"]'))==null?void 0:l.content,w={title:m,description:g,image:y};return E0.set(t,w),w}catch{return{}}})),{maxBatchSize:1}));return si.instance||(si.instance=this),si.instance}async fetchWebMetadata(e){return await this.webMetadataDataLoader.load(e)}};H(si,"instance");let op=si;const VO=new op;function WO(n){const{allowInsecureConnection:e}=Wa(),[t,o]=h.useState({});return h.useEffect(()=>{!e&&Ar(n)||VO.fetchWebMetadata(n).then(a=>o(a))},[n,e]),t}function qO({url:n,className:e,mustLoad:t}){const{autoLoadMedia:o}=Qt(),{allowInsecureConnection:a}=Wa(),{isSmallScreen:r}=Ct(),{title:i,description:s,image:l}=WO(n),u=h.useMemo(()=>{try{return new URL(n).hostname}catch{return""}},[n]);return!a&&Ar(n)||!o&&!t?null:i?r&&l?c.jsxs("div",{className:"mt-2 overflow-hidden rounded-xl border",onClick:f=>{f.stopPropagation(),window.open(n,"_blank")},children:[c.jsx(sn,{image:{url:l},className:"h-44 w-full",classNames:{wrapper:"rounded-none"},hideIfError:!0}),c.jsxs("div",{className:"w-full bg-muted p-2",children:[c.jsx("div",{className:"text-xs text-muted-foreground",children:u}),c.jsx("div",{className:"line-clamp-1 font-semibold",children:i})]})]}):c.jsxs("div",{className:ne("clickable flex w-full overflow-hidden rounded-xl border p-0",e),onClick:f=>{f.stopPropagation(),window.open(n,"_blank")},children:[l&&c.jsx(sn,{image:{url:l},className:"aspect-[4/3] h-44 bg-foreground xl:aspect-video",classNames:{wrapper:"rounded-none border-r"},hideIfError:!0}),c.jsxs("div",{className:"w-0 flex-1 p-2",children:[c.jsx("div",{className:"text-xs text-muted-foreground",children:u}),c.jsx("div",{className:"line-clamp-2 font-semibold",children:i}),c.jsx("div",{className:"line-clamp-5 text-xs text-muted-foreground",children:s})]})]}):t?c.jsx(ao,{url:n,justOpenLink:!0}):null}function Ho({event:n,content:e,className:t,mustLoadMedia:o,enableHighlight:a=!1,displayMode:r,disableEmojiOnly:i=!1}){const s=h.useRef(null),[l,u]=h.useState(!1),[f,d]=h.useState(""),p=ts(n==null?void 0:n.id),m=(p==null?void 0:p.content)??(n==null?void 0:n.content)??e,g=h.useMemo(()=>m?C_(m):!1,[m]),{nodes:y,allImages:w,lastNormalUrl:v,emojiInfos:k}=h.useMemo(()=>{if(!m||g)return{};const C=pd(m,[PS,m_,g_,Sm,xm,y_,NS,CS,hd]),P=n?$c(n):[],M=C.map(V=>{if(V.type==="image"){const j=P.find(I=>I.url===V.data);if(j)return j;const L=gr.getImetaTagByUrl(V.data);return L?Pw(L,n==null?void 0:n.pubkey):{url:V.data,pubkey:n==null?void 0:n.pubkey}}return V.type==="images"?(Array.isArray(V.data)?V.data:[V.data]).map(L=>P.find(b=>b.url===L)??{url:L,pubkey:n==null?void 0:n.pubkey}):null}).filter(Boolean).flat(),U=Ko(n==null?void 0:n.tags),O=C.findLast(V=>V.type==="url"),W=typeof(O==null?void 0:O.data)=="string"?O.data:void 0;return{nodes:C,allImages:M,emojiInfos:U,lastNormalUrl:W}},[n,m,g]),E=h.useMemo(()=>{if(i||!y||y.length===0)return!1;const T=y.filter(P=>!(P.type==="text"&&/^\s*$/.test(P.data)));let C=0;for(const P of T)if(P.type==="emoji")C++;else if(P.type==="text"){const M=P.data.match(new RegExp(Bf.source,"gu"));if(!M||P.data.replace(new RegExp(Bf.source,"gu"),"").trim()!=="")return!1;C+=M.length}else return!1;return C>0&&C<=3},[y,i]),A=T=>{d(T),u(!0)};if(!m)return null;if(g){const T=r==="textOnlyMode"?m.replace(/!\[.*?\]\(.*?\)/g,"").replace(/^[^\S\n]*https?:\/\/(www\.)?youtu(be\.com|\.be)\//gim,"").replace(/^[^\S\n]*https?:\/\/(x\.com|twitter\.com)\//gim,""):m;return c.jsxs(c.Fragment,{children:[c.jsx("div",{ref:s,className:ne("text-wrap break-words",t),children:c.jsx(sF,{content:T,event:n})}),a&&c.jsx(Ss,{onHighlight:A,containerRef:s}),a&&c.jsx(tr,{highlightedText:f,parentStuff:n,open:l,setOpen:u})]})}if(!y||y.length===0)return null;let N=0;if(r==="textOnlyMode")return c.jsxs(c.Fragment,{children:[c.jsx("div",{ref:s,className:ne("whitespace-pre-wrap text-wrap break-words",t),children:y.map((T,C)=>{if(T.type==="text")return T.data;if(T.type==="image"||T.type==="images")return N+=Array.isArray(T.data)?T.data.length:1,null;if(T.type==="media"||T.type==="url"||T.type==="invoice"||T.type==="websocket-url"||T.type==="event")return null;if(T.type==="mention")return c.jsx(Ps,{userId:T.data.split(":")[1]},C);if(T.type==="hashtag")return c.jsx(wi,{hashtag:T.data},C);if(T.type==="emoji"){const P=T.data.split(":")[1],M=k.find(U=>U.shortcode===P)||gn.getEmojiById(P);return M?c.jsx(yn,{classNames:{img:"mb-1"},emoji:M},C):T.data}return T.type==="youtube",null})}),a&&c.jsx(Ss,{onHighlight:A,containerRef:s}),a&&c.jsx(tr,{highlightedText:f,parentStuff:n,open:l,setOpen:u})]});if(r==="imageMode"){const T=y.filter(P=>P.type==="image"||P.type==="images"||P.type==="media"||P.type==="youtube"||P.type==="x-post"),C=y.filter(P=>P.type!=="image"&&P.type!=="images"&&P.type!=="media"&&P.type!=="youtube"&&P.type!=="x-post"&&P.type!=="url");return c.jsxs(c.Fragment,{children:[T.length>0&&c.jsx("div",{className:"mb-3",children:T.map((P,M)=>{if(P.type==="image"||P.type==="images"){const O=(Array.isArray(P.data)?P.data:[P.data]).map(W=>(n?$c(n):[]).find(j=>j.url===W)??{url:W,pubkey:n==null?void 0:n.pubkey});return c.jsx(Yh,{className:"overflow-hidden rounded-lg",images:O,start:0,end:O.length,mustLoad:o},M)}return P.type==="media"?c.jsx(Jh,{className:"mt-2",src:P.data,mustLoad:o},M):P.type==="youtube"?c.jsx(Gh,{url:P.data,className:"mt-2",mustLoad:o},M):P.type==="x-post"?c.jsx(Kh,{url:P.data,className:"mt-2",mustLoad:o},M):null})}),c.jsx("div",{ref:s,className:ne("whitespace-pre-wrap text-wrap break-words",t),children:C.map((P,M)=>{if(P.type==="text")return P.data;if(P.type==="url")return c.jsx(ao,{url:P.data},M);if(P.type==="invoice")return c.jsx(qh,{invoice:P.data,className:"mt-2"},M);if(P.type==="websocket-url")return c.jsx(sp,{url:P.data},M);if(P.type==="event"){const U=P.data.split(":")[1];return c.jsx(xs,{noteId:U,className:"mt-2"},M)}if(P.type==="bech32-event")return c.jsx(xs,{noteId:P.data,className:"mt-2"},M);if(P.type==="group-link"){const U=P.data.match(/nostr:group:([a-z0-9-_]+)@([^\s]+)/i);if(U){const[,O,W]=U;return c.jsx(p0,{groupId:O,relayUrl:W},M)}}if(P.type==="mention")return c.jsx(Ps,{userId:P.data.split(":")[1]},M);if(P.type==="hashtag")return c.jsx(wi,{hashtag:P.data},M);if(P.type==="emoji"){const U=P.data.split(":")[1],O=k.find(W=>W.shortcode===U);return O?c.jsx(yn,{classNames:{img:"mb-1"},emoji:O},M):P.data}return null})}),a&&c.jsx(Ss,{onHighlight:A,containerRef:s}),a&&c.jsx(tr,{highlightedText:f,parentStuff:n,open:l,setOpen:u})]})}return c.jsxs(c.Fragment,{children:[c.jsxs("div",{ref:s,className:ne("whitespace-pre-wrap text-wrap break-words",E&&"flex items-end gap-1",t),children:[y.map((T,C)=>{if(T.type==="text")return E?c.jsx("span",{className:"text-7xl leading-none",children:T.data},C):T.data;if(T.type==="image"||T.type==="images"){const P=N,M=N+(Array.isArray(T.data)?T.data.length:1);return N=M,c.jsx(Yh,{className:"mt-2",images:w,start:P,end:M,mustLoad:o},C)}if(T.type==="media")return c.jsx(Jh,{className:"mt-2",src:T.data,mustLoad:o},C);if(T.type==="url")return c.jsx(ao,{url:T.data},C);if(T.type==="invoice")return c.jsx(qh,{invoice:T.data,className:"mt-2"},C);if(T.type==="websocket-url")return c.jsx(sp,{url:T.data},C);if(T.type==="event"){const P=T.data.split(":")[1];return c.jsx(xs,{noteId:P,className:"mt-2"},C)}if(T.type==="bech32-event")return c.jsx(xs,{noteId:T.data,className:"mt-2"},C);if(T.type==="group-link"){const P=T.data.match(/nostr:group:([a-z0-9-_]+)@([^\s]+)/i);if(P){const[,M,U]=P;return c.jsx(p0,{groupId:M,relayUrl:U},C)}}if(T.type==="mention")return c.jsx(Ps,{userId:T.data.split(":")[1]},C);if(T.type==="hashtag")return c.jsx(wi,{hashtag:T.data},C);if(T.type==="emoji"){const P=T.data.split(":")[1],M=k.find(U=>U.shortcode===P);return M?c.jsx(yn,{classNames:{img:E?"size-20":"mb-1"},emoji:M},C):T.data}return T.type==="youtube"?c.jsx(Gh,{url:T.data,className:"mt-2",mustLoad:o},C):T.type==="x-post"?c.jsx(Kh,{url:T.data,className:"mt-2",mustLoad:o},C):null}),v&&c.jsx(qO,{className:"mt-2",url:v})]}),a&&c.jsx(Ss,{onHighlight:A,containerRef:s}),a&&c.jsx(tr,{highlightedText:f,parentStuff:n,open:l,setOpen:u})]})}function HO({event:n,className:e}){const{t}=Ae();if(!n.tags.find(r=>r[0]==="nonce"&&r.length>=3))return null;const a=xw(n.id);return c.jsxs("span",{className:ne("flex shrink-0 items-center gap-1 text-sm text-primary",e),title:t("Proof of Work (difficulty {{minPow}})",{minPow:a}),children:[c.jsx($1,{size:12,className:"shrink-0"}),c.jsx("span",{children:a})]})}function $O({event:n}){const{t:e}=Ae();return h.useMemo(()=>Ui(n),[n])?c.jsx("div",{className:"flex items-center rounded-full bg-green-500/10 px-2 py-0.5",title:e("Protected event (NIP-70)"),children:c.jsx("span",{className:"text-xs leading-none text-green-600 dark:text-green-400",children:e("Protected")})}):null}function Hx({timestamp:n,short:e=!1,className:t}){return c.jsx("span",{className:t,children:c.jsx(YO,{timestamp:n,short:e})})}function YO({timestamp:n,short:e=!1}){const{t}=Ae(),o=Be(n*1e3),a=Be();if(a.diff(o,"month")>=2)return t("date",{timestamp:o.valueOf()});const i=a.diff(o,"day");if(i>=1)return e?t("n d",{n:i}):t("day ago",{count:i});const s=a.diff(o,"hour");if(s>=1)return e?t("n h",{n:s}):t("hour ago",{count:s});const l=a.diff(o,"minute");return l>=1?e?t("n m",{n:l}):t("minute ago",{count:l}):t("just now")}function KO({menuActions:n,trigger:e}){return c.jsxs(oa,{children:[c.jsx(aa,{asChild:!0,children:e}),c.jsx(ra,{className:"max-h-[50vh] overflow-y-auto",children:n.map((t,o)=>{const a=t.icon;return c.jsxs("div",{children:[t.separator&&o>0&&c.jsx(ol,{}),t.subMenu?c.jsxs(d9,{children:[c.jsxs(Hk,{className:t.className,children:[c.jsx(a,{}),t.label]}),c.jsx($k,{className:"max-h-[50vh] overflow-y-auto",showScrollButtons:!0,children:t.subMenu.map((r,i)=>c.jsxs("div",{children:[r.separator&&i>0&&c.jsx(ol,{}),c.jsx(La,{onClick:r.onClick,className:ne("w-64",r.className),children:r.label})]},i))})]}):c.jsxs(La,{onClick:t.onClick,className:t.className,children:[c.jsx(a,{}),t.label]})]},o)})})]})}function GO({menuActions:n,trigger:e,isDrawerOpen:t,setIsDrawerOpen:o,showSubMenu:a,activeSubMenu:r,subMenuTitle:i,closeDrawer:s,goBackToMainMenu:l}){return c.jsxs(c.Fragment,{children:[e,c.jsxs(Ht,{open:t,onOpenChange:o,children:[c.jsx(Wn,{onClick:s}),c.jsx($t,{className:"max-h-[85vh] border-t border-border/20 bg-card/90 backdrop-blur-xl",children:c.jsx("div",{className:"flex-1 overflow-y-auto overscroll-contain px-4 py-4",style:{touchAction:"pan-y",WebkitOverflowScrolling:"touch"},children:a?c.jsxs(c.Fragment,{children:[c.jsxs(xe,{onClick:l,className:"mb-2 w-full justify-start gap-4 p-6 text-lg [&_svg]:size-5",variant:"ghost",children:[c.jsx(X3,{}),i]}),c.jsx("div",{className:"mb-2 border-t border-border"}),r.map((u,f)=>c.jsx(xe,{onClick:u.onClick,className:`w-full justify-start gap-4 p-6 text-lg ${u.className||""}`,variant:"ghost",children:u.label},f))]}):n.map((u,f)=>{const d=u.icon;return c.jsxs(xe,{onClick:u.onClick,className:`w-full justify-start gap-4 p-6 text-lg [&_svg]:size-5 ${u.className||""}`,variant:"ghost",children:[c.jsx(d,{}),u.label]},f)})})})]})]})}function JO({event:n,isOpen:e,onClose:t}){return c.jsx(na,{open:e,onOpenChange:t,children:c.jsxs(jo,{className:"h-[60vh]",children:[c.jsxs(Ba,{children:[c.jsx(Va,{children:"Raw Event"}),c.jsx(Cr,{className:"hidden"})]}),c.jsxs(Qo,{className:"h-full",children:[c.jsx("pre",{className:"select-text text-sm text-muted-foreground",children:JSON.stringify(n,null,2)}),c.jsx(Ml,{orientation:"horizontal"})]})]})})}function $o(n,e,{checkForDefaultPrevented:t=!0}={}){return function(a){if(n==null||n(a),t===!1||!a.defaultPrevented)return e==null?void 0:e(a)}}function R0(n,e){if(typeof n=="function")return n(e);n!=null&&(n.current=e)}function ZO(...n){return e=>{let t=!1;const o=n.map(a=>{const r=R0(a,e);return!t&&typeof r=="function"&&(t=!0),r});if(t)return()=>{for(let a=0;a<o.length;a++){const r=o[a];typeof r=="function"?r():R0(n[a],null)}}}}function Sr(...n){return h.useCallback(ZO(...n),n)}function vd(n,e=[]){let t=[];function o(r,i){const s=h.createContext(i),l=t.length;t=[...t,i];const u=d=>{var v;const{scope:p,children:m,...g}=d,y=((v=p==null?void 0:p[n])==null?void 0:v[l])||s,w=h.useMemo(()=>g,Object.values(g));return c.jsx(y.Provider,{value:w,children:m})};u.displayName=r+"Provider";function f(d,p){var y;const m=((y=p==null?void 0:p[n])==null?void 0:y[l])||s,g=h.useContext(m);if(g)return g;if(i!==void 0)return i;throw new Error(`\`${d}\` must be used within \`${r}\``)}return[u,f]}const a=()=>{const r=t.map(i=>h.createContext(i));return function(s){const l=(s==null?void 0:s[n])||r;return h.useMemo(()=>({[`__scope${n}`]:{...s,[n]:l}}),[s,l])}};return a.scopeName=n,[o,QO(a,...e)]}function QO(...n){const e=n[0];if(n.length===1)return e;const t=()=>{const o=n.map(a=>({useScope:a(),scopeName:a.scopeName}));return function(r){const i=o.reduce((s,{useScope:l,scopeName:u})=>{const d=l(r)[`__scope${u}`];return{...s,...d}},{});return h.useMemo(()=>({[`__scope${e.scopeName}`]:i}),[i])}};return t.scopeName=e.scopeName,t}var XO=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],os=XO.reduce((n,e)=>{const t=Na(`Primitive.${e}`),o=h.forwardRef((a,r)=>{const{asChild:i,...s}=a,l=i?t:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),c.jsx(l,{...s,ref:r})});return o.displayName=`Primitive.${e}`,{...n,[e]:o}},{});function e5(n){const e=n+"CollectionProvider",[t,o]=vd(e),[a,r]=t(e,{collectionRef:{current:null},itemMap:new Map}),i=y=>{const{scope:w,children:v}=y,k=ee.useRef(null),E=ee.useRef(new Map).current;return c.jsx(a,{scope:w,itemMap:E,collectionRef:k,children:v})};i.displayName=e;const s=n+"CollectionSlot",l=Na(s),u=ee.forwardRef((y,w)=>{const{scope:v,children:k}=y,E=r(s,v),A=Sr(w,E.collectionRef);return c.jsx(l,{ref:A,children:k})});u.displayName=s;const f=n+"CollectionItemSlot",d="data-radix-collection-item",p=Na(f),m=ee.forwardRef((y,w)=>{const{scope:v,children:k,...E}=y,A=ee.useRef(null),N=Sr(w,A),T=r(f,v);return ee.useEffect(()=>(T.itemMap.set(A,{ref:A,...E}),()=>void T.itemMap.delete(A))),c.jsx(p,{[d]:"",ref:N,children:k})});m.displayName=f;function g(y){const w=r(n+"CollectionConsumer",y);return ee.useCallback(()=>{const k=w.collectionRef.current;if(!k)return[];const E=Array.from(k.querySelectorAll(`[${d}]`));return Array.from(w.itemMap.values()).sort((T,C)=>E.indexOf(T.ref.current)-E.indexOf(C.ref.current))},[w.collectionRef,w.itemMap])}return[{Provider:i,Slot:u,ItemSlot:m},g,o]}var ll=globalThis!=null&&globalThis.document?h.useLayoutEffect:()=>{},t5=dl[" useId ".trim().toString()]||(()=>{}),n5=0;function o5(n){const[e,t]=h.useState(t5());return ll(()=>{t(o=>o??String(n5++))},[n]),e?`radix-${e}`:""}function a5(n){const e=h.useRef(n);return h.useEffect(()=>{e.current=n}),h.useMemo(()=>(...t)=>{var o;return(o=e.current)==null?void 0:o.call(e,...t)},[])}var r5=dl[" useInsertionEffect ".trim().toString()]||ll;function $x({prop:n,defaultProp:e,onChange:t=()=>{},caller:o}){const[a,r,i]=i5({defaultProp:e,onChange:t}),s=n!==void 0,l=s?n:a;{const f=h.useRef(n!==void 0);h.useEffect(()=>{const d=f.current;d!==s&&console.warn(`${o} is changing from ${d?"controlled":"uncontrolled"} to ${s?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),f.current=s},[s,o])}const u=h.useCallback(f=>{var d;if(s){const p=s5(f)?f(n):f;p!==n&&((d=i.current)==null||d.call(i,p))}else r(f)},[s,n,r,i]);return[l,u]}function i5({defaultProp:n,onChange:e}){const[t,o]=h.useState(n),a=h.useRef(t),r=h.useRef(e);return r5(()=>{r.current=e},[e]),h.useEffect(()=>{var i;a.current!==t&&((i=r.current)==null||i.call(r,t),a.current=t)},[t,a]),[t,o,r]}function s5(n){return typeof n=="function"}var l5=h.createContext(void 0);function Yx(n){const e=h.useContext(l5);return n||e||"ltr"}var xf="rovingFocusGroup.onEntryFocus",c5={bubbles:!1,cancelable:!0},_l="RovingFocusGroup",[ap,Kx,u5]=e5(_l),[d5,Gx]=vd(_l,[u5]),[f5,h5]=d5(_l),Jx=h.forwardRef((n,e)=>c.jsx(ap.Provider,{scope:n.__scopeRovingFocusGroup,children:c.jsx(ap.Slot,{scope:n.__scopeRovingFocusGroup,children:c.jsx(p5,{...n,ref:e})})}));Jx.displayName=_l;var p5=h.forwardRef((n,e)=>{const{__scopeRovingFocusGroup:t,orientation:o,loop:a=!1,dir:r,currentTabStopId:i,defaultCurrentTabStopId:s,onCurrentTabStopIdChange:l,onEntryFocus:u,preventScrollOnEntryFocus:f=!1,...d}=n,p=h.useRef(null),m=Sr(e,p),g=Yx(r),[y,w]=$x({prop:i,defaultProp:s??null,onChange:l,caller:_l}),[v,k]=h.useState(!1),E=a5(u),A=Kx(t),N=h.useRef(!1),[T,C]=h.useState(0);return h.useEffect(()=>{const P=p.current;if(P)return P.addEventListener(xf,E),()=>P.removeEventListener(xf,E)},[E]),c.jsx(f5,{scope:t,orientation:o,dir:g,loop:a,currentTabStopId:y,onItemFocus:h.useCallback(P=>w(P),[w]),onItemShiftTab:h.useCallback(()=>k(!0),[]),onFocusableItemAdd:h.useCallback(()=>C(P=>P+1),[]),onFocusableItemRemove:h.useCallback(()=>C(P=>P-1),[]),children:c.jsx(os.div,{tabIndex:v||T===0?-1:0,"data-orientation":o,...d,ref:m,style:{outline:"none",...n.style},onMouseDown:$o(n.onMouseDown,()=>{N.current=!0}),onFocus:$o(n.onFocus,P=>{const M=!N.current;if(P.target===P.currentTarget&&M&&!v){const U=new CustomEvent(xf,c5);if(P.currentTarget.dispatchEvent(U),!U.defaultPrevented){const O=A().filter(I=>I.focusable),W=O.find(I=>I.active),V=O.find(I=>I.id===y),L=[W,V,...O].filter(Boolean).map(I=>I.ref.current);Xx(L,f)}}N.current=!1}),onBlur:$o(n.onBlur,()=>k(!1))})})}),Zx="RovingFocusGroupItem",Qx=h.forwardRef((n,e)=>{const{__scopeRovingFocusGroup:t,focusable:o=!0,active:a=!1,tabStopId:r,children:i,...s}=n,l=o5(),u=r||l,f=h5(Zx,t),d=f.currentTabStopId===u,p=Kx(t),{onFocusableItemAdd:m,onFocusableItemRemove:g,currentTabStopId:y}=f;return h.useEffect(()=>{if(o)return m(),()=>g()},[o,m,g]),c.jsx(ap.ItemSlot,{scope:t,id:u,focusable:o,active:a,children:c.jsx(os.span,{tabIndex:d?0:-1,"data-orientation":f.orientation,...s,ref:e,onMouseDown:$o(n.onMouseDown,w=>{o?f.onItemFocus(u):w.preventDefault()}),onFocus:$o(n.onFocus,()=>f.onItemFocus(u)),onKeyDown:$o(n.onKeyDown,w=>{if(w.key==="Tab"&&w.shiftKey){f.onItemShiftTab();return}if(w.target!==w.currentTarget)return;const v=y5(w,f.orientation,f.dir);if(v!==void 0){if(w.metaKey||w.ctrlKey||w.altKey||w.shiftKey)return;w.preventDefault();let E=p().filter(A=>A.focusable).map(A=>A.ref.current);if(v==="last")E.reverse();else if(v==="prev"||v==="next"){v==="prev"&&E.reverse();const A=E.indexOf(w.currentTarget);E=f.loop?w5(E,A+1):E.slice(A+1)}setTimeout(()=>Xx(E))}}),children:typeof i=="function"?i({isCurrentTabStop:d,hasTabStop:y!=null}):i})})});Qx.displayName=Zx;var m5={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function g5(n,e){return e!=="rtl"?n:n==="ArrowLeft"?"ArrowRight":n==="ArrowRight"?"ArrowLeft":n}function y5(n,e,t){const o=g5(n.key,t);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(o))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(o)))return m5[o]}function Xx(n,e=!1){const t=document.activeElement;for(const o of n)if(o===t||(o.focus({preventScroll:e}),document.activeElement!==t))return}function w5(n,e){return n.map((t,o)=>n[(e+o)%n.length])}var v5=Jx,b5=Qx;function k5(n){const[e,t]=h.useState(void 0);return ll(()=>{if(n){t({width:n.offsetWidth,height:n.offsetHeight});const o=new ResizeObserver(a=>{if(!Array.isArray(a)||!a.length)return;const r=a[0];let i,s;if("borderBoxSize"in r){const l=r.borderBoxSize,u=Array.isArray(l)?l[0]:l;i=u.inlineSize,s=u.blockSize}else i=n.offsetWidth,s=n.offsetHeight;t({width:i,height:s})});return o.observe(n,{box:"border-box"}),()=>o.unobserve(n)}else t(void 0)},[n]),e}function S5(n){const e=h.useRef({value:n,previous:n});return h.useMemo(()=>(e.current.value!==n&&(e.current.previous=e.current.value,e.current.value=n),e.current.previous),[n])}function x5(n,e){return h.useReducer((t,o)=>e[t][o]??t,n)}var eA=n=>{const{present:e,children:t}=n,o=A5(e),a=typeof t=="function"?t({present:o.isPresent}):h.Children.only(t),r=Sr(o.ref,E5(a));return typeof t=="function"||o.isPresent?h.cloneElement(a,{ref:r}):null};eA.displayName="Presence";function A5(n){const[e,t]=h.useState(),o=h.useRef(null),a=h.useRef(n),r=h.useRef("none"),i=n?"mounted":"unmounted",[s,l]=x5(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return h.useEffect(()=>{const u=fc(o.current);r.current=s==="mounted"?u:"none"},[s]),ll(()=>{const u=o.current,f=a.current;if(f!==n){const p=r.current,m=fc(u);n?l("MOUNT"):m==="none"||(u==null?void 0:u.display)==="none"?l("UNMOUNT"):l(f&&p!==m?"ANIMATION_OUT":"UNMOUNT"),a.current=n}},[n,l]),ll(()=>{if(e){let u;const f=e.ownerDocument.defaultView??window,d=m=>{const y=fc(o.current).includes(CSS.escape(m.animationName));if(m.target===e&&y&&(l("ANIMATION_END"),!a.current)){const w=e.style.animationFillMode;e.style.animationFillMode="forwards",u=f.setTimeout(()=>{e.style.animationFillMode==="forwards"&&(e.style.animationFillMode=w)})}},p=m=>{m.target===e&&(r.current=fc(o.current))};return e.addEventListener("animationstart",p),e.addEventListener("animationcancel",d),e.addEventListener("animationend",d),()=>{f.clearTimeout(u),e.removeEventListener("animationstart",p),e.removeEventListener("animationcancel",d),e.removeEventListener("animationend",d)}}else l("ANIMATION_END")},[e,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:h.useCallback(u=>{o.current=u?getComputedStyle(u):null,t(u)},[])}}function fc(n){return(n==null?void 0:n.animationName)||"none"}function E5(n){var o,a;let e=(o=Object.getOwnPropertyDescriptor(n.props,"ref"))==null?void 0:o.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=(a=Object.getOwnPropertyDescriptor(n,"ref"))==null?void 0:a.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}var Om="Radio",[R5,tA]=vd(Om),[C5,P5]=R5(Om),nA=h.forwardRef((n,e)=>{const{__scopeRadio:t,name:o,checked:a=!1,required:r,disabled:i,value:s="on",onCheck:l,form:u,...f}=n,[d,p]=h.useState(null),m=Sr(e,w=>p(w)),g=h.useRef(!1),y=d?u||!!d.closest("form"):!0;return c.jsxs(C5,{scope:t,checked:a,disabled:i,children:[c.jsx(os.button,{type:"button",role:"radio","aria-checked":a,"data-state":iA(a),"data-disabled":i?"":void 0,disabled:i,value:s,...f,ref:m,onClick:$o(n.onClick,w=>{a||l==null||l(),y&&(g.current=w.isPropagationStopped(),g.current||w.stopPropagation())})}),y&&c.jsx(rA,{control:d,bubbles:!g.current,name:o,value:s,checked:a,required:r,disabled:i,form:u,style:{transform:"translateX(-100%)"}})]})});nA.displayName=Om;var oA="RadioIndicator",aA=h.forwardRef((n,e)=>{const{__scopeRadio:t,forceMount:o,...a}=n,r=P5(oA,t);return c.jsx(eA,{present:o||r.checked,children:c.jsx(os.span,{"data-state":iA(r.checked),"data-disabled":r.disabled?"":void 0,...a,ref:e})})});aA.displayName=oA;var N5="RadioBubbleInput",rA=h.forwardRef(({__scopeRadio:n,control:e,checked:t,bubbles:o=!0,...a},r)=>{const i=h.useRef(null),s=Sr(i,r),l=S5(t),u=k5(e);return h.useEffect(()=>{const f=i.current;if(!f)return;const d=window.HTMLInputElement.prototype,m=Object.getOwnPropertyDescriptor(d,"checked").set;if(l!==t&&m){const g=new Event("click",{bubbles:o});m.call(f,t),f.dispatchEvent(g)}},[l,t,o]),c.jsx(os.input,{type:"radio","aria-hidden":!0,defaultChecked:t,...a,tabIndex:-1,ref:s,style:{...a.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});rA.displayName=N5;function iA(n){return n?"checked":"unchecked"}var T5=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],bd="RadioGroup",[j5,JV]=vd(bd,[Gx,tA]),sA=Gx(),lA=tA(),[z5,I5]=j5(bd),cA=h.forwardRef((n,e)=>{const{__scopeRadioGroup:t,name:o,defaultValue:a,value:r,required:i=!1,disabled:s=!1,orientation:l,dir:u,loop:f=!0,onValueChange:d,...p}=n,m=sA(t),g=Yx(u),[y,w]=$x({prop:r,defaultProp:a??null,onChange:d,caller:bd});return c.jsx(z5,{scope:t,name:o,required:i,disabled:s,value:y,onValueChange:w,children:c.jsx(v5,{asChild:!0,...m,orientation:l,dir:g,loop:f,children:c.jsx(os.div,{role:"radiogroup","aria-required":i,"aria-orientation":l,"data-disabled":s?"":void 0,dir:g,...p,ref:e})})})});cA.displayName=bd;var uA="RadioGroupItem",dA=h.forwardRef((n,e)=>{const{__scopeRadioGroup:t,disabled:o,...a}=n,r=I5(uA,t),i=r.disabled||o,s=sA(t),l=lA(t),u=h.useRef(null),f=Sr(e,u),d=r.value===a.value,p=h.useRef(!1);return h.useEffect(()=>{const m=y=>{T5.includes(y.key)&&(p.current=!0)},g=()=>p.current=!1;return document.addEventListener("keydown",m),document.addEventListener("keyup",g),()=>{document.removeEventListener("keydown",m),document.removeEventListener("keyup",g)}},[]),c.jsx(b5,{asChild:!0,...s,focusable:!i,active:d,children:c.jsx(nA,{disabled:i,required:r.required,checked:d,...l,...a,name:r.name,ref:f,onCheck:()=>r.onValueChange(a.value),onKeyDown:$o(m=>{m.key==="Enter"&&m.preventDefault()}),onFocus:$o(a.onFocus,()=>{var m;p.current&&((m=u.current)==null||m.click())})})})});dA.displayName=uA;var L5="RadioGroupIndicator",fA=h.forwardRef((n,e)=>{const{__scopeRadioGroup:t,...o}=n,a=lA(t);return c.jsx(aA,{...a,...o,ref:e})});fA.displayName=L5;var hA=cA,pA=dA,M5=fA;const mA=h.forwardRef(({className:n,...e},t)=>c.jsx(hA,{className:ne("grid gap-2",n),...e,ref:t}));mA.displayName=hA.displayName;const gA=h.forwardRef(({className:n,...e},t)=>c.jsx(pA,{ref:t,className:ne("aspect-square h-4 w-4 rounded-full border focus:outline-none focus-visible:ring-1 focus-visible:ring-foreground disabled:cursor-not-allowed disabled:opacity-50",n),...e,children:c.jsx(M5,{className:"flex items-center justify-center",children:c.jsx(W1,{className:"h-2.5 w-2.5 fill-foreground"})})}));gA.displayName=pA.displayName;function D5({event:n,isOpen:e,closeDialog:t}){const{isSmallScreen:o}=Ct();return o?c.jsx(Ht,{open:e,onOpenChange:a=>{a||t()},children:c.jsxs($t,{className:"max-h-[85vh] border-t border-border/20 bg-card/90 backdrop-blur-xl",children:[c.jsxs(Ki,{children:[c.jsx(Gi,{className:"hidden"}),c.jsx(Op,{className:"hidden"})]}),c.jsx("div",{className:"flex-1 overflow-y-auto overscroll-contain px-4 py-4",style:{touchAction:"pan-y",WebkitOverflowScrolling:"touch"},children:c.jsx(C0,{event:n,closeDialog:t})})]})}):c.jsx(na,{open:e,onOpenChange:a=>{a||t()},children:c.jsxs(jo,{children:[c.jsxs(Ba,{children:[c.jsx(Va,{className:"hidden"}),c.jsx(Cr,{className:"hidden"})]}),c.jsx(C0,{event:n,closeDialog:t})]})})}function C0({event:n,closeDialog:e}){const{t}=Ae(),{pubkey:o,publish:a}=Je(),[r,i]=h.useState(null),[s,l]=h.useState(!1),u=async()=>{if(!(!r||!o))try{l(!0);const f=TT(n,r);await a(f),Ue.success(t("Successfully report")),e()}catch(f){wt(f).forEach(p=>{Ue.error(`${t("Failed to report")}: ${p}`,{duration:1e4})});return}finally{l(!1)}};return c.jsxs("div",{className:"w-full space-y-4",children:[c.jsx(mA,{value:r,onValueChange:i,className:"space-y-2",children:["nudity","malware","profanity","illegal","spam","other"].map(f=>c.jsxs("div",{className:"flex items-center space-x-2",children:[c.jsx(gA,{value:f,id:f}),c.jsx(Jt,{htmlFor:f,className:"text-base",children:t(f)})]},f))}),c.jsxs(xe,{variant:"destructive",className:"w-full",disabled:!r||s,onClick:f=>{f.stopPropagation(),u()},children:[s&&c.jsx(wn,{className:"animate-spin"}),t("Report")]})]})}const yA=h.createContext(void 0),wA=()=>{const n=h.useContext(yA);if(!n)throw new Error("usePinList must be used within a PinListProvider");return n};function _5({children:n}){const{t:e}=Ae(),{pubkey:t,pinListEvent:o,publish:a,updatePinListEvent:r}=Je(),i=h.useMemo(()=>_P(o),[o]),s=async u=>{if(!t||u.kind!==Z.ShortTextNote||u.pubkey!==t)return;const f=async()=>{const p=await le.fetchPinListEvent(t),m=(p==null?void 0:p.tags)||[];if(m.some(k=>k[0]==="e"&&k[1]===u.id))return;let g=[...m,wr(u.id,u.pubkey)];const y=g.filter(k=>k[0]==="e").length;if(y>Vf){let k=0;const E=y-Vf;g=g.filter(A=>A[0]==="e"&&k<E?(k+=1,!1):!0)}const w=Sy(g,p==null?void 0:p.content),v=await a(w);await r(v)},{unwrap:d}=Ue.promise(f,{loading:e("Pinning..."),success:e("Pinned!"),error:p=>e("Failed to pin: {{error}}",{error:wt(p).join("; ")})});await d()},l=async u=>{if(!t||u.kind!==Z.ShortTextNote||u.pubkey!==t)return;const f=async()=>{const p=await le.fetchPinListEvent(t);if(!p)return;const m=p.tags.filter(w=>w[0]!=="e"||w[1]!==u.id);if(m.length===p.tags.length)return;const g=Sy(m,p.content),y=await a(g);await r(y)},{unwrap:d}=Ue.promise(f,{loading:e("Unpinning..."),success:e("Unpinned!"),error:p=>e("Failed to unpin: {{error}}",{error:wt(p).join("; ")})});await d()};return c.jsx(yA.Provider,{value:{pinnedEventHexIdSet:i,pin:s,unpin:l},children:n})}function F5({event:n,closeDrawer:e,showSubMenuActions:t,setIsRawEventDialogOpen:o,setIsReportDialogOpen:a,isSmallScreen:r}){const{t:i}=Ae(),{pubkey:s,attemptDelete:l}=Je(),{relayUrls:u}=c2(),{relaySets:f,favoriteRelays:d}=Mm(),p=h.useMemo(()=>Array.from(new Set(u.concat(d))),[u,d]),{mutePubkeyPublicly:m,mutePubkeyPrivately:g,unmutePubkey:y,mutePubkeySet:w}=Pr(),{pinnedEventHexIdSet:v,pin:k,unpin:E}=wA(),A=h.useMemo(()=>w.has(n.pubkey),[w,n]),N=h.useMemo(()=>{const C=[];return s&&n.pubkey===s&&C.push({label:c.jsxs("div",{className:"text-left",children:[" ",i("Optimal relays")]}),onClick:async()=>{e();const P=async()=>{const M=await le.determineTargetRelays(n);M!=null&&M.length&&await le.publishEvent(M,n)};Ue.promise(P,{loading:i("Republishing..."),success:()=>i("Successfully republish to optimal relays (your write relays and mentioned users' read relays)"),error:M=>i("Failed to republish to optimal relays: {{error}}",{error:M.message})})}}),f.length&&C.push(...f.filter(P=>P.relayUrls.length).map((P,M)=>({label:c.jsx("div",{className:"truncate text-left",children:P.name}),onClick:async()=>{e();const U=le.publishEvent(P.relayUrls,n);Ue.promise(U,{loading:i("Republishing..."),success:()=>i("Successfully republish to relay set: {{name}}",{name:P.name}),error:O=>i("Failed to republish to relay set: {{name}}. Error: {{error}}",{name:P.name,error:wt(O).join("; ")})})},separator:M===0}))),p.length&&C.push(...p.map((P,M)=>({label:c.jsxs("div",{className:"flex w-full items-center gap-2",children:[c.jsx(ku,{url:P}),c.jsx("div",{className:"flex-1 truncate text-left",children:Fn(P)})]}),onClick:async()=>{e();const U=le.publishEvent([P],n);Ue.promise(U,{loading:i("Republishing..."),success:()=>i("Successfully republish to relay: {{url}}",{url:Fn(P)}),error:O=>i("Failed to republish to relay: {{url}}. Error: {{error}}",{url:Fn(P),error:wt(O).join("; ")})})},separator:M===0}))),C},[s,p,f]);return h.useMemo(()=>{const C=[{icon:ui,label:i("Copy event ID"),onClick:()=>{navigator.clipboard.writeText(xa(n)),e()}},{icon:ui,label:i("Copy user ID"),onClick:()=>{navigator.clipboard.writeText(ur(n.pubkey)??""),e()}},{icon:p4,label:i("Copy share link"),onClick:()=>{navigator.clipboard.writeText(EL(n)),e()}},{icon:ui,label:i("Copy note content"),onClick:()=>{navigator.clipboard.writeText(n.content),e()}},{icon:i4,label:i("View raw event"),onClick:()=>{e(),o(!0)},separator:!0}];if((!Ui(n)||n.pubkey===s)&&C.push({icon:E4,label:i("Republish to ..."),onClick:r?()=>t(N,i("Republish to ...")):void 0,subMenu:r?void 0:N,separator:!0}),n.pubkey===s&&n.kind===Z.ShortTextNote){const M=v.has(n.id);C.push({icon:M?b4:Of,label:i(M?"Unpin from profile":"Pin to profile"),onClick:async()=>{e(),await(M?E(n):k(n))}})}return s&&n.pubkey!==s&&C.push({icon:Z1,label:i("Report"),className:"text-destructive focus:text-destructive",onClick:()=>{e(),a(!0)},separator:!0}),s&&n.pubkey!==s&&(A?C.push({icon:U1,label:i("Unmute user"),onClick:()=>{e(),y(n.pubkey)},className:"text-destructive focus:text-destructive",separator:!0}):C.push({icon:Pg,label:i("Mute user privately"),onClick:()=>{e(),g(n.pubkey)},className:"text-destructive focus:text-destructive",separator:!0},{icon:Pg,label:i("Mute user publicly"),onClick:()=>{e(),m(n.pubkey)},className:"text-destructive focus:text-destructive"})),s&&n.pubkey===s&&C.push({icon:J1,label:i("Try deleting this note"),onClick:()=>{e(),l(n)},className:"text-destructive focus:text-destructive",separator:!0}),C},[i,n,s,A,r,N,v,e,t,o,g,m,y])}function O5({event:n,className:e}){const{isSmallScreen:t}=Ct(),[o,a]=h.useState(!1),[r,i]=h.useState(!1),[s,l]=h.useState(!1),[u,f]=h.useState(!1),[d,p]=h.useState([]),[m,g]=h.useState(""),y=()=>{l(!1),f(!1)},w=()=>{f(!1)},k=F5({event:n,closeDrawer:y,showSubMenuActions:(A,N)=>{p(A),g(N),f(!0)},setIsRawEventDialogOpen:a,setIsReportDialogOpen:i,isSmallScreen:t}),E=c.jsx("button",{className:"flex h-full items-center pl-2 text-muted-foreground hover:text-foreground",onClick:()=>l(!0),children:c.jsx(q1,{})});return c.jsxs("div",{className:e,onClick:A=>A.stopPropagation(),children:[t?c.jsx(GO,{menuActions:k,trigger:E,isDrawerOpen:s,setIsDrawerOpen:l,showSubMenu:u,activeSubMenu:d,subMenuTitle:m,closeDrawer:y,goBackToMainMenu:w}):c.jsx(KO,{menuActions:k,trigger:E}),c.jsx(JO,{event:n,isOpen:o,onClose:()=>a(!1)}),c.jsx(D5,{event:n,isOpen:r,closeDialog:()=>i(!1)})]})}function U5({event:n,className:e}){const{t}=Ae(),{title:o,emojis:a}=h.useMemo(()=>kp(n),[n]);return c.jsxs("div",{className:ne("pointer-events-none",e),children:["[",t("Emoji Pack"),"] ",c.jsx("span",{className:"pr-0.5 italic",children:o}),a.length>0&&c.jsxs("span",{children:["(",a.length,")"]})]})}function B5({event:n,className:e}){const{t}=Ae(),{title:o}=h.useMemo(()=>Ow(n),[n]);return c.jsxs("div",{className:ne("truncate",e),children:["[",t("Follow Pack"),"] ",c.jsx("span",{className:"pr-0.5 italic",children:o})]})}function V5({event:n,className:e}){const{t}=Ae(),o=h.useMemo(()=>Dw(n),[n]);return c.jsxs("div",{className:ne("pointer-events-none",e),children:["[",t("Group"),"] ",c.jsx("span",{className:"pr-0.5 italic",children:o.name})]})}function Um({content:n,className:e,emojiInfos:t}){const{t:o}=Ae(),a=h.useMemo(()=>pd(n,[PS,Sm,xm,hd]),[n]);return c.jsx("span",{className:ne("pointer-events-none",e),children:a.map((r,i)=>{if(r.type==="image"||r.type==="images")return i>0?` [${o("Image")}]`:`[${o("Image")}]`;if(r.type==="media")return i>0?` [${o("Media")}]`:`[${o("Media")}]`;if(r.type==="event")return i>0?` [${o("Note")}]`:`[${o("Note")}]`;if(r.type==="mention")return c.jsx(S_,{userId:r.data.split(":")[1]},i);if(r.type==="emoji"){const s=r.data.split(":")[1],l=(t==null?void 0:t.find(u=>u.shortcode===s))||gn.getEmojiById(s);return l?c.jsx(yn,{emoji:l,classNames:{img:"size-4"}},i):r.data}return r.data})})}function W5({event:n,className:e}){const{t}=Ae(),o=ts(n.id),a=h.useMemo(()=>Ko(n.tags),[n]);return c.jsxs("div",{className:ne("pointer-events-none",e),children:["[",t("Highlight"),"]"," ",c.jsx(Um,{content:(o==null?void 0:o.content)??n.content,emojiInfos:a,className:"pr-0.5 italic"})]})}function q5({event:n,className:e}){const{t}=Ae(),o=h.useMemo(()=>Mw(n),[n]);return c.jsxs("div",{className:ne("pointer-events-none",e),children:["[",t("Live event"),"] ",c.jsx("span",{className:"pr-0.5 italic",children:o.title})]})}function H5({event:n,className:e}){const{t}=Ae(),o=h.useMemo(()=>bp(n),[n]);return c.jsxs("div",{className:ne("pointer-events-none",e),children:["[",t("Article"),"] ",c.jsx("span",{className:"pr-0.5 italic",children:o.title})]})}function $5({event:n,className:e}){const t=ts(n==null?void 0:n.id),o=h.useMemo(()=>Ko(n==null?void 0:n.tags),[n]);return c.jsx(Um,{content:(t==null?void 0:t.content)??n.content,className:e,emojiInfos:o})}function Y5({event:n,className:e}){const{t}=Ae();return c.jsxs("div",{className:ne("pointer-events-none",e),children:["[",t("Image"),"] ",c.jsx("span",{className:"pr-0.5 italic",children:n.content})]})}function K5({event:n,className:e}){const{t}=Ae(),o=ts(n.id),a=h.useMemo(()=>Ko(n.tags),[n]);return c.jsxs("div",{className:ne("pointer-events-none",e),children:["[",t("Poll"),"]"," ",c.jsx(Um,{content:(o==null?void 0:o.content)??n.content,emojiInfos:a,className:"pr-0.5 italic"})]})}function G5({event:n,className:e}){const{t}=Ae(),o=h.useMemo(()=>{var r;if(!n.content||n.content==="+")return c.jsx(yc,{size:14,className:"inline text-red-400"});const a=(r=/^:([^:]+):$/.exec(n.content))==null?void 0:r[1];if(a){const i=n.tags.find(l=>l[0]==="emoji"&&l[1]===a),s=i==null?void 0:i[2];if(s)return c.jsx(sn,{image:{url:s,pubkey:n.pubkey},alt:a,className:"inline-block h-4 w-4",classNames:{errorPlaceholder:"bg-transparent",wrapper:"inline-block rounded-md"},errorPlaceholder:c.jsx(yc,{size:14,className:"inline text-red-400"})})}return n.content.length>4?c.jsx(yc,{size:14,className:"inline text-red-400"}):c.jsx("span",{children:n.content})},[n]);return c.jsxs("div",{className:ne("flex items-center gap-1 truncate",e),children:[c.jsxs("span",{className:"truncate",children:["[",t("Reaction"),"]"]}),o]})}function J5({event:n,className:e}){const{t}=Ae(),o=n.kind===ce.ADDRESSABLE_NORMAL_VIDEO||n.kind===ce.ADDRESSABLE_SHORT_VIDEO,a=h.useMemo(()=>o?Fw(n):null,[n,o]);return c.jsxs("div",{className:ne("pointer-events-none",e),children:["[",t("Media"),"]"," ",c.jsx("span",{className:"pr-0.5 italic",children:(a==null?void 0:a.title)||n.content})]})}function Bm({event:n,className:e}){const{t}=Ae(),{mutePubkeySet:o}=Pr(),{hideContentMentioningMutedUsers:a}=Qt(),r=h.useMemo(()=>n?o.has(n.pubkey):!1,[o,n]),i=h.useMemo(()=>a&&n?zu(n,o):!1,[n,o]);return n?r?c.jsxs("div",{className:ne("pointer-events-none",e),children:["[",t("This user has been muted"),"]"]}):i?c.jsxs("div",{className:ne("pointer-events-none",e),children:["[",t("This note mentions a user you muted"),"]"]}):[Z.ShortTextNote,ce.COMMENT,ce.VOICE,ce.VOICE_COMMENT,ce.RELAY_REVIEW,Fi.GROUP_CHAT_MESSAGE].includes(n.kind)?c.jsx($5,{event:n,className:e}):n.kind===Z.Highlights?c.jsx(W5,{event:n,className:e}):n.kind===ce.POLL?c.jsx(K5,{event:n,className:e}):n.kind===Z.LongFormArticle?c.jsx(H5,{event:n,className:e}):n.kind===ce.VIDEO||n.kind===ce.SHORT_VIDEO||n.kind===ce.ADDRESSABLE_NORMAL_VIDEO||n.kind===ce.ADDRESSABLE_SHORT_VIDEO?c.jsx(J5,{event:n,className:e}):n.kind===ce.PICTURE?c.jsx(Y5,{event:n,className:e}):n.kind===ce.GROUP_METADATA?c.jsx(V5,{event:n,className:e}):n.kind===Z.LiveEvent?c.jsx(q5,{event:n,className:e}):n.kind===Z.Emojisets?c.jsx(U5,{event:n,className:e}):n.kind===ce.FOLLOW_PACK?c.jsx(B5,{event:n,className:e}):n.kind===Z.Reaction||n.kind===ce.EXTERNAL_CONTENT_REACTION?c.jsx(G5,{event:n,className:e}):c.jsxs("div",{className:e,children:["[",n.kind===Z.EncryptedDirectMessage?t("Encrypted direct messages not supported"):t("Cannot handle event of kind k",{k:n.kind}),"]"]}):c.jsx("div",{className:ne("pointer-events-none",e),children:`[${t("Note not found")}]`})}function P0({eventId:n,externalContent:e,className:t,onClick:o,label:a}){const{t:r}=Ae(),{event:i,isFetching:s}=nm(n),l=a??r("reply to");return e?c.jsxs("div",{className:ne("flex w-fit max-w-full cursor-pointer items-center gap-1 rounded-full bg-muted px-2 text-sm text-muted-foreground hover:text-foreground",t),onClick:o,children:[c.jsx("div",{className:"shrink-0",children:l}),c.jsx("div",{className:"truncate",children:e})]}):n?s?c.jsxs("div",{className:ne("flex w-44 max-w-full items-center gap-1 rounded-full bg-muted px-2 text-sm text-muted-foreground",t),children:[c.jsx("div",{className:"shrink-0",children:l}),c.jsx(Tn,{className:"h-4 w-4 rounded-full"}),c.jsx("div",{className:"flex-1 py-1",children:c.jsx(Tn,{className:"h-3"})})]}):c.jsxs("div",{className:ne("flex w-fit max-w-full items-center gap-1 rounded-full bg-muted px-2 text-sm text-muted-foreground",i&&"cursor-pointer hover:text-foreground",t),onClick:i?o:void 0,children:[c.jsx("div",{className:"shrink-0",children:l}),i&&c.jsx(Xo,{className:"shrink-0",userId:i.pubkey,size:"tiny"}),c.jsx(Bm,{className:"truncate",event:i})]}):null}function vA({pubkey:n,className:e,classNames:t}){const{t:o}=Ae(),{isUserTrusted:a}=es(),{pubkey:r}=Je(),[i,s]=h.useState(null),[l,u]=h.useState(!0);return h.useEffect(()=>{if(r===n){u(!1),s(null);return}if(a(n)){u(!1),s(null);return}(async()=>{try{const d=await Rh.fetchUserPercentile(n);d!==null&&s(d)}catch(d){console.error("Failed to fetch trust score:",d)}finally{u(!1)}})()},[n,r,a]),l||i===null?null:i<40?c.jsx("div",{title:o("Low trust ranking ({{percentile}}%)",{percentile:i}),className:t==null?void 0:t.container,children:c.jsx(C4,{className:ne("!size-4 text-red-500",e)})}):null}const bA=h.createContext(void 0),Z5=()=>{const n=h.useContext(bA);if(!n)throw new Error("useEmojiPack must be used within a EmojiPackProvider");return n};function Q5({children:n}){const{pubkey:e,userEmojiListEvent:t,publish:o,updateUserEmojiListEvent:a}=Je(),r=h.useMemo(()=>{const l=new Set;return t==null||t.tags.forEach(u=>{u[0]==="a"&&l.add(u[1])}),l},[t]),i=async l=>{if(!e||l.kind!==Z.Emojisets)return;const u=await le.fetchUserEmojiListEvent(e),f=(u==null?void 0:u.tags)||[],d=ln(l);if(f.some(m=>m[0]==="a"&&m[1]===d))return;const p=xy([...f,Oa(l)],u==null?void 0:u.content);try{const m=await o(p);await a(m)}catch(m){wt(m).forEach(y=>{Ue.error(`Failed to add emoji pack: ${y}`,{duration:1e4})})}},s=async l=>{if(!e)return;const u=await le.fetchUserEmojiListEvent(e);if(!u)return;const f=ln(l),d=u.tags.filter(m=>m[0]!=="a"||m[1]!==f);if(d.length===u.tags.length)return;const p=xy(d,u.content);try{const m=await o(p);await a(m)}catch(m){wt(m).forEach(y=>{Ue.error(`Failed to remove emoji pack: ${y}`,{duration:1e4})})}};return c.jsx(bA.Provider,{value:{emojiPackCoordinateSet:r,addEmojiPack:i,removeEmojiPack:s},children:n})}function X5({event:n,className:e}){const{t}=Ae(),{pubkey:o,checkLogin:a}=Je(),{emojiPackCoordinateSet:r,addEmojiPack:i,removeEmojiPack:s}=Z5(),[l,u]=h.useState(!1),{title:f,emojis:d}=h.useMemo(()=>kp(n),[n]),p=h.useMemo(()=>ln(n),[n]),m=h.useMemo(()=>r.has(p),[r,p]),g=async w=>{w.stopPropagation(),a(async()=>{m||(u(!0),await i(n),u(!1))})},y=async w=>{w.stopPropagation(),a(async()=>{m&&(u(!0),await s(n),u(!1))})};return c.jsxs("div",{className:e,children:[c.jsxs("div",{className:"mb-2 flex items-center justify-between",children:[c.jsx("h3",{className:"text-2xl font-semibold",children:f}),o&&c.jsxs(xe,{variant:m?"secondary":"outline",size:"sm",onClick:m?y:g,disabled:l,className:"shrink-0",children:[l?c.jsx(wn,{className:"mr-1 animate-spin"}):m?c.jsx(_a,{}):c.jsx(Y1,{}),t(l?m?"Removing...":"Adding...":m?"Added":"Add")]})]}),c.jsx("div",{className:"flex flex-wrap gap-1",children:d.map((w,v)=>c.jsx(sn,{image:{url:w.url,pubkey:n.pubkey},className:"size-14 object-contain",classNames:{wrapper:"size-14 flex items-center justify-center p-1",errorPlaceholder:"size-14"},hideIfError:!0},`emoji-${v}`))})]})}function e8({event:n,className:e}){const{t}=Ae(),{push:o}=Vt(),{title:a,description:r,image:i,pubkeys:s}=h.useMemo(()=>Ow(n),[n]),l=u=>{u.stopPropagation(),o(CL(n))};return c.jsxs("div",{className:e,children:[c.jsxs("div",{className:"mb-2 flex items-start gap-2",children:[i&&c.jsx(sn,{image:{url:i,pubkey:n.pubkey},className:"h-20 w-24 object-cover",classNames:{wrapper:"w-24 h-20 flex-shrink-0",errorPlaceholder:"w-24 h-20"},hideIfError:!0}),c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("h3",{className:"mb-1 truncate text-xl font-semibold",children:a}),c.jsx("span",{className:"shrink-0 text-xs text-muted-foreground",children:t("n users",{count:s.length})})]}),r&&c.jsx("p",{className:"line-clamp-2 text-sm text-muted-foreground",children:r})]})]}),c.jsx(xe,{onClick:l,variant:"outline",className:"w-full",children:t("View Details")})]})}function t8({event:n,originalNoteId:e,className:t}){const{autoLoadMedia:o}=Qt(),a=h.useMemo(()=>Dw(n),[n]),r=c.jsx("div",{className:"line-clamp-1 text-xl font-semibold",children:a.name}),i=a.about&&c.jsx("div",{className:"line-clamp-2 text-sm text-muted-foreground",children:a.about});return c.jsxs("div",{className:t,children:[c.jsxs("div",{className:"flex gap-4",children:[a.picture&&o&&c.jsx(sn,{image:{url:a.picture,pubkey:n.pubkey},className:"aspect-square h-20 bg-foreground",hideIfError:!0}),c.jsxs("div",{className:"w-0 flex-1 space-y-1",children:[r,i]})]}),c.jsx(al,{className:"mt-2 w-full",event:n,originalNoteId:e})]})}function n8({event:n,className:e}){const t=ts(n.id),o=h.useMemo(()=>{var a;return(a=((t==null?void 0:t.tags)??n.tags).find(r=>r[0]==="comment"))==null?void 0:a[1]},[n,t]);return c.jsxs("div",{className:ne("space-y-4 whitespace-pre-wrap text-wrap break-words",e),children:[o&&c.jsx(Ho,{event:vp({content:o,tags:n.tags})}),c.jsxs("div",{className:"flex gap-4",children:[c.jsx("div",{className:"my-1 w-1 flex-shrink-0 rounded-md bg-primary/60"}),c.jsx("div",{className:"whitespace-pre-line italic",style:{overflowWrap:"anywhere"},children:(t==null?void 0:t.content)??n.content})]}),c.jsx(o8,{event:n})]})}function o8({event:n}){const{t:e}=Ae(),{push:t}=Vt(),o=h.useMemo(()=>{let s;for(const l of n.tags){if(l[2]==="source"){s=l;break}if(l[0]==="e"){s=l;continue}if(l[0]==="a"&&(!s||s[0]!=="e")){s=l;continue}if(l[0]==="r"&&(!s||s[0]==="r")){s=l;continue}}return s},[n]),{event:a}=nm(o?o[0]==="e"?Er(o):o[0]==="a"?Is(o):void 0:void 0),r=h.useMemo(()=>{if(!(!o||o[0]==="r")){if(o[0]==="e")return o[1];if(o[0]==="a")return Is(o)}},[o]),i=h.useMemo(()=>{if(a)return a.pubkey;if(o&&o[0]==="a"){const[,s]=o[1].split(":");if(Sa(s))return s}},[o,a]);return o?o[0]==="r"?c.jsxs("div",{className:"truncate text-muted-foreground",children:[e("From")," ",c.jsx(ao,{url:o[1],className:"italic text-muted-foreground underline hover:text-foreground"})]}):c.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[c.jsx("div",{className:"shrink-0",children:e("From")}),i&&c.jsx(Xo,{userId:i,size:"xSmall",className:"cursor-pointer"}),r&&c.jsx("div",{className:"pointer-events-auto cursor-pointer truncate underline hover:text-foreground",onClick:s=>{s.stopPropagation(),t(kr(a??r))},children:a?c.jsx(Bm,{event:a}):r})]}):null}function a8({event:n,className:e}){const{isSmallScreen:t}=Ct(),{autoLoadMedia:o}=Qt(),a=h.useMemo(()=>Mw(n),[n]),r=a.status&&(a.status==="live"?c.jsx(Vo,{className:"bg-green-400 hover:bg-green-400",children:"live"}):a.status==="ended"?c.jsx(Vo,{variant:"destructive",children:"ended"}):c.jsx(Vo,{variant:"secondary",children:a.status})),i=c.jsx("div",{className:"line-clamp-1 text-xl font-semibold",children:a.title}),s=a.summary&&c.jsx("div",{className:"line-clamp-4 text-sm text-muted-foreground",children:a.summary}),l=a.tags.length>0&&c.jsx("div",{className:"flex flex-wrap gap-1",children:a.tags.map(u=>c.jsx(Vo,{variant:"secondary",children:u},u))});return t?c.jsxs("div",{className:e,children:[a.image&&o&&c.jsx(sn,{image:{url:a.image,pubkey:n.pubkey},className:"aspect-video w-full",hideIfError:!0}),c.jsxs("div",{className:"space-y-1",children:[i,r,s,l,c.jsx(al,{className:"mt-2 w-full",event:n})]})]}):c.jsxs("div",{className:e,children:[c.jsxs("div",{className:"flex gap-4",children:[a.image&&o&&c.jsx(sn,{image:{url:a.image,pubkey:n.pubkey},className:"aspect-[4/3] h-44 bg-foreground xl:aspect-video",hideIfError:!0}),c.jsxs("div",{className:"w-0 flex-1 space-y-1",children:[i,r,s,l]})]}),c.jsx(al,{className:"mt-2 w-full",event:n})]})}function r8({event:n,className:e}){const{push:t}=Vt(),o=h.useMemo(()=>bp(n),[n]),a=h.useRef(null),[r,i]=h.useState(!1),[s,l]=h.useState(""),u=d=>{l(d),i(!0)},f=h.useMemo(()=>({nostr:({rawText:d,bech32Id:p})=>c.jsx(_S,{rawText:d,bech32Id:p}),a:({href:d,children:p,...m})=>d?d.startsWith("note1")||d.startsWith("nevent1")||d.startsWith("naddr1")?c.jsx(Ma,{to:kr(d),className:"break-words text-foreground underline",children:p}):d.startsWith("npub1")||d.startsWith("nprofile1")?c.jsx(Ma,{to:ad(d),className:"break-words text-foreground underline",children:p}):c.jsxs("a",{...m,href:d,target:"_blank",rel:"noreferrer noopener",className:"inline-flex items-baseline gap-1 break-words",children:[p," ",c.jsx(Fc,{className:"size-3"})]}):c.jsx("span",{...m,className:"break-words"}),p:d=>c.jsx("p",{...d,className:"break-words"}),div:d=>c.jsx("div",{...d,className:"break-words"}),code:d=>c.jsx("code",{...d,className:"whitespace-pre-wrap break-words"}),img:d=>c.jsx(wu,{image:{url:d.src||"",pubkey:n.pubkey},className:"my-0 max-h-[80vh] object-contain sm:max-h-[50vh]",classNames:{wrapper:"w-fit max-w-full"}})}),[n.pubkey]);return c.jsxs(c.Fragment,{children:[c.jsxs("div",{ref:a,className:`overflow-wrap-anywhere prose-body:text-foreground prose max-w-none break-words prose-headings:text-foreground prose-h1:text-foreground prose-h2:text-foreground prose-h3:text-foreground prose-h4:text-foreground prose-h5:text-foreground prose-h6:text-foreground prose-p:text-foreground prose-a:text-foreground prose-blockquote:text-muted-foreground prose-strong:text-foreground prose-em:text-foreground prose-code:text-foreground prose-pre:text-foreground prose-ol:text-muted-foreground prose-ul:text-muted-foreground prose-li:text-muted-foreground prose-th:text-foreground prose-td:text-foreground prose-hr:text-muted-foreground ${e||""}`,children:[c.jsx("h1",{className:"break-words",children:o.title}),o.summary&&c.jsx("blockquote",{children:c.jsx("p",{className:"whitespace-pre-line break-words",children:o.summary})}),o.image&&c.jsx(wu,{image:{url:o.image,pubkey:n.pubkey},className:"my-0 aspect-[3/1] w-full object-cover"}),c.jsx(c1,{remarkPlugins:[u1,FS],urlTransform:d=>d.startsWith("nostr:")?d.slice(6):d,components:f,children:n.content}),o.tags.length>0&&c.jsx("div",{className:"flex flex-wrap gap-2 pb-2",children:o.tags.map(d=>c.jsxs("div",{title:d,className:"flex max-w-44 cursor-pointer items-center rounded-full bg-muted px-3 text-muted-foreground hover:bg-accent hover:text-accent-foreground",onClick:p=>{p.stopPropagation(),t(od({hashtag:d,kinds:[Z.LongFormArticle]}))},children:["#",c.jsx("span",{className:"truncate",children:d})]},d))})]}),c.jsx(Ss,{onHighlight:u,containerRef:a}),c.jsx(tr,{highlightedText:s,parentStuff:n,open:r,setOpen:i})]})}function i8({event:n,className:e}){const{isSmallScreen:t}=Ct(),{push:o}=Vt(),{autoLoadMedia:a}=Qt(),r=h.useMemo(()=>bp(n),[n]),i=c.jsx("div",{className:"line-clamp-2 text-xl font-semibold",children:r.title}),s=r.tags.length>0&&c.jsx("div",{className:"flex flex-wrap gap-1",children:r.tags.map(u=>c.jsxs("div",{className:"flex max-w-32 cursor-pointer items-center rounded-full bg-muted px-2.5 py-0.5 text-xs text-muted-foreground hover:bg-accent hover:text-accent-foreground",onClick:f=>{f.stopPropagation(),o(od({hashtag:u,kinds:[Z.LongFormArticle]}))},children:["#",c.jsx("span",{className:"truncate",children:u})]},u))}),l=r.summary&&c.jsx("div",{className:"line-clamp-4 whitespace-pre-line text-sm text-muted-foreground",children:r.summary});return t?c.jsxs("div",{className:e,children:[r.image&&a&&c.jsx(sn,{image:{url:r.image,pubkey:n.pubkey},className:"aspect-video w-full",hideIfError:!0}),c.jsxs("div",{className:"space-y-1",children:[i,l,s]})]}):c.jsx("div",{className:e,children:c.jsxs("div",{className:"flex gap-4",children:[r.image&&a&&c.jsx(sn,{image:{url:r.image,pubkey:n.pubkey},className:"aspect-[4/3] h-44 bg-foreground object-cover xl:aspect-video",hideIfError:!0}),c.jsxs("div",{className:"w-0 flex-1 space-y-1",children:[i,l,s]})]})})}function s8({show:n}){const{t:e}=Ae();return c.jsxs("div",{className:"my-4 flex flex-col items-center gap-2 font-medium text-muted-foreground",children:[c.jsx("div",{children:e("This user has been muted")}),c.jsxs(xe,{onClick:t=>{t.stopPropagation(),n()},variant:"outline",children:[c.jsx(H1,{}),e("Temporarily display this note")]})]})}function l8({show:n}){const{t:e}=Ae();return c.jsxs("div",{className:"my-4 flex flex-col items-center gap-2 font-medium text-muted-foreground",children:[c.jsx("div",{children:e("🔞 NSFW 🔞")}),c.jsxs(xe,{onClick:t=>{t.stopPropagation(),n()},variant:"outline",children:[c.jsx(H1,{}),e("Temporarily display this note")]})]})}function c8({event:n,className:e}){const t=h.useMemo(()=>$c(n),[n]),o=h.useMemo(()=>{let a=n.content;return t.forEach(({url:r})=>{a=a.replace(r,"").replace(new RegExp(r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),"")}),{...n,content:a.trim()}},[n,t]);return c.jsxs("div",{className:e,children:[t.length>0&&c.jsx(Yh,{images:t}),o.content&&c.jsx(Ho,{event:o,disableEmojiOnly:!0})]})}const li=class li{constructor(){H(this,"pollResultsMap",new Map);H(this,"pollResultsSubscribers",new Map);H(this,"loader",new Bo(async e=>{const t=new Map;e.forEach(({pollEventId:r,relays:i,validPollOptionIds:s,isMultipleChoice:l,endsAt:u})=>{t.has(r)||t.set(r,{relays:i,validPollOptionIds:s,isMultipleChoice:l,endsAt:u})});const o=await Promise.allSettled(Array.from(t).map(async([r,i])=>{const s=await this._fetchResults(r,i.relays,i.validPollOptionIds,i.isMultipleChoice,i.endsAt);return{pollEventId:r,result:s}})),a=new Map;return o.forEach(r=>{r.status==="fulfilled"&&r.value.result&&a.set(r.value.pollEventId,r.value.result)}),e.map(({pollEventId:r})=>a.get(r))},{cache:!1}));return li.instance||(li.instance=this),li.instance}async fetchResults(e,t,o,a,r){return this.loader.load({pollEventId:e,relays:t,validPollOptionIds:o,isMultipleChoice:a,endsAt:r})}async _fetchResults(e,t,o,a,r){const i={kinds:[ce.POLL_RESPONSE],"#e":[e],limit:1e3};r&&(i.until=r);let s=this.pollResultsMap.get(e);if(s){if(r&&s.updatedAt>=r)return s;i.since=s.updatedAt}else s={totalVotes:0,results:o.reduce((f,d)=>(f[d]=new Set,f),{}),voters:new Set,updatedAt:0};const l=await le.fetchEvents(t,i);return s.updatedAt=Be().unix(),l.map(f=>IP(f,o,a)).filter(f=>f!==null).sort((f,d)=>d.created_at-f.created_at).forEach(f=>{s&&s.voters.has(f.pubkey)||(s.voters.add(f.pubkey),s.totalVotes+=f.selectedOptionIds.length,f.selectedOptionIds.forEach(d=>{s.results[d]&&s.results[d].add(f.pubkey)}))}),this.pollResultsMap.set(e,{...s}),l.length&&this.notifyPollResults(e),s}subscribePollResults(e,t){let o=this.pollResultsSubscribers.get(e);return o||(o=new Set,this.pollResultsSubscribers.set(e,o)),o.add(t),()=>{o==null||o.delete(t),(o==null?void 0:o.size)===0&&this.pollResultsSubscribers.delete(e)}}notifyPollResults(e){const t=this.pollResultsSubscribers.get(e);t&&t.forEach(o=>o())}getPollResults(e){return this.pollResultsMap.get(e)}addPollResponse(e,t,o){const a=this.pollResultsMap.get(e);a&&(a.voters.has(t)||(a.voters.add(t),a.totalVotes+=o.length,o.forEach(r=>{a.results[r]&&a.results[r].add(t)}),this.pollResultsMap.set(e,{...a}),this.notifyPollResults(e)))}};H(li,"instance");let rp=li;const Su=new rp;function u8(n){return h.useSyncExternalStore(e=>Su.subscribePollResults(n,e),()=>Su.getPollResults(n))}function d8({event:n,className:e}){const{t}=Ae(),o=ts(n.id),{pubkey:a,publish:r,startLogin:i}=Je(),[s,l]=h.useState(!1),[u,f]=h.useState([]),d=u8(n.id),[p,m]=h.useState(!1),g=h.useMemo(()=>_w(o??n),[n,o]),y=h.useMemo(()=>!d||!a?[]:Object.entries(d.results).filter(([,U])=>U.has(a)).map(([U])=>U),[d,a]),w=h.useMemo(()=>(g==null?void 0:g.options.map(U=>U.id))||[],[g]),v=h.useMemo(()=>(g==null?void 0:g.endsAt)&&Be().unix()>g.endsAt,[g]),k=h.useMemo(()=>(g==null?void 0:g.pollType)===rr.MULTIPLE_CHOICE,[g]),E=h.useMemo(()=>!v&&!y.length,[v,y]),A=h.useMemo(()=>n.pubkey===a||!E,[n,a,E]),[N,T]=h.useState(null);if(h.useEffect(()=>{if(d||p||!N)return;const U=new IntersectionObserver(([O])=>{O.isIntersecting&&setTimeout(()=>{ZC(N)&&C()},200)},{threshold:.1});return U.observe(N),()=>{U.unobserve(N)}},[d,p,N]),!g)return null;const C=async()=>{m(!0);try{const U=await N0(n.pubkey,g);return await Su.fetchResults(n.id,U,w,k,g.endsAt)}catch(U){console.error("Failed to fetch poll results:",U),Ue.error("Failed to fetch poll results: "+U.message)}finally{m(!1)}},P=U=>{v||f(k?O=>O.includes(U)?O.filter(W=>W!==U):[...O,U]:O=>O.includes(U)?[]:[U])},M=async()=>{if(u.length!==0){if(!a){i();return}l(!0);try{if(!d){const W=await C();if(W&&W.voters.has(a))return}const U=await N0(n.pubkey,g),O=PT(n,u);await r(O,{additionalRelayUrls:U}),f([]),Su.addPollResponse(n.id,a,u)}catch(U){wt(U).forEach(W=>{Ue.error(`${t("Failed to vote")}: ${W}`,{duration:1e4})})}finally{l(!1)}}};return c.jsx("div",{className:e,ref:T,children:c.jsxs("div",{className:"space-y-2",children:[c.jsxs("div",{className:"text-sm text-muted-foreground",children:[c.jsx("p",{children:g.pollType===rr.MULTIPLE_CHOICE&&t("Multiple choice (select one or more)")}),c.jsx("p",{children:!!g.endsAt&&(v?t("Poll has ended"):t("Poll ends at {{time}}",{time:new Date(g.endsAt*1e3).toLocaleString()}))})]}),c.jsx("div",{className:"grid gap-2",children:g.options.map(U=>{var L,I;const O=((I=(L=d==null?void 0:d.results)==null?void 0:L[U.id])==null?void 0:I.size)??0,W=(d==null?void 0:d.totalVotes)??0,V=A&&W>0?O/W*100:0,j=d&&d.totalVotes>0&&A?Object.values(d.results).every(b=>b.size<=O):!1;return c.jsxs("button",{title:U.label,className:ne("relative flex w-full items-center gap-2 overflow-hidden rounded-lg border px-4 py-3 transition-all",E?"cursor-pointer":"cursor-not-allowed",E&&(u.includes(U.id)?"border-primary bg-primary/20":"hover:border-primary/40 hover:bg-primary/5")),onClick:b=>{b.stopPropagation(),P(U.id)},disabled:!E,children:[c.jsxs("div",{className:"z-10 flex w-0 flex-1 items-center gap-2",children:[c.jsx("div",{className:ne("line-clamp-2 text-left",j?"font-semibold":""),children:U.label}),y.includes(U.id)&&c.jsx(V1,{className:"size-4 shrink-0"})]}),A&&c.jsxs("div",{className:ne("z-10 shrink-0 text-muted-foreground",j?"font-semibold text-foreground":""),children:[V.toFixed(1),"%"]}),c.jsx("div",{className:ne("absolute inset-0 rounded-r-sm transition-all duration-700 ease-out",j?"bg-primary/60":"bg-muted/90"),style:{width:`${V}%`}})]},U.id)})}),c.jsxs("div",{className:"flex items-center justify-between text-sm text-muted-foreground",children:[c.jsx("div",{children:t("{{number}} votes",{number:(d==null?void 0:d.totalVotes)??0})}),p&&t("Loading..."),!p&&A&&c.jsx("div",{className:"cursor-pointer hover:underline",onClick:U=>{U.stopPropagation(),C()},children:t(d?"Refresh results":"Load results")})]}),E&&!!u.length&&c.jsxs(xe,{onClick:U=>{U.stopPropagation(),u.length!==0&&M()},disabled:!u.length||s,className:"w-full",children:[s&&c.jsx(Ei,{className:"animate-spin"}),t("Vote")]})]})})}async function N0(n,e){const t=e.relayUrls.slice(0,4);if(!t.length){const o=await le.fetchRelayList(n);t.push(...o.read.slice(0,4))}return t}function f8({event:n,className:e}){const t=h.useMemo(()=>{var r;const o=n.content;if(!o||o==="+")return"+";const a=(r=/^:([^:]+):$/.exec(o))==null?void 0:r[1];if(a){const s=Ko(n.tags).find(l=>l.shortcode===a);if(s)return s}return o.length<=4?o:"+"},[n]);return c.jsx("div",{className:e,children:c.jsx(yn,{emoji:t,classNames:{text:"text-7xl leading-none",img:"size-20"}})})}function h8({stars:n,className:e}){const t=h.useMemo(()=>Math.round(n),[n]);return c.jsx("div",{className:ne("flex items-center gap-1",e),children:Array.from({length:5}).map((o,a)=>a<t?c.jsx(jg,{className:"size-4 fill-foreground text-foreground"},a):c.jsx(jg,{className:"size-4 text-muted-foreground"},a))})}function p8({event:n,className:e}){const{push:t}=Vt(),o=h.useMemo(()=>DP(n),[n]),a=h.useMemo(()=>ir(n),[n]),r=h.useMemo(()=>Fn(a),[a]);return c.jsxs("div",{className:e,children:[c.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[c.jsx(h8,{stars:o}),c.jsx("span",{className:"text-sm text-muted-foreground",children:"→"}),c.jsx("div",{className:"cursor-pointer truncate text-sm text-muted-foreground hover:text-foreground hover:underline",onClick:i=>{i.stopPropagation(),t(du(a))},children:r})]}),c.jsx(Ho,{event:n,className:"mt-2"})]})}function m8({event:n,className:e}){const{t}=Ae();return c.jsxs("div",{className:ne("my-4 flex flex-col items-center gap-2 font-medium text-muted-foreground",e),children:[c.jsx("div",{children:n.kind===Z.EncryptedDirectMessage?t("Encrypted direct messages not supported"):t("Cannot handle event of kind k",{k:n.kind})}),c.jsx(al,{event:n})]})}function g8({event:n,className:e}){const t=h.useMemo(()=>$c(n),[n]),o=n.kind===ce.ADDRESSABLE_NORMAL_VIDEO||n.kind===ce.ADDRESSABLE_SHORT_VIDEO,a=h.useMemo(()=>o?Fw(n):null,[n,o]),r=h.useMemo(()=>{let i=n.content;return t.forEach(({url:s})=>{i=i.replace(s,"").replace(new RegExp(s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),"")}),{...n,content:i.trim()}},[n,t]);return c.jsxs("div",{className:e,children:[t.map(i=>c.jsx(Jh,{src:i.url,className:"mt-2"},i.url)),(a==null?void 0:a.title)&&c.jsx("div",{className:"mt-2 font-semibold",children:a.title}),r.content&&c.jsx(Ho,{event:r,disableEmojiOnly:!0}),a&&a.tags.length>0&&c.jsx("div",{className:"mt-1 flex flex-wrap gap-1",children:a.tags.map(i=>c.jsx(wi,{hashtag:i},i))})]})}function kA({event:n,originalNoteId:e,size:t="normal",className:o,hideParentNotePreview:a=!1,showFull:r=!1,displayMode:i,hideFollowingBadge:s=!1}){const{t:l}=Ae(),{push:u}=Vt(),{isSmallScreen:f}=Ct(),{parentEventId:d,parentExternalContent:p}=h.useMemo(()=>RP(n),[n]),m=h.useMemo(()=>{if(n.kind!==Z.Reaction&&n.kind!==ce.EXTERNAL_CONTENT_REACTION)return;const T=n.tags.findLast(Ke("a"));if(T)return Is(T);const C=n.tags.findLast(Ke("e"));return C?Er(C):void 0},[n]),{nsfwDisplayPolicy:g}=Qt(),[y,w]=h.useState(!1),{mutePubkeySet:v}=Pr(),[k,E]=h.useState(!1),A=h.useMemo(()=>g===ms.SHOW?!1:vP(n),[n,g]);let N;return[..._4,Z.LiveEvent,ce.GROUP_METADATA].includes(n.kind)?v.has(n.pubkey)&&!k?N=c.jsx(s8,{show:()=>E(!0)}):A&&!y?N=c.jsx(l8,{show:()=>w(!0)}):n.kind===Z.Highlights?N=c.jsx(n8,{className:"mt-2",event:n}):n.kind===Z.LongFormArticle?N=r?c.jsx(r8,{className:"mt-2",event:n}):c.jsx(i8,{className:"mt-2",event:n}):n.kind===Z.LiveEvent?N=c.jsx(a8,{className:"mt-2",event:n}):n.kind===ce.GROUP_METADATA?N=c.jsx(t8,{className:"mt-2",event:n,originalNoteId:e}):n.kind===ce.POLL?N=c.jsxs(c.Fragment,{children:[c.jsx(Ho,{className:"mt-2",event:n,displayMode:i}),c.jsx(d8,{className:"mt-2",event:n})]}):n.kind===ce.VOICE||n.kind===ce.VOICE_COMMENT?N=c.jsx(pm,{className:"mt-2",src:n.content}):n.kind===ce.PICTURE?N=c.jsx(c8,{className:"mt-2",event:n}):n.kind===ce.VIDEO||n.kind===ce.SHORT_VIDEO||n.kind===ce.ADDRESSABLE_NORMAL_VIDEO||n.kind===ce.ADDRESSABLE_SHORT_VIDEO?N=c.jsx(g8,{className:"mt-2",event:n}):n.kind===ce.RELAY_REVIEW?N=c.jsx(p8,{className:"mt-2",event:n}):n.kind===Z.Emojisets?N=c.jsx(X5,{className:"mt-2",event:n}):n.kind===ce.FOLLOW_PACK?N=c.jsx(e8,{className:"mt-2",event:n}):n.kind===Z.Reaction?N=c.jsx(f8,{className:"mt-2",event:n}):n.kind===Fi.GROUP_CHAT_MESSAGE?N=c.jsx(Ho,{className:"mt-2",event:n,displayMode:i}):N=c.jsx(Ho,{className:"mt-2",event:n,enableHighlight:!0,displayMode:i}):N=c.jsx(m8,{className:"mt-2",event:n}),c.jsxs("div",{className:o,children:[c.jsxs("div",{className:"flex items-start justify-between gap-2 sm:gap-3",children:[c.jsxs("div",{className:"flex flex-1 items-center space-x-2 sm:space-x-3",children:[c.jsx(Xo,{userId:n.pubkey,size:"big",className:"hidden sm:block"}),c.jsx(Xo,{userId:n.pubkey,size:t==="small"?"medium":"normal",className:"sm:hidden"}),c.jsxs("div",{className:"w-0 flex-1",children:[c.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2",children:[c.jsx(Yo,{userId:n.pubkey,className:`w-0 flex-1 truncate font-semibold ${t==="small"?"text-sm":"text-base sm:text-lg"}`,skeletonClassName:t==="small"?"h-3":"h-4"}),!s&&c.jsx(Vx,{pubkey:n.pubkey}),c.jsx(vA,{pubkey:n.pubkey}),c.jsx($O,{event:n}),c.jsx(R_,{event:n}),c.jsx(HO,{event:n})]}),c.jsxs("div",{className:"flex items-center gap-1 text-sm text-muted-foreground",children:[c.jsx(km,{pubkey:n.pubkey,append:"·"}),c.jsx(Hx,{timestamp:n.created_at,className:"shrink-0",short:f})]})]})]}),c.jsx("div",{className:"flex items-center",children:t==="normal"&&c.jsx(O5,{event:n,className:"shrink-0 py-1 [&_svg]:size-5"})})]}),!a&&c.jsx(P0,{eventId:d,externalContent:p,className:"mt-2 sm:mt-3",onClick:T=>{T.stopPropagation(),p?u(uu(p)):d&&u(kr(d))}}),m&&c.jsx(P0,{eventId:m,label:l("reacted to"),className:"mt-2 sm:mt-3",onClick:T=>{T.stopPropagation(),u(kr(m))}}),N]})}function Lo(n){return h.useMemo(()=>typeof n=="string"?{event:void 0,externalContent:n,stuffKey:n}:{event:n,externalContent:void 0,stuffKey:_n(n)},[n])}const ci=class ci{constructor(){H(this,"stuffStatsMap",new Map);H(this,"stuffStatsSubscribers",new Map);H(this,"initialized",!1);return ci.instance||(ci.instance=this),ci.instance}async init(){this.initialized||(this.initialized=!0)}serializeForDb(e){return e?{likeIdSet:Array.from(e.likeIdSet||[]),likes:e.likes||[],repostPubkeySet:Array.from(e.repostPubkeySet||[]),reposts:e.reposts||[],zapPrSet:Array.from(e.zapPrSet||[]),zaps:e.zaps||[],updatedAt:e.updatedAt}:null}deserializeFromDb(e){return{likeIdSet:new Set(e.likeIdSet),likes:e.likes,repostPubkeySet:new Set(e.repostPubkeySet),reposts:e.reposts,zapPrSet:new Set(e.zapPrSet),zaps:e.zaps,updatedAt:e.updatedAt}}async loadFromCache(e){await this.init();const t=await be.getStuffStats(e);if(t){const o=this.deserializeFromDb(t);this.stuffStatsMap.set(e,o)}}async saveToCache(e){const t=this.stuffStatsMap.get(e);if(t){const o=this.serializeForDb(t);o&&await be.putStuffStats(e,o)}}async fetchStuffStats(e,t){await this.init();const{event:o,externalContent:a}=typeof e=="string"?{event:void 0,externalContent:e}:{event:e,externalContent:void 0},r=o?_n(o):a;this.stuffStatsMap.has(r)||await this.loadFromCache(r);const i=this.stuffStatsMap.get(r);let s;i!=null&&i.updatedAt&&(s=i.updatedAt);const[l,u]=o?await Promise.all([le.fetchRelayList(o.pubkey),le.fetchProfile(o.pubkey)]):[],f=o&&Bt(o.kind)?ln(o):void 0,d=[];o?d.push({"#e":[o.id],kinds:[Z.Reaction],limit:500},{"#e":[o.id],kinds:[Z.Repost,Z.GenericRepost],limit:100}):d.push({"#i":[a],kinds:[ce.EXTERNAL_CONTENT_REACTION],limit:500}),f&&d.push({"#a":[f],kinds:[Z.Reaction],limit:500},{"#a":[f],kinds:[Z.Repost,Z.GenericRepost],limit:100}),o&&(u!=null&&u.lightningAddress)&&(d.push({"#e":[o.id],kinds:[Z.Zap],limit:500}),f&&d.push({"#a":[f],kinds:[Z.Zap],limit:500})),t&&(d.push(o?{"#e":[o.id],authors:[t],kinds:o.kind===Z.ShortTextNote?[Z.Reaction,Z.Repost]:[Z.Reaction,Z.Repost,Z.GenericRepost]}:{"#i":[a],authors:[t],kinds:[ce.EXTERNAL_CONTENT_REACTION]}),f&&d.push({"#a":[f],authors:[t],kinds:[Z.Reaction,Z.Repost,Z.GenericRepost]}),o&&(u!=null&&u.lightningAddress)&&(d.push({"#e":[o.id],"#P":[t],kinds:[Z.Zap]}),f&&d.push({"#a":[f],"#P":[t],kinds:[Z.Zap]}))),s&&d.forEach(m=>{m.since=s});const p=l?l.read.concat(kt()).slice(0,5):kt();return await le.fetchEvents(p,d,{onevent:m=>{this.updateStuffStatsByEvents([m])}}),this.stuffStatsMap.set(r,{...this.stuffStatsMap.get(r)??{},updatedAt:Be().unix()}),await this.saveToCache(r),this.stuffStatsMap.get(r)??{}}subscribeStuffStats(e,t){let o=this.stuffStatsSubscribers.get(e);return o||(o=new Set,this.stuffStatsSubscribers.set(e,o)),o.add(t),()=>{o==null||o.delete(t),(o==null?void 0:o.size)===0&&this.stuffStatsSubscribers.delete(e)}}notifyStuffStats(e){const t=this.stuffStatsSubscribers.get(e);t&&t.forEach(o=>o())}getStuffStats(e){return this.stuffStatsMap.get(e)}async addZap(e,t,o,a,r,i=Be().unix(),s=!0){await this.init(),this.stuffStatsMap.has(t)||await this.loadFromCache(t);const l=this.stuffStatsMap.get(t)||{},u=l.zapPrSet||new Set,f=l.zaps||[];if(!u.has(o))return u.add(o),f.push({pr:o,pubkey:e,amount:a,comment:r,created_at:i}),this.stuffStatsMap.set(t,{...l,zapPrSet:u,zaps:f}),await this.saveToCache(t),s&&this.notifyStuffStats(t),t}async updateStuffStatsByEvents(e){await this.init();const t=new Set;for(const o of e){let a;o.kind===Z.Reaction?a=await this.addLikeByEvent(o):o.kind===ce.EXTERNAL_CONTENT_REACTION?a=await this.addExternalContentLikeByEvent(o):o.kind===Z.Repost||o.kind===Z.GenericRepost?a=await this.addRepostByEvent(o):o.kind===Z.Zap&&(a=await this.addZapByEvent(o)),a&&t.add(a)}t.forEach(o=>{this.notifyStuffStats(o)})}async addLikeByEvent(e){var s,l;let t;if(t=(s=e.tags.findLast(Ke("a")))==null?void 0:s[1],t||(t=(l=e.tags.findLast(Ke("e")))==null?void 0:l[1]),!t)return;this.stuffStatsMap.has(t)||await this.loadFromCache(t);const o=this.stuffStatsMap.get(t)||{},a=o.likeIdSet||new Set,r=o.likes||[];if(a.has(e.id))return;let i=e.content.trim();if(i){if(i.startsWith(":")&&i.endsWith(":")){const u=Ko(e.tags),f=i.split(":")[1],d=u.find(p=>p.shortcode===f);d?i=d:i="+"}return a.add(e.id),r.push({id:e.id,eventId:xa(e),pubkey:e.pubkey,created_at:e.created_at,emoji:i}),this.stuffStatsMap.set(t,{...o,likeIdSet:a,likes:r}),await this.saveToCache(t),t}}async addExternalContentLikeByEvent(e){var s;const t=(s=e.tags.findLast(Ke("i")))==null?void 0:s[1];if(!t)return;this.stuffStatsMap.has(t)||await this.loadFromCache(t);const o=this.stuffStatsMap.get(t)||{},a=o.likeIdSet||new Set,r=o.likes||[];if(a.has(e.id))return;let i=e.content.trim();if(i){if(i.startsWith(":")&&i.endsWith(":")){const l=Ko(e.tags),u=i.split(":")[1],f=l.find(d=>d.shortcode===u);f?i=f:i="+"}return a.add(e.id),r.push({id:e.id,eventId:xa(e),pubkey:e.pubkey,created_at:e.created_at,emoji:i}),this.stuffStatsMap.set(t,{...o,likeIdSet:a,likes:r}),await this.saveToCache(t),t}}async addRepostByEvent(e){var i,s;let t;if(t=(i=e.tags.find(Ke("a")))==null?void 0:i[1],t||(t=(s=e.tags.find(Ke("e")))==null?void 0:s[1]),!t)return;this.stuffStatsMap.has(t)||await this.loadFromCache(t);const o=this.stuffStatsMap.get(t)||{},a=o.repostPubkeySet||new Set,r=o.reposts||[];if(!a.has(e.pubkey))return a.add(e.pubkey),r.push({id:e.id,pubkey:e.pubkey,created_at:e.created_at}),this.stuffStatsMap.set(t,{...o,repostPubkeySet:a,reposts:r}),await this.saveToCache(t),t}async addZapByEvent(e){const t=ws(e);if(!t)return;const{originalEventId:o,senderPubkey:a,invoice:r,amount:i,comment:s}=t;if(!(!o||!a||i<=0))return this.addZap(a,o,r,i,s,e.created_at,!1)}};H(ci,"instance");let ip=ci;const ro=new ip;function T0({stuff:n}){const{t:e}=Ae(),{pubkey:t,bookmarkListEvent:o,checkLogin:a}=Je(),{addBookmark:r,removeBookmark:i}=NB(),[s,l]=h.useState(!1),{event:u}=Lo(n),f=h.useMemo(()=>{if(!u)return!1;const m=Bt(u.kind),g=m?ln(u):u.id;return o==null?void 0:o.tags.some(y=>m?y[0]==="a"&&y[1]===g:y[0]==="e"&&y[1]===g)},[o,u]);if(!t)return null;const d=async m=>{m.stopPropagation(),a(async()=>{f||!u||(l(!0),await r(u),Un("success"),l(!1))})},p=async m=>{m.stopPropagation(),a(async()=>{!f||!u||(l(!0),await i(u),Un("success"),l(!1))})};return c.jsx("button",{className:`flex items-center gap-1 ${f?"text-bookmark":"text-muted-foreground"} h-full px-3 enabled:hover:text-bookmark disabled:cursor-default disabled:text-muted-foreground/40`,onClick:f?p:d,disabled:!u||s,title:e(f?"Remove bookmark":"Bookmark"),children:s?c.jsx(wn,{className:"animate-spin"}):c.jsx(o4,{className:f?"fill-bookmark":""})})}function Fl(n){return h.useSyncExternalStore(e=>ro.subscribeStuffStats(n,e),()=>ro.getStuffStats(n))}const j0=["👍","❤️","😂","🥲","👀","🫡","🫂"];function y8({onEmojiClick:n,onMoreButtonClick:e}){const[t,o]=h.useState(j0);return h.useEffect(()=>{try{const a=Ap(),r=new Set,i=a.sort((s,l)=>l.count-s.count).map(s=>gp(s.unified)).filter(Boolean).concat(j0).filter(s=>typeof s!="string"?!0:r.has(s)?!1:(r.add(s),!0));o(i.slice(0,9))}catch{}},[]),c.jsxs("div",{className:"flex gap-1 p-1",onClick:a=>a.stopPropagation(),children:[c.jsx("div",{className:"clickable flex h-8 w-8 items-center justify-center rounded-lg text-xl",onClick:()=>n("+"),children:c.jsx(yn,{emoji:"+"})}),t.map((a,r)=>typeof a=="string"?c.jsx("div",{className:"clickable flex h-8 w-8 items-center justify-center rounded-lg text-xl",onClick:()=>n(a),children:a},r):c.jsx("div",{className:"clickable flex flex-col items-center justify-center rounded-lg p-1",onClick:()=>n(a),children:c.jsx(yn,{emoji:a,classNames:{img:"size-6 rounded-md"}})},r)),c.jsx(xe,{variant:"ghost",className:"h-8 w-8 text-muted-foreground",onClick:e,children:c.jsx(q1,{size:24})})]})}function xu(n){return n===void 0||n<=0?"":n>=100?"99+":n}function z0({stuff:n}){const{t:e}=Ae(),{isSmallScreen:t}=Ct(),{pubkey:o,publish:a,checkLogin:r}=Je(),{getMinTrustScore:i,meetsMinTrustScore:s}=es(),{quickReaction:l,quickReactionEmoji:u}=Wa(),{event:f,externalContent:d,stuffKey:p}=Lo(n),[m,g]=h.useState(!1),[y,w]=h.useState(!1),[v,k]=h.useState(!1),[E,A]=h.useState(0),N=h.useRef(null),T=h.useRef(!1),C=h.useRef(!1),P=Fl(p),M=h.useMemo(()=>{var b;const I=(b=(P||{}).likes)==null?void 0:b.find(S=>S.pubkey===o);return I==null?void 0:I.emoji},[P,o]);h.useEffect(()=>{(async()=>{const b=(P||{}).likes||[];let S=0;const z=i(cr.INTERACTIONS);if(!z){A(b.length);return}await Promise.all(b.map(async F=>{await s(F.pubkey,z)&&S++})),A(S)})()},[P,s,i]),h.useEffect(()=>{setTimeout(()=>k(!1),100)},[y]);const U=async L=>{C.current||!o||r(async()=>{if(m)return;C.current=!0,g(!0);const I=setTimeout(()=>{g(!1),Ue.error(e("Reaction timed out. Please try again."),{duration:1e4})},15e3);try{const b=P!=null&&P.updatedAt?Promise.resolve():ro.fetchStuffStats(p,o).catch(()=>{}),S=f?Rv(f,L):Cv(d,L),z=f?le.getSeenEventRelayUrls(f.id):kt(),F=window.localStorage.getItem(me.POW_ENABLED)!=="false",D=window.localStorage.getItem(me.POW_REACTION_DIFFICULTY),q=F?D?parseInt(D,10):12:0,J=await a(S,{additionalRelayUrls:z,minPow:q});await b,ro.updateStuffStatsByEvents([J]),Un("success")}catch(b){wt(b).forEach(z=>{Ue.error(`${e("Failed to like")}: ${z}`,{duration:1e4})})}finally{g(!1),C.current=!1,clearTimeout(I)}})},O=()=>{l&&(T.current=!1,N.current=setTimeout(()=>{T.current=!0,w(!0)},iw))},W=()=>{N.current&&(clearTimeout(N.current),N.current=null)},V=L=>{if(l){if(T.current){T.current=!1;return}L.preventDefault(),L.stopPropagation(),U(u)}else w(!0)},j=c.jsx("button",{className:"flex h-full items-center gap-1 px-3 text-muted-foreground enabled:hover:text-primary",title:e("Like"),disabled:m,onClick:V,onMouseDown:O,onMouseUp:W,onMouseLeave:W,onTouchStart:O,onTouchEnd:W,children:m?c.jsx(wn,{className:"animate-spin"}):M?c.jsxs(c.Fragment,{children:[c.jsx(yn,{emoji:M,classNames:{img:"size-4"}}),!!E&&c.jsx("div",{className:"text-sm",children:xu(E)})]}):c.jsxs(c.Fragment,{children:[c.jsx(N4,{}),!!E&&c.jsx("div",{className:"text-sm",children:xu(E)})]})});return t?c.jsxs(c.Fragment,{children:[j,c.jsxs(Ht,{open:y,onOpenChange:w,children:[c.jsx(Wn,{onClick:()=>w(!1)}),c.jsx($t,{className:"max-h-[85vh] border-t border-border/20 bg-card/90 backdrop-blur-xl",children:c.jsx("div",{className:"flex-1 overflow-y-auto overscroll-contain px-4 py-4",style:{touchAction:"pan-y",WebkitOverflowScrolling:"touch"},children:c.jsx(rl,{onEmojiClick:L=>{w(!1),L&&U(L)}})})})]})]}):c.jsxs(jm,{open:y,onOpenChange:L=>w(L),children:[c.jsx(tO,{asChild:!0,children:j}),c.jsx(zm,{side:"top",className:"w-fit border-0 p-0 shadow-lg",children:v?c.jsx(rl,{onEmojiClick:(L,I)=>{I.stopPropagation(),w(!1),L&&U(L)}}):c.jsx(y8,{onEmojiClick:L=>{w(!1),U(L)},onMoreButtonClick:()=>{k(!0)}})})]})}function I0({stuff:n}){const{pubkey:e,checkLogin:t,publish:o}=Je(),{event:a,externalContent:r,stuffKey:i}=Lo(n),s=Fl(i),[l,u]=h.useState(null),f=h.useRef(null),[d,p]=h.useState(null),[m,g]=h.useState(null),y=h.useMemo(()=>{const N=s==null?void 0:s.likes;if(!N)return[];const T=new Map;return N.forEach(C=>{var M;const P=typeof C.emoji=="string"?C.emoji:C.emoji.url;T.has(P)||T.set(P,{key:P,pubkeys:new Set,emoji:C.emoji}),(M=T.get(P))==null||M.pubkeys.add(C.pubkey)}),Array.from(T.values()).sort((C,P)=>P.pubkeys.size-C.pubkeys.size)},[s,a]);if(!y.length)return null;const w=async(N,T)=>{t(async()=>{if(l||!e)return;u(N);const C=setTimeout(()=>{u(P=>P===N?null:P),Ue.error("Reaction timed out. Please try again.",{duration:1e4})},15e3);try{const P=a?Rv(a,T):Cv(r,T),M=a?le.getSeenEventRelayUrls(a.id):kt(),U=window.localStorage.getItem(me.POW_ENABLED)!=="false",O=window.localStorage.getItem(me.POW_REACTION_DIFFICULTY),W=U?O?parseInt(O,10):12:0,V=await o(P,{additionalRelayUrls:M,minPow:W});ro.updateStuffStatsByEvents([V])}catch(P){wt(P).forEach(U=>{Ue.error(`Failed to like: ${U}`,{duration:1e4})})}finally{u(null),clearTimeout(C)}})},v=N=>{var T;e&&((T=y.find(C=>C.key===N))!=null&&T.pubkeys.has(e))||(p(N),f.current=setTimeout(()=>{g(N),p(null)},800))},k=()=>{var N;if(f.current&&(clearTimeout(f.current),f.current=null),m){const T=m,C=(N=y.find(P=>P.key===T))==null?void 0:N.emoji;C&&w(T,C)}p(null),g(null)},E=()=>{f.current&&(clearTimeout(f.current),f.current=null),p(null),g(null)},A=N=>{const T=N.touches[0],C=N.currentTarget.getBoundingClientRect();T.clientX>=C.left&&T.clientX<=C.right&&T.clientY>=C.top&&T.clientY<=C.bottom||E()};return c.jsxs(Qo,{className:"mb-1 pb-2",children:[c.jsx("div",{className:"flex gap-1",children:y.map(({key:N,emoji:T,pubkeys:C})=>c.jsxs("div",{className:ne("relative flex h-7 w-fit shrink-0 select-none items-center gap-2 overflow-hidden rounded-full border px-2 transition-all duration-200",e&&C.has(e)?"cursor-not-allowed border-primary bg-primary/20 text-foreground":"cursor-pointer bg-muted/80 text-muted-foreground hover:border-primary hover:bg-primary/40 hover:text-foreground",(d===N||m===N)&&"border-primary bg-primary/20"),onClick:P=>P.stopPropagation(),onMouseDown:()=>v(N),onMouseUp:k,onMouseLeave:E,onTouchStart:()=>v(N),onTouchMove:A,onTouchEnd:k,onTouchCancel:E,children:[(d===N||m===N)&&c.jsx("div",{className:"absolute inset-0 overflow-hidden rounded-full",children:c.jsx("div",{className:"h-full bg-gradient-to-r from-primary/40 via-primary/60 to-primary/80",style:{width:m===N?"100%":"0%",animation:d===N?"progressFill 1000ms ease-out forwards":"none"}})}),c.jsxs("div",{className:"relative z-10 flex items-center gap-2",children:[l===N?c.jsx(wn,{className:"size-4 animate-spin"}):c.jsx("div",{style:{animation:m===N?"shake 0.5s ease-in-out infinite":void 0},children:c.jsx(yn,{emoji:T,classNames:{img:"size-4"}})}),c.jsx("div",{className:"text-sm",children:C.size})]})]},N))}),c.jsx(Ml,{orientation:"horizontal"})]})}function L0({stuff:n}){const{t:e}=Ae(),{checkLogin:t}=Je(),{stuffKey:o}=Lo(n),{replies:a,hasReplied:r}=SL(o),[i,s]=h.useState(!1);return c.jsxs(c.Fragment,{children:[c.jsxs("button",{className:ne("flex h-full items-center gap-1 pr-3 enabled:hover:text-comment",r?"text-comment":"text-muted-foreground"),onClick:l=>{l.stopPropagation(),t(()=>{s(!0)})},title:e("Reply"),children:[c.jsx(zs,{}),!!a.length&&c.jsx("div",{className:"text-sm",children:xu(a.length)})]}),c.jsx(tr,{parentStuff:n,open:i,setOpen:s})]})}function M0({stuff:n}){const{t:e}=Ae(),{isSmallScreen:t}=Ct(),{getMinTrustScore:o,meetsMinTrustScore:a}=es(),{publish:r,checkLogin:i,pubkey:s}=Je(),{event:l,stuffKey:u}=Lo(n),f=Fl(u),[d,p]=h.useState(!1),[m,g]=h.useState(!1),[y,w]=h.useState(!1),[v,k]=h.useState(0),E=h.useMemo(()=>{var P;return s?(P=f==null?void 0:f.repostPubkeySet)==null?void 0:P.has(s):!1},[f,s]);h.useEffect(()=>{(async()=>{if(!l){k(0);return}const M=(f==null?void 0:f.reposts)||[];let U=0;const O=o(cr.INTERACTIONS);if(!O){k(M.length);return}await Promise.all(M.map(async W=>{await a(W.pubkey,O)&&U++})),k(U)})()},[f,l,a,o]);const A=!E&&!d&&!!l,N=async()=>{i(async()=>{var M,U;if(!A||!s)return;p(!0);const P=setTimeout(()=>p(!1),5e3);try{if(((M=f==null?void 0:f.repostPubkeySet)==null?void 0:M.has(s))||!(f!=null&&f.updatedAt)&&(U=(await ro.fetchStuffStats(n,s)).repostPubkeySet)!=null&&U.has(s))return;const W=bT(l),V=await r(W);ro.updateStuffStatsByEvents([V]),Un("success")}catch(O){wt(O).forEach(V=>{Ue.error(`${e("Failed to repost")}: ${V}`,{duration:1e4})})}finally{p(!1),clearTimeout(P)}})},T=c.jsxs("button",{className:ne("flex h-full items-center gap-1 px-3 enabled:hover:text-repost disabled:text-muted-foreground/40",E?"text-repost":"text-muted-foreground"),disabled:!l,title:e("Repost"),onClick:()=>{l&&t&&w(!0)},children:[d?c.jsx(wn,{className:"animate-spin"}):c.jsx(Ld,{}),!!v&&c.jsx("div",{className:"text-sm",children:xu(v)})]});if(!l)return T;const C=c.jsx(tr,{open:m,setOpen:g,defaultContent:`
nostr:`+xa(l)});return t?c.jsxs(c.Fragment,{children:[T,c.jsxs(Ht,{open:y,onOpenChange:w,children:[c.jsx(Wn,{onClick:()=>w(!1)}),c.jsx($t,{className:"max-h-[85vh] border-t border-border/20 bg-card/90 backdrop-blur-xl",children:c.jsxs("div",{className:"flex-1 overflow-y-auto overscroll-contain px-4 py-4",style:{touchAction:"pan-y",WebkitOverflowScrolling:"touch"},children:[c.jsxs(xe,{onClick:P=>{P.stopPropagation(),w(!1),N()},disabled:!A,className:"w-full justify-start gap-4 p-6 text-lg [&_svg]:size-5",variant:"ghost",children:[c.jsx(Ld,{})," ",e("Repost")]}),c.jsxs(xe,{onClick:P=>{P.stopPropagation(),w(!1),i(()=>{g(!0)})},className:"w-full justify-start gap-4 p-6 text-lg [&_svg]:size-5",variant:"ghost",children:[c.jsx(Oc,{})," ",e("Quote")]})]})})]}),C]}):c.jsxs(c.Fragment,{children:[c.jsxs(oa,{children:[c.jsx(aa,{asChild:!0,children:T}),c.jsxs(ra,{children:[c.jsxs(La,{onClick:P=>{P.stopPropagation(),N()},disabled:!A,children:[c.jsx(Ld,{})," ",e("Repost")]}),c.jsxs(La,{onClick:P=>{P.stopPropagation(),i(()=>{g(!0)})},children:[c.jsx(Oc,{})," ",e("Quote")]})]})]}),C]})}function D0({stuff:n}){const{t:e}=Ae(),{isSmallScreen:t}=Ct(),{push:o}=Vt(),{event:a}=Lo(n),[r,i]=h.useState([]),[s,l]=h.useState(!1);h.useEffect(()=>{if(!a)return;const f=le.getSeenEventRelayUrls(a.id);i(f)},[]);const u=c.jsxs("button",{className:"flex h-full items-center gap-1 pl-3 text-muted-foreground enabled:hover:text-primary disabled:text-muted-foreground/40",title:e("Seen on"),disabled:r.length===0,onClick:()=>{a&&t&&l(!0)},children:[c.jsx(K1,{}),r.length>0&&c.jsx("div",{className:"text-sm",children:r.length})]});return r.length===0?u:t?c.jsxs(c.Fragment,{children:[u,c.jsxs(Ht,{open:s,onOpenChange:l,children:[c.jsx(Wn,{onClick:()=>l(!1)}),c.jsx($t,{className:"max-h-[85vh] border-t border-border/20 bg-card/90 backdrop-blur-xl",children:c.jsx("div",{className:"flex-1 overflow-y-auto overscroll-contain px-4 py-4",style:{touchAction:"pan-y",WebkitOverflowScrolling:"touch"},children:r.map(f=>c.jsxs(xe,{className:"w-full justify-start gap-4 p-6 text-lg",variant:"ghost",onClick:()=>{l(!1),setTimeout(()=>{o(du(f))},50)},children:[c.jsx(ku,{url:f})," ",Fn(f)]},f))})})]})]}):c.jsxs(oa,{children:[c.jsx(aa,{asChild:!0,children:u}),c.jsxs(ra,{children:[c.jsx(Yk,{children:e("Seen on")}),c.jsx(ol,{}),r.map(f=>c.jsxs(La,{onClick:()=>o(du(f)),className:"min-w-52",children:[c.jsx(ku,{url:f}),Fn(f)]},f))]})]})}const w8="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3c!--%20Uploaded%20to:%20SVG%20Repo,%20www.svgrepo.com,%20Generator:%20SVG%20Repo%20Mixer%20Tools%20--%3e%3csvg%20width='800px'%20height='800px'%20viewBox='0.004%200%2064%2064'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M63.04%2039.741c-4.274%2017.143-21.638%2027.575-38.783%2023.301C7.12%2058.768-3.313%2041.404.962%2024.262%205.234%207.117%2022.597-3.317%2039.737.957c17.144%204.274%2027.576%2021.64%2023.302%2038.784z'%20fill='%23f7931a'/%3e%3cpath%20d='M46.11%2027.441c.636-4.258-2.606-6.547-7.039-8.074l1.438-5.768-3.512-.875-1.4%205.616c-.922-.23-1.87-.447-2.812-.662l1.41-5.653-3.509-.875-1.439%205.766c-.764-.174-1.514-.346-2.242-.527l.004-.018-4.842-1.209-.934%203.75s2.605.597%202.55.634c1.422.355%201.68%201.296%201.636%202.042l-1.638%206.571c.098.025.225.061.365.117l-.37-.092-2.297%209.205c-.174.432-.615%201.08-1.609.834.035.051-2.552-.637-2.552-.637l-1.743%204.02%204.57%201.139c.85.213%201.683.436%202.502.646l-1.453%205.835%203.507.875%201.44-5.772c.957.26%201.887.5%202.797.726L27.504%2050.8l3.511.875%201.453-5.823c5.987%201.133%2010.49.676%2012.383-4.738%201.527-4.36-.075-6.875-3.225-8.516%202.294-.531%204.022-2.04%204.483-5.157zM38.087%2038.69c-1.086%204.36-8.426%202.004-10.807%201.412l1.928-7.729c2.38.594%2010.011%201.77%208.88%206.317zm1.085-11.312c-.99%203.966-7.1%201.951-9.083%201.457l1.748-7.01c1.983.494%208.367%201.416%207.335%205.553z'%20fill='%23ffffff'/%3e%3c/svg%3e",v8="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3c!--%20Generator:%20Adobe%20Illustrator%2024.0.0,%20SVG%20Export%20Plug-In%20.%20SVG%20Version:%206.00%20Build%200)%20--%3e%3csvg%20version='1.1'%20id='Layer_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%20788%20788'%20style='enable-background:new%200%200%20788%20788;'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e%20.st0{fill:%230AC18E;}%20.st1{fill:%23FFFFFF;}%20%3c/style%3e%3ccircle%20class='st0'%20cx='394'%20cy='394'%20r='394'/%3e%3cpath%20id='symbol_1_'%20class='st1'%20d='M516.9,261.7c-19.8-44.9-65.3-54.5-121-45.2L378,147.1L335.8,158l17.6,69.2%20c-11.1,2.8-22.5,5.2-33.8,8.4L302,166.8l-42.2,10.9l17.9,69.4c-9.1,2.6-85.2,22.1-85.2,22.1l11.6,45.2c0,0,31-8.7,30.7-8%20c17.2-4.5,25.3,4.1,29.1,12.2l49.2,190.2c0.6,5.5-0.4,14.9-12.2,18.1c0.7,0.4-30.7,7.9-30.7,7.9l4.6,52.7c0,0,75.4-19.3,85.3-21.8%20l18.1,70.2l42.2-10.9l-18.1-70.7c11.6-2.7,22.9-5.5,33.9-8.4l18,70.3l42.2-10.9l-18.1-70.1c65-15.8,110.9-56.8,101.5-119.5%20c-6-37.8-47.3-68.8-81.6-72.3C519.3,324.7,530,297.4,516.9,261.7L516.9,261.7z%20M496.6,427.2c8.4,62.1-77.9,69.7-106.4,77.2%20l-24.8-92.9C394,404,482.4,372.5,496.6,427.2z%20M444.6,300.7c8.9,55.2-64.9,61.6-88.7,67.7l-22.6-84.3%20C357.2,278.2,426.5,249.6,444.6,300.7z'/%3e%3c/svg%3e",b8="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAFMklEQVR4XtVbvW4TQRhMSWwipYYngCeACsp0pEsJFZTp8gapaXgD6F0gETsIWaRIARIopAAJJAcJCgq4s5M4/zE3l6y1nv253fXe2R5plOR2787f7PfN7u05c3MVIGksLiYbNx92W/XnaavWSFv1TrpZT7Kfg5xXv3fQhj7oi3P4OjOD7ub8ahZUexjguGzW271W/THfZ+qAkYsauMJaI3mzsMz3nThG0rky1jr8OSpHPuJ57fKHq4q1zkRKI9moP5nMqJtYoRBwZ/UDTAdLnzmma9RNLMkb8rRXbjadjF4OfINZIccRhFkaeebYmZCWNMV1390enOy9GAgc7j5T+kRkwnE5oUy3vzxLh8ELXPR/Kv1i0Xt2KCPte1t3OWYtyhLCqxzSyKl//GNdO+omQIQSysKtFGKO/tm/LY5tBEff1wenf17z4REcZ17B1w0llu4cr4I0wuizyelw9ndr2P+iv8fNI4iXDQWLpDRC8KApoMuzZND/uqb0Fzz59ZJPGSJiJphLQdM5mP3dpxxDlhm3lH7M3vs7fNpg/8OS0m8cctw5ktbCMnd0YT9LT8Dk3giIj4EHH5eGAeqEwXm64ygvAcws3O5CrRdc79UpnW1kkzvv7Th9KPYHV9c/+ramzCZBpdGst0eC93V+Dpyxv31POQfEqNrq3OYPmDFsOMxKjs+xsducXx0K4LuPZxKgyOQEdSbpMpI28XwFGMkCpbGALMB5d0c76vAHpCwWQrp6xqgeflpRju9v38/vgTWCrqRgsFwK3gK0JDPkhiKyAEdZgNxHNjnAZJJM2eQEdCJwFgULkLT9H3psAmCki6ALiAXTQe4fQ4D8Iel6Z1dptPEoq3MZsgAuDz3IBlxDnMOCmiB/BlkA/G6abm3Mp8Or11VqowsPPq/kN/cVIBTyvXFfmKLOW1yJ2IPmfyZMSfxelQCnWfD8ObzZrDWC1v+oVz4mWJUAMmGcOl8pZvZwFLLVjZrFqo+Pgy4mGAq+lyCmxBATTPFgpDlYSNm0TNOb7qEmBFhc8bVBni4DBRiMLQCgWweAwiRDgdWhyeSQgTLCBQgsARkmAQSLngEYLsGwsC7naJiXQEfTYKVNAJiR6ckOu0BFwPKYzxM7TPKxOALABAOmwSIBBE5+vxpxZ90mCUO+D2Yb+V5yWxQBMA2GLIRcBQBkk/QVgCG3xRAgXwiFLIV9BABE27QJsL9540H0h6FZEmD4xogbimgTAMTUJe/giOOhAug2RWMIEG0/AGbHfUAx9Ym/fQXAIkg3KyDL4m6IRNoSY9dn+grAxKwAU9XBWwB5Syz/YiN3sNAkgIBp9TaOANgms8FXAOVlqW8WgEUwZQPXLyC/KpOJrXAbcC0+p5CY/xkh06HLEtfkD7JJ6kwOPO9+ka6kQucPLuy9rT3i+HNwRx/a0pv7utIEk2Cu5LiHCHkwkmnKBtGOOjaVBcgbLQyku2+tq6zgDTGyQa5z+fhVIKOvwuQvUMjXEYA/hGx6qiwIHgjxAhMFxN9cJsgG8XJVgM8PMjkDFec3YdxSMJEF0IHPiUeH0RfwfVnqykkK4Dz6AiEPSS607RWaFlDj0vtrcgJlloJskjA53cvVOPRIfR3KKgfQ9C2QWPROexP4wrNCjmMslJkJsRlt5BlphEVS6dy0fA0uBsqaHWIw2O19cV0OHf4AE2M26qWlvQ2TF6LWyXd2J410EiKUXeshwEZDyJsmZzbr7akY8SJc/2NlWwkglFng2Lfk+8wM4M4YuW7T4d/nsz7oW5Wj/wdXGukMTSgLegAAAABJRU5ErkJggg==",k8="/assets/buymeacoffee-o_lQPb66.png",S8="data:image/webp;base64,UklGRtoLAABXRUJQVlA4TM0LAAAv78A7ACqr1fbPtqTkH2TT++x95vmOZz5H3Opb57/3Xr8/c32eUXYAjA5NKTyEgNvMQzlc+aoUeq05BFA4PL7+TCcGUkB3ADeBK2mFQ+Mp9y/N6MYICOEGQALjSQHHWtf9ahELavKTQ5MBQbBaEcBMChUDUw8WRwxIbA3htEaOp9AdAkhsrZ9jyACHpSJgiKA06F8aBFCR0Io0uKtzkAXZtmlX6+vZtm3btm0ztm3btm3bTq5t20okAABAtk1u27Zt2/Zn27Zt27Zt267brbbt/k9AAHsO+P+A/x/EbgC7rwTgPgBMGwFsshOPenhSj4IZiFgDEXOqAwFjpaErACCAjVaCRkzaZEY5/R4OCW8hHn0WyYAWr31zFhLA+hCOjMRsE8UbP2AhKFk5q8HJtAIB7LKRRniyiR4SImyhstY3bmK5tg0WEsBO12cQTFRtPW3ERRfejBUCEzkAAthiISib2KvBsZAlbCOtxBwT6/0TNuKxjgCZaGaVwEIC2OoGdIKJ4u1fNuKiK+/U4EQvc1sWgoqRg4keBo6ZVXwGgMgVACyVN5hY6RwE26IHREIASh8M6qm5S6X1ax1DV48U/IlBbqLm6GcHPoC1ECnsf9bMKV3vHB5JOBrD6M43ZwEBrANysLnuH70+ODXRSDSeIy5tLriWdjMgN+tIzT24gwBpjCdK4drQdMXY4TIwI9sMKLzSWGnsGku5GveRkLlc01Z4rgZkNAPKpg6diQVN5KHOFKhi5wnM6BXAail+0O8iwJrcPg1X9QoVEMsjBztXOwY12T08qvzfVhyldqXmFzVWCTXx60PT4YIzyKjkMe+MzGoanmjGZIijkUfpk+FBTckeFhFtvw1PoEzqMWmanhOttOoehM+QJ4BtaBdVa6oulzXAESeA7Vip79SU7YzNz0GamazUdWjq9sjocO5pUEbahdWawgM2aQ66oOYXqak85FLnjiooPPx3Ip10wCThWpoEsMEd0bTuTCxKRhEvKzVtmt5LhdVCERSeqGial0zsQQ8vfeJKHMYSzm/XhqfbqYV1n4iKg1fJ2rVo6VT4Z1m0dCxau5TtPGseIa24zJW2/i4BNWSS4rNS3UoQVF381XifhG4X15a+mYa7bznBZgXz6NHvqp33atfwTfFoF9XQw8s9plbb+gs3vwPYDWAnb95/xgGucOv7UkXjSMAwN5bxwoVnd8mBiqOPml3rHglhgyCAHTzlBSBlI/sbDQ2YxDmYnNKZXDIyknLKv6wkgFVsNIMUbnzrjC+YWO8ZE8fkdPnz7yY6qYk+FRvOOQU2D3l5n4KdWiutUBZMTzRT8tTgP3OwHhxHD7QyiydayVTGSmHF1V8ypqfH7w2M1eJw9UVwTBdSuPerT0ZPYcAmFx79h2eCHo+23/q8gbp/FDi+cKstffvVmVzKwVYwSVF28tbpD1kk8THiR0kzNX8/lksb4JgoreQ8A82kHHCsM6n5RmyqHhwnCyaq/NDAn4/Hi73UPIKvaiznF19qimeizlyfjp/eiEfDImbM0ohI2tcXw0XnwGQNYHMOgCGHOr0+BoEsdizt4poNa10jDkxXFx178rPp9RAQzOKX4V9DAWPIo7XSC3EugD2UiR7+Pjq9PgaOLH48w3yOjEmT/6Cj0x9LebgtAcyLS0xbl/+ib0CL9/4gEeR1+beaJjpj82Il0e2vE7XYgFbtvGAhu+Hu2yMx28RELy/9t5U967htPmSTTeiZRmQyYBsePRrWiOrT8re+i7MLlrXeMUM60clWW/vyFz8IZjaBRkSKKdVDneGZd0Dg7aH439qcqo5kvJX6juIjFRE8amYFl9xQwIiDqm6v9YxWrT0cgN0Z+Vh+EpONPTTsR6WvJrldNwC4PdrhJTFS1YM9PHK5qqVi7f5MJ8AO3TIM6PhYbXxPn0lcG5hsRCQXjWzmAmQ0Y9SDY2O3z5GI1UFBm4k5xe+mECwolmHAIiVCVScGxVDCXm3qqXoEOYEnF+PZSdl4Yb137DqB88RiuStBqnpxubo12nxLsEer29yxRKlqdwpUNnUE9ijFKDxTO5Mw1T4ZXbH1BDyhGFXXgMSp9ojLZWN7OEJ51Pwik6f6iejYU8zIxB5/SwEdy/n10AR5FJnYo2RsdzB5qusDkw5kYkYIR/+dAjrk00PYCTqxk6W8yhTQo8W3OqATeyk+VXtj8vTk+0EnZuDFxxKn3y5+NACheA852NXKKhmJ2UnTj0T7H4BQzOeQg4MvPZMw7WLhLoAtlGI+B1fzCe9hEcnSdm45aMV8LZC//mW5pvVnSZpMK/NXP4NYzJkDSm/1//vtxGhnYkFm1GLmDCLlP9Z/GQqZCdHSRwMQjJlngBQufGyk5HaGZkZKwckEdCYXhWbM7B3ElX5ZHF4fnhkK6O+Jmd4ZwBqqbbwEiMs/Val6hfymR0HfG6dWQRUot3HPAQi33yj9s25nlnTR0INxGdDwQr2NfhdAbvvV8i/Lp4549FhoBMCfLGCjvxVA6a3uatvAZFoRg1pYPCxh4wKCZlzmtrHlymabYOY94PzEIDfUnVgSu2DOJH/tS5+KNTOS86yDGfMuHmlkrBa5PetghLB/yKOZGGskEex/lH0wqh7BJo7mDz11NDkHEZecDAMu1cCFwvkPNEEONqw29w5p+Kuj9VeRGJbl0noDE52scOkTRTyKj1XuVdVtdy4xqMWnG7iQP/6SIDtSD0s8pBufJgHsSkzZ0sXANRGcuEwOYKWmTa+ynVMmiSn/tzNw83xBDUR77vRwSN3keyUpFe9QAyOVEJ4WMyn/tb5bN3v0IUhIM6PQQI+wLEzK2+TwId38xeILTSRC1jqHDaw19dICWGsf1P0eq8WFe3+QgIUbyfkGmnllIIRHCCcHHIpO8UTZwll87FALiVODpfcGhFhI2cb9PTrd/8m1Mdty95hARgaHVmaJTv21DrHyaOdVqMHu+IIwFZGDtV9Rg30yuvDgryxihIqlq5o8DCqg8FT1lBp95BcAHxeUvpvcbGR+LREu55ae/LGafnLZyE4Qi5lULFwuqMkuEiJMRFRMnDSGXQSocOWLYGYqgN2Qdm6Fmq1YuIIMX4uDandisfTJSOAyAwtI6bPRgEFUsy/AggqfcQMGIRaqL2qlFUSHHgK41k9j4YDST4suAqym3wAmI4qvtf8TD1U93UovKrzTzsEOAHA7md/gsx0HiMs/U3nCgE5Q40fcFh0YjfjM2KjqkQ4W/vaaW1DByCY6+2ruICICN49ufClZODWC49b6J96ncaz5R4EJmWGlpTdG+9we8minvtNjEnp0XJe0csstp85c1Jjeg0uU4Ee5LhIcswQ+snD/N5iWzvVpuJRrxmeBqenckVTrjC9IRg52eGKKDTkUdy0T1LkuBpZaY5UoXHcZTFLnfp1SX87f/w0m6mWcT6WxRlL6YQYm6x4qVm4jMTt9RlJu8b0emLAe4ZzTndG5tBnQ8flb364EgGnr5HUTnSxVOiOzczB1M4Sw/Xcp0ozLkluZwE7K/2wHTGJK/DV/8b3MmMZAIzLl7hS45ryAybwH99GhmJWwiV6+2jkUHXkiGVN6B/Mv9cnoBJ184cfhmNpbcKV/Np+YqMXJmKiEK03dhQd/AM8EvwSEO2/UQ+J7GHj8+qSVRlRabvNlwDPRvQPC+acbsRndKdCJGA3ImHZBVX7/I+A4k352XKL99y7GZCznr3ePPCkEQOAyJj+qPmFq+sxYI/5pd3h2qbyxFhqXh/Mi2GErlJXadhMDFnm5uK6dVVpPyq74hX/6ThHguGdLnKFHxZpoFVZ9FQB2PNukC8+82DZRfq0Htk+8Xk1iz0baeZUmbhK2T48uFm7iLhu5nFt84piJw7AQFF5qqMk3WUkzMdvEGbdlHx7ro3MmXoPMPhZ4tYnV3lGwfbpo0w01WfcOtxHU/SKN5B//dTbSTM0zMRaxcrOPPspCXLTzjonHw1sI4/9DAWN7LOdN9ymdycVw2dnjAeyxUrho4cVoycVo8cVpRssufwy7bKl7fzo33S3PB/x/wP8P3B8A",x8="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3c!--%20Creator:%20CorelDRAW%202019%20(64-Bit)%20--%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20width='100%25'%20height='100%25'%20version='1.1'%20shape-rendering='geometricPrecision'%20text-rendering='geometricPrecision'%20image-rendering='optimizeQuality'%20fill-rule='evenodd'%20clip-rule='evenodd'%20viewBox='0%200%20444.44%20444.44'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3e%3cg%20id='Layer_x0020_1'%3e%3cmetadata%20id='CorelCorpID_0Corel-Layer'/%3e%3cpath%20fill='%23F5AC37'%20fill-rule='nonzero'%20d='M222.22%200c122.74,0%20222.22,99.5%20222.22,222.22%200,122.74%20-99.48,222.22%20-222.22,222.22%20-122.72,0%20-222.22,-99.49%20-222.22,-222.22%200,-122.72%2099.5,-222.22%20222.22,-222.22z'/%3e%3cpath%20fill='%23FEFEFD'%20fill-rule='nonzero'%20d='M230.41%20237.91l84.44%200c1.8,0%202.65,0%202.78,-2.36%200.69,-8.59%200.69,-17.23%200,-25.83%200,-1.67%20-0.83,-2.36%20-2.64,-2.36l-168.05%200c-2.08,0%20-2.64,0.69%20-2.64,2.64l0%2024.72c0,3.19%200,3.19%203.33,3.19l82.78%200zm77.79%20-59.44c0.24,-0.63%200.24,-1.32%200,-1.94%20-1.41,-3.07%20-3.08,-6%20-5.02,-8.75%20-2.92,-4.7%20-6.36,-9.03%20-10.28,-12.92%20-1.85,-2.35%20-3.99,-4.46%20-6.39,-6.25%20-12.02,-10.23%20-26.31,-17.47%20-41.67,-21.11%20-7.75,-1.74%20-15.67,-2.57%20-23.61,-2.5l-74.58%200c-2.08,0%20-2.36,0.83%20-2.36,2.64l0%2049.3c0,2.08%200,2.64%202.64,2.64l160.27%200c0,0%201.39,-0.28%201.67,-1.11l-0.68%200zm0%2088.33c-2.36,-0.26%20-4.74,-0.26%20-7.1,0l-154.02%200c-2.08,0%20-2.78,0%20-2.78,2.78l0%2048.2c0,2.22%200,2.78%202.78,2.78l71.11%200c3.4,0.26%206.8,0.02%2010.13,-0.69%2010.32,-0.74%2020.47,-2.98%2030.15,-6.67%203.52,-1.22%206.92,-2.81%2010.13,-4.72l0.97%200c16.67,-8.67%2030.21,-22.29%2038.75,-39.01%200,0%200.97,-2.1%20-0.12,-2.65zm-191.81%2078.75l0%20-0.83%200%20-32.36%200%20-10.97%200%20-32.64c0,-1.81%200,-2.08%20-2.22,-2.08l-30.14%200c-1.67,0%20-2.36,0%20-2.36,-2.22l0%20-26.39%2032.22%200c1.8,0%202.5,0%202.5,-2.36l0%20-26.11c0,-1.67%200,-2.08%20-2.22,-2.08l-30.14%200c-1.67,0%20-2.36,0%20-2.36,-2.22l0%20-24.44c0,-1.53%200,-1.94%202.22,-1.94l29.86%200c2.08,0%202.64,0%202.64,-2.64l0%20-74.86c0,-2.22%200,-2.78%202.78,-2.78l104.16%200c7.56,0.3%2015.07,1.13%2022.5,2.5%2015.31,2.83%2030.02,8.3%2043.47,16.11%208.92,5.25%2017.13,11.59%2024.44,18.89%205.5,5.71%2010.46,11.89%2014.86,18.47%204.37,6.67%208,13.8%2010.85,21.25%200.35,1.94%202.21,3.25%204.15,2.92l24.86%200c3.19,0%203.19,0%203.33,3.06l0%2022.78c0,2.22%20-0.83,2.78%20-3.06,2.78l-19.17%200c-1.94,0%20-2.5,0%20-2.36,2.5%200.76,8.46%200.76,16.95%200,25.41%200,2.36%200,2.64%202.65,2.64l21.93%200c0.97,1.25%200,2.5%200,3.76%200.14,1.61%200.14,3.24%200,4.85l0%2016.81c0,2.36%20-0.69,3.06%20-2.78,3.06l-26.25%200c-1.83,-0.35%20-3.61,0.82%20-4.03,2.64%20-6.25,16.25%20-16.25,30.82%20-29.17,42.5%20-4.72,4.25%20-9.68,8.25%20-14.86,11.94%20-5.56,3.2%20-10.97,6.53%20-16.67,9.17%20-10.49,4.72%20-21.49,8.2%20-32.78,10.41%20-10.72,1.92%20-21.59,2.79%20-32.5,2.64l-96.39%200%200%20-0.14z'/%3e%3c/g%3e%3c/svg%3e",A8="/assets/dogecoin-doge-logo-Cy8MiZHN.svg",E8="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3c!--%20Creator:%20CorelDRAW%202019%20(64-Bit)%20--%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20width='100%25'%20height='100%25'%20version='1.1'%20shape-rendering='geometricPrecision'%20text-rendering='geometricPrecision'%20image-rendering='optimizeQuality'%20fill-rule='evenodd'%20clip-rule='evenodd'%20viewBox='0%200%20784.37%201277.39'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3e%3cg%20id='Layer_x0020_1'%3e%3cmetadata%20id='CorelCorpID_0Corel-Layer'/%3e%3cg%20id='_1421394342400'%3e%3cg%3e%3cpolygon%20fill='%23343434'%20fill-rule='nonzero'%20points='392.07,0%20383.5,29.11%20383.5,873.74%20392.07,882.29%20784.13,650.54%20'/%3e%3cpolygon%20fill='%238C8C8C'%20fill-rule='nonzero'%20points='392.07,0%20-0,650.54%20392.07,882.29%20392.07,472.33%20'/%3e%3cpolygon%20fill='%233C3C3B'%20fill-rule='nonzero'%20points='392.07,956.52%20387.24,962.41%20387.24,1263.28%20392.07,1277.38%20784.37,724.89%20'/%3e%3cpolygon%20fill='%238C8C8C'%20fill-rule='nonzero'%20points='392.07,1277.38%20392.07,956.52%20-0,724.89%20'/%3e%3cpolygon%20fill='%23141414'%20fill-rule='nonzero'%20points='392.07,882.29%20784.13,650.54%20392.07,472.33%20'/%3e%3cpolygon%20fill='%23393939'%20fill-rule='nonzero'%20points='0,650.54%20392.07,882.29%20392.07,472.33%20'/%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",R8="/assets/geyser_fund-86bbD7gW.webp",C8="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAAflBMVEUAAAD////8/Pzx8fGoqKja2trCwsJLS0stLS3h4eH5+fnGxsbr6+uurq6VlZV4eHhubm43Nze2trZWVlagoKDS0tKFhYVeXl5+fn6Li4vMzMxjY2Pk5OTW1taQkJAnJyc7OzsVFRVNTU0ODg45OTkeHh5ERERqamoZGRkoKChaaFgXAAAMK0lEQVR4nOWd6WLqug6FAyEpUMYwF9oylHb3/V/wBihgO7bjLMkZzl2/ztlpU3+JY0uyZAct3+qHUTwcLdc/x2n3fDgFwelwnr5sx8t5Ekdh2/vfDzzeux0lH6tuYNd0+5G8e2yEN8JeMs5jE/U1TnqeWuKDsNdZFYB7ajaPPLSGm7AfT04Q3p8mcZ+5RayE4RB7ecqrHIacjeIjbCczBrybjgnfm+QiXEzY8G76WTC1jIWw3Skybrrqs8MyWTIQRmMPeDetdzUgXPB9fTqtyNYAkXDx7ZXvom/iB0kifH/xzkdnJBBGfvunqCPB2IEJQ+7pwa4JbAWghPNS+S4alUr49q90wNSvfCuNsF1uB31qgpgAAGFcEd9FryUQ9rcVAiKvsSjha6V8FxX9GgsSrqvmS7XxSDjw4UIU177Q3FiEsMohRlaRAacA4aZqLkEfHgjb5VmhLjo6j6muhINz1UyKPl0/RkfCRdVAGjn6G26E9RljRLnNjE6EnapZDBpyEY6qJjFqzkNYp1lClcOskU+4rJrCqnwTLpew3oAOiHmEde6iN+V11BzC+g4yT+UEcOyE5cebEHVwwqTqtjsqRgnraKrpZTPgLIS7qttdQBYz3EzYryImiqqLEPpfVeLUqjhh3Wd6VcZp0UTYlGH0KVPsxkDYpFHmLsNoYyD8rLq5gL6LEPrLPfAp/aeoJaxn0CJf2tVwHWFYdUtRnXQhRh1hvSKjRTRxI6xr3MlFGhs8S9jYPnqVCyFHAmV1yvbTDGH1S6A0ZbLEMoRVt5CqzzzC+kee8qTGNBTCJtqjqvpWwmYPMzetbYTNiczYtLMQNsuvN2lrJmz6THFXZCScVt00Js1MhE11mrJ6NxCijv1++LHnbN9dU9gRP+oJ4Vd4qTrrx8wJYavOjhAPi7SE6EB6vt8g2pCKup46rO+BM/QOMx0hPBcuhS7x9oPe5amJkGMB5+r2NISwOSMHKkOiZTuSjC74yxlnCXHHVy0z6+Ph8rOaP9Kmt+pB+IHeatbKaIANgv+S7K3gmNEjEeVBeEBvpV2B3QF9XnsjeBX64SfeCd/QOwWGCuXXguPqRp9sGMHtugdP74R4gYEesFXMmZ4NTHeB23WP2Pw1EP+iNZ/hXb29600sOb948VhbIsQX06y5Hm6h16XtFvjkk0iEeJjbnnIdXqszvtej5PV9F7ZTpf2l3e4PordktL5aUXt7nijuDsxEQkIU2PgB/am/s/1EGOVtpYAPNX8LijfCIX4b7g0CVPXxpg0FQryT7j0DUhZrV09CwnMy50BwiVCJ238QEpz7tb15DCJUksUPQkI9IVrZ6S5C2svkQUhwXJ2SyUki5Eee7oQ9/B6Bxh1gFmXBtvdHSLmHNfGRRYSZ7OquXAgpixVY9XERUbKzVn+EhFtkFyTZRYri3ggpn6E+hYVVpKWG3ZWQlKTnv5eS3mFyJSSFcv2PNKQXsL4SktZj/M+HlLH0YjYHxNwEHzusyaKt2l4ICQ5YGWYpMVGylxJS+rkhpZNZlJXpOCWEQ8GBtQiAUZQ8tFFKSLBo/BulNxEmjG1K+Av/tn/v9y78LXRbAcG/L6ePXkTop+0A/+UC+xqQhUdNwwCfLPxvkPsU3tN6AfwV+49fiIJf4msAG0XlfYUXDdBmJgFaB7vNbxWr0JDuPEBDWf6dClmo6bUJUKvPdzRfFTrWrAMw4Oo/mq8KtE4nAfiL5Y6kF4EDxjEAN7fyH71QBcZrvgJwaafcueIi0PjqBlg986F0QDQf5hxgaxYvec0JBzeFuWNu/+9Hc38QGzHQPKEfS0var8sX4b6Hz/12ORq+vkW93W4w2PV60eLtNemMNuvtcXp+/uRpOu7Y1ryxUR9ddTL7FQtaduLU7FWXW11u2r4o2pNv/WsKo6P2JfYWDduJ8NQUGToItpB4Ar9EfSCYq/hUb9Vji4CHANtLT/u18FXXaiNAGOE5wGL6unfIkAD90Fhzf6yXTgMsmUPzHZLWFzLSOGcY4THAAnXZsZS7fDhrAGCh6y3oH2ZdC81s9T1zjMV+aYzj7C5lWE7MGPTxM99J1kG9nr8R5j/49cWO0WT4Z17iEWrpEozTZPJmVZLH9qJ50cr78lxPnZgz3QQbE+cBFv/4Uv+8Ouk8vSs74tMQVaNp6sZIYBgjQeOlSjhYxRBTNGzzmDivqi1RrHBwKIuDd+wXFQ9YoZA/U7MLKkd7FItBmZHAaoIIXbdQohjKiCynBZtnSjmFWlnPVkYzMHMrRNeelAcse6dH+aL5Ico/p2QQTq0P0VVtdP1QecDyRdUeMHnnqoWt5L3IF7F2duE1YGWkky+qgTiTU6U+CaU7S9fAvrbF1/HlCVm+pmbnmz4h1fhUBpO+5ZqrLuv4oMUsvyf5mhpqNM1IqjevzDnSNdDDT1JCcLqQHXH5mvoOXQmVXTmka2BsPsJzouSRTr2tLFM3UettlOlCvIS6LtesLzCuL70o2WZUvy9TD1O9TNmCnJovOeuW1wZm6ksDoezfq6EkU3hD9VBkP0faEAnMNxlfCUFjoWtum2KXG0v/1P2A5N4kOhfo6uHwSohmY4jWtdKJ5P1TzMa9/MEqycpiX0eT7XekPO+JuXFyRaHZsZO7qcW4RQ+4ad0I0Sig2ISD+ZJtwhVfttKXfoVLaJXyPVcfrUoR34BiUgpukTVPRPyYlWCNGKhB8y/v9RZwWpTwptR7PMIcoX0J9vvhSqthTeH1woXm95oZOA9aDE2rj7l7G0VyQwin27S/UF0HcYUSPmaqdSeEa9eE4S77nPfL+dhlDf13PV9nByPBooNjzc/aNTwRWjD/eU+cE1xHPNb8rD/E7yE0hJCoqpHw6PAFn2cNKaESVViiISX9KxKsCbz+8Dba3QgJ9XnC94LvraFKcDoI5RZiLTec2xhIozqpRkyQ8NQoLRPr8SkF0+KsyHLA5YsQIqCsaP3NZX+EpMU/0USL4X1u7hLD4KQlO3lfDNpAKLkIpJPkp9LiMq3Xy3ubEGczedF7geasbmRvinZ6gbI/DXUc/FFWat42BdfCTqu5mg9F3Pr+PuE8wj3U8w0zu7j0F52xG+ZsE+/U3269Exv08FoehOSDj2bZVqYaRHFnNF4dv/fdVPuXq76n6X9/H7frUSfuafM46eeaP6JcD0IGo2uct1eNq0KGFLbsfm0sJz5sOVKHI45jv5+ln09CHoPktKHVze7mPGcOPz8ZIbDMlbR1GCd5WyMZ6JIx13mugm8uELJuBN2djJJFfoLwTf3BW7JhPXNCv39pa8/5N2467y8j5nwYL6JdKDHtovd4OB8tf47f/AfxGvagLWEr6H+zyWRWwn7MCwNha+//b5ciqcRcIuRzYavVu5EQTB2rm+T8W5mQM9RSnWz76rPm+VYlNRFG/t9mH6NzU2glbMThsXblnFHS/HNmfjNA6j80/QSI/LOCmNcfyla2jCFLyLv+ULYyOLpz15p3QOdTmj1/dZtVN/fAIMez8xrcT3X+6H/qDEttlEi/pTpHLKh8FTiH9P/gLNlGnr9W7DzgBk4ZplDtf+ZcblPtteVsdcqycPkybwhkJuzzB/n8SS0DcyIkJQmULctGJBbCBp2GaFsrsRE2ZkC1rnhZCRsS0zBs8OBE2AhEO2AeYQOmxbwdq/IIaTtFl6DcLblyCWuOmL/nWD5hrTuq0VYrREjaadivcgYZZ0J6ro0nOe1j7ERY06nf7dQCN8JaGnCOCR+OhK1B3TyNruvmm66ErX69/EX3DWKdCes1MTrMEgBhjcYb+4F9OGFrV48g477QxpuFCHkSGKnK7q/ESViDnlo0wbMoYSusNudmUngn+MKE3BuzFROQoQsQ8lTGIILOfEEIK0pnmGLZxxhhFR4Veu4SStgalLsWvoT3gIcJU39jXxrfhFDnQCBsteKvUvhmWGI8B2E65Oz98xGPBSMSpn2VNcc+oxX52DMyYavV85fXsNbWUpVOmFpycx9Ox+ec5QwNFsJUC+4XueU6HZOLMFXC90Ueh3xHoDASpr014TADXjpcVX5XsRKm6scTUjX3JOY+OYOb8KJeB3uVs7mPEzF9EF7US8ZFCgmn4yHJcLHIF+FF7Sj5WOVxno+boddjk30S3tQPo3g4Wq5/jtPu+XAKgtPhPH3ZjpfzJI5cKxQJ+h+KnpbOaAh3BAAAAABJRU5ErkJggg==",P8="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxEHEhIPBxIREA0PEBUPFhURFhAQEBIQFREWFhcVFRcYHSkhGBslGxkVITEtKDU3Ly4uFyEzODMtNygyLisBCgoKDg0OGhAQGi0lHSUtLS0tNzAtLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK//AABEIAOEA4QMBEQACEQEDEQH/xAAbAAEAAgMBAQAAAAAAAAAAAAAABgcDBAUBAv/EAEAQAAIBAgIGBAoIBQUAAAAAAAABAgMEBREGEiExQVFhoaPSBxMXIjJTcYGRsTRCUmJyc8LwFDOSs8GDk6Ky4f/EABoBAQACAwEAAAAAAAAAAAAAAAABAwIFBgT/xAAqEQEAAgECBQQBBAMAAAAAAAAAAQIDBBEFEhMhMRVBUYE0IkKRsSNhcf/aAAwDAQACEQMRAD8A5553BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEs9i3vhxYTETPaHsk4vKSafJ7GCYmPLwGwEAAAAAAAAAAAAAAAAAAAAAAAAAAAANjD7SV/Vp0aPp1JqC5LN730JZv3ExG8rcOOct4pHuuTBMDoYPBQtYrWy86bSc5vm3+0XRGzr8Glx4a8sQyYrhNHFIOF5BST3PZrRfOL4Mlll09MkbWhTmNYfLC61ShVebhLY/tRazi/g178yi0bS5HU4Zw5Jo0iHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAdzQn6db/AIpf9JGdPL3cO/IquRFrrxgVN4RvpsvyofqK8nlyvFvyPpGCtrAAAAAAAAAAAAAAAAAAANwTDL/Dzy1tSerz1ZavxyJ2lZ0r7b8ssXsIVz8AQAAAADuaEfTqH4pf25GdPL3cO/IquRFrrxgVP4R/pr/Kh+oryeXK8W/I+kXK2sAAAAACYZYUJ1FnThNx5qMmvjkTssjFeY3iJliIVzEx5AgAAAAAAAAAWB4PtHKdaH8XexU221TjLbFJPJyy4vPdyyLKR2dBwvR1mnUtH/E+cE1lls5Fjd8seNkJ0w0OVypXGExUaq2ypx2Rqc3FcJfP2mFqtRruHReOfHHf+1cSjq5prJrY896a4FTnJiYnu8CAAAA7mhP063/FL+3Izp5e7hv5FVyItdcMJVP4Rvpr/Kh+oqv5ctxb8j6RcwasAAAHtCU60N0O8dlc4vHzN8KUvrL7U1y5L4llat7oOHfvyx9LDhTUFlBJJcFsRY3kVjbaIRHTrRundUp3NrFRr0lrvV2KpBb01zy3PoMbR2aziOirbHN6x3hWBS5kCAAAAAAAAJidpWv4PL+NxaqlFrxlBuMlxycnKL9jT6mXV8Op4Xli2GK+8JSnmZNkNA2QzTPRJYhncYasrhLOUdyqpfKXz+WNqbtTr+H9SOpTyrOcXBtTTUk8mnsaa4NFUw5u1Zr5eEMQABs4fdysKkK1H0qc1NZ7nlvT9q2ExOyzDl6d4vHsuXBcbo4xBTtJJvLbFta8Hyki6J3djg1OPLXessuKYpSwuDqXk4xS4Z+dJ8orixM7JzaimKszaVN43iLxavUrzWWvLYvswSyivgUzO87uR1Oac2Sb/LQIecAAAmI3T/QvRD0bnFo/ehTa+Epr5L9q2tG/4fw7b/Jk+oWClkZt4PYEuLpdfxsLWrKq1nODpxXGU5JpJdb9xE9oePW5ox4bb+6mShx8yBAAAAAAAABt4XiNTCqiq2b1ZrZ92UeMZLiiYtsv0+e+G/NTyt7RzHqeOU9aj5tSKWvBvbF/5XJl0Tu6vS6umevNX7dfPMl6txoJV/4S8IhCMbuispuSpzy+tmvNk+nZl8ORhePdoeLaau0ZY+1flTQAAAB7GTi847GuK2MMq2mvh7Kbm86jcpc2831gtaZ8y+Qjz5AgAATDwc4RC/qzr3K1o0NXVT3eMe5+5LrLKRu3HCdNW95vbxH9rQSLHSGeQS0MZxalhFN1bx5JbEl6UpcIxXFkTOyjPqKYac1/CoMexqrjdTxlzsis1CC9GEeXS+bKrW3cpq9VfUW3t9OaYvKBAAAAAAAAAQG1h1/Uw2pGtZy1Zx+DXGMlxRMTMeF2HNbFfmqtvRrSKljkM4eZWj6dNvbF81ziXRO8Oq0msrnrv4n3dpyJezdAvCXi0JRhaUXnPWVWeX1Ul5qfS28/d0mF5jbZpOL6ivLGKJ7+6vSpzwAA9hFz2QTb5JNvqDKKTPhuU8Iuan8uhWf+nNfNE8srY02WfFZezwa5p+nb1/8Abm/khyyTpc0ftlp1KcqWyqnF8pJxfWQrtS1fMPkMAABMvBvi0LKpOhctRVfJxb3eMjmtX3r5FlJ2bnhOorS047T5WbFljo93OxzGaWDU3Uun0RistacuSQmdu7z6nUUw15plUON4xVxqp426e7ZGK9GEeS/y+JRM7uU1OpvnvzW/hzyHnnuBAAAAAAAAAAAAMtCvK2kp20pQmt0otxkvehG8LKZLUnes7S6lTSq+qR1JXE9XLLYoRl/UlmZc0vTOvzzG3NLkSk5NuTbbebbbbb5tmLx2tMz37vkERM9oSPA9DbnFMpVF4ik9utUz1mvuw3/HIzikz5bLT8Ny5f1T2hNcM0GtLPJ14uvNcajzj/StnxM4pENxi4Zgp3mN0it7SnbLVt4QhFcIxjFdRl2e6uOtfEQzZBYZAY61vGssqsYyi+EkmusjZhakT7OBiWhdne5uNPxMudJ6n/H0eoiaxLx5eG4MnfbaUNxrQa4sE52eVxTX2dlRL8P1vd8DGafDT6jheTH+qs7wirWrslsa2ZPY0+TK2rmsxO0vAiJmHXttJ721jqUrieqtnnas2vfJNmXNL1012ekbRaXPvLypfS17ycqk+cm3kuS5L2GMzMqMma2Sd7zuwBXIEAAAAAAAAAAAAAAAGeztJ3s1StYudSTySXz6EIjddix2yWilFnaMaG08Myq3qVW537f5cH91cX0vqLors6TScOpije3eyVKORm2X+n0iEgAAAAMD5azJQj2kmilHGVrRXi7jhOK39E19ZdZhNYl4dVoaZo391W4phtXCqjpXsdWa3fZlH7UXxRVMbOZz4L4LctmmQ88AAAAAAAAAAAAAAAAABkt6MriUadBOU5yUYpb22xEbs8eO15iI8rd0V0chgdPzspXE1nOf6Y9C6y+tdnW6PR1wVjt3SAl7QAAAAAAAAAA5GkOB08bpuncbJrbCa9KEufSuaImIl5tTpqZq8swp7EbGeG1J0bpZTg8uhrhJc00UzGzkc+G2K01lrEKQAAAAAAAAAAAAAAD1Ad/RPGLfBJyrXdOpUq5asdXVyjHi9r3v97zOlohsNFqceCee8bz7JV5Rrf1Nfs+8ZdSG09ZxfEnlHt/U1+z7w6kHrOL4k8o9v6mv2feHUg9ZxfEnlHt/U1+z7w6kHrOL4k8o9v6mv2feHUg9ZxfEnlHt/U1+z7w6kHrOL4k8o9v6mv2feHUg9ZxfEnlHt/U1+z7w6kHrOL4k8o9v6mv2feHUg9ZxfEnlHt/U1+z7w6kHrOL4k8o9v6mv2feHUg9ZxfEnlGt/U1+z7w6kHrOL4lHdLtILbHlGVGnVhXhsUpamUoPfF5P3r/0xtaJhr9drMeoiOWNphF2YNWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//Z",N8="data:image/webp;base64,UklGRnAIAABXRUJQVlA4WAoAAAAYAAAA/wAA/wAAQUxQSD8BAAABgJxtkyLlny72mZSwlVT0hKTgJGV31wxgk9hmqupHBq6Fd0RMAFolodM/OJllBjjPTg56HSTBBytBPbxjqO/HNaR6pxIsXdG9UY+Ra+PO6yVI1SZYz1RjqE35tAFpEWzRjOE24zYEgGCD6gy4KzchSOhmOkPuzF0k1GdUBl15WgNTKsOunEIuaXEzXsiAwe/us4lcw90jWuSUh4/0yDkfMoOfWfxf/F/8X/xf/F/8X/xf/F/8X/xf/F/8X/xf/P/NMEdv/kiPnPPhiBY55eEem8g13O0z+F25pMXNeJ4wpcZNOQHqU2rUlKc1Erpzesyc81UkCNapHjFXrkMACLZoFi8zbkHwVrCWaRYrUz6tQ9BaCRYv6d6ox8i1cefVEqRqQyWohzfOQPvtuIZU+KAkyMrB8SxHKM+O97sLSIJWAFZQOCBIBgAA8CwAnQEqAAEAAT51OptJJKOioSU6iDiQDollbuF1UQNYf+u1lbun5G9E9wDIXeL+Jfpf+39jP8r9QHmE/qP+oXWL8w/7TfrN7xXSAfz7/L9af6AHlm/sh8Iv7i/uB7ZOqveVf7p2+Y+cZEaTLR0kE0HyHvmBRyv38jzBReBRS9oD9NIrncKKXtH1YUUvaPqwope0fQbgIHwDWZzFcJIOelHbOwYkI9c40Ox3V7cMs38MLMDQA6FrPzii0+lKJBwYKLEF3ieRl5CFPIv35PAMdipdncI9cOJvwrqrNC0XWpTW4UXf0m9HjgJI4DsjuYKLs5vYIWYR1YOW/j78LCilZUjC/m8MshoaJfoT5pyurgwQjAiZ0cRmu0hpx86Nd8/El1pO4UGYNfqCkagmKw5PUNn/Jaruhpp1lM6xDsLCifI1g8P1B2UOEePGrRayaws0HQPUDaWidwpfDLdqucaJT7Vc40Lf2X9KfarnGiTiUWAA/uWU4qxFr1++lnoATDaIBsE2rY3c9zbboSrXcsvys4JGoKNraoGLgAADAa837puwP+ZFzzQ1IkQHRSBdeVwycifVztQKACuNTt+53sMecHpR3b1yE73VBIJN2biCBmop3ViSK0RVKqFx2b9vNCowYQkvvz8FSQ4Foy4aJVxPmZjsBKjTGdPsudl0eA4CNi/jvfI6vcZoTH1RH8uPGLg30qTNRhgQaDVy44wGohOYaQtI1R4BEw2gBUrGPmy/5BOGATv1SaSJ1XdnCuGKZSuaNgHCphCJrX1A53w37U6fEvJU5DWwVEOo/MB6JRZpSFunL1ARucKmTjt9udzAizQWubrz8YVrxP9fr4a51vXeg5vg7AZCXtLy5CT5uxwGGpdcV+NDmFcAKbB66JeRur0CbxYEhuP+9T9VBT7K0fkqjka7yKXzB8v4gfSTyj9vGv523/Vm3K2yqPOcHYX70hEyDWeBzGoWJB3PlGS+tge+IqLSO5aRwxaYs9YGhf2fw6pE7azU9z98FmI4yT7wQOYgo3TSREY1y7o3zZEhA+3e/IsCpf0+hXb1oNItmcqDWFGXtkcZIB1gnt+QibX6TIYWAuN3EkvxUSm52+WZY56wi6LBjMi5d/IFr5v4d+d68t0jzrlCJNHFk7WK0lac00BQmhEUZgfYv4b8cTY5jyymjgB3r35O5BjoDDBkeWCTrdcXV7Wzns2YtpRUyzpEopFyefSFd+sem8WtJCvoGshq9NPMJEVJkLl7aehcAI60Rya2nQr85C+G22k+VEYSJRL2o2+4fABVJaAuVqz8P+Fwwkeh2r3+XC5c4+H4CrW6P4HBanubBkGgCw6UrAIfExCXjyaL50MDmqWMo0Qc0xbxs1hHuHz4eNDVcTXnMpaAlX/jI9xP/6+OtdmIZEK7WNsY9jM/pRclpzHgHY2mQYCJnx9WBDxP6DWQ0S5g1WtRglwR6UKzWmaewov4EWy1x19H+EzqpEHa6gVpH+2/SxSpHh9XIE2rIQL6BoluzKOMhd3Iztvn4nJISGNCw+VjwdJ0VnUw3U3yZEksv4qv8P1VVj/iAsz7P143z+M5TFUskZH9vQX77GXrLVJ8efo7dcesZZm0D59pdCUzh9P5STQqofz7f7tfDAHNuGKfCbD8nnYDO7l1UhXBX/k2ng8OLzSdkfr/k64FMexFxjenzTe2RQAZutcFsXwQapDeqr/qa7QSx4oVQFleJxDTOo88TDgevubbzSCT0DU56y7kVa/1gJiseYDBpaDat0MUhr/+5tuk/nBcAnNNPG5iDA2rISVrjgx+/PUHBaH7rYaADWFNT5t8dWPS1Zx5f1SI7UF4bwrbQBkIl1NrUhRB9fzvmE2RL18p6EKR3/fudnTjGEzNJ9I+zknFs2oLOl2+h9LQ1/s/GF7N6w2MX5hCc12hqGxl4QbFKUj54SD8z/PHV1AVAcJ/1BHTcbqrOIZX9qAQGYHG68huf8mRlSnWBQAgI495MGqsz0zED7znrrsai1rnzPoe8Tohbr6Py6Aag1ZIAT7ZeIfMIxhieAWaB30/wXoFi9N1+Q64Bl8GnraVRhjRxf8FRAlX1RoTwt7hul3gQW8l2wAABRlPDL0rFwGkc92id/z6loFkd30B5lHJfqKHwmXXb2L5oQAARVhJRroAAABFeGlmAABJSSoACAAAAAYAEgEDAAEAAAABAAAAGgEFAAEAAABWAAAAGwEFAAEAAABeAAAAKAEDAAEAAAACAAAAEwIDAAEAAAABAAAAaYcEAAEAAABmAAAAAAAAAEgAAAABAAAASAAAAAEAAAAGAACQBwAEAAAAMDIxMAGRBwAEAAAAAQIDAACgBwAEAAAAMDEwMAGgAwABAAAA//8AAAKgBAABAAAAAAEAAAOgBAABAAAAAAEAAAAAAAA=",T8="/assets/ko-fi-Uiqp6w-6.png",j8="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%20viewBox='0%200%202000%202000'%3e%3cdefs%3e%3cstyle%3e%20.cls-1%20{%20fill:%20none;%20}%20.cls-1,%20.cls-2,%20.cls-3,%20.cls-4%20{%20stroke-width:%200px;%20}%20.cls-2%20{%20fill:%20%230d1437;%20}%20.cls-3%20{%20fill:%20%2314909c;%20}%20.cls-4%20{%20fill:%20%2322e1c9;%20}%20%3c/style%3e%3c/defs%3e%3crect%20class='cls-1'%20x='1000.3'%20y='36.6'%20width='497.9'%20height='329.9'/%3e%3cg%3e%3ccircle%20class='cls-2'%20cx='1000'%20cy='1000'%20r='1000'/%3e%3cpath%20class='cls-3'%20d='M930.3,828.5c47.5-284.6,351.6-246.9,387.8-241.3,37.7,11.4,74.5-26,53.2-62.1-83.8-143.2-250.7-236.6-377.5-243.2,31.5-24.9,137.2-38.6,249.3-34,39.5,1.4,56.1-50.5,22.6-71.7-2.8-1.8-5.7-3.8-9.8-5.2-153.2-47.1-317.6-51.4-474.1-10.3-116,30.1-228.1,84.8-327.5,165.4-41.5,34-79.7,70.8-113.1,109.8-249.3,289.8-280,715.9-67.4,1039.5,4.3,6.6,8.5,12.8,12.8,19.4,3.8,4.8,5.2,7.1,6.6,8.9,9.8,14.6,20.8,28.8,32,42.9,12.3,15.1,25.4,29.7,38.6,43.8,3.2,3.8,6.6,7.1,10.3,10.8,12.3,12.8,24.9,25.4,38.1,37.2.9.9,2.3,1.8,3.2,3.2,14.2,12.8,28.8,24.9,43.4,36.8,3.2,2.8,7.1,5.7,10.8,8.5,13.7,10.3,27.4,20.3,41.1,30.1,1.8.9,3.2,2.3,5.2,3.8,15.5,10.3,31.5,20.8,48,30.1,3.2,1.8,6.6,3.8,9.4,5.7,15.1,8.5,30.1,16.5,45.2,24,1.8.9,3.2,1.8,5.2,2.3,17.4,8.5,34.9,16,52.8,23.1,2.3.9,4.8,1.8,7.1,2.8,16.9,6.6,34,12.8,50.9,17.8,1.4,0,2.8.9,3.8,1.4,18.9,6.2,37.7,11.4,57.1,16,.9,0,1.8,0,2.3.5,18.9,4.8,37.7,8.5,57.1,11.8h2.3c40,6.6,80.1,10.3,120.6,11.8h.9c199.4,5.2,401-57.5,568.4-192.7,102.3-82.9,180.9-183.8,234.7-295,2.8-6.2,6.2-12.8,8.9-18.9,15.5-34.5,29.2-70.1,40-106-523.2,197-959.5-71.2-900.2-426.5l-.5-.9.2.5Z'/%3e%3cpath%20class='cls-4'%20d='M623.9,915.7c101.8-137.2,148.9-113.1,158.7-155.5,13.2-58-198.4-108.4-363.3,18.3,229-286.6,585.8-352.6,889.7-195,40.5,21.2,85.8-19.4,62.6-58.5-83.8-143.2-250.7-236.6-377.5-243.2,31.5-24.9,137.2-38.6,249.3-34,39.5,1.4,56.1-50.5,22.6-71.7-2.8-1.8-5.7-3.8-9.8-5.2-153.2-47.1-317.6-51.4-474.1-10.3-116,30.1-228.1,84.8-327.5,165.4-41.5,34-79.7,70.8-113.1,109.8-249.3,289.8-280,715.9-67.4,1039.5,4.3,6.6,8.5,12.8,12.8,19.4,3.8,4.8,5.2,7.1,6.6,8.9,9.8,14.6,20.8,28.8,32,42.9,222,274.3,576.4,377.5,896.3,293.2-818.2-121.1-693.3-795.6-598.1-923.7v-.5.2Z'/%3e%3c/g%3e%3c/svg%3e",z8="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAMAUExURUxpcQB/fzNcnDNcnAAA/zRcnT8/f1VVqjNdnDRdnAAAADRcnTNdnTNdnDNdm39/fzNdnjRdnTNmmTRdnTVjojNcmzVVlTNbmzVfoTNcnDZgojVgojVfoTRenzNmmThVqjNMkzdjpzVfoDRdnTRdni5cojRbnTNcnDNdnTNioTRdnTNcnThkqTNdnjRcnDNdnTVfoTVcnDNcnDNdnTRfoD1VVTVfoDNcnDRfoTVfoGqa/zVenzNcnDVfoDReoDRfnzNdnjRdnDRenzNdnTNcnDVenzNdnjRcnS5cizVgoTRXlTReoDVdnzJZmjZenTNenDRcnDVeoTRdnjRenjRdnTNcnjReoDNenjNmqjNepTRdnjRdnjFemzVfoDRdnTNbmzNcnTNdmzVcnDNbmzVfoDFYkzRenzNbmTlcojNdnDRdnDNdnTNcnDRdnTRdnDVenzVdnzVdnTRdnf///zdfnjdipfz9/idTl3mUvjVdnf7+/jZfnv39/jVenf7+/zdgnzhkqTJcnDpioDdipvz8/ebr8zdjpzVeniZSljVfoDVfoS5ZmitWmThkqP3+/iVRli1YmjRenjZenjJbnDdjqDZgo/7//yhUlzZhpDZgoilVmDlhnzNcndLb6TdjpjBamzZho9Pc6j1koSlUmGiHtvv8/S9ZmzFbnPn6/ChTlzRdnoCawjVgoe3x93iTvixXmTdfn4aexC1XmfX3+uPo8Vt8sCdSl/b4+/Dz+MDN4WGCs7HB2qq71vP2+StWmIefxeXr8/z9/TdipOfs9Pr7/HqVv8jT5U9yq5eszVd5rq2+2Elup0xwqeTq8oOcw0ZrpZWqzN3k70FnozFamzhgn3OQu6K10rTD28fS5Jywz1V3raO20tTd6ujs89rh7Yqixoykx+Hn8Ovv9URppNvi7sXR42+MuaS3087X56y913CNukFoo7nI3UVqpVZ4rl5/sYSdwyBNk7vJ3nuVv5Gnyo6lyTtjoCRRlWGAssvW5nKOu73K387Y5xtJkUdspk1xqc9xuHgAAABydFJOUwAC+/0B/QQD/P4B+vv7/AJK/gUrDvwXb0tx/vf5/AoJCv7YXGILee5HEL9f/i3+478ww99pA9nX0tsBbqjJpKZySOqLSl9maAvXHcjKHip3pqe84/lFiXcPEr/6Lr3gbdhfW8XTGssZFqmmp+fmieuLi+6BIMEAAAW4SURBVFjDjVd3XBNnGP5IDrIIUxEciAxFBfdGRRFbqXvW0b33uEug4cjA2CSEACFskL1BRQRx1NXWUeuotq4Ou/fee313lwu5y3eB5x9+JHnf+97ne+593wcAT8glEurPkNCNMRGrV0fEbFw1hPpfIpGDwUBORY8P2rRu/YacOjVEXc6G9es2BW2hcgwiBQz3C1+YojYYrYUyXymEb3Ch1WhQpywMktBfe4UPBiJnzCk35YiVUlkw7kSwTKoU55jK58yIApiPt3g/AJbOKi4RS2W4B2RScUlx9FL6RwLAZoKpU0wVQ31xAfgOrTDdeQd1TPTxAUgaoQ4QDKdTSI0jkuifotiLSs7rkOIDQFqYtzAKxaUEhC0wKPm1k2YtDdKNC6VheZhnBglYmVaj4D9Oa7O35FI4lu32qcKUdhs/gw8IizaK+PGkrbu6ur6+vrr+C87nImP0I1wesMDIFTUe8dqihqMEg91XdmrcM5iWjw7EOPc/3+ARj5ONTURzFsTJ9CMWPfcMhjXuepCAYQaFJ+H6gs+IHdTzs4ir7SrudwrD3f00BILQkaMQ2sOLPibyYbyOOPpRrZany1EjV4F5zgQz500zIu7f0XU2q5Q6QDrxSSXJ/zbAOE0uYQuIKfbHURW8z1Swg3iPRwEFpek+hgYMi5w+HKVf0nYaPpzm4K19Dk9VD58+GsPoG7g1bygiXtvyWg8sn4A0vFuEEnVA3i30EbCQ2SWoA6gy9kD66QreLtCjXqy62SGYHOZYrBajHqC3vMBQkEk0eXJIQfxSPAyXgMfHoCjUZFfdhLHUJe5uKNKiEviPWUNpYci4HJQGyMrDdDzxIvE1X0WsFnLGbYYcBAlUUPAmU0E60WnRo3uDWB0PEyxJUOLIS3iH5rCUaDufa0YnECU8BRNMUKO6kMN+ppnRAFFtNwt1J+MESMGTVhnyDrpZGb7St92MFAI+adfkOJCoKAxGcdh4iJGhjvj9t/Z9v6KP0KEIBfHIA2jfeP2gU4aXa89cPN2dsRd5D9YgMLEcKcOyTxkZ6ogLf0Ay9tuQUvKtmwgWITmsKjvCUABvASbpbRVgUT0MjPVMQOod+459QPcSGpmXL6IPABPcjkpgs9jP/Zyvo5+vO3Djl7O4TYsLJkCUsP/S323Oh2cR3/9Q1oWTuHAJfBJVZVeZSIaAtnO1VQ7hUQlJ5F+jvuA6Tb7zAJ/bHV4GpcyaChJFHCFBARzoudF5je0llwr0XhJQQtr8BOcI5pb/Ov+1//OXU4Y6AQG4SZn/Mmlb+2qLXN2w1+x11FMvE3yduQ1Jo7rS/idbwRGLtwqUCUuQDUVveZUdaV+WqbwkEKsXUyuhR0vbSfY6R9rBr1rNGg54LW08NZfm85oqafuOucZ04lCGNpsLLaepPgbD/Txq0BdcYrvh8a6G7RxU5XLa+mJqsmAh93AHi9le7RQi8eGJm8+748KJ442ua/UtoQeLx2gz555vI0oJAVzrF5ZrtGFxd7kP172WTudMhTRmcpCfnnnYNaRcwxXycK/7eCfLfoTDBIlM4uWqbI1rvMewW06gz/39aoSb1W72XeJjh+56hsqlwmlwNUasOKrGpqzmdCSyThI/9alcK04oDEQsWdRQFkTPN7VmxJIF5H7gUXbN07Q2ndrzHBJ7Tn3LDjmRYT5n7cfmRT7ELpqaygxBsENOZFrBXTTh3vrwXHbVJVWCcLhW3TD+yg+X7Vk1CnxQUNSkrUSt6w8uMIhkA4fLRIYFYWjDsGxtXuFgDEdyFNq8waIWDWh5AowjIgQsD6Ac3QCmK6DCNGWqoOlibF/s3OIKYds3N9ab7aPKkIO4pAfU0Hj6Syf1G89JUn9oPNVzZiwbwHgy1jckfO3T0Ovu6nBaX1nhLuiEU5LDQwa2vqz53hL+zNbJ26zllPkut26bvPXZ8MGabzf7n5gaGzF2bERsaqIX+/8/rDeCbjJNPnAAAAAASUVORK5CYII=",I8="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAALfUExURUxpcT8/P/poAP9/APpmAExMTP9/APloAP9VAAAAAEtLS1VVVf8AAPpnAPlnAEtLS0tLS0xMTPlnAPloAExMTH9/f/lnAEtLS/djAP//APloAEtLS01NTfhmAE5OTktLS78/AE1NTfpnAPlnAPppAPloAEtLS/xpAPhmAPpnAMxmAE1NTTMzM0xMTExMTEdHR/lnAD8/P/loAPpnAPlnAPlnAE1NTU1NTU5OTktLS05OTv1sAH9/APloAPppAPloAP8/APxqAPxrAP9mAPtqAPlnAPlnAPxrAPpnAPpoAPppAPxqAE1NTUxMTP9jAPpoAP9fAP9mAPdmAPpnAP9rAPloAP9qAP9rAP9mAPpoAL9/AP9tAP9xAPlnAPxrAEtLS/hoAExMTE1NTfpoAP9zAP9sAAAAAP9vAFVVVUxMTEtLS05OTk1NTU1NTfhnAE1NTfloAExMTP9nAPpkAPppAPpoAP9/AE5OTvpoAEtLS0tLS1BQUPhoAExMTE1NTUxMTExMTExMTPpnAPppAPtqAPxqAPpoAPtqAP9pAPpoAP9wAPloAPpoAPpoAPxoAEtLS01NTUxMTE1NTUxMTPlpAPtpAExMTEtLS0tLS/toAPloAPlnAPlnAExMTE1NTftpAPlnAE1NTftoAP1rAP1pAPtnAPxqAE5OTkxMTExMTPhmAEJCQlFRUVBQUExMTPxrAEhISEhISPpoAE5OTk5OTktLS/pnAEpKSkpKSk1NTUtLS0xMTPpnAKpVAPpoAPhoAPpnAPhnAEtLS0tLS/loAPxpAE9PT/tpAPppAE5OTkxMTERERE1NTUxMTP9tAExMTP9pAExMTE1NTU1NTU5OTk1NTfxqAPtpAPloAPxpAPloAPlnAPpoAExMTP9rAP9vAE9PT1FRUVBQUP9sAP9wAPtoAE1NTVJSUv9uAPtpAE5OTv1pAP9tAPxpAP5pAP5qAP9xAP5rAFVVVfloAFNTU2FStlgAAADcdFJOUwAE+wI3+wT+AwH9AwF7/V8b/vv81QL+1CQB+vrXfNf8BNb4/Kr7/v4o0QUXBarSGfkI7dm7kY7B8yzn8wJisywE/OcU9o9gwWr6bf2H+BfwCCMjNv79JPwZ7AQVJPh31Xzkd+0L/gL8DPpeZV/5/vKJ2CU4Ov0G1Nki+SknP41dzvf9941dupApPf6O/vhdYm1hbNaPjqnR5ezGxoiz7OyFsoSHh4fr6+wUdxsWE+3UByOt1hqOrY9gJNeudgNwcH5+r+Jd1N7Y2N3QGtXPP7o/kP2Q/bnOz5BcutmgRFCdAAAFM0lEQVRYw5WX9X/iSBjGX8pCmJBll7RwR+m13W5dt+26u7vvrd3u7d662627y7m7u7u7u1uAAClQKqt/wE0SQkISpM8PfEIyzzfPzPvOfABAI5cZf1Anjh4/9vW8IoIoavjq2PGjJyh80+yC9KIsAJafj/x5OBgJeluaGaa5xYsvD/915MdC/IRK58f2uYu+CHLBNlu2zUkwWIQTX7bhWy8tmisMSCEjBZMff9IXXE/bBK8swkavD/oeemwyUMbk/qGAxg/n2mkboysb3c4NH4/wMH0hCwwZ4ztPE0xSEfR535ghYEG6q2eEQQMitJNJKScdGTCIn6pGAym4w9fcnUmr7s2+24EaqCk+VVnMZTmZDOTM4oorKZc6v3kwl8tkqFxucGXiLKhCKM7czxOKoVBJMMOoCx3wY8KFUWBWtt9o3zimQxrnGy03pRHKRw7D62fL1I0HOoeNLAejtH2M90X4+gWJy5nYLxNBvpqRe42xrWWBsRyNd13um95tRHo/sc37ai7epTQ3VpyEyzXingk4FHFx80dcVloCkcV9uPkiHmabMG+Ei++Ga+F+PgBDeLfCJ750BCLL9zFs9fKjaO4JbAYXmj+ljBAAW4zQOQ0B+zuDcYsAIMqmzEcuXM1nhQAY0Am2pyEI/u3QSQDgCO9jO2VuXG6TAIXmlATsvw7MhRLAtrzRjOtwsvUQIwEskIqA/dfgARYJwBxqPYkX8fQpWgFAyQmiHykA9KnTuAsqgjYFAJJmiL0fFABbsMIC5WfbziQAkmQQ548SAGfazpbDuViAOEA/g7D+5ljnSgAc4Rz0imSrAToEhV8JyI70gp7aBLi0KoI4fwq0CXrCjV6nBqDOoHx/AsDpbYTrWwgVAKkJ8fUXHykAREsD9Ghi1AluSKyF+H4Ue5AAYJp6gJwzBqiuB4cyg5zfAfXVKgBDaAH1n+4Eq5xB6j/AN3e+97IWoJ3Ckm/qBIKQoaREmr8VvvvyM80UinQW8dsr33eVCVJ+K3TtduUH9SK2N+iUMedXNk8k4H549GGx/tifz/6+WFPG/3QaKYfdFciPZTCCeHbz/sAu9ipNI/2r08o5LGkK5EkEyZ8XMJEaQHbkb/hcJwHpkQmy30PqJPgH9hSVEYJmzVQAEggxvwIwc5boKSvaAx9UtBJNvBhlAp4grYMVXn+N9ysTMIKFaK3AM9y4YmE2r5I5M5QATOgmEPj6CX4ZMGNOiWBZuGIj/r5swfSreU2bPVVMHAPEMsh+CQAwdfY0wTJ9wTK9X1sSQFwHeE7yywD1rxtJagCf4ZkX8iW/AhC3UCkTeDwF/tpaf4HHkzIBv/EMSt0mAzxkNKr4wi5OGIiS4GoVAA+pvGbv0n8/VK1ZvbZLXHdHSz26Ko0ukUetXb3mefGIA+RY+e6lgD+ukCepQvKowKWclY7YJBzwzoZ1bpMke3KAPT7IvW7DK+LRJzbr2/5Vng5plb+LvNkADPBW2N0Rvzv8BjYp6wg1HSG4wzWQWEXkMDyQOcEdfsTgUHUBQtU14VTrp1zJ8J0GpOkifKe3P1SQ3l8Q8vcGpNOFyAE39Q2kC2E3BfreAg7dLkZW6NfHH0rdByF/n35gTbYLDIBu7R8OmUh9O2kKhfvfjBLqpxKOVjXxKT9baiJVOeykqZT1Pzixip9qKuHuqlu6gw2zIbKAtAsUux1fhvCtHUvrQNl+Sc4G/hzdu+/AQTbARoV9FYriy4MH9u3ln6AM/r8jfo5o9/5f/tj09CS7fdKLm376bf9u3ql3hPwPic7ZaQZjIx0AAAAASUVORK5CYII=",L8="/assets/patreon-CEgFdngt.png",M8="data:image/webp;base64,UklGRoIPAABXRUJQVlA4THUPAAAv78A7AFVZsbZtuWRnNzMzMxcdZmZmZmZmZmamZmZmxqpqZmbG4mY82F373d/7/S6MQ8gUygWmkAmUjUN7QPUgwomOjOoJtIvfHWbwvdbvYhnVmUCPIZF0wO+91nbtjw0nCiXTCLpWy7NW2Xbtt9gus9gjaNc264yAZrBDtmSvqFqxzLonEMb2GUVl7ZCrOHTHhxn+qewZxLYKeU5s67ZRkcyJ5vQQwok7I0BXMlTy2NAOs2boCbSjINl22trS/Gf2PoMxdMOJE1s6IIPgHEG4tu1sK7cOvtQ2ktRNVmPb6WzbNoLZtm30HxLbNpIkeu6Z1P52J1XVvf+Bjgzj5uj+OxqhwjbLPPMu0PDMh5BnPl2FJ6/2wtdwEuRn+wtaHadzYCl6nXboLMjuPOwRYPIwnpOILOhLA6FEQEeHWASKrQwl0727Bj/OBz1t+34fBz9saFRL96WjYMfNZWxFLsZ1mRBo9BjXY0KfcX0mcjKuzs2e3ISnxHBUjC0+VY89DAX52Qlw2wtXL+scWQry8zragpMqlojIVLk8bpcEw+tA0USfXl/DaWvtnqWejjExpmCJiUKdg8gERC3mqrT/5QNed7X3HN2075gSIzKWoOh6QqFOS4GVoCTweS/weee+NKOzZ9vZsYRFlovw9BRYHsp8fs5C9WsUo9nyoxwnr8gSF5k6JYZmHFuFVtRiM+/YYMESGIU6AiR/HHK3TisBr3vrUk7FEplc7MlI/hm+bb3vSyc+PycRMEUoVqHL5CpQ4pFuP0glrrfHBFCgIBQrsQgPSc9wrdnwNCLMxl4JS2ws3jdQw1rTh/aeDbnbVrME50OJKTLQ/6xGvUQd4eqlyZ59KpKxqoRIBbzua/UcbQQ9ba2I+ZxMEI39UBSIex/PHSjD3+NgE8ioyMZecROX9TZdDHRg6MLbdB7VJfQ9QThWvaStDHTZoQtROgrISCfRJXKs58jVaOK+gc/72ZmUkI5VJMcwz3y1pwiNZmmc+0gOJlnyY7GmK/b9PqKInRfBqpyEIyA53Qinac2ap4dAl901sViNAKuKCVERRSbNtnBZFQasPhEPDN2tUoOL9JIYIwoU9ogLtAe+pcUf//Y+P+eZ2CtDgdUjYvqpNUy7QgmaHT/SeSoL+SQ4qLaGlM/PKSV0mcm2vIjFQZaJfMPfprRajg5aL41laiRYi8VsdWs6uPN6tiinx7FQxEHax/fMngq82ouoGN8DC0km9A93n6LCU3uPdJuaAzIs2CvOPjb1pwGrIZrFk+Oh2gJT7WjAerKxOzt5JWgoEiAV8LpHg+7MZl6sVbNoyDJiYOCe0e45GkyarWDLEGFzMz7Ka4wGzVm7zSED06VI4KPn8dPlICIbedt+PDuRjqdreU9vMcPQ0YUCPMN1Yg4rAJwut3cbZdQwAYOMQedQudwgg5pJUS2qKgRt6c1YeLU9NDuRH3fc6VvqJcaqEPt1Ciw5h+o3UlBIBqHgbDMW1DADgcRQgFJpJKCrcUaNEnqO0sGYb3Y67viFTutC4Z0psOQ8ynPsBxCVtyyxmvrZCjLKrgfJH1lgsbPbv6DahmK9KbADajpoBVly7vBIpa2gozyoTsLKbIaHOtpF5CgFWrOd5x/rQXSrGlVKWwLS1faRBWZHeEyIKNClrO2KPwRSWSvKL2lLRIwyeHOBYJrCdQh7YveIWEzbgXwh62dLSA5tpNJmRZQh2wKfD3sjn+MPfN5NhBGQsfJ650GkkNdXWQsj4AwVWY7yQu0dh7pLGaRn0mJQBvFOkcXajxgNipTbPumjQ9gfsc+PPQ6CfNKxTDB0JUYjleyAqyFg+ON0O8RjTffphFEpapTEaFpEO8I1LeJ5oBbvjz14OVuhBlEjKsnR3Ai4nWTTJSq0x9qlbE0JFQhbYqLkWpKIWwjpxb5dbCxQQND3uElGiGEqcMtw4deICOdYwY5bKTCi5wmIsQosDnIq/9BSzYtwlTknxWj/L+Rg7/chxroAOZoUUUtxjYpkxqnlKIR6jn4dvyJIl1I+6JTEPGluhC3HGSii+f+yNcJJs/m/DRYQPl4tqIhhkmGuVckbjVKdHYtvQ+66mFNBaFsnY8Q8b6jSVuI2WWJu1kd0vI9nkTGuYiHSj5jnzYyw1RqrZMh6wRobl/E5MdAKiMq8s5OUb7GHmgnEmSN5k8ESG8ts5JNAVBZdLKSQNy5i8+AWxMpL46J9YIMfdvN4D8i3uluRwjgjLYzAXMpkFc+8IduQO/F9IDfjIGNVCholMV9yzJfFuKwvrjWNFSGvBqmsGRWkjNXLnG4vtMfE7/Nwc0yBVHaTE33PNTOi2VzDzqiW2KNCYg+QNQ1bou85Ln1woOpXhGkoJINQcLErSZlBMjfDAnu1t3si6sp8v89kIM+Lr+Z+RDASlOMjy81Fgc87iNZwRjtNgHAsv+mUZHRk/MgQ7Yie7ryIqwL55MeJWNOQ11WI40d1RXnmZ3dEXcqHQG5qJzkR80e9+NJUxdNyc+huDY3eW7oMxI0uEbnYbZAAGd9g+ctqczbAbR8NZ/KWmCgFRGW+xUnGn3w+JVxJKZoNud7Hy6xMSiAQsKYhfxXHr2KqEmGh1XHD9bPZiITgWHozCL5L6dqLbxVF4TK+O2DZkDvL1HwdHF1KZ45vtTII26wNwLKmsQKWqEHUSEpBk5+T4199kY30HteolrAssa/nijqBLDkLeiyDDE7JAThoHNdvjYQXd/k+kMo8s0vwPxAkU83Np0HCmbynYb+M/DWN43IwpvQtSFgN9juTkfwywtc0DBNQNjFiDsgUc2uYdhXJhtzJPt0fhxirgyC7FLmJIPtyQF45PvSEbVaQdCkLYDVM5W8ER15XIA4sfxj5M4ak7NIruTIQeoRf5JICuzZSMQenjqDa/y5pNRySLmUrlwbpUnJ6z0sF9cgkI82KkANUQRTPdcDBVXhOwiGYHVD9BPPItqFKONCULgoRjqlRhzDtemoKygjtUg499Bi9OFjJN48Ux/1lR3+NZiK/hMg1Dbnt+ztz0FnN55D03V1mck1fIbFLkV/STGH4R1xzFc7EDTZIxlrI1lpAOF31qAQll/+mvkq7cwJIHUXCNusDcPjAmi7/IQj/rp3lcL8s5HIDweop1KSIOcGksGiFYhw8w1VspuxAxgL5pHz7dDUT+Izde3GCypYr/Qgkk0gBr/snAhmrwGxXGiSMzxxqlIGxoEfWE9nr9r4rJ8g0LpIZoNkGB+2OHeI4n5aCMpAdQRyCVFFMel8kG3InsL12IEuwNZMcg3ib10n5xDJpNvPYagEy1mMR6D6dbbXBMmm2jK1UQ8jO3oZFikCprLYUI3FIRIqpWIhwCKy/Jvy8jrFsyPXzOo5LNEjlUxEwUei5WM4F6nCvFBiG2JDrWHIzIhAn+KRo1jSGuM91A5lEqhLV5GtRBDzz9zQ0x4eM9xq8IshYtTNGvuTBLcKzIXe+b4MFhKzkMxOIeKYK8cy3FZ7D99bBwk4Qvs0Rb+uV8sB3YjQOiUqxPSC6FAXxKoqiB57TCNj7Gk4SIQ0yVqHFRnzNAr4C0Y6g+3bMTH6YOX7SpUpOkT2iwxU1qlWYyhpJQbiaivLM7z6YDt+b5t0NU2ksCNmaFtF0U+ulUR2+tzyUqUEqO5Ntq5USiTHpvRUl8Xcp6ZMd2XF8PWNAHKQy/+wgWsGkl2rvWGQnEgc5utqx1GYkWS1BpRrVkhiV9p7wVsXi7lIMBBnuPG0jxkWz54evZ1W4uxQDRUa4TN0c3eF789l6EFnR10ClxKqhYOj9HLqr+KcbUgbE6bqTqkjSvddGjE7vrSCtAtkB1YtQmZNt+9HwcZ5fEwMFMVa3YouZI9Irt1kpy5NhPFOtm/UpG5MSrGsaNQWdA+tF9mKEtHbcEL+YbiCVVyVR6uj09zg5CumZamea2mQgXcqryFNV5AtxhUiz4sU4BfnZXpWKYU72cVzSNFRp1C0oDXTZtRcj9dMNoBCkMpd3dybLY5IE3NL19rS/GG3OHgNiIF3KCzmSmKksdvDxzL/IQYw4LtJrOvLj6lL2LpE1Gy2xw6W4T9D7Bq3/VjKxD2SsSlFDiPpFVlVBtDU4HbSIOmL/vzzWkw09Hb4PMdb1CXDiqorpJdO6S3LisUd62v74z1W780JYBdOFfgrEGU0VNhPIPDFT6Ca1BFTOitsXK6qrb+rjC/qKcaZ+9/5R5Pd5FLZZua+YAum7qsuDjKU4LoiV5sIgP7sD/ceaJ9/T+YcLdtz2Pl72EEk79rFuI6ZEfA3HW0MaZKx83gnSpew97nl4Z82aN1e0Kk67ZdvcV0yVvOA+CggFVxsHoaER97ivmIZxCNVvpqWADOKdskEPopIoLMVU1HPs1zDIGk7b6kkJIkuwi+ioyyzQaMdCMBEYRNLkktLRvRe3VY9iIfIHEOsv8TfR0Z3XdcWdQLqU7iDGPYx8gY480k0sou2I2QElpWNl+wC3g2QUghjLsfhmBlFd5H+j473VEN3CbjJSupR80SSkI+tJbdc7WFK6lHTZJqWj/rPbJpgz1d4FxMZLzPf7hI4OXtZWqlmIHBfEeLsRSla+PTwlyFli7+FARfbfiU8UMZNmphnmmVc63u8erl65hkLCf7qV23QgiiS9kI72GWUYPYUjQL5dLSlB6GajSEzH6HSsRrUWutvkP6H6recWynoQ4ZeIV3sppmRuCpA/88xnzYyBmHesD37YFDNGtFvuuRyIIffzQOvHlOzMJzgPgTjS3+PovMzBz+t4wzkBokxW97gvc5B+HURhUYvEzEGYJ5lAxFl9LuMLg/hbtSwHsTSU9mUO7YUciBmoKVS/xhy+MGY9AeLZwz8nP88c/D0O11sSICqLwtt03YZBKlMmB4gSqmCUypzRAiJlcEuZpLKKKEBs6JPtmMMbeOZ3XxCLrfk+DFI59mn0lRDqi3SCb+/fmYP/+8FaaxJm77Sf15kVc3Am7/ETAaJSASJ75iDKFmwgMke7iEkqqykAEX6hzsYcbvreekUCYtWQ2o9BJlWmHDpPCaGRSqa3Lf2Zw36rbSkOgrFCYdpNrY5jDp7wJkoIgKhZYCGTVKYLLhC6wcIklZaVCgYi1up/DnOw8vG9MlIIxBYxfELmcK9Jvj0nBjkmfE6s25lBKleJKQ5C/SIN024NYA4+vmebL1EQRkXGKJVpNheIgtEgZJJJpDJFASJF8EiZw8m8TTdPAhE5+TzDNXP4+/jfvnoqA7Ggq7oUc+iz6JqHOZdhmHZbs+UZZAl2sznOgcRyu0oGufDMC0T+tt2VcXN0/x2NV2IA",D8="data:image/webp;base64,UklGRgAGAABXRUJQVlA4TPMFAAAvK8FKEH8QEQoCAChT2bYLQJ36ba81kkuWIg5Bts3qr/07REQUKiJqKCj4iJxp2xY7efD2TUe5wy/4MrS24QcwkZqZWE+8xlu3zqV2aWMVDqfC3R3W93wluXc+pIzo/wTQ1bZtkaT8f/m1kVsP4bpF7iE2gjv0Zr7bKT6SoZVjdQBIHwBSJwCzGnJtZYT9hzgvDlXVzxdH9H8C9LuXvjwK5defv/fiE9vdlLTcBzNIat6/cHj9VHBFOP528pu+vLjdHn8Nn1zYYBFJ9U6b6JunvUnC5BlvEUlXYpvosreJXo1tEi57k0hXIpuE+40S7jeJ9NVmm2gc20TPGkW5UarYJmHWJrqe2SRcs4nCFpuo9DYJx22iMraJ9hqljGyibUZ53dtEuVGeN0qT2CQMbKLS20SZUU7ZJHzmTSJlNgmzNtHY22SS2UQnjfKRUUJiE+3piuV/mBc6M/+HqboirQ7k5LW6GSHpTDC7dj1ohLbSSDbxrglzQOrNG/Auj6S44JqYSGMlFnIkbcO0j0lzrV2Dcj+1NYayld9auh4xyX3fUsioHv61pQGV+64dLWCda2mE5X5op8Jau9zOOKKSK5HrCZZaiHKufmbApZIIB8BeE1oAO46MwGJkEWxRSZRgSogq6kbHgvt+zRB10oWDj68v+Lev+T7tIa6nHbDcg3eTPvUTyjsQFYTSPsVtouiAC1ZUEAMwS4kZMLWIe8hmiANk54iDZMeIs2Rb/r4WyEb+Fw2NskC25S9lz9/XWbJjfynn/lJmiYNkCbEfzHJiBszVQFgD1u3JAmyECBnYceJ6CtYivorBcqJyXLEn3wU7jozAXiMLXFYiB7n6PTrDNcsUWFGJNCnWiEfrGOs1UzkqVzGLWHs9O4+VQTNU+z2cQbkCuhUz2ayHjzqmgYrazBRlnl6DZPMeX0Fkpzz+ZAlQdMnzu8Wz4VC7ARv/NJ3DZ9u+iSvDY6vIvqkjpW/kl6XB6X7/5TPoG3tUwZn1QdwUHMvCsHXquCIITTx14jAsuulTBeHEFKqDkNqk8jY55UwSUpuUziZ7bdIkNhk6mxQ2GXub7HUmWY1tMutMElKbPO9MEjKbPO9Mcje1yawzSZ3YZK8zSRXZJHcmueJMUicmaY45k1x1JvkoNsn1zc4kx5xJrniTXPLOIpcjZ5DwjHcGaS5HziDNUdfrYH1weK1BwqXE9bxJVXOuv3nYO46iMZ/c613/G+TyRjQfv3h4vUNRyt194/wTh7ybjk2a4erYTc8mjXCrTJZh2oekGW6RqbvGQoqkBNNppuNc5ZFciSlH0i9uHslGuXFMJCsxFUz3uSGS+rnrCZIybDJguoBpxNTVxpoUSRmmAdM+rvRIrsZ8hmQJdwZJW7lxhBRVmHIkzXHPMY1wqx4pKrBQIGkG04ipmwsJkmWY9iDpOFcydddYkyApwXSS6RhXMbkSU4akV9ws0xZu7JFcgSlH0k9uyDTC1TGSMkzbmKa5RabuGrueICnFtI/pArfIFNdYSJGUYjrNtIWrPFJUYMqR1OLmmfq5cYxkBaYCSbPckKmbaxIkZZhmmE5yrzPFNaYUSSkWTjLtxfQRU2eNKUOyV9wckka4OkKKSkw5kma5q0z93GqM1JFh2oqkaW6RqbuNTRIkpZhOMB3jSqa4wpoUyX5hOoWkvVzF5EpMOZJeci8wjXBfRUiWY6FA0n1MQ6buNlYnSMowDZjOc4tMcYU1KZISTPuZ9nGLHsnVmDIkvcbCKaYRTFWEZAWmAkmz3AtM/VwdI1mBqUDSRW7E1M2FBMlSTAMk7eUWmTprTCmSveZOIGkLVzG5ElOGZC+5WSSNcHWEZDmmHEkz3FWm/jZWx0iWYtqGpGnudaa4xkKCpATTCaY9XMnUWbYWUiT71ZpOI2lLex95JPuptZAj6U5rGjKd+621OkZyP7QWtjHNYBoyddXY9QRJGaYB0z5ukclVWJMhKcHCfqatmEqPFFWYMiS1uNm2okCNcJ9FLVlOND2yAlPR1qUvjxb813ej/mj7p0fsRPl/AgA=",_8="/assets/solana-BpluAhE5.png",F8="data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20339.43%20295.27'%3e%3ctitle%3etether-usdt-logo%3c/title%3e%3cpath%20d='M62.15,1.45l-61.89,130a2.52,2.52,0,0,0,.54,2.94L167.95,294.56a2.55,2.55,0,0,0,3.53,0L338.63,134.4a2.52,2.52,0,0,0,.54-2.94l-61.89-130A2.5,2.5,0,0,0,275,0H64.45a2.5,2.5,0,0,0-2.3,1.45h0Z'%20style='fill:%2350af95;fill-rule:evenodd'/%3e%3cpath%20d='M191.19,144.8v0c-1.2.09-7.4,0.46-21.23,0.46-11,0-18.81-.33-21.55-0.46v0c-42.51-1.87-74.24-9.27-74.24-18.13s31.73-16.25,74.24-18.15v28.91c2.78,0.2,10.74.67,21.74,0.67,13.2,0,19.81-.55,21-0.66v-28.9c42.42,1.89,74.08,9.29,74.08,18.13s-31.65,16.24-74.08,18.12h0Zm0-39.25V79.68h59.2V40.23H89.21V79.68H148.4v25.86c-48.11,2.21-84.29,11.74-84.29,23.16s36.18,20.94,84.29,23.16v82.9h42.78V151.83c48-2.21,84.12-11.73,84.12-23.14s-36.09-20.93-84.12-23.15h0Zm0,0h0Z'%20style='fill:%23fff;fill-rule:evenodd'/%3e%3c/svg%3e",O8="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAADAFBMVEVHcEz/AAD/AAD/ABP/ABP/ABP/ABP/AAD/ABP/AAD/ABL/ABL/ABL/ABL/ABP/ABf/ABP/ABP/ABL/ABL/ABP/ABL/ABL/ABL/ABL/ABP/ABL/ABL/ABP/ABT/ABP/ABP/ABP/ABT/ABP/ABP/ABL/ABP/ABP/ABP/ABL/ABP/AAD/ABL/ABL/ABP/ABL/ABL/ABD/ABP/ABP/ABP/ABH/ABL/ABP/ABP/ABL/ABL/ABD/ABT/ABL/ABT/ABL/ABP/////ABT/ART/BBf/AAP/Axb/AA7/AAn/AAL/AAb/AhX/ABH/AAT/AxT/AAf/Ahb/AAX/AA3/Axf/AAz/BBX/ABL/AAv/ABX/AhT/ARP/AAj//v7//f3/AAD/+vv/Bxr//Pz/cnz/Cx3/NkT/Bhb/BBj/09f/BhL/3eD/Dh7/9fX/Gy3/8PL/S1b/paz/ABD/IDH/UF3/Ag//EyT/vcL/Fij/2dz/GCX/w8j/jJX/Xmn/eoT/q7H/5ef/VWH/AxL/8/T/+/v/qK7/LDv/DRn/QU//9Pb/3+H/Gyb/CRX/4eT/maD/gYr/lJv/Chr/o6r/BRD/M0H/+Pj/9fb/SFX/aHP/4+b/Bhn/6+3/g4z/v8T/Ul7/c37/ZW//XGb/nqX/Chj/OEL/JzT/KDj/7vH/iJH/Pkv/YGv/nqb/2t3/0NP/mJ//v8X/ECL/sbb/////1tn/9vf/Lj3/WWX/bnn/ys7/6Or/YW3/5+n/yc3/HS7/Jjf/Okn/2Nv/TFn/Giv/oqj/hpD/wcf/7e//trz/qbD/sLf/t73/fYb/ipT/ho//Q1L/4OL/nKT/foj/j5f/9vb/xMn/8fL/vcH/MDv/wMX/eYL/kJn/PEj/+fr/jpb/AxD/Bhj/vMH/FiP/lp7/r7T/cHn/SVb/6+z/xsv/7O3/srj/1Nn/rLL/Ex//OUb/M0P/RlD/FSH/5ej/y8//JzH/Hyv/XWb/doH/WGX/0dT/uL7/xcr/nKX/s7r/a3b/ZnD/usD/nKP/WV3/zNC5p18ZAAAAP3RSTlMABAL6/fv8Af4D947rXewVKJAp9IaPYqhtrWGpaxkXd3j+1dbY07m60UEF+M/n9YcujcLHLMTv7eocPz/nv77o1nyeAAAG+0lEQVRYw41XZ3QTRxA+CVl3kjDYxqYX003vYCDJzd6dupAl25KLrFhA3OgBEzo2LZjeQujw6J1HC4ROKAkQemimJSG9d1JJsnfnotOdseeHnp7ezqeZb2dm5yMImalV/EdEuKFV83g9Revjm7U2hEeR+EcVSVRupI4gdG1i4vQIGy0Y/03f3tAGA+sqhcDuvZvEoRREa7QaDcX7Uxr8lUdpGdtIOPAcU5NEo+jqCFFhom+5UZowCqH46MYEqX7e35N1OyA6TEMrmiaMRh3qqglVxdl3fxG7U3SFRmGIrp0rYIIkidq10PPcRQhUqzZ/VsGfjEG0lq7UtDTqQsoR1KSqAdJSdBUMB1FHFUolqdbVS6lGV9GqpdTTSWMgdWQdFEZX2cJQA1LCpIow8P9vY6ocA4oMvk0dUR9hf3uSx8gaq4ZSDdUvL0odEdVRSzH2ASNsTs5lHs5UAYXSdowg1KUE6LohLc3Y52fv3TN38rQBXs6RbqIrCUaLeqhLaNARDQUCWctq4G3So7uHvx5td3HWJI+tYpQw1FBMgiRr1tDw1Z/qHj0kUBwYJKDcPHK6/xsjstItYkpGJk2WhKZGTeEudUR0yQ0arQugGGZv/fdu/mwBJXBiz4rJ+/PcHOcUUkoLCaETHwJJ1OxFUSUA70PGYrh8z2/K27jqwpd79wkwb6+ct2bLaI/VYqUl2VBUz8YE35uxZSWUlpzt27kS4I7T5HZwTuPRGR/PObJcQCnccX7CSY8pRRpCE74Y2rZoWtr/LLca/ps/DOBZjinTaPS4nZzDNOqb8ZufzhRQpuaYEoIvommLtpiEvqhsfqS6B9+EGf5LALeLrCzN2HDejMnMcea8os3FAYA/pQga1AeTaAhqAkyjb5jTurYQctdzrJgxhsli/asmwabTAE9nBSOEoRh8Ce3LIxBoHDL4Abd+Jrz+syW1JOMEu/MCwOX1/gkAj4IRNChORUS1o8unAEpL/g36WzKtRbcBVpjFs4nunG0AY4ucD7n+AP8EIVB0uwgiHAWPUBaf2VGQlpWUcwXg/HQzi39Kf7wLYMEsL8s8dP0NsGt6UkJ5COFEJAoeY6nuo4Uww2lLsFvvAPzwo4NluVuv4Wi8/ZYxdq/ZP3QT3PjKbStriEiitSQCzMJU3zqHEVNnWXUWDn3LcUOHwOK1/nQX583c8GT1zrMB+CLPzpRG0IpohigpwBM4O9rE8Nnc2guBNUsBdkxzHN2y5toHuUIxTIEFC0trmkLNiXhaAsB4XjkBSzmW5yP9u3PYIaNw27rtJR2WPfXaTRj7wMSUsRhP6EOajLVMgLdGMiL97nnFU8S22n7u4tbjp/r5n8HlMUm28uN6IrRLU5NGLIHjTqMA5h21BPfSzr9mHF1mxlPGbrkI1wdaE4M7ipA9BUbrRN8chwBgMw+EjEWclXMm2fFoyeS2Aoy3sJLjshQEGj8ZJaRpdL0Kn416kCWOpUTXvSXwDif114eSiI2n8bBDoNFyEE6wHpHzBO9Pb8K75n7BM4EnsTmiFGgcK0TAcuMg3y16pNhnHYHs6SNtkpmCmhGtkEZO476MgemYBZtzIixwCXQwyc5hsHyDOUG6MaDWIaUsmC39I5jnwFwzpk/hkkgaa7kKU544EkNne2RIM4k0Yu4O7TYx+KnJhaXChWRxBwC3KRu6s+BmimgnYxE/Mbkw3mHEA2oQnORTSHQuKoQrruTQyU63iyJUcfIQWG4u5HttfBn4FpltdELSmJlw5kEBIwugPZ7rMfJ33eY9tjiw37wMp3LzlJthCnLO8BWcIH+cDHgm9pFHgGn8HMZxmdxByM20M8nWbTBIWsGlEfTFDwse61o5jatgUl6aYxzcMOEL+EVewYI/Huv8btFEnoNA469O80SY6MrkTmbIKrgkg1jsriYa96QoJRrfM3t+h/tO77QhoRVc+rT1wnsr/7h2UqJxY3HxMc9sfPePt/MVnKIUgPC4is+7LASb+RxcHXAdJjvy5RUsMlD6vJctGFIaHZMhewvAxs0QkFWwdMHAK466h6whcBl/75sKZ+8rVbDYBt10pZuemojoqJU39Th4Gab44A9XcprSklUrKnhNE9a8EBKmBXyQAWMXFjCVrXl8MUQqIOT78MKjUMGCv0EiG/De2iCUSKPjABQvVqpgnsA60lUX36Vs2cY0ToK1lqwKlm01KVv364SojUT/h3P8rBJ/Cuu+IDi6SAUHM3w3a2eUBIeBVJYsoZIHDfegqkseQXR17ioRXQyjILpe6l6x/MS9WZnse6EuWaHsE4Vn4+j4ioVn9ehGzxWeovRtFNuSl81y6RvXpHdl0rdEfKvaGNqHiu+4mDa6qohvHoLPkYwKN7RuFq+nKX1881aG8Ag+cJVC9P8Driqp8mNoLUAAAAAASUVORK5CYII=",U8="data:image/svg+xml,%3csvg%20data-name='86977684-12db-4850-8f30-233a7c267d11'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%202000%202000'%3e%3cpath%20d='M1000%202000c554.17%200%201000-445.83%201000-1000S1554.17%200%201000%200%200%20445.83%200%201000s445.83%201000%201000%201000z'%20fill='%232775ca'/%3e%3cpath%20d='M1275%201158.33c0-145.83-87.5-195.83-262.5-216.66-125-16.67-150-50-150-108.34s41.67-95.83%20125-95.83c75%200%20116.67%2025%20137.5%2087.5%204.17%2012.5%2016.67%2020.83%2029.17%2020.83h66.66c16.67%200%2029.17-12.5%2029.17-29.16v-4.17c-16.67-91.67-91.67-162.5-187.5-170.83v-100c0-16.67-12.5-29.17-33.33-33.34h-62.5c-16.67%200-29.17%2012.5-33.34%2033.34v95.83c-125%2016.67-204.16%20100-204.16%20204.17%200%20137.5%2083.33%20191.66%20258.33%20212.5%20116.67%2020.83%20154.17%2045.83%20154.17%20112.5s-58.34%20112.5-137.5%20112.5c-108.34%200-145.84-45.84-158.34-108.34-4.16-16.66-16.66-25-29.16-25h-70.84c-16.66%200-29.16%2012.5-29.16%2029.17v4.17c16.66%20104.16%2083.33%20179.16%20220.83%20200v100c0%2016.66%2012.5%2029.16%2033.33%2033.33h62.5c16.67%200%2029.17-12.5%2033.34-33.33v-100c125-20.84%20208.33-108.34%20208.33-220.84z'%20fill='%23fff'/%3e%3cpath%20d='M787.5%201595.83c-325-116.66-491.67-479.16-370.83-800%2062.5-175%20200-308.33%20370.83-370.83%2016.67-8.33%2025-20.83%2025-41.67V325c0-16.67-8.33-29.17-25-33.33-4.17%200-12.5%200-16.67%204.16-395.83%20125-612.5%20545.84-487.5%20941.67%2075%20233.33%20254.17%20412.5%20487.5%20487.5%2016.67%208.33%2033.34%200%2037.5-16.67%204.17-4.16%204.17-8.33%204.17-16.66v-58.34c0-12.5-12.5-29.16-25-37.5zM1229.17%20295.83c-16.67-8.33-33.34%200-37.5%2016.67-4.17%204.17-4.17%208.33-4.17%2016.67v58.33c0%2016.67%2012.5%2033.33%2025%2041.67%20325%20116.66%20491.67%20479.16%20370.83%20800-62.5%20175-200%20308.33-370.83%20370.83-16.67%208.33-25%2020.83-25%2041.67V1700c0%2016.67%208.33%2029.17%2025%2033.33%204.17%200%2012.5%200%2016.67-4.16%20395.83-125%20612.5-545.84%20487.5-941.67-75-237.5-258.34-416.67-487.5-491.67z'%20fill='%23fff'/%3e%3c/svg%3e",B8="/assets/venmo-Cs3XEBtc.png",V8="/assets/XRP-BEmJxEhH.gif",W8={"bitcoin.svg":w8,"bitcoin-cash-bch-logo.svg":v8,"BNB.png":b8,"buymeacoffee.png":k8,"cashapp.webp":S8,"multi-collateral-dai-dai-logo.svg":x8,"dogecoin-doge-logo.svg":A8,"ethereum-eth-logo.svg":E8,"geyser_fund.webp":R8,"github_sponsors.png":C8,"gofundme.jpeg":P8,"kickstarter.webp":N8,"ko-fi.png":T8,"LBTC.svg":j8,"Litecoin.png":z8,"Monero.png":I8,"patreon.png":L8,"paypal.webp":M8,"revolut.webp":D8,"solana.png":_8,"tether-usdt-logo.svg":F8,"Tron.png":O8,"usd-coin-usdc-logo.svg":U8,"venmo.png":B8,"XRP.gif":V8};function ZV(n){const e=n.trim(),t=/^payto:\/\/([a-z0-9-]+)\/(.+)$/i.exec(e);if(!t)return null;const o=t[1].toLowerCase(),a=decodeURIComponent(t[2].replace(/\+/g," "));return!o||!a?null:{type:jr(o),authority:a,raw:e}}function q8(n,e){const t=n.toLowerCase().replace(/[^a-z0-9-]/g,""),o=encodeURIComponent(e.trim());return`payto://${t}/${o}`}const SA={bitcoin:{label:"Bitcoin",symbol:"₿",category:"bitcoin"},lightning:{label:"Lightning Network",symbol:"⚡",category:"bitcoin-layer"},liquid:{label:"Liquid",symbol:"⛓",category:"bitcoin-layer"},lbtc:{label:"Liquid Bitcoin",symbol:"₿",category:"bitcoin-layer"},sats:{label:"Satoshis",symbol:"丰",category:"bitcoin"},monero:{label:"Monero",symbol:"ɱ",category:"crypto"},ethereum:{label:"Ethereum",symbol:"Ξ",category:"crypto"},nano:{label:"Nano",symbol:"Ӿ",category:"crypto"},cashme:{label:"Cash App",symbol:"$",category:"fiat"},"bitcoin-cash":{label:"Bitcoin Cash",symbol:"₿",category:"crypto"},dogecoin:{label:"Dogecoin",symbol:"Ð",category:"crypto"},litecoin:{label:"Litecoin",symbol:"Ł",category:"crypto"},usdt:{label:"Tether",symbol:"₮",category:"stablecoin"},usdc:{label:"USD Coin",symbol:"◎",category:"stablecoin"},dai:{label:"Dai",symbol:"◈",category:"crypto"},solana:{label:"Solana",symbol:"◎",category:"crypto"},bnb:{label:"BNB",category:"crypto"},tron:{label:"Tron",category:"crypto"},xrp:{label:"XRP",category:"crypto"},venmo:{label:"Venmo",symbol:"$",category:"fiat"},revolut:{label:"Revolut",symbol:"💳",category:"fiat"},paypal:{label:"PayPal",symbol:"💙",category:"fiat"},buymeacoffee:{label:"Buy Me a Coffee",symbol:"☕",category:"tip"},"ko-fi":{label:"Ko-fi",symbol:"☕",category:"tip"},kofi:{label:"Ko-fi",symbol:"☕",category:"tip"},patreon:{label:"Patreon",symbol:"🎭",category:"tip"},github:{label:"GitHub Sponsors",symbol:"🐙",category:"tip"},geyser:{label:"Geyser Fund",symbol:"⛲",category:"tip"},gofundme:{label:"GoFundMe",symbol:"🎯",category:"tip"},kickstarter:{label:"Kickstarter",symbol:"🚀",category:"tip"}},H8={btc:"bitcoin",xmr:"monero",eth:"ethereum",doge:"dogecoin",ltc:"litecoin",xno:"nano",sol:"solana",bch:"bitcoin-cash"};function jr(n){const e=n.toLowerCase().trim();return H8[e]??e}function $8(n){const e=xA(n);return(e==null?void 0:e.symbol)??null}const Y8={bitcoin:"bitcoin.svg",liquid:"LBTC.svg",lbtc:"LBTC.svg",ethereum:"ethereum-eth-logo.svg",monero:"Monero.png",litecoin:"Litecoin.png",dogecoin:"dogecoin-doge-logo.svg",usdt:"tether-usdt-logo.svg",usdc:"usd-coin-usdc-logo.svg",dai:"multi-collateral-dai-dai-logo.svg",solana:"solana.png",bnb:"BNB.png",tron:"Tron.png",xrp:"XRP.gif","bitcoin-cash":"bitcoin-cash-bch-logo.svg",cashme:"cashapp.webp",venmo:"venmo.png",paypal:"paypal.webp",revolut:"revolut.webp",buymeacoffee:"buymeacoffee.png","ko-fi":"ko-fi.png",kofi:"ko-fi.png",patreon:"patreon.png",github:"github_sponsors.png",geyser:"geyser_fund.webp",gofundme:"gofundme.jpeg",kickstarter:"kickstarter.webp"},K8={paypal:"https://paypal.me/{authority}",venmo:"https://venmo.com/{authority}",revolut:"https://revolut.me/{authority}",buymeacoffee:"https://buymeacoffee.com/{authority}","ko-fi":"https://ko-fi.com/{authority}",kofi:"https://ko-fi.com/{authority}",patreon:"https://patreon.com/{authority}",github:"https://github.com/sponsors/{authority}",geyser:"https://geyser.fund/project/{authority}",gofundme:"https://www.gofundme.com/f/{authority}",kickstarter:"https://www.kickstarter.com/projects/{authority}",cashme:"https://cash.app/{authority}"};function QV(n,e){const t=jr(n),o=K8[t];return!o||!e?null:o.replace("{authority}",encodeURIComponent(e.trim()))}function G8(n){const e=jr(n),t=Y8[e];return t?W8[t]??null:null}function xA(n){return SA[jr(n)]}function XV(n){return jr(n)in SA}function eW(n){return jr(n)==="lightning"}function J8(n,e){const t=jr(n);switch(t){case"bitcoin":case"bitcoin-cash":case"litecoin":case"dogecoin":return`${t}:${e}`;case"monero":return`monero:${e}`;case"ethereum":return`ethereum:${e}`;case"solana":return`solana:${e}`;case"nano":return`nano:${e}`;case"usdt":case"usdc":return`ethereum:${e}`;case"paypal":return`https://paypal.me/${e.replace(/^@/,"")}`;case"cashme":return`https://cash.app/${e.replace(/^\$?@?/,"")}`;case"buymeacoffee":return`https://buymeacoffee.com/${e.replace(/^@/,"")}`;case"ko-fi":return`https://ko-fi.com/${e.replace(/^@/,"")}`;case"patreon":return`https://patreon.com/${e.replace(/^@/,"")}`;case"github":return`https://github.com/sponsors/${e.replace(/^@/,"")}`;default:return null}}function Z8({open:n,setOpen:e,methods:t}){const{t:o}=Ae(),{isSmallScreen:a}=Ct(),r=l=>{const u=J8(l.type,l.authority);u?window.open(u,"_blank","noopener noreferrer"):(navigator.clipboard.writeText(l.authority),Ue.success(o("Copied to Clipboard"))),e(!1)},i=l=>{const u=l.payto??q8(l.type,l.authority);navigator.clipboard.writeText(u),Ue.success(o("Copied to Clipboard")),e(!1)},s=c.jsxs("div",{className:"flex flex-col gap-3",children:[c.jsx(Cr,{className:"sr-only",children:o("Select a payment method to send a tip")}),t.map((l,u)=>{const f=xA(l.type),d=$8(l.type),p=G8(l.type),m=(f==null?void 0:f.label)??l.displayType??l.type;return c.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-border/20 bg-card p-3",children:[c.jsxs("button",{type:"button",className:"flex min-w-0 flex-1 items-center gap-3 text-left",onClick:()=>r(l),children:[c.jsx("div",{className:"flex size-10 shrink-0 items-center justify-center rounded-full bg-muted",children:p?c.jsx("img",{src:p,alt:"",loading:"lazy",className:"size-5 object-contain"}):c.jsx("span",{className:"text-lg",children:d??"?"})}),c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsx("div",{className:"text-sm font-medium",children:m}),c.jsx("div",{className:"truncate text-xs text-muted-foreground",children:l.authority})]})]}),c.jsx(xe,{variant:"ghost",size:"icon",className:"size-8 shrink-0",title:o("Copy"),onClick:()=>i(l),children:c.jsx(ui,{className:"size-4"})})]},u)})]});return a?c.jsxs(Ht,{open:n,onOpenChange:e,children:[c.jsx(Wn,{onClick:()=>e(!1)}),c.jsx($t,{className:"mb-4 max-h-[85vh] border-t border-border/20 bg-card/90 backdrop-blur-xl",children:c.jsxs("div",{className:"flex-1 overflow-y-auto overscroll-contain px-4 py-4",style:{touchAction:"pan-y",WebkitOverflowScrolling:"touch"},children:[c.jsx(Ki,{className:"px-0",children:c.jsx(Gi,{children:o("Send a tip")})}),s]})})]}):c.jsx(na,{open:n,onOpenChange:e,children:c.jsxs(jo,{className:"sm:max-w-sm",children:[c.jsx(Ba,{children:c.jsx(Va,{children:o("Send a tip")})}),s]})})}function _0({stuff:n}){const{t:e}=Ae(),{event:t}=Lo(n),[o,a]=h.useState([]),[r,i]=h.useState(!1),[s,l]=h.useState(!0);return h.useEffect(()=>{if(!t){a([]),l(!1);return}let u=!1;return(async()=>{try{const d=await le.fetchPaymentInfoEvent(t.pubkey);if(!d||u){u||l(!1);return}const p=zP(d),m=((p==null?void 0:p.methods)??[]).filter(g=>g.type!=="lightning"&&g.authority);u||(a(m),l(!1))}catch{u||l(!1)}})(),()=>{u=!0}},[t]),s||o.length===0?null:c.jsxs(c.Fragment,{children:[c.jsx("button",{className:ne("relative flex h-full cursor-pointer select-none items-center gap-1 px-3 text-muted-foreground enabled:hover:text-primary"),title:e("Tip"),onClick:u=>{u.stopPropagation(),i(!0)},children:c.jsx(c4,{className:"size-4 sm:size-5"})}),c.jsx(Z8,{open:r,setOpen:i,methods:o})]})}function Q8({open:n,setOpen:e,zap:t}){const{t:o}=Ae(),{isSmallScreen:a}=Ct(),{formatBalance:r}=zl(),i=c.jsxs("div",{className:"flex flex-col gap-2",children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(Xo,{userId:t.pubkey,size:"medium"}),c.jsxs("div",{className:"flex-1",children:[c.jsx(Yo,{userId:t.pubkey,className:"font-semibold"}),c.jsx("div",{className:"flex items-center gap-1 text-sm text-muted-foreground",children:c.jsx(Hx,{timestamp:t.created_at})})]}),c.jsxs("div",{className:"flex items-center gap-1 text-zap",children:[c.jsx(Tu,{className:"size-5 fill-zap"}),c.jsx("span",{className:"text-lg font-bold",children:r(t.amount)})]})]}),t.comment&&c.jsx(Ho,{content:t.comment})]});return a?c.jsx(Ht,{open:n,onOpenChange:e,children:c.jsxs($t,{className:"px-4 pb-4",children:[c.jsx(Ki,{children:c.jsx(Gi,{children:o("Zap Details")})}),i]})}):c.jsx(na,{open:n,onOpenChange:e,children:c.jsxs(jo,{onClick:s=>s.stopPropagation(),children:[c.jsx(Ba,{children:c.jsx(Va,{children:o("Zap Details")})}),i]})})}function F0({stuff:n}){const{event:e,stuffKey:t}=Lo(n),{formatBalance:o}=zl(),a=Fl(t),[r,i]=h.useState(-1),s=h.useMemo(()=>{var l;return((l=a==null?void 0:a.zaps)==null?void 0:l.sort((u,f)=>f.amount-u.amount).slice(0,10))||[]},[a]);return!s.length||!e?null:c.jsxs(Qo,{className:"mb-1 pb-2",children:[c.jsx("div",{className:"flex gap-1",children:s.map((l,u)=>c.jsxs("div",{children:[c.jsxs("div",{className:"flex max-w-72 cursor-pointer items-center gap-1 rounded-full border border-zap bg-muted/80 py-1 pl-1 pr-2 text-sm text-zap hover:bg-zap/20",onClick:f=>{f.stopPropagation(),i(u)},children:[c.jsx(as,{userId:l.pubkey,size:"xSmall"}),c.jsx(Tu,{className:"size-3 shrink-0 fill-zap"}),c.jsx("div",{className:"font-semibold",children:o(l.amount)}),c.jsx(Bm,{className:"truncate",event:vp({content:l.comment})})]}),c.jsx(Q8,{open:r===u,setOpen:f=>{i(f?u:-1)},zap:l})]},l.pr))}),c.jsx(Ml,{orientation:"horizontal"})]})}function X8({open:n,setOpen:e,pubkey:t,event:o,defaultAmount:a,defaultComment:r,onSuccess:i}){const{t:s}=Ae(),{isSmallScreen:l}=Ct(),u=h.useRef(null);return h.useEffect(()=>{const f=()=>{u.current&&u.current.style.setProperty("bottom","env(safe-area-inset-bottom)")};return window.visualViewport&&(window.visualViewport.addEventListener("resize",f),f()),()=>{window.visualViewport&&window.visualViewport.removeEventListener("resize",f)}},[]),l?c.jsxs(Ht,{open:n,onOpenChange:e,children:[c.jsx(Wn,{onClick:()=>e(!1)}),c.jsx($t,{onOpenAutoFocus:f=>f.preventDefault(),ref:u,className:"mb-4 max-h-[85vh] border-t border-border/20 bg-card/90 backdrop-blur-xl",children:c.jsxs("div",{className:"flex-1 overflow-y-auto overscroll-contain px-4 py-4",style:{touchAction:"pan-y",WebkitOverflowScrolling:"touch"},children:[c.jsxs(Ki,{children:[c.jsxs(Gi,{className:"flex items-center gap-2",children:[c.jsx("div",{className:"shrink-0",children:s("Zap to")}),c.jsx(Xo,{size:"small",userId:t}),c.jsx(Yo,{userId:t,className:"h-5 w-0 flex-1 truncate text-start"})]}),c.jsx(Cr,{})]}),c.jsx(O0,{open:n,setOpen:e,recipient:t,event:o,defaultAmount:a,defaultComment:r,onSuccess:i})]})})]}):c.jsx(na,{open:n,onOpenChange:e,children:c.jsxs(jo,{onOpenAutoFocus:f=>f.preventDefault(),children:[c.jsx(Ba,{children:c.jsxs(Va,{className:"flex items-center gap-2",children:[c.jsx("div",{className:"shrink-0",children:s("Zap to")}),c.jsx(Xo,{size:"small",userId:t}),c.jsx(Yo,{userId:t,className:"h-5 max-w-fit flex-1 truncate text-start"})]})}),c.jsx(O0,{open:n,setOpen:e,recipient:t,event:o,defaultAmount:a,defaultComment:r,onSuccess:i})]})})}function O0({setOpen:n,recipient:e,event:t,defaultAmount:o,defaultComment:a,onSuccess:r}){const{t:i,i18n:s}=Ae(),{pubkey:l}=Je(),{defaultZapSats:u,defaultZapComment:f,balanceDisplayUnit:d,toSats:p,formatBalance:m}=zl(),g=O=>{switch(d){case"sats":return O;case"bits":return O/100;case"btc":return O/1e8}},[y,w]=h.useState(g(o||u)),[v,k]=h.useState(o?g(o).toString():g(u).toString()),[E,A]=h.useState(a??f),N=h.useMemo(()=>l===e,[l,e]),[T,C]=h.useState(!1),P=O=>{if(O===""){k(""),w(0);return}if(/^\d*\.?\d*$/.test(O)){k(O);const W=parseFloat(O);!isNaN(W)&&W>=0&&w(W)}},M=h.useMemo(()=>(s.language.startsWith("zh")?[21,66,210,666,1e3,2100,6666,1e4,21e3,66666,1e5,21e4]:[21,42,210,420,1e3,2100,4200,1e4,21e3,42e3,1e5,21e4]).map(W=>{switch(d){case"sats":return{display:W>=1e3?`${(W/1e3).toFixed(0)}k`:W.toString(),val:W};case"bits":{const V=W/100;return{display:V<10?V.toFixed(1):V.toFixed(0),val:V}}case"btc":{const V=W/1e8;return{display:V<.001?V.toFixed(6):V.toFixed(4),val:V}}}}),[s.language,d]),U=async()=>{try{if(!l)throw new Error("You need to be logged in to zap");const O=p(y);C(!0);const W=await fn.zap(l,t??e,O,E,()=>n(!1));if(!W)return;t&&ro.addZap(l,t.id,W.invoice,O,E),r==null||r()}catch(O){Ue.error(`${i("Zap failed")}: ${O.message}`)}finally{C(!1)}};return c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"flex flex-col items-center",children:[c.jsx("div",{className:"flex w-full justify-center",children:c.jsx("input",{id:"amount",value:v,onChange:O=>P(O.target.value),onFocus:O=>{requestAnimationFrame(()=>{const W=O.target.value;O.target.setSelectionRange(W.length,W.length)})},className:"w-full bg-transparent p-0 text-center text-6xl font-bold focus-visible:outline-none"})}),c.jsx(Jt,{htmlFor:"amount",children:d.charAt(0).toUpperCase()+d.slice(1)})]}),N&&c.jsx("div",{className:"rounded-md border border-zap/30 bg-zap/10 px-4 py-2 text-center text-sm text-zap",children:i("selfZapWarning")}),c.jsx("div",{className:"grid grid-cols-6 gap-2",children:M.map(({display:O,val:W})=>c.jsx(xe,{variant:"secondary",onClick:()=>{w(W),k(W.toString())},children:O},W))}),c.jsxs("div",{children:[c.jsx(Jt,{htmlFor:"comment",children:i("zapComment")}),c.jsx(Sn,{id:"comment",value:E,onChange:O=>A(O.target.value)})]}),c.jsxs(xe,{onClick:U,children:[T&&c.jsx(wn,{className:"animate-spin"})," ",i("Zap {{amount}}",{amount:m(p(y))})]})]})}function U0({stuff:n}){const{t:e}=Ae(),{checkLogin:t,pubkey:o}=Je(),{event:a,stuffKey:r}=Lo(n),i=Fl(r),{defaultZapSats:s,defaultZapComment:l,quickZap:u,formatBalance:f}=zl(),[d,p]=h.useState(null),[m,g]=h.useState(!1),[y,w]=h.useState(!1),[v,k]=h.useState(!1),{zapAmount:E,hasZapped:A}=h.useMemo(()=>{var j,L;return{zapAmount:(j=i==null?void 0:i.zaps)==null?void 0:j.reduce((I,b)=>I+b.amount,0),hasZapped:o?(L=i==null?void 0:i.zaps)==null?void 0:L.some(I=>I.pubkey===o):!1}},[i,o]),[N,T]=h.useState(!0),C=h.useRef(null),P=h.useRef(!1),M=()=>{k(!0),setTimeout(()=>k(!1),700)};h.useEffect(()=>{if(!a){T(!0);return}le.fetchProfile(a.pubkey).then(j=>{if(!j)return;Iw(j)&&T(!1)})},[a]);const U=async()=>{try{if(!o)throw new Error("You need to be logged in to zap");if(y||!a)return;w(!0);const j=await fn.zap(o,a,s,l);if(!j)return;ro.addZap(o,a.id,j.invoice,s,l),Un("success"),M()}catch(j){Ue.error(`${e("Zap failed")}: ${j.message}`)}finally{w(!1)}},O=j=>{if(j.stopPropagation(),j.preventDefault(),!N){if(P.current=!1,"touches"in j){const L=j.touches[0];p({x:L.clientX,y:L.clientY})}u&&(C.current=setTimeout(()=>{P.current=!0,t(()=>{g(!0),w(!0)})},iw))}},W=j=>{if(j.stopPropagation(),j.preventDefault(),C.current&&clearTimeout(C.current),!N){if("touches"in j){if(p(null),!d)return;const L=j.changedTouches[0],I=Math.abs(L.clientX-d.x),b=Math.abs(L.clientY-d.y);if(I>10||b>10)return}u?P.current||t(()=>U()):t(()=>{g(!0),w(!0)}),P.current=!1}},V=()=>{C.current&&clearTimeout(C.current)};return c.jsxs(c.Fragment,{children:[c.jsxs("button",{className:ne("relative flex h-full cursor-pointer select-none items-center gap-1 px-3 enabled:hover:text-zap disabled:cursor-default disabled:text-muted-foreground/40",A?"text-zap":"text-muted-foreground",v&&"animate-zap-pulse"),title:e("Zap"),disabled:N||y,onMouseDown:O,onMouseUp:W,onMouseLeave:V,onTouchStart:O,onTouchEnd:W,children:[v&&c.jsxs("div",{className:"absolute inset-0 pointer-events-none",children:[c.jsx("div",{className:"absolute left-1/2 top-1/2 h-4 w-0.5 -translate-x-1/2 -translate-y-1/2 animate-spark-out bg-zap [--tw-translate-x:20px] [--tw-translate-y:-20px] rotate-[45deg]"}),c.jsx("div",{className:"absolute left-1/2 top-1/2 h-4 w-0.5 -translate-x-1/2 -translate-y-1/2 animate-spark-out bg-zap [--tw-translate-x:-20px] [--tw-translate-y:-20px] rotate-[-45deg] [animation-delay:0.1s]"}),c.jsx("div",{className:"absolute left-1/2 top-1/2 h-4 w-0.5 -translate-x-1/2 -translate-y-1/2 animate-spark-out bg-zap [--tw-translate-x:25px] [--tw-translate-y:0px] rotate-[90deg] [animation-delay:0.05s]"}),c.jsx("div",{className:"absolute left-1/2 top-1/2 h-4 w-0.5 -translate-x-1/2 -translate-y-1/2 animate-spark-out bg-zap [--tw-translate-x:-25px] [--tw-translate-y:0px] rotate-[-90deg] [animation-delay:0.15s]"}),c.jsx("div",{className:"absolute left-1/2 top-1/2 h-4 w-0.5 -translate-x-1/2 -translate-y-1/2 animate-spark-out bg-zap [--tw-translate-x:15px] [--tw-translate-y:25px] rotate-[135deg] [animation-delay:0.08s]"}),c.jsx("div",{className:"absolute left-1/2 top-1/2 h-4 w-0.5 -translate-x-1/2 -translate-y-1/2 animate-spark-out bg-zap [--tw-translate-x:-15px] [--tw-translate-y:25px] rotate-[-135deg] [animation-delay:0.12s]"}),c.jsx("div",{className:"absolute left-1/2 top-1/2 h-full w-full -translate-x-1/2 -translate-y-1/2 animate-ripple rounded-full bg-zap/20"})]}),y?c.jsx(wn,{className:"animate-spin"}):c.jsx(Tu,{className:A?"fill-zap":""}),!!E&&c.jsx("div",{className:"text-sm",children:f(E)})]}),a&&c.jsx(X8,{open:m,setOpen:j=>{g(j),w(j)},pubkey:a.pubkey,event:a,onSuccess:M})]})}function e7({stuff:n,className:e,classNames:t,fetchIfNotExisting:o=!1,displayTopZapsAndLikes:a=!1}){const{isSmallScreen:r}=Ct(),{pubkey:i}=Je(),[s,l]=h.useState(!1),{event:u}=Lo(n);return h.useEffect(()=>{o&&(l(!0),ro.fetchStuffStats(n,i).finally(()=>l(!1)))},[u,o]),r?c.jsxs("div",{className:ne("select-none",e),children:[a&&c.jsxs(c.Fragment,{children:[c.jsx(F0,{stuff:n}),c.jsx(I0,{stuff:n})]}),c.jsxs("div",{className:ne("flex h-5 items-center justify-between [&_svg]:size-5",s?"animate-pulse":"",t==null?void 0:t.buttonBar),onClick:f=>f.stopPropagation(),children:[c.jsx(L0,{stuff:n}),c.jsx(M0,{stuff:n}),c.jsx(z0,{stuff:n}),c.jsx(_0,{stuff:n}),c.jsx(U0,{stuff:n}),c.jsx(T0,{stuff:n}),c.jsx(D0,{stuff:n})]})]}):c.jsxs("div",{className:ne("select-none",e),children:[a&&c.jsxs(c.Fragment,{children:[c.jsx(F0,{stuff:n}),c.jsx(I0,{stuff:n})]}),c.jsxs("div",{className:"flex h-6 sm:h-7 justify-between [&_svg]:size-4 sm:[&_svg]:size-5",children:[c.jsxs("div",{className:ne("flex items-center",s?"animate-pulse":""),onClick:f=>f.stopPropagation(),children:[c.jsx(L0,{stuff:n}),c.jsx(M0,{stuff:n}),c.jsx(z0,{stuff:n}),c.jsx(_0,{stuff:n}),c.jsx(U0,{stuff:n})]}),c.jsxs("div",{className:"flex items-center",onClick:f=>f.stopPropagation(),children:[c.jsx(T0,{stuff:n}),c.jsx(D0,{stuff:n})]})]})]})}function t7({event:n}){const{t:e}=Ae(),{pubkey:t}=Je(),{unpin:o}=wA(),[a,r]=h.useState(!1),[i,s]=h.useState(!1);return n.pubkey!==t?c.jsxs("div",{className:"mb-1 flex h-fit items-center gap-1 px-4 py-0 text-sm text-primary",children:[c.jsx(Of,{size:16,className:"shrink-0"}),e("Pinned")]}):c.jsxs(xe,{className:"mb-1 flex h-fit items-center gap-1 px-4 py-0.5 text-sm text-primary",variant:"link",onClick:l=>{l.stopPropagation(),s(!0),o(n).finally(()=>s(!1))},disabled:i,onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),children:[i?c.jsx(wn,{size:16,className:"shrink-0 animate-spin"}):c.jsx(Of,{size:16,className:"shrink-0"}),e(i?"Unpinning":a?"Unpin":"Pinned")]})}function n7({reposters:n,className:e}){const{t}=Ae();return n!=null&&n.length?c.jsxs("div",{className:ne("mb-1 flex items-center gap-1 text-sm text-muted-foreground",e),children:[c.jsx(x4,{size:16,className:"shrink-0"}),c.jsx(Yo,{userId:n[0],className:ne("truncate font-semibold",n.length>1&&'after:content-[","]'),skeletonClassName:"h-3"},n[0]),n.length>1&&c.jsx(Yo,{userId:n[1],className:ne("truncate font-semibold",n.length===3&&'after:content-[","]'),skeletonClassName:"h-3"},n[1]),n.length>3?c.jsx(o7,{reposters:n.slice(2)}):n.length===3?c.jsx(Yo,{userId:n[2],className:ne("truncate font-semibold"),skeletonClassName:"h-3"},n[2]):null,c.jsx("div",{className:"shrink-0",children:t("reposted")})]}):null}function o7({reposters:n}){const{t:e}=Ae();return c.jsxs(em,{children:[c.jsx(tm,{asChild:!0,children:c.jsx("span",{className:"shrink-0 hover:underline",children:e("and {{x}} others",{x:n.length})})}),c.jsx(nd,{className:"flex w-fit max-w-60 flex-wrap p-2",children:n.map(t=>c.jsx("div",{className:"p-2",children:c.jsx(Xo,{userId:t,size:"small"},t)},t))})]})}function a7({event:n,className:e,reposters:t,embedded:o,originalNoteId:a,pinned:r=!1,displayMode:i,hideFollowingBadge:s=!1}){const{push:l}=Vt();return c.jsxs("div",{className:e,onClick:u=>{u.stopPropagation(),l(kr(a??n))},children:[c.jsxs("div",{className:ne("clickable transition-colors duration-200",o?"glass-card rounded-2xl p-3 sm:p-4":"glass-card mx-1 mb-3 rounded-2xl px-4 py-4 sm:mx-2 sm:mb-4 sm:px-5 sm:py-5 lg:px-6 lg:py-6"),children:[c.jsxs(E_,{alwaysExpand:o,children:[r&&c.jsx(t7,{event:n}),c.jsx(n7,{className:"",reposters:t}),c.jsx(kA,{className:"",size:o?"small":"normal",event:n,originalNoteId:a,displayMode:i,hideFollowingBadge:s})]}),!o&&c.jsx(e7,{className:"mt-3 sm:mt-4",stuff:n})]}),!o&&c.jsx("div",{className:"h-px"})]})}function xs({noteId:n,className:e}){const{event:t,isFetching:o}=nm(n);return o?c.jsx(r7,{className:e}):t?c.jsx(a7,{className:ne("w-full",e),event:t,embedded:!0,originalNoteId:n}):c.jsx(i7,{className:e,noteId:n})}function r7({className:n}){return c.jsxs("div",{className:ne("rounded-xl border bg-card p-2 text-left sm:p-3",n),onClick:e=>e.stopPropagation(),children:[c.jsxs("div",{className:"flex items-center space-x-2",children:[c.jsx(Tn,{className:"h-9 w-9 rounded-full"}),c.jsxs("div",{children:[c.jsx(Tn,{className:"my-1 h-3 w-16"}),c.jsx(Tn,{className:"my-1 h-3 w-16"})]})]}),c.jsx(Tn,{className:"my-1 mt-2 h-4 w-full"}),c.jsx(Tn,{className:"my-1 h-4 w-2/3"})]})}function i7({noteId:n,className:e}){const{t}=Ae();return c.jsx("div",{className:ne("rounded-xl border bg-card p-2 text-left sm:p-3",e),children:c.jsxs("div",{className:"flex flex-col items-center gap-2 font-medium text-muted-foreground",children:[c.jsx("div",{children:t("Sorry! The note cannot be found 😔")}),c.jsx(al,{className:"mt-2 w-full",originalNoteId:n})]})})}function sp({url:n}){const{push:e}=Vt();return c.jsxs("span",{className:"cursor-pointer px-1 text-primary hover:bg-primary/20",onClick:t=>{t.stopPropagation(),e(du(n))},children:["[ ",n," ]",c.jsx("span",{className:"h-1 w-2 bg-primary"})]})}function s7({about:n,emojis:e,className:t,showTranslateButton:o=!1}){const{t:a,i18n:r}=Ae(),{translateText:i}=s2(),s=h.useMemo(()=>{const y=XC(n);return y?y==="und"?!0:!r.language.startsWith(y):!1},[n,r.language]),[l,u]=h.useState(null),[f,d]=h.useState(!1),p=h.useMemo(()=>{if(!n)return null;const y=pd(l??n,[Sm,p_,NS,xm,CS,hd]),w=new Map;return e==null||e.forEach(v=>{w.set(v.shortcode,v)}),y.map((v,k)=>{if(v.type==="url")return c.jsx(ao,{url:v.data},k);if(v.type==="websocket-url")return c.jsx(sp,{url:v.data},k);if(v.type==="hashtag")return c.jsx(wi,{hashtag:v.data},k);if(v.type==="mention"||v.type==="legacy-mention"){const E=v.data.startsWith("nostr:")?v.data.split(":")[1]:v.data;return c.jsx(Ps,{userId:E},k)}if(v.type==="emoji"){const E=v.data.split(":")[1],A=w.get(E);return A?c.jsx(yn,{classNames:{img:"mb-1"},emoji:A},k):v.data}return v.data})},[n,l,e]),m=async()=>{f||l||(d(!0),i(n??"").then(y=>{u(y)}).catch(y=>{Ue.error("Translation failed: "+(y.message||"An error occurred while translating the about"))}).finally(()=>{d(!1)}))},g=()=>{u(null)};return c.jsxs("div",{children:[c.jsx("div",{className:t,children:p}),s&&o&&c.jsx("div",{className:"mt-2 text-sm",children:f?c.jsx("div",{className:"text-muted-foreground",children:a("Translating...")}):l===null?c.jsx("button",{className:"text-primary hover:underline",onClick:y=>{y.stopPropagation(),m()},children:a("Translate")}):c.jsx("button",{className:"text-primary hover:underline",onClick:y=>{y.stopPropagation(),g()},children:a("Show original")})})]})}function AA({userId:n}){const e=h.useMemo(()=>dr(n),[n]),{profile:t}=Xi(n),{username:o,about:a,emojis:r}=t||{};return c.jsxs("div",{className:"not-prose flex w-full flex-col gap-2",children:[c.jsxs("div",{className:"flex w-full items-start justify-between space-x-2",children:[c.jsx(as,{userId:e,className:"h-12 w-12"}),c.jsx(s_,{pubkey:e})]}),c.jsxs("div",{children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(wd,{text:o||"",emojis:r,className:"truncate text-lg font-semibold",gradient:!0}),c.jsx(vA,{pubkey:e})]}),c.jsx(km,{pubkey:e})]}),a&&c.jsx(s7,{about:a,emojis:r,className:"line-clamp-6 w-full overflow-hidden text-ellipsis text-wrap break-words text-sm"})]})}function Yo({userId:n,showAt:e=!1,className:t,skeletonClassName:o,withoutSkeleton:a=!1}){const{profile:r,isFetching:i}=Xi(n),s=h.useMemo(()=>gl(),[]);if(!r&&i&&!a)return c.jsx("div",{className:"py-1",children:c.jsx(Tn,{className:ne("w-16",o)})});if(!r)return null;const l=c.jsx("div",{className:t,children:c.jsxs(Ma,{to:ad(n),className:"truncate hover:underline",onClick:u=>u.stopPropagation(),children:[e&&"@",c.jsx(wd,{text:r.username,emojis:r.emojis,emojiClassName:"mb-1",gradient:!0})]})});return s?l:c.jsxs(em,{children:[c.jsx(tm,{asChild:!0,children:l}),c.jsx(nd,{className:"w-80",children:c.jsx(AA,{userId:n})})]})}function kd({userId:n,showAt:e=!1,className:t,skeletonClassName:o,withoutSkeleton:a=!1}){const{profile:r,isFetching:i}=Xi(n);if(!r&&i&&!a)return c.jsx("div",{className:"py-1",children:c.jsx(Tn,{className:ne("w-16",o)})});if(!r)return null;const{username:s,emojis:l}=r;return c.jsxs("div",{className:t,children:[e&&"@",c.jsx(wd,{text:s,emojis:l,emojiClassName:"mb-1",gradient:!0})]})}function l7(){const{checkLogin:n,publish:e}=Je(),{push:t}=Vt(),{t:o}=Ae(),{groupId:a,relayUrl:r,onMessageSent:i}=jL(),[s,l]=h.useState(!1),[u,f]=h.useState(""),[d,p]=h.useState(!1),[m,g]=h.useState([]),[y,w]=h.useState(null),[v,k]=h.useState("picker"),[E,A]=h.useState(""),[N,T]=h.useState([]),[C,P]=h.useState(0),M=h.useRef(null),U=h.useRef(null);h.useEffect(()=>{var S;const b=()=>{const z=window.visualViewport;if(z){const F=window.innerHeight-z.height;P(F>50?F:0)}};return(S=window.visualViewport)==null||S.addEventListener("resize",b),b(),()=>{var z;return(z=window.visualViewport)==null?void 0:z.removeEventListener("resize",b)}},[]),h.useEffect(()=>{s&&C>0&&U.current&&setTimeout(()=>{var b;(b=U.current)==null||b.scrollIntoView({behavior:"smooth",block:"center"})},100)},[s,C]),h.useEffect(()=>{const b=async z=>{const F=z.detail,{eventId:D,authorPubkey:q}=F,J=await le.fetchEvent(D);J&&(w({eventId:D,authorPubkey:q,content:J.content,event:J}),l(!0))},S=()=>{w(null)};return window.addEventListener("groupchat-set-reply",b),window.addEventListener("groupchat-clear-reply",S),()=>{window.removeEventListener("groupchat-set-reply",b),window.removeEventListener("groupchat-clear-reply",S)}},[]);const O=async()=>{if(!(u.trim()||m.some(z=>z.url))){Ue.error(o("Message cannot be empty"));return}if(!a){Ue.error(o("Not in a group chat"));return}if(d)return;if(m.filter(z=>z.uploading).length>0){Ue.error(o("Please wait for uploads to finish"));return}p(!0);try{const z=m.filter(ie=>ie.url).map(ie=>ie.url),F=u.trim()+(z.length>0?`

`+z.join(`

`):""),D=[["h",a]];y&&(D.push(["e",y.eventId,"","reply"]),D.push(["p",y.authorPubkey]));const q=/:([a-zA-Z0-9_-]+):/g,J=new Set;let ae;for(;(ae=q.exec(F))!==null;){const ie=ae[1];if(!J.has(ie)){const de=gn.getEmojiById(ie);de&&(D.push(["emoji",ie,de.url]),J.add(ie))}}const ge={kind:Fi.GROUP_CHAT_MESSAGE,content:F.trim(),tags:D,created_at:Math.floor(Date.now()/1e3)};if(r){const ie=[r,...kt().slice(0,4)];await e(ge,{specifiedRelayUrls:ie})}else await e(ge);f(""),g([]),w(null),l(!1),i()}catch(z){console.error("[PostButton] Failed to send message:",z),Ue.error(o("Failed to send message: ")+z.message)}finally{p(!1)}},W=()=>{M.current&&(M.current.value="",M.current.click())},V=async b=>{if(!b.target.files)return;const z=Array.from(b.target.files).map(F=>({file:F,url:null,progress:0,uploading:!0,abortController:new AbortController}));g(F=>[...F,...z]);for(const F of z)try{const D=await gr.upload(F.file,{onProgress:q=>{g(J=>J.map(ae=>ae.file===F.file?{...ae,progress:q}:ae))},signal:F.abortController.signal});g(q=>q.map(J=>J.file===F.file?{...J,url:D.url,uploading:!1}:J))}catch(D){const q=D.message;q!==$r&&(g(J=>J.map(ae=>ae.file===F.file?{...ae,uploading:!1,error:q}:ae)),Ue.error(`Failed to upload: ${q}`))}},j=b=>{g(S=>{const z=S.find(F=>F.file===b);return z!=null&&z.uploading&&z.abortController.abort(),S.filter(F=>F.file!==b)})},L=()=>{Un("click"),a?l(!0):n(()=>t("/compose"))};return a?c.jsxs(c.Fragment,{children:[c.jsx("button",{type:"button",className:"group relative flex h-12 w-12 shrink-0 items-center justify-center rounded-xl text-primary-foreground outline-none transition-all duration-200 hover:scale-105",style:{WebkitTapHighlightColor:"transparent",background:"linear-gradient(135deg, hsl(var(--primary)), hsl(var(--primary-hover)))",boxShadow:"0 2px 12px hsl(var(--primary) / 0.35)",outline:"none"},onClick:L,children:c.jsx(Tg,{className:"relative z-10 size-5 transition-transform duration-200 group-hover:scale-110"})}),c.jsx(Ht,{open:s,onOpenChange:l,children:c.jsx($t,{className:"max-h-[90dvh] border-t border-border/20 bg-card/90 backdrop-blur-xl",style:{touchAction:"auto"},children:c.jsxs("div",{className:"flex h-full flex-col",style:{touchAction:"auto"},children:[c.jsxs("div",{className:"flex items-center justify-between border-b border-border/20 p-4",children:[c.jsx("h3",{className:"text-lg font-semibold",children:o("Send Message")}),c.jsx("button",{onClick:()=>l(!1),className:"flex size-8 items-center justify-center rounded-full text-muted-foreground hover:bg-muted/30",children:c.jsx(Dn,{className:"size-5"})})]}),m.length>0&&c.jsx("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3",children:m.map((b,S)=>c.jsx("div",{className:"relative overflow-hidden rounded-lg border border-border/20 bg-muted/20",children:b.url?c.jsxs(c.Fragment,{children:[c.jsx("img",{src:b.url,alt:b.file.name,className:"aspect-square w-full object-cover"}),c.jsx("button",{onClick:()=>j(b.file),className:"absolute right-1 top-1 flex size-6 items-center justify-center rounded-full bg-black/60 text-white hover:bg-black/80",children:c.jsx(Dn,{className:"size-3"})})]}):b.error?c.jsxs("div",{className:"flex aspect-square items-center justify-center p-2 text-center text-xs text-destructive",children:[b.error,c.jsx("button",{onClick:()=>j(b.file),className:"absolute right-1 top-1 flex size-6 items-center justify-center rounded-full bg-black/60 text-white hover:bg-black/80",children:c.jsx(Dn,{className:"size-3"})})]}):c.jsxs("div",{className:"flex aspect-square flex-col items-center justify-center gap-2 p-2",children:[c.jsx(Ei,{className:"size-6 animate-spin text-muted-foreground"}),c.jsxs("div",{className:"w-full",children:[c.jsx("div",{className:"h-1.5 w-full overflow-hidden rounded-full bg-muted",children:c.jsx("div",{className:"h-full bg-primary transition-all",style:{width:`${b.progress}%`}})}),c.jsx("p",{className:"mt-1 truncate text-[10px] text-muted-foreground",children:b.file.name})]}),c.jsx("button",{onClick:()=>j(b.file),className:"absolute right-1 top-1 flex size-6 items-center justify-center rounded-full bg-black/60 text-white hover:bg-black/80",children:c.jsx(Dn,{className:"size-3"})})]})},S))}),y&&c.jsx("div",{className:"rounded-lg border border-primary/30 bg-primary/5 py-2 pl-3 pr-2",children:c.jsxs("div",{className:"flex items-start gap-2",children:[c.jsx("div",{className:"mt-0.5 h-5 w-0.5 shrink-0 rounded-full bg-primary/50"}),c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsxs("div",{className:"flex items-center gap-1.5",children:[c.jsx(Xo,{userId:y.authorPubkey,className:"size-4"}),c.jsx(Yo,{userId:y.authorPubkey,className:"text-xs font-semibold",withoutSkeleton:!0})]}),c.jsx("p",{className:"mt-0.5 line-clamp-2 text-xs text-muted-foreground",children:y.content})]}),c.jsx("button",{onClick:()=>w(null),className:"shrink-0 p-1 text-muted-foreground hover:text-foreground",children:c.jsx(Dn,{className:"size-3.5"})})]})}),c.jsxs("div",{className:"relative flex gap-2",children:[c.jsxs("div",{className:"relative flex-1",children:[c.jsx("textarea",{ref:U,value:u,onChange:b=>{const S=b.target.value;f(S);const z=b.target.selectionStart,D=S.slice(0,z).match(/:([a-zA-Z0-9_-]*)$/);D&&D[1].length>=0?(A(D[1]),gn.searchEmojis(D[1]).then(q=>{T(q.slice(0,20))}),k("search")):k("picker")},onKeyDown:b=>{b.key==="Enter"&&!b.shiftKey&&(b.preventDefault(),O())},placeholder:o("Type a message..."),rows:3,className:"w-full resize-none rounded-xl border border-border/20 bg-muted/20 px-3 py-2 pr-20 text-sm outline-none placeholder:text-muted-foreground focus:border-primary/50",disabled:d,autoFocus:!0}),c.jsxs("div",{className:"absolute bottom-2 right-2 flex gap-1",children:[c.jsx("button",{onClick:()=>k("picker"),className:"flex size-7 items-center justify-center rounded-md text-muted-foreground hover:text-primary",type:"button",children:c.jsx(G1,{className:"size-4"})}),c.jsx("button",{onClick:W,className:"flex size-7 items-center justify-center rounded-md text-muted-foreground hover:text-primary",type:"button",children:c.jsx(w4,{className:"size-4"})})]})]}),c.jsx("button",{onClick:O,onTouchEnd:b=>{b.preventDefault(),O()},disabled:!u.trim()&&m.every(b=>!b.url)||d||m.some(b=>b.uploading),className:"flex size-10 shrink-0 items-center justify-center rounded-xl bg-primary text-primary-foreground transition-colors hover:bg-primary-hover active:scale-95 disabled:pointer-events-none disabled:opacity-50",children:d?c.jsx(Ei,{className:"size-5 animate-spin"}):c.jsx(Tg,{className:"size-5"})})]}),c.jsx("input",{ref:M,type:"file",style:{display:"none"},onChange:V,accept:"image/*,video/*",multiple:!0}),c.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden border-t border-border/20",children:[c.jsxs("div",{className:"flex border-b border-border/20",children:[c.jsx("button",{onClick:()=>k("picker"),className:`flex-1 px-4 py-2 text-sm font-medium ${v==="picker"?"border-b-2 border-primary text-primary":"text-muted-foreground"}`,children:o("Emoji")}),c.jsx("button",{onClick:()=>k("search"),className:`flex-1 px-4 py-2 text-sm font-medium ${v==="search"?"border-b-2 border-primary text-primary":"text-muted-foreground"}`,children:o("Search")})]}),c.jsx("div",{className:"flex-1 overflow-y-auto",children:v==="picker"?c.jsx(rl,{onEmojiClick:b=>{b&&f(typeof b=="string"?S=>S+b:S=>S+`:${b.shortcode}:`)}}):c.jsx("div",{className:"grid grid-cols-4 gap-2 p-4",children:N.length>0?N.map(b=>{const S=gn.getEmojiById(b);return S?c.jsxs("button",{className:"flex flex-col items-center gap-1 rounded-lg p-2 hover:bg-muted",onClick:()=>{var q;const z=((q=U.current)==null?void 0:q.selectionStart)||u.length,D=u.slice(0,z).match(/:[a-zA-Z0-9_-]*$/);if(D){const J=u.slice(0,z-D[0].length)+":"+S.shortcode+":"+u.slice(z);f(J)}k("picker")},children:[c.jsx(yn,{emoji:S,classNames:{img:"size-10",text:"text-2xl"}}),c.jsxs("span",{className:"text-xs text-muted-foreground",children:[":",S.shortcode,":"]})]},b):null}):c.jsx("p",{className:"col-span-4 text-center text-sm text-muted-foreground",children:o(E?"No emojis found":"Type : to search emojis")})})})]})]})})})]}):c.jsx("button",{type:"button",className:"group relative flex h-12 w-12 shrink-0 items-center justify-center rounded-xl text-primary-foreground outline-none transition-all duration-200 hover:scale-105",style:{WebkitTapHighlightColor:"transparent",background:"linear-gradient(135deg, hsl(var(--primary)), hsl(var(--primary-hover)))",boxShadow:"0 2px 12px hsl(var(--primary) / 0.35)",outline:"none"},onClick:()=>{n(()=>{Un("click"),t("/compose")})},children:c.jsx(Y1,{className:"relative z-10 size-5 transition-transform duration-200 group-hover:rotate-90"})})}function c7(){const{display:n}=Ol(),{push:e,currentUrl:t}=Vt(),o=t==="/settings/wallet";return c.jsx(dd,{active:o&&!n,onClick:()=>{Un("click"),e("/settings/wallet")},children:c.jsx(L4,{className:"size-4"})})}function u7(){return c.jsx("div",{className:"fixed bottom-0 z-40 w-full px-4 pb-4 pt-1",style:{WebkitTapHighlightColor:"transparent"},children:c.jsxs("div",{className:"mx-auto max-w-md overflow-hidden",style:{borderRadius:"2rem",background:"linear-gradient(135deg, hsl(var(--card) / 0.75) 0%, hsl(var(--card) / 0.55) 100%)",backdropFilter:"blur(24px)",WebkitBackdropFilter:"blur(24px)",border:"1px solid hsl(var(--border) / 0.2)",boxShadow:"0 4px 24px hsl(var(--primary) / 0.08)"},children:[c.jsx("div",{className:"relative h-px w-full bg-gradient-to-r from-transparent via-white/10 to-transparent"}),c.jsx(p9,{className:"rounded-none border-x-0 border-b border-t-0 bg-transparent"}),c.jsxs("div",{className:"flex w-full items-center justify-around px-1 py-1.5 [&_svg]:size-5 [&_svg]:shrink-0",style:{WebkitTapHighlightColor:"transparent"},children:[c.jsx(w9,{}),c.jsx(c7,{}),c.jsx(l7,{}),c.jsx(F9,{}),c.jsx(V9,{})]})]})})}function d7(){const{t:n}=Ae(),{isSmallScreen:e}=Ct(),{push:t}=Vt(),{relayList:o}=Je(),[a,r]=h.useState(!1);if(h.useEffect(()=>{pe.getDismissedTooManyRelaysAlert()||(o&&(o.read.length>5||o.write.length>5)?r(!0):r(!1))},[o]),!o)return null;const i=()=>{r(!1),t(RL("mailbox"))},s=()=>{pe.setDismissedTooManyRelaysAlert(!0),r(!1)},l=()=>{r(!1)},u=n("Optimize Relay Settings"),f=n("Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.");return e?c.jsx(Ht,{open:a,onOpenChange:r,children:c.jsxs($t,{children:[c.jsxs(Ki,{children:[c.jsx(Gi,{children:u}),c.jsx(Op,{children:f})]}),c.jsxs(xb,{children:[c.jsx(xe,{onClick:i,children:n("Optimize Now")}),c.jsx(xe,{variant:"outline",onClick:l,children:n("Maybe Later")}),c.jsx(xe,{onClick:s,variant:"link",className:"text-xs text-muted-foreground",children:n("Don't remind me again")})]})]})}):c.jsx(kS,{open:a,onOpenChange:r,children:c.jsxs(gm,{children:[c.jsxs(ym,{children:[c.jsx(vm,{children:u}),c.jsx(bm,{children:f})]}),c.jsxs(wm,{children:[c.jsx(xe,{onClick:s,variant:"link",className:"text-xs text-muted-foreground",children:n("Don't remind me again")}),c.jsx(xe,{variant:"outline",onClick:l,children:n("Maybe Later")}),c.jsx(xe,{onClick:i,children:n("Optimize Now")})]})]})})}const f7=()=>null,h7=h.lazy(()=>Ve(()=>import("./index-BbUxTEaU.js"),__vite__mapDeps([7,1,2,8,9,10,11,12,13,14,3,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,4,5,6]))),p7=h.lazy(()=>Ve(()=>import("./index-CxPWBZW7.js"),__vite__mapDeps([38,1,2,3,12,39,28,11,13,14,15,16,17,31,24,4,5,6]))),m7=h.lazy(()=>Ve(()=>import("./index-QCXhNbL2.js"),__vite__mapDeps([40,1,2,8,9,10,11,12,13,14,3,15,16,17,18,19,20,21,22,23,24,25,31,4,5,6]))),g7=h.lazy(()=>Ve(()=>import("./index-B7r8f_Lp.js"),__vite__mapDeps([41,1,2,3,14,15,22,17,12,18,31,4,5,6]))),y7=h.lazy(()=>Ve(()=>import("./index-CV6jOZmY.js"),__vite__mapDeps([42,1,2,43,3,44,31,12,9,27,45,4,5,6]))),w7=h.lazy(()=>Ve(()=>import("./index-ChyvGBtW.js"),__vite__mapDeps([46,1,2,47,43,3,44,48,49,50,25,21,11,12,13,14,15,16,17,22,51,31,9,4,5,6]))),v7=h.lazy(()=>Ve(()=>import("./index-CjFZO1u4.js"),__vite__mapDeps([52,1,2,53,10,11,12,13,14,3,15,16,17,18,19,20,21,22,26,27,28,29,30,50,25,49,31,4,5,6]))),b7=h.lazy(()=>Ve(()=>import("./index-DyaQOsXg.js"),__vite__mapDeps([54,1,2,55,50,25,3,56,57,10,11,12,13,14,15,16,17,18,19,20,21,22,47,43,44,48,49,51,58,53,26,27,28,29,30,31,4,5,6]))),k7=h.lazy(()=>Ve(()=>import("./index-BoI5cnkv.js"),__vite__mapDeps([59,1,2,60,16,3,31,12,4,5,6]))),S7=h.lazy(()=>Ve(()=>import("./index-WHwPXb4f.js"),__vite__mapDeps([61,1,2,62,33,31,12,45,3,4,5,6]))),x7=h.lazy(()=>Ve(()=>import("./index-CB6Pk8O_.js"),__vite__mapDeps([63,1,2,22,17,12,18,64,65,66,50,25,57,3,56,31,23,45,36,4,5,6]))),EA={home:h.createRef(),dms:h.createRef(),explore:h.createRef(),following:h.createRef(),notifications:h.createRef(),me:h.createRef(),profile:h.createRef(),relay:h.createRef(),search:h.createRef(),bookmark:h.createRef(),settings:h.createRef()},B0={home:h7,dms:x7,explore:p7,following:m7,notifications:g7,me:y7,profile:w7,relay:v7,search:b7,bookmark:k7,settings:S7};function A7({Component:n,pageKey:e,props:t}){const o=EA[e];return c.jsx(h.Suspense,{fallback:c.jsx(f7,{}),children:c.jsx(n,{ref:o,...t||{}})})}var yo={},V0;function E7(){if(V0)return yo;V0=1,Object.defineProperty(yo,"__esModule",{value:!0}),yo.TokenData=void 0,yo.parse=d,yo.compile=p,yo.match=y,yo.pathToRegexp=w,yo.stringify=A;const n="/",e=C=>C,t=/^[$_\p{ID_Start}]$/u,o=/^[$\u200c\u200d\p{ID_Continue}]$/u,a="https://git.new/pathToRegexpError",r={"{":"{","}":"}","(":"(",")":")","[":"[","]":"]","+":"+","?":"?","!":"!"};function i(C){return C.replace(/[{}()\[\]+?!:*]/g,"\\$&")}function s(C){return C.replace(/[.+*?^${}()[\]|/\\]/g,"\\$&")}function*l(C){const P=[...C];let M=0;function U(){let O="";if(t.test(P[++M]))for(O+=P[M];o.test(P[++M]);)O+=P[M];else if(P[M]==='"'){let W=M;for(;M<P.length;){if(P[++M]==='"'){M++,W=0;break}P[M]==="\\"?O+=P[++M]:O+=P[M]}if(W)throw new TypeError(`Unterminated quote at ${W}: ${a}`)}if(!O)throw new TypeError(`Missing parameter name at ${M}: ${a}`);return O}for(;M<P.length;){const O=P[M],W=r[O];if(W)yield{type:W,index:M++,value:O};else if(O==="\\")yield{type:"ESCAPED",index:M++,value:P[M++]};else if(O===":"){const V=U();yield{type:"PARAM",index:M,value:V}}else if(O==="*"){const V=U();yield{type:"WILDCARD",index:M,value:V}}else yield{type:"CHAR",index:M,value:P[M++]}}return{type:"END",index:M,value:""}}class u{constructor(P){this.tokens=P}peek(){if(!this._peek){const P=this.tokens.next();this._peek=P.value}return this._peek}tryConsume(P){const M=this.peek();if(M.type===P)return this._peek=void 0,M.value}consume(P){const M=this.tryConsume(P);if(M!==void 0)return M;const{type:U,index:O}=this.peek();throw new TypeError(`Unexpected ${U} at ${O}, expected ${P}: ${a}`)}text(){let P="",M;for(;M=this.tryConsume("CHAR")||this.tryConsume("ESCAPED");)P+=M;return P}}class f{constructor(P){this.tokens=P}}yo.TokenData=f;function d(C,P={}){const{encodePath:M=e}=P,U=new u(l(C));function O(V){const j=[];for(;;){const L=U.text();L&&j.push({type:"text",value:M(L)});const I=U.tryConsume("PARAM");if(I){j.push({type:"param",name:I});continue}const b=U.tryConsume("WILDCARD");if(b){j.push({type:"wildcard",name:b});continue}if(U.tryConsume("{")){j.push({type:"group",tokens:O("}")});continue}return U.consume(V),j}}const W=O("END");return new f(W)}function p(C,P={}){const{encode:M=encodeURIComponent,delimiter:U=n}=P,O=C instanceof f?C:d(C,P),W=m(O.tokens,U,M);return function(j={}){const[L,...I]=W(j);if(I.length)throw new TypeError(`Missing parameters: ${I.join(", ")}`);return L}}function m(C,P,M){const U=C.map(O=>g(O,P,M));return O=>{const W=[""];for(const V of U){const[j,...L]=V(O);W[0]+=j,W.push(...L)}return W}}function g(C,P,M){if(C.type==="text")return()=>[C.value];if(C.type==="group"){const O=m(C.tokens,P,M);return W=>{const[V,...j]=O(W);return j.length?[""]:[V]}}const U=M||e;return C.type==="wildcard"&&M!==!1?O=>{const W=O[C.name];if(W==null)return["",C.name];if(!Array.isArray(W)||W.length===0)throw new TypeError(`Expected "${C.name}" to be a non-empty array`);return[W.map((V,j)=>{if(typeof V!="string")throw new TypeError(`Expected "${C.name}/${j}" to be a string`);return U(V)}).join(P)]}:O=>{const W=O[C.name];if(W==null)return["",C.name];if(typeof W!="string")throw new TypeError(`Expected "${C.name}" to be a string`);return[U(W)]}}function y(C,P={}){const{decode:M=decodeURIComponent,delimiter:U=n}=P,{regexp:O,keys:W}=w(C,P),V=W.map(j=>M===!1?e:j.type==="param"?M:L=>L.split(U).map(M));return function(L){const I=O.exec(L);if(!I)return!1;const b=I[0],S=Object.create(null);for(let z=1;z<I.length;z++){if(I[z]===void 0)continue;const F=W[z-1],D=V[z-1];S[F.name]=D(I[z])}return{path:b,params:S}}}function w(C,P={}){const{delimiter:M=n,end:U=!0,sensitive:O=!1,trailing:W=!0}=P,V=[],j=[],L=O?"":"i",b=(Array.isArray(C)?C:[C]).map(F=>F instanceof f?F:d(F,P));for(const{tokens:F}of b)for(const D of v(F,0,[])){const q=k(D,M,V);j.push(q)}let S=`^(?:${j.join("|")})`;return W&&(S+=`(?:${s(M)}$)?`),S+=U?"$":`(?=${s(M)}|$)`,{regexp:new RegExp(S,L),keys:V}}function*v(C,P,M){if(P===C.length)return yield M;const U=C[P];if(U.type==="group"){const O=M.slice();for(const W of v(U.tokens,0,O))yield*v(C,P+1,W)}else M.push(U);yield*v(C,P+1,M)}function k(C,P,M){let U="",O="",W=!0;for(let V=0;V<C.length;V++){const j=C[V];if(j.type==="text"){U+=s(j.value),O+=j.value,W||(W=j.value.includes(P));continue}if(j.type==="param"||j.type==="wildcard"){if(!W&&!O)throw new TypeError(`Missing text after "${j.name}": ${a}`);j.type==="param"?U+=`(${E(P,W?"":O)}+)`:U+="([\\s\\S]+)",M.push(j),O="",W=!1;continue}}return U}function E(C,P){return P.length<2?C.length<2?`[^${s(C+P)}]`:`(?:(?!${s(C)})[^${s(P)}])`:C.length<2?`(?:(?!${s(P)})[^${s(C)}])`:`(?:(?!${s(P)}|${s(C)})[\\s\\S])`}function A(C){return C.tokens.map(function P(M,U,O){if(M.type==="text")return i(M.value);if(M.type==="group")return`{${M.tokens.map(P).join("")}}`;const V=N(M.name)&&T(O[U+1])?M.name:JSON.stringify(M.name);if(M.type==="param")return`:${V}`;if(M.type==="wildcard")return`*${V}`;throw new TypeError(`Unexpected token: ${M}`)}).join("")}function N(C){const[P,...M]=C;return t.test(P)?M.every(U=>o.test(U)):!1}function T(C){return(C==null?void 0:C.type)!=="text"?!0:!o.test(C.value[0])}return yo}var R7=E7();const C7=()=>null,P7=h.lazy(()=>Ve(()=>import("./index-CovvrUbB.js"),__vite__mapDeps([67,1,2,10,11,12,13,14,3,15,16,17,18,19,20,21,22,68,9,4,5,6]))),N7=h.lazy(()=>Ve(()=>import("./index-BqLqp8Mj.js"),__vite__mapDeps([69,1,2,70,3,11,12,13,14,15,16,29,18,68,4,5,6]))),T7=h.lazy(()=>Ve(()=>import("./index-BGx3q0hk.js"),__vite__mapDeps([71,1,2,72,57,58,3,14,68,12,4,5,6]))),j7=h.lazy(()=>Ve(()=>import("./index-DzYPbxpn.js"),__vite__mapDeps([73,1,2,47,43,3,44,48,49,50,25,21,11,12,13,14,15,16,17,22,51,68,4,5,6]))),z7=h.lazy(()=>Ve(()=>import("./index-CvB3QaCA.js"),__vite__mapDeps([74,1,2,72,57,48,68,12,3,4,5,6]))),I7=h.lazy(()=>Ve(()=>import("./index-DSuG9U_I.js"),__vite__mapDeps([75,1,2,3,51,39,28,68,12,4,5,6]))),L7=h.lazy(()=>Ve(()=>import("./index-BGShpHUr.js"),__vite__mapDeps([76,1,2,53,10,11,12,13,14,3,15,16,17,18,19,20,21,22,26,27,28,29,30,50,25,49,68,77,4,5,6]))),M7=h.lazy(()=>Ve(()=>import("./index-CJSH7i_Z.js"),__vite__mapDeps([78,1,2,11,12,13,14,3,15,16,68,77,49,4,5,6]))),D7=h.lazy(()=>Ve(()=>import("./index-B0LC8wSQ.js"),__vite__mapDeps([79,1,2,55,50,25,3,56,57,10,11,12,13,14,15,16,17,18,19,20,21,22,47,43,44,48,49,51,58,53,26,27,28,29,30,68,4,5,6]))),_7=h.lazy(()=>Ve(()=>import("./index-YOBxoZS1.js"),__vite__mapDeps([80,1,2,3,5,4,70,11,12,13,14,15,16,29,18,68,77,49,6]))),F7=h.lazy(()=>Ve(()=>import("./index-DTJMT98J.js"),__vite__mapDeps([81,1,2,62,33,68,12,3,4,5,6]))),O7=h.lazy(()=>Ve(()=>import("./index-ClTrVmDl.js"),__vite__mapDeps([82,1,2,64,83,28,3,32,84,35,68,12,4,5,6]))),U7=h.lazy(()=>Ve(()=>import("./index-D0cQjrO2.js"),__vite__mapDeps([85,1,2,68,12,4,3,44,86,87,45,66,20,5,6]))),B7=h.lazy(()=>Ve(()=>import("./index-Bi358Bn2.js"),__vite__mapDeps([88,1,2,68,12,35,37,3,4,5,6]))),V7=h.lazy(()=>Ve(()=>import("./index-DY-EdraV.js"),__vite__mapDeps([89,1,2,35,68,12,65,3,4,5,6]))),W7=h.lazy(()=>Ve(()=>import("./index-CJYSkaKH.js"),__vite__mapDeps([90,1,2,68,12,3,4,5,6]))),q7=h.lazy(()=>Ve(()=>import("./index-CIRqWV1H.js"),__vite__mapDeps([91,1,2,35,68,12,65,4,3,5,6]))),H7=h.lazy(()=>Ve(()=>import("./index-DVXpeR7e.js"),__vite__mapDeps([92,1,2,16,3,11,12,13,14,15,17,68,4,5,6]))),$7=h.lazy(()=>Ve(()=>import("./index-BGe9gThj.js"),__vite__mapDeps([93,1,2,68,12,3,4,5,6]))),Y7=h.lazy(()=>Ve(()=>import("./index-B6ijbHvY.js"),__vite__mapDeps([94,1,2,30,68,12,36,3,4,5,6]))),K7=h.lazy(()=>Ve(()=>import("./index-DFogG7sn.js"),__vite__mapDeps([95,1,2,3,68,12,77,49,34,4,5,6]))),G7=h.lazy(()=>Ve(()=>import("./index-e6u6ABYk.js"),__vite__mapDeps([96,1,2,68,12,4,3,5,6]))),J7=h.lazy(()=>Ve(()=>import("./index-Bxms6KKB.js"),__vite__mapDeps([97,1,2,60,16,3,68,12,4,5,6]))),Z7=h.lazy(()=>Ve(()=>import("./index-Bu9DYd1E.js"),__vite__mapDeps([98,1,2,10,11,12,13,14,3,15,16,17,18,19,20,21,22,72,57,68,4,5,6]))),Q7=h.lazy(()=>Ve(()=>import("./index-BzteO95_.js"),__vite__mapDeps([99,1,2,16,3,68,12,19,4,5,6]))),X7=h.lazy(()=>Ve(()=>import("./index-CZu0gGma.js"),__vite__mapDeps([100,1,2,68,12,3,4,5,6]))),eU=h.lazy(()=>Ve(()=>import("./index-CV5fTo0J.js"),__vite__mapDeps([101,1,2,68,12,3,84,27,4,5,6]))),tU=h.lazy(()=>Ve(()=>import("./index-CDg60UOa.js"),__vite__mapDeps([102,1,2,3,13,37,12,87,68,4,5,6]))),nU=h.lazy(()=>Ve(()=>import("./index-DDIBnuWm.js"),__vite__mapDeps([103,1,2,68,12,86,87,3,4,5,6]))),oU=[{path:"/notes",Component:P7},{path:"/notes/:id",Component:N7},{path:"/users",Component:T7},{path:"/users/:id",Component:j7},{path:"/users/:id/following",Component:z7},{path:"/users/:id/relays",Component:I7},{path:"/relays/:url",Component:L7},{path:"/relays/:url/reviews",Component:M7},{path:"/search",Component:D7},{path:"/external-content",Component:_7},{path:"/settings",Component:F7},{path:"/settings/relays",Component:O7},{path:"/settings/wallet",Component:U7},{path:"/settings/posts",Component:B7},{path:"/settings/general",Component:V7},{path:"/settings/appearance",Component:W7},{path:"/settings/translation",Component:q7},{path:"/settings/emoji-packs",Component:H7},{path:"/settings/system",Component:$7},{path:"/profile-editor",Component:Y7},{path:"/mutes",Component:K7},{path:"/rizful",Component:G7},{path:"/bookmarks",Component:J7},{path:"/follow-packs/:id",Component:Z7},{path:"/user-aggregation/:feedId/:npub",Component:Q7},{path:"/compose",Component:X7},{path:"/groups/:relayDomain/:groupId",Component:eU},{path:"/dms/:id",Component:tU},{path:"/settings/wallet/history",Component:nU}],aU=oU.map(({path:n,Component:e})=>({path:n,matcher:R7.match(n),createLazyElement:(t,o,a)=>({...i})=>{const s=e;return c.jsx(h.Suspense,{fallback:c.jsx(C7,{}),children:c.jsx(s,{ref:a,index:o,...t,...i})})}}));function rU(n,e){const t=n.split("?")[0].split("#")[0];for(const{matcher:o,createLazyElement:a}of aU){const r=o(t);if(!r)continue;const i=h.createRef();return{element:a(r.params,e,i),ref:i}}return{element:null,ref:null}}const RA=h.createContext(void 0),CA=h.createContext(void 0);function Ol(){const n=h.useContext(RA);if(!n)throw new Error("usePrimaryPage must be used within a PrimaryPageContext.Provider");return n}function Vt(){const n=h.useContext(CA);if(!n)throw new Error("usePrimaryPage must be used within a SecondaryPageContext.Provider");return n}function iU({maxStackSize:n=5}){var d,p;const[e,t]=h.useState("home"),[o,a]=h.useState([{name:"home"}]),[r,i]=h.useState([]),s=h.useRef(!1);h.useEffect(()=>{const m=g=>{(g.metaKey||g.ctrlKey)&&g.key==="k"&&(g.preventDefault(),l("search"))};return window.addEventListener("keydown",m),()=>{window.removeEventListener("keydown",m)}},[]),h.useEffect(()=>{if(["/npub1","/nprofile1"].some(g=>window.location.pathname.startsWith(g))?window.history.replaceState(null,"","/users"+window.location.pathname+window.location.search+window.location.hash):["/note1","/nevent1","/naddr1"].some(g=>window.location.pathname.startsWith(g))&&window.history.replaceState(null,"","/notes"+window.location.pathname+window.location.search+window.location.hash),window.history.pushState(null,"",window.location.href),window.location.pathname!=="/"){const g=window.location.pathname+window.location.search+window.location.hash;i(y=>{var k;if(W0(y,g))return y;const{newStack:w,newItem:v}=Af(y,g,n,(k=window.history.state)==null?void 0:k.index);return v&&window.history.replaceState({index:v.index,url:g},"",g),w})}else{const g=new URLSearchParams(window.location.search),y=g.get("r");if(y){const v=jn(y);v&&l("relay",{url:v})}const w=g.get("page");w&&w in B0&&l(w)}const m=g=>{if(s.current){s.current=!1;return}if(Gt.pop()){s.current=!0,window.history.forward();return}let w=g.state;i(v=>{const k=v[v.length-1],E=k==null?void 0:k.index;if(!w){if(window.location.pathname+window.location.search+window.location.hash!=="/")return v;w={index:-1,url:"/"}}if(E===void 0||w.index>E){const{newStack:T}=Af(v,w.url,n);return T}if(w.index===E)return v;const A=v.filter(T=>T.index<=w.index),N=A[A.length-1];if(N){if(!N.element){const{element:T,ref:C}=lp(N.url,w.index);T&&(N.element=T,N.ref=C)}}else{const{element:T,ref:C}=lp(w.url,w.index);T&&A.push({index:w.index,url:w.url,element:T,ref:C})}return A.length===0&&window.history.replaceState(null,"","/"),A})};return window.addEventListener("popstate",m),()=>{window.removeEventListener("popstate",m)}},[]);const l=(m,g)=>{var w;const y=m===e;a(v=>{const k=v.find(E=>E.name===m);return k&&g?(k.props=g,[...v]):k?v:[...v,{name:m,props:g}]}),t(m),y&&((w=EA[m].current)==null||w.scrollToTop("smooth"))},u=(m,g)=>{i(y=>{var k;if(W0(y,m)){const E=y[y.length-1];return(k=E==null?void 0:E.ref)!=null&&k.current&&E.ref.current.scrollToTop("instant"),y}const{newStack:w,newItem:v}=Af(y,m,n,g);return v&&window.history.pushState({index:v.index,url:m},"",m),w})},f=(m=-1)=>{r.length<=-m?(window.history.replaceState(null,"","/"),i([])):window.history.go(m)};return c.jsx(RA.Provider,{value:{navigate:l,current:e,display:r.length===0},children:c.jsx(CA.Provider,{value:{push:u,pop:f,currentIndex:r.length?r[r.length-1].index:0,currentUrl:r.length?r[r.length-1].url:null},children:c.jsx(zL,{children:c.jsx(TL,{children:c.jsxs(B9,{children:[c.jsx(IL,{}),!!r.length&&r.map((m,g)=>c.jsx("div",{style:{display:g===r.length-1?"block":"none"},children:m.element&&c.jsx(m.element,{})},m.index)),o.map(({name:m,props:g})=>c.jsx("div",{style:{display:r.length===0&&e===m?"block":"none"},children:c.jsx(A7,{Component:B0[m],pageKey:m,props:g})},m)),r.length>0&&((p=(d=r[r.length-1])==null?void 0:d.url)!=null&&p.includes("/settings/wallet/history"))?null:c.jsx(u7,{}),c.jsx(d7,{})]})})})})})}function Ma({to:n,children:e,className:t,onClick:o}){const{push:a}=Vt();return c.jsx("span",{className:ne("cursor-pointer",t),onClick:r=>{o&&o(r),a(n)},children:e})}function W0(n,e){const t=n[n.length-1];return t?t.url===e:!1}function lp(n,e){return rU(n,e)}function Af(n,e,t=5,o){const a=n[n.length-1],r=o??(a?a.index+1:0),{element:i,ref:s}=lp(e,r);if(!i)return{newStack:n,newItem:null};const l={element:i,ref:s,url:e,index:r},u=[...n,l],f=u.findIndex(d=>d.element);return u.length-f>t&&(u[f].element=null),{newStack:u,newItem:l}}const q0={large:"w-24 h-24",big:"w-16 h-16",semiBig:"w-12 h-12",normal:"w-10 h-10",medium:"w-9 h-9",small:"w-7 h-7",xSmall:"w-5 h-5",tiny:"w-4 h-4"};function Xo({userId:n,className:e,size:t="normal"}){const o=h.useMemo(()=>gl(),[]),a=c.jsx(Ma,{to:ad(n),onClick:r=>r.stopPropagation(),children:c.jsx(as,{userId:n,size:t,className:e})});return o?a:c.jsxs(em,{children:[c.jsx(tm,{children:a}),c.jsx(nd,{className:"w-72",children:c.jsx(AA,{userId:n})})]})}function as({userId:n,size:e="normal",className:t,onClick:o}){const{profile:a}=Xi(n),{autoLoadProfilePicture:r}=Qt(),i=h.useMemo(()=>a!=null&&a.pubkey?hP(a.pubkey):"",[a]);if(!a)return c.jsx(Tn,{className:ne("shrink-0",q0[e],"rounded-full",t)});const{avatar:s,pubkey:l}=a||{},u=r?s??i:i;return c.jsx(sn,{image:{url:u,pubkey:l},errorPlaceholder:i,className:"object-cover object-center",classNames:{wrapper:ne("shrink-0 rounded-full bg-background",q0[e],t)},onClick:o})}function sU({className:n,afterSwitch:e}){const{accounts:t,account:o,switchAccount:a,removeAccount:r}=Je(),[i,s]=h.useState(null);return c.jsx("div",{className:ne("space-y-2",n),children:t.map(l=>c.jsxs("div",{className:ne("relative rounded-lg",va(l,o)?"border border-primary":"clickable"),onClick:()=>{va(l,o)||(s(l),a(l).then(()=>e()).finally(()=>s(null)))},children:[c.jsxs("div",{className:"flex items-center justify-between p-2",children:[c.jsxs("div",{className:"relative flex flex-1 items-center gap-2",children:[c.jsx(as,{userId:l.pubkey}),c.jsxs("div",{className:"w-0 flex-1",children:[c.jsx(kd,{userId:l.pubkey,className:"truncate font-semibold"}),c.jsx("div",{className:"w-fit rounded-full bg-muted px-2 text-sm",children:Ri(l.pubkey)})]})]}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("div",{className:"flex items-center gap-2",children:c.jsx(Zz,{signerType:l.signerType})}),c.jsx(xe,{variant:"ghost",size:"icon",className:"text-muted-foreground hover:text-destructive",onClick:u=>{u.stopPropagation(),r(l)},children:c.jsx(J1,{})})]})]}),i&&va(l,i)&&c.jsx("div",{className:"absolute left-0 top-0 flex h-full w-full items-center justify-center rounded-lg bg-muted/60",children:c.jsx(wn,{size:16,className:"animate-spin"})})]},`${l.pubkey}-${l.signerType}`))})}var Ka=Symbol("verified"),lU=n=>n instanceof Object;function cU(n){if(!lU(n)||typeof n.kind!="number"||typeof n.content!="string"||typeof n.created_at!="number"||typeof n.pubkey!="string"||!n.pubkey.match(/^[a-f0-9]{64}$/)||!Array.isArray(n.tags))return!1;for(let e=0;e<n.tags.length;e++){let t=n.tags[e];if(!Array.isArray(t))return!1;for(let o=0;o<t.length;o++)if(typeof t[o]!="string")return!1}return!0}var uU=new TextDecoder("utf-8"),PA=new TextEncoder;function qr(n){try{n.indexOf("://")===-1&&(n="wss://"+n);let e=new URL(n);return e.protocol==="http:"?e.protocol="ws:":e.protocol==="https:"&&(e.protocol="wss:"),e.pathname=e.pathname.replace(/\/+/g,"/"),e.pathname.endsWith("/")&&(e.pathname=e.pathname.slice(0,-1)),(e.port==="80"&&e.protocol==="ws:"||e.port==="443"&&e.protocol==="wss:")&&(e.port=""),e.searchParams.sort(),e.hash="",e.toString()}catch{throw new Error(`Invalid URL: ${n}`)}}var dU=class{constructor(n){H(this,"value");H(this,"next",null);H(this,"prev",null);this.value=n}},fU=class{constructor(){H(this,"first");H(this,"last");this.first=null,this.last=null}enqueue(n){const e=new dU(n);return this.last?this.last===this.first?(this.last=e,this.last.prev=this.first,this.first.next=e):(e.prev=this.last,this.last.next=e,this.last=e):(this.first=e,this.last=e),!0}dequeue(){if(!this.first)return null;if(this.first===this.last){const e=this.first;return this.first=null,this.last=null,e.value}const n=this.first;return this.first=n.next,this.first&&(this.first.prev=null),n.value}},hU=class{generateSecretKey(){return vo.utils.randomPrivateKey()}getPublicKey(n){return nn(vo.getPublicKey(n))}finalizeEvent(n,e){const t=n;return t.pubkey=nn(vo.getPublicKey(e)),t.id=Ef(t),t.sig=nn(vo.sign(Ef(t),e)),t[Ka]=!0,t}verifyEvent(n){if(typeof n[Ka]=="boolean")return n[Ka];const e=Ef(n);if(e!==n.id)return n[Ka]=!1,!1;try{const t=vo.verify(n.sig,e,n.pubkey);return n[Ka]=t,t}catch{return n[Ka]=!1,!1}}};function pU(n){if(!cU(n))throw new Error("can't serialize event with wrong or missing properties");return JSON.stringify([0,n.pubkey,n.created_at,n.kind,n.tags,n.content])}function Ef(n){let e=io(PA.encode(pU(n)));return nn(e)}var Sd=new hU;Sd.generateSecretKey;var H0=Sd.getPublicKey,mU=Sd.finalizeEvent,NA=Sd.verifyEvent,TA=1,jA=65535;function Rf(n,e){const t=w1.getSharedSecret(n,"02"+e).subarray(1,33);return v1(io,t,"nip44-v2")}function zA(n,e){const t=k1(io,n,e,76);return{chacha_key:t.subarray(0,32),chacha_nonce:t.subarray(32,44),hmac_key:t.subarray(44,76)}}function IA(n){if(!Number.isSafeInteger(n)||n<1)throw new Error("expected positive integer");if(n<=32)return 32;const e=1<<Math.floor(Math.log2(n-1))+1,t=e<=256?32:e/8;return t*(Math.floor((n-1)/t)+1)}function gU(n){if(!Number.isSafeInteger(n)||n<TA||n>jA)throw new Error("invalid plaintext size: must be between 1 and 65535 bytes");const e=new Uint8Array(2);return new DataView(e.buffer).setUint16(0,n,!1),e}function yU(n){const e=PA.encode(n),t=e.length,o=gU(t),a=new Uint8Array(IA(t)-t);return xr(o,e,a)}function wU(n){const e=new DataView(n.buffer).getUint16(0),t=n.subarray(2,2+e);if(e<TA||e>jA||t.length!==e||n.length!==2+IA(e))throw new Error("invalid padding");return uU.decode(t)}function LA(n,e,t){if(t.length!==32)throw new Error("AAD associated data must be 32 bytes");const o=xr(t,e);return cp(io,n,o)}function vU(n){if(typeof n!="string")throw new Error("payload must be a valid string");const e=n.length;if(e<132||e>87472)throw new Error("invalid payload length: "+e);if(n[0]==="#")throw new Error("unknown encryption version");let t;try{t=fl.decode(n)}catch(r){throw new Error("invalid base64: "+r.message)}const o=t.length;if(o<99||o>65603)throw new Error("invalid data length: "+o);const a=t[0];if(a!==2)throw new Error("unknown encryption version "+a);return{nonce:t.subarray(1,33),ciphertext:t.subarray(33,-32),mac:t.subarray(-32)}}function bU(n,e,t=zc(32)){const{chacha_key:o,chacha_nonce:a,hmac_key:r}=zA(e,t),i=yU(n),s=Cu(o,a,i),l=LA(r,s,t);return fl.encode(xr(new Uint8Array([2]),t,s,l))}function $0(n,e){const{nonce:t,ciphertext:o,mac:a}=vU(n),{chacha_key:r,chacha_nonce:i,hmac_key:s}=zA(e,t),l=LA(s,o,t);if(!b1(l,a))throw new Error("invalid MAC");const u=Cu(r,i,o);return wU(u)}var kU=/^(?:([\w.+-]+)@)?([\w_-]+(\.[\w_-]+)+)$/,SU;try{SU=fetch}catch{}var xU=22242,Cf=24133;function AU(n,e){if(n.ids&&n.ids.indexOf(e.id)===-1||n.kinds&&n.kinds.indexOf(e.kind)===-1||n.authors&&n.authors.indexOf(e.pubkey)===-1)return!1;for(let t in n)if(t[0]==="#"){let o=t.slice(1),a=n[`#${o}`];if(a&&!e.tags.find(([r,i])=>r===t.slice(1)&&a.indexOf(i)!==-1))return!1}return!(n.since&&e.created_at<n.since||n.until&&e.created_at>n.until)}function EU(n,e){for(let t=0;t<n.length;t++)if(AU(n[t],e))return!0;return!1}function RU(n,e){let t=e.length+3,o=n.indexOf(`"${e}":`)+t,a=n.slice(o).indexOf('"')+o+1;return n.slice(a,a+64)}function CU(n){let e=n.slice(0,22).indexOf('"EVENT"');if(e===-1)return null;let t=n.slice(e+7+1).indexOf('"');if(t===-1)return null;let o=e+7+1+t,a=n.slice(o+1,80).indexOf('"');if(a===-1)return null;let r=o+1+a;return n.slice(o+1,r)}function PU(n,e){return{kind:xU,created_at:Math.floor(Date.now()/1e3),tags:[["relay",n],["challenge",e]],content:""}}async function NU(){return new Promise((n,e)=>{try{if(typeof MessageChannel<"u"){const t=new MessageChannel,o=()=>{t.port1.removeEventListener("message",o),n()};t.port1.addEventListener("message",o),t.port2.postMessage(0),t.port1.start()}else typeof setImmediate<"u"?setImmediate(n):typeof setTimeout<"u"?setTimeout(n,0):n()}catch(t){console.error("during yield: ",t),e(t)}})}var TU=n=>(n[Ka]=!0,!0),MA=class extends Error{constructor(n,e){super(`Tried to send message '${n} on a closed connection to ${e}.`),this.name="SendingOnClosedConnection"}},DA=class{constructor(n,e){H(this,"url");H(this,"_connected",!1);H(this,"onclose",null);H(this,"onnotice",n=>console.debug(`NOTICE from ${this.url}: ${n}`));H(this,"onauth");H(this,"baseEoseTimeout",4400);H(this,"connectionTimeout",4400);H(this,"publishTimeout",4400);H(this,"pingFrequency",29e3);H(this,"pingTimeout",2e4);H(this,"resubscribeBackoff",[1e4,1e4,1e4,2e4,2e4,3e4,6e4]);H(this,"openSubs",new Map);H(this,"enablePing");H(this,"enableReconnect");H(this,"connectionTimeoutHandle");H(this,"reconnectTimeoutHandle");H(this,"pingIntervalHandle");H(this,"reconnectAttempts",0);H(this,"closedIntentionally",!1);H(this,"connectionPromise");H(this,"openCountRequests",new Map);H(this,"openEventPublishes",new Map);H(this,"ws");H(this,"incomingMessageQueue",new fU);H(this,"queueRunning",!1);H(this,"challenge");H(this,"authPromise");H(this,"serial",0);H(this,"verifyEvent");H(this,"_WebSocket");this.url=qr(n),this.verifyEvent=e.verifyEvent,this._WebSocket=e.websocketImplementation||WebSocket,this.enablePing=e.enablePing,this.enableReconnect=e.enableReconnect||!1}static async connect(n,e){const t=new DA(n,e);return await t.connect(),t}closeAllSubscriptions(n){for(let[e,t]of this.openSubs)t.close(n);this.openSubs.clear();for(let[e,t]of this.openEventPublishes)t.reject(new Error(n));this.openEventPublishes.clear();for(let[e,t]of this.openCountRequests)t.reject(new Error(n));this.openCountRequests.clear()}get connected(){return this._connected}async reconnect(){const n=this.resubscribeBackoff[Math.min(this.reconnectAttempts,this.resubscribeBackoff.length-1)];this.reconnectAttempts++,this.reconnectTimeoutHandle=setTimeout(async()=>{try{await this.connect()}catch{}},n)}handleHardClose(n){var t;this.pingIntervalHandle&&(clearInterval(this.pingIntervalHandle),this.pingIntervalHandle=void 0),this._connected=!1,this.connectionPromise=void 0;const e=this.closedIntentionally;this.closedIntentionally=!1,(t=this.onclose)==null||t.call(this),this.enableReconnect&&!e?this.reconnect():this.closeAllSubscriptions(n)}async connect(){return this.connectionPromise?this.connectionPromise:(this.challenge=void 0,this.authPromise=void 0,this.connectionPromise=new Promise((n,e)=>{this.connectionTimeoutHandle=setTimeout(()=>{var t;e("connection timed out"),this.connectionPromise=void 0,(t=this.onclose)==null||t.call(this),this.closeAllSubscriptions("relay connection timed out")},this.connectionTimeout);try{this.ws=new this._WebSocket(this.url)}catch(t){clearTimeout(this.connectionTimeoutHandle),e(t);return}this.ws.onopen=()=>{this.reconnectTimeoutHandle&&(clearTimeout(this.reconnectTimeoutHandle),this.reconnectTimeoutHandle=void 0),clearTimeout(this.connectionTimeoutHandle),this._connected=!0;const t=this.reconnectAttempts>0;this.reconnectAttempts=0;for(const o of this.openSubs.values()){if(o.eosed=!1,t)for(let a=0;a<o.filters.length;a++)o.lastEmitted&&(o.filters[a].since=o.lastEmitted+1);o.fire()}this.enablePing&&(this.pingIntervalHandle=setInterval(()=>this.pingpong(),this.pingFrequency)),n()},this.ws.onerror=t=>{clearTimeout(this.connectionTimeoutHandle),e(t.message||"websocket error"),this.handleHardClose("relay connection errored")},this.ws.onclose=t=>{clearTimeout(this.connectionTimeoutHandle),e(t.message||"websocket closed"),this.handleHardClose("relay connection closed")},this.ws.onmessage=this._onmessage.bind(this)}),this.connectionPromise)}waitForPingPong(){return new Promise(n=>{this.ws.once("pong",()=>n(!0)),this.ws.ping()})}waitForDummyReq(){return new Promise((n,e)=>{if(!this.connectionPromise)return e(new Error(`no connection to ${this.url}, can't ping`));try{const t=this.subscribe([{ids:["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],limit:0}],{label:"forced-ping",oneose:()=>{n(!0),t.close()},onclose(){n(!0)},eoseTimeout:this.pingTimeout+1e3})}catch(t){e(t)}})}async pingpong(){var n,e,t;((n=this.ws)==null?void 0:n.readyState)===1&&(await Promise.any([this.ws&&this.ws.ping&&this.ws.once?this.waitForPingPong():this.waitForDummyReq(),new Promise(a=>setTimeout(()=>a(!1),this.pingTimeout))])||((e=this.ws)==null?void 0:e.readyState)===this._WebSocket.OPEN&&((t=this.ws)==null||t.close()))}async runQueue(){for(this.queueRunning=!0;this.handleNext()!==!1;)await NU();this.queueRunning=!1}handleNext(){var t,o,a;const n=this.incomingMessageQueue.dequeue();if(!n)return!1;const e=CU(n);if(e){const r=this.openSubs.get(e);if(!r)return;const i=RU(n,"id"),s=(t=r.alreadyHaveEvent)==null?void 0:t.call(r,i);if((o=r.receivedEvent)==null||o.call(r,this,i),s)return}try{let r=JSON.parse(n);switch(r[0]){case"EVENT":{const i=this.openSubs.get(r[1]),s=r[2];this.verifyEvent(s)&&EU(i.filters,s)&&i.onevent(s),(!i.lastEmitted||i.lastEmitted<s.created_at)&&(i.lastEmitted=s.created_at);return}case"COUNT":{const i=r[1],s=r[2],l=this.openCountRequests.get(i);l&&(l.resolve(s.count),this.openCountRequests.delete(i));return}case"EOSE":{const i=this.openSubs.get(r[1]);if(!i)return;i.receivedEose();return}case"OK":{const i=r[1],s=r[2],l=r[3],u=this.openEventPublishes.get(i);u&&(clearTimeout(u.timeout),s?u.resolve(l):u.reject(new Error(l)),this.openEventPublishes.delete(i));return}case"CLOSED":{const i=r[1],s=this.openSubs.get(i);if(!s)return;s.closed=!0,s.close(r[2]);return}case"NOTICE":{this.onnotice(r[1]);return}case"AUTH":{this.challenge=r[1],this.onauth&&this.auth(this.onauth);return}default:{const i=this.openSubs.get(r[1]);(a=i==null?void 0:i.oncustom)==null||a.call(i,r);return}}}catch{return}}async send(n){if(!this.connectionPromise)throw new MA(n,this.url);this.connectionPromise.then(()=>{var e;(e=this.ws)==null||e.send(n)})}async auth(n){const e=this.challenge;if(!e)throw new Error("can't perform auth, no challenge was received");return this.authPromise?this.authPromise:(this.authPromise=new Promise(async(t,o)=>{try{let a=await n(PU(this.url,e)),r=setTimeout(()=>{let i=this.openEventPublishes.get(a.id);i&&(i.reject(new Error("auth timed out")),this.openEventPublishes.delete(a.id))},this.publishTimeout);this.openEventPublishes.set(a.id,{resolve:t,reject:o,timeout:r}),this.send('["AUTH",'+JSON.stringify(a)+"]")}catch(a){console.warn("subscribe auth function failed:",a)}}),this.authPromise)}async publish(n){const e=new Promise((t,o)=>{const a=setTimeout(()=>{const r=this.openEventPublishes.get(n.id);r&&(r.reject(new Error("publish timed out")),this.openEventPublishes.delete(n.id))},this.publishTimeout);this.openEventPublishes.set(n.id,{resolve:t,reject:o,timeout:a})});return this.send('["EVENT",'+JSON.stringify(n)+"]"),e}async count(n,e){this.serial++;const t=(e==null?void 0:e.id)||"count:"+this.serial,o=new Promise((a,r)=>{this.openCountRequests.set(t,{resolve:a,reject:r})});return this.send('["COUNT","'+t+'",'+JSON.stringify(n).substring(1)),o}subscribe(n,e){const t=this.prepareSubscription(n,e);return t.fire(),t}prepareSubscription(n,e){this.serial++;const t=e.id||(e.label?e.label+":":"sub:")+this.serial,o=new jU(this,t,n,e);return this.openSubs.set(t,o),o}close(){var n,e,t;this.closedIntentionally=!0,this.reconnectTimeoutHandle&&(clearTimeout(this.reconnectTimeoutHandle),this.reconnectTimeoutHandle=void 0),this.pingIntervalHandle&&(clearInterval(this.pingIntervalHandle),this.pingIntervalHandle=void 0),this.closeAllSubscriptions("relay connection closed by us"),this._connected=!1,(n=this.onclose)==null||n.call(this),((e=this.ws)==null?void 0:e.readyState)===this._WebSocket.OPEN&&((t=this.ws)==null||t.close())}_onmessage(n){this.incomingMessageQueue.enqueue(n.data),this.queueRunning||this.runQueue()}},jU=class{constructor(n,e,t,o){H(this,"relay");H(this,"id");H(this,"lastEmitted");H(this,"closed",!1);H(this,"eosed",!1);H(this,"filters");H(this,"alreadyHaveEvent");H(this,"receivedEvent");H(this,"onevent");H(this,"oneose");H(this,"onclose");H(this,"oncustom");H(this,"eoseTimeout");H(this,"eoseTimeoutHandle");if(t.length===0)throw new Error("subscription can't be created with zero filters");this.relay=n,this.filters=t,this.id=e,this.alreadyHaveEvent=o.alreadyHaveEvent,this.receivedEvent=o.receivedEvent,this.eoseTimeout=o.eoseTimeout||n.baseEoseTimeout,this.oneose=o.oneose,this.onclose=o.onclose,this.onevent=o.onevent||(a=>{console.warn(`onevent() callback not defined for subscription '${this.id}' in relay ${this.relay.url}. event received:`,a)})}fire(){this.relay.send('["REQ","'+this.id+'",'+JSON.stringify(this.filters).substring(1)),this.eoseTimeoutHandle=setTimeout(this.receivedEose.bind(this),this.eoseTimeout)}receivedEose(){var n;this.eosed||(clearTimeout(this.eoseTimeoutHandle),this.eosed=!0,(n=this.oneose)==null||n.call(this))}close(n="closed by caller"){var e;if(!this.closed&&this.relay.connected){try{this.relay.send('["CLOSE",'+JSON.stringify(this.id)+"]")}catch(t){if(!(t instanceof MA))throw t}this.closed=!0}this.relay.openSubs.delete(this.id),(e=this.onclose)==null||e.call(this,n)}},zU=class{constructor(n){H(this,"relays",new Map);H(this,"seenOn",new Map);H(this,"trackRelays",!1);H(this,"verifyEvent");H(this,"enablePing");H(this,"enableReconnect");H(this,"automaticallyAuth");H(this,"trustedRelayURLs",new Set);H(this,"_WebSocket");this.verifyEvent=n.verifyEvent,this._WebSocket=n.websocketImplementation,this.enablePing=n.enablePing,this.enableReconnect=n.enableReconnect||!1,this.automaticallyAuth=n.automaticallyAuth}async ensureRelay(n,e){n=qr(n);let t=this.relays.get(n);if(t||(t=new DA(n,{verifyEvent:this.trustedRelayURLs.has(n)?TU:this.verifyEvent,websocketImplementation:this._WebSocket,enablePing:this.enablePing,enableReconnect:this.enableReconnect}),t.onclose=()=>{t&&!t.enableReconnect&&this.relays.delete(n)},e!=null&&e.connectionTimeout&&(t.connectionTimeout=e.connectionTimeout),this.relays.set(n,t)),this.automaticallyAuth){const o=this.automaticallyAuth(n);o&&(t.onauth=o)}return await t.connect(),t}close(n){n.map(qr).forEach(e=>{var t;(t=this.relays.get(e))==null||t.close(),this.relays.delete(e)})}subscribe(n,e,t){const o=[];for(let a=0;a<n.length;a++){const r=qr(n[a]);o.find(i=>i.url===r)||o.push({url:r,filter:e})}return this.subscribeMap(o,t)}subscribeMany(n,e,t){const o=[],a=[];for(let r=0;r<n.length;r++){const i=qr(n[r]);a.indexOf(i)===-1&&(a.push(i),o.push({url:i,filter:e}))}return this.subscribeMap(o,t)}subscribeMap(n,e){const t=new Map;for(const p of n){const{url:m,filter:g}=p;t.has(m)||t.set(m,[]),t.get(m).push(g)}const o=Array.from(t.entries()).map(([p,m])=>({url:p,filters:m}));this.trackRelays&&(e.receivedEvent=(p,m)=>{let g=this.seenOn.get(m);g||(g=new Set,this.seenOn.set(m,g)),g.add(p)});const a=new Set,r=[],i=[];let s=p=>{var m;i[p]||(i[p]=!0,i.filter(g=>g).length===o.length&&((m=e.oneose)==null||m.call(e),s=()=>{}))};const l=[];let u=(p,m)=>{var g;l[p]||(s(p),l[p]=m,l.filter(y=>y).length===o.length&&((g=e.onclose)==null||g.call(e,l),u=()=>{}))};const f=p=>{var g;if((g=e.alreadyHaveEvent)!=null&&g.call(e,p))return!0;const m=a.has(p);return a.add(p),m},d=Promise.all(o.map(async({url:p,filters:m},g)=>{let y;try{y=await this.ensureRelay(p,{connectionTimeout:e.maxWait?Math.max(e.maxWait*.8,e.maxWait-1e3):void 0})}catch(v){u(g,(v==null?void 0:v.message)||String(v));return}let w=y.subscribe(m,{...e,oneose:()=>s(g),onclose:v=>{v.startsWith("auth-required: ")&&e.onauth?y.auth(e.onauth).then(()=>{y.subscribe(m,{...e,oneose:()=>s(g),onclose:k=>{u(g,k)},alreadyHaveEvent:f,eoseTimeout:e.maxWait})}).catch(k=>{u(g,`auth was required and attempted, but failed with: ${k}`)}):u(g,v)},alreadyHaveEvent:f,eoseTimeout:e.maxWait});r.push(w)}));return{async close(p){await d,r.forEach(m=>{m.close(p)})}}}subscribeEose(n,e,t){const o=this.subscribe(n,e,{...t,oneose(){o.close("closed automatically on eose")}});return o}subscribeManyEose(n,e,t){const o=this.subscribeMany(n,e,{...t,oneose(){o.close("closed automatically on eose")}});return o}async querySync(n,e,t){return new Promise(async o=>{const a=[];this.subscribeEose(n,e,{...t,onevent(r){a.push(r)},onclose(r){o(a)}})})}async get(n,e,t){e.limit=1;const o=await this.querySync(n,e,t);return o.sort((a,r)=>r.created_at-a.created_at),o[0]||null}publish(n,e,t){return n.map(qr).map(async(o,a,r)=>{if(r.indexOf(o)!==a)return Promise.reject("duplicate url");let i=await this.ensureRelay(o);return i.publish(e).catch(async s=>{if(s instanceof Error&&s.message.startsWith("auth-required: ")&&(t!=null&&t.onauth))return await i.auth(t.onauth),i.publish(e);throw s}).then(s=>{if(this.trackRelays){let l=this.seenOn.get(e.id);l||(l=new Set,this.seenOn.set(e.id,l)),l.add(i)}return s})})}listConnectionStatus(){const n=new Map;return this.relays.forEach((e,t)=>n.set(t,e.connected)),n}destroy(){this.relays.forEach(n=>n.close()),this.relays=new Map}},_A;try{_A=WebSocket}catch{}var IU=class extends zU{constructor(n){super({verifyEvent:NA,websocketImplementation:_A,...n})}},FA;try{FA=fetch}catch{}var LU=/^bunker:\/\/([0-9a-f]{64})\??([?\/\w:.=&%-]*)$/;function MU(n){let e=new URL(`bunker://${n.pubkey}`);return n.relays.forEach(t=>{e.searchParams.append("relay",t)}),n.secret&&e.searchParams.set("secret",n.secret),e.toString()}async function DU(n){let e=n.match(LU);if(e)try{const t=e[1],o=new URLSearchParams(e[2]);return{pubkey:t,relays:o.getAll("relay"),secret:o.get("secret")}}catch{}return _U(n)}async function _U(n){const e=n.match(kU);if(!e)return null;const[t,o="_",a]=e;try{const r=`https://${a}/.well-known/nostr.json?name=${o}`,i=await(await FA(r,{redirect:"error"})).json();let s=i.names[o],l=i.nip46[s]||[];return{pubkey:s,relays:l,secret:null}}catch{return null}}function FU(n){if(!n.clientPubkey)throw new Error("clientPubkey is required.");if(!n.relays||n.relays.length===0)throw new Error("At least one relay is required.");if(!n.secret)throw new Error("secret is required.");const e=new URLSearchParams;return n.relays.forEach(t=>{e.append("relay",t)}),e.append("secret",n.secret),n.perms&&n.perms.length>0&&e.append("perms",n.perms.join(",")),n.name&&e.append("name",n.name),n.url&&e.append("url",n.url),n.image&&e.append("image",n.image),`nostrconnect://${n.clientPubkey}?${e.toString()}`}function OU(n){if(!n.startsWith("nostrconnect://"))throw new Error('Invalid nostrconnect URI: Must start with "nostrconnect://".');const[e,t]=n.split("?");if(!e||!t)throw new Error("Invalid nostrconnect URI: Missing query string.");const o=e.substring(15);if(!o)throw new Error("Invalid nostrconnect URI: Missing client-pubkey.");const a=new URLSearchParams(t),r=a.getAll("relay");if(r.length===0)throw new Error('Invalid nostrconnect URI: Missing "relay" parameter.');const i=a.get("secret");if(!i)throw new Error('Invalid nostrconnect URI: Missing "secret" parameter.');const s=a.get("perms"),l=s?s.split(","):void 0,u=a.get("name")||void 0,f=a.get("url")||void 0,d=a.get("image")||void 0;return{protocol:"nostrconnect",clientPubkey:o,params:{relays:r,secret:i,perms:l,name:u,url:f,image:d},originalString:n}}var Au=class{constructor(e,t){H(this,"params");H(this,"pool");H(this,"subCloser");H(this,"isOpen");H(this,"serial");H(this,"idPrefix");H(this,"listeners");H(this,"waitingForAuth");H(this,"secretKey");H(this,"conversationKey");H(this,"bp");H(this,"cachedPubKey");this.params=t,this.pool=t.pool||new IU,this.secretKey=e,this.isOpen=!1,this.idPrefix=Math.random().toString(36).substring(7),this.serial=0,this.listeners={},this.waitingForAuth={}}static fromBunker(e,t,o={}){if(t.relays.length===0)throw new Error("No relays specified for this bunker");const a=new Au(e,o);return a.conversationKey=Rf(e,t.pubkey),a.bp=t,a.setupSubscription(o),a}static async fromURI(e,t,o={},a=3e5){const r=new Au(e,o),i=OU(t),s=H0(e);return new Promise((l,u)=>{const f=setTimeout(()=>{d.close(),u(new Error(`Connection timed out after ${a/1e3} seconds`))},a),d=r.pool.subscribe(i.params.relays,{kinds:[Cf],"#p":[s]},{onevent:async p=>{try{const m=Rf(e,p.pubkey),g=$0(p.content,m);JSON.parse(g).result===i.params.secret&&(clearTimeout(f),d.close(),r.bp={pubkey:p.pubkey,relays:i.params.relays,secret:i.params.secret},r.conversationKey=Rf(e,p.pubkey),r.setupSubscription(o),l(r))}catch(m){console.warn("Failed to process potential connection event",m)}},onclose:()=>{clearTimeout(f),u(new Error("Subscription closed before connection was established."))},maxWait:a})})}setupSubscription(e){const t=this.listeners,o=this.waitingForAuth,a=this.conversationKey;this.subCloser=this.pool.subscribe(this.bp.relays,{kinds:[Cf],authors:[this.bp.pubkey],"#p":[H0(this.secretKey)]},{onevent:async r=>{const i=JSON.parse($0(r.content,a)),{id:s,result:l,error:u}=i;if(l==="auth_url"&&o[s]){delete o[s],e.onauth?e.onauth(u):console.warn(`nostr-tools/nip46: remote signer ${this.bp.pubkey} tried to send an "auth_url"='${u}' but there was no onauth() callback configured.`);return}let f=t[s];f&&(u?f.reject(u):l&&f.resolve(l),delete t[s])},onclose:()=>{this.subCloser=void 0}}),this.isOpen=!0}async close(){this.isOpen=!1,this.subCloser.close()}async sendRequest(e,t){return new Promise(async(o,a)=>{try{if(!this.isOpen)throw new Error("this signer is not open anymore, create a new one");this.subCloser||this.setupSubscription(this.params),this.serial++;const r=`${this.idPrefix}-${this.serial}`,i=bU(JSON.stringify({id:r,method:e,params:t}),this.conversationKey),s=mU({kind:Cf,tags:[["p",this.bp.pubkey]],content:i,created_at:Math.floor(Date.now()/1e3)},this.secretKey);this.listeners[r]={resolve:o,reject:a},this.waitingForAuth[r]=!0,await Promise.any(this.pool.publish(this.bp.relays,s))}catch(r){a(r)}})}async ping(){let e=await this.sendRequest("ping",[]);if(e!=="pong")throw new Error(`result is not pong: ${e}`)}async connect(){await this.sendRequest("connect",[this.bp.pubkey,this.bp.secret||""])}async getPublicKey(){return this.cachedPubKey||(this.cachedPubKey=await this.sendRequest("get_public_key",[])),this.cachedPubKey}async signEvent(e){let t=await this.sendRequest("sign_event",[JSON.stringify(e)]),o=JSON.parse(t);if(NA(o))return o;throw new Error(`event returned from bunker is improperly signed: ${JSON.stringify(o)}`)}async nip04Encrypt(e,t){return await this.sendRequest("nip04_encrypt",[e,t])}async nip04Decrypt(e,t){return await this.sendRequest("nip04_decrypt",[e,t])}async nip44Encrypt(e,t){return await this.sendRequest("nip44_encrypt",[e,t])}async nip44Decrypt(e,t){return await this.sendRequest("nip44_decrypt",[e,t])}};class rt{constructor(e,t,o,a,r){this._legacyCanvasSize=rt.DEFAULT_CANVAS_SIZE,this._preferredCamera="environment",this._maxScansPerSecond=25,this._lastScanTimestamp=-1,this._destroyed=this._flashOn=this._paused=this._active=!1,this.$video=e,this.$canvas=document.createElement("canvas"),o&&typeof o=="object"?this._onDecode=t:(console.warn(o||a||r?"You're using a deprecated version of the QrScanner constructor which will be removed in the future":"Note that the type of the scan result passed to onDecode will change in the future. To already switch to the new api today, you can pass returnDetailedScanResult: true."),this._legacyOnDecode=t),t=typeof o=="object"?o:{},this._onDecodeError=t.onDecodeError||(typeof o=="function"?o:this._onDecodeError),this._calculateScanRegion=t.calculateScanRegion||(typeof a=="function"?a:this._calculateScanRegion),this._preferredCamera=t.preferredCamera||r||this._preferredCamera,this._legacyCanvasSize=typeof o=="number"?o:typeof a=="number"?a:this._legacyCanvasSize,this._maxScansPerSecond=t.maxScansPerSecond||this._maxScansPerSecond,this._onPlay=this._onPlay.bind(this),this._onLoadedMetaData=this._onLoadedMetaData.bind(this),this._onVisibilityChange=this._onVisibilityChange.bind(this),this._updateOverlay=this._updateOverlay.bind(this),e.disablePictureInPicture=!0,e.playsInline=!0,e.muted=!0;let i=!1;if(e.hidden&&(e.hidden=!1,i=!0),document.body.contains(e)||(document.body.appendChild(e),i=!0),o=e.parentElement,t.highlightScanRegion||t.highlightCodeOutline){if(a=!!t.overlay,this.$overlay=t.overlay||document.createElement("div"),r=this.$overlay.style,r.position="absolute",r.display="none",r.pointerEvents="none",this.$overlay.classList.add("scan-region-highlight"),!a&&t.highlightScanRegion){this.$overlay.innerHTML='<svg class="scan-region-highlight-svg" viewBox="0 0 238 238" preserveAspectRatio="none" style="position:absolute;width:100%;height:100%;left:0;top:0;fill:none;stroke:#e9b213;stroke-width:4;stroke-linecap:round;stroke-linejoin:round"><path d="M31 2H10a8 8 0 0 0-8 8v21M207 2h21a8 8 0 0 1 8 8v21m0 176v21a8 8 0 0 1-8 8h-21m-176 0H10a8 8 0 0 1-8-8v-21"/></svg>';try{this.$overlay.firstElementChild.animate({transform:["scale(.98)","scale(1.01)"]},{duration:400,iterations:1/0,direction:"alternate",easing:"ease-in-out"})}catch{}o.insertBefore(this.$overlay,this.$video.nextSibling)}t.highlightCodeOutline&&(this.$overlay.insertAdjacentHTML("beforeend",'<svg class="code-outline-highlight" preserveAspectRatio="none" style="display:none;width:100%;height:100%;fill:none;stroke:#e9b213;stroke-width:5;stroke-dasharray:25;stroke-linecap:round;stroke-linejoin:round"><polygon/></svg>'),this.$codeOutlineHighlight=this.$overlay.lastElementChild)}this._scanRegion=this._calculateScanRegion(e),requestAnimationFrame(()=>{let s=window.getComputedStyle(e);s.display==="none"&&(e.style.setProperty("display","block","important"),i=!0),s.visibility!=="visible"&&(e.style.setProperty("visibility","visible","important"),i=!0),i&&(console.warn("QrScanner has overwritten the video hiding style to avoid Safari stopping the playback."),e.style.opacity="0",e.style.width="0",e.style.height="0",this.$overlay&&this.$overlay.parentElement&&this.$overlay.parentElement.removeChild(this.$overlay),delete this.$overlay,delete this.$codeOutlineHighlight),this.$overlay&&this._updateOverlay()}),e.addEventListener("play",this._onPlay),e.addEventListener("loadedmetadata",this._onLoadedMetaData),document.addEventListener("visibilitychange",this._onVisibilityChange),window.addEventListener("resize",this._updateOverlay),this._qrEnginePromise=rt.createQrEngine()}static set WORKER_PATH(e){console.warn("Setting QrScanner.WORKER_PATH is not required and not supported anymore. Have a look at the README for new setup instructions.")}static async hasCamera(){try{return!!(await rt.listCameras(!1)).length}catch{return!1}}static async listCameras(e=!1){if(!navigator.mediaDevices)return[];let t=async()=>(await navigator.mediaDevices.enumerateDevices()).filter(a=>a.kind==="videoinput"),o;try{e&&(await t()).every(a=>!a.label)&&(o=await navigator.mediaDevices.getUserMedia({audio:!1,video:!0}))}catch{}try{return(await t()).map((a,r)=>({id:a.deviceId,label:a.label||(r===0?"Default Camera":`Camera ${r+1}`)}))}finally{o&&(console.warn("Call listCameras after successfully starting a QR scanner to avoid creating a temporary video stream"),rt._stopVideoStream(o))}}async hasFlash(){let e;try{if(this.$video.srcObject){if(!(this.$video.srcObject instanceof MediaStream))return!1;e=this.$video.srcObject}else e=(await this._getCameraStream()).stream;return"torch"in e.getVideoTracks()[0].getSettings()}catch{return!1}finally{e&&e!==this.$video.srcObject&&(console.warn("Call hasFlash after successfully starting the scanner to avoid creating a temporary video stream"),rt._stopVideoStream(e))}}isFlashOn(){return this._flashOn}async toggleFlash(){this._flashOn?await this.turnFlashOff():await this.turnFlashOn()}async turnFlashOn(){if(!this._flashOn&&!this._destroyed&&(this._flashOn=!0,this._active&&!this._paused))try{if(!await this.hasFlash())throw"No flash available";await this.$video.srcObject.getVideoTracks()[0].applyConstraints({advanced:[{torch:!0}]})}catch(e){throw this._flashOn=!1,e}}async turnFlashOff(){this._flashOn&&(this._flashOn=!1,await this._restartVideoStream())}destroy(){this.$video.removeEventListener("loadedmetadata",this._onLoadedMetaData),this.$video.removeEventListener("play",this._onPlay),document.removeEventListener("visibilitychange",this._onVisibilityChange),window.removeEventListener("resize",this._updateOverlay),this._destroyed=!0,this._flashOn=!1,this.stop(),rt._postWorkerMessage(this._qrEnginePromise,"close")}async start(){if(this._destroyed)throw Error("The QR scanner can not be started as it had been destroyed.");if((!this._active||this._paused)&&(window.location.protocol!=="https:"&&console.warn("The camera stream is only accessible if the page is transferred via https."),this._active=!0,!document.hidden))if(this._paused=!1,this.$video.srcObject)await this.$video.play();else try{let{stream:e,facingMode:t}=await this._getCameraStream();!this._active||this._paused?rt._stopVideoStream(e):(this._setVideoMirror(t),this.$video.srcObject=e,await this.$video.play(),this._flashOn&&(this._flashOn=!1,this.turnFlashOn().catch(()=>{})))}catch(e){if(!this._paused)throw this._active=!1,e}}stop(){this.pause(),this._active=!1}async pause(e=!1){if(this._paused=!0,!this._active)return!0;this.$video.pause(),this.$overlay&&(this.$overlay.style.display="none");let t=()=>{this.$video.srcObject instanceof MediaStream&&(rt._stopVideoStream(this.$video.srcObject),this.$video.srcObject=null)};return e?(t(),!0):(await new Promise(o=>setTimeout(o,300)),this._paused?(t(),!0):!1)}async setCamera(e){e!==this._preferredCamera&&(this._preferredCamera=e,await this._restartVideoStream())}static async scanImage(e,t,o,a,r=!1,i=!1){let s,l=!1;t&&("scanRegion"in t||"qrEngine"in t||"canvas"in t||"disallowCanvasResizing"in t||"alsoTryWithoutScanRegion"in t||"returnDetailedScanResult"in t)?(s=t.scanRegion,o=t.qrEngine,a=t.canvas,r=t.disallowCanvasResizing||!1,i=t.alsoTryWithoutScanRegion||!1,l=!0):console.warn(t||o||a||r||i?"You're using a deprecated api for scanImage which will be removed in the future.":"Note that the return type of scanImage will change in the future. To already switch to the new api today, you can pass returnDetailedScanResult: true."),t=!!o;try{let u,f;[o,u]=await Promise.all([o||rt.createQrEngine(),rt._loadImage(e)]),[a,f]=rt._drawToCanvas(u,s,a,r);let d;if(o instanceof Worker){let p=o;t||rt._postWorkerMessageSync(p,"inversionMode","both"),d=await new Promise((m,g)=>{let y,w,v,k=-1;w=A=>{A.data.id===k&&(p.removeEventListener("message",w),p.removeEventListener("error",v),clearTimeout(y),A.data.data!==null?m({data:A.data.data,cornerPoints:rt._convertPoints(A.data.cornerPoints,s)}):g(rt.NO_QR_CODE_FOUND))},v=A=>{p.removeEventListener("message",w),p.removeEventListener("error",v),clearTimeout(y),g("Scanner error: "+(A?A.message||A:"Unknown Error"))},p.addEventListener("message",w),p.addEventListener("error",v),y=setTimeout(()=>v("timeout"),1e4);let E=f.getImageData(0,0,a.width,a.height);k=rt._postWorkerMessageSync(p,"decode",E,[E.data.buffer])})}else d=await Promise.race([new Promise((p,m)=>window.setTimeout(()=>m("Scanner error: timeout"),1e4)),(async()=>{try{var[p]=await o.detect(a);if(!p)throw rt.NO_QR_CODE_FOUND;return{data:p.rawValue,cornerPoints:rt._convertPoints(p.cornerPoints,s)}}catch(m){if(p=m.message||m,/not implemented|service unavailable/.test(p))return rt._disableBarcodeDetector=!0,rt.scanImage(e,{scanRegion:s,canvas:a,disallowCanvasResizing:r,alsoTryWithoutScanRegion:i});throw`Scanner error: ${p}`}})()]);return l?d:d.data}catch(u){if(!s||!i)throw u;let f=await rt.scanImage(e,{qrEngine:o,canvas:a,disallowCanvasResizing:r});return l?f:f.data}finally{t||rt._postWorkerMessage(o,"close")}}setGrayscaleWeights(e,t,o,a=!0){rt._postWorkerMessage(this._qrEnginePromise,"grayscaleWeights",{red:e,green:t,blue:o,useIntegerApproximation:a})}setInversionMode(e){rt._postWorkerMessage(this._qrEnginePromise,"inversionMode",e)}static async createQrEngine(e){if(e&&console.warn("Specifying a worker path is not required and not supported anymore."),e=()=>Ve(()=>import("./qr-scanner-worker.min-D85Z9gVD.js"),[]).then(o=>o.createWorker()),!(!rt._disableBarcodeDetector&&"BarcodeDetector"in window&&BarcodeDetector.getSupportedFormats&&(await BarcodeDetector.getSupportedFormats()).includes("qr_code")))return e();let t=navigator.userAgentData;return t&&t.brands.some(({brand:o})=>/Chromium/i.test(o))&&/mac ?OS/i.test(t.platform)&&await t.getHighEntropyValues(["architecture","platformVersion"]).then(({architecture:o,platformVersion:a})=>/arm/i.test(o||"arm")&&13<=parseInt(a||"13")).catch(()=>!0)?e():new BarcodeDetector({formats:["qr_code"]})}_onPlay(){this._scanRegion=this._calculateScanRegion(this.$video),this._updateOverlay(),this.$overlay&&(this.$overlay.style.display=""),this._scanFrame()}_onLoadedMetaData(){this._scanRegion=this._calculateScanRegion(this.$video),this._updateOverlay()}_onVisibilityChange(){document.hidden?this.pause():this._active&&this.start()}_calculateScanRegion(e){let t=Math.round(.6666666666666666*Math.min(e.videoWidth,e.videoHeight));return{x:Math.round((e.videoWidth-t)/2),y:Math.round((e.videoHeight-t)/2),width:t,height:t,downScaledWidth:this._legacyCanvasSize,downScaledHeight:this._legacyCanvasSize}}_updateOverlay(){requestAnimationFrame(()=>{if(this.$overlay){var e=this.$video,t=e.videoWidth,o=e.videoHeight,a=e.offsetWidth,r=e.offsetHeight,i=e.offsetLeft,s=e.offsetTop,l=window.getComputedStyle(e),u=l.objectFit,f=t/o,d=a/r;switch(u){case"none":var p=t,m=o;break;case"fill":p=a,m=r;break;default:(u==="cover"?f>d:f<d)?(m=r,p=m*f):(p=a,m=p/f),u==="scale-down"&&(p=Math.min(p,t),m=Math.min(m,o))}var[g,y]=l.objectPosition.split(" ").map((v,k)=>{const E=parseFloat(v);return v.endsWith("%")?(k?r-m:a-p)*E/100:E});l=this._scanRegion.width||t,d=this._scanRegion.height||o,u=this._scanRegion.x||0;var w=this._scanRegion.y||0;f=this.$overlay.style,f.width=`${l/t*p}px`,f.height=`${d/o*m}px`,f.top=`${s+y+w/o*m}px`,o=/scaleX\(-1\)/.test(e.style.transform),f.left=`${i+(o?a-g-p:g)+(o?t-u-l:u)/t*p}px`,f.transform=e.style.transform}})}static _convertPoints(e,t){if(!t)return e;let o=t.x||0,a=t.y||0,r=t.width&&t.downScaledWidth?t.width/t.downScaledWidth:1;t=t.height&&t.downScaledHeight?t.height/t.downScaledHeight:1;for(let i of e)i.x=i.x*r+o,i.y=i.y*t+a;return e}_scanFrame(){!this._active||this.$video.paused||this.$video.ended||("requestVideoFrameCallback"in this.$video?this.$video.requestVideoFrameCallback.bind(this.$video):requestAnimationFrame)(async()=>{if(!(1>=this.$video.readyState)){var e=Date.now()-this._lastScanTimestamp,t=1e3/this._maxScansPerSecond;e<t&&await new Promise(a=>setTimeout(a,t-e)),this._lastScanTimestamp=Date.now();try{var o=await rt.scanImage(this.$video,{scanRegion:this._scanRegion,qrEngine:this._qrEnginePromise,canvas:this.$canvas})}catch(a){if(!this._active)return;this._onDecodeError(a)}!rt._disableBarcodeDetector||await this._qrEnginePromise instanceof Worker||(this._qrEnginePromise=rt.createQrEngine()),o?(this._onDecode?this._onDecode(o):this._legacyOnDecode&&this._legacyOnDecode(o.data),this.$codeOutlineHighlight&&(clearTimeout(this._codeOutlineHighlightRemovalTimeout),this._codeOutlineHighlightRemovalTimeout=void 0,this.$codeOutlineHighlight.setAttribute("viewBox",`${this._scanRegion.x||0} ${this._scanRegion.y||0} ${this._scanRegion.width||this.$video.videoWidth} ${this._scanRegion.height||this.$video.videoHeight}`),this.$codeOutlineHighlight.firstElementChild.setAttribute("points",o.cornerPoints.map(({x:a,y:r})=>`${a},${r}`).join(" ")),this.$codeOutlineHighlight.style.display="")):this.$codeOutlineHighlight&&!this._codeOutlineHighlightRemovalTimeout&&(this._codeOutlineHighlightRemovalTimeout=setTimeout(()=>this.$codeOutlineHighlight.style.display="none",100))}this._scanFrame()})}_onDecodeError(e){e!==rt.NO_QR_CODE_FOUND&&console.log(e)}async _getCameraStream(){if(!navigator.mediaDevices)throw"Camera not found.";let e=/^(environment|user)$/.test(this._preferredCamera)?"facingMode":"deviceId",t=[{width:{min:1024}},{width:{min:768}},{}],o=t.map(a=>Object.assign({},a,{[e]:{exact:this._preferredCamera}}));for(let a of[...o,...t])try{let r=await navigator.mediaDevices.getUserMedia({video:a,audio:!1}),i=this._getFacingMode(r)||(a.facingMode?this._preferredCamera:this._preferredCamera==="environment"?"user":"environment");return{stream:r,facingMode:i}}catch{}throw"Camera not found."}async _restartVideoStream(){let e=this._paused;await this.pause(!0)&&!e&&this._active&&await this.start()}static _stopVideoStream(e){for(let t of e.getTracks())t.stop(),e.removeTrack(t)}_setVideoMirror(e){this.$video.style.transform="scaleX("+(e==="user"?-1:1)+")"}_getFacingMode(e){return(e=e.getVideoTracks()[0])?/rear|back|environment/i.test(e.label)?"environment":/front|user|face/i.test(e.label)?"user":null:null}static _drawToCanvas(e,t,o,a=!1){o=o||document.createElement("canvas");let r=t&&t.x?t.x:0,i=t&&t.y?t.y:0,s=t&&t.width?t.width:e.videoWidth||e.width,l=t&&t.height?t.height:e.videoHeight||e.height;return a||(a=t&&t.downScaledWidth?t.downScaledWidth:s,t=t&&t.downScaledHeight?t.downScaledHeight:l,o.width!==a&&(o.width=a),o.height!==t&&(o.height=t)),t=o.getContext("2d",{alpha:!1}),t.imageSmoothingEnabled=!1,t.drawImage(e,r,i,s,l,0,0,o.width,o.height),[o,t]}static async _loadImage(e){if(e instanceof Image)return await rt._awaitImageLoad(e),e;if(e instanceof HTMLVideoElement||e instanceof HTMLCanvasElement||e instanceof SVGImageElement||"OffscreenCanvas"in window&&e instanceof OffscreenCanvas||"ImageBitmap"in window&&e instanceof ImageBitmap)return e;if(e instanceof File||e instanceof Blob||e instanceof URL||typeof e=="string"){let t=new Image;t.src=e instanceof File||e instanceof Blob?URL.createObjectURL(e):e.toString();try{return await rt._awaitImageLoad(t),t}finally{(e instanceof File||e instanceof Blob)&&URL.revokeObjectURL(t.src)}}else throw"Unsupported image type."}static async _awaitImageLoad(e){e.complete&&e.naturalWidth!==0||await new Promise((t,o)=>{let a=r=>{e.removeEventListener("load",a),e.removeEventListener("error",a),r instanceof ErrorEvent?o("Image load error"):t()};e.addEventListener("load",a),e.addEventListener("error",a)})}static async _postWorkerMessage(e,t,o,a){return rt._postWorkerMessageSync(await e,t,o,a)}static _postWorkerMessageSync(e,t,o,a){if(!(e instanceof Worker))return-1;let r=rt._workerMessageId++;return e.postMessage({id:r,type:t,data:o},a),r}}rt.DEFAULT_CANVAS_SIZE=400;rt.NO_QR_CODE_FOUND="No QR code found";rt._disableBarcodeDetector=!1;rt._workerMessageId=0;var jc={exports:{}},UU=jc.exports,Y0;function BU(){return Y0||(Y0=1,function(n,e){(function(t,o){n.exports=o()})(UU,()=>(()=>{var t={873:(i,s)=>{var l,u,f=function(){var d=function(j,L){var I=j,b=v[L],S=null,z=0,F=null,D=[],q={},J=function(G,te){S=function(Y){for(var se=new Array(Y),fe=0;fe<Y;fe+=1){se[fe]=new Array(Y);for(var Se=0;Se<Y;Se+=1)se[fe][Se]=null}return se}(z=4*I+17),ae(0,0),ae(z-7,0),ae(0,z-7),ie(),ge(),he(G,te),I>=7&&de(G),F==null&&(F=ke(I,b,D)),we(F,te)},ae=function(G,te){for(var Y=-1;Y<=7;Y+=1)if(!(G+Y<=-1||z<=G+Y))for(var se=-1;se<=7;se+=1)te+se<=-1||z<=te+se||(S[G+Y][te+se]=0<=Y&&Y<=6&&(se==0||se==6)||0<=se&&se<=6&&(Y==0||Y==6)||2<=Y&&Y<=4&&2<=se&&se<=4)},ge=function(){for(var G=8;G<z-8;G+=1)S[G][6]==null&&(S[G][6]=G%2==0);for(var te=8;te<z-8;te+=1)S[6][te]==null&&(S[6][te]=te%2==0)},ie=function(){for(var G=k.getPatternPosition(I),te=0;te<G.length;te+=1)for(var Y=0;Y<G.length;Y+=1){var se=G[te],fe=G[Y];if(S[se][fe]==null)for(var Se=-2;Se<=2;Se+=1)for(var Oe=-2;Oe<=2;Oe+=1)S[se+Se][fe+Oe]=Se==-2||Se==2||Oe==-2||Oe==2||Se==0&&Oe==0}},de=function(G){for(var te=k.getBCHTypeNumber(I),Y=0;Y<18;Y+=1){var se=!G&&(te>>Y&1)==1;S[Math.floor(Y/3)][Y%3+z-8-3]=se}for(Y=0;Y<18;Y+=1)se=!G&&(te>>Y&1)==1,S[Y%3+z-8-3][Math.floor(Y/3)]=se},he=function(G,te){for(var Y=b<<3|te,se=k.getBCHTypeInfo(Y),fe=0;fe<15;fe+=1){var Se=!G&&(se>>fe&1)==1;fe<6?S[fe][8]=Se:fe<8?S[fe+1][8]=Se:S[z-15+fe][8]=Se}for(fe=0;fe<15;fe+=1)Se=!G&&(se>>fe&1)==1,fe<8?S[8][z-fe-1]=Se:fe<9?S[8][15-fe-1+1]=Se:S[8][15-fe-1]=Se;S[z-8][8]=!G},we=function(G,te){for(var Y=-1,se=z-1,fe=7,Se=0,Oe=k.getMaskFunction(te),Le=z-1;Le>0;Le-=2)for(Le==6&&(Le-=1);;){for(var ye=0;ye<2;ye+=1)if(S[se][Le-ye]==null){var Pe=!1;Se<G.length&&(Pe=(G[Se]>>>fe&1)==1),Oe(se,Le-ye)&&(Pe=!Pe),S[se][Le-ye]=Pe,(fe-=1)==-1&&(Se+=1,fe=7)}if((se+=Y)<0||z<=se){se-=Y,Y=-Y;break}}},ke=function(G,te,Y){for(var se=N.getRSBlocks(G,te),fe=T(),Se=0;Se<Y.length;Se+=1){var Oe=Y[Se];fe.put(Oe.getMode(),4),fe.put(Oe.getLength(),k.getLengthInBits(Oe.getMode(),G)),Oe.write(fe)}var Le=0;for(Se=0;Se<se.length;Se+=1)Le+=se[Se].dataCount;if(fe.getLengthInBits()>8*Le)throw"code length overflow. ("+fe.getLengthInBits()+">"+8*Le+")";for(fe.getLengthInBits()+4<=8*Le&&fe.put(0,4);fe.getLengthInBits()%8!=0;)fe.putBit(!1);for(;!(fe.getLengthInBits()>=8*Le||(fe.put(236,8),fe.getLengthInBits()>=8*Le));)fe.put(17,8);return function(ye,Pe){for(var Te=0,qe=0,ct=0,Ge=new Array(Pe.length),et=new Array(Pe.length),_=0;_<Pe.length;_+=1){var x=Pe[_].dataCount,R=Pe[_].totalCount-x;qe=Math.max(qe,x),ct=Math.max(ct,R),Ge[_]=new Array(x);for(var B=0;B<Ge[_].length;B+=1)Ge[_][B]=255&ye.getBuffer()[B+Te];Te+=x;var K=k.getErrorCorrectPolynomial(R),Q=A(Ge[_],K.getLength()-1).mod(K);for(et[_]=new Array(K.getLength()-1),B=0;B<et[_].length;B+=1){var ue=B+Q.getLength()-et[_].length;et[_][B]=ue>=0?Q.getAt(ue):0}}var $e=0;for(B=0;B<Pe.length;B+=1)$e+=Pe[B].totalCount;var dt=new Array($e),Xe=0;for(B=0;B<qe;B+=1)for(_=0;_<Pe.length;_+=1)B<Ge[_].length&&(dt[Xe]=Ge[_][B],Xe+=1);for(B=0;B<ct;B+=1)for(_=0;_<Pe.length;_+=1)B<et[_].length&&(dt[Xe]=et[_][B],Xe+=1);return dt}(fe,se)};q.addData=function(G,te){var Y=null;switch(te=te||"Byte"){case"Numeric":Y=C(G);break;case"Alphanumeric":Y=P(G);break;case"Byte":Y=M(G);break;case"Kanji":Y=U(G);break;default:throw"mode:"+te}D.push(Y),F=null},q.isDark=function(G,te){if(G<0||z<=G||te<0||z<=te)throw G+","+te;return S[G][te]},q.getModuleCount=function(){return z},q.make=function(){if(I<1){for(var G=1;G<40;G++){for(var te=N.getRSBlocks(G,b),Y=T(),se=0;se<D.length;se++){var fe=D[se];Y.put(fe.getMode(),4),Y.put(fe.getLength(),k.getLengthInBits(fe.getMode(),G)),fe.write(Y)}var Se=0;for(se=0;se<te.length;se++)Se+=te[se].dataCount;if(Y.getLengthInBits()<=8*Se)break}I=G}J(!1,function(){for(var Oe=0,Le=0,ye=0;ye<8;ye+=1){J(!0,ye);var Pe=k.getLostPoint(q);(ye==0||Oe>Pe)&&(Oe=Pe,Le=ye)}return Le}())},q.createTableTag=function(G,te){G=G||2;var Y="";Y+='<table style="',Y+=" border-width: 0px; border-style: none;",Y+=" border-collapse: collapse;",Y+=" padding: 0px; margin: "+(te=te===void 0?4*G:te)+"px;",Y+='">',Y+="<tbody>";for(var se=0;se<q.getModuleCount();se+=1){Y+="<tr>";for(var fe=0;fe<q.getModuleCount();fe+=1)Y+='<td style="',Y+=" border-width: 0px; border-style: none;",Y+=" border-collapse: collapse;",Y+=" padding: 0px; margin: 0px;",Y+=" width: "+G+"px;",Y+=" height: "+G+"px;",Y+=" background-color: ",Y+=q.isDark(se,fe)?"#000000":"#ffffff",Y+=";",Y+='"/>';Y+="</tr>"}return(Y+="</tbody>")+"</table>"},q.createSvgTag=function(G,te,Y,se){var fe={};typeof arguments[0]=="object"&&(G=(fe=arguments[0]).cellSize,te=fe.margin,Y=fe.alt,se=fe.title),G=G||2,te=te===void 0?4*G:te,(Y=typeof Y=="string"?{text:Y}:Y||{}).text=Y.text||null,Y.id=Y.text?Y.id||"qrcode-description":null,(se=typeof se=="string"?{text:se}:se||{}).text=se.text||null,se.id=se.text?se.id||"qrcode-title":null;var Se,Oe,Le,ye,Pe=q.getModuleCount()*G+2*te,Te="";for(ye="l"+G+",0 0,"+G+" -"+G+",0 0,-"+G+"z ",Te+='<svg version="1.1" xmlns="http://www.w3.org/2000/svg"',Te+=fe.scalable?"":' width="'+Pe+'px" height="'+Pe+'px"',Te+=' viewBox="0 0 '+Pe+" "+Pe+'" ',Te+=' preserveAspectRatio="xMinYMin meet"',Te+=se.text||Y.text?' role="img" aria-labelledby="'+Ee([se.id,Y.id].join(" ").trim())+'"':"",Te+=">",Te+=se.text?'<title id="'+Ee(se.id)+'">'+Ee(se.text)+"</title>":"",Te+=Y.text?'<description id="'+Ee(Y.id)+'">'+Ee(Y.text)+"</description>":"",Te+='<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>',Te+='<path d="',Oe=0;Oe<q.getModuleCount();Oe+=1)for(Le=Oe*G+te,Se=0;Se<q.getModuleCount();Se+=1)q.isDark(Oe,Se)&&(Te+="M"+(Se*G+te)+","+Le+ye);return(Te+='" stroke="transparent" fill="black"/>')+"</svg>"},q.createDataURL=function(G,te){G=G||2,te=te===void 0?4*G:te;var Y=q.getModuleCount()*G+2*te,se=te,fe=Y-te;return V(Y,Y,function(Se,Oe){if(se<=Se&&Se<fe&&se<=Oe&&Oe<fe){var Le=Math.floor((Se-se)/G),ye=Math.floor((Oe-se)/G);return q.isDark(ye,Le)?0:1}return 1})},q.createImgTag=function(G,te,Y){G=G||2,te=te===void 0?4*G:te;var se=q.getModuleCount()*G+2*te,fe="";return fe+="<img",fe+=' src="',fe+=q.createDataURL(G,te),fe+='"',fe+=' width="',fe+=se,fe+='"',fe+=' height="',fe+=se,fe+='"',Y&&(fe+=' alt="',fe+=Ee(Y),fe+='"'),fe+"/>"};var Ee=function(G){for(var te="",Y=0;Y<G.length;Y+=1){var se=G.charAt(Y);switch(se){case"<":te+="&lt;";break;case">":te+="&gt;";break;case"&":te+="&amp;";break;case'"':te+="&quot;";break;default:te+=se}}return te};return q.createASCII=function(G,te){if((G=G||1)<2)return function(Ge){Ge=Ge===void 0?2:Ge;var et,_,x,R,B,K=1*q.getModuleCount()+2*Ge,Q=Ge,ue=K-Ge,$e={"██":"█","█ ":"▀"," █":"▄","  ":" "},dt={"██":"▀","█ ":"▀"," █":" ","  ":" "},Xe="";for(et=0;et<K;et+=2){for(x=Math.floor((et-Q)/1),R=Math.floor((et+1-Q)/1),_=0;_<K;_+=1)B="█",Q<=_&&_<ue&&Q<=et&&et<ue&&q.isDark(x,Math.floor((_-Q)/1))&&(B=" "),Q<=_&&_<ue&&Q<=et+1&&et+1<ue&&q.isDark(R,Math.floor((_-Q)/1))?B+=" ":B+="█",Xe+=Ge<1&&et+1>=ue?dt[B]:$e[B];Xe+=`
`}return K%2&&Ge>0?Xe.substring(0,Xe.length-K-1)+Array(K+1).join("▀"):Xe.substring(0,Xe.length-1)}(te);G-=1,te=te===void 0?2*G:te;var Y,se,fe,Se,Oe=q.getModuleCount()*G+2*te,Le=te,ye=Oe-te,Pe=Array(G+1).join("██"),Te=Array(G+1).join("  "),qe="",ct="";for(Y=0;Y<Oe;Y+=1){for(fe=Math.floor((Y-Le)/G),ct="",se=0;se<Oe;se+=1)Se=1,Le<=se&&se<ye&&Le<=Y&&Y<ye&&q.isDark(fe,Math.floor((se-Le)/G))&&(Se=0),ct+=Se?Pe:Te;for(fe=0;fe<G;fe+=1)qe+=ct+`
`}return qe.substring(0,qe.length-1)},q.renderTo2dContext=function(G,te){te=te||2;for(var Y=q.getModuleCount(),se=0;se<Y;se++)for(var fe=0;fe<Y;fe++)G.fillStyle=q.isDark(se,fe)?"black":"white",G.fillRect(se*te,fe*te,te,te)},q};d.stringToBytes=(d.stringToBytesFuncs={default:function(j){for(var L=[],I=0;I<j.length;I+=1){var b=j.charCodeAt(I);L.push(255&b)}return L}}).default,d.createStringToBytes=function(j,L){var I=function(){for(var S=W(j),z=function(){var ge=S.read();if(ge==-1)throw"eof";return ge},F=0,D={};;){var q=S.read();if(q==-1)break;var J=z(),ae=z()<<8|z();D[String.fromCharCode(q<<8|J)]=ae,F+=1}if(F!=L)throw F+" != "+L;return D}(),b=63;return function(S){for(var z=[],F=0;F<S.length;F+=1){var D=S.charCodeAt(F);if(D<128)z.push(D);else{var q=I[S.charAt(F)];typeof q=="number"?(255&q)==q?z.push(q):(z.push(q>>>8),z.push(255&q)):z.push(b)}}return z}};var p,m,g,y,w,v={L:1,M:0,Q:3,H:2},k=(p=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],m=1335,g=7973,w=function(j){for(var L=0;j!=0;)L+=1,j>>>=1;return L},(y={}).getBCHTypeInfo=function(j){for(var L=j<<10;w(L)-w(m)>=0;)L^=m<<w(L)-w(m);return 21522^(j<<10|L)},y.getBCHTypeNumber=function(j){for(var L=j<<12;w(L)-w(g)>=0;)L^=g<<w(L)-w(g);return j<<12|L},y.getPatternPosition=function(j){return p[j-1]},y.getMaskFunction=function(j){switch(j){case 0:return function(L,I){return(L+I)%2==0};case 1:return function(L,I){return L%2==0};case 2:return function(L,I){return I%3==0};case 3:return function(L,I){return(L+I)%3==0};case 4:return function(L,I){return(Math.floor(L/2)+Math.floor(I/3))%2==0};case 5:return function(L,I){return L*I%2+L*I%3==0};case 6:return function(L,I){return(L*I%2+L*I%3)%2==0};case 7:return function(L,I){return(L*I%3+(L+I)%2)%2==0};default:throw"bad maskPattern:"+j}},y.getErrorCorrectPolynomial=function(j){for(var L=A([1],0),I=0;I<j;I+=1)L=L.multiply(A([1,E.gexp(I)],0));return L},y.getLengthInBits=function(j,L){if(1<=L&&L<10)switch(j){case 1:return 10;case 2:return 9;case 4:case 8:return 8;default:throw"mode:"+j}else if(L<27)switch(j){case 1:return 12;case 2:return 11;case 4:return 16;case 8:return 10;default:throw"mode:"+j}else{if(!(L<41))throw"type:"+L;switch(j){case 1:return 14;case 2:return 13;case 4:return 16;case 8:return 12;default:throw"mode:"+j}}},y.getLostPoint=function(j){for(var L=j.getModuleCount(),I=0,b=0;b<L;b+=1)for(var S=0;S<L;S+=1){for(var z=0,F=j.isDark(b,S),D=-1;D<=1;D+=1)if(!(b+D<0||L<=b+D))for(var q=-1;q<=1;q+=1)S+q<0||L<=S+q||D==0&&q==0||F==j.isDark(b+D,S+q)&&(z+=1);z>5&&(I+=3+z-5)}for(b=0;b<L-1;b+=1)for(S=0;S<L-1;S+=1){var J=0;j.isDark(b,S)&&(J+=1),j.isDark(b+1,S)&&(J+=1),j.isDark(b,S+1)&&(J+=1),j.isDark(b+1,S+1)&&(J+=1),J!=0&&J!=4||(I+=3)}for(b=0;b<L;b+=1)for(S=0;S<L-6;S+=1)j.isDark(b,S)&&!j.isDark(b,S+1)&&j.isDark(b,S+2)&&j.isDark(b,S+3)&&j.isDark(b,S+4)&&!j.isDark(b,S+5)&&j.isDark(b,S+6)&&(I+=40);for(S=0;S<L;S+=1)for(b=0;b<L-6;b+=1)j.isDark(b,S)&&!j.isDark(b+1,S)&&j.isDark(b+2,S)&&j.isDark(b+3,S)&&j.isDark(b+4,S)&&!j.isDark(b+5,S)&&j.isDark(b+6,S)&&(I+=40);var ae=0;for(S=0;S<L;S+=1)for(b=0;b<L;b+=1)j.isDark(b,S)&&(ae+=1);return I+Math.abs(100*ae/L/L-50)/5*10},y),E=function(){for(var j=new Array(256),L=new Array(256),I=0;I<8;I+=1)j[I]=1<<I;for(I=8;I<256;I+=1)j[I]=j[I-4]^j[I-5]^j[I-6]^j[I-8];for(I=0;I<255;I+=1)L[j[I]]=I;return{glog:function(b){if(b<1)throw"glog("+b+")";return L[b]},gexp:function(b){for(;b<0;)b+=255;for(;b>=256;)b-=255;return j[b]}}}();function A(j,L){if(j.length===void 0)throw j.length+"/"+L;var I=function(){for(var S=0;S<j.length&&j[S]==0;)S+=1;for(var z=new Array(j.length-S+L),F=0;F<j.length-S;F+=1)z[F]=j[F+S];return z}(),b={getAt:function(S){return I[S]},getLength:function(){return I.length},multiply:function(S){for(var z=new Array(b.getLength()+S.getLength()-1),F=0;F<b.getLength();F+=1)for(var D=0;D<S.getLength();D+=1)z[F+D]^=E.gexp(E.glog(b.getAt(F))+E.glog(S.getAt(D)));return A(z,0)},mod:function(S){if(b.getLength()-S.getLength()<0)return b;for(var z=E.glog(b.getAt(0))-E.glog(S.getAt(0)),F=new Array(b.getLength()),D=0;D<b.getLength();D+=1)F[D]=b.getAt(D);for(D=0;D<S.getLength();D+=1)F[D]^=E.gexp(E.glog(S.getAt(D))+z);return A(F,0).mod(S)}};return b}var N=function(){var j=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],L=function(b,S){var z={};return z.totalCount=b,z.dataCount=S,z},I={getRSBlocks:function(b,S){var z=function(de,he){switch(he){case v.L:return j[4*(de-1)+0];case v.M:return j[4*(de-1)+1];case v.Q:return j[4*(de-1)+2];case v.H:return j[4*(de-1)+3];default:return}}(b,S);if(z===void 0)throw"bad rs block @ typeNumber:"+b+"/errorCorrectionLevel:"+S;for(var F=z.length/3,D=[],q=0;q<F;q+=1)for(var J=z[3*q+0],ae=z[3*q+1],ge=z[3*q+2],ie=0;ie<J;ie+=1)D.push(L(ae,ge));return D}};return I}(),T=function(){var j=[],L=0,I={getBuffer:function(){return j},getAt:function(b){var S=Math.floor(b/8);return(j[S]>>>7-b%8&1)==1},put:function(b,S){for(var z=0;z<S;z+=1)I.putBit((b>>>S-z-1&1)==1)},getLengthInBits:function(){return L},putBit:function(b){var S=Math.floor(L/8);j.length<=S&&j.push(0),b&&(j[S]|=128>>>L%8),L+=1}};return I},C=function(j){var L=j,I={getMode:function(){return 1},getLength:function(z){return L.length},write:function(z){for(var F=L,D=0;D+2<F.length;)z.put(b(F.substring(D,D+3)),10),D+=3;D<F.length&&(F.length-D==1?z.put(b(F.substring(D,D+1)),4):F.length-D==2&&z.put(b(F.substring(D,D+2)),7))}},b=function(z){for(var F=0,D=0;D<z.length;D+=1)F=10*F+S(z.charAt(D));return F},S=function(z){if("0"<=z&&z<="9")return z.charCodeAt(0)-48;throw"illegal char :"+z};return I},P=function(j){var L=j,I={getMode:function(){return 2},getLength:function(S){return L.length},write:function(S){for(var z=L,F=0;F+1<z.length;)S.put(45*b(z.charAt(F))+b(z.charAt(F+1)),11),F+=2;F<z.length&&S.put(b(z.charAt(F)),6)}},b=function(S){if("0"<=S&&S<="9")return S.charCodeAt(0)-48;if("A"<=S&&S<="Z")return S.charCodeAt(0)-65+10;switch(S){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw"illegal char :"+S}};return I},M=function(j){var L=d.stringToBytes(j);return{getMode:function(){return 4},getLength:function(I){return L.length},write:function(I){for(var b=0;b<L.length;b+=1)I.put(L[b],8)}}},U=function(j){var L=d.stringToBytesFuncs.SJIS;if(!L)throw"sjis not supported.";(function(){var S=L("友");if(S.length!=2||(S[0]<<8|S[1])!=38726)throw"sjis not supported."})();var I=L(j),b={getMode:function(){return 8},getLength:function(S){return~~(I.length/2)},write:function(S){for(var z=I,F=0;F+1<z.length;){var D=(255&z[F])<<8|255&z[F+1];if(33088<=D&&D<=40956)D-=33088;else{if(!(57408<=D&&D<=60351))throw"illegal char at "+(F+1)+"/"+D;D-=49472}D=192*(D>>>8&255)+(255&D),S.put(D,13),F+=2}if(F<z.length)throw"illegal char at "+(F+1)}};return b},O=function(){var j=[],L={writeByte:function(I){j.push(255&I)},writeShort:function(I){L.writeByte(I),L.writeByte(I>>>8)},writeBytes:function(I,b,S){b=b||0,S=S||I.length;for(var z=0;z<S;z+=1)L.writeByte(I[z+b])},writeString:function(I){for(var b=0;b<I.length;b+=1)L.writeByte(I.charCodeAt(b))},toByteArray:function(){return j},toString:function(){var I="";I+="[";for(var b=0;b<j.length;b+=1)b>0&&(I+=","),I+=j[b];return I+"]"}};return L},W=function(j){var L=j,I=0,b=0,S=0,z={read:function(){for(;S<8;){if(I>=L.length){if(S==0)return-1;throw"unexpected end of file./"+S}var D=L.charAt(I);if(I+=1,D=="=")return S=0,-1;D.match(/^\s$/)||(b=b<<6|F(D.charCodeAt(0)),S+=6)}var q=b>>>S-8&255;return S-=8,q}},F=function(D){if(65<=D&&D<=90)return D-65;if(97<=D&&D<=122)return D-97+26;if(48<=D&&D<=57)return D-48+52;if(D==43)return 62;if(D==47)return 63;throw"c:"+D};return z},V=function(j,L,I){for(var b=function(ae,ge){var ie=ae,de=ge,he=new Array(ae*ge),we={setPixel:function(G,te,Y){he[te*ie+G]=Y},write:function(G){G.writeString("GIF87a"),G.writeShort(ie),G.writeShort(de),G.writeByte(128),G.writeByte(0),G.writeByte(0),G.writeByte(0),G.writeByte(0),G.writeByte(0),G.writeByte(255),G.writeByte(255),G.writeByte(255),G.writeString(","),G.writeShort(0),G.writeShort(0),G.writeShort(ie),G.writeShort(de),G.writeByte(0);var te=ke(2);G.writeByte(2);for(var Y=0;te.length-Y>255;)G.writeByte(255),G.writeBytes(te,Y,255),Y+=255;G.writeByte(te.length-Y),G.writeBytes(te,Y,te.length-Y),G.writeByte(0),G.writeString(";")}},ke=function(G){for(var te=1<<G,Y=1+(1<<G),se=G+1,fe=Ee(),Se=0;Se<te;Se+=1)fe.add(String.fromCharCode(Se));fe.add(String.fromCharCode(te)),fe.add(String.fromCharCode(Y));var Oe,Le,ye,Pe=O(),Te=(Oe=Pe,Le=0,ye=0,{write:function(et,_){if(et>>>_)throw"length over";for(;Le+_>=8;)Oe.writeByte(255&(et<<Le|ye)),_-=8-Le,et>>>=8-Le,ye=0,Le=0;ye|=et<<Le,Le+=_},flush:function(){Le>0&&Oe.writeByte(ye)}});Te.write(te,se);var qe=0,ct=String.fromCharCode(he[qe]);for(qe+=1;qe<he.length;){var Ge=String.fromCharCode(he[qe]);qe+=1,fe.contains(ct+Ge)?ct+=Ge:(Te.write(fe.indexOf(ct),se),fe.size()<4095&&(fe.size()==1<<se&&(se+=1),fe.add(ct+Ge)),ct=Ge)}return Te.write(fe.indexOf(ct),se),Te.write(Y,se),Te.flush(),Pe.toByteArray()},Ee=function(){var G={},te=0,Y={add:function(se){if(Y.contains(se))throw"dup key:"+se;G[se]=te,te+=1},size:function(){return te},indexOf:function(se){return G[se]},contains:function(se){return G[se]!==void 0}};return Y};return we}(j,L),S=0;S<L;S+=1)for(var z=0;z<j;z+=1)b.setPixel(z,S,I(z,S));var F=O();b.write(F);for(var D=function(){var ae=0,ge=0,ie=0,de="",he={},we=function(Ee){de+=String.fromCharCode(ke(63&Ee))},ke=function(Ee){if(!(Ee<0)){if(Ee<26)return 65+Ee;if(Ee<52)return Ee-26+97;if(Ee<62)return Ee-52+48;if(Ee==62)return 43;if(Ee==63)return 47}throw"n:"+Ee};return he.writeByte=function(Ee){for(ae=ae<<8|255&Ee,ge+=8,ie+=1;ge>=6;)we(ae>>>ge-6),ge-=6},he.flush=function(){if(ge>0&&(we(ae<<6-ge),ae=0,ge=0),ie%3!=0)for(var Ee=3-ie%3,G=0;G<Ee;G+=1)de+="="},he.toString=function(){return de},he}(),q=F.toByteArray(),J=0;J<q.length;J+=1)D.writeByte(q[J]);return D.flush(),"data:image/gif;base64,"+D};return d}();f.stringToBytesFuncs["UTF-8"]=function(d){return function(p){for(var m=[],g=0;g<p.length;g++){var y=p.charCodeAt(g);y<128?m.push(y):y<2048?m.push(192|y>>6,128|63&y):y<55296||y>=57344?m.push(224|y>>12,128|y>>6&63,128|63&y):(g++,y=65536+((1023&y)<<10|1023&p.charCodeAt(g)),m.push(240|y>>18,128|y>>12&63,128|y>>6&63,128|63&y))}return m}(d)},(u=typeof(l=function(){return f})=="function"?l.apply(s,[]):l)===void 0||(i.exports=u)}},o={};function a(i){var s=o[i];if(s!==void 0)return s.exports;var l=o[i]={exports:{}};return t[i](l,l.exports,a),l.exports}a.n=i=>{var s=i&&i.__esModule?()=>i.default:()=>i;return a.d(s,{a:s}),s},a.d=(i,s)=>{for(var l in s)a.o(s,l)&&!a.o(i,l)&&Object.defineProperty(i,l,{enumerable:!0,get:s[l]})},a.o=(i,s)=>Object.prototype.hasOwnProperty.call(i,s);var r={};return(()=>{a.d(r,{default:()=>L});const i=I=>!!I&&typeof I=="object"&&!Array.isArray(I);function s(I,...b){if(!b.length)return I;const S=b.shift();return S!==void 0&&i(I)&&i(S)?(I=Object.assign({},I),Object.keys(S).forEach(z=>{const F=I[z],D=S[z];Array.isArray(F)&&Array.isArray(D)?I[z]=D:i(F)&&i(D)?I[z]=s(Object.assign({},F),D):I[z]=D}),s(I,...b)):I}function l(I,b){const S=document.createElement("a");S.download=b,S.href=I,document.body.appendChild(S),S.click(),document.body.removeChild(S)}const u={L:.07,M:.15,Q:.25,H:.3};class f{constructor({svg:b,type:S,window:z}){this._svg=b,this._type=S,this._window=z}draw(b,S,z,F){let D;switch(this._type){case"dots":D=this._drawDot;break;case"classy":D=this._drawClassy;break;case"classy-rounded":D=this._drawClassyRounded;break;case"rounded":D=this._drawRounded;break;case"extra-rounded":D=this._drawExtraRounded;break;default:D=this._drawSquare}D.call(this,{x:b,y:S,size:z,getNeighbor:F})}_rotateFigure({x:b,y:S,size:z,rotation:F=0,draw:D}){var q;const J=b+z/2,ae=S+z/2;D(),(q=this._element)===null||q===void 0||q.setAttribute("transform",`rotate(${180*F/Math.PI},${J},${ae})`)}_basicDot(b){const{size:S,x:z,y:F}=b;this._rotateFigure(Object.assign(Object.assign({},b),{draw:()=>{this._element=this._window.document.createElementNS("http://www.w3.org/2000/svg","circle"),this._element.setAttribute("cx",String(z+S/2)),this._element.setAttribute("cy",String(F+S/2)),this._element.setAttribute("r",String(S/2))}}))}_basicSquare(b){const{size:S,x:z,y:F}=b;this._rotateFigure(Object.assign(Object.assign({},b),{draw:()=>{this._element=this._window.document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",String(z)),this._element.setAttribute("y",String(F)),this._element.setAttribute("width",String(S)),this._element.setAttribute("height",String(S))}}))}_basicSideRounded(b){const{size:S,x:z,y:F}=b;this._rotateFigure(Object.assign(Object.assign({},b),{draw:()=>{this._element=this._window.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",`M ${z} ${F}v ${S}h `+S/2+`a ${S/2} ${S/2}, 0, 0, 0, 0 ${-S}`)}}))}_basicCornerRounded(b){const{size:S,x:z,y:F}=b;this._rotateFigure(Object.assign(Object.assign({},b),{draw:()=>{this._element=this._window.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",`M ${z} ${F}v ${S}h ${S}v `+-S/2+`a ${S/2} ${S/2}, 0, 0, 0, ${-S/2} ${-S/2}`)}}))}_basicCornerExtraRounded(b){const{size:S,x:z,y:F}=b;this._rotateFigure(Object.assign(Object.assign({},b),{draw:()=>{this._element=this._window.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",`M ${z} ${F}v ${S}h ${S}a ${S} ${S}, 0, 0, 0, ${-S} ${-S}`)}}))}_basicCornersRounded(b){const{size:S,x:z,y:F}=b;this._rotateFigure(Object.assign(Object.assign({},b),{draw:()=>{this._element=this._window.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",`M ${z} ${F}v `+S/2+`a ${S/2} ${S/2}, 0, 0, 0, ${S/2} ${S/2}h `+S/2+"v "+-S/2+`a ${S/2} ${S/2}, 0, 0, 0, ${-S/2} ${-S/2}`)}}))}_drawDot({x:b,y:S,size:z}){this._basicDot({x:b,y:S,size:z,rotation:0})}_drawSquare({x:b,y:S,size:z}){this._basicSquare({x:b,y:S,size:z,rotation:0})}_drawRounded({x:b,y:S,size:z,getNeighbor:F}){const D=F?+F(-1,0):0,q=F?+F(1,0):0,J=F?+F(0,-1):0,ae=F?+F(0,1):0,ge=D+q+J+ae;if(ge!==0)if(ge>2||D&&q||J&&ae)this._basicSquare({x:b,y:S,size:z,rotation:0});else{if(ge===2){let ie=0;return D&&J?ie=Math.PI/2:J&&q?ie=Math.PI:q&&ae&&(ie=-Math.PI/2),void this._basicCornerRounded({x:b,y:S,size:z,rotation:ie})}if(ge===1){let ie=0;return J?ie=Math.PI/2:q?ie=Math.PI:ae&&(ie=-Math.PI/2),void this._basicSideRounded({x:b,y:S,size:z,rotation:ie})}}else this._basicDot({x:b,y:S,size:z,rotation:0})}_drawExtraRounded({x:b,y:S,size:z,getNeighbor:F}){const D=F?+F(-1,0):0,q=F?+F(1,0):0,J=F?+F(0,-1):0,ae=F?+F(0,1):0,ge=D+q+J+ae;if(ge!==0)if(ge>2||D&&q||J&&ae)this._basicSquare({x:b,y:S,size:z,rotation:0});else{if(ge===2){let ie=0;return D&&J?ie=Math.PI/2:J&&q?ie=Math.PI:q&&ae&&(ie=-Math.PI/2),void this._basicCornerExtraRounded({x:b,y:S,size:z,rotation:ie})}if(ge===1){let ie=0;return J?ie=Math.PI/2:q?ie=Math.PI:ae&&(ie=-Math.PI/2),void this._basicSideRounded({x:b,y:S,size:z,rotation:ie})}}else this._basicDot({x:b,y:S,size:z,rotation:0})}_drawClassy({x:b,y:S,size:z,getNeighbor:F}){const D=F?+F(-1,0):0,q=F?+F(1,0):0,J=F?+F(0,-1):0,ae=F?+F(0,1):0;D+q+J+ae!==0?D||J?q||ae?this._basicSquare({x:b,y:S,size:z,rotation:0}):this._basicCornerRounded({x:b,y:S,size:z,rotation:Math.PI/2}):this._basicCornerRounded({x:b,y:S,size:z,rotation:-Math.PI/2}):this._basicCornersRounded({x:b,y:S,size:z,rotation:Math.PI/2})}_drawClassyRounded({x:b,y:S,size:z,getNeighbor:F}){const D=F?+F(-1,0):0,q=F?+F(1,0):0,J=F?+F(0,-1):0,ae=F?+F(0,1):0;D+q+J+ae!==0?D||J?q||ae?this._basicSquare({x:b,y:S,size:z,rotation:0}):this._basicCornerExtraRounded({x:b,y:S,size:z,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:b,y:S,size:z,rotation:-Math.PI/2}):this._basicCornersRounded({x:b,y:S,size:z,rotation:Math.PI/2})}}const d={dot:"dot",square:"square",extraRounded:"extra-rounded"},p=Object.values(d);class m{constructor({svg:b,type:S,window:z}){this._svg=b,this._type=S,this._window=z}draw(b,S,z,F){let D;switch(this._type){case d.square:D=this._drawSquare;break;case d.extraRounded:D=this._drawExtraRounded;break;default:D=this._drawDot}D.call(this,{x:b,y:S,size:z,rotation:F})}_rotateFigure({x:b,y:S,size:z,rotation:F=0,draw:D}){var q;const J=b+z/2,ae=S+z/2;D(),(q=this._element)===null||q===void 0||q.setAttribute("transform",`rotate(${180*F/Math.PI},${J},${ae})`)}_basicDot(b){const{size:S,x:z,y:F}=b,D=S/7;this._rotateFigure(Object.assign(Object.assign({},b),{draw:()=>{this._element=this._window.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",`M ${z+S/2} ${F}a ${S/2} ${S/2} 0 1 0 0.1 0zm 0 ${D}a ${S/2-D} ${S/2-D} 0 1 1 -0.1 0Z`)}}))}_basicSquare(b){const{size:S,x:z,y:F}=b,D=S/7;this._rotateFigure(Object.assign(Object.assign({},b),{draw:()=>{this._element=this._window.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",`M ${z} ${F}v ${S}h ${S}v `+-S+`zM ${z+D} ${F+D}h `+(S-2*D)+"v "+(S-2*D)+"h "+(2*D-S)+"z")}}))}_basicExtraRounded(b){const{size:S,x:z,y:F}=b,D=S/7;this._rotateFigure(Object.assign(Object.assign({},b),{draw:()=>{this._element=this._window.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",`M ${z} ${F+2.5*D}v `+2*D+`a ${2.5*D} ${2.5*D}, 0, 0, 0, ${2.5*D} ${2.5*D}h `+2*D+`a ${2.5*D} ${2.5*D}, 0, 0, 0, ${2.5*D} ${2.5*-D}v `+-2*D+`a ${2.5*D} ${2.5*D}, 0, 0, 0, ${2.5*-D} ${2.5*-D}h `+-2*D+`a ${2.5*D} ${2.5*D}, 0, 0, 0, ${2.5*-D} ${2.5*D}M ${z+2.5*D} ${F+D}h `+2*D+`a ${1.5*D} ${1.5*D}, 0, 0, 1, ${1.5*D} ${1.5*D}v `+2*D+`a ${1.5*D} ${1.5*D}, 0, 0, 1, ${1.5*-D} ${1.5*D}h `+-2*D+`a ${1.5*D} ${1.5*D}, 0, 0, 1, ${1.5*-D} ${1.5*-D}v `+-2*D+`a ${1.5*D} ${1.5*D}, 0, 0, 1, ${1.5*D} ${1.5*-D}`)}}))}_drawDot({x:b,y:S,size:z,rotation:F}){this._basicDot({x:b,y:S,size:z,rotation:F})}_drawSquare({x:b,y:S,size:z,rotation:F}){this._basicSquare({x:b,y:S,size:z,rotation:F})}_drawExtraRounded({x:b,y:S,size:z,rotation:F}){this._basicExtraRounded({x:b,y:S,size:z,rotation:F})}}const g={dot:"dot",square:"square"},y=Object.values(g);class w{constructor({svg:b,type:S,window:z}){this._svg=b,this._type=S,this._window=z}draw(b,S,z,F){let D;D=this._type===g.square?this._drawSquare:this._drawDot,D.call(this,{x:b,y:S,size:z,rotation:F})}_rotateFigure({x:b,y:S,size:z,rotation:F=0,draw:D}){var q;const J=b+z/2,ae=S+z/2;D(),(q=this._element)===null||q===void 0||q.setAttribute("transform",`rotate(${180*F/Math.PI},${J},${ae})`)}_basicDot(b){const{size:S,x:z,y:F}=b;this._rotateFigure(Object.assign(Object.assign({},b),{draw:()=>{this._element=this._window.document.createElementNS("http://www.w3.org/2000/svg","circle"),this._element.setAttribute("cx",String(z+S/2)),this._element.setAttribute("cy",String(F+S/2)),this._element.setAttribute("r",String(S/2))}}))}_basicSquare(b){const{size:S,x:z,y:F}=b;this._rotateFigure(Object.assign(Object.assign({},b),{draw:()=>{this._element=this._window.document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",String(z)),this._element.setAttribute("y",String(F)),this._element.setAttribute("width",String(S)),this._element.setAttribute("height",String(S))}}))}_drawDot({x:b,y:S,size:z,rotation:F}){this._basicDot({x:b,y:S,size:z,rotation:F})}_drawSquare({x:b,y:S,size:z,rotation:F}){this._basicSquare({x:b,y:S,size:z,rotation:F})}}const v="circle",k=[[1,1,1,1,1,1,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,1,1,1,1,1,1]],E=[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]];class A{constructor(b,S){this._roundSize=z=>this._options.dotsOptions.roundSize?Math.floor(z):z,this._window=S,this._element=this._window.document.createElementNS("http://www.w3.org/2000/svg","svg"),this._element.setAttribute("width",String(b.width)),this._element.setAttribute("height",String(b.height)),this._element.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),b.dotsOptions.roundSize||this._element.setAttribute("shape-rendering","crispEdges"),this._element.setAttribute("viewBox",`0 0 ${b.width} ${b.height}`),this._defs=this._window.document.createElementNS("http://www.w3.org/2000/svg","defs"),this._element.appendChild(this._defs),this._imageUri=b.image,this._instanceId=A.instanceCount++,this._options=b}get width(){return this._options.width}get height(){return this._options.height}getElement(){return this._element}async drawQR(b){const S=b.getModuleCount(),z=Math.min(this._options.width,this._options.height)-2*this._options.margin,F=this._options.shape===v?z/Math.sqrt(2):z,D=this._roundSize(F/S);let q={hideXDots:0,hideYDots:0,width:0,height:0};if(this._qr=b,this._options.image){if(await this.loadImage(),!this._image)return;const{imageOptions:J,qrOptions:ae}=this._options,ge=J.imageSize*u[ae.errorCorrectionLevel],ie=Math.floor(ge*S*S);q=function({originalHeight:de,originalWidth:he,maxHiddenDots:we,maxHiddenAxisDots:ke,dotSize:Ee}){const G={x:0,y:0},te={x:0,y:0};if(de<=0||he<=0||we<=0||Ee<=0)return{height:0,width:0,hideYDots:0,hideXDots:0};const Y=de/he;return G.x=Math.floor(Math.sqrt(we/Y)),G.x<=0&&(G.x=1),ke&&ke<G.x&&(G.x=ke),G.x%2==0&&G.x--,te.x=G.x*Ee,G.y=1+2*Math.ceil((G.x*Y-1)/2),te.y=Math.round(te.x*Y),(G.y*G.x>we||ke&&ke<G.y)&&(ke&&ke<G.y?(G.y=ke,G.y%2==0&&G.x--):G.y-=2,te.y=G.y*Ee,G.x=1+2*Math.ceil((G.y/Y-1)/2),te.x=Math.round(te.y/Y)),{height:te.y,width:te.x,hideYDots:G.y,hideXDots:G.x}}({originalWidth:this._image.width,originalHeight:this._image.height,maxHiddenDots:ie,maxHiddenAxisDots:S-14,dotSize:D})}this.drawBackground(),this.drawDots((J,ae)=>{var ge,ie,de,he,we,ke;return!(this._options.imageOptions.hideBackgroundDots&&J>=(S-q.hideYDots)/2&&J<(S+q.hideYDots)/2&&ae>=(S-q.hideXDots)/2&&ae<(S+q.hideXDots)/2||!((ge=k[J])===null||ge===void 0)&&ge[ae]||!((ie=k[J-S+7])===null||ie===void 0)&&ie[ae]||!((de=k[J])===null||de===void 0)&&de[ae-S+7]||!((he=E[J])===null||he===void 0)&&he[ae]||!((we=E[J-S+7])===null||we===void 0)&&we[ae]||!((ke=E[J])===null||ke===void 0)&&ke[ae-S+7])}),this.drawCorners(),this._options.image&&await this.drawImage({width:q.width,height:q.height,count:S,dotSize:D})}drawBackground(){var b,S,z;const F=this._element,D=this._options;if(F){const q=(b=D.backgroundOptions)===null||b===void 0?void 0:b.gradient,J=(S=D.backgroundOptions)===null||S===void 0?void 0:S.color;let ae=D.height,ge=D.width;if(q||J){const ie=this._window.document.createElementNS("http://www.w3.org/2000/svg","rect");this._backgroundClipPath=this._window.document.createElementNS("http://www.w3.org/2000/svg","clipPath"),this._backgroundClipPath.setAttribute("id",`clip-path-background-color-${this._instanceId}`),this._defs.appendChild(this._backgroundClipPath),!((z=D.backgroundOptions)===null||z===void 0)&&z.round&&(ae=ge=Math.min(D.width,D.height),ie.setAttribute("rx",String(ae/2*D.backgroundOptions.round))),ie.setAttribute("x",String(this._roundSize((D.width-ge)/2))),ie.setAttribute("y",String(this._roundSize((D.height-ae)/2))),ie.setAttribute("width",String(ge)),ie.setAttribute("height",String(ae)),this._backgroundClipPath.appendChild(ie),this._createColor({options:q,color:J,additionalRotation:0,x:0,y:0,height:D.height,width:D.width,name:`background-color-${this._instanceId}`})}}}drawDots(b){var S,z;if(!this._qr)throw"QR code is not defined";const F=this._options,D=this._qr.getModuleCount();if(D>F.width||D>F.height)throw"The canvas is too small.";const q=Math.min(F.width,F.height)-2*F.margin,J=F.shape===v?q/Math.sqrt(2):q,ae=this._roundSize(J/D),ge=this._roundSize((F.width-D*ae)/2),ie=this._roundSize((F.height-D*ae)/2),de=new f({svg:this._element,type:F.dotsOptions.type,window:this._window});this._dotsClipPath=this._window.document.createElementNS("http://www.w3.org/2000/svg","clipPath"),this._dotsClipPath.setAttribute("id",`clip-path-dot-color-${this._instanceId}`),this._defs.appendChild(this._dotsClipPath),this._createColor({options:(S=F.dotsOptions)===null||S===void 0?void 0:S.gradient,color:F.dotsOptions.color,additionalRotation:0,x:0,y:0,height:F.height,width:F.width,name:`dot-color-${this._instanceId}`});for(let he=0;he<D;he++)for(let we=0;we<D;we++)b&&!b(he,we)||!((z=this._qr)===null||z===void 0)&&z.isDark(he,we)&&(de.draw(ge+we*ae,ie+he*ae,ae,(ke,Ee)=>!(we+ke<0||he+Ee<0||we+ke>=D||he+Ee>=D)&&!(b&&!b(he+Ee,we+ke))&&!!this._qr&&this._qr.isDark(he+Ee,we+ke)),de._element&&this._dotsClipPath&&this._dotsClipPath.appendChild(de._element));if(F.shape===v){const he=this._roundSize((q/ae-D)/2),we=D+2*he,ke=ge-he*ae,Ee=ie-he*ae,G=[],te=this._roundSize(we/2);for(let Y=0;Y<we;Y++){G[Y]=[];for(let se=0;se<we;se++)Y>=he-1&&Y<=we-he&&se>=he-1&&se<=we-he||Math.sqrt((Y-te)*(Y-te)+(se-te)*(se-te))>te?G[Y][se]=0:G[Y][se]=this._qr.isDark(se-2*he<0?se:se>=D?se-2*he:se-he,Y-2*he<0?Y:Y>=D?Y-2*he:Y-he)?1:0}for(let Y=0;Y<we;Y++)for(let se=0;se<we;se++)G[Y][se]&&(de.draw(ke+se*ae,Ee+Y*ae,ae,(fe,Se)=>{var Oe;return!!(!((Oe=G[Y+Se])===null||Oe===void 0)&&Oe[se+fe])}),de._element&&this._dotsClipPath&&this._dotsClipPath.appendChild(de._element))}}drawCorners(){if(!this._qr)throw"QR code is not defined";const b=this._element,S=this._options;if(!b)throw"Element code is not defined";const z=this._qr.getModuleCount(),F=Math.min(S.width,S.height)-2*S.margin,D=S.shape===v?F/Math.sqrt(2):F,q=this._roundSize(D/z),J=7*q,ae=3*q,ge=this._roundSize((S.width-z*q)/2),ie=this._roundSize((S.height-z*q)/2);[[0,0,0],[1,0,Math.PI/2],[0,1,-Math.PI/2]].forEach(([de,he,we])=>{var ke,Ee,G,te,Y,se,fe,Se,Oe,Le,ye,Pe,Te,qe;const ct=ge+de*q*(z-7),Ge=ie+he*q*(z-7);let et=this._dotsClipPath,_=this._dotsClipPath;if((!((ke=S.cornersSquareOptions)===null||ke===void 0)&&ke.gradient||!((Ee=S.cornersSquareOptions)===null||Ee===void 0)&&Ee.color)&&(et=this._window.document.createElementNS("http://www.w3.org/2000/svg","clipPath"),et.setAttribute("id",`clip-path-corners-square-color-${de}-${he}-${this._instanceId}`),this._defs.appendChild(et),this._cornersSquareClipPath=this._cornersDotClipPath=_=et,this._createColor({options:(G=S.cornersSquareOptions)===null||G===void 0?void 0:G.gradient,color:(te=S.cornersSquareOptions)===null||te===void 0?void 0:te.color,additionalRotation:we,x:ct,y:Ge,height:J,width:J,name:`corners-square-color-${de}-${he}-${this._instanceId}`})),((Y=S.cornersSquareOptions)===null||Y===void 0?void 0:Y.type)&&p.includes(S.cornersSquareOptions.type)){const x=new m({svg:this._element,type:S.cornersSquareOptions.type,window:this._window});x.draw(ct,Ge,J,we),x._element&&et&&et.appendChild(x._element)}else{const x=new f({svg:this._element,type:((se=S.cornersSquareOptions)===null||se===void 0?void 0:se.type)||S.dotsOptions.type,window:this._window});for(let R=0;R<k.length;R++)for(let B=0;B<k[R].length;B++)!((fe=k[R])===null||fe===void 0)&&fe[B]&&(x.draw(ct+B*q,Ge+R*q,q,(K,Q)=>{var ue;return!!(!((ue=k[R+Q])===null||ue===void 0)&&ue[B+K])}),x._element&&et&&et.appendChild(x._element))}if((!((Se=S.cornersDotOptions)===null||Se===void 0)&&Se.gradient||!((Oe=S.cornersDotOptions)===null||Oe===void 0)&&Oe.color)&&(_=this._window.document.createElementNS("http://www.w3.org/2000/svg","clipPath"),_.setAttribute("id",`clip-path-corners-dot-color-${de}-${he}-${this._instanceId}`),this._defs.appendChild(_),this._cornersDotClipPath=_,this._createColor({options:(Le=S.cornersDotOptions)===null||Le===void 0?void 0:Le.gradient,color:(ye=S.cornersDotOptions)===null||ye===void 0?void 0:ye.color,additionalRotation:we,x:ct+2*q,y:Ge+2*q,height:ae,width:ae,name:`corners-dot-color-${de}-${he}-${this._instanceId}`})),((Pe=S.cornersDotOptions)===null||Pe===void 0?void 0:Pe.type)&&y.includes(S.cornersDotOptions.type)){const x=new w({svg:this._element,type:S.cornersDotOptions.type,window:this._window});x.draw(ct+2*q,Ge+2*q,ae,we),x._element&&_&&_.appendChild(x._element)}else{const x=new f({svg:this._element,type:((Te=S.cornersDotOptions)===null||Te===void 0?void 0:Te.type)||S.dotsOptions.type,window:this._window});for(let R=0;R<E.length;R++)for(let B=0;B<E[R].length;B++)!((qe=E[R])===null||qe===void 0)&&qe[B]&&(x.draw(ct+B*q,Ge+R*q,q,(K,Q)=>{var ue;return!!(!((ue=E[R+Q])===null||ue===void 0)&&ue[B+K])}),x._element&&_&&_.appendChild(x._element))}})}loadImage(){return new Promise((b,S)=>{var z;const F=this._options;if(!F.image)return S("Image is not defined");if(!((z=F.nodeCanvas)===null||z===void 0)&&z.loadImage)F.nodeCanvas.loadImage(F.image).then(D=>{var q,J;if(this._image=D,this._options.imageOptions.saveAsBlob){const ae=(q=F.nodeCanvas)===null||q===void 0?void 0:q.createCanvas(this._image.width,this._image.height);(J=ae==null?void 0:ae.getContext("2d"))===null||J===void 0||J.drawImage(D,0,0),this._imageUri=ae==null?void 0:ae.toDataURL()}b()}).catch(S);else{const D=new this._window.Image;typeof F.imageOptions.crossOrigin=="string"&&(D.crossOrigin=F.imageOptions.crossOrigin),this._image=D,D.onload=async()=>{this._options.imageOptions.saveAsBlob&&(this._imageUri=await async function(q,J){return new Promise(ae=>{const ge=new J.XMLHttpRequest;ge.onload=function(){const ie=new J.FileReader;ie.onloadend=function(){ae(ie.result)},ie.readAsDataURL(ge.response)},ge.open("GET",q),ge.responseType="blob",ge.send()})}(F.image||"",this._window)),b()},D.src=F.image}})}async drawImage({width:b,height:S,count:z,dotSize:F}){const D=this._options,q=this._roundSize((D.width-z*F)/2),J=this._roundSize((D.height-z*F)/2),ae=q+this._roundSize(D.imageOptions.margin+(z*F-b)/2),ge=J+this._roundSize(D.imageOptions.margin+(z*F-S)/2),ie=b-2*D.imageOptions.margin,de=S-2*D.imageOptions.margin,he=this._window.document.createElementNS("http://www.w3.org/2000/svg","image");he.setAttribute("href",this._imageUri||""),he.setAttribute("xlink:href",this._imageUri||""),he.setAttribute("x",String(ae)),he.setAttribute("y",String(ge)),he.setAttribute("width",`${ie}px`),he.setAttribute("height",`${de}px`),this._element.appendChild(he)}_createColor({options:b,color:S,additionalRotation:z,x:F,y:D,height:q,width:J,name:ae}){const ge=J>q?J:q,ie=this._window.document.createElementNS("http://www.w3.org/2000/svg","rect");if(ie.setAttribute("x",String(F)),ie.setAttribute("y",String(D)),ie.setAttribute("height",String(q)),ie.setAttribute("width",String(J)),ie.setAttribute("clip-path",`url('#clip-path-${ae}')`),b){let de;if(b.type==="radial")de=this._window.document.createElementNS("http://www.w3.org/2000/svg","radialGradient"),de.setAttribute("id",ae),de.setAttribute("gradientUnits","userSpaceOnUse"),de.setAttribute("fx",String(F+J/2)),de.setAttribute("fy",String(D+q/2)),de.setAttribute("cx",String(F+J/2)),de.setAttribute("cy",String(D+q/2)),de.setAttribute("r",String(ge/2));else{const he=((b.rotation||0)+z)%(2*Math.PI),we=(he+2*Math.PI)%(2*Math.PI);let ke=F+J/2,Ee=D+q/2,G=F+J/2,te=D+q/2;we>=0&&we<=.25*Math.PI||we>1.75*Math.PI&&we<=2*Math.PI?(ke-=J/2,Ee-=q/2*Math.tan(he),G+=J/2,te+=q/2*Math.tan(he)):we>.25*Math.PI&&we<=.75*Math.PI?(Ee-=q/2,ke-=J/2/Math.tan(he),te+=q/2,G+=J/2/Math.tan(he)):we>.75*Math.PI&&we<=1.25*Math.PI?(ke+=J/2,Ee+=q/2*Math.tan(he),G-=J/2,te-=q/2*Math.tan(he)):we>1.25*Math.PI&&we<=1.75*Math.PI&&(Ee+=q/2,ke+=J/2/Math.tan(he),te-=q/2,G-=J/2/Math.tan(he)),de=this._window.document.createElementNS("http://www.w3.org/2000/svg","linearGradient"),de.setAttribute("id",ae),de.setAttribute("gradientUnits","userSpaceOnUse"),de.setAttribute("x1",String(Math.round(ke))),de.setAttribute("y1",String(Math.round(Ee))),de.setAttribute("x2",String(Math.round(G))),de.setAttribute("y2",String(Math.round(te)))}b.colorStops.forEach(({offset:he,color:we})=>{const ke=this._window.document.createElementNS("http://www.w3.org/2000/svg","stop");ke.setAttribute("offset",100*he+"%"),ke.setAttribute("stop-color",we),de.appendChild(ke)}),ie.setAttribute("fill",`url('#${ae}')`),this._defs.appendChild(de)}else S&&ie.setAttribute("fill",S);this._element.appendChild(ie)}}A.instanceCount=0;const N=A,T="canvas",C={};for(let I=0;I<=40;I++)C[I]=I;const P={type:T,shape:"square",width:300,height:300,data:"",margin:0,qrOptions:{typeNumber:C[0],mode:void 0,errorCorrectionLevel:"Q"},imageOptions:{saveAsBlob:!0,hideBackgroundDots:!0,imageSize:.4,crossOrigin:void 0,margin:0},dotsOptions:{type:"square",color:"#000",roundSize:!0},backgroundOptions:{round:0,color:"#fff"}};function M(I){const b=Object.assign({},I);if(!b.colorStops||!b.colorStops.length)throw"Field 'colorStops' is required in gradient";return b.rotation?b.rotation=Number(b.rotation):b.rotation=0,b.colorStops=b.colorStops.map(S=>Object.assign(Object.assign({},S),{offset:Number(S.offset)})),b}function U(I){const b=Object.assign({},I);return b.width=Number(b.width),b.height=Number(b.height),b.margin=Number(b.margin),b.imageOptions=Object.assign(Object.assign({},b.imageOptions),{hideBackgroundDots:!!b.imageOptions.hideBackgroundDots,imageSize:Number(b.imageOptions.imageSize),margin:Number(b.imageOptions.margin)}),b.margin>Math.min(b.width,b.height)&&(b.margin=Math.min(b.width,b.height)),b.dotsOptions=Object.assign({},b.dotsOptions),b.dotsOptions.gradient&&(b.dotsOptions.gradient=M(b.dotsOptions.gradient)),b.cornersSquareOptions&&(b.cornersSquareOptions=Object.assign({},b.cornersSquareOptions),b.cornersSquareOptions.gradient&&(b.cornersSquareOptions.gradient=M(b.cornersSquareOptions.gradient))),b.cornersDotOptions&&(b.cornersDotOptions=Object.assign({},b.cornersDotOptions),b.cornersDotOptions.gradient&&(b.cornersDotOptions.gradient=M(b.cornersDotOptions.gradient))),b.backgroundOptions&&(b.backgroundOptions=Object.assign({},b.backgroundOptions),b.backgroundOptions.gradient&&(b.backgroundOptions.gradient=M(b.backgroundOptions.gradient))),b}var O=a(873),W=a.n(O);function V(I){if(!I)throw new Error("Extension must be defined");I[0]==="."&&(I=I.substring(1));const b={bmp:"image/bmp",gif:"image/gif",ico:"image/vnd.microsoft.icon",jpeg:"image/jpeg",jpg:"image/jpeg",png:"image/png",svg:"image/svg+xml",tif:"image/tiff",tiff:"image/tiff",webp:"image/webp",pdf:"application/pdf"}[I.toLowerCase()];if(!b)throw new Error(`Extension "${I}" is not supported`);return b}class j{constructor(b){b!=null&&b.jsdom?this._window=new b.jsdom("",{resources:"usable"}).window:this._window=window,this._options=b?U(s(P,b)):P,this.update()}static _clearContainer(b){b&&(b.innerHTML="")}_setupSvg(){if(!this._qr)return;const b=new N(this._options,this._window);this._svg=b.getElement(),this._svgDrawingPromise=b.drawQR(this._qr).then(()=>{var S;this._svg&&((S=this._extension)===null||S===void 0||S.call(this,b.getElement(),this._options))})}_setupCanvas(){var b,S;this._qr&&(!((b=this._options.nodeCanvas)===null||b===void 0)&&b.createCanvas?(this._nodeCanvas=this._options.nodeCanvas.createCanvas(this._options.width,this._options.height),this._nodeCanvas.width=this._options.width,this._nodeCanvas.height=this._options.height):(this._domCanvas=document.createElement("canvas"),this._domCanvas.width=this._options.width,this._domCanvas.height=this._options.height),this._setupSvg(),this._canvasDrawingPromise=(S=this._svgDrawingPromise)===null||S===void 0?void 0:S.then(()=>{var z;if(!this._svg)return;const F=this._svg,D=new this._window.XMLSerializer().serializeToString(F),q=btoa(D),J=`data:${V("svg")};base64,${q}`;if(!((z=this._options.nodeCanvas)===null||z===void 0)&&z.loadImage)return this._options.nodeCanvas.loadImage(J).then(ae=>{var ge,ie;ae.width=this._options.width,ae.height=this._options.height,(ie=(ge=this._nodeCanvas)===null||ge===void 0?void 0:ge.getContext("2d"))===null||ie===void 0||ie.drawImage(ae,0,0)});{const ae=new this._window.Image;return new Promise(ge=>{ae.onload=()=>{var ie,de;(de=(ie=this._domCanvas)===null||ie===void 0?void 0:ie.getContext("2d"))===null||de===void 0||de.drawImage(ae,0,0),ge()},ae.src=J})}}))}async _getElement(b="png"){if(!this._qr)throw"QR code is empty";return b.toLowerCase()==="svg"?(this._svg&&this._svgDrawingPromise||this._setupSvg(),await this._svgDrawingPromise,this._svg):((this._domCanvas||this._nodeCanvas)&&this._canvasDrawingPromise||this._setupCanvas(),await this._canvasDrawingPromise,this._domCanvas||this._nodeCanvas)}update(b){j._clearContainer(this._container),this._options=b?U(s(this._options,b)):this._options,this._options.data&&(this._qr=W()(this._options.qrOptions.typeNumber,this._options.qrOptions.errorCorrectionLevel),this._qr.addData(this._options.data,this._options.qrOptions.mode||function(S){switch(!0){case/^[0-9]*$/.test(S):return"Numeric";case/^[0-9A-Z $%*+\-./:]*$/.test(S):return"Alphanumeric";default:return"Byte"}}(this._options.data)),this._qr.make(),this._options.type===T?this._setupCanvas():this._setupSvg(),this.append(this._container))}append(b){if(b){if(typeof b.appendChild!="function")throw"Container should be a single DOM node";this._options.type===T?this._domCanvas&&b.appendChild(this._domCanvas):this._svg&&b.appendChild(this._svg),this._container=b}}applyExtension(b){if(!b)throw"Extension function should be defined.";this._extension=b,this.update()}deleteExtension(){this._extension=void 0,this.update()}async getRawData(b="png"){if(!this._qr)throw"QR code is empty";const S=await this._getElement(b),z=V(b);if(!S)return null;if(b.toLowerCase()==="svg"){const F=`<?xml version="1.0" standalone="no"?>\r
${new this._window.XMLSerializer().serializeToString(S)}`;return typeof Blob>"u"||this._options.jsdom?Buffer.from(F):new Blob([F],{type:z})}return new Promise(F=>{const D=S;if("toBuffer"in D)if(z==="image/png")F(D.toBuffer(z));else if(z==="image/jpeg")F(D.toBuffer(z));else{if(z!=="application/pdf")throw Error("Unsupported extension");F(D.toBuffer(z))}else"toBlob"in D&&D.toBlob(F,z,1)})}async download(b){if(!this._qr)throw"QR code is empty";if(typeof Blob>"u")throw"Cannot download in Node.js, call getRawData instead.";let S="png",z="qr";typeof b=="string"?(S=b,console.warn("Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument")):typeof b=="object"&&b!==null&&(b.name&&(z=b.name),b.extension&&(S=b.extension));const F=await this._getElement(S);if(F)if(S.toLowerCase()==="svg"){let D=new XMLSerializer().serializeToString(F);D=`<?xml version="1.0" standalone="no"?>\r
`+D,l(`data:${V(S)};charset=utf-8,${encodeURIComponent(D)}`,`${z}.svg`)}else l(F.toDataURL(V(S)),`${z}.${S}`)}}const L=j})(),r.default})())}(jc)),jc.exports}var VU=BU();const WU=Ru(VU);function qU({value:n,size:e=180}){const t=h.useRef(null);return h.useEffect(()=>(setTimeout(()=>{const o=window.devicePixelRatio||2,a=new WU({qrOptions:{errorCorrectionLevel:"M"},image:"/roguejumble-512x512.png",width:e*o,height:e*o,data:n,dotsOptions:{type:"extra-rounded"},cornersDotOptions:{type:"extra-rounded"},cornersSquareOptions:{type:"extra-rounded"}});if(t.current){t.current.innerHTML="",a.append(t.current);const r=t.current.querySelector("canvas");r&&(r.style.width=`${e}px`,r.style.height=`${e}px`,r.style.maxWidth="100%",r.style.height="auto")}},0),()=>{t.current&&(t.current.innerHTML="")}),[n,e]),c.jsx("div",{className:"overflow-hidden rounded-2xl bg-white p-2",children:c.jsx("div",{ref:t})})}function HU({back:n,onLoginSuccess:e}){const{t}=Ae(),{nostrConnectionLogin:o,bunkerLogin:a}=Je(),[r,i]=h.useState(!1),[s,l]=h.useState(""),[u,f]=h.useState(!1),[d,p]=h.useState(null),[m,g]=h.useState(null),y=h.useRef(null),[w,v]=h.useState(100),[k,E]=h.useState(!1),A=h.useRef(null),N=h.useRef(null),T=h.useRef(null),C=V=>{l(V.target.value),d&&p(null)},P=(V=s)=>{const j=V.trim();j.trim()!==""&&(i(!0),a(j).then(()=>e()).catch(L=>p(L.message||"Login failed")).finally(()=>i(!1)))},[M]=h.useState(()=>{const V=Ai(),j={clientPubkey:As(V),relays:V4,secret:Math.random().toString(36).substring(7),name:document.location.host,url:document.location.origin},L=FU(j);return{privKey:V,connectionString:L}});h.useLayoutEffect(()=>{const V=()=>{if(y.current){const L=y.current.offsetWidth,I=Math.min(L-8,L*.9),b=Math.max(100,Math.min(I,360));v(b)}};V();const j=new ResizeObserver(V);return y.current&&j.observe(y.current),()=>{y.current&&j.unobserve(y.current),j.disconnect()}},[]),h.useEffect(()=>{!M.privKey||!M.connectionString||(g(null),o(M.privKey,M.connectionString).then(()=>e()).catch(V=>{console.error("NostrConnectionLogin Error:",V),g(V.message?`${V.message}. Please reload.`:"Connection failed. Please reload.")}))},[M,o,e]);const U=async()=>{M.connectionString&&(navigator.clipboard.writeText(M.connectionString),f(!0),setTimeout(()=>f(!1),2e3))},O=async()=>{try{if(E(!0),p(null),await new Promise(L=>setTimeout(L,100)),!A.current)throw new Error("Video element not found");if(!await rt.hasCamera())throw new Error("No camera found");const j=new rt(A.current,L=>{l(L.data),W(),P(L.data)},{highlightScanRegion:!0,highlightCodeOutline:!0,preferredCamera:"environment"});N.current=j,await j.start(),T.current=setTimeout(()=>{A.current&&(A.current.videoWidth===0||A.current.videoHeight===0)&&p("Camera feed not available")},1e3)}catch(V){p(`Failed to start camera: ${V instanceof Error?V.message:"Unknown error"}. Please check permissions.`),E(!1),T.current&&(clearTimeout(T.current),T.current=null)}},W=()=>{N.current&&(N.current.stop(),N.current.destroy(),N.current=null),E(!1),T.current&&(clearTimeout(T.current),T.current=null)};return h.useEffect(()=>()=>{W()},[]),c.jsxs("div",{className:"relative flex flex-col gap-4",children:[c.jsxs("div",{ref:y,className:"mb-3 flex w-full flex-col items-center space-y-3",children:[c.jsx("a",{href:M.connectionString,"aria-label":"Open with Nostr signer app",children:c.jsx(qU,{size:w,value:M.connectionString})}),m&&c.jsx("div",{className:"pt-1 text-center text-xs text-destructive",children:m})]}),c.jsx("div",{className:"mb-3 flex w-full justify-center",children:c.jsxs("div",{className:"flex cursor-pointer items-center gap-2 rounded-full bg-muted px-3 py-2 text-sm text-muted-foreground transition-all hover:bg-muted/80",style:{width:w>0?`${Math.max(150,Math.min(w,320))}px`:"auto"},onClick:U,role:"button",tabIndex:0,children:[c.jsx("div",{className:"min-w-0 flex-grow select-none truncate",children:M.connectionString}),c.jsx("div",{className:"flex-shrink-0",children:u?c.jsx(_a,{size:14}):c.jsx(ui,{size:14})})]})}),c.jsxs("div",{className:"my-4 flex w-full items-center",children:[c.jsx("div",{className:"flex-grow border-t border-border/40"}),c.jsx("span",{className:"px-3 text-xs text-muted-foreground",children:"OR"}),c.jsx("div",{className:"flex-grow border-t border-border/40"})]}),c.jsxs("div",{className:"w-full space-y-1",children:[c.jsxs("div",{className:"flex items-start space-x-2",children:[c.jsxs("div",{className:"relative flex-1",children:[c.jsx(Sn,{placeholder:"bunker://...",value:s,onChange:C,className:d?"border-destructive pr-10":"pr-10"}),c.jsx(xe,{size:"sm",variant:"ghost",className:"absolute right-1 top-1/2 h-8 w-8 -translate-y-1/2 p-0",onClick:O,disabled:r,children:c.jsx(R4,{})})]}),c.jsxs(xe,{onClick:()=>P(),disabled:r,children:[c.jsx(wn,{className:r?"mr-2 animate-spin":"hidden"}),t("Login")]})]}),d&&c.jsx("div",{className:"pl-3 pt-1 text-xs text-destructive",children:d})]}),c.jsx(xe,{variant:"secondary",onClick:n,className:"w-full",children:t("Back")}),c.jsxs("div",{className:ne("flex h-full w-full justify-center",k?"":"hidden"),children:[c.jsx("video",{ref:A,className:"absolute inset-0 h-full w-full bg-background",autoPlay:!0,playsInline:!0,muted:!0}),c.jsx(xe,{variant:"secondary",size:"sm",className:"absolute right-2 top-2",onClick:W,children:"Cancel"})]})]})}function $U({back:n,onLoginSuccess:e}){const{t}=Ae(),{npubLogin:o}=Je(),[a,r]=h.useState(!1),[i,s]=h.useState(""),[l,u]=h.useState(null),f=p=>{s(p.target.value),u(null)},d=()=>{i!==""&&(r(!0),o(i).then(()=>e()).catch(p=>u(p.message)).finally(()=>r(!1)))};return c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"space-y-1",children:[c.jsx(Sn,{placeholder:"npub...",value:i,onChange:f,className:l?"border-destructive":""}),l&&c.jsx("div",{className:"pl-3 text-xs text-destructive",children:l})]}),c.jsxs(xe,{onClick:d,disabled:a,children:[c.jsx(wn,{className:a?"animate-spin":"hidden"}),t("Login")]}),c.jsx(xe,{variant:"secondary",onClick:n,children:t("Back")})]})}function YU({back:n,onLoginSuccess:e}){return c.jsxs(np,{defaultValue:"nsec",children:[c.jsxs(Fm,{children:[c.jsx(il,{value:"nsec",children:"nsec"}),c.jsx(il,{value:"ncryptsec",children:"ncryptsec"})]}),c.jsx(sl,{value:"nsec",children:c.jsx(KU,{back:n,onLoginSuccess:e})}),c.jsx(sl,{value:"ncryptsec",children:c.jsx(GU,{back:n,onLoginSuccess:e})})]})}function KU({back:n,onLoginSuccess:e}){const{t}=Ae(),{nsecLogin:o}=Je(),[a,r]=h.useState(""),[i,s]=h.useState(null),[l,u]=h.useState(""),f=p=>{r(p.target.value),s(null)},d=()=>{a!==""&&o(a,l).then(()=>e()).catch(p=>{s(p.message)})};return c.jsxs("form",{className:"space-y-4",onSubmit:p=>{p.preventDefault(),d()},children:[c.jsx("div",{className:"text-orange-400",children:t("Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.")}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx(Jt,{htmlFor:"nsec-input",children:"nsec or hex"}),c.jsx(Sn,{id:"nsec-input",type:"password",placeholder:"nsec1.. or hex",value:a,onChange:f,className:i?"border-destructive":""}),i&&c.jsx("div",{className:"text-xs text-destructive",children:i})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx(Jt,{htmlFor:"password-input",children:t("password")}),c.jsx(Sn,{id:"password-input",type:"password",placeholder:t("optional: encrypt nsec"),value:l,onChange:p=>u(p.target.value)})]}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(xe,{className:"w-fit px-8",variant:"secondary",type:"button",onClick:n,children:t("Back")}),c.jsx(xe,{className:"flex-1",type:"submit",children:t("Login")})]})]})}function GU({back:n,onLoginSuccess:e}){const{t}=Ae(),{ncryptsecLogin:o}=Je(),[a,r]=h.useState(""),[i,s]=h.useState(null),l=f=>{r(f.target.value),s(null)},u=()=>{a!==""&&o(a).then(()=>e()).catch(f=>{s(f.message)})};return c.jsxs("form",{className:"space-y-4",onSubmit:f=>{f.preventDefault(),u()},children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx(Jt,{htmlFor:"ncryptsec-input",children:"ncryptsec"}),c.jsx(Sn,{id:"ncryptsec-input",type:"password",placeholder:"ncryptsec1..",value:a,onChange:l,className:i?"border-destructive":""}),i&&c.jsx("div",{className:"text-xs text-destructive",children:i})]}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(xe,{className:"w-fit px-8",variant:"secondary",type:"button",onClick:n,children:t("Back")}),c.jsx(xe,{className:"flex-1",type:"submit",children:t("Login")})]})]})}function K0(n,e){if(typeof n=="function")return n(e);n!=null&&(n.current=e)}function JU(...n){return e=>{let t=!1;const o=n.map(a=>{const r=K0(a,e);return!t&&typeof r=="function"&&(t=!0),r});if(t)return()=>{for(let a=0;a<o.length;a++){const r=o[a];typeof r=="function"?r():K0(n[a],null)}}}}function Vm(...n){return h.useCallback(JU(...n),n)}function ZU(n,e=[]){let t=[];function o(r,i){const s=h.createContext(i),l=t.length;t=[...t,i];const u=d=>{var v;const{scope:p,children:m,...g}=d,y=((v=p==null?void 0:p[n])==null?void 0:v[l])||s,w=h.useMemo(()=>g,Object.values(g));return c.jsx(y.Provider,{value:w,children:m})};u.displayName=r+"Provider";function f(d,p){var y;const m=((y=p==null?void 0:p[n])==null?void 0:y[l])||s,g=h.useContext(m);if(g)return g;if(i!==void 0)return i;throw new Error(`\`${d}\` must be used within \`${r}\``)}return[u,f]}const a=()=>{const r=t.map(i=>h.createContext(i));return function(s){const l=(s==null?void 0:s[n])||r;return h.useMemo(()=>({[`__scope${n}`]:{...s,[n]:l}}),[s,l])}};return a.scopeName=n,[o,QU(a,...e)]}function QU(...n){const e=n[0];if(n.length===1)return e;const t=()=>{const o=n.map(a=>({useScope:a(),scopeName:a.scopeName}));return function(r){const i=o.reduce((s,{useScope:l,scopeName:u})=>{const d=l(r)[`__scope${u}`];return{...s,...d}},{});return h.useMemo(()=>({[`__scope${e.scopeName}`]:i}),[i])}};return t.scopeName=e.scopeName,t}function G0(n,e,{checkForDefaultPrevented:t=!0}={}){return function(a){if(n==null||n(a),t===!1||!a.defaultPrevented)return e==null?void 0:e(a)}}var Eu=globalThis!=null&&globalThis.document?h.useLayoutEffect:()=>{},XU=dl[" useInsertionEffect ".trim().toString()]||Eu;function eB({prop:n,defaultProp:e,onChange:t=()=>{},caller:o}){const[a,r,i]=tB({defaultProp:e,onChange:t}),s=n!==void 0,l=s?n:a;{const f=h.useRef(n!==void 0);h.useEffect(()=>{const d=f.current;d!==s&&console.warn(`${o} is changing from ${d?"controlled":"uncontrolled"} to ${s?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),f.current=s},[s,o])}const u=h.useCallback(f=>{var d;if(s){const p=nB(f)?f(n):f;p!==n&&((d=i.current)==null||d.call(i,p))}else r(f)},[s,n,r,i]);return[l,u]}function tB({defaultProp:n,onChange:e}){const[t,o]=h.useState(n),a=h.useRef(t),r=h.useRef(e);return XU(()=>{r.current=e},[e]),h.useEffect(()=>{var i;a.current!==t&&((i=r.current)==null||i.call(r,t),a.current=t)},[t,a]),[t,o,r]}function nB(n){return typeof n=="function"}function oB(n){const e=h.useRef({value:n,previous:n});return h.useMemo(()=>(e.current.value!==n&&(e.current.previous=e.current.value,e.current.value=n),e.current.previous),[n])}function aB(n){const[e,t]=h.useState(void 0);return Eu(()=>{if(n){t({width:n.offsetWidth,height:n.offsetHeight});const o=new ResizeObserver(a=>{if(!Array.isArray(a)||!a.length)return;const r=a[0];let i,s;if("borderBoxSize"in r){const l=r.borderBoxSize,u=Array.isArray(l)?l[0]:l;i=u.inlineSize,s=u.blockSize}else i=n.offsetWidth,s=n.offsetHeight;t({width:i,height:s})});return o.observe(n,{box:"border-box"}),()=>o.unobserve(n)}else t(void 0)},[n]),e}function rB(n,e){return h.useReducer((t,o)=>e[t][o]??t,n)}var OA=n=>{const{present:e,children:t}=n,o=iB(e),a=typeof t=="function"?t({present:o.isPresent}):h.Children.only(t),r=Vm(o.ref,sB(a));return typeof t=="function"||o.isPresent?h.cloneElement(a,{ref:r}):null};OA.displayName="Presence";function iB(n){const[e,t]=h.useState(),o=h.useRef(null),a=h.useRef(n),r=h.useRef("none"),i=n?"mounted":"unmounted",[s,l]=rB(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return h.useEffect(()=>{const u=hc(o.current);r.current=s==="mounted"?u:"none"},[s]),Eu(()=>{const u=o.current,f=a.current;if(f!==n){const p=r.current,m=hc(u);n?l("MOUNT"):m==="none"||(u==null?void 0:u.display)==="none"?l("UNMOUNT"):l(f&&p!==m?"ANIMATION_OUT":"UNMOUNT"),a.current=n}},[n,l]),Eu(()=>{if(e){let u;const f=e.ownerDocument.defaultView??window,d=m=>{const y=hc(o.current).includes(CSS.escape(m.animationName));if(m.target===e&&y&&(l("ANIMATION_END"),!a.current)){const w=e.style.animationFillMode;e.style.animationFillMode="forwards",u=f.setTimeout(()=>{e.style.animationFillMode==="forwards"&&(e.style.animationFillMode=w)})}},p=m=>{m.target===e&&(r.current=hc(o.current))};return e.addEventListener("animationstart",p),e.addEventListener("animationcancel",d),e.addEventListener("animationend",d),()=>{f.clearTimeout(u),e.removeEventListener("animationstart",p),e.removeEventListener("animationcancel",d),e.removeEventListener("animationend",d)}}else l("ANIMATION_END")},[e,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:h.useCallback(u=>{o.current=u?getComputedStyle(u):null,t(u)},[])}}function hc(n){return(n==null?void 0:n.animationName)||"none"}function sB(n){var o,a;let e=(o=Object.getOwnPropertyDescriptor(n.props,"ref"))==null?void 0:o.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=(a=Object.getOwnPropertyDescriptor(n,"ref"))==null?void 0:a.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}var lB=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Wm=lB.reduce((n,e)=>{const t=Na(`Primitive.${e}`),o=h.forwardRef((a,r)=>{const{asChild:i,...s}=a,l=i?t:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),c.jsx(l,{...s,ref:r})});return o.displayName=`Primitive.${e}`,{...n,[e]:o}},{}),xd="Checkbox",[cB,nW]=ZU(xd),[uB,qm]=cB(xd);function dB(n){const{__scopeCheckbox:e,checked:t,children:o,defaultChecked:a,disabled:r,form:i,name:s,onCheckedChange:l,required:u,value:f="on",internal_do_not_use_render:d}=n,[p,m]=eB({prop:t,defaultProp:a??!1,onChange:l,caller:xd}),[g,y]=h.useState(null),[w,v]=h.useState(null),k=h.useRef(!1),E=g?!!i||!!g.closest("form"):!0,A={checked:p,disabled:r,setChecked:m,control:g,setControl:y,name:s,form:i,value:f,hasConsumerStoppedPropagationRef:k,required:u,defaultChecked:ka(a)?!1:a,isFormControl:E,bubbleInput:w,setBubbleInput:v};return c.jsx(uB,{scope:e,...A,children:fB(d)?d(A):o})}var UA="CheckboxTrigger",BA=h.forwardRef(({__scopeCheckbox:n,onKeyDown:e,onClick:t,...o},a)=>{const{control:r,value:i,disabled:s,checked:l,required:u,setControl:f,setChecked:d,hasConsumerStoppedPropagationRef:p,isFormControl:m,bubbleInput:g}=qm(UA,n),y=Vm(a,f),w=h.useRef(l);return h.useEffect(()=>{const v=r==null?void 0:r.form;if(v){const k=()=>d(w.current);return v.addEventListener("reset",k),()=>v.removeEventListener("reset",k)}},[r,d]),c.jsx(Wm.button,{type:"button",role:"checkbox","aria-checked":ka(l)?"mixed":l,"aria-required":u,"data-state":$A(l),"data-disabled":s?"":void 0,disabled:s,value:i,...o,ref:y,onKeyDown:G0(e,v=>{v.key==="Enter"&&v.preventDefault()}),onClick:G0(t,v=>{d(k=>ka(k)?!0:!k),g&&m&&(p.current=v.isPropagationStopped(),p.current||v.stopPropagation())})})});BA.displayName=UA;var Hm=h.forwardRef((n,e)=>{const{__scopeCheckbox:t,name:o,checked:a,defaultChecked:r,required:i,disabled:s,value:l,onCheckedChange:u,form:f,...d}=n;return c.jsx(dB,{__scopeCheckbox:t,checked:a,defaultChecked:r,disabled:s,required:i,onCheckedChange:u,name:o,form:f,value:l,internal_do_not_use_render:({isFormControl:p})=>c.jsxs(c.Fragment,{children:[c.jsx(BA,{...d,ref:e,__scopeCheckbox:t}),p&&c.jsx(HA,{__scopeCheckbox:t})]})})});Hm.displayName=xd;var VA="CheckboxIndicator",WA=h.forwardRef((n,e)=>{const{__scopeCheckbox:t,forceMount:o,...a}=n,r=qm(VA,t);return c.jsx(OA,{present:o||ka(r.checked)||r.checked===!0,children:c.jsx(Wm.span,{"data-state":$A(r.checked),"data-disabled":r.disabled?"":void 0,...a,ref:e,style:{pointerEvents:"none",...n.style}})})});WA.displayName=VA;var qA="CheckboxBubbleInput",HA=h.forwardRef(({__scopeCheckbox:n,...e},t)=>{const{control:o,hasConsumerStoppedPropagationRef:a,checked:r,defaultChecked:i,required:s,disabled:l,name:u,value:f,form:d,bubbleInput:p,setBubbleInput:m}=qm(qA,n),g=Vm(t,m),y=oB(r),w=aB(o);h.useEffect(()=>{const k=p;if(!k)return;const E=window.HTMLInputElement.prototype,N=Object.getOwnPropertyDescriptor(E,"checked").set,T=!a.current;if(y!==r&&N){const C=new Event("click",{bubbles:T});k.indeterminate=ka(r),N.call(k,ka(r)?!1:r),k.dispatchEvent(C)}},[p,y,r,a]);const v=h.useRef(ka(r)?!1:r);return c.jsx(Wm.input,{type:"checkbox","aria-hidden":!0,defaultChecked:i??v.current,required:s,disabled:l,name:u,value:f,form:d,...e,tabIndex:-1,ref:g,style:{...e.style,...w,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});HA.displayName=qA;function fB(n){return typeof n=="function"}function ka(n){return n==="indeterminate"}function $A(n){return ka(n)?"indeterminate":n?"checked":"unchecked"}const YA=h.forwardRef(({className:n,...e},t)=>c.jsx(Hm,{ref:t,className:ne("peer h-4 w-4 shrink-0 rounded-md border border-accent transition-all duration-200 hover:border-primary/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",n),...e,children:c.jsx(WA,{className:ne("flex items-center justify-center text-current"),children:c.jsx(_a,{className:"h-4 w-4"})})}));YA.displayName=Hm.displayName;var pc=new TextDecoder("utf-8");new TextEncoder;var KA=5e3;function hB(n){var a,r,i,s,l,u,f;let{prefix:e,words:t}=Ro.decode(n,KA),o=new Uint8Array(Ro.fromWords(t));switch(e){case"nprofile":{let d=Pf(o);if(!((a=d[0])!=null&&a[0]))throw new Error("missing TLV 0 for nprofile");if(d[0][0].length!==32)throw new Error("TLV 0 should be 32 bytes");return{type:"nprofile",data:{pubkey:nn(d[0][0]),relays:d[1]?d[1].map(p=>pc.decode(p)):[]}}}case"nevent":{let d=Pf(o);if(!((r=d[0])!=null&&r[0]))throw new Error("missing TLV 0 for nevent");if(d[0][0].length!==32)throw new Error("TLV 0 should be 32 bytes");if(d[2]&&d[2][0].length!==32)throw new Error("TLV 2 should be 32 bytes");if(d[3]&&d[3][0].length!==4)throw new Error("TLV 3 should be 4 bytes");return{type:"nevent",data:{id:nn(d[0][0]),relays:d[1]?d[1].map(p=>pc.decode(p)):[],author:(i=d[2])!=null&&i[0]?nn(d[2][0]):void 0,kind:(s=d[3])!=null&&s[0]?parseInt(nn(d[3][0]),16):void 0}}}case"naddr":{let d=Pf(o);if(!((l=d[0])!=null&&l[0]))throw new Error("missing TLV 0 for naddr");if(!((u=d[2])!=null&&u[0]))throw new Error("missing TLV 2 for naddr");if(d[2][0].length!==32)throw new Error("TLV 2 should be 32 bytes");if(!((f=d[3])!=null&&f[0]))throw new Error("missing TLV 3 for naddr");if(d[3][0].length!==4)throw new Error("TLV 3 should be 4 bytes");return{type:"naddr",data:{identifier:pc.decode(d[0][0]),pubkey:nn(d[2][0]),kind:parseInt(nn(d[3][0]),16),relays:d[1]?d[1].map(p=>pc.decode(p)):[]}}}case"nsec":return{type:e,data:o};case"npub":case"note":return{type:e,data:nn(o)};default:throw new Error(`unknown prefix ${e}`)}}function Pf(n){let e={},t=n;for(;t.length>0;){let o=t[0],a=t[1],r=t.slice(2,2+a);if(t=t.slice(2+a),r.length<a)throw new Error(`not enough data to read on TLV ${o}`);e[o]=e[o]||[],e[o].push(r)}return e}function GA(n){return mB("nsec",n)}function pB(n,e){let t=Ro.toWords(e);return Ro.encode(n,t,KA)}function mB(n,e){return pB(n,e)}function gB({back:n,onSignupSuccess:e}){const{t}=Ae(),{nsecLogin:o}=Je(),[a,r]=h.useState("generate"),[i,s]=h.useState(J0()),[l,u]=h.useState(!1),[f,d]=h.useState(""),[p,m]=h.useState(""),[g,y]=h.useState(!1),w=()=>{const N=new Blob([i],{type:"text/plain"}),T=URL.createObjectURL(N),C=document.createElement("a");C.href=T,C.download="nostr-private-key.txt",document.body.appendChild(C),C.click(),document.body.removeChild(C),URL.revokeObjectURL(T)},v=async()=>{await o(i,f||void 0,!0),e()},k=f===p,E=!f||k,A=()=>c.jsx("div",{className:"flex items-center justify-center gap-2",children:["generate","password"].map((N,T)=>c.jsxs("div",{className:"flex items-center",children:[c.jsx("div",{className:`flex h-8 w-8 items-center justify-center rounded-full text-sm font-semibold ${a===N?"bg-primary text-primary-foreground":a==="password"&&N==="generate"?"bg-primary/20 text-primary":"bg-muted text-muted-foreground"}`,children:T+1}),T<1&&c.jsx("div",{className:"mx-1 h-0.5 w-12 bg-muted"})]},N))});return a==="generate"?c.jsxs("div",{className:"space-y-6",children:[A(),c.jsxs("div",{className:"text-center",children:[c.jsx("h3",{className:"mb-2 text-lg font-semibold",children:t("Create Your Nostr Account")}),c.jsx("p",{className:"text-sm text-muted-foreground",children:t("Generate your unique private key. This is your digital identity.")})]}),c.jsx(tp,{variant:"alert",title:t("Critical: Save Your Private Key"),content:t("Your private key IS your account. There is no password recovery. If you lose it, you lose your account forever. Please save it in a secure location.")}),c.jsxs("div",{className:"space-y-1",children:[c.jsx(Jt,{children:t("Your Private Key")}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(Sn,{value:i,readOnly:!0,className:"font-mono text-sm",onClick:N=>N.currentTarget.select()}),c.jsx(xe,{type:"button",variant:"secondary",size:"icon",onClick:()=>s(J0()),title:t("Generate new key"),children:c.jsx(S4,{})})]})]}),c.jsxs("div",{className:"flex w-full flex-wrap gap-2",children:[c.jsxs(xe,{onClick:w,className:"flex-1",children:[c.jsx(ml,{}),t("Download Backup File")]}),c.jsxs(xe,{onClick:()=>{navigator.clipboard.writeText(i),y(!0),setTimeout(()=>y(!1),2e3)},variant:"secondary",className:"flex-1",children:[g?c.jsx(_a,{}):c.jsx(ui,{}),t(g?"Copied to Clipboard":"Copy to Clipboard")]})]}),c.jsxs("div",{className:"ml-2 flex items-center gap-2",children:[c.jsx(YA,{id:"acknowledge-checkbox",checked:l,onCheckedChange:N=>u(!!N)}),c.jsx(Jt,{htmlFor:"acknowledge-checkbox",className:"cursor-pointer",children:t("I have safely backed up my private key")})]}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(xe,{variant:"secondary",onClick:n,className:"w-fit px-6",children:t("Back")}),c.jsx(xe,{onClick:()=>r("password"),className:"flex-1",disabled:!l,children:t("Continue")})]})]}):c.jsxs("div",{className:"space-y-6",children:[A(),c.jsxs("div",{className:"text-center",children:[c.jsx("h3",{className:"mb-2 text-lg font-semibold",children:t("Secure Your Account")}),c.jsx("p",{className:"text-sm text-muted-foreground",children:t("Add an extra layer of protection with a password")})]}),c.jsx(tp,{title:t("Password Protection (Recommended)"),content:t("Add a password to encrypt your private key in this browser. This is optional but strongly recommended for better security.")}),c.jsxs("div",{className:"space-y-2",children:[c.jsxs("div",{className:"space-y-1",children:[c.jsx(Jt,{htmlFor:"password-input",children:t("Password (Optional)")}),c.jsx(Sn,{id:"password-input",type:"password",placeholder:t("Create a password (or skip)"),value:f,onChange:N=>d(N.target.value)})]}),f&&c.jsxs("div",{className:"space-y-1",children:[c.jsx(Jt,{htmlFor:"confirm-password-input",children:t("Confirm Password")}),c.jsx(Sn,{id:"confirm-password-input",type:"password",placeholder:t("Enter your password again"),value:p,onChange:N=>m(N.target.value)}),p&&!k&&c.jsx("p",{className:"text-xs text-red-500",children:t("Passwords do not match")})]})]}),c.jsxs("div",{className:"flex w-full gap-2",children:[c.jsx(xe,{variant:"secondary",onClick:()=>{r("generate"),d(""),m("")},className:"w-fit px-6",children:t("Back")}),c.jsx(xe,{onClick:v,className:"flex-1",disabled:!E,children:t("Complete Signup")})]})]})}function J0(){const n=Ai();return GA(n)}function Z0({close:n}){const[e,t]=h.useState(null);return c.jsx(c.Fragment,{children:e==="nsec"?c.jsx(YU,{back:()=>t(null),onLoginSuccess:()=>n==null?void 0:n()}):e==="bunker"?c.jsx(HU,{back:()=>t(null),onLoginSuccess:()=>n==null?void 0:n()}):e==="npub"?c.jsx($U,{back:()=>t(null),onLoginSuccess:()=>n==null?void 0:n()}):e==="signup"?c.jsx(gB,{back:()=>t(null),onSignupSuccess:()=>n==null?void 0:n()}):c.jsx(yB,{setPage:t,close:n})})}function yB({setPage:n,close:e}){const{t}=Ae(),{nip07Login:o,accounts:a}=Je();return c.jsxs("div",{onClick:r=>r.stopPropagation(),className:"flex flex-col gap-8",children:[c.jsxs("div",{children:[c.jsx("div",{className:"text-center text-sm font-semibold text-muted-foreground",children:t("Add an Account")}),c.jsxs("div",{className:"mt-4 space-y-2",children:[!!window.nostr&&c.jsx(xe,{onClick:()=>o().then(()=>e==null?void 0:e()),className:"w-full",children:t("Login with Browser Extension")}),c.jsx(xe,{variant:"secondary",onClick:()=>n("bunker"),className:"w-full",children:t("Login with Bunker")}),c.jsx(xe,{variant:"secondary",onClick:()=>n("nsec"),className:"w-full",children:t("Login with Private Key")}),QC()]})]}),c.jsx(Zs,{}),c.jsxs("div",{children:[c.jsx("div",{className:"text-center text-sm font-semibold text-muted-foreground",children:t("Don't have an account yet?")}),c.jsx(xe,{onClick:()=>n("signup"),className:"mt-4 w-full",children:t("Create New Account")})]}),a.length>0&&c.jsxs(c.Fragment,{children:[c.jsx(Zs,{}),c.jsxs("div",{children:[c.jsx("div",{className:"text-center text-sm font-semibold text-muted-foreground",children:t("Logged in Accounts")}),c.jsx(sU,{className:"mt-4",afterSwitch:()=>e==null?void 0:e()})]})]})]})}function wB({open:n,setOpen:e}){const{isSmallScreen:t}=Ct();return t?c.jsx(Ht,{open:n,onOpenChange:e,children:c.jsx($t,{className:"max-h-[90vh]",children:c.jsx("div",{className:"flex flex-col gap-4 overflow-auto p-4",children:c.jsx(Z0,{close:()=>e(!1)})})})}):c.jsx(na,{open:n,onOpenChange:e,children:c.jsx(jo,{className:"max-h-[90vh] w-[520px] overflow-auto py-8",children:c.jsx(Z0,{close:()=>e(!1)})})})}function vB({open:n,title:e,description:t,onConfirm:o,onCancel:a}){const{t:r}=Ae(),[i,s]=h.useState(""),l=h.useRef(null);h.useEffect(()=>{n&&(s(""),setTimeout(()=>{var d;(d=l.current)==null||d.focus()},100))},[n]);const u=()=>{i&&o(i)},f=d=>{d.key==="Enter"&&i&&u()};return c.jsx(na,{open:n,onOpenChange:d=>!d&&a(),children:c.jsxs(jo,{children:[c.jsxs(Ba,{children:[c.jsx(Va,{children:e||r("Enter Password")}),t&&c.jsx(Cr,{children:t})]}),c.jsx(Sn,{ref:l,type:"password",value:i,onChange:d=>s(d.target.value),onKeyDown:f,placeholder:r("Password")}),c.jsxs(lb,{className:"flex w-full flex-wrap gap-2",children:[c.jsx(xe,{variant:"outline",onClick:a,className:"flex-1",children:r("Cancel")}),c.jsx(xe,{onClick:u,disabled:!i,className:"flex-1",children:r("Confirm")})]})]})})}function bB(n,e,t,o){wo.hash(n);const a=S1({dkLen:32,asyncTick:10},o),{c:r,dkLen:i,asyncTick:s}=a;if(wo.number(r),wo.number(i),wo.number(s),r<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const l=ng(e),u=ng(t),f=new Uint8Array(i),d=cp.create(n,l),p=d._cloneInto().update(u);return{c:r,dkLen:i,asyncTick:s,DK:f,PRF:d,PRFSalt:p}}function kB(n,e,t,o,a){return n.destroy(),e.destroy(),o&&o.destroy(),a.fill(0),t}function JA(n,e,t,o){const{c:a,dkLen:r,DK:i,PRF:s,PRFSalt:l}=bB(n,e,t,o);let u;const f=new Uint8Array(4),d=jE(f),p=new Uint8Array(s.outputLen);for(let m=1,g=0;g<r;m++,g+=s.outputLen){const y=i.subarray(g,g+s.outputLen);d.setInt32(0,m,!1),(u=l._cloneInto(u)).update(f).digestInto(p),y.set(p.subarray(0,y.length));for(let w=1;w<a;w++){s._cloneInto(u).update(p).digestInto(p);for(let v=0;v<y.length;v++)y[v]^=p[v]}}return kB(s,l,i,u,p)}const gt=(n,e)=>n<<e|n>>>32-e;function Q0(n,e,t,o,a,r){let i=n[e++]^t[o++],s=n[e++]^t[o++],l=n[e++]^t[o++],u=n[e++]^t[o++],f=n[e++]^t[o++],d=n[e++]^t[o++],p=n[e++]^t[o++],m=n[e++]^t[o++],g=n[e++]^t[o++],y=n[e++]^t[o++],w=n[e++]^t[o++],v=n[e++]^t[o++],k=n[e++]^t[o++],E=n[e++]^t[o++],A=n[e++]^t[o++],N=n[e++]^t[o++],T=i,C=s,P=l,M=u,U=f,O=d,W=p,V=m,j=g,L=y,I=w,b=v,S=k,z=E,F=A,D=N;for(let q=0;q<8;q+=2)U^=gt(T+S|0,7),j^=gt(U+T|0,9),S^=gt(j+U|0,13),T^=gt(S+j|0,18),L^=gt(O+C|0,7),z^=gt(L+O|0,9),C^=gt(z+L|0,13),O^=gt(C+z|0,18),F^=gt(I+W|0,7),P^=gt(F+I|0,9),W^=gt(P+F|0,13),I^=gt(W+P|0,18),M^=gt(D+b|0,7),V^=gt(M+D|0,9),b^=gt(V+M|0,13),D^=gt(b+V|0,18),C^=gt(T+M|0,7),P^=gt(C+T|0,9),M^=gt(P+C|0,13),T^=gt(M+P|0,18),W^=gt(O+U|0,7),V^=gt(W+O|0,9),U^=gt(V+W|0,13),O^=gt(U+V|0,18),b^=gt(I+L|0,7),j^=gt(b+I|0,9),L^=gt(j+b|0,13),I^=gt(L+j|0,18),S^=gt(D+F|0,7),z^=gt(S+D|0,9),F^=gt(z+S|0,13),D^=gt(F+z|0,18);a[r++]=i+T|0,a[r++]=s+C|0,a[r++]=l+P|0,a[r++]=u+M|0,a[r++]=f+U|0,a[r++]=d+O|0,a[r++]=p+W|0,a[r++]=m+V|0,a[r++]=g+j|0,a[r++]=y+L|0,a[r++]=w+I|0,a[r++]=v+b|0,a[r++]=k+S|0,a[r++]=E+z|0,a[r++]=A+F|0,a[r++]=N+D|0}function Nf(n,e,t,o,a){let r=o+0,i=o+16*a;for(let s=0;s<16;s++)t[i+s]=n[e+(2*a-1)*16+s];for(let s=0;s<a;s++,r+=16,e+=16)Q0(t,i,n,e,t,r),s>0&&(i+=16),Q0(t,r,n,e+=16,t,i)}function SB(n,e,t){const o=S1({dkLen:32,asyncTick:10,maxmem:1073742848},t),{N:a,r,p:i,dkLen:s,asyncTick:l,maxmem:u,onProgress:f}=o;if(wo.number(a),wo.number(r),wo.number(i),wo.number(s),wo.number(l),wo.number(u),f!==void 0&&typeof f!="function")throw new Error("progressCb should be function");const d=128*r,p=d/4;if(a<=1||a&a-1||a>=2**(d/8)||a>2**32)throw new Error("Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32");if(i<0||i>(2**32-1)*32/d)throw new Error("Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)");if(s<0||s>(2**32-1)*32)throw new Error("Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32");const m=d*(a+i);if(m>u)throw new Error(`Scrypt: parameters too large, ${m} (128 * r * (N + p)) > ${u} (maxmem)`);const g=JA(io,n,e,{c:1,dkLen:d*i}),y=zd(g),w=zd(new Uint8Array(d*a)),v=zd(new Uint8Array(d));let k=()=>{};if(f){const E=2*a*i,A=Math.max(Math.floor(E/1e4),1);let N=0;k=()=>{N++,f&&(!(N%A)||N===E)&&f(N/E)}}return{N:a,r,p:i,dkLen:s,blockSize32:p,V:w,B32:y,B:g,tmp:v,blockMixCb:k,asyncTick:l}}function xB(n,e,t,o,a){const r=JA(io,n,t,{c:1,dkLen:e});return t.fill(0),o.fill(0),a.fill(0),r}function ZA(n,e,t){const{N:o,r:a,p:r,dkLen:i,blockSize32:s,V:l,B32:u,B:f,tmp:d,blockMixCb:p}=SB(n,e,t);for(let m=0;m<r;m++){const g=s*m;for(let y=0;y<s;y++)l[y]=u[g+y];for(let y=0,w=0;y<o-1;y++)Nf(l,w,l,w+=s,a),p();Nf(l,(o-1)*s,u,g,a),p();for(let y=0;y<o;y++){const w=u[g+s-16]%o;for(let v=0;v<s;v++)d[v]=u[g+v]^l[w*s+v];Nf(d,0,u,g,a),p()}}return xB(n,i,f,l,d)}var QA=5e3;function AB(n,e){let t=Ro.toWords(e);return Ro.encode(n,t,QA)}function EB(n,e){return AB(n,e)}function RB(n,e,t=16,o=2){let a=zc(16),r=2**t,i=ZA(e.normalize("NFKC"),a,{N:r,r:8,p:1,dkLen:32}),s=zc(24),l=Uint8Array.from([o]),f=x1(i,s,l).encrypt(n),d=xr(Uint8Array.from([2]),Uint8Array.from([t]),a,s,l,f);return EB("ncryptsec",d)}function X0(n,e){let{prefix:t,words:o}=Ro.decode(n,QA);if(t!=="ncryptsec")throw new Error(`invalid prefix ${t}, expected 'ncryptsec'`);let a=new Uint8Array(Ro.fromWords(o)),r=a[0];if(r!==2)throw new Error(`invalid version ${r}, expected 0x02`);let s=2**a[1],l=a.slice(2,18),u=a.slice(18,42),f=a[42],d=Uint8Array.from([f]),p=a.slice(43),m=ZA(e.normalize("NFKC"),l,{N:s,r:8,p:1,dkLen:32});return x1(m,u,d).decrypt(p)}class e1{constructor(e){H(this,"signer",null);H(this,"clientSecretKey");H(this,"pubkey",null);this.clientSecretKey=e?bo(e):Ai()}async login(e,t=!0){const o=await DU(e);if(!o)throw new Error("Invalid bunker");return this.signer=Au.fromBunker(this.clientSecretKey,o,{onauth:a=>{window.open(a,"_blank")}}),t?(await this.signer.connect(),await this.getPublicKey()):(this.pubkey=o.pubkey,this.pubkey)}async getPublicKey(e=1e4){if(!this.signer)throw new Error("Not logged in");return this.pubkey||(this.pubkey=await Promise.race([this.signer.getPublicKey(),new Promise((t,o)=>setTimeout(()=>o(new Error("Bunker getPublicKey timeout")),e))])),this.pubkey}async signEvent(e){if(!this.signer)throw new Error("Not logged in");return this.signer.signEvent(e)}async nip04Encrypt(e,t){if(!this.signer)throw new Error("Not logged in");return await this.signer.nip04Encrypt(e,t)}async nip04Decrypt(e,t){if(!this.signer)throw new Error("Not logged in");return await this.signer.nip04Decrypt(e,t)}async nip44Encrypt(e,t){if(!this.signer)throw new Error("Not logged in");return await this.signer.nip44Encrypt(e,t)}async nip44Decrypt(e,t){if(!this.signer)throw new Error("Not logged in");return await this.signer.nip44Decrypt(e,t)}getClientSecretKey(){return hi(this.clientSecretKey)}}class t1{constructor(){H(this,"signer");H(this,"pubkey",null)}async init(){for(let o=0;o<50;o++){if(window.nostr){this.signer=window.nostr;return}await new Promise(a=>setTimeout(a,100))}throw new Error("You need to install a nostr signer extension to login. Such as alby, nostr-keyx or nos2x.")}async getPublicKey(){if(!this.signer)throw new Error("Should call init() first");return this.pubkey||(this.pubkey=await this.signer.getPublicKey()),this.pubkey}async signEvent(e){if(!this.signer)throw new Error("Should call init() first");return await this.signer.signEvent(e)}async nip04Encrypt(e,t){var o;if(!this.signer)throw new Error("Should call init() first");if(!((o=this.signer.nip04)!=null&&o.encrypt))throw new Error("The extension you are using does not support nip04 encryption");return await this.signer.nip04.encrypt(e,t)}async nip04Decrypt(e,t){var o;if(!this.signer)throw new Error("Should call init() first");if(!((o=this.signer.nip04)!=null&&o.decrypt))throw new Error("The extension you are using does not support nip04 decryption");return await this.signer.nip04.decrypt(e,t)}async nip44Encrypt(e,t){var o;if(!this.signer)throw new Error("Should call init() first");if(!((o=this.signer.nip44)!=null&&o.encrypt))throw new Error("The extension you are using does not support nip44 encryption");return await this.signer.nip44.encrypt(e,t)}async nip44Decrypt(e,t){var o;if(!this.signer)throw new Error("Should call init() first");if(!((o=this.signer.nip44)!=null&&o.decrypt))throw new Error("The extension you are using does not support nip44 decryption");return await this.signer.nip44.decrypt(e,t)}}class CB{constructor(e,t){H(this,"signer",null);H(this,"clientSecretKey");H(this,"pubkey",null);H(this,"connectionString");H(this,"bunkerString",null);this.clientSecretKey=e,this.connectionString=t}async login(){return this.pubkey?{bunkerString:this.bunkerString,pubkey:this.pubkey}:(this.signer=await Au.fromURI(this.clientSecretKey,this.connectionString,{onauth:e=>{window.open(e,"_blank")}}),this.bunkerString=MU(this.signer.bp),this.pubkey=await this.signer.getPublicKey(),{bunkerString:this.bunkerString,pubkey:this.pubkey})}async getPublicKey(){if(!this.signer)throw new Error("Not logged in");return this.pubkey||(this.pubkey=await this.signer.getPublicKey()),this.pubkey}async signEvent(e){if(!this.signer)throw new Error("Not logged in");return this.signer.signEvent(e)}async nip04Encrypt(e,t){if(!this.signer)throw new Error("Not logged in");return await this.signer.nip04Encrypt(e,t)}async nip04Decrypt(e,t){if(!this.signer)throw new Error("Not logged in");return await this.signer.nip04Decrypt(e,t)}async nip44Encrypt(e,t){if(!this.signer)throw new Error("Not logged in");return await this.signer.nip44Encrypt(e,t)}async nip44Decrypt(e,t){if(!this.signer)throw new Error("Not logged in");return await this.signer.nip44Decrypt(e,t)}getClientSecretKey(){return hi(this.clientSecretKey)}}class n1{constructor(){H(this,"pubkey",null)}login(e){const{type:t,data:o}=Nt.decode(e);if(t!=="npub")throw new Error("invalid nsec");return this.pubkey=o,this.pubkey}async getPublicKey(){if(!this.pubkey)throw new Error("Not logged in");return this.pubkey}async signEvent(){throw new Error("Not logged in")}async nip04Encrypt(){throw new Error("Not logged in")}async nip04Decrypt(){throw new Error("Not logged in")}async nip44Encrypt(){throw new Error("Not logged in")}async nip44Decrypt(){throw new Error("Not logged in")}}class mc{constructor(){H(this,"privkey",null);H(this,"pubkey",null)}login(e){let t;if(typeof e=="string"){const{type:o,data:a}=Nt.decode(e);if(o!=="nsec")throw new Error("invalid nsec");t=a}else t=e;return this.privkey=t,this.pubkey=As(t),this.pubkey}async getPublicKey(){if(!this.pubkey)throw new Error("Not logged in");return this.pubkey}async signEvent(e){if(!this.privkey)throw new Error("Not logged in");return zE(e,this.privkey)}async nip04Encrypt(e,t){if(!this.privkey)throw new Error("Not logged in");return og.encrypt(this.privkey,e,t)}async nip04Decrypt(e,t){if(!this.privkey)throw new Error("Not logged in");return og.decrypt(this.privkey,e,t)}async nip44Encrypt(e,t){if(!this.privkey)throw new Error("Not logged in");const o=tn.utils.getConversationKey(this.privkey,e);return tn.encrypt(t,o)}async nip44Decrypt(e,t){if(!this.privkey)throw new Error("Not logged in");const o=tn.utils.getConversationKey(this.privkey,e);return tn.decrypt(t,o)}}const XA=h.createContext(void 0),o1=new Map,Je=()=>{const n=h.useContext(XA);if(!n)throw new Error("useNostr must be used within a NostrProvider");return n};function PB({children:n}){const{t:e}=Ae(),{addDeletedEvent:t}=e2(),[o,a]=h.useState(pe.getAccounts().map(X=>({pubkey:X.pubkey,signerType:X.signerType}))),[r,i]=h.useState(null),[s,l]=h.useState(null),[u,f]=h.useState(null),[d,p]=h.useState(null),[m,g]=h.useState(!1),[y,w]=h.useState(null),[v,k]=h.useState(null),[E,A]=h.useState(null),[N,T]=h.useState(null),[C,P]=h.useState(null),[M,U]=h.useState(null),[O,W]=h.useState(null),[V,j]=h.useState(null),[L,I]=h.useState(null),[b,S]=h.useState(null),[z,F]=h.useState(null),[D,q]=h.useState(-1),[J,ae]=h.useState(!1),[ge,ie]=h.useState(!1),de=h.useRef(null);h.useEffect(()=>{(async()=>{if(Ee())return await G();const Ce=pe.getAccounts(),Me=pe.getCurrentAccount()??Ce[0];Me&&await Te(Me)})().then(()=>{ae(!0)});const oe=()=>{Ee()&&G()};return window.addEventListener("hashchange",oe),()=>{window.removeEventListener("hashchange",oe)}},[]),h.useEffect(()=>{const X=new AbortController;return(async()=>{if(A(null),w(null),k(null),l(null),j(null),T(null),P(null),W(null),S(null),q(-1),!r)return;const Ce=pe.getAccountNsec(r.pubkey);l(Ce||null);const Me=pe.getAccountNcryptsec(r.pubkey);f(Me||null);const lt=pe.getLastReadNotificationTime(r.pubkey),[ut,it,dn,Yt,bn,rs,co,Ad,Km,Gm]=await Promise.all([be.getReplaceableEvent(r.pubkey,Z.RelayList),be.getReplaceableEvent(r.pubkey,Z.Metadata),be.getReplaceableEvent(r.pubkey,Z.Contacts),be.getReplaceableEvent(r.pubkey,Z.Mutelist),be.getReplaceableEvent(r.pubkey,Z.BookmarkList),be.getReplaceableEvent(r.pubkey,ce.FAVORITE_RELAYS),be.getReplaceableEvent(r.pubkey,Z.UserEmojiList),be.getReplaceableEvent(r.pubkey,Z.Pinlist),be.getReplaceableEvent(r.pubkey,ce.PINNED_USERS),be.getReplaceableEvent(r.pubkey,30315)]);if(X.signal.aborted)return;ut&&A(kc(ut,pe.getFilterOutOnionRelays())),it&&(k(it),w(fi(it))),dn&&T(dn),Yt&&P(Yt),bn&&W(bn),rs&&j(rs),co&&I(co),Ad&&S(Ad),Km&&U(Km),Gm&&F(Gm);const Jm=kt(),sE=await le.fetchEvents(Jm,{kinds:[Z.RelayList],authors:[r.pubkey]}),Ul=PP(sE)??ut,Zm=kc(Ul,pe.getFilterOutOnionRelays());if(Ul&&(le.updateRelayListCache(Ul),await be.putReplaceableEvent(Ul)),X.signal.aborted)return;A(Zm);const lE=await le.fetchEvents(Zm.write.concat(Jm).slice(0,4),[{kinds:[Z.Metadata,Z.Contacts,Z.Mutelist,Z.BookmarkList,ce.FAVORITE_RELAYS,ce.BLOSSOM_SERVER_LIST,Z.UserEmojiList,Z.Pinlist,ce.PINNED_USERS],authors:[r.pubkey]},{kinds:[Z.Application],authors:[r.pubkey],"#d":[Uf.NOTIFICATIONS_SEEN_AT]}]);if(X.signal.aborted)return;const uo=lE.sort((nt,cE)=>cE.created_at-nt.created_at),Ed=uo.find(nt=>nt.kind===Z.Metadata),Bl=uo.find(nt=>nt.kind===Z.Contacts),Vl=uo.find(nt=>nt.kind===Z.Mutelist),Wl=uo.find(nt=>nt.kind===Z.BookmarkList),Rd=uo.find(nt=>nt.kind===ce.FAVORITE_RELAYS),Qm=uo.find(nt=>nt.kind===ce.BLOSSOM_SERVER_LIST),Cd=uo.find(nt=>nt.kind===Z.UserEmojiList),Pd=uo.find(nt=>nt.kind===Z.Application&&ir(nt)===Uf.NOTIFICATIONS_SEEN_AT),Nd=uo.find(nt=>nt.kind===Z.Pinlist),Td=uo.find(nt=>nt.kind===ce.PINNED_USERS);if(Ed){const nt=await be.putReplaceableEvent(Ed);nt.id===Ed.id&&(k(nt),w(fi(nt)))}else it||w({pubkey:r.pubkey,npub:ur(r.pubkey)??"",username:Ri(r.pubkey)});if(Bl&&(await be.putReplaceableEvent(Bl)).id===Bl.id&&T(Bl),Vl&&(await be.putReplaceableEvent(Vl)).id===Vl.id&&P(Vl),Wl&&(await be.putReplaceableEvent(Wl)).id===Wl.id&&W(Wl),Rd){const nt=await be.putReplaceableEvent(Rd);nt.id===Rd.id&&j(nt)}if(Qm&&await le.updateBlossomServerListEventCache(Qm),Cd){const nt=await be.putReplaceableEvent(Cd);nt.id===Cd.id&&I(nt)}if(Nd){const nt=await be.putReplaceableEvent(Nd);nt.id===Nd.id&&S(nt)}if(Td){const nt=await be.putReplaceableEvent(Td);nt.id===Td.id&&U(nt)}const Xm=Math.max((Pd==null?void 0:Pd.created_at)??0,lt);q(Xm),pe.setLastReadNotificationTime(r.pubkey,Xm),le.initUserIndexFromFollowings(r.pubkey,X.signal)})(),()=>{X.abort()}},[r]),h.useEffect(()=>{if(!r)return;(async()=>{const oe=r.pubkey,Ce=await le.fetchRelayList(oe),Me=await le.fetchEvents(Ce.write.slice(0,4),[{authors:[oe],kinds:[Z.Reaction,Z.Repost],limit:100},{"#P":[oe],kinds:[Z.Zap],limit:100}]);ro.updateStuffStatsByEvents(Me)})()},[r]),h.useEffect(()=>{d?le.signer=d:le.signer=void 0},[d]),h.useEffect(()=>{r?le.pubkey=r.pubkey:le.pubkey=void 0},[r]),h.useEffect(()=>{gn.init(L)},[L]);const he=()=>new Promise((X,oe)=>{de.current={resolve:X,reject:oe},ie(!0)}),we=X=>{var oe;(oe=de.current)==null||oe.resolve(X),de.current=null,ie(!1)},ke=()=>{var X;(X=de.current)==null||X.reject(),de.current=null,ie(!1)},Ee=()=>window.location.hash&&window.location.hash.startsWith("#nostr-login"),G=async()=>{const X=window.location.hash.replace("#nostr-login=",""),oe=window.location.href.split("#")[0];if(history.replaceState(null,"",oe),X.startsWith("bunker://"))return await ye(X);if(X.startsWith("ncryptsec"))return await Se(X);if(X.startsWith("nsec"))return await fe(X)},te=(X,oe)=>{const Ce=pe.addAccount(oe);return a(Ce),pe.switchAccount(oe),i({pubkey:oe.pubkey,signerType:oe.signerType}),p(X),oe.pubkey},Y=X=>{const oe=pe.removeAccount(X);a(oe),(r==null?void 0:r.pubkey)===X.pubkey&&(i(null),p(null))},se=async X=>{if(!X){pe.switchAccount(null),i(null),p(null);return}await Te(X)},fe=async(X,oe,Ce)=>{const Me=new mc;let lt;if(X.startsWith("nsec")){const{type:it,data:dn}=hB(X);if(it!=="nsec")throw new Error("invalid nsec or hex");lt=dn}else if(/^[0-9a-fA-F]{64}$/.test(X))lt=bo(X);else throw new Error("invalid nsec or hex");const ut=Me.login(lt);if(oe){const it=RB(lt,oe);te(Me,{pubkey:ut,signerType:"ncryptsec",ncryptsec:it})}else te(Me,{pubkey:ut,signerType:"nsec",nsec:GA(lt)});return Ce&&qe(Me),ut},Se=async X=>{const oe=await he(),Ce=X0(X,oe),Me=new mc,lt=Me.login(Ce);return te(Me,{pubkey:lt,signerType:"ncryptsec",ncryptsec:X})},Oe=async X=>{const oe=new n1,Ce=oe.login(X);return te(oe,{pubkey:Ce,signerType:"npub",npub:X})},Le=async()=>{try{const X=new t1;await X.init();const oe=await X.getPublicKey();if(!oe)throw new Error("You did not allow to access your pubkey");return te(X,{pubkey:oe,signerType:"nip-07"})}catch(X){throw Ue.error(e("Login failed")+": "+X.message),X}},ye=async X=>{const oe=new e1,Ce=await oe.login(X);if(!Ce)throw new Error("Invalid bunker");const Me=new URL(X);return Me.searchParams.delete("secret"),te(oe,{pubkey:Ce,signerType:"bunker",bunker:Me.toString(),bunkerClientSecretKey:oe.getClientSecretKey()})},Pe=async(X,oe)=>{const Ce=new CB(X,oe),Me=await Ce.login();if(!Me.pubkey)throw new Error("Invalid bunker");const lt=new URL(Me.bunkerString);return lt.searchParams.delete("secret"),te(Ce,{pubkey:Me.pubkey,signerType:"bunker",bunker:lt.toString(),bunkerClientSecretKey:Ce.getClientSecretKey()})},Te=async X=>{let oe=pe.findAccount(X);if(!oe)return null;if(oe.signerType==="nsec"||oe.signerType==="browser-nsec"){if(oe.nsec){const Ce=new mc;return Ce.login(oe.nsec),oe.signerType==="browser-nsec"&&(pe.removeAccount(oe),oe={...oe,signerType:"nsec"},pe.addAccount(oe)),te(Ce,oe)}}else if(oe.signerType==="ncryptsec"){if(oe.ncryptsec)try{const Ce=await he(),Me=X0(oe.ncryptsec,Ce),lt=new mc;return lt.login(Me),te(lt,oe)}catch{return null}}else if(oe.signerType==="nip-07"){const Ce=new t1;return await Ce.init(),te(Ce,oe)}else if(oe.signerType==="bunker"){if(oe.bunker&&oe.bunkerClientSecretKey){const Ce=new e1(oe.bunkerClientSecretKey);return await Ce.login(oe.bunker,!1),te(Ce,oe)}}else if(oe.signerType==="npub"&&oe.npub){const Ce=new n1,Me=Ce.login(oe.npub);return Me?(Me!==oe.pubkey&&(pe.removeAccount(oe),oe={...oe,pubkey:Me},pe.addAccount(oe)),te(Ce,oe)):(pe.removeAccount(oe),null)}return pe.removeAccount(oe),null},qe=async X=>{const oe=kt();await Promise.allSettled([le.publishEvent(oe,await X.signEvent(dh([]))),le.publishEvent(oe,await X.signEvent(fh([]))),le.publishEvent(oe,await X.signEvent(AT(oe.map(Ce=>({url:Ce,scope:"both"})))))])},ct=async X=>{const oe=await(d==null?void 0:d.signEvent(X));if(!oe)throw new Error("sign event failed");return oe},Ge=async(X,{minPow:oe=0,...Ce}={})=>{if(!r||!d||r.signerType==="npub")throw new Error("You need to login first");const Me=JSON.parse(JSON.stringify(X));let lt;if(oe>0){const it=await NP({...Me,pubkey:r.pubkey},oe);lt=await ct(it)}else lt=await ct(Me);if(lt.kind!==Z.Application&&lt.pubkey!==r.pubkey){const it=await le.fetchProfile(lt.pubkey);if(!confirm(e("You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?",{eventAuthorName:it==null?void 0:it.username,currentUsername:y==null?void 0:y.username})))throw new Error(e("Cancelled"))}const ut=await le.determineTargetRelays(lt,Ce);return await le.publishEvent(ut,lt),lt},et=async X=>{if(!d)throw new Error(e("You need to login first"));if((r==null?void 0:r.pubkey)!==X.pubkey)throw new Error(e("You can only delete your own notes"));const oe=await ct(NT(X)),Ce=le.getSeenEventRelayUrls(X.id),Me=await le.determineTargetRelays(X,{specifiedRelayUrls:Ui(X)?Ce:void 0,additionalRelayUrls:Ce});await le.publishEvent(Me,oe),t(X),Ue.success(e("Deletion request sent to {{count}} relays",{count:Me.length}))},_=async(X,oe,Ce="")=>{const Me=await ct({content:Ce,kind:Z.HTTPAuth,created_at:Be().unix(),tags:[["u",X],["method",oe]]});return"Nostr "+btoa(JSON.stringify(Me))},x=async(X,oe)=>(d==null?void 0:d.nip04Encrypt(X,oe))??"",R=async(X,oe)=>(d==null?void 0:d.nip04Decrypt(X,oe))??"",B=async(X,oe)=>(d==null?void 0:d.nip44Encrypt(X,oe))??"",K=async(X,oe)=>(d==null?void 0:d.nip44Decrypt(X,oe))??"",Q=async X=>d?X&&X():g(!0),ue=async X=>{const oe=await le.updateRelayListCache(X);A(kc(oe,pe.getFilterOutOnionRelays()))},$e=async X=>{const oe=await be.putReplaceableEvent(X);k(oe),w(fi(oe))},dt=async X=>{F(X)},Xe=async X=>{const oe=await be.putReplaceableEvent(X);oe.id===X.id&&(T(oe),await le.updateFollowListCache(oe))},St=async(X,oe)=>{(await be.putReplaceableEvent(X)).id===X.id&&(await be.putDecryptedContent(X.id,JSON.stringify(oe)),P(X))},ft=async X=>{const oe=await be.putReplaceableEvent(X);oe.id===X.id&&W(oe)},_e=async X=>{const oe=await be.putReplaceableEvent(X);oe.id===X.id&&j(oe)},pt=async X=>{const oe=await be.putReplaceableEvent(X);oe.id===X.id&&I(oe)},bt=async X=>{const oe=await be.putReplaceableEvent(X);oe.id===X.id&&S(oe)},st=async(X,oe)=>{const Ce=await be.putReplaceableEvent(X);Ce.id===X.id&&(oe&&await be.putDecryptedContent(X.id,JSON.stringify(oe)),U(Ce))},xt=async(X=!1)=>{if(!r)return;const oe=Be().unix();pe.setLastReadNotificationTime(r.pubkey,oe),setTimeout(()=>{q(oe)},5e3);const Ce=o1.get(r.pubkey)??-1;!X&&(Ce<0||oe-Ce>10*60)&&(await Ge(ET()),o1.set(r.pubkey,oe))};return c.jsxs(XA.Provider,{value:{isInitialized:J,pubkey:(r==null?void 0:r.pubkey)??null,profile:y,profileEvent:v,userStatusEvent:z,relayList:E,followListEvent:N,muteListEvent:C,bookmarkListEvent:O,favoriteRelaysEvent:V,userEmojiListEvent:L,pinListEvent:b,pinnedUsersEvent:M,notificationsSeenAt:D,account:r,accounts:o,nsec:s,ncryptsec:u,switchAccount:se,nsecLogin:fe,ncryptsecLogin:Se,nip07Login:Le,bunkerLogin:ye,nostrConnectionLogin:Pe,npubLogin:Oe,removeAccount:Y,publish:Ge,attemptDelete:et,signHttpAuth:_,nip04Encrypt:x,nip04Decrypt:R,nip44Encrypt:B,nip44Decrypt:K,startLogin:()=>g(!0),checkLogin:Q,signEvent:ct,updateRelayListEvent:ue,updateProfileEvent:$e,updateUserStatusEvent:dt,updateFollowListEvent:Xe,updateMuteListEvent:St,updateBookmarkListEvent:ft,updateFavoriteRelaysEvent:_e,updateUserEmojiListEvent:pt,updatePinListEvent:bt,updatePinnedUsersEvent:st,updateNotificationsSeenAt:xt},children:[n,c.jsx(wB,{open:m,setOpen:g}),c.jsx(vB,{open:ge,title:e("Enter Password"),description:e("Enter the password to decrypt your ncryptsec"),onConfirm:we,onCancel:ke})]})}const eE=h.createContext(void 0),NB=()=>{const n=h.useContext(eE);if(!n)throw new Error("useBookmarks must be used within a BookmarksProvider");return n};function TB({children:n}){const{pubkey:e,publish:t,updateBookmarkListEvent:o}=Je(),a=async i=>{if(!e)return;const s=await le.fetchBookmarkListEvent(e),l=(s==null?void 0:s.tags)||[],u=Bt(i.kind),f=u?ln(i):i.id;if(l.some(p=>u?p[0]==="a"&&p[1]===f:p[0]==="e"&&p[1]===f))return;const d=ky([...l,u?Oa(i):wr(i.id,i.pubkey)],s==null?void 0:s.content);try{const p=await t(d);await o(p)}catch(p){wt(p).forEach(g=>{Ue.error(`Failed to add bookmark: ${g}`,{duration:1e4})})}},r=async i=>{if(!e)return;const s=await le.fetchBookmarkListEvent(e);if(!s)return;const l=Bt(i.kind),u=l?ln(i):i.id,f=s.tags.filter(p=>l?p[0]!=="a"||p[1]!==u:p[0]!=="e"||p[1]!==u);if(f.length===s.tags.length)return;const d=ky(f,s.content);try{const p=await t(d);await o(p)}catch(p){wt(p).forEach(g=>{Ue.error(`Failed to remove bookmark: ${g}`,{duration:1e4})})}};return c.jsx(eE.Provider,{value:{addBookmark:a,removeBookmark:r},children:n})}const tE=h.createContext(void 0),oW=()=>{const n=h.useContext(tE);if(!n)throw new Error("useFeed must be used within a FeedProvider");return n};function jB({children:n}){const{pubkey:e,isInitialized:t}=Je(),{relaySets:o}=Mm(),[a,r]=h.useState([]),[i,s]=h.useState(!1),[l,u]=h.useState(null),f=h.useRef(l);h.useEffect(()=>{(async()=>{if(!t)return;let m=null;if(e){const g=pe.getFeedInfo(e);g?m=g:m={feedType:"following"}}if((m==null?void 0:m.feedType)==="relays")return await d("relays",{activeRelaySetId:m.id});if((m==null?void 0:m.feedType)==="relay")return await d("relay",{relay:m.id});if((m==null?void 0:m.feedType)==="following"&&e)return await d("following",{pubkey:e});if((m==null?void 0:m.feedType)==="pinned"&&e)return await d("pinned",{pubkey:e});if(((m==null?void 0:m.feedType)==="mediaFeed"||(m==null?void 0:m.feedType)==="textFeed"||(m==null?void 0:m.feedType)==="articleFeed")&&e)return await d(m.feedType,{pubkey:e});if((m==null?void 0:m.feedType)==="groups"&&e)return await d("groups",{pubkey:e});s(!0)})()},[e,t]);const d=async(p,m={})=>{if(!p){u(null),f.current=null,r([]);return}if(s(!1),p==="relay"){const g=jn(m.relay??"");if(!g||!yl(g)){s(!0);return}const y={feedType:p,id:g};u(y),f.current=y,r([g]),pe.setFeedInfo(y,e),s(!0);return}if(p==="relays"){const g=m.activeRelaySetId??(o.length>0?o[0].id:null);let y=null;if(!g||!e){s(!0);return}if(y=o.find(w=>w.id===g)??(o.length>0?o[0]:null),!y){const w=await be.getReplaceableEvent(e,Z.Relaysets,g);w&&(y=Lw(w))}if(y){const w={feedType:p,id:y.id};u(w),f.current=w,r(y.relayUrls),pe.setFeedInfo(w,e),s(!0)}s(!0);return}if(p==="following"){if(!m.pubkey){s(!0);return}const g={feedType:p};u(g),f.current=g,pe.setFeedInfo(g,e),r([]),s(!0);return}if(p==="pinned"){if(!m.pubkey){s(!0);return}const g={feedType:p};u(g),f.current=g,pe.setFeedInfo(g,e),r([]),s(!0);return}if(p==="mediaFeed"||p==="textFeed"||p==="articleFeed"){if(!m.pubkey){s(!0);return}const g={feedType:p};u(g),f.current=g,pe.setFeedInfo(g,e),r([]),s(!0);return}if(p==="groups"){if(!m.pubkey){s(!0);return}const g={feedType:p};u(g),f.current=g,pe.setFeedInfo(g,e),r([]),s(!0);return}s(!0)};return c.jsx(tE.Provider,{value:{feedInfo:l,relayUrls:a,isReady:i,switchFeed:d},children:n})}const nE=h.createContext(void 0),aW=()=>{const n=h.useContext(nE);if(!n)throw new Error("useKindFilter must be used within a KindFilterProvider");return n};function zB({children:n}){const[e,t]=h.useState(pe.getShowKinds()),o=a=>{pe.setShowKinds(a),t(a)};return c.jsx(nE.Provider,{value:{showKinds:e,updateShowKinds:o},children:n})}const oE=h.createContext(void 0),rW=()=>{const n=h.useContext(oE);if(!n)throw new Error("useMediaUploadService must be used within MediaUploadServiceProvider");return n};function IB({children:n}){const{pubkey:e,startLogin:t}=Je(),[o,a]=h.useState(pe.getMediaUploadServiceConfig());h.useEffect(()=>{const i=pe.getMediaUploadServiceConfig(e);a(i),gr.setServiceConfig(i)},[e]);const r=i=>{if(!e){t();return}a(i),pe.setMediaUploadServiceConfig(e,i),gr.setServiceConfig(i)};return c.jsx(oE.Provider,{value:{serviceConfig:o,updateServiceConfig:r},children:n})}const aE=h.createContext(void 0),iW=()=>{const n=h.useContext(aE);if(!n)throw new Error("usePinnedUsers must be used within a PinnedUsersProvider");return n};function Tf(n,e=""){return{kind:ce.PINNED_USERS,content:e,tags:n,created_at:Math.floor(Date.now()/1e3)}}function LB({children:n}){const{pubkey:e,pinnedUsersEvent:t,updatePinnedUsersEvent:o,publish:a,nip04Decrypt:r,nip44Encrypt:i,nip44Decrypt:s}=Je(),[l,u]=h.useState([]),f=h.useMemo(()=>t?new Set(Ls(t.tags.concat(l))):new Set,[t,l]),d=h.useCallback(async(v,k)=>{if(e)try{const E=await i(e,JSON.stringify(k)),A=Tf(v.tags,E),N=await a(A);await o(N,k)}catch(E){console.error("[PinnedUsers] Failed to migrate to NIP-44",E)}},[e,i,a,o]);h.useEffect(()=>{(async()=>{if(!t){u([]);return}const{privateTags:k,wasNip04:E}=await p(t).catch(()=>({privateTags:[],wasNip04:!1}));u(k),E&&k.length>0&&d(t,k)})()},[t]);const p=h.useCallback(async v=>{if(!v.content)return{privateTags:[],wasNip04:!1};try{const k=v.content.includes("?iv="),E=await be.getDecryptedContent(v.id);let A;return E?A=E:(A=k?await r(v.pubkey,v.content):await s(v.pubkey,v.content),await be.putDecryptedContent(v.id,A)),{privateTags:Mn.array(Mn.array(Mn.string())).parse(JSON.parse(A)),wasNip04:k}}catch(k){return console.error("Failed to decrypt pinned users content",k),{privateTags:[],wasNip04:!1}}},[r,s]),m=h.useCallback(v=>f.has(v),[f]),g=h.useCallback(async v=>{if(!(!e||m(v)))try{const k=[...(t==null?void 0:t.tags)??[],["p",v]],E=Tf(k,(t==null?void 0:t.content)??""),A=await a(E);await o(A,l)}catch(k){wt(k).forEach(A=>{Ue.error(`Failed to pin user: ${A}`,{duration:1e4})})}},[e,m,t,a,o,l]),y=h.useCallback(async v=>{if(!(!e||!t||!m(v)))try{const k=t.tags.filter(([C,P])=>C!=="p"||P!==v),E=l.filter(([C,P])=>C!=="p"||P!==v);let A=t.content;E.length!==l.length&&(A=await i(t.pubkey,JSON.stringify(E)));const N=Tf(k,A),T=await a(N);await o(T,E)}catch(k){wt(k).forEach(A=>{Ue.error(`Failed to unpin user: ${A}`,{duration:1e4})})}},[e,m,t,a,o,l,i]),w=h.useCallback(async v=>{m(v)?await y(v):await g(v)},[m,g,y]);return c.jsx(aE.Provider,{value:{pinnedPubkeySet:f,isPinned:m,pinUser:g,unpinUser:y,togglePin:w},children:n})}const rE=h.createContext(void 0),MB=n=>{const e=window.document.documentElement,t=H4[n],o=t.colors,a=t.style;e.style.setProperty("--background",o.background),e.style.setProperty("--foreground",o.foreground),e.style.setProperty("--card",o.card),e.style.setProperty("--card-foreground",o.cardForeground),e.style.setProperty("--popover",o.popover),e.style.setProperty("--popover-foreground",o.popoverForeground),e.style.setProperty("--primary",o.primary),e.style.setProperty("--primary-hover",o.primaryHover),e.style.setProperty("--primary-foreground",o.primaryForeground),e.style.setProperty("--secondary",o.secondary),e.style.setProperty("--secondary-foreground",o.secondaryForeground),e.style.setProperty("--muted",o.muted),e.style.setProperty("--muted-foreground",o.mutedForeground),e.style.setProperty("--accent",o.accent),e.style.setProperty("--accent-foreground",o.accentForeground),e.style.setProperty("--destructive",o.destructive),e.style.setProperty("--destructive-foreground",o.destructiveForeground),e.style.setProperty("--border",o.border),e.style.setProperty("--input",o.input),e.style.setProperty("--ring",o.ring),e.style.setProperty("--surface-background",o.surfaceBackground),e.style.setProperty("--zap",o.zap),e.style.setProperty("--repost",o.repost),e.style.setProperty("--bookmark",o.bookmark),e.style.setProperty("--comment",o.comment),e.style.setProperty("--note-hover",o.noteHover),e.style.setProperty("--theme-radius",a.radius),e.style.setProperty("--theme-scanline",a.scanlineOpacity),e.style.setProperty("--theme-bg-gradient",a.bgGradient),e.style.setProperty("--theme-text-shadow",a.textShadow),e.style.setProperty("--theme-font",a.fontFamily),e.style.setProperty("--theme-mesh-opacity",a.meshOpacity),e.style.setProperty("--theme-card-border-width",a.cardBorderWidth),e.classList.remove("light","dark","ember","emerald","sapphire","amethyst","hackerman","phosphor","midnight"),e.classList.add(n)};function DB({children:n}){const[e,t]=h.useState(localStorage.getItem(me.THEME_SETTING)??"sapphire"),[o,a]=h.useState(e);h.useEffect(()=>{MB(e),a(e)},[e]);const r=i=>{pe.setThemeSetting(i),t(i)};return c.jsx(rE.Provider,{value:{theme:o,themeSetting:e,setThemeSetting:r},children:n})}const sW=()=>{const n=h.useContext(rE);if(n===void 0)throw new Error("useTheme must be used within a ThemeProvider");return n},iE=h.createContext(void 0),lW=()=>{const n=h.useContext(iE);if(!n)throw new Error("useDmContext must be used within a DmContextProvider");return n};function _B({children:n}){const[e,t]=h.useState(null),[o,a]=h.useState(0),r=h.useCallback(l=>{t(l)},[]),i=h.useCallback(()=>{t(null)},[]),s=h.useCallback(()=>{a(l=>l+1)},[]);return c.jsx(iE.Provider,{value:{recipientPubkey:e,registerConversation:r,unregisterConversation:i,onMessageSent:s,refreshMessages:o},children:n})}function FB(){return c.jsx(Oz,{children:c.jsx(_M,{children:c.jsx(DB,{children:c.jsx(vL,{children:c.jsx(fL,{children:c.jsx(PB,{children:c.jsx(k_,{children:c.jsx(AL,{children:c.jsx(gO,{children:c.jsx(i_,{children:c.jsx(bL,{children:c.jsx(kL,{children:c.jsx(TB,{children:c.jsx(Q5,{children:c.jsx(_5,{children:c.jsx(LB,{children:c.jsx(jB,{children:c.jsx(IB,{children:c.jsx(zB,{children:c.jsx(_9,{children:c.jsxs(_B,{children:[c.jsx(iU,{}),c.jsx(tP,{}),c.jsx(G3,{})]})})})})})})})})})})})})})})})})})})})})})}class OB extends h.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error("ErrorBoundary caught an error:",e,t)}render(){var e;return this.state.hasError?c.jsxs("div",{className:"flex h-screen w-screen flex-col items-center justify-center gap-4 p-4",children:[c.jsx("h1",{className:"text-2xl font-bold",children:"Oops, something went wrong."}),c.jsxs("p",{className:"max-w-md text-center text-lg",children:["Sorry for the inconvenience. If you don't mind helping, you can"," ",c.jsx("a",{href:"https://github.com/CodyTseng/jumble/issues/new",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"submit an issue on GitHub"})," ","with the error details, or"," ",c.jsx("a",{href:"https://jumble.social/npub1syjmjy0dp62dhccq3g97fr87tngvpvzey08llyt6ul58m2zqpzps9wf6wl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"mention me"}),". Thank you for your support!"]}),((e=this.state.error)==null?void 0:e.message)&&c.jsxs(c.Fragment,{children:[c.jsx(xe,{onClick:()=>{navigator.clipboard.writeText(this.state.error.message)},variant:"secondary",children:"Copy Error Message"}),c.jsxs("pre",{className:"whitespace-pre-wrap text-wrap break-words rounded bg-destructive/10 p-2 text-destructive",children:["Error: ",this.state.error.message]})]}),c.jsxs(xe,{onClick:()=>window.location.reload(),className:"mt-2",children:[c.jsx(A4,{}),"Reload Page"]})]}):this.props.children}}const $m=()=>{document.documentElement.style.setProperty("--vh",`${window.innerHeight}px`)};window.addEventListener("resize",$m);window.addEventListener("orientationchange",$m);$m();DM().then(()=>{k3.createRoot(document.getElementById("root")).render(c.jsx(h.StrictMode,{children:c.jsx(OB,{children:c.jsx(FB,{})})}))});export{du as $,Va as A,xe as B,_c as C,Ht as D,lb as E,gr as F,Ue as G,le as H,sn as I,kt as J,_a as K,Jt as L,zs as M,Fi as N,Y1 as O,jm as P,c2 as Q,ku as R,Ma as S,h4 as T,$r as U,EV as V,Ol as W,Dn as X,rV as Y,Tn as Z,wL as _,Je as a,CV as a$,ir as a0,yl as a1,Ug as a2,pe as a3,Ew as a4,ce as a5,as as a6,wB as a7,iw as a8,RS as a9,jn as aA,Pr as aB,Qt as aC,es as aD,zu as aE,cr as aF,Be as aG,gl as aH,Uo as aI,ro as aJ,WP as aK,Un as aL,el as aM,U1 as aN,Op as aO,kS as aP,gm as aQ,ym as aR,vm as aS,bm as aT,wm as aU,AS as aV,xS as aW,Z0 as aX,kd as aY,OV as aZ,o4 as a_,Wa as aa,Jl as ab,U9 as ac,Xo as ad,vA as ae,Bm as af,Hx as ag,Yo as ah,e7 as ai,kr as aj,ad as ak,u4 as al,tV as am,RP as an,P0 as ao,uu as ap,Ke as aq,Hc as ar,Er as as,nm as at,Is as au,yc as av,Ld as aw,zl as ax,ws as ay,Tu as az,Mm as b,QV as b$,L4 as b0,Zs as b1,RV as b2,a4 as b3,xn as b4,BV as b5,Ng as b6,J1 as b7,Ko as b8,wd as b9,Yg as bA,Xi as bB,Vo as bC,vp as bD,hB as bE,ea as bF,Gt as bG,KB as bH,Rh as bI,Wn as bJ,ur as bK,ui as bL,Pg as bM,oa as bN,aa as bO,ra as bP,La as bQ,X8 as bR,xA as bS,Cr as bT,ZV as bU,jr as bV,q8 as bW,XV as bX,eW as bY,G8 as bZ,$8 as b_,mV as ba,Pn as bb,W4 as bc,a_ as bd,P4 as be,Sa as bf,dr as bg,ml as bh,be as bi,t2 as bj,jP as bk,h_ as bl,vV as bm,SV as bn,Fl as bo,_n as bp,km as bq,Ho as br,Qo as bs,Ml as bt,al as bu,xP as bv,eV as bw,kA as bx,qx as by,q1 as bz,ze as c,XC as c$,r4 as c0,iV as c1,hP as c2,wu as c3,xV as c4,wn as c5,$c as c6,xa as c7,aW as c8,Vf as c9,DV as cA,Rw as cB,tr as cC,pd as cD,qO as cE,Kh as cF,Gh as cG,Yh as cH,Jh as cI,qh as cJ,sp as cK,wi as cL,xm as cM,NS as cN,CS as cO,Lo as cP,Bt as cQ,ln as cR,yn as cS,bV as cT,HO as cU,O5 as cV,SL as cW,B1 as cX,kV as cY,s2 as cZ,ts as c_,AV as ca,MV as cb,s_ as cc,E_ as cd,s7 as ce,p4 as cf,_V as cg,zP as ch,ju as ci,Sb as cj,cz as ck,qU as cl,Ls as cm,Bo as cn,nV as co,gV as cp,fV as cq,wt as cr,aV as cs,hV as ct,X3 as cu,DP as cv,R_ as cw,h8 as cx,jg as cy,dV as cz,oW as d,Ao as d$,zV as d0,rw as d1,TV as d2,jV as d3,NV as d4,Oc as d5,IV as d6,G1 as d7,LV as d8,tp as d9,v3 as dA,Uc as dB,ZB as dC,Bc as dD,ms as dE,lO as dF,sW as dG,Md as dH,Dd as dI,H4 as dJ,zg as dK,H1 as dL,ta as dM,vt as dN,O2 as dO,Bn as dP,Qi as dQ,zt as dR,ed as dS,Fe as dT,No as dU,zp as dV,jp as dW,$u as dX,Wu as dY,El as dZ,Jp as d_,M4 as da,Oa as db,AT as dc,D4 as dd,np as de,Fm as df,il as dg,sl as dh,Yk as di,ol as dj,zw as dk,fn as dl,rt as dm,WU as dn,PV as dp,FV as dq,yP as dr,YB as ds,uV as dt,rW as du,Ig as dv,GB as dw,me as dx,$1 as dy,_2 as dz,ne as e,Zp as e0,nO as e1,Ot as e2,sd as e3,Ua as e4,Xu as e5,qu as e6,wF as e7,Lg as e8,iW as e9,w4 as eA,c0 as eB,tO as eC,y8 as eD,N4 as eE,PS as eF,Sm as eG,y_ as eH,hd as eI,Bf as eJ,ao as eK,lW as eL,iN as eM,e2 as ea,UV as eb,nM as ec,ML as ed,hf as ee,bP as ef,JB as eg,YA as eh,S4 as ei,a7 as ej,vP as ek,Vx as el,x0 as em,_g as en,lV as eo,pV as ep,cV as eq,V1 as er,Fc as es,Ow as et,UO as eu,IL as ev,gn as ew,jL as ex,rl as ey,Um as ez,K1 as f,Ct as g,$t as h,eO as i,zm as j,yL as k,oV as l,Vt as m,NL as n,Sn as o,Ei as p,Lm as q,Ki as r,Fn as s,RL as t,Ae as u,Gi as v,xb as w,na as x,jo as y,Ba as z};
