746dc5d164fc
android show-mode pairing: kotlin TCP byte pump + UDP beacon, JS Noise NK responder + auth + PAIR_REQUEST handler, START_PAIRING_SERVER wired on Capacitor (v2.17.0)
- time
- 2026-05-01 03:54 UTC · 5 months ago
- machine
- koh2
- parent
- f71a6b2a2091
↓ peach-browser-746dc5d1.tar.gzatlas at this save
files changed27 files
android/app/src/main/java/com/peachpasswords/app/SyncPlugin.kt+209 −0dist-mobile/assets/Export-DSzExNsF.js+9 −0dist-mobile/assets/Health-gAfwVuy9.js+1 −0dist-mobile/assets/Panic-D2FjhS40.js+1 −0dist-mobile/assets/RuneCanvas-BeGgO6iv.js+1 −0dist-mobile/assets/Settings-u6xpUMHK.js+2 −0dist-mobile/assets/SyncPairing-1TEAh1j_.js+1 −0dist-mobile/assets/TrashView-mMBZulR0.js+1 −0dist-mobile/assets/capacitor-pairing-handshake-CrTUHO4K.js+1 −0dist-mobile/assets/capacitor-pairing-server-2RAeT9Ze.js+1 −0dist-mobile/assets/firefox-passkey-DWv1TBph.js+1 −0dist-mobile/assets/index-Dd8_N7xu.js+15 −0dist-mobile/assets/messages-BN1MeRf_.js+2 −0dist-mobile/assets/noise-js-Crku9Lwa.js+1 −0dist-mobile/assets/sync-coordinator-BVwn6wHZ.js+2 −0dist-mobile/assets/sync-lifecycle-kQgcH5o6.js+2 −0dist-mobile/assets/vault-ByqoQOTt.js+3 −0dist-mobile/index.html+1 −1dist-mobile/src/popup/index.html+1 −1manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1src/background/messages.ts+76 −5src/popup/views/SyncPairing.tsx+5 −7src/shared/capacitor-pairing-server.ts+332 −0src/shared/noise-js.test.ts+114 −1src/shared/noise-js.ts+157 −0android/app/src/main/java/com/peachpasswords/app/SyncPlugin.kt+209 −0
@@ -15,8 +15,11 @@1515 import java.net.DatagramPacket1616 import java.net.DatagramSocket1717 import java.net.InetAddress18+import java.net.ServerSocket19+import java.net.Socket1820 import java.net.SocketTimeoutException1921 import java.util.concurrent.ConcurrentHashMap22+import java.util.concurrent.atomic.AtomicBoolean2023 import kotlin.concurrent.thread2124 import org.json.JSONObject2225 @@ -51,6 +54,14 @@5154 private var discoveryListener: NsdManager.DiscoveryListener? = null5255 private val resolvedPeers = ConcurrentHashMap<String, JSObject>()5356 57+ // Show-mode pairing state. Only one pairing session can be active at a58+ // time — the user is at the show-code screen with a single token.59+ private val pairingActive = AtomicBoolean(false)60+ private var pairingServerSocket: ServerSocket? = null61+ private var pairingClientSocket: Socket? = null62+ private var pairingBeaconSocket: DatagramSocket? = null63+ private var pairingBeaconLock: WifiManager.MulticastLock? = null64+5465 @PluginMethod5566 fun startDiscovery(call: PluginCall) {5667 val ctx = context.applicationContext@@ -343,5 +354,203 @@343354 try { lock?.release() } catch (_: Exception) {}344355 }345356 }357+ }358+359+ // ─────────────────────────────────────────────────────────────────360+ // Show-mode pairing — Android hosts a TCP server, desktop initiates.361+ //362+ // Kotlin is a byte pump: ServerSocket → InputStream chunks emitted363+ // verbatim as base64 `pairingChunk` events. JS owns Noise NK responder,364+ // auth proof verification, and PAIR_REQUEST/PAIR_ACCEPT handling.365+ // Outbound bytes from JS arrive via `sendPairingChunk` and are written366+ // straight to the OutputStream — no framing on this side.367+ // ─────────────────────────────────────────────────────────────────368+369+ @PluginMethod370+ fun startPairingTcpServer(call: PluginCall) {371+ if (!pairingActive.compareAndSet(false, true)) {372+ call.reject("pairing_server_already_running")373+ return374+ }375+376+ val server: ServerSocket377+ try {378+ server = ServerSocket(0)379+ } catch (e: Exception) {380+ pairingActive.set(false)381+ call.reject("tcp_bind_failed: ${e.message}")382+ return383+ }384+ pairingServerSocket = server385+ val tcpPort = server.localPort386+387+ thread(name = "peach-pair-tcp-accept") {388+ try {389+ val client = server.accept()390+ pairingClientSocket = client391+ notifyListeners(392+ "pairingConnected",393+ JSObject().put("peerAddr", client.inetAddress?.hostAddress ?: ""),394+ )395+396+ val input = client.getInputStream()397+ val buf = ByteArray(8192)398+ while (!client.isClosed) {399+ val read = try {400+ input.read(buf)401+ } catch (_: Exception) {402+ -1403+ }404+ if (read <= 0) break405+ val slice = buf.copyOfRange(0, read)406+ val b64 = Base64.encodeToString(slice, Base64.NO_WRAP)407+ notifyListeners(408+ "pairingChunk",409+ JSObject().put("dataBase64", b64),410+ )411+ }412+ } catch (e: Exception) {413+ Log.w(TAG, "pairing accept loop ended: ${e.message}")414+ } finally {415+ notifyListeners("pairingEnded", JSObject())416+ try { pairingClientSocket?.close() } catch (_: Exception) {}417+ pairingClientSocket = null418+ }419+ }420+421+ call.resolve(JSObject().put("tcpPort", tcpPort))422+ }423+424+ @PluginMethod425+ fun sendPairingChunk(call: PluginCall) {426+ val b64 = call.getString("dataBase64")427+ if (b64.isNullOrEmpty()) {428+ call.reject("dataBase64 required")429+ return430+ }431+ val client = pairingClientSocket432+ if (client == null || client.isClosed) {433+ call.reject("no_active_pairing_connection")434+ return435+ }436+ try {437+ val bytes = Base64.decode(b64, Base64.DEFAULT)438+ val out = client.getOutputStream()439+ out.write(bytes)440+ out.flush()441+ call.resolve()442+ } catch (e: Exception) {443+ Log.w(TAG, "sendPairingChunk failed: ${e.message}")444+ call.reject("write_failed: ${e.message}")445+ }446+ }447+448+ @PluginMethod449+ fun startPairingBeacon(call: PluginCall) {450+ val token = call.getString("token")451+ val tcpPort = call.getInt("tcpPort") ?: 0452+ val publicKeyHex = call.getString("x25519PublicKey") ?: ""453+ val deviceId = call.getString("deviceId") ?: ""454+ val name = call.getString("name") ?: ""455+ if (token.isNullOrEmpty() || tcpPort <= 0) {456+ call.reject("token + tcpPort required")457+ return458+ }459+460+ val ctx = context.applicationContext461+ val wifi = ctx.getSystemService(Context.WIFI_SERVICE) as? WifiManager462+ val lock = wifi?.createMulticastLock("peach-pair-beacon")?.apply {463+ setReferenceCounted(true)464+ try { acquire() } catch (e: Exception) {465+ Log.w(TAG, "MulticastLock acquire (beacon) failed: ${e.message}")466+ }467+ }468+ pairingBeaconLock = lock469+470+ val socket: DatagramSocket471+ try {472+ socket = DatagramSocket(PAIRING_BEACON_PORT)473+ socket.broadcast = true474+ socket.soTimeout = 1_000475+ } catch (e: Exception) {476+ try { lock?.release() } catch (_: Exception) {}477+ call.reject("udp_bind_failed: ${e.message}")478+ return479+ }480+ pairingBeaconSocket = socket481+482+ // base64url-encode the x25519 pub key (hex → bytes → base64url) so the483+ // wire matches the desktop pairing_beacon.rs response shape.484+ val publicKeyB64Url: String = try {485+ val bytes = ByteArray(publicKeyHex.length / 2)486+ for (i in bytes.indices) {487+ bytes[i] = ((Character.digit(publicKeyHex[i * 2], 16) shl 4) +488+ Character.digit(publicKeyHex[i * 2 + 1], 16)).toByte()489+ }490+ Base64.encodeToString(bytes, Base64.URL_SAFE or Base64.NO_PADDING or Base64.NO_WRAP)491+ } catch (_: Exception) {492+ ""493+ }494+495+ thread(name = "peach-pair-beacon") {496+ val recvBuf = ByteArray(PAIRING_MAX_PACKET_BYTES)497+ try {498+ while (!socket.isClosed) {499+ val packet = DatagramPacket(recvBuf, recvBuf.size)500+ try {501+ socket.receive(packet)502+ } catch (_: SocketTimeoutException) {503+ continue504+ } catch (_: Exception) {505+ break506+ }507+ val payload = String(508+ packet.data, packet.offset, packet.length, Charsets.UTF_8,509+ )510+ val query = try { JSONObject(payload) } catch (_: Exception) { continue }511+ if (query.optString("type") != PAIRING_QUERY_TYPE) continue512+ if (query.optString("token") != token) continue513+514+ val response = JSONObject().apply {515+ put("type", PAIRING_RESPONSE_TYPE)516+ put("token", token)517+ put("tcp_port", tcpPort)518+ put("ws_port", JSONObject.NULL)519+ put("x25519_public_key", publicKeyB64Url)520+ put("device_id", deviceId)521+ put("name", name)522+ }523+ val replyBytes = response.toString().toByteArray(Charsets.UTF_8)524+ val reply = DatagramPacket(525+ replyBytes, replyBytes.size, packet.address, packet.port,526+ )527+ try { socket.send(reply) } catch (e: Exception) {528+ Log.w(TAG, "beacon reply failed: ${e.message}")529+ }530+ }531+ } finally {532+ try { socket.close() } catch (_: Exception) {}533+ }534+ }535+536+ call.resolve()537+ }538+539+ @PluginMethod540+ fun stopPairingServer(call: PluginCall) {541+ try { pairingClientSocket?.close() } catch (_: Exception) {}542+ pairingClientSocket = null543+544+ try { pairingServerSocket?.close() } catch (_: Exception) {}545+ pairingServerSocket = null546+547+ try { pairingBeaconSocket?.close() } catch (_: Exception) {}548+ pairingBeaconSocket = null549+550+ try { pairingBeaconLock?.release() } catch (_: Exception) {}551+ pairingBeaconLock = null552+553+ pairingActive.set(false)554+ call.resolve()346555 }347556 }dist-mobile/assets/Export-DSzExNsF.js+9 −0
@@ -0,0 +1,9 @@1+import{r as e,t}from"./chunk-CilyBKbf.js";import{A as n,G as r,K as i,L as a,M as o,N as s,P as c,R as l,U as u,V as d,W as f,f as p,k as m,m as h}from"./index-Dd8_N7xu.js";import{t as g}from"./RuneCanvas-BeGgO6iv.js";var _=t(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),v=t((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),y=t((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),b=t(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),x=t(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),S=t((e=>{var t=v().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-i;return a.push(6),a.reverse()},e.getPositions=function(t){let n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)e===0&&t===0||e===0&&t===i-1||e===i-1&&t===0||n.push([r[e],r[t]]);return n}})),C=t((e=>{var t=v().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),w=t((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c<n;c++){i=a=0,o=s=null;for(let l=0;l<n;l++){let n=e.get(c,l);n===o?i++:(i>=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t<n-1;t++)for(let i=0;i<n-1;i++){let n=e.get(t,i)+e.get(t,i+1)+e.get(t+1,i)+e.get(t+1,i+1);(n===4||n===0)&&r++}return r*t.N2},e.getPenaltyN3=function(e){let n=e.size,r=0,i=0,a=0;for(let t=0;t<n;t++){i=a=0;for(let o=0;o<n;o++)i=i<<1&2047|e.get(t,o),o>=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t<r;t++)n+=e.data[t];return Math.abs(Math.ceil(n*100/r/5)-10)*t.N4};function n(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw Error(`bad maskPattern:`+t)}}e.applyMask=function(e,t){let r=t.size;for(let i=0;i<r;i++)for(let a=0;a<r;a++)t.isReserved(a,i)||t.xor(a,i,n(e,a,i))},e.getBestMask=function(t,n){let r=Object.keys(e.Patterns).length,i=0,a=1/0;for(let o=0;o<r;o++){n(o),e.applyMask(o,t);let r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),r<a&&(a=r,i=o)}return i}})),T=t((e=>{var t=y(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),E=t((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),D=t((e=>{var t=E();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let a=0;a<n.length;a++)r[i+a]^=t.mul(e[i],n[a]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}})),O=t(((e,t)=>{var n=D();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),k=t((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),A=t((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r2+]))+`;e.KANJI=new RegExp(r,`g`),e.BYTE_KANJI=RegExp(`[^A-Z0-9 $%*+\\-./:]+`,`g`),e.BYTE=new RegExp(i,`g`),e.NUMERIC=new RegExp(t,`g`),e.ALPHANUMERIC=new RegExp(n,`g`);var a=RegExp(`^`+r+`$`),o=RegExp(`^`+t+`$`),s=RegExp(`^[A-Z0-9 $%*+\\-./:]+$`);e.testKanji=function(e){return a.test(e)},e.testNumeric=function(e){return o.test(e)},e.testAlphanumeric=function(e){return s.test(e)}})),j=t((e=>{var t=k(),n=A();e.NUMERIC={id:`Numeric`,bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:`Alphanumeric`,bit:2,ccBits:[9,11,13]},e.BYTE={id:`Byte`,bit:4,ccBits:[8,16,16]},e.KANJI={id:`Kanji`,bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw Error(`Invalid mode: `+e);if(!t.isValid(n))throw Error(`Invalid version: `+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw Error(`Invalid mode`)},e.isValid=function(e){return e&&e.bit&&e.ccBits};function r(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`numeric`:return e.NUMERIC;case`alphanumeric`:return e.ALPHANUMERIC;case`kanji`:return e.KANJI;case`byte`:return e.BYTE;default:throw Error(`Unknown mode: `+t)}}e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch{return n}}})),M=t((e=>{var t=v(),n=T(),r=y(),i=j(),a=k(),o=7973,s=t.getBCHDigit(o);function c(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}function l(e,t){return i.getCharCountIndicator(e,t)+4}function u(e,t){let n=0;return e.forEach(function(e){let r=l(e.mode,t);n+=r+e.getBitsLength()}),n}function d(t,n){for(let r=1;r<=40;r++)if(u(t,r)<=e.getCapacity(r,n,i.MIXED))return r}e.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,o){if(!a.isValid(e))throw Error(`Invalid QR Code version`);o===void 0&&(o=i.BYTE);let s=(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r))*8;if(o===i.MIXED)return s;let c=s-l(o,e);switch(o){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(e,t){let n,i=r.from(t,r.M);if(Array.isArray(e)){if(e.length>1)return d(e,i);if(e.length===0)return 1;n=e[0]}else n=e;return c(n.mode,n.getLength(),i)},e.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error(`Invalid QR Code version`);let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=o<<t.getBCHDigit(n)-s;return e<<12|n}})),ee=t((e=>{var t=v(),n=1335,r=21522,i=t.getBCHDigit(n);e.getEncodedBits=function(e,a){let o=e.bit<<3|a,s=o<<10;for(;t.getBCHDigit(s)-i>=0;)s^=n<<t.getBCHDigit(s)-i;return(o<<10|s)^r}})),N=t(((e,t)=>{var n=j();function r(e){this.mode=n.NUMERIC,this.data=e.toString()}r.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,i*3+1))},t.exports=r})),P=t(((e,t)=>{var n=j(),r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`.split(``);function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=r.indexOf(this.data[t])*45;n+=r.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},t.exports=i})),F=t(((e,t)=>{var n=j();function r(e){this.mode=n.BYTE,typeof e==`string`?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}r.getBitsLength=function(e){return e*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){for(let t=0,n=this.data.length;t<n;t++)e.put(this.data[t],8)},t.exports=r})),te=t(((e,t)=>{var n=j(),r=v();function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t<this.data.length;t++){let n=r.toSJIS(this.data[t]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error(`Invalid SJIS character: `+this.data[t]+`3+Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}},t.exports=i})),ne=t(((e,t)=>{var n={single_source_shortest_paths:function(e,t,r){var i={},a={};a[t]=0;var o=n.PriorityQueue.make();o.push(t,0);for(var s,c,l,u,d,f,p,m,h;!o.empty();)for(l in s=o.pop(),c=s.value,u=s.cost,d=e[c]||{},d)d.hasOwnProperty(l)&&(f=d[l],p=u+f,m=a[l],h=a[l]===void 0,(h||m>p)&&(a[l]=p,o.push(l,p),i[l]=c));if(r!==void 0&&a[r]===void 0){var g=[`Could not find a path from `,t,` to `,r,`.`].join(``);throw Error(g)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,t,r){var i=n.single_source_shortest_paths(e,t,r);return n.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var t=n.PriorityQueue,r={},i;for(i in e||={},t)t.hasOwnProperty(i)&&(r[i]=t[i]);return r.queue=[],r.sorter=e.sorter||t.default_sorter,r},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t!==void 0&&(t.exports=n)})),re=t((e=>{var t=j(),n=N(),r=P(),i=F(),a=te(),o=A(),s=v(),c=ne();function l(e){return unescape(encodeURIComponent(e)).length}function u(e,t,n){let r=[],i;for(;(i=e.exec(n))!==null;)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function d(e){let n=u(o.NUMERIC,t.NUMERIC,e),r=u(o.ALPHANUMERIC,t.ALPHANUMERIC,e),i,a;return s.isKanjiModeEnabled()?(i=u(o.BYTE,t.BYTE,e),a=u(o.KANJI,t.KANJI,e)):(i=u(o.BYTE_KANJI,t.BYTE,e),a=[]),n.concat(r,i,a).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,o){switch(o){case t.NUMERIC:return n.getBitsLength(e);case t.ALPHANUMERIC:return r.getBitsLength(e);case t.KANJI:return a.getBitsLength(e);case t.BYTE:return i.getBitsLength(e)}}function p(e){return e.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function m(e){let n=[];for(let r=0;r<e.length;r++){let i=e[r];switch(i.mode){case t.NUMERIC:n.push([i,{data:i.data,mode:t.ALPHANUMERIC,length:i.length},{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.ALPHANUMERIC:n.push([i,{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.KANJI:n.push([i,{data:i.data,mode:t.BYTE,length:l(i.data)}]);break;case t.BYTE:n.push([{data:i.data,mode:t.BYTE,length:l(i.data)}])}}return n}function h(e,n){let r={},i={start:{}},a=[`start`];for(let o=0;o<e.length;o++){let s=e[o],c=[];for(let e=0;e<s.length;e++){let l=s[e],u=``+o+e;c.push(u),r[u]={node:l,lastCount:0},i[u]={};for(let e=0;e<a.length;e++){let o=a[e];r[o]&&r[o].node.mode===l.mode?(i[o][u]=f(r[o].lastCount+l.length,l.mode)-f(r[o].lastCount,l.mode),r[o].lastCount+=l.length):(r[o]&&(r[o].lastCount=l.length),i[o][u]=f(l.length,l.mode)+4+t.getCharCountIndicator(l.mode,n))}}a=c}for(let e=0;e<a.length;e++)i[a[e]].end=0;return{map:i,table:r}}function g(e,o){let c,l=t.getBestModeForData(e);if(c=t.from(o,l),c!==t.BYTE&&c.bit<l.bit)throw Error(`"`+e+`" cannot be encoded with mode `+t.toString(c)+`.4+ Suggested mode is: `+t.toString(l));switch(c===t.KANJI&&!s.isKanjiModeEnabled()&&(c=t.BYTE),c){case t.NUMERIC:return new n(e);case t.ALPHANUMERIC:return new r(e);case t.KANJI:return new a(e);case t.BYTE:return new i(e)}}e.fromArray=function(e){return e.reduce(function(e,t){return typeof t==`string`?e.push(g(t,null)):t.data&&e.push(g(t.data,t.mode)),e},[])},e.fromString=function(t,n){let r=h(m(d(t,s.isKanjiModeEnabled())),n),i=c.find_path(r.map,`start`,`end`),a=[];for(let e=1;e<i.length-1;e++)a.push(r.table[i[e]].node);return e.fromArray(p(a))},e.rawSplit=function(t){return e.fromArray(d(t,s.isKanjiModeEnabled()))}})),ie=t((e=>{var t=v(),n=y(),r=b(),i=x(),a=S(),o=C(),s=w(),c=T(),l=O(),u=M(),d=ee(),f=j(),p=re();function m(e,t){let n=e.size,r=o.getPositions(t);for(let t=0;t<r.length;t++){let i=r[t][0],a=r[t][1];for(let t=-1;t<=7;t++)if(!(i+t<=-1||n<=i+t))for(let r=-1;r<=7;r++)a+r<=-1||n<=a+r||(t>=0&&t<=6&&(r===0||r===6)||r>=0&&r<=6&&(t===0||t===6)||t>=2&&t<=4&&r>=2&&r<=4?e.set(i+t,a+r,!0,!0):e.set(i+t,a+r,!1,!0))}}function h(e){let t=e.size;for(let n=8;n<t-8;n++){let t=n%2==0;e.set(n,6,t,!0),e.set(6,n,t,!0)}}function g(e,t){let n=a.getPositions(t);for(let t=0;t<n.length;t++){let r=n[t][0],i=n[t][1];for(let t=-2;t<=2;t++)for(let n=-2;n<=2;n++)t===-2||t===2||n===-2||n===2||t===0&&n===0?e.set(r+t,i+n,!0,!0):e.set(r+t,i+n,!1,!0)}}function _(e,t){let n=e.size,r=u.getEncodedBits(t),i,a,o;for(let t=0;t<18;t++)i=Math.floor(t/3),a=t%3+n-8-3,o=(r>>t&1)==1,e.set(i,a,o,!0),e.set(a,i,o,!0)}function E(e,t,n){let r=e.size,i=d.getEncodedBits(t,n),a,o;for(a=0;a<15;a++)o=(i>>a&1)==1,a<6?e.set(a,8,o,!0):a<8?e.set(a+1,8,o,!0):e.set(r-15+a,8,o,!0),a<8?e.set(8,r-a-1,o,!0):a<9?e.set(8,15-a-1+1,o,!0):e.set(8,15-a-1,o,!0);e.set(r-8,8,1,!0)}function D(e,t){let n=e.size,r=-1,i=n-1,a=7,o=0;for(let s=n-1;s>0;s-=2)for(s===6&&s--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,s-n)){let r=!1;o<t.length&&(r=(t[o]>>>a&1)==1),e.set(i,s-n,r),a--,a===-1&&(o++,a=7)}if(i+=r,i<0||n<=i){i-=r,r=-r;break}}}function k(e,n,i){let a=new r;i.forEach(function(t){a.put(t.mode.bit,4),a.put(t.getLength(),f.getCharCountIndicator(t.mode,e)),t.write(a)});let o=(t.getSymbolTotalCodewords(e)-c.getTotalCodewordsCount(e,n))*8;for(a.getLengthInBits()+4<=o&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(0);let s=(o-a.getLengthInBits())/8;for(let e=0;e<s;e++)a.put(e%2?17:236,8);return A(a,e,n)}function A(e,n,r){let i=t.getSymbolTotalCodewords(n),a=i-c.getTotalCodewordsCount(n,r),o=c.getBlocksCount(n,r),s=o-i%o,u=Math.floor(i/o),d=Math.floor(a/o),f=d+1,p=u-d,m=new l(p),h=0,g=Array(o),_=Array(o),v=0,y=new Uint8Array(e.buffer);for(let e=0;e<o;e++){let t=e<s?d:f;g[e]=y.slice(h,h+t),_[e]=m.encode(g[e]),h+=t,v=Math.max(v,t)}let b=new Uint8Array(i),x=0,S,C;for(S=0;S<v;S++)for(C=0;C<o;C++)S<g[C].length&&(b[x++]=g[C][S]);for(S=0;S<p;S++)for(C=0;C<o;C++)b[x++]=_[C][S];return b}function N(e,n,r,a){let o;if(Array.isArray(e))o=p.fromArray(e);else if(typeof e==`string`){let t=n;if(!t){let n=p.rawSplit(e);t=u.getBestVersionForData(n,r)}o=p.fromString(e,t||40)}else throw Error(`Invalid data`);let c=u.getBestVersionForData(o,r);if(!c)throw Error(`The amount of data is too big to be stored in a QR Code`);if(!n)n=c;else if(n<c)throw Error(`5+The chosen QR Code version cannot contain this amount of data.6+Minimum version required to store current data is: `+c+`.7+`);let l=k(n,r,o),d=new i(t.getSymbolSize(n));return m(d,n),h(d),g(d,n),E(d,r,0),n>=7&&_(d,n),D(d,l),isNaN(a)&&(a=s.getBestMask(d,E.bind(null,d,r))),s.applyMask(a,d),E(d,r,a),{modules:d,version:n,errorCorrectionLevel:r,maskPattern:a,segments:o}}e.create=function(e,r){if(e===void 0||e===``)throw Error(`No input text`);let i=n.M,a,o;return r!==void 0&&(i=n.from(r.errorCorrectionLevel,n.M),a=u.from(r.version),o=s.from(r.maskPattern),r.toSJISFunc&&t.setToSJISFunction(r.toSJISFunc)),N(e,a,i,o)}})),I=t((e=>{function t(e){if(typeof e==`number`&&(e=e.toString()),typeof e!=`string`)throw Error(`Color should be defined as hex string`);let t=e.slice().replace(`#`,``).split(``);if(t.length<3||t.length===5||t.length>8)throw Error(`Invalid hex color: `+e);(t.length===3||t.length===4)&&(t=Array.prototype.concat.apply([],t.map(function(e){return[e,e]}))),t.length===6&&t.push(`F`,`F`);let n=parseInt(t.join(``),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:`#`+t.slice(0,6).join(``)}}e.getOptions=function(e){e||={},e.color||={};let n=e.margin===void 0||e.margin===null||e.margin<0?4:e.margin,r=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:r,scale:r?4:i,margin:n,color:{dark:t(e.color.dark||`#000000ff`),light:t(e.color.light||`#ffffffff`)},type:e.type,rendererOpts:e.rendererOpts||{}}},e.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale},e.getImageWidth=function(t,n){let r=e.getScale(t,n);return Math.floor((t+n.margin*2)*r)},e.qrToImageData=function(t,n,r){let i=n.modules.size,a=n.modules.data,o=e.getScale(i,r),s=Math.floor((i+r.margin*2)*o),c=r.margin*o,l=[r.color.light,r.color.dark];for(let e=0;e<s;e++)for(let n=0;n<s;n++){let u=(e*s+n)*4,d=r.color.light;if(e>=c&&n>=c&&e<s-c&&n<s-c){let t=Math.floor((e-c)/o),r=Math.floor((n-c)/o);d=l[+!!a[t*i+r]]}t[u++]=d.r,t[u++]=d.g,t[u++]=d.b,t[u]=d.a}}})),ae=t((e=>{var t=I();function n(e,t,n){e.clearRect(0,0,t.width,t.height),t.style||={},t.height=n,t.width=n,t.style.height=n+`px`,t.style.width=n+`px`}function r(){try{return document.createElement(`canvas`)}catch{throw Error(`You need to specify a canvas element`)}}e.render=function(e,i,a){let o=a,s=i;o===void 0&&(!i||!i.getContext)&&(o=i,i=void 0),i||(s=r()),o=t.getOptions(o);let c=t.getImageWidth(e.modules.size,o),l=s.getContext(`2d`),u=l.createImageData(c,c);return t.qrToImageData(u.data,e,o),n(l,s,c),l.putImageData(u,0,0),s},e.renderToDataURL=function(t,n,r){let i=r;i===void 0&&(!n||!n.getContext)&&(i=n,n=void 0),i||={};let a=e.render(t,n,i),o=i.type||`image/png`,s=i.rendererOpts||{};return a.toDataURL(o,s.quality)}})),L=t((e=>{var t=I();function n(e,t){let n=e.a/255,r=t+`="`+e.hex+`"`;return n<1?r+` `+t+`-opacity="`+n.toFixed(2).slice(1)+`"`:r}function r(e,t,n){let r=e+t;return n!==void 0&&(r+=` `+n),r}function i(e,t,n){let i=``,a=0,o=!1,s=0;for(let c=0;c<e.length;c++){let l=Math.floor(c%t),u=Math.floor(c/t);!l&&!o&&(o=!0),e[c]?(s++,c>0&&l>0&&e[c-1]||(i+=o?r(`M`,l+n,.5+u+n):r(`m`,a,0),a=0,o=!1),l+1<t&&e[c+1]||(i+=r(`h`,s),s=0)):a++}return i}e.render=function(e,r,a){let o=t.getOptions(r),s=e.modules.size,c=e.modules.data,l=s+o.margin*2,u=o.color.light.a?`<path `+n(o.color.light,`fill`)+` d="M0 0h`+l+`v`+l+`H0z"/>`:``,d=`<path `+n(o.color.dark,`stroke`)+` d="`+i(c,s,o.margin)+`"/>`,f=`viewBox="0 0 `+l+` `+l+`"`,p=`<svg xmlns="http://www.w3.org/2000/svg" `+(o.width?`width="`+o.width+`" height="`+o.width+`" `:``)+f+` shape-rendering="crispEdges">`+u+d+`</svg>8+`;return typeof a==`function`&&a(null,p),p}})),R=e(t((e=>{var t=_(),n=ie(),r=ae(),i=L();function a(e,r,i,a,o){let s=[].slice.call(arguments,1),c=s.length,l=typeof s[c-1]==`function`;if(!l&&!t())throw Error(`Callback required as last argument`);if(l){if(c<2)throw Error(`Too few arguments provided`);c===2?(o=i,i=r,r=a=void 0):c===3&&(r.getContext&&o===void 0?(o=a,a=void 0):(o=a,a=i,i=r,r=void 0))}else{if(c<1)throw Error(`Too few arguments provided`);return c===1?(i=r,r=a=void 0):c===2&&!r.getContext&&(a=i,i=r,r=void 0),new Promise(function(t,o){try{t(e(n.create(i,a),r,a))}catch(e){o(e)}})}try{let t=n.create(i,a);o(null,e(t,r,a))}catch(e){o(e)}}e.create=n.create,e.toCanvas=a.bind(null,r.render),e.toDataURL=a.bind(null,r.renderToDataURL),e.toString=a.bind(null,function(e,t,n){return i.render(e,n)})}))(),1);async function z(e,t={}){if(e.length>2953)throw Error(`QR_PAYLOAD_TOO_LARGE`);let n=document.createElement(`canvas`);return await R.toCanvas(n,[{data:e,mode:`byte`}],{errorCorrectionLevel:`L`,margin:t.margin??4,scale:t.scale??6,color:{dark:`#000000`,light:`#ffffff`}}),n}async function B(e,t={}){if(e.length>2953)throw Error(`QR_PAYLOAD_TOO_LARGE`);return R.toDataURL([{data:e,mode:`byte`}],{errorCorrectionLevel:`L`,margin:t.margin??4,scale:t.scale??6,color:{dark:`#000000`,light:`#ffffff`}})}var V=a(`<div class="peach-overlay-view ov-enter-right"style=display:flex>`),H=a(`<div class="peach-settings-body peach-export-menu"><div class="peach-settings-group peach-export-card peach-export-card--primary"><p class=peach-settings-label>peachscript</p><p class=peach-export-card-copy>Your vault as a string of Peach symbols you can paste into Peach on another device. Designed for Peach-to-Peach transfer.</p><button class="peach-btn peach-btn--subtle peach-btn--sm">Create PeachScript →</button></div><div class="peach-settings-group peach-export-card"><p class=peach-settings-label>print backup</p><p class=peach-export-card-copy>Save a Mayan code you can print and store. Scan it with Peach on any device to restore.</p><button class="peach-btn peach-btn--subtle peach-btn--sm">Save Mayan code →</button></div><div class="peach-settings-group peach-export-card"><p class=peach-settings-label>CSV (leaving peach)</p><p class=peach-export-card-copy>Plain-text export for moving into another password manager. Anyone with the file can read your passwords.</p><button class="peach-btn peach-btn--ghost peach-btn--sm">Export as CSV →`),U=a(`<div class="peach-settings-group peach-export-card peach-export-card--primary peach-export-result-group"><p class=peach-settings-label>peachscript</p><p class=peach-export-card-copy style="margin:0 0 8px"> entr</p><div style=display:flex;gap:8px><button class="peach-btn peach-btn--subtle peach-btn--sm"style=flex:1></button><button class="peach-btn peach-btn--subtle peach-btn--sm"style=flex:1>Download .peach</button></div><p class=peach-export-card-copy style=margin-top:8px>Paste the script — or import the .peach file — into Peach on your other device to restore your vault. Won't work anywhere else.`),W=a(`<div class=peach-settings-group><div class=peach-restore-error>`),G=a(`<div class=peach-settings-body>`),K=a(`<p class=peach-export-note style=color:var(--peach-t2)>Passwords don't match`),q=a(`<p class=peach-export-note style=color:var(--peach-t2)>At least 8 characters`),J=a(`<div class="peach-settings-group peach-export-card peach-export-card--primary peach-export-pass-group"><p class=peach-settings-label>backup password</p><p class=peach-export-card-copy>Choose a password to lock this PeachScript. You'll need it to restore on another device.</p><div class="peach-settings-stack peach-export-password-stack"><input class=peach-settings-input type=password placeholder="backup password (min 8 chars)"><input class=peach-settings-input type=password placeholder="confirm backup password"></div><button class="peach-btn peach-btn--subtle peach-btn--sm">`),oe=a(`<div class="peach-settings-group peach-export-card peach-export-card--primary"><div class=peach-qr-canvas-wrap></div><p class=peach-export-card-copy style=text-align:center> entr<!> · </p><button class="peach-btn peach-btn--subtle peach-btn--sm">Save PNG</button><p class=peach-export-card-copy style=margin-top:8px>Print this and keep it somewhere safe. Scan it with Peach to restore your vault on any device.`),se=a(`<div class="peach-settings-group peach-export-card peach-export-card--primary"><p class=peach-settings-label>backup password</p><p class=peach-export-card-copy>Set a password to lock this Mayan code backup. You'll need it to restore — without it the printed code is unreadable.</p><div class="peach-settings-stack peach-export-password-stack"><input class=peach-settings-input type=password placeholder="backup password (min 8 chars)"><input class=peach-settings-input type=password placeholder="confirm backup password"></div><button class="peach-btn peach-btn--subtle peach-btn--sm">`),ce=a(`<button class="peach-btn peach-btn--ghost peach-btn--sm">I understand — continue`),le=a(`<button class="peach-btn peach-btn--subtle peach-btn--sm">`),ue=a(`<div class=peach-settings-group><div class=peach-export-success><span class=peach-export-success-check>✓</span><span>`),de=a(`<div class=peach-settings-body><div class="peach-settings-group peach-export-card"><div class=peach-csv-warning>This export is unencrypted. Anyone who gets this file can read your passwords. Only use this to move to another password manager — delete it once the import is done.`),fe=a(`<div class=peach-overlay-header><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label=Back><svg width=7 height=12 viewBox="0 0 7 12"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round><path d="M6 1L1 6L6 11"></path></svg></button><span class=peach-overlay-title></span><div class=peach-overlay-spacer>`),Y=8;function pe(e){let[t,n]=i(`menu`);return(()=>{var r=V();return s(r,u(d,{get when(){return t()===`menu`},get children(){return u(me,{get onBack(){return e.onBack},onPick:e=>n(e)})}}),null),s(r,u(d,{get when(){return t()===`peachscript`},get children(){return u(he,{onBack:()=>n(`menu`)})}}),null),s(r,u(d,{get when(){return t()===`qr`},get children(){return u(ge,{onBack:()=>n(`menu`)})}}),null),s(r,u(d,{get when(){return t()===`csv`},get children(){return u(X,{onBack:()=>n(`menu`)})}}),null),r})()}function me(e){return[u(Z,{title:`export`,get onBack(){return e.onBack}}),(()=>{var t=H(),n=t.firstChild,r=n.firstChild.nextSibling.nextSibling,i=n.nextSibling,a=i.firstChild.nextSibling.nextSibling,o=i.nextSibling.firstChild.nextSibling.nextSibling;return r.$$click=()=>e.onPick(`peachscript`),a.$$click=()=>e.onPick(`qr`),o.$$click=()=>e.onPick(`csv`),t})()]}function he(e){let[t,n]=i(``),[a,o]=i(``),[p,m]=i(!1),[_,v]=i(null),[y,b]=i(null),[x,S]=i(0),[C,w]=i({cards:0,passkeys:0,notes:0,logins:0}),[T,E]=i(!1),D=f(()=>t().length>=Y&&t()===a());async function O(){if(b(null),v(null),E(!1),!D()){b(`Backup passwords don't match or are too short.`);return}m(!0);try{let e=await Q(t());S(e.entryCount),w(e.stats),v(h(e.bytes))}catch(e){b(e instanceof Error?e.message:String(e))}finally{m(!1)}}async function k(){let e=_();if(e)try{await navigator.clipboard.writeText(e),E(!0),setTimeout(()=>E(!1),2e3)}catch(e){b(e instanceof Error?e.message:`Couldn't copy to clipboard.`)}}function A(){let e=_();if(!e)return;let t=new Blob([e],{type:`application/x-peach;charset=utf-8`}),n=URL.createObjectURL(t),r=new Date().toISOString().slice(0,10),i=document.createElement(`a`);i.href=n,i.download=`peach-backup-${r}.peach`,document.body.appendChild(i),i.click(),document.body.removeChild(i),setTimeout(()=>URL.revokeObjectURL(n),5e3)}return[u(Z,{title:`peachscript`,get onBack(){return e.onBack}}),(()=>{var e=G();return s(e,u(d,{get when(){return _()},get fallback(){return(()=>{var e=J(),i=e.firstChild.nextSibling.nextSibling,f=i.firstChild,m=f.nextSibling,h=i.nextSibling;return f.$$keydown=e=>{e.key===`Enter`&&D()&&!p()&&(e.preventDefault(),O())},f.$$input=e=>n(e.target.value),l(e=>queueMicrotask(()=>e.focus()),f),m.$$keydown=e=>{e.key===`Enter`&&D()&&!p()&&(e.preventDefault(),O())},m.$$input=e=>o(e.target.value),s(i,u(d,{get when(){return c(()=>a().length>0)()&&t()!==a()},get children(){return K()}}),null),s(i,u(d,{get when(){return c(()=>t().length>0)()&&t().length<Y},get children(){return q()}}),null),h.$$click=()=>void O(),s(h,()=>p()?`encoding…`:`Generate PeachScript`),r(()=>h.disabled=p()||!D()),r(()=>f.value=t()),r(()=>m.value=a()),e})()},get children(){var e=U(),t=e.firstChild.nextSibling,n=t.firstChild,r=t.nextSibling.firstChild,i=r.nextSibling;return s(e,u(g,{get runeString(){return _()??``},width:288,height:240}),t),s(t,x,n),s(t,()=>x()===1?`y`:`ies`,null),s(t,(()=>{var e=c(()=>C().cards>0);return()=>e()?` · ${C().cards} card${C().cards===1?``:`s`}`:``})(),null),s(t,(()=>{var e=c(()=>C().passkeys>0);return()=>e()?` · ${C().passkeys} passkey${C().passkeys===1?``:`s`}`:``})(),null),s(t,(()=>{var e=c(()=>C().notes>0);return()=>e()?` · ${C().notes} note${C().notes===1?``:`s`}`:``})(),null),r.$$click=()=>void k(),s(r,()=>T()?`copied ✓`:`Copy`),i.$$click=A,e}}),null),s(e,u(d,{get when(){return y()},get children(){var e=W(),t=e.firstChild;return s(t,y),e}}),null),e})()]}function ge(e){let[t,n]=i(``),[a,o]=i(``),[c,p]=i(!1),[m,h]=i(null),[g,_]=i(null),[v,y]=i(0),b,x=f(()=>t().length>=Y&&t()===a());async function S(){if(_(null),h(null),!x()){_(`Backup passwords don't match or are too short.`);return}p(!0);try{let e=await Q(t());if(e.bytes.length>2953){_(`This vault is too large for a Mayan code backup (${e.bytes.length} bytes). Use PeachScript instead.`);return}y(e.entryCount);let n=await z(e.bytes),r=await B(e.bytes);b&&(b.innerHTML=``,b.appendChild(n)),h(r)}catch(e){_(e instanceof Error?e.message:String(e))}finally{p(!1)}}function C(){let e=m();if(!e)return;let t=document.createElement(`a`);t.href=e,t.download=`peach-mayan-backup-${$()}.png`,document.body.appendChild(t),t.click(),document.body.removeChild(t)}return[u(Z,{title:`print backup`,get onBack(){return e.onBack}}),(()=>{var e=G();return s(e,u(d,{get when(){return m()},get fallback(){return(()=>{var e=se(),i=e.firstChild.nextSibling.nextSibling,u=i.firstChild,d=u.nextSibling,f=i.nextSibling;return u.$$keydown=e=>{e.key===`Enter`&&x()&&!c()&&(e.preventDefault(),S())},u.$$input=e=>n(e.target.value),l(e=>queueMicrotask(()=>e.focus()),u),d.$$keydown=e=>{e.key===`Enter`&&x()&&!c()&&(e.preventDefault(),S())},d.$$input=e=>o(e.target.value),f.$$click=()=>void S(),s(f,()=>c()?`encoding…`:`Generate Mayan code`),r(()=>f.disabled=c()||!x()),r(()=>u.value=t()),r(()=>d.value=a()),e})()},get children(){var e=oe(),t=e.firstChild,n=t.nextSibling,r=n.firstChild,i=r.nextSibling;i.nextSibling;var a=n.nextSibling,o=b;return typeof o==`function`?l(o,t):b=t,s(n,v,r),s(n,()=>v()===1?`y`:`ies`,i),s(n,ye,null),a.$$click=C,e}}),null),s(e,u(d,{get when(){return g()},get children(){var e=W(),t=e.firstChild;return s(t,g),e}}),null),e})()]}function X(e){let[t,n]=i(!1),[a,o]=i(!1),[c,l]=i(null),[f,p]=i(null);async function h(){l(null),p(null),o(!0);try{let e=(await m({type:`GET_ENTRIES`})).data??[],t=e.filter(e=>e.deletedAt===void 0).filter(e=>!(e.passkey&&!e.password)).map(e=>e.passkey?{...e,passkey:void 0}:e),n=e.filter(e=>e.deletedAt===void 0&&e.passkey).length;if(t.length===0){l(`Your vault has no entries to export.`);return}let r=ve(t),i=`peach-export-${$()}.csv`;be(r,`text/csv`,i);let a=n>0?` ${n} passkey${n===1?``:`s`} excluded — passkeys can't be represented in CSV.`:``;p(`Exported ${t.length} entr${t.length===1?`y`:`ies`} to ${i}.${a}`)}catch(e){l(e instanceof Error?e.message:String(e))}finally{o(!1)}}return[u(Z,{title:`export as CSV`,get onBack(){return e.onBack}}),(()=>{var e=de(),i=e.firstChild;return i.firstChild,s(i,u(d,{get when(){return!t()},get children(){var e=ce();return e.$$click=()=>n(!0),e}}),null),s(i,u(d,{get when(){return t()},get children(){var e=le();return e.$$click=()=>void h(),s(e,()=>a()?`exporting…`:`Download CSV`),r(()=>e.disabled=a()),e}}),null),s(e,u(d,{get when(){return c()},get children(){var e=W(),t=e.firstChild;return s(t,c),e}}),null),s(e,u(d,{get when(){return f()},get children(){var e=ue(),t=e.firstChild.firstChild.nextSibling;return s(t,f),e}}),null),e})()]}function Z(e){return(()=>{var t=fe(),r=t.firstChild,i=r.nextSibling;return n(r,`click`,e.onBack,!0),s(i,()=>e.title),t})()}async function Q(e){let t=(await m({type:`GET_ENTRIES`})).data??[],n=(await m({type:`GET_SETTINGS`})).data??{},r;try{let e=(await m({type:`GET_LICENSE`})).data;if(e?.valid&&e.plan===`pro`){let t=(await m({type:`GET_LICENSE_KEY`})).data;t&&(r={key:t,...e.issued?{activatedAt:new Date(e.issued).getTime()}:{}})}}catch{}let i=_e(t);return{bytes:await p({entries:t,settings:n,license:r,passphrase:e}),entryCount:t.length,stats:i}}function _e(e){let t=0,n=0,r=0,i=0;for(let a of e)if(!a.deletedAt){if(a.passkey){n++,a.type===`login`&&a.password&&i++;continue}a.type===`card`?t++:a.type===`note`?r++:i++}return{cards:t,passkeys:n,notes:r,logins:i}}function ve(e){let t=[`name`,`url`,`username`,`password`,`notes`,`type`,`tags`,`totp`],n=e.map(e=>{let t=e.type===`note`?`note`:e.type===`card`?`card`:`login`,n=e.type===`card`?e.cardholderName??``:e.username??``,r=e.type===`card`?e.cardNumber??``:e.password??``;return[e.title,e.url??``,n,r,e.notes??``,t,Array.isArray(e.tags)?e.tags.join(`|`):``,e.totp??``].map(e=>`"${String(e).replace(/\r?\n/g,` `).replace(/"/g,`""`)}"`).join(`,`)});return[t.join(`,`),...n].join(`9+`)}function $(){return new Date().toISOString().split(`T`)[0]}function ye(){let e=new Date;return`${[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`][e.getMonth()]} ${e.getFullYear()}`}function be(e,t,n){let r=URL.createObjectURL(new Blob([e],{type:t})),i=document.createElement(`a`);i.href=r,i.download=n,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)}o([`click`,`input`,`keydown`]);export{pe as ExportView};\ No newline at end of filedist-mobile/assets/Health-gAfwVuy9.js+1 −0
@@ -0,0 +1 @@1+import{r as e}from"./chunk-CilyBKbf.js";import{A as t,G as n,I as r,J as i,K as a,L as o,M as s,N as c,P as l,U as u,V as d,W as f,c as p,k as m,u as h,z as g}from"./index-Dd8_N7xu.js";import{t as _}from"./main-BnSAnK-x.js";var v=e(_(),1),y=o(`<div class=peach-health-loading-screen aria-busy=true aria-live=polite><div class=peach-health-loading-glyph aria-hidden=true><svg width=32 height=32 viewBox="0 0 32 32"fill=none><circle cx=16 cy=16 r=13 stroke=currentColor stroke-width=1.2 opacity=0.18></circle><path d="M16 3a13 13 0 0 1 13 13"stroke=currentColor stroke-width=1.6 stroke-linecap=round><animateTransform attributeName=transform type=rotate from="0 16 16"to="360 16 16"dur=1.2s repeatCount=indefinite></animateTransform></path></svg></div><h2 class=peach-health-loading-title>Checking your vault's health</h2><p class=peach-health-loading-copy>Scanning for reused, breached, weak, and aging credentials. Just a moment…</p><div class=peach-health-loading-track aria-hidden=true><div class=peach-health-loading-fill>`),b=o(`<div class=peach-health-pro-queue><div class=peach-health-pro-queue-head><span class=peach-health-pro-queue-title>Remediation queue</span><span class=peach-health-pro-queue-score>Vault score <!>/100`),x=o(`<span class=peach-health-summary-warn> <!> attention`),S=o(`<div class="peach-overlay-view ov-enter-right"style=display:flex><div class=peach-overlay-header><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label=Back><svg width=7 height=12 viewBox="0 0 7 12"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round><path d="M6 1L1 6L6 11"></path></svg></button><span class=peach-overlay-title>vault health</span><div class=peach-overlay-spacer></div></div><div class=peach-health-body><div class=peach-health-summary></div><div class=peach-health-check-row><button class="peach-btn peach-btn--accent peach-btn--sm peach-health-check-btn"><svg width=10 height=12 viewBox="0 0 10 12"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round style=margin-right:5px><path d="M9 6L5 10L1 6"></path><path d="M5 10V2"></path></svg></button></div><div class=peach-health-sections>`),ee=o(`<div class=peach-health-pro-row><div class=peach-health-pro-row-info><span class=peach-health-pro-row-name></span><span class=peach-health-pro-row-meta></span><div class=peach-health-pro-bar aria-hidden=true><div class=peach-health-pro-bar-fill></div></div></div><button class="peach-btn peach-btn--accent peach-btn--sm">`),te=o(`<span class=peach-health-summary-ok>Your vault looks healthy.`),C=o(`<div class=peach-health-row><div class=peach-health-row-info><span class=peach-health-row-name></span><span class=peach-health-row-meta style=color:var(--peach-breach)></span></div><button class="peach-btn peach-btn--ghost peach-btn--sm peach-health-fix-btn">Fix<svg width=6 height=10 viewBox="0 0 6 10"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round style=margin-left:4px><path d="M1 5L5 9M5 9L5 5M5 9L1 9">`),w=o(`<div class=peach-health-loading>Computing...`),T=o(`<div class=peach-health-row><div class=peach-health-row-info><span class=peach-health-row-name>Used in <!> places</span><span class=peach-health-row-meta></span></div><button class="peach-btn peach-btn--ghost peach-btn--sm peach-health-fix-btn">View<svg width=6 height=10 viewBox="0 0 6 10"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round style=margin-left:4px><path d="M1 5L5 9M5 9L5 5M5 9L1 9">`),E=o(`<div class=peach-health-row><div class=peach-health-row-info><span class=peach-health-row-name></span><span class=peach-health-row-meta>score: <!> (<!>)</span></div><button class="peach-btn peach-btn--ghost peach-btn--sm peach-health-fix-btn">Fix<svg width=6 height=10 viewBox="0 0 6 10"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round style=margin-left:4px><path d="M1 5L5 9M5 9L5 5M5 9L1 9">`),D=o(`<div class=peach-health-row><div class=peach-health-row-info><span class=peach-health-row-name></span><span class=peach-health-row-meta>last changed </span></div><button class="peach-btn peach-btn--ghost peach-btn--sm peach-health-fix-btn">Fix<svg width=6 height=10 viewBox="0 0 6 10"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round style=margin-left:4px><path d="M1 5L5 9M5 9L5 5M5 9L1 9">`),O=o(`<div class=peach-health-row><div class=peach-health-row-info><span class=peach-health-row-name></span><span class=peach-health-row-meta> • <!> • </span></div><button class="peach-btn peach-btn--ghost peach-btn--sm peach-health-fix-btn">View<svg width=6 height=10 viewBox="0 0 6 10"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round style=margin-left:4px><path d="M1 5L5 9M5 9L5 5M5 9L1 9">`),k=o(`<div class=peach-health-section-body>`),A=o(`<div class=peach-health-section><button class=peach-health-section-header><div class=peach-health-section-title-row><span class=peach-health-count-badge></span><span class=peach-health-section-title></span></div><svg class=peach-health-chevron width=10 height=6 viewBox="0 0 10 6"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round><path d="M1 1L5 5L9 1">`),j=o(`<div class=peach-health-empty>`);function M(e){let t=new TextEncoder().encode(e);return crypto.subtle.digest(`SHA-256`,t).then(e=>Array.from(new Uint8Array(e)).map(e=>e.toString(16).padStart(2,`0`)).join(``))}function N(e){return e>=1e3?`${(e/1e3).toFixed(e%1e3==0?0:1)}k exposures`:`${e.toLocaleString()} ${e===1?`exposure`:`exposures`}`}function P(e){let t=Math.floor(e/1e3);if(t<60)return`just now`;let n=Math.floor(t/60);if(n<60)return`${n} minute${n===1?``:`s`} ago`;let r=Math.floor(n/60);if(r<24)return`${r} hour${r===1?``:`s`} ago`;let i=Math.floor(r/24);if(i<30)return`${i} day${i===1?``:`s`} ago`;let a=Math.floor(i/30);if(a<12)return`${a} month${a===1?``:`s`} ago`;let o=Math.floor(a/12);return`${o} year${o===1?``:`s`} ago`}function ne(e){return[`very weak`,`weak`,`fair`,`good`,`strong`][e]??`unknown`}function F(e){let[o,s]=a(!1),[_,k]=a([]),[A,j]=a(!0),[F,L]=a({breached:!0,reused:!0,weak:!0,old:!0,passkeys:!0}),[R,z]=a(null),[B,V]=a(null),[H,U]=a(!1),[W,G]=a(null);i(async()=>{if(e.isPro){U(!0);try{let e=await m({type:`GET_ADVANCED_HEALTH_REPORT`});e.ok&&V(e.data??null)}finally{U(!1)}}});async function K(e){G(e);let t=await m({type:`INITIATE_PASSWORD_CHANGE`,payload:{id:e}});G(null),t.ok&&window.close()}let q=365*24*60*60*1e3,J=f(()=>e.entries.filter(e=>(e.breach??0)>0).sort((e,t)=>(t.breach??0)-(e.breach??0))),Y=f(()=>{let t=e.entries.filter(e=>e.type!==`note`&&e.password).map(e=>({entry:e,score:(0,v.default)(e.password).score})).filter(({score:e})=>e<=1);return t.sort((e,t)=>e.score-t.score),t}),X=f(()=>e.entries.filter(e=>e.type===`login`&&e.modifiedAt<Date.now()-q).sort((e,t)=>e.modifiedAt-t.modifiedAt)),Z=f(()=>e.entries.filter(e=>e.passkey!==void 0).map(e=>{let t=e.passkey,n=t.lastUsedAt??t.createdAt??e.createdAt,r=Date.now()-n;return{entry:e,lastActivity:n,status:t.signCount===0&&r>=720*60*60*1e3?`Unused`:r>=q?`Old`:null}}).filter(e=>e.status!==null).sort((e,t)=>e.lastActivity-t.lastActivity));async function re(){let t=e.entries.filter(e=>e.type!==`note`&&e.password);if(t.length===0){k([]),j(!1);return}let n=await Promise.all(t.map(async e=>({entry:e,hash:await M(e.password)}))),r=new Map;for(let{entry:e,hash:t}of n){let n=r.get(t)??[];n.push(e),r.set(t,n)}let i=[];r.forEach((e,t)=>{e.length>=2&&i.push({hash:t,entries:e})}),i.sort((e,t)=>t.entries.length-e.entries.length),k(i),j(!1)}re();function Q(e){L(t=>({...t,[e]:!t[e]}))}async function ie(){s(!0);let t=await m({type:`CHECK_ALL_BREACHES`});s(!1),t.ok&&e.onRefresh()}let $=f(()=>J().length+_().length+Y().length+X().length+Z().length);return[(()=>{var i=S(),a=i.firstChild,s=a.firstChild,f=a.nextSibling,p=f.firstChild,m=p.nextSibling,v=m.firstChild;v.firstChild;var k=m.nextSibling;return t(s,`click`,e.onBack,!0),c(f,u(d,{get when(){return l(()=>!!e.isPro)()&&H()},get children(){return y()}}),p),c(f,u(d,{get when(){return l(()=>!!(e.isPro&&!H()&&B()))()&&B().remediation.length>0},get children(){var e=b(),t=e.firstChild.firstChild.nextSibling,i=t.firstChild.nextSibling;return i.nextSibling,c(t,()=>B().vaultScore,i),c(e,u(g,{get each(){return B().remediation.slice(0,8)},children:e=>(()=>{var t=ee(),i=t.firstChild,a=i.firstChild,o=a.nextSibling,s=o.nextSibling.firstChild,l=i.nextSibling;return c(a,()=>e.title),c(o,()=>e.reasons.join(` · `)),l.$$click=()=>void K(e.id),c(l,()=>W()===e.id?`opening…`:`Change this password`),n(t=>{var n=`${Math.min(e.score,100)}%`,i=W()===e.id;return n!==t.e&&r(s,`width`,t.e=n),i!==t.t&&(l.disabled=t.t=i),t},{e:void 0,t:void 0}),t})()}),null),e}}),p),c(p,u(d,{get when(){return $()>0},get fallback(){return te()},get children(){var e=x(),t=e.firstChild,n=t.nextSibling;return n.nextSibling,c(e,$,t),c(e,()=>$()===1?`entry needs`:`entries need`,n),e}})),v.$$click=()=>void ie(),c(v,()=>o()?`checking...`:`Check all breaches now`,null),c(k,u(I,{title:`Breached`,get count(){return J().length},get expanded(){return F().breached},onToggle:()=>Q(`breached`),emptyMessage:`No breached entries`,get children(){return u(g,{get each(){return J()},children:t=>(()=>{var n=C(),r=n.firstChild,i=r.firstChild,a=i.nextSibling,o=r.nextSibling;return c(i,()=>t.title),c(a,()=>N(t.breach??0)),o.$$click=()=>e.onFixEntry(t),n})()})}}),null),c(k,u(I,{title:`Reused`,get count(){return _().length},get expanded(){return F().reused},onToggle:()=>Q(`reused`),get loading(){return A()},emptyMessage:`No reused passwords`,get children(){return u(d,{get when(){return!A()},get fallback(){return w()},get children(){return u(g,{get each(){return _()},children:e=>(()=>{var t=T(),n=t.firstChild,r=n.firstChild,i=r.firstChild.nextSibling;i.nextSibling;var a=r.nextSibling,o=n.nextSibling;return c(r,()=>e.entries.length,i),c(a,()=>e.entries.map(e=>e.title).join(`, `)),o.$$click=()=>z(e.entries),t})()})}})}}),null),c(k,u(I,{title:`Weak`,get count(){return Y().length},get expanded(){return F().weak},onToggle:()=>Q(`weak`),emptyMessage:`No weak passwords`,get children(){return u(g,{get each(){return Y()},children:({entry:t,score:n})=>(()=>{var r=E(),i=r.firstChild,a=i.firstChild,o=a.nextSibling,s=o.firstChild.nextSibling,u=s.nextSibling.nextSibling;u.nextSibling;var d=i.nextSibling;return c(a,(()=>{var e=l(()=>!!t.url);return()=>e()?h(t.url):t.title})()),c(o,n,s),c(o,()=>ne(n),u),d.$$click=()=>e.onFixEntry(t),r})()})}}),null),c(k,u(I,{title:`Old`,get count(){return X().length},get expanded(){return F().old},onToggle:()=>Q(`old`),emptyMessage:`No old entries`,get children(){return u(g,{get each(){return X()},children:t=>{let n=Date.now()-t.modifiedAt;return(()=>{var r=D(),i=r.firstChild,a=i.firstChild,o=a.nextSibling;o.firstChild;var s=i.nextSibling;return c(a,(()=>{var e=l(()=>!!t.url);return()=>e()?h(t.url):t.title})()),c(o,()=>P(n),null),s.$$click=()=>e.onFixEntry(t),r})()}})}}),null),c(k,u(I,{title:`Passkeys`,get count(){return Z().length},get expanded(){return F().passkeys},onToggle:()=>Q(`passkeys`),emptyMessage:`No stale passkeys`,get children(){return u(g,{get each(){return Z()},children:t=>(()=>{var n=O(),r=n.firstChild,i=r.firstChild,a=i.nextSibling,o=a.firstChild,s=o.nextSibling;s.nextSibling;var l=r.nextSibling;return c(i,()=>t.entry.title),c(a,()=>t.status,o),c(a,()=>t.entry.rpId,s),c(a,()=>P(Date.now()-t.lastActivity),null),l.$$click=()=>e.onFixEntry(t.entry),n})()})}}),null),n(()=>v.disabled=o()),i})(),u(d,{get when(){return R()},get children(){return u(p,{get entries(){return R()},selectedEntryId:void 0,sortOrder:`az`,onSortOrderChange:()=>{},onSelectEntry:t=>{z(null),e.onFixEntry(t)},onAdd:()=>{},onClose:()=>z(null)})}})]}function I(e){return(()=>{var r=A(),i=r.firstChild,a=i.firstChild,o=a.firstChild,s=o.nextSibling,f=a.nextSibling;return t(i,`click`,e.onToggle,!0),c(o,()=>e.count),c(s,()=>e.title),c(r,u(d,{get when(){return e.expanded},get children(){var t=k();return c(t,u(d,{get when(){return l(()=>!e.loading)()&&e.count>0},get fallback(){return u(d,{get when(){return!e.loading},get children(){var t=j();return c(t,()=>e.emptyMessage),t}})},get children(){return e.children}})),t}}),null),n(()=>f.classList.toggle(`is-expanded`,!!e.expanded)),r})()}s([`click`]);export{F as HealthView};\ No newline at end of filedist-mobile/assets/Panic-D2FjhS40.js+1 −0
@@ -0,0 +1 @@1+import{A as e,B as t,F as n,G as r,H as i,K as a,L as o,M as s,N as c,U as l,V as u,k as d}from"./index-Dd8_N7xu.js";import{t as f}from"./RuneCanvas-BeGgO6iv.js";var p=o(`<div class=peach-overlay-header><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label=Back><svg width=7 height=12 viewBox="0 0 7 12"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round><path d="M6 1L1 6L6 11"></path></svg></button><span class=peach-overlay-title></span><div class=peach-overlay-spacer>`),m=o(`<div class=peach-panic><h2 class=peach-panic-title>Before you destroy your vault</h2><p class=peach-panic-body>Once destroyed, your vault cannot be recovered. Ever. There is no undo, no support ticket, no way back.</p><p class=peach-panic-body>If you haven't already, export your vault now. It takes ten seconds and you'll be glad you did.</p><button class="peach-panic-button peach-panic-button--primary">Export my vault first</button><div class=peach-panic-divider></div><p class=peach-panic-body>I have already exported my vault or I don't want to.</p><button class=peach-panic-link>Continue to destruction →`),h=o(`<div class="peach-panic peach-panic-step2"><span class=peach-panic-icon aria-hidden=true>⚠</span><h2 class="peach-panic-title peach-panic-title--severe">This will permanently destroy your vault.</h2><p class="peach-panic-body peach-panic-body--severe">Every password, card, passkey, note, and setting will be wiped from this device. This cannot be undone.</p><p class=peach-panic-confirm-label>Type DESTROY to confirm:</p><input class=peach-panic-confirm-input type=text autocomplete=off autocapitalize=off aria-label="Type DESTROY to confirm"><div class=peach-panic-actions><button class="peach-panic-button peach-panic-button--danger">Yes, destroy my vault</button><button class="peach-panic-button peach-panic-button--ghost">Cancel — keep my vault`),g=o(`<button class="peach-panic-button peach-panic-button--ghost">No — take me back`),_=o(`<div class="peach-panic peach-panic-step3"><div class=peach-panic-rune-bg aria-hidden=true></div><div class=peach-panic-bar>THIS IS YOUR LAST CHANCE</div><p class="peach-panic-body peach-panic-body--final-intro">Your vault is about to be permanently destroyed.</p><p class="peach-panic-body peach-panic-body--final">There is no recovery.<br>There is no support.<br>There is no undo.</p><div class=peach-panic-divider></div><div class=peach-panic-actions><button class=peach-panic-final-button>`),v=o(`<div class="peach-overlay-view ov-enter-right"style=display:flex;flex-direction:column>`),y=Array.from({length:80},(e,t)=>String.fromCodePoint(57344+(t*19+7)%256)).join(``);function b(t){return(()=>{var n=p(),r=n.firstChild,i=r.nextSibling;return e(r,`click`,t.onBack,!0),c(i,()=>t.title),n})()}function x(e){let[o,s]=a(1),[p,x]=a(``),[S,C]=a(!1),w=()=>p()===`DESTROY`;async function T(){if(!S()){if(C(!0),!(await d({type:`DESTROY_VAULT`}))?.ok){C(!1);return}await e.onDestroyed()}}return(()=>{var a=v();return c(a,l(i,{get children(){return[l(t,{get when(){return o()===1},get children(){return[l(b,{title:`danger zone`,get onBack(){return e.onCancel}}),(()=>{var t=m(),n=t.firstChild.nextSibling.nextSibling.nextSibling,r=n.nextSibling.nextSibling.nextSibling;return n.$$click=()=>e.onOpenExport(),r.$$click=()=>s(2),t})()]}}),l(t,{get when(){return o()===2},get children(){var t=h(),i=t.firstChild.nextSibling.nextSibling.nextSibling.nextSibling,a=i.nextSibling.firstChild,o=a.nextSibling;return i.$$input=e=>x(e.currentTarget.value),n(i,`spellcheck`,!1),a.$$click=()=>s(3),o.$$click=()=>{x(``),e.onCancel()},r(e=>{var t=!!w(),n=!w();return t!==e.e&&i.classList.toggle(`peach-panic-confirm-input--match`,e.e=t),n!==e.t&&(a.disabled=e.t=n),e},{e:void 0,t:void 0}),r(()=>i.value=p()),t}}),l(t,{get when(){return o()===3},get children(){var e=_(),t=e.firstChild,n=t.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling,i=n.firstChild;return c(t,l(f,{runeString:y,width:320,height:480})),i.$$click=()=>void T(),c(i,()=>S()?`Destroying…`:`Destroy my vault forever`),c(n,l(u,{get when(){return!S()},get children(){var e=g();return e.$$click=()=>{x(``),s(1)},e}}),null),r(()=>i.disabled=S()),e}})]}})),a})()}s([`click`,`input`]);export{x as PanicView};\ No newline at end of filedist-mobile/assets/RuneCanvas-BeGgO6iv.js+1 −0
@@ -0,0 +1 @@1+import{F as e,G as t,I as n,J as r,L as i,R as a,q as o}from"./index-Dd8_N7xu.js";var s=i(`<canvas class=peach-rune-canvas style=display:block>`),c=17,l=c*2.3,u=c*1.35,d=c*.18,f=[18,24,14],p=`#F49C70`;function m(){let e=getComputedStyle(document.documentElement).getPropertyValue(`--peach-accent`).trim();return/^#[0-9a-fA-F]{6}$/.test(e)?e:p}function h(i){let h,g=0,_=!1,v=p,y=[244,156,112];function b(e){v=e,y=[parseInt(e.slice(1,3),16),parseInt(e.slice(3,5),16),parseInt(e.slice(5,7),16)]}return r(()=>{let e=h.getContext(`2d`);if(!e)return;b(m());let t=new MutationObserver(()=>{let e=m();e!==v&&b(e)});t.observe(document.documentElement,{attributes:!0,attributeFilter:[`style`]});let n=i.width,r=i.height,a=Math.ceil(n/(u+d))+4,s=Math.floor(r/l)+1,p=s*a,x=Math.min(8,Math.max(3,Math.floor(p*.03))),S=()=>({row:Math.floor(Math.random()*s),col:Math.floor(Math.random()*a),phase:Math.random(),speed:.4+Math.random()*.4,lifetime:2e3+Math.random()*3e3,age:0}),C=Array.from({length:x},S),w=Array.from({length:s},()=>Math.random()*i.runeString.length*(u+d)),T=i.runeString.length*(u+d)||1,E=performance.now(),D=t=>{let o=Math.min(t-E,64);E=t,e.clearRect(0,0,n,r),e.fillStyle=`#1a1410`,e.fillRect(0,0,n,r),e.font=`${c}px PeachScript, monospace`,e.textBaseline=`alphabetic`;let p=new Map;for(let e of C){e.age+=o,e.phase=(e.phase+e.speed*o/1e3)%1;let t=e.age/e.lifetime,n=Math.sin(t*Math.PI),r=Math.sin(e.phase*Math.PI*2)*.5+.5,i=Math.max(0,n)*r*.85;p.set(`${e.row},${e.col}`,i),e.age>=e.lifetime&&Object.assign(e,S())}let[m,h,_]=y,v=i.runeString,b=v.length;if(b===0){g=requestAnimationFrame(D);return}for(let t=0;t<s;t++){let r=f[t%f.length];w[t]=(w[t]+r*o/1e3)%T;let i=t*l+c+12;for(let r=0;r<a;r++){let a=r*(u+d)-w[t]%(u+d);if(a<-u||a>n+u)continue;let o=v[((Math.floor(w[t]/(u+d))+r)%b+b)%b],s=p.get(`${t},${r}`)??0;s>.01?(e.save(),e.shadowColor=`rgba(${m}, ${h}, ${_}, ${s*.9})`,e.shadowBlur=10,e.fillStyle=`rgba(${m}, ${h}, ${_}, ${.6+s*.4})`,e.fillText(o,a,i),e.restore()):(e.fillStyle=`rgba(245, 240, 234, 0.82)`,e.fillText(o,a,i))}}g=requestAnimationFrame(D)},O=()=>{_||(_=!0,E=performance.now(),g=requestAnimationFrame(D))},k=()=>{_&&(_=!1,cancelAnimationFrame(g))},A=()=>{document.hidden?k():O()};document.addEventListener(`visibilitychange`,A),document.fonts.load(`${c}px PeachScript`).finally(O),o(()=>{k(),t.disconnect(),document.removeEventListener(`visibilitychange`,A)})}),(()=>{var r=s(),o=h;return typeof o==`function`?a(o,r):h=r,t(t=>{var a=i.width,o=i.height,s=`${i.width}px`,c=`${i.height}px`;return a!==t.e&&e(r,`width`,t.e=a),o!==t.t&&e(r,`height`,t.t=o),s!==t.a&&n(r,`width`,t.a=s),c!==t.o&&n(r,`height`,t.o=c),t},{e:void 0,t:void 0,a:void 0,o:void 0}),r})()}export{h as t};\ No newline at end of filedist-mobile/assets/Settings-u6xpUMHK.js+2 −0
@@ -0,0 +1,2 @@1+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/android-sync-identity-BAhJ8ODd.js","assets/dist-C5po-C0e.js","assets/chunk-CilyBKbf.js","assets/x25519-DSi3mQjw.js"])))=>i.map(i=>d[i]);2+import{i as e,t}from"./dist-C5po-C0e.js";import{t as n}from"./preload-helper-D4M6sveU.js";import{A as r,B as i,D as a,E as o,F as s,G as c,H as l,I as u,J as d,K as f,L as p,M as m,N as h,P as g,R as _,T as v,U as y,V as b,a as x,d as S,i as C,j as w,k as T,n as E,r as ee,t as D,z as O}from"./index-Dd8_N7xu.js";var te=p(`<span class=peach-pro-mark aria-label="Pro feature">✦`),ne=p(`<button class=peach-settings-cat-row><div class=peach-settings-cat-icon></div><div class=peach-settings-cat-content><span class=peach-settings-cat-name></span><span class=peach-settings-cat-desc></span></div><svg class=peach-settings-cat-chevron width=6 height=10 viewBox="0 0 6 10"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round><path d="M1 1l4 4-4 4">`),re=p(`<svg width=14 height=14 viewBox="0 0 16 16"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round><path d="M8 2L3 4.5V8c0 3 2.5 5 5 6 2.5-1 5-3 5-6V4.5L8 2z">`),ie=p(`<svg width=14 height=14 viewBox="0 0 16 16"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round><path d="M4 10a3 3 0 100-6 3 3 0 000 6zm3-3h6m-2-2v4">`),ae=p(`<svg width=14 height=14 viewBox="0 0 16 16"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round><rect x=3 y=7 width=10 height=7 rx=1.5></rect><path d="M6 7V5a3 3 0 016 0v2">`),oe=p(`<svg width=14 height=14 viewBox="0 0 16 16"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round><path d="M4 8a4 4 0 014-4m4 4a4 4 0 01-4 4"></path><path d="M14 6l-2 2-2-2"></path><path d="M2 10l2-2 2 2">`),se=p(`<svg width=14 height=14 viewBox="0 0 16 16"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round><circle cx=8 cy=8 r=3></circle><path d="M8 2v1m0 10v1M2 8h1m10 0h1m-2.1-4.1-.7.7M4.8 11.3l-.7.7m0-7.7.7.7m6.5 6.3-.7.7">`),ce=p(`<svg width=14 height=14 viewBox="0 0 16 16"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round><rect x=2 y=5 width=5 height=4 rx=1></rect><rect x=9 y=7 width=5 height=4 rx=1></rect><path d="M7 7h2m-2 2h2">`),le=p(`<svg width=14 height=14 viewBox="0 0 16 16"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round><path d="M3 4h10a1 1 0 011 1v6a1 1 0 01-1 1H5l-3 2V5a1 1 0 011-1z">`),ue=p(`<p class=peach-settings-nav-label>MOBILE`),de=p(`<div class=peach-settings-body><p class=peach-settings-nav-label>PROTECTION</p><p class=peach-settings-nav-label>VAULT</p><p class=peach-settings-nav-label>PREFERENCES</p><p class=peach-settings-nav-label>SUPPORT</p><div class=peach-settings-footer><span>Peach </span><span class=peach-divider></span><span>Browser extension`),fe=p(`<div class="peach-settings-row peach-settings-row--meta"><span>Last check</span><span class=peach-settings-value>`),pe=p(`<p class="peach-hint peach-hint-error"style=margin:0>`),me=p(`<p class=peach-hint style=margin:0;color:var(--peach-accent)>password changed ✓`),he=p(`<div class=peach-settings-stack style="padding:4px 0 2px;gap:6px"><input class=peach-settings-input type=password placeholder="current password"autocomplete=current-password><input class=peach-settings-input type=password placeholder="new password (min 12 chars)"autocomplete=new-password><input class=peach-settings-input type=password placeholder="confirm new password"autocomplete=new-password><button class="peach-btn peach-btn--accent peach-btn--sm"style=align-self:flex-start>`),ge=p(`<div class="peach-settings-row peach-settings-row--meta"><span class=peach-settings-value style=font-size:11px;line-height:1.5;color:var(--peach-t2)>If someone forces you to unlock Peach, enter the duress password instead. A decoy empty vault opens; your real vault stays hidden.`),_e=p(`<div class="peach-settings-row peach-settings-row--meta"><span class=peach-settings-value style=color:var(--peach-sync-ok)>`),ve=p(`<div class="peach-settings-row peach-settings-row--meta"><button class="peach-btn peach-btn--subtle peach-btn--sm">`),ye=p(`<label class=peach-label>new duress password`),be=p(`<input class=peach-settings-input type=password placeholder="duress password (min 8 chars)"autocomplete=new-password>`),xe=p(`<label class=peach-label>confirm duress password`),Se=p(`<input class=peach-settings-input type=password placeholder="confirm duress password"autocomplete=new-password>`),Ce=p(`<p class="peach-hint peach-hint-error">`),we=p(`<button class="peach-btn peach-btn--ghost peach-btn--sm"style=color:var(--peach-breach)>`),Te=p(`<button class="peach-btn peach-btn--accent peach-btn--sm">`),Ee=p(`<div class=peach-duress-form><label class=peach-label>main password (to confirm)</label><input class=peach-settings-input type=password placeholder="your current master password"autocomplete=current-password><div class=peach-duress-actions><button class="peach-btn peach-btn--subtle peach-btn--sm">cancel`),De=p(`<div class="peach-settings-row peach-settings-row--meta"><span class=peach-settings-value style=color:#e7b36b>`),Oe=p(`<div class=peach-settings-body><div class=peach-settings-group><p class=peach-settings-sub-label>LOCKING</p><div class=peach-settings-row><span>Lock on close</span><button aria-label="Toggle lock on close"><span class=peach-toggle-knob></span></button></div><div class=peach-settings-row><span>Auto-lock after</span><select class=peach-settings-select><option value=1>1 minute</option><option value=5>5 minutes</option><option value=15>15 minutes</option><option value=30>30 minutes</option><option value=0>Never</option></select></div><p class=peach-settings-sub-label>BREACH PROTECTION</p><div class=peach-settings-row><span>Breach monitoring</span><button aria-label="Toggle breach monitoring"><span class=peach-toggle-knob></span></button></div><div class="peach-settings-row peach-settings-row--meta"><span>Check all passwords</span><button class="peach-btn peach-btn--subtle peach-btn--sm"></button></div><p class=peach-settings-sub-label>MASTER PASSWORD</p><div class="peach-settings-row peach-settings-row--meta"><span>Master password</span><button class="peach-btn peach-btn--subtle peach-btn--sm"></button></div><p class=peach-settings-sub-label>DURESS PASSWORD</p><div class="peach-settings-row peach-settings-row--top"><div class=peach-settings-row-main><span>Duress password</span><span class=peach-settings-value style=font-size:11px;line-height:1.5;color:var(--t2)>If entered under coercion, shows a decoy empty vault instead of your real one.</span></div><div></div></div><p class=peach-settings-sub-label>CANARY ENTRIES</p><div class="peach-settings-row peach-settings-row--top"><div class=peach-settings-row-main><span>Canary entries</span><span class=peach-settings-value style=font-size:11px;line-height:1.5;color:var(--peach-t2)>Silently pings a webhook when an entry is accessed. Configure canary on any entry in your vault.</span></div><span class=peach-settings-value style=flex-shrink:0></span></div><p class=peach-settings-sub-label>PASSKEYS</p><div class="peach-settings-row peach-settings-row--top"><div class=peach-settings-row-main><span>Intercept passkey requests</span><span class=peach-settings-value style=font-size:11px;line-height:1.5;color:var(--t2)>Peach can handle passkey sign-in and creation on supported Chromium browsers.</span></div><button aria-label="Toggle passkey interception"><span class=peach-toggle-knob></span></button></div><div class="peach-settings-row peach-settings-row--meta"><span>Status</span><span class=peach-settings-value></span></div><div class="peach-settings-row peach-settings-row--meta"><span>Browser</span><span class=peach-settings-value></span></div><div class=peach-info-notice style=margin-top:8px>Only one passkey provider can be active at a time. Disable Bitwarden or 1Password passkey interception if Peach reports a conflict.`),ke=p(`<div class="peach-settings-row peach-settings-row--meta"><span style=overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0></span><button class="peach-btn peach-btn--subtle peach-btn--sm"style=flex-shrink:0>`),Ae=p(`<span class=peach-settings-value style=color:var(--peach-sync-ok)>`),je=p(`<div class="peach-settings-row peach-settings-row--meta"style=flex-direction:column;align-items:stretch;gap:6px><div class=peach-restore-warning> duplicate <!> found. The newest copy of each will be kept; older duplicates will be moved to trash.</div><div style=display:flex;gap:6px><button class="peach-btn peach-btn--subtle peach-btn--sm">cancel</button><button class="peach-btn peach-btn--accent peach-btn--sm">`),Me=p(`<div class="peach-settings-row peach-settings-row--meta"><span> card<!> set to never save</span><button class="peach-btn peach-btn--subtle peach-btn--sm">Clear`),Ne=p(`<p class=peach-settings-hint>Loading…`),Pe=p(`<p class=peach-settings-hint>No snapshots yet. Peach saves automatically before every change — saves, syncs, and imports.`),Fe=p(`<p class=peach-settings-hint>Restoring locks your vault. Unlock with the password that encrypted that snapshot to confirm.`),Ie=p(`<div class=peach-history-list>`),Le=p(`<p class=peach-history-footer> of 10 snapshots`),Re=p(`<div class=peach-danger-card><div class=peach-danger-card-head><span class=peach-danger-card-glyph aria-hidden=true>⟳</span><h3 class=peach-danger-card-title>Replace vault from backup</h3></div><p class=peach-danger-card-copy>Wipes the current vault and restores from a backup file. Recoverable only if your backup is good.</p><button class=peach-danger-card-button>Choose backup file`),ze=p(`<div class="peach-danger-card peach-danger-card--hazard"><div class=peach-danger-card-head><span class=peach-danger-card-glyph aria-hidden=true>⚠</span><h3 class=peach-danger-card-title>Destroy vault</h3></div><p class=peach-danger-card-copy>Permanently wipes every entry, setting, and license on this device. There is no recovery.</p><button class=peach-danger-card-button>Begin destruction`),Be=p(`<div class=peach-settings-body><div class=peach-settings-group><p class=peach-settings-sub-label>ENTRIES</p><div class="peach-settings-row peach-settings-row--meta"><span>Entries</span><span class=peach-settings-value></span></div><div class="peach-settings-row peach-settings-row--meta"><span>Duplicates</span></div><p class=peach-settings-sub-label>MAINTENANCE</p><div class="peach-settings-row peach-settings-row--meta"><span>Trash auto-delete</span><select class=peach-settings-select><option value=7>7 days</option><option value=30>30 days</option><option value=90>90 days</option><option value=0>Never</option></select></div><div class="peach-settings-row peach-settings-row--meta"><span>Vault Health</span><button class="peach-btn peach-btn--subtle peach-btn--sm">open</button></div><p class=peach-settings-sub-label>DATA</p><div class="peach-settings-row peach-settings-row--meta"><span>Import passwords</span><button class="peach-btn peach-btn--subtle peach-btn--sm">open</button></div><div class="peach-settings-row peach-settings-row--meta"><span>Export backup</span><button class="peach-btn peach-btn--subtle peach-btn--sm">open</button></div><p class=peach-settings-sub-label>VAULT HISTORY</p><button class=peach-settings-advanced-toggle><span class=peach-settings-sub-label style=margin:0>ADVANCED</span><span class=peach-settings-advanced-chevron>`),Ve=p(`<button class="peach-btn peach-btn--subtle peach-btn--sm">`),He=p(`<div class=peach-history-row><div class=peach-history-meta><span class=peach-history-time></span><span class=peach-history-sub></span></div><button>`),Ue=p(`<div class=peach-settings-body><div class=peach-pro-upgrade><div class=peach-pro-upgrade-hero><svg class=peach-sync-hero-icon width=36 height=36 viewBox="0 0 36 36"fill=none aria-hidden=true><circle cx=9 cy=18 r=4.5 stroke=currentColor stroke-width=1.2 opacity=0.9></circle><circle cx=27 cy=18 r=4.5 stroke=currentColor stroke-width=1.2 opacity=0.9></circle><path d="M13.5 15.5C15 12 17 10 18 10C19 10 21 12 22.5 15.5"stroke=currentColor stroke-width=1.2 stroke-linecap=round opacity=0.6></path><path d="M13.5 20.5C15 24 17 26 18 26C19 26 21 24 22.5 20.5"stroke=currentColor stroke-width=1.2 stroke-linecap=round opacity=0.6></path><path d="M13.5 18H22.5"stroke=currentColor stroke-width=1.2 stroke-linecap=round opacity=0.35></path><path d="M20 16L22.5 18L20 20"stroke=var(--peach-accent) stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></path><path d="M16 16L13.5 18L16 20"stroke=var(--peach-accent) stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></path></svg><h2 class=peach-pro-upgrade-title>Peach Sync</h2><p class=peach-pro-upgrade-tagline>Encrypted · peer-to-peer · local</p></div><div class=peach-pro-features><div class=peach-pro-feature><span class=peach-pro-feature-mark>✦</span><div class=peach-pro-feature-text><span class=peach-pro-feature-name>Always in sync</span><span class=peach-pro-feature-desc>Your vault stays current across all your devices automatically</span></div></div><div class=peach-pro-feature><span class=peach-pro-feature-mark>✦</span><div class=peach-pro-feature-text><span class=peach-pro-feature-name>No cloud. No relay.</span><span class=peach-pro-feature-desc>Direct device-to-device on your local network — nothing leaves your hands</span></div></div><div class=peach-pro-feature><span class=peach-pro-feature-mark>✦</span><div class=peach-pro-feature-text><span class=peach-pro-feature-name>Tailscale supported</span><span class=peach-pro-feature-desc>Sync securely from anywhere over your private Tailscale network</span></div></div><div class=peach-pro-feature><span class=peach-pro-feature-mark>✦</span><div class=peach-pro-feature-text><span class=peach-pro-feature-name>Zero friction after setup</span><span class=peach-pro-feature-desc>Mark a network as trusted once — sync happens in the background</span></div></div></div><button class="peach-btn peach-btn--accent peach-pro-upgrade-cta">Upgrade to Pro</button><button class=peach-pro-key-link>Already have a key? Enter it →`),We=p(`<p class=peach-settings-hint>No paired devices yet. Add a device to start syncing.`),Ge=p(`<div class=peach-sync-reset-confirm><p class=peach-sync-reset-confirm-headline>Reset sync identity?</p><p class=peach-sync-reset-confirm-body>This will unpair all devices. You will need to pair them again from scratch.</p><div class=peach-settings-actions--row><button class="peach-btn peach-btn--ghost peach-btn--sm">Cancel</button><button class="peach-btn peach-btn--danger peach-btn--sm">`),Ke=p(`<div class=peach-settings-body><div class=peach-settings-group><div class=peach-settings-row><span>Status</span><span class="peach-settings-value peach-settings-value--status"><span class=peach-sync-status-dot></span></span></div><div class="peach-settings-row peach-settings-row--meta"><span>Last sync</span><span class=peach-settings-value></span></div><div class="peach-settings-row peach-settings-row--meta"><button class="peach-btn peach-btn--subtle peach-btn--sm"></button></div><p class=peach-settings-hint>If you edit on multiple devices before syncing, the most recently changed device wins. Use Vault History above to recover older versions if needed.</p><div class="peach-settings-row peach-settings-row--meta peach-settings-row--stack"><span class=peach-sync-section-label>Paired devices (<!>)</span><div class=peach-settings-actions--row><button class="peach-btn peach-btn--subtle peach-btn--sm">Add a device</button></div></div><div class="peach-settings-row peach-settings-row--meta peach-settings-row--stack"><span class=peach-sync-section-label>Trusted networks (<!>)</span><div class=peach-settings-actions--row></div></div><div class="peach-settings-row peach-settings-row--meta peach-settings-row--stack"><span class=peach-sync-section-label>Advanced`),qe=p(`<div class=peach-history-row><div class=peach-history-meta><span class=peach-history-time></span><span class=peach-history-sub></span></div><button class="peach-btn peach-btn--subtle peach-btn--sm peach-history-btn">Remove`),Je=p(`<button class="peach-btn peach-btn--ghost peach-btn--sm peach-sync-remove-btn">Remove`),Ye=p(`<div class=peach-sync-device-row><span class=peach-sync-device-name>`),Xe=p(`<span class=peach-sync-device-meta>Always trusted`),Ze=p(`<div class=peach-sync-advanced-row><div class=peach-sync-advanced-info><span class=peach-sync-advanced-name>Reset sync identity</span><span class=peach-sync-device-meta>Generates a new keypair and unpairs every device.</span></div><button class="peach-btn peach-btn--ghost peach-btn--sm peach-sync-remove-btn">Reset`),Qe=p(`<div class=peach-settings-body><div class=peach-settings-group><p class=peach-settings-sub-label>THEME</p><div class="peach-settings-row peach-settings-row--meta"><span>Theme</span><button class="peach-btn peach-btn--subtle peach-btn--sm"></button></div><p class=peach-settings-sub-label>ACCENT</p><div class="peach-settings-row peach-settings-row--meta peach-settings-row--accent"><span>Accent</span><div class=peach-accent-picker></div></div><p class=peach-settings-sub-label>DISPLAY FONT</p><div class="peach-settings-row peach-settings-row--meta peach-settings-row--font"><span>Font</span><div class=peach-font-picker></div></div><p class=peach-settings-sub-label>TEXT SIZE</p><div class="peach-settings-row peach-settings-row--meta"><span>Size</span><div class=peach-pill-group></div></div><p class=peach-settings-sub-label>MOTION</p><div class="peach-settings-row peach-settings-row--meta"><span>Reduce motion</span><button class="peach-btn peach-btn--subtle peach-btn--sm">`),$e=p(`<button class=peach-accent-swatch>`),et=p(`<button class=peach-font-swatch><span class=peach-font-swatch-glyph></span><span class=peach-font-swatch-name>`),tt=p(`<button class="peach-btn peach-btn--ghost peach-btn--sm">`),nt=p(`<div class=peach-shortcuts-conflict>`),rt=p(`<div class=peach-settings-body><div class="peach-settings-group peach-shortcuts-group"><p class=peach-settings-sub-label>ENTRY VIEW</p></div><div class="peach-settings-group peach-shortcuts-group"><p class=peach-settings-sub-label>ANYWHERE IN POPUP</p></div><div class=peach-settings-group style=display:flex;flex-direction:column;gap:8px><div class="peach-settings-row peach-settings-row--meta"><span>Inline autofill on page</span><a class=peach-settings-link href=chrome://extensions/shortcuts>⌘⇧P — customize ↗</a></div><button class="peach-btn peach-btn--subtle peach-btn--sm"style=align-self:flex-start>Reset all to defaults`),it=p(`<button class=peach-shortcut-reset title="Reset to default">↺`),at=p(`<div class=peach-shortcut-row><span class=peach-shortcut-row-label></span><button class=peach-shortcut-chip>`),ot=p(`<div class=peach-settings-license><span class=peach-settings-label>LICENSE KEY</span><div class=peach-settings-license-row><span class=peach-settings-license-key></span><button class=peach-settings-license-copy>`),st=p(`<div class=peach-pro-active><div class=peach-pro-active-hero><div class=peach-pro-active-mark-wrap></div><h2 class=peach-pro-active-title>Peach Pro</h2><p class=peach-pro-active-since></p></div><div class=peach-pro-active-features></div><button class=peach-pro-deactivate>`),ct=p(`<div class=peach-settings-body>`),lt=p(`<p class=peach-pro-key-error>That key doesn't look right.`),ut=p(`<div class=peach-pro-key-ceremony><p class=peach-pro-key-ceremony-label>Enter your license key</p><input class="peach-underline-input peach-pro-key-input"type=text placeholder=PPK-XXXX-XXXX-XXXX-XXXX-XXXX autocomplete=off><button class="peach-btn peach-btn--accent peach-pro-key-activate"></button><button class=peach-pro-key-cancel>cancel`),dt=p(`<div class=peach-pro-upgrade><div class=peach-pro-upgrade-hero><div class=peach-pro-upgrade-mark-wrap></div><h2 class=peach-pro-upgrade-title>Peach Pro</h2><p class=peach-pro-upgrade-tagline>Everything on every device.</p></div><div class=peach-pro-features></div><div class=peach-pro-upgrade-actions><p class=peach-pro-pricing>$39 · once · yours forever</p><a href=https://peachpasswords.com/#pricing target=_blank rel="noopener noreferrer"class="peach-btn peach-btn--accent peach-pro-upgrade-cta">Get Peach Pro</a><div class=peach-pro-key-divider><span>or</span></div><button class=peach-pro-key-link>Activate a license key`),ft=p(`<div class=peach-pro-feature><span class=peach-pro-feature-mark>✦</span><div class=peach-pro-feature-text><span class=peach-pro-feature-name></span><span class=peach-pro-feature-desc>`),pt=p(`<div class=peach-pro-active-feature><span class=peach-pro-active-feature-mark>✦</span><span class=peach-pro-active-feature-name>`),mt=p(`<p class="peach-feedback-result peach-feedback-result--ok">Sent — thank you`),ht=p(`<p class="peach-feedback-result peach-feedback-result--err">Failed to send — try again`),gt=p(`<div class=peach-settings-body><div class="peach-settings-group peach-feedback-group"><p class=peach-feedback-intro>Help us improve Peach. Every report goes directly to our inbox.</p><p class=peach-settings-sub-label>TYPE</p><div class=peach-feedback-chips></div><p class=peach-settings-sub-label>MESSAGE</p><textarea class=peach-feedback-textarea placeholder="Describe the issue or idea..."></textarea><p class=peach-feedback-meta>Version <!> · will be included automatically</p><button class="peach-btn peach-btn--accent peach-btn--sm peach-feedback-submit"></button><p class=peach-feedback-anon>Sent anonymously · no account required`),_t=p(`<button>`),vt=p(`<div class=peach-settings-body><div class=peach-settings-group><p class=peach-settings-label>Autofill service</p><div class=peach-mobile-row><span class=peach-mobile-status></span><button class="peach-btn peach-btn--subtle peach-btn--sm"></button></div></div><div class=peach-settings-group><p class=peach-settings-label>Biometric unlock</p><div class=peach-mobile-row><span class=peach-mobile-status>`),yt=p(`<div class="peach-overlay-view ov-enter-right"style=display:flex><div class=peach-overlay-header><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label=Back><svg width=7 height=12 viewBox="0 0 7 12"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round><path d="M6 1L1 6L6 11"></path></svg></button><span class=peach-overlay-title></span><div class=peach-overlay-spacer>`),bt=[`Bug report`,`Feature request`,`Question`,`Other`];function xt(e){if(!e)return`Active`;try{let t=new Date(e);return Number.isNaN(t.getTime())?`Active`:`Active since ${t.toLocaleDateString(void 0,{month:`long`,year:`numeric`})}`}catch{return`Active`}}function St(e){return e===`security`||e===`vault`||e===`sync`||e===`appearance`||e===`shortcuts`||e===`license`||e===`feedback`||e===`mobile`}function k(p){let m=chrome.runtime.getManifest().version,k=p.initialSection,[A,Ct]=f(k&&St(k)?k:null),[wt,Tt]=f(!1),[Et,Dt]=f(null),[Ot,kt]=f(null),[At,jt]=f(``),[Mt,j]=f(null),[Nt,Pt]=f(null),[Ft,It]=f(!1),[M,N]=f([]),[Lt,Rt]=f([]),[P,zt]=f(`offline`),[Bt,F]=f(void 0),[Vt,Ht]=f(!1),I=()=>p.isPro??Vt(),[Ut,Wt]=f(!1),[L,R]=f(null),[z,Gt]=f(null),[Kt,qt]=f(!1),[B,Jt]=f(null),[V,H]=f(!1),[U,Yt]=f(null),[Xt,Zt]=f(0),[W,Qt]=f([]),[$t,en]=f(!1),[G,tn]=f(null);async function nn(){en(!0);try{Qt((await T({type:`GET_VAULT_HISTORY`})).data??[])}finally{en(!1)}}async function rn(e){if(G())return;tn(e);let t=await T({type:`RESTORE_VAULT_SNAPSHOT`,payload:{snapshotId:e}});tn(null),t.ok&&p.onBack()}function an(e){let t=Date.now()-e;if(t<6e4)return`Just now`;if(t<36e5)return`${Math.floor(t/6e4)}m ago`;let n=new Date(e),r=new Date().toDateString()===n.toDateString(),i=new Date(Date.now()-864e5).toDateString()===n.toDateString(),a=n.toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`});return r?`Today ${a}`:i?`Yesterday ${a}`:`${n.toLocaleDateString([],{month:`short`,day:`numeric`})} ${a}`}function on(e){return{local_save:`saved`,sync_received:`synced`,import:`imported`,restore:`restored`}[e]??e}let[sn,cn]=f(!1),[ln,un]=f(!1),[K,dn]=f(``),[q,fn]=f(``),[pn,mn]=f(``),[hn,gn]=f(!1),[_n,J]=f(null),[vn,yn]=f(!1),[Y,bn]=f(!1),[xn,Sn]=f(!1),[Cn,wn]=f(``),[Tn,En]=f(``),[Dn,On]=f(``),[kn,X]=f(!1),[An,Z]=f(null),[jn,Q]=f(null),[Mn,Nn]=f([]);function Pn(){try{return e(`Autofill`)}catch{return null}}let Fn=Pn(),[In,Ln]=f(!1),[Rn,zn]=f(!1),Bn=t.getPlatform()===`android`,[Vn,Hn]=f(null),[Un,Wn]=f(null),[Gn,Kn]=f(`Bug report`),[qn,Jn]=f(``),[Yn,Xn]=f(!1),[Zn,Qn]=f(null);d(async()=>{let[e,t,n,r,i,a]=await Promise.all([T({type:`GET_LICENSE`}),T({type:`GET_SYNC_STATE`}),T({type:`GET_PASSKEY_PROVIDER_STATE`}),T({type:`IS_DURESS_ENABLED`}),T({type:`GET_SETTINGS`}),T({type:`GET_LICENSE_KEY`})]);if(nn(),e.ok&&kt(e.data??null),t.ok){let e=t;e.data&&(N(e.data.pairedDevices??[]),Rt(e.data.trustedNetworks??[]),zt(e.data.status??`offline`),F(e.data.lastSyncAt),Ht(e.data.isPro??!1))}if(n.ok&&Gt(n.data??null),r.ok&&bn(r.data??!1),i.ok){let e=i.data;Zt(e?.declinedCardFingerprints?.length??0)}a.ok&&Gr(a.data??null);let o=await T({type:`GET_ENTRIES`});if(o.ok&&Nn((o.data??[]).filter(e=>e.canary?.webhookUrl).map(e=>({id:e.id,title:e.title,canary:e.canary}))),Bn){if(Fn){let{enabled:e}=await Fn.isEnabledAsAutofillService();Ln(e)}zn(await S())}chrome.runtime.onMessage.addListener(e=>{e.type===`SYNC_STATE_UPDATE`&&(N(e.pairedDevices??[]),Rt(e.trustedNetworks??[]),zt(e.status??`offline`),F(e.lastSyncAt),Ht(e.isPro??!1))})});async function $n(){if(J(null),!K().trim()){J(`enter your current password`);return}if(q().length<12){J(`new password must be at least 12 characters`);return}if(q()!==pn()){J(`new passwords do not match`);return}if(q()===K()){J(`new password must differ from current`);return}gn(!0);let e=await T({type:`CHANGE_PASSWORD`,payload:{currentPassword:K(),newPassword:q()}});e.ok?(yn(!0),dn(``),fn(``),mn(``),setTimeout(()=>{yn(!1),un(!1)},2200)):J(e.error??`failed to change password`),gn(!1)}let[er,tr]=f(!1);async function nr(e){await navigator.clipboard.writeText(e),tr(!0),setTimeout(()=>tr(!1),2e3)}async function rr(){let e=At().trim();if(!e)return;It(!0),j(null),Pt(null);let t=await T({type:`ACTIVATE_LICENSE`,payload:{key:e}});if(It(!1),t.ok){let n=t.data;n?.valid?(kt(n),Gr(e),Pt(`License activated!`),jt(``)):j(`Invalid license key`)}else j(`Activation failed`)}async function ir(){let e=z();if(!e||!e.supported)return;qt(!0);let t=await T({type:`SET_PASSKEY_PROVIDER_ENABLED`,payload:{enabled:!e.enabled}});qt(!1),t.ok&&Gt(t.data??null)}async function ar(){Tt(!0),Dt(null);let e=await T({type:`CHECK_ALL_BREACHES`});if(Tt(!1),e.ok){let t=e.data??{},n=Object.values(t).filter(e=>e>0).length;Dt(n>0?`${n} password${n>1?`s`:``} found in breaches`:`All passwords clean`),p.onBreachCheckDone()}}async function or(){if(P()===`not_trusted`)return;Wt(!0),R(null);let e=await T({type:`TRIGGER_SYNC`});if(e.ok){let t=e.data?.syncedCount??0;R({kind:`ok`,text:t>0?`Synced with ${t} ${t===1?`device`:`devices`}`:`Up to date`}),F(Date.now()),sr()}else{let t=e.error;R({kind:`err`,text:{no_paired_devices:`No paired devices`,no_devices_reachable:`No devices found`,vault_locked:`Vault is locked`,pro_required:`Sync requires Pro`}[t??``]??`Sync failed`})}setTimeout(()=>{Wt(!1),R(null)},3500)}async function sr(){let e=(await T({type:`GET_SYNC_STATE`})).data;e&&(N(e.pairedDevices??[]),Rt(e.trustedNetworks??[]),zt(e.status??`offline`),F(e.lastSyncAt))}async function cr(e){N(t=>t.filter(t=>t.deviceId!==e)),await T({type:`REMOVE_PAIRED_DEVICE`,payload:{deviceId:e}}),sr()}async function lr(e,t,n){await T({type:`REMOVE_TRUSTED_NETWORK`,payload:{ssid:e,bssid:t,isTailscale:n}}),sr()}let[ur,dr]=f(!1);async function fr(){ur()||(dr(!0),await T({type:`MARK_NETWORK_TRUSTED`}),await sr(),dr(!1))}let[pr,mr]=f(!1),[hr,gr]=f(!1);async function _r(){if(gr(!0),t.isNativePlatform()){let{clearAndroidSyncIdentity:e}=await n(async()=>{let{clearAndroidSyncIdentity:e}=await import(`./android-sync-identity-BAhJ8ODd.js`);return{clearAndroidSyncIdentity:e}},__vite__mapDeps([0,1,2,3]));await e()}let e=await T({type:`RESET_SYNC_IDENTITY`});gr(!1),e.ok&&(N([]),mr(!1))}function vr(e){if(!e)return`Never`;let t=Date.now()-e,n=Math.floor(t/6e4),r=Math.floor(t/36e5),i=Math.floor(t/864e5);return n<1?`Just now`:n<60?`${n}m ago`:r<24?`${r}h ago`:`${i}d ago`}function yr(e){switch(e){case`synced`:return`var(--peach-sync-ok)`;case`syncing`:return`var(--peach-sync-busy)`;case`no_peers`:return`var(--peach-sync-off)`;case`not_trusted`:return`var(--peach-sync-err)`;case`offline`:return`var(--peach-sync-off)`;default:return`var(--peach-sync-off)`}}function br(e){switch(e){case`synced`:return`Synced`;case`syncing`:return`Syncing`;case`no_peers`:return`No peers visible`;case`not_trusted`:return`Not on a trusted network`;case`offline`:return`Offline`;default:return`Unknown`}}function xr(){return Lt().length>0}async function Sr(){let e=Dn().trim(),t=Cn().trim(),n=Tn().trim();if(!e){Z(`enter your main password to confirm`);return}if(t.length<8){Z(`duress password must be at least 8 characters`);return}if(t===e){Z(`duress password must differ from your main password`);return}if(t!==n){Z(`passwords do not match`);return}X(!0),Z(null);let r=await T({type:`VERIFY_MAIN_PASSWORD`,payload:{password:e}});if(!r.ok||!r.data){Z(`incorrect main password`),X(!1);return}let i=await T({type:`SETUP_DURESS`,payload:{duressPassword:t}});X(!1),i.ok?(bn(!0),Sn(!1),wn(``),En(``),On(``),Q(`Duress password set. If entered, a decoy vault will be shown.`),setTimeout(()=>Q(null),5e3)):Z(i.error??`failed to set duress password`)}async function Cr(){await T({type:`UPDATE_SETTINGS`,payload:{declinedCardFingerprints:[]}}),Zt(0)}async function wr(){H(!0),Yt(null);let e=await T({type:`COUNT_DUPLICATES`});H(!1),e.ok&&Jt(e.data??0)}async function Tr(){H(!0);let e=await T({type:`DEDUPLICATE_ENTRIES`});H(!1),e.ok&&(Yt(e.data??0),Jt(0))}async function Er(){let e=Dn().trim();if(!e){Z(`enter your main password to confirm`);return}X(!0),Z(null);let t=await T({type:`VERIFY_MAIN_PASSWORD`,payload:{password:e}});if(!t.ok||!t.data){Z(`incorrect main password`),X(!1);return}let n=await T({type:`DISABLE_DURESS`});X(!1),n.ok?(bn(!1),Sn(!1),On(``),Q(`Duress password disabled.`),setTimeout(()=>Q(null),4e3)):Z(n.error??`failed to disable duress password`)}async function Dr(){if(!qn().trim()||Yn())return;Xn(!0),Qn(null);let e=await T({type:`SUBMIT_FEEDBACK`,payload:{category:Gn(),message:qn().trim(),version:m,browser:navigator.userAgent}});Xn(!1),e.ok?(Qn(`success`),Jn(``),setTimeout(()=>Qn(null),4e3)):Qn(`error`)}function Or(){A()===null?p.onBack():Ct(null)}function kr(){let e=A();return e===null?`settings`:e===`license`?`account`:e}function $(e){return(()=>{var t=ne(),n=t.firstChild,r=n.nextSibling.firstChild,i=r.nextSibling;return t.$$click=()=>Ct(e.section),h(n,()=>e.icon()),h(r,()=>e.name,null),h(r,y(b,{get when(){return g(()=>!!e.pro)()&&!I()},get children(){return te()}}),null),h(i,()=>e.desc),t})()}let Ar=()=>re(),jr=()=>ie(),Mr=()=>ae(),Nr=()=>oe(),Pr=()=>se(),Fr=()=>ce(),Ir=()=>le();function Lr(){return(()=>{var e=de(),t=e.firstChild.nextSibling,n=t.nextSibling,r=n.nextSibling,i=r.nextSibling,a=i.firstChild;return a.firstChild,h(e,()=>$({section:`security`,name:`Security`,desc:`Locking, breach monitoring, passkeys`,icon:Ar}),t),h(e,()=>$({section:`license`,name:`Peach Pro`,desc:I()?`Active · manage your license`:`Upgrade · $39 · yours forever`,icon:jr}),t),h(e,()=>$({section:`vault`,name:`Vault`,desc:`Entries, health, import & export`,icon:Mr}),n),h(e,()=>$({section:`sync`,name:`Sync`,desc:`Paired devices & trusted networks`,icon:Nr,pro:!0}),n),h(e,()=>$({section:`appearance`,name:`Appearance`,desc:`Theme & accent color`,icon:Pr}),r),h(e,()=>$({section:`shortcuts`,name:`Shortcuts`,desc:`Keyboard reference`,icon:Fr}),r),h(e,y(b,{when:Bn,get children(){return[ue(),g(()=>$({section:`mobile`,name:`Mobile`,desc:`Autofill & biometric settings`,icon:Nr}))]}}),r),h(e,()=>$({section:`feedback`,name:`Feedback`,desc:`Report issues, suggest features`,icon:Ir}),i),h(a,m,null),e})()}function Rr(){return(()=>{var e=Oe(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling,a=i.firstChild.nextSibling,o=i.nextSibling.nextSibling,s=o.firstChild.nextSibling,l=o.nextSibling,u=l.firstChild.nextSibling,d=l.nextSibling,f=d.nextSibling,m=f.firstChild.nextSibling,_=f.nextSibling,v=_.nextSibling,x=v.firstChild.nextSibling,S=v.nextSibling,C=S.nextSibling,T=C.firstChild.nextSibling,E=C.nextSibling,ee=E.nextSibling,D=ee.firstChild.nextSibling,te=ee.nextSibling,ne=te.firstChild.nextSibling,re=te.nextSibling,ie=re.firstChild.nextSibling;return re.nextSibling,r.$$click=()=>void p.onLockOnCloseChange(!p.lockOnClose),a.addEventListener(`change`,e=>void p.onAutoLockMinutesChange(Number(e.currentTarget.value))),s.$$click=()=>void p.onBreachMonitoringChange(!p.breachMonitoring),u.$$click=()=>void ar(),h(u,()=>wt()?`checking...`:`run`),h(t,y(b,{get when(){return Et()},get children(){var e=fe(),t=e.firstChild.nextSibling;return h(t,Et),e}}),d),m.$$click=()=>{un(e=>!e),J(null)},h(m,()=>ln()?`cancel`:`change`),h(t,y(b,{get when(){return ln()},get children(){var e=he(),t=e.firstChild,n=t.nextSibling,r=n.nextSibling,i=r.nextSibling;return t.$$input=e=>dn(e.target.value),n.$$input=e=>fn(e.target.value),r.$$keydown=e=>{e.key===`Enter`&&$n()},r.$$input=e=>mn(e.target.value),h(e,y(b,{get when(){return _n()},get children(){var e=pe();return h(e,_n),e}}),i),h(e,y(b,{get when(){return vn()},get children(){return me()}}),i),i.$$click=()=>void $n(),h(i,()=>hn()?`saving…`:`save new password`),c(()=>i.disabled=hn()||!K()||!q()||!pn()),c(()=>t.value=K()),c(()=>n.value=q()),c(()=>r.value=pn()),e}}),_),h(x,()=>Y()?`on`:`off`),h(t,y(b,{get when(){return g(()=>!!Y())()&&!xn()},get children(){return ge()}}),S),h(t,y(b,{get when(){return jn()},get children(){var e=_e(),t=e.firstChild;return h(t,jn),e}}),S),h(t,y(b,{get when(){return!xn()},get children(){var e=ve(),t=e.firstChild;return t.$$click=()=>{Sn(!0),Z(null),Q(null),wn(``),En(``),On(``)},h(t,()=>Y()?`Change / disable`:`Set up`),e}}),S),h(t,y(b,{get when(){return xn()},get children(){var e=Ee(),t=e.firstChild.nextSibling,n=t.nextSibling,r=n.firstChild;return t.$$input=e=>On(e.currentTarget.value),h(e,y(b,{get when(){return!Y()},get children(){return[ye(),(()=>{var e=be();return e.$$input=e=>wn(e.currentTarget.value),c(()=>e.value=Cn()),e})(),xe(),(()=>{var e=Se();return e.$$input=e=>En(e.currentTarget.value),c(()=>e.value=Tn()),e})()]}}),n),h(e,y(b,{get when(){return An()},get children(){var e=Ce();return h(e,An),e}}),n),r.$$click=()=>{Sn(!1),Z(null)},h(n,y(b,{get when(){return Y()},get children(){var e=we();return e.$$click=()=>void Er(),h(e,()=>kn()?`disabling...`:`disable duress`),c(()=>e.disabled=kn()),e}}),null),h(n,y(b,{get when(){return!Y()},get children(){var e=Te();return e.$$click=()=>void Sr(),h(e,()=>kn()?`saving...`:`save`),c(()=>e.disabled=kn()||!Dn()||!Cn()||!Tn()),e}}),null),c(()=>t.value=Dn()),e}}),S),h(T,(()=>{var e=g(()=>Mn().length>0);return()=>e()?`${Mn().length} active`:`none`})()),h(t,y(b,{get when(){return Mn().length>0},get children(){return y(O,{get each(){return Mn()},children:e=>(()=>{var t=ke(),n=t.firstChild,r=n.nextSibling;return h(n,()=>e.title),r.$$click=()=>void Zr(e),h(r,(()=>{var t=g(()=>Vn()===e.id);return()=>t()?`sending…`:g(()=>Un()?.id===e.id)()?Un().ok?`sent ✓`:`failed ✗`:`test`})()),c(()=>r.disabled=Vn()===e.id),t})()})}}),E),D.$$click=()=>void ir(),h(ne,()=>z()?.statusLabel??`Unavailable`),h(ie,()=>z()?.browserLabel??`Unknown`,null),h(ie,()=>z()?.supported?` ✓`:` (interception unavailable)`,null),h(t,y(b,{get when(){return z()?.conflict},get children(){var e=De(),t=e.firstChild;return h(t,()=>z().conflict),e}}),null),c(e=>{var t=`peach-toggle ${p.lockOnClose?`is-on`:``}`,n=`peach-toggle ${p.breachMonitoring?`is-on`:``}`,i=wt(),a=`peach-duress-status-pill ${Y()?`is-active`:``}`,o=`peach-toggle ${z()?.enabled?`is-on`:``}`,c=!z()?.supported||Kt();return t!==e.e&&w(r,e.e=t),n!==e.t&&w(s,e.t=n),i!==e.a&&(u.disabled=e.a=i),a!==e.o&&w(x,e.o=a),o!==e.i&&w(D,e.i=o),c!==e.n&&(D.disabled=e.n=c),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),c(()=>a.value=String(p.autoLockMinutes)),e})()}function zr(){return(()=>{var e=Be(),t=e.firstChild,n=t.firstChild.nextSibling,i=n.firstChild.nextSibling,a=n.nextSibling;a.firstChild;var o=a.nextSibling,l=o.nextSibling,u=l.firstChild.nextSibling,d=l.nextSibling,f=d.firstChild.nextSibling,m=d.nextSibling,_=m.nextSibling,v=_.firstChild.nextSibling,x=_.nextSibling,S=x.firstChild.nextSibling,C=x.nextSibling.nextSibling,T=C.firstChild.nextSibling;return h(i,()=>p.entriesCount),h(a,y(b,{get when(){return U()!==null},get fallback(){return(()=>{var e=Ve();return e.$$click=()=>void wr(),h(e,(()=>{var e=g(()=>!!V());return()=>e()?`scanning...`:g(()=>B()===null)()?`scan`:g(()=>B()===0)()?`none found`:`${B()} found — remove?`})()),c(()=>e.disabled=V()),e})()},get children(){var e=Ae();return h(e,(()=>{var e=g(()=>U()===0);return()=>e()?`already clean`:`removed ${U()}`})()),e}}),null),h(t,y(b,{get when(){return g(()=>B()!==null&&B()>0)()&&U()===null},get children(){var e=je(),t=e.firstChild,n=t.firstChild,r=n.nextSibling;r.nextSibling;var i=t.nextSibling.firstChild,a=i.nextSibling;return h(t,B,n),h(t,()=>B()===1?`entry`:`entries`,r),i.$$click=()=>Jt(null),a.$$click=()=>void Tr(),h(a,()=>V()?`removing...`:`remove duplicates`),c(()=>a.disabled=V()),e}}),o),u.addEventListener(`change`,e=>void p.onTrashRetentionChange(Number(e.currentTarget.value))),r(f,`click`,p.onOpenHealth,!0),h(t,y(b,{get when(){return Xt()>0},get children(){var e=Me(),t=e.firstChild,n=t.firstChild,r=n.nextSibling;r.nextSibling;var i=t.nextSibling;return h(t,Xt,n),h(t,()=>Xt()===1?``:`s`,r),i.$$click=()=>void Cr(),e}}),m),r(v,`click`,p.onImport,!0),r(S,`click`,p.onExport,!0),h(t,y(b,{get when(){return $t()},get children(){return Ne()}}),C),h(t,y(b,{get when(){return g(()=>!$t())()&&W().length===0},get children(){return Pe()}}),C),h(t,y(b,{get when(){return g(()=>!$t())()&&W().length>0},get children(){return[Fe(),(()=>{var e=Ie();return h(e,y(O,{get each(){return W()},children:e=>(()=>{var t=He(),n=t.firstChild,r=n.firstChild,i=r.nextSibling,a=n.nextSibling;return h(r,()=>an(e.savedAt)),h(i,()=>[e.entryCount===null?null:`${e.entryCount} ${e.entryCount===1?`entry`:`entries`}`,on(e.reason)].filter(Boolean).join(` · `)),a.$$click=()=>void rn(e.id),h(a,y(b,{get when(){return G()===e.id},fallback:`Restore`,children:`…`})),c(t=>{var n=`peach-btn peach-btn--subtle peach-btn--sm peach-history-btn${G()===e.id?` is-busy`:``}`,r=G()!==null;return n!==t.e&&w(a,t.e=n),r!==t.t&&(a.disabled=t.t=r),t},{e:void 0,t:void 0}),t})()})),e})(),(()=>{var e=Le(),t=e.firstChild;return h(e,()=>W().length,t),e})()]}}),C),C.$$click=()=>cn(e=>!e),h(T,()=>sn()?`▲`:`▼`),h(t,y(b,{get when(){return sn()},get children(){return[(()=>{var e=Re(),t=e.firstChild.nextSibling.nextSibling;return t.$$click=()=>p.onOpenFileImport?.(),e})(),y(b,{get when(){return p.onOpenPanic},get children(){var e=ze(),t=e.firstChild.nextSibling.nextSibling;return t.$$click=()=>p.onOpenPanic?.(),e}})]}}),null),c(()=>s(C,`aria-expanded`,sn())),c(()=>u.value=String(p.trashRetentionDays)),e})()}function Br(){return I()?(()=>{var e=Ke(),t=e.firstChild.firstChild,n=t.firstChild.nextSibling,r=n.firstChild,a=t.nextSibling,o=a.firstChild.nextSibling,s=a.nextSibling,d=s.firstChild,f=s.nextSibling.nextSibling,m=f.firstChild,_=m.firstChild.nextSibling;_.nextSibling;var v=m.nextSibling,x=v.firstChild,S=f.nextSibling,C=S.firstChild,w=C.firstChild.nextSibling;w.nextSibling;var T=C.nextSibling,E=S.nextSibling;return E.firstChild,h(n,()=>br(P()),null),h(o,(()=>{var e=g(()=>!!Bt());return()=>e()?vr(Bt()):`Never synced`})()),d.$$click=()=>void or(),h(d,y(l,{get children(){return[y(i,{get when(){return Ut()},children:`Syncing…`}),y(i,{get when(){return L()?.kind===`ok`},get children(){return[`✓ `,g(()=>L().text)]}}),y(i,{get when(){return L()?.kind===`err`},get children(){return L().text}}),y(i,{when:!0,children:`Sync now`})]}})),h(m,()=>M().length,_),h(f,y(b,{get when(){return M().length===0},get children(){return We()}}),v),h(f,y(b,{get when(){return M().length>0},get children(){var e=Ie();return h(e,y(O,{get each(){return M()},children:e=>(()=>{var t=qe(),n=t.firstChild,r=n.firstChild,i=r.nextSibling,a=n.nextSibling;return h(r,()=>e.displayName),h(i,(()=>{var t=g(()=>!!e.lastSyncAt);return()=>t()?`Last synced: ${an(e.lastSyncAt)}`:`Never synced`})()),a.$$click=()=>void cr(e.deviceId),t})()})),e}}),v),x.$$click=()=>p.onOpenSyncPairing?.(),h(C,()=>Lt().length,w),h(S,y(O,{get each(){return Lt()},children:e=>(()=>{var t=Ye(),n=t.firstChild;return h(n,(()=>{var t=g(()=>!!e.isTailscale);return()=>t()?`Tailscale`:e.ssid??`Unknown network`})()),h(t,y(b,{get when(){return!e.isTailscale},get fallback(){return Xe()},get children(){var t=Je();return t.$$click=()=>void lr(e.ssid,e.bssid,e.isTailscale),t}}),null),t})()}),T),h(T,y(b,{get when(){return!xr()},get children(){var e=Ve();return e.$$click=()=>void fr(),h(e,()=>ur()?`Marking…`:`Mark current network as trusted`),c(()=>e.disabled=ur()),e}})),h(E,y(b,{get when(){return pr()},get fallback(){return(()=>{var e=Ze(),t=e.firstChild.nextSibling;return t.$$click=()=>mr(!0),e})()},get children(){var e=Ge(),t=e.firstChild.nextSibling.nextSibling.firstChild,n=t.nextSibling;return t.$$click=()=>mr(!1),n.$$click=()=>void _r(),h(n,()=>hr()?`Resetting...`:`Reset`),c(e=>{var r=hr(),i=hr();return r!==e.e&&(t.disabled=e.e=r),i!==e.t&&(n.disabled=e.t=i),e},{e:void 0,t:void 0}),e}}),null),c(e=>{var t=yr(P()),n=P()===`not_trusted`||Ut();return t!==e.e&&u(r,`background`,e.e=t),n!==e.t&&(d.disabled=e.t=n),e},{e:void 0,t:void 0}),e})():(()=>{var e=Ue(),t=e.firstChild.firstChild.nextSibling.nextSibling,n=t.nextSibling;return t.$$click=()=>Ct(`license`),n.$$click=()=>Ct(`license`),e})()}function Vr(){let e=[{id:`cormorant-italic`,label:`Cormorant Italic`,preview:`Aa`},{id:`cormorant`,label:`Cormorant`,preview:`Aa`},{id:`inter`,label:`Inter`,preview:`Aa`},{id:`system`,label:`System`,preview:`Aa`}],t=[{id:`small`,label:`Small`},{id:`medium`,label:`Default`},{id:`large`,label:`Large`}];return(()=>{var n=Qe(),r=n.firstChild.firstChild.nextSibling,i=r.firstChild.nextSibling,o=r.nextSibling.nextSibling,l=o.firstChild.nextSibling,d=o.nextSibling.nextSibling,f=d.firstChild.nextSibling,m=d.nextSibling.nextSibling,g=m.firstChild.nextSibling,_=m.nextSibling.nextSibling.firstChild.nextSibling;return i.$$click=()=>p.onThemeChange(p.theme===`dark`?`light`:`dark`),h(i,()=>p.theme===`dark`?`Switch to light`:`Switch to dark`),h(l,y(O,{each:a,children:e=>(()=>{var t=$e();return t.$$click=()=>void p.onAccentChange(e.name),c(n=>{var r=p.accentColor===e.name,i=e.hex,a=e.name,o=e.name;return r!==n.e&&t.classList.toggle(`is-active`,n.e=r),i!==n.t&&u(t,`background`,n.t=i),a!==n.a&&s(t,`aria-label`,n.a=a),o!==n.o&&s(t,`title`,n.o=o),n},{e:void 0,t:void 0,a:void 0,o:void 0}),t})()})),h(f,y(O,{each:e,children:e=>(()=>{var t=et(),n=t.firstChild,r=n.nextSibling;return t.$$click=()=>void p.onDisplayFontChange(e.id),h(n,()=>e.preview),h(r,()=>e.label),c(n=>{var r=p.displayFont===e.id,i=e.id,a=e.label,o=e.label;return r!==n.e&&t.classList.toggle(`is-active`,n.e=r),i!==n.t&&s(t,`data-font-preview`,n.t=i),a!==n.a&&s(t,`aria-label`,n.a=a),o!==n.o&&s(t,`title`,n.o=o),n},{e:void 0,t:void 0,a:void 0,o:void 0}),t})()})),h(g,y(O,{each:t,children:e=>(()=>{var t=tt();return t.$$click=()=>void p.onTextSizeChange(e.id),h(t,()=>e.label),c(()=>t.classList.toggle(`is-active`,p.textSize===e.id)),t})()})),_.$$click=()=>void p.onReduceMotionChange(!p.reduceMotion),h(_,()=>p.reduceMotion?`On`:`Off`),n})()}function Hr(){let[e,t]=f(null),[n,r]=f(null);function i(e){r(null),t(e)}function a(){t(null),r(null)}function o(e,n){let i=ee(p.shortcuts,n,e);if(i){r(`Already bound to "${E.find(e=>e.action===i)?.label??i}"`);return}let a={...p.shortcuts,[e]:n};t(null),r(null),p.onShortcutsChange(a)}function s(e){let t={...p.shortcuts,[e]:D[e]};p.onShortcutsChange(t)}function l(){p.onShortcutsChange({...D})}function u(t){if(t.preventDefault(),t.stopPropagation(),t.key===`Escape`){a();return}let n=x(t);if(!n)return;let r=e();r&&o(r,n)}return(()=>{var t=rt(),r=t.firstChild;r.firstChild;var o=r.nextSibling;o.firstChild;var c=o.nextSibling,f=c.firstChild,p=f.firstChild.nextSibling,m=f.nextSibling;return h(r,y(O,{get each(){return E.filter(e=>e.scope===`entry`)},children:t=>d(t,e,i,a,s,u)}),null),h(o,y(O,{get each(){return E.filter(e=>e.scope===`global`)},children:t=>d(t,e,i,a,s,u)}),null),h(t,y(b,{get when(){return n()},get children(){var e=nt();return h(e,n),e}}),c),p.$$click=e=>{e.preventDefault(),chrome.tabs.create({url:`chrome://extensions/shortcuts`})},m.$$click=l,t})();function d(e,t,n,r,i,a){let o=()=>t()===e.action,s=()=>p.shortcuts[e.action],l=()=>{let t=s(),n=D[e.action];return t.key!==n.key||!!t.ctrl!=!!n.ctrl||!!t.meta!=!!n.meta||!!t.shift!=!!n.shift||!!t.alt!=!!n.alt};return(()=>{var t=at(),u=t.firstChild,d=u.nextSibling;return h(u,()=>e.label),_(e=>{e&&queueMicrotask(()=>{o()&&e.focus()})},d),d.$$keydown=e=>{o()&&a(e)},d.$$click=()=>o()?r():n(e.action),h(d,(()=>{var e=g(()=>!!o());return()=>e()?`Press a key…`:C(s())})()),h(t,y(b,{get when(){return g(()=>!!l())()&&!o()},get children(){var t=it();return t.$$click=()=>i(e.action),t}}),null),c(e=>{var t=!!o(),n=!!l();return t!==e.e&&d.classList.toggle(`is-capturing`,e.e=t),n!==e.t&&d.classList.toggle(`is-custom`,e.t=n),e},{e:void 0,t:void 0}),t})()}}let Ur=[{feature:`sync`,name:`Peach Sync`,desc:`Encrypted · peer-to-peer · local`},{feature:`ios_app`,name:`Android & iOS`,desc:`Your vault everywhere`},{feature:`passkeys`,name:`Passkeys`,desc:`Zero-knowledge WebAuthn`},{feature:`advanced_health`,name:`Advanced Vault Health`,desc:`Reuse · age · exposure scoring`},{feature:`smart_password_change`,name:`Smart Password Change`,desc:`Guided reset · pre-filled · vault updated`}],[Wr,Gr]=f(null),[Kr,qr]=f(!1),[Jr,Yr]=f(!1);async function Xr(){Yr(!0),await T({type:`DEACTIVATE_LICENSE`}),kt(null),await p.onLicenseChange?.(),Yr(!1)}async function Zr(e){Hn(e.id),Wn(null);let t=await T({type:`FIRE_CANARY_PING`,payload:{webhookUrl:e.canary.webhookUrl,entryTitle:e.title,trigger:`test`}});Wn({id:e.id,ok:t.ok}),Hn(null),setTimeout(()=>Wn(t=>t?.id===e.id?null:t),3e3)}function Qr(){async function e(){await rr(),(Ot()?.valid??!1)&&Ot()?.plan===`pro`&&await p.onLicenseChange?.()}return(()=>{var t=ct();return h(t,y(b,{get when(){return I()},get fallback(){return y(b,{get when(){return Kr()},get fallback(){return(()=>{var e=dt(),t=e.firstChild,n=t.firstChild,r=t.nextSibling,i=r.nextSibling.firstChild.nextSibling.nextSibling.nextSibling;return h(n,y(v,{class:`peach-pro-upgrade-mark`})),h(r,y(O,{each:Ur,children:e=>(()=>{var t=ft(),n=t.firstChild.nextSibling.firstChild,r=n.nextSibling;return h(n,()=>e.name),h(r,()=>e.desc),c(()=>t.classList.toggle(`is-highlighted`,p.upgradeHighlight===e.feature)),t})()})),i.$$click=()=>qr(!0),e})()},get children(){var t=ut(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling,a=i.nextSibling;return h(t,y(o,{}),n),r.$$keydown=t=>{t.key===`Enter`&&e()},r.$$input=e=>jt(e.currentTarget.value),s(r,`spellcheck`,!1),h(t,y(b,{get when(){return Mt()},get children(){return lt()}}),i),i.$$click=()=>void e(),h(i,()=>Ft()?`activating…`:`Activate`),a.$$click=()=>{qr(!1),j(null),jt(``)},c(()=>i.disabled=Ft()||!At().trim()),c(()=>r.value=At()),t}})},get children(){var e=st(),t=e.firstChild,n=t.firstChild,r=n.nextSibling.nextSibling,i=t.nextSibling,a=i.nextSibling;return h(n,y(v,{class:`peach-pro-active-mark`})),h(r,()=>xt(Ot()?.issued)),h(e,y(b,{get when(){return Wr()},get children(){var e=ot(),t=e.firstChild.nextSibling.firstChild,n=t.nextSibling;return h(t,()=>Wr()),n.$$click=()=>nr(Wr()),h(n,()=>er()?`✓`:`copy`),e}}),i),h(i,y(O,{each:Ur,children:e=>(()=>{var t=pt(),n=t.firstChild.nextSibling;return h(n,()=>e.name),t})()})),a.$$click=()=>void Xr(),h(a,()=>Jr()?`Deactivating…`:`Deactivate`),c(()=>a.disabled=Jr()),e}})),t})()}function $r(){return(()=>{var e=gt(),t=e.firstChild,n=t.firstChild.nextSibling.nextSibling,r=n.nextSibling.nextSibling,i=r.nextSibling,a=i.firstChild.nextSibling;a.nextSibling;var o=i.nextSibling;return h(n,y(O,{each:bt,children:e=>(()=>{var t=_t();return t.$$click=()=>Kn(e),h(t,e),c(()=>w(t,`peach-feedback-chip ${Gn()===e?`is-active`:``}`)),t})()})),r.$$input=e=>Jn(e.currentTarget.value),h(i,m,a),h(t,y(b,{get when(){return Zn()===`success`},get children(){return mt()}}),o),h(t,y(b,{get when(){return Zn()===`error`},get children(){return ht()}}),o),o.$$click=()=>void Dr(),h(o,()=>Yn()?`Sending...`:`Send feedback`),c(()=>o.disabled=Yn()||!qn().trim()),c(()=>r.value=qn()),e})()}function ei(){return(()=>{var e=vt(),t=e.firstChild,n=t.firstChild.nextSibling.firstChild,r=n.nextSibling,i=t.nextSibling.firstChild.nextSibling.firstChild;return h(n,()=>In()?`Enabled`:`Disabled`),r.$$click=()=>void Fn?.openAutofillSettings(),h(r,()=>In()?`Change`:`Enable`),h(i,()=>Rn()?`Available`:`Not available`),e})()}return(()=>{var e=yt(),t=e.firstChild.firstChild,n=t.nextSibling;return t.$$click=Or,h(n,kr),h(e,y(l,{get fallback(){return Lr()},get children(){return[y(i,{get when(){return A()===`security`},get children(){return Rr()}}),y(i,{get when(){return A()===`vault`},get children(){return zr()}}),y(i,{get when(){return A()===`sync`},get children(){return Br()}}),y(i,{get when(){return A()===`appearance`},get children(){return Vr()}}),y(i,{get when(){return A()===`shortcuts`},get children(){return Hr()}}),y(i,{get when(){return A()===`license`},get children(){return Qr()}}),y(i,{get when(){return A()===`feedback`},get children(){return $r()}}),y(i,{get when(){return A()===`mobile`},get children(){return ei()}})]}}),null),e})()}m([`click`,`input`,`keydown`]);export{k as SettingsView};\ No newline at end of filedist-mobile/assets/SyncPairing-1TEAh1j_.js+1 −0
@@ -0,0 +1 @@1+import{t as e}from"./dist-C5po-C0e.js";import{A as t,F as n,G as r,J as i,K as a,L as o,M as s,N as c,P as l,U as u,V as d,k as f,q as p}from"./index-Dd8_N7xu.js";var m=o(`<span class=peach-pairing-spinner>`),h=o(`<p class="peach-pairing-error peach-pairing-error--muted">`),g=o(`<button class=peach-pairing-toggle>I have a code to enter →`),_=o(`<div class="peach-pairing-content peach-pairing-code-screen"><p class=peach-pairing-headline>Add a device</p><p class="peach-pairing-subline peach-pairing-subline--center">Open Peach on your other device, tap<br>Add a device, and enter this code.</p><p class=peach-pairing-hint>Both devices must be on the same WiFi.`),v=o(`<button class=peach-pairing-toggle>← Show my code instead`),y=o(`<div class="peach-pairing-content peach-pairing-code-screen"><p class=peach-pairing-headline>Add a device</p><input class=peach-pairing-code-input type=text inputmode=numeric autocomplete=off autocorrect=off placeholder="000 000"aria-label="enter pairing code"><button class="peach-btn peach-btn--accent peach-btn--md peach-lock-submit"></button><p class=peach-pairing-hint>Both devices must be on the same WiFi.`),b=o(`<div class="peach-overlay-view ov-enter-right"><div class=peach-overlay-header><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label=Close><svg width=7 height=12 viewBox="0 0 7 12"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round><path d="M6 1L1 6L6 11"></path></svg></button><span class=peach-overlay-title>add a device</span><div class=peach-overlay-spacer></div></div><div class=peach-pairing-body>`),x=o(`<div class=peach-pairing-content><div class=peach-pairing-success-icon><svg width=32 height=32 viewBox="0 0 32 32"fill=none><circle cx=16 cy=16 r=14 stroke=var(--peach-health-ok) stroke-width=1.5></circle><path d="M10 16L14 20L22 12"stroke=var(--peach-health-ok) stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></div><p class=peach-pairing-headline>Paired!</p><p class="peach-pairing-subline peach-pairing-subline--center"></p><button class="peach-btn peach-btn--accent peach-btn--md peach-lock-submit">Done`),S=o(`<div class="peach-pairing-code peach-pairing-code--loading">`),C=o(`<button class="peach-pairing-code peach-pairing-code--expired">refresh`),w=o(`<div class=peach-pairing-code aria-label="pairing code">`),T=!0;function E(){return m()}function D(e){return e.length<=3?e:`${e.slice(0,3)} ${e.slice(3)}`}function O(o){let[s,m]=a(`show`),[O,k]=a(null),[A,j]=a(null),[M,N]=a(null),[P,F]=a(``),[I,L]=a(!1),[R,z]=a(null),[B,V]=a(null),H=null;function U(){H!==null&&(clearTimeout(H),H=null)}function W(e){let t=e;if(t?.type===`PAIRING_COMPLETED`&&t.payload?.deviceName){let e={deviceId:t.payload.deviceName,displayName:t.payload.deviceName,x25519PublicKey:``,pairedAt:Date.now()};U(),k(null),j(null),V(e),o.onPaired(e)}}async function G(){N(null),k(null),j(null),U();let e=await f({type:`START_PAIRING_SERVER`});if(!e.ok||!e.data){N(e.error===`pro_required`?`Sync requires Peach Pro.`:`Couldn't start the pairing server.`);return}k(e.data.token),j(e.data.expiresAt);let t=Math.max(0,e.data.expiresAt-Date.now());H=setTimeout(()=>{k(null),j(null),N(`Code expired — tap to refresh.`)},t)}async function K(){U(),k(null),j(null),await f({type:`STOP_PAIRING_SERVER`})}async function q(){await K(),await G()}async function J(e){s()!==e&&(e===`enter`?(await K(),z(null),F(``),m(`enter`)):(z(null),m(`show`),await G()))}function Y(e){F(D(e.currentTarget.value.replace(/[^0-9]/g,``).slice(0,6))),R()&&z(null)}function X(){return P().replace(/\D/g,``)}async function Z(){let e=X();if(e.length!==6)return;L(!0),z(null);let t=await f({type:`CONNECT_WITH_CODE`,payload:{token:e}});L(!1);let n=t;if(!n.ok){z(n.error===`no peer responded to pairing code`||(n.error??``).includes(`resolve failed`)?`Couldn't find that device. Make sure both are on the same WiFi.`:n.error===`pair_rejected`?`The other device declined.`:n.error===`invalid_code`?`Enter all six digits.`:`Couldn't connect. Try again.`);return}let r=n.data?.deviceName??`Peach`,i={deviceId:r,displayName:r,x25519PublicKey:``,pairedAt:Date.now()};V(i),o.onPaired(i)}return i(()=>{e.isNativePlatform()||chrome.runtime.onMessage.addListener(W),G()}),p(()=>{e.isNativePlatform()||chrome.runtime.onMessage.removeListener(W),U()}),(()=>{var e=b(),i=e.firstChild,a=i.firstChild,p=i.nextSibling;return a.$$click=()=>{f({type:`STOP_PAIRING_SERVER`}),o.onClose()},c(p,u(d,{get when(){return B()},children:e=>(()=>{var n=x(),r=n.firstChild.nextSibling.nextSibling,i=r.nextSibling;return c(r,()=>e().displayName),t(i,`click`,o.onClose,!0),n})()}),null),c(p,u(d,{get when(){return l(()=>!B())()&&s()===`show`},get children(){var e=_(),t=e.firstChild.nextSibling;return t.nextSibling,c(e,u(d,{get when(){return O()},get fallback(){return u(d,{get when(){return!M()},get fallback(){return(()=>{var e=C();return e.$$click=()=>void q(),e})()},get children(){var e=S();return c(e,u(E,{})),e}})},children:e=>(()=>{var t=w();return c(t,()=>D(e())),t})()}),t),c(e,u(d,{get when(){return M()},get children(){var e=h();return c(e,M),e}}),null),c(e,u(d,{when:T,get children(){var e=g();return e.$$click=()=>void J(`enter`),e}}),null),e}}),null),c(p,u(d,{get when(){return l(()=>!B())()&&s()===`enter`},get children(){var e=y(),t=e.firstChild.nextSibling,i=t.nextSibling;return i.nextSibling,t.$$input=Y,n(t,`spellcheck`,!1),i.$$click=()=>void Z(),c(i,()=>I()?`Connecting…`:`Connect →`),c(e,u(d,{get when(){return R()},get children(){var e=h();return c(e,R),e}}),null),c(e,u(d,{when:T,get children(){var e=v();return e.$$click=()=>void J(`show`),r(()=>e.disabled=I()),e}}),null),r(e=>{var n=I(),r=X().length!==6||I();return n!==e.e&&(t.disabled=e.e=n),r!==e.t&&(i.disabled=e.t=r),e},{e:void 0,t:void 0}),r(()=>t.value=P()),e}}),null),e})()}s([`click`,`input`]);export{O as SyncPairingView};\ No newline at end of filedist-mobile/assets/TrashView-mMBZulR0.js+1 −0
@@ -0,0 +1 @@1+import{A as e,J as t,K as n,L as r,M as i,N as a,P as o,U as s,V as c,k as l,z as u}from"./index-Dd8_N7xu.js";var d=r(`<div class=peach-list-empty><span>loading...`),f=r(`<div class=peach-list-empty style="padding:48px 20px;flex-direction:column;gap:6px"><span style=font-size:13px;color:var(--peach-t1)>Trash is empty.</span><span style=font-size:11px;color:var(--peach-t2)>Deleted entries appear here before being removed permanently.`),p=r(`<span class=peach-trash-purge-confirm-label>delete all permanently?`),m=r(`<button class="peach-btn peach-btn--sm peach-btn--danger">yes`),h=r(`<button class="peach-btn peach-btn--ghost peach-btn--sm">cancel`),g=r(`<div class="peach-settings-group peach-trash-list"><p class=peach-settings-sub-label> </p><div class=peach-trash-footer>`),_=r(`<div class="peach-overlay-view ov-enter-right"style=display:flex><div class=peach-overlay-header><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label=Back><svg width=7 height=12 viewBox="0 0 7 12"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round><path d="M6 1L1 6L6 11"></path></svg></button><span class=peach-overlay-title>trash</span><div class=peach-overlay-spacer></div></div><div class=peach-settings-body>`),v=r(`<button class="peach-btn peach-btn--sm peach-btn--danger">delete`),y=r(`<div class=peach-trash-entry-row><div class=peach-trash-entry-info><span class=peach-trash-entry-title></span><span class=peach-trash-entry-meta></span></div><div class=peach-trash-entry-actions><button class="peach-btn peach-btn--subtle peach-btn--sm">restore`),b=r(`<button class=peach-trash-delete-btn aria-label="Delete permanently">×`),x=r(`<button class=peach-trash-purge-all>permanently delete all`);function S(r){let[i,S]=n([]),[C,w]=n(!0),[T,E]=n(null),[D,O]=n(!1);t(async()=>{await k()});async function k(){w(!0),S((await l({type:`GET_DELETED_ENTRIES`})).data??[]),w(!1)}async function A(e){await l({type:`RESTORE_ENTRY`,payload:{id:e}}),r.onRestored(),await k()}async function j(e){await l({type:`PURGE_ENTRY`,payload:{id:e}}),E(null),await k()}async function M(){for(let e of i())await l({type:`PURGE_ENTRY`,payload:{id:e.id}});O(!1),await k()}function N(e){return e?new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`}):``}return(()=>{var t=_(),n=t.firstChild,l=n.firstChild,S=n.nextSibling;return e(l,`click`,r.onBack,!0),a(S,s(c,{get when(){return C()},get children(){return d()}}),null),a(S,s(c,{get when(){return o(()=>!C())()&&i().length===0},get children(){return f()}}),null),a(S,s(c,{get when(){return o(()=>!C())()&&i().length>0},get children(){var e=g(),t=e.firstChild,n=t.firstChild,r=t.nextSibling;return a(t,()=>i().length,n),a(t,()=>i().length===1?`entry`:`entries`,null),a(e,s(u,{get each(){return i()},children:e=>(()=>{var t=y(),n=t.firstChild,r=n.firstChild,i=r.nextSibling,l=n.nextSibling,u=l.firstChild;return a(r,()=>e.title),a(i,()=>N(e.deletedAt),null),a(i,(()=>{var t=o(()=>!!e.url);return()=>t()?` · ${e.url.replace(/^https?:\/\//,``).split(`/`)[0]}`:``})(),null),u.$$click=()=>void A(e.id),a(l,s(c,{get when(){return T()===e.id},get fallback(){return(()=>{var t=b();return t.$$click=()=>E(e.id),t})()},get children(){return[(()=>{var t=v();return t.$$click=()=>void j(e.id),t})(),(()=>{var e=h();return e.$$click=()=>E(null),e})()]}}),null),t})()}),r),a(r,s(c,{get when(){return D()},get fallback(){return(()=>{var e=x();return e.$$click=()=>O(!0),e})()},get children(){return[p(),(()=>{var e=m();return e.$$click=()=>void M(),e})(),(()=>{var e=h();return e.$$click=()=>O(!1),e})()]}})),e}}),null),t})()}i([`click`]);export{S as TrashView};\ No newline at end of filedist-mobile/assets/capacitor-pairing-handshake-CrTUHO4K.js+1 −0
@@ -0,0 +1 @@1+import{n as e,t}from"./sync-wire-O_oTp2Oy.js";import{r as n,t as r}from"./noise-js-Crku9Lwa.js";var i=1e4;function a(e){if(e.length%2!=0)throw Error(`invalid hex`);let t=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)t[n/2]=parseInt(e.slice(n,n+2),16);return t}function o(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/g,``)}function s(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(Math.ceil(e.length/4)*4,`=`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e+=1)r[e]=n.charCodeAt(e);return r}async function c(e,t,c){if(e.wsPort===void 0)throw Error(`peer did not advertise a WebSocket port`);let l=`ws://${e.host}:${e.wsPort}/`,u=await new Promise((e,t)=>{let n=new WebSocket(l);n.binaryType=`arraybuffer`;let r=setTimeout(()=>{try{n.close()}catch{}t(Error(`WebSocket open timeout`))},i);n.addEventListener(`open`,()=>{clearTimeout(r),e(n)}),n.addEventListener(`error`,()=>{clearTimeout(r),t(Error(`Cannot connect to ${l}`))})}),d=[],f=null,p=null,m=!1,h=null;u.addEventListener(`message`,e=>{let t=new Uint8Array(e.data);if(f){let e=f;f=null,p=null,e(t)}else d.push(t)}),u.addEventListener(`close`,()=>{if(m=!0,p){let e=p;f=null,p=null,e(Error(`WebSocket closed during handshake`))}}),u.addEventListener(`error`,()=>{if(h=`websocket_error`,p){let e=p;f=null,p=null,e(Error(`WebSocket error`))}});function g(e){if(m)return Promise.reject(Error(`WebSocket closed`));let t=new Uint8Array(e);return u.send(t.buffer),Promise.resolve()}function _(){return d.length>0?Promise.resolve(d.shift()):m?Promise.reject(Error(`WebSocket closed`)):new Promise((e,t)=>{f=e,p=t})}let v=a(e.x25519PublicKey),y=await r(v,g,_);await n(y,t,c,v,async e=>{await g(y.encrypt(e))},async()=>y.decrypt(await _()));let b=[],x=[],S=[];return u.addEventListener(`message`,e=>{try{let t=new Uint8Array(e.data),n=o(y.decrypt(t));for(let e of b)e(n)}catch(e){let t=e instanceof Error?e.message:String(e);for(let e of x)e(t)}}),u.addEventListener(`close`,()=>{for(let e of S)e()}),u.addEventListener(`error`,()=>{let e=h||`websocket_error`;for(let t of x)t(e)}),{send:async e=>{let t=s(e);await g(y.encrypt(t))},onFrame:e=>(b.push(e),()=>{let t=b.indexOf(e);t>=0&&b.splice(t,1)}),onError:e=>(x.push(e),()=>{let t=x.indexOf(e);t>=0&&x.splice(t,1)}),onClose:e=>(S.push(e),()=>{let t=S.indexOf(e);t>=0&&S.splice(t,1)}),close:()=>{try{u.close()}catch{}}}}var l=3e4;async function u(n,r,i,a,o){let s=await c(n,r,i);try{let n=new Promise((e,n)=>{let r=setTimeout(()=>{c(),n(Error(`pairing response timeout`))},l),i=s.onFrame(r=>{try{let n=t(r);c(),e(n)}catch(e){c(),n(e instanceof Error?e:Error(String(e)))}}),a=s.onError(e=>{c(),n(Error(e))}),o=s.onClose(()=>{c(),n(Error(`connection closed before pairing response`))});function c(){clearTimeout(r),i(),a(),o()}});await s.send(e({type:`PAIR_REQUEST`,public_key_hex:a,device_name:o}));let r=await n;if(r.type===`PAIR_ACCEPT`)return{publicKeyHex:r.public_key_hex,deviceName:r.device_name};throw r.type===`PAIR_REJECT`?Error(`pair_rejected:${r.reason}`):Error(`unexpected_response:${r.type}`)}finally{try{s.close()}catch{}}}export{u as runCapacitorPairingHandshake};\ No newline at end of filedist-mobile/assets/capacitor-pairing-server-2RAeT9Ze.js+1 −0
@@ -0,0 +1 @@1+import{i as e}from"./dist-C5po-C0e.js";import{n as t,t as n}from"./sync-wire-O_oTp2Oy.js";import{i as r,n as i}from"./noise-js-Crku9Lwa.js";var a=1024*1024,o=300*1e3,s=e(`Sync`);function c(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function l(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t)}async function u(e){let{tcpPort:u}=await s.startPairingTcpServer();await s.startPairingBeacon({token:e.token,tcpPort:u,x25519PublicKey:e.publicKeyHex,deviceId:e.deviceId,name:e.deviceName});let f=new Uint8Array,p=[],m=!1,h=null,g=!1;function _(e){let t=new Uint8Array(f.length+e.length);t.set(f,0),t.set(e,f.length),f=t,y()}function v(){if(f.length<4)return null;let e=new DataView(f.buffer,f.byteOffset,4).getUint32(0,!1);if(e>a)throw Error(`incoming frame too large: ${e}`);if(f.length<4+e)return null;let t=f.slice(4,4+e);return f=f.slice(4+e),t}function y(){for(;p.length>0;){let e;try{e=v()}catch(e){p.shift()?.reject(e instanceof Error?e:Error(String(e)));continue}if(!e)return;p.shift().resolve(e)}}function b(e){for(;p.length>0;)p.shift().reject(e)}function x(){return m&&f.length<4?Promise.reject(h??Error(`connection closed`)):new Promise((e,t)=>{p.push({resolve:e,reject:t}),y()})}async function S(e){if(m)throw h??Error(`connection closed`);let t=e.length,n=new Uint8Array(4+t);new DataView(n.buffer).setUint32(0,t,!1),n.set(e,4),await s.sendPairingChunk({dataBase64:l(n)})}let C=await s.addListener(`pairingChunk`,e=>{if(!g)try{_(c(e.dataBase64))}catch(e){b(e instanceof Error?e:Error(String(e)))}}),w=await s.addListener(`pairingEnded`,()=>{m=!0,h??=Error(`connection closed`),b(h)}),T=await s.addListener(`pairingConnected`,()=>{E()});async function E(){let a;try{a=await i(e.privateKey,e.publicKey,S,x)}catch(e){console.warn(`[peach-pair] noise responder failed:`,e),D();return}let s=async e=>S(a.encrypt(e)),c=async()=>a.decrypt(await x()),l;try{l=(await r(a,e.privateKey,e.publicKey,s,c)).initiatorPublicKey}catch(e){console.warn(`[peach-pair] auth failed:`,e),D();return}let u;try{let e=await Promise.race([c(),new Promise((e,t)=>setTimeout(()=>t(Error(`PAIR_REQUEST timeout`)),o))]),t=n(new TextDecoder().decode(e));if(t.type!==`PAIR_REQUEST`)throw Error(`unexpected frame: ${t.type}`);u=t}catch(e){console.warn(`[peach-pair] PAIR_REQUEST read failed:`,e),D();return}if(u.public_key_hex.toLowerCase()!==d(l)){console.warn(`[peach-pair] PAIR_REQUEST public_key_hex did not match authenticated key`),D();return}e.onPairRequest?.(u.device_name);try{await s(new TextEncoder().encode(t({type:`PAIR_ACCEPT`,public_key_hex:d(e.publicKey),device_name:e.deviceName})))}catch(e){console.warn(`[peach-pair] PAIR_ACCEPT send failed:`,e),D();return}try{await e.onPaired({deviceId:u.public_key_hex,displayName:u.device_name,publicKeyHex:u.public_key_hex})}catch(e){console.warn(`[peach-pair] onPaired callback failed:`,e)}D()}async function D(){if(!g){g=!0;try{await C.remove()}catch{}try{await w.remove()}catch{}try{await T.remove()}catch{}try{await s.stopPairingServer()}catch{}m=!0,h??=Error(`pairing server stopped`),b(h)}}return{stop:D}}function d(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}export{u as startCapacitorPairingServer};\ No newline at end of filedist-mobile/assets/firefox-passkey-DWv1TBph.js+1 −0
@@ -0,0 +1 @@1+import{k as e}from"./index-Dd8_N7xu.js";function t(e){let t=e instanceof Uint8Array?e:new Uint8Array(e),n=``;for(let e=0;e<t.length;e++)n+=String.fromCharCode(t[e]);return btoa(n).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function n(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`)+`===`.slice((e.length+3)%4),n=atob(t),r=new ArrayBuffer(n.length),i=new Uint8Array(r);for(let e=0;e<n.length;e++)i[e]=n.charCodeAt(e);return r}async function r(r){if(!r.challenge||!r.userHandle)return{ok:!1,error:`Firefox pending request missing challenge or userHandle`};let i=n(r.challenge),a=n(r.userHandle),o;try{let e=await navigator.credentials.create({publicKey:{challenge:i,rp:{id:r.rpId,name:r.rpName},user:{id:a,name:r.userName,displayName:r.userDisplayName??r.userName},pubKeyCredParams:[{type:`public-key`,alg:-7},{type:`public-key`,alg:-8}],authenticatorSelection:{residentKey:`preferred`,userVerification:`preferred`},timeout:6e4}});if(!e||!(e instanceof PublicKeyCredential))return{ok:!1,error:`no credential returned`};o=e}catch(e){return e instanceof DOMException&&e.name===`NotAllowedError`?{ok:!1,error:`user cancelled`}:{ok:!1,error:e instanceof Error?e.message:`credential creation failed`}}let s=o.response,c=s.getPublicKeyAlgorithm()===-8?-8:-7,l=s.getPublicKey(),u=typeof s.getTransports==`function`?s.getTransports():[`internal`],d=await e({type:`COMPLETE_FIREFOX_PASSKEY_CREATE`,payload:{requestId:r.requestId,rpId:r.rpId,rpName:r.rpName,userName:r.userName,userDisplayName:r.userDisplayName,userHandle:r.userHandle,credentialId:o.id,publicKeyCose:l?t(l):``,algorithm:c,transports:u,backupEligible:!1,backupState:!1}});return d?.ok?{ok:!0}:{ok:!1,error:d?.error??`vault store failed`}}export{r as createFirefoxPasskey};\ No newline at end of filedist-mobile/assets/index-Dd8_N7xu.js+15 −0
@@ -0,0 +1,15 @@1+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/web-CRQJo86w.js","assets/dist-C5po-C0e.js","assets/chunk-CilyBKbf.js","assets/messages-BN1MeRf_.js","assets/preload-helper-D4M6sveU.js","assets/storage-COHREhIV.js","assets/vault-ByqoQOTt.js","assets/license-ZF1DwcYD.js","assets/sync-lifecycle-kQgcH5o6.js","assets/pairing-server-state-TxS-duki.js","assets/sync-storage-DsbiOwL6.js","assets/sync-kQd3KSmO.js","assets/sync-wire-O_oTp2Oy.js","assets/main-BnSAnK-x.js","assets/Export-DSzExNsF.js","assets/RuneCanvas-BeGgO6iv.js","assets/Settings-u6xpUMHK.js","assets/Health-gAfwVuy9.js","assets/Panic-D2FjhS40.js","assets/SyncPairing-1TEAh1j_.js"])))=>i.map(i=>d[i]);2+import{n as e,r as t,t as n}from"./chunk-CilyBKbf.js";import{i as r,t as i}from"./dist-C5po-C0e.js";import{t as a}from"./preload-helper-D4M6sveU.js";import{a as o,n as s,r as c}from"./storage-COHREhIV.js";var l=new Map;function u(){return{addListener:()=>{},removeListener:()=>{}}}async function d(e){return e===null?(await o.keys()).keys:Array.isArray(e)?e:typeof e==`string`?[e]:Object.keys(e)}async function f(e){let t={};for(let n of await d(e)){let{value:e}=await o.get({key:n});if(e!==null)try{t[n]=JSON.parse(e)}catch{t[n]=e}}return t}async function p(e){for(let[t,n]of Object.entries(e))await o.set({key:t,value:JSON.stringify(n)})}async function m(e){let t=Array.isArray(e)?e:[e];for(let e of t)await o.remove({key:e})}function h(e){return e===null?[...l.keys()]:Array.isArray(e)?e:typeof e==`string`?[e]:Object.keys(e)}var g={runtime:{id:`peach-mobile`,sendMessage:(e,t)=>{let n={ok:!1,error:`NO_SERVICE_WORKER`};return t?.(n),Promise.resolve(n)},onMessage:u(),connect:()=>({disconnect:()=>{},onMessage:u(),onDisconnect:u(),postMessage:()=>{}}),lastError:null},storage:{local:{get:f,set:p,remove:m,clear:()=>o.clear()},session:{get:async e=>{let t={};for(let n of h(e))l.has(n)&&(t[n]=l.get(n));return t},set:async e=>{for(let[t,n]of Object.entries(e))l.set(t,n)},remove:async e=>{let t=Array.isArray(e)?e:[e];for(let e of t)l.delete(e)},clear:async()=>{l.clear()}},onChanged:u()},alarms:{clear:()=>{},create:()=>{},onAlarm:u()},idle:{setDetectionInterval:()=>{},onStateChanged:u()},tabs:{query:(e,t)=>(t?.([]),Promise.resolve([])),sendMessage:()=>Promise.resolve(void 0),create:()=>Promise.resolve(void 0),onActivated:u(),onUpdated:u()},action:{openPopup:()=>Promise.resolve(),setBadgeText:()=>Promise.resolve(),setBadgeBackgroundColor:()=>Promise.resolve()},scripting:{executeScript:()=>Promise.resolve()}};window.chrome=g,(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var _={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return v(this.context.count)},getNextContextId(){return v(this.context.count++)}};function v(e){let t=String(e),n=t.length-1;return _.context.id+(n?String.fromCharCode(96+n):``)+t}function y(e){_.context=e}function b(){return{..._.context,id:_.getNextContextId(),count:0}}var x=(e,t)=>e===t,S=Symbol(`solid-track`),C={equals:x},w=null,T=we,E=1,D=2,O={owned:null,cleanups:null,context:null,owner:null},k={},A=null,j=null,M=null,N=null,P=null,F=null,I=null,L=0;function R(e,t){let n=P,r=A,i=e.length===0,a=t===void 0?r:t,o=i?O:{owned:null,cleanups:null,context:a?a.context:null,owner:a},s=i?e:()=>e(()=>H(()=>ke(o)));A=o,P=null;try{return Se(s,!0)}finally{P=n,A=r}}function z(e,t){t=t?Object.assign({},C,t):C;let n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0};return[ve.bind(n),e=>(typeof e==`function`&&(e=j&&j.running&&j.sources.has(n)?e(n.tValue):e(n.value)),ye(n,e))]}function ee(e,t,n){let r=xe(e,t,!0,E);M&&j&&j.running?F.push(r):be(r)}function B(e,t,n){let r=xe(e,t,!1,E);M&&j&&j.running?F.push(r):be(r)}function te(e,t,n){T=Ee;let r=xe(e,t,!1,E),i=ge&&me(ge);i&&(r.suspense=i),(!n||!n.render)&&(r.user=!0),I?I.push(r):be(r)}function V(e,t,n){n=n?Object.assign({},C,n):C;let r=xe(e,t,!0,0);return r.observers=null,r.observerSlots=null,r.comparator=n.equals||void 0,M&&j&&j.running?(r.tState=E,F.push(r)):be(r),ve.bind(r)}function ne(e){return e&&typeof e==`object`&&`then`in e}function re(e,t,n){let r,i,a;typeof t==`function`?(r=e,i=t,a=n||{}):(r=!0,i=e,a=t||{});let o=null,s=k,c=null,l=!1,u=!1,d=`initialValue`in a,f=typeof r==`function`&&V(r),p=new Set,[m,h]=(a.storage||z)(a.initialValue),[g,v]=z(void 0),[y,b]=z(void 0,{equals:!1}),[x,S]=z(d?`ready`:`unresolved`);_.context&&(c=_.getNextContextId(),a.ssrLoadFrom===`initial`?s=a.initialValue:_.load&&_.has(c)&&(s=_.load(c)));function C(e,t,n,r){return o===e&&(o=null,r!==void 0&&(d=!0),(e===s||t===s)&&a.onHydrated&&queueMicrotask(()=>a.onHydrated(r,{value:t})),s=k,j&&e&&l?(j.promises.delete(e),l=!1,Se(()=>{j.running=!0,w(t,n)},!1)):w(t,n)),t}function w(e,t){Se(()=>{t===void 0&&h(()=>e),S(t===void 0?d?`ready`:`unresolved`:`errored`),v(t);for(let e of p.keys())e.decrement();p.clear()},!1)}function T(){let e=ge&&me(ge),t=m(),n=g();if(n!==void 0&&!o)throw n;return P&&!P.user&&e&&ee(()=>{y(),o&&(e.resolved&&j&&l?j.promises.add(o):p.has(e)||(e.increment(),p.add(e)))}),t}function E(e=!0){if(e!==!1&&u)return;u=!1;let t=f?f():r;if(l=j&&j.running,t==null||t===!1){C(o,H(m));return}j&&o&&j.promises.delete(o);let n,a=s===k?H(()=>{try{return i(t,{value:m(),refetching:e})}catch(e){n=e}}):s;if(n!==void 0){C(o,void 0,je(n),t);return}else if(!ne(a))return C(o,a,void 0,t),a;return o=a,`v`in a?(a.s===1?C(o,a.v,void 0,t):C(o,void 0,je(a.v),t),a):(u=!0,queueMicrotask(()=>u=!1),Se(()=>{S(d?`refreshing`:`pending`),b()},!1),a.then(e=>C(a,e,void 0,t),e=>C(a,void 0,je(e),t)))}Object.defineProperties(T,{state:{get:()=>x()},error:{get:()=>g()},loading:{get(){let e=x();return e===`pending`||e===`refreshing`}},latest:{get(){if(!d)return T();let e=g();if(e&&!o)throw e;return m()}}});let D=A;return f?ee(()=>(D=A,E(!1))):E(!1),[T,{refetch:e=>ce(D,()=>E(e)),mutate:h}]}function H(e){if(!N&&P===null)return e();let t=P;P=null;try{return N?N.untrack(e):e()}finally{P=t}}function ie(e,t,n){let r=Array.isArray(e),i,a=n&&n.defer;return n=>{let o;if(r){o=Array(e.length);for(let t=0;t<e.length;t++)o[t]=e[t]()}else o=e();if(a)return a=!1,n;let s=H(()=>t(o,i,n));return i=o,s}}function ae(e){te(()=>H(e))}function oe(e){return A===null||(A.cleanups===null?A.cleanups=[e]:A.cleanups.push(e)),e}function se(){return A}function ce(e,t){let n=A,r=P;A=e,P=null;try{return Se(t,!0)}catch(e){Ne(e)}finally{A=n,P=r}}function le(e){if(j&&j.running)return e(),j.done;let t=P,n=A;return Promise.resolve().then(()=>{P=t,A=n;let r;return(M||ge)&&(r=j||={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0},r.done||=new Promise(e=>r.resolve=e),r.running=!0),Se(e,!1),P=A=null,r?r.done:void 0})}var[ue,de]=z(!1);function fe(e){I.push.apply(I,e),e.length=0}function pe(e,t){let n=Symbol(`context`);return{id:n,Provider:Fe(n),defaultValue:e}}function me(e){let t;return A&&A.context&&(t=A.context[e.id])!==void 0?t:e.defaultValue}function he(e){let t=V(e),n=V(()=>Pe(t()));return n.toArray=()=>{let e=n();return Array.isArray(e)?e:e==null?[]:[e]},n}var ge;function _e(){return ge||=pe()}function ve(){let e=j&&j.running;if(this.sources&&(e?this.tState:this.state))if((e?this.tState:this.state)===E)be(this);else{let e=F;F=null,Se(()=>De(this),!1),F=e}if(P){let e=this.observers?this.observers.length:0;P.sources?(P.sources.push(this),P.sourceSlots.push(e)):(P.sources=[this],P.sourceSlots=[e]),this.observers?(this.observers.push(P),this.observerSlots.push(P.sources.length-1)):(this.observers=[P],this.observerSlots=[P.sources.length-1])}return e&&j.sources.has(this)?this.tValue:this.value}function ye(e,t,n){let r=j&&j.running&&j.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(r,t)){if(j){let r=j.running;(r||!n&&j.sources.has(e))&&(j.sources.add(e),e.tValue=t),r||(e.value=t)}else e.value=t;e.observers&&e.observers.length&&Se(()=>{for(let t=0;t<e.observers.length;t+=1){let n=e.observers[t],r=j&&j.running;r&&j.disposed.has(n)||((r?!n.tState:!n.state)&&(n.pure?F.push(n):I.push(n),n.observers&&Oe(n)),r?n.tState=E:n.state=E)}if(F.length>1e6)throw F=[],Error()},!1)}return t}function be(e){if(!e.fn)return;ke(e);let t=L;U(e,j&&j.running&&j.sources.has(e)?e.tValue:e.value,t),j&&!j.running&&j.sources.has(e)&&queueMicrotask(()=>{Se(()=>{j&&(j.running=!0),P=A=e,U(e,e.tValue,t),P=A=null},!1)})}function U(e,t,n){let r,i=A,a=P;P=A=e;try{r=e.fn(t)}catch(t){return e.pure&&(j&&j.running?(e.tState=E,e.tOwned&&e.tOwned.forEach(ke),e.tOwned=void 0):(e.state=E,e.owned&&e.owned.forEach(ke),e.owned=null)),e.updatedAt=n+1,Ne(t)}finally{P=a,A=i}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&`observers`in e?ye(e,r,!0):j&&j.running&&e.pure?(j.sources.has(e)||(e.value=r),j.sources.add(e),e.tValue=r):e.value=r,e.updatedAt=n)}function xe(e,t,n,r=E,i){let a={fn:e,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:A,context:A?A.context:null,pure:n};if(j&&j.running&&(a.state=0,a.tState=r),A===null||A!==O&&(j&&j.running&&A.pure?A.tOwned?A.tOwned.push(a):A.tOwned=[a]:A.owned?A.owned.push(a):A.owned=[a]),N&&a.fn){let e=a.fn,[t,n]=z(void 0,{equals:!1}),r=N.factory(e,n);oe(()=>r.dispose());let i,o=()=>le(n).then(()=>{i&&=(i.dispose(),void 0)});a.fn=n=>(t(),j&&j.running?(i||=N.factory(e,o),i.track(n)):r.track(n))}return a}function W(e){let t=j&&j.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===D)return De(e);if(e.suspense&&H(e.suspense.inFallback))return e.suspense.effects.push(e);let n=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<L);){if(t&&j.disposed.has(e))return;(t?e.tState:e.state)&&n.push(e)}for(let r=n.length-1;r>=0;r--){if(e=n[r],t){let t=e,i=n[r+1];for(;(t=t.owner)&&t!==i;)if(j.disposed.has(t))return}if((t?e.tState:e.state)===E)be(e);else if((t?e.tState:e.state)===D){let t=F;F=null,Se(()=>De(e,n[0]),!1),F=t}}}function Se(e,t){if(F)return e();let n=!1;t||(F=[]),I?n=!0:I=[],L++;try{let t=e();return Ce(n),t}catch(e){n||(I=null),F=null,Ne(e)}}function Ce(e){if(F&&=(M&&j&&j.running?Te(F):we(F),null),e)return;let t;if(j){if(!j.promises.size&&!j.queue.size){let e=j.sources,n=j.disposed;I.push.apply(I,j.effects),t=j.resolve;for(let e of I)`tState`in e&&(e.state=e.tState),delete e.tState;j=null,Se(()=>{for(let e of n)ke(e);for(let t of e){if(t.value=t.tValue,t.owned)for(let e=0,n=t.owned.length;e<n;e++)ke(t.owned[e]);t.tOwned&&(t.owned=t.tOwned),delete t.tValue,delete t.tOwned,t.tState=0}de(!1)},!1)}else if(j.running){j.running=!1,j.effects.push.apply(j.effects,I),I=null,de(!0);return}}let n=I;I=null,n.length&&Se(()=>T(n),!1),t&&t()}function we(e){for(let t=0;t<e.length;t++)W(e[t])}function Te(e){for(let t=0;t<e.length;t++){let n=e[t],r=j.queue;r.has(n)||(r.add(n),M(()=>{r.delete(n),Se(()=>{j.running=!0,W(n)},!1),j&&(j.running=!1)}))}}function Ee(e){let t,n=0;for(t=0;t<e.length;t++){let r=e[t];r.user?e[n++]=r:W(r)}if(_.context){if(_.count){_.effects||=[],_.effects.push(...e.slice(0,n));return}y()}for(_.effects&&(_.done||!_.count)&&(e=[..._.effects,...e],n+=_.effects.length,delete _.effects),t=0;t<n;t++)W(e[t])}function De(e,t){let n=j&&j.running;n?e.tState=0:e.state=0;for(let r=0;r<e.sources.length;r+=1){let i=e.sources[r];if(i.sources){let e=n?i.tState:i.state;e===E?i!==t&&(!i.updatedAt||i.updatedAt<L)&&W(i):e===D&&De(i,t)}}}function Oe(e){let t=j&&j.running;for(let n=0;n<e.observers.length;n+=1){let r=e.observers[n];(t?!r.tState:!r.state)&&(t?r.tState=D:r.state=D,r.pure?F.push(r):I.push(r),r.observers&&Oe(r))}}function ke(e){let t;if(e.sources)for(;e.sources.length;){let t=e.sources.pop(),n=e.sourceSlots.pop(),r=t.observers;if(r&&r.length){let e=r.pop(),i=t.observerSlots.pop();n<r.length&&(e.sourceSlots[i]=n,r[n]=e,t.observerSlots[n]=i)}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)ke(e.tOwned[t]);delete e.tOwned}if(j&&j.running&&e.pure)Ae(e,!0);else if(e.owned){for(t=e.owned.length-1;t>=0;t--)ke(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}j&&j.running?e.tState=0:e.state=0}function Ae(e,t){if(t||(e.tState=0,j.disposed.add(e)),e.owned)for(let t=0;t<e.owned.length;t++)Ae(e.owned[t])}function je(e){return e instanceof Error?e:Error(typeof e==`string`?e:`Unknown error`,{cause:e})}function Me(e,t,n){try{for(let n of t)n(e)}catch(e){Ne(e,n&&n.owner||null)}}function Ne(e,t=A){let n=w&&t&&t.context&&t.context[w],r=je(e);if(!n)throw r;I?I.push({fn(){Me(r,n,t)},state:E}):Me(r,n,t)}function Pe(e){if(typeof e==`function`&&!e.length)return Pe(e());if(Array.isArray(e)){let t=[];for(let n=0;n<e.length;n++){let r=Pe(e[n]);Array.isArray(r)?t.push.apply(t,r):t.push(r)}return t}return e}function Fe(e,t){return function(t){let n;return B(()=>n=H(()=>(A.context={...A.context,[e]:t.value},he(()=>t.children))),void 0),n}}var Ie=Symbol(`fallback`);function Le(e){for(let t=0;t<e.length;t++)e[t]()}function Re(e,t,n={}){let r=[],i=[],a=[],o=0,s=t.length>1?[]:null;return oe(()=>Le(a)),()=>{let c=e()||[],l=c.length,u,d;return c[S],H(()=>{let e,t,p,m,h,g,_,v,y;if(l===0)o!==0&&(Le(a),a=[],r=[],i=[],o=0,s&&=[]),n.fallback&&(r=[Ie],i[0]=R(e=>(a[0]=e,n.fallback())),o=1);else if(o===0){for(i=Array(l),d=0;d<l;d++)r[d]=c[d],i[d]=R(f);o=l}else{for(p=Array(l),m=Array(l),s&&(h=Array(l)),g=0,_=Math.min(o,l);g<_&&r[g]===c[g];g++);for(_=o-1,v=l-1;_>=g&&v>=g&&r[_]===c[v];_--,v--)p[v]=i[_],m[v]=a[_],s&&(h[v]=s[_]);for(e=new Map,t=Array(v+1),d=v;d>=g;d--)y=c[d],u=e.get(y),t[d]=u===void 0?-1:u,e.set(y,d);for(u=g;u<=_;u++)y=r[u],d=e.get(y),d!==void 0&&d!==-1?(p[d]=i[u],m[d]=a[u],s&&(h[d]=s[u]),d=t[d],e.set(y,d)):a[u]();for(d=g;d<l;d++)d in p?(i[d]=p[d],a[d]=m[d],s&&(s[d]=h[d],s[d](d))):i[d]=R(f);i=i.slice(0,o=l),r=c.slice(0)}return i});function f(e){if(a[d]=e,s){let[e,n]=z(d);return s[d]=n,t(c[d],e)}return t(c[d])}}}function ze(e,t,n={}){let r=[],i=[],a=[],o=[],s=0,c;return oe(()=>Le(a)),()=>{let l=e()||[],u=l.length;return l[S],H(()=>{if(u===0)return s!==0&&(Le(a),a=[],r=[],i=[],s=0,o=[]),n.fallback&&(r=[Ie],i[0]=R(e=>(a[0]=e,n.fallback())),s=1),i;for(r[0]===Ie&&(a[0](),a=[],r=[],i=[],s=0),c=0;c<u;c++)c<r.length&&r[c]!==l[c]?o[c](()=>l[c]):c>=r.length&&(i[c]=R(d));for(;c<r.length;c++)a[c]();return s=o.length=a.length=u,r=l.slice(0),i=i.slice(0,s)});function d(e){a[c]=e;let[n,r]=z(l[c]);return o[c]=r,t(n,c)}}}var Be=!1;function G(e,t){if(Be&&_.context){let n=_.context;y(b());let r=H(()=>e(t||{}));return y(n),r}return H(()=>e(t||{}))}function Ve(e){let t,n,r=r=>{let i=_.context;if(i){let[r,a]=z();_.count||=0,_.count++,(n||=e()).then(e=>{!_.done&&y(i),_.count--,a(()=>e.default),y()}),t=r}else if(!t){let[r]=re(()=>(n||=e()).then(e=>e.default));t=r}let a;return V(()=>(a=t())?H(()=>{if(!i||_.done)return a(r);let e=_.context;y(i);let t=a(r);return y(e),t}):``)};return r.preload=()=>n||((n=e()).then(e=>t=()=>e.default),n),r}var He=e=>`Stale read from <${e}>.`;function Ue(e){let t=`fallback`in e&&{fallback:()=>e.fallback};return V(Re(()=>e.each,e.children,t||void 0))}function We(e){let t=`fallback`in e&&{fallback:()=>e.fallback};return V(ze(()=>e.each,e.children,t||void 0))}function K(e){let t=e.keyed,n=V(()=>e.when,void 0,void 0),r=t?n:V(n,void 0,{equals:(e,t)=>!e==!t});return V(()=>{let i=r();if(i){let a=e.children;return typeof a==`function`&&a.length>0?H(()=>a(t?i:()=>{if(!H(r))throw He(`Show`);return n()})):a}return e.fallback},void 0,void 0)}function Ge(e){let t=he(()=>e.children),n=V(()=>{let e=t(),n=Array.isArray(e)?e:[e],r=()=>void 0;for(let e=0;e<n.length;e++){let t=e,i=n[e],a=r,o=V(()=>a()?void 0:i.when,void 0,void 0),s=i.keyed?o:V(o,void 0,{equals:(e,t)=>!e==!t});r=()=>a()||(s()?[t,o,i]:void 0)}return r});return V(()=>{let t=n()();if(!t)return e.fallback;let[r,i,a]=t,o=a.children;return typeof o==`function`&&o.length>0?H(()=>o(a.keyed?i():()=>{if(H(n)()?.[0]!==r)throw He(`Match`);return i()})):o},void 0,void 0)}function Ke(e){return e}var qe=pe();function Je(e){let t=0,n,r,i,a,o,[s,c]=z(!1),l=_e(),u={increment:()=>{++t===1&&c(!0)},decrement:()=>{--t===0&&c(!1)},inFallback:s,effects:[],resolved:!1},d=se();if(_.context&&_.load){let e=_.getContextId(),t=_.load(e);if(t&&(typeof t!=`object`||t.s!==1?i=t:_.gather(e)),i&&i!==`$$f`){let[t,n]=z(void 0,{equals:!1});a=t,i.then(()=>{if(_.done)return n();_.gather(e),y(r),n(),y()},e=>{o=e,n()})}}let f=me(qe);f&&(n=f.register(u.inFallback));let p;return oe(()=>p&&p()),G(l.Provider,{value:u,get children(){return V(()=>{if(o)throw o;if(r=_.context,a){a(),a=void 0;return}r&&i===`$$f`&&y();let t=V(()=>e.children);return V(a=>{let o=u.inFallback(),{showContent:s=!0,showFallback:c=!0}=n?n():{};if((!o||i&&i!==`$$f`)&&s)return u.resolved=!0,p&&p(),p=r=i=void 0,fe(u.effects),t();if(c)return p?a:R(t=>(p=t,r&&=(y({id:r.id+`F`,count:0}),void 0),e.fallback),d)})})}})}var q=e=>V(()=>e());function Ye(e,t,n){let r=n.length,i=t.length,a=r,o=0,s=0,c=t[i-1].nextSibling,l=null;for(;o<i||s<a;){if(t[o]===n[s]){o++,s++;continue}for(;t[i-1]===n[a-1];)i--,a--;if(i===o){let t=a<r?s?n[s-1].nextSibling:n[a-s]:c;for(;s<a;)e.insertBefore(n[s++],t)}else if(a===s)for(;o<i;)(!l||!l.has(t[o]))&&t[o].remove(),o++;else if(t[o]===n[a-1]&&n[s]===t[i-1]){let r=t[--i].nextSibling;e.insertBefore(n[s++],t[o++].nextSibling),e.insertBefore(n[--a],r),t[i]=n[a]}else{if(!l){l=new Map;let e=s;for(;e<a;)l.set(n[e],e++)}let r=l.get(t[o]);if(r!=null)if(s<r&&r<a){let c=o,u=1,d;for(;++c<i&&c<a&&!((d=l.get(t[c]))==null||d!==r+u);)u++;if(u>r-s){let i=t[o];for(;s<r;)e.insertBefore(n[s++],i)}else e.replaceChild(n[s++],t[o++])}else o++;else t[o++].remove()}}}var Xe=`_$DX_DELEGATE`;function Ze(e,t,n,r={}){let i;return R(r=>{i=r,t===document?e():Z(t,e(),t.firstChild?null:void 0,n)},r.owner),()=>{i(),t.textContent=``}}function J(e,t,n,r){let i,a=()=>{let t=r?document.createElementNS(`http://www.w3.org/1998/Math/MathML`,`template`):document.createElement(`template`);return t.innerHTML=e,n?t.content.firstChild.firstChild:r?t.firstChild:t.content.firstChild},o=t?()=>H(()=>document.importNode(i||=a(),!0)):()=>(i||=a()).cloneNode(!0);return o.cloneNode=o,o}function Qe(e,t=window.document){let n=t[Xe]||(t[Xe]=new Set);for(let r=0,i=e.length;r<i;r++){let i=e[r];n.has(i)||(n.add(i),t.addEventListener(i,it))}}function Y(e,t,n){rt(e)||(n==null?e.removeAttribute(t):e.setAttribute(t,n))}function X(e,t){rt(e)||(t==null?e.removeAttribute(`class`):e.className=t)}function $e(e,t,n,r){if(r)Array.isArray(n)?(e[`$$${t}`]=n[0],e[`$$${t}Data`]=n[1]):e[`$$${t}`]=n;else if(Array.isArray(n)){let r=n[0];e.addEventListener(t,n[0]=t=>r.call(e,n[1],t))}else e.addEventListener(t,n,typeof n!=`function`&&n)}function et(e,t,n){if(!t)return n?Y(e,`style`):t;let r=e.style;if(typeof t==`string`)return r.cssText=t;typeof n==`string`&&(r.cssText=n=void 0),n||={},t||={};let i,a;for(a in n)t[a]??r.removeProperty(a),delete n[a];for(a in t)i=t[a],i!==n[a]&&(r.setProperty(a,i),n[a]=i);return n}function tt(e,t,n){n==null?e.style.removeProperty(t):e.style.setProperty(t,n)}function nt(e,t,n){return H(()=>e(t,n))}function Z(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!=`function`)return at(e,t,r,n);B(r=>at(e,t(),r,n),r)}function rt(e){return!!_.context&&!_.done&&(!e||e.isConnected)}function it(e){if(_.registry&&_.events&&_.events.find(([t,n])=>n===e))return;let t=e.target,n=`$$${e.type}`,r=e.target,i=e.currentTarget,a=t=>Object.defineProperty(e,`target`,{configurable:!0,value:t}),o=()=>{let r=t[n];if(r&&!t.disabled){let i=t[`${n}Data`];if(i===void 0?r.call(t,e):r.call(t,i,e),e.cancelBubble)return}return t.host&&typeof t.host!=`string`&&!t.host._$host&&t.contains(e.target)&&a(t.host),!0},s=()=>{for(;o()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,`currentTarget`,{configurable:!0,get(){return t||document}}),_.registry&&!_.done&&(_.done=_$HY.done=!0),e.composedPath){let n=e.composedPath();a(n[0]);for(let e=0;e<n.length-2&&(t=n[e],o());e++){if(t._$host){t=t._$host,s();break}if(t.parentNode===i)break}}else s();a(r)}function at(e,t,n,r,i){let a=rt(e);if(a){!n&&(n=[...e.childNodes]);let t=[];for(let e=0;e<n.length;e++){let r=n[e];r.nodeType===8&&r.data.slice(0,2)===`!$`?r.remove():t.push(r)}n=t}for(;typeof n==`function`;)n=n();if(t===n)return n;let o=typeof t,s=r!==void 0;if(e=s&&n[0]&&n[0].parentNode||e,o===`string`||o===`number`){if(a||o===`number`&&(t=t.toString(),t===n))return n;if(s){let i=n[0];i&&i.nodeType===3?i.data!==t&&(i.data=t):i=document.createTextNode(t),n=ct(e,n,r,i)}else n=n!==``&&typeof n==`string`?e.firstChild.data=t:e.textContent=t}else if(t==null||o===`boolean`){if(a)return n;n=ct(e,n,r)}else if(o===`function`)return B(()=>{let i=t();for(;typeof i==`function`;)i=i();n=at(e,i,n,r)}),()=>n;else if(Array.isArray(t)){let o=[],c=n&&Array.isArray(n);if(ot(o,t,n,i))return B(()=>n=at(e,o,n,r,!0)),()=>n;if(a){if(!o.length)return n;if(r===void 0)return n=[...e.childNodes];let t=o[0];if(t.parentNode!==e)return n;let i=[t];for(;(t=t.nextSibling)!==r;)i.push(t);return n=i}if(o.length===0){if(n=ct(e,n,r),s)return n}else c?n.length===0?st(e,o,r):Ye(e,n,o):(n&&ct(e),st(e,o));n=o}else if(t.nodeType){if(a&&t.parentNode)return n=s?[t]:t;if(Array.isArray(n)){if(s)return n=ct(e,n,r,t);ct(e,n,null,t)}else n==null||n===``||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}return n}function ot(e,t,n,r){let i=!1;for(let a=0,o=t.length;a<o;a++){let o=t[a],s=n&&n[e.length],c;if(!(o==null||o===!0||o===!1))if((c=typeof o)==`object`&&o.nodeType)e.push(o);else if(Array.isArray(o))i=ot(e,o,s)||i;else if(c===`function`)if(r){for(;typeof o==`function`;)o=o();i=ot(e,Array.isArray(o)?o:[o],Array.isArray(s)?s:[s])||i}else e.push(o),i=!0;else{let t=String(o);s&&s.nodeType===3&&s.data===t?e.push(s):e.push(document.createTextNode(t))}}return i}function st(e,t,n=null){for(let r=0,i=t.length;r<i;r++)e.insertBefore(t[r],n)}function ct(e,t,n,r){if(n===void 0)return e.textContent=``;let i=r||document.createTextNode(``);if(t.length){let r=!1;for(let a=t.length-1;a>=0;a--){let o=t[a];if(i!==o){let t=o.parentNode===e;!r&&!a?t?e.replaceChild(i,o):e.insertBefore(i,n):t&&o.remove()}else r=!0}}else e.insertBefore(i,n);return[i]}var lt=r(`App`,{web:()=>a(()=>import(`./web-CRQJo86w.js`).then(e=>new e.AppWeb),__vite__mapDeps([0,1,2]))}),ut;(function(e){e.Dark=`DARK`,e.Light=`LIGHT`,e.Default=`DEFAULT`})(ut||={});var dt;(function(e){e.Body=`body`,e.Ionic=`ionic`,e.Native=`native`,e.None=`none`})(dt||={});var ft=r(`Keyboard`),pt;(function(e){e.Dark=`DARK`,e.Light=`LIGHT`,e.Default=`DEFAULT`})(pt||={});var mt;(function(e){e.None=`NONE`,e.Slide=`SLIDE`,e.Fade=`FADE`})(mt||={});var ht=r(`StatusBar`),gt=5e3;function _t(e){return e&&(e===`STORAGE_QUOTA_EXCEEDED`?`Peach has run out of browser storage. Delete some entries or clear browser storage to continue.`:e)}async function vt(e){return new Promise(t=>{let n=!1,r=window.setTimeout(()=>{n||(n=!0,t({ok:!1,error:`SERVICE_WORKER_UNAVAILABLE`}))},gt);try{chrome.runtime.sendMessage(e,e=>{if(!n){if(n=!0,window.clearTimeout(r),chrome.runtime.lastError){t({ok:!1,error:chrome.runtime.lastError.message??`SERVICE_WORKER_UNAVAILABLE`});return}if(e===void 0){t({ok:!1,error:`SERVICE_WORKER_UNAVAILABLE`});return}e.ok===!1&&(e.error=_t(e.error)),t(e)}})}catch(e){if(n)return;n=!0,window.clearTimeout(r),t({ok:!1,error:e instanceof Error?e.message:`SERVICE_WORKER_UNAVAILABLE`})}})}async function Q(e){if(!i.isNativePlatform())return vt(e);let{handleMessage:t}=await a(async()=>{let{handleMessage:e}=await import(`./messages-BN1MeRf_.js`);return{handleMessage:e}},__vite__mapDeps([3,4,1,2,5,6,7,8,9,10,11,12])),n=await t(e,{});return n.ok===!1&&(n.error=_t(n.error)),n}var yt=r(`InMemoryVault`);function bt(e){return e.filter(e=>e.type===`login`&&!e.deletedAt&&e.password).map(e=>({id:e.id,type:e.type,title:e.title,username:e.username??``,password:e.password??``,url:e.url??``}))}async function xt(e){i.isNativePlatform()&&await yt.setEntries({entries:JSON.stringify(bt(e))})}async function St(){i.isNativePlatform()&&await yt.clearEntries()}function Ct(e){return e.passkey!==void 0&&e.passkey.credentialId.length>0}function wt(e){return Ct(e)&&!e.password}var Tt=[{name:`peach`,hex:`#F49C70`},{name:`rose`,hex:`#FF8AA6`},{name:`plum`,hex:`#D597F2`},{name:`lavender`,hex:`#A6A8FF`},{name:`sky`,hex:`#5BC8EE`},{name:`mint`,hex:`#5EE0B0`},{name:`sage`,hex:`#B5D870`},{name:`butter`,hex:`#FFD45A`},{name:`sand`,hex:`#EDBC85`},{name:`clay`,hex:`#F08660`},{name:`slate`,hex:`#80BEDE`},{name:`stone`,hex:`#C8B8A8`}],Et=J(`<div class=peach-lock-rune-string aria-hidden=true>`),Dt=J(`<span>`),Ot=9,kt=Array.from({length:Ot},()=>String.fromCodePoint(57344+Math.floor(Math.random()*256)));function At(){let[e,t]=z(-1);return ae(()=>{let e;function n(){e=setTimeout(()=>{t(Math.floor(Math.random()*Ot)),e=setTimeout(()=>{t(-1),n()},2e3+Math.random()*1500)},1500+Math.random()*3e3)}n(),oe(()=>clearTimeout(e))}),(()=>{var t=Et();return Z(t,G(We,{each:kt,children:(t,n)=>(()=>{var r=Dt();return Z(r,t),B(()=>r.classList.toggle(`is-glowing`,e()===n)),r})()})),t})()}var jt=J(`<svg width=14 height=14 viewBox="0 0 64 64"fill=none aria-hidden=true><path d="M32 54C16 54 8 44 8 31C8 18 17 10 27 10C28 7 30 5.5 32 5.5C34 5.5 36 7 37 10C47 10 56 18 56 31C56 44 48 54 32 54Z"fill=#D96830></path><path d="M37 8.5C40.5 3.5 48 5 46 10.5C42 11 37 8.5 37 8.5Z"fill=#7B9060></path><path d="M32 5.5Q35.5 1 39 2.5"stroke=#7B9060 stroke-width=1.5 stroke-linecap=round>`),Mt=J(`<span><span aria-hidden=true></span><span class=peach-wordmark>peach`);function Nt(e){return(()=>{var t=jt();return B(()=>Y(t,`class`,e.class)),t})()}function Pt(e){return(()=>{var t=Mt(),n=t.firstChild;return Z(t,G(Nt,{class:`peach-brand-mark`}),n),B(r=>{var i=e.class??`peach-wordmark-wrap`,a=`peach-status-pip ${e.showPip?``:`is-hidden`} ${e.unlocked?`unlocked`:``}`.trim();return i!==r.e&&X(t,r.e=i),a!==r.t&&X(n,r.t=a),r},{e:void 0,t:void 0}),t})()}var Ft=t(n(((e,t)=>{((n,r)=>{typeof define==`function`&&define.amd?define([],r):typeof t==`object`&&e!==void 0?t.exports=r():n.Papa=r()})(e,function e(){var t=typeof self<`u`?self:typeof window<`u`?window:t===void 0?{}:t,n,r=!t.document&&!!t.postMessage,i=t.IS_PAPA_WORKER||!1,a={},o=0,s={};function c(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine=``,this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=y(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null),this._handle=new p(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(e,n){var r=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0<r){let t=this._config.newline;t||=(a=this._config.quoteChar||`"`,this._handle.guessLineEndings(e,a)),e=[...e.split(t).slice(r)].join(t)}this.isFirstChunk&&x(this._config.beforeFirstChunk)&&(a=this._config.beforeFirstChunk(e))!==void 0&&(e=a),this.isFirstChunk=!1,this._halted=!1;var r=this._partialLine+e,a=(this._partialLine=``,this._handle.parse(r,this._baseIndex,!this._finished));if(!this._handle.paused()&&!this._handle.aborted()){if(e=a.meta.cursor,r=(this._finished||(this._partialLine=r.substring(e-this._baseIndex),this._baseIndex=e),a&&a.data&&(this._rowCount+=a.data.length),this._finished||this._config.preview&&this._rowCount>=this._config.preview),i)t.postMessage({results:a,workerId:s.WORKER_ID,finished:r});else if(x(this._config.chunk)&&!n){if(this._config.chunk(a,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=a=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(a.data),this._completeResults.errors=this._completeResults.errors.concat(a.errors),this._completeResults.meta=a.meta),this._completed||!r||!x(this._config.complete)||a&&a.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),r||a&&a.meta.paused||this._nextChunk(),a}this._halted=!0},this._sendError=function(e){x(this._config.error)?this._config.error(e):i&&this._config.error&&t.postMessage({workerId:s.WORKER_ID,error:e,finished:!1})}}function l(e){var t;(e||={}).chunkSize||(e.chunkSize=s.RemoteChunkSize),c.call(this,e),this._nextChunk=r?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(t=new XMLHttpRequest,this._config.withCredentials&&(t.withCredentials=this._config.withCredentials),r||(t.onload=b(this._chunkLoaded,this),t.onerror=b(this._chunkError,this)),t.open(this._config.downloadRequestBody?`POST`:`GET`,this._input,!r),this._config.downloadRequestHeaders){var e,n=this._config.downloadRequestHeaders;for(e in n)t.setRequestHeader(e,n[e])}var i;this._config.chunkSize&&(i=this._start+this._config.chunkSize-1,t.setRequestHeader(`Range`,`bytes=`+this._start+`-`+i));try{t.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}r&&t.status===0&&this._chunkError()}},this._chunkLoaded=function(){t.readyState===4&&(t.status<200||400<=t.status?this._chunkError():(this._start+=this._config.chunkSize||t.responseText.length,this._finished=!this._config.chunkSize||this._start>=(e=>(e=e.getResponseHeader(`Content-Range`))===null?-1:parseInt(e.substring(e.lastIndexOf(`/`)+1)))(t),this.parseChunk(t.responseText)))},this._chunkError=function(e){e=t.statusText||e,this._sendError(Error(e))}}function u(e){(e||={}).chunkSize||(e.chunkSize=s.LocalChunkSize),c.call(this,e);var t,n,r=typeof FileReader<`u`;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,r?((t=new FileReader).onload=b(this._chunkLoaded,this),t.onerror=b(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input,i=(this._config.chunkSize&&(i=Math.min(this._start+this._config.chunkSize,this._input.size),e=n.call(e,this._start,i)),t.readAsText(e,this._config.encoding));r||this._chunkLoaded({target:{result:i}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function d(e){var t;c.call(this,e||={}),this.stream=function(e){return t=e,this._nextChunk()},this._nextChunk=function(){var e,n;if(!this._finished)return e=this._config.chunkSize,t=e?(n=t.substring(0,e),t.substring(e)):(n=t,``),this._finished=!t,this.parseChunk(n)}}function f(e){c.call(this,e||={});var t=[],n=!0,r=!1;this.pause=function(){c.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){c.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(`data`,this._streamData),this._input.on(`end`,this._streamEnd),this._input.on(`error`,this._streamError)},this._checkIsFinished=function(){r&&t.length===1&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):n=!0},this._streamData=b(function(e){try{t.push(typeof e==`string`?e:e.toString(this._config.encoding)),n&&(n=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=b(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=b(function(){this._streamCleanUp(),r=!0,this._streamData(``)},this),this._streamCleanUp=b(function(){this._input.removeListener(`data`,this._streamData),this._input.removeListener(`end`,this._streamEnd),this._input.removeListener(`error`,this._streamError)},this)}function p(e){var t,n,r,i,a=2**53,o=-a,c=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,l=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,u=this,d=0,f=0,p=!1,g=!1,_=[],v={data:[],errors:[],meta:{}};function b(t){return e.skipEmptyLines===`greedy`?t.join(``).trim()===``:t.length===1&&t[0].length===0}function S(){if(v&&r&&(w(`Delimiter`,`UndetectableDelimiter`,`Unable to auto-detect delimiting character; defaulted to '`+s.DefaultDelimiter+`'`),r=!1),e.skipEmptyLines&&(v.data=v.data.filter(function(e){return!b(e)})),C()){if(v)if(Array.isArray(v.data[0])){for(var t=0;C()&&t<v.data.length;t++)v.data[t].forEach(n);v.data.splice(0,1)}else v.data.forEach(n);function n(t,n){x(e.transformHeader)&&(t=e.transformHeader(t,n)),_.push(t)}}function n(t,n){for(var r=e.header?{}:[],i=0;i<t.length;i++){var s=i,u=t[i],u=((t,n)=>(t=>(e.dynamicTypingFunction&&e.dynamicTyping[t]===void 0&&(e.dynamicTyping[t]=e.dynamicTypingFunction(t)),!0===(e.dynamicTyping[t]||e.dynamicTyping)))(t)?n===`true`||n===`TRUE`||n!==`false`&&n!==`FALSE`&&((e=>{if(c.test(e)&&(e=parseFloat(e),o<e&&e<a))return 1})(n)?parseFloat(n):l.test(n)?new Date(n):n===``?null:n):n)(s=e.header?i>=_.length?`__parsed_extra`:_[i]:s,u=e.transform?e.transform(u,s):u);s===`__parsed_extra`?(r[s]=r[s]||[],r[s].push(u)):r[s]=u}return e.header&&(i>_.length?w(`FieldMismatch`,`TooManyFields`,`Too many fields: expected `+_.length+` fields but parsed `+i,f+n):i<_.length&&w(`FieldMismatch`,`TooFewFields`,`Too few fields: expected `+_.length+` fields but parsed `+i,f+n)),r}var i;v&&(e.header||e.dynamicTyping||e.transform)&&(i=1,!v.data.length||Array.isArray(v.data[0])?(v.data=v.data.map(n),i=v.data.length):v.data=n(v.data,0),e.header&&v.meta&&(v.meta.fields=_),f+=i)}function C(){return e.header&&_.length===0}function w(e,t,n,r){e={type:e,code:t,message:n},r!==void 0&&(e.row=r),v.errors.push(e)}x(e.step)&&(i=e.step,e.step=function(t){v=t,C()?S():(S(),v.data.length!==0&&(d+=t.data.length,e.preview&&d>e.preview?n.abort():(v.data=v.data[0],i(v,u))))}),this.parse=function(i,a,o){var c=e.quoteChar||`"`,c=(e.newline||=this.guessLineEndings(i,c),r=!1,e.delimiter?x(e.delimiter)&&(e.delimiter=e.delimiter(i),v.meta.delimiter=e.delimiter):((c=((t,n,r,i,a)=>{var o,c,l,u;a||=[`,`,` `,`|`,`;`,s.RECORD_SEP,s.UNIT_SEP];for(var d=0;d<a.length;d++){for(var f,p=a[d],m=0,g=0,_=0,v=(l=void 0,new h({comments:i,delimiter:p,newline:n,preview:10}).parse(t)),y=0;y<v.data.length;y++)r&&b(v.data[y])?_++:(f=v.data[y].length,g+=f,l===void 0?l=f:0<f&&(m+=Math.abs(f-l),l=f));0<v.data.length&&(g/=v.data.length-_),(c===void 0||m<=c)&&(u===void 0||u<g)&&1.99<g&&(c=m,o=p,u=g)}return{successful:!!(e.delimiter=o),bestDelimiter:o}})(i,e.newline,e.skipEmptyLines,e.comments,e.delimitersToGuess)).successful?e.delimiter=c.bestDelimiter:(r=!0,e.delimiter=s.DefaultDelimiter),v.meta.delimiter=e.delimiter),y(e));return e.preview&&e.header&&c.preview++,t=i,n=new h(c),v=n.parse(t,a,o),S(),p?{meta:{paused:!0}}:v||{meta:{paused:!1}}},this.paused=function(){return p},this.pause=function(){p=!0,n.abort(),t=x(e.chunk)?``:t.substring(n.getCharIndex())},this.resume=function(){u.streamer._halted?(p=!1,u.streamer.parseChunk(t,!0)):setTimeout(u.resume,3)},this.aborted=function(){return g},this.abort=function(){g=!0,n.abort(),v.meta.aborted=!0,x(e.complete)&&e.complete(v),t=``},this.guessLineEndings=function(e,t){e=e.substring(0,1048576);var t=RegExp(m(t)+`([^]*?)`+m(t),`gm`),n=(e=e.replace(t,``)).split(`\r`),t=e.split(`3+`),e=1<t.length&&t[0].length<n[0].length;if(n.length===1||e)return`4+`;for(var r=0,i=0;i<n.length;i++)n[i][0]===`5+`&&r++;return r>=n.length/2?`\r6+`:`\r`}}function m(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function h(e){var t=(e||={}).delimiter,n=e.newline,r=e.comments,i=e.step,a=e.preview,o=e.fastMode,c=null,l=!1,u=e.quoteChar==null?`"`:e.quoteChar,d=u;if(e.escapeChar!==void 0&&(d=e.escapeChar),(typeof t!=`string`||-1<s.BAD_DELIMITERS.indexOf(t))&&(t=`,`),r===t)throw Error(`Comment character same as delimiter`);!0===r?r=`#`:(typeof r!=`string`||-1<s.BAD_DELIMITERS.indexOf(r))&&(r=!1),n!==`7+`&&n!==`\r`&&n!==`\r8+`&&(n=`9+`);var f=0,p=!1;this.parse=function(s,h,g){if(typeof s!=`string`)throw Error(`Input must be a string`);var _=s.length,v=t.length,y=n.length,b=r.length,S=x(i),C=[],w=[],T=[],E=f=0;if(!s)return R();if(o||!1!==o&&s.indexOf(u)===-1){for(var D=s.split(n),O=0;O<D.length;O++){if(T=D[O],f+=T.length,O!==D.length-1)f+=n.length;else if(g)return R();if(!r||T.substring(0,b)!==r){if(S){if(C=[],P(T.split(t)),z(),p)return R()}else P(T.split(t));if(a&&a<=O)return C=C.slice(0,a),R(!0)}}return R()}for(var k=s.indexOf(t,f),A=s.indexOf(n,f),j=new RegExp(m(d)+m(u),`g`),M=s.indexOf(u,f);;)if(s[f]===u)for(M=f,f++;;){if((M=s.indexOf(u,M+1))===-1)return g||w.push({type:`Quotes`,code:`MissingQuotes`,message:`Quoted field unterminated`,row:C.length,index:f}),I();if(M===_-1)return I(s.substring(f,M).replace(j,u));if(u===d&&s[M+1]===d)M++;else if(u===d||M===0||s[M-1]!==d){k!==-1&&k<M+1&&(k=s.indexOf(t,M+1));var N=F((A=A!==-1&&A<M+1?s.indexOf(n,M+1):A)===-1?k:Math.min(k,A));if(s.substr(M+1+N,v)===t){T.push(s.substring(f,M).replace(j,u)),s[f=M+1+N+v]!==u&&(M=s.indexOf(u,f)),k=s.indexOf(t,f),A=s.indexOf(n,f);break}if(N=F(A),s.substring(M+1+N,M+1+N+y)===n){if(T.push(s.substring(f,M).replace(j,u)),L(M+1+N+y),k=s.indexOf(t,f),M=s.indexOf(u,f),S&&(z(),p))return R();if(a&&C.length>=a)return R(!0);break}w.push({type:`Quotes`,code:`InvalidQuotes`,message:`Trailing quote on quoted field is malformed`,row:C.length,index:f}),M++}}else if(r&&T.length===0&&s.substring(f,f+b)===r){if(A===-1)return R();f=A+y,A=s.indexOf(n,f),k=s.indexOf(t,f)}else if(k!==-1&&(k<A||A===-1))T.push(s.substring(f,k)),f=k+v,k=s.indexOf(t,f);else{if(A===-1)break;if(T.push(s.substring(f,A)),L(A+y),S&&(z(),p))return R();if(a&&C.length>=a)return R(!0)}return I();function P(e){C.push(e),E=f}function F(e){var t=0;return t=e!==-1&&(e=s.substring(M+1,e))&&e.trim()===``?e.length:t}function I(e){return g||(e===void 0&&(e=s.substring(f)),T.push(e),f=_,P(T),S&&z()),R()}function L(e){f=e,P(T),T=[],A=s.indexOf(n,f)}function R(r){if(e.header&&!h&&C.length&&!l){var i=C[0],a=Object.create(null),o=new Set(i);let t=!1;for(let n=0;n<i.length;n++){let r=i[n];if(a[r=x(e.transformHeader)?e.transformHeader(r,n):r]){let e,s=a[r];for(;e=r+`_`+s,s++,o.has(e););o.add(e),i[n]=e,a[r]++,t=!0,(c=c===null?{}:c)[e]=r}else a[r]=1,i[n]=r;o.add(r)}t&&console.warn(`Duplicate headers found and renamed.`),l=!0}return{data:C,errors:w,meta:{delimiter:t,linebreak:n,aborted:p,truncated:!!r,cursor:E+(h||0),renamedHeaders:c}}}function z(){i(R()),C=[],w=[]}},this.abort=function(){p=!0},this.getCharIndex=function(){return f}}function g(e){var t=e.data,n=a[t.workerId],r=!1;if(t.error)n.userError(t.error,t.file);else if(t.results&&t.results.data){var i={abort:function(){r=!0,_(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:v,resume:v};if(x(n.userStep)){for(var o=0;o<t.results.data.length&&(n.userStep({data:t.results.data[o],errors:t.results.errors,meta:t.results.meta},i),!r);o++);delete t.results}else x(n.userChunk)&&(n.userChunk(t.results,i,t.file),delete t.results)}t.finished&&!r&&_(t.workerId,t.results)}function _(e,t){var n=a[e];x(n.userComplete)&&n.userComplete(t),n.terminate(),delete a[e]}function v(){throw Error(`Not implemented.`)}function y(e){if(typeof e!=`object`||!e)return e;var t,n=Array.isArray(e)?[]:{};for(t in e)n[t]=y(e[t]);return n}function b(e,t){return function(){e.apply(t,arguments)}}function x(e){return typeof e==`function`}return s.parse=function(n,r){var i=(r||={}).dynamicTyping||!1;if(x(i)&&(r.dynamicTypingFunction=i,i={}),r.dynamicTyping=i,r.transform=!!x(r.transform)&&r.transform,!r.worker||!s.WORKERS_SUPPORTED)return i=null,s.NODE_STREAM_INPUT,typeof n==`string`?(n=(e=>e.charCodeAt(0)===65279?e.slice(1):e)(n),i=new(r.download?l:d)(r)):!0===n.readable&&x(n.read)&&x(n.on)?i=new f(r):(t.File&&n instanceof File||n instanceof Object)&&(i=new u(r)),i.stream(n);(i=(()=>{var n;return!!s.WORKERS_SUPPORTED&&(n=(()=>{var n=t.URL||t.webkitURL||null,r=e.toString();return s.BLOB_URL||=n.createObjectURL(new Blob([`var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; `,`(`,r,`)();`],{type:`text/javascript`}))})(),(n=new t.Worker(n)).onmessage=g,n.id=o++,a[n.id]=n)})()).userStep=r.step,i.userChunk=r.chunk,i.userComplete=r.complete,i.userError=r.error,r.step=x(r.step),r.chunk=x(r.chunk),r.complete=x(r.complete),r.error=x(r.error),delete r.worker,i.postMessage({input:n,config:r,workerId:i.id})},s.unparse=function(e,t){var n=!1,r=!0,i=`,`,a=`\r10+`,o=`"`,c=o+o,l=!1,u=null,d=!1,f=((()=>{if(typeof t==`object`){if(typeof t.delimiter!=`string`||s.BAD_DELIMITERS.filter(function(e){return t.delimiter.indexOf(e)!==-1}).length||(i=t.delimiter),typeof t.quotes!=`boolean`&&typeof t.quotes!=`function`&&!Array.isArray(t.quotes)||(n=t.quotes),typeof t.skipEmptyLines!=`boolean`&&typeof t.skipEmptyLines!=`string`||(l=t.skipEmptyLines),typeof t.newline==`string`&&(a=t.newline),typeof t.quoteChar==`string`&&(o=t.quoteChar),typeof t.header==`boolean`&&(r=t.header),Array.isArray(t.columns)){if(t.columns.length===0)throw Error(`Option columns is empty`);u=t.columns}t.escapeChar!==void 0&&(c=t.escapeChar+o),t.escapeFormulae instanceof RegExp?d=t.escapeFormulae:typeof t.escapeFormulae==`boolean`&&t.escapeFormulae&&(d=/^[=+\-@\t\r].*$/)}})(),new RegExp(m(o),`g`));if(typeof e==`string`&&(e=JSON.parse(e)),Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return p(null,e,l);if(typeof e[0]==`object`)return p(u||Object.keys(e[0]),e,l)}else if(typeof e==`object`)return typeof e.data==`string`&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||=e.meta&&e.meta.fields||u,e.fields||=Array.isArray(e.data[0])?e.fields:typeof e.data[0]==`object`?Object.keys(e.data[0]):[],Array.isArray(e.data[0])||typeof e.data[0]==`object`||(e.data=[e.data])),p(e.fields||[],e.data||[],l);throw Error(`Unable to serialize unrecognized input`);function p(e,t,n){var o=``,s=(typeof e==`string`&&(e=JSON.parse(e)),typeof t==`string`&&(t=JSON.parse(t)),Array.isArray(e)&&0<e.length),c=!Array.isArray(t[0]);if(s&&r){for(var l=0;l<e.length;l++)0<l&&(o+=i),o+=h(e[l],l);0<t.length&&(o+=a)}for(var u=0;u<t.length;u++){var d=(s?e:t[u]).length,f=!1,p=s?Object.keys(t[u]).length===0:t[u].length===0;if(n&&!s&&(f=n===`greedy`?t[u].join(``).trim()===``:t[u].length===1&&t[u][0].length===0),n===`greedy`&&s){for(var m=[],g=0;g<d;g++){var _=c?e[g]:g;m.push(t[u][_])}f=m.join(``).trim()===``}if(!f){for(var v=0;v<d;v++){0<v&&!p&&(o+=i);var y=s&&c?e[v]:v;o+=h(t[u][y],v)}u<t.length-1&&(!n||0<d&&!p)&&(o+=a)}}return o}function h(e,t){var r,a;return e==null?``:e.constructor===Date?JSON.stringify(e).slice(1,25):(a=!1,d&&typeof e==`string`&&d.test(e)&&(e=`'`+e,a=!0),r=e.toString().replace(f,c),(a=a||!0===n||typeof n==`function`&&n(e,t)||Array.isArray(n)&&n[t]||((e,t)=>{for(var n=0;n<t.length;n++)if(-1<e.indexOf(t[n]))return!0;return!1})(r,s.BAD_DELIMITERS)||-1<r.indexOf(i)||r.charAt(0)===` `||r.charAt(r.length-1)===` `)?o+r+o:r)}},s.RECORD_SEP=``,s.UNIT_SEP=``,s.BYTE_ORDER_MARK=``,s.BAD_DELIMITERS=[`\r`,`11+`,`"`,s.BYTE_ORDER_MARK],s.WORKERS_SUPPORTED=!r&&!!t.Worker,s.NODE_STREAM_INPUT=1,s.LocalChunkSize=10485760,s.RemoteChunkSize=5242880,s.DefaultDelimiter=`,`,s.Parser=h,s.ParserHandle=p,s.NetworkStreamer=l,s.FileStreamer=u,s.StringStreamer=d,s.ReadableStreamStreamer=f,t.jQuery&&((n=t.jQuery).fn.parse=function(e){var r=e.config||{},i=[];return this.each(function(e){if(!(n(this).prop(`tagName`).toUpperCase()===`INPUT`&&n(this).attr(`type`).toLowerCase()===`file`&&t.FileReader)||!this.files||this.files.length===0)return!0;for(var a=0;a<this.files.length;a++)i.push({file:this.files[a],inputElem:this,instanceConfig:n.extend({},r)})}),a(),this;function a(){if(i.length===0)x(e.complete)&&e.complete();else{var t,r,a,c,l=i[0];if(x(e.before)){var u=e.before(l.file,l.inputElem);if(typeof u==`object`){if(u.action===`abort`)return t=`AbortError`,r=l.file,a=l.inputElem,c=u.reason,void(x(e.error)&&e.error({name:t},r,a,c));if(u.action===`skip`)return void o();typeof u.config==`object`&&(l.instanceConfig=n.extend(l.instanceConfig,u.config))}else if(u===`skip`)return void o()}var d=l.instanceConfig.complete;l.instanceConfig.complete=function(e){x(d)&&d(e,l.file,l.inputElem),o()},s.parse(l.file,l.instanceConfig)}}function o(){i.splice(0,1),a()}}),i&&(t.onmessage=function(e){e=e.data,s.WORKER_ID===void 0&&e&&(s.WORKER_ID=e.workerId),typeof e.input==`string`?t.postMessage({workerId:s.WORKER_ID,results:s.parse(e.input,e.config),finished:!0}):(t.File&&e.input instanceof File||e.input instanceof Object)&&(e=s.parse(e.input,e.config))&&t.postMessage({workerId:s.WORKER_ID,results:e,finished:!0})}),(l.prototype=Object.create(c.prototype)).constructor=l,(u.prototype=Object.create(c.prototype)).constructor=u,(d.prototype=Object.create(d.prototype)).constructor=d,(f.prototype=Object.create(c.prototype)).constructor=f,s})}))(),1),It=new TextEncoder;function Lt(e){let t=new Uint8Array(e.byteLength);return t.set(e),t.buffer}function Rt(e,t){if(t<24)return[e<<5|t];if(t<256)return[e<<5|24,t];if(t<65536)return[e<<5|25,t>>8,t&255];if(t<4294967296)return[e<<5|26,t>>>24&255,t>>>16&255,t>>>8&255,t&255];throw Error(`CBOR length too large`)}function zt(e){return e>=0?Uint8Array.from(Rt(0,e)):Uint8Array.from(Rt(1,-1-e))}function Bt(e){let t=It.encode(e);return Wt(Uint8Array.from(Rt(3,t.length)),t)}function Vt(e){return Wt(Uint8Array.from(Rt(2,e.length)),e)}function Ht(e){let t=[Uint8Array.from(Rt(5,e.length))];for(let[n,r]of e)t.push(typeof n==`number`?zt(n):Bt(n)),t.push(Ut(r));return Wt(...t)}function Ut(e){if(e instanceof Uint8Array)return Vt(e);if(typeof e==`string`)return Bt(e);if(typeof e==`number`&&Number.isInteger(e))return zt(e);if(e instanceof Map)return Ht(Array.from(e.entries()));if(Array.isArray(e))return Wt(Uint8Array.from(Rt(4,e.length)),...e.map(e=>Ut(e)));if(e&&typeof e==`object`)return Ht(Object.entries(e));if(e===!1)return Uint8Array.of(244);if(e===!0)return Uint8Array.of(245);if(e===null)return Uint8Array.of(246);throw Error(`Unsupported CBOR value`)}function Wt(...e){let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function Gt(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/g,``)}function Kt(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(Math.ceil(e.length/4)*4,`=`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e+=1)r[e]=n.charCodeAt(e);return r}function qt(e){let t=new Set(e.map(e=>e.alg));return t.has(-8)?-8:t.has(-7)?-7:null}function Jt(e){if(e.length!==65||e[0]!==4)throw Error(`Invalid P-256 public key`);let t=e.slice(1,33),n=e.slice(33,65);return Ht([[1,2],[3,-7],[-1,1],[-2,t],[-3,n]])}function Yt(e){if(e.length!==32)throw Error(`Invalid Ed25519 public key`);return Ht([[1,1],[3,-8],[-1,6],[-2,e]])}function Xt(e,t){if(t===-7){if(!e.x||!e.y)throw Error(`Missing EC coordinates`);return Ht([[1,2],[3,-7],[-1,1],[-2,Kt(e.x)],[-3,Kt(e.y)]])}if(!e.x)throw Error(`Missing Ed25519 coordinate`);return Ht([[1,1],[3,-8],[-1,6],[-2,Kt(e.x)]])}async function Zt(e){if(e===-7){let e=await crypto.subtle.generateKey({name:`ECDSA`,namedCurve:`P-256`},!0,[`sign`,`verify`]),t=await crypto.subtle.exportKey(`jwk`,e.privateKey),n=await crypto.subtle.exportKey(`raw`,e.publicKey),r=await crypto.subtle.exportKey(`spki`,e.publicKey);return{privateKeyJwk:t,publicKeyCose:Jt(new Uint8Array(n)),publicKeySpki:new Uint8Array(r)}}let t=await crypto.subtle.generateKey({name:`Ed25519`},!0,[`sign`,`verify`]),n=await crypto.subtle.exportKey(`jwk`,t.privateKey),r=await crypto.subtle.exportKey(`raw`,t.publicKey),i=await crypto.subtle.exportKey(`spki`,t.publicKey);return{privateKeyJwk:n,publicKeyCose:Yt(new Uint8Array(r)),publicKeySpki:new Uint8Array(i)}}async function Qt(e,t){let n=t===-7?await crypto.subtle.importKey(`pkcs8`,Lt(e),{name:`ECDSA`,namedCurve:`P-256`},!0,[`sign`]):await crypto.subtle.importKey(`pkcs8`,Lt(e),{name:`Ed25519`},!0,[`sign`]),r=await crypto.subtle.exportKey(`jwk`,n);return{privateKeyJwk:r,publicKeyCose:Xt(r,t),algorithm:t}}async function $t(e){try{return await Qt(e,-8)}catch{return Qt(e,-7)}}function en(e){let t=e.length/2,n=tn(e.slice(0,t)),r=tn(e.slice(t)),i=Wt(Uint8Array.of(2,n.length),n,Uint8Array.of(2,r.length),r);return Wt(Uint8Array.of(48,i.length),i)}function tn(e){let t=0;for(;t<e.length-1&&e[t]===0;)t+=1;let n=e.slice(t);return n[0]&128?Wt(Uint8Array.of(0),n):n}async function nn(e,t,n,r){let i=Wt(n,r);if(t===-7){let t=await crypto.subtle.importKey(`jwk`,e,{name:`ECDSA`,namedCurve:`P-256`},!1,[`sign`]),n=await crypto.subtle.sign({name:`ECDSA`,hash:`SHA-256`},t,Lt(i));return en(new Uint8Array(n))}let a=await crypto.subtle.importKey(`jwk`,e,{name:`Ed25519`},!1,[`sign`]),o=await crypto.subtle.sign(`Ed25519`,a,Lt(i));return new Uint8Array(o)}async function rn(e){let t=new Uint8Array(await crypto.subtle.digest(`SHA-256`,Lt(It.encode(e.rpId)))),n=new Uint8Array(4);new DataView(n.buffer).setUint32(0,e.signCount,!1);let r=Wt(t,Uint8Array.of(e.flags),n);if(!e.credentialId||!e.publicKeyCose)return r;let i=new Uint8Array(16),a=new Uint8Array(2);return new DataView(a.buffer).setUint16(0,e.credentialId.length,!1),Wt(r,i,a,e.credentialId,e.publicKeyCose)}function an(e){return Ht([[`fmt`,`none`],[`attStmt`,new Map],[`authData`,e]])}function on(){let e=crypto.getRandomValues(new Uint8Array(32));return{bytes:e,base64url:Gt(e)}}var sn=e=>{let t=new Uint8Array(new ArrayBuffer(8)),n=e;for(let e=7;e>=0&&n!==0;e--)t[e]=n&255,n-=t[e],n/=256;return t};function cn(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`}function ln(e,t=``){if(!Number.isSafeInteger(e)||e<0){let n=t&&`"${t}" `;throw Error(`${n}expected integer >= 0, got ${e}`)}}function un(e,t,n=``){let r=cn(e),i=e?.length,a=t!==void 0;if(!r||a&&i!==t){let o=n&&`"${n}" `,s=a?` of length ${t}`:``,c=r?`length=${i}`:`type=${typeof e}`;throw Error(o+`expected Uint8Array`+s+`, got `+c)}return e}function dn(e){if(typeof e!=`function`||typeof e.create!=`function`)throw Error(`Hash must wrapped by utils.createHasher`);ln(e.outputLen),ln(e.blockLen)}function fn(e,t=!0){if(e.destroyed)throw Error(`Hash instance has been destroyed`);if(t&&e.finished)throw Error(`Hash#digest() has already been called`)}function pn(e,t){un(e,void 0,`digestInto() output`);let n=t.outputLen;if(e.length<n)throw Error(`"digestInto() output" expected to be of length >=`+n)}function mn(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function hn(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function gn(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function _n(e,t){return e<<32-t|e>>>t}function vn(e,t){return e<<t|e>>>32-t>>>0}var yn=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function bn(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function xn(e){for(let t=0;t<e.length;t++)e[t]=bn(e[t]);return e}var Sn=yn?e=>e:xn;function Cn(e,t={}){let n=(t,n)=>e(n).update(t).digest(),r=e(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.create=t=>e(t),Object.assign(n,t),Object.freeze(n)}var wn=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])}),Tn=class{update(e){return fn(this),this.iHash.update(e),this}digestInto(e){fn(this),un(e,this.outputLen,`output`),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:t,iHash:n,finished:r,destroyed:i,blockLen:a,outputLen:o}=this;return e=e,e.finished=r,e.destroyed=i,e.blockLen=a,e.outputLen=o,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}constructor(e,t){if(this.finished=!1,this.destroyed=!1,dn(e),un(t,void 0,`key`),this.iHash=e.create(),typeof this.iHash.update!=`function`)throw Error(`Expected instance of class which extends utils.Hash`);this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,r=new Uint8Array(n);r.set(t.length>n?e.create().update(t).digest():t);for(let e=0;e<r.length;e++)r[e]^=54;this.iHash.update(r),this.oHash=e.create();for(let e=0;e<r.length;e++)r[e]^=106;this.oHash.update(r),hn(r)}},En=(e,t,n)=>new Tn(e,t).update(n).digest();En.create=(e,t)=>new Tn(e,t);function Dn(e,t,n){return e&t^~e&n}function On(e,t,n){return e&t^e&n^t&n}var kn=class{update(e){fn(this),un(e);let{view:t,buffer:n,blockLen:r}=this,i=e.length;for(let a=0;a<i;){let o=Math.min(r-this.pos,i-a);if(o===r){let t=gn(e);for(;r<=i-a;a+=r)this.process(t,a);continue}n.set(e.subarray(a,a+o),this.pos),this.pos+=o,a+=o,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){fn(this),pn(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:i}=this,{pos:a}=this;t[a++]=128,hn(this.buffer.subarray(a)),this.padOffset>r-a&&(this.process(n,0),a=0);for(let e=a;e<r;e++)t[e]=0;n.setBigUint64(r-8,BigInt(this.length*8),i),this.process(n,0);let o=gn(e),s=this.outputLen;if(s%4)throw Error(`_sha2: outputLen must be aligned to 32bit`);let c=s/4,l=this.get();if(c>l.length)throw Error(`_sha2: outputLen bigger than state`);for(let e=0;e<c;e++)o.setUint32(4*e,l[e],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:i,destroyed:a,pos:o}=this;return e.destroyed=a,e.finished=i,e.length=r,e.pos=o,r%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}constructor(e,t,n,r){this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.buffer=new Uint8Array(e),this.view=gn(this.buffer)}},An=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),jn=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),Mn=Uint32Array.from([3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]),Nn=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),Pn=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),Fn=new Uint32Array(80),In=class extends kn{get(){let{A:e,B:t,C:n,D:r,E:i}=this;return[e,t,n,r,i]}set(e,t,n,r,i){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=i|0}process(e,t){for(let n=0;n<16;n++,t+=4)Fn[n]=e.getUint32(t,!1);for(let e=16;e<80;e++)Fn[e]=vn(Fn[e-3]^Fn[e-8]^Fn[e-14]^Fn[e-16],1);let{A:n,B:r,C:i,D:a,E:o}=this;for(let e=0;e<80;e++){let t,s;e<20?(t=Dn(r,i,a),s=1518500249):e<40?(t=r^i^a,s=1859775393):e<60?(t=On(r,i,a),s=2400959708):(t=r^i^a,s=3395469782);let c=vn(n,5)+t+o+s+Fn[e]|0;o=a,a=i,i=vn(r,30),r=n,n=c}n=n+this.A|0,r=r+this.B|0,i=i+this.C|0,a=a+this.D|0,o=o+this.E|0,this.set(n,r,i,a,o)}roundClean(){hn(Fn)}destroy(){this.set(0,0,0,0,0),hn(this.buffer)}constructor(){super(64,20,8,!1),this.A=Pn[0]|0,this.B=Pn[1]|0,this.C=Pn[2]|0,this.D=Pn[3]|0,this.E=Pn[4]|0}},Ln=Cn(()=>new In),Rn=BigInt(2**32-1),zn=BigInt(32);function Bn(e,t=!1){return t?{h:Number(e&Rn),l:Number(e>>zn&Rn)}:{h:Number(e>>zn&Rn)|0,l:Number(e&Rn)|0}}function Vn(e,t=!1){let n=e.length,r=new Uint32Array(n),i=new Uint32Array(n);for(let a=0;a<n;a++){let{h:n,l:o}=Bn(e[a],t);[r[a],i[a]]=[n,o]}return[r,i]}var Hn=(e,t,n)=>e>>>n,Un=(e,t,n)=>e<<32-n|t>>>n,Wn=(e,t,n)=>e>>>n|t<<32-n,Gn=(e,t,n)=>e<<32-n|t>>>n,Kn=(e,t,n)=>e<<64-n|t>>>n-32,qn=(e,t,n)=>e>>>n-32|t<<64-n,Jn=(e,t,n)=>e<<n|t>>>32-n,Yn=(e,t,n)=>t<<n|e>>>32-n,Xn=(e,t,n)=>t<<n-32|e>>>64-n,Zn=(e,t,n)=>e<<n-32|t>>>64-n;function Qn(e,t,n,r){let i=(t>>>0)+(r>>>0);return{h:e+n+(i/2**32|0)|0,l:i|0}}var $n=(e,t,n)=>(e>>>0)+(t>>>0)+(n>>>0),er=(e,t,n,r)=>t+n+r+(e/2**32|0)|0,tr=(e,t,n,r)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0),nr=(e,t,n,r,i)=>t+n+r+i+(e/2**32|0)|0,rr=(e,t,n,r,i)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0)+(i>>>0),ir=(e,t,n,r,i,a)=>t+n+r+i+a+(e/2**32|0)|0,ar=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]),or=new Uint32Array(64),sr=class extends kn{get(){let{A:e,B:t,C:n,D:r,E:i,F:a,G:o,H:s}=this;return[e,t,n,r,i,a,o,s]}set(e,t,n,r,i,a,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=i|0,this.F=a|0,this.G=o|0,this.H=s|0}process(e,t){for(let n=0;n<16;n++,t+=4)or[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){let t=or[e-15],n=or[e-2],r=_n(t,7)^_n(t,18)^t>>>3;or[e]=(_n(n,17)^_n(n,19)^n>>>10)+or[e-7]+r+or[e-16]|0}let{A:n,B:r,C:i,D:a,E:o,F:s,G:c,H:l}=this;for(let e=0;e<64;e++){let t=_n(o,6)^_n(o,11)^_n(o,25),u=l+t+Dn(o,s,c)+ar[e]+or[e]|0,d=(_n(n,2)^_n(n,13)^_n(n,22))+On(n,r,i)|0;l=c,c=s,s=o,o=a+u|0,a=i,i=r,r=n,n=u+d|0}n=n+this.A|0,r=r+this.B|0,i=i+this.C|0,a=a+this.D|0,o=o+this.E|0,s=s+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,i,a,o,s,c,l)}roundClean(){hn(or)}destroy(){this.set(0,0,0,0,0,0,0,0),hn(this.buffer)}constructor(e){super(64,e,8,!1)}},cr=class extends sr{constructor(){super(32),this.A=An[0]|0,this.B=An[1]|0,this.C=An[2]|0,this.D=An[3]|0,this.E=An[4]|0,this.F=An[5]|0,this.G=An[6]|0,this.H=An[7]|0}},lr=class extends sr{constructor(){super(28),this.A=jn[0]|0,this.B=jn[1]|0,this.C=jn[2]|0,this.D=jn[3]|0,this.E=jn[4]|0,this.F=jn[5]|0,this.G=jn[6]|0,this.H=jn[7]|0}},ur=Vn(`0x428a2f98d728ae22.0x7137449123ef65cd.0xb5c0fbcfec4d3b2f.0xe9b5dba58189dbbc.0x3956c25bf348b538.0x59f111f1b605d019.0x923f82a4af194f9b.0xab1c5ed5da6d8118.0xd807aa98a3030242.0x12835b0145706fbe.0x243185be4ee4b28c.0x550c7dc3d5ffb4e2.0x72be5d74f27b896f.0x80deb1fe3b1696b1.0x9bdc06a725c71235.0xc19bf174cf692694.0xe49b69c19ef14ad2.0xefbe4786384f25e3.0x0fc19dc68b8cd5b5.0x240ca1cc77ac9c65.0x2de92c6f592b0275.0x4a7484aa6ea6e483.0x5cb0a9dcbd41fbd4.0x76f988da831153b5.0x983e5152ee66dfab.0xa831c66d2db43210.0xb00327c898fb213f.0xbf597fc7beef0ee4.0xc6e00bf33da88fc2.0xd5a79147930aa725.0x06ca6351e003826f.0x142929670a0e6e70.0x27b70a8546d22ffc.0x2e1b21385c26c926.0x4d2c6dfc5ac42aed.0x53380d139d95b3df.0x650a73548baf63de.0x766a0abb3c77b2a8.0x81c2c92e47edaee6.0x92722c851482353b.0xa2bfe8a14cf10364.0xa81a664bbc423001.0xc24b8b70d0f89791.0xc76c51a30654be30.0xd192e819d6ef5218.0xd69906245565a910.0xf40e35855771202a.0x106aa07032bbd1b8.0x19a4c116b8d2d0c8.0x1e376c085141ab53.0x2748774cdf8eeb99.0x34b0bcb5e19b48a8.0x391c0cb3c5c95a63.0x4ed8aa4ae3418acb.0x5b9cca4f7763e373.0x682e6ff3d6b2b8a3.0x748f82ee5defb2fc.0x78a5636f43172f60.0x84c87814a1f0ab72.0x8cc702081a6439ec.0x90befffa23631e28.0xa4506cebde82bde9.0xbef9a3f7b2c67915.0xc67178f2e372532b.0xca273eceea26619c.0xd186b8c721c0c207.0xeada7dd6cde0eb1e.0xf57d4f7fee6ed178.0x06f067aa72176fba.0x0a637dc5a2c898a6.0x113f9804bef90dae.0x1b710b35131c471b.0x28db77f523047d84.0x32caab7b40c72493.0x3c9ebe0a15c9bebc.0x431d67c49c100d4c.0x4cc5d4becb3e42b6.0x597f299cfc657e2a.0x5fcb6fab3ad6faec.0x6c44198c4a475817`.split(`.`).map(e=>BigInt(e))),dr=ur[0],fr=ur[1],pr=new Uint32Array(80),mr=new Uint32Array(80),hr=class extends kn{get(){let{Ah:e,Al:t,Bh:n,Bl:r,Ch:i,Cl:a,Dh:o,Dl:s,Eh:c,El:l,Fh:u,Fl:d,Gh:f,Gl:p,Hh:m,Hl:h}=this;return[e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h]}set(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=r|0,this.Ch=i|0,this.Cl=a|0,this.Dh=o|0,this.Dl=s|0,this.Eh=c|0,this.El=l|0,this.Fh=u|0,this.Fl=d|0,this.Gh=f|0,this.Gl=p|0,this.Hh=m|0,this.Hl=h|0}process(e,t){for(let n=0;n<16;n++,t+=4)pr[n]=e.getUint32(t),mr[n]=e.getUint32(t+=4);for(let e=16;e<80;e++){let t=pr[e-15]|0,n=mr[e-15]|0,r=Wn(t,n,1)^Wn(t,n,8)^Hn(t,n,7),i=Gn(t,n,1)^Gn(t,n,8)^Un(t,n,7),a=pr[e-2]|0,o=mr[e-2]|0,s=Wn(a,o,19)^Kn(a,o,61)^Hn(a,o,6),c=tr(i,Gn(a,o,19)^qn(a,o,61)^Un(a,o,6),mr[e-7],mr[e-16]);pr[e]=nr(c,r,s,pr[e-7],pr[e-16])|0,mr[e]=c|0}let{Ah:n,Al:r,Bh:i,Bl:a,Ch:o,Cl:s,Dh:c,Dl:l,Eh:u,El:d,Fh:f,Fl:p,Gh:m,Gl:h,Hh:g,Hl:_}=this;for(let e=0;e<80;e++){let t=Wn(u,d,14)^Wn(u,d,18)^Kn(u,d,41),v=Gn(u,d,14)^Gn(u,d,18)^qn(u,d,41),y=u&f^~u&m,b=d&p^~d&h,x=rr(_,v,b,fr[e],mr[e]),S=ir(x,g,t,y,dr[e],pr[e]),C=x|0,w=Wn(n,r,28)^Kn(n,r,34)^Kn(n,r,39),T=Gn(n,r,28)^qn(n,r,34)^qn(n,r,39),E=n&i^n&o^i&o,D=r&a^r&s^a&s;g=m|0,_=h|0,m=f|0,h=p|0,f=u|0,p=d|0,{h:u,l:d}=Qn(c|0,l|0,S|0,C|0),c=o|0,l=s|0,o=i|0,s=a|0,i=n|0,a=r|0;let O=$n(C,T,D);n=er(O,S,w,E),r=O|0}({h:n,l:r}=Qn(this.Ah|0,this.Al|0,n|0,r|0)),{h:i,l:a}=Qn(this.Bh|0,this.Bl|0,i|0,a|0),{h:o,l:s}=Qn(this.Ch|0,this.Cl|0,o|0,s|0),{h:c,l}=Qn(this.Dh|0,this.Dl|0,c|0,l|0),{h:u,l:d}=Qn(this.Eh|0,this.El|0,u|0,d|0),{h:f,l:p}=Qn(this.Fh|0,this.Fl|0,f|0,p|0),{h:m,l:h}=Qn(this.Gh|0,this.Gl|0,m|0,h|0),{h:g,l:_}=Qn(this.Hh|0,this.Hl|0,g|0,_|0),this.set(n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_)}roundClean(){hn(pr,mr)}destroy(){hn(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}constructor(e){super(128,e,16,!1)}},gr=class extends hr{constructor(){super(64),this.Ah=Nn[0]|0,this.Al=Nn[1]|0,this.Bh=Nn[2]|0,this.Bl=Nn[3]|0,this.Ch=Nn[4]|0,this.Cl=Nn[5]|0,this.Dh=Nn[6]|0,this.Dl=Nn[7]|0,this.Eh=Nn[8]|0,this.El=Nn[9]|0,this.Fh=Nn[10]|0,this.Fl=Nn[11]|0,this.Gh=Nn[12]|0,this.Gl=Nn[13]|0,this.Hh=Nn[14]|0,this.Hl=Nn[15]|0}},_r=class extends hr{constructor(){super(48),this.Ah=Mn[0]|0,this.Al=Mn[1]|0,this.Bh=Mn[2]|0,this.Bl=Mn[3]|0,this.Ch=Mn[4]|0,this.Cl=Mn[5]|0,this.Dh=Mn[6]|0,this.Dl=Mn[7]|0,this.Eh=Mn[8]|0,this.El=Mn[9]|0,this.Fh=Mn[10]|0,this.Fl=Mn[11]|0,this.Gh=Mn[12]|0,this.Gl=Mn[13]|0,this.Hh=Mn[14]|0,this.Hl=Mn[15]|0}},vr=Cn(()=>new cr,wn(1)),yr=Cn(()=>new lr,wn(4)),br=Cn(()=>new gr,wn(3)),xr=Cn(()=>new _r,wn(2)),Sr=BigInt(0),Cr=BigInt(1),wr=BigInt(2),Tr=BigInt(7),Er=BigInt(256),Dr=BigInt(113),Or=[],kr=[],Ar=[];for(let e=0,t=Cr,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],Or.push(2*(5*r+n)),kr.push((e+1)*(e+2)/2%64);let i=Sr;for(let e=0;e<7;e++)t=(t<<Cr^(t>>Tr)*Dr)%Er,t&wr&&(i^=Cr<<(Cr<<BigInt(e))-Cr);Ar.push(i)}var jr=Vn(Ar,!0),Mr=jr[0],Nr=jr[1],Pr=(e,t,n)=>n>32?Xn(e,t,n):Jn(e,t,n),Fr=(e,t,n)=>n>32?Zn(e,t,n):Yn(e,t,n);function Ir(e,t=24){let n=new Uint32Array(10);for(let r=24-t;r<24;r++){for(let t=0;t<10;t++)n[t]=e[t]^e[t+10]^e[t+20]^e[t+30]^e[t+40];for(let t=0;t<10;t+=2){let r=(t+8)%10,i=(t+2)%10,a=n[i],o=n[i+1],s=Pr(a,o,1)^n[r],c=Fr(a,o,1)^n[r+1];for(let n=0;n<50;n+=10)e[t+n]^=s,e[t+n+1]^=c}let t=e[2],i=e[3];for(let n=0;n<24;n++){let r=kr[n],a=Pr(t,i,r),o=Fr(t,i,r),s=Or[n];t=e[s],i=e[s+1],e[s]=a,e[s+1]=o}for(let t=0;t<50;t+=10){for(let r=0;r<10;r++)n[r]=e[t+r];for(let r=0;r<10;r++)e[t+r]^=~n[(r+2)%10]&n[(r+4)%10]}e[0]^=Mr[r],e[1]^=Nr[r]}hn(n)}var Lr=class e{clone(){return this._cloneInto()}keccak(){Sn(this.state32),Ir(this.state32,this.rounds),Sn(this.state32),this.posOut=0,this.pos=0}update(e){fn(this),un(e);let{blockLen:t,state:n}=this,r=e.length;for(let i=0;i<r;){let a=Math.min(t-this.pos,r-i);for(let t=0;t<a;t++)n[this.pos++]^=e[i++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:e,suffix:t,pos:n,blockLen:r}=this;e[n]^=t,t&128&&n===r-1&&this.keccak(),e[r-1]^=128,this.keccak()}writeInto(e){fn(this,!1),un(e),this.finish();let t=this.state,{blockLen:n}=this;for(let r=0,i=e.length;r<i;){this.posOut>=n&&this.keccak();let a=Math.min(n-this.posOut,i-r);e.set(t.subarray(this.posOut,this.posOut+a),r),this.posOut+=a,r+=a}return e}xofInto(e){if(!this.enableXOF)throw Error(`XOF is not possible for this instance`);return this.writeInto(e)}xof(e){return ln(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(pn(e,this),this.finished)throw Error(`digest() was already called`);return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,hn(this.state)}_cloneInto(t){let{blockLen:n,suffix:r,outputLen:i,rounds:a,enableXOF:o}=this;return t||=new e(n,r,i,o,a),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=a,t.suffix=r,t.outputLen=i,t.enableXOF=o,t.destroyed=this.destroyed,t}constructor(e,t,n,r=!1,i=24){if(this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=r,this.rounds=i,ln(n,`outputLen`),!(0<e&&e<200))throw Error(`only keccak-f1600 function is supported`);this.state=new Uint8Array(200),this.state32=mn(this.state)}},Rr=(e,t,n,r={})=>Cn(()=>new Lr(t,e,n),r),zr=Rr(6,144,28,wn(7)),Br=Rr(6,136,32,wn(8)),Vr=Rr(6,104,48,wn(9)),Hr=Rr(6,72,64,wn(10)),Ur=(()=>{if(typeof globalThis==`object`)return globalThis;Object.defineProperty(Object.prototype,`__GLOBALTHIS__`,{get(){return this},configurable:!0});try{if(typeof __GLOBALTHIS__<`u`)return __GLOBALTHIS__}finally{delete Object.prototype.__GLOBALTHIS__}if(typeof self<`u`)return self;if(typeof window<`u`)return window;if(typeof global<`u`)return global})(),Wr={SHA1:Ln,SHA224:yr,SHA256:vr,SHA384:xr,SHA512:br,"SHA3-224":zr,"SHA3-256":Br,"SHA3-384":Vr,"SHA3-512":Hr},Gr=e=>{switch(!0){case/^(?:SHA-?1|SSL3-SHA1)$/i.test(e):return`SHA1`;case/^SHA(?:2?-)?224$/i.test(e):return`SHA224`;case/^SHA(?:2?-)?256$/i.test(e):return`SHA256`;case/^SHA(?:2?-)?384$/i.test(e):return`SHA384`;case/^SHA(?:2?-)?512$/i.test(e):return`SHA512`;case/^SHA3-224$/i.test(e):return`SHA3-224`;case/^SHA3-256$/i.test(e):return`SHA3-256`;case/^SHA3-384$/i.test(e):return`SHA3-384`;case/^SHA3-512$/i.test(e):return`SHA3-512`;default:throw TypeError(`Unknown hash algorithm: ${e}`)}},Kr=(e,t,n)=>{if(En)return En(Wr[e]??Wr[Gr(e)],t,n);throw Error(`Missing HMAC function`)},qr=`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`,Jr=e=>{e=e.replace(/ /g,``);let t=e.length;for(;e[t-1]===`=`;)--t;e=(t<e.length?e.substring(0,t):e).toUpperCase();let n=new ArrayBuffer(e.length*5/8|0),r=new Uint8Array(n),i=0,a=0,o=0;for(let t=0;t<e.length;t++){let n=qr.indexOf(e[t]);if(n===-1)throw TypeError(`Invalid character found: ${e[t]}`);a=a<<5|n,i+=5,i>=8&&(i-=8,r[o++]=a>>>i)}return r},Yr=e=>{let t=0,n=0,r=``;for(let i=0;i<e.length;i++)for(n=n<<8|e[i],t+=8;t>=5;)r+=qr[n>>>t-5&31],t-=5;return t>0&&(r+=qr[n<<5-t&31]),r},Xr=e=>{e=e.replace(/ /g,``);let t=new ArrayBuffer(e.length/2),n=new Uint8Array(t);for(let t=0;t<e.length;t+=2)n[t/2]=parseInt(e.substring(t,t+2),16);return n},Zr=e=>{let t=``;for(let n=0;n<e.length;n++){let r=e[n].toString(16);r.length===1&&(t+=`0`),t+=r}return t.toUpperCase()},Qr=e=>{let t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let t=0;t<e.length;t++)n[t]=e.charCodeAt(t)&255;return n},$r=e=>{let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t},ei=Ur.TextEncoder?new Ur.TextEncoder:null,ti=Ur.TextDecoder?new Ur.TextDecoder:null,ni=e=>{if(!ei)throw Error(`Encoding API not available`);return ei.encode(e)},ri=e=>{if(!ti)throw Error(`Encoding API not available`);return ti.decode(e)},ii=e=>{if(Ur.crypto?.getRandomValues)return Ur.crypto.getRandomValues(new Uint8Array(e));throw Error(`Cryptography API not available`)},ai=class e{static fromLatin1(t){return new e({buffer:Qr(t).buffer})}static fromUTF8(t){return new e({buffer:ni(t).buffer})}static fromBase32(t){return new e({buffer:Jr(t).buffer})}static fromHex(t){return new e({buffer:Xr(t).buffer})}get buffer(){return this.bytes.buffer}get latin1(){return Object.defineProperty(this,`latin1`,{enumerable:!0,writable:!1,configurable:!1,value:$r(this.bytes)}),this.latin1}get utf8(){return Object.defineProperty(this,`utf8`,{enumerable:!0,writable:!1,configurable:!1,value:ri(this.bytes)}),this.utf8}get base32(){return Object.defineProperty(this,`base32`,{enumerable:!0,writable:!1,configurable:!1,value:Yr(this.bytes)}),this.base32}get hex(){return Object.defineProperty(this,`hex`,{enumerable:!0,writable:!1,configurable:!1,value:Zr(this.bytes)}),this.hex}constructor({buffer:e,size:t=20}={}){this.bytes=e===void 0?ii(t):new Uint8Array(e),Object.defineProperty(this,`bytes`,{enumerable:!0,writable:!1,configurable:!1,value:this.bytes})}},oi=(e,t)=>{{if(e.length!==t.length)throw TypeError(`Input strings must have the same length`);let n=-1,r=0;for(;++n<e.length;)r|=e.charCodeAt(n)^t.charCodeAt(n);return r===0}},si=class e{static get defaults(){return{issuer:``,label:`OTPAuth`,issuerInLabel:!0,algorithm:`SHA1`,digits:6,counter:0,window:1}}static generate({secret:t,algorithm:n=e.defaults.algorithm,digits:r=e.defaults.digits,counter:i=e.defaults.counter,hmac:a=Kr}){let o=sn(i),s=a(n,t.bytes,o);if(!s?.byteLength||s.byteLength<19)throw TypeError(`Return value must be at least 19 bytes`);let c=s[s.byteLength-1]&15;return(((s[c]&127)<<24|(s[c+1]&255)<<16|(s[c+2]&255)<<8|s[c+3]&255)%10**r).toString().padStart(r,`0`)}generate({counter:t=this.counter++}={}){return e.generate({secret:this.secret,algorithm:this.algorithm,digits:this.digits,counter:t,hmac:this.hmac})}static validate({token:t,secret:n,algorithm:r,digits:i=e.defaults.digits,counter:a=e.defaults.counter,window:o=e.defaults.window,hmac:s=Kr}){if(t.length!==i)return null;let c=null,l=o=>{oi(t,e.generate({secret:n,algorithm:r,digits:i,counter:o,hmac:s}))&&(c=o-a)};l(a);for(let e=1;e<=o&&c===null&&(l(a-e),!(c!==null||(l(a+e),c!==null)));++e);return c}validate({token:t,counter:n=this.counter,window:r}){return e.validate({token:t,secret:this.secret,algorithm:this.algorithm,digits:this.digits,counter:n,window:r,hmac:this.hmac})}toString(){let e=encodeURIComponent;return`otpauth://hotp/${this.issuer.length>0?this.issuerInLabel?`${e(this.issuer)}:${e(this.label)}?issuer=${e(this.issuer)}&`:`${e(this.label)}?issuer=${e(this.issuer)}&`:`${e(this.label)}?`}secret=${e(this.secret.base32)}&algorithm=${e(this.algorithm)}&digits=${e(this.digits)}&counter=${e(this.counter)}`}constructor({issuer:t=e.defaults.issuer,label:n=e.defaults.label,issuerInLabel:r=e.defaults.issuerInLabel,secret:i=new ai,algorithm:a=e.defaults.algorithm,digits:o=e.defaults.digits,counter:s=e.defaults.counter,hmac:c}={}){this.issuer=t,this.label=n,this.issuerInLabel=r,this.secret=typeof i==`string`?ai.fromBase32(i):i,this.algorithm=c?a:Gr(a),this.digits=o,this.counter=s,this.hmac=c}},ci=class e{static get defaults(){return{issuer:``,label:`OTPAuth`,issuerInLabel:!0,algorithm:`SHA1`,digits:6,period:30,window:1}}static counter({period:t=e.defaults.period,timestamp:n=Date.now()}={}){return Math.floor(n/1e3/t)}counter({timestamp:t=Date.now()}={}){return e.counter({period:this.period,timestamp:t})}static remaining({period:t=e.defaults.period,timestamp:n=Date.now()}={}){return t*1e3-n%(t*1e3)}remaining({timestamp:t=Date.now()}={}){return e.remaining({period:this.period,timestamp:t})}static generate({secret:t,algorithm:n,digits:r,period:i=e.defaults.period,timestamp:a=Date.now(),hmac:o}){return si.generate({secret:t,algorithm:n,digits:r,counter:e.counter({period:i,timestamp:a}),hmac:o})}generate({timestamp:t=Date.now()}={}){return e.generate({secret:this.secret,algorithm:this.algorithm,digits:this.digits,period:this.period,timestamp:t,hmac:this.hmac})}static validate({token:t,secret:n,algorithm:r,digits:i,period:a=e.defaults.period,timestamp:o=Date.now(),window:s,hmac:c}){return si.validate({token:t,secret:n,algorithm:r,digits:i,counter:e.counter({period:a,timestamp:o}),window:s,hmac:c})}validate({token:t,timestamp:n,window:r}){return e.validate({token:t,secret:this.secret,algorithm:this.algorithm,digits:this.digits,period:this.period,timestamp:n,window:r,hmac:this.hmac})}toString(){let e=encodeURIComponent;return`otpauth://totp/${this.issuer.length>0?this.issuerInLabel?`${e(this.issuer)}:${e(this.label)}?issuer=${e(this.issuer)}&`:`${e(this.label)}?issuer=${e(this.issuer)}&`:`${e(this.label)}?`}secret=${e(this.secret.base32)}&algorithm=${e(this.algorithm)}&digits=${e(this.digits)}&period=${e(this.period)}`}constructor({issuer:t=e.defaults.issuer,label:n=e.defaults.label,issuerInLabel:r=e.defaults.issuerInLabel,secret:i=new ai,algorithm:a=e.defaults.algorithm,digits:o=e.defaults.digits,period:s=e.defaults.period,hmac:c}={}){this.issuer=t,this.label=n,this.issuerInLabel=r,this.secret=typeof i==`string`?ai.fromBase32(i):i,this.algorithm=c?a:Gr(a),this.digits=o,this.period=s,this.hmac=c}},li=/^otpauth:\/\/([ht]otp)\/(.+)\?([A-Z0-9.~_-]+=[^?&]*(?:&[A-Z0-9.~_-]+=[^?&]*)*)$/i,ui=/^[2-7A-Z]+=*$/i,di=/^SHA(?:1|224|256|384|512|3-224|3-256|3-384|3-512)$/i,fi=/^[A-Z0-9]+(?:[_-][A-Z0-9]+)*$/i,pi=/^[+-]?\d+$/,mi=/^\+?[1-9]\d*$/,hi=class{static parse(e,{hmac:t}={}){let n;try{n=e.match(li)}catch{}if(!Array.isArray(n))throw URIError(`Invalid URI format`);let r=n[1].toLowerCase(),i=n[2].split(/(?::|%3A) *(.+)/i,2).map(decodeURIComponent),a=n[3].split(`&`).reduce((e,t)=>{let n=t.split(/=(.*)/,2).map(decodeURIComponent),r=n[0].toLowerCase(),i=n[1],a=e;return a[r]=i,a},{}),o,s={};if(r===`hotp`)if(o=si,a.counter!==void 0&&pi.test(a.counter))s.counter=parseInt(a.counter,10);else throw TypeError(`Missing or invalid 'counter' parameter`);else if(r===`totp`){if(o=ci,a.period!==void 0)if(mi.test(a.period))s.period=parseInt(a.period,10);else throw TypeError(`Invalid 'period' parameter`)}else throw TypeError(`Unknown OTP type`);if(a.issuer!==void 0&&(s.issuer=a.issuer),i.length===2?(s.label=i[1],s.issuer===void 0||s.issuer===``?s.issuer=i[0]:i[0]===``&&(s.issuerInLabel=!1)):(s.label=i[0],s.issuer!==void 0&&s.issuer!==``&&(s.issuerInLabel=!1)),a.secret!==void 0&&ui.test(a.secret))s.secret=a.secret;else throw TypeError(`Missing or invalid 'secret' parameter`);if(a.algorithm!==void 0)if((t?fi:di).test(a.algorithm))s.algorithm=a.algorithm;else throw TypeError(`Invalid 'algorithm' parameter`);if(a.digits!==void 0)if(mi.test(a.digits))s.digits=parseInt(a.digits,10);else throw TypeError(`Invalid 'digits' parameter`);return t!==void 0&&(s.hmac=t),new o(s)}static stringify(e){if(e instanceof si||e instanceof ci)return e.toString();throw TypeError(`Invalid 'HOTP/TOTP' object`)}};function gi(e,t=`SHA1`){return{code:new ci({secret:e,digits:6,period:30,algorithm:t}).generate(),remaining:30-Math.floor(Date.now()/1e3)%30}}function _i(e){try{let t=hi.parse(e);return t instanceof ci?{secret:t.secret.base32,algorithm:t.algorithm}:null}catch{return null}}var vi=new Uint8Array([1]);function yi(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);return Array.from(t).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function bi(e){let t=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)t[n/2]=parseInt(e.slice(n,n+2),16);return t}async function xi(e,t){let n=await crypto.subtle.importKey(`raw`,e.buffer,{name:`AES-GCM`},!1,[`encrypt`]),r=crypto.getRandomValues(new Uint8Array(12)),i=new TextEncoder().encode(t),a=await crypto.subtle.encrypt({name:`AES-GCM`,iv:r,additionalData:vi.buffer,tagLength:128},n,i),o=new Uint8Array(a),s=o.slice(0,o.length-16),c=o.slice(o.length-16);return{nonce:yi(r.buffer),ciphertext:yi(s.buffer),tag:yi(c.buffer)}}async function Si(e,t,n,r){let i=await crypto.subtle.importKey(`raw`,e.buffer,{name:`AES-GCM`},!1,[`decrypt`]),a=bi(n),o=bi(r),s=new Uint8Array(a.length+o.length);s.set(a),s.set(o,a.length);let c=await crypto.subtle.decrypt({name:`AES-GCM`,iv:bi(t).buffer,additionalData:vi.buffer,tagLength:128},i,s.buffer);return new TextDecoder().decode(c)}function Ci(e){e.fill(0)}async function wi(e,t){let n;try{n=JSON.parse(e)}catch{throw Error(`INVALID_PEACH_EXPORT`)}if(n.type!==`peach-export`||n.kdf!==`PBKDF2-SHA256`||n.version!==2||!n.salt||!n.nonce||!n.ciphertext||!n.tag)throw Error(`INVALID_PEACH_EXPORT`);let r;try{r=await Si(await Ti(t,Oi(n.salt)),n.nonce,n.ciphertext,n.tag)}catch{throw Error(`INVALID_EXPORT_PASSWORD`)}let i;try{i=JSON.parse(r)}catch{throw Error(`INVALID_PEACH_EXPORT`)}let a,o,s;if(Array.isArray(i))a=i;else if(i&&typeof i==`object`&&Array.isArray(i.entries)){let e=i;a=e.entries,e.license&&typeof e.license.key==`string`&&(o=e.license.key,s=e.license.activatedAt)}else throw Error(`INVALID_PEACH_EXPORT`);return{entries:a.map(Ei).filter(e=>e!==null),...o?{licenseKey:o,licenseActivatedAt:s}:{}}}async function Ti(e,t){let n=await crypto.subtle.importKey(`raw`,new TextEncoder().encode(e),`PBKDF2`,!1,[`deriveBits`]),r=await crypto.subtle.deriveBits({name:`PBKDF2`,salt:t.buffer,iterations:25e4,hash:`SHA-256`},n,256);return new Uint8Array(r)}function Ei(e){if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.deletedAt==`number`?t.deletedAt:void 0;if(t.type===`note`){let e=Di(t.title,t.name,`Untitled`);return e?{type:`note`,title:e,notes:Di(t.notes,t.note)||void 0,tags:Array.isArray(t.tags)?t.tags:void 0,deletedAt:n}:null}if(t.type===`passkey`)return typeof t.rpId!=`string`||typeof t.rpName!=`string`||typeof t.credentialId!=`string`||typeof t.publicKeyCose!=`string`||!t.privateKeyJwk||typeof t.userHandle!=`string`||typeof t.userName!=`string`||typeof t.userDisplayName!=`string`||t.algorithm!==-7&&t.algorithm!==-8?null:{type:`passkey`,title:Di(t.title,t.rpName,t.rpId),rpId:t.rpId,rpName:t.rpName,credentialId:t.credentialId,publicKeyCose:t.publicKeyCose,privateKeyJwk:t.privateKeyJwk,userHandle:t.userHandle,userName:t.userName,userDisplayName:t.userDisplayName,algorithm:t.algorithm,signCount:typeof t.signCount==`number`?t.signCount:0,aaguid:typeof t.aaguid==`string`?t.aaguid:`AAAAAAAAAAAAAAAAAAAAAA`,backupEligible:t.backupEligible!==!1,backupState:t.backupState===!0,lastUsedAt:typeof t.lastUsedAt==`number`?t.lastUsedAt:void 0,deletedAt:n};let r=typeof t.password==`string`?t.password:``;return r?{type:`login`,title:Di(t.title,t.name,t.url,t.username,t.email,`Untitled`),username:Di(t.username,t.email,``),password:r,url:Di(t.url,``),notes:Di(t.notes,t.note)||void 0,totp:Di(t.totp)||void 0,breach:typeof t.breach==`number`&&t.breach>0?t.breach:void 0,canary:t.canary??void 0,tags:Array.isArray(t.tags)?t.tags:void 0,deletedAt:n}:null}function Di(...e){for(let t of e)if(typeof t==`string`&&t.trim())return t.trim();return``}function Oi(e){let t=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)t[n/2]=parseInt(e.slice(n,n+2),16);return t}async function ki(e,t){let n=Ai(e);switch(n){case`csv`:{let t=Mi(e),r=Ft.default.parse(e,{header:!0,skipEmptyLines:!0}).data.length;return{format:n,label:`CSV import`,entries:t,totalItems:r,skippedItems:Math.max(0,r-t.length),requiresPassword:!1}}case`1password-json`:{let t=ji(e);return{format:n,label:`1Password JSON`,entries:t,totalItems:t.length,skippedItems:0,requiresPassword:!1}}case`bitwarden-json`:{let{entries:t,totalItems:r}=Ni(e);return{format:n,label:`Bitwarden JSON`,entries:t,totalItems:r,skippedItems:Math.max(0,r-t.length),requiresPassword:!1}}case`credential-exchange-json`:{let{entries:t,totalItems:r}=await Fi(e);return{format:n,label:`Credential Exchange JSON`,entries:t,totalItems:r,skippedItems:Math.max(0,r-t.length),requiresPassword:!1}}case`protonpass-json`:{let{entries:t,totalItems:r}=Pi(e);return{format:n,label:`Proton Pass JSON`,entries:t,totalItems:r,skippedItems:Math.max(0,r-t.length),requiresPassword:!1}}case`peach-legacy-json`:{let{entries:t,totalItems:r,skippedItems:i}=Ii(e);return{format:n,label:`Peach (legacy)`,entries:t,totalItems:r,skippedItems:i,requiresPassword:!1}}case`peach-json`:{if(!t)return{format:n,label:`Peach encrypted backup`,entries:[],totalItems:0,skippedItems:0,requiresPassword:!0};let r=await wi(e,t);return{format:n,label:`Peach encrypted backup`,entries:r.entries,totalItems:r.entries.length,skippedItems:0,requiresPassword:!1,...r.licenseKey?{licenseKey:r.licenseKey,licenseActivatedAt:r.licenseActivatedAt}:{}}}default:return{format:`unknown`,label:`Unknown format`,entries:[],totalItems:0,skippedItems:0,requiresPassword:!1}}}function Ai(e){let t=e.trim();if(t.startsWith(`{`)||t.startsWith(`[`))try{let e=JSON.parse(t);return Vi(e)?`peach-json`:e?.exportFormat===`peach-vault`?`peach-legacy-json`:zi(e)?`credential-exchange-json`:Li(e)?`1password-json`:Ri(e)?`bitwarden-json`:Bi(e)?`protonpass-json`:`unknown`}catch{return`unknown`}return t.includes(`,`)?`csv`:`unknown`}function ji(e){let t=JSON.parse(e),n=[],r=[],i=t?.accounts?.[0]?.vaults??[];for(let e of i)r.push(e.items??[]);Array.isArray(t?.items)&&r.push(t.items);for(let e of r)for(let t of e){if(t.trashed)continue;let e=t.details?.loginFields??t.fields??[],r=e.find(e=>e.designation===`username`||e.id===`username`)?.value??``,i=e.find(e=>e.designation===`password`||e.id===`password`)?.value??``;i&&n.push({type:`login`,title:(t.overview?.title??t.title)?.trim()||`Untitled`,username:r.trim(),password:i,url:(t.overview?.url??t.url??``).trim(),notes:Gi(t.details?.notesPlain??t.notes)})}return n}function Mi(e){return Ft.default.parse(e,{header:!0,skipEmptyLines:!0,transformHeader:e=>e.trim()}).data.reduce((e,t)=>{let n=Hi(t,[`name`,`title`,`Title`,`Name`,`item`]),r=Hi(t,[`url`,`website`,`URL`,`Website`,`login_uri`,`loginUrl`]),i=Hi(t,[`username`,`login`,`email`,`Username`,`login_username`,`user`]),a=Hi(t,[`password`,`Password`,`login_password`]),o=Hi(t,[`notes`,`Notes`,`note`,`comment`,`extra`]),s=Ui(Hi(t,[`totp`,`totpUri`,`otp`,`otpSecret`,`two-factor-secret`,`login_totp`])),c=Hi(t,[`grouping`,`Grouping`,`folder`,`Folder`]);return a&&e.push({type:`login`,title:Wi(n,r,i,`Untitled`),username:i,password:a,url:r,notes:o||void 0,totp:s,tags:c?[c]:void 0}),e},[])}function Ni(e){let t=JSON.parse(e),n=(Array.isArray(t?.items)?t.items:[]).filter(e=>e?.type===1);return{totalItems:n.length,entries:n.reduce((e,t)=>{let n=Ki(t.login?.password);return n&&e.push({type:`login`,title:Wi(t.name,`Untitled`),url:Wi(t.login?.uris?.[0]?.uri,``),username:Wi(t.login?.username,``),password:n,notes:Gi(t.notes),totp:Ui(Gi(t.login?.totp))}),e},[])}}function Pi(e){let t=JSON.parse(e),n=t?.vaults&&typeof t.vaults==`object`?t.vaults:{},r=[],i=0;for(let e of Object.values(n))if(e?.name?.toLowerCase()!==`recycle bin`)for(let t of e?.items??[]){let e=t?.data??t;if((e?.type??t?.type)!==`login`)continue;i+=1;let n=e?.content??{},a=e?.metadata??{},o=Wi(n.password,n.itemPassword);o&&r.push({type:`login`,title:Wi(a.name,t.name,t.title,n.itemName,`Untitled`),username:Wi(n.username,n.itemUsername,n.email,n.itemEmail,t.aliasEmail,``),password:o,url:Wi(Array.isArray(n.urls)?n.urls[0]:void 0,n.url,``),notes:Gi(a.note??a.notes),totp:Ui(Wi(n.totpUri,n.itemTotpUri))})}return{entries:r,totalItems:i}}async function Fi(e){let t=JSON.parse(e),n=[],r=0;for(let e of t.accounts??[])for(let t of e.items??[])for(let e of t.credentials??[])if(e?.type===`passkey`&&(r+=1,!(!e.credentialId||!e.rpId||!e.username||!e.userDisplayName||!e.userHandle||!e.key)))try{let r=await $t(Kt(e.key));n.push({type:`passkey`,title:Wi(t.title,e.rpId),rpId:e.rpId,rpName:Wi(t.title,e.rpId),credentialId:e.credentialId,publicKeyCose:Gt(r.publicKeyCose),privateKeyJwk:r.privateKeyJwk,userHandle:e.userHandle,userName:e.username,userDisplayName:e.userDisplayName,algorithm:r.algorithm,signCount:0,aaguid:`AAAAAAAAAAAAAAAAAAAAAA`,backupEligible:!0,backupState:!1})}catch{}return{entries:n,totalItems:r}}function Ii(e){let t=JSON.parse(e),n=t.entries.length,r=t.entries.filter(e=>e.type===`login`);return{totalItems:n,skippedItems:n-r.length,entries:r.map(e=>({type:`login`,title:e.name??`Untitled`,url:e.login?.urls?.[0]??``,username:e.login?.username??``,password:e.login?.password??``,totp:e.login?.totp?.secret??void 0,notes:e.login?.notes??void 0}))}}function Li(e){if(!e||typeof e!=`object`)return!1;let t=e;if(Array.isArray(t.accounts))return!0;if(!Array.isArray(t.items)||t.items.length===0)return!1;let n=t.items[0];return!!(n?.details?.loginFields||n?.overview?.title)}function Ri(e){return!!(e&&typeof e==`object`&&Array.isArray(e.items))}function zi(e){return!!(e&&typeof e==`object`&&e.version&&Array.isArray(e.accounts))}function Bi(e){return!!(e&&typeof e==`object`&&e.vaults&&typeof e.vaults==`object`)}function Vi(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`peach-export`&&t.version===2&&t.kdf===`PBKDF2-SHA256`&&typeof t.salt==`string`&&typeof t.nonce==`string`&&typeof t.ciphertext==`string`&&typeof t.tag==`string`}function Hi(e,t){for(let n of t){let t=e[n];if(typeof t==`string`&&t.trim())return t.trim()}return``}function Ui(e){if(e)return(e.startsWith(`otpauth://`)?_i(e):null)?.secret??e.trim()??void 0}function Wi(...e){for(let t of e)if(typeof t==`string`&&t.trim())return t.trim();return``}function Gi(e){return typeof e==`string`&&e.trim()?e.trim():void 0}function Ki(e){return typeof e==`string`?e:``}var qi=57344;function Ji(e){let t=[];for(let n=0;n<e.length;n++)t.push(String.fromCodePoint(qi+e[n]));return t.join(``)}function Yi(e){let t=Array.from(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++){let r=t[e].codePointAt(0);if(r<qi||r>qi+255)throw Error(`INVALID_PEACHSCRIPT_CHARACTER`);n[e]=r-qi}return n}function Xi(e){return e.replace(/\s+/g,``)}function Zi(e){let t=Xi(e);if(t.length===0)return!1;for(let e of t){let t=e.codePointAt(0);if(t<qi||t>qi+255)return!1}return!0}function Qi(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}var $i=class{constructor(){this.mutex=Promise.resolve()}lock(){let e=()=>{};return this.mutex=this.mutex.then(()=>new Promise(e)),new Promise(t=>{e=t})}dispatch(e){return Qi(this,void 0,void 0,function*(){let t=yield this.lock();try{return yield Promise.resolve(e())}finally{t()}})}};function ea(){return typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:global}var ta=ea(),na=ta.Buffer??null,ra=ta.TextEncoder?new ta.TextEncoder:null;function ia(e,t){return(e&15)+(e>>6|e>>3&8)<<4|(t&15)+(t>>6|t>>3&8)}function aa(e,t){let n=t.length>>1;for(let r=0;r<n;r++){let n=r<<1;e[r]=ia(t.charCodeAt(n),t.charCodeAt(n+1))}}function oa(e,t){if(e.length!==t.length*2)return!1;for(let n=0;n<t.length;n++){let r=n<<1;if(t[n]!==ia(e.charCodeAt(r),e.charCodeAt(r+1)))return!1}return!0}var sa=87,ca=48;function la(e,t,n){let r=0;for(let i=0;i<n;i++){let n=t[i]>>>4;e[r++]=n>9?n+sa:n+ca,n=t[i]&15,e[r++]=n>9?n+sa:n+ca}return String.fromCharCode.apply(null,e)}var ua=na===null?e=>{if(typeof e==`string`)return ra.encode(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw Error(`Invalid data type!`)}:e=>{if(typeof e==`string`){let t=na.from(e,`utf8`);return new Uint8Array(t.buffer,t.byteOffset,t.length)}if(na.isBuffer(e))return new Uint8Array(e.buffer,e.byteOffset,e.length);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw Error(`Invalid data type!`)},da=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,fa=new Uint8Array(256);for(let e=0;e<64;e++)fa[da.charCodeAt(e)]=e;function pa(e,t=!0){let n=e.length,r=n%3,i=[],a=n-r;for(let t=0;t<a;t+=3){let n=(e[t]<<16&16711680)+(e[t+1]<<8&65280)+(e[t+2]&255),r=da.charAt(n>>18&63)+da.charAt(n>>12&63)+da.charAt(n>>6&63)+da.charAt(n&63);i.push(r)}if(r===1){let r=e[n-1],a=da.charAt(r>>2),o=da.charAt(r<<4&63);i.push(`${a}${o}`),t&&i.push(`==`)}else if(r===2){let r=(e[n-2]<<8)+e[n-1],a=da.charAt(r>>10),o=da.charAt(r>>4&63),s=da.charAt(r<<2&63);i.push(`${a}${o}${s}`),t&&i.push(`=`)}return i.join(``)}function ma(e){let t=Math.floor(e.length*.75),n=e.length;return e[n-1]===`=`&&(--t,e[n-2]===`=`&&--t),t}function ha(e){let t=ma(e),n=e.length,r=new Uint8Array(t),i=0;for(let t=0;t<n;t+=4){let n=fa[e.charCodeAt(t)],a=fa[e.charCodeAt(t+1)],o=fa[e.charCodeAt(t+2)],s=fa[e.charCodeAt(t+3)];r[i]=n<<2|a>>4,i+=1,r[i]=(a&15)<<4|o>>2,i+=1,r[i]=(o&3)<<6|s&63,i+=1}return r}var ga=16*1024,_a=4,va=new $i,ya=new Map;function ba(e,t){return Qi(this,void 0,void 0,function*(){let n=null,r=null,i=!1;if(typeof WebAssembly>`u`)throw Error(`WebAssembly is not supported in this environment!`);let a=(e,t=0)=>{r.set(e,t)},o=()=>r,s=()=>n.exports,c=e=>{n.exports.Hash_SetMemorySize(e);let t=n.exports.Hash_GetBuffer(),i=n.exports.memory.buffer;r=new Uint8Array(i,t,e)},l=()=>new DataView(n.exports.memory.buffer).getUint32(n.exports.STATE_SIZE,!0),u=va.dispatch(()=>Qi(this,void 0,void 0,function*(){if(!ya.has(e.name)){let t=ha(e.data),n=WebAssembly.compile(t);ya.set(e.name,n)}let t=yield ya.get(e.name);n=yield WebAssembly.instantiate(t,{})})),d=()=>Qi(this,void 0,void 0,function*(){n||(yield u);let e=n.exports.Hash_GetBuffer(),t=n.exports.memory.buffer;r=new Uint8Array(t,e,ga)}),f=(e=null)=>{i=!0,n.exports.Hash_Init(e)},p=e=>{let t=0;for(;t<e.length;){let i=e.subarray(t,t+ga);t+=i.length,r.set(i),n.exports.Hash_Update(i.length)}},m=e=>{if(!i)throw Error(`update() called before init()`);p(ua(e))},h=new Uint8Array(t*2),g=(e,a=null)=>{if(!i)throw Error(`digest() called before init()`);return i=!1,n.exports.Hash_Final(a),e===`binary`?r.slice(0,t):la(h,r,t)},_=()=>{if(!i)throw Error(`save() can only be called after init() and before digest()`);let t=n.exports.Hash_GetState(),r=l(),a=n.exports.memory.buffer,o=new Uint8Array(a,t,r),s=new Uint8Array(_a+r);return aa(s,e.hash),s.set(o,_a),s},v=t=>{if(!(t instanceof Uint8Array))throw Error(`load() expects an Uint8Array generated by save()`);let r=n.exports.Hash_GetState(),a=l(),o=_a+a,s=n.exports.memory.buffer;if(t.length!==o)throw Error(`Bad state length (expected ${o} bytes, got ${t.length})`);if(!oa(e.hash,t.subarray(0,_a)))throw Error(`This state was written by an incompatible hash implementation`);let c=t.subarray(_a);new Uint8Array(s,r,a).set(c),i=!0},y=e=>typeof e==`string`?e.length<ga/4:e.byteLength<ga,b=y;switch(e.name){case`argon2`:case`scrypt`:b=()=>!0;break;case`blake2b`:case`blake2s`:b=(e,t)=>t<=512&&y(e);break;case`blake3`:b=(e,t)=>t===0&&y(e);break;case`xxhash64`:case`xxhash3`:case`xxhash128`:case`crc64`:b=()=>!1;break}return yield d(),{getMemory:o,writeMemory:a,getExports:s,setMemorySize:c,init:f,update:m,digest:g,save:_,load:v,calculate:(e,i=null,a=null)=>{if(!b(e,i))return f(i),m(e),g(`hex`,a);let o=ua(e);return r.set(o),n.exports.Hash_Calculate(o.length,i,a),la(h,r,t)},hashLength:t}})}function xa(e,t,n){return Qi(this,void 0,void 0,function*(){let r=yield e.lock(),i=yield ba(t,n);return r(),i})}new $i;var Sa={name:`argon2`,data:`AGFzbQEAAAABKQVgAX8Bf2AAAX9gEH9/f39/f39/f39/f39/f38AYAR/f39/AGACf38AAwYFAAECAwQFBgEBAoCAAgYIAX8BQZCoBAsHQQQGbWVtb3J5AgASSGFzaF9TZXRNZW1vcnlTaXplAAAOSGFzaF9HZXRCdWZmZXIAAQ5IYXNoX0NhbGN1bGF0ZQAECvEyBVgBAn9BACEBAkAgAEEAKAKICCICRg0AAkAgACACayIAQRB2IABBgIB8cSAASWoiAEAAQX9HDQBB/wHADwtBACEBQQBBACkDiAggAEEQdK18NwOICAsgAcALcAECfwJAQQAoAoAIIgANAEEAPwBBEHQiADYCgAhBACgCiAgiAUGAgCBGDQACQEGAgCAgAWsiAEEQdiAAQYCAfHEgAElqIgBAAEF/Rw0AQQAPC0EAQQApA4gIIABBEHStfDcDiAhBACgCgAghAAsgAAvcDgECfiAAIAQpAwAiECAAKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAMIBAgDCkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgBCAQIAQpAwCFQiiJIhA3AwAgACAQIAApAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAwgECAMKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAEIBAgBCkDAIVCAYk3AwAgASAFKQMAIhAgASkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDSAQIA0pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAEgECABKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACANIBAgDSkDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAIgBikDACIQIAIpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIA4gECAOKQMAhUIgiSIQNwMAIAogECAKKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACACIBAgAikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDiAQIA4pAwCFQjCJIhA3AwAgCiAQIAopAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACADIAcpAwAiECADKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAPIBAgDykDAIVCIIkiEDcDACALIBAgCykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAyAQIAMpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA8gECAPKQMAhUIwiSIQNwMAIAsgECALKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgACAFKQMAIhAgACkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDyAQIA8pAwCFQiCJIhA3AwAgCiAQIAopAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAAgECAAKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAPIBAgDykDAIVCMIkiEDcDACAKIBAgCikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAEgBikDACIQIAEpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAwgECAMKQMAhUIgiSIQNwMAIAsgECALKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACABIBAgASkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDCAQIAwpAwCFQjCJIhA3AwAgCyAQIAspAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACACIAcpAwAiECACKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACANIBAgDSkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAiAQIAIpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA0gECANKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgAyAEKQMAIhAgAykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDiAQIA4pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAQgECAEKQMAhUIoiSIQNwMAIAMgECADKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAOIBAgDikDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBCAQIAQpAwCFQgGJNwMAC98aAQN/QQAhBEEAIAIpAwAgASkDAIU3A5AIQQAgAikDCCABKQMIhTcDmAhBACACKQMQIAEpAxCFNwOgCEEAIAIpAxggASkDGIU3A6gIQQAgAikDICABKQMghTcDsAhBACACKQMoIAEpAyiFNwO4CEEAIAIpAzAgASkDMIU3A8AIQQAgAikDOCABKQM4hTcDyAhBACACKQNAIAEpA0CFNwPQCEEAIAIpA0ggASkDSIU3A9gIQQAgAikDUCABKQNQhTcD4AhBACACKQNYIAEpA1iFNwPoCEEAIAIpA2AgASkDYIU3A/AIQQAgAikDaCABKQNohTcD+AhBACACKQNwIAEpA3CFNwOACUEAIAIpA3ggASkDeIU3A4gJQQAgAikDgAEgASkDgAGFNwOQCUEAIAIpA4gBIAEpA4gBhTcDmAlBACACKQOQASABKQOQAYU3A6AJQQAgAikDmAEgASkDmAGFNwOoCUEAIAIpA6ABIAEpA6ABhTcDsAlBACACKQOoASABKQOoAYU3A7gJQQAgAikDsAEgASkDsAGFNwPACUEAIAIpA7gBIAEpA7gBhTcDyAlBACACKQPAASABKQPAAYU3A9AJQQAgAikDyAEgASkDyAGFNwPYCUEAIAIpA9ABIAEpA9ABhTcD4AlBACACKQPYASABKQPYAYU3A+gJQQAgAikD4AEgASkD4AGFNwPwCUEAIAIpA+gBIAEpA+gBhTcD+AlBACACKQPwASABKQPwAYU3A4AKQQAgAikD+AEgASkD+AGFNwOICkEAIAIpA4ACIAEpA4AChTcDkApBACACKQOIAiABKQOIAoU3A5gKQQAgAikDkAIgASkDkAKFNwOgCkEAIAIpA5gCIAEpA5gChTcDqApBACACKQOgAiABKQOgAoU3A7AKQQAgAikDqAIgASkDqAKFNwO4CkEAIAIpA7ACIAEpA7AChTcDwApBACACKQO4AiABKQO4AoU3A8gKQQAgAikDwAIgASkDwAKFNwPQCkEAIAIpA8gCIAEpA8gChTcD2ApBACACKQPQAiABKQPQAoU3A+AKQQAgAikD2AIgASkD2AKFNwPoCkEAIAIpA+ACIAEpA+AChTcD8ApBACACKQPoAiABKQPoAoU3A/gKQQAgAikD8AIgASkD8AKFNwOAC0EAIAIpA/gCIAEpA/gChTcDiAtBACACKQOAAyABKQOAA4U3A5ALQQAgAikDiAMgASkDiAOFNwOYC0EAIAIpA5ADIAEpA5ADhTcDoAtBACACKQOYAyABKQOYA4U3A6gLQQAgAikDoAMgASkDoAOFNwOwC0EAIAIpA6gDIAEpA6gDhTcDuAtBACACKQOwAyABKQOwA4U3A8ALQQAgAikDuAMgASkDuAOFNwPIC0EAIAIpA8ADIAEpA8ADhTcD0AtBACACKQPIAyABKQPIA4U3A9gLQQAgAikD0AMgASkD0AOFNwPgC0EAIAIpA9gDIAEpA9gDhTcD6AtBACACKQPgAyABKQPgA4U3A/ALQQAgAikD6AMgASkD6AOFNwP4C0EAIAIpA/ADIAEpA/ADhTcDgAxBACACKQP4AyABKQP4A4U3A4gMQQAgAikDgAQgASkDgASFNwOQDEEAIAIpA4gEIAEpA4gEhTcDmAxBACACKQOQBCABKQOQBIU3A6AMQQAgAikDmAQgASkDmASFNwOoDEEAIAIpA6AEIAEpA6AEhTcDsAxBACACKQOoBCABKQOoBIU3A7gMQQAgAikDsAQgASkDsASFNwPADEEAIAIpA7gEIAEpA7gEhTcDyAxBACACKQPABCABKQPABIU3A9AMQQAgAikDyAQgASkDyASFNwPYDEEAIAIpA9AEIAEpA9AEhTcD4AxBACACKQPYBCABKQPYBIU3A+gMQQAgAikD4AQgASkD4ASFNwPwDEEAIAIpA+gEIAEpA+gEhTcD+AxBACACKQPwBCABKQPwBIU3A4ANQQAgAikD+AQgASkD+ASFNwOIDUEAIAIpA4AFIAEpA4AFhTcDkA1BACACKQOIBSABKQOIBYU3A5gNQQAgAikDkAUgASkDkAWFNwOgDUEAIAIpA5gFIAEpA5gFhTcDqA1BACACKQOgBSABKQOgBYU3A7ANQQAgAikDqAUgASkDqAWFNwO4DUEAIAIpA7AFIAEpA7AFhTcDwA1BACACKQO4BSABKQO4BYU3A8gNQQAgAikDwAUgASkDwAWFNwPQDUEAIAIpA8gFIAEpA8gFhTcD2A1BACACKQPQBSABKQPQBYU3A+ANQQAgAikD2AUgASkD2AWFNwPoDUEAIAIpA+AFIAEpA+AFhTcD8A1BACACKQPoBSABKQPoBYU3A/gNQQAgAikD8AUgASkD8AWFNwOADkEAIAIpA/gFIAEpA/gFhTcDiA5BACACKQOABiABKQOABoU3A5AOQQAgAikDiAYgASkDiAaFNwOYDkEAIAIpA5AGIAEpA5AGhTcDoA5BACACKQOYBiABKQOYBoU3A6gOQQAgAikDoAYgASkDoAaFNwOwDkEAIAIpA6gGIAEpA6gGhTcDuA5BACACKQOwBiABKQOwBoU3A8AOQQAgAikDuAYgASkDuAaFNwPIDkEAIAIpA8AGIAEpA8AGhTcD0A5BACACKQPIBiABKQPIBoU3A9gOQQAgAikD0AYgASkD0AaFNwPgDkEAIAIpA9gGIAEpA9gGhTcD6A5BACACKQPgBiABKQPgBoU3A/AOQQAgAikD6AYgASkD6AaFNwP4DkEAIAIpA/AGIAEpA/AGhTcDgA9BACACKQP4BiABKQP4BoU3A4gPQQAgAikDgAcgASkDgAeFNwOQD0EAIAIpA4gHIAEpA4gHhTcDmA9BACACKQOQByABKQOQB4U3A6APQQAgAikDmAcgASkDmAeFNwOoD0EAIAIpA6AHIAEpA6AHhTcDsA9BACACKQOoByABKQOoB4U3A7gPQQAgAikDsAcgASkDsAeFNwPAD0EAIAIpA7gHIAEpA7gHhTcDyA9BACACKQPAByABKQPAB4U3A9APQQAgAikDyAcgASkDyAeFNwPYD0EAIAIpA9AHIAEpA9AHhTcD4A9BACACKQPYByABKQPYB4U3A+gPQQAgAikD4AcgASkD4AeFNwPwD0EAIAIpA+gHIAEpA+gHhTcD+A9BACACKQPwByABKQPwB4U3A4AQQQAgAikD+AcgASkD+AeFNwOIEEGQCEGYCEGgCEGoCEGwCEG4CEHACEHICEHQCEHYCEHgCEHoCEHwCEH4CEGACUGICRACQZAJQZgJQaAJQagJQbAJQbgJQcAJQcgJQdAJQdgJQeAJQegJQfAJQfgJQYAKQYgKEAJBkApBmApBoApBqApBsApBuApBwApByApB0ApB2ApB4ApB6ApB8ApB+ApBgAtBiAsQAkGQC0GYC0GgC0GoC0GwC0G4C0HAC0HIC0HQC0HYC0HgC0HoC0HwC0H4C0GADEGIDBACQZAMQZgMQaAMQagMQbAMQbgMQcAMQcgMQdAMQdgMQeAMQegMQfAMQfgMQYANQYgNEAJBkA1BmA1BoA1BqA1BsA1BuA1BwA1ByA1B0A1B2A1B4A1B6A1B8A1B+A1BgA5BiA4QAkGQDkGYDkGgDkGoDkGwDkG4DkHADkHIDkHQDkHYDkHgDkHoDkHwDkH4DkGAD0GIDxACQZAPQZgPQaAPQagPQbAPQbgPQcAPQcgPQdAPQdgPQeAPQegPQfAPQfgPQYAQQYgQEAJBkAhBmAhBkAlBmAlBkApBmApBkAtBmAtBkAxBmAxBkA1BmA1BkA5BmA5BkA9BmA8QAkGgCEGoCEGgCUGoCUGgCkGoCkGgC0GoC0GgDEGoDEGgDUGoDUGgDkGoDkGgD0GoDxACQbAIQbgIQbAJQbgJQbAKQbgKQbALQbgLQbAMQbgMQbANQbgNQbAOQbgOQbAPQbgPEAJBwAhByAhBwAlByAlBwApByApBwAtByAtBwAxByAxBwA1ByA1BwA5ByA5BwA9ByA8QAkHQCEHYCEHQCUHYCUHQCkHYCkHQC0HYC0HQDEHYDEHQDUHYDUHQDkHYDkHQD0HYDxACQeAIQegIQeAJQegJQeAKQegKQeALQegLQeAMQegMQeANQegNQeAOQegOQeAPQegPEAJB8AhB+AhB8AlB+AlB8ApB+ApB8AtB+AtB8AxB+AxB8A1B+A1B8A5B+A5B8A9B+A8QAkGACUGICUGACkGICkGAC0GIC0GADEGIDEGADUGIDUGADkGIDkGAD0GID0GAEEGIEBACAkACQCADRQ0AA0AgACAEaiIDIAIgBGoiBSkDACABIARqIgYpAwCFIARBkAhqKQMAhSADKQMAhTcDACADQQhqIgMgBUEIaikDACAGQQhqKQMAhSAEQZgIaikDAIUgAykDAIU3AwAgBEEQaiIEQYAIRw0ADAILC0EAIQQDQCAAIARqIgMgAiAEaiIFKQMAIAEgBGoiBikDAIUgBEGQCGopAwCFNwMAIANBCGogBUEIaikDACAGQQhqKQMAhSAEQZgIaikDAIU3AwAgBEEQaiIEQYAIRw0ACwsL5QcMBX8BfgR/An4BfwF+AX8Bfgd/AX4DfwF+AkBBACgCgAgiAiABQQp0aiIDKAIIIAFHDQAgAygCDCEEIAMoAgAhBUEAIAMoAhQiBq03A7gQQQAgBK0iBzcDsBBBACAFIAEgBUECdG4iCGwiCUECdK03A6gQAkACQAJAAkAgBEUNAEF/IQogBUUNASAIQQNsIQsgCEECdCIErSEMIAWtIQ0gBkF/akECSSEOQgAhDwNAQQAgDzcDkBAgD6chEEIAIRFBACEBA0BBACARNwOgECAPIBGEUCIDIA5xIRIgBkEBRiAPUCITIAZBAkYgEUICVHFxciEUQX8gAUEBakEDcSAIbEF/aiATGyEVIAEgEHIhFiABIAhsIRcgA0EBdCEYQgAhGQNAQQBCADcDwBBBACAZNwOYECAYIQECQCASRQ0AQQBCATcDwBBBkBhBkBBBkCBBABADQZAYQZAYQZAgQQAQA0ECIQELAkAgASAITw0AIAQgGaciGmwgF2ogAWohAwNAIANBACAEIAEbQQAgEVAiGxtqQX9qIRwCQAJAIBQNAEEAKAKACCICIBxBCnQiHGohCgwBCwJAIAFB/wBxIgINAEEAQQApA8AQQgF8NwPAEEGQGEGQEEGQIEEAEANBkBhBkBhBkCBBABADCyAcQQp0IRwgAkEDdEGQGGohCkEAKAKACCECCyACIANBCnRqIAIgHGogAiAKKQMAIh1CIIinIAVwIBogFhsiHCAEbCABIAFBACAZIBytUSIcGyIKIBsbIBdqIAogC2ogExsgAUUgHHJrIhsgFWqtIB1C/////w+DIh0gHX5CIIggG61+QiCIfSAMgqdqQQp0akEBEAMgA0EBaiEDIAggAUEBaiIBRw0ACwsgGUIBfCIZIA1SDQALIBFCAXwiEachASARQgRSDQALIA9CAXwiDyAHUg0AC0EAKAKACCECCyAJQQx0QYB4aiEXIAVBf2oiCkUNAgwBC0EAQgM3A6AQQQAgBEF/aq03A5AQQYB4IRcLIAIgF2ohGyAIQQx0IQhBACEcA0AgCCAcQQFqIhxsQYB4aiEEQQAhAQNAIBsgAWoiAyADKQMAIAIgBCABamopAwCFNwMAIANBCGoiAyADKQMAIAIgBCABQQhyamopAwCFNwMAIAFBCGohAyABQRBqIQEgA0H4B0kNAAsgHCAKRw0ACwsgAiAXaiEbQXghAQNAIAIgAWoiA0EIaiAbIAFqIgRBCGopAwA3AwAgA0EQaiAEQRBqKQMANwMAIANBGGogBEEYaikDADcDACADQSBqIARBIGopAwA3AwAgAUEgaiIBQfgHSQ0ACwsL`,hash:`e4cdc523`},Ca={name:`blake2b`,data:`AGFzbQEAAAABEQRgAAF/YAJ/fwBgAX8AYAAAAwoJAAECAwECAgABBQQBAQICBg4CfwFBsIsFC38AQYAICwdwCAZtZW1vcnkCAA5IYXNoX0dldEJ1ZmZlcgAACkhhc2hfRmluYWwAAwlIYXNoX0luaXQABQtIYXNoX1VwZGF0ZQAGDUhhc2hfR2V0U3RhdGUABw5IYXNoX0NhbGN1bGF0ZQAIClNUQVRFX1NJWkUDAQrTOAkFAEGACQvrAgIFfwF+AkAgAUEBSA0AAkACQAJAIAFBgAFBACgC4IoBIgJrIgNKDQAgASEEDAELQQBBADYC4IoBAkAgAkH/AEoNACACQeCJAWohBSAAIQRBACEGA0AgBSAELQAAOgAAIARBAWohBCAFQQFqIQUgAyAGQQFqIgZB/wFxSg0ACwtBAEEAKQPAiQEiB0KAAXw3A8CJAUEAQQApA8iJASAHQv9+Vq18NwPIiQFB4IkBEAIgACADaiEAAkAgASADayIEQYEBSA0AIAIgAWohBQNAQQBBACkDwIkBIgdCgAF8NwPAiQFBAEEAKQPIiQEgB0L/flatfDcDyIkBIAAQAiAAQYABaiEAIAVBgH9qIgVBgAJLDQALIAVBgH9qIQQMAQsgBEEATA0BC0EAIQUDQCAFQQAoAuCKAWpB4IkBaiAAIAVqLQAAOgAAIAQgBUEBaiIFQf8BcUoNAAsLQQBBACgC4IoBIARqNgLgigELC78uASR+QQBBACkD0IkBQQApA7CJASIBQQApA5CJAXwgACkDICICfCIDhULr+obav7X2wR+FQiCJIgRCq/DT9K/uvLc8fCIFIAGFQiiJIgYgA3wgACkDKCIBfCIHIASFQjCJIgggBXwiCSAGhUIBiSIKQQApA8iJAUEAKQOoiQEiBEEAKQOIiQF8IAApAxAiA3wiBYVCn9j52cKR2oKbf4VCIIkiC0K7zqqm2NDrs7t/fCIMIASFQiiJIg0gBXwgACkDGCIEfCIOfCAAKQNQIgV8Ig9BACkDwIkBQQApA6CJASIQQQApA4CJASIRfCAAKQMAIgZ8IhKFQtGFmu/6z5SH0QCFQiCJIhNCiJLznf/M+YTqAHwiFCAQhUIoiSIVIBJ8IAApAwgiEHwiFiAThUIwiSIXhUIgiSIYQQApA9iJAUEAKQO4iQEiE0EAKQOYiQF8IAApAzAiEnwiGYVC+cL4m5Gjs/DbAIVCIIkiGkLx7fT4paf9p6V/fCIbIBOFQiiJIhwgGXwgACkDOCITfCIZIBqFQjCJIhogG3wiG3wiHSAKhUIoiSIeIA98IAApA1giCnwiDyAYhUIwiSIYIB18Ih0gDiALhUIwiSIOIAx8Ih8gDYVCAYkiDCAWfCAAKQNAIgt8Ig0gGoVCIIkiFiAJfCIaIAyFQiiJIiAgDXwgACkDSCIJfCIhIBaFQjCJIhYgGyAchUIBiSIMIAd8IAApA2AiB3wiDSAOhUIgiSIOIBcgFHwiFHwiFyAMhUIoiSIbIA18IAApA2giDHwiHCAOhUIwiSIOIBd8IhcgG4VCAYkiGyAZIBQgFYVCAYkiFHwgACkDcCINfCIVIAiFQiCJIhkgH3wiHyAUhUIoiSIUIBV8IAApA3giCHwiFXwgDHwiIoVCIIkiI3wiJCAbhUIoiSIbICJ8IBJ8IiIgFyAYIBUgGYVCMIkiFSAffCIZIBSFQgGJIhQgIXwgDXwiH4VCIIkiGHwiFyAUhUIoiSIUIB98IAV8Ih8gGIVCMIkiGCAXfCIXIBSFQgGJIhR8IAF8IiEgFiAafCIWIBUgHSAehUIBiSIaIBx8IAl8IhyFQiCJIhV8Ih0gGoVCKIkiGiAcfCAIfCIcIBWFQjCJIhWFQiCJIh4gGSAOIBYgIIVCAYkiFiAPfCACfCIPhUIgiSIOfCIZIBaFQiiJIhYgD3wgC3wiDyAOhUIwiSIOIBl8Ihl8IiAgFIVCKIkiFCAhfCAEfCIhIB6FQjCJIh4gIHwiICAiICOFQjCJIiIgJHwiIyAbhUIBiSIbIBx8IAp8IhwgDoVCIIkiDiAXfCIXIBuFQiiJIhsgHHwgE3wiHCAOhUIwiSIOIBkgFoVCAYkiFiAffCAQfCIZICKFQiCJIh8gFSAdfCIVfCIdIBaFQiiJIhYgGXwgB3wiGSAfhUIwiSIfIB18Ih0gFoVCAYkiFiAVIBqFQgGJIhUgD3wgBnwiDyAYhUIgiSIYICN8IhogFYVCKIkiFSAPfCADfCIPfCAHfCIihUIgiSIjfCIkIBaFQiiJIhYgInwgBnwiIiAjhUIwiSIjICR8IiQgFoVCAYkiFiAOIBd8Ig4gDyAYhUIwiSIPICAgFIVCAYkiFCAZfCAKfCIXhUIgiSIYfCIZIBSFQiiJIhQgF3wgC3wiF3wgBXwiICAPIBp8Ig8gHyAOIBuFQgGJIg4gIXwgCHwiGoVCIIkiG3wiHyAOhUIoiSIOIBp8IAx8IhogG4VCMIkiG4VCIIkiISAdIB4gDyAVhUIBiSIPIBx8IAF8IhWFQiCJIhx8Ih0gD4VCKIkiDyAVfCADfCIVIByFQjCJIhwgHXwiHXwiHiAWhUIoiSIWICB8IA18IiAgIYVCMIkiISAefCIeIBogFyAYhUIwiSIXIBl8IhggFIVCAYkiFHwgCXwiGSAchUIgiSIaICR8IhwgFIVCKIkiFCAZfCACfCIZIBqFQjCJIhogHSAPhUIBiSIPICJ8IAR8Ih0gF4VCIIkiFyAbIB98Iht8Ih8gD4VCKIkiDyAdfCASfCIdIBeFQjCJIhcgH3wiHyAPhUIBiSIPIBsgDoVCAYkiDiAVfCATfCIVICOFQiCJIhsgGHwiGCAOhUIoiSIOIBV8IBB8IhV8IAx8IiKFQiCJIiN8IiQgD4VCKIkiDyAifCAHfCIiICOFQjCJIiMgJHwiJCAPhUIBiSIPIBogHHwiGiAVIBuFQjCJIhUgHiAWhUIBiSIWIB18IAR8IhuFQiCJIhx8Ih0gFoVCKIkiFiAbfCAQfCIbfCABfCIeIBUgGHwiFSAXIBogFIVCAYkiFCAgfCATfCIYhUIgiSIXfCIaIBSFQiiJIhQgGHwgCXwiGCAXhUIwiSIXhUIgiSIgIB8gISAVIA6FQgGJIg4gGXwgCnwiFYVCIIkiGXwiHyAOhUIoiSIOIBV8IA18IhUgGYVCMIkiGSAffCIffCIhIA+FQiiJIg8gHnwgBXwiHiAghUIwiSIgICF8IiEgGyAchUIwiSIbIB18IhwgFoVCAYkiFiAYfCADfCIYIBmFQiCJIhkgJHwiHSAWhUIoiSIWIBh8IBJ8IhggGYVCMIkiGSAfIA6FQgGJIg4gInwgAnwiHyAbhUIgiSIbIBcgGnwiF3wiGiAOhUIoiSIOIB98IAZ8Ih8gG4VCMIkiGyAafCIaIA6FQgGJIg4gFSAXIBSFQgGJIhR8IAh8IhUgI4VCIIkiFyAcfCIcIBSFQiiJIhQgFXwgC3wiFXwgBXwiIoVCIIkiI3wiJCAOhUIoiSIOICJ8IAh8IiIgGiAgIBUgF4VCMIkiFSAcfCIXIBSFQgGJIhQgGHwgCXwiGIVCIIkiHHwiGiAUhUIoiSIUIBh8IAZ8IhggHIVCMIkiHCAafCIaIBSFQgGJIhR8IAR8IiAgGSAdfCIZIBUgISAPhUIBiSIPIB98IAN8Ih2FQiCJIhV8Ih8gD4VCKIkiDyAdfCACfCIdIBWFQjCJIhWFQiCJIiEgFyAbIBkgFoVCAYkiFiAefCABfCIZhUIgiSIbfCIXIBaFQiiJIhYgGXwgE3wiGSAbhUIwiSIbIBd8Ihd8Ih4gFIVCKIkiFCAgfCAMfCIgICGFQjCJIiEgHnwiHiAiICOFQjCJIiIgJHwiIyAOhUIBiSIOIB18IBJ8Ih0gG4VCIIkiGyAafCIaIA6FQiiJIg4gHXwgC3wiHSAbhUIwiSIbIBcgFoVCAYkiFiAYfCANfCIXICKFQiCJIhggFSAffCIVfCIfIBaFQiiJIhYgF3wgEHwiFyAYhUIwiSIYIB98Ih8gFoVCAYkiFiAVIA+FQgGJIg8gGXwgCnwiFSAchUIgiSIZICN8IhwgD4VCKIkiDyAVfCAHfCIVfCASfCIihUIgiSIjfCIkIBaFQiiJIhYgInwgBXwiIiAjhUIwiSIjICR8IiQgFoVCAYkiFiAbIBp8IhogFSAZhUIwiSIVIB4gFIVCAYkiFCAXfCADfCIXhUIgiSIZfCIbIBSFQiiJIhQgF3wgB3wiF3wgAnwiHiAVIBx8IhUgGCAaIA6FQgGJIg4gIHwgC3wiGoVCIIkiGHwiHCAOhUIoiSIOIBp8IAR8IhogGIVCMIkiGIVCIIkiICAfICEgFSAPhUIBiSIPIB18IAZ8IhWFQiCJIh18Ih8gD4VCKIkiDyAVfCAKfCIVIB2FQjCJIh0gH3wiH3wiISAWhUIoiSIWIB58IAx8Ih4gIIVCMIkiICAhfCIhIBogFyAZhUIwiSIXIBt8IhkgFIVCAYkiFHwgEHwiGiAdhUIgiSIbICR8Ih0gFIVCKIkiFCAafCAJfCIaIBuFQjCJIhsgHyAPhUIBiSIPICJ8IBN8Ih8gF4VCIIkiFyAYIBx8Ihh8IhwgD4VCKIkiDyAffCABfCIfIBeFQjCJIhcgHHwiHCAPhUIBiSIPIBggDoVCAYkiDiAVfCAIfCIVICOFQiCJIhggGXwiGSAOhUIoiSIOIBV8IA18IhV8IA18IiKFQiCJIiN8IiQgD4VCKIkiDyAifCAMfCIiICOFQjCJIiMgJHwiJCAPhUIBiSIPIBsgHXwiGyAVIBiFQjCJIhUgISAWhUIBiSIWIB98IBB8IhiFQiCJIh18Ih8gFoVCKIkiFiAYfCAIfCIYfCASfCIhIBUgGXwiFSAXIBsgFIVCAYkiFCAefCAHfCIZhUIgiSIXfCIbIBSFQiiJIhQgGXwgAXwiGSAXhUIwiSIXhUIgiSIeIBwgICAVIA6FQgGJIg4gGnwgAnwiFYVCIIkiGnwiHCAOhUIoiSIOIBV8IAV8IhUgGoVCMIkiGiAcfCIcfCIgIA+FQiiJIg8gIXwgBHwiISAehUIwiSIeICB8IiAgGCAdhUIwiSIYIB98Ih0gFoVCAYkiFiAZfCAGfCIZIBqFQiCJIhogJHwiHyAWhUIoiSIWIBl8IBN8IhkgGoVCMIkiGiAcIA6FQgGJIg4gInwgCXwiHCAYhUIgiSIYIBcgG3wiF3wiGyAOhUIoiSIOIBx8IAN8IhwgGIVCMIkiGCAbfCIbIA6FQgGJIg4gFSAXIBSFQgGJIhR8IAt8IhUgI4VCIIkiFyAdfCIdIBSFQiiJIhQgFXwgCnwiFXwgBHwiIoVCIIkiI3wiJCAOhUIoiSIOICJ8IAl8IiIgGyAeIBUgF4VCMIkiFSAdfCIXIBSFQgGJIhQgGXwgDHwiGYVCIIkiHXwiGyAUhUIoiSIUIBl8IAp8IhkgHYVCMIkiHSAbfCIbIBSFQgGJIhR8IAN8Ih4gGiAffCIaIBUgICAPhUIBiSIPIBx8IAd8IhyFQiCJIhV8Ih8gD4VCKIkiDyAcfCAQfCIcIBWFQjCJIhWFQiCJIiAgFyAYIBogFoVCAYkiFiAhfCATfCIahUIgiSIYfCIXIBaFQiiJIhYgGnwgDXwiGiAYhUIwiSIYIBd8Ihd8IiEgFIVCKIkiFCAefCAFfCIeICCFQjCJIiAgIXwiISAiICOFQjCJIiIgJHwiIyAOhUIBiSIOIBx8IAt8IhwgGIVCIIkiGCAbfCIbIA6FQiiJIg4gHHwgEnwiHCAYhUIwiSIYIBcgFoVCAYkiFiAZfCABfCIXICKFQiCJIhkgFSAffCIVfCIfIBaFQiiJIhYgF3wgBnwiFyAZhUIwiSIZIB98Ih8gFoVCAYkiFiAVIA+FQgGJIg8gGnwgCHwiFSAdhUIgiSIaICN8Ih0gD4VCKIkiDyAVfCACfCIVfCANfCIihUIgiSIjfCIkIBaFQiiJIhYgInwgCXwiIiAjhUIwiSIjICR8IiQgFoVCAYkiFiAYIBt8IhggFSAahUIwiSIVICEgFIVCAYkiFCAXfCASfCIXhUIgiSIafCIbIBSFQiiJIhQgF3wgCHwiF3wgB3wiISAVIB18IhUgGSAYIA6FQgGJIg4gHnwgBnwiGIVCIIkiGXwiHSAOhUIoiSIOIBh8IAt8IhggGYVCMIkiGYVCIIkiHiAfICAgFSAPhUIBiSIPIBx8IAp8IhWFQiCJIhx8Ih8gD4VCKIkiDyAVfCAEfCIVIByFQjCJIhwgH3wiH3wiICAWhUIoiSIWICF8IAN8IiEgHoVCMIkiHiAgfCIgIBggFyAahUIwiSIXIBt8IhogFIVCAYkiFHwgBXwiGCAchUIgiSIbICR8IhwgFIVCKIkiFCAYfCABfCIYIBuFQjCJIhsgHyAPhUIBiSIPICJ8IAx8Ih8gF4VCIIkiFyAZIB18Ihl8Ih0gD4VCKIkiDyAffCATfCIfIBeFQjCJIhcgHXwiHSAPhUIBiSIPIBkgDoVCAYkiDiAVfCAQfCIVICOFQiCJIhkgGnwiGiAOhUIoiSIOIBV8IAJ8IhV8IBN8IiKFQiCJIiN8IiQgD4VCKIkiDyAifCASfCIiICOFQjCJIiMgJHwiJCAPhUIBiSIPIBsgHHwiGyAVIBmFQjCJIhUgICAWhUIBiSIWIB98IAt8IhmFQiCJIhx8Ih8gFoVCKIkiFiAZfCACfCIZfCAJfCIgIBUgGnwiFSAXIBsgFIVCAYkiFCAhfCAFfCIahUIgiSIXfCIbIBSFQiiJIhQgGnwgA3wiGiAXhUIwiSIXhUIgiSIhIB0gHiAVIA6FQgGJIg4gGHwgEHwiFYVCIIkiGHwiHSAOhUIoiSIOIBV8IAF8IhUgGIVCMIkiGCAdfCIdfCIeIA+FQiiJIg8gIHwgDXwiICAhhUIwiSIhIB58Ih4gGSAchUIwiSIZIB98IhwgFoVCAYkiFiAafCAIfCIaIBiFQiCJIhggJHwiHyAWhUIoiSIWIBp8IAp8IhogGIVCMIkiGCAdIA6FQgGJIg4gInwgBHwiHSAZhUIgiSIZIBcgG3wiF3wiGyAOhUIoiSIOIB18IAd8Ih0gGYVCMIkiGSAbfCIbIA6FQgGJIg4gFSAXIBSFQgGJIhR8IAx8IhUgI4VCIIkiFyAcfCIcIBSFQiiJIhQgFXwgBnwiFXwgEnwiIoVCIIkiI3wiJCAOhUIoiSIOICJ8IBN8IiIgGyAhIBUgF4VCMIkiFSAcfCIXIBSFQgGJIhQgGnwgBnwiGoVCIIkiHHwiGyAUhUIoiSIUIBp8IBB8IhogHIVCMIkiHCAbfCIbIBSFQgGJIhR8IA18IiEgGCAffCIYIBUgHiAPhUIBiSIPIB18IAJ8Ih2FQiCJIhV8Ih4gD4VCKIkiDyAdfCABfCIdIBWFQjCJIhWFQiCJIh8gFyAZIBggFoVCAYkiFiAgfCADfCIYhUIgiSIZfCIXIBaFQiiJIhYgGHwgBHwiGCAZhUIwiSIZIBd8Ihd8IiAgFIVCKIkiFCAhfCAIfCIhIB+FQjCJIh8gIHwiICAiICOFQjCJIiIgJHwiIyAOhUIBiSIOIB18IAd8Ih0gGYVCIIkiGSAbfCIbIA6FQiiJIg4gHXwgDHwiHSAZhUIwiSIZIBcgFoVCAYkiFiAafCALfCIXICKFQiCJIhogFSAefCIVfCIeIBaFQiiJIhYgF3wgCXwiFyAahUIwiSIaIB58Ih4gFoVCAYkiFiAVIA+FQgGJIg8gGHwgBXwiFSAchUIgiSIYICN8IhwgD4VCKIkiDyAVfCAKfCIVfCACfCIChUIgiSIifCIjIBaFQiiJIhYgAnwgC3wiAiAihUIwiSILICN8IiIgFoVCAYkiFiAZIBt8IhkgFSAYhUIwiSIVICAgFIVCAYkiFCAXfCANfCINhUIgiSIXfCIYIBSFQiiJIhQgDXwgBXwiBXwgEHwiECAVIBx8Ig0gGiAZIA6FQgGJIg4gIXwgDHwiDIVCIIkiFXwiGSAOhUIoiSIOIAx8IBJ8IhIgFYVCMIkiDIVCIIkiFSAeIB8gDSAPhUIBiSINIB18IAl8IgmFQiCJIg98IhogDYVCKIkiDSAJfCAIfCIJIA+FQjCJIgggGnwiD3wiGiAWhUIoiSIWIBB8IAd8IhAgEYUgDCAZfCIHIA6FQgGJIgwgCXwgCnwiCiALhUIgiSILIAUgF4VCMIkiBSAYfCIJfCIOIAyFQiiJIgwgCnwgE3wiEyALhUIwiSIKIA58IguFNwOAiQFBACADIAYgDyANhUIBiSINIAJ8fCICIAWFQiCJIgUgB3wiBiANhUIoiSIHIAJ8fCICQQApA4iJAYUgBCABIBIgCSAUhUIBiSIDfHwiASAIhUIgiSISICJ8IgkgA4VCKIkiAyABfHwiASAShUIwiSIEIAl8IhKFNwOIiQFBACATQQApA5CJAYUgECAVhUIwiSIQIBp8IhOFNwOQiQFBACABQQApA5iJAYUgAiAFhUIwiSICIAZ8IgGFNwOYiQFBACASIAOFQgGJQQApA6CJAYUgAoU3A6CJAUEAIBMgFoVCAYlBACkDqIkBhSAKhTcDqIkBQQAgASAHhUIBiUEAKQOwiQGFIASFNwOwiQFBACALIAyFQgGJQQApA7iJAYUgEIU3A7iJAQvdAgUBfwF+AX8BfgJ/IwBBwABrIgAkAAJAQQApA9CJAUIAUg0AQQBBACkDwIkBIgFBACgC4IoBIgKsfCIDNwPAiQFBAEEAKQPIiQEgAyABVK18NwPIiQECQEEALQDoigFFDQBBAEJ/NwPYiQELQQBCfzcD0IkBAkAgAkH/AEoNAEEAIQQDQCACIARqQeCJAWpBADoAACAEQQFqIgRBgAFBACgC4IoBIgJrSA0ACwtB4IkBEAIgAEEAKQOAiQE3AwAgAEEAKQOIiQE3AwggAEEAKQOQiQE3AxAgAEEAKQOYiQE3AxggAEEAKQOgiQE3AyAgAEEAKQOoiQE3AyggAEEAKQOwiQE3AzAgAEEAKQO4iQE3AzhBACgC5IoBIgVBAUgNAEEAIQRBACECA0AgBEGACWogACAEai0AADoAACAEQQFqIQQgBSACQQFqIgJB/wFxSg0ACwsgAEHAAGokAAv9AwMBfwF+AX8jAEGAAWsiAiQAQQBBgQI7AfKKAUEAIAE6APGKAUEAIAA6APCKAUGQfiEAA0AgAEGAiwFqQgA3AAAgAEH4igFqQgA3AAAgAEHwigFqQgA3AAAgAEEYaiIADQALQQAhAEEAQQApA/CKASIDQoiS853/zPmE6gCFNwOAiQFBAEEAKQP4igFCu86qptjQ67O7f4U3A4iJAUEAQQApA4CLAUKr8NP0r+68tzyFNwOQiQFBAEEAKQOIiwFC8e30+KWn/aelf4U3A5iJAUEAQQApA5CLAULRhZrv+s+Uh9EAhTcDoIkBQQBBACkDmIsBQp/Y+dnCkdqCm3+FNwOoiQFBAEEAKQOgiwFC6/qG2r+19sEfhTcDsIkBQQBBACkDqIsBQvnC+JuRo7Pw2wCFNwO4iQFBACADp0H/AXE2AuSKAQJAIAFBAUgNACACQgA3A3ggAkIANwNwIAJCADcDaCACQgA3A2AgAkIANwNYIAJCADcDUCACQgA3A0ggAkIANwNAIAJCADcDOCACQgA3AzAgAkIANwMoIAJCADcDICACQgA3AxggAkIANwMQIAJCADcDCCACQgA3AwBBACEEA0AgAiAAaiAAQYAJai0AADoAACAAQQFqIQAgBEEBaiIEQf8BcSABSA0ACyACQYABEAELIAJBgAFqJAALEgAgAEEDdkH/P3EgAEEQdhAECwkAQYAJIAAQAQsGAEGAiQELGwAgAUEDdkH/P3EgAUEQdhAEQYAJIAAQARADCwsLAQBBgAgLBPAAAAA=`,hash:`c6f286e6`};new $i;function wa(e){return!Number.isInteger(e)||e<8||e>512||e%8!=0?Error(`Invalid variant! Valid values: 8, 16, ..., 512`):null}function Ta(e,t){return e|t<<16}function Ea(e=512,t=null){if(wa(e))return Promise.reject(wa(e));let n=null,r=e;if(t!==null){if(n=ua(t),n.length>64)return Promise.reject(Error(`Max key length is 64 bytes`));r=Ta(e,n.length)}let i=e/8;return ba(Ca,i).then(e=>{r>512&&e.writeMemory(n),e.init(r);let t={init:r>512?()=>(e.writeMemory(n),e.init(r),t):()=>(e.init(r),t),update:n=>(e.update(n),t),digest:t=>e.digest(t),save:()=>e.save(),load:n=>(e.load(n),t),blockSize:128,digestSize:i};return t})}function Da(e,t,n){let r=[`m=${t.memorySize}`,`t=${t.iterations}`,`p=${t.parallelism}`].join(`,`);return`$argon2${t.hashType}$v=19$${r}$${pa(e,!1)}$${pa(n,!1)}`}var Oa=new DataView(new ArrayBuffer(4));function ka(e){return Oa.setInt32(0,e,!0),new Uint8Array(Oa.buffer)}function Aa(e,t,n){return Qi(this,void 0,void 0,function*(){if(n<=64){let e=yield Ea(n*8);return e.update(ka(n)),e.update(t),e.digest(`binary`)}let r=Math.ceil(n/32)-2,i=new Uint8Array(n);e.init(),e.update(ka(n)),e.update(t);let a=e.digest(`binary`);i.set(a.subarray(0,32),0);for(let t=1;t<r;t++)e.init(),e.update(a),a=e.digest(`binary`),i.set(a.subarray(0,32),t*32);let o=n-32*r,s;return o===64?(s=e,s.init()):s=yield Ea(o*8),s.update(a),a=s.digest(`binary`),i.set(a.subarray(0,o),r*32),i})}function ja(e){switch(e){case`d`:return 0;case`i`:return 1;default:return 2}}function Ma(e){return Qi(this,void 0,void 0,function*(){let{parallelism:t,iterations:n,hashLength:r}=e,i=ua(e.password),a=ua(e.salt),o=ja(e.hashType),{memorySize:s}=e,c=ua(e.secret??``),[l,u]=yield Promise.all([ba(Sa,1024),Ea(512)]);l.setMemorySize(s*1024+1024);let d=new Uint8Array(24),f=new DataView(d.buffer);f.setInt32(0,t,!0),f.setInt32(4,r,!0),f.setInt32(8,s,!0),f.setInt32(12,n,!0),f.setInt32(16,19,!0),f.setInt32(20,o,!0),l.writeMemory(d,s*1024),u.init(),u.update(d),u.update(ka(i.length)),u.update(i),u.update(ka(a.length)),u.update(a),u.update(ka(c.length)),u.update(c),u.update(ka(0));let p=Math.floor(s/(t*4))*4,m=new Uint8Array(72),h=u.digest(`binary`);m.set(h);for(let e=0;e<t;e++){m.set(ka(0),64),m.set(ka(e),68);let t=e*p,n=yield Aa(u,m,1024);l.writeMemory(n,t*1024),t+=1,m.set(ka(1),64),n=yield Aa(u,m,1024),l.writeMemory(n,t*1024)}let g=new Uint8Array(1024);aa(g,l.calculate(new Uint8Array([]),s));let _=yield Aa(u,g,r);return e.outputType===`hex`?la(new Uint8Array(r*2),_,r):e.outputType===`encoded`?Da(a,e,_):_})}var Na=e=>{if(!e||typeof e!=`object`)throw Error(`Invalid options parameter. It requires an object.`);if(!e.password||(e.password=ua(e.password),e.password.length<1))throw Error(`Password must be specified`);if(!e.salt)throw Error(`Salt must be specified`);if(e.salt=ua(e.salt),e.salt.length<8)throw Error(`Salt should be at least 8 bytes long`);if(e.secret=ua(e.secret??``),!Number.isInteger(e.iterations)||e.iterations<1)throw Error(`Iterations should be a positive number`);if(!Number.isInteger(e.parallelism)||e.parallelism<1)throw Error(`Parallelism should be a positive number`);if(!Number.isInteger(e.hashLength)||e.hashLength<4)throw Error(`Hash length should be at least 4 bytes.`);if(!Number.isInteger(e.memorySize))throw Error(`Memory size should be specified.`);if(e.memorySize<8*e.parallelism)throw Error(`Memory size should be at least 8 * parallelism.`);if(e.outputType===void 0&&(e.outputType=`hex`),![`hex`,`binary`,`encoded`].includes(e.outputType))throw Error(`Insupported output type ${e.outputType}. Valid values: ['hex', 'binary', 'encoded']`)};function Pa(e){return Qi(this,void 0,void 0,function*(){return Na(e),Ma(Object.assign(Object.assign({},e),{hashType:`id`}))})}new $i;var Fa={name:`blake3`,data:`AGFzbQEAAAABMQdgAAF/YAl/f39+f39/f38AYAZ/f39/fn8AYAF/AGADf39/AGABfgBgBX9/fn9/AX8DDg0AAQIDBAUGAwMDAwAEBQQBAQICBg4CfwFBgJgFC38AQYAICwdwCAZtZW1vcnkCAA5IYXNoX0dldEJ1ZmZlcgAACUhhc2hfSW5pdAAIC0hhc2hfVXBkYXRlAAkKSGFzaF9GaW5hbAAKDUhhc2hfR2V0U3RhdGUACw5IYXNoX0NhbGN1bGF0ZQAMClNUQVRFX1NJWkUDAQqQWw0FAEGACQufAwIDfwV+IwBB4ABrIgkkAAJAIAFFDQAgByAFciEKIAdBACACQQFGGyAGciAFciELIARBAEetIQwDQCAAKAIAIQcgCUEAKQOAiQE3AwAgCUEAKQOIiQE3AwggCUEAKQOQiQE3AxAgCUEAKQOYiQE3AxggCUEgaiAJIAdBwAAgAyALEAIgCSAJKQNAIAkpAyCFIg03AwAgCSAJKQNIIAkpAyiFIg43AwggCSAJKQNQIAkpAzCFIg83AxAgCSAJKQNYIAkpAziFIhA3AxggB0HAAGohByACIQQCQANAIAUhBgJAAkAgBEF/aiIEDgIDAAELIAohBgsgCUEgaiAJIAdBwAAgAyAGEAIgCSAJKQNAIAkpAyCFIg03AwAgCSAJKQNIIAkpAyiFIg43AwggCSAJKQNQIAkpAzCFIg83AxAgCSAJKQNYIAkpAziFIhA3AxggB0HAAGohBwwACwsgCCAQNwMYIAggDzcDECAIIA43AwggCCANNwMAIAhBIGohCCAAQQRqIQAgAyAMfCEDIAFBf2oiAQ0ACwsgCUHgAGokAAv4GwIMfh9/IAIpAyghBiACKQM4IQcgAikDMCEIIAIpAxAhCSACKQMgIQogAikDACELIAIpAwghDCACKQMYIQ0gACABKQMAIg43AwAgACABKQMIIg83AwggACABKQMQIhA3AxAgACAPQiCIpyANpyICaiABKQMYIhFCIIinIhJqIhMgDUIgiKciAWogEyAFc0EQdyIUQbrqv6p6aiIVIBJzQRR3IhZqIhcgDqcgC6ciBWogEKciE2oiGCALQiCIpyISaiAYIASnc0EQdyIYQefMp9AGaiIZIBNzQRR3IhNqIhogGHNBGHciGyAZaiIcIBNzQRl3Ih1qIAenIhNqIh4gB0IgiKciGGogHiAPpyAJpyIZaiARpyIfaiIgIAlCIIinIiFqICAgA3NBEHciA0Hy5rvjA2oiICAfc0EUdyIfaiIiIANzQRh3IiNzQRB3IiQgDkIgiKcgDKciA2ogEEIgiKciJWoiJiAMQiCIpyIeaiAmIARCIIinc0EQdyImQYXdntt7aiInICVzQRR3IiVqIiggJnNBGHciJiAnaiInaiIpIB1zQRR3Ih1qIiogGWogFyAUc0EYdyIrIBVqIiwgFnNBGXciFiAiaiAIpyIUaiIXIAhCIIinIhVqIBcgJnNBEHciFyAcaiIcIBZzQRR3IhZqIiIgF3NBGHciJiAcaiItIBZzQRl3Ii5qIhwgFWogJyAlc0EZdyIlIBpqIAqnIhZqIhogCkIgiKciF2ogGiArc0EQdyIaICMgIGoiIGoiIyAlc0EUdyIlaiInIBpzQRh3IisgHHNBEHciLyAgIB9zQRl3Ih8gKGogBqciGmoiICAGQiCIpyIcaiAgIBtzQRB3IhsgLGoiICAfc0EUdyIfaiIoIBtzQRh3IhsgIGoiIGoiLCAuc0EUdyIuaiIwICcgA2ogKiAkc0EYdyIkIClqIicgHXNBGXciHWoiKSACaiAbIClzQRB3IhsgLWoiKSAdc0EUdyIdaiIqIBtzQRh3IhsgKWoiKSAdc0EZdyIdaiAYaiItIBZqIC0gIiABaiAgIB9zQRl3Ih9qIiAgBWogJCAgc0EQdyIgICsgI2oiImoiIyAfc0EUdyIfaiIkICBzQRh3IiBzQRB3IisgKCAeaiAiICVzQRl3IiJqIiUgGmogJiAlc0EQdyIlICdqIiYgInNBFHciImoiJyAlc0EYdyIlICZqIiZqIiggHXNBFHciHWoiLSABaiAwIC9zQRh3Ii8gLGoiLCAuc0EZdyIuICRqIBdqIiQgE2ogJCAlc0EQdyIkIClqIiUgLnNBFHciKWoiLiAkc0EYdyIkICVqIiUgKXNBGXciKWoiMCATaiAmICJzQRl3IiIgKmogEmoiJiAcaiAmIC9zQRB3IiYgICAjaiIgaiIjICJzQRR3IiJqIiogJnNBGHciJiAwc0EQdyIvICAgH3NBGXciHyAnaiAUaiIgICFqICAgG3NBEHciGyAsaiIgIB9zQRR3Ih9qIicgG3NBGHciGyAgaiIgaiIsIClzQRR3IilqIjAgKiAeaiAtICtzQRh3IiogKGoiKCAdc0EZdyIdaiIrIBlqIBsgK3NBEHciGyAlaiIlIB1zQRR3Ih1qIisgG3NBGHciGyAlaiIlIB1zQRl3Ih1qIBZqIi0gEmogLSAuIBVqICAgH3NBGXciH2oiICADaiAqICBzQRB3IiAgJiAjaiIjaiImIB9zQRR3Ih9qIiogIHNBGHciIHNBEHciLSAnIBpqICMgInNBGXciImoiIyAUaiAkICNzQRB3IiMgKGoiJCAic0EUdyIiaiInICNzQRh3IiMgJGoiJGoiKCAdc0EUdyIdaiIuIBVqIDAgL3NBGHciLyAsaiIsIClzQRl3IikgKmogHGoiKiAYaiAqICNzQRB3IiMgJWoiJSApc0EUdyIpaiIqICNzQRh3IiMgJWoiJSApc0EZdyIpaiIwIBhqICQgInNBGXciIiAraiACaiIkICFqICQgL3NBEHciJCAgICZqIiBqIiYgInNBFHciImoiKyAkc0EYdyIkIDBzQRB3Ii8gICAfc0EZdyIfICdqIBdqIiAgBWogICAbc0EQdyIbICxqIiAgH3NBFHciH2oiJyAbc0EYdyIbICBqIiBqIiwgKXNBFHciKWoiMCArIBpqIC4gLXNBGHciKyAoaiIoIB1zQRl3Ih1qIi0gAWogGyAtc0EQdyIbICVqIiUgHXNBFHciHWoiLSAbc0EYdyIbICVqIiUgHXNBGXciHWogEmoiLiACaiAuICogE2ogICAfc0EZdyIfaiIgIB5qICsgIHNBEHciICAkICZqIiRqIiYgH3NBFHciH2oiKiAgc0EYdyIgc0EQdyIrICcgFGogJCAic0EZdyIiaiIkIBdqICMgJHNBEHciIyAoaiIkICJzQRR3IiJqIicgI3NBGHciIyAkaiIkaiIoIB1zQRR3Ih1qIi4gE2ogMCAvc0EYdyIvICxqIiwgKXNBGXciKSAqaiAhaiIqIBZqICogI3NBEHciIyAlaiIlIClzQRR3IilqIiogI3NBGHciIyAlaiIlIClzQRl3IilqIjAgFmogJCAic0EZdyIiIC1qIBlqIiQgBWogJCAvc0EQdyIkICAgJmoiIGoiJiAic0EUdyIiaiItICRzQRh3IiQgMHNBEHciLyAgIB9zQRl3Ih8gJ2ogHGoiICADaiAgIBtzQRB3IhsgLGoiICAfc0EUdyIfaiInIBtzQRh3IhsgIGoiIGoiLCApc0EUdyIpaiIwIC9zQRh3Ii8gLGoiLCApc0EZdyIpICogGGogICAfc0EZdyIfaiIgIBpqIC4gK3NBGHciKiAgc0EQdyIgICQgJmoiJGoiJiAfc0EUdyIfaiIraiAFaiIuIBJqIC4gJyAXaiAkICJzQRl3IiJqIiQgHGogIyAkc0EQdyIjICogKGoiJGoiJyAic0EUdyIiaiIoICNzQRh3IiNzQRB3IiogLSAUaiAkIB1zQRl3Ih1qIiQgFWogGyAkc0EQdyIbICVqIiQgHXNBFHciHWoiJSAbc0EYdyIbICRqIiRqIi0gKXNBFHciKWoiLiAWaiArICBzQRh3IiAgJmoiJiAfc0EZdyIfIChqICFqIiggHmogKCAbc0EQdyIbICxqIiggH3NBFHciH2oiKyAbc0EYdyIbIChqIiggH3NBGXciH2oiLCAUaiAwICQgHXNBGXciHWogAmoiJCAZaiAkICBzQRB3IiAgIyAnaiIjaiIkIB1zQRR3Ih1qIicgIHNBGHciICAsc0EQdyIsICMgInNBGXciIiAlaiABaiIjIANqICMgL3NBEHciIyAmaiIlICJzQRR3IiJqIiYgI3NBGHciIyAlaiIlaiIvIB9zQRR3Ih9qIjAgLHNBGHciLCAvaiIvIB9zQRl3Ih8gKyAcaiAlICJzQRl3IiJqIiUgIWogLiAqc0EYdyIqICVzQRB3IiUgICAkaiIgaiIkICJzQRR3IiJqIitqIAVqIi4gGmogLiAmIBdqICAgHXNBGXciHWoiICATaiAbICBzQRB3IhsgKiAtaiIgaiImIB1zQRR3Ih1qIiogG3NBGHciG3NBEHciLSAnIBhqICAgKXNBGXciIGoiJyASaiAjICdzQRB3IiMgKGoiJyAgc0EUdyIgaiIoICNzQRh3IiMgJ2oiJ2oiKSAfc0EUdyIfaiIuICFqICsgJXNBGHciISAkaiIkICJzQRl3IiIgKmogFWoiJSAeaiAlICNzQRB3IiMgL2oiJSAic0EUdyIiaiIqICNzQRh3IiMgJWoiJSAic0EZdyIiaiIrIAVqICcgIHNBGXciBSAwaiADaiIgIAJqICAgIXNBEHciISAbICZqIhtqIiAgBXNBFHciBWoiJiAhc0EYdyIhICtzQRB3IicgKCAbIB1zQRl3IhtqIBlqIh0gAWogHSAsc0EQdyIdICRqIiQgG3NBFHciG2oiKCAdc0EYdyIdICRqIiRqIisgInNBFHciImoiLCAnc0EYdyInICtqIisgInNBGXciIiAqIBxqICQgG3NBGXciHGoiGyAYaiAuIC1zQRh3IhggG3NBEHciGyAhICBqIiFqIiAgHHNBFHciHGoiJGogE2oiEyAaaiATICggFmogISAFc0EZdyIFaiIhIAJqICMgIXNBEHciAiAYIClqIhhqIiEgBXNBFHciBWoiFiACc0EYdyICc0EQdyITICYgEmogGCAfc0EZdyISaiIYIBdqIB0gGHNBEHciGCAlaiIXIBJzQRR3IhJqIhogGHNBGHciGCAXaiIXaiIdICJzQRR3Ih9qIiI2AgAgACAXIBJzQRl3IhIgLGogA2oiAyAUaiADICQgG3NBGHciFHNBEHciAyACICFqIgJqIiEgEnNBFHciEmoiFyADc0EYdyIDNgIwIAAgFiAUICBqIhQgHHNBGXciHGogAWoiASAVaiABIBhzQRB3IgEgK2oiGCAcc0EUdyIVaiIWIAFzQRh3IgEgGGoiGCAVc0EZdzYCECAAIBc2AgQgACACIAVzQRl3IgIgGmogHmoiBSAZaiAFICdzQRB3IgUgFGoiGSACc0EUdyICaiIeIAVzQRh3IgU2AjQgACAFIBlqIgU2AiAgACAiIBNzQRh3IhMgHWoiGSAfc0EZdzYCFCAAIBg2AiQgACAeNgIIIAAgATYCOCAAIAMgIWoiASASc0EZdzYCGCAAIBk2AiggACAWNgIMIAAgEzYCPCAAIAUgAnNBGXc2AhwgACABNgIsC6USCwN/BH4CfwF+AX8EfgJ/AX4CfwF+BH8jAEHQAmsiASQAAkAgAEUNAAJAAkBBAC0AiYoBQQZ0QQAtAIiKAWoiAg0AQYAJIQMMAQtBoIkBQYAJQYAIIAJrIgIgACACIABJGyICEAQgACACayIARQ0BIAFBoAFqQQApA9CJATcDACABQagBakEAKQPYiQE3AwAgAUEAKQOgiQEiBDcDcCABQQApA6iJASIFNwN4IAFBACkDsIkBIgY3A4ABIAFBACkDuIkBIgc3A4gBIAFBACkDyIkBNwOYAUEALQCKigEhCEEALQCJigEhCUEAKQPAiQEhCkEALQCIigEhCyABQbABakEAKQPgiQE3AwAgAUG4AWpBACkD6IkBNwMAIAFBwAFqQQApA/CJATcDACABQcgBakEAKQP4iQE3AwAgAUHQAWpBACkDgIoBNwMAIAEgCzoA2AEgASAKNwOQASABIAggCUVyQQJyIgg6ANkBIAEgBzcD+AEgASAGNwPwASABIAU3A+gBIAEgBDcD4AEgASABQeABaiABQZgBaiALIAogCEH/AXEQAiABKQMgIQQgASkDACEFIAEpAyghBiABKQMIIQcgASkDMCEMIAEpAxAhDSABKQM4IQ4gASkDGCEPIAoQBUEAQgA3A4CKAUEAQgA3A/iJAUEAQgA3A/CJAUEAQgA3A+iJAUEAQgA3A+CJAUEAQgA3A9iJAUEAQgA3A9CJAUEAQgA3A8iJAUEAQQApA4CJATcDoIkBQQBBACkDiIkBNwOoiQFBAEEAKQOQiQE3A7CJAUEAQQApA5iJATcDuIkBQQBBAC0AkIoBIgtBAWo6AJCKAUEAQQApA8CJAUIBfDcDwIkBIAtBBXQiC0GpigFqIA4gD4U3AwAgC0GhigFqIAwgDYU3AwAgC0GZigFqIAYgB4U3AwAgC0GRigFqIAQgBYU3AwBBAEEAOwGIigEgAkGACWohAwsCQCAAQYEISQ0AQQApA8CJASEEIAFBKGohEANAIARCCoYhCkIBIABBAXKteUI/hYanIQIDQCACIhFBAXYhAiAKIBFBf2qtg0IAUg0ACyARQQp2rSESAkACQCARQYAISw0AIAFBADsB2AEgAUIANwPQASABQgA3A8gBIAFCADcDwAEgAUIANwO4ASABQgA3A7ABIAFCADcDqAEgAUIANwOgASABQgA3A5gBIAFBACkDgIkBNwNwIAFBACkDiIkBNwN4IAFBACkDkIkBNwOAASABQQAtAIqKAToA2gEgAUEAKQOYiQE3A4gBIAEgBDcDkAEgAUHwAGogAyAREAQgASABKQNwIgQ3AwAgASABKQN4IgU3AwggASABKQOAASIGNwMQIAEgASkDiAEiBzcDGCABIAEpA5gBNwMoIAEgASkDoAE3AzAgASABKQOoATcDOCABLQDaASECIAEtANkBIQsgASkDkAEhCiABIAEtANgBIgg6AGggASAKNwMgIAEgASkDsAE3A0AgASABKQO4ATcDSCABIAEpA8ABNwNQIAEgASkDyAE3A1ggASABKQPQATcDYCABIAIgC0VyQQJyIgI6AGkgASAHNwO4AiABIAY3A7ACIAEgBTcDqAIgASAENwOgAiABQeABaiABQaACaiAQIAggCiACQf8BcRACIAEpA4ACIQQgASkD4AEhBSABKQOIAiEGIAEpA+gBIQcgASkDkAIhDCABKQPwASENIAEpA5gCIQ4gASkD+AEhDyAKEAVBAEEALQCQigEiAkEBajoAkIoBIAJBBXQiAkGpigFqIA4gD4U3AwAgAkGhigFqIAwgDYU3AwAgAkGZigFqIAYgB4U3AwAgAkGRigFqIAQgBYU3AwAMAQsCQAJAIAMgESAEQQAtAIqKASICIAEQBiITQQJLDQAgASkDGCEKIAEpAxAhBCABKQMIIQUgASkDACEGDAELIAJBBHIhFEEAKQOYiQEhDUEAKQOQiQEhDkEAKQOIiQEhD0EAKQOAiQEhFQNAIBNBfmoiFkEBdiIXQQFqIhhBA3EhCEEAIQkCQCAWQQZJDQAgGEH8////B3EhGUEAIQkgAUHIAmohAiABIQsDQCACIAs2AgAgAkEMaiALQcABajYCACACQQhqIAtBgAFqNgIAIAJBBGogC0HAAGo2AgAgC0GAAmohCyACQRBqIQIgGSAJQQRqIglHDQALCwJAIAhFDQAgASAJQQZ0aiECIAFByAJqIAlBAnRqIQsDQCALIAI2AgAgAkHAAGohAiALQQRqIQsgCEF/aiIIDQALCyABQcgCaiELIAFBoAJqIQIgGCEIA0AgCygCACEJIAEgDTcD+AEgASAONwPwASABIA83A+gBIAEgFTcD4AEgAUHwAGogAUHgAWogCUHAAEIAIBQQAiABKQOQASEKIAEpA3AhBCABKQOYASEFIAEpA3ghBiABKQOgASEHIAEpA4ABIQwgAkEYaiABKQOoASABKQOIAYU3AwAgAkEQaiAHIAyFNwMAIAJBCGogBSAGhTcDACACIAogBIU3AwAgAkEgaiECIAtBBGohCyAIQX9qIggNAAsCQAJAIBZBfnFBAmogE0kNACAYIRMMAQsgAUGgAmogGEEFdGoiAiABIBhBBnRqIgspAwA3AwAgAiALKQMINwMIIAIgCykDEDcDECACIAspAxg3AxggF0ECaiETCyABIAEpA6ACIgY3AwAgASABKQOoAiIFNwMIIAEgASkDsAIiBDcDECABIAEpA7gCIgo3AxggE0ECSw0ACwsgASkDICEHIAEpAyghDCABKQMwIQ0gASkDOCEOQQApA8CJARAFQQBBAC0AkIoBIgJBAWo6AJCKASACQQV0IgJBqYoBaiAKNwMAIAJBoYoBaiAENwMAIAJBmYoBaiAFNwMAIAJBkYoBaiAGNwMAQQApA8CJASASQgGIfBAFQQBBAC0AkIoBIgJBAWo6AJCKASACQQV0IgJBqYoBaiAONwMAIAJBoYoBaiANNwMAIAJBmYoBaiAMNwMAIAJBkYoBaiAHNwMAC0EAQQApA8CJASASfCIENwPAiQEgAyARaiEDIAAgEWsiAEGACEsNAAsgAEUNAQtBoIkBIAMgABAEQQApA8CJARAFCyABQdACaiQAC4YHAgl/AX4jAEHAAGsiAyQAAkACQCAALQBoIgRFDQACQEHAACAEayIFIAIgBSACSRsiBkUNACAGQQNxIQdBACEFAkAgBkEESQ0AIAAgBGohCCAGQXxxIQlBACEFA0AgCCAFaiIKQShqIAEgBWoiCy0AADoAACAKQSlqIAtBAWotAAA6AAAgCkEqaiALQQJqLQAAOgAAIApBK2ogC0EDai0AADoAACAJIAVBBGoiBUcNAAsLAkAgB0UNACABIAVqIQogBSAEaiAAakEoaiEFA0AgBSAKLQAAOgAAIApBAWohCiAFQQFqIQUgB0F/aiIHDQALCyAALQBoIQQLIAAgBCAGaiIHOgBoIAEgBmohAQJAIAIgBmsiAg0AQQAhAgwCCyADIAAgAEEoakHAACAAKQMgIAAtAGogAEHpAGoiBS0AACIKRXIQAiAAIAMpAyAgAykDAIU3AwAgACADKQMoIAMpAwiFNwMIIAAgAykDMCADKQMQhTcDECAAIAMpAzggAykDGIU3AxggAEEAOgBoIAUgCkEBajoAACAAQeAAakIANwMAIABB2ABqQgA3AwAgAEHQAGpCADcDACAAQcgAakIANwMAIABBwABqQgA3AwAgAEE4akIANwMAIABBMGpCADcDACAAQgA3AygLQQAhByACQcEASQ0AIABB6QBqIgotAAAhBSAALQBqIQsgACkDICEMA0AgAyAAIAFBwAAgDCALIAVB/wFxRXJB/wFxEAIgACADKQMgIAMpAwCFNwMAIAAgAykDKCADKQMIhTcDCCAAIAMpAzAgAykDEIU3AxAgACADKQM4IAMpAxiFNwMYIAogBUEBaiIFOgAAIAFBwABqIQEgAkFAaiICQcAASw0ACwsCQEHAACAHQf8BcSIGayIFIAIgBSACSRsiCUUNACAJQQNxIQtBACEFAkAgCUEESQ0AIAAgBmohByAJQfwAcSEIQQAhBQNAIAcgBWoiAkEoaiABIAVqIgotAAA6AAAgAkEpaiAKQQFqLQAAOgAAIAJBKmogCkECai0AADoAACACQStqIApBA2otAAA6AAAgCCAFQQRqIgVHDQALCwJAIAtFDQAgASAFaiEBIAUgBmogAGpBKGohBQNAIAUgAS0AADoAACABQQFqIQEgBUEBaiEFIAtBf2oiCw0ACwsgAC0AaCEHCyAAIAcgCWo6AGggA0HAAGokAAveAwQFfwN+BX8GfiMAQdABayIBJAACQCAAe6ciAkEALQCQigEiA08NAEEALQCKigFBBHIhBCABQShqIQVBACkDmIkBIQBBACkDkIkBIQZBACkDiIkBIQdBACkDgIkBIQggAyEJA0AgASAANwMYIAEgBjcDECABIAc3AwggASAINwMAIAEgA0EFdCIDQdGJAWoiCikDADcDKCABIANB2YkBaiILKQMANwMwIAEgA0HhiQFqIgwpAwA3AzggASADQemJAWoiDSkDADcDQCABIANB8YkBaikDADcDSCABIANB+YkBaikDADcDUCABIANBgYoBaikDADcDWCADQYmKAWopAwAhDiABQcAAOgBoIAEgDjcDYCABQgA3AyAgASAEOgBpIAEgADcDiAEgASAGNwOAASABIAc3A3ggASAINwNwIAFBkAFqIAFB8ABqIAVBwABCACAEQf8BcRACIAEpA7ABIQ4gASkDkAEhDyABKQO4ASEQIAEpA5gBIREgASkDwAEhEiABKQOgASETIA0gASkDyAEgASkDqAGFNwMAIAwgEiAThTcDACALIBAgEYU3AwAgCiAOIA+FNwMAIAlBf2oiCUH/AXEiAyACSw0AC0EAIAk6AJCKAQsgAUHQAWokAAvHCQIKfwV+IwBB4AJrIgUkAAJAAkAgAUGACEsNACAFIAA2AvwBIAVB/AFqIAFBgAhGIgZBECACQQEgA0EBQQIgBBABIAZBCnQiByABTw0BIAVB4ABqIgZCADcDACAFQdgAaiIIQgA3AwAgBUHQAGoiCUIANwMAIAVByABqIgpCADcDACAFQcAAaiILQgA3AwAgBUE4aiIMQgA3AwAgBUEwaiINQgA3AwAgBSADOgBqIAVCADcDKCAFQQA7AWggBUEAKQOAiQE3AwAgBUEAKQOIiQE3AwggBUEAKQOQiQE3AxAgBUEAKQOYiQE3AxggBSABQYAIRiIOrSACfDcDICAFIAAgB2pBACABIA4bEAQgBUGIAWpBMGogDSkDADcDACAFQYgBakE4aiAMKQMANwMAIAUgBSkDACIPNwOIASAFIAUpAwgiEDcDkAEgBSAFKQMQIhE3A5gBIAUgBSkDGCISNwOgASAFIAUpAyg3A7ABIAUtAGohACAFLQBpIQcgBSkDICECIAUtAGghASAFQYgBakHAAGogCykDADcDACAFQYgBakHIAGogCikDADcDACAFQYgBakHQAGogCSkDADcDACAFQYgBakHYAGogCCkDADcDACAFQYgBakHgAGogBikDADcDACAFIAE6APABIAUgAjcDqAEgBSAAIAdFckECciIAOgDxASAFIBI3A5gCIAUgETcDkAIgBSAQNwOIAiAFIA83A4ACIAVBoAJqIAVBgAJqIAVBsAFqIAEgAiAAQf8BcRACIAUpA8ACIQIgBSkDoAIhDyAFKQPIAiEQIAUpA6gCIREgBSkD0AIhEiAFKQOwAiETIAQgDkEFdGoiASAFKQPYAiAFKQO4AoU3AxggASASIBOFNwMQIAEgECARhTcDCCABIAIgD4U3AwBBAkEBIA4bIQYMAQsgAEIBIAFBf2pBCnZBAXKteUI/hYYiD6dBCnQiDiACIAMgBRAGIQcgACAOaiABIA5rIA9C////AYMgAnwgAyAFQcAAQSAgDkGACEsbahAGIQECQCAHQQFHDQAgBCAFKQMANwMAIAQgBSkDCDcDCCAEIAUpAxA3AxAgBCAFKQMYNwMYIAQgBSkDIDcDICAEIAUpAyg3AyggBCAFKQMwNwMwIAQgBSkDODcDOEECIQYMAQtBACEGQQAhAAJAIAEgB2oiCUECSQ0AIAlBfmoiCkEBdkEBaiIGQQNxIQ5BACEHAkAgCkEGSQ0AIAZB/P///wdxIQhBACEHIAVBiAFqIQEgBSEAA0AgASAANgIAIAFBDGogAEHAAWo2AgAgAUEIaiAAQYABajYCACABQQRqIABBwABqNgIAIABBgAJqIQAgAUEQaiEBIAggB0EEaiIHRw0ACwsgCkF+cSEIAkAgDkUNACAFIAdBBnRqIQEgBUGIAWogB0ECdGohAANAIAAgATYCACABQcAAaiEBIABBBGohACAOQX9qIg4NAAsLIAhBAmohAAsgBUGIAWogBkEBQgBBACADQQRyQQBBACAEEAEgACAJTw0AIAQgBkEFdGoiASAFIAZBBnRqIgApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxggBkEBaiEGCyAFQeACaiQAIAYLrRAIAn8EfgF/AX4EfwR+BH8EfiMAQfABayIBJAACQCAARQ0AAkBBAC0AkIoBIgINACABQTBqQQApA9CJATcDACABQThqQQApA9iJATcDACABQQApA6CJASIDNwMAIAFBACkDqIkBIgQ3AwggAUEAKQOwiQEiBTcDECABQQApA7iJASIGNwMYIAFBACkDyIkBNwMoQQAtAIqKASECQQAtAImKASEHQQApA8CJASEIQQAtAIiKASEJIAFBwABqQQApA+CJATcDACABQcgAakEAKQPoiQE3AwAgAUHQAGpBACkD8IkBNwMAIAFB2ABqQQApA/iJATcDACABQeAAakEAKQOAigE3AwAgASAJOgBoIAEgCDcDICABIAIgB0VyIgJBAnI6AGkgAUEoaiEKQgAhCEGACSELIAJBCnJB/wFxIQwDQCABQbABaiABIAogCUH/AXEgCCAMEAIgASABKQPQASINIAEpA7ABhTcDcCABIAEpA9gBIg4gASkDuAGFNwN4IAEgASkD4AEiDyABKQPAAYU3A4ABIAEgASkD6AEiECAGhTcDqAEgASAPIAWFNwOgASABIA4gBIU3A5gBIAEgDSADhTcDkAEgASAQIAEpA8gBhTcDiAEgAEHAACAAQcAASRsiEUF/aiESAkACQCARQQdxIhMNACABQfAAaiECIAshByARIRQMAQsgEUH4AHEhFCABQfAAaiECIAshBwNAIAcgAi0AADoAACAHQQFqIQcgAkEBaiECIBNBf2oiEw0ACwsCQCASQQdJDQADQCAHIAIpAAA3AAAgB0EIaiEHIAJBCGohAiAUQXhqIhQNAAsLIAhCAXwhCCALIBFqIQsgACARayIADQAMAgsLAkACQAJAQQAtAImKASIHQQZ0QQBBAC0AiIoBIhFrRg0AIAEgEToAaCABQQApA4CKATcDYCABQQApA/iJATcDWCABQQApA/CJATcDUCABQQApA+iJATcDSCABQQApA+CJATcDQCABQQApA9iJATcDOCABQQApA9CJATcDMCABQQApA8iJATcDKCABQQApA8CJASIINwMgIAFBACkDuIkBIgM3AxggAUEAKQOwiQEiBDcDECABQQApA6iJASIFNwMIIAFBACkDoIkBIgY3AwAgAUEALQCKigEiEyAHRXJBAnIiCzoAaSATQQRyIRNBACkDmIkBIQ1BACkDkIkBIQ5BACkDiIkBIQ9BACkDgIkBIRAMAQtBwAAhESABQcAAOgBoQgAhCCABQgA3AyAgAUEAKQOYiQEiDTcDGCABQQApA5CJASIONwMQIAFBACkDiIkBIg83AwggAUEAKQOAiQEiEDcDACABQQAtAIqKAUEEciITOgBpIAEgAkF+aiICQQV0IgdByYoBaikDADcDYCABIAdBwYoBaikDADcDWCABIAdBuYoBaikDADcDUCABIAdBsYoBaikDADcDSCABIAdBqYoBaikDADcDQCABIAdBoYoBaikDADcDOCABIAdBmYoBaikDADcDMCABIAdBkYoBaikDADcDKCATIQsgECEGIA8hBSAOIQQgDSEDIAJFDQELIAJBf2oiB0EFdCIUQZGKAWopAwAhFSAUQZmKAWopAwAhFiAUQaGKAWopAwAhFyAUQamKAWopAwAhGCABIAM3A4gBIAEgBDcDgAEgASAFNwN4IAEgBjcDcCABQbABaiABQfAAaiABQShqIhQgESAIIAtB/wFxEAIgASATOgBpIAFBwAA6AGggASAYNwNAIAEgFzcDOCABIBY3AzAgASAVNwMoIAFCADcDICABIA03AxggASAONwMQIAEgDzcDCCABIBA3AwAgASABKQPoASABKQPIAYU3A2AgASABKQPgASABKQPAAYU3A1ggASABKQPYASABKQO4AYU3A1AgASABKQPQASABKQOwAYU3A0ggB0UNACACQQV0QemJAWohAiATQf8BcSERA0AgAkFoaikDACEIIAJBcGopAwAhAyACQXhqKQMAIQQgAikDACEFIAEgDTcDiAEgASAONwOAASABIA83A3ggASAQNwNwIAFBsAFqIAFB8ABqIBRBwABCACAREAIgASATOgBpIAFBwAA6AGggASAFNwNAIAEgBDcDOCABIAM3AzAgASAINwMoIAFCADcDICABIA03AxggASAONwMQIAEgDzcDCCABIBA3AwAgASABKQPoASABKQPIAYU3A2AgASABKQPgASABKQPAAYU3A1ggASABKQPYASABKQO4AYU3A1AgASABKQPQASABKQOwAYU3A0ggAkFgaiECIAdBf2oiBw0ACwsgAUEoaiEJQgAhCEGACSELIBNBCHJB/wFxIQoDQCABQbABaiABIAlBwAAgCCAKEAIgASABKQPQASIDIAEpA7ABhTcDcCABIAEpA9gBIgQgASkDuAGFNwN4IAEgASkD4AEiBSABKQPAAYU3A4ABIAEgDSABKQPoASIGhTcDqAEgASAOIAWFNwOgASABIA8gBIU3A5gBIAEgECADhTcDkAEgASAGIAEpA8gBhTcDiAEgAEHAACAAQcAASRsiEUF/aiESAkACQCARQQdxIhMNACABQfAAaiECIAshByARIRQMAQsgEUH4AHEhFCABQfAAaiECIAshBwNAIAcgAi0AADoAACAHQQFqIQcgAkEBaiECIBNBf2oiEw0ACwsCQCASQQdJDQADQCAHIAIpAAA3AAAgB0EIaiEHIAJBCGohAiAUQXhqIhQNAAsLIAhCAXwhCCALIBFqIQsgACARayIADQALCyABQfABaiQAC6MCAQR+AkACQCAAQSBGDQBCq7OP/JGjs/DbACEBQv+kuYjFkdqCm38hAkLy5rvjo6f9p6V/IQNC58yn0NbQ67O7fyEEQQAhAAwBC0EAKQOYCSEBQQApA5AJIQJBACkDiAkhA0EAKQOACSEEQRAhAAtBACAAOgCKigFBAEIANwOAigFBAEIANwP4iQFBAEIANwPwiQFBAEIANwPoiQFBAEIANwPgiQFBAEIANwPYiQFBAEIANwPQiQFBAEIANwPIiQFBAEIANwPAiQFBACABNwO4iQFBACACNwOwiQFBACADNwOoiQFBACAENwOgiQFBACABNwOYiQFBACACNwOQiQFBACADNwOIiQFBACAENwOAiQFBAEEAOgCQigFBAEEAOwGIigELBgAgABADCwYAIAAQBwsGAEGAiQELqwIBBH4CQAJAIAFBIEYNAEKrs4/8kaOz8NsAIQNC/6S5iMWR2oKbfyEEQvLmu+Ojp/2npX8hBULnzKfQ1tDrs7t/IQZBACEBDAELQQApA5gJIQNBACkDkAkhBEEAKQOICSEFQQApA4AJIQZBECEBC0EAIAE6AIqKAUEAQgA3A4CKAUEAQgA3A/iJAUEAQgA3A/CJAUEAQgA3A+iJAUEAQgA3A+CJAUEAQgA3A9iJAUEAQgA3A9CJAUEAQgA3A8iJAUEAQgA3A8CJAUEAIAM3A7iJAUEAIAQ3A7CJAUEAIAU3A6iJAUEAIAY3A6CJAUEAIAM3A5iJAUEAIAQ3A5CJAUEAIAU3A4iJAUEAIAY3A4CJAUEAQQA6AJCKAUEAQQA7AYiKASAAEAMgAhAHCwsLAQBBgAgLBHgHAAA=`,hash:`215d875f`},Ia=new $i,La=null;function Ra(e){return!Number.isInteger(e)||e<8||e%8!=0?Error(`Invalid variant! Valid values: 8, 16, ...`):null}function za(e,t=256,n=null){if(Ra(t))return Promise.reject(Ra(t));let r=null,i=0;if(n!==null){if(r=ua(n),r.length!==32)return Promise.reject(Error(`Key length must be exactly 32 bytes`));i=32}let a=t/8,o=a;if(La===null||La.hashLength!==a)return xa(Ia,Fa,a).then(t=>(La=t,i===32&&La.writeMemory(r),La.calculate(e,i,o)));try{i===32&&La.writeMemory(r);let t=La.calculate(e,i,o);return Promise.resolve(t)}catch(e){return Promise.reject(e)}}new $i,new $i,new $i,new $i,new $i,new $i,new $i,new $i,new $i,new $i,new $i,new $i,new $i,new $i,new $i,new $i,new $i,new $i;var $=$===void 0?{}:$,Ba={},Va;for(Va in $)$.hasOwnProperty(Va)&&(Ba[Va]=$[Va]);var Ha=$.printErr||console.warn.bind(console);for(Va in Ba)Ba.hasOwnProperty(Va)&&($[Va]=Ba[Va]);var Ua=(e,t)=>{throw t};Ba=null,$.arguments&&$.arguments,$.thisProgram&&(thisProgram=$.thisProgram),$.quit&&(Ua=$.quit),typeof WebAssembly!=`object`&&co(`no native wasm support detected`);var Wa,Ga=!1,Ka,qa;function Ja(){var e=Wa.buffer;$.HEAP8=new Int8Array(e),$.HEAPU8=qa=new Uint8Array(e)}var Ya=[],Xa=[],Za=[];function Qa(){if($.preRun)for(typeof $.preRun==`function`&&($.preRun=[$.preRun]);$.preRun.length;)to($.preRun.shift());mo(Ya)}function $a(){mo(Xa)}function eo(){if($.postRun)for(typeof $.postRun==`function`&&($.postRun=[$.postRun]);$.postRun.length;)ro($.postRun.shift());mo(Za)}function to(e){Ya.unshift(e)}function no(e){Xa.unshift(e)}function ro(e){Za.unshift(e)}var io=0,ao=null;function oo(e){var t;io++,(t=$.monitorRunDependencies)==null||t.call($,io)}function so(e){var t;if(io--,(t=$.monitorRunDependencies)==null||t.call($,io),io==0&&ao){var n=ao;ao=null,n()}}function co(e){var t;throw(t=$.onAbort)==null||t.call($,e),e=`Aborted(`+e+`)`,Ha(e),Ga=!0,e+=`. Build with -sASSERTIONS for more info.`,new WebAssembly.RuntimeError(e)}function lo(){return{a:jo}}function uo(e){return fetch(e,{credentials:`same-origin`}).then(function(t){if(!t.ok)throw`failed to load wasm binary file at '`+e+`'`;return t.arrayBuffer()})}function fo(e){var t=lo();function n(e,t){return Mo=e.exports,Wa=Mo.f,Ja(),no(Mo.g),so(`wasm-instantiate`),Mo}oo(`wasm-instantiate`);function r(e){n(e.instance)}function i(n){return uo(e).then(function(e){return WebAssembly.instantiate(e,t)}).then(n,function(e){Ha(`failed to asynchronously prepare wasm: `+e),co(e)})}function a(){return e&&e.byteLength>0?WebAssembly.instantiate(e,t).then(r,function(e){Ha(`wasm compile failed: `+e)}):typeof WebAssembly.instantiateStreaming==`function`&&typeof e==`string`&&typeof fetch==`function`?fetch(e,{credentials:`same-origin`}).then(function(e){return WebAssembly.instantiateStreaming(e,t).then(r,function(e){return Ha(`wasm streaming compile failed: `+e),Ha(`falling back to ArrayBuffer instantiation`),i(r)})}):i(r)}if($.instantiateWasm)try{return $.instantiateWasm(t,n)}catch(e){return Ha(`Module.instantiateWasm callback failed with error: `+e),!1}return a(),{}}var po=class{constructor(e){this.name=`ExitStatus`,this.message=`Program terminated with exit(${e})`,this.status=e}},mo=e=>{for(;e.length>0;)e.shift()($)},ho=$.noExitRuntime||!0,go=()=>co(``),_o=0,vo=()=>{ho=!1,_o=0},yo={},bo=e=>{if(e instanceof po||e==`unwind`)return Ka;Ua(1,e)},xo=()=>ho||_o>0,So=e=>{var t;Ka=e,xo()||((t=$.onExit)==null||t.call($,e),Ga=!0),Ua(e,new po(e))},Co=(e,t)=>{Ka=e,So(e)},wo=()=>{if(!xo())try{Co(Ka)}catch(e){bo(e)}},To=e=>{if(!Ga)try{e(),wo()}catch(e){bo(e)}},Eo=()=>performance.now(),Do=(e,t)=>(yo[e]&&(clearTimeout(yo[e].id),delete yo[e]),t&&(yo[e]={id:setTimeout(()=>{delete yo[e],To(()=>Ko(e,Eo()))},t),timeout_ms:t}),0),Oo=()=>2147483648,ko=(e,t)=>Math.ceil(e/t)*t,Ao=e=>{var t=(e-Wa.buffer.byteLength+65535)/65536|0;try{return Wa.grow(t),Ja(),1}catch{}},jo={c:go,b:vo,d:Do,e:e=>{var t=qa.length;e>>>=0;var n=Oo();if(e>n)return!1;for(var r=1;r<=4;r*=2){var i=t*(1+.2/r);if(i=Math.min(i,e+100663296),Ao(Math.min(n,ko(Math.max(e,i),65536))))return!0}return!1},a:So},Mo,No=$._ZSTD_isError=e=>(No=$._ZSTD_isError=Mo.h)(e),Po=$._ZSTD_compressBound=e=>(Po=$._ZSTD_compressBound=Mo.i)(e),Fo=$._ZSTD_createCCtx=()=>(Fo=$._ZSTD_createCCtx=Mo.j)(),Io=$._ZSTD_freeCCtx=e=>(Io=$._ZSTD_freeCCtx=Mo.k)(e),Lo=$._ZSTD_compress_usingDict=(e,t,n,r,i,a,o,s)=>(Lo=$._ZSTD_compress_usingDict=Mo.l)(e,t,n,r,i,a,o,s),Ro=$._ZSTD_compress=(e,t,n,r,i)=>(Ro=$._ZSTD_compress=Mo.m)(e,t,n,r,i),zo=$._ZSTD_createDCtx=()=>(zo=$._ZSTD_createDCtx=Mo.n)(),Bo=$._ZSTD_freeDCtx=e=>(Bo=$._ZSTD_freeDCtx=Mo.o)(e),Vo=$._ZSTD_getFrameContentSize=(e,t)=>(Vo=$._ZSTD_getFrameContentSize=Mo.p)(e,t),Ho=$._ZSTD_decompress_usingDict=(e,t,n,r,i,a,o)=>(Ho=$._ZSTD_decompress_usingDict=Mo.q)(e,t,n,r,i,a,o),Uo=$._ZSTD_decompress=(e,t,n,r)=>(Uo=$._ZSTD_decompress=Mo.r)(e,t,n,r),Wo=$._malloc=e=>(Wo=$._malloc=Mo.s)(e),Go=$._free=e=>(Go=$._free=Mo.t)(e),Ko=(e,t)=>(Ko=Mo.v)(e,t),qo;ao=function e(){qo||Jo(),qo||(ao=e)};function Jo(){if(io>0||(Qa(),io>0))return;function e(){var e;qo||(qo=!0,$.calledRun=!0,!Ga&&($a(),(e=$.onRuntimeInitialized)==null||e.call($),eo()))}$.setStatus?($.setStatus(`Running...`),setTimeout(()=>{setTimeout(()=>$.setStatus(``),1),e()},1)):e()}if($.run=Jo,$.preInit)for(typeof $.preInit==`function`&&($.preInit=[$.preInit]);$.preInit.length>0;)$.preInit.pop()();$.init=fo;var Yo=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},Xo=new Promise(e=>{$.onRuntimeInitialized=e}),Zo=()=>Yo(void 0,void 0,void 0,function*(){yield Xo}),Qo=e=>{let t=$._ZSTD_isError;return t(e)},$o=(e,t)=>{let n=$._ZSTD_getFrameContentSize;return n(e,t)},es=(e,t={defaultHeapSize:1024*1024})=>{let n=$._malloc,r=n(e.byteLength);$.HEAP8.set(e,r);let i=$o(r,e.byteLength),a=i===-1?t.defaultHeapSize:i,o=$._free,s=n(a);try{let t=$._ZSTD_decompress,n=t(s,a,r,e.byteLength);if(Qo(n))throw Error(`Failed to compress with code ${n}`);let i=new Uint8Array($.HEAPU8.buffer,s,n).slice();return o(s,a),o(r,e.byteLength),i}catch(t){throw o(s,a),o(r,e.byteLength),t}},ts=e=>{let t=$._ZSTD_compressBound;return t(e)},ns=(e,t)=>{let n=ts(e.byteLength),r=$._malloc,i=r(n),a=r(e.byteLength);$.HEAP8.set(e,a);let o=$._free;try{let r=$._ZSTD_compress,s=r(i,n,a,e.byteLength,t??3);if(Qo(s))throw Error(`Failed to compress with code ${s}`);let c=new Uint8Array($.HEAPU8.buffer,i,s).slice();return o(i,n),o(a,e.byteLength),c}catch(t){throw o(i,n),o(a,e.byteLength),t}},rs=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},is=e=>rs(void 0,void 0,void 0,function*(){let t=new URL(`/assets/zstd-CV7N7xSg.wasm`,``+import.meta.url).href;$.init(e??t),yield Zo()}),as=null;function os(){return as||=is().catch(e=>{throw as=null,e}),as}async function ss(e,t=19){return await os(),ns(e,t)}async function cs(e){return await os(),es(e)}var ls=1346586707,us=65536,ds=3,fs=4,ps=1,ms=2,hs=3,gs=4,_s=5,vs=1,ys=2,bs=3,xs=4,Ss=1,Cs=2,ws=4,Ts=8,Es=16,Ds=32,Os=64,ks=128,As=[`visa`,`mastercard`,`amex`,`discover`,`unknown`];async function js(e){let t=[];t.push(await Ns(ps,zs(e.entries))),t.push(await Ns(ms,Ps(e.settings))),e.license&&t.push(await Ns(hs,Ps(e.license))),e.manualSummonDomains&&Object.keys(e.manualSummonDomains).length>0&&t.push(await Ns(gs,Ps(e.manualSummonDomains))),e.declinedCardFingerprints&&e.declinedCardFingerprints.length>0&&t.push(await Ns(_s,Ps(e.declinedCardFingerprints)));let n=new Uint8Array(8);new DataView(n.buffer).setUint32(0,ls,!1),n[4]=1,n[5]=t.length;let r=tc([n,...t]),i=tc([r,await $s(r)]),a=crypto.getRandomValues(new Uint8Array(16)),o=crypto.getRandomValues(new Uint8Array(12)),s=await Xs(e.passphrase,a);try{let{ciphertext:e,tag:t}=await Zs(s,o,i);return tc([a,o,e,t])}finally{s.fill(0)}}async function Ms(e,t){if(e.length<56)throw Error(`PAYLOAD_TOO_SHORT`);let n=e.subarray(0,16),r=e.subarray(16,28),i=e.subarray(e.length-16),a=e.subarray(28,e.length-16),o=await Xs(t,n),s;try{s=await Qs(o,r,a,i)}catch{throw Error(`INVALID_PASSPHRASE`)}finally{o.fill(0)}if(s.length<12)throw Error(`PAYLOAD_TOO_SHORT`);let c=s.subarray(0,s.length-4);if(!ec(s.subarray(s.length-4),await $s(c)))throw Error(`CHECKSUM_FAILED`);let l=new DataView(c.buffer,c.byteOffset,c.byteLength);if(l.getUint32(0,!1)!==1346586707)throw Error(`BAD_MAGIC`);let u=c[4];if(u!==1)throw Error(`UNSUPPORTED_VERSION:${u}`);let d=c[5],f=8,p={entries:[],settings:{}};for(let e=0;e<d;e++){if(f+9>c.length)throw Error(`PAYLOAD_TOO_SHORT`);let e=c[f],t=l.getUint32(f+1,!0),n=l.getUint32(f+5,!0),r=f+9,i=r+n;if(i>c.length)throw Error(`PAYLOAD_TOO_SHORT`);let a=await cs(c.subarray(r,i));if(a.length!==t)throw Error(`SECTION_LENGTH_MISMATCH`);switch(e){case ps:p.entries=Bs(a);break;case ms:p.settings=Fs(a);break;case hs:p.license=Fs(a);break;case gs:p.manualSummonDomains=Fs(a);break;case _s:p.declinedCardFingerprints=Fs(a);break;default:break}f=i}return p}async function Ns(e,t){let n=await ss(t,19),r=new Uint8Array(9+n.length),i=new DataView(r.buffer);return r[0]=e,i.setUint32(1,t.length,!0),i.setUint32(5,n.length,!0),r.set(n,9),r}function Ps(e){return new TextEncoder().encode(JSON.stringify(e))}function Fs(e){return JSON.parse(new TextDecoder().decode(e))}var Is=class{map=new Map;list=[];intern(e){if(!e)return 0;let t=this.map.get(e);if(t!==void 0)return t;let n=this.list.length+1;if(n>65535)throw Error(`STRING_TABLE_OVERFLOW`);return this.map.set(e,n),this.list.push(e),n}serialize(){let e=new TextEncoder,t=this.list.map(t=>e.encode(t)),n=2;for(let e of t)n+=2+e.length;let r=new Uint8Array(n),i=new DataView(r.buffer),a=0;i.setUint16(a,t.length,!0),a+=2;for(let e of t){if(e.length>65535)throw Error(`STRING_TOO_LONG`);i.setUint16(a,e.length,!0),a+=2,r.set(e,a),a+=e.length}return r}};function Ls(e,t){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint16(t,!0);t+=2;let i=[],a=new TextDecoder;for(let o=0;o<r;o++){let r=n.getUint16(t,!0);t+=2,i.push(a.decode(e.subarray(t,t+r))),t+=r}return{strings:i,cursor:t}}function Rs(e,t){if(t!==0)return e[t-1]}function zs(e){let t=new Is,n=[];for(let n of e)t.intern(n.title);for(let r of e)n.push(Vs(r,t));let r=t.serialize(),i=0;for(let e of n)i+=e.length;let a=new Uint8Array(4+r.length+i);new DataView(a.buffer).setUint32(0,e.length,!0),a.set(r,4);let o=4+r.length;for(let e of n)a.set(e,o),o+=e.length;return a}function Bs(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0),{strings:n,cursor:r}=Ls(e,4),i=[],a=r;for(let r=0;r<t;r++){let{entry:t,cursor:r}=Hs(e,a,n);i.push(t),a=r}return i}function Vs(e,t){let n=new Js,r=Us(e);n.u8(r),n.bytes(Ks(e.id));let i=Math.floor((e.createdAt??Date.now())/1e3),a=Math.floor((e.modifiedAt??e.createdAt??Date.now())/1e3),o=Math.max(0,a-i),s=e.deletedAt?Math.floor(e.deletedAt/1e3):0,c=n.length;n.u8(0),n.u32(i),n.u32(o),n.u32(s),n.u16(t.intern(e.title));let l=0;if(e.deletedAt&&(l|=ks),r===vs){if(n.u16(t.intern(e.url)),n.u16(t.intern(e.username)),n.lpString(e.password??``,1),e.totp&&(l|=Ss,n.lpString(e.totp,1)),e.tags&&e.tags.length>0){l|=Cs,n.u8(Math.min(e.tags.length,255));for(let r=0;r<Math.min(e.tags.length,255);r++)n.u16(t.intern(e.tags[r]))}if(e.notes&&(l|=ws,n.u16(t.intern(e.notes))),e.canary&&(l|=Ts,n.u16(t.intern(e.canary.webhookUrl)),n.u16(t.intern(e.canary.label))),e.passwordChangedAt){l|=Es;let t=Math.floor(e.passwordChangedAt/1e3);n.u32(Math.max(0,t-i))}if(typeof e.breach==`number`&&e.breach>0&&(l|=Ds,n.u32(e.breach)),e.additionalUrls&&e.additionalUrls.length>0){l|=Os,n.u8(Math.min(e.additionalUrls.length,255));for(let r=0;r<Math.min(e.additionalUrls.length,255);r++)n.u16(t.intern(e.additionalUrls[r]))}}else if(r===ys){if(e.notes&&(l|=ws,n.u16(t.intern(e.notes))),e.tags&&e.tags.length>0){l|=Cs,n.u8(Math.min(e.tags.length,255));for(let r=0;r<Math.min(e.tags.length,255);r++)n.u16(t.intern(e.tags[r]))}}else if(r===bs){if(n.u16(t.intern(e.cardholderName)),n.lpString(e.cardNumber??``,1),n.lpString(e.expMonth??``,1),n.lpString(e.expYear??``,1),n.lpString(e.cvc??``,1),n.u16(t.intern(e.cardNickname)),n.u8(Ws(e.network)),n.u16(t.intern(e.last4)),e.tags&&e.tags.length>0){l|=Cs,n.u8(Math.min(e.tags.length,255));for(let r=0;r<Math.min(e.tags.length,255);r++)n.u16(t.intern(e.tags[r]))}e.notes&&(l|=ws,n.u16(t.intern(e.notes)))}else if(r===xs){let t=Ps({rpId:e.rpId,rpName:e.rpName,credentialId:e.credentialId,publicKeyCose:e.publicKeyCose,privateKeyJwk:e.privateKeyJwk,userHandle:e.userHandle,userName:e.userName,userDisplayName:e.userDisplayName,algorithm:e.algorithm,signCount:e.signCount,aaguid:e.aaguid,backupEligible:e.backupEligible,backupState:e.backupState,lastUsedAt:e.lastUsedAt});n.u32(t.length),n.bytes(t)}return n.setU8(c,l),n.toBytes()}function Hs(e,t,n){let r=new Ys(e,t),i=r.u8(),a=qs(r.read(16)),o=r.u8(),s=r.u32(),c=r.u32(),l=r.u32(),u=r.u16(),d=s*1e3,f=(s+c)*1e3,p=l>0?l*1e3:void 0,m={id:a,title:Rs(n,u)??``,createdAt:d,modifiedAt:f,...p===void 0?{}:{deletedAt:p}};if(i===vs){let e=r.u16(),t=r.u16(),i=r.lpString(1),a={};if(o&Ss&&(a.totp=r.lpString(1)),o&Cs){let e=r.u8(),t=[];for(let i=0;i<e;i++){let e=Rs(n,r.u16());e!==void 0&&t.push(e)}a.tags=t}if(o&ws&&(a.notes=Rs(n,r.u16())),o&Ts){let e=Rs(n,r.u16())??``,t=Rs(n,r.u16()),i={webhookUrl:e};t!==void 0&&(i.label=t),a.canary=i}if(o&Es&&(a.passwordChangedAt=(s+r.u32())*1e3),o&Ds&&(a.breach=r.u32()),o&Os){let e=r.u8(),t=[];for(let i=0;i<e;i++){let e=Rs(n,r.u16());e!==void 0&&t.push(e)}a.additionalUrls=t}return{entry:{...m,type:`login`,url:Rs(n,e),username:Rs(n,t),password:i,...a},cursor:r.cursor}}if(i===ys){let e={};if(o&ws&&(e.notes=Rs(n,r.u16())),o&Cs){let t=r.u8(),i=[];for(let e=0;e<t;e++){let e=Rs(n,r.u16());e!==void 0&&i.push(e)}e.tags=i}return{entry:{...m,type:`note`,...e},cursor:r.cursor}}if(i===bs){let e=r.u16(),t=r.lpString(1),i=r.lpString(1),a=r.lpString(1),s=r.lpString(1),c=r.u16(),l=Gs(r.u8()),u=r.u16(),d={};if(o&Cs){let e=r.u8(),t=[];for(let i=0;i<e;i++){let e=Rs(n,r.u16());e!==void 0&&t.push(e)}d.tags=t}return o&ws&&(d.notes=Rs(n,r.u16())),{entry:{...m,type:`card`,cardholderName:Rs(n,e),cardNumber:t,expMonth:i,expYear:a,cvc:s,cardNickname:Rs(n,c),network:l,last4:Rs(n,u),...d},cursor:r.cursor}}if(i===xs){let e=r.u32(),t=Fs(r.read(e));return{entry:{...m,type:`passkey`,...t},cursor:r.cursor}}throw Error(`UNKNOWN_ENTRY_TYPE:${i}`)}function Us(e){switch(e.type){case`note`:return ys;case`card`:return bs;case`passkey`:return xs;default:return vs}}function Ws(e){if(!e)return 255;let t=As.indexOf(e);return t>=0?t:As.indexOf(`unknown`)}function Gs(e){if(e!==255)return As[e]??`unknown`}function Ks(e){let t=e.replace(/-/g,``);if(t.length!==32)throw Error(`UUID_FORMAT`);let n=new Uint8Array(16);for(let e=0;e<16;e++)n[e]=parseInt(t.slice(e*2,e*2+2),16);return n}function qs(e){if(e.length!==16)throw Error(`UUID_LENGTH`);let t=Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}var Js=class{chunks=[];len=0;get length(){return this.len}u8(e){let t=new Uint8Array(1);t[0]=e&255,this.push(t)}setU8(e,t){let n=0;for(let r of this.chunks){if(e<n+r.length){r[e-n]=t&255;return}n+=r.length}throw Error(`setU8 out of range`)}u16(e){let t=new Uint8Array(2);new DataView(t.buffer).setUint16(0,e&65535,!0),this.push(t)}u32(e){let t=new Uint8Array(4);new DataView(t.buffer).setUint32(0,e>>>0,!0),this.push(t)}bytes(e){this.push(e)}lpString(e,t){let n=new TextEncoder().encode(e);if(t===1){if(n.length>255)throw Error(`STRING_TOO_LONG_U8`);this.u8(n.length)}else{if(n.length>65535)throw Error(`STRING_TOO_LONG_U16`);this.u16(n.length)}this.push(n)}toBytes(){let e=new Uint8Array(this.len),t=0;for(let n of this.chunks)e.set(n,t),t+=n.length;return e}push(e){this.chunks.push(e),this.len+=e.length}},Ys=class{cursor;view;constructor(e,t){this.data=e,this.cursor=t,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}u8(){return this.data[this.cursor++]}u16(){let e=this.view.getUint16(this.cursor,!0);return this.cursor+=2,e}u32(){let e=this.view.getUint32(this.cursor,!0);return this.cursor+=4,e}read(e){let t=this.data.subarray(this.cursor,this.cursor+e);return this.cursor+=e,t}lpString(e){let t=e===1?this.u8():this.u16();return new TextDecoder().decode(this.read(t))}};async function Xs(e,t){return Pa({password:e,salt:t,parallelism:fs,iterations:ds,memorySize:us,hashLength:32,outputType:`binary`})}async function Zs(e,t,n){let r=await crypto.subtle.importKey(`raw`,e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength),{name:`AES-GCM`},!1,[`encrypt`]),i=await crypto.subtle.encrypt({name:`AES-GCM`,iv:t.buffer,tagLength:128},r,n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength)),a=new Uint8Array(i);return{ciphertext:a.slice(0,a.length-16),tag:a.slice(a.length-16)}}async function Qs(e,t,n,r){let i=await crypto.subtle.importKey(`raw`,e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength),{name:`AES-GCM`},!1,[`decrypt`]),a=tc([n,r]),o=await crypto.subtle.decrypt({name:`AES-GCM`,iv:t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength),tagLength:128},i,a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength));return new Uint8Array(o)}async function $s(e){let t=await za(e),n=new Uint8Array(4);for(let e=0;e<4;e++)n[e]=parseInt(t.slice(e*2,e*2+2),16);return n}function ec(e,t){if(e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r++)n|=e[r]^t[r];return n===0}function tc(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var nc=e({ImportView:()=>Oc}),rc=J(`<div style=display:flex>`),ic=J(`<div class=peach-lock-view-header><button class=peach-lock-restore-link>‹ back`),ac=J(`<div class=peach-settings-group><div class=peach-restore-warning>Restoring now replaces the locked local vault on this device with a fresh one from your backup or export file.`),oc=J(`<div class="peach-settings-body peach-export-menu"><div class="peach-settings-group peach-export-card peach-export-card--primary"><p class=peach-settings-label>peachscript</p><p class=peach-export-card-copy>Paste a PeachScript backup from another Peach device.</p><button class="peach-btn peach-btn--subtle peach-btn--sm">Paste PeachScript →</button></div><div class="peach-settings-group peach-export-card"><p class=peach-settings-label>backup file</p><p class=peach-export-card-copy>A Peach JSON export, or a file from Bitwarden, Proton Pass, 1Password, or a browser CSV (Chrome, Safari, Edge).</p><button class="peach-btn peach-btn--subtle peach-btn--sm">Choose file →`),sc=J(`<div class=peach-settings-group><div class=peach-restore-warning>Restoring now replaces the locked local vault on this device with a fresh one from your backup.`),cc=J(`<p class=peach-settings-label style=margin-top:4px>new master password`),lc=J(`<p class=peach-export-card-copy>This password unlocks Peach on this device after the restore.`),uc=J(`<p class=peach-export-note style=color:var(--peach-t2)>Passwords don't match`),dc=J(`<div class="peach-settings-stack peach-export-password-stack"><input class=peach-settings-input type=password placeholder="master password (min 8 chars)"><input class=peach-settings-input type=password placeholder="confirm master password">`),fc=J(`<div class=peach-restore-error>`),pc=J(`<div class=peach-export-success><span class=peach-export-success-check>✓</span><span>Restored <!> entr<!>.`),mc=J(`<div class=peach-settings-body><div class="peach-settings-group peach-export-card peach-export-card--primary peach-export-pass-group"><p class=peach-settings-label>paste peachscript</p><p class=peach-export-card-copy></p><textarea class=peach-script-input placeholder="paste PeachScript here…"></textarea><label class="peach-btn peach-btn--ghost peach-btn--sm"style=display:inline-flex;align-items:center;justify-content:center;cursor:pointer>Load .peach file<input type=file accept=.peach,application/x-peach,text/plain style=display:none></label><div class="peach-settings-stack peach-export-password-stack"><input class=peach-settings-input type=password placeholder="PeachScript password"></div><button class="peach-btn peach-btn--subtle peach-btn--sm">`),hc=J(`<div class=peach-settings-group><p class=peach-settings-label>unlock backup</p><p class=peach-export-card-copy>Enter the password used when you created this encrypted Peach JSON backup.</p><input class=peach-restore-input type=password placeholder="backup password"><div class=peach-settings-actions><button class="peach-btn peach-btn--subtle peach-btn--sm">Decrypt →`),gc=J(`<div class=peach-import-preview-more>...and <!> more`),_c=J(`<div class=peach-settings-group><p class=peach-settings-label></p><div class=peach-import-summary>Found <strong></strong> entr</div><div class=peach-import-preview>`),vc=J(`<div class=peach-restore-warning style=margin-top:6px>Replace forever? This cannot be undone.`),yc=J(`<div class=peach-settings-group><p class=peach-settings-label>merge or replace</p><label class=peach-import-choice><input type=radio name=merge-mode value=add><span class=peach-import-choice-main><span class=peach-import-choice-label>Add to existing vault</span><span class=peach-import-choice-sub>This will add <!> entries to your existing <!>.</span></span></label><label class=peach-import-choice><input type=radio name=merge-mode value=replace><span class=peach-import-choice-main><span class=peach-import-choice-label>Replace vault</span><span class=peach-import-choice-sub>This will replace your <!> entries with <!> imported ones.`),bc=J(`<div class=peach-settings-group><p class=peach-settings-label>new master password</p><p class=peach-export-card-copy>This password unlocks the Peach vault created on this device after import.</p><div class=peach-auth-grid><input class=peach-restore-input type=password placeholder="new master password"><input class=peach-restore-input type=password placeholder="confirm master password">`),xc=J(`<div class=peach-settings-group><div class=peach-restore-error>`),Sc=J(`<div class=peach-settings-group><div class=peach-import-summary>Importing... [<!> / <!>]`),Cc=J(`<div class=peach-settings-group><div class=peach-export-card-copy> <!> to be duplicates of existing ones. They were still imported — you can review and delete them in your vault.`),wc=J(`<div class=peach-settings-group><div class=peach-settings-actions><button class="peach-btn peach-btn--subtle peach-btn--sm">`),Tc=J(`<div class=peach-settings-body><div class="peach-settings-group peach-export-card peach-export-card--primary"><p class=peach-settings-label>choose a file</p><p class=peach-export-card-copy>Bitwarden, 1Password, Proton Pass, Chrome / Edge / Safari CSV, FIDO credential-exchange passkeys, or a Peach JSON backup.</p><div class=peach-provider-chips><span class=peach-provider-chip>Peach JSON</span><span class=peach-provider-chip>FIDO passkeys</span><span class=peach-provider-chip>Proton Pass</span><span class=peach-provider-chip>Bitwarden</span><span class=peach-provider-chip>1Password</span><span class=peach-provider-chip>Browser CSV</span></div><input class=peach-restore-file type=file accept=.csv,.json,.peach,application/x-peach>`),Ec=J(`<div class=peach-import-preview-row><span class=peach-import-preview-title></span><span class=peach-import-preview-meta>`),Dc=J(`<div class=peach-overlay-header><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label=Back><svg width=7 height=12 viewBox="0 0 7 12"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round><path d="M6 1L1 6L6 11"></path></svg></button><span class=peach-overlay-title></span><div class=peach-overlay-spacer>`);function Oc(e){let[t,n]=z(e.initialView??`menu`),[r,i]=z(``),a=()=>e.mode??`existing`,o=()=>a()===`onboarding`,s=()=>e.initialView?e.onBack():n(`menu`);return(()=>{var c=rc();return Z(c,G(K,{get when(){return t()===`menu`},get children(){return G(kc,{get mode(){return a()},get replacesExistingVault(){return e.replacesExistingVault},get onBack(){return e.onBack},onPick:e=>n(e)})}}),null),Z(c,G(K,{get when(){return t()===`peachscript`},get children(){return G(Ac,{get mode(){return a()},get replacesExistingVault(){return e.replacesExistingVault},get initialScript(){return r()},onBack:()=>{i(``),s()},get onImport(){return e.onImport}})}}),null),Z(c,G(K,{get when(){return t()===`file`},get children(){return G(jc,{get mode(){return a()},get replacesExistingVault(){return e.replacesExistingVault},onBack:s,get onImport(){return e.onImport},onLoadPeachFile:e=>{i(e),n(`peachscript`)}})}}),null),B(()=>X(c,o()?`peach-lock-view`:`peach-overlay-view ov-enter-right`)),c})()}function kc(e){let t=e.mode===`onboarding`;return[G(K,{when:t,get fallback(){return G(Mc,{title:`import`,get onBack(){return e.onBack}})},get children(){var t=ic(),n=t.firstChild;return Z(t,G(Pt,{class:`peach-wordmark-wrap`}),n),$e(n,`click`,e.onBack,!0),t}}),(()=>{var n=oc(),r=n.firstChild,i=r.firstChild.nextSibling;i.firstChild;var a=i.nextSibling,o=r.nextSibling.firstChild.nextSibling.nextSibling;return Z(n,G(K,{get when(){return t&&e.replacesExistingVault},get children(){return ac()}}),r),Z(i,()=>e.mode===`existing`?` We'll merge it into your vault.`:``,null),a.$$click=()=>e.onPick(`peachscript`),o.$$click=()=>e.onPick(`file`),n})()]}function Ac(e){let[t,n]=z(e.initialScript??``),[r,i]=z(``),[a,o]=z(``),[s,c]=z(``),[l,u]=z(!1),[d,f]=z(null),[p,m]=z(null),h=V(()=>Zi(t())),g=e.mode===`onboarding`,_=V(()=>a().length>=8&&a()===s());async function v(){if(f(null),m(null),!h()){f(`Paste your PeachScript first.`);return}if(!r().trim()){f(`Enter the backup password.`);return}u(!0);try{let n=await Ms(Yi(Xi(t())),r());if(g){if(!_())throw Error(`MASTER_PASSWORD_REQUIRED`);if(!(await Q({type:`CREATE_VAULT`,payload:{password:a()}})).ok)throw Error(`CREATE_VAULT_FAILED`)}let i=await Q({type:`RESTORE_ENTRIES`,payload:{entries:n.entries,mode:`merge`,settings:n.settings}});if(!i.ok)throw Error(i.error??`RESTORE_FAILED`);n.license?.key&&await Q({type:`ACTIVATE_LICENSE`,payload:{key:n.license.key}}).catch(()=>{}),m({entryCount:n.entries.length}),await e.onImport()}catch(e){f(Pc(e instanceof Error?e.message:String(e)))}finally{u(!1)}}return[G(Nc,{title:`peachscript`,get onBack(){return e.onBack},get mode(){return e.mode}}),(()=>{var u=mc(),m=u.firstChild,y=m.firstChild.nextSibling,b=y.nextSibling,x=b.nextSibling,S=x.firstChild.nextSibling,C=x.nextSibling,w=C.firstChild,T=C.nextSibling;return Z(u,G(K,{get when(){return g&&e.replacesExistingVault},get children(){return sc()}}),m),Z(y,g?`Paste a PeachScript backup from another Peach device to restore your vault — or load a .peach file from disk.`:`We'll merge the entries into your existing vault. You can paste PeachScript or load a .peach file.`),b.$$input=e=>n(e.target.value),S.addEventListener(`change`,async e=>{let t=e.currentTarget,r=t.files?.[0];if(r)try{n(await r.text())}catch(e){f(e instanceof Error?e.message:`Couldn't read file.`)}finally{t.value=``}}),w.$$input=e=>i(e.target.value),Z(m,G(K,{when:g,get children(){return[cc(),lc(),(()=>{var e=dc(),t=e.firstChild,n=t.nextSibling;return t.$$input=e=>o(e.target.value),n.$$input=e=>c(e.target.value),Z(e,G(K,{get when(){return q(()=>s().length>0)()&&a()!==s()},get children(){return uc()}}),null),B(()=>t.value=a()),B(()=>n.value=s()),e})()]}}),T),T.$$click=()=>void v(),Z(T,()=>l()?`decoding…`:`Restore from PeachScript`),Z(m,G(K,{get when(){return d()},get children(){var e=fc();return Z(e,d),e}}),null),Z(m,G(K,{get when(){return p()},get children(){var e=pc(),t=e.firstChild.nextSibling,n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling;return r.nextSibling,Z(t,()=>p().entryCount,n),Z(t,()=>p().entryCount===1?`y`:`ies`,r),e}}),null),B(()=>T.disabled=l()||!h()||!r().trim()||g&&!_()),B(()=>b.value=t()),B(()=>w.value=r()),u})()]}function jc(e){let t=e.mode===`onboarding`,n=()=>t,[r,i]=z(null),[a,o]=z(null),[s,c]=z(``),[l,u]=z(``),[d,f]=z(``),[p,m]=z(!1),[h,g]=z(null),[_,v]=z(`add`),[y,b]=z(!1),[x,S]=z(null),[C,w]=z(0),[T,E]=z(0),D=V(()=>r()?.requiresPassword??!1),O=V(()=>l().length>=8&&l()===d());async function k(){t||E(((await Q({type:`GET_ENTRIES`})).data??[]).length)}k();async function A(e,t){try{let n=await ki(e,t);return i(n),g(null),n.format===`unknown`&&g(`We couldn't recognise this file format. Peach supports: Peach JSON backups, Bitwarden JSON/CSV, Proton Pass JSON/CSV, 1Password JSON, and generic browser CSV exports.`),n}catch(e){let t=e instanceof Error?e.message:String(e);return i(null),g(Pc(t)),null}}async function j(t){let n=t.target,r=n.files?.[0];if(!r)return;i(null),o(null),c(``),g(null),b(!1);let a=await r.text();if(r.name.toLowerCase().endsWith(`.peach`)||Zi(a)){if(e.onLoadPeachFile){e.onLoadPeachFile(a),n.value=``;return}g(`This is a .peach file. Open the PeachScript card to import it.`);return}o(a),await A(a)}async function M(){let e=a();!e||!s().trim()||await A(e,s())}async function N(e){if(e.length===0)return 0;let t=((await Q({type:`GET_ENTRIES`})).data??[]).filter(e=>!e.deletedAt),n=(e,t,n)=>`${(e??``).toLowerCase()}|${(t??``).toLowerCase()}|${(n??``).toLowerCase()}`,r=new Set(t.map(e=>n(e.title,e.url,e.username))),i=0;for(let t of e){let e=`username`in t?t.username:void 0,a=`url`in t?t.url:void 0;r.has(n(t.title,a,e))&&(i+=1)}return i}async function P(){let i=r();if(i){if(D()&&!s().trim()){g(`Enter the backup password used for this export.`);return}if(n()){if(l().length<8){g(`Master password must be at least 8 characters.`);return}if(!O()){g(`Master passwords do not match.`);return}}if(!t&&_()===`replace`&&!y()){b(!0);return}m(!0),g(null),w(0),S(null);try{if(i.entries.length===0)throw Error(`NO_ENTRIES_IMPORTED`);if(n()&&!(await Q({type:`CREATE_VAULT`,payload:{password:l()}})).ok)throw Error(`CREATE_VAULT_FAILED`);if(!t&&_()===`replace`&&!(await Q({type:`CLEAR_VAULT_ENTRIES`})).ok)throw Error(`CLEAR_VAULT_FAILED`);let r=0;!t&&_()===`add`&&(r=await N(i.entries));let a=0;S({current:0,total:i.entries.length});let o=await Q({type:`BATCH_ADD_ENTRIES`,payload:{entries:i.entries}});if(o.ok)a=(o.data??[]).length,S({current:a,total:i.entries.length});else for(let e of i.entries)(await Q({type:`ADD_ENTRY`,payload:e})).ok&&(a+=1),S({current:a,total:i.entries.length});if(a===0)throw Error(`NO_ENTRIES_IMPORTED`);i.licenseKey&&await Q({type:`ACTIVATE_LICENSE`,payload:{key:i.licenseKey}}).catch(()=>{}),w(r),await e.onImport()}catch(e){g(Pc(e instanceof Error?e.message:String(e))),m(!1),S(null);return}m(!1),S(null)}}return[G(Nc,{title:`backup file`,get onBack(){return e.onBack},get mode(){return e.mode}}),(()=>{var i=Tc(),a=i.firstChild,o=a.firstChild.nextSibling.nextSibling.nextSibling;return Z(i,G(K,{get when(){return t&&e.replacesExistingVault},get children(){return sc()}}),a),o.addEventListener(`change`,e=>void j(e)),Z(i,G(K,{get when(){return D()},get children(){var e=hc(),t=e.firstChild.nextSibling.nextSibling,n=t.nextSibling.firstChild;return t.$$keydown=e=>{e.key===`Enter`&&(e.preventDefault(),M())},t.addEventListener(`blur`,()=>{s().trim()&&M()}),t.$$input=e=>c(e.target.value),n.$$click=()=>void M(),B(()=>n.disabled=!s().trim()),B(()=>t.value=s()),e}}),null),Z(i,G(K,{get when(){return q(()=>!!(r()&&!D()))()&&r().format!==`unknown`},get children(){var e=_c(),t=e.firstChild,n=t.nextSibling,i=n.firstChild.nextSibling;i.nextSibling;var a=n.nextSibling;return Z(t,()=>r().label),Z(i,()=>r().entries.length),Z(n,()=>r().entries.length===1?`y`:`ies`,null),Z(n,(()=>{var e=q(()=>r().skippedItems>0);return()=>e()?`. ${r().skippedItems} skipped because no password was present.`:`.`})(),null),Z(a,()=>r().entries.slice(0,8).map(e=>(()=>{var t=Ec(),n=t.firstChild,r=n.nextSibling;return Z(n,()=>e.title),Z(r,(()=>{var t=q(()=>!!e.passkey);return()=>t()?`${e.passkey.userName} • ${e.passkey.rpId} (passkey)`:q(()=>e.type===`note`)()?`secure note`:e.username||e.url||`password item`})()),t})()),null),Z(a,G(K,{get when(){return r().entries.length>8},get children(){var e=gc(),t=e.firstChild.nextSibling;return t.nextSibling,Z(e,()=>r().entries.length-8,t),e}}),null),e}}),null),Z(i,G(K,{get when(){return q(()=>!!(!t&&r()&&!D()&&r().format!==`unknown`))()&&r().entries.length>0},get children(){var e=yc(),t=e.firstChild.nextSibling,n=t.firstChild,i=n.nextSibling.firstChild.nextSibling,a=i.firstChild.nextSibling,o=a.nextSibling.nextSibling;o.nextSibling;var s=t.nextSibling.firstChild,c=s.nextSibling.firstChild.nextSibling,l=c.firstChild.nextSibling,u=l.nextSibling.nextSibling;return u.nextSibling,n.addEventListener(`change`,()=>{v(`add`),b(!1)}),Z(i,()=>r().entries.length,a),Z(i,T,o),s.addEventListener(`change`,()=>v(`replace`)),Z(c,T,l),Z(c,()=>r().entries.length,u),Z(e,G(K,{get when(){return y()},get children(){return vc()}}),null),B(()=>n.checked=_()===`add`),B(()=>s.checked=_()===`replace`),e}}),null),Z(i,G(K,{get when(){return q(()=>!!(n()&&r()&&!D()))()&&r().format!==`unknown`},get children(){var e=bc(),t=e.firstChild.nextSibling.nextSibling.firstChild,n=t.nextSibling;return t.$$input=e=>u(e.target.value),n.$$input=e=>f(e.target.value),B(()=>t.value=l()),B(()=>n.value=d()),e}}),null),Z(i,G(K,{get when(){return h()},get children(){var e=xc(),t=e.firstChild;return Z(t,h),e}}),null),Z(i,G(K,{get when(){return q(()=>!!p())()&&x()},get children(){var e=Sc(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling;return r.nextSibling,Z(t,()=>x().current,n),Z(t,()=>x().total,r),e}}),null),Z(i,G(K,{get when(){return q(()=>C()>0)()&&!p()},get children(){var e=Cc(),t=e.firstChild,n=t.firstChild,r=n.nextSibling;return r.nextSibling,Z(t,C,n),Z(t,()=>C()===1?`entry appears`:`entries appear`,r),e}}),null),Z(i,G(K,{get when(){return q(()=>!!(r()&&!D()))()&&r().format!==`unknown`},get children(){var e=wc(),i=e.firstChild.firstChild;return i.$$click=()=>void P(),Z(i,(()=>{var e=q(()=>!!p());return()=>e()?`importing...`:t?`Create vault + import ${r().entries.length}`:_()===`replace`?y()?`Yes, replace forever`:`Replace vault with ${r().entries.length}`:`Import ${r().entries.length}`})()),B(()=>i.disabled=p()||r().entries.length===0||n()&&!O()),e}}),null),i})()]}function Mc(e){return(()=>{var t=Dc(),n=t.firstChild,r=n.nextSibling;return $e(n,`click`,e.onBack,!0),Z(r,()=>e.title),t})()}function Nc(e){return G(K,{get when(){return e.mode===`onboarding`},get fallback(){return G(Mc,{get title(){return e.title},get onBack(){return e.onBack}})},get children(){var t=ic(),n=t.firstChild;return Z(t,G(Pt,{class:`peach-wordmark-wrap`}),n),$e(n,`click`,e.onBack,!0),t}})}function Pc(e){switch(e){case`UNSUPPORTED_IMPORT_FORMAT`:return`Unrecognised file format. Use CSV, Bitwarden JSON, Proton Pass JSON/CSV, or a Peach encrypted backup.`;case`INVALID_EXPORT_PASSWORD`:case`INVALID_PASSPHRASE`:return`Wrong backup password. This is the password you chose when you created the backup.`;case`INVALID_PEACH_EXPORT`:return`This Peach backup file looks corrupted or incomplete.`;case`INVALID_PEACHSCRIPT_CHARACTER`:return`This doesn't look like PeachScript. Make sure you copied the entire backup string.`;case`PAYLOAD_TOO_SHORT`:return`PeachScript looks truncated. Copy the full backup string and try again.`;case`BAD_MAGIC`:case`UNSUPPORTED_VERSION`:return`This PeachScript was created by a different version of Peach.`;case`CHECKSUM_FAILED`:return`PeachScript appears corrupted. Re-copy from the source device.`;case`CREATE_VAULT_FAILED`:return`Peach couldn't create a new local vault before importing.`;case`CLEAR_VAULT_FAILED`:return`Peach couldn't clear the existing vault before replacing it.`;case`MASTER_PASSWORD_REQUIRED`:return`Choose a master password for your new vault first.`;case`RESTORE_FAILED`:return`Restore failed. Your existing vault is unchanged.`;case`vault locked`:return`Peach is locked. Open Peach with your master password and try again.`;case`refuse to replace with empty entry set`:return`This PeachScript decoded to zero entries — refusing to wipe the vault.`;case`NO_ENTRIES_IMPORTED`:return`No importable password entries were found in that file.`;default:return e}}Qe([`click`,`input`,`keydown`]);var Fc=r(`Biometric`);async function Ic(){if(!i.isNativePlatform())return!1;try{return(await Fc.authenticate()).verified}catch{return!1}}async function Lc(){return i.isNativePlatform()?(await Fc.isAvailable()).available:!1}var Rc=J(`<span class=peach-pro-mini-badge>pro`),zc=J(`<p class="peach-hint peach-hint-error">`),Bc=J(`<section class="peach-screen peach-theme lock-screen lock-screen--vault-stage"data-motion-phase=enter><header class="peach-screen-header lock-screen-header"><div class=peach-wordmark-stack></div></header><div class="peach-lock-hero peach-lock-hero--unlock"><div class=peach-lock-hero-art aria-hidden=true></div><span class=peach-lock-eyebrow>vault locked</span><h1 class="peach-onboarding-headline peach-lock-headline--unlock">unlock<br>your vault.</h1></div><section class="peach-lock-panel peach-lock-panel--unlock peach-glass"><label class=peach-label for=unlock-password>master password</label><input id=unlock-password class="peach-underline-input peach-unlock-input lock-password-input"type=password placeholder=•••••••••••• autocomplete=current-password><button class="peach-btn peach-btn--accent peach-btn--md peach-lock-submit">`),Vc=J(`<button class=peach-newvault-back type=button aria-label="Back to onboarding"><svg width=11 height=11 viewBox="0 0 11 11"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round><path d="M7 2L3 5.5L7 9"></path></svg>back`),Hc=J(`<svg width=15 height=10 viewBox="0 0 14 10"fill=none stroke=currentColor stroke-width=0.9 stroke-linecap=round><path d="M1 2C3 4.5 5 6 7 6C9 6 11 4.5 13 2"></path><path d="M3.5 5.5L2.5 7.5"></path><path d="M7 6.5V8.5"></path><path d="M10.5 5.5L11.5 7.5">`),Uc=J(`<div class=peach-password-strength><div><div class=peach-strength-fill></div></div><span class=peach-strength-label>`),Wc=J(`<section class="peach-screen peach-theme lock-screen lock-screen--vault-stage peach-newvault"data-motion-phase=enter><header class="peach-screen-header peach-newvault-header"><div class=peach-wordmark-stack></div></header><div class=peach-newvault-mark aria-hidden=true></div><div class=peach-newvault-card><h1 class=peach-newvault-headline>keep your12+secrets.</h1><hr class=peach-newvault-divider><div class=peach-newvault-field><div class=peach-newvault-label-row><label class=peach-label for=master-password>master password</label><button class=peach-lock-reveal-btn type=button></button></div><input id=master-password class="peach-underline-input peach-newvault-input lock-password-input"placeholder=•••••••••••• autocomplete=new-password></div><div class=peach-newvault-field><label class=peach-label for=confirm-password>confirm password</label><input id=confirm-password class="peach-underline-input peach-newvault-input"placeholder=•••••••••••• autocomplete=new-password></div><button class="peach-btn peach-btn--accent peach-btn--md peach-lock-submit peach-newvault-submit"aria-live=polite></button><p class=peach-newvault-warning><span class=peach-newvault-warning-icon aria-hidden=true>⚠</span><span>If you forget it, your vault cannot be opened. There is no reset.</span></p></div><div class=peach-newvault-footer><p class=peach-hint>Already have a backup?</p><button class=peach-lock-restore-link>› restore from backup`),Gc=J(`<svg width=15 height=10 viewBox="0 0 14 10"fill=none stroke=currentColor stroke-width=0.9 stroke-linecap=round><path d="M1 5C1 5 2.8 1 7 1C11.2 1 13 5 13 5C13 5 11.2 9 7 9C2.8 9 1 5 1 5Z"></path><circle cx=7 cy=5 r=1.75>`),Kc=J(`<p class=peach-newvault-hint>at least 12 characters`),qc=J(`<section class="peach-screen peach-theme lock-screen lock-screen--vault-stage lock-screen--onboarding peach-restore-screen"data-motion-phase=enter><header class="peach-screen-header lock-screen-header"><button class=peach-lock-restore-link>‹ back</button></header><div class=peach-lock-hero><span class=peach-lock-eyebrow>restore</span><h1 class=peach-onboarding-headline>bring back<br>your vault.</h1></div><div class=peach-restore-stack role=list><button class=peach-restore-card role=listitem><h2 class=peach-restore-card-headline>PeachScript</h2><hr class=peach-restore-card-divider><p class=peach-restore-card-body>Paste a string of Peach symbols, or open a <code>.peach</code> file you saved from another device.</p><p class=peach-restore-card-meta>backup password required</p></button><button class=peach-restore-card role=listitem><span class=peach-restore-card-soon aria-label="coming soon">soon</span><h2 class=peach-restore-card-headline>Mayan code</h2><hr class=peach-restore-card-divider><p class=peach-restore-card-body>Restore from a printed Mayan code by uploading a photo of it.</p><p class=peach-restore-card-meta>decoder shipping soon</p></button><button class=peach-restore-card role=listitem><h2 class=peach-restore-card-headline>CSV</h2><hr class=peach-restore-card-divider><p class=peach-restore-card-body>Move in from Bitwarden, 1Password, Proton Pass, or a browser (Chrome, Safari, Edge) CSV export.</p><p class=peach-restore-card-meta>plain-text — open the file once and delete it`),Jc=J(`<section class="peach-screen peach-theme lock-screen lock-screen--vault-stage lock-screen--onboarding peach-restore-screen"data-motion-phase=enter><header class="peach-screen-header lock-screen-header"><button class=peach-lock-restore-link>‹ back</button></header><div class=peach-lock-hero><span class=peach-lock-eyebrow>mayan code</span><h1 class=peach-onboarding-headline>decoder<br>on its way.</h1></div><div class=peach-restore-stack><div class="peach-restore-card peach-restore-card--static"><h2 class=peach-restore-card-headline>Not yet — but soon.</h2><hr class=peach-restore-card-divider><p class=peach-restore-card-body>Mayan codes encode the same backup as PeachScript, but printable on a single page. The phone-camera decoder is the next thing to land for this format.</p><p class=peach-restore-card-body>Until then, restore your vault using the PeachScript that came with this Mayan code, or open a <code>.peach</code> file backup.</p></div></div><div class=peach-restore-footer><button class=peach-restore-footer-link>‹ back to restore`),Yc=J(`<button class="peach-btn peach-btn--subtle peach-btn--md peach-biometric-btn"type=button><svg width=16 height=16 viewBox="0 0 16 16"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round><path d="M8 1a3 3 0 0 0-3 3v4a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path><path d="M5 8v1a3 3 0 0 0 6 0V8"></path><line x1=8 y1=12 x2=8 y2=15></line><line x1=5 y1=15 x2=11 y2=15></line></svg>use biometrics`),Xc=null;async function Zc(){return Xc||(Xc=(await a(()=>import(`./main-BnSAnK-x.js`).then(e=>t(e.default,1)),__vite__mapDeps([13,2]))).default,Xc)}function Qc(e){let[t,n]=z(``),[r,a]=z(``),[o,s]=z(``),[c,l]=z(!1),[u,d]=z(null),[f,p]=z(!1),[m,h]=z(null),g=V(()=>t().length>=12&&r().length>=12&&t()===r()&&m()!==null&&m()>=2),_=V(()=>{let e=m();return e===null?null:e<=1?`weak`:e===2?`fair`:e===3?`good`:`strong`}),v=V(()=>t()?t().length<12?`need ${12-t().length} more characters`:r()?t()===r()?m()===null?`checking strength…`:m()<2?`password too weak — add words or length`:null:`passwords don't match`:`confirm your password`:null);V(()=>{let e=t();if(!e){h(null);return}Zc().then(n=>{t()===e&&h(n(e).score)}).catch(()=>{t()===e&&h(e.length>=16?3:e.length>=12?2:1)})});async function y(){if(!t().trim())return;l(!0),s(``);let r=await Q({type:`UNLOCK`,payload:{password:t()}});if(r.ok){await e.onUnlock(),l(!1);return}s(rl(r.error,`incorrect password`)),n(``);let i=document.querySelector(`.lock-password-input`);i?.classList.add(`shake`),setTimeout(()=>i?.classList.remove(`shake`),300),l(!1)}async function b(){if(!t().trim())return;if(t().length<12){s(`password must be at least 12 characters`);return}if(t()!==r()){s(`passwords do not match`);return}let n=m();if(n===null||n<2){s(`password is too weak — try a longer or more varied passphrase`);return}l(!0),s(``);let i=await Q({type:`CREATE_VAULT`,payload:{password:t()}});if(i.ok){await e.onUnlock(),l(!1);return}s(rl(i.error,`failed to create vault`)),l(!1)}function x(t){!e.ready||c()||(n(``),a(``),s(``),d(t))}return G(Ge,{get children(){return[G(Ke,{get when(){return u()===`restore`},get children(){return G($c,{onBack:()=>d(null),onPickPeachScript:()=>d(`peachscript`),onPickMayan:()=>d(`mayan`),onPickCSV:()=>d(`file`)})}}),G(Ke,{get when(){return u()===`mayan`},get children(){return G(el,{onBack:()=>d(`restore`)})}}),G(Ke,{get when(){return u()===`peachscript`},get children(){return G(Oc,{mode:`onboarding`,get replacesExistingVault(){return e.hasVault},initialView:`peachscript`,onBack:()=>d(`restore`),onImport:async()=>{d(null),await e.onUnlock()}})}}),G(Ke,{get when(){return u()===`file`},get children(){return G(Oc,{mode:`onboarding`,get replacesExistingVault(){return e.hasVault},initialView:`file`,onBack:()=>d(`restore`),onImport:async()=>{d(null),await e.onUnlock()}})}}),G(Ke,{get when(){return e.hasVault},get children(){var r=Bc(),a=r.firstChild,s=a.firstChild,l=a.nextSibling,u=l.firstChild,d=l.nextSibling,f=d.firstChild.nextSibling,p=f.nextSibling;return Z(s,G(Pt,{class:`peach-wordmark-wrap`}),null),Z(s,G(K,{get when(){return e.isPro},get children(){return Rc()}}),null),Z(u,G(Nt,{class:`peach-lock-hero-mark`})),Z(r,G(At,{}),d),f.$$keydown=t=>{t.key!==`Enter`||!e.ready||y()},f.$$input=e=>n(e.target.value),nt(t=>{e.ready&&setTimeout(()=>t.focus(),80)},f),Z(d,G(K,{get when(){return o()},get children(){var e=zc();return Z(e,o),e}}),p),p.$$click=()=>void y(),Z(p,()=>c()?`unlocking...`:`unlock`),Z(d,G(K,{get when(){return i.isNativePlatform()},get children(){return G(nl,{get ready(){return e.ready},loading:c,get onUnlock(){return e.onUnlock}})}}),null),B(t=>{var n=!e.ready,r=!e.ready||c();return n!==t.e&&(f.disabled=t.e=n),r!==t.t&&(p.disabled=t.t=r),t},{e:void 0,t:void 0}),B(()=>f.value=t()),r}}),G(Ke,{when:!0,get children(){var i=Wc(),s=i.firstChild,l=s.firstChild,u=s.nextSibling,d=u.nextSibling,m=d.firstChild.nextSibling.nextSibling,h=m.firstChild,y=h.firstChild.nextSibling,S=h.nextSibling,C=m.nextSibling,w=C.firstChild.nextSibling,T=C.nextSibling,E=d.nextSibling.firstChild.nextSibling;return Z(s,G(K,{get when(){return e.onBackToOnboarding},get children(){var t=Vc();return t.$$click=()=>e.onBackToOnboarding?.(),t}}),l),Z(l,G(Pt,{class:`peach-wordmark-wrap`}),null),Z(l,G(K,{get when(){return e.isPro},get children(){return Rc()}}),null),Z(u,G(Nt,{class:`peach-newvault-mark-art`})),y.$$click=()=>p(e=>!e),Z(y,G(K,{get when(){return f()},get fallback(){return Gc()},get children(){return Hc()}}),null),Z(y,()=>f()?`hide`:`show`,null),S.$$keydown=t=>{t.key!==`Enter`||!e.ready||b()},S.$$input=e=>n(e.target.value),Z(m,G(K,{get when(){return q(()=>t().length>0)()&&_()!==null},get fallback(){return Kc()},get children(){var e=Uc(),t=e.firstChild,n=t.nextSibling;return Z(n,_),B(()=>X(t,`peach-strength-bar peach-strength-bar--${_()}`)),e}}),null),w.$$keydown=t=>{t.key===`Enter`&&e.ready&&b()},w.$$input=e=>a(e.target.value),Z(d,G(K,{get when(){return o()},get children(){var e=zc();return Z(e,o),e}}),T),T.$$click=()=>void b(),Z(T,G(K,{get when(){return q(()=>!g())()&&v()},get fallback(){return c()?`creating...`:`create vault`},get children(){return v()}})),E.$$click=()=>x(`restore`),B(t=>{var n=f()?`Hide password`:`Show password`,r=f()?`text`:`password`,i=!e.ready,a=f()?`text`:`password`,o=!e.ready,s=!e.ready||c()||!g(),l=!e.ready;return n!==t.e&&Y(y,`aria-label`,t.e=n),r!==t.t&&Y(S,`type`,t.t=r),i!==t.a&&(S.disabled=t.a=i),a!==t.o&&Y(w,`type`,t.o=a),o!==t.i&&(w.disabled=t.i=o),s!==t.n&&(T.disabled=t.n=s),l!==t.s&&(E.disabled=t.s=l),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),B(()=>S.value=t()),B(()=>w.value=r()),i}})]}})}function $c(e){return(()=>{var t=qc(),n=t.firstChild,r=n.firstChild,i=n.nextSibling.nextSibling.firstChild,a=i.nextSibling,o=a.nextSibling;return Z(n,G(Pt,{class:`peach-wordmark-wrap`}),r),$e(r,`click`,e.onBack,!0),$e(i,`click`,e.onPickPeachScript,!0),$e(a,`click`,e.onPickMayan,!0),$e(o,`click`,e.onPickCSV,!0),t})()}function el(e){return(()=>{var t=Jc(),n=t.firstChild,r=n.firstChild,i=n.nextSibling.nextSibling.nextSibling.firstChild;return Z(n,G(Pt,{class:`peach-wordmark-wrap`}),r),$e(r,`click`,e.onBack,!0),$e(i,`click`,e.onBack,!0),t})()}async function tl(e){await Ic()&&await e.onUnlock()}function nl(e){let[t,n]=z(!1);return ae(async()=>{n(await Lc())}),G(K,{get when(){return t()},get children(){var t=Yc();return t.$$click=()=>void tl(e),B(()=>t.disabled=!e.ready||e.loading()),t}})}function rl(e,t){return e?e===`SERVICE_WORKER_UNAVAILABLE`||e.includes(`Receiving end does not exist`)||e.includes(`message port closed`)?`background service unavailable`:e:t}Qe([`input`,`keydown`,`click`]);var il=J(`<canvas width=320 height=520 class=peach-rune-background aria-hidden=true>`),al=14,ol=al*3.8,sl=al*2.2,cl=[8,11,6],ll=120;function ul(){let e=[];for(let t=0;t<ll;t++)e.push(String.fromCodePoint(57344+(t*37+13&255)));return e.join(``)}function dl(e){let t,n=0,r=!1;return ae(()=>{let i=t.getContext(`2d`);if(!i)return;let a=t.width,o=t.height,s=e.opacity??.07,c=ul(),l=Math.ceil(o/ol)+1,u=Math.ceil(a/sl)+4,d=c.length*sl,f=Array.from({length:l},()=>Math.random()*d),p=performance.now(),m=e=>{let t=Math.min(e-p,64);p=e,i.clearRect(0,0,a,o),i.font=`${al}px PeachScript, monospace`,i.fillStyle=`rgba(245, 240, 234, ${s})`,i.textBaseline=`alphabetic`;for(let e=0;e<l;e++){let n=cl[e%cl.length];f[e]=(f[e]+n*t/1e3)%d;let r=e*ol+al+8,o=Math.floor(f[e]/sl),s=f[e]%sl;for(let e=0;e<u;e++){let t=e*sl-s;if(t<-sl||t>a+sl)continue;let n=((o+e)%c.length+c.length)%c.length;i.fillText(c[n],t,r)}}n=requestAnimationFrame(m)},h=()=>{r||(r=!0,p=performance.now(),n=requestAnimationFrame(m))},g=()=>{r&&(r=!1,cancelAnimationFrame(n))},_=()=>{document.hidden?g():h()};document.addEventListener(`visibilitychange`,_),document.fonts.load(`${al}px PeachScript`).finally(h),oe(()=>{g(),document.removeEventListener(`visibilitychange`,_)})}),(()=>{var e=il(),n=t;return typeof n==`function`?nt(n,e):t=e,e})()}var fl=J(`<p class=peach-onboarding-warning><span class=peach-onboarding-warning-icon aria-hidden=true>⚠</span><span>`),pl=J(`<div class=peach-onboarding-mobile-card-buttons><button class="peach-btn peach-btn--accent peach-btn--md">Enable Peach autofill</button><button class="peach-btn peach-btn--subtle peach-btn--md">Skip for now`),ml=J(`<section class="peach-screen peach-theme peach-onboarding"><header class="peach-screen-header peach-onboarding-header"></header><div class=peach-onboarding-card role=button tabindex=0><h2 class=peach-onboarding-card-headline></h2><hr class=peach-onboarding-divider></div><div class=peach-onboarding-nav><div class=peach-onboarding-dots aria-hidden=true></div><button class=peach-onboarding-next>`),hl=J(`<p class=peach-onboarding-body>`),gl=J(`<div class=peach-onboarding-dot>`),_l=[{headline:`Your passwords13+live here.14+Nowhere else.`,body:[`No account. No server. No one but you can ever see your vault.`,`Everything is encrypted on your device with a password only you know.`],warning:null},{headline:`One rule.`,body:[`Your master password is yours alone. Peach cannot recover it. There is no reset.`,`Choose something you will remember. Write it down somewhere safe.`],warning:`If you forget it, your vault cannot be opened.`},{headline:`Everything15+you need.`,body:[`Passwords, passkeys, cards, secure notes, two-factor codes.`,`Autofills on every site. Generates strong passwords. Detects breaches.`,`Free forever. Pro adds sync, mobile, and passkeys.`],warning:null}];function vl(){try{return r(`Autofill`)}catch{return null}}var yl=vl(),bl={headline:`Enable autofill.`,body:[`Peach fills passwords in Chrome, Safari, and every app on your phone.`],warning:null,mobileCard:!0},xl=i.isNativePlatform()?[..._l,bl]:_l,Sl=120,Cl=60;function wl(e){let[t,n]=z(0),[r,i]=z(!1),[a,o]=z(!1);async function s(){if(!(r()||a())&&!xl[t()]?.mobileCard)if(t()<xl.length-1)i(!0),window.setTimeout(()=>{n(e=>e+1),i(!1)},Sl+Cl);else{o(!0);try{await c(`peach_onboarded`,`true`)}catch{}window.setTimeout(()=>{e.onComplete()},200)}}async function l(){yl&&await yl.openAutofillSettings(),o(!0);try{await c(`peach_onboarded`,`true`)}catch{}window.setTimeout(()=>{e.onComplete()},200)}async function u(){o(!0);try{await c(`peach_onboarded`,`true`)}catch{}window.setTimeout(()=>{e.onComplete()},200)}return(()=>{var e=ml(),n=e.firstChild,i=n.nextSibling,o=i.firstChild;o.nextSibling;var c=i.nextSibling.firstChild,d=c.nextSibling;return Z(e,G(dl,{opacity:.07}),n),Z(n,G(Pt,{class:`peach-wordmark-wrap`})),i.$$keydown=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),s())},i.$$click=s,Z(o,()=>xl[t()].headline),Z(i,G(Ue,{get each(){return xl[t()].body},children:e=>(()=>{var t=hl();return Z(t,e),t})()}),null),Z(i,G(K,{get when(){return xl[t()].warning},get children(){var e=fl(),n=e.firstChild.nextSibling;return Z(n,()=>xl[t()].warning),e}}),null),Z(i,G(K,{get when(){return xl[t()]?.mobileCard},get children(){var e=pl(),t=e.firstChild,n=t.nextSibling;return t.$$click=e=>{e.stopPropagation(),l()},n.$$click=e=>{e.stopPropagation(),u()},e}}),null),Z(c,G(Ue,{each:xl,children:(e,n)=>(()=>{var e=gl();return B(()=>e.classList.toggle(`is-active`,n()===t())),e})()})),d.$$click=e=>{e.stopPropagation(),s()},Z(d,()=>t()===xl.length-1?`Get started →`:`next →`),B(t=>{var n=!!a(),o=!!r(),s=a();return n!==t.e&&e.classList.toggle(`is-completing`,t.e=n),o!==t.t&&i.classList.toggle(`is-exiting`,t.t=o),s!==t.a&&(d.disabled=t.a=s),t},{e:void 0,t:void 0,a:void 0}),e})()}Qe([`click`,`keydown`]);var Tl=J(`<div class=peach-pro-celebration><div class=peach-pro-bloom-target>🍑</div><div class=peach-pro-wordmark>peach pro</div><div class=peach-pro-thankyou>thank you.`);function El(){let[e,t]=z(!1);return ae(()=>{let e=window.setTimeout(()=>t(!0),1800);oe(()=>window.clearTimeout(e))}),(()=>{var t=Tl();return B(()=>t.classList.toggle(`is-leaving`,!!e())),t})()}function Dl(e,t){return e.endsWith(t)?e.length===t.length||e[e.length-t.length-1]===`.`:!1}function Ol(e,t){let n=e.length-t.length-2,r=e.lastIndexOf(`.`,n);return r===-1?e:e.slice(r+1)}function kl(e,t,n){if(n.validHosts!==null){let e=n.validHosts;for(let n of e)if(Dl(t,n))return n}let r=0;if(t.startsWith(`.`))for(;r<t.length&&t[r]===`.`;)r+=1;return e.length===t.length-r?null:Ol(t,e)}function Al(e,t){return e.slice(0,-t.length-1)}function jl(e,t){let n=0,r=e.length,i=!1;if(!t){if(e.startsWith(`data:`))return null;for(;n<e.length&&e.charCodeAt(n)<=32;)n+=1;for(;r>n+1&&e.charCodeAt(r-1)<=32;)--r;if(e.charCodeAt(n)===47&&e.charCodeAt(n+1)===47)n+=2;else{let t=e.indexOf(`:/`,n);if(t!==-1){let r=t-n,i=e.charCodeAt(n),a=e.charCodeAt(n+1),o=e.charCodeAt(n+2),s=e.charCodeAt(n+3),c=e.charCodeAt(n+4);if(!(r===5&&i===104&&a===116&&o===116&&s===112&&c===115)&&!(r===4&&i===104&&a===116&&o===116&&s===112)&&!(r===3&&i===119&&a===115&&o===115)&&!(r===2&&i===119&&a===115))for(let r=n;r<t;r+=1){let t=e.charCodeAt(r)|32;if(!(t>=97&&t<=122||t>=48&&t<=57||t===46||t===45||t===43))return null}for(n=t+2;e.charCodeAt(n)===47;)n+=1}}let t=-1,a=-1,o=-1;for(let s=n;s<r;s+=1){let n=e.charCodeAt(s);if(n===35||n===47||n===63){r=s;break}else n===64?t=s:n===93?a=s:n===58?o=s:n>=65&&n<=90&&(i=!0)}if(t!==-1&&t>n&&t<r&&(n=t+1),e.charCodeAt(n)===91)return a===-1?null:e.slice(n+1,a).toLowerCase();o!==-1&&o>n&&o<r&&(r=o)}for(;r>n+1&&e.charCodeAt(r-1)===46;)--r;let a=n!==0||r!==e.length?e.slice(n,r):e;return i?a.toLowerCase():a}function Ml(e){if(e.length<7||e.length>15)return!1;let t=0;for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n);if(r===46)t+=1;else if(r<48||r>57)return!1}return t===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function Nl(e){if(e.length<3)return!1;let t=+!!e.startsWith(`[`),n=e.length;if(e[n-1]===`]`&&--n,n-t>39)return!1;let r=!1;for(;t<n;t+=1){let n=e.charCodeAt(t);if(n===58)r=!0;else if(!(n>=48&&n<=57||n>=97&&n<=102||n>=65&&n<=90))return!1}return r}function Pl(e){return Nl(e)||Ml(e)}function Fl(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function Il(e){if(e.length>255||e.length===0||!Fl(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let t=-1,n=-1,r=e.length;for(let i=0;i<r;i+=1){let r=e.charCodeAt(i);if(r===46){if(i-t>64||n===46||n===45||n===95)return!1;t=i}else if(!(Fl(r)||r===45||r===95))return!1;n=r}return r-t-1<=63&&n!==45}function Ll({allowIcannDomains:e=!0,allowPrivateDomains:t=!1,detectIp:n=!0,extractHostname:r=!0,mixedInputs:i=!0,validHosts:a=null,validateHostname:o=!0}){return{allowIcannDomains:e,allowPrivateDomains:t,detectIp:n,extractHostname:r,mixedInputs:i,validHosts:a,validateHostname:o}}var Rl=Ll({});function zl(e){return e===void 0?Rl:Ll(e)}function Bl(e,t){return t.length===e.length?``:e.slice(0,-t.length-1)}function Vl(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,publicSuffix:null,subdomain:null}}function Hl(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.publicSuffix=null,e.subdomain=null}function Ul(e,t,n,r,i){let a=zl(r);return typeof e!=`string`||(a.extractHostname?a.mixedInputs?i.hostname=jl(e,Il(e)):i.hostname=jl(e,!1):i.hostname=e,a.detectIp&&i.hostname!==null&&(i.isIp=Pl(i.hostname),i.isIp))?i:a.validateHostname&&a.extractHostname&&i.hostname!==null&&!Il(i.hostname)?(i.hostname=null,i):(t===0||i.hostname===null||(n(i.hostname,a,i),t===2||i.publicSuffix===null)||(i.domain=kl(i.publicSuffix,i.hostname,a),t===3||i.domain===null)||(i.subdomain=Bl(i.hostname,i.domain),t===4)||(i.domainWithoutSuffix=Al(i.domain,i.publicSuffix)),i)}function Wl(e,t,n){if(!t.allowPrivateDomains&&e.length>3){let t=e.length-1,r=e.charCodeAt(t),i=e.charCodeAt(t-1),a=e.charCodeAt(t-2),o=e.charCodeAt(t-3);if(r===109&&i===111&&a===99&&o===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix=`com`,!0;if(r===103&&i===114&&a===111&&o===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix=`org`,!0;if(r===117&&i===100&&a===101&&o===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix=`edu`,!0;if(r===118&&i===111&&a===103&&o===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix=`gov`,!0;if(r===116&&i===101&&a===110&&o===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix=`net`,!0;if(r===101&&i===100&&a===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix=`de`,!0}return!1}var Gl=(function(){let e=[1,{}],t=[0,{city:e}];return[0,{ck:[0,{www:e}],jp:[0,{kawasaki:t,kitakyushu:t,kobe:t,nagoya:t,sapporo:t,sendai:t,yokohama:t}]}]})(),Kl=(function(){let e=[1,{}],t=[2,{}],n=[1,{com:e,edu:e,gov:e,net:e,org:e}],r=[1,{com:e,edu:e,gov:e,mil:e,net:e,org:e}],i=[0,{"*":t}],a=[2,{s:i}],o=[0,{relay:t}],s=[2,{id:t}],c=[1,{gov:e}],l=[0,{airflow:i,"lambda-url":t,"transfer-webapp":t}],u=[0,{airflow:i,"transfer-webapp":t}],d=[0,{"transfer-webapp":t}],f=[0,{"transfer-webapp":t,"transfer-webapp-fips":t}],p=[0,{notebook:t,studio:t}],m=[0,{labeling:t,notebook:t,studio:t}],h=[0,{notebook:t}],g=[0,{labeling:t,notebook:t,"notebook-fips":t,studio:t}],_=[0,{notebook:t,"notebook-fips":t,studio:t,"studio-fips":t}],v=[0,{shop:t}],y=[0,{"*":e}],b=[1,{co:t}],x=[0,{objects:t}],S=[2,{"eu-west-1":t,"us-east-1":t}],C=[2,{nodes:t}],w=[0,{my:t}],T=[0,{s3:t,"s3-accesspoint":t,"s3-website":t}],E=[0,{s3:t,"s3-accesspoint":t}],D=[0,{direct:t}],O=[0,{"webview-assets":t}],k=[0,{vfs:t,"webview-assets":t}],A=[0,{"execute-api":t,"emrappui-prod":t,"emrnotebooks-prod":t,"emrstudio-prod":t,dualstack:T,s3:t,"s3-accesspoint":t,"s3-object-lambda":t,"s3-website":t,"aws-cloud9":O,cloud9:k}],j=[0,{"execute-api":t,"emrappui-prod":t,"emrnotebooks-prod":t,"emrstudio-prod":t,dualstack:E,s3:t,"s3-accesspoint":t,"s3-object-lambda":t,"s3-website":t,"aws-cloud9":O,cloud9:k}],M=[0,{"execute-api":t,"emrappui-prod":t,"emrnotebooks-prod":t,"emrstudio-prod":t,dualstack:T,s3:t,"s3-accesspoint":t,"s3-object-lambda":t,"s3-website":t,"analytics-gateway":t,"aws-cloud9":O,cloud9:k}],N=[0,{"execute-api":t,"emrappui-prod":t,"emrnotebooks-prod":t,"emrstudio-prod":t,dualstack:T,s3:t,"s3-accesspoint":t,"s3-object-lambda":t,"s3-website":t}],P=[0,{s3:t,"s3-accesspoint":t,"s3-accesspoint-fips":t,"s3-fips":t,"s3-website":t}],F=[0,{"execute-api":t,"emrappui-prod":t,"emrnotebooks-prod":t,"emrstudio-prod":t,dualstack:P,s3:t,"s3-accesspoint":t,"s3-accesspoint-fips":t,"s3-fips":t,"s3-object-lambda":t,"s3-website":t,"aws-cloud9":O,cloud9:k}],I=[0,{"execute-api":t,"emrappui-prod":t,"emrnotebooks-prod":t,"emrstudio-prod":t,dualstack:P,s3:t,"s3-accesspoint":t,"s3-accesspoint-fips":t,"s3-fips":t,"s3-object-lambda":t,"s3-website":t}],L=[0,{"execute-api":t,"emrappui-prod":t,"emrnotebooks-prod":t,"emrstudio-prod":t,dualstack:P,s3:t,"s3-accesspoint":t,"s3-accesspoint-fips":t,"s3-deprecated":t,"s3-fips":t,"s3-object-lambda":t,"s3-website":t,"analytics-gateway":t,"aws-cloud9":O,cloud9:k}],R=[0,{auth:t}],z=[0,{auth:t,"auth-fips":t}],ee=[0,{"auth-fips":t}],B=[0,{apps:t}],te=[0,{paas:t}],V=[2,{eu:t}],ne=[0,{app:t}],re=[0,{site:t}],H=[1,{com:e,edu:e,net:e,org:e}],ie=[0,{j:t}],ae=[0,{dyn:t}],oe=[2,{web:t}],se=[1,{co:e,com:e,edu:e,gov:e,net:e,org:e}],ce=[0,{p:t}],le=[0,{user:t}],ue=[1,{ms:t}],de=[0,{cdn:t}],fe=[2,{raw:i}],pe=[0,{cust:t,reservd:t}],me=[0,{cust:t}],he=[0,{s3:t}],ge=[1,{biz:e,com:e,edu:e,gov:e,info:e,net:e,org:e}],_e=[0,{ipfs:t}],ve=[1,{framer:t}],ye=[0,{forgot:t}],be=[0,{core:[0,{blob:t,file:t,web:t}],servicebus:t}],U=[1,{gs:e}],xe=[0,{nes:e}],W=[1,{k12:e,cc:e,lib:e}],Se=[1,{cc:e}],Ce=[1,{cc:e,lib:e}];return[0,{ac:[1,{com:e,edu:e,gov:e,mil:e,net:e,org:e,drr:t,feedback:t,forms:t}],ad:e,ae:[1,{ac:e,co:e,gov:e,mil:e,net:e,org:e,sch:e}],aero:[1,{airline:e,airport:e,"accident-investigation":e,"accident-prevention":e,aerobatic:e,aeroclub:e,aerodrome:e,agents:e,"air-surveillance":e,"air-traffic-control":e,aircraft:e,airtraffic:e,ambulance:e,association:e,author:e,ballooning:e,broker:e,caa:e,cargo:e,catering:e,certification:e,championship:e,charter:e,civilaviation:e,club:e,conference:e,consultant:e,consulting:e,control:e,council:e,crew:e,design:e,dgca:e,educator:e,emergency:e,engine:e,engineer:e,entertainment:e,equipment:e,exchange:e,express:e,federation:e,flight:e,freight:e,fuel:e,gliding:e,government:e,groundhandling:e,group:e,hanggliding:e,homebuilt:e,insurance:e,journal:e,journalist:e,leasing:e,logistics:e,magazine:e,maintenance:e,marketplace:e,media:e,microlight:e,modelling:e,navigation:e,parachuting:e,paragliding:e,"passenger-association":e,pilot:e,press:e,production:e,recreation:e,repbody:e,res:e,research:e,rotorcraft:e,safety:e,scientist:e,services:e,show:e,skydiving:e,software:e,student:e,taxi:e,trader:e,trading:e,trainer:e,union:e,workinggroup:e,works:e}],af:n,ag:[1,{co:e,com:e,net:e,nom:e,org:e,obj:t}],ai:[1,{com:e,net:e,off:e,org:e,uwu:t,framer:t,kiloapps:t}],al:r,am:[1,{co:e,com:e,commune:e,net:e,org:e,radio:t}],ao:[1,{co:e,ed:e,edu:e,gov:e,gv:e,it:e,og:e,org:e,pb:e}],aq:e,ar:[1,{bet:e,com:e,coop:e,edu:e,gob:e,gov:e,int:e,mil:e,musica:e,mutual:e,net:e,org:e,seg:e,senasa:e,tur:e}],arpa:[1,{e164:e,home:e,"in-addr":e,ip6:e,iris:e,uri:e,urn:e}],as:c,asia:[1,{cloudns:t,daemon:t,dix:t}],at:[1,{4:t,ac:[1,{sth:e}],co:e,gv:e,or:e,funkfeuer:[0,{wien:t}],futurecms:[0,{"*":t,ex:i,in:i}],futurehosting:t,futuremailing:t,ortsinfo:[0,{ex:i,kunden:i}],biz:t,info:t,"123webseite":t,priv:t,my:t,myspreadshop:t,"12hp":t,"2ix":t,"4lima":t,"lima-city":t}],au:[1,{asn:e,com:[1,{cloudlets:[0,{mel:t}],myspreadshop:t}],edu:[1,{act:e,catholic:e,nsw:e,nt:e,qld:e,sa:e,tas:e,vic:e,wa:e}],gov:[1,{qld:e,sa:e,tas:e,vic:e,wa:e}],id:e,net:e,org:e,conf:e,oz:e,act:e,nsw:e,nt:e,qld:e,sa:e,tas:e,vic:e,wa:e,hrsn:[0,{vps:t}]}],aw:[1,{com:e}],ax:e,az:[1,{biz:e,co:e,com:e,edu:e,gov:e,info:e,int:e,mil:e,name:e,net:e,org:e,pp:e,pro:e}],ba:[1,{com:e,edu:e,gov:e,mil:e,net:e,org:e,brendly:v,rs:t}],bb:[1,{biz:e,co:e,com:e,edu:e,gov:e,info:e,net:e,org:e,store:e,tv:e}],bd:[1,{ac:e,ai:e,co:e,com:e,edu:e,gov:e,id:e,info:e,it:e,mil:e,net:e,org:e,sch:e,tv:e}],be:[1,{ac:e,cloudns:t,webhosting:t,interhostsolutions:[0,{cloud:t}],kuleuven:[0,{ezproxy:t}],my:t,"123website":t,myspreadshop:t,transurl:i}],bf:c,bg:[1,{0:e,1:e,2:e,3:e,4:e,5:e,6:e,7:e,8:e,9:e,a:e,b:e,c:e,d:e,e,f:e,g:e,h:e,i:e,j:e,k:e,l:e,m:e,n:e,o:e,p:e,q:e,r:e,s:e,t:e,u:e,v:e,w:e,x:e,y:e,z:e,barsy:t}],bh:n,bi:[1,{co:e,com:e,edu:e,or:e,org:e}],biz:[1,{activetrail:t,"cloud-ip":t,cloudns:t,jozi:t,dyndns:t,"for-better":t,"for-more":t,"for-some":t,"for-the":t,selfip:t,webhop:t,orx:t,mmafan:t,myftp:t,"no-ip":t,dscloud:t}],bj:[1,{africa:e,agro:e,architectes:e,assur:e,avocats:e,co:e,com:e,eco:e,econo:e,edu:e,info:e,loisirs:e,money:e,net:e,org:e,ote:e,restaurant:e,resto:e,tourism:e,univ:e}],bm:n,bn:[1,{com:e,edu:e,gov:e,net:e,org:e,co:t}],bo:[1,{com:e,edu:e,gob:e,int:e,mil:e,net:e,org:e,tv:e,web:e,academia:e,agro:e,arte:e,blog:e,bolivia:e,ciencia:e,cooperativa:e,democracia:e,deporte:e,ecologia:e,economia:e,empresa:e,indigena:e,industria:e,info:e,medicina:e,movimiento:e,musica:e,natural:e,nombre:e,noticias:e,patria:e,plurinacional:e,politica:e,profesional:e,pueblo:e,revista:e,salud:e,tecnologia:e,tksat:e,transporte:e,wiki:e}],br:[1,{"9guacu":e,abc:e,adm:e,adv:e,agr:e,aju:e,am:e,anani:e,aparecida:e,api:e,app:e,arq:e,art:e,ato:e,b:e,barueri:e,belem:e,bet:e,bhz:e,bib:e,bio:e,blog:e,bmd:e,boavista:e,bsb:e,campinagrande:e,campinas:e,caxias:e,cim:e,cng:e,cnt:e,com:[1,{simplesite:t}],contagem:e,coop:e,coz:e,cri:e,cuiaba:e,curitiba:e,def:e,des:e,det:e,dev:e,ecn:e,eco:e,edu:e,emp:e,enf:e,eng:e,esp:e,etc:e,eti:e,far:e,feira:e,flog:e,floripa:e,fm:e,fnd:e,fortal:e,fot:e,foz:e,fst:e,g12:e,geo:e,ggf:e,goiania:e,gov:[1,{ac:e,al:e,am:e,ap:e,ba:e,ce:e,df:e,es:e,go:e,ma:e,mg:e,ms:e,mt:e,pa:e,pb:e,pe:e,pi:e,pr:e,rj:e,rn:e,ro:e,rr:e,rs:e,sc:e,se:e,sp:e,to:e}],gru:e,ia:e,imb:e,ind:e,inf:e,jab:e,jampa:e,jdf:e,joinville:e,jor:e,jus:e,leg:[1,{ac:t,al:t,am:t,ap:t,ba:t,ce:t,df:t,es:t,go:t,ma:t,mg:t,ms:t,mt:t,pa:t,pb:t,pe:t,pi:t,pr:t,rj:t,rn:t,ro:t,rr:t,rs:t,sc:t,se:t,sp:t,to:t}],leilao:e,lel:e,log:e,londrina:e,macapa:e,maceio:e,manaus:e,maringa:e,mat:e,med:e,mil:e,morena:e,mp:e,mus:e,natal:e,net:e,niteroi:e,nom:y,not:e,ntr:e,odo:e,ong:e,org:e,osasco:e,palmas:e,poa:e,ppg:e,pro:e,psc:e,psi:e,pvh:e,qsl:e,radio:e,rec:e,recife:e,rep:e,ribeirao:e,rio:e,riobranco:e,riopreto:e,salvador:e,sampa:e,santamaria:e,santoandre:e,saobernardo:e,saogonca:e,seg:e,sjc:e,slg:e,slz:e,social:e,sorocaba:e,srv:e,taxi:e,tc:e,tec:e,teo:e,the:e,tmp:e,trd:e,tur:e,tv:e,udi:e,vet:e,vix:e,vlog:e,wiki:e,xyz:e,zlg:e,tche:t}],bs:[1,{com:e,edu:e,gov:e,net:e,org:e,we:t}],bt:n,bv:e,bw:[1,{ac:e,co:e,gov:e,net:e,org:e}],by:[1,{gov:e,mil:e,com:e,of:e,mediatech:t}],bz:[1,{co:e,com:e,edu:e,gov:e,net:e,org:e,za:t,mydns:t,gsj:t}],ca:[1,{ab:e,bc:e,mb:e,nb:e,nf:e,nl:e,ns:e,nt:e,nu:e,on:e,pe:e,qc:e,sk:e,yk:e,gc:e,barsy:t,awdev:i,co:t,"no-ip":t,onid:t,myspreadshop:t,box:t}],cat:e,cc:[1,{cleverapps:t,"cloud-ip":t,cloudns:t,ccwu:t,ftpaccess:t,"game-server":t,myphotos:t,scrapping:t,twmail:t,csx:t,fantasyleague:t,spawn:[0,{instances:t}],ec:t,eu:t,gu:t,uk:t,us:t}],cd:[1,{gov:e,cc:t}],cf:e,cg:e,ch:[1,{square7:t,cloudns:t,cloudscale:[0,{cust:t,lpg:x,rma:x}],objectstorage:[0,{lpg:t,rma:t}],flow:[0,{ae:[0,{alp1:t}],appengine:t}],"linkyard-cloud":t,gotdns:t,dnsking:t,"123website":t,myspreadshop:t,firenet:[0,{"*":t,svc:i}],"12hp":t,"2ix":t,"4lima":t,"lima-city":t}],ci:[1,{ac:e,"xn--aroport-bya":e,aéroport:e,asso:e,co:e,com:e,ed:e,edu:e,go:e,gouv:e,int:e,net:e,or:e,org:e,us:t}],ck:y,cl:[1,{co:e,gob:e,gov:e,mil:e,cloudns:t}],cm:[1,{co:e,com:e,gov:e,net:e}],cn:[1,{ac:e,com:[1,{amazonaws:[0,{"cn-north-1":[0,{"execute-api":t,"emrappui-prod":t,"emrnotebooks-prod":t,"emrstudio-prod":t,rds:i,dualstack:T,s3:t,"s3-accesspoint":t,"s3-deprecated":t,"s3-object-lambda":t,"s3-website":t}],"cn-northwest-1":[0,{"execute-api":t,"emrappui-prod":t,"emrnotebooks-prod":t,"emrstudio-prod":t,rds:i,dualstack:E,s3:t,"s3-accesspoint":t,"s3-object-lambda":t,"s3-website":t}],compute:i,airflow:[0,{"cn-north-1":i,"cn-northwest-1":i}],eb:[0,{"cn-north-1":t,"cn-northwest-1":t}],elb:i}],amazonwebservices:[0,{on:[0,{"cn-north-1":u,"cn-northwest-1":u}]}],sagemaker:[0,{"cn-north-1":p,"cn-northwest-1":p}]}],edu:e,gov:e,mil:e,net:e,org:e,"xn--55qx5d":e,公司:e,"xn--od0alg":e,網絡:e,"xn--io0a7i":e,网络:e,ah:e,bj:e,cq:e,fj:e,gd:e,gs:e,gx:e,gz:e,ha:e,hb:e,he:e,hi:e,hk:e,hl:e,hn:e,jl:e,js:e,jx:e,ln:e,mo:e,nm:e,nx:e,qh:e,sc:e,sd:e,sh:[1,{as:t}],sn:e,sx:e,tj:e,tw:e,xj:e,xz:e,yn:e,zj:e,"canva-apps":t,canvasite:w,myqnapcloud:t,quickconnect:D}],co:[1,{com:e,edu:e,gov:e,mil:e,net:e,nom:e,org:e,carrd:t,crd:t,otap:i,hidns:t,leadpages:t,lpages:t,mypi:t,xmit:i,rdpa:[0,{clusters:i,srvrless:i}],firewalledreplit:s,repl:s,supabase:[2,{realtime:t,storage:t}],umso:t}],com:[1,{a2hosted:t,cpserver:t,adobeaemcloud:[2,{dev:i}],africa:t,auiusercontent:i,aivencloud:t,alibabacloudcs:t,kasserver:t,amazonaws:[0,{"af-south-1":A,"ap-east-1":j,"ap-northeast-1":M,"ap-northeast-2":M,"ap-northeast-3":A,"ap-south-1":M,"ap-south-2":N,"ap-southeast-1":M,"ap-southeast-2":M,"ap-southeast-3":N,"ap-southeast-4":N,"ap-southeast-5":[0,{"execute-api":t,dualstack:T,s3:t,"s3-accesspoint":t,"s3-deprecated":t,"s3-object-lambda":t,"s3-website":t}],"ca-central-1":F,"ca-west-1":I,"eu-central-1":M,"eu-central-2":N,"eu-north-1":j,"eu-south-1":A,"eu-south-2":N,"eu-west-1":[0,{"execute-api":t,"emrappui-prod":t,"emrnotebooks-prod":t,"emrstudio-prod":t,dualstack:T,s3:t,"s3-accesspoint":t,"s3-deprecated":t,"s3-object-lambda":t,"s3-website":t,"analytics-gateway":t,"aws-cloud9":O,cloud9:k}],"eu-west-2":j,"eu-west-3":A,"il-central-1":[0,{"execute-api":t,"emrappui-prod":t,"emrnotebooks-prod":t,"emrstudio-prod":t,dualstack:T,s3:t,"s3-accesspoint":t,"s3-object-lambda":t,"s3-website":t,"aws-cloud9":O,cloud9:[0,{vfs:t}]}],"me-central-1":N,"me-south-1":j,"sa-east-1":A,"us-east-1":[2,{"execute-api":t,"emrappui-prod":t,"emrnotebooks-prod":t,"emrstudio-prod":t,dualstack:P,s3:t,"s3-accesspoint":t,"s3-accesspoint-fips":t,"s3-deprecated":t,"s3-fips":t,"s3-object-lambda":t,"s3-website":t,"analytics-gateway":t,"aws-cloud9":O,cloud9:k}],"us-east-2":L,"us-gov-east-1":I,"us-gov-west-1":I,"us-west-1":F,"us-west-2":L,compute:i,"compute-1":i,airflow:[0,{"af-south-1":i,"ap-east-1":i,"ap-northeast-1":i,"ap-northeast-2":i,"ap-northeast-3":i,"ap-south-1":i,"ap-south-2":i,"ap-southeast-1":i,"ap-southeast-2":i,"ap-southeast-3":i,"ap-southeast-4":i,"ap-southeast-5":i,"ap-southeast-7":i,"ca-central-1":i,"ca-west-1":i,"eu-central-1":i,"eu-central-2":i,"eu-north-1":i,"eu-south-1":i,"eu-south-2":i,"eu-west-1":i,"eu-west-2":i,"eu-west-3":i,"il-central-1":i,"me-central-1":i,"me-south-1":i,"sa-east-1":i,"us-east-1":i,"us-east-2":i,"us-west-1":i,"us-west-2":i}],rds:[0,{"af-south-1":i,"ap-east-1":i,"ap-east-2":i,"ap-northeast-1":i,"ap-northeast-2":i,"ap-northeast-3":i,"ap-south-1":i,"ap-south-2":i,"ap-southeast-1":i,"ap-southeast-2":i,"ap-southeast-3":i,"ap-southeast-4":i,"ap-southeast-5":i,"ap-southeast-6":i,"ap-southeast-7":i,"ca-central-1":i,"ca-west-1":i,"eu-central-1":i,"eu-central-2":i,"eu-west-1":i,"eu-west-2":i,"eu-west-3":i,"il-central-1":i,"me-central-1":i,"me-south-1":i,"mx-central-1":i,"sa-east-1":i,"us-east-1":i,"us-east-2":i,"us-gov-east-1":i,"us-gov-west-1":i,"us-northeast-1":i,"us-west-1":i,"us-west-2":i}],s3:t,"s3-1":t,"s3-ap-east-1":t,"s3-ap-northeast-1":t,"s3-ap-northeast-2":t,"s3-ap-northeast-3":t,"s3-ap-south-1":t,"s3-ap-southeast-1":t,"s3-ap-southeast-2":t,"s3-ca-central-1":t,"s3-eu-central-1":t,"s3-eu-north-1":t,"s3-eu-west-1":t,"s3-eu-west-2":t,"s3-eu-west-3":t,"s3-external-1":t,"s3-fips-us-gov-east-1":t,"s3-fips-us-gov-west-1":t,"s3-global":[0,{accesspoint:[0,{mrap:t}]}],"s3-me-south-1":t,"s3-sa-east-1":t,"s3-us-east-2":t,"s3-us-gov-east-1":t,"s3-us-gov-west-1":t,"s3-us-west-1":t,"s3-us-west-2":t,"s3-website-ap-northeast-1":t,"s3-website-ap-southeast-1":t,"s3-website-ap-southeast-2":t,"s3-website-eu-west-1":t,"s3-website-sa-east-1":t,"s3-website-us-east-1":t,"s3-website-us-gov-west-1":t,"s3-website-us-west-1":t,"s3-website-us-west-2":t,elb:i}],amazoncognito:[0,{"af-south-1":R,"ap-east-1":R,"ap-northeast-1":R,"ap-northeast-2":R,"ap-northeast-3":R,"ap-south-1":R,"ap-south-2":R,"ap-southeast-1":R,"ap-southeast-2":R,"ap-southeast-3":R,"ap-southeast-4":R,"ap-southeast-5":R,"ap-southeast-7":R,"ca-central-1":R,"ca-west-1":R,"eu-central-1":R,"eu-central-2":R,"eu-north-1":R,"eu-south-1":R,"eu-south-2":R,"eu-west-1":R,"eu-west-2":R,"eu-west-3":R,"il-central-1":R,"me-central-1":R,"me-south-1":R,"mx-central-1":R,"sa-east-1":R,"us-east-1":z,"us-east-2":z,"us-gov-east-1":ee,"us-gov-west-1":ee,"us-west-1":z,"us-west-2":z}],amplifyapp:t,awsapprunner:i,awsapps:t,elasticbeanstalk:[2,{"af-south-1":t,"ap-east-1":t,"ap-northeast-1":t,"ap-northeast-2":t,"ap-northeast-3":t,"ap-south-1":t,"ap-southeast-1":t,"ap-southeast-2":t,"ap-southeast-3":t,"ap-southeast-5":t,"ap-southeast-7":t,"ca-central-1":t,"eu-central-1":t,"eu-north-1":t,"eu-south-1":t,"eu-south-2":t,"eu-west-1":t,"eu-west-2":t,"eu-west-3":t,"il-central-1":t,"me-central-1":t,"me-south-1":t,"sa-east-1":t,"us-east-1":t,"us-east-2":t,"us-gov-east-1":t,"us-gov-west-1":t,"us-west-1":t,"us-west-2":t}],awsglobalaccelerator:t,siiites:t,appspacehosted:t,appspaceusercontent:t,"on-aptible":t,myasustor:t,"balena-devices":t,boutir:t,bplaced:t,cafjs:t,"canva-apps":t,"canva-hosted-embed":t,canvacode:t,"rice-labs":t,"cdn77-storage":t,br:t,cn:t,de:t,eu:t,jpn:t,mex:t,ru:t,sa:t,uk:t,us:t,za:t,"clever-cloud":[0,{services:i}],abrdns:t,dnsabr:t,"ip-ddns":t,jdevcloud:t,wpdevcloud:t,"cf-ipfs":t,"cloudflare-ipfs":t,trycloudflare:t,co:t,devinapps:i,builtwithdark:t,datadetect:[0,{demo:t,instance:t}],dattolocal:t,dattorelay:t,dattoweb:t,mydatto:t,digitaloceanspaces:i,discordsays:t,discordsez:t,drayddns:t,dreamhosters:t,durumis:t,blogdns:t,cechire:t,dnsalias:t,dnsdojo:t,doesntexist:t,dontexist:t,doomdns:t,"dyn-o-saur":t,dynalias:t,"dyndns-at-home":t,"dyndns-at-work":t,"dyndns-blog":t,"dyndns-free":t,"dyndns-home":t,"dyndns-ip":t,"dyndns-mail":t,"dyndns-office":t,"dyndns-pics":t,"dyndns-remote":t,"dyndns-server":t,"dyndns-web":t,"dyndns-wiki":t,"dyndns-work":t,"est-a-la-maison":t,"est-a-la-masion":t,"est-le-patron":t,"est-mon-blogueur":t,"from-ak":t,"from-al":t,"from-ar":t,"from-ca":t,"from-ct":t,"from-dc":t,"from-de":t,"from-fl":t,"from-ga":t,"from-hi":t,"from-ia":t,"from-id":t,"from-il":t,"from-in":t,"from-ks":t,"from-ky":t,"from-ma":t,"from-md":t,"from-mi":t,"from-mn":t,"from-mo":t,"from-ms":t,"from-mt":t,"from-nc":t,"from-nd":t,"from-ne":t,"from-nh":t,"from-nj":t,"from-nm":t,"from-nv":t,"from-oh":t,"from-ok":t,"from-or":t,"from-pa":t,"from-pr":t,"from-ri":t,"from-sc":t,"from-sd":t,"from-tn":t,"from-tx":t,"from-ut":t,"from-va":t,"from-vt":t,"from-wa":t,"from-wi":t,"from-wv":t,"from-wy":t,getmyip:t,gotdns:t,"hobby-site":t,homelinux:t,homeunix:t,iamallama:t,"is-a-anarchist":t,"is-a-blogger":t,"is-a-bookkeeper":t,"is-a-bulls-fan":t,"is-a-caterer":t,"is-a-chef":t,"is-a-conservative":t,"is-a-cpa":t,"is-a-cubicle-slave":t,"is-a-democrat":t,"is-a-designer":t,"is-a-doctor":t,"is-a-financialadvisor":t,"is-a-geek":t,"is-a-green":t,"is-a-guru":t,"is-a-hard-worker":t,"is-a-hunter":t,"is-a-landscaper":t,"is-a-lawyer":t,"is-a-liberal":t,"is-a-libertarian":t,"is-a-llama":t,"is-a-musician":t,"is-a-nascarfan":t,"is-a-nurse":t,"is-a-painter":t,"is-a-personaltrainer":t,"is-a-photographer":t,"is-a-player":t,"is-a-republican":t,"is-a-rockstar":t,"is-a-socialist":t,"is-a-student":t,"is-a-teacher":t,"is-a-techie":t,"is-a-therapist":t,"is-an-accountant":t,"is-an-actor":t,"is-an-actress":t,"is-an-anarchist":t,"is-an-artist":t,"is-an-engineer":t,"is-an-entertainer":t,"is-certified":t,"is-gone":t,"is-into-anime":t,"is-into-cars":t,"is-into-cartoons":t,"is-into-games":t,"is-leet":t,"is-not-certified":t,"is-slick":t,"is-uberleet":t,"is-with-theband":t,"isa-geek":t,"isa-hockeynut":t,issmarterthanyou:t,"likes-pie":t,likescandy:t,"neat-url":t,"saves-the-whales":t,selfip:t,"sells-for-less":t,"sells-for-u":t,servebbs:t,"simple-url":t,"space-to-rent":t,"teaches-yoga":t,writesthisblog:t,"1cooldns":t,bumbleshrimp:t,ddnsfree:t,ddnsgeek:t,ddnsguru:t,dynuddns:t,dynuhosting:t,giize:t,gleeze:t,kozow:t,loseyourip:t,ooguy:t,pivohosting:t,theworkpc:t,wiredbladehosting:t,emergentagent:[0,{preview:t}],mytuleap:t,"tuleap-partners":t,encoreapi:t,evennode:[0,{"eu-1":t,"eu-2":t,"eu-3":t,"eu-4":t,"us-1":t,"us-2":t,"us-3":t,"us-4":t}],onfabrica:t,"fastly-edge":t,"fastly-terrarium":t,"fastvps-server":t,mydobiss:t,firebaseapp:t,fldrv:t,framercanvas:t,"freebox-os":t,freeboxos:t,freemyip:t,aliases121:t,gentapps:t,gentlentapis:t,githubusercontent:t,"0emm":i,appspot:[2,{r:i}],blogspot:t,codespot:t,googleapis:t,googlecode:t,pagespeedmobilizer:t,withgoogle:t,withyoutube:t,grayjayleagues:t,hatenablog:t,hatenadiary:t,"hercules-app":t,"hercules-dev":t,herokuapp:t,gr:t,smushcdn:t,wphostedmail:t,wpmucdn:t,pixolino:t,"apps-1and1":t,"live-website":t,"webspace-host":t,dopaas:t,"hosted-by-previder":te,hosteur:[0,{"rag-cloud":t,"rag-cloud-ch":t}],"ik-server":[0,{jcloud:t,"jcloud-ver-jpc":t}],jelastic:[0,{demo:t}],massivegrid:te,wafaicloud:[0,{jed:t,ryd:t}],"eu1-plenit":t,"la1-plenit":t,"us1-plenit":t,webadorsite:t,"on-forge":t,"on-vapor":t,lpusercontent:t,linode:[0,{members:t,nodebalancer:i}],linodeobjects:i,linodeusercontent:[0,{ip:t}],localtonet:t,lovableproject:t,barsycenter:t,barsyonline:t,lutrausercontent:i,magicpatternsapp:t,modelscape:t,mwcloudnonprod:t,polyspace:t,miniserver:t,atmeta:t,fbsbx:B,meteorapp:V,routingthecloud:t,"same-app":t,"same-preview":t,mydbserver:t,mochausercontent:t,hostedpi:t,"mythic-beasts":[0,{caracal:t,customer:t,fentiger:t,lynx:t,ocelot:t,oncilla:t,onza:t,sphinx:t,vs:t,x:t,yali:t}],nospamproxy:[0,{cloud:[2,{o365:t}]}],"4u":t,nfshost:t,"3utilities":t,blogsyte:t,ciscofreak:t,damnserver:t,ddnsking:t,ditchyourip:t,dnsiskinky:t,dynns:t,geekgalaxy:t,"health-carereform":t,homesecuritymac:t,homesecuritypc:t,myactivedirectory:t,mysecuritycamera:t,myvnc:t,"net-freaks":t,onthewifi:t,point2this:t,quicksytes:t,securitytactics:t,servebeer:t,servecounterstrike:t,serveexchange:t,serveftp:t,servegame:t,servehalflife:t,servehttp:t,servehumour:t,serveirc:t,servemp3:t,servep2p:t,servepics:t,servequake:t,servesarcasm:t,stufftoread:t,unusualperson:t,workisboring:t,myiphost:t,observableusercontent:[0,{static:t}],simplesite:t,oaiusercontent:i,orsites:t,operaunite:t,"customer-oci":[0,{"*":t,oci:i,ocp:i,ocs:i}],oraclecloudapps:i,oraclegovcloudapps:i,"authgear-staging":t,authgearapps:t,outsystemscloud:t,ownprovider:t,pgfog:t,pagexl:t,gotpantheon:t,paywhirl:i,forgeblocks:t,upsunapp:t,"postman-echo":t,prgmr:[0,{xen:t}],"project-study":[0,{dev:t}],pythonanywhere:V,qa2:t,"alpha-myqnapcloud":t,"dev-myqnapcloud":t,mycloudnas:t,mynascloud:t,myqnapcloud:t,qualifioapp:t,ladesk:t,qualyhqpartner:i,qualyhqportal:i,qbuser:t,quipelements:i,rackmaze:t,"readthedocs-hosted":t,rhcloud:t,onrender:t,render:ne,"subsc-pay":t,"180r":t,dojin:t,sakuratan:t,sakuraweb:t,x0:t,code:[0,{builder:i,"dev-builder":i,"stg-builder":i}],salesforce:[0,{platform:[0,{"code-builder-stg":[0,{test:[0,{"001":i}]}]}]}],logoip:t,scrysec:t,"firewall-gateway":t,myshopblocks:t,myshopify:t,shopitsite:t,"1kapp":t,appchizi:t,applinzi:t,sinaapp:t,vipsinaapp:t,streamlitapp:t,"try-snowplow":t,"playstation-cloud":t,myspreadshop:t,"w-corp-staticblitz":t,"w-credentialless-staticblitz":t,"w-staticblitz":t,"stackhero-network":t,stdlib:[0,{api:t}],strapiapp:[2,{media:t}],"streak-link":t,streaklinks:t,streakusercontent:t,"temp-dns":t,dsmynas:t,familyds:t,mytabit:t,taveusercontent:t,"tb-hosting":re,reservd:t,thingdustdata:t,"townnews-staging":t,typeform:[0,{pro:t}],hk:t,it:t,"deus-canvas":t,vultrobjects:i,wafflecell:t,hotelwithflight:t,"reserve-online":t,cprapid:t,pleskns:t,remotewd:t,wiardweb:[0,{pages:t}],"drive-platform":t,"base44-sandbox":t,wixsite:t,wixstudio:t,messwithdns:t,"woltlab-demo":t,wpenginepowered:[2,{js:t}],xnbay:[2,{u2:t,"u2-local":t}],xtooldevice:t,yolasite:t}],coop:e,cr:[1,{ac:e,co:e,ed:e,fi:e,go:e,or:e,sa:e}],cu:[1,{com:e,edu:e,gob:e,inf:e,nat:e,net:e,org:e}],cv:[1,{com:e,edu:e,id:e,int:e,net:e,nome:e,org:e,publ:e}],cw:H,cx:[1,{gov:e,cloudns:t,ath:t,info:t,assessments:t,calculators:t,funnels:t,paynow:t,quizzes:t,researched:t,tests:t}],cy:[1,{ac:e,biz:e,com:[1,{scaleforce:ie}],ekloges:e,gov:e,ltd:e,mil:e,net:e,org:e,press:e,pro:e,tm:e}],cz:[1,{gov:e,contentproxy9:[0,{rsc:t}],realm:t,e4:t,co:t,metacentrum:[0,{cloud:i,custom:t}],muni:[0,{cloud:[0,{flt:t,usr:t}]}]}],de:[1,{bplaced:t,square7:t,"bwcloud-os-instance":i,com:t,cosidns:ae,dnsupdater:t,"dynamisches-dns":t,"internet-dns":t,"l-o-g-i-n":t,ddnss:[2,{dyn:t,dyndns:t}],"dyn-ip24":t,dyndns1:t,"home-webserver":[2,{dyn:t}],"myhome-server":t,dnshome:t,fuettertdasnetz:t,isteingeek:t,istmein:t,lebtimnetz:t,leitungsen:t,traeumtgerade:t,frusky:i,goip:t,"xn--gnstigbestellen-zvb":t,günstigbestellen:t,"xn--gnstigliefern-wob":t,günstigliefern:t,"hs-heilbronn":[0,{it:[0,{pages:t,"pages-research":t}]}],"dyn-berlin":t,"in-berlin":t,"in-brb":t,"in-butter":t,"in-dsl":t,"in-vpn":t,iservschule:t,"mein-iserv":t,schuldock:t,schulplattform:t,schulserver:t,"test-iserv":t,keymachine:t,co:t,"git-repos":t,"lcube-server":t,"svn-repos":t,barsy:t,webspaceconfig:t,"123webseite":t,rub:t,"ruhr-uni-bochum":[2,{noc:[0,{io:t}]}],logoip:t,"firewall-gateway":t,"my-gateway":t,"my-router":t,spdns:t,my:t,speedpartner:[0,{customer:t}],myspreadshop:t,"taifun-dns":t,"12hp":t,"2ix":t,"4lima":t,"lima-city":t,"virtual-user":t,virtualuser:t,"community-pro":t,diskussionsbereich:t,xenonconnect:i}],dj:e,dk:[1,{biz:t,co:t,firm:t,reg:t,store:t,"123hjemmeside":t,myspreadshop:t}],dm:se,do:[1,{art:e,com:e,edu:e,gob:e,gov:e,mil:e,net:e,org:e,sld:e,web:e}],dz:[1,{art:e,asso:e,com:e,edu:e,gov:e,net:e,org:e,pol:e,soc:e,tm:e}],ec:[1,{abg:e,adm:e,agron:e,arqt:e,art:e,bar:e,chef:e,com:e,cont:e,cpa:e,cue:e,dent:e,dgn:e,disco:e,doc:e,edu:e,eng:e,esm:e,fin:e,fot:e,gal:e,gob:e,gov:e,gye:e,ibr:e,info:e,k12:e,lat:e,loj:e,med:e,mil:e,mktg:e,mon:e,net:e,ntr:e,odont:e,org:e,pro:e,prof:e,psic:e,psiq:e,pub:e,rio:e,rrpp:e,sal:e,tech:e,tul:e,tur:e,uio:e,vet:e,xxx:e,base:t,official:t}],edu:[1,{rit:[0,{"git-pages":t}]}],ee:[1,{aip:e,com:e,edu:e,fie:e,gov:e,lib:e,med:e,org:e,pri:e,riik:e}],eg:[1,{ac:e,com:e,edu:e,eun:e,gov:e,info:e,me:e,mil:e,name:e,net:e,org:e,sci:e,sport:e,tv:e}],er:y,es:[1,{com:e,edu:e,gob:e,nom:e,org:e,"123miweb":t,myspreadshop:t}],et:[1,{biz:e,com:e,edu:e,gov:e,info:e,name:e,net:e,org:e}],eu:[1,{amazonwebservices:[0,{on:[0,{"eusc-de-east-1":[0,{"cognito-idp":R}]}]}],cloudns:t,prvw:t,deuxfleurs:t,dogado:[0,{jelastic:t}],barsy:t,spdns:t,nxa:i,directwp:t,transurl:i}],fi:[1,{aland:e,dy:t,"xn--hkkinen-5wa":t,häkkinen:t,iki:t,cloudplatform:[0,{fi:t}],datacenter:[0,{demo:t,paas:t}],kapsi:t,"123kotisivu":t,myspreadshop:t}],fj:[1,{ac:e,biz:e,com:e,edu:e,gov:e,id:e,info:e,mil:e,name:e,net:e,org:e,pro:e}],fk:y,fm:[1,{com:e,edu:e,net:e,org:e,radio:t,user:i}],fo:e,fr:[1,{asso:e,com:e,gouv:e,nom:e,prd:e,tm:e,avoues:e,cci:e,greta:e,"huissier-justice":e,"fbx-os":t,fbxos:t,"freebox-os":t,freeboxos:t,goupile:t,kdns:t,"123siteweb":t,"on-web":t,"chirurgiens-dentistes-en-france":t,dedibox:t,aeroport:t,avocat:t,chambagri:t,"chirurgiens-dentistes":t,"experts-comptables":t,medecin:t,notaires:t,pharmacien:t,port:t,veterinaire:t,myspreadshop:t,ynh:t}],ga:e,gb:e,gd:[1,{edu:e,gov:e}],ge:[1,{com:e,edu:e,gov:e,net:e,org:e,pvt:e,school:e}],gf:e,gg:[1,{co:e,net:e,org:e,ply:[0,{at:i,d6:t}],botdash:t,kaas:t,stackit:t,panel:[2,{daemon:t}]}],gh:[1,{biz:e,com:e,edu:e,gov:e,mil:e,net:e,org:e}],gi:[1,{com:e,edu:e,gov:e,ltd:e,mod:e,org:e}],gl:[1,{co:e,com:e,edu:e,net:e,org:e}],gm:e,gn:[1,{ac:e,com:e,edu:e,gov:e,net:e,org:e}],gov:e,gp:[1,{asso:e,com:e,edu:e,mobi:e,net:e,org:e}],gq:e,gr:[1,{com:e,edu:e,gov:e,net:e,org:e,barsy:t,simplesite:t}],gs:e,gt:[1,{com:e,edu:e,gob:e,ind:e,mil:e,net:e,org:e}],gu:[1,{com:e,edu:e,gov:e,guam:e,info:e,net:e,org:e,web:e}],gw:[1,{nx:t}],gy:se,hk:[1,{com:e,edu:e,gov:e,idv:e,net:e,org:e,"xn--ciqpn":e,个人:e,"xn--gmqw5a":e,個人:e,"xn--55qx5d":e,公司:e,"xn--mxtq1m":e,政府:e,"xn--lcvr32d":e,敎育:e,"xn--wcvs22d":e,教育:e,"xn--gmq050i":e,箇人:e,"xn--uc0atv":e,組織:e,"xn--uc0ay4a":e,組织:e,"xn--od0alg":e,網絡:e,"xn--zf0avx":e,網络:e,"xn--mk0axi":e,组織:e,"xn--tn0ag":e,组织:e,"xn--od0aq3b":e,网絡:e,"xn--io0a7i":e,网络:e,inc:t,ltd:t}],hm:e,hn:[1,{com:e,edu:e,gob:e,mil:e,net:e,org:e}],hr:[1,{com:e,from:e,iz:e,name:e,brendly:v}],ht:[1,{adult:e,art:e,asso:e,com:e,coop:e,edu:e,firm:e,gouv:e,info:e,med:e,net:e,org:e,perso:e,pol:e,pro:e,rel:e,shop:e,rt:t}],hu:[1,{2e3:e,agrar:e,bolt:e,casino:e,city:e,co:e,erotica:e,erotika:e,film:e,forum:e,games:e,hotel:e,info:e,ingatlan:e,jogasz:e,konyvelo:e,lakas:e,media:e,news:e,org:e,priv:e,reklam:e,sex:e,shop:e,sport:e,suli:e,szex:e,tm:e,tozsde:e,utazas:e,video:e}],id:[1,{ac:e,biz:e,co:e,desa:e,go:e,kop:e,mil:e,my:e,net:e,or:e,ponpes:e,sch:e,web:e,"xn--9tfky":e,ᬩᬮᬶ:e,e:t,zone:t}],ie:[1,{gov:e,myspreadshop:t}],il:[1,{ac:e,co:[1,{ravpage:t,mytabit:t,tabitorder:t}],gov:e,idf:e,k12:e,muni:e,net:e,org:e}],"xn--4dbrk0ce":[1,{"xn--4dbgdty6c":e,"xn--5dbhl8d":e,"xn--8dbq2a":e,"xn--hebda8b":e}],ישראל:[1,{אקדמיה:e,ישוב:e,צהל:e,ממשל:e}],im:[1,{ac:e,co:[1,{ltd:e,plc:e}],com:e,net:e,org:e,tt:e,tv:e}],in:[1,{"5g":e,"6g":e,ac:e,ai:e,am:e,bank:e,bihar:e,biz:e,business:e,ca:e,cn:e,co:e,com:e,coop:e,cs:e,delhi:e,dr:e,edu:e,er:e,fin:e,firm:e,gen:e,gov:e,gujarat:e,ind:e,info:e,int:e,internet:e,io:e,me:e,mil:e,net:e,nic:e,org:e,pg:e,post:e,pro:e,res:e,travel:e,tv:e,uk:e,up:e,us:e,cloudns:t,barsy:t,web:t,indevs:t,supabase:t}],info:[1,{cloudns:t,"dynamic-dns":t,"barrel-of-knowledge":t,"barrell-of-knowledge":t,dyndns:t,"for-our":t,"groks-the":t,"groks-this":t,"here-for-more":t,knowsitall:t,selfip:t,webhop:t,barsy:t,mayfirst:t,mittwald:t,mittwaldserver:t,typo3server:t,dvrcam:t,ilovecollege:t,"no-ip":t,forumz:t,nsupdate:t,dnsupdate:t,"v-info":t}],int:[1,{eu:e}],io:[1,{2038:t,co:e,com:e,edu:e,gov:e,mil:e,net:e,nom:e,org:e,"on-acorn":i,myaddr:t,apigee:t,"b-data":t,beagleboard:t,bitbucket:t,bluebite:t,boxfuse:t,brave:a,browsersafetymark:t,bubble:de,bubbleapps:t,bigv:[0,{uk0:t}],cleverapps:t,cloudbeesusercontent:t,dappnode:[0,{dyndns:t}],darklang:t,definima:t,dedyn:t,icp0:fe,icp1:fe,qzz:t,"fh-muenster":t,gitbook:t,github:t,gitlab:t,lolipop:t,"hasura-app":t,hostyhosting:t,hypernode:t,moonscale:i,beebyte:te,beebyteapp:[0,{sekd1:t}],jele:t,keenetic:t,kiloapps:t,webthings:t,loginline:t,barsy:t,azurecontainer:i,ngrok:[2,{ap:t,au:t,eu:t,in:t,jp:t,sa:t,us:t}],nodeart:[0,{stage:t}],pantheonsite:t,forgerock:[0,{id:t}],pstmn:[2,{mock:t}],protonet:t,qcx:[2,{sys:i}],qoto:t,vaporcloud:t,myrdbx:t,"rb-hosting":re,"on-k3s":i,"on-rio":i,readthedocs:t,resindevice:t,resinstaging:[0,{devices:t}],hzc:t,sandcats:t,scrypted:[0,{client:t}],"mo-siemens":t,lair:B,stolos:i,musician:t,utwente:t,edugit:t,telebit:t,thingdust:[0,{dev:pe,disrec:pe,prod:me,testing:pe}],tickets:t,webflow:t,webflowtest:t,"drive-platform":t,editorx:t,wixstudio:t,basicserver:t,virtualserver:t}],iq:r,ir:[1,{ac:e,co:e,gov:e,id:e,net:e,org:e,sch:e,"xn--mgba3a4f16a":e,ایران:e,"xn--mgba3a4fra":e,ايران:e,arvanedge:t,vistablog:t}],is:e,it:[1,{edu:e,gov:e,abr:e,abruzzo:e,"aosta-valley":e,aostavalley:e,bas:e,basilicata:e,cal:e,calabria:e,cam:e,campania:e,"emilia-romagna":e,emiliaromagna:e,emr:e,"friuli-v-giulia":e,"friuli-ve-giulia":e,"friuli-vegiulia":e,"friuli-venezia-giulia":e,"friuli-veneziagiulia":e,"friuli-vgiulia":e,"friuliv-giulia":e,"friulive-giulia":e,friulivegiulia:e,"friulivenezia-giulia":e,friuliveneziagiulia:e,friulivgiulia:e,fvg:e,laz:e,lazio:e,lig:e,liguria:e,lom:e,lombardia:e,lombardy:e,lucania:e,mar:e,marche:e,mol:e,molise:e,piedmont:e,piemonte:e,pmn:e,pug:e,puglia:e,sar:e,sardegna:e,sardinia:e,sic:e,sicilia:e,sicily:e,taa:e,tos:e,toscana:e,"trentin-sud-tirol":e,"xn--trentin-sd-tirol-rzb":e,"trentin-süd-tirol":e,"trentin-sudtirol":e,"xn--trentin-sdtirol-7vb":e,"trentin-südtirol":e,"trentin-sued-tirol":e,"trentin-suedtirol":e,trentino:e,"trentino-a-adige":e,"trentino-aadige":e,"trentino-alto-adige":e,"trentino-altoadige":e,"trentino-s-tirol":e,"trentino-stirol":e,"trentino-sud-tirol":e,"xn--trentino-sd-tirol-c3b":e,"trentino-süd-tirol":e,"trentino-sudtirol":e,"xn--trentino-sdtirol-szb":e,"trentino-südtirol":e,"trentino-sued-tirol":e,"trentino-suedtirol":e,"trentinoa-adige":e,trentinoaadige:e,"trentinoalto-adige":e,trentinoaltoadige:e,"trentinos-tirol":e,trentinostirol:e,"trentinosud-tirol":e,"xn--trentinosd-tirol-rzb":e,"trentinosüd-tirol":e,trentinosudtirol:e,"xn--trentinosdtirol-7vb":e,trentinosüdtirol:e,"trentinosued-tirol":e,trentinosuedtirol:e,"trentinsud-tirol":e,"xn--trentinsd-tirol-6vb":e,"trentinsüd-tirol":e,trentinsudtirol:e,"xn--trentinsdtirol-nsb":e,trentinsüdtirol:e,"trentinsued-tirol":e,trentinsuedtirol:e,tuscany:e,umb:e,umbria:e,"val-d-aosta":e,"val-daosta":e,"vald-aosta":e,valdaosta:e,"valle-aosta":e,"valle-d-aosta":e,"valle-daosta":e,valleaosta:e,"valled-aosta":e,valledaosta:e,"vallee-aoste":e,"xn--valle-aoste-ebb":e,"vallée-aoste":e,"vallee-d-aoste":e,"xn--valle-d-aoste-ehb":e,"vallée-d-aoste":e,valleeaoste:e,"xn--valleaoste-e7a":e,valléeaoste:e,valleedaoste:e,"xn--valledaoste-ebb":e,valléedaoste:e,vao:e,vda:e,ven:e,veneto:e,ag:e,agrigento:e,al:e,alessandria:e,"alto-adige":e,altoadige:e,an:e,ancona:e,"andria-barletta-trani":e,"andria-trani-barletta":e,andriabarlettatrani:e,andriatranibarletta:e,ao:e,aosta:e,aoste:e,ap:e,aq:e,aquila:e,ar:e,arezzo:e,"ascoli-piceno":e,ascolipiceno:e,asti:e,at:e,av:e,avellino:e,ba:e,balsan:e,"balsan-sudtirol":e,"xn--balsan-sdtirol-nsb":e,"balsan-südtirol":e,"balsan-suedtirol":e,bari:e,"barletta-trani-andria":e,barlettatraniandria:e,belluno:e,benevento:e,bergamo:e,bg:e,bi:e,biella:e,bl:e,bn:e,bo:e,bologna:e,bolzano:e,"bolzano-altoadige":e,bozen:e,"bozen-sudtirol":e,"xn--bozen-sdtirol-2ob":e,"bozen-südtirol":e,"bozen-suedtirol":e,br:e,brescia:e,brindisi:e,bs:e,bt:e,bulsan:e,"bulsan-sudtirol":e,"xn--bulsan-sdtirol-nsb":e,"bulsan-südtirol":e,"bulsan-suedtirol":e,bz:e,ca:e,cagliari:e,caltanissetta:e,"campidano-medio":e,campidanomedio:e,campobasso:e,"carbonia-iglesias":e,carboniaiglesias:e,"carrara-massa":e,carraramassa:e,caserta:e,catania:e,catanzaro:e,cb:e,ce:e,"cesena-forli":e,"xn--cesena-forl-mcb":e,"cesena-forlì":e,cesenaforli:e,"xn--cesenaforl-i8a":e,cesenaforlì:e,ch:e,chieti:e,ci:e,cl:e,cn:e,co:e,como:e,cosenza:e,cr:e,cremona:e,crotone:e,cs:e,ct:e,cuneo:e,cz:e,"dell-ogliastra":e,dellogliastra:e,en:e,enna:e,fc:e,fe:e,fermo:e,ferrara:e,fg:e,fi:e,firenze:e,florence:e,fm:e,foggia:e,"forli-cesena":e,"xn--forl-cesena-fcb":e,"forlì-cesena":e,forlicesena:e,"xn--forlcesena-c8a":e,forlìcesena:e,fr:e,frosinone:e,ge:e,genoa:e,genova:e,go:e,gorizia:e,gr:e,grosseto:e,"iglesias-carbonia":e,iglesiascarbonia:e,im:e,imperia:e,is:e,isernia:e,kr:e,"la-spezia":e,laquila:e,laspezia:e,latina:e,lc:e,le:e,lecce:e,lecco:e,li:e,livorno:e,lo:e,lodi:e,lt:e,lu:e,lucca:e,macerata:e,mantova:e,"massa-carrara":e,massacarrara:e,matera:e,mb:e,mc:e,me:e,"medio-campidano":e,mediocampidano:e,messina:e,mi:e,milan:e,milano:e,mn:e,mo:e,modena:e,monza:e,"monza-brianza":e,"monza-e-della-brianza":e,monzabrianza:e,monzaebrianza:e,monzaedellabrianza:e,ms:e,mt:e,na:e,naples:e,napoli:e,no:e,novara:e,nu:e,nuoro:e,og:e,ogliastra:e,"olbia-tempio":e,olbiatempio:e,or:e,oristano:e,ot:e,pa:e,padova:e,padua:e,palermo:e,parma:e,pavia:e,pc:e,pd:e,pe:e,perugia:e,"pesaro-urbino":e,pesarourbino:e,pescara:e,pg:e,pi:e,piacenza:e,pisa:e,pistoia:e,pn:e,po:e,pordenone:e,potenza:e,pr:e,prato:e,pt:e,pu:e,pv:e,pz:e,ra:e,ragusa:e,ravenna:e,rc:e,re:e,"reggio-calabria":e,"reggio-emilia":e,reggiocalabria:e,reggioemilia:e,rg:e,ri:e,rieti:e,rimini:e,rm:e,rn:e,ro:e,roma:e,rome:e,rovigo:e,sa:e,salerno:e,sassari:e,savona:e,si:e,siena:e,siracusa:e,so:e,sondrio:e,sp:e,sr:e,ss:e,"xn--sdtirol-n2a":e,südtirol:e,suedtirol:e,sv:e,ta:e,taranto:e,te:e,"tempio-olbia":e,tempioolbia:e,teramo:e,terni:e,tn:e,to:e,torino:e,tp:e,tr:e,"trani-andria-barletta":e,"trani-barletta-andria":e,traniandriabarletta:e,tranibarlettaandria:e,trapani:e,trento:e,treviso:e,trieste:e,ts:e,turin:e,tv:e,ud:e,udine:e,"urbino-pesaro":e,urbinopesaro:e,va:e,varese:e,vb:e,vc:e,ve:e,venezia:e,venice:e,verbania:e,vercelli:e,verona:e,vi:e,"vibo-valentia":e,vibovalentia:e,vicenza:e,viterbo:e,vr:e,vs:e,vt:e,vv:e,ibxos:t,iliadboxos:t,neen:[0,{jc:t}],"123homepage":t,"16-b":t,"32-b":t,"64-b":t,myspreadshop:t,syncloud:t}],je:[1,{co:e,net:e,org:e,of:t}],jm:y,jo:[1,{agri:e,ai:e,com:e,edu:e,eng:e,fm:e,gov:e,mil:e,net:e,org:e,per:e,phd:e,sch:e,tv:e}],jobs:e,jp:[1,{ac:e,ad:e,co:e,ed:e,go:e,gr:e,lg:e,ne:[1,{aseinet:le,gehirn:t,ivory:t,"mail-box":t,mints:t,mokuren:t,opal:t,sakura:t,sumomo:t,topaz:t}],or:e,aichi:[1,{aisai:e,ama:e,anjo:e,asuke:e,chiryu:e,chita:e,fuso:e,gamagori:e,handa:e,hazu:e,hekinan:e,higashiura:e,ichinomiya:e,inazawa:e,inuyama:e,isshiki:e,iwakura:e,kanie:e,kariya:e,kasugai:e,kira:e,kiyosu:e,komaki:e,konan:e,kota:e,mihama:e,miyoshi:e,nishio:e,nisshin:e,obu:e,oguchi:e,oharu:e,okazaki:e,owariasahi:e,seto:e,shikatsu:e,shinshiro:e,shitara:e,tahara:e,takahama:e,tobishima:e,toei:e,togo:e,tokai:e,tokoname:e,toyoake:e,toyohashi:e,toyokawa:e,toyone:e,toyota:e,tsushima:e,yatomi:e}],akita:[1,{akita:e,daisen:e,fujisato:e,gojome:e,hachirogata:e,happou:e,higashinaruse:e,honjo:e,honjyo:e,ikawa:e,kamikoani:e,kamioka:e,katagami:e,kazuno:e,kitaakita:e,kosaka:e,kyowa:e,misato:e,mitane:e,moriyoshi:e,nikaho:e,noshiro:e,odate:e,oga:e,ogata:e,semboku:e,yokote:e,yurihonjo:e}],aomori:[1,{aomori:e,gonohe:e,hachinohe:e,hashikami:e,hiranai:e,hirosaki:e,itayanagi:e,kuroishi:e,misawa:e,mutsu:e,nakadomari:e,noheji:e,oirase:e,owani:e,rokunohe:e,sannohe:e,shichinohe:e,shingo:e,takko:e,towada:e,tsugaru:e,tsuruta:e}],chiba:[1,{abiko:e,asahi:e,chonan:e,chosei:e,choshi:e,chuo:e,funabashi:e,futtsu:e,hanamigawa:e,ichihara:e,ichikawa:e,ichinomiya:e,inzai:e,isumi:e,kamagaya:e,kamogawa:e,kashiwa:e,katori:e,katsuura:e,kimitsu:e,kisarazu:e,kozaki:e,kujukuri:e,kyonan:e,matsudo:e,midori:e,mihama:e,minamiboso:e,mobara:e,mutsuzawa:e,nagara:e,nagareyama:e,narashino:e,narita:e,noda:e,oamishirasato:e,omigawa:e,onjuku:e,otaki:e,sakae:e,sakura:e,shimofusa:e,shirako:e,shiroi:e,shisui:e,sodegaura:e,sosa:e,tako:e,tateyama:e,togane:e,tohnosho:e,tomisato:e,urayasu:e,yachimata:e,yachiyo:e,yokaichiba:e,yokoshibahikari:e,yotsukaido:e}],ehime:[1,{ainan:e,honai:e,ikata:e,imabari:e,iyo:e,kamijima:e,kihoku:e,kumakogen:e,masaki:e,matsuno:e,matsuyama:e,namikata:e,niihama:e,ozu:e,saijo:e,seiyo:e,shikokuchuo:e,tobe:e,toon:e,uchiko:e,uwajima:e,yawatahama:e}],fukui:[1,{echizen:e,eiheiji:e,fukui:e,ikeda:e,katsuyama:e,mihama:e,minamiechizen:e,obama:e,ohi:e,ono:e,sabae:e,sakai:e,takahama:e,tsuruga:e,wakasa:e}],fukuoka:[1,{ashiya:e,buzen:e,chikugo:e,chikuho:e,chikujo:e,chikushino:e,chikuzen:e,chuo:e,dazaifu:e,fukuchi:e,hakata:e,higashi:e,hirokawa:e,hisayama:e,iizuka:e,inatsuki:e,kaho:e,kasuga:e,kasuya:e,kawara:e,keisen:e,koga:e,kurate:e,kurogi:e,kurume:e,minami:e,miyako:e,miyama:e,miyawaka:e,mizumaki:e,munakata:e,nakagawa:e,nakama:e,nishi:e,nogata:e,ogori:e,okagaki:e,okawa:e,oki:e,omuta:e,onga:e,onojo:e,oto:e,saigawa:e,sasaguri:e,shingu:e,shinyoshitomi:e,shonai:e,soeda:e,sue:e,tachiarai:e,tagawa:e,takata:e,toho:e,toyotsu:e,tsuiki:e,ukiha:e,umi:e,usui:e,yamada:e,yame:e,yanagawa:e,yukuhashi:e}],fukushima:[1,{aizubange:e,aizumisato:e,aizuwakamatsu:e,asakawa:e,bandai:e,date:e,fukushima:e,furudono:e,futaba:e,hanawa:e,higashi:e,hirata:e,hirono:e,iitate:e,inawashiro:e,ishikawa:e,iwaki:e,izumizaki:e,kagamiishi:e,kaneyama:e,kawamata:e,kitakata:e,kitashiobara:e,koori:e,koriyama:e,kunimi:e,miharu:e,mishima:e,namie:e,nango:e,nishiaizu:e,nishigo:e,okuma:e,omotego:e,ono:e,otama:e,samegawa:e,shimogo:e,shirakawa:e,showa:e,soma:e,sukagawa:e,taishin:e,tamakawa:e,tanagura:e,tenei:e,yabuki:e,yamato:e,yamatsuri:e,yanaizu:e,yugawa:e}],gifu:[1,{anpachi:e,ena:e,gifu:e,ginan:e,godo:e,gujo:e,hashima:e,hichiso:e,hida:e,higashishirakawa:e,ibigawa:e,ikeda:e,kakamigahara:e,kani:e,kasahara:e,kasamatsu:e,kawaue:e,kitagata:e,mino:e,minokamo:e,mitake:e,mizunami:e,motosu:e,nakatsugawa:e,ogaki:e,sakahogi:e,seki:e,sekigahara:e,shirakawa:e,tajimi:e,takayama:e,tarui:e,toki:e,tomika:e,wanouchi:e,yamagata:e,yaotsu:e,yoro:e}],gunma:[1,{annaka:e,chiyoda:e,fujioka:e,higashiagatsuma:e,isesaki:e,itakura:e,kanna:e,kanra:e,katashina:e,kawaba:e,kiryu:e,kusatsu:e,maebashi:e,meiwa:e,midori:e,minakami:e,naganohara:e,nakanojo:e,nanmoku:e,numata:e,oizumi:e,ora:e,ota:e,shibukawa:e,shimonita:e,shinto:e,showa:e,takasaki:e,takayama:e,tamamura:e,tatebayashi:e,tomioka:e,tsukiyono:e,tsumagoi:e,ueno:e,yoshioka:e}],hiroshima:[1,{asaminami:e,daiwa:e,etajima:e,fuchu:e,fukuyama:e,hatsukaichi:e,higashihiroshima:e,hongo:e,jinsekikogen:e,kaita:e,kui:e,kumano:e,kure:e,mihara:e,miyoshi:e,naka:e,onomichi:e,osakikamijima:e,otake:e,saka:e,sera:e,seranishi:e,shinichi:e,shobara:e,takehara:e}],hokkaido:[1,{abashiri:e,abira:e,aibetsu:e,akabira:e,akkeshi:e,asahikawa:e,ashibetsu:e,ashoro:e,assabu:e,atsuma:e,bibai:e,biei:e,bifuka:e,bihoro:e,biratori:e,chippubetsu:e,chitose:e,date:e,ebetsu:e,embetsu:e,eniwa:e,erimo:e,esan:e,esashi:e,fukagawa:e,fukushima:e,furano:e,furubira:e,haboro:e,hakodate:e,hamatonbetsu:e,hidaka:e,higashikagura:e,higashikawa:e,hiroo:e,hokuryu:e,hokuto:e,honbetsu:e,horokanai:e,horonobe:e,ikeda:e,imakane:e,ishikari:e,iwamizawa:e,iwanai:e,kamifurano:e,kamikawa:e,kamishihoro:e,kamisunagawa:e,kamoenai:e,kayabe:e,kembuchi:e,kikonai:e,kimobetsu:e,kitahiroshima:e,kitami:e,kiyosato:e,koshimizu:e,kunneppu:e,kuriyama:e,kuromatsunai:e,kushiro:e,kutchan:e,kyowa:e,mashike:e,matsumae:e,mikasa:e,minamifurano:e,mombetsu:e,moseushi:e,mukawa:e,muroran:e,naie:e,nakagawa:e,nakasatsunai:e,nakatombetsu:e,nanae:e,nanporo:e,nayoro:e,nemuro:e,niikappu:e,niki:e,nishiokoppe:e,noboribetsu:e,numata:e,obihiro:e,obira:e,oketo:e,okoppe:e,otaru:e,otobe:e,otofuke:e,otoineppu:e,oumu:e,ozora:e,pippu:e,rankoshi:e,rebun:e,rikubetsu:e,rishiri:e,rishirifuji:e,saroma:e,sarufutsu:e,shakotan:e,shari:e,shibecha:e,shibetsu:e,shikabe:e,shikaoi:e,shimamaki:e,shimizu:e,shimokawa:e,shinshinotsu:e,shintoku:e,shiranuka:e,shiraoi:e,shiriuchi:e,sobetsu:e,sunagawa:e,taiki:e,takasu:e,takikawa:e,takinoue:e,teshikaga:e,tobetsu:e,tohma:e,tomakomai:e,tomari:e,toya:e,toyako:e,toyotomi:e,toyoura:e,tsubetsu:e,tsukigata:e,urakawa:e,urausu:e,uryu:e,utashinai:e,wakkanai:e,wassamu:e,yakumo:e,yoichi:e}],hyogo:[1,{aioi:e,akashi:e,ako:e,amagasaki:e,aogaki:e,asago:e,ashiya:e,awaji:e,fukusaki:e,goshiki:e,harima:e,himeji:e,ichikawa:e,inagawa:e,itami:e,kakogawa:e,kamigori:e,kamikawa:e,kasai:e,kasuga:e,kawanishi:e,miki:e,minamiawaji:e,nishinomiya:e,nishiwaki:e,ono:e,sanda:e,sannan:e,sasayama:e,sayo:e,shingu:e,shinonsen:e,shiso:e,sumoto:e,taishi:e,taka:e,takarazuka:e,takasago:e,takino:e,tamba:e,tatsuno:e,toyooka:e,yabu:e,yashiro:e,yoka:e,yokawa:e}],ibaraki:[1,{ami:e,asahi:e,bando:e,chikusei:e,daigo:e,fujishiro:e,hitachi:e,hitachinaka:e,hitachiomiya:e,hitachiota:e,ibaraki:e,ina:e,inashiki:e,itako:e,iwama:e,joso:e,kamisu:e,kasama:e,kashima:e,kasumigaura:e,koga:e,miho:e,mito:e,moriya:e,naka:e,namegata:e,oarai:e,ogawa:e,omitama:e,ryugasaki:e,sakai:e,sakuragawa:e,shimodate:e,shimotsuma:e,shirosato:e,sowa:e,suifu:e,takahagi:e,tamatsukuri:e,tokai:e,tomobe:e,tone:e,toride:e,tsuchiura:e,tsukuba:e,uchihara:e,ushiku:e,yachiyo:e,yamagata:e,yawara:e,yuki:e}],ishikawa:[1,{anamizu:e,hakui:e,hakusan:e,kaga:e,kahoku:e,kanazawa:e,kawakita:e,komatsu:e,nakanoto:e,nanao:e,nomi:e,nonoichi:e,noto:e,shika:e,suzu:e,tsubata:e,tsurugi:e,uchinada:e,wajima:e}],iwate:[1,{fudai:e,fujisawa:e,hanamaki:e,hiraizumi:e,hirono:e,ichinohe:e,ichinoseki:e,iwaizumi:e,iwate:e,joboji:e,kamaishi:e,kanegasaki:e,karumai:e,kawai:e,kitakami:e,kuji:e,kunohe:e,kuzumaki:e,miyako:e,mizusawa:e,morioka:e,ninohe:e,noda:e,ofunato:e,oshu:e,otsuchi:e,rikuzentakata:e,shiwa:e,shizukuishi:e,sumita:e,tanohata:e,tono:e,yahaba:e,yamada:e}],kagawa:[1,{ayagawa:e,higashikagawa:e,kanonji:e,kotohira:e,manno:e,marugame:e,mitoyo:e,naoshima:e,sanuki:e,tadotsu:e,takamatsu:e,tonosho:e,uchinomi:e,utazu:e,zentsuji:e}],kagoshima:[1,{akune:e,amami:e,hioki:e,isa:e,isen:e,izumi:e,kagoshima:e,kanoya:e,kawanabe:e,kinko:e,kouyama:e,makurazaki:e,matsumoto:e,minamitane:e,nakatane:e,nishinoomote:e,satsumasendai:e,soo:e,tarumizu:e,yusui:e}],kanagawa:[1,{aikawa:e,atsugi:e,ayase:e,chigasaki:e,ebina:e,fujisawa:e,hadano:e,hakone:e,hiratsuka:e,isehara:e,kaisei:e,kamakura:e,kiyokawa:e,matsuda:e,minamiashigara:e,miura:e,nakai:e,ninomiya:e,odawara:e,oi:e,oiso:e,sagamihara:e,samukawa:e,tsukui:e,yamakita:e,yamato:e,yokosuka:e,yugawara:e,zama:e,zushi:e}],kochi:[1,{aki:e,geisei:e,hidaka:e,higashitsuno:e,ino:e,kagami:e,kami:e,kitagawa:e,kochi:e,mihara:e,motoyama:e,muroto:e,nahari:e,nakamura:e,nankoku:e,nishitosa:e,niyodogawa:e,ochi:e,okawa:e,otoyo:e,otsuki:e,sakawa:e,sukumo:e,susaki:e,tosa:e,tosashimizu:e,toyo:e,tsuno:e,umaji:e,yasuda:e,yusuhara:e}],kumamoto:[1,{amakusa:e,arao:e,aso:e,choyo:e,gyokuto:e,kamiamakusa:e,kikuchi:e,kumamoto:e,mashiki:e,mifune:e,minamata:e,minamioguni:e,nagasu:e,nishihara:e,oguni:e,ozu:e,sumoto:e,takamori:e,uki:e,uto:e,yamaga:e,yamato:e,yatsushiro:e}],kyoto:[1,{ayabe:e,fukuchiyama:e,higashiyama:e,ide:e,ine:e,joyo:e,kameoka:e,kamo:e,kita:e,kizu:e,kumiyama:e,kyotamba:e,kyotanabe:e,kyotango:e,maizuru:e,minami:e,minamiyamashiro:e,miyazu:e,muko:e,nagaokakyo:e,nakagyo:e,nantan:e,oyamazaki:e,sakyo:e,seika:e,tanabe:e,uji:e,ujitawara:e,wazuka:e,yamashina:e,yawata:e}],mie:[1,{asahi:e,inabe:e,ise:e,kameyama:e,kawagoe:e,kiho:e,kisosaki:e,kiwa:e,komono:e,kumano:e,kuwana:e,matsusaka:e,meiwa:e,mihama:e,minamiise:e,misugi:e,miyama:e,nabari:e,shima:e,suzuka:e,tado:e,taiki:e,taki:e,tamaki:e,toba:e,tsu:e,udono:e,ureshino:e,watarai:e,yokkaichi:e}],miyagi:[1,{furukawa:e,higashimatsushima:e,ishinomaki:e,iwanuma:e,kakuda:e,kami:e,kawasaki:e,marumori:e,matsushima:e,minamisanriku:e,misato:e,murata:e,natori:e,ogawara:e,ohira:e,onagawa:e,osaki:e,rifu:e,semine:e,shibata:e,shichikashuku:e,shikama:e,shiogama:e,shiroishi:e,tagajo:e,taiwa:e,tome:e,tomiya:e,wakuya:e,watari:e,yamamoto:e,zao:e}],miyazaki:[1,{aya:e,ebino:e,gokase:e,hyuga:e,kadogawa:e,kawaminami:e,kijo:e,kitagawa:e,kitakata:e,kitaura:e,kobayashi:e,kunitomi:e,kushima:e,mimata:e,miyakonojo:e,miyazaki:e,morotsuka:e,nichinan:e,nishimera:e,nobeoka:e,saito:e,shiiba:e,shintomi:e,takaharu:e,takanabe:e,takazaki:e,tsuno:e}],nagano:[1,{achi:e,agematsu:e,anan:e,aoki:e,asahi:e,azumino:e,chikuhoku:e,chikuma:e,chino:e,fujimi:e,hakuba:e,hara:e,hiraya:e,iida:e,iijima:e,iiyama:e,iizuna:e,ikeda:e,ikusaka:e,ina:e,karuizawa:e,kawakami:e,kiso:e,kisofukushima:e,kitaaiki:e,komagane:e,komoro:e,matsukawa:e,matsumoto:e,miasa:e,minamiaiki:e,minamimaki:e,minamiminowa:e,minowa:e,miyada:e,miyota:e,mochizuki:e,nagano:e,nagawa:e,nagiso:e,nakagawa:e,nakano:e,nozawaonsen:e,obuse:e,ogawa:e,okaya:e,omachi:e,omi:e,ookuwa:e,ooshika:e,otaki:e,otari:e,sakae:e,sakaki:e,saku:e,sakuho:e,shimosuwa:e,shinanomachi:e,shiojiri:e,suwa:e,suzaka:e,takagi:e,takamori:e,takayama:e,tateshina:e,tatsuno:e,togakushi:e,togura:e,tomi:e,ueda:e,wada:e,yamagata:e,yamanouchi:e,yasaka:e,yasuoka:e}],nagasaki:[1,{chijiwa:e,futsu:e,goto:e,hasami:e,hirado:e,iki:e,isahaya:e,kawatana:e,kuchinotsu:e,matsuura:e,nagasaki:e,obama:e,omura:e,oseto:e,saikai:e,sasebo:e,seihi:e,shimabara:e,shinkamigoto:e,togitsu:e,tsushima:e,unzen:e}],nara:[1,{ando:e,gose:e,heguri:e,higashiyoshino:e,ikaruga:e,ikoma:e,kamikitayama:e,kanmaki:e,kashiba:e,kashihara:e,katsuragi:e,kawai:e,kawakami:e,kawanishi:e,koryo:e,kurotaki:e,mitsue:e,miyake:e,nara:e,nosegawa:e,oji:e,ouda:e,oyodo:e,sakurai:e,sango:e,shimoichi:e,shimokitayama:e,shinjo:e,soni:e,takatori:e,tawaramoto:e,tenkawa:e,tenri:e,uda:e,yamatokoriyama:e,yamatotakada:e,yamazoe:e,yoshino:e}],niigata:[1,{aga:e,agano:e,gosen:e,itoigawa:e,izumozaki:e,joetsu:e,kamo:e,kariwa:e,kashiwazaki:e,minamiuonuma:e,mitsuke:e,muika:e,murakami:e,myoko:e,nagaoka:e,niigata:e,ojiya:e,omi:e,sado:e,sanjo:e,seiro:e,seirou:e,sekikawa:e,shibata:e,tagami:e,tainai:e,tochio:e,tokamachi:e,tsubame:e,tsunan:e,uonuma:e,yahiko:e,yoita:e,yuzawa:e}],oita:[1,{beppu:e,bungoono:e,bungotakada:e,hasama:e,hiji:e,himeshima:e,hita:e,kamitsue:e,kokonoe:e,kuju:e,kunisaki:e,kusu:e,oita:e,saiki:e,taketa:e,tsukumi:e,usa:e,usuki:e,yufu:e}],okayama:[1,{akaiwa:e,asakuchi:e,bizen:e,hayashima:e,ibara:e,kagamino:e,kasaoka:e,kibichuo:e,kumenan:e,kurashiki:e,maniwa:e,misaki:e,nagi:e,niimi:e,nishiawakura:e,okayama:e,satosho:e,setouchi:e,shinjo:e,shoo:e,soja:e,takahashi:e,tamano:e,tsuyama:e,wake:e,yakage:e}],okinawa:[1,{aguni:e,ginowan:e,ginoza:e,gushikami:e,haebaru:e,higashi:e,hirara:e,iheya:e,ishigaki:e,ishikawa:e,itoman:e,izena:e,kadena:e,kin:e,kitadaito:e,kitanakagusuku:e,kumejima:e,kunigami:e,minamidaito:e,motobu:e,nago:e,naha:e,nakagusuku:e,nakijin:e,nanjo:e,nishihara:e,ogimi:e,okinawa:e,onna:e,shimoji:e,taketomi:e,tarama:e,tokashiki:e,tomigusuku:e,tonaki:e,urasoe:e,uruma:e,yaese:e,yomitan:e,yonabaru:e,yonaguni:e,zamami:e}],osaka:[1,{abeno:e,chihayaakasaka:e,chuo:e,daito:e,fujiidera:e,habikino:e,hannan:e,higashiosaka:e,higashisumiyoshi:e,higashiyodogawa:e,hirakata:e,ibaraki:e,ikeda:e,izumi:e,izumiotsu:e,izumisano:e,kadoma:e,kaizuka:e,kanan:e,kashiwara:e,katano:e,kawachinagano:e,kishiwada:e,kita:e,kumatori:e,matsubara:e,minato:e,minoh:e,misaki:e,moriguchi:e,neyagawa:e,nishi:e,nose:e,osakasayama:e,sakai:e,sayama:e,sennan:e,settsu:e,shijonawate:e,shimamoto:e,suita:e,tadaoka:e,taishi:e,tajiri:e,takaishi:e,takatsuki:e,tondabayashi:e,toyonaka:e,toyono:e,yao:e}],saga:[1,{ariake:e,arita:e,fukudomi:e,genkai:e,hamatama:e,hizen:e,imari:e,kamimine:e,kanzaki:e,karatsu:e,kashima:e,kitagata:e,kitahata:e,kiyama:e,kouhoku:e,kyuragi:e,nishiarita:e,ogi:e,omachi:e,ouchi:e,saga:e,shiroishi:e,taku:e,tara:e,tosu:e,yoshinogari:e}],saitama:[1,{arakawa:e,asaka:e,chichibu:e,fujimi:e,fujimino:e,fukaya:e,hanno:e,hanyu:e,hasuda:e,hatogaya:e,hatoyama:e,hidaka:e,higashichichibu:e,higashimatsuyama:e,honjo:e,ina:e,iruma:e,iwatsuki:e,kamiizumi:e,kamikawa:e,kamisato:e,kasukabe:e,kawagoe:e,kawaguchi:e,kawajima:e,kazo:e,kitamoto:e,koshigaya:e,kounosu:e,kuki:e,kumagaya:e,matsubushi:e,minano:e,misato:e,miyashiro:e,miyoshi:e,moroyama:e,nagatoro:e,namegawa:e,niiza:e,ogano:e,ogawa:e,ogose:e,okegawa:e,omiya:e,otaki:e,ranzan:e,ryokami:e,saitama:e,sakado:e,satte:e,sayama:e,shiki:e,shiraoka:e,soka:e,sugito:e,toda:e,tokigawa:e,tokorozawa:e,tsurugashima:e,urawa:e,warabi:e,yashio:e,yokoze:e,yono:e,yorii:e,yoshida:e,yoshikawa:e,yoshimi:e}],shiga:[1,{aisho:e,gamo:e,higashiomi:e,hikone:e,koka:e,konan:e,kosei:e,koto:e,kusatsu:e,maibara:e,moriyama:e,nagahama:e,nishiazai:e,notogawa:e,omihachiman:e,otsu:e,ritto:e,ryuoh:e,takashima:e,takatsuki:e,torahime:e,toyosato:e,yasu:e}],shimane:[1,{akagi:e,ama:e,gotsu:e,hamada:e,higashiizumo:e,hikawa:e,hikimi:e,izumo:e,kakinoki:e,masuda:e,matsue:e,misato:e,nishinoshima:e,ohda:e,okinoshima:e,okuizumo:e,shimane:e,tamayu:e,tsuwano:e,unnan:e,yakumo:e,yasugi:e,yatsuka:e}],shizuoka:[1,{arai:e,atami:e,fuji:e,fujieda:e,fujikawa:e,fujinomiya:e,fukuroi:e,gotemba:e,haibara:e,hamamatsu:e,higashiizu:e,ito:e,iwata:e,izu:e,izunokuni:e,kakegawa:e,kannami:e,kawanehon:e,kawazu:e,kikugawa:e,kosai:e,makinohara:e,matsuzaki:e,minamiizu:e,mishima:e,morimachi:e,nishiizu:e,numazu:e,omaezaki:e,shimada:e,shimizu:e,shimoda:e,shizuoka:e,susono:e,yaizu:e,yoshida:e}],tochigi:[1,{ashikaga:e,bato:e,haga:e,ichikai:e,iwafune:e,kaminokawa:e,kanuma:e,karasuyama:e,kuroiso:e,mashiko:e,mibu:e,moka:e,motegi:e,nasu:e,nasushiobara:e,nikko:e,nishikata:e,nogi:e,ohira:e,ohtawara:e,oyama:e,sakura:e,sano:e,shimotsuke:e,shioya:e,takanezawa:e,tochigi:e,tsuga:e,ujiie:e,utsunomiya:e,yaita:e}],tokushima:[1,{aizumi:e,anan:e,ichiba:e,itano:e,kainan:e,komatsushima:e,matsushige:e,mima:e,minami:e,miyoshi:e,mugi:e,nakagawa:e,naruto:e,sanagochi:e,shishikui:e,tokushima:e,wajiki:e}],tokyo:[1,{adachi:e,akiruno:e,akishima:e,aogashima:e,arakawa:e,bunkyo:e,chiyoda:e,chofu:e,chuo:e,edogawa:e,fuchu:e,fussa:e,hachijo:e,hachioji:e,hamura:e,higashikurume:e,higashimurayama:e,higashiyamato:e,hino:e,hinode:e,hinohara:e,inagi:e,itabashi:e,katsushika:e,kita:e,kiyose:e,kodaira:e,koganei:e,kokubunji:e,komae:e,koto:e,kouzushima:e,kunitachi:e,machida:e,meguro:e,minato:e,mitaka:e,mizuho:e,musashimurayama:e,musashino:e,nakano:e,nerima:e,ogasawara:e,okutama:e,ome:e,oshima:e,ota:e,setagaya:e,shibuya:e,shinagawa:e,shinjuku:e,suginami:e,sumida:e,tachikawa:e,taito:e,tama:e,toshima:e}],tottori:[1,{chizu:e,hino:e,kawahara:e,koge:e,kotoura:e,misasa:e,nanbu:e,nichinan:e,sakaiminato:e,tottori:e,wakasa:e,yazu:e,yonago:e}],toyama:[1,{asahi:e,fuchu:e,fukumitsu:e,funahashi:e,himi:e,imizu:e,inami:e,johana:e,kamiichi:e,kurobe:e,nakaniikawa:e,namerikawa:e,nanto:e,nyuzen:e,oyabe:e,taira:e,takaoka:e,tateyama:e,toga:e,tonami:e,toyama:e,unazuki:e,uozu:e,yamada:e}],wakayama:[1,{arida:e,aridagawa:e,gobo:e,hashimoto:e,hidaka:e,hirogawa:e,inami:e,iwade:e,kainan:e,kamitonda:e,katsuragi:e,kimino:e,kinokawa:e,kitayama:e,koya:e,koza:e,kozagawa:e,kudoyama:e,kushimoto:e,mihama:e,misato:e,nachikatsuura:e,shingu:e,shirahama:e,taiji:e,tanabe:e,wakayama:e,yuasa:e,yura:e}],yamagata:[1,{asahi:e,funagata:e,higashine:e,iide:e,kahoku:e,kaminoyama:e,kaneyama:e,kawanishi:e,mamurogawa:e,mikawa:e,murayama:e,nagai:e,nakayama:e,nanyo:e,nishikawa:e,obanazawa:e,oe:e,oguni:e,ohkura:e,oishida:e,sagae:e,sakata:e,sakegawa:e,shinjo:e,shirataka:e,shonai:e,takahata:e,tendo:e,tozawa:e,tsuruoka:e,yamagata:e,yamanobe:e,yonezawa:e,yuza:e}],yamaguchi:[1,{abu:e,hagi:e,hikari:e,hofu:e,iwakuni:e,kudamatsu:e,mitou:e,nagato:e,oshima:e,shimonoseki:e,shunan:e,tabuse:e,tokuyama:e,toyota:e,ube:e,yuu:e}],yamanashi:[1,{chuo:e,doshi:e,fuefuki:e,fujikawa:e,fujikawaguchiko:e,fujiyoshida:e,hayakawa:e,hokuto:e,ichikawamisato:e,kai:e,kofu:e,koshu:e,kosuge:e,"minami-alps":e,minobu:e,nakamichi:e,nanbu:e,narusawa:e,nirasaki:e,nishikatsura:e,oshino:e,otsuki:e,showa:e,tabayama:e,tsuru:e,uenohara:e,yamanakako:e,yamanashi:e}],"xn--ehqz56n":e,三重:e,"xn--1lqs03n":e,京都:e,"xn--qqqt11m":e,佐賀:e,"xn--f6qx53a":e,兵庫:e,"xn--djrs72d6uy":e,北海道:e,"xn--mkru45i":e,千葉:e,"xn--0trq7p7nn":e,和歌山:e,"xn--5js045d":e,埼玉:e,"xn--kbrq7o":e,大分:e,"xn--pssu33l":e,大阪:e,"xn--ntsq17g":e,奈良:e,"xn--uisz3g":e,宮城:e,"xn--6btw5a":e,宮崎:e,"xn--1ctwo":e,富山:e,"xn--6orx2r":e,山口:e,"xn--rht61e":e,山形:e,"xn--rht27z":e,山梨:e,"xn--nit225k":e,岐阜:e,"xn--rht3d":e,岡山:e,"xn--djty4k":e,岩手:e,"xn--klty5x":e,島根:e,"xn--kltx9a":e,広島:e,"xn--kltp7d":e,徳島:e,"xn--c3s14m":e,愛媛:e,"xn--vgu402c":e,愛知:e,"xn--efvn9s":e,新潟:e,"xn--1lqs71d":e,東京:e,"xn--4pvxs":e,栃木:e,"xn--uuwu58a":e,沖縄:e,"xn--zbx025d":e,滋賀:e,"xn--8pvr4u":e,熊本:e,"xn--5rtp49c":e,石川:e,"xn--ntso0iqx3a":e,神奈川:e,"xn--elqq16h":e,福井:e,"xn--4it168d":e,福岡:e,"xn--klt787d":e,福島:e,"xn--rny31h":e,秋田:e,"xn--7t0a264c":e,群馬:e,"xn--uist22h":e,茨城:e,"xn--8ltr62k":e,長崎:e,"xn--2m4a15e":e,長野:e,"xn--32vp30h":e,青森:e,"xn--4it797k":e,静岡:e,"xn--5rtq34k":e,香川:e,"xn--k7yn95e":e,高知:e,"xn--tor131o":e,鳥取:e,"xn--d5qv7z876c":e,鹿児島:e,kawasaki:y,kitakyushu:y,kobe:y,nagoya:y,sapporo:y,sendai:y,yokohama:y,buyshop:t,fashionstore:t,handcrafted:t,kawaiishop:t,supersale:t,theshop:t,"0am":t,"0g0":t,"0j0":t,"0t0":t,mydns:t,pgw:t,wjg:t,usercontent:t,angry:t,babyblue:t,babymilk:t,backdrop:t,bambina:t,bitter:t,blush:t,boo:t,boy:t,boyfriend:t,but:t,candypop:t,capoo:t,catfood:t,cheap:t,chicappa:t,chillout:t,chips:t,chowder:t,chu:t,ciao:t,cocotte:t,coolblog:t,cranky:t,cutegirl:t,daa:t,deca:t,deci:t,digick:t,egoism:t,fakefur:t,fem:t,flier:t,floppy:t,fool:t,frenchkiss:t,girlfriend:t,girly:t,gloomy:t,gonna:t,greater:t,hacca:t,heavy:t,her:t,hiho:t,hippy:t,holy:t,hungry:t,icurus:t,itigo:t,jellybean:t,kikirara:t,kill:t,kilo:t,kuron:t,littlestar:t,lolipopmc:t,lolitapunk:t,lomo:t,lovepop:t,lovesick:t,main:t,mods:t,mond:t,mongolian:t,moo:t,namaste:t,nikita:t,nobushi:t,noor:t,oops:t,parallel:t,parasite:t,pecori:t,peewee:t,penne:t,pepper:t,perma:t,pigboat:t,pinoko:t,punyu:t,pupu:t,pussycat:t,pya:t,raindrop:t,readymade:t,sadist:t,schoolbus:t,secret:t,staba:t,stripper:t,sub:t,sunnyday:t,thick:t,tonkotsu:t,under:t,upper:t,velvet:t,verse:t,versus:t,vivian:t,watson:t,weblike:t,whitesnow:t,zombie:t,hateblo:t,hatenablog:t,hatenadiary:t,"2-d":t,bona:t,crap:t,daynight:t,eek:t,flop:t,halfmoon:t,jeez:t,matrix:t,mimoza:t,netgamers:t,nyanta:t,o0o0:t,rdy:t,rgr:t,rulez:t,sakurastorage:[0,{isk01:he,isk02:he}],saloon:t,sblo:t,skr:t,tank:t,"uh-oh":t,undo:t,webaccel:[0,{rs:t,user:t}],websozai:t,xii:t}],ke:[1,{ac:e,co:e,go:e,info:e,me:e,mobi:e,ne:e,or:e,sc:e}],kg:[1,{com:e,edu:e,gov:e,mil:e,net:e,org:e,us:t,xx:t,ae:t}],kh:n,ki:ge,km:[1,{ass:e,com:e,edu:e,gov:e,mil:e,nom:e,org:e,prd:e,tm:e,asso:e,coop:e,gouv:e,medecin:e,notaires:e,pharmaciens:e,presse:e,veterinaire:e}],kn:[1,{edu:e,gov:e,net:e,org:e}],kp:[1,{com:e,edu:e,gov:e,org:e,rep:e,tra:e}],kr:[1,{ac:e,ai:e,co:e,es:e,go:e,hs:e,io:e,it:e,kg:e,me:e,mil:e,ms:e,ne:e,or:e,pe:e,re:e,sc:e,busan:e,chungbuk:e,chungnam:e,daegu:e,daejeon:e,gangwon:e,gwangju:e,gyeongbuk:e,gyeonggi:e,gyeongnam:e,incheon:e,jeju:e,jeonbuk:e,jeonnam:e,seoul:e,ulsan:e,c01:t,"eliv-api":t,"eliv-cdn":t,"eliv-dns":t,mmv:t,vki:t}],kw:[1,{com:e,edu:e,emb:e,gov:e,ind:e,net:e,org:e}],ky:H,kz:[1,{com:e,edu:e,gov:e,mil:e,net:e,org:e,jcloud:t}],la:[1,{com:e,edu:e,gov:e,info:e,int:e,net:e,org:e,per:e,bnr:t}],lb:n,lc:[1,{co:e,com:e,edu:e,gov:e,net:e,org:e,oy:t}],li:e,lk:[1,{ac:e,assn:e,com:e,edu:e,gov:e,grp:e,hotel:e,int:e,ltd:e,net:e,ngo:e,org:e,sch:e,soc:e,web:e}],lr:n,ls:[1,{ac:e,biz:e,co:e,edu:e,gov:e,info:e,net:e,org:e,sc:e}],lt:c,lu:[1,{"123website":t}],lv:[1,{asn:e,com:e,conf:e,edu:e,gov:e,id:e,mil:e,net:e,org:e}],ly:[1,{com:e,edu:e,gov:e,id:e,med:e,net:e,org:e,plc:e,sch:e}],ma:[1,{ac:e,co:e,gov:e,net:e,org:e,press:e}],mc:[1,{asso:e,tm:e}],md:[1,{ir:t}],me:[1,{ac:e,co:e,edu:e,gov:e,its:e,net:e,org:e,priv:e,c66:t,craft:t,edgestack:t,mybox:t,filegear:t,"filegear-sg":t,lohmus:t,barsy:t,mcdir:t,brasilia:t,ddns:t,dnsfor:t,hopto:t,loginto:t,noip:t,webhop:t,soundcast:t,tcp4:t,vp4:t,diskstation:t,dscloud:t,i234:t,myds:t,synology:t,transip:re,nohost:t}],mg:[1,{co:e,com:e,edu:e,gov:e,mil:e,nom:e,org:e,prd:e}],mh:e,mil:e,mk:[1,{com:e,edu:e,gov:e,inf:e,name:e,net:e,org:e}],ml:[1,{ac:e,art:e,asso:e,com:e,edu:e,gouv:e,gov:e,info:e,inst:e,net:e,org:e,pr:e,presse:e}],mm:y,mn:[1,{edu:e,gov:e,org:e,nyc:t}],mo:n,mobi:[1,{barsy:t,dscloud:t}],mp:[1,{ju:t}],mq:e,mr:c,ms:[1,{com:e,edu:e,gov:e,net:e,org:e,minisite:t}],mt:H,mu:[1,{ac:e,co:e,com:e,gov:e,net:e,or:e,org:e}],museum:e,mv:[1,{aero:e,biz:e,com:e,coop:e,edu:e,gov:e,info:e,int:e,mil:e,museum:e,name:e,net:e,org:e,pro:e}],mw:[1,{ac:e,biz:e,co:e,com:e,coop:e,edu:e,gov:e,int:e,net:e,org:e}],mx:[1,{com:e,edu:e,gob:e,net:e,org:e}],my:[1,{biz:e,com:e,edu:e,gov:e,mil:e,name:e,net:e,org:e}],mz:[1,{ac:e,adv:e,co:e,edu:e,gov:e,mil:e,net:e,org:e}],na:[1,{alt:e,co:e,com:e,gov:e,net:e,org:e}],name:[1,{her:ye,his:ye,ispmanager:t,keenetic:t}],nc:[1,{asso:e,nom:e}],ne:e,net:[1,{adobeaemcloud:t,"adobeio-static":t,adobeioruntime:t,akadns:t,akamai:t,"akamai-staging":t,akamaiedge:t,"akamaiedge-staging":t,akamaihd:t,"akamaihd-staging":t,akamaiorigin:t,"akamaiorigin-staging":t,akamaized:t,"akamaized-staging":t,edgekey:t,"edgekey-staging":t,edgesuite:t,"edgesuite-staging":t,alwaysdata:t,myamaze:t,cloudfront:t,appudo:t,"atlassian-dev":[0,{prod:de}],myfritz:t,shopselect:t,blackbaudcdn:t,boomla:t,bplaced:t,square7:t,cdn77:[0,{r:t}],"cdn77-ssl":t,gb:t,hu:t,jp:t,se:t,uk:t,clickrising:t,"ddns-ip":t,"dns-cloud":t,"dns-dynamic":t,cloudaccess:t,cloudflare:[2,{cdn:t}],cloudflareanycast:de,cloudflarecn:de,cloudflareglobal:de,ctfcloud:t,"feste-ip":t,"knx-server":t,"static-access":t,cryptonomic:i,dattolocal:t,mydatto:t,debian:t,definima:t,deno:[2,{sandbox:t}],icp:i,de5:t,"at-band-camp":t,blogdns:t,"broke-it":t,buyshouses:t,dnsalias:t,dnsdojo:t,"does-it":t,dontexist:t,dynalias:t,dynathome:t,endofinternet:t,"from-az":t,"from-co":t,"from-la":t,"from-ny":t,"gets-it":t,"ham-radio-op":t,homeftp:t,homeip:t,homelinux:t,homeunix:t,"in-the-band":t,"is-a-chef":t,"is-a-geek":t,"isa-geek":t,"kicks-ass":t,"office-on-the":t,podzone:t,"scrapper-site":t,selfip:t,"sells-it":t,servebbs:t,serveftp:t,thruhere:t,webhop:t,casacam:t,dynu:t,dynuddns:t,mysynology:t,opik:t,spryt:t,dynv6:t,twmail:t,ru:t,channelsdvr:[2,{u:t}],fastly:[0,{freetls:t,map:t,prod:[0,{a:t,global:t}],ssl:[0,{a:t,b:t,global:t}]}],fastlylb:[2,{map:t}],"keyword-on":t,"live-on":t,"server-on":t,"cdn-edges":t,heteml:t,cloudfunctions:t,"grafana-dev":t,iobb:t,moonscale:t,"in-dsl":t,"in-vpn":t,oninferno:t,botdash:t,"apps-1and1":t,ipifony:t,cloudjiffy:[2,{"fra1-de":t,"west1-us":t}],elastx:[0,{"jls-sto1":t,"jls-sto2":t,"jls-sto3":t}],massivegrid:[0,{paas:[0,{"fr-1":t,"lon-1":t,"lon-2":t,"ny-1":t,"ny-2":t,"sg-1":t}]}],saveincloud:[0,{jelastic:t,"nordeste-idc":t}],scaleforce:ie,kinghost:t,uni5:t,krellian:t,ggff:t,localto:i,barsy:t,luyani:t,memset:t,"azure-api":t,"azure-mobile":t,azureedge:t,azurefd:t,azurestaticapps:[2,{1:t,2:t,3:t,4:t,5:t,6:t,7:t,centralus:t,eastasia:t,eastus2:t,westeurope:t,westus2:t}],azurewebsites:t,cloudapp:t,trafficmanager:t,usgovcloudapi:be,usgovcloudapp:t,usgovtrafficmanager:t,windows:be,mynetname:[0,{sn:t}],routingthecloud:t,bounceme:t,ddns:t,"eating-organic":t,mydissent:t,myeffect:t,mymediapc:t,mypsx:t,mysecuritycamera:t,nhlfan:t,"no-ip":t,pgafan:t,privatizehealthinsurance:t,redirectme:t,serveblog:t,serveminecraft:t,sytes:t,dnsup:t,hicam:t,"now-dns":t,ownip:t,vpndns:t,cloudycluster:t,ovh:[0,{hosting:i,webpaas:i}],rackmaze:t,myradweb:t,in:t,"subsc-pay":t,squares:t,schokokeks:t,"firewall-gateway":t,seidat:t,senseering:t,siteleaf:t,mafelo:t,myspreadshop:t,"vps-host":[2,{jelastic:[0,{atl:t,njs:t,ric:t}]}],srcf:[0,{soc:t,user:t}],supabase:t,dsmynas:t,familyds:t,ts:[2,{c:i}],torproject:[2,{pages:t}],tunnelmole:t,vusercontent:t,"reserve-online":t,localcert:t,"community-pro":t,meinforum:t,yandexcloud:[2,{storage:t,website:t}],za:t,zabc:t}],nf:[1,{arts:e,com:e,firm:e,info:e,net:e,other:e,per:e,rec:e,store:e,web:e}],ng:[1,{com:e,edu:e,gov:e,i:e,mil:e,mobi:e,name:e,net:e,org:e,sch:e,biz:[2,{co:t,dl:t,go:t,lg:t,on:t}],col:t,firm:t,gen:t,ltd:t,ngo:t,plc:t}],ni:[1,{ac:e,biz:e,co:e,com:e,edu:e,gob:e,in:e,info:e,int:e,mil:e,net:e,nom:e,org:e,web:e}],nl:[1,{co:t,"hosting-cluster":t,gov:t,khplay:t,"123website":t,myspreadshop:t,transurl:i,cistron:t,demon:t}],no:[1,{fhs:e,folkebibl:e,fylkesbibl:e,idrett:e,museum:e,priv:e,vgs:e,dep:e,herad:e,kommune:e,mil:e,stat:e,aa:U,ah:U,bu:U,fm:U,hl:U,hm:U,"jan-mayen":U,mr:U,nl:U,nt:U,of:U,ol:U,oslo:U,rl:U,sf:U,st:U,svalbard:U,tm:U,tr:U,va:U,vf:U,akrehamn:e,"xn--krehamn-dxa":e,åkrehamn:e,algard:e,"xn--lgrd-poac":e,ålgård:e,arna:e,bronnoysund:e,"xn--brnnysund-m8ac":e,brønnøysund:e,brumunddal:e,bryne:e,drobak:e,"xn--drbak-wua":e,drøbak:e,egersund:e,fetsund:e,floro:e,"xn--flor-jra":e,florø:e,fredrikstad:e,hokksund:e,honefoss:e,"xn--hnefoss-q1a":e,hønefoss:e,jessheim:e,jorpeland:e,"xn--jrpeland-54a":e,jørpeland:e,kirkenes:e,kopervik:e,krokstadelva:e,langevag:e,"xn--langevg-jxa":e,langevåg:e,leirvik:e,mjondalen:e,"xn--mjndalen-64a":e,mjøndalen:e,"mo-i-rana":e,mosjoen:e,"xn--mosjen-eya":e,mosjøen:e,nesoddtangen:e,orkanger:e,osoyro:e,"xn--osyro-wua":e,osøyro:e,raholt:e,"xn--rholt-mra":e,råholt:e,sandnessjoen:e,"xn--sandnessjen-ogb":e,sandnessjøen:e,skedsmokorset:e,slattum:e,spjelkavik:e,stathelle:e,stavern:e,stjordalshalsen:e,"xn--stjrdalshalsen-sqb":e,stjørdalshalsen:e,tananger:e,tranby:e,vossevangen:e,aarborte:e,aejrie:e,afjord:e,"xn--fjord-lra":e,åfjord:e,agdenes:e,akershus:xe,aknoluokta:e,"xn--koluokta-7ya57h":e,ákŋoluokta:e,al:e,"xn--l-1fa":e,ål:e,alaheadju:e,"xn--laheadju-7ya":e,álaheadju:e,alesund:e,"xn--lesund-hua":e,ålesund:e,alstahaug:e,alta:e,"xn--lt-liac":e,áltá:e,alvdal:e,amli:e,"xn--mli-tla":e,åmli:e,amot:e,"xn--mot-tla":e,åmot:e,andasuolo:e,andebu:e,andoy:e,"xn--andy-ira":e,andøy:e,ardal:e,"xn--rdal-poa":e,årdal:e,aremark:e,arendal:e,"xn--s-1fa":e,ås:e,aseral:e,"xn--seral-lra":e,åseral:e,asker:e,askim:e,askoy:e,"xn--asky-ira":e,askøy:e,askvoll:e,asnes:e,"xn--snes-poa":e,åsnes:e,audnedaln:e,aukra:e,aure:e,aurland:e,"aurskog-holand":e,"xn--aurskog-hland-jnb":e,"aurskog-høland":e,austevoll:e,austrheim:e,averoy:e,"xn--avery-yua":e,averøy:e,badaddja:e,"xn--bdddj-mrabd":e,bådåddjå:e,"xn--brum-voa":e,bærum:e,bahcavuotna:e,"xn--bhcavuotna-s4a":e,báhcavuotna:e,bahccavuotna:e,"xn--bhccavuotna-k7a":e,báhccavuotna:e,baidar:e,"xn--bidr-5nac":e,báidár:e,bajddar:e,"xn--bjddar-pta":e,bájddar:e,balat:e,"xn--blt-elab":e,bálát:e,balestrand:e,ballangen:e,balsfjord:e,bamble:e,bardu:e,barum:e,batsfjord:e,"xn--btsfjord-9za":e,båtsfjord:e,bearalvahki:e,"xn--bearalvhki-y4a":e,bearalváhki:e,beardu:e,beiarn:e,berg:e,bergen:e,berlevag:e,"xn--berlevg-jxa":e,berlevåg:e,bievat:e,"xn--bievt-0qa":e,bievát:e,bindal:e,birkenes:e,bjerkreim:e,bjugn:e,bodo:e,"xn--bod-2na":e,bodø:e,bokn:e,bomlo:e,"xn--bmlo-gra":e,bømlo:e,bremanger:e,bronnoy:e,"xn--brnny-wuac":e,brønnøy:e,budejju:e,buskerud:xe,bygland:e,bykle:e,cahcesuolo:e,"xn--hcesuolo-7ya35b":e,čáhcesuolo:e,davvenjarga:e,"xn--davvenjrga-y4a":e,davvenjárga:e,davvesiida:e,deatnu:e,dielddanuorri:e,divtasvuodna:e,divttasvuotna:e,donna:e,"xn--dnna-gra":e,dønna:e,dovre:e,drammen:e,drangedal:e,dyroy:e,"xn--dyry-ira":e,dyrøy:e,eid:e,eidfjord:e,eidsberg:e,eidskog:e,eidsvoll:e,eigersund:e,elverum:e,enebakk:e,engerdal:e,etne:e,etnedal:e,evenassi:e,"xn--eveni-0qa01ga":e,evenášši:e,evenes:e,"evje-og-hornnes":e,farsund:e,fauske:e,fedje:e,fet:e,finnoy:e,"xn--finny-yua":e,finnøy:e,fitjar:e,fjaler:e,fjell:e,fla:e,"xn--fl-zia":e,flå:e,flakstad:e,flatanger:e,flekkefjord:e,flesberg:e,flora:e,folldal:e,forde:e,"xn--frde-gra":e,førde:e,forsand:e,fosnes:e,"xn--frna-woa":e,fræna:e,frana:e,frei:e,frogn:e,froland:e,frosta:e,froya:e,"xn--frya-hra":e,frøya:e,fuoisku:e,fuossko:e,fusa:e,fyresdal:e,gaivuotna:e,"xn--givuotna-8ya":e,gáivuotna:e,galsa:e,"xn--gls-elac":e,gálsá:e,gamvik:e,gangaviika:e,"xn--ggaviika-8ya47h":e,gáŋgaviika:e,gaular:e,gausdal:e,giehtavuoatna:e,gildeskal:e,"xn--gildeskl-g0a":e,gildeskål:e,giske:e,gjemnes:e,gjerdrum:e,gjerstad:e,gjesdal:e,gjovik:e,"xn--gjvik-wua":e,gjøvik:e,gloppen:e,gol:e,gran:e,grane:e,granvin:e,gratangen:e,grimstad:e,grong:e,grue:e,gulen:e,guovdageaidnu:e,ha:e,"xn--h-2fa":e,hå:e,habmer:e,"xn--hbmer-xqa":e,hábmer:e,hadsel:e,"xn--hgebostad-g3a":e,hægebostad:e,hagebostad:e,halden:e,halsa:e,hamar:e,hamaroy:e,hammarfeasta:e,"xn--hmmrfeasta-s4ac":e,hámmárfeasta:e,hammerfest:e,hapmir:e,"xn--hpmir-xqa":e,hápmir:e,haram:e,hareid:e,harstad:e,hasvik:e,hattfjelldal:e,haugesund:e,hedmark:[0,{os:e,valer:e,"xn--vler-qoa":e,våler:e}],hemne:e,hemnes:e,hemsedal:e,hitra:e,hjartdal:e,hjelmeland:e,hobol:e,"xn--hobl-ira":e,hobøl:e,hof:e,hol:e,hole:e,holmestrand:e,holtalen:e,"xn--holtlen-hxa":e,holtålen:e,hordaland:[0,{os:e}],hornindal:e,horten:e,hoyanger:e,"xn--hyanger-q1a":e,høyanger:e,hoylandet:e,"xn--hylandet-54a":e,høylandet:e,hurdal:e,hurum:e,hvaler:e,hyllestad:e,ibestad:e,inderoy:e,"xn--indery-fya":e,inderøy:e,iveland:e,ivgu:e,jevnaker:e,jolster:e,"xn--jlster-bya":e,jølster:e,jondal:e,kafjord:e,"xn--kfjord-iua":e,kåfjord:e,karasjohka:e,"xn--krjohka-hwab49j":e,kárášjohka:e,karasjok:e,karlsoy:e,karmoy:e,"xn--karmy-yua":e,karmøy:e,kautokeino:e,klabu:e,"xn--klbu-woa":e,klæbu:e,klepp:e,kongsberg:e,kongsvinger:e,kraanghke:e,"xn--kranghke-b0a":e,kråanghke:e,kragero:e,"xn--krager-gya":e,kragerø:e,kristiansand:e,kristiansund:e,krodsherad:e,"xn--krdsherad-m8a":e,krødsherad:e,"xn--kvfjord-nxa":e,kvæfjord:e,"xn--kvnangen-k0a":e,kvænangen:e,kvafjord:e,kvalsund:e,kvam:e,kvanangen:e,kvinesdal:e,kvinnherad:e,kviteseid:e,kvitsoy:e,"xn--kvitsy-fya":e,kvitsøy:e,laakesvuemie:e,"xn--lrdal-sra":e,lærdal:e,lahppi:e,"xn--lhppi-xqa":e,láhppi:e,lardal:e,larvik:e,lavagis:e,lavangen:e,leangaviika:e,"xn--leagaviika-52b":e,leaŋgaviika:e,lebesby:e,leikanger:e,leirfjord:e,leka:e,leksvik:e,lenvik:e,lerdal:e,lesja:e,levanger:e,lier:e,lierne:e,lillehammer:e,lillesand:e,lindas:e,"xn--linds-pra":e,lindås:e,lindesnes:e,loabat:e,"xn--loabt-0qa":e,loabát:e,lodingen:e,"xn--ldingen-q1a":e,lødingen:e,lom:e,loppa:e,lorenskog:e,"xn--lrenskog-54a":e,lørenskog:e,loten:e,"xn--lten-gra":e,løten:e,lund:e,lunner:e,luroy:e,"xn--lury-ira":e,lurøy:e,luster:e,lyngdal:e,lyngen:e,malatvuopmi:e,"xn--mlatvuopmi-s4a":e,málatvuopmi:e,malselv:e,"xn--mlselv-iua":e,målselv:e,malvik:e,mandal:e,marker:e,marnardal:e,masfjorden:e,masoy:e,"xn--msy-ula0h":e,måsøy:e,"matta-varjjat":e,"xn--mtta-vrjjat-k7af":e,"mátta-várjjat":e,meland:e,meldal:e,melhus:e,meloy:e,"xn--mely-ira":e,meløy:e,meraker:e,"xn--merker-kua":e,meråker:e,midsund:e,"midtre-gauldal":e,moareke:e,"xn--moreke-jua":e,moåreke:e,modalen:e,modum:e,molde:e,"more-og-romsdal":[0,{heroy:e,sande:e}],"xn--mre-og-romsdal-qqb":[0,{"xn--hery-ira":e,sande:e}],"møre-og-romsdal":[0,{herøy:e,sande:e}],moskenes:e,moss:e,muosat:e,"xn--muost-0qa":e,muosát:e,naamesjevuemie:e,"xn--nmesjevuemie-tcba":e,nååmesjevuemie:e,"xn--nry-yla5g":e,nærøy:e,namdalseid:e,namsos:e,namsskogan:e,nannestad:e,naroy:e,narviika:e,narvik:e,naustdal:e,navuotna:e,"xn--nvuotna-hwa":e,návuotna:e,"nedre-eiker":e,nesna:e,nesodden:e,nesseby:e,nesset:e,nissedal:e,nittedal:e,"nord-aurdal":e,"nord-fron":e,"nord-odal":e,norddal:e,nordkapp:e,nordland:[0,{bo:e,"xn--b-5ga":e,bø:e,heroy:e,"xn--hery-ira":e,herøy:e}],"nordre-land":e,nordreisa:e,"nore-og-uvdal":e,notodden:e,notteroy:e,"xn--nttery-byae":e,nøtterøy:e,odda:e,oksnes:e,"xn--ksnes-uua":e,øksnes:e,omasvuotna:e,oppdal:e,oppegard:e,"xn--oppegrd-ixa":e,oppegård:e,orkdal:e,orland:e,"xn--rland-uua":e,ørland:e,orskog:e,"xn--rskog-uua":e,ørskog:e,orsta:e,"xn--rsta-fra":e,ørsta:e,osen:e,osteroy:e,"xn--ostery-fya":e,osterøy:e,ostfold:[0,{valer:e}],"xn--stfold-9xa":[0,{"xn--vler-qoa":e}],østfold:[0,{våler:e}],"ostre-toten":e,"xn--stre-toten-zcb":e,"østre-toten":e,overhalla:e,"ovre-eiker":e,"xn--vre-eiker-k8a":e,"øvre-eiker":e,oyer:e,"xn--yer-zna":e,øyer:e,oygarden:e,"xn--ygarden-p1a":e,øygarden:e,"oystre-slidre":e,"xn--ystre-slidre-ujb":e,"øystre-slidre":e,porsanger:e,porsangu:e,"xn--porsgu-sta26f":e,porsáŋgu:e,porsgrunn:e,rade:e,"xn--rde-ula":e,råde:e,radoy:e,"xn--rady-ira":e,radøy:e,"xn--rlingen-mxa":e,rælingen:e,rahkkeravju:e,"xn--rhkkervju-01af":e,ráhkkerávju:e,raisa:e,"xn--risa-5na":e,ráisa:e,rakkestad:e,ralingen:e,rana:e,randaberg:e,rauma:e,rendalen:e,rennebu:e,rennesoy:e,"xn--rennesy-v1a":e,rennesøy:e,rindal:e,ringebu:e,ringerike:e,ringsaker:e,risor:e,"xn--risr-ira":e,risør:e,rissa:e,roan:e,rodoy:e,"xn--rdy-0nab":e,rødøy:e,rollag:e,romsa:e,romskog:e,"xn--rmskog-bya":e,rømskog:e,roros:e,"xn--rros-gra":e,røros:e,rost:e,"xn--rst-0na":e,røst:e,royken:e,"xn--ryken-vua":e,røyken:e,royrvik:e,"xn--ryrvik-bya":e,røyrvik:e,ruovat:e,rygge:e,salangen:e,salat:e,"xn--slat-5na":e,sálat:e,"xn--slt-elab":e,sálát:e,saltdal:e,samnanger:e,sandefjord:e,sandnes:e,sandoy:e,"xn--sandy-yua":e,sandøy:e,sarpsborg:e,sauda:e,sauherad:e,sel:e,selbu:e,selje:e,seljord:e,siellak:e,sigdal:e,siljan:e,sirdal:e,skanit:e,"xn--sknit-yqa":e,skánit:e,skanland:e,"xn--sknland-fxa":e,skånland:e,skaun:e,skedsmo:e,ski:e,skien:e,skierva:e,"xn--skierv-uta":e,skiervá:e,skiptvet:e,skjak:e,"xn--skjk-soa":e,skjåk:e,skjervoy:e,"xn--skjervy-v1a":e,skjervøy:e,skodje:e,smola:e,"xn--smla-hra":e,smøla:e,snaase:e,"xn--snase-nra":e,snåase:e,snasa:e,"xn--snsa-roa":e,snåsa:e,snillfjord:e,snoasa:e,sogndal:e,sogne:e,"xn--sgne-gra":e,søgne:e,sokndal:e,sola:e,solund:e,somna:e,"xn--smna-gra":e,sømna:e,"sondre-land":e,"xn--sndre-land-0cb":e,"søndre-land":e,songdalen:e,"sor-aurdal":e,"xn--sr-aurdal-l8a":e,"sør-aurdal":e,"sor-fron":e,"xn--sr-fron-q1a":e,"sør-fron":e,"sor-odal":e,"xn--sr-odal-q1a":e,"sør-odal":e,"sor-varanger":e,"xn--sr-varanger-ggb":e,"sør-varanger":e,sorfold:e,"xn--srfold-bya":e,sørfold:e,sorreisa:e,"xn--srreisa-q1a":e,sørreisa:e,sortland:e,sorum:e,"xn--srum-gra":e,sørum:e,spydeberg:e,stange:e,stavanger:e,steigen:e,steinkjer:e,stjordal:e,"xn--stjrdal-s1a":e,stjørdal:e,stokke:e,"stor-elvdal":e,stord:e,stordal:e,storfjord:e,strand:e,stranda:e,stryn:e,sula:e,suldal:e,sund:e,sunndal:e,surnadal:e,sveio:e,svelvik:e,sykkylven:e,tana:e,telemark:[0,{bo:e,"xn--b-5ga":e,bø:e}],time:e,tingvoll:e,tinn:e,tjeldsund:e,tjome:e,"xn--tjme-hra":e,tjøme:e,tokke:e,tolga:e,tonsberg:e,"xn--tnsberg-q1a":e,tønsberg:e,torsken:e,"xn--trna-woa":e,træna:e,trana:e,tranoy:e,"xn--trany-yua":e,tranøy:e,troandin:e,trogstad:e,"xn--trgstad-r1a":e,trøgstad:e,tromsa:e,tromso:e,"xn--troms-zua":e,tromsø:e,trondheim:e,trysil:e,tvedestrand:e,tydal:e,tynset:e,tysfjord:e,tysnes:e,"xn--tysvr-vra":e,tysvær:e,tysvar:e,ullensaker:e,ullensvang:e,ulvik:e,unjarga:e,"xn--unjrga-rta":e,unjárga:e,utsira:e,vaapste:e,vadso:e,"xn--vads-jra":e,vadsø:e,"xn--vry-yla5g":e,værøy:e,vaga:e,"xn--vg-yiab":e,vågå:e,vagan:e,"xn--vgan-qoa":e,vågan:e,vagsoy:e,"xn--vgsy-qoa0j":e,vågsøy:e,vaksdal:e,valle:e,vang:e,vanylven:e,vardo:e,"xn--vard-jra":e,vardø:e,varggat:e,"xn--vrggt-xqad":e,várggát:e,varoy:e,vefsn:e,vega:e,vegarshei:e,"xn--vegrshei-c0a":e,vegårshei:e,vennesla:e,verdal:e,verran:e,vestby:e,vestfold:[0,{sande:e}],vestnes:e,"vestre-slidre":e,"vestre-toten":e,vestvagoy:e,"xn--vestvgy-ixa6o":e,vestvågøy:e,vevelstad:e,vik:e,vikna:e,vindafjord:e,voagat:e,volda:e,voss:e,co:t,"123hjemmeside":t,myspreadshop:t}],np:y,nr:ge,nu:[1,{merseine:t,mine:t,shacknet:t,enterprisecloud:t}],nz:[1,{ac:e,co:e,cri:e,geek:e,gen:e,govt:e,health:e,iwi:e,kiwi:e,maori:e,"xn--mori-qsa":e,māori:e,mil:e,net:e,org:e,parliament:e,school:e,cloudns:t}],om:[1,{co:e,com:e,edu:e,gov:e,med:e,museum:e,net:e,org:e,pro:e}],onion:e,org:[1,{altervista:t,pimienta:t,poivron:t,potager:t,sweetpepper:t,cdn77:[0,{c:t,rsc:t}],"cdn77-secure":[0,{origin:[0,{ssl:t}]}],ae:t,cloudns:t,"ip-dynamic":t,ddnss:t,dpdns:t,duckdns:t,tunk:t,blogdns:t,blogsite:t,boldlygoingnowhere:t,dnsalias:t,dnsdojo:t,doesntexist:t,dontexist:t,doomdns:t,dvrdns:t,dynalias:t,dyndns:[2,{go:t,home:t}],endofinternet:t,endoftheinternet:t,"from-me":t,"game-host":t,gotdns:t,"hobby-site":t,homedns:t,homeftp:t,homelinux:t,homeunix:t,"is-a-bruinsfan":t,"is-a-candidate":t,"is-a-celticsfan":t,"is-a-chef":t,"is-a-geek":t,"is-a-knight":t,"is-a-linux-user":t,"is-a-patsfan":t,"is-a-soxfan":t,"is-found":t,"is-lost":t,"is-saved":t,"is-very-bad":t,"is-very-evil":t,"is-very-good":t,"is-very-nice":t,"is-very-sweet":t,"isa-geek":t,"kicks-ass":t,misconfused:t,podzone:t,readmyblog:t,selfip:t,sellsyourhome:t,servebbs:t,serveftp:t,servegame:t,"stuff-4-sale":t,webhop:t,accesscam:t,camdvr:t,freeddns:t,mywire:t,roxa:t,webredirect:t,twmail:t,eu:[2,{al:t,asso:t,at:t,au:t,be:t,bg:t,ca:t,cd:t,ch:t,cn:t,cy:t,cz:t,de:t,dk:t,edu:t,ee:t,es:t,fi:t,fr:t,gr:t,hr:t,hu:t,ie:t,il:t,in:t,int:t,is:t,it:t,jp:t,kr:t,lt:t,lu:t,lv:t,me:t,mk:t,mt:t,my:t,net:t,ng:t,nl:t,no:t,nz:t,pl:t,pt:t,ro:t,ru:t,se:t,si:t,sk:t,tr:t,uk:t,us:t}],fedorainfracloud:t,fedorapeople:t,fedoraproject:[0,{cloud:t,os:ne,stg:[0,{os:ne}]}],freedesktop:t,hatenadiary:t,hepforge:t,"in-dsl":t,"in-vpn":t,js:t,barsy:t,mayfirst:t,routingthecloud:t,bmoattachments:t,"cable-modem":t,collegefan:t,couchpotatofries:t,hopto:t,mlbfan:t,myftp:t,mysecuritycamera:t,nflfan:t,"no-ip":t,"read-books":t,ufcfan:t,zapto:t,dynserv:t,"now-dns":t,"is-local":t,httpbin:t,pubtls:t,jpn:t,"my-firewall":t,myfirewall:t,spdns:t,"small-web":t,dsmynas:t,familyds:t,teckids:he,tuxfamily:t,hk:t,us:t,toolforge:t,wmcloud:[2,{beta:t}],wmflabs:t,za:t}],pa:[1,{abo:e,ac:e,com:e,edu:e,gob:e,ing:e,med:e,net:e,nom:e,org:e,sld:e}],pe:[1,{com:e,edu:e,gob:e,mil:e,net:e,nom:e,org:e}],pf:[1,{com:e,edu:e,org:e}],pg:y,ph:[1,{com:e,edu:e,gov:e,i:e,mil:e,net:e,ngo:e,org:e,cloudns:t}],pk:[1,{ac:e,biz:e,com:e,edu:e,fam:e,gkp:e,gob:e,gog:e,gok:e,gop:e,gos:e,gov:e,net:e,org:e,web:e}],pl:[1,{com:e,net:e,org:e,agro:e,aid:e,atm:e,auto:e,biz:e,edu:e,gmina:e,gsm:e,info:e,mail:e,media:e,miasta:e,mil:e,nieruchomosci:e,nom:e,pc:e,powiat:e,priv:e,realestate:e,rel:e,sex:e,shop:e,sklep:e,sos:e,szkola:e,targi:e,tm:e,tourism:e,travel:e,turystyka:e,gov:[1,{ap:e,griw:e,ic:e,is:e,kmpsp:e,konsulat:e,kppsp:e,kwp:e,kwpsp:e,mup:e,mw:e,oia:e,oirm:e,oke:e,oow:e,oschr:e,oum:e,pa:e,pinb:e,piw:e,po:e,pr:e,psp:e,psse:e,pup:e,rzgw:e,sa:e,sdn:e,sko:e,so:e,sr:e,starostwo:e,ug:e,ugim:e,um:e,umig:e,upow:e,uppo:e,us:e,uw:e,uzs:e,wif:e,wiih:e,winb:e,wios:e,witd:e,wiw:e,wkz:e,wsa:e,wskr:e,wsse:e,wuoz:e,wzmiuw:e,zp:e,zpisdn:e}],augustow:e,"babia-gora":e,bedzin:e,beskidy:e,bialowieza:e,bialystok:e,bielawa:e,bieszczady:e,boleslawiec:e,bydgoszcz:e,bytom:e,cieszyn:e,czeladz:e,czest:e,dlugoleka:e,elblag:e,elk:e,glogow:e,gniezno:e,gorlice:e,grajewo:e,ilawa:e,jaworzno:e,"jelenia-gora":e,jgora:e,kalisz:e,karpacz:e,kartuzy:e,kaszuby:e,katowice:e,"kazimierz-dolny":e,kepno:e,ketrzyn:e,klodzko:e,kobierzyce:e,kolobrzeg:e,konin:e,konskowola:e,kutno:e,lapy:e,lebork:e,legnica:e,lezajsk:e,limanowa:e,lomza:e,lowicz:e,lubin:e,lukow:e,malbork:e,malopolska:e,mazowsze:e,mazury:e,mielec:e,mielno:e,mragowo:e,naklo:e,nowaruda:e,nysa:e,olawa:e,olecko:e,olkusz:e,olsztyn:e,opoczno:e,opole:e,ostroda:e,ostroleka:e,ostrowiec:e,ostrowwlkp:e,pila:e,pisz:e,podhale:e,podlasie:e,polkowice:e,pomorskie:e,pomorze:e,prochowice:e,pruszkow:e,przeworsk:e,pulawy:e,radom:e,"rawa-maz":e,rybnik:e,rzeszow:e,sanok:e,sejny:e,skoczow:e,slask:e,slupsk:e,sosnowiec:e,"stalowa-wola":e,starachowice:e,stargard:e,suwalki:e,swidnica:e,swiebodzin:e,swinoujscie:e,szczecin:e,szczytno:e,tarnobrzeg:e,tgory:e,turek:e,tychy:e,ustka:e,walbrzych:e,warmia:e,warszawa:e,waw:e,wegrow:e,wielun:e,wlocl:e,wloclawek:e,wodzislaw:e,wolomin:e,wroclaw:e,zachpomor:e,zagan:e,zarow:e,zgora:e,zgorzelec:e,art:t,gliwice:t,krakow:t,poznan:t,wroc:t,zakopane:t,beep:t,"ecommerce-shop":t,cfolks:t,dfirma:t,dkonto:t,you2:t,shoparena:t,homesklep:t,sdscloud:t,unicloud:t,lodz:t,pabianice:t,plock:t,sieradz:t,skierniewice:t,zgierz:t,krasnik:t,leczna:t,lubartow:t,lublin:t,poniatowa:t,swidnik:t,co:t,torun:t,simplesite:t,myspreadshop:t,gda:t,gdansk:t,gdynia:t,med:t,sopot:t,bielsko:t}],pm:[1,{own:t,name:t}],pn:[1,{co:e,edu:e,gov:e,net:e,org:e}],post:e,pr:[1,{biz:e,com:e,edu:e,gov:e,info:e,isla:e,name:e,net:e,org:e,pro:e,ac:e,est:e,prof:e}],pro:[1,{aaa:e,aca:e,acct:e,avocat:e,bar:e,cpa:e,eng:e,jur:e,law:e,med:e,recht:e,cloudns:t,keenetic:t,barsy:t,ngrok:t}],ps:[1,{com:e,edu:e,gov:e,net:e,org:e,plo:e,sec:e}],pt:[1,{com:e,edu:e,gov:e,int:e,net:e,nome:e,org:e,publ:e,"123paginaweb":t}],pw:[1,{gov:e,cloudns:t,x443:t}],py:[1,{com:e,coop:e,edu:e,gov:e,mil:e,net:e,org:e}],qa:[1,{com:e,edu:e,gov:e,mil:e,name:e,net:e,org:e,sch:e}],re:[1,{asso:e,com:e,netlib:t,can:t}],ro:[1,{arts:e,com:e,firm:e,info:e,nom:e,nt:e,org:e,rec:e,store:e,tm:e,www:e,co:t,shop:t,barsy:t}],rs:[1,{ac:e,co:e,edu:e,gov:e,in:e,org:e,brendly:v,barsy:t,ox:t}],ru:[1,{ac:t,edu:t,gov:t,int:t,mil:t,eurodir:t,adygeya:t,bashkiria:t,bir:t,cbg:t,com:t,dagestan:t,grozny:t,kalmykia:t,kustanai:t,marine:t,mordovia:t,msk:t,mytis:t,nalchik:t,nov:t,pyatigorsk:t,spb:t,vladikavkaz:t,vladimir:t,na4u:t,mircloud:t,myjino:[2,{hosting:i,landing:i,spectrum:i,vps:i}],cldmail:[0,{hb:t}],mcdir:[2,{vps:t}],mcpre:t,net:t,org:t,pp:t,ras:t}],rw:[1,{ac:e,co:e,coop:e,gov:e,mil:e,net:e,org:e}],sa:[1,{com:e,edu:e,gov:e,med:e,net:e,org:e,pub:e,sch:e}],sb:n,sc:n,sd:[1,{com:e,edu:e,gov:e,info:e,med:e,net:e,org:e,tv:e}],se:[1,{a:e,ac:e,b:e,bd:e,brand:e,c:e,d:e,e,f:e,fh:e,fhsk:e,fhv:e,g:e,h:e,i:e,k:e,komforb:e,kommunalforbund:e,komvux:e,l:e,lanbib:e,m:e,n:e,naturbruksgymn:e,o:e,org:e,p:e,parti:e,pp:e,press:e,r:e,s:e,t:e,tm:e,u:e,w:e,x:e,y:e,z:e,com:t,iopsys:t,"123minsida":t,itcouldbewor:t,myspreadshop:t}],sg:[1,{com:e,edu:e,gov:e,net:e,org:e,enscaled:t}],sh:[1,{com:e,gov:e,mil:e,net:e,org:e,hashbang:t,botda:t,lovable:t,platform:[0,{ent:t,eu:t,us:t}],teleport:t,now:t}],si:[1,{f5:t,gitapp:t,gitpage:t}],sj:e,sk:[1,{org:e}],sl:n,sm:e,sn:[1,{art:e,com:e,edu:e,gouv:e,org:e,univ:e}],so:[1,{com:e,edu:e,gov:e,me:e,net:e,org:e,surveys:t}],sr:e,ss:[1,{biz:e,co:e,com:e,edu:e,gov:e,me:e,net:e,org:e,sch:e}],st:[1,{co:e,com:e,consulado:e,edu:e,embaixada:e,mil:e,net:e,org:e,principe:e,saotome:e,store:e,helioho:t,cn:i,kirara:t,noho:t}],su:[1,{abkhazia:t,adygeya:t,aktyubinsk:t,arkhangelsk:t,armenia:t,ashgabad:t,azerbaijan:t,balashov:t,bashkiria:t,bryansk:t,bukhara:t,chimkent:t,dagestan:t,"east-kazakhstan":t,exnet:t,georgia:t,grozny:t,ivanovo:t,jambyl:t,kalmykia:t,kaluga:t,karacol:t,karaganda:t,karelia:t,khakassia:t,krasnodar:t,kurgan:t,kustanai:t,lenug:t,mangyshlak:t,mordovia:t,msk:t,murmansk:t,nalchik:t,navoi:t,"north-kazakhstan":t,nov:t,obninsk:t,penza:t,pokrovsk:t,sochi:t,spb:t,tashkent:t,termez:t,togliatti:t,troitsk:t,tselinograd:t,tula:t,tuva:t,vladikavkaz:t,vladimir:t,vologda:t}],sv:[1,{com:e,edu:e,gob:e,org:e,red:e}],sx:c,sy:r,sz:[1,{ac:e,co:e,org:e}],tc:e,td:e,tel:e,tf:[1,{sch:t}],tg:e,th:[1,{ac:e,co:e,go:e,in:e,mi:e,net:e,or:e,online:t,shop:t}],tj:[1,{ac:e,biz:e,co:e,com:e,edu:e,go:e,gov:e,int:e,mil:e,name:e,net:e,nic:e,org:e,test:e,web:e}],tk:e,tl:c,tm:[1,{co:e,com:e,edu:e,gov:e,mil:e,net:e,nom:e,org:e}],tn:[1,{com:e,ens:e,fin:e,gov:e,ind:e,info:e,intl:e,mincom:e,nat:e,net:e,org:e,perso:e,tourism:e,orangecloud:t}],to:[1,{611:t,com:e,edu:e,gov:e,mil:e,net:e,org:e,oya:t,x0:t,quickconnect:D,vpnplus:t,nett:t}],tr:[1,{av:e,bbs:e,bel:e,biz:e,com:e,dr:e,edu:e,gen:e,gov:e,info:e,k12:e,kep:e,mil:e,name:e,net:e,org:e,pol:e,tel:e,tsk:e,tv:e,web:e,nc:c}],tt:[1,{biz:e,co:e,com:e,edu:e,gov:e,info:e,mil:e,name:e,net:e,org:e,pro:e}],tv:[1,{"better-than":t,dyndns:t,"on-the-web":t,"worse-than":t,from:t,sakura:t}],tw:[1,{club:e,com:[1,{mymailer:t}],ebiz:e,edu:e,game:e,gov:e,idv:e,mil:e,net:e,org:e,url:t,mydns:t}],tz:[1,{ac:e,co:e,go:e,hotel:e,info:e,me:e,mil:e,mobi:e,ne:e,or:e,sc:e,tv:e}],ua:[1,{com:e,edu:e,gov:e,in:e,net:e,org:e,cherkassy:e,cherkasy:e,chernigov:e,chernihiv:e,chernivtsi:e,chernovtsy:e,ck:e,cn:e,cr:e,crimea:e,cv:e,dn:e,dnepropetrovsk:e,dnipropetrovsk:e,donetsk:e,dp:e,if:e,"ivano-frankivsk":e,kh:e,kharkiv:e,kharkov:e,kherson:e,khmelnitskiy:e,khmelnytskyi:e,kiev:e,kirovograd:e,km:e,kr:e,kropyvnytskyi:e,krym:e,ks:e,kv:e,kyiv:e,lg:e,lt:e,lugansk:e,luhansk:e,lutsk:e,lv:e,lviv:e,mk:e,mykolaiv:e,nikolaev:e,od:e,odesa:e,odessa:e,pl:e,poltava:e,rivne:e,rovno:e,rv:e,sb:e,sebastopol:e,sevastopol:e,sm:e,sumy:e,te:e,ternopil:e,uz:e,uzhgorod:e,uzhhorod:e,vinnica:e,vinnytsia:e,vn:e,volyn:e,yalta:e,zakarpattia:e,zaporizhzhe:e,zaporizhzhia:e,zhitomir:e,zhytomyr:e,zp:e,zt:e,cc:t,inf:t,ltd:t,cx:t,biz:t,co:t,pp:t,v:t}],ug:[1,{ac:e,co:e,com:e,edu:e,go:e,gov:e,mil:e,ne:e,or:e,org:e,sc:e,us:e}],uk:[1,{ac:e,co:[1,{bytemark:[0,{dh:t,vm:t}],layershift:ie,barsy:t,barsyonline:t,retrosnub:me,"nh-serv":t,"no-ip":t,adimo:t,myspreadshop:t}],gov:[1,{api:t,campaign:t,service:t}],ltd:e,me:e,net:e,nhs:e,org:[1,{glug:t,lug:t,lugs:t,affinitylottery:t,raffleentry:t,weeklylottery:t}],plc:e,police:e,sch:y,conn:t,copro:t,hosp:t,"independent-commission":t,"independent-inquest":t,"independent-inquiry":t,"independent-panel":t,"independent-review":t,"public-inquiry":t,"royal-commission":t,pymnt:t,barsy:t,nimsite:t,oraclegovcloudapps:i}],us:[1,{dni:e,isa:e,nsn:e,ak:W,al:W,ar:W,as:W,az:W,ca:W,co:W,ct:W,dc:W,de:Se,fl:W,ga:W,gu:W,hi:Ce,ia:W,id:W,il:W,in:W,ks:W,ky:W,la:W,ma:[1,{k12:[1,{chtr:e,paroch:e,pvt:e}],cc:e,lib:e}],md:W,me:W,mi:[1,{k12:e,cc:e,lib:e,"ann-arbor":e,cog:e,dst:e,eaton:e,gen:e,mus:e,tec:e,washtenaw:e}],mn:W,mo:W,ms:[1,{k12:e,cc:e}],mt:W,nc:W,nd:Ce,ne:W,nh:W,nj:W,nm:W,nv:W,ny:W,oh:W,ok:W,or:W,pa:W,pr:W,ri:Ce,sc:W,sd:Ce,tn:W,tx:W,ut:W,va:W,vi:W,vt:W,wa:W,wi:W,wv:Se,wy:W,cloudns:t,"is-by":t,"land-4-sale":t,"stuff-4-sale":t,heliohost:t,enscaled:[0,{phx:t}],mircloud:t,"azure-api":t,azurewebsites:t,ngo:t,golffan:t,noip:t,pointto:t,freeddns:t,srv:[2,{gh:t,gl:t}],servername:t}],uy:[1,{com:e,edu:e,gub:e,mil:e,net:e,org:e,gv:t}],uz:[1,{co:e,com:e,net:e,org:e}],va:e,vc:[1,{com:e,edu:e,gov:e,mil:e,net:e,org:e,gv:[2,{d:t}],"0e":i,mydns:t}],ve:[1,{arts:e,bib:e,co:e,com:e,e12:e,edu:e,emprende:e,firm:e,gob:e,gov:e,ia:e,info:e,int:e,mil:e,net:e,nom:e,org:e,rar:e,rec:e,store:e,tec:e,web:e}],vg:[1,{edu:e}],vi:[1,{co:e,com:e,k12:e,net:e,org:e}],vn:[1,{ac:e,ai:e,biz:e,com:e,edu:e,gov:e,health:e,id:e,info:e,int:e,io:e,name:e,net:e,org:e,pro:e,angiang:e,bacgiang:e,backan:e,baclieu:e,bacninh:e,"baria-vungtau":e,bentre:e,binhdinh:e,binhduong:e,binhphuoc:e,binhthuan:e,camau:e,cantho:e,caobang:e,daklak:e,daknong:e,danang:e,dienbien:e,dongnai:e,dongthap:e,gialai:e,hagiang:e,haiduong:e,haiphong:e,hanam:e,hanoi:e,hatinh:e,haugiang:e,hoabinh:e,hue:e,hungyen:e,khanhhoa:e,kiengiang:e,kontum:e,laichau:e,lamdong:e,langson:e,laocai:e,longan:e,namdinh:e,nghean:e,ninhbinh:e,ninhthuan:e,phutho:e,phuyen:e,quangbinh:e,quangnam:e,quangngai:e,quangninh:e,quangtri:e,soctrang:e,sonla:e,tayninh:e,thaibinh:e,thainguyen:e,thanhhoa:e,thanhphohochiminh:e,thuathienhue:e,tiengiang:e,travinh:e,tuyenquang:e,vinhlong:e,vinhphuc:e,yenbai:e}],vu:H,wf:[1,{biz:t,sch:t}],ws:[1,{com:e,edu:e,gov:e,net:e,org:e,advisor:i,cloud66:t,dyndns:t,mypets:t}],yt:[1,{org:t}],"xn--mgbaam7a8h":e,امارات:e,"xn--y9a3aq":e,հայ:e,"xn--54b7fta0cc":e,বাংলা:e,"xn--90ae":e,бг:e,"xn--mgbcpq6gpa1a":e,البحرين:e,"xn--90ais":e,бел:e,"xn--fiqs8s":e,中国:e,"xn--fiqz9s":e,中國:e,"xn--lgbbat1ad8j":e,الجزائر:e,"xn--wgbh1c":e,مصر:e,"xn--e1a4c":e,ею:e,"xn--qxa6a":e,ευ:e,"xn--mgbah1a3hjkrd":e,موريتانيا:e,"xn--node":e,გე:e,"xn--qxam":e,ελ:e,"xn--j6w193g":[1,{"xn--gmqw5a":e,"xn--55qx5d":e,"xn--mxtq1m":e,"xn--wcvs22d":e,"xn--uc0atv":e,"xn--od0alg":e}],香港:[1,{個人:e,公司:e,政府:e,教育:e,組織:e,網絡:e}],"xn--2scrj9c":e,ಭಾರತ:e,"xn--3hcrj9c":e,ଭାରତ:e,"xn--45br5cyl":e,ভাৰত:e,"xn--h2breg3eve":e,भारतम्:e,"xn--h2brj9c8c":e,भारोत:e,"xn--mgbgu82a":e,ڀارت:e,"xn--rvc1e0am3e":e,ഭാരതം:e,"xn--h2brj9c":e,भारत:e,"xn--mgbbh1a":e,بارت:e,"xn--mgbbh1a71e":e,بھارت:e,"xn--fpcrj9c3d":e,భారత్:e,"xn--gecrj9c":e,ભારત:e,"xn--s9brj9c":e,ਭਾਰਤ:e,"xn--45brj9c":e,ভারত:e,"xn--xkc2dl3a5ee0h":e,இந்தியா:e,"xn--mgba3a4f16a":e,ایران:e,"xn--mgba3a4fra":e,ايران:e,"xn--mgbtx2b":e,عراق:e,"xn--mgbayh7gpa":e,الاردن:e,"xn--3e0b707e":e,한국:e,"xn--80ao21a":e,қаз:e,"xn--q7ce6a":e,ລາວ:e,"xn--fzc2c9e2c":e,ලංකා:e,"xn--xkc2al3hye2a":e,இலங்கை:e,"xn--mgbc0a9azcg":e,المغرب:e,"xn--d1alf":e,мкд:e,"xn--l1acc":e,мон:e,"xn--mix891f":e,澳門:e,"xn--mix082f":e,澳门:e,"xn--mgbx4cd0ab":e,مليسيا:e,"xn--mgb9awbf":e,عمان:e,"xn--mgbai9azgqp6j":e,پاکستان:e,"xn--mgbai9a5eva00b":e,پاكستان:e,"xn--ygbi2ammx":e,فلسطين:e,"xn--90a3ac":[1,{"xn--80au":e,"xn--90azh":e,"xn--d1at":e,"xn--c1avg":e,"xn--o1ac":e,"xn--o1ach":e}],срб:[1,{ак:e,обр:e,од:e,орг:e,пр:e,упр:e}],"xn--p1ai":e,рф:e,"xn--wgbl6a":e,قطر:e,"xn--mgberp4a5d4ar":e,السعودية:e,"xn--mgberp4a5d4a87g":e,السعودیة:e,"xn--mgbqly7c0a67fbc":e,السعودیۃ:e,"xn--mgbqly7cvafr":e,السعوديه:e,"xn--mgbpl2fh":e,سودان:e,"xn--yfro4i67o":e,新加坡:e,"xn--clchc0ea0b2g2a9gcd":e,சிங்கப்பூர்:e,"xn--ogbpf8fl":e,سورية:e,"xn--mgbtf8fl":e,سوريا:e,"xn--o3cw4h":[1,{"xn--o3cyx2a":e,"xn--12co0c3b4eva":e,"xn--m3ch0j3a":e,"xn--h3cuzk1di":e,"xn--12c1fe0br":e,"xn--12cfi8ixb8l":e}],ไทย:[1,{ทหาร:e,ธุรกิจ:e,เน็ต:e,รัฐบาล:e,ศึกษา:e,องค์กร:e}],"xn--pgbs0dh":e,تونس:e,"xn--kpry57d":e,台灣:e,"xn--kprw13d":e,台湾:e,"xn--nnx388a":e,臺灣:e,"xn--j1amh":e,укр:e,"xn--mgb2ddes":e,اليمن:e,xxx:e,ye:r,za:[0,{ac:e,agric:e,alt:e,co:e,edu:e,gov:e,grondar:e,law:e,mil:e,net:e,ngo:e,nic:e,nis:e,nom:e,org:e,school:e,tm:e,web:e}],zm:[1,{ac:e,biz:e,co:e,com:e,edu:e,gov:e,info:e,mil:e,net:e,org:e,sch:e}],zw:[1,{ac:e,co:e,gov:e,mil:e,org:e}],aaa:e,aarp:e,abb:e,abbott:e,abbvie:e,abc:e,able:e,abogado:e,abudhabi:e,academy:[1,{official:t}],accenture:e,accountant:e,accountants:e,aco:e,actor:e,ads:e,adult:e,aeg:e,aetna:e,afl:e,africa:e,agakhan:e,agency:e,aig:e,airbus:e,airforce:e,airtel:e,akdn:e,alibaba:e,alipay:e,allfinanz:e,allstate:e,ally:e,alsace:e,alstom:e,amazon:e,americanexpress:e,americanfamily:e,amex:e,amfam:e,amica:e,amsterdam:e,analytics:e,android:e,anquan:e,anz:e,aol:e,apartments:e,app:[1,{adaptable:t,aiven:t,beget:i,brave:a,clerk:t,clerkstage:t,cloudflare:t,wnext:t,csb:[2,{preview:t}],convex:t,corespeed:t,deta:t,ondigitalocean:t,easypanel:t,encr:[2,{frontend:t}],evervault:o,expo:[2,{on:t,staging:[2,{on:t}]}],edgecompute:t,"on-fleek":t,flutterflow:t,sprites:t,e2b:t,framer:t,gadget:t,github:t,hosted:i,run:[0,{"*":t,mtls:i}],web:t,hackclub:t,hasura:t,onhercules:t,botdash:t,shiptoday:t,leapcell:t,loginline:t,lovable:t,luyani:t,magicpatterns:t,medusajs:t,messerli:t,miren:t,mocha:t,netlify:t,ngrok:t,"ngrok-free":t,developer:i,noop:t,northflank:i,pplx:t,upsun:i,railway:[0,{up:t}],replit:s,nyat:t,snowflake:[0,{"*":t,privatelink:i}],streamlit:t,spawnbase:t,telebit:t,typedream:t,vercel:t,wal:t,wasmer:t,bookonline:t,windsurf:t,base44:t,zeabur:t,zerops:i}],apple:[1,{int:[2,{cloud:[0,{"*":t,r:[0,{"*":t,"ap-north-1":i,"ap-south-1":i,"ap-south-2":i,"eu-central-1":i,"eu-north-1":i,"us-central-1":i,"us-central-2":i,"us-east-1":i,"us-east-2":i,"us-west-1":i,"us-west-2":i,"us-west-3":i}]}]}]}],aquarelle:e,arab:e,aramco:e,archi:e,army:e,art:e,arte:e,asda:e,associates:e,athleta:e,attorney:e,auction:e,audi:e,audible:e,audio:e,auspost:e,author:e,auto:e,autos:e,aws:[1,{on:[0,{"af-south-1":l,"ap-east-1":l,"ap-northeast-1":l,"ap-northeast-2":l,"ap-northeast-3":l,"ap-south-1":l,"ap-south-2":u,"ap-southeast-1":l,"ap-southeast-2":l,"ap-southeast-3":l,"ap-southeast-4":u,"ap-southeast-5":u,"ca-central-1":l,"ca-west-1":u,"eu-central-1":l,"eu-central-2":u,"eu-north-1":l,"eu-south-1":l,"eu-south-2":u,"eu-west-1":l,"eu-west-2":l,"eu-west-3":l,"il-central-1":u,"me-central-1":u,"me-south-1":l,"sa-east-1":l,"us-east-1":l,"us-east-2":l,"us-west-1":l,"us-west-2":l,"ap-southeast-7":d,"mx-central-1":d,"us-gov-east-1":f,"us-gov-west-1":f}],sagemaker:[0,{"ap-northeast-1":m,"ap-northeast-2":m,"ap-south-1":m,"ap-southeast-1":m,"ap-southeast-2":m,"ca-central-1":g,"eu-central-1":m,"eu-west-1":m,"eu-west-2":m,"us-east-1":g,"us-east-2":g,"us-west-2":g,"af-south-1":p,"ap-east-1":p,"ap-northeast-3":p,"ap-south-2":h,"ap-southeast-3":p,"ap-southeast-4":h,"ca-west-1":[0,{notebook:t,"notebook-fips":t}],"eu-central-2":p,"eu-north-1":p,"eu-south-1":p,"eu-south-2":p,"eu-west-3":p,"il-central-1":p,"me-central-1":p,"me-south-1":p,"sa-east-1":p,"us-gov-east-1":_,"us-gov-west-1":_,"us-west-1":[0,{notebook:t,"notebook-fips":t,studio:t}],experiments:i}],repost:[0,{private:i}]}],axa:e,azure:e,baby:e,baidu:e,banamex:e,band:e,bank:e,bar:e,barcelona:e,barclaycard:e,barclays:e,barefoot:e,bargains:e,baseball:e,basketball:[1,{aus:t,nz:t}],bauhaus:e,bayern:e,bbc:e,bbt:e,bbva:e,bcg:e,bcn:e,beats:e,beauty:e,beer:e,berlin:e,best:e,bestbuy:e,bet:e,bharti:e,bible:e,bid:e,bike:e,bing:e,bingo:e,bio:e,black:e,blackfriday:e,blockbuster:e,blog:e,bloomberg:e,blue:e,bms:e,bmw:e,bnpparibas:e,boats:e,boehringer:e,bofa:e,bom:e,bond:e,boo:e,book:e,booking:e,bosch:e,bostik:e,boston:e,bot:e,boutique:e,box:e,bradesco:e,bridgestone:e,broadway:e,broker:e,brother:e,brussels:e,build:[1,{shiptoday:t,v0:t,windsurf:t}],builders:[1,{cloudsite:t}],business:b,buy:e,buzz:e,bzh:e,cab:e,cafe:e,cal:e,call:e,calvinklein:e,cam:e,camera:e,camp:[1,{emf:[0,{at:t}]}],canon:e,capetown:e,capital:e,capitalone:e,car:e,caravan:e,cards:e,care:e,career:e,careers:e,cars:e,casa:[1,{nabu:[0,{ui:t}]}],case:[1,{sav:t}],cash:e,casino:e,catering:e,catholic:e,cba:e,cbn:e,cbre:e,center:e,ceo:e,cern:e,cfa:e,cfd:e,chanel:e,channel:e,charity:e,chase:e,chat:e,cheap:e,chintai:e,christmas:e,chrome:e,church:e,cipriani:e,circle:e,cisco:e,citadel:e,citi:e,citic:e,city:e,claims:e,cleaning:e,click:e,clinic:e,clinique:e,clothing:e,cloud:[1,{antagonist:t,begetcdn:i,convex:S,elementor:t,emergent:t,encoway:[0,{eu:t}],statics:i,ravendb:t,axarnet:[0,{"es-1":t}],diadem:t,jelastic:[0,{vip:t}],jele:t,"jenv-aruba":[0,{aruba:[0,{eur:[0,{it1:t}]}],it1:t}],keliweb:[2,{cs:t}],oxa:[2,{tn:t,uk:t}],primetel:[2,{uk:t}],reclaim:[0,{ca:t,uk:t,us:t}],trendhosting:[0,{ch:t,de:t}],jote:t,jotelulu:t,kuleuven:t,laravel:t,linkyard:t,magentosite:i,matlab:t,observablehq:t,perspecta:t,vapor:t,"on-rancher":i,scw:[0,{baremetal:[0,{"fr-par-1":t,"fr-par-2":t,"nl-ams-1":t}],"fr-par":[0,{cockpit:t,ddl:t,dtwh:t,fnc:[2,{functions:t}],ifr:t,k8s:C,kafk:t,mgdb:t,rdb:t,s3:t,"s3-website":t,scbl:t,whm:t}],instances:[0,{priv:t,pub:t}],k8s:t,"nl-ams":[0,{cockpit:t,ddl:t,dtwh:t,ifr:t,k8s:C,kafk:t,mgdb:t,rdb:t,s3:t,"s3-website":t,scbl:t,whm:t}],"pl-waw":[0,{cockpit:t,ddl:t,dtwh:t,ifr:t,k8s:C,kafk:t,mgdb:t,rdb:t,s3:t,"s3-website":t,scbl:t}],scalebook:t,smartlabeling:t}],servebolt:t,onstackit:[0,{runs:t}],trafficplex:t,"unison-services":t,urown:t,voorloper:t,zap:t}],club:[1,{cloudns:t,jele:t,barsy:t}],clubmed:e,coach:e,codes:[1,{owo:i}],coffee:e,college:e,cologne:e,commbank:e,community:[1,{nog:t,ravendb:t,myforum:t}],company:[1,{mybox:t}],compare:e,computer:e,comsec:e,condos:e,construction:e,consulting:e,contact:e,contractors:e,cooking:e,cool:[1,{elementor:t,de:t}],corsica:e,country:e,coupon:e,coupons:e,courses:e,cpa:e,credit:e,creditcard:e,creditunion:e,cricket:e,crown:e,crs:e,cruise:e,cruises:e,cuisinella:e,cymru:e,cyou:e,dad:e,dance:e,data:e,date:e,dating:e,datsun:e,day:e,dclk:e,dds:e,deal:e,dealer:e,deals:e,degree:e,delivery:e,dell:e,deloitte:e,delta:e,democrat:e,dental:e,dentist:e,desi:e,design:[1,{graphic:t,bss:t}],dev:[1,{myaddr:t,panel:t,bearblog:t,brave:a,lcl:i,lclstage:i,stg:i,stgstage:i,pages:t,r2:t,workers:t,deno:t,"deno-staging":t,deta:t,lp:[2,{api:t,objects:t}],evervault:o,payload:t,fly:t,githubpreview:t,gateway:i,grebedoc:t,botdash:t,inbrowser:i,"is-a-good":t,iserv:t,leapcell:t,runcontainers:t,localcert:[0,{user:i}],loginline:t,barsy:t,mediatech:t,"mocha-sandbox":t,modx:t,ngrok:t,"ngrok-free":t,"is-a-fullstack":t,"is-cool":t,"is-not-a":t,localplayer:t,xmit:t,"platter-app":t,replit:[2,{archer:t,bones:t,canary:t,global:t,hacker:t,id:t,janeway:t,kim:t,kira:t,kirk:t,odo:t,paris:t,picard:t,pike:t,prerelease:t,reed:t,riker:t,sisko:t,spock:t,staging:t,sulu:t,tarpit:t,teams:t,tucker:t,wesley:t,worf:t}],crm:[0,{aa:i,ab:i,ac:i,ad:i,ae:i,af:i,ci:i,d:i,pa:i,pb:i,pc:i,pd:i,pe:i,pf:i,w:i,wa:i,wb:i,wc:i,wd:i,we:i,wf:i}],erp:oe,vercel:t,webhare:i,hrsn:t,"is-a":t}],dhl:e,diamonds:e,diet:e,digital:[1,{cloudapps:[2,{london:t}]}],direct:[1,{libp2p:t}],directory:e,discount:e,discover:e,dish:e,diy:[1,{discourse:t,imagine:t}],dnp:e,docs:e,doctor:e,dog:e,domains:e,dot:e,download:e,drive:e,dtv:e,dubai:e,dupont:e,durban:e,dvag:e,dvr:e,earth:e,eat:e,eco:e,edeka:e,education:b,email:[1,{crisp:[0,{on:t}],intouch:t,tawk:ce,tawkto:ce}],emerck:e,energy:e,engineer:e,engineering:e,enterprises:e,epson:e,equipment:e,ericsson:e,erni:e,esq:e,estate:[1,{compute:i}],eurovision:e,eus:[1,{party:le}],events:[1,{koobin:t,co:t}],exchange:e,expert:e,exposed:e,express:e,extraspace:e,fage:e,fail:e,fairwinds:e,faith:e,family:e,fan:e,fans:e,farm:[1,{storj:t}],farmers:e,fashion:e,fast:e,fedex:e,feedback:e,ferrari:e,ferrero:e,fidelity:e,fido:e,film:e,final:e,finance:e,financial:b,fire:e,firestone:e,firmdale:e,fish:e,fishing:e,fit:e,fitness:e,flickr:e,flights:e,flir:e,florist:e,flowers:e,fly:e,foo:e,food:e,football:e,ford:e,forex:e,forsale:e,forum:e,foundation:e,fox:e,free:e,fresenius:e,frl:e,frogans:e,frontier:e,ftr:e,fujitsu:e,fun:ue,fund:e,furniture:e,futbol:e,fyi:e,gal:e,gallery:e,gallo:e,gallup:e,game:e,games:[1,{pley:t,sheezy:t}],gap:e,garden:e,gay:[1,{pages:t}],gbiz:e,gdn:[1,{cnpy:t}],gea:e,gent:e,genting:e,george:e,ggee:e,gift:e,gifts:e,gives:e,giving:e,glass:e,gle:e,global:[1,{appwrite:t}],globo:e,gmail:e,gmbh:e,gmo:e,gmx:e,godaddy:e,gold:e,goldpoint:e,golf:e,goodyear:e,goog:[1,{cloud:t,translate:t,usercontent:i}],google:e,gop:e,got:e,grainger:e,graphics:e,gratis:e,green:e,gripe:e,grocery:e,group:[1,{discourse:t}],gucci:e,guge:e,guide:e,guitars:e,guru:e,hair:e,hamburg:e,hangout:e,haus:e,hbo:e,hdfc:e,hdfcbank:e,health:[1,{hra:t}],healthcare:e,help:e,helsinki:e,here:e,hermes:e,hiphop:e,hisamitsu:e,hitachi:e,hiv:e,hkt:e,hockey:e,holdings:e,holiday:e,homedepot:e,homegoods:e,homes:e,homesense:e,honda:e,horse:e,hospital:e,host:[1,{cloudaccess:t,freesite:t,easypanel:t,emergent:t,fastvps:t,myfast:t,gadget:t,tempurl:t,wpmudev:t,iserv:t,jele:t,mircloud:t,bolt:t,wp2:t,half:t}],hosting:[1,{opencraft:t}],hot:e,hotel:e,hotels:e,hotmail:e,house:e,how:e,hsbc:e,hughes:e,hyatt:e,hyundai:e,ibm:e,icbc:e,ice:e,icu:e,ieee:e,ifm:e,ikano:e,imamat:e,imdb:e,immo:e,immobilien:e,inc:e,industries:e,infiniti:e,ing:e,ink:e,institute:e,insurance:e,insure:e,international:e,intuit:e,investments:e,ipiranga:e,irish:e,ismaili:e,ist:e,istanbul:e,itau:e,itv:e,jaguar:e,java:e,jcb:e,jeep:e,jetzt:e,jewelry:e,jio:e,jll:e,jmp:e,jnj:e,joburg:e,jot:e,joy:e,jpmorgan:e,jprs:e,juegos:e,juniper:e,kaufen:e,kddi:e,kerryhotels:e,kerryproperties:e,kfh:e,kia:e,kids:e,kim:e,kindle:e,kitchen:e,kiwi:e,koeln:e,komatsu:e,kosher:e,kpmg:e,kpn:e,krd:[1,{co:t,edu:t}],kred:e,kuokgroup:e,kyoto:e,lacaixa:e,lamborghini:e,lamer:e,land:e,landrover:e,lanxess:e,lasalle:e,lat:e,latino:e,latrobe:e,law:e,lawyer:e,lds:e,lease:e,leclerc:e,lefrak:e,legal:e,lego:e,lexus:e,lgbt:e,lidl:e,life:e,lifeinsurance:e,lifestyle:e,lighting:e,like:e,lilly:e,limited:e,limo:e,lincoln:e,link:[1,{myfritz:t,cyon:t,joinmc:t,dweb:i,inbrowser:i,keenetic:t,nftstorage:_e,mypep:t,storacha:_e,w3s:_e}],live:[1,{aem:t,hlx:t,ewp:i}],living:e,llc:e,llp:e,loan:e,loans:e,locker:e,locus:e,lol:[1,{omg:t}],london:e,lotte:e,lotto:e,love:e,lpl:e,lplfinancial:e,ltd:e,ltda:e,lundbeck:e,luxe:e,luxury:e,madrid:e,maif:e,maison:e,makeup:e,man:e,management:e,mango:e,map:e,market:e,marketing:e,markets:e,marriott:e,marshalls:e,mattel:e,mba:e,mckinsey:e,med:e,media:ve,meet:e,melbourne:e,meme:e,memorial:e,men:e,menu:[1,{barsy:t,barsyonline:t}],merck:e,merckmsd:e,miami:e,microsoft:e,mini:e,mint:e,mit:e,mitsubishi:e,mlb:e,mls:e,mma:e,mobile:e,moda:e,moe:e,moi:e,mom:e,monash:e,money:e,monster:e,mormon:e,mortgage:e,moscow:e,moto:e,motorcycles:e,mov:e,movie:e,msd:e,mtn:e,mtr:e,music:e,nab:e,nagoya:e,navy:e,nba:e,nec:e,netbank:e,netflix:e,network:[1,{aem:t,alces:i,appwrite:t,co:t,arvo:t,azimuth:t,tlon:t}],neustar:e,new:e,news:[1,{noticeable:t}],next:e,nextdirect:e,nexus:e,nfl:e,ngo:e,nhk:e,nico:e,nike:e,nikon:e,ninja:e,nissan:e,nissay:e,nokia:e,norton:e,now:e,nowruz:e,nowtv:e,nra:e,nrw:e,ntt:e,nyc:e,obi:e,observer:e,office:e,okinawa:e,olayan:e,olayangroup:e,ollo:e,omega:e,one:[1,{kin:i,service:t,website:t}],ong:e,onl:e,online:[1,{eero:t,"eero-stage":t,websitebuilder:t,leapcell:t,barsy:t}],ooo:e,open:e,oracle:e,orange:[1,{tech:t}],organic:e,origins:e,osaka:e,otsuka:e,ott:e,ovh:[1,{nerdpol:t}],page:[1,{aem:t,hlx:t,codeberg:t,deuxfleurs:t,mybox:t,heyflow:t,prvcy:t,rocky:t,statichost:t,pdns:t,plesk:t}],panasonic:e,paris:e,pars:e,partners:e,parts:e,party:e,pay:e,pccw:e,pet:e,pfizer:e,pharmacy:e,phd:e,philips:e,phone:e,photo:e,photography:e,photos:ve,physio:e,pics:e,pictet:e,pictures:[1,{1337:t}],pid:e,pin:e,ping:e,pink:e,pioneer:e,pizza:[1,{ngrok:t}],place:b,play:e,playstation:e,plumbing:e,plus:[1,{playit:[2,{at:i,with:t}]}],pnc:e,pohl:e,poker:e,politie:e,porn:e,praxi:e,press:e,prime:e,prod:e,productions:e,prof:e,progressive:e,promo:e,properties:e,property:e,protection:e,pru:e,prudential:e,pub:[1,{id:i,kin:i,barsy:t}],pwc:e,qpon:e,quebec:e,quest:e,racing:e,radio:e,read:e,realestate:e,realtor:e,realty:e,recipes:e,red:e,redumbrella:e,rehab:e,reise:e,reisen:e,reit:e,reliance:e,ren:e,rent:e,rentals:e,repair:e,report:e,republican:e,rest:e,restaurant:e,review:e,reviews:[1,{aem:t}],rexroth:e,rich:e,richardli:e,ricoh:e,ril:e,rio:e,rip:[1,{clan:t}],rocks:[1,{myddns:t,stackit:t,"lima-city":t,webspace:t}],rodeo:e,rogers:e,room:e,rsvp:e,rugby:e,ruhr:e,run:[1,{appwrite:i,canva:t,development:t,ravendb:t,liara:[2,{iran:t}],lovable:t,needle:t,build:i,code:i,database:i,migration:i,onporter:t,repl:t,stackit:t,val:oe,vercel:t,wix:t}],rwe:e,ryukyu:e,saarland:e,safe:e,safety:e,sakura:e,sale:e,salon:e,samsclub:e,samsung:e,sandvik:e,sandvikcoromant:e,sanofi:e,sap:e,sarl:e,sas:e,save:e,saxo:e,sbi:e,sbs:e,scb:e,schaeffler:e,schmidt:e,scholarships:e,school:e,schule:e,schwarz:e,science:e,scot:[1,{co:t,me:t,org:t,gov:[2,{service:t}]}],search:e,seat:e,secure:e,security:e,seek:e,select:e,sener:e,services:[1,{loginline:t}],seven:e,sew:e,sex:e,sexy:e,sfr:e,shangrila:e,sharp:e,shell:e,shia:e,shiksha:e,shoes:e,shop:[1,{base:t,hoplix:t,barsy:t,barsyonline:t,shopware:t}],shopping:e,shouji:e,show:ue,silk:e,sina:e,singles:e,site:[1,{square:t,canva:w,cloudera:i,convex:S,cyon:t,caffeine:t,fastvps:t,figma:t,"figma-gov":t,preview:t,heyflow:t,jele:t,jouwweb:t,loginline:t,barsy:t,co:t,notion:t,omniwe:t,opensocial:t,madethis:t,support:t,platformsh:i,tst:i,byen:t,sol:t,srht:t,novecore:t,cpanel:t,wpsquared:t,sourcecraft:t}],ski:e,skin:e,sky:e,skype:e,sling:e,smart:e,smile:e,sncf:e,soccer:e,social:e,softbank:e,software:e,sohu:e,solar:e,solutions:e,song:e,sony:e,soy:e,spa:e,space:[1,{myfast:t,heiyu:t,hf:[2,{static:t}],"app-ionos":t,project:t,uber:t,xs4all:t}],sport:e,spot:e,srl:e,stada:e,staples:e,star:e,statebank:e,statefarm:e,stc:e,stcgroup:e,stockholm:e,storage:e,store:[1,{barsy:t,sellfy:t,shopware:t,storebase:t}],stream:e,studio:e,study:e,style:e,sucks:e,supplies:e,supply:e,support:[1,{barsy:t}],surf:e,surgery:e,suzuki:e,swatch:e,swiss:e,sydney:e,systems:[1,{knightpoint:t,miren:t}],tab:e,taipei:e,talk:e,taobao:e,target:e,tatamotors:e,tatar:e,tattoo:e,tax:e,taxi:e,tci:e,tdk:e,team:[1,{discourse:t,jelastic:t}],tech:[1,{cleverapps:t}],technology:b,temasek:e,tennis:e,teva:e,thd:e,theater:e,theatre:e,tiaa:e,tickets:e,tienda:e,tips:e,tires:e,tirol:e,tjmaxx:e,tjx:e,tkmaxx:e,tmall:e,today:[1,{prequalifyme:t}],tokyo:e,tools:[1,{addr:ae,myaddr:t}],top:[1,{ntdll:t,wadl:i}],toray:e,toshiba:e,total:e,tours:e,town:e,toyota:e,toys:e,trade:e,trading:e,training:e,travel:e,travelers:e,travelersinsurance:e,trust:e,trv:e,tube:e,tui:e,tunes:e,tushu:e,tvs:e,ubank:e,ubs:e,unicom:e,university:e,uno:e,uol:e,ups:e,vacations:e,vana:e,vanguard:e,vegas:e,ventures:e,verisign:e,versicherung:e,vet:e,viajes:e,video:e,vig:e,viking:e,villas:e,vin:e,vip:[1,{hidns:t}],virgin:e,visa:e,vision:e,viva:e,vivo:e,vlaanderen:e,vodka:e,volvo:e,vote:e,voting:e,voto:e,voyage:e,wales:e,walmart:e,walter:e,wang:e,wanggou:e,watch:e,watches:e,weather:e,weatherchannel:e,webcam:e,weber:e,website:ve,wed:e,wedding:e,weibo:e,weir:e,whoswho:e,wien:e,wiki:ve,williamhill:e,win:e,windows:e,wine:e,winners:e,wme:e,woodside:e,work:[1,{"imagine-proxy":t}],works:e,world:e,wow:e,wtc:e,wtf:e,xbox:e,xerox:e,xihuan:e,xin:e,"xn--11b4c3d":e,कॉम:e,"xn--1ck2e1b":e,セール:e,"xn--1qqw23a":e,佛山:e,"xn--30rr7y":e,慈善:e,"xn--3bst00m":e,集团:e,"xn--3ds443g":e,在线:e,"xn--3pxu8k":e,点看:e,"xn--42c2d9a":e,คอม:e,"xn--45q11c":e,八卦:e,"xn--4gbrim":e,موقع:e,"xn--55qw42g":e,公益:e,"xn--55qx5d":e,公司:e,"xn--5su34j936bgsg":e,香格里拉:e,"xn--5tzm5g":e,网站:e,"xn--6frz82g":e,移动:e,"xn--6qq986b3xl":e,我爱你:e,"xn--80adxhks":e,москва:e,"xn--80aqecdr1a":e,католик:e,"xn--80asehdb":e,онлайн:e,"xn--80aswg":e,сайт:e,"xn--8y0a063a":e,联通:e,"xn--9dbq2a":e,קום:e,"xn--9et52u":e,时尚:e,"xn--9krt00a":e,微博:e,"xn--b4w605ferd":e,淡马锡:e,"xn--bck1b9a5dre4c":e,ファッション:e,"xn--c1avg":e,орг:e,"xn--c2br7g":e,नेट:e,"xn--cck2b3b":e,ストア:e,"xn--cckwcxetd":e,アマゾン:e,"xn--cg4bki":e,삼성:e,"xn--czr694b":e,商标:e,"xn--czrs0t":e,商店:e,"xn--czru2d":e,商城:e,"xn--d1acj3b":e,дети:e,"xn--eckvdtc9d":e,ポイント:e,"xn--efvy88h":e,新闻:e,"xn--fct429k":e,家電:e,"xn--fhbei":e,كوم:e,"xn--fiq228c5hs":e,中文网:e,"xn--fiq64b":e,中信:e,"xn--fjq720a":e,娱乐:e,"xn--flw351e":e,谷歌:e,"xn--fzys8d69uvgm":e,電訊盈科:e,"xn--g2xx48c":e,购物:e,"xn--gckr3f0f":e,クラウド:e,"xn--gk3at1e":e,通販:e,"xn--hxt814e":e,网店:e,"xn--i1b6b1a6a2e":e,संगठन:e,"xn--imr513n":e,餐厅:e,"xn--io0a7i":e,网络:e,"xn--j1aef":e,ком:e,"xn--jlq480n2rg":e,亚马逊:e,"xn--jvr189m":e,食品:e,"xn--kcrx77d1x4a":e,飞利浦:e,"xn--kput3i":e,手机:e,"xn--mgba3a3ejt":e,ارامكو:e,"xn--mgba7c0bbn0a":e,العليان:e,"xn--mgbab2bd":e,بازار:e,"xn--mgbca7dzdo":e,ابوظبي:e,"xn--mgbi4ecexp":e,كاثوليك:e,"xn--mgbt3dhd":e,همراه:e,"xn--mk1bu44c":e,닷컴:e,"xn--mxtq1m":e,政府:e,"xn--ngbc5azd":e,شبكة:e,"xn--ngbe9e0a":e,بيتك:e,"xn--ngbrx":e,عرب:e,"xn--nqv7f":e,机构:e,"xn--nqv7fs00ema":e,组织机构:e,"xn--nyqy26a":e,健康:e,"xn--otu796d":e,招聘:e,"xn--p1acf":[1,{"xn--90amc":t,"xn--j1aef":t,"xn--j1ael8b":t,"xn--h1ahn":t,"xn--j1adp":t,"xn--c1avg":t,"xn--80aaa0cvac":t,"xn--h1aliz":t,"xn--90a1af":t,"xn--41a":t}],рус:[1,{биз:t,ком:t,крым:t,мир:t,мск:t,орг:t,самара:t,сочи:t,спб:t,я:t}],"xn--pssy2u":e,大拿:e,"xn--q9jyb4c":e,みんな:e,"xn--qcka1pmc":e,グーグル:e,"xn--rhqv96g":e,世界:e,"xn--rovu88b":e,書籍:e,"xn--ses554g":e,网址:e,"xn--t60b56a":e,닷넷:e,"xn--tckwe":e,コム:e,"xn--tiq49xqyj":e,天主教:e,"xn--unup4y":e,游戏:e,"xn--vermgensberater-ctb":e,vermögensberater:e,"xn--vermgensberatung-pwb":e,vermögensberatung:e,"xn--vhquv":e,企业:e,"xn--vuq861b":e,信息:e,"xn--w4r85el8fhu5dnra":e,嘉里大酒店:e,"xn--w4rs40l":e,嘉里:e,"xn--xhq521b":e,广东:e,"xn--zfr164b":e,政务:e,xyz:[1,{caffeine:t,exe:t,botdash:t,telebit:i}],yachts:e,yahoo:e,yamaxun:e,yandex:e,yodobashi:e,yoga:e,yokohama:e,you:e,youtube:e,yun:e,zappos:e,zara:e,zero:e,zip:e,zone:[1,{stackit:t,lima:t,triton:i}],zuerich:e}]})();function ql(e,t,n,r){let i=null,a=t;for(;a!==void 0&&((a[0]&r)!==0&&(i={index:n+1,isIcann:(a[0]&1)!=0,isPrivate:(a[0]&2)!=0}),n!==-1);){let t=a[1];a=Object.prototype.hasOwnProperty.call(t,e[n])?t[e[n]]:t[`*`],--n}return i}function Jl(e,t,n){if(Wl(e,t,n))return;let r=e.split(`.`),i=(t.allowPrivateDomains?2:0)|!!t.allowIcannDomains,a=ql(r,Gl,r.length-1,i);if(a!==null){n.isIcann=a.isIcann,n.isPrivate=a.isPrivate,n.publicSuffix=r.slice(a.index+1).join(`.`);return}let o=ql(r,Kl,r.length-1,i);if(o!==null){n.isIcann=o.isIcann,n.isPrivate=o.isPrivate,n.publicSuffix=r.slice(o.index).join(`.`);return}n.isIcann=!1,n.isPrivate=!1,n.publicSuffix=r[r.length-1]??null}var Yl=Vl();function Xl(e,t={}){return Hl(Yl),Ul(e,3,Jl,t,Yl).domain}function Zl(e){try{return Xl(e.startsWith(`http`)?e:`https://`+e)??null}catch{return null}}function Ql(e){try{let t=e.startsWith(`http`)?e:`https://`+e,{hostname:n}=new URL(t);return n}catch{return e}}function $l(e){if(!e||typeof chrome>`u`||!chrome.runtime?.getURL)return null;try{let t=new URL(chrome.runtime.getURL(`/_favicon/`));return t.searchParams.set(`pageUrl`,`https://${e}`),t.searchParams.set(`size`,`32`),t.toString()}catch{return null}}var eu=J(`<img width=16 height=16 alt style=border-radius:3px>`),tu=J(`<span class=peach-favicon-initials aria-hidden=true>`),nu=J(`<svg width=11 height=12 viewBox="0 0 11 12"fill=none stroke=currentColor stroke-width=0.9 stroke-linecap=round aria-hidden=true><rect x=2 y=5 width=7 height=5 rx=1.2></rect><path d="M3.5 5V3.75A2 2 0 0 1 5.5 1.75A2 2 0 0 1 7.5 3.75V5">`),ru=J(`<svg width=11 height=12 viewBox="0 0 11 12"fill=none stroke=currentColor stroke-width=0.9 stroke-linecap=round aria-hidden=true><circle cx=4 cy=4.5 r=3></circle><path d="M6.5 7l3.5 3.5M8.5 8.5L10 10">`),iu=J(`<svg width=11 height=12 viewBox="0 0 11 12"fill=none stroke=currentColor stroke-width=0.9 stroke-linecap=round aria-hidden=true><rect x=1.5 y=1.5 width=8 height=9 rx=1.5></rect><path d="M3.5 4.5h4M3.5 6.5h4M3.5 8.5h2">`),au=J(`<button class=peach-select-cancel-btn>cancel`),ou=J(`<span class=peach-select-count-label>`),su=J(`<button class=peach-select-all-btn>`),cu=J(`<div class=peach-tag-filter-strip style="display:flex;gap:6px;padding:4px 12px 6px;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none">`),lu=J(`<span>`),uu=J(`<button><svg width=12 height=13 viewBox="0 0 12 13"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round><path d="M1 3h10M4 3V2h4v1M2 3l.7 8.5a1 1 0 0 0 1 .9h4.6a1 1 0 0 0 1-.9L10 3">`),du=J(`<div class="peach-overlay-view ov-enter-up"style=display:flex><div class=peach-list-top><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label=Back><svg width=7 height=12 viewBox="0 0 7 12"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round><path d="M6 1L1 6L6 11"></path></svg></button><input class=peach-search-input placeholder="search vault..."autocomplete=off style=font-size:14px><span class="peach-search-counter peach-search-counter-list"></span></div><div class=peach-sort-bar></div><div>`),fu=J(`<span style=flex:1>`),pu=J(`<button aria-label="Notes only"title="Show notes only">`),mu=J(`<button class=peach-sort-trash-btn aria-label="View trash"title="View deleted entries"><svg width=11 height=12 viewBox="0 0 12 13"fill=none stroke=currentColor stroke-width=1 stroke-linecap=round stroke-linejoin=round><path d="M1 3h10M4 3V2h4v1M2 3l.7 8.5a1 1 0 0 0 1 .9h4.6a1 1 0 0 0 1-.9L10 3">`),hu=J(`<button class=peach-sort-trash-btn aria-label="Select entries"title="Select entries"><svg width=12 height=12 viewBox="0 0 12 12"fill=none stroke=currentColor stroke-width=1 stroke-linecap=round stroke-linejoin=round><circle cx=4 cy=4 r=2.5></circle><circle cx=9 cy=4 r=2.5></circle><circle cx=4 cy=9 r=2.5></circle><circle cx=9 cy=9 r=2.5>`),gu=J(`<button>`),_u=J(`<div class=peach-list-empty><span>no entries yet`),vu=J(`<svg><path d="M5 8.5L7 10.5L11 6"stroke=white stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></svg>`,!1,!0,!1),yu=J(`<svg width=16 height=16 viewBox="0 0 16 16"fill=none><circle cx=8 cy=8 r=7 stroke=currentColor stroke-width=1>`),bu=J(`<span class=peach-passkey-badge>passkey`),xu=J(`<span class=peach-tab-match-badge title="Matches current tab">●`),Su=J(`<span class=peach-entry-row-dot aria-label=breach>`),Cu=J(`<span class=peach-entry-row-canary>🪤`),wu=J(`<button><div></div><div class=peach-entry-row-info><span class=peach-entry-row-name></span><span class=peach-entry-row-meta>`),Tu=J(`<button class=peach-new-entry-row><svg width=10 height=10 viewBox="0 0 10 10"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round><path d="M5 1v8M1 5h8"></path></svg>new entry`),Eu=J(`<span>select entries to delete`);function Du(e){let t=e.domain&&!e.isNote&&!e.isPasskey?$l(e.domain):null,n=e.isPasskey?ju:e.isNote?Mu:G(Au,{get title(){return e.title??e.domain??``}}),[r,i]=z(!1);return G(K,{get when(){return t&&!r()},fallback:n,get children(){var e=eu();return e.addEventListener(`error`,()=>i(!0)),Y(e,`src`,t),e}})}function Ou(e){let t=e.replace(/^https?:\/\//,``).replace(/^www\./,``).trim();if(!t)return`·`;let n=t.split(/[\s.\-_/]+/).filter(Boolean);return n.length>=2&&n[0][0]&&n[1][0]?(n[0][0]+n[1][0]).toUpperCase():(n[0]??t).slice(0,2).toUpperCase()}function ku(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)|0;return`hsl(${(t%360+360)%360}, 32%, 26%)`}function Au(e){return(()=>{var t=tu();return Z(t,()=>Ou(e.title)),B(n=>tt(t,`background`,ku(e.title))),t})()}nu();var ju=ru(),Mu=iu();function Nu(e){let[t,n]=z(``),[r,i]=z(new Set),[a,o]=z(!1),[s,c]=z(!1),[l,u]=z(new Set),[d,f]=z(!1),p,m,h=e=>{p=e,setTimeout(()=>e.focus(),50)};te(()=>{e.searchSeedNonce;let t=e.searchSeed;t&&(n(t),requestAnimationFrame(()=>{p?.focus(),p?.setSelectionRange(t.length,t.length)}))});function g(){c(!0),u(new Set)}function _(){c(!1),u(new Set)}function v(e){let t=new Set(l());t.has(e)?t.delete(e):t.add(e),u(t)}let y=V(()=>{let t=new Set;for(let n of e.entries)for(let e of n.tags??[])t.add(e);return Array.from(t).sort()}),b=V(()=>y().length>0);function x(e){let t=new Set(r());t.has(e)?t.delete(e):t.add(e),i(t)}function S(e,t){e=e.toLowerCase(),t=t.toLowerCase();let n=0;for(let r=0;r<t.length&&n<e.length;r++)t[r]===e[n]&&n++;return n===e.length}function C(e,t){return t.toLowerCase().startsWith(e.toLowerCase())}function w(e,t){if(!t)return!1;if(e.passkey?.rpId===t)return!0;if(e.type!==`login`)return!1;if(e.url&&Zl(e.url)===t)return!0;for(let n of e.additionalUrls??[])if(Zl(n)===t)return!0;return!1}let T=V(()=>{let n=e.entries;a()&&(n=n.filter(e=>e.type===`note`)),r().size>0&&(n=n.filter(e=>Array.from(r()).every(t=>e.tags?.includes(t))));let i=t().trim();if(i){let e=e=>{if(e.type===`note`)return`${e.title} ${e.notes??``}`;let t=e.passkey?` ${e.passkey.rpId} ${e.passkey.userName} ${e.passkey.userDisplayName}`:``;return`${e.title} ${e.url??``} ${e.username??``}${t}`};return n=n.filter(t=>S(i,e(t))).sort((t,n)=>{let r=e(t).toLowerCase(),a=e(n).toLowerCase(),o=i.toLowerCase(),s=C(o,r),c=C(o,a);return s&&!c?-1:!s&&c?1:0}),n}let o=e.currentTabDomain??``,s=e.sortOrder;return s===`az`?[...n].sort((e,t)=>e.title.localeCompare(t.title)):s===`za`?[...n].sort((e,t)=>t.title.localeCompare(e.title)):s===`recent`?[...n].sort((e,t)=>(t.createdAt??0)-(e.createdAt??0)):o?[...n].sort((e,t)=>!w(e,o)-+!w(t,o)):n}),E=V(()=>T().map(e=>e.id)),D=V(()=>E().length>0&&E().every(e=>l().has(e)));function O(){D()?u(new Set):u(new Set(E()))}async function k(){let t=Array.from(l());!t.length||!e.onDeleteMany||(f(!0),await e.onDeleteMany(t),f(!1),_())}function A(t){if(t.key===`ArrowDown`)t.preventDefault(),(m?.querySelector(`.peach-entry-row`))?.focus();else if(t.key===`ArrowUp`){t.preventDefault();let e=m?.querySelectorAll(`.peach-entry-row`);e?.[e.length-1]?.focus()}else if(t.key===`Enter`){t.preventDefault();let n=T()[0];n&&e.onSelectEntry(n)}else t.key===`Escape`&&s()&&_()}function j(t){if(!m)return;let n=Array.from(m.querySelectorAll(`.peach-entry-row`)),r=n.indexOf(document.activeElement);t.key===`ArrowDown`?(t.preventDefault(),r<n.length-1&&n[r+1]?.focus()):t.key===`ArrowUp`?(t.preventDefault(),r===0?p?.focus():n[r-1]?.focus()):t.key===`Escape`&&(s()?_():e.onClose())}let M=[{key:`url-first`,label:`smart`},{key:`az`,label:`A–Z`},{key:`za`,label:`Z–A`},{key:`recent`,label:`newest`}];return(()=>{var i=du(),c=i.firstChild,u=c.firstChild,f=u.nextSibling,p=f.nextSibling,S=c.nextSibling,C=S.nextSibling;$e(u,`click`,e.onClose,!0),f.$$keydown=A,f.$$input=e=>n(e.currentTarget.value),nt(h,f),Z(p,(()=>{var n=q(()=>!!(t()||r().size>0));return()=>n()?`${T().length} of ${e.entries.length}`:`${e.entries.length} entries`})()),Z(S,G(K,{get when(){return s()},get fallback(){return[G(Ue,{each:M,children:({key:t,label:n})=>(()=>{var r=gu();return r.$$click=()=>e.onSortOrderChange(t),Z(r,n),B(()=>X(r,`peach-sort-btn${e.sortOrder===t?` is-active`:``}`)),r})()}),fu(),(()=>{var e=pu();return e.$$click=()=>o(e=>!e),Z(e,Mu),B(()=>X(e,`peach-sort-trash-btn${a()?` is-active`:``}`)),e})(),G(K,{get when(){return e.onOpenTrash},get children(){var t=mu();return $e(t,`click`,e.onOpenTrash,!0),t}}),G(K,{get when(){return e.onDeleteMany},get children(){var e=hu();return e.$$click=g,e}})]},get children(){return[(()=>{var e=au();return e.$$click=_,e})(),(()=>{var e=ou();return Z(e,(()=>{var e=q(()=>l().size>0);return()=>e()?`${l().size} selected`:`select entries`})()),e})(),(()=>{var e=su();return e.$$click=O,Z(e,()=>D()?`none`:`all`),e})()]}})),Z(i,G(K,{get when(){return q(()=>!!b())()&&!s()},get children(){var e=cu();return Z(e,G(Ue,{get each(){return y()},children:e=>(()=>{var t=gu();return t.$$click=()=>x(e),Z(t,e),B(()=>X(t,`peach-tag-filter-chip ${r().has(e)?`is-selected`:``}`)),t})()})),e}}),C),C.$$keydown=j;var E=m;return typeof E==`function`?nt(E,C):m=C,Z(C,G(K,{get when(){return T().length>0},get fallback(){return _u()},get children(){return G(Ue,{get each(){return T()},children:(t,n)=>{let r=t.type===`note`,i=t.passkey!==void 0,a=t.type===`note`?t.notes?.slice(0,40)??`note`:t.url?Ql(t.url):t.passkey?.rpId?t.passkey.rpId:`saved entry`,o=()=>e.currentTabDomain!==void 0&&e.currentTabDomain!==``&&w(t,e.currentTabDomain),c=()=>l().has(t.id);return(()=>{var l=wu(),u=l.firstChild,d=u.nextSibling.firstChild,f=d.nextSibling;return l.$$click=()=>{s()?v(t.id):e.onSelectEntry(t)},Z(u,G(K,{get when(){return s()},get fallback(){return G(Du,{get domain(){return q(()=>!!t.url)()?Ql(t.url):``},get title(){return t.title},isNote:r,isPasskey:i})},get children(){var e=yu(),t=e.firstChild;return Z(e,G(K,{get when(){return c()},get children(){return vu()}}),null),B(e=>{var n=c()?`var(--peach-accent)`:`transparent`,r=c()?`1`:`0.3`;return n!==e.e&&Y(t,`fill`,e.e=n),r!==e.t&&Y(t,`opacity`,e.t=r),e},{e:void 0,t:void 0}),e}})),Z(d,()=>t.title,null),Z(d,G(K,{get when(){return i&&!s()},get children(){return bu()}}),null),Z(d,G(K,{get when(){return q(()=>!!o())()&&!s()},get children(){return xu()}}),null),Z(f,a),Z(l,G(K,{get when(){return q(()=>!!t.breach)()&&!s()},get children(){return Su()}}),null),Z(l,G(K,{get when(){return q(()=>!!t.canary)()&&!s()},get children(){var e=Cu();return B(()=>Y(e,`title`,`Canary: ${t.canary?.label??`canary entry`}`)),e}}),null),B(r=>{var i=`peach-entry-row${!s()&&e.selectedEntryId===t.id?` is-active`:``}${!s()&&o()?` is-tab-match`:``}${s()&&c()?` is-selected`:``}`,a=`${Math.min(n(),24)*20}ms`,d=`peach-entry-row-icon${!s()&&t.breach?` is-breach`:``}${s()?` is-select-icon`:``}`;return i!==r.e&&X(l,r.e=i),a!==r.t&&tt(l,`animation-delay`,r.t=a),d!==r.a&&X(u,r.a=d),r},{e:void 0,t:void 0,a:void 0}),l})()}})}})),Z(i,G(K,{get when(){return s()},get fallback(){return(()=>{var t=Tu();return $e(t,`click`,e.onAdd,!0),t})()},get children(){var e=uu();return e.firstChild,e.$$click=()=>void k(),Z(e,G(K,{get when(){return l().size>0},get fallback(){return Eu()},get children(){var e=lu();return Z(e,(()=>{var e=q(()=>!!d());return()=>e()?`moving to trash…`:`move ${l().size} to trash`})()),e}}),null),B(t=>{var n=`peach-select-action-bar${l().size===0?` is-empty`:``}`,r=l().size===0||d();return n!==t.e&&X(e,t.e=n),r!==t.t&&(e.disabled=t.t=r),t},{e:void 0,t:void 0}),e}}),null),B(()=>X(C,`peach-vault-list${s()?` is-selecting`:``}`)),B(()=>f.value=t()),i})()}Qe([`click`,`input`,`keydown`]);function Pu(){if(typeof chrome>`u`)return`unknown`;if(chrome.webAuthenticationProxy)return`chrome`;try{if((chrome.runtime?.getURL?.(``)??``).startsWith(`moz-extension://`))return`firefox`}catch{}return`unknown`}function Fu(){if(Pu()!==`firefox`)return NaN;let e=navigator.userAgent.match(/Firefox\/(\d+)/);return e?Number(e[1]):NaN}async function Iu(e,t){let n=!1;try{await navigator.clipboard.writeText(e),n=!0}catch{}let r=await Q({type:`COPY`,payload:{text:e,label:t,alreadyWritten:n}});return n||!!r?.ok}function Lu(e={}){let{length:t=20,includeUppercase:n=!0,includeLowercase:r=!0,includeNumbers:i=!0,includeSymbols:a=!0,forbiddenChars:o=``}=e,s=new Set(o),c=e=>s.size===0?e:Array.from(e).filter(e=>!s.has(e)).join(``),l=``;r&&(l+=c(`abcdefghijklmnopqrstuvwxyz`)),n&&(l+=c(`ABCDEFGHIJKLMNOPQRSTUVWXYZ`)),i&&(l+=c(`0123456789`)),a&&(l+=c(`!@#$%^&*`)),l.length===0&&(l=c(`abcdefghijklmnopqrstuvwxyz`)||`abcdefghijklmnopqrstuvwxyz`);let u=crypto.getRandomValues(new Uint32Array(t)),d=``;for(let e=0;e<t;e++)d+=l[u[e]%l.length];return d}var Ru=J(`<svg width=13 height=13 viewBox="0 0 13 13"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round><path d="M11 2.5A5.5 5.5 0 1 0 12.5 7"></path><path d="M9.5 2.5H11V1">`),zu=J(`<span class=peach-copy-icon><svg class=peach-copy-icon-svg width=12 height=12 viewBox="0 0 14 14"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round stroke-linejoin=round><rect x=4 y=4 width=8 height=9 rx=1.5></rect><path d="M10 4V2.5A1.5 1.5 0 0 0 8.5 1h-6A1.5 1.5 0 0 0 1 2.5v7A1.5 1.5 0 0 0 2.5 11H4">`),Bu=J(`<div class=peach-pwgen-compact-display-row><span class=peach-pwgen-compact-output></span><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label=Regenerate></button><button aria-label=Copy><span class=peach-copy-sheen>`),Vu=J(`<div class=peach-pwgen-compact-controls><input type=range class="peach-pwgen-slider peach-pwgen-compact-slider"min=8 max=128><span class=peach-pwgen-len-num></span><div class=peach-pwgen-compact-pills><button type=button>A-Z</button><button type=button>a-z</button><button type=button>0-9</button><button type=button>!@#</button></div><button class="peach-btn peach-btn--accent peach-btn--sm peach-pwgen-compact-use">use`),Hu=J(`<div class=peach-pwgen-display-row><p class=peach-pwgen-output-display></p><div class=peach-pwgen-display-actions><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label="Regenerate password"></button><button aria-label="Copy password"><span class=peach-copy-sheen>`),Uu=J(`<div class=peach-pwgen-length-row><div class=peach-pwgen-length-labels><span class=peach-label>length</span><span class=peach-pwgen-len-num></span></div><input type=range class=peach-pwgen-slider min=8 max=128>`),Wu=J(`<div class=peach-pwgen-charset-pills><button type=button>A-Z</button><button type=button>a-z</button><button type=button>0-9</button><button type=button>!@#`),Gu=J(`<button class="peach-btn peach-btn--accent peach-btn--sm peach-pwgen-use-btn">use this password`),Ku=J(`<div><div class=peach-generator-drawer-inner><div>`);function qu(e){let[t,n]=z(``),[r,i]=z(20),[a,o]=z(!0),[s,c]=z(!0),[l,u]=z(!0),[d,f]=z(!0),[p,m]=z(``),[h,g]=z(!1);function _(e){let t=r(),n=d();e.minLength&&(t=Math.max(t,e.minLength)),e.maxLength&&(t=Math.min(t,e.maxLength)),e.forbidsSymbols&&(n=!1),e.requiresSymbols&&(n=!0),i(t),f(n),m(e.forbiddenChars??``)}ae(async()=>{if(e.policy)_(e.policy);else{let e=(await Q({type:`GET_SITE_PASSWORD_POLICY`})).data;e&&Object.keys(e).length>0&&_(e)}v()});function v(e){n(Lu({length:e?.length??r(),includeUppercase:e?.upper??a(),includeLowercase:e?.lower??s(),includeNumbers:e?.numbers??l(),includeSymbols:e?.symbols??d(),forbiddenChars:p()}))}async function y(e){if(await Iu(t(),`password`)){if(Dp(),Op(),g(!0),e){e.classList.remove(`is-retreat`);let t=document.createElement(`span`);t.className=`peach-copy-drain`;let n=document.createElement(`span`);n.className=`peach-copy-drain-bar`,t.appendChild(n),e.appendChild(t),window.setTimeout(()=>{g(!1),e.classList.remove(`is-copied`),e.classList.add(`is-retreat`),t.remove(),window.setTimeout(()=>e.classList.remove(`is-retreat`),160)},1400);return}window.setTimeout(()=>g(!1),1400)}}function b(){let e=!a();o(e),v({upper:e})}function x(){let e=!s();c(e),v({lower:e})}function S(){let e=!l();u(e),v({numbers:e})}function C(){let e=!d();f(e),v({symbols:e})}let w=()=>{let e=t();return e.length>48?`16px`:e.length>24?`20px`:`24px`},T=()=>Ru(),E=()=>zu();return(()=>{var n=Ku(),o=n.firstChild.firstChild;return Z(o,G(K,{get when(){return e.compact},get children(){return[(()=>{var e=Bu(),n=e.firstChild,r=n.nextSibling,i=r.nextSibling,a=i.firstChild;return Z(n,t),r.$$click=()=>v(),Z(r,G(T,{})),i.$$click=e=>y(e.currentTarget),Z(i,G(E,{}),a),B(()=>X(i,`peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn peach-copy-btn ${h()?`is-copied`:``}`)),e})(),(()=>{var n=Vu(),o=n.firstChild,c=o.nextSibling,u=c.nextSibling,f=u.firstChild,p=f.nextSibling,m=p.nextSibling,h=m.nextSibling,g=u.nextSibling;return o.$$input=e=>{let t=parseInt(e.target.value,10);i(t),v({length:t})},Z(c,r),f.$$click=b,p.$$click=x,m.$$click=S,h.$$click=C,g.$$click=()=>e.onUse(t()),B(e=>{var t=`peach-pwgen-pill ${a()?`is-on`:``}`,n=`peach-pwgen-pill ${s()?`is-on`:``}`,r=`peach-pwgen-pill ${l()?`is-on`:``}`,i=`peach-pwgen-pill ${d()?`is-on`:``}`;return t!==e.e&&X(f,e.e=t),n!==e.t&&X(p,e.t=n),r!==e.a&&X(m,e.a=r),i!==e.o&&X(h,e.o=i),e},{e:void 0,t:void 0,a:void 0,o:void 0}),B(()=>o.value=r()),n})()]}}),null),Z(o,G(K,{get when(){return!e.compact},get children(){return[(()=>{var e=Hu(),n=e.firstChild,r=n.nextSibling.firstChild,i=r.nextSibling,a=i.firstChild;return Z(n,t),r.$$click=()=>v(),Z(r,G(T,{})),i.$$click=e=>y(e.currentTarget),Z(i,G(E,{}),a),B(e=>{var t=w(),r=`peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn peach-copy-btn ${h()?`is-copied`:``}`;return t!==e.e&&tt(n,`font-size`,e.e=t),r!==e.t&&X(i,e.t=r),e},{e:void 0,t:void 0}),e})(),(()=>{var e=Uu(),t=e.firstChild,n=t.firstChild.nextSibling,a=t.nextSibling;return Z(n,r),a.$$input=e=>{let t=parseInt(e.target.value,10);i(t),v({length:t})},B(()=>a.value=r()),e})(),(()=>{var e=Wu(),t=e.firstChild,n=t.nextSibling,r=n.nextSibling,i=r.nextSibling;return t.$$click=b,n.$$click=x,r.$$click=S,i.$$click=C,B(e=>{var o=`peach-pwgen-pill ${a()?`is-on`:``}`,c=`peach-pwgen-pill ${s()?`is-on`:``}`,u=`peach-pwgen-pill ${l()?`is-on`:``}`,f=`peach-pwgen-pill ${d()?`is-on`:``}`;return o!==e.e&&X(t,e.e=o),c!==e.t&&X(n,e.t=c),u!==e.a&&X(r,e.a=u),f!==e.o&&X(i,e.o=f),e},{e:void 0,t:void 0,a:void 0,o:void 0}),e})(),(()=>{var n=Gu();return n.$$click=()=>e.onUse(t()),n})()]}}),null),B(t=>{var r=`peach-generator-drawer ${e.open?`is-open`:``}`,i=`peach-generator-drawer-content${e.compact?` peach-generator-drawer-content--compact`:``}`;return r!==t.e&&X(n,t.e=r),i!==t.t&&X(o,t.t=i),t},{e:void 0,t:void 0}),n})()}Qe([`click`,`input`]);var Ju=J(`<span style=font-family:Inter,system-ui,sans-serif;font-weight:700;font-size:11px>B`),Yu=J(`<span style="font-family:'Cormorant Garamond',serif;font-style:italic;font-size:13px">I`),Xu=J(`<span style="text-decoration:underline;font-size:10px;font-family:'IBM Plex Mono',monospace">U`),Zu=J(`<span style="text-decoration:line-through;font-size:10px;font-family:'IBM Plex Mono',monospace">S`),Qu=J(`<span style=font-family:Inter,system-ui,sans-serif;font-weight:600;font-size:10px;letter-spacing:0.03em>H`),$u=J(`<svg width=12 height=11 viewBox="0 0 12 11"fill=none stroke=currentColor stroke-width=1 stroke-linecap=round><circle cx=1.5 cy=2.5 r=1 fill=currentColor stroke=none></circle><line x1=4 y1=2.5 x2=11 y2=2.5></line><circle cx=1.5 cy=6 r=1 fill=currentColor stroke=none></circle><line x1=4 y1=6 x2=11 y2=6></line><circle cx=1.5 cy=9.5 r=1 fill=currentColor stroke=none></circle><line x1=4 y1=9.5 x2=11 y2=9.5>`),ed=J(`<svg width=12 height=11 viewBox="0 0 12 11"fill=none stroke=currentColor stroke-width=1 stroke-linecap=round><text x=0 y=4 font-size=4 fill=currentColor stroke=none font-family=monospace>1.</text><line x1=4 y1=2.5 x2=11 y2=2.5></line><text x=0 y=7.5 font-size=4 fill=currentColor stroke=none font-family=monospace>2.</text><line x1=4 y1=6 x2=11 y2=6></line><text x=0 y=11 font-size=4 fill=currentColor stroke=none font-family=monospace>3.</text><line x1=4 y1=9.5 x2=11 y2=9.5>`),td=J(`<svg width=12 height=8 viewBox="0 0 12 8"fill=none stroke=currentColor stroke-width=1 stroke-linecap=round><line x1=0 y1=4 x2=12 y2=4></line><line x1=2 y1=1.5 x2=2 y2=6.5 stroke-width=0.6 opacity=0.5></line><line x1=10 y1=1.5 x2=10 y2=6.5 stroke-width=0.6 opacity=0.5>`),nd=J(`<div><button class=peach-note-tool-btn title="Bold (⌘B)"></button><button class=peach-note-tool-btn title="Italic (⌘I)"></button><button class=peach-note-tool-btn title="Underline (⌘U)"></button><button class=peach-note-tool-btn title=Strikethrough></button><div class=peach-note-tool-divider></div><button class=peach-note-tool-btn title=Heading></button><button class="peach-note-tool-btn peach-note-tool-icon"title="Bullet list"></button><button class="peach-note-tool-btn peach-note-tool-icon"title="Numbered list"></button><div class=peach-note-tool-divider></div><button class="peach-note-tool-btn peach-note-tool-icon"title=Divider>`),rd=J(`<div class=peach-note-editor-inline><div class="peach-note-editor-body peach-note-editor-body--inline"contenteditable=true aria-multiline=true aria-label="Note content">`);function id(e){return/<\/?[a-z]/i.test(e)?e:e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/\n/g,`<br>`)}var ad=()=>Ju(),od=()=>Yu(),sd=()=>Xu(),cd=()=>Zu(),ld=()=>Qu(),ud=()=>$u(),dd=()=>ed(),fd=()=>td();function pd(e){let t=e.exec;function n(){t(`formatBlock`,document.queryCommandValue(`formatBlock`).toLowerCase()===`h2`?`p`:`h2`)}return(()=>{var r=nd(),i=r.firstChild,a=i.nextSibling,o=a.nextSibling,s=o.nextSibling,c=s.nextSibling.nextSibling,l=c.nextSibling,u=l.nextSibling,d=u.nextSibling.nextSibling;return i.$$mousedown=e=>{e.preventDefault(),t(`bold`)},Z(i,G(ad,{})),a.$$mousedown=e=>{e.preventDefault(),t(`italic`)},Z(a,G(od,{})),o.$$mousedown=e=>{e.preventDefault(),t(`underline`)},Z(o,G(sd,{})),s.$$mousedown=e=>{e.preventDefault(),t(`strikeThrough`)},Z(s,G(cd,{})),c.$$mousedown=e=>{e.preventDefault(),n()},Z(c,G(ld,{})),l.$$mousedown=e=>{e.preventDefault(),t(`insertUnorderedList`)},Z(l,G(ud,{})),u.$$mousedown=e=>{e.preventDefault(),t(`insertOrderedList`)},Z(u,G(dd,{})),d.$$mousedown=e=>{e.preventDefault(),t(`insertHorizontalRule`)},Z(d,G(fd,{})),B(()=>X(r,e.class??`peach-note-toolbar`)),r})()}function md(e){let t;ae(()=>{t&&(t.innerHTML=id(e.initialContent),e.autoFocus!==!1&&t.focus(),e.onReady?.(t))}),te(ie(()=>e.entryKey,(n,r)=>{r===void 0||n===r||!t||(t.innerHTML=id(e.initialContent),e.onReady?.(t))}));function n(e,n){document.execCommand(e,!1,n),t?.focus()}function r(e){let t=e.metaKey||e.ctrlKey;e.key.length!==1&&(t&&e.key===`b`&&(e.preventDefault(),n(`bold`)),t&&e.key===`i`&&(e.preventDefault(),n(`italic`)),t&&e.key===`u`&&(e.preventDefault(),n(`underline`)))}return(()=>{var n=rd(),i=n.firstChild;i.addEventListener(`blur`,()=>e.onBlur?.(t?.innerHTML??``)),i.$$input=()=>e.onContentChange?.(t?.innerHTML??``),i.$$keydown=r;var a=t;return typeof a==`function`?nt(a,i):t=i,n})()}Qe([`mousedown`,`keydown`,`input`]);var hd=J(`<div class=peach-ghost aria-hidden=true style="position:absolute;top:30px;left:12px;right:0;font-family:'Cormorant Garamond',Georgia,serif;font-size:150px;font-style:italic;font-weight:400;color:var(--t0);opacity:0.03;pointer-events:none;line-height:1;overflow:hidden;white-space:nowrap;z-index:0">`),gd=J(`<div class=peach-stage style=position:relative>`),_d=J(`<div class=peach-breach-badge><svg width=10 height=10 viewBox="0 0 12 12"fill=none stroke=var(--breach) stroke-width=1.5 stroke-linecap=round><path d="M6 1L11 10H1L6 1z"></path><line x1=6 y1=5 x2=6 y2=7.5></line><circle cx=6 cy=9 r=0.5 fill=var(--breach) stroke=none></circle></svg><span style=flex:1>found in a known data breach</span><button class="peach-btn peach-btn--sm peach-btn--accent peach-breach-action">Change password`),vd=J(`<div class=peach-inline-title-wrap><input class=peach-inline-title-input>`),yd=J(`<div class=peach-entry-trash-confirm><span class=peach-entry-trash-confirm-label>trash?</span><button class="peach-btn peach-btn--sm peach-btn--danger"style="font-size:10px;padding:2px 8px;min-height:22px">yes</button><button class="peach-btn peach-btn--ghost peach-btn--sm"style="font-size:10px;padding:2px 8px;min-height:22px">no`),bd=J(`<div class=peach-entry-header><div class=peach-entry-header-name>`),xd=J(`<span class="peach-label peach-additional-urls-label">also matches`),Sd=J(`<button class="peach-add-field-link peach-additional-urls-add peach-additional-urls-add-current"type=button>+ add current site`),Cd=J(`<div class="peach-inline-field-wrap peach-inline-field-wrap--url"><div class=peach-inline-field-row><input class=peach-inline-input type=url placeholder=https://></div><div class=peach-additional-urls><button class="peach-add-field-link peach-additional-urls-add"type=button>+ add another url`),wd=J(`<div class=peach-domain style=position:relative;z-index:1>`),Td=J(`<div title="Click to edit tags"style="display:flex;flex-wrap:wrap;gap:5px;margin:2px 0;position:relative;z-index:1;cursor:pointer">`),Ed=J(`<div class=peach-entry-note-toolbar-row>`),Dd=J(`<section class="peach-fields peach-note-body"style=position:relative;z-index:1>`),Od=J(`<span class=peach-card-network-badge style=margin-left:0;margin-right:6px>`),kd=J(`<div class=peach-field-card style=padding-bottom:4px><span class=peach-label>`),Ad=J(`<button aria-label="Copy cardholder name"><span class=peach-copy-sheen>`),jd=J(`<span>`),Md=J(`<button aria-label="Copy card number"><span class=peach-copy-sheen>`),Nd=J(`<div class=peach-field-card><span class=peach-label>expiry</span><div class=peach-field-value-row><span class=peach-field-value> / </span><button aria-label="Copy expiry"><span class=peach-copy-sheen>`),Pd=J(`<div class=peach-field-card><span class=peach-label>CVC</span><div class=peach-field-value-row><span class=peach-field-value></span><div class=peach-field-actions><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"></button><button aria-label="Copy CVC"><span class=peach-copy-sheen>`),Fd=J(`<section class=peach-fields style=position:relative;z-index:1><div class=peach-field-card><span class=peach-label>cardholder name</span><div class=peach-field-value-row><span class=peach-field-value></span></div></div><div class=peach-field-card><span class=peach-label>card number</span><div class=peach-field-value-row><span class="peach-field-value peach-card-number"></span><div class=peach-field-actions><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn">`),Id=J(`<div class=peach-inline-field-wrap><input class=peach-inline-input autocomplete=off>`),Ld=J(`<div class=peach-inline-field-wrap><div class=peach-password-edit-row><input class=peach-inline-input placeholder="paste or type a password"autocomplete=new-password><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"type=button></button></div><button class=peach-generate-toggle-link type=button><svg width=10 height=10 viewBox="0 0 13 13"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round><path d="M11 2.5A5.5 5.5 0 1 0 12.5 7"></path><path d="M9.5 2.5H11V1">`),Rd=J(`<section class=peach-fields style=position:relative;z-index:1><div class=peach-field-card><span class=peach-label>username</span></div><div class=peach-field-card><span class=peach-label>password`),zd=J(`<div class=peach-inline-field-wrap><textarea class=peach-inline-textarea rows=4>`),Bd=J(`<div style=position:relative;z-index:1;margin-top:6px><span class=peach-label style=display:block;margin-bottom:4px>notes`),Vd=J(`<div class=peach-inline-tag-editor><span class=peach-label>tags</span><div class=peach-tag-input-wrap><input class=peach-tag-input style=flex:1;min-width:80px;background:transparent;border:none;outline:none;color:var(--t1);font-size:12px;padding:2px>`),Hd=J(`<div class="peach-inline-field-wrap peach-inline-field-wrap--totp"><span class=peach-label>2-factor</span><input class=peach-inline-input placeholder="otpauth://... or base32 secret"autocomplete=off>`),Ud=J(`<section class=peach-totp-band>`),Wd=J(`<div style=height:4px>`),Gd=J(`<button class=peach-entry-name-button title="Click to edit title"><h1><span class=peach-entry-name-text>`),Kd=J(`<span class=peach-entry-name-char>`),qd=J(`<button class=peach-entry-trash-btn aria-label="Move to trash"title="Delete entry"><svg width=12 height=13 viewBox="0 0 12 13"fill=none stroke=currentColor stroke-width=1 stroke-linecap=round stroke-linejoin=round><path d="M1 3h10M4 3V2h4v1M2 3l.7 8.5a1 1 0 0 0 1 .9h4.6a1 1 0 0 0 1-.9L10 3"></path><path d="M4.5 6l.3 3.5M7.5 6l-.3 3.5">`),Jd=J(`<img width=16 height=16 alt style=border-radius:3px;margin-right:5px;flex-shrink:0>`),Yd=J(`<div class="peach-domain-row peach-inline-clickable"title="Click to edit URL"><span class=peach-domain-value></span><span class=peach-inline-edit-hint>edit`),Xd=J(`<div class=peach-additional-url-row><input class=peach-inline-input type=url placeholder=https://><button class=peach-additional-url-remove type=button aria-label="Remove URL">×`),Zd=J(`<span class=peach-tag-chip style="font-size:10px;padding:2px 8px">`),Qd=J(`<span class=peach-password-mask>•••`),$d=J(`<button aria-label="Copy username"><span class=peach-copy-sheen>`),ef=J(`<div class=peach-field-value-row><span class="peach-field-value peach-inline-clickable"title="Click to edit">`),tf=J(`<span style=color:var(--t2);font-style:italic>click to add username`),nf=J(`<span class=peach-password-text>`),rf=J(`<div class=peach-field-value-row><span class=peach-password-value title="Click to edit password"style=cursor:pointer></span><div class=peach-field-actions><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label="Reveal password"></button><button aria-label="Copy password"><span class=peach-copy-sheen>`),af=J(`<span class=peach-password-mask aria-label="password hidden">••••••••••••••`),of=J(`<button class="peach-add-field-link peach-entry-add-link">+ notes`),sf=J(`<div class="peach-note-content peach-inline-clickable"style=cursor:text;white-space:pre-wrap>`),cf=J(`<button class="peach-add-field-link peach-entry-add-link">+ tags`),lf=J(`<span class=peach-tag-chip><button class=peach-tag-chip-remove>×`),uf=J(`<button class="peach-add-field-link peach-entry-add-link">+ 2FA`),df=J(`<div class=peach-totp-main title="Click to copy · double-click to edit"><span class=peach-label>2-factor</span><div class=peach-totp-code-row><p><span class=peach-totp-code-text> `),ff=J(`<div class=peach-totp-meta><span class=peach-label>expires</span><div class=peach-totp-countdown>s</div><svg class=peach-totp-ring width=44 height=44 viewBox="0 0 44 44"><circle cx=22 cy=22 r=17 class=peach-totp-ring-track></circle><circle cx=22 cy=22 r=17 class=peach-totp-ring-progress stroke-dasharray=106.8>`),pf=J(`<div class="peach-info-notice peach-info-notice--warn">`),mf=J(`<section class="peach-fields peach-passkey-section"style=position:relative;z-index:1;margin-top:6px><div class=peach-field-card><span class=peach-label>passkey · </span><div class=peach-field-value-row><span class=peach-field-value></span><span class=peach-passkey-badge>passkey</span></div></div><div class=peach-field-card><span class=peach-label>algorithm</span><div class=peach-field-value-row><span class=peach-field-value></span></div></div><div class=peach-field-card><span class=peach-label>activity</span><div class="peach-field-value-row peach-passkey-activity"><span class=peach-field-value>used <!> time</span><span class=peach-passkey-meta>created </span><span class=peach-passkey-meta>last used </span></div></div><div class=peach-info-notice></div><button class="peach-add-field-link peach-entry-add-link"style=color:rgba(220,38,38,0.7)>− remove passkey`),hf=J(`<div class=peach-inline-actions><button class=peach-inline-save-btn aria-label=Save title="Save (Enter)"><svg width=11 height=9 viewBox="0 0 11 9"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round stroke-linejoin=round><path d="M1 4.5L4 7.5L10 1.5"></path></svg></button><button class=peach-inline-cancel-btn aria-label=Cancel title="Cancel (Esc)"><svg width=9 height=9 viewBox="0 0 9 9"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round><path d="M1 1L8 8M8 1L1 8">`),gf=J(`<div class=peach-entry-name-wrap style=position:relative;z-index:1><div class=peach-entry-name><span class=peach-entry-name-text><span class=peach-entry-name-char style=--char-index:0>e</span><span class=peach-entry-name-char style=--char-index:1>m</span><span class=peach-entry-name-char style=--char-index:2>p</span><span class=peach-entry-name-char style=--char-index:3>t</span><span class=peach-entry-name-char style=--char-index:4>y`),_f=J(`<div class=peach-empty-copy><span class=peach-label>vault</span><p>Your vault is ready for its first entry.`),vf=J(`<span class=peach-copy-icon><svg class=peach-copy-icon-svg width=12 height=12 viewBox="0 0 14 14"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round stroke-linejoin=round><rect x=4 y=4 width=8 height=9 rx=1.5></rect><path d="M10 4V2.5A1.5 1.5 0 0 0 8.5 1h-6A1.5 1.5 0 0 0 1 2.5v7A1.5 1.5 0 0 0 2.5 11H4">`),yf=J(`<svg width=14 height=10 viewBox="0 0 14 10"fill=none stroke=currentColor stroke-width=0.9 stroke-linecap=round><path d="M1 2C3 4.5 5 6 7 6C9 6 11 4.5 13 2"></path><path d="M3.5 5.5L2.5 7.5"></path><path d="M7 6.5V8.5"></path><path d="M10.5 5.5L11.5 7.5">`),bf=J(`<svg width=14 height=10 viewBox="0 0 14 10"fill=none stroke=currentColor stroke-width=0.9 stroke-linecap=round><path d="M1 5C1 5 2.8 1 7 1C11.2 1 13 5 13 5C13 5 11.2 9 7 9C2.8 9 1 5 1 5Z"></path><circle cx=7 cy=5 r=1.75>`);function xf(e){let[t,n]=z(null),[r,i]=z(``),[a,o]=z(!1),[s,c]=z(!1),[l,u]=z(!1),[d,f]=z(null),[p,m]=z([]),[h,g]=z(!1),[_,v]=z([]),[y,b]=z(``),[x,S]=z(!1),[C,w]=z(!1),[T,E]=z(0),[D,O]=z(!1),[k,A]=z(!1),[j,M]=z(null),[N,P]=z(null),F=null;function I(e,t){document.execCommand(e,!1,t),N()?.focus()}async function L(t){let n=e.entry;if(n&&t!==(n.notes??``)&&!(F!==null&&t===F)){F=t,o(!0);try{await Q({type:`UPDATE_ENTRY`,payload:{id:n.id,patch:{notes:t}}}),Dp(),await e.onFieldSaved()}catch{F=null}finally{o(!1)}}}let R=window.setInterval(()=>E(e=>e+1),1e3);oe(()=>window.clearInterval(R));let ee=V(()=>e.entry?.url?Ql(e.entry.url):``);te(()=>{let e=ee();M(e?$l(e):null)}),te(()=>{e.entry?.id,O(!1),n(null),g(!1)});let ne=V(()=>(T(),e.entry?.totp?gi(e.entry.totp):null)),re;te(()=>{let e=ne();if(!e){re=void 0;return}re!==void 0&&e.code!==re&&(A(!0),window.setTimeout(()=>A(!1),3e3)),re=e.code});let H=V(()=>{let e=ne();return e?(e.remaining-1)/29*100:0});te(()=>{let e=document.getElementById(`hd-shell`);if(e){if(!ne()){delete e.dataset.totpActive,e.style.removeProperty(`--peach-totp-progress`);return}e.dataset.totpActive=`true`,e.style.setProperty(`--peach-totp-progress`,`${Math.max(0,H())}%`),oe(()=>{delete e.dataset.totpActive,e.style.removeProperty(`--peach-totp-progress`)})}});let ie=V(()=>{let t=e.entry?.title.length??0;return t>=28?`peach-entry-name--xxl`:t>=20?`peach-entry-name--xl`:t>=14?`peach-entry-name--lg`:``}),ae=V(()=>(e.entry?.title.length??0)<=13);function se(t,r){n(t),i(r),u(!1),O(!1),t===`url`&&m([...e.entry?.additionalUrls??[]])}function ce(e,t,n){let r=e.trim();return!r||t.trim()===r?!0:n.some(e=>e.trim()===r)}function le(e){if(e){if(!r().trim()){i(e);return}ce(e,r(),p())||m(t=>[...t,e])}}async function ue(){let i=t(),a=e.entry;if(!i||!a)return;let s=i===`password`?r():r().trim();if(i===`totp`&&s.startsWith(`otpauth://`)&&(s=_i(s)?.secret??s),!(i===`password`&&a.type!==`note`&&!s)){o(!0);try{let t={[i]:s};i===`url`&&(t.additionalUrls=p()),await Q({type:`UPDATE_ENTRY`,payload:{id:a.id,patch:t}}),Dp(),n(null),u(!1),await e.onFieldSaved()}catch{}finally{o(!1)}}}function de(){v([...e.entry?.tags??[]]),b(``),g(!0)}function fe(e){let t=e.toLowerCase().trim();!t||t.length>32||_().includes(t)||_().length>=10||(v([..._(),t]),b(``))}async function pe(){y()&&fe(y());let t=e.entry;if(!t)return;let n=_().length>0?_():void 0;g(!1),o(!0);try{await Q({type:`UPDATE_ENTRY`,payload:{id:t.id,patch:{tags:n}}}),Dp(),await e.onFieldSaved()}catch{}finally{o(!1)}}function me(){n(null),i(``),u(!1)}function he(e,t){switch(t){case`title`:return e.title;case`url`:return e.url??``;case`username`:return e.username??``;case`password`:return e.password??``;case`notes`:return e.notes??``;case`totp`:return e.totp??``}}function ge(t,n){let i=n.relatedTarget;if(i instanceof Node&&n.currentTarget.contains(i))return;let a=e.entry;if(!a)return;let o=he(a,t);(t===`password`?r():r().trim())===o&&me()}async function _e(t,n,r){if(await Iu(t,n)){let t=e.entry;if(t?.canary?.webhookUrl){let e=n===`password`?`password_copied`:n===`username`?`username_copied`:void 0;e&&Q({type:`FIRE_CANARY_PING`,payload:{webhookUrl:t.canary.webhookUrl,entryTitle:t.title,trigger:e}})}if(Dp(),Op(),f(null),requestAnimationFrame(()=>f(n)),r){r.classList.remove(`is-copied`,`is-retreat`),r.offsetWidth;let e=document.createElement(`span`);e.className=`peach-copy-drain`;let t=document.createElement(`span`);t.className=`peach-copy-drain-bar`,e.appendChild(t),r.appendChild(e),window.setTimeout(()=>{r.classList.remove(`is-copied`),r.classList.add(`is-retreat`),e.remove(),window.setTimeout(()=>r.classList.remove(`is-retreat`),160)},1800)}window.setTimeout(()=>f(null),1800)}}te(()=>{if(!e.entry)return;let t=t=>{if(!(t.target instanceof HTMLInputElement||t.target instanceof HTMLTextAreaElement||t.target instanceof HTMLSelectElement||t.target.isContentEditable))switch(t.key){case`c`:t.preventDefault(),e.entry?.password&&_e(e.entry.password,`password`);break;case`u`:t.preventDefault(),e.entry?.username&&_e(e.entry.username,`username`);break;case`Escape`:t.preventDefault(),e.onEscape?.();break}};window.addEventListener(`keydown`,t),oe(()=>window.removeEventListener(`keydown`,t))});function ve(e){requestAnimationFrame(()=>{e.focus(),e.select?.()})}function ye(e){e.key===`Enter`&&!(e.target instanceof HTMLTextAreaElement)&&(e.preventDefault(),ue()),e.key===`Escape`&&(e.preventDefault(),me())}return[(()=>{var t=hd();return Z(t,()=>e.entry?.title||`empty`),t})(),(()=>{var n=gd();return Z(n,G(K,{get when(){return e.entry},get fallback(){return G(Cf,{})},children:n=>[G(K,{get when(){return q(()=>n().type!==`note`&&n().type!==`card`)()&&(n().breach??0)>0},get children(){var e=_d(),t=e.firstChild.nextSibling.nextSibling;return t.$$click=()=>{se(`password`,n().password??``),u(!0)},e}}),(()=>{var o=bd(),s=o.firstChild;return Z(s,G(K,{get when(){return t()===`title`},get fallback(){return(()=>{var e=Gd(),t=e.firstChild,r=t.firstChild;return e.$$click=()=>se(`title`,n().title),Z(r,G(K,{get when(){return ae()},get fallback(){return n().title},get children(){return G(Ue,{get each(){return n().title.split(``)},children:(e,t)=>(()=>{var n=Kd();return Z(n,e===` `?`\xA0`:e),B(e=>et(n,`--char-index:${t()}`,e)),n})()})}})),B(e=>{var r=`peach-entry-name ${ie()}`,i=n().title;return r!==e.e&&X(t,e.e=r),i!==e.t&&Y(t,`aria-label`,e.t=i),e},{e:void 0,t:void 0}),e})()},get children(){var e=vd(),t=e.firstChild;e.$$focusout=e=>ge(`title`,e);var n=ve;return typeof n==`function`?nt(n,t):ve=t,t.$$keydown=ye,t.$$input=e=>i(e.currentTarget.value),Z(e,G(Sf,{onSave:ue,onCancel:me,get saving(){return a()}}),null),B(()=>t.disabled=a()),B(()=>t.value=r()),e}})),Z(o,G(K,{get when(){return t()!==`title`},get children(){return G(K,{get when(){return D()},get fallback(){return(()=>{var e=qd();return e.$$click=()=>O(!0),e})()},get children(){var t=yd(),n=t.firstChild.nextSibling,r=n.nextSibling;return n.$$click=()=>{O(!1),e.onDelete()},r.$$click=()=>O(!1),t}})}}),null),o})(),G(K,{get when(){return q(()=>n().type!==`note`)()&&n().type!==`card`},get children(){var o=wd();return Z(o,G(K,{get when(){return t()===`url`},get fallback(){return(()=>{var e=Yd(),t=e.firstChild;return e.$$click=()=>se(`url`,n().url??``),Z(e,G(K,{get when(){return j()},get children(){var e=Jd();return e.addEventListener(`error`,e=>{e.currentTarget.style.display=`none`}),B(()=>Y(e,`src`,j())),e}}),t),Z(t,()=>ee()||(n().url?n().url:`add a website url`)),e})()},get children(){var t=Cd(),n=t.firstChild,o=n.firstChild,s=n.nextSibling,c=s.firstChild;t.$$focusout=e=>ge(`url`,e);var l=ve;return typeof l==`function`?nt(l,o):ve=o,o.$$keydown=ye,o.$$input=e=>i(e.currentTarget.value),Z(n,G(Sf,{onSave:ue,onCancel:me,get saving(){return a()}}),null),Z(s,G(K,{get when(){return p().length>0},get children(){return xd()}}),c),Z(s,G(Ue,{get each(){return p()},children:(e,t)=>(()=>{var n=Xd(),r=n.firstChild,i=r.nextSibling;return r.$$input=e=>m(n=>{let r=[...n];return r[t()]=e.currentTarget.value,r}),r.value=e,i.$$click=()=>m(e=>e.filter((e,n)=>n!==t())),i.$$mousedown=e=>e.preventDefault(),B(e=>{var t=a(),n=a();return t!==e.e&&(r.disabled=e.e=t),n!==e.t&&(i.disabled=e.t=n),e},{e:void 0,t:void 0}),n})()}),c),c.$$click=()=>m(e=>[...e,``]),c.$$mousedown=e=>e.preventDefault(),Z(s,G(K,{get when(){return q(()=>!!e.currentTabUrl)()&&!ce(e.currentTabUrl,r(),p())},get children(){var t=Sd();return t.$$click=()=>le(e.currentTabUrl),t.$$mousedown=e=>e.preventDefault(),B(n=>{var r=e.currentTabUrl,i=a();return r!==n.e&&Y(t,`title`,n.e=r),i!==n.t&&(t.disabled=n.t=i),n},{e:void 0,t:void 0}),t}}),null),B(e=>{var t=a(),n=a();return t!==e.e&&(o.disabled=e.e=t),n!==e.t&&(c.disabled=e.t=n),e},{e:void 0,t:void 0}),B(()=>o.value=r()),t}})),o}}),G(K,{get when(){return q(()=>!!(!h()&&n().tags))()&&n().tags.length>0},get children(){var e=Td();return e.$$click=de,Z(e,G(Ue,{get each(){return n().tags},children:e=>(()=>{var t=Zd();return Z(t,e),t})()})),e}}),G(K,{get when(){return n().type===`note`},get children(){return[(()=>{var e=Ed();return Z(e,G(pd,{exec:I,class:`peach-note-toolbar-inline`})),e})(),(()=>{var e=Dd();return Z(e,G(md,{get entryKey(){return n().id},get initialContent(){return n().notes??``},onReady:e=>{P(e),F=null},onBlur:L,autoFocus:!1})),e})()]}}),G(K,{get when(){return n().type===`card`},get children(){var e=Fd(),t=e.firstChild,r=t.firstChild.nextSibling,i=r.firstChild,a=t.nextSibling.firstChild.nextSibling.firstChild,o=a.nextSibling,s=o.firstChild;return Z(e,G(K,{get when(){return n().last4},get children(){var e=kd(),t=e.firstChild;return Z(t,G(K,{get when(){return q(()=>!!n().network)()&&n().network!==`unknown`},get children(){var e=Od();return Z(e,()=>n().network),e}}),null),Z(t,()=>n().cardNickname||`•••• ${n().last4}`,null),e}}),t),Z(i,()=>n().cardholderName||`—`),Z(r,G(K,{get when(){return n().cardholderName},get children(){var e=Ad(),t=e.firstChild;return e.$$click=e=>void _e(n().cardholderName,`cardholderName`,e.currentTarget),Z(e,G(wf,{}),t),B(()=>X(e,`peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn peach-copy-btn ${d()===`cardholderName`?`is-copied`:``}`)),e}}),null),Z(a,G(K,{get when(){return x()},get fallback(){return(()=>{var e=jd();return Z(e,()=>`•••• •••• •••• ${n().last4??`••••`}`),e})()},get children(){var e=jd();return Z(e,()=>n().cardNumber??``),e}})),s.$$click=()=>S(!x()),Z(s,G(K,{get when(){return x()},get fallback(){return G(Ef,{})},get children(){return G(Tf,{})}})),Z(o,G(K,{get when(){return n().cardNumber},get children(){var e=Md(),t=e.firstChild;return e.$$click=e=>{let t=n().cardNumber;n().canary?.webhookUrl&&Q({type:`FIRE_CANARY_PING`,payload:{webhookUrl:n().canary.webhookUrl,entryTitle:n().title,trigger:`password_copied`}}),_e(t,`cardNumber`,e.currentTarget)},Z(e,G(wf,{}),t),B(()=>X(e,`peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn peach-copy-btn ${d()===`cardNumber`?`is-copied`:``}`)),e}}),null),Z(e,G(K,{get when(){return n().expMonth||n().expYear},get children(){var e=Nd(),t=e.firstChild.nextSibling.firstChild,r=t.firstChild,i=t.nextSibling,a=i.firstChild;return Z(t,()=>n().expMonth,r),Z(t,()=>n().expYear,null),i.$$click=e=>void _e(`${n().expMonth}/${n().expYear}`,`expiry`,e.currentTarget),Z(i,G(wf,{}),a),B(()=>X(i,`peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn peach-copy-btn ${d()===`expiry`?`is-copied`:``}`)),e}}),null),Z(e,G(K,{get when(){return n().cvc},get children(){var e=Pd(),t=e.firstChild.nextSibling.firstChild,r=t.nextSibling.firstChild,i=r.nextSibling,a=i.firstChild;return Z(t,G(K,{get when(){return C()},get fallback(){return Qd()},get children(){var e=jd();return Z(e,()=>n().cvc),e}})),r.$$click=()=>w(!C()),Z(r,G(K,{get when(){return C()},get fallback(){return G(Ef,{})},get children(){return G(Tf,{})}})),i.$$click=e=>void _e(n().cvc,`cvc`,e.currentTarget),Z(i,G(wf,{}),a),B(e=>{var t=C()?`Hide CVC`:`Show CVC`,n=`peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn peach-copy-btn ${d()===`cvc`?`is-copied`:``}`;return t!==e.e&&Y(r,`aria-label`,e.e=t),n!==e.t&&X(i,e.t=n),e},{e:void 0,t:void 0}),e}}),null),B(()=>Y(s,`aria-label`,x()?`Hide card number`:`Reveal card number`)),e}}),G(K,{get when(){return q(()=>n().type!==`note`&&n().type!==`card`)()&&!wt(n())},get children(){var e=Rd(),o=e.firstChild;o.firstChild;var f=o.nextSibling;return f.firstChild,Z(o,G(K,{get when(){return t()===`username`},get fallback(){return(()=>{var e=ef(),t=e.firstChild;return t.$$click=()=>se(`username`,n().username??``),Z(t,()=>n().username||tf()),Z(e,G(K,{get when(){return n().username},get children(){var e=$d(),t=e.firstChild;return e.$$click=e=>void _e(n().username,`username`,e.currentTarget),Z(e,G(wf,{}),t),B(()=>X(e,`peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn peach-copy-btn ${d()===`username`?`is-copied`:``}`)),e}}),null),e})()},get children(){var e=Id(),t=e.firstChild;e.$$focusout=e=>ge(`username`,e);var n=ve;return typeof n==`function`?nt(n,t):ve=t,t.$$keydown=ye,t.$$input=e=>i(e.currentTarget.value),Z(e,G(Sf,{onSave:ue,onCancel:me,get saving(){return a()}}),null),B(()=>t.disabled=a()),B(()=>t.value=r()),e}}),null),Z(f,G(K,{get when(){return t()===`password`},get fallback(){return(()=>{var e=rf(),t=e.firstChild,r=t.nextSibling.firstChild,i=r.nextSibling,a=i.firstChild;return t.$$click=()=>se(`password`,n().password??``),Z(t,G(K,{get when(){return s()},get fallback(){return af()},get children(){var e=nf();return Z(e,()=>n().password??``),e}})),r.$$click=()=>c(!s()),Z(r,G(K,{get when(){return s()},get fallback(){return G(Ef,{})},get children(){return G(Tf,{})}})),i.$$click=e=>{n().password&&_e(n().password,`password`,e.currentTarget)},Z(i,G(wf,{}),a),B(e=>{var r=!!s(),a=(n().breach??0)>0,o=`peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn peach-copy-btn ${d()===`password`?`is-copied`:``}`;return r!==e.e&&t.classList.toggle(`is-revealed`,e.e=r),a!==e.t&&t.classList.toggle(`is-breached`,e.t=a),o!==e.a&&X(i,e.a=o),e},{e:void 0,t:void 0,a:void 0}),e})()},get children(){var e=Ld(),t=e.firstChild,n=t.firstChild,o=n.nextSibling,d=t.nextSibling;d.firstChild,e.$$focusout=e=>ge(`password`,e);var f=ve;return typeof f==`function`?nt(f,n):ve=n,n.$$keydown=e=>{e.key===`Enter`&&(e.preventDefault(),ue()),e.key===`Escape`&&(e.preventDefault(),me())},n.$$input=e=>i(e.currentTarget.value),o.$$click=()=>c(!s()),Z(o,G(K,{get when(){return s()},get fallback(){return G(Ef,{})},get children(){return G(Tf,{})}})),Z(e,G(Sf,{onSave:ue,onCancel:me,get saving(){return a()}}),d),d.$$click=()=>u(!l()),Z(d,()=>l()?`hide generator`:`generate`,null),Z(e,G(K,{get when(){return l()},get children(){return G(qu,{open:!0,compact:!0,onUse:e=>{i(e),u(!1)}})}}),null),B(e=>{var t=s()?`text`:`password`,r=a(),i=s()?`Hide`:`Show`;return t!==e.e&&Y(n,`type`,e.e=t),r!==e.t&&(n.disabled=e.t=r),i!==e.a&&Y(o,`aria-label`,e.a=i),e},{e:void 0,t:void 0,a:void 0}),B(()=>n.value=r()),e}}),null),B(e=>{var n=t()===`username`,r=t()===`password`;return n!==e.e&&o.classList.toggle(`is-editing`,e.e=n),r!==e.t&&f.classList.toggle(`is-editing`,e.t=r),e},{e:void 0,t:void 0}),e}}),G(K,{get when(){return q(()=>n().type!==`note`)()&&n().type!==`card`},get children(){return G(K,{get when(){return n().notes||t()===`notes`},get fallback(){return(()=>{var e=of();return e.$$click=()=>se(`notes`,``),e})()},get children(){var e=Bd();return e.firstChild,Z(e,G(K,{get when(){return t()===`notes`},get fallback(){return(()=>{var e=sf();return e.$$click=()=>se(`notes`,n().notes??``),Z(e,()=>n().notes),e})()},get children(){var e=zd(),t=e.firstChild;return e.$$focusout=e=>ge(`notes`,e),nt(e=>requestAnimationFrame(()=>e?.focus()),t),t.$$keydown=e=>{e.key===`Escape`&&(e.preventDefault(),me())},t.$$input=e=>i(e.currentTarget.value),Z(e,G(Sf,{onSave:ue,onCancel:me,get saving(){return a()}}),null),B(()=>t.disabled=a()),B(()=>t.value=r()),e}}),null),e}})}}),G(K,{get when(){return h()},get fallback(){return G(K,{get when(){return!n().tags||n().tags.length===0},get children(){var e=cf();return e.$$click=de,e}})},get children(){var e=Vd(),t=e.firstChild.nextSibling,n=t.firstChild;return e.$$focusout=e=>{let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||pe()},Z(t,G(Ue,{get each(){return _()},children:e=>(()=>{var t=lf(),n=t.firstChild;return Z(t,e,n),n.$$click=()=>v(_().filter(t=>t!==e)),n.$$mousedown=e=>e.preventDefault(),Y(n,`aria-label`,`Remove ${e}`),t})()}),n),nt(e=>requestAnimationFrame(()=>e?.focus()),n),n.$$keydown=e=>{e.key===`Enter`||e.key===`,`?(e.preventDefault(),fe(y())):e.key===`Backspace`&&!y()&&_().length>0?v(_().slice(0,-1)):e.key===`Escape`&&(e.preventDefault(),g(!1),b(``))},n.$$input=e=>b(e.currentTarget.value),B(()=>Y(n,`placeholder`,_().length===0?`type and press Enter…`:``)),B(()=>n.value=y()),e}}),G(K,{get when(){return q(()=>n().type===`login`)()&&!wt(n())},get children(){return G(K,{get when(){return ne()||t()===`totp`},get fallback(){return(()=>{var e=uf();return e.$$click=()=>se(`totp`,``),e})()},get children(){var e=Ud();return Z(e,G(K,{get when(){return t()===`totp`},get fallback(){return G(K,{get when(){return ne()},children:e=>[(()=>{var t=df(),r=t.firstChild.nextSibling.firstChild,i=r.firstChild,a=i.firstChild;return t.$$dblclick=()=>se(`totp`,n().totp??``),t.$$click=()=>void _e(e().code.replace(` `,``),`totp`),Z(i,()=>e().code.slice(0,3),a),Z(i,()=>e().code.slice(3),null),B(()=>X(r,`peach-totp-code${k()?` is-hot`:``}${d()===`totp`?` is-copied`:``}`)),t})(),(()=>{var t=ff(),n=t.firstChild.nextSibling,r=n.firstChild,i=n.nextSibling.firstChild.nextSibling;return Z(n,()=>e().remaining,r),B(()=>Y(i,`stroke-dashoffset`,(1-e().remaining/30)*106.8)),t})()]})},get children(){var e=Hd(),t=e.firstChild.nextSibling;e.$$focusout=e=>ge(`totp`,e);var n=ve;return typeof n==`function`?nt(n,t):ve=t,t.$$keydown=ye,t.$$input=e=>i(e.currentTarget.value),Z(e,G(Sf,{onSave:ue,onCancel:me,get saving(){return a()}}),null),B(()=>t.disabled=a()),B(()=>t.value=r()),e}})),e}})}}),G(K,{get when(){return n().passkey},children:t=>{let r=Pu(),i=t().browser&&r!==`unknown`&&t().browser!==r,a=t().algorithm===-8?`EdDSA (Ed25519)`:`ES256 (P-256)`,o=e=>e?new Date(e).toLocaleDateString():`Never`;return(()=>{var s=mf(),c=s.firstChild,l=c.firstChild;l.firstChild;var u=l.nextSibling.firstChild,d=c.nextSibling,f=d.firstChild.nextSibling.firstChild,p=d.nextSibling,m=p.firstChild.nextSibling.firstChild,h=m.firstChild.nextSibling;h.nextSibling;var g=m.nextSibling;g.firstChild;var _=g.nextSibling;_.firstChild;var v=p.nextSibling,y=v.nextSibling;return Z(l,()=>t().rpId,null),Z(u,()=>t().userName),Z(f,a),Z(m,()=>t().signCount,h),Z(m,()=>t().signCount===1?``:`s`,null),Z(g,()=>o(t().createdAt),null),Z(_,()=>o(t().lastUsedAt),null),Z(s,G(K,{when:i,get children(){var e=pf();return Z(e,()=>`This passkey was created on ${t().browser===`chrome`?`Chrome`:`Firefox`}. To use it on ${r===`chrome`?`Chrome`:`Firefox`}, re-register it on this device.`),e}}),v),Z(v,()=>t().browser===`firefox`?`This passkey is held by your platform authenticator. Peach stores only the metadata.`:`The private key is stored encrypted in your Peach vault and is never shown in the UI.`),y.$$click=async()=>{let t=n().id;await Q({type:`UPDATE_ENTRY`,payload:{id:t,patch:{passkey:void 0}}}),await e.onFieldSaved()},s})()}}),Wd()]})),n})()]}function Sf(e){return(()=>{var t=hf(),n=t.firstChild,r=n.nextSibling;return $e(n,`click`,e.onSave,!0),$e(r,`click`,e.onCancel,!0),B(t=>{var i=e.saving,a=e.saving;return i!==t.e&&(n.disabled=t.e=i),a!==t.t&&(r.disabled=t.t=a),t},{e:void 0,t:void 0}),t})()}function Cf(){return[gf(),_f()]}function wf(){return vf()}function Tf(){return yf()}function Ef(){return bf()}Qe([`click`,`focusout`,`input`,`keydown`,`mousedown`,`dblclick`]);var Df=J(`<div class=peach-new-type-row><button>login</button><button>note</button><button>card`),Of=J(`<div class=peach-domain><input class="peach-domain-value peach-domain-value--edit"placeholder=domain.com autocomplete=off>`),kf=J(`<svg width=14 height=10 viewBox="0 0 14 10"fill=none stroke=currentColor stroke-width=0.9 stroke-linecap=round><path d="M1 2C3 4.5 5 6 7 6C9 6 11 4.5 13 2"></path><path d="M3.5 5.5L2.5 7.5"></path><path d="M7 6.5V8.5"></path><path d="M10.5 5.5L11.5 7.5">`),Af=J(`<div class=peach-strength-hairline><div class=peach-strength-hairline-track><div class=peach-strength-hairline-fill></div></div><span class=peach-strength-label>`),jf=J(`<div class=peach-field-card><span class=peach-label>2fa secret</span><div class=peach-field-value-row><input class="peach-field-value peach-field-value--edit"placeholder="BASE32 or otpauth:// URI"autocomplete=off>`),Mf=J(`<section class=peach-fields><div class=peach-field-card><span class=peach-label>username</span><div class=peach-field-value-row><input class="peach-field-value peach-field-value--edit"placeholder="username or email"autocomplete=off></div></div><div class=peach-field-card><span class=peach-label>password</span><div class=peach-password-edit-row><input class="peach-field-value peach-field-value--edit"placeholder=password autocomplete=new-password><button class="peach-inline-action peach-password-toggle-btn"type=button></button></div><button class=peach-generate-toggle-link type=button>`),Nf=J(`<span class=peach-card-network-badge>`),Pf=J(`<svg width=14 height=10 viewBox="0 0 14 10"fill=none stroke=currentColor stroke-width=0.9 stroke-linecap=round><path d="M1 2C3 4.5 5 6 7 6C9 6 11 4.5 13 2">`),Ff=J(`<section class=peach-fields><div class=peach-field-card><span class=peach-label>nickname</span><div class=peach-field-value-row><input class="peach-field-value peach-field-value--edit"placeholder="Personal Visa"autocomplete=off></div></div><div class=peach-field-card><span class=peach-label>cardholder name</span><div class=peach-field-value-row><input class="peach-field-value peach-field-value--edit"placeholder="Jane Smith"autocomplete=cc-name></div></div><div class=peach-field-card><span class=peach-label>card number</span><div class=peach-field-value-row><input class="peach-field-value peach-field-value--edit peach-card-number"placeholder="•••• •••• •••• ••••"autocomplete=cc-number inputmode=numeric maxlength=19></div></div><div class=peach-field-card><span class=peach-label>expiry</span><div class=peach-card-expiry-row><input class="peach-field-value peach-field-value--edit"placeholder=MM autocomplete=cc-exp-month inputmode=numeric maxlength=2 style=width:56px><span class=peach-card-expiry-sep>/</span><input class="peach-field-value peach-field-value--edit"placeholder=YYYY autocomplete=cc-exp-year inputmode=numeric maxlength=4 style=width:72px></div></div><div class=peach-field-card><span class=peach-label>CVC</span><div class=peach-field-value-row><input class="peach-field-value peach-field-value--edit"placeholder=••• autocomplete=cc-csc inputmode=numeric maxlength=4><button class="peach-inline-action peach-password-toggle-btn"type=button>`),If=J(`<div class=peach-note-body>`),Lf=J(`<div class=peach-field-card style="margin:0 12px"><span class=peach-label>notes</span><textarea class=peach-new-textarea placeholder="anything worth remembering">`),Rf=J(`<button class=peach-add-field-link type=button>+ add 2FA`),zf=J(`<button class=peach-add-field-link type=button>+ add notes`),Bf=J(`<div class=peach-tag-suggestions style=margin-top:4px>`),Vf=J(`<p class="peach-hint peach-hint-error"style="margin:0 16px 12px">`),Hf=J(`<div class="peach-overlay-view ov-enter-right"style=display:flex><div class=peach-overlay-header><button class="peach-btn peach-btn--ghost peach-btn--sm peach-overlay-action">cancel</button><span class=peach-overlay-title></span><button class="peach-btn peach-btn--accent peach-btn--sm peach-overlay-action"></button></div><div class="peach-entry-body peach-entry-body--new"><div class=peach-new-title-wrap><input class=peach-new-title-input autocomplete=off></div><div class=peach-entry-add-links></div><div class=peach-field-card style="margin:4px 12px 12px"><span class=peach-label>tags</span><div class=peach-tag-input-wrap><input class=peach-tag-input style=flex:1;min-width:80px;background:transparent;border:none;outline:none;color:var(--t1);font-size:12px;padding:2px>`),Uf=J(`<svg width=14 height=10 viewBox="0 0 14 10"fill=none stroke=currentColor stroke-width=0.9 stroke-linecap=round><path d="M1 5C1 5 2.8 1 7 1C11.2 1 13 5 13 5C13 5 11.2 9 7 9C2.8 9 1 5 1 5Z"></path><circle cx=7 cy=5 r=1.75>`),Wf=J(`<span class=peach-tag-chip><button class=peach-tag-chip-remove>×`),Gf=J(`<button class=peach-tag-suggestion>`);function Kf(e){let[n,r]=z(e.entry?.title??``),[i,o]=z(e.entry?.username??``),[s,c]=z(e.entry?.password??``),[l,u]=z(e.entry?.url??``),[d,f]=z(e.entry?.totp??``),[p,m]=z(e.entry?.notes??``),[h,g]=z(!1),[_,v]=z(``),[y,b]=z(null),[x,S]=z(null),[C,w]=z(e.entry?.tags??[]),[T,E]=z(``),[D,O]=z(!1),[k,A]=z(e.autoOpenGenerator??!1),[j,M]=z(!1),[N,P]=z(!!e.entry?.totp),[F,I]=z(!!e.entry?.notes),[L,R]=z(e.entry?.type===`note`?`note`:e.entry?.type===`card`?`card`:`login`),[ee,ne]=z(e.entry?.cardNickname??``),[re,H]=z(e.entry?.cardholderName??``),[ie,oe]=z(e.entry?.cardNumber??``),[se,ce]=z(e.entry?.expMonth??``),[le,ue]=z(e.entry?.expYear??``),[de,fe]=z(e.entry?.cvc??``),[pe,me]=z(!1),[he,ge]=z(!1),[_e,ve]=z(null);function ye(e,t){document.execCommand(e,!1,t),_e()?.focus()}function be(e){let t=e.replace(/\s/g,``);return/^4/.test(t)?`Visa`:/^5[1-5]|^2[2-7]/.test(t)?`Mastercard`:/^3[47]/.test(t)?`Amex`:/^6(?:011|5)/.test(t)?`Discover`:``}function U(e,t){let n=e.replace(/\s/g,``);return!t&&n.length>=4?`•••• •••• •••• `+n.slice(-4):/^3[47]/.test(n)?n.replace(/(\d{4})(\d{1,6})?(\d{1,5})?/,(e,t,n,r)=>[t,n,r].filter(Boolean).join(` `)):n.replace(/(\d{4})(?=\d)/g,`$1 `).trim()}let xe=()=>!(!n().trim()||L()===`login`&&!s().trim()||L()===`card`&&(!re().trim()||!ie().trim())),W=V(()=>{let t=new Set;for(let n of e.entries??[])for(let e of n.tags??[])t.add(e);return Array.from(t).sort()}),Se=V(()=>{let e=T().toLowerCase().trim();return e?W().filter(t=>t.toLowerCase().includes(e)&&!C().includes(t)).slice(0,5):[]});function Ce(e){let t=e.toLowerCase().trim();!t||t.length>32||C().includes(t)||C().length>=10||w([...C(),t])}function we(e){w(C().filter(t=>t!==e))}function Te(e){e.key===`Enter`||e.key===`,`?(e.preventDefault(),T()&&(Ce(T()),E(``),O(!1))):e.key===`Backspace`&&!T()&&C().length>0&&we(C()[C().length-1])}te(async()=>{let e=s();if(e.length<4){b(null);return}try{if(!x()){let e=await a(()=>import(`./main-BnSAnK-x.js`).then(e=>t(e.default,1)),__vite__mapDeps([13,2]));S(()=>e.default)}let n=x();n&&b(n(e).score)}catch{b(e.length>=16?3:e.length>=12?2:1)}}),ae(()=>{let e=document.querySelector(`.peach-new-title-input`);e&&e.focus()});function Ee(){let e=d().trim();if(e)return e.startsWith(`otpauth://`)?_i(e)?.secret??e:e}async function De(){if(!xe()){v(L()===`note`?`title is required`:L()===`card`?`cardholder name and card number are required`:`title and password are required`);return}g(!0),v(``);let t={type:L(),title:n().trim(),notes:p().trim()||void 0,tags:C().length>0?C():void 0};if(L()===`login`&&(t.username=i().trim(),t.password=s(),t.url=l().trim(),t.totp=Ee()),L()===`card`){let e=ie().replace(/\s/g,``);t.cardholderName=re().trim(),t.cardNumber=e,t.expMonth=se().trim(),t.expYear=le().trim(),t.cvc=de().trim(),t.cardNickname=ee().trim()||void 0;let n=e;t.network=/^4/.test(n)?`visa`:/^5[1-5]|^2[2-7]/.test(n)?`mastercard`:/^3[47]/.test(n)?`amex`:/^6(?:011|5)/.test(n)?`discover`:`unknown`,t.last4=e.slice(-4)}if(e.entry){let n=await Q({type:`UPDATE_ENTRY`,payload:{id:e.entry.id,patch:t}});if(!n.ok){v(n.error??`could not update entry`),g(!1);return}await e.onSave({...e.entry,...t});return}let r=await Q({type:`ADD_ENTRY`,payload:t});if(!r.ok){r.error===`vault locked`?v(`vault is locked — tap the lock icon to re-enter your master password`):v(r.error??`could not save entry`),g(!1);return}await e.onSave(r.data)}let Oe=()=>{let e=y();return e===null?null:[`weak`,`weak`,`fair`,`good`,`strong`][e]};return(()=>{var t=Hf(),a=t.firstChild,g=a.firstChild,v=g.nextSibling,b=v.nextSibling,x=a.nextSibling,S=x.firstChild,w=S.firstChild,z=S.nextSibling,te=z.nextSibling,V=te.firstChild.nextSibling,ae=V.firstChild;return $e(g,`click`,e.onBack,!0),Z(v,()=>e.entry?`edit entry`:`new entry`),b.$$click=()=>void De(),Z(b,(()=>{var t=q(()=>!!h());return()=>t()?`saving…`:e.entry?`save`:`create`})()),Z(x,G(K,{get when(){return!e.entry},get children(){var e=Df(),t=e.firstChild,n=t.nextSibling,r=n.nextSibling;return t.$$click=()=>R(`login`),n.$$click=()=>R(`note`),r.$$click=()=>R(`card`),B(e=>{var i=`peach-new-type-btn ${L()===`login`?`is-active`:``}`,a=`peach-new-type-btn ${L()===`note`?`is-active`:``}`,o=`peach-new-type-btn ${L()===`card`?`is-active`:``}`;return i!==e.e&&X(t,e.e=i),a!==e.t&&X(n,e.t=a),o!==e.a&&X(r,e.a=o),e},{e:void 0,t:void 0,a:void 0}),e}}),S),Z(x,G(K,{get when(){return L()===`note`},get children(){return G(pd,{exec:ye,class:`peach-note-toolbar-body`})}}),S),w.$$keydown=e=>{e.key===`Enter`&&De()},w.$$input=e=>r(e.currentTarget.value),Z(x,G(K,{get when(){return L()===`login`},get children(){return[(()=>{var e=Of(),t=e.firstChild;return t.$$input=e=>u(e.currentTarget.value),B(()=>t.value=l()),e})(),(()=>{var e=Mf(),t=e.firstChild,n=t.firstChild.nextSibling.firstChild,r=t.nextSibling,a=r.firstChild.nextSibling,l=a.firstChild,u=l.nextSibling,p=a.nextSibling;return n.$$input=e=>o(e.currentTarget.value),l.$$input=e=>c(e.currentTarget.value),u.$$click=()=>M(!j()),Z(u,G(K,{get when(){return j()},get fallback(){return Uf()},get children(){return kf()}})),Z(r,G(K,{get when(){return Oe()!==null},get children(){var e=Af(),t=e.firstChild,n=t.firstChild,r=t.nextSibling;return Z(r,Oe),B(e=>{var t=[`25%`,`40%`,`60%`,`80%`,`100%`][y()],r=[`rgba(220,80,60,0.65)`,`rgba(220,80,60,0.65)`,`rgba(200,140,60,0.6)`,`rgba(180,162,100,0.55)`,`rgba(150,175,110,0.6)`][y()];return t!==e.e&&tt(n,`width`,e.e=t),r!==e.t&&tt(n,`background`,e.t=r),e},{e:void 0,t:void 0}),e}}),p),p.$$click=()=>{A(!k())},Z(p,()=>k()?`☰ hide generator`:`⚙ generate`),Z(r,G(qu,{compact:!0,get open(){return k()},onUse:e=>{c(e),A(!1)}}),null),Z(e,G(K,{get when(){return N()||d()},get children(){var e=jf(),t=e.firstChild.nextSibling.firstChild;return t.$$input=e=>f(e.currentTarget.value),B(()=>t.value=d()),e}}),null),B(e=>{var t=j()?`text`:`password`,n=j()?`Hide password`:`Show password`;return t!==e.e&&Y(l,`type`,e.e=t),n!==e.t&&Y(u,`aria-label`,e.t=n),e},{e:void 0,t:void 0}),B(()=>n.value=i()),B(()=>l.value=s()),e})()]}}),z),Z(x,G(K,{get when(){return L()===`card`},get children(){var e=Ff(),t=e.firstChild,n=t.firstChild.nextSibling.firstChild,r=t.nextSibling,i=r.firstChild.nextSibling.firstChild,a=r.nextSibling,o=a.firstChild;o.firstChild;var s=o.nextSibling.firstChild,c=a.nextSibling,l=c.firstChild.nextSibling.firstChild,u=l.nextSibling.nextSibling,d=c.nextSibling.firstChild.nextSibling.firstChild,f=d.nextSibling;return n.$$input=e=>ne(e.currentTarget.value),i.$$input=e=>H(e.currentTarget.value),Z(o,G(K,{get when(){return be(ie())},get children(){var e=Nf();return Z(e,()=>be(ie())),e}}),null),s.$$input=e=>{oe(e.currentTarget.value.replace(/\s/g,``))},s.addEventListener(`blur`,()=>ge(!1)),s.addEventListener(`focus`,()=>ge(!0)),l.$$input=e=>ce(e.currentTarget.value),u.$$input=e=>ue(e.currentTarget.value),d.$$input=e=>fe(e.currentTarget.value),f.$$click=()=>me(!pe()),Z(f,G(K,{get when(){return pe()},get fallback(){return Uf()},get children(){return Pf()}})),B(e=>{var t=pe()?`text`:`password`,n=pe()?`Hide CVC`:`Show CVC`;return t!==e.e&&Y(d,`type`,e.e=t),n!==e.t&&Y(f,`aria-label`,e.t=n),e},{e:void 0,t:void 0}),B(()=>n.value=ee()),B(()=>i.value=re()),B(()=>s.value=U(ie(),he())),B(()=>l.value=se()),B(()=>u.value=le()),B(()=>d.value=de()),e}}),z),Z(x,G(K,{get when(){return L()===`note`},get children(){var e=If();return Z(e,G(md,{get initialContent(){return p()},onContentChange:m,onReady:e=>ve(e)})),e}}),z),Z(x,G(K,{get when(){return q(()=>L()===`login`)()&&(F()||p())},get children(){var e=Lf(),t=e.firstChild.nextSibling;return t.$$input=e=>m(e.currentTarget.value),B(()=>t.value=p()),e}}),z),Z(z,G(K,{get when(){return q(()=>L()===`login`&&!N())()&&!d()},get children(){var e=Rf();return e.$$click=()=>P(!0),e}}),null),Z(z,G(K,{get when(){return q(()=>L()===`login`&&!F())()&&!p()},get children(){var e=zf();return e.$$click=()=>I(!0),e}}),null),Z(V,G(Ue,{get each(){return C()},children:e=>(()=>{var t=Wf(),n=t.firstChild;return Z(t,e,n),n.$$click=()=>we(e),Y(n,`aria-label`,`Remove ${e}`),t})()}),ae),ae.addEventListener(`blur`,()=>setTimeout(()=>O(!1),150)),ae.addEventListener(`focus`,()=>O(!0)),ae.$$keydown=Te,ae.$$input=e=>{E(e.currentTarget.value),O(!0)},Z(te,G(K,{get when(){return q(()=>!!D())()&&Se().length>0},get children(){var e=Bf();return Z(e,G(Ue,{get each(){return Se()},children:e=>(()=>{var t=Gf();return t.$$mousedown=()=>{Ce(e),E(``),O(!1)},Z(t,e),t})()})),e}}),null),Z(x,G(K,{get when(){return _()},get children(){var e=Vf();return Z(e,_),e}}),null),B(e=>{var t=h()||!xe(),n=L()===`note`?`note title`:`entry name`,r=C().length===0?`add tags…`:``;return t!==e.e&&(b.disabled=e.e=t),n!==e.t&&Y(w,`placeholder`,e.t=n),r!==e.a&&Y(ae,`placeholder`,e.a=r),e},{e:void 0,t:void 0,a:void 0}),B(()=>w.value=n()),B(()=>ae.value=T()),t})()}Qe([`click`,`input`,`keydown`,`mousedown`]);var qf=J(`<div class=peach-passkey-approval-user>`),Jf=J(`<div class="peach-overlay-view ov-enter-up"role=dialog aria-modal=true><div class="peach-overlay-card peach-passkey-card"><div class=peach-passkey-approval><div class=peach-passkey-approval-icon aria-hidden=true><svg width=22 height=22 viewBox="0 0 22 22"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round stroke-linejoin=round><circle cx=7 cy=11 r=3.5></circle><path d="M10.5 11h9M16.5 11v3M19.5 11v2"></path></svg></div><div class=peach-passkey-approval-rp></div><h2 class=peach-passkey-approval-action></h2><div class=peach-passkey-approval-notice></div><div class=peach-passkey-approval-actions><button class="peach-btn peach-btn--ghost peach-btn--sm">deny</button><button class="peach-btn peach-btn--accent peach-btn--sm">`);function Yf(e){return(()=>{var t=Jf(),n=t.firstChild.firstChild,r=n.firstChild.nextSibling,i=r.nextSibling,a=i.nextSibling,o=a.nextSibling.firstChild,s=o.nextSibling;return Z(r,()=>e.rpId),Z(i,()=>e.type===`create`?`save a passkey?`:`sign in with passkey?`),Z(n,G(K,{get when(){return e.userName},get children(){var t=qf();return Z(t,(()=>{var t=q(()=>!!e.userDisplayName);return()=>t()?`${e.userDisplayName} • ${e.userName}`:e.userName})()),t}}),a),Z(a,(()=>{var t=q(()=>e.type===`create`);return()=>t()?`Peach will generate and store a passkey for ${e.rpName||e.rpId}.`:`Peach will authenticate you with your stored passkey for ${e.rpName||e.rpId}.`})()),o.$$click=()=>void e.onDeny(),s.$$click=()=>void e.onApprove(),Z(s,()=>e.type===`create`?`save passkey`:`sign in`),t})()}Qe([`click`]);var Xf=[{action:`copy_password`,label:`Copy password`,scope:`entry`},{action:`copy_username`,label:`Copy username`,scope:`entry`},{action:`copy_totp`,label:`Copy 2FA code`,scope:`entry`},{action:`edit_entry`,label:`Edit entry`,scope:`entry`},{action:`delete_entry`,label:`Move entry to trash`,scope:`entry`},{action:`nav_prev`,label:`Previous entry`,scope:`entry`},{action:`nav_next`,label:`Next entry`,scope:`entry`},{action:`search`,label:`Search vault`,scope:`global`},{action:`new_entry`,label:`New entry`,scope:`global`},{action:`lock_vault`,label:`Lock vault`,scope:`global`},{action:`jump_vault`,label:`Jump to vault`,scope:`global`},{action:`jump_settings`,label:`Jump to settings`,scope:`global`},{action:`show_help`,label:`Show keyboard shortcuts`,scope:`global`}],Zf={copy_password:{key:`c`},copy_username:{key:`u`},copy_totp:{key:`t`},search:{key:`/`},new_entry:{key:`n`},edit_entry:{key:`e`},delete_entry:{key:`d`},lock_vault:{key:`l`,ctrl:!0},show_help:{key:`?`,shift:!0},nav_prev:{key:`ArrowLeft`},nav_next:{key:`ArrowRight`},jump_vault:{key:`1`,ctrl:!0},jump_settings:{key:`,`,ctrl:!0}};function Qf(e){return e?{...Zf,...e}:{...Zf}}function $f(e,t){return!(e.key.toLowerCase()!==t.key.toLowerCase()||!!e.ctrlKey!=!!t.ctrl||!!e.metaKey!=!!t.meta||!!e.shiftKey!=!!t.shift||!!e.altKey!=!!t.alt)}function ep(e){let t=e.key;return t===`Shift`||t===`Control`||t===`Meta`||t===`Alt`?null:{key:t,ctrl:e.ctrlKey||void 0,meta:e.metaKey||void 0,shift:e.shiftKey||void 0,alt:e.altKey||void 0}}function tp(e,t=rp()){let n=[];return t?(e.ctrl&&n.push(`⌃`),e.alt&&n.push(`⌥`),e.shift&&n.push(`⇧`),e.meta&&n.push(`⌘`)):(e.ctrl&&n.push(`Ctrl`),e.alt&&n.push(`Alt`),e.shift&&n.push(`Shift`),e.meta&&n.push(`Meta`)),n.push(np(e.key)),t?n.join(``):n.join(`+`)}function np(e){return e===` `?`Space`:e===`ArrowUp`?`↑`:e===`ArrowDown`?`↓`:e===`ArrowLeft`?`←`:e===`ArrowRight`?`→`:e===`Escape`?`Esc`:e===`Enter`?`↵`:e===`Tab`?`⇥`:e.length===1?e.toUpperCase():e}function rp(){return typeof navigator>`u`?!1:/Mac|iPhone|iPad/.test(navigator.platform)}function ip(e,t,n){for(let r of Object.keys(e))if(r!==n&&$f(ap(e[r]),t))return r;return null}function ap(e){return{key:e.key,ctrlKey:!!e.ctrl,metaKey:!!e.meta,shiftKey:!!e.shift,altKey:!!e.alt}}var op=J(`<div class=peach-pair-toast role=status aria-live=polite>Paired with <strong>`),sp=J(`<div class=peach-pair-request-banner role=dialog aria-label="Pairing request"><div class=peach-pair-request-header><span class=peach-pair-request-mark>🍑</span><span class=peach-pair-request-title>Pairing request</span><span class=peach-pair-request-countdown>s</span></div><p class=peach-pair-request-body><strong></strong> wants to sync with this Peach.</p><div class=peach-pair-request-actions><button class="peach-btn peach-btn--ghost peach-btn--sm">Reject</button><button class="peach-btn peach-btn--accent peach-btn--sm">Accept`),cp=J(`<div class=peach-pro-notice-banner><span>✦ <!> requires Peach Pro</span><button class=peach-pro-notice-link>Learn more →</button><button class=peach-pro-notice-close aria-label=Dismiss>✕`),lp=J(`<div class="peach-pro-notice-banner peach-autofill-save-banner"><span>Save login<!>?</span><button class=peach-pro-notice-link>Save</button><button class=peach-pro-notice-close aria-label=Dismiss>x`),up=J(`<div class="peach-pro-notice-banner peach-back-exit-banner"><span>Tap back again to exit Peach`),dp=J(`<section id=hd-shell class="peach-shell peach-theme"data-surface=extension><header class=peach-chrome><div class=peach-chrome-actions><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label=Settings><svg width=14 height=14 viewBox="0 0 14 14"fill=none><path d="M5.91 1.11C6.38-.02 7.62-.02 8.09 1.11L8.31 1.64C8.48 2.05 8.91 2.27 9.34 2.17L9.9 2.04C11.1 1.76 11.98 2.64 11.7 3.84L11.57 4.4C11.47 4.83 11.69 5.26 12.1 5.43L12.63 5.65C13.76 6.12 13.76 7.36 12.63 7.83L12.1 8.05C11.69 8.22 11.47 8.65 11.57 9.08L11.7 9.64C11.98 10.84 11.1 11.72 9.9 11.44L9.34 11.31C8.91 11.21 8.48 11.43 8.31 11.84L8.09 12.37C7.62 13.5 6.38 13.5 5.91 12.37L5.69 11.84C5.52 11.43 5.09 11.21 4.66 11.31L4.1 11.44C2.9 11.72 2.02 10.84 2.3 9.64L2.43 9.08C2.53 8.65 2.31 8.22 1.9 8.05L1.37 7.83C.24 7.36.24 6.12 1.37 5.65L1.9 5.43C2.31 5.26 2.53 4.83 2.43 4.4L2.3 3.84C2.02 2.64 2.9 1.76 4.1 2.04L4.66 2.17C5.09 2.27 5.52 2.05 5.69 1.64L5.91 1.11Z"stroke=currentColor stroke-width=0.9></path><circle cx=7 cy=7 r=2.1 stroke=currentColor stroke-width=0.9></circle></svg></button><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label="New entry"><svg width=11 height=11 viewBox="0 0 11 11"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round><path d="M5.5 1v9M1 5.5h9"></path></svg></button><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn peach-lock-btn"aria-label="Lock vault"><svg class=peach-lock-icon width=14 height=16 viewBox="0 0 14 16"fill=none><path d="M3.75 6V4.75C3.75 2.96 5.21 1.5 7 1.5C8.79 1.5 10.25 2.96 10.25 4.75V6"stroke=currentColor stroke-width=1 stroke-linecap=round></path><rect x=1.5 y=6 width=11 height=8.5 rx=2.2 stroke=currentColor stroke-width=1></rect><circle cx=7 cy=10.25 r=1 fill=currentColor></circle></svg></button></div></header><div class=peach-shell-body><div class=peach-shell-veil></div><div class=peach-content-frame></div><section class=peach-search-wrap><div class=peach-search-bar><span class=peach-search-icon><svg width=13 height=13 viewBox="0 0 13 13"fill=none stroke=currentColor stroke-width=1 stroke-linecap=round><circle cx=5.5 cy=5.5 r=3.75></circle><path d="M8.75 8.75L11.5 11.5"></path></svg></span><input class=peach-search-input placeholder="search vault..."autocomplete=off aria-label="Search vault entries"readonly><div class=peach-search-meta><span class=peach-search-counter></span><span class=peach-divider></span><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label="Previous entry"><svg width=6 height=11 viewBox="0 0 6 11"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round><path d="M5 1L1 5.5L5 10"></path></svg></button><button class="peach-btn peach-btn--ghost peach-btn--sm peach-icon-btn"aria-label="Next entry"><svg width=6 height=11 viewBox="0 0 6 11"fill=none stroke=currentColor stroke-width=1.1 stroke-linecap=round stroke-linejoin=round><path d="M1 1L5 5.5L1 10">`),fp=J(`<div class="popup-root peach-theme">`),pp=J(`<div class=peach-loading>`),mp=J(`<div class=peach-shortcuts-help-backdrop><div class=peach-shortcuts-help-card><div class=peach-shortcuts-help-head><h3>Keyboard shortcuts</h3><button class=peach-shortcuts-help-close aria-label=Close>✕</button></div><div class=peach-shortcuts-help-body><p class=peach-settings-sub-label>ENTRY VIEW</p><ul></ul><p class=peach-settings-sub-label>ANYWHERE</p><ul>`),hp=J(`<li><span></span><kbd>`),gp=Ve(()=>a(()=>Promise.resolve().then(()=>nc).then(e=>({default:e.ImportView})),void 0)),_p=Ve(()=>a(()=>import(`./Export-DSzExNsF.js`).then(e=>({default:e.ExportView})),__vite__mapDeps([14,2,15]))),vp=Ve(()=>a(()=>import(`./Settings-u6xpUMHK.js`).then(e=>({default:e.SettingsView})),__vite__mapDeps([16,4,1,2]))),yp=Ve(()=>a(()=>import(`./Health-gAfwVuy9.js`).then(e=>({default:e.HealthView})),__vite__mapDeps([17,2,13]))),bp=Ve(()=>a(()=>import(`./TrashView-mMBZulR0.js`).then(e=>({default:e.TrashView})),[])),xp=Ve(()=>a(()=>import(`./Panic-D2FjhS40.js`).then(e=>({default:e.PanicView})),__vite__mapDeps([18,15]))),Sp=Ve(()=>a(()=>import(`./SyncPairing-1TEAh1j_.js`).then(e=>({default:e.SyncPairingView})),__vite__mapDeps([19,1,2]))),Cp=r(`Autofill`),wp=new Map,Tp=null;function Ep(){wp.clear()}function Dp(){let e=document.getElementById(`hd-shell`);if(!e)return;Tp?.cancel(),e.dataset.glowing=`true`;let t=e.animate([{offset:0,boxShadow:`var(--copy-shadow)`},{offset:.3,boxShadow:`0 2px 8px rgba(0,0,0,0.5), 0 14px 48px rgba(0,0,0,0.6), 0 0 0 1.5px color-mix(in srgb, var(--peach-accent) 58%, transparent), 0 0 22px color-mix(in srgb, var(--peach-accent) 18%, transparent)`},{offset:1,boxShadow:`var(--copy-shadow)`}],{duration:720,easing:`cubic-bezier(0.4, 0, 0.2, 1)`,fill:`none`});Tp=t;let n=()=>{Tp===t&&(Tp=null,delete e.dataset.glowing)};t.onfinish=n,t.oncancel=n}function Op(){let e=document.querySelector(`.peach-status-pip, .pip`);e&&(e.classList.remove(`pulse`),e.offsetWidth,e.classList.add(`pulse`))}var kp=135;function Ap(){let[e,t]=z(`loading`),[n,r]=z(`lock`),[o,l]=z(`enter`),[u,d]=z(!1),[f,p]=z(!1),[m,h]=z(!0),[g,_]=z([]),[v,y]=z(null),[b,x]=z(void 0),[S,C]=z(`peach`),[w,T]=z(`dark`),[E,D]=z(`cormorant-italic`),[O,k]=z(`medium`),[A,j]=z(!1),[M,N]=z(!0),[P,F]=z(5),[I,L]=z(!0),[R,ee]=z(Zf),[ne,re]=z(!1),[H,ie]=z(30),[se,ce]=z(null),[le,ue]=z(null),[de,fe]=z(``),[pe,me]=z(``),[he,ge]=z(!1),[_e,ve]=z(null),[ye,be]=z(null),[U,xe]=z(`url-first`),[W,Se]=z(``),[Ce,we]=z(0),[Te,Ee]=z(!1),[De,Oe]=z(null),[ke,Ae]=z(null),[je,Me]=z(!1),[Ne,Pe]=z(null),[Fe,Ie]=z(null),[Le,Re]=z(!1),[ze,Be]=z(0),Ve=()=>{ze();let e=Ne();return e?Math.max(0,Math.ceil((e.expiresAt-Date.now())/1e3)):0},[He,Ue]=z(!1),We,Ge=0;function Ke(e){let t=(Tt.find(t=>t.name===e)??Tt[0]).hex;document.documentElement.style.setProperty(`--peach-accent`,t),document.documentElement.style.setProperty(`--peach-glow`,t+`2A`),document.documentElement.style.setProperty(`--peach-surface-tint`,t+`09`),document.documentElement.style.setProperty(`--peach-border-accent`,t+`24`)}te(()=>{Ke(S())}),te(()=>{document.documentElement.classList.toggle(`light`,w()===`light`),document.body.classList.toggle(`light`,w()===`light`),i.isNativePlatform()&&nt(w())}),te(()=>{document.documentElement.setAttribute(`data-display-font`,E())}),te(()=>{document.documentElement.setAttribute(`data-text-size`,O())}),te(()=>{A()?document.documentElement.setAttribute(`data-motion`,`reduce`):document.documentElement.removeAttribute(`data-motion`)});let qe=V(()=>{let e=v()?.id;return e?g().findIndex(t=>t.id===e):g().length>0?0:-1});async function Ye(e){Ke(e),C(e),await Q({type:`UPDATE_SETTINGS`,payload:{accentColor:e}})}async function Xe(e){T(e),await Q({type:`UPDATE_SETTINGS`,payload:{theme:e}})}async function Ze(e){D(e),await Q({type:`UPDATE_SETTINGS`,payload:{displayFont:e}})}async function J(e){k(e),await Q({type:`UPDATE_SETTINGS`,payload:{textSize:e}})}async function Qe(e){j(e),await Q({type:`UPDATE_SETTINGS`,payload:{reduceMotion:e}})}async function X(e){ee(e);let t={};for(let n of Object.keys(e)){let r=e[n],i=Zf[n];r.key===i.key&&!!r.ctrl==!!i.ctrl&&!!r.meta==!!i.meta&&!!r.shift==!!i.shift&&!!r.alt==!!i.alt||(t[n]=r)}await Q({type:`UPDATE_SETTINGS`,payload:{shortcuts:t}})}async function $e(e){N(e),await Q({type:`UPDATE_SETTINGS`,payload:{lockOnClose:e}})}async function et(e){F(e),await Q({type:`UPDATE_SETTINGS`,payload:{autoLockMinutes:e}})}async function tt(e){L(e),await Q({type:`UPDATE_SETTINGS`,payload:{breachMonitoring:e}})}async function nt(e){try{await ht.setStyle({style:e===`light`?pt.Light:pt.Dark}),await ht.setBackgroundColor({color:e===`light`?`#EEE3CC`:`#0C0A06`})}catch{}}function rt(){if(ne()){re(!1);return}if(se()!==null){ce(null);return}switch(n()){case`list`:r(`entry`);return;case`settings`:case`add`:case`import`:At();return;case`export`:He()?(Ue(!1),r(`panic`)):At();return;case`health`:case`panic`:case`sync-pairing`:r(`settings`);return;case`trash`:r(`list`);return;case`entry`:{let e=Date.now();if(e-Ge<1600){lt.exitApp();return}Ge=e,Me(!0),window.setTimeout(()=>Me(!1),1400);return}default:lt.exitApp()}}ae(async()=>{if(i.isNativePlatform()){document.body.classList.add(`peach-mobile`),document.documentElement.classList.add(`peach-mobile-root`),nt(w());let e=await ft.addListener(`keyboardWillShow`,e=>{document.body.style.paddingBottom=`${e.keyboardHeight}px`}),t=await ft.addListener(`keyboardWillHide`,()=>{document.body.style.paddingBottom=`0`}),n=await lt.addListener(`backButton`,()=>{rt()}),r=0,i=0,a=e=>{let t=e.touches[0];t&&(r=t.clientX,i=t.clientY)},o=e=>{let t=e.changedTouches[0];if(!t)return;let n=t.clientX-r,a=Math.abs(t.clientY-i);r<30&&n>60&&a<40&&rt()};document.addEventListener(`touchstart`,a,{passive:!0}),document.addEventListener(`touchend`,o,{passive:!0}),oe(()=>{e.remove(),t.remove(),n.remove(),document.removeEventListener(`touchstart`,a),document.removeEventListener(`touchend`,o),document.body.style.paddingBottom=`0`})}let[e,o,,l]=await Promise.all([Q({type:`IS_UNLOCKED`}),Q({type:`HAS_VAULT`}),it(),Q({type:`SHOULD_PLAY_CELEBRATION`})]),u=!!e.data,d=!!o.data,f=!!l.data;p(d);try{let e=await s(`peach_onboarded`)===`true`;d&&!e?(await c(`peach_onboarded`,`true`),h(!0)):h(e)}catch{h(!0)}if(await Promise.all([dt(),ut()]),f&&await Q({type:`MARK_CELEBRATION_PLAYED`}),u&&d?(await vt(void 0,f),f&&(r(`pro-celebration`),window.setTimeout(()=>r(`entry`),2500))):f&&Ee(!0),await at(),await ot(),await st(),!i.isNativePlatform()){let e=()=>{it()},t=(e,t)=>{(t.url||t.status===`complete`)&&it()};try{chrome.tabs.onActivated.addListener(e),chrome.tabs.onUpdated.addListener(t),oe(()=>{chrome.tabs.onActivated.removeListener(e),chrome.tabs.onUpdated.removeListener(t)})}catch{}}if(t(`ready`),document.getElementById(`pre-lock`)?.setAttribute(`hidden`,`true`),!i.isNativePlatform()&&chrome.storage.session){let e=await chrome.storage.session.get([`pendingProGate`,`pendingProNotice`]);e.pendingProGate?.feature?(await chrome.storage.session.remove(`pendingProGate`),be(e.pendingProGate.feature??null),ve(`license`),r(`settings`)):e.pendingProNotice?.feature&&(await chrome.storage.session.remove(`pendingProNotice`),Oe({feature:e.pendingProNotice.feature??``}))}if(i.getPlatform()===`android`)try{let{pending:e}=await Cp.checkPendingSave();if(e){let t=JSON.parse(e);t.username&&t.password&&Ae({domain:t.domain??``,username:t.username,password:t.password})}}catch{}if(Promise.all([a(()=>import(`./Settings-u6xpUMHK.js`),__vite__mapDeps([16,4,1,2])).catch(()=>{}),a(()=>Promise.resolve().then(()=>nc),void 0).catch(()=>{}),a(()=>import(`./Export-DSzExNsF.js`),__vite__mapDeps([14,2,15])).catch(()=>{}),a(()=>import(`./Health-gAfwVuy9.js`),__vite__mapDeps([17,2,13])).catch(()=>{}),a(()=>import(`./TrashView-mMBZulR0.js`),[]).catch(()=>{})]),!i.isNativePlatform()){let e=null;try{e=chrome.runtime.connect({name:`popup`})}catch{}oe(()=>{try{e?.disconnect()}catch{}});let t=e=>{e?.type===`VAULT_LOCKED`&&n()!==`lock`&&jt(),e?.type===`PRO_GATE_TRIGGERED`&&(be(e.payload?.feature??null),ve(`license`),r(`settings`)),e?.type===`INCOMING_PAIRING_REQUEST`&&ot()};chrome.runtime.onMessage.addListener(t),oe(()=>chrome.runtime.onMessage.removeListener(t))}let m={copy_password:()=>{let e=v();e?.password&&Iu(e.password,`Password`).then(e=>{e&&Dp()})},copy_username:()=>{let e=v();e?.username&&Iu(e.username,`Username`).then(e=>{e&&Dp()})},copy_totp:()=>{let e=v();if(e?.totp)try{let{code:t}=gi(e.totp);Iu(t,`2FA`).then(e=>{e&&Dp()})}catch{}},new_entry:()=>Ct(),edit_entry:()=>{let e=v();!e||wt(e)||(x(e),r(`add`))},delete_entry:()=>{v()&&Et()},lock_vault:()=>{Mt()},search:()=>Ft(),nav_prev:()=>Nt(-1),nav_next:()=>Nt(1),jump_vault:()=>r(`entry`),jump_settings:()=>r(`settings`),show_help:()=>re(!0)},g=new Set([`copy_password`,`copy_username`,`copy_totp`,`edit_entry`,`delete_entry`,`nav_prev`,`nav_next`]),_=e=>{let t=n(),i=e.target?.tagName===`INPUT`||e.target?.tagName===`TEXTAREA`||e.target?.isContentEditable,a=e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey;if(t===`pro-celebration`)return;if(ne()){e.key===`Escape`&&(e.preventDefault(),re(!1));return}if(e.key===`Escape`){if(t===`list`){r(`entry`);return}if(t===`settings`||t===`import`||t===`export`||t===`add`||t===`health`){At();return}if(t===`sync-pairing`){r(`settings`);return}}let o=R();for(let n of Object.keys(o)){let r=o[n];if($f(e,r)){if(!(r.ctrl||r.meta||r.alt||r.shift)&&r.key.length===1&&i||g.has(n)&&t!==`entry`)return;e.preventDefault(),m[n]?.();return}}if(t===`entry`&&!i&&a){e.preventDefault(),gt(e.key);return}};if(window.addEventListener(`keydown`,_),oe(()=>window.removeEventListener(`keydown`,_)),!i.isNativePlatform()){let e=(e,t)=>{t===`session`&&Object.keys(e).some(e=>e.startsWith(`passkey_pending_`))&&at()};chrome.storage.onChanged.addListener(e),oe(()=>chrome.storage.onChanged.removeListener(e))}});async function it(){if(!i.isNativePlatform())try{let[e]=await chrome.tabs.query({active:!0,currentWindow:!0}),t=e?.url??e?.pendingUrl??``;fe(t?Zl(t)??``:``),me(/^https?:\/\//i.test(t)?t:``)}catch{fe(``),me(``)}}async function at(){ue((await Q({type:`GET_PENDING_PASSKEY`})).data??null)}async function ot(){Pe((await Q({type:`GET_INCOMING_PAIRING_REQUEST`})).data??null)}async function st(){let e=(await Q({type:`GET_RECENT_PAIRING`})).data;e?.deviceName&&(Ie(e.deviceName),window.setTimeout(()=>Ie(null),4e3))}async function ct(e){Le()||(Re(!0),await Q({type:`RESPOND_INCOMING_PAIRING`,payload:{accept:e}}),Pe(null),Re(!1))}te(()=>{let e=Ne();if(!e)return;let t=window.setInterval(()=>{Be(e=>e+1),Date.now()>=e.expiresAt&&(Pe(null),window.clearInterval(t))},1e3);oe(()=>window.clearInterval(t))});async function ut(){let e=(await Q({type:`GET_LICENSE`})).data;ge(!!(e?.valid&&e?.plan===`pro`))}async function dt(){let e=(await Q({type:`GET_SETTINGS`})).data??{};e.accentColor&&Tt.some(t=>t.name===e.accentColor)&&C(e.accentColor),T(e.theme===`light`?`light`:`dark`),e.displayFont===`cormorant`||e.displayFont===`inter`||e.displayFont===`system`?D(e.displayFont):D(`cormorant-italic`),e.textSize===`small`||e.textSize===`large`?k(e.textSize):k(`medium`),j(e.reduceMotion===!0),N(e.lockOnClose!==!1),F(typeof e.autoLockMinutes==`number`?e.autoLockMinutes:5),L(e.breachMonitoring!==!1),ie(typeof e.trashRetentionDays==`number`?e.trashRetentionDays:30),ee(Qf(e.shortcuts))}async function mt(e){ie(e),await Q({type:`UPDATE_SETTINGS`,payload:{trashRetentionDays:e}})}function gt(e){Se(e),we(e=>e+1),Ft()}async function _t(){let e=await Q({type:`GET_ENTRIES`});if(!e.ok)return e.error===`vault locked`||e.error===`SERVICE_WORKER_UNAVAILABLE`||typeof e.error==`string`&&e.error.includes(`locked`)?(jt(),null):[];let t=e.data??[];_(t),xt(t);let n=v()?.id;return n&&y(t.find(e=>e.id===n)??t[0]??null),t}async function vt(e,t=!1){let n=H();n>0&&Q({type:`PURGE_EXPIRED_TRASH`,payload:{retentionMs:n*864e5}});let i=await _t();if(i===null)return;let a=null;if(e&&(a=i.find(t=>t.id===e)??null),!a){let e=de();e&&(a=i.find(t=>{if(t.type===`login`){if(t.url&&(Zl(t.url)??``)===e)return!0;for(let n of t.additionalUrls??[])if((Zl(n)??``)===e)return!0;return!1}return t.passkey?.rpId?t.passkey.rpId===e:!1})??null)}a??=i[0]??null,y(a),x(void 0),d(!1),l(`enter`),Ut(),t||r(`entry`)}async function yt(){p(!0),Op(),await dt();let e=Te();e&&(await Q({type:`MARK_CELEBRATION_PLAYED`}),Ee(!1)),await vt(void 0,e),e&&(r(`pro-celebration`),window.setTimeout(()=>r(`entry`),2500))}function bt(e){y(e),d(!1),l(`enter`),Ut(),r(`entry`)}function Ct(){x(void 0),r(`add`)}async function Et(){let e=v();e&&(await Q({type:`DELETE_ENTRY`,payload:{id:e.id}}),y((await _t()??[])[0]??null),r(`entry`))}async function Dt(e){for(let t of e)await Q({type:`DELETE_ENTRY`,payload:{id:t}});let t=await _t()??[];t.find(e=>e.id===v()?.id)||y(t[0]??null)}async function Ot(e){await vt(e?.id)}async function kt(){let e=ke();if(!e)return;let t=e.domain.trim(),n=await Q({type:`ADD_ENTRY`,payload:{type:`login`,title:t||`Saved login`,url:t?`https://${t}`:``,username:e.username,password:e.password}});n.ok&&(Ae(null),await vt(n.data?.id))}function At(){x(void 0),r(`entry`)}function jt(){Ep(),_([]),y(null),x(void 0),l(`idle`),r(`lock`),St()}function Mt(){jt(),Q({type:`LOCK`})}function Nt(e){let t=g();if(t.length===0)return;let n=qe();y(t[((n>=0?n:0)+e+t.length)%t.length]),l(`enter`),Ut()}function Ft(){r(`list`)}function It(){x(void 0),r(`health`)}function Lt(){ce(`file`)}let Rt=()=>n()!==`entry`||se()!==null;function zt(e){if(wt(e)){y(e),r(`entry`);return}x(e),r(`add`)}let Bt=()=>n()===`lock`;async function Vt(){let e=le();if(e){if(e.browser===`firefox`&&e.type===`create`){let{createFirefoxPasskey:t}=await a(async()=>{let{createFirefoxPasskey:e}=await import(`./firefox-passkey-DWv1TBph.js`);return{createFirefoxPasskey:e}},[]),n=await t(e);n.ok||console.warn(`Peach Firefox passkey create failed:`,n.error),await Q({type:`DENY_PASSKEY`,payload:{requestId:e.requestId}}),ue(null),_t();return}await Q({type:`APPROVE_PASSKEY`,payload:{requestId:e.requestId}}),ue(null)}}async function Ht(){let e=le();e&&(await Q({type:`DENY_PASSKEY`,payload:{requestId:e.requestId}}),ue(null))}function Ut(e){We&&window.clearTimeout(We),We=window.setTimeout(()=>{l(`idle`),e?.()},kp)}return(()=>{var t=fp();return Z(t,G(K,{get when(){return e()===`ready`},get children(){return G(K,{get when(){return!le()},get fallback(){return G(Yf,{get type(){return le().type},get rpName(){return le().rpName},get rpId(){return le().rpId},get userName(){return le().userName},get userDisplayName(){return le().userDisplayName},onApprove:Vt,onDeny:Ht})},get children(){return G(K,{get when(){return!Bt()},get fallback(){return G(K,{get when(){return m()||f()},get fallback(){return G(wl,{onComplete:()=>{h(!0)}})},get children(){return G(Qc,{get hasVault(){return f()},get ready(){return e()===`ready`},get isPro(){return he()},onUnlock:yt,get onBackToOnboarding(){return f()?void 0:()=>h(!1)}})}})},get children(){return G(K,{get when(){return n()!==`pro-celebration`},get fallback(){return G(El,{})},get children(){var e=dp(),t=e.firstChild,i=t.firstChild,a=i.firstChild,s=a.nextSibling,c=s.nextSibling,d=t.nextSibling,f=d.firstChild.nextSibling,m=f.nextSibling,C=m.firstChild.firstChild.nextSibling,T=C.nextSibling.firstChild,D=T.nextSibling.nextSibling,k=D.nextSibling;return Z(t,G(Pt,{unlocked:!0}),i),a.$$click=()=>r(`settings`),s.$$click=Ct,c.$$click=()=>void Mt(),Z(e,G(K,{get when(){return Fe()},get children(){var e=op(),t=e.firstChild.nextSibling;return Z(t,Fe),e}}),d),Z(e,G(K,{get when(){return Ne()!==null},get children(){var e=sp(),t=e.firstChild,n=t.firstChild.nextSibling.nextSibling,r=n.firstChild,i=t.nextSibling,a=i.firstChild,o=i.nextSibling.firstChild,s=o.nextSibling;return Z(n,Ve,r),Z(a,()=>Ne().deviceName),o.$$click=()=>void ct(!1),s.$$click=()=>void ct(!0),B(e=>{var t=Le(),n=Le();return t!==e.e&&(o.disabled=e.e=t),n!==e.t&&(s.disabled=e.t=n),e},{e:void 0,t:void 0}),e}}),d),Z(e,G(K,{get when(){return De()!==null},get children(){var e=cp(),t=e.firstChild,n=t.firstChild.nextSibling;n.nextSibling;var i=t.nextSibling,a=i.nextSibling;return Z(t,()=>De()?.feature===`sync`?`Sync`:`A Pro feature`,n),i.$$click=()=>{be(De()?.feature??null),ve(`license`),r(`settings`),Oe(null)},a.$$click=()=>Oe(null),e}}),d),Z(e,G(K,{get when(){return q(()=>ke()!==null)()&&!Bt()},get children(){var e=lp(),t=e.firstChild,n=t.firstChild.nextSibling;n.nextSibling;var r=t.nextSibling,i=r.nextSibling;return Z(t,(()=>{var e=q(()=>!!ke()?.domain);return()=>e()?` for ${ke().domain}`:``})(),n),r.$$click=()=>void kt(),i.$$click=()=>Ae(null),e}}),d),Z(e,G(K,{get when(){return je()},get children(){return up()}}),d),Z(f,G(xf,{get entry(){return v()},get currentTabUrl(){return pe()},onDelete:Et,onFieldSaved:()=>void _t(),onEscape:()=>{r(`list`)}})),C.addEventListener(`focus`,Ft),C.$$click=Ft,Z(T,(()=>{var e=q(()=>g().length>0);return()=>e()?`${qe()+1} / ${g().length}`:`0 entries`})()),D.$$click=()=>Nt(-1),k.$$click=()=>Nt(1),Z(e,G(K,{get when(){return n()===`list`},get children(){return G(Nu,{get entries(){return g()},get selectedEntryId(){return v()?.id},get currentTabDomain(){return de()},get sortOrder(){return U()},get searchSeed(){return W()},get searchSeedNonce(){return Ce()},onSelectEntry:bt,onSortOrderChange:xe,onAdd:Ct,onClose:()=>r(`entry`),onOpenTrash:()=>r(`trash`),onDeleteMany:Dt})}}),null),Z(e,G(K,{get when(){return n()===`settings`},get children(){return G(Je,{get fallback(){return(()=>{var e=pp();return Z(e,G(Pt,{})),e})()},get children(){return G(vp,{get entriesCount(){return g().length},get breachMonitoring(){return I()},get lockOnClose(){return M()},get autoLockMinutes(){return P()},get trashRetentionDays(){return H()},get theme(){return w()},get accentColor(){return S()},get displayFont(){return E()},get textSize(){return O()},get reduceMotion(){return A()},get isPro(){return he()},get initialSection(){return _e()},get upgradeHighlight(){return ye()},onBreachMonitoringChange:tt,onLockOnCloseChange:$e,onAutoLockMinutesChange:et,onTrashRetentionChange:mt,onThemeChange:Xe,onAccentChange:Ye,onDisplayFontChange:Ze,onTextSizeChange:J,onReduceMotionChange:Qe,get shortcuts(){return R()},onShortcutsChange:X,onLicenseChange:async()=>{await ut(),_t(),(await Q({type:`SHOULD_PLAY_CELEBRATION`})).data===!0&&(await Q({type:`MARK_CELEBRATION_PLAYED`}),r(`pro-celebration`),window.setTimeout(()=>r(`settings`),2500))},onBack:()=>{ve(null),be(null),At()},onImport:()=>r(`import`),onExport:()=>r(`export`),onBreachCheckDone:_t,onOpenHealth:It,onOpenSyncPairing:()=>r(`sync-pairing`),onOpenFileImport:Lt,onOpenPanic:()=>r(`panic`)})}})}}),null),Z(e,G(K,{get when(){return n()===`sync-pairing`},get children(){return G(Je,{get fallback(){return(()=>{var e=pp();return Z(e,G(Pt,{})),e})()},get children(){return G(Sp,{onClose:()=>r(`settings`),onPaired:()=>{}})}})}}),null),Z(e,G(K,{get when(){return n()===`add`},get children(){return G(Kf,{get entry(){return b()},get entries(){return g()},onBack:At,onSave:Ot})}}),null),Z(e,G(K,{get when(){return n()===`import`},get children(){return G(Je,{get fallback(){return(()=>{var e=pp();return Z(e,G(Pt,{})),e})()},get children(){return G(gp,{onBack:At,onImport:Ot})}})}}),null),Z(e,G(K,{get when(){return n()===`export`},get children(){return G(Je,{get fallback(){return(()=>{var e=pp();return Z(e,G(Pt,{})),e})()},get children(){return G(_p,{onBack:()=>{He()?(Ue(!1),r(`panic`)):At()}})}})}}),null),Z(e,G(K,{get when(){return n()===`panic`},get children(){return G(Je,{get fallback(){return(()=>{var e=pp();return Z(e,G(Pt,{})),e})()},get children(){return G(xp,{onCancel:()=>r(`settings`),onOpenExport:()=>{Ue(!0),r(`export`)},onDestroyed:async()=>{Ep(),_([]),y(null),x(void 0),p(!1),h(!1),ge(!1),ue(null),be(null),ve(null),Oe(null),Ee(!1),Ue(!1),l(`idle`),r(`lock`),St()}})}})}}),null),Z(e,G(K,{get when(){return n()===`health`},get children(){return G(Je,{get fallback(){return(()=>{var e=pp();return Z(e,G(Pt,{})),e})()},get children(){return G(yp,{get entries(){return g()},get isPro(){return he()},onFixEntry:zt,onBack:()=>r(`settings`),onRefresh:_t})}})}}),null),Z(e,G(K,{get when(){return n()===`trash`},get children(){return G(Je,{get fallback(){return(()=>{var e=pp();return Z(e,G(Pt,{})),e})()},get children(){return G(bp,{onBack:()=>r(`list`),onRestored:()=>void _t()})}})}}),null),Z(e,G(K,{get when(){return se()===`file`},get children(){return G(Je,{get fallback(){return(()=>{var e=pp();return Z(e,G(Pt,{})),e})()},get children(){return G(gp,{mode:`onboarding`,replacesExistingVault:!0,onBack:()=>ce(null),onImport:async()=>{ce(null),await yt()}})}})}}),null),B(e=>{var n=!!Rt(),r=o(),i=!!u(),a=!!Rt(),s=g().length===0,c=g().length===0;return n!==e.e&&t.classList.toggle(`is-hidden-for-overlay`,e.e=n),r!==e.t&&Y(f,`data-content-phase`,e.t=r),i!==e.a&&f.classList.toggle(`navigating`,e.a=i),a!==e.o&&m.classList.toggle(`is-hidden-for-overlay`,e.o=a),s!==e.i&&(D.disabled=e.i=s),c!==e.n&&(k.disabled=e.n=c),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),e}})}})}})}}),null),Z(t,G(K,{get when(){return ne()},get children(){return G(jp,{get bindings(){return R()},onClose:()=>re(!1)})}}),null),t})()}function jp(e){return(()=>{var t=mp(),n=t.firstChild,r=n.firstChild,i=r.firstChild.nextSibling,a=r.nextSibling.firstChild.nextSibling,o=a.nextSibling.nextSibling;return $e(t,`click`,e.onClose,!0),n.$$click=e=>e.stopPropagation(),$e(i,`click`,e.onClose,!0),Z(a,()=>Xf.filter(e=>e.scope===`entry`).map(t=>(()=>{var n=hp(),r=n.firstChild,i=r.nextSibling;return Z(r,()=>t.label),Z(i,()=>tp(e.bindings[t.action])),n})())),Z(o,()=>Xf.filter(e=>e.scope===`global`).map(t=>(()=>{var n=hp(),r=n.firstChild,i=r.nextSibling;return Z(r,()=>t.label),Z(i,()=>tp(e.bindings[t.action])),n})())),t})()}Qe([`click`]);var Mp=document.getElementById(`app`);Mp&&Ze(()=>G(Ap,{}),Mp);export{$e as A,Ke as B,qt as C,Tt as D,At as E,Y as F,B as G,Ge as H,tt as I,ae as J,z as K,J as L,Qe as M,Z as N,wt as O,q as P,nt as R,Zt as S,Nt as T,G as U,K as V,V as W,Ci as _,ep as a,an as b,Nu as c,Lc as d,js as f,xi as g,Si as h,tp as i,X as j,Q as k,Zl as l,Ji as m,Xf as n,Pu as o,Pa as p,oe as q,ip as r,Fu as s,Zf as t,Ql as u,Gt as v,nn as w,on as x,rn as y,Ue as z};\ No newline at end of filedist-mobile/assets/messages-BN1MeRf_.js+2 −0
@@ -0,0 +1,2 @@1+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sync-kQd3KSmO.js","assets/chunk-CilyBKbf.js","assets/sync-storage-DsbiOwL6.js","assets/storage-COHREhIV.js","assets/preload-helper-D4M6sveU.js","assets/dist-C5po-C0e.js","assets/sync-lifecycle-kQgcH5o6.js","assets/vault-ByqoQOTt.js","assets/index-Dd8_N7xu.js","assets/index-Ci9pf2DC.css","assets/license-ZF1DwcYD.js","assets/pairing-server-state-TxS-duki.js","assets/sync-wire-O_oTp2Oy.js","assets/sync-coordinator-BVwn6wHZ.js","assets/android-sync-identity-BAhJ8ODd.js","assets/x25519-DSi3mQjw.js","assets/capacitor-pairing-server-2RAeT9Ze.js","assets/noise-js-Crku9Lwa.js","assets/capacitor-pairing-handshake-CrTUHO4K.js"])))=>i.map(i=>d[i]);2+import{t as e}from"./dist-C5po-C0e.js";import{t}from"./preload-helper-D4M6sveU.js";import{t as n}from"./storage-COHREhIV.js";import{C as r,O as i,S as a,b as o,l as s,o as c,s as l,v as u,w as d,x as f,y as p}from"./index-Dd8_N7xu.js";import{activateLicense as m,deactivateLicense as h,getLicenseInfo as g,getLicenseKey as _,isProUser as v,markCelebrationPlayed as ee,shouldPlayCelebration as te}from"./license-ZF1DwcYD.js";import{A as ne,C as y,D as b,E as re,F as x,I as ie,L as S,N as ae,O as oe,P as C,R as w,S as se,T as ce,_ as le,a as ue,b as de,c as fe,d as pe,f as me,g as T,h as E,i as he,j as ge,k as _e,l as ve,m as ye,n as be,o as xe,p as D,r as Se,s as Ce,t as O,u as we,v as k,w as A,x as Te,y as Ee}from"./vault-ByqoQOTt.js";import{onVaultLocked as De,onVaultUnlocked as j}from"./sync-lifecycle-kQgcH5o6.js";var Oe=30,M=null;async function N(e){try{let[t]=await chrome.tabs.query({active:!0,currentWindow:!0});if(t?.id){await chrome.scripting.executeScript({target:{tabId:t.id},func:e=>navigator.clipboard.writeText(e),args:[e]});return}}catch{}await navigator.clipboard.writeText(e)}async function ke(e,t,n=!1){M&&=(clearTimeout(M),null),n||await N(e);let r=k().clipboardClearSeconds,i=(typeof r==`number`&&r>0?r:Oe)*1e3;M=setTimeout(async()=>{try{await N(``)}catch{}M=null},i)}var P=(()=>{let e=typeof chrome<`u`?chrome:void 0;if(e?.webAuthenticationProxy)return!1;try{return(e?.runtime?.getURL?.(``)??``).startsWith(`moz-extension://`)}catch{return!1}})(),F=`passkey_pending_`,Ae=6e4,I=!1,L;__PEACH_E2E_PASSKEYS__;var R=new Map;function z(){if(typeof chrome.webAuthenticationProxy?.attach==`function`)return!0;if(c()===`firefox`){let e=l();if(Number.isFinite(e)&&e>=150)return!0}return!1}function je(){let e=navigator.userAgent;if(/Firefox\/(\d+)/.test(e)){let t=e.match(/Firefox\/(\d+)/)?.[1];return t?`Firefox ${t}`:`Firefox`}let t=e.match(/Chrome\/(\d+)/)?.[1];return t?`Chrome ${t}`:`Chromium`}function B(e){return`${F}${e}`}async function V(e){chrome.action?.setBadgeText&&(await chrome.action.setBadgeText({text:e}),e&&await chrome.action.setBadgeBackgroundColor({color:`#D96830`}))}async function H(e){chrome.storage.session&&await chrome.storage.session.remove(B(e)),await V(``)}async function U(){try{await chrome.action.openPopup()}catch{await V(`PK`)}}async function Me(){if(!chrome.storage.session)return null;let e=await chrome.storage.session.get(null),t=Object.keys(e).find(e=>e.startsWith(F));if(!t)return null;let n=e[t];return n&&typeof n==`object`?n:null}async function W(e,t){let n=R.get(e);if(!n){await H(e),chrome.storage.session&&await chrome.storage.session.remove(q);return}clearTimeout(n.timeoutId),R.delete(e),await H(e),n.resolve(t)}async function Ne(e){return chrome.storage.session&&await chrome.storage.session.set({[B(e.requestId)]:e}),await U(),new Promise(t=>{let n=setTimeout(async()=>{R.delete(e.requestId),await H(e.requestId),t(!1)},Ae);R.set(e.requestId,{resolve:t,timeoutId:n})})}async function G(){let e=await D(),t=z(),n=e.passkeyProviderEnabled===!0;return{supported:t,enabled:n,attached:t&&I,browserLabel:je(),statusLabel:t?I?`Active`:L?`Another provider is active`:n?`Inactive`:`Disabled`:`Interception unavailable`,conflict:L}}async function Pe(){if(!z()){I=!1,L=`This browser does not expose chrome.webAuthenticationProxy.`;return}if(c()===`firefox`){I=!0,L=void 0;return}if(!I)try{await chrome.webAuthenticationProxy.attach(),I=!0,L=void 0}catch(e){I=!1,L=e instanceof Error?e.message:`Another provider is active.`}}async function Fe(){if(!z()){I=!1;return}if(c()===`firefox`){I=!1,L=void 0;return}try{await chrome.webAuthenticationProxy.detach()}catch{}I=!1,L=void 0}async function Ie(e){return await x({passkeyProviderEnabled:e}),e?await Pe():await Fe(),G()}function Le(e){let t=E().find(t=>t.passkey?.rpId===e&&!t.deletedAt);if(t)return t;let n=b(e).filter(e=>e.type===`login`&&!e.passkey);return n.length===0?null:n.reduce((e,t)=>(t.modifiedAt??0)>(e.modifiedAt??0)?t:e)}function K(){chrome.tabs.query({},e=>{for(let t of e)t.id!==void 0&&chrome.tabs.sendMessage(t.id,{type:`PASSKEY_PRO_GATE`}).catch(()=>{})})}var q=`passkey_pending_firefox`,Re=`peach_passkey_offer_declined:`,ze=720*60*60*1e3;async function Be(e){if(!await v())return K(),{ok:!1,error:`passkey creation requires Peach Pro`};if(!y())return await U(),{ok:!1,error:`vault locked`};if(!chrome.storage.session)return{ok:!1,error:`session storage unavailable`};let t=Date.now(),n=u(crypto.getRandomValues(new Uint8Array(32))),r=u(crypto.getRandomValues(new Uint8Array(32))),i={requestId:t,type:`create`,rpId:e.rpId,rpName:e.rpName,userName:e.userName,userDisplayName:e.userDisplayName,browser:`firefox`,challenge:n,userHandle:r};return await chrome.storage.session.set({[q]:i}),await U(),{ok:!0}}async function Ve(e){if(!y())return{ok:!1,error:`vault locked`};let t={rpId:e.rpId,rpName:e.rpName,credentialId:e.credentialId,publicKeyCose:e.publicKeyCose,userHandle:e.userHandle,userName:e.userName,userDisplayName:e.userDisplayName??e.userName,algorithm:e.algorithm,signCount:0,aaguid:e.aaguid??u(new Uint8Array(16)),backupEligible:e.backupEligible??!1,backupState:e.backupState??!1,browser:`firefox`,transports:e.transports??[`internal`],createdAt:Date.now()},n=Le(e.rpId);return n?await C(n.id,{passkey:t}):await O({type:`login`,title:e.rpName||e.rpId,url:`https://${e.rpId}`,username:e.userName,passkey:t}),chrome.storage.session&&await chrome.storage.session.remove(q),{ok:!0}}function He(e){return`${Re}${e}`}async function Ue(e){e&&await chrome.storage.local.set({[He(e)]:Date.now()})}async function We(e){if(!e)return!1;let t=He(e),n=(await chrome.storage.local.get(t))[t];return typeof n==`number`?Date.now()-n>ze?(await chrome.storage.local.remove(t),!1):!0:!1}function Ge(){return E().filter(e=>e.passkey!==void 0&&!e.deletedAt)}async function Ke(e){if(!P)return{ok:!1,error:`not_applicable`};if(!y())return{ok:!0,hasCredentials:!1};let t=Ge().filter(t=>t.passkey.rpId===e.rpId);if(t.length===0)return{ok:!0,hasCredentials:!1};let n=e.allowCredentials??[];return n.length===0?{ok:!0,hasCredentials:!0}:{ok:!0,hasCredentials:t.some(e=>n.some(t=>t.id===e.passkey.credentialId))}}async function qe(e){return Ne({requestId:Date.now()+Math.floor(Math.random()*1e3),type:e.type,rpId:e.rpId,rpName:e.rpName??e.rpId,userName:e.userName,userDisplayName:e.userDisplayName})}async function Je(e){if(!P)return{ok:!1,error:`not_applicable`};if(!await v())return K(),{ok:!1,error:`pro_required`};if(!y())return await U(),{ok:!1,error:`vault_locked`};let t=r(e.pubKeyCredParams??[]);if(!t)return{ok:!1,error:`internal_error`,message:`No supported algorithm offered`};if(!await qe({type:`create`,rpId:e.rpId,rpName:e.rpName,userName:e.userName,userDisplayName:e.userDisplayName}))return{ok:!1,error:`user_cancelled`};let{bytes:n,base64url:i}=f(),{publicKeyCose:s,publicKeySpki:c,privateKeyJwk:l}=await a(t),d=await p({rpId:e.rpId,flags:69,signCount:0,credentialId:n,publicKeyCose:s}),m=o(d),h={rpId:e.rpId,rpName:e.rpName??e.rpId,credentialId:i,publicKeyCose:u(s),privateKeyJwk:l,userHandle:e.userId,userName:e.userName,userDisplayName:e.userDisplayName??e.userName,algorithm:t,signCount:0,aaguid:u(new Uint8Array(16)),backupEligible:!1,backupState:!1,browser:`firefox`,transports:[`internal`],createdAt:Date.now()},g=Le(e.rpId);return g?await C(g.id,{passkey:h}):await O({type:`login`,title:e.rpName||e.rpId,url:`https://${e.rpId}`,username:e.userName,passkey:h}),{ok:!0,credential:{type:`create`,id:i,clientDataJSON:e.clientDataJSON,attestationObject:u(m),authenticatorData:u(d),publicKey:u(c),algorithm:t}}}async function Ye(e){if(!P)return{ok:!1,error:`not_applicable`};if(!await v())return K(),{ok:!1,error:`pro_required`};if(!y())return await U(),{ok:!1,error:`vault_locked`};let t=e.allowCredentials??[],n=Ge().filter(n=>n.passkey.rpId===e.rpId?t.length===0?!0:t.some(e=>e.id===n.passkey.credentialId):!1);if(n.length===0)return{ok:!1,error:`no_credentials`};n.sort((e,t)=>(t.passkey.lastUsedAt??0)-(e.passkey.lastUsedAt??0));let r=n[0],i=r.passkey;if(!i.privateKeyJwk)return{ok:!1,error:`no_credentials`};if(!await qe({type:`get`,rpId:i.rpId,rpName:i.rpName,userName:i.userName,userDisplayName:i.userDisplayName}))return{ok:!1,error:`user_cancelled`};let a=i.signCount+1,o=5|(i.backupEligible?8:0)|(i.backupState?16:0),s=await p({rpId:i.rpId,flags:o,signCount:a}),c=new Uint8Array(e.clientDataJSON),l=new Uint8Array(await crypto.subtle.digest(`SHA-256`,c)),f=await d(i.privateKeyJwk,i.algorithm,s,l);return await C(r.id,{passkey:{...i,signCount:a,lastUsedAt:Date.now()}}),{ok:!0,credential:{type:`get`,id:i.credentialId,clientDataJSON:e.clientDataJSON,authenticatorData:u(s),signature:u(f),userHandle:i.userHandle}}}var Xe=/bank|pay|finance|invest|mail|gmail|outlook|yahoo|icloud|instagram|twitter|facebook|linkedin/i,Ze=2160*60*60*1e3,Qe=4320*60*60*1e3,$e=60,et=25,tt=15,nt=20,rt=10;async function it(e){let t=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e));return Array.from(new Uint8Array(t)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function at(e){return Xe.test(e)}function ot(e){return at(e)?Ze:Qe}function st(e){if(e.length<10)return!0;let t=0;return/[a-z]/.test(e)&&(t+=1),/[A-Z]/.test(e)&&(t+=1),/[0-9]/.test(e)&&(t+=1),/[^A-Za-z0-9]/.test(e)&&(t+=1),t<3}async function ct(e){let t=Date.now(),n=e.filter(e=>!e.deletedAt&&(e.type===void 0||e.type===`login`)),r=new Map;for(let e of n){if(!e.password)continue;let t=await it(e.password),n=r.get(t)??[];n.push(e.id),r.set(t,n)}let i=new Set,a=0;for(let e of r.values())if(e.length>1){a+=1;for(let t of e)i.add(t)}let o=[],c=0,l=0,u=0;for(let e of n){let n=s(e.url??``)??``,r=n?at(n):!1,a=t-(e.passwordChangedAt??e.createdAt??t),d=e.password?a>ot(n):!1;d&&(c+=1);let f=(e.breach??0)>0,p=i.has(e.id),m=e.password?st(e.password):!1,h=r&&!e.totp,g=0;f&&(g+=$e),p&&(g+=et),d&&(g+=tt),m&&(g+=nt),h&&(g+=rt),g>100&&(g=100);let _=[];if(f&&_.push(`Breached (${e.breach} exposures)`),p&&_.push(`Reused`),d){let e=Math.floor(a/864e5);_.push(`${e} days old`)}m&&_.push(`Weak`),h&&_.push(`No 2FA on sensitive site`);let v=r?2:1;l+=g*v,u+=v,g>0&&o.push({id:e.id,title:e.title,domain:n,url:e.url,score:g,ageDays:Math.floor(a/864e5),reasons:_,factors:{breached:f,breachCount:e.breach??0,reused:p,aged:d,weak:m,missingTotpOnSensitive:h}})}return o.sort((e,t)=>t.score-e.score),{vaultScore:u>0?Math.round(l/u):0,generatedAt:t,entryCount:n.length,reusedGroups:a,agedCount:c,remediation:o}}function lt(e){let t=e.url??``,n=s(t);if(!n)return null;for(let[e,t]of Object.entries({"google.com":`https://myaccount.google.com/security`,"gmail.com":`https://myaccount.google.com/security`,"github.com":`https://github.com/settings/security`,"twitter.com":`https://twitter.com/settings/password`,"x.com":`https://x.com/settings/password`,"facebook.com":`https://www.facebook.com/settings?tab=security`,"instagram.com":`https://www.instagram.com/accounts/password/change/`,"linkedin.com":`https://www.linkedin.com/psettings/change-password`,"amazon.com":`https://www.amazon.com/ap/changepassword`,"apple.com":`https://appleid.apple.com`,"icloud.com":`https://appleid.apple.com`,"microsoft.com":`https://account.microsoft.com/security`,"outlook.com":`https://account.microsoft.com/security`,"live.com":`https://account.microsoft.com/security`,"dropbox.com":`https://www.dropbox.com/account/security`,"netflix.com":`https://www.netflix.com/password`,"spotify.com":`https://www.spotify.com/account/change-password/`,"reddit.com":`https://www.reddit.com/settings/account`}))if(n===e||n.endsWith(`.`+e))return t;try{return`${new URL(t).origin}/account/security`}catch{return null}}async function J(t,n=`user`){return await v()?{allowed:!0}:(n===`user`?e.isNativePlatform()||chrome.runtime.sendMessage({type:`PRO_GATE_TRIGGERED`,payload:{feature:t}}).catch(()=>{}):!e.isNativePlatform()&&chrome.storage.session&&chrome.storage.session.set({pendingProNotice:{feature:t,triggeredAt:Date.now()}}).catch(()=>{}),{allowed:!1})}var ut=`peach_device_name`;async function Y(){try{let e=(await chrome.storage.local.get(ut))[ut];if(typeof e==`string`&&e.trim())return e.trim()}catch{}return e.getPlatform()===`android`?`Peach Android`:e.getPlatform()===`ios`?`Peach iOS`:`Peach`}var dt=300*1e3,X=null;function ft(){let e=new Uint32Array(1);return crypto.getRandomValues(e),(e[0]%1e6).toString().padStart(6,`0`)}var Z=[];async function pt(){await Q();let n=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1])),{getPairedDevices:r}=await t(async()=>{let{getPairedDevices:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{getPairedDevices:e}},__vite__mapDeps([2,1]));n.connectSyncHost(),Z=[n.onPeerDiscovered(t=>{(async()=>{let n=(await r()).some(e=>e.deviceId===t.deviceId);e.isNativePlatform()||chrome.runtime.sendMessage({type:`SYNC_PEER_DISCOVERED`,peer:{deviceId:t.deviceId,deviceName:t.name,host:t.host,port:t.port,wsPort:t.wsPort,x25519PublicKey:t.x25519PublicKey,alreadyPaired:n}}).catch(()=>{})})()}),n.onPeerLost(t=>{e.isNativePlatform()||chrome.runtime.sendMessage({type:`SYNC_PEER_LOST`,deviceId:t}).catch(()=>{})})],n.discoverPeers()}async function Q(){for(let e of Z)e();Z=[];try{let e=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1]));e.isHostConnected()&&await e.stopDiscovery()}catch{}}var mt=[{prefix:`10.`},{prefix:`127.`},{prefix:`169.254.`},{prefix:`192.168.`}];async function ht(r,a={}){try{if(!e.isNativePlatform()&&a.id!==void 0&&a.id!==chrome.runtime.id)return{ok:!1,error:`invalid sender`};switch(gt(r.type)&&y()&&w(),r.type){case`CREATE_VAULT`:{let{password:e}=r.payload;return await fe(e),await S(),$({type:`VAULT_UNLOCKED`}),j(),{ok:!0}}case`UNLOCK`:{let{password:e}=r.payload,t=await ae(e);return t&&(await S(),$({type:`VAULT_UNLOCKED`}),j()),{ok:t}}case`LOCK`:return A(),De(),{ok:!0};case`IS_UNLOCKED`:return{ok:!0,data:y()};case`GET_VAULT_STATUS`:return{ok:!0,unlocked:y()};case`HAS_VAULT`:return{ok:!0,data:await de()};case`GET_ENTRIES`:return{ok:!0,data:E()};case`ADD_ENTRY`:return y()?{ok:!0,data:await O(r.payload)}:{ok:!1,error:`vault locked`};case`BATCH_ADD_ENTRIES`:{let{entries:e}=r.payload;return{ok:!0,data:await be(e)}}case`RESTORE_ENTRIES`:{let{entries:e,mode:t,settings:n}=r.payload,i=await oe(e,t);return n&&typeof n==`object`&&await x(n),{ok:!0,data:i}}case`CLEAR_VAULT_ENTRIES`:return await ue(`REPLACE_ALL`),{ok:!0};case`GET_VAULT_HISTORY`:return{ok:!0,data:await Ee()};case`RESTORE_VAULT_SNAPSHOT`:{let{snapshotId:e}=r.payload,t=await ne(e);return t.ok?($({type:`VAULT_LOCKED`}),{ok:!0}):{ok:!1,error:t.error}}case`COUNT_DUPLICATES`:return{ok:!0,data:Ce()};case`DEDUPLICATE_ENTRIES`:return{ok:!0,data:await we()};case`UPDATE_ENTRY`:{let{id:e,patch:t}=r.payload;return await C(e,t),{ok:!0}}case`ADD_ADDITIONAL_URL`:{let{id:e,url:t}=r.payload,n=typeof t==`string`?t.trim():``;if(!n)return{ok:!1,error:`url required`};let i=T(e);return i?i.type===`login`?(await C(e,{additionalUrls:[...i.additionalUrls??[],n]}),{ok:!0}):{ok:!1,error:`login entries only`}:{ok:!1,error:`entry not found`}}case`DELETE_ENTRY`:{let{id:e}=r.payload;return await pe(e),{ok:!0}}case`GET_DELETED_ENTRIES`:return{ok:!0,data:ye()};case`RESTORE_ENTRY`:{let{id:e}=r.payload;return await _e(e),{ok:!0}}case`PURGE_ENTRY`:{let{id:e}=r.payload;return await ce(e),{ok:!0}}case`PURGE_EXPIRED_TRASH`:{let{retentionMs:e}=r.payload;return{ok:!0,data:await re(e)}}case`AUTOFILL_QUERY`:{if(!y())return{ok:!1,error:`VAULT_LOCKED`};let{domain:e,includeAll:t,kind:n}=r.payload;return n===`card`?{ok:!0,data:E().filter(e=>e.type===`card`).map(e=>({id:e.id,title:e.cardNickname||e.title,cardholderName:e.cardholderName,last4:e.last4,expMonth:e.expMonth,expYear:e.expYear,network:e.network}))}:{ok:!0,data:(t?E().filter(e=>e.type!==`note`&&e.type!==`card`):b(e)).filter(e=>!i(e)).map(e=>t?{id:e.id,title:e.title,hasPasskey:e.passkey!==void 0}:{id:e.id,title:e.title,username:e.username,url:e.url,hasTotp:!!e.totp,hasPasskey:e.passkey!==void 0})}}case`GET_ENTRY_FOR_FILL`:{if(!y())return{ok:!1,error:`vault locked`};let{id:e}=r.payload,t=T(e);if(!t)return{ok:!1,error:`entry not found`};if(i(t))return{ok:!1,error:`passkey not fillable`};let{passkey:n,...a}=t;return{ok:!0,data:a}}case`COPY`:{let{text:e,label:t,alreadyWritten:n}=r.payload;return await ke(e,t,!!n),{ok:!0}}case`CHECK_BREACH`:{let{password:e}=r.payload;return{ok:!0,data:await he(e)}}case`CHECK_ALL_BREACHES`:{let e=E(),t={};for(let n of e)n.type!==`note`&&n.password&&(t[n.id]=await he(n.password),await new Promise(e=>setTimeout(e,200)));for(let[e,n]of Object.entries(t)){let t=T(e);t&&(t.breach??0)!==n&&await C(e,{breach:n>0?n:void 0})}return{ok:!0,data:t}}case`GET_SETTINGS`:return{ok:!0,data:await D()};case`UPDATE_SETTINGS`:{let e=r.payload;return await x(e),typeof e.autoLockMinutes==`number`&&(await S(),y()&&w()),{ok:!0}}case`GET_PENDING_PASSKEY`:return{ok:!0,data:await Me()};case`APPROVE_PASSKEY`:{let{requestId:e}=r.payload;return await W(e,!0),{ok:!0}}case`DENY_PASSKEY`:{let{requestId:e}=r.payload;return await W(e,!1),{ok:!0}}case`GET_PASSKEYS`:return{ok:!0,data:E().filter(e=>e.passkey!==void 0)};case`DELETE_PASSKEY`:{let{id:e}=r.payload;return await pe(e),{ok:!0}}case`GET_PASSKEY_PROVIDER_STATE`:return{ok:!0,data:await G()};case`SET_PASSKEY_PROVIDER_ENABLED`:{let{enabled:e}=r.payload;return e&&!(await J(`passkeys`)).allowed?{ok:!1,error:`pro_required`}:{ok:!0,data:await Ie(e)}}case`FIRE_CANARY_PING`:{let{webhookUrl:e,entryTitle:t,trigger:n}=r.payload;if(!_t(e))return{ok:!1,error:`invalid webhook url`};let i=JSON.stringify({event:n===`test`?`peach_canary_test`:`peach_canary_accessed`,entry:t,trigger:n,timestamp:new Date().toISOString(),source:`peach-extension`});if(n===`test`)try{let t=await fetch(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:i});return{ok:t.ok,error:t.ok?void 0:`HTTP ${t.status}`}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`network error`}}return fetch(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:i}).catch(()=>{}),{ok:!0}}case`ACTIVATE_LICENSE`:{let{key:e}=r.payload;return{ok:!0,data:await m(e)}}case`GET_LICENSE`:return{ok:!0,data:await g()};case`GET_LICENSE_KEY`:return{ok:!0,data:await _()};case`DEACTIVATE_LICENSE`:return await h(),{ok:!0};case`SHOULD_PLAY_CELEBRATION`:return{ok:!0,data:await te()};case`MARK_CELEBRATION_PLAYED`:return await ee(),{ok:!0};case`OPEN_PRO_GATE`:{let{feature:e}=r.payload??{};chrome.storage.session&&await chrome.storage.session.set({pendingProGate:{feature:e??`passkeys`}});try{await chrome.action.openPopup()}catch{}return{ok:!0}}case`GET_IDENTITIES`:return y()?{ok:!0,data:le()}:{ok:!1,error:`vault locked`};case`GET_ADVANCED_HEALTH_REPORT`:return(await J(`advanced_health`)).allowed?y()?{ok:!0,data:await ct(E())}:{ok:!1,error:`vault locked`}:{ok:!1,error:`pro_required`};case`INITIATE_PASSWORD_CHANGE`:{if(!(await J(`smart_password_change`)).allowed)return{ok:!1,error:`pro_required`};if(!y())return{ok:!1,error:`vault locked`};let{id:e}=r.payload,t=T(e);if(!t)return{ok:!1,error:`entry not found`};let n=lt(t);if(!n)return{ok:!1,error:`no reset url`};try{return await chrome.tabs.create({url:n}),{ok:!0,data:{url:n}}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`failed to open tab`}}}case`IS_DURESS_ENABLED`:return{ok:!0,data:await se()};case`SETUP_DURESS`:{let{duressPassword:e}=r.payload;return await ge(e),{ok:!0}}case`DISABLE_DURESS`:return await me(),{ok:!0};case`VERIFY_MAIN_PASSWORD`:{let{password:e}=r.payload;return{ok:!0,data:await ie(e)}}case`CHANGE_PASSWORD`:{let{currentPassword:e,newPassword:t}=r.payload;return await Se(e,t)?{ok:!0}:{ok:!1,error:`incorrect current password`}}case`GET_SITE_PASSWORD_POLICY`:{let[e]=await chrome.tabs.query({active:!0,currentWindow:!0});if(!e?.id)return{ok:!0,data:null};try{return await chrome.tabs.sendMessage(e.id,{type:`GET_SITE_PASSWORD_POLICY`})??{ok:!0,data:null}}catch{return{ok:!0,data:null}}}case`GET_SYNC_STATE`:{let{getPairedDevices:e,getTrustedNetworks:n}=await t(async()=>{let{getPairedDevices:e,getTrustedNetworks:t}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{getPairedDevices:e,getTrustedNetworks:t}},__vite__mapDeps([2,1])),{isOnTailscale:r}=await t(async()=>{let{isOnTailscale:e}=await import(`./sync-network-JnKjAtqt.js`);return{isOnTailscale:e}},[]),{isProUser:i}=await t(async()=>{let{isProUser:e}=await import(`./license-ZF1DwcYD.js`);return{isProUser:e}},[]),{storageGet:a}=await t(async()=>{let{storageGet:e}=await import(`./storage-COHREhIV.js`).then(e=>e.i);return{storageGet:e}},__vite__mapDeps([3,1,4,5])),o=await e(),s=await n(),c=await r(),l=await i(),u=`offline`;u=c||s.some(e=>!e.isTailscale)?o.length===0?`no_peers`:`synced`:`not_trusted`;let d=await a(`peach_last_sync_at`),f=d?Number.parseInt(d,10):NaN;return{ok:!0,data:{pairedDevices:o,trustedNetworks:s,status:u,lastSyncAt:Number.isFinite(f)?f:void 0,isPro:l}}}case`TRIGGER_SYNC`:{if(!(await J(`sync`)).allowed)return{ok:!1,error:`pro_required`};if(!y())return{ok:!1,error:`vault_locked`};let{getPairedDevices:e,updatePairedDevice:n}=await t(async()=>{let{getPairedDevices:e,updatePairedDevice:t}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{getPairedDevices:e,updatePairedDevice:t}},__vite__mapDeps([2,1])),r=await e();if(r.length===0)return{ok:!1,error:`no_paired_devices`};let i=await t(()=>import(`./sync-lifecycle-kQgcH5o6.js`),__vite__mapDeps([6,4,5,1,7,8,3,9,10,11,2,0,12])),a=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1])),{storageGet:o,storageSet:s}=await t(async()=>{let{storageGet:e,storageSet:t}=await import(`./storage-COHREhIV.js`).then(e=>e.i);return{storageGet:e,storageSet:t}},__vite__mapDeps([3,1,4,5])),{createNativeSyncTransport:c,runBlobSyncSession:l}=await t(async()=>{let{createNativeSyncTransport:e,runBlobSyncSession:t}=await import(`./sync-coordinator-BVwn6wHZ.js`);return{createNativeSyncTransport:e,runBlobSyncSession:t}},__vite__mapDeps([13,4,3,1,5,7,8,9,12])),u=i.getDiscoveredPeerCache(),d=r.filter(e=>u.some(t=>t.x25519PublicKey===e.x25519PublicKey));if(d.length===0)return{ok:!1,error:`no_devices_reachable`};let f=[];for(let e of d){let t=u.find(t=>t.x25519PublicKey===e.x25519PublicKey);try{let r=await l(`initiator`,await c(await a.connectToPeer(t.host,t.port,t.x25519PublicKey)),{isPro:async()=>!0,isUnlocked:()=>y(),getVaultBlobs:async()=>({vault_a:await o(`peach_vault_a`)??``,vault_b:await o(`peach_vault_b`)??``})});f.push({deviceName:e.displayName,status:r.status,error:r.error}),r.status===`completed`&&await n(e.deviceId,{lastSeenAt:Date.now(),lastSyncAt:Date.now()})}catch(t){f.push({deviceName:e.displayName,status:`errored`,error:t instanceof Error?t.message:String(t)})}}return await s(`peach_last_sync_at`,String(Date.now())),{ok:!0,data:{results:f,syncedCount:f.filter(e=>e.status===`completed`).length,totalReachable:d.length}}}case`START_PAIRING`:return(await J(`sync`)).allowed?{ok:!0}:{ok:!1,error:`pro_required`};case`CANCEL_PAIRING`:return{ok:!0};case`ACCEPT_PAIRING`:return(await J(`sync`)).allowed?{ok:!0}:{ok:!1,error:`pro_required`};case`REMOVE_PAIRED_DEVICE`:{let{deviceId:e}=r.payload,{removePairedDevice:n}=await t(async()=>{let{removePairedDevice:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{removePairedDevice:e}},__vite__mapDeps([2,1]));return await n(e),{ok:!0}}case`REMOVE_TRUSTED_NETWORK`:{let{ssid:e,bssid:n,isTailscale:i}=r.payload,{removeTrustedNetwork:a,getTrustedNetworks:o}=await t(async()=>{let{removeTrustedNetwork:e,getTrustedNetworks:t}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{removeTrustedNetwork:e,getTrustedNetworks:t}},__vite__mapDeps([2,1])),s=(await o()).find(t=>(i?t.isTailscale:t.ssid===e)&&(!n||t.bssid===n));return s&&await a(s.addedAt),{ok:!0}}case`MARK_NETWORK_TRUSTED`:{let{addTrustedNetwork:e}=await t(async()=>{let{addTrustedNetwork:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{addTrustedNetwork:e}},__vite__mapDeps([2,1])),{getCurrentNetwork:n}=await t(async()=>{let{getCurrentNetwork:e}=await import(`./sync-network-JnKjAtqt.js`);return{getCurrentNetwork:e}},[]),r=await n();return await e({ssid:r.ssid,bssid:r.bssid,isTailscale:r.isTailscale,addedAt:Date.now()}),{ok:!0}}case`GET_INCOMING_PAIRING_REQUEST`:{let{getIncomingPairingRequest:e}=await t(async()=>{let{getIncomingPairingRequest:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{getIncomingPairingRequest:e}},__vite__mapDeps([2,1]));return{ok:!0,data:await e()}}case`RESPOND_INCOMING_PAIRING`:{let{accept:e}=r.payload,{getIncomingPairingRequest:n,clearIncomingPairingRequest:i,addPairedDevice:a}=await t(async()=>{let{getIncomingPairingRequest:e,clearIncomingPairingRequest:t,addPairedDevice:n}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{getIncomingPairingRequest:e,clearIncomingPairingRequest:t,addPairedDevice:n}},__vite__mapDeps([2,1])),o=await n();if(!o)return{ok:!1,error:`no_pending_request`};if(Date.now()>o.expiresAt)return await i(),{ok:!1,error:`expired`};let s=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1])),{encodeSyncMessage:c}=await t(async()=>{let{encodeSyncMessage:e}=await import(`./sync-wire-O_oTp2Oy.js`).then(e=>e.r);return{encodeSyncMessage:e}},__vite__mapDeps([12,1]));if(await i(),o.connectionId){try{if(e){let e=await s.getIdentityPublicKey(),t=await Y();s.sendSyncData(o.connectionId,c({type:`PAIR_ACCEPT`,public_key_hex:e,device_name:t})),await s.trustDevice(o.publicKeyHex,o.deviceName),await a({deviceId:o.publicKeyHex,displayName:o.deviceName,x25519PublicKey:o.publicKeyHex,pairedAt:Date.now(),lastSeenAt:Date.now()})}else s.sendSyncData(o.connectionId,c({type:`PAIR_REJECT`,reason:`user_declined`}))}catch{}try{s.disconnectFromPeer(o.connectionId)}catch{}}else if(e)try{await s.trustDevice(o.publicKeyHex,o.deviceName)}catch{}return{ok:!0,data:{accepted:e,deviceName:o.deviceName}}}case`START_PEER_DISCOVERY`:if(!(await J(`sync`)).allowed)return{ok:!1,error:`pro_required`};try{return await pt(),{ok:!0}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`discovery_failed`}}case`STOP_PEER_DISCOVERY`:try{await Q()}catch{}return{ok:!0};case`START_PAIRING_SERVER`:if(e.isNativePlatform()){if(!(await J(`sync`)).allowed)return{ok:!1,error:`pro_required`};try{let{getAndroidSyncIdentity:e}=await t(async()=>{let{getAndroidSyncIdentity:e}=await import(`./android-sync-identity-BAhJ8ODd.js`);return{getAndroidSyncIdentity:e}},__vite__mapDeps([14,5,1,15])),{getOrCreateLocalDeviceId:n}=await t(async()=>{let{getOrCreateLocalDeviceId:e}=await import(`./sync-identity-glue-8n3JhJIb.js`);return{getOrCreateLocalDeviceId:e}},[]),{startCapacitorPairingServer:r}=await t(async()=>{let{startCapacitorPairingServer:e}=await import(`./capacitor-pairing-server-2RAeT9Ze.js`);return{startCapacitorPairingServer:e}},__vite__mapDeps([16,5,1,17,15,12])),{addPairedDevice:i}=await t(async()=>{let{addPairedDevice:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{addPairedDevice:e}},__vite__mapDeps([2,1])),{setActivePairingToken:a,setRecentPairing:o}=await t(async()=>{let{setActivePairingToken:e,setRecentPairing:t}=await import(`./pairing-server-state-TxS-duki.js`).then(e=>e.n);return{setActivePairingToken:e,setRecentPairing:t}},__vite__mapDeps([11,1])),s=await e(),c=Array.from(s.publicKey,e=>e.toString(16).padStart(2,`0`)).join(``),l=await n(),u=await Y(),d=ft(),f=Date.now()+dt;return X=await r({privateKey:s.privateKey,publicKey:s.publicKey,publicKeyHex:c,deviceId:l,deviceName:u,token:d,onPaired:async e=>{try{await i({deviceId:e.deviceId,displayName:e.displayName,x25519PublicKey:e.publicKeyHex,pairedAt:Date.now(),lastSeenAt:Date.now()})}catch{}await o({deviceName:e.displayName,pairedAt:Date.now(),side:`showing`}),await a(null),X=null}}),await a({token:d,expiresAt:f}),{ok:!0,data:{token:d,expiresAt:f}}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`pairing_server_failed`}}}if(!(await J(`sync`)).allowed)return{ok:!1,error:`pro_required`};try{let e=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1])),{setActivePairingToken:n}=await t(async()=>{let{setActivePairingToken:e}=await import(`./pairing-server-state-TxS-duki.js`).then(e=>e.n);return{setActivePairingToken:e}},__vite__mapDeps([11,1])),{getOrCreateLocalDeviceId:r}=await t(async()=>{let{getOrCreateLocalDeviceId:e}=await import(`./sync-identity-glue-8n3JhJIb.js`);return{getOrCreateLocalDeviceId:e}},[]);e.connectSyncHost();let i=ft(),a=Date.now()+dt,o=await r(),s=await Y();return await e.startPairingServer({token:i,deviceId:o,name:s}),await n({token:i,expiresAt:a}),{ok:!0,data:{token:i,expiresAt:a}}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`pairing_server_failed`}}case`STOP_PAIRING_SERVER`:if(e.isNativePlatform()){try{let{setActivePairingToken:e}=await t(async()=>{let{setActivePairingToken:e}=await import(`./pairing-server-state-TxS-duki.js`).then(e=>e.n);return{setActivePairingToken:e}},__vite__mapDeps([11,1]));await e(null),X&&=(await X.stop(),null)}catch{}return{ok:!0}}try{let e=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1])),{setActivePairingToken:n}=await t(async()=>{let{setActivePairingToken:e}=await import(`./pairing-server-state-TxS-duki.js`).then(e=>e.n);return{setActivePairingToken:e}},__vite__mapDeps([11,1]));await n(null),e.isHostConnected()&&await e.stopPairingServer()}catch{}return{ok:!0};case`CONNECT_WITH_CODE`:{if(e.isNativePlatform()){if(!(await J(`sync`)).allowed)return{ok:!1,error:`pro_required`};let{token:e}=r.payload,n=String(e).replace(/\D/g,``);if(n.length!==6)return{ok:!1,error:`invalid_code`};try{let{registerPlugin:e}=await t(async()=>{let{registerPlugin:e}=await import(`./dist-C5po-C0e.js`).then(e=>e.r);return{registerPlugin:e}},__vite__mapDeps([5,1])),r=await e(`Sync`).resolvePeerByCode({token:n,timeoutMs:8e3});if(r.wsPort===void 0)return{ok:!1,error:`peer_missing_ws_port`};let i={deviceId:r.deviceId,deviceName:r.name,host:r.host,port:r.tcpPort,wsPort:r.wsPort,x25519PublicKey:r.x25519PublicKey,alreadyPaired:!1},{getAndroidSyncIdentity:a}=await t(async()=>{let{getAndroidSyncIdentity:e}=await import(`./android-sync-identity-BAhJ8ODd.js`);return{getAndroidSyncIdentity:e}},__vite__mapDeps([14,5,1,15])),o=await a(),s=Array.from(o.publicKey,e=>e.toString(16).padStart(2,`0`)).join(``),c=await Y(),{runCapacitorPairingHandshake:l}=await t(async()=>{let{runCapacitorPairingHandshake:e}=await import(`./capacitor-pairing-handshake-CrTUHO4K.js`);return{runCapacitorPairingHandshake:e}},__vite__mapDeps([18,17,15,12,1])),{addPairedDevice:u}=await t(async()=>{let{addPairedDevice:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{addPairedDevice:e}},__vite__mapDeps([2,1])),{setRecentPairing:d}=await t(async()=>{let{setRecentPairing:e}=await import(`./pairing-server-state-TxS-duki.js`).then(e=>e.n);return{setRecentPairing:e}},__vite__mapDeps([11,1])),f=await l(i,o.privateKey,o.publicKey,s,c);return await u({deviceId:i.deviceId,displayName:f.deviceName||i.deviceName,x25519PublicKey:f.publicKeyHex,pairedAt:Date.now(),lastSeenAt:Date.now()}),await d({deviceName:f.deviceName||i.deviceName,pairedAt:Date.now(),side:`entering`}),{ok:!0,data:{deviceName:f.deviceName||i.deviceName}}}catch(e){let t=e instanceof Error?e.message:String(e);return t.startsWith(`pair_rejected:`)?{ok:!1,error:`pair_rejected`,data:{reason:t.slice(14)}}:t.includes(`no peer responded`)||t.includes(`resolve failed`)?{ok:!1,error:t}:{ok:!1,error:t||`connect_failed`}}}if(!(await J(`sync`)).allowed)return{ok:!1,error:`pro_required`};let{token:n}=r.payload,i=String(n).replace(/\D/g,``);if(i.length!==6)return{ok:!1,error:`invalid_code`};let a=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1])),{encodeSyncMessage:o}=await t(async()=>{let{encodeSyncMessage:e}=await import(`./sync-wire-O_oTp2Oy.js`).then(e=>e.r);return{encodeSyncMessage:e}},__vite__mapDeps([12,1])),{waitForPairingResponse:s}=await t(async()=>{let{waitForPairingResponse:e}=await import(`./sync-coordinator-BVwn6wHZ.js`);return{waitForPairingResponse:e}},__vite__mapDeps([13,4,3,1,5,7,8,9,12])),{addPairedDevice:c}=await t(async()=>{let{addPairedDevice:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{addPairedDevice:e}},__vite__mapDeps([2,1])),{setRecentPairing:l}=await t(async()=>{let{setRecentPairing:e}=await import(`./pairing-server-state-TxS-duki.js`).then(e=>e.n);return{setRecentPairing:e}},__vite__mapDeps([11,1]));a.connectSyncHost();let u;try{let e=await a.resolvePeerByCode(i,8e3);u=await a.connectToPeer(e.host,e.port,e.x25519PublicKey);let t=await a.getIdentityPublicKey(),n=await Y();a.sendSyncData(u,o({type:`PAIR_REQUEST`,public_key_hex:t,device_name:n}));let r=await s(u,3e4);return r.type===`PAIR_ACCEPT`?(await a.trustDevice(r.public_key_hex,r.device_name),await c({deviceId:e.deviceId,displayName:r.device_name||e.name,x25519PublicKey:r.public_key_hex,pairedAt:Date.now(),lastSeenAt:Date.now()}),a.disconnectFromPeer(u),await l({deviceName:r.device_name||e.name,pairedAt:Date.now(),side:`entering`}),{ok:!0,data:{deviceName:r.device_name||e.name}}):r.type===`PAIR_REJECT`?(a.disconnectFromPeer(u),{ok:!1,error:`pair_rejected`,data:{reason:r.reason}}):(a.disconnectFromPeer(u),{ok:!1,error:`unexpected_response`})}catch(e){if(u)try{a.disconnectFromPeer(u)}catch{}return{ok:!1,error:e instanceof Error?e.message:`connect_failed`}}}case`GET_RECENT_PAIRING`:{let{consumeRecentPairing:e}=await t(async()=>{let{consumeRecentPairing:e}=await import(`./pairing-server-state-TxS-duki.js`).then(e=>e.n);return{consumeRecentPairing:e}},__vite__mapDeps([11,1]));return{ok:!0,data:await e()}}case`INITIATE_PAIR_WITH_PEER`:{if(!(await J(`sync`)).allowed)return{ok:!1,error:`pro_required`};let{peer:e}=r.payload,n=await t(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1])),{encodeSyncMessage:i}=await t(async()=>{let{encodeSyncMessage:e}=await import(`./sync-wire-O_oTp2Oy.js`).then(e=>e.r);return{encodeSyncMessage:e}},__vite__mapDeps([12,1])),{waitForPairingResponse:a}=await t(async()=>{let{waitForPairingResponse:e}=await import(`./sync-coordinator-BVwn6wHZ.js`);return{waitForPairingResponse:e}},__vite__mapDeps([13,4,3,1,5,7,8,9,12])),{addPairedDevice:o}=await t(async()=>{let{addPairedDevice:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{addPairedDevice:e}},__vite__mapDeps([2,1])),s;try{s=await n.connectToPeer(e.host,e.port,e.x25519PublicKey);let t=await n.getIdentityPublicKey(),r=await Y();n.sendSyncData(s,i({type:`PAIR_REQUEST`,public_key_hex:t,device_name:r}));let c=await a(s,3e4);return c.type===`PAIR_ACCEPT`?(await n.trustDevice(c.public_key_hex,c.device_name),await o({deviceId:e.deviceId,displayName:c.device_name||e.deviceName,x25519PublicKey:c.public_key_hex,pairedAt:Date.now(),lastSeenAt:Date.now()}),n.disconnectFromPeer(s),{ok:!0,data:{connectionId:s,deviceName:c.device_name}}):c.type===`PAIR_REJECT`?(n.disconnectFromPeer(s),{ok:!1,error:`pair_rejected`,data:{reason:c.reason}}):(n.disconnectFromPeer(s),{ok:!1,error:`unexpected_response`})}catch(e){if(s)try{n.disconnectFromPeer(s)}catch{}return{ok:!1,error:e instanceof Error?e.message:`pair_failed`}}}case`DEBUG_INJECT_INCOMING_PAIRING`:{let{deviceName:e,publicKeyHex:n}=r.payload??{};if(!e||!n)return{ok:!1,error:`missing_payload`};let{setIncomingPairingRequest:i}=await t(async()=>{let{setIncomingPairingRequest:e}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{setIncomingPairingRequest:e}},__vite__mapDeps([2,1])),a=Date.now();return await i({deviceName:e,publicKeyHex:n,receivedAt:a,expiresAt:a+6e4}),{ok:!0}}case`RESET_SYNC_IDENTITY`:{if(!(await J(`sync`)).allowed)return{ok:!1,error:`pro_required`};let{getPairedDevices:e,removePairedDevice:n}=await t(async()=>{let{getPairedDevices:e,removePairedDevice:t}=await import(`./sync-storage-DsbiOwL6.js`).then(e=>e.i);return{getPairedDevices:e,removePairedDevice:t}},__vite__mapDeps([2,1])),r=await e();for(let e of r)await n(e.deviceId);let i=null;try{let{rotateNativeIdentity:e,disconnectSyncHost:n}=await t(async()=>{let{rotateNativeIdentity:e,disconnectSyncHost:t}=await import(`./sync-kQd3KSmO.js`).then(e=>e.m);return{rotateNativeIdentity:e,disconnectSyncHost:t}},__vite__mapDeps([0,1]));i=await e(),n()}catch{i=null}return{ok:!0,data:{removedDevices:r.length,nativePublicKey:i}}}case`RECORD_MANUAL_SUMMON`:{let{domain:e}=r.payload,t=k(),n=t.manualSummonDomains?.[e],i=Date.now();return await x({manualSummonDomains:{...t.manualSummonDomains,[e]:{firstSummonedAt:n?.firstSummonedAt??i,summonCount:(n?.summonCount??0)+1,lastSummonedAt:i}}}),{ok:!0}}case`DECLINE_CARD_SAVE`:{let{last4:e,expMonth:t,expYear:n}=r.payload;return await ve(e,t,n),{ok:!0}}case`IS_CARD_DECLINED`:{let{last4:e,expMonth:t,expYear:n}=r.payload;return{ok:!0,data:await Te(e,t,n)}}case`INITIATE_FIREFOX_PASSKEY_CREATE`:{let{rpId:e,rpName:t,userName:n,userDisplayName:i}=r.payload??{};return!e||!n?{ok:!1,error:`rpId and userName required`}:await Be({rpId:e,rpName:t??e,userName:n,userDisplayName:i})}case`COMPLETE_FIREFOX_PASSKEY_CREATE`:{let e=r.payload;return e?await Ve(e):{ok:!1,error:`missing payload`}}case`PASSKEY_OFFER_DECLINE`:{let{domain:e}=r.payload??{};return e?(await Ue(e),{ok:!0}):{ok:!1,error:`domain required`}}case`GET_PASSKEY_OFFER_DECLINED`:{let{domain:e}=r.payload??{};return e?{ok:!0,data:await We(e)}:{ok:!1,error:`domain required`}}case`PASSKEY_HAS_CREDENTIALS`:{let e=r.payload;return e?.rpId?await Ke({rpId:e.rpId,allowCredentials:e.allowCredentials??[]}):{ok:!1,error:`rpId required`}}case`PASSKEY_CREATE`:{let e=r.payload;return!e?.rpId||!e?.userName?{ok:!1,error:`rpId and userName required`}:await Je(e)}case`PASSKEY_GET`:{let e=r.payload;return e?.rpId?await Ye(e):{ok:!1,error:`rpId required`}}case`GET_PASSKEY_FOR_DOMAIN`:{let{domain:e}=r.payload??{};if(!e)return{ok:!1,error:`domain required`};if(!y())return{ok:!0,data:null};let t=E().find(t=>t.passkey?.rpId===e);return!t||!t.passkey?{ok:!0,data:null}:{ok:!0,data:{rpId:t.passkey.rpId,userName:t.passkey.userName,browser:t.passkey.browser}}}case`DESTROY_VAULT`:return A(),await n(),await xe(),!e.isNativePlatform()&&chrome.storage.session&&await chrome.storage.session.clear(),{ok:!0};case`SUBMIT_FEEDBACK`:{let{category:e,message:t,version:n,browser:i}=r.payload;return t.trim()?{ok:!0}:{ok:!1,error:`message is empty`}}default:return{ok:!1,error:`unknown message type`}}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`operation failed`}}}function $(t){e.isNativePlatform()||!chrome.tabs?.query||chrome.tabs.query({},e=>{for(let n of e)n.id!==void 0&&chrome.tabs.sendMessage(n.id,t).catch(()=>{})})}function gt(e){return e!==`HAS_VAULT`&&e!==`IS_UNLOCKED`&&e!==`GET_VAULT_STATUS`&&e!==`LOCK`&&e!==`UPDATE_SETTINGS`&&e!==`GET_PENDING_PASSKEY`&&e!==`GET_PASSKEY_PROVIDER_STATE`&&e!==`DECLINE_CARD_SAVE`&&e!==`IS_CARD_DECLINED`&&e!==`SUBMIT_FEEDBACK`}function _t(e){try{let t=new URL(e);if(t.protocol!==`https:`)return!1;let n=t.hostname.toLowerCase();return!(n===`localhost`||n.endsWith(`.localhost`)||vt(n)||yt(n))}catch{return!1}}function vt(e){if(mt.some(t=>e.startsWith(t.prefix)))return!0;let t=e.split(`.`).map(e=>Number(e));return t.length!==4||t.some(e=>!Number.isInteger(e)||e<0||e>255)?!1:t[0]===172&&t[1]>=16&&t[1]<=31}function yt(e){let t=e.replace(/^\[|\]$/g,``).toLowerCase();return t===`::1`||t.startsWith(`fc`)||t.startsWith(`fd`)||t.startsWith(`fe80:`)}export{ht as handleMessage};\ No newline at end of filedist-mobile/assets/noise-js-Crku9Lwa.js+1 −0
@@ -0,0 +1 @@1+import{a as e,c as t,i as n,n as r,o as i,r as a,s as o,t as s}from"./x25519-DSi3mQjw.js";var c=20;function l(e,t,n){let r=1634760805,i=857760878,a=2036477234,s=1797285236,l=n[3]<<24|n[2]<<16|n[1]<<8|n[0],u=n[7]<<24|n[6]<<16|n[5]<<8|n[4],d=n[11]<<24|n[10]<<16|n[9]<<8|n[8],f=n[15]<<24|n[14]<<16|n[13]<<8|n[12],p=n[19]<<24|n[18]<<16|n[17]<<8|n[16],m=n[23]<<24|n[22]<<16|n[21]<<8|n[20],h=n[27]<<24|n[26]<<16|n[25]<<8|n[24],g=n[31]<<24|n[30]<<16|n[29]<<8|n[28],_=t[3]<<24|t[2]<<16|t[1]<<8|t[0],v=t[7]<<24|t[6]<<16|t[5]<<8|t[4],y=t[11]<<24|t[10]<<16|t[9]<<8|t[8],b=t[15]<<24|t[14]<<16|t[13]<<8|t[12],x=r,S=i,C=a,w=s,T=l,E=u,D=d,O=f,k=p,A=m,j=h,M=g,N=_,P=v,F=y,I=b;for(let e=0;e<c;e+=2)x=x+T|0,N^=x,N=N>>>16|N<<16,k=k+N|0,T^=k,T=T>>>20|T<<12,S=S+E|0,P^=S,P=P>>>16|P<<16,A=A+P|0,E^=A,E=E>>>20|E<<12,C=C+D|0,F^=C,F=F>>>16|F<<16,j=j+F|0,D^=j,D=D>>>20|D<<12,w=w+O|0,I^=w,I=I>>>16|I<<16,M=M+I|0,O^=M,O=O>>>20|O<<12,C=C+D|0,F^=C,F=F>>>24|F<<8,j=j+F|0,D^=j,D=D>>>25|D<<7,w=w+O|0,I^=w,I=I>>>24|I<<8,M=M+I|0,O^=M,O=O>>>25|O<<7,S=S+E|0,P^=S,P=P>>>24|P<<8,A=A+P|0,E^=A,E=E>>>25|E<<7,x=x+T|0,N^=x,N=N>>>24|N<<8,k=k+N|0,T^=k,T=T>>>25|T<<7,x=x+E|0,I^=x,I=I>>>16|I<<16,j=j+I|0,E^=j,E=E>>>20|E<<12,S=S+D|0,N^=S,N=N>>>16|N<<16,M=M+N|0,D^=M,D=D>>>20|D<<12,C=C+O|0,P^=C,P=P>>>16|P<<16,k=k+P|0,O^=k,O=O>>>20|O<<12,w=w+T|0,F^=w,F=F>>>16|F<<16,A=A+F|0,T^=A,T=T>>>20|T<<12,C=C+O|0,P^=C,P=P>>>24|P<<8,k=k+P|0,O^=k,O=O>>>25|O<<7,w=w+T|0,F^=w,F=F>>>24|F<<8,A=A+F|0,T^=A,T=T>>>25|T<<7,S=S+D|0,N^=S,N=N>>>24|N<<8,M=M+N|0,D^=M,D=D>>>25|D<<7,x=x+E|0,I^=x,I=I>>>24|I<<8,j=j+I|0,E^=j,E=E>>>25|E<<7;o(x+r|0,e,0),o(S+i|0,e,4),o(C+a|0,e,8),o(w+s|0,e,12),o(T+l|0,e,16),o(E+u|0,e,20),o(D+d|0,e,24),o(O+f|0,e,28),o(k+p|0,e,32),o(A+m|0,e,36),o(j+h|0,e,40),o(M+g|0,e,44),o(N+_|0,e,48),o(P+v|0,e,52),o(F+y|0,e,56),o(I+b|0,e,60)}function u(e,t,n,r,i=0){if(e.length!==32)throw Error(`ChaCha: key size must be 32 bytes`);if(r.length<n.length)throw Error(`ChaCha: destination is shorter than source`);let o,s;if(i===0){if(t.length!==8&&t.length!==12)throw Error(`ChaCha nonce must be 8 or 12 bytes`);o=new Uint8Array(16),s=o.length-t.length,o.set(t,s)}else{if(t.length!==16)throw Error(`ChaCha nonce with counter must be 16 bytes`);o=t,s=i}let c=new Uint8Array(64);for(let t=0;t<n.length;t+=64){l(c,o,e);for(let e=t;e<t+64&&e<n.length;e++)r[e]=n[e]^c[e-t];f(o,0,s)}return a(c),i===0&&a(o),r}function d(e,t,n,r=0){return a(n),u(e,t,n,n,r)}function f(e,t,n){let r=1;for(;n--;)r=r+(e[t]&255)|0,e[t]=r&255,r>>>=8,t++;if(r>0)throw Error(`ChaCha: counter overflow`)}function p(e,t){if(e.length!==t.length)return 0;let n=0;for(let r=0;r<e.length;r++)n|=e[r]^t[r];return 1&n-1>>>8}function m(e,t){return e.length===0||t.length===0?!1:p(e,t)!==0}var h=class{digestLength=16;_buffer=new Uint8Array(16);_r=new Uint16Array(10);_h=new Uint16Array(10);_pad=new Uint16Array(8);_leftover=0;_fin=0;_finished=!1;constructor(e){let t=e[0]|e[1]<<8;this._r[0]=t&8191;let n=e[2]|e[3]<<8;this._r[1]=(t>>>13|n<<3)&8191;let r=e[4]|e[5]<<8;this._r[2]=(n>>>10|r<<6)&7939;let i=e[6]|e[7]<<8;this._r[3]=(r>>>7|i<<9)&8191;let a=e[8]|e[9]<<8;this._r[4]=(i>>>4|a<<12)&255,this._r[5]=a>>>1&8190;let o=e[10]|e[11]<<8;this._r[6]=(a>>>14|o<<2)&8191;let s=e[12]|e[13]<<8;this._r[7]=(o>>>11|s<<5)&8065;let c=e[14]|e[15]<<8;this._r[8]=(s>>>8|c<<8)&8191,this._r[9]=c>>>5&127,this._pad[0]=e[16]|e[17]<<8,this._pad[1]=e[18]|e[19]<<8,this._pad[2]=e[20]|e[21]<<8,this._pad[3]=e[22]|e[23]<<8,this._pad[4]=e[24]|e[25]<<8,this._pad[5]=e[26]|e[27]<<8,this._pad[6]=e[28]|e[29]<<8,this._pad[7]=e[30]|e[31]<<8}_blocks(e,t,n){let r=this._fin?0:2048,i=this._h[0],a=this._h[1],o=this._h[2],s=this._h[3],c=this._h[4],l=this._h[5],u=this._h[6],d=this._h[7],f=this._h[8],p=this._h[9],m=this._r[0],h=this._r[1],g=this._r[2],_=this._r[3],v=this._r[4],y=this._r[5],b=this._r[6],x=this._r[7],S=this._r[8],C=this._r[9];for(;n>=16;){let w=e[t+0]|e[t+1]<<8;i+=w&8191;let T=e[t+2]|e[t+3]<<8;a+=(w>>>13|T<<3)&8191;let E=e[t+4]|e[t+5]<<8;o+=(T>>>10|E<<6)&8191;let D=e[t+6]|e[t+7]<<8;s+=(E>>>7|D<<9)&8191;let O=e[t+8]|e[t+9]<<8;c+=(D>>>4|O<<12)&8191,l+=O>>>1&8191;let k=e[t+10]|e[t+11]<<8;u+=(O>>>14|k<<2)&8191;let A=e[t+12]|e[t+13]<<8;d+=(k>>>11|A<<5)&8191;let j=e[t+14]|e[t+15]<<8;f+=(A>>>8|j<<8)&8191,p+=j>>>5|r;let M=0,N=M;N+=i*m,N+=5*C*a,N+=5*S*o,N+=5*x*s,N+=5*b*c,M=N>>>13,N&=8191,N+=5*y*l,N+=5*v*u,N+=5*_*d,N+=5*g*f,N+=5*h*p,M+=N>>>13,N&=8191;let P=M;P+=i*h,P+=a*m,P+=5*C*o,P+=5*S*s,P+=5*x*c,M=P>>>13,P&=8191,P+=5*b*l,P+=5*y*u,P+=5*v*d,P+=5*_*f,P+=5*g*p,M+=P>>>13,P&=8191;let F=M;F+=i*g,F+=a*h,F+=o*m,F+=5*C*s,F+=5*S*c,M=F>>>13,F&=8191,F+=5*x*l,F+=5*b*u,F+=5*y*d,F+=5*v*f,F+=5*_*p,M+=F>>>13,F&=8191;let I=M;I+=i*_,I+=a*g,I+=o*h,I+=s*m,I+=5*C*c,M=I>>>13,I&=8191,I+=5*S*l,I+=5*x*u,I+=5*b*d,I+=5*y*f,I+=5*v*p,M+=I>>>13,I&=8191;let L=M;L+=i*v,L+=a*_,L+=o*g,L+=s*h,L+=c*m,M=L>>>13,L&=8191,L+=5*C*l,L+=5*S*u,L+=5*x*d,L+=5*b*f,L+=5*y*p,M+=L>>>13,L&=8191;let R=M;R+=i*y,R+=a*v,R+=o*_,R+=s*g,R+=c*h,M=R>>>13,R&=8191,R+=l*m,R+=5*C*u,R+=5*S*d,R+=5*x*f,R+=5*b*p,M+=R>>>13,R&=8191;let z=M;z+=i*b,z+=a*y,z+=o*v,z+=s*_,z+=c*g,M=z>>>13,z&=8191,z+=l*h,z+=u*m,z+=5*C*d,z+=5*S*f,z+=5*x*p,M+=z>>>13,z&=8191;let B=M;B+=i*x,B+=a*b,B+=o*y,B+=s*v,B+=c*_,M=B>>>13,B&=8191,B+=l*g,B+=u*h,B+=d*m,B+=5*C*f,B+=5*S*p,M+=B>>>13,B&=8191;let V=M;V+=i*S,V+=a*x,V+=o*b,V+=s*y,V+=c*v,M=V>>>13,V&=8191,V+=l*_,V+=u*g,V+=d*h,V+=f*m,V+=5*C*p,M+=V>>>13,V&=8191;let H=M;H+=i*C,H+=a*S,H+=o*x,H+=s*b,H+=c*y,M=H>>>13,H&=8191,H+=l*v,H+=u*_,H+=d*g,H+=f*h,H+=p*m,M+=H>>>13,H&=8191,M=(M<<2)+M|0,M=M+N|0,N=M&8191,M>>>=13,P+=M,i=N,a=P,o=F,s=I,c=L,l=R,u=z,d=B,f=V,p=H,t+=16,n-=16}this._h[0]=i,this._h[1]=a,this._h[2]=o,this._h[3]=s,this._h[4]=c,this._h[5]=l,this._h[6]=u,this._h[7]=d,this._h[8]=f,this._h[9]=p}finish(e,t=0){let n=new Uint16Array(10),r,i,a,o;if(this._leftover){for(o=this._leftover,this._buffer[o++]=1;o<16;o++)this._buffer[o]=0;this._fin=1,this._blocks(this._buffer,0,16)}for(r=this._h[1]>>>13,this._h[1]&=8191,o=2;o<10;o++)this._h[o]+=r,r=this._h[o]>>>13,this._h[o]&=8191;for(this._h[0]+=r*5,r=this._h[0]>>>13,this._h[0]&=8191,this._h[1]+=r,r=this._h[1]>>>13,this._h[1]&=8191,this._h[2]+=r,n[0]=this._h[0]+5,r=n[0]>>>13,n[0]&=8191,o=1;o<10;o++)n[o]=this._h[o]+r,r=n[o]>>>13,n[o]&=8191;for(n[9]-=8192,i=(r^1)-1,o=0;o<10;o++)n[o]&=i;for(i=~i,o=0;o<10;o++)this._h[o]=this._h[o]&i|n[o];for(this._h[0]=(this._h[0]|this._h[1]<<13)&65535,this._h[1]=(this._h[1]>>>3|this._h[2]<<10)&65535,this._h[2]=(this._h[2]>>>6|this._h[3]<<7)&65535,this._h[3]=(this._h[3]>>>9|this._h[4]<<4)&65535,this._h[4]=(this._h[4]>>>12|this._h[5]<<1|this._h[6]<<14)&65535,this._h[5]=(this._h[6]>>>2|this._h[7]<<11)&65535,this._h[6]=(this._h[7]>>>5|this._h[8]<<8)&65535,this._h[7]=(this._h[8]>>>8|this._h[9]<<5)&65535,a=this._h[0]+this._pad[0],this._h[0]=a&65535,o=1;o<8;o++)a=(this._h[o]+this._pad[o]|0)+(a>>>16)|0,this._h[o]=a&65535;return e[t+0]=this._h[0]>>>0,e[t+1]=this._h[0]>>>8,e[t+2]=this._h[1]>>>0,e[t+3]=this._h[1]>>>8,e[t+4]=this._h[2]>>>0,e[t+5]=this._h[2]>>>8,e[t+6]=this._h[3]>>>0,e[t+7]=this._h[3]>>>8,e[t+8]=this._h[4]>>>0,e[t+9]=this._h[4]>>>8,e[t+10]=this._h[5]>>>0,e[t+11]=this._h[5]>>>8,e[t+12]=this._h[6]>>>0,e[t+13]=this._h[6]>>>8,e[t+14]=this._h[7]>>>0,e[t+15]=this._h[7]>>>8,this._finished=!0,this}update(e){let t=0,n=e.length,r;if(this._leftover){r=16-this._leftover,r>n&&(r=n);for(let n=0;n<r;n++)this._buffer[this._leftover+n]=e[t+n];if(n-=r,t+=r,this._leftover+=r,this._leftover<16)return this;this._blocks(this._buffer,0,16),this._leftover=0}if(n>=16&&(r=n-n%16,this._blocks(e,t,r),t+=r,n-=r),n){for(let r=0;r<n;r++)this._buffer[this._leftover+r]=e[t+r];this._leftover+=n}return this}digest(){if(this._finished)throw Error(`Poly1305 was finished`);let e=new Uint8Array(16);return this.finish(e),e}clean(){return a(this._buffer),a(this._r),a(this._h),a(this._pad),this._leftover=0,this._fin=0,this._finished=!0,this}},g=new Uint8Array(16),_=class{nonceLength=12;tagLength=16;_key;constructor(e){if(e.length!==32)throw Error(`ChaCha20Poly1305 needs 32-byte key`);this._key=new Uint8Array(e)}seal(e,t,n,r){if(e.length>16)throw Error(`ChaCha20Poly1305: incorrect nonce length`);let i=new Uint8Array(16);i.set(e,i.length-e.length);let o=new Uint8Array(32);d(this._key,i,o,4);let s=t.length+this.tagLength,c;if(r){if(r.length!==s)throw Error(`ChaCha20Poly1305: incorrect destination length`);c=r}else c=new Uint8Array(s);return u(this._key,i,t,c,4),this._authenticate(c.subarray(c.length-this.tagLength,c.length),o,c.subarray(0,c.length-this.tagLength),n),a(i),c}open(e,t,n,r){if(e.length>16)throw Error(`ChaCha20Poly1305: incorrect nonce length`);if(t.length<this.tagLength)return null;let i=new Uint8Array(16);i.set(e,i.length-e.length);let o=new Uint8Array(32);d(this._key,i,o,4);let s=new Uint8Array(this.tagLength);if(this._authenticate(s,o,t.subarray(0,t.length-this.tagLength),n),!m(s,t.subarray(t.length-this.tagLength,t.length)))return null;let c=t.length-this.tagLength,l;if(r){if(r.length!==c)throw Error(`ChaCha20Poly1305: incorrect destination length`);l=r}else l=new Uint8Array(c);return u(this._key,i,t.subarray(0,t.length-this.tagLength),l,4),a(i),l}clean(){return a(this._key),this}_authenticate(e,n,r,i){let o=new h(n);i&&(o.update(i),i.length%16>0&&o.update(g.subarray(i.length%16))),o.update(r),r.length%16>0&&o.update(g.subarray(r.length%16));let s=new Uint8Array(8);i&&t(i.length,s),o.update(s),t(r.length,s),o.update(s);let c=o.digest();for(let t=0;t<c.length;t++)e[t]=c[t];o.clean(),a(c),a(s)}},v=2**32-1,y=2**48-1,b=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),x=class{digestLength;blockSize=64;_state=new Uint32Array(b);_buffer=new Uint8Array(64);_bufferLength=0;_ctr0=0;_ctr1=0;_flag0=0;_flag1=0;_lastNode=!1;_finished=!1;_paddedKey;_initialState;constructor(t=32,n){if(this.digestLength=t,t<1||t>32)throw Error(`blake2s: wrong digest length`);n&&this.validateConfig(n);let r=0;n&&n.key&&(r=n.key.length);let i=1,a=1;if(n&&n.tree&&(i=n.tree.fanout,a=n.tree.maxDepth),this._state[0]^=t|r<<8|i<<16|a<<24,n&&n.tree){this._state[1]^=n.tree.leafSize;let e=n.tree.nodeOffset/4294967296>>>0,t=n.tree.nodeOffset>>>0;this._state[2]^=t,this._state[3]^=e|n.tree.nodeDepth<<16|n.tree.innerDigestLength<<24,this._lastNode=n.tree.lastNode}n&&n.salt&&(this._state[4]^=e(n.salt,0),this._state[5]^=e(n.salt,4)),n&&n.personalization&&(this._state[6]^=e(n.personalization,0),this._state[7]^=e(n.personalization,4)),this._initialState=new Uint32Array(this._state),n&&n.key&&r>0&&(this._paddedKey=new Uint8Array(64),this._paddedKey.set(n.key),this._buffer.set(this._paddedKey),this._bufferLength=64)}reset(){return this._state.set(this._initialState),this._paddedKey?(this._buffer.set(this._paddedKey),this._bufferLength=64):this._bufferLength=0,this._ctr0=0,this._ctr1=0,this._flag0=0,this._flag1=0,this._finished=!1,this}validateConfig(e){if(e.key&&e.key.length>32)throw Error(`blake2s: wrong key length`);if(e.salt&&e.salt.length!==8)throw Error(`blake2s: wrong salt length`);if(e.personalization&&e.personalization.length!==8)throw Error(`blake2s: wrong personalization length`);if(e.tree){if(e.tree.fanout<0||e.tree.fanout>255)throw Error(`blake2s: wrong tree fanout`);if(e.tree.maxDepth<0||e.tree.maxDepth>255)throw Error(`blake2s: wrong tree depth`);if(e.tree.leafSize<0||e.tree.leafSize>v)throw Error(`blake2s: wrong leaf size`);if(e.tree.innerDigestLength<0||e.tree.innerDigestLength>32)throw Error(`blake2s: wrong tree inner digest length`);if(e.tree.nodeOffset<0||e.tree.nodeOffset>y)throw Error(`blake2s: tree node offset is too large`)}}update(e,t=e.length){if(this._finished)throw Error(`blake2s: can't update because hash was finished.`);let n=64-this._bufferLength,r=0;if(t===0)return this;if(t>n){for(let t=0;t<n;t++)this._buffer[this._bufferLength+t]=e[r+t];this._processBlock(64),r+=n,t-=n,this._bufferLength=0}for(;t>64;){for(let t=0;t<64;t++)this._buffer[t]=e[r+t];this._processBlock(64),r+=64,t-=64,this._bufferLength=0}for(let n=0;n<t;n++)this._buffer[this._bufferLength+n]=e[r+n];return this._bufferLength+=t,this}finish(e){if(!this._finished){for(let e=this._bufferLength;e<64;e++)this._buffer[e]=0;this._flag0=4294967295,this._lastNode&&(this._flag1=4294967295),this._processBlock(this._bufferLength),this._finished=!0}let t=this._buffer.subarray(0,32);for(let e=0;e<8;e++)o(this._state[e],t,e*4);return e.set(t.subarray(0,e.length)),this}digest(){let e=new Uint8Array(this.digestLength);return this.finish(e),e}clean(){a(this._state),a(this._buffer),a(this._initialState),this._paddedKey&&a(this._paddedKey),this._bufferLength=0,this._ctr0=0,this._ctr1=0,this._flag0=0,this._flag1=0,this._lastNode=!1,this._finished=!1}saveState(){if(this._finished)throw Error(`blake2s: cannot save finished state`);return{state:new Uint32Array(this._state),buffer:new Uint8Array(this._buffer),bufferLength:this._bufferLength,ctr0:this._ctr0,ctr1:this._ctr1,flag0:this._flag0,flag1:this._flag1,lastNode:this._lastNode,paddedKey:this._paddedKey?new Uint8Array(this._paddedKey):void 0,initialState:new Uint32Array(this._initialState)}}restoreState(e){return this._state.set(e.state),this._buffer.set(e.buffer),this._bufferLength=e.bufferLength,this._ctr0=e.ctr0,this._ctr1=e.ctr1,this._flag0=e.flag0,this._flag1=e.flag1,this._lastNode=e.lastNode,this._paddedKey&&a(this._paddedKey),this._paddedKey=e.paddedKey?new Uint8Array(e.paddedKey):void 0,this._initialState.set(e.initialState),this}cleanSavedState(e){a(e.state),a(e.buffer),a(e.initialState),e.paddedKey&&a(e.paddedKey),e.bufferLength=0,e.ctr0=0,e.ctr1=0,e.flag0=0,e.flag1=0,e.lastNode=!1}_processBlock(e){let t=this._ctr0+e;this._ctr0=t>>>0,t!==this._ctr0&&this._ctr1++;let n=this._state[0],r=this._state[1],i=this._state[2],a=this._state[3],o=this._state[4],s=this._state[5],c=this._state[6],l=this._state[7],u=b[0],d=b[1],f=b[2],p=b[3],m=b[4]^this._ctr0,h=b[5]^this._ctr1,g=b[6]^this._flag0,_=b[7]^this._flag1,v=this._buffer,y=v[3]<<24|v[2]<<16|v[1]<<8|v[0],x=v[7]<<24|v[6]<<16|v[5]<<8|v[4],S=v[11]<<24|v[10]<<16|v[9]<<8|v[8],C=v[15]<<24|v[14]<<16|v[13]<<8|v[12],w=v[19]<<24|v[18]<<16|v[17]<<8|v[16],T=v[23]<<24|v[22]<<16|v[21]<<8|v[20],E=v[27]<<24|v[26]<<16|v[25]<<8|v[24],D=v[31]<<24|v[30]<<16|v[29]<<8|v[28],O=v[35]<<24|v[34]<<16|v[33]<<8|v[32],k=v[39]<<24|v[38]<<16|v[37]<<8|v[36],A=v[43]<<24|v[42]<<16|v[41]<<8|v[40],j=v[47]<<24|v[46]<<16|v[45]<<8|v[44],M=v[51]<<24|v[50]<<16|v[49]<<8|v[48],N=v[55]<<24|v[54]<<16|v[53]<<8|v[52],P=v[59]<<24|v[58]<<16|v[57]<<8|v[56],F=v[63]<<24|v[62]<<16|v[61]<<8|v[60];n=n+y|0,n=n+o|0,m^=n,m=m<<16|m>>>16,u=u+m|0,o^=u,o=o<<20|o>>>12,r=r+S|0,r=r+s|0,h^=r,h=h<<16|h>>>16,d=d+h|0,s^=d,s=s<<20|s>>>12,i=i+w|0,i=i+c|0,g^=i,g=g<<16|g>>>16,f=f+g|0,c^=f,c=c<<20|c>>>12,a=a+E|0,a=a+l|0,_^=a,_=_<<16|_>>>16,p=p+_|0,l^=p,l=l<<20|l>>>12,i=i+T|0,i=i+c|0,g^=i,g=g<<24|g>>>8,f=f+g|0,c^=f,c=c<<25|c>>>7,a=a+D|0,a=a+l|0,_^=a,_=_<<24|_>>>8,p=p+_|0,l^=p,l=l<<25|l>>>7,r=r+C|0,r=r+s|0,h^=r,h=h<<24|h>>>8,d=d+h|0,s^=d,s=s<<25|s>>>7,n=n+x|0,n=n+o|0,m^=n,m=m<<24|m>>>8,u=u+m|0,o^=u,o=o<<25|o>>>7,n=n+O|0,n=n+s|0,_^=n,_=_<<16|_>>>16,f=f+_|0,s^=f,s=s<<20|s>>>12,r=r+A|0,r=r+c|0,m^=r,m=m<<16|m>>>16,p=p+m|0,c^=p,c=c<<20|c>>>12,i=i+M|0,i=i+l|0,h^=i,h=h<<16|h>>>16,u=u+h|0,l^=u,l=l<<20|l>>>12,a=a+P|0,a=a+o|0,g^=a,g=g<<16|g>>>16,d=d+g|0,o^=d,o=o<<20|o>>>12,i=i+N|0,i=i+l|0,h^=i,h=h<<24|h>>>8,u=u+h|0,l^=u,l=l<<25|l>>>7,a=a+F|0,a=a+o|0,g^=a,g=g<<24|g>>>8,d=d+g|0,o^=d,o=o<<25|o>>>7,r=r+j|0,r=r+c|0,m^=r,m=m<<24|m>>>8,p=p+m|0,c^=p,c=c<<25|c>>>7,n=n+k|0,n=n+s|0,_^=n,_=_<<24|_>>>8,f=f+_|0,s^=f,s=s<<25|s>>>7,n=n+P|0,n=n+o|0,m^=n,m=m<<16|m>>>16,u=u+m|0,o^=u,o=o<<20|o>>>12,r=r+w|0,r=r+s|0,h^=r,h=h<<16|h>>>16,d=d+h|0,s^=d,s=s<<20|s>>>12,i=i+k|0,i=i+c|0,g^=i,g=g<<16|g>>>16,f=f+g|0,c^=f,c=c<<20|c>>>12,a=a+N|0,a=a+l|0,_^=a,_=_<<16|_>>>16,p=p+_|0,l^=p,l=l<<20|l>>>12,i=i+F|0,i=i+c|0,g^=i,g=g<<24|g>>>8,f=f+g|0,c^=f,c=c<<25|c>>>7,a=a+E|0,a=a+l|0,_^=a,_=_<<24|_>>>8,p=p+_|0,l^=p,l=l<<25|l>>>7,r=r+O|0,r=r+s|0,h^=r,h=h<<24|h>>>8,d=d+h|0,s^=d,s=s<<25|s>>>7,n=n+A|0,n=n+o|0,m^=n,m=m<<24|m>>>8,u=u+m|0,o^=u,o=o<<25|o>>>7,n=n+x|0,n=n+s|0,_^=n,_=_<<16|_>>>16,f=f+_|0,s^=f,s=s<<20|s>>>12,r=r+y|0,r=r+c|0,m^=r,m=m<<16|m>>>16,p=p+m|0,c^=p,c=c<<20|c>>>12,i=i+j|0,i=i+l|0,h^=i,h=h<<16|h>>>16,u=u+h|0,l^=u,l=l<<20|l>>>12,a=a+T|0,a=a+o|0,g^=a,g=g<<16|g>>>16,d=d+g|0,o^=d,o=o<<20|o>>>12,i=i+D|0,i=i+l|0,h^=i,h=h<<24|h>>>8,u=u+h|0,l^=u,l=l<<25|l>>>7,a=a+C|0,a=a+o|0,g^=a,g=g<<24|g>>>8,d=d+g|0,o^=d,o=o<<25|o>>>7,r=r+S|0,r=r+c|0,m^=r,m=m<<24|m>>>8,p=p+m|0,c^=p,c=c<<25|c>>>7,n=n+M|0,n=n+s|0,_^=n,_=_<<24|_>>>8,f=f+_|0,s^=f,s=s<<25|s>>>7,n=n+j|0,n=n+o|0,m^=n,m=m<<16|m>>>16,u=u+m|0,o^=u,o=o<<20|o>>>12,r=r+M|0,r=r+s|0,h^=r,h=h<<16|h>>>16,d=d+h|0,s^=d,s=s<<20|s>>>12,i=i+T|0,i=i+c|0,g^=i,g=g<<16|g>>>16,f=f+g|0,c^=f,c=c<<20|c>>>12,a=a+F|0,a=a+l|0,_^=a,_=_<<16|_>>>16,p=p+_|0,l^=p,l=l<<20|l>>>12,i=i+S|0,i=i+c|0,g^=i,g=g<<24|g>>>8,f=f+g|0,c^=f,c=c<<25|c>>>7,a=a+N|0,a=a+l|0,_^=a,_=_<<24|_>>>8,p=p+_|0,l^=p,l=l<<25|l>>>7,r=r+y|0,r=r+s|0,h^=r,h=h<<24|h>>>8,d=d+h|0,s^=d,s=s<<25|s>>>7,n=n+O|0,n=n+o|0,m^=n,m=m<<24|m>>>8,u=u+m|0,o^=u,o=o<<25|o>>>7,n=n+A|0,n=n+s|0,_^=n,_=_<<16|_>>>16,f=f+_|0,s^=f,s=s<<20|s>>>12,r=r+C|0,r=r+c|0,m^=r,m=m<<16|m>>>16,p=p+m|0,c^=p,c=c<<20|c>>>12,i=i+D|0,i=i+l|0,h^=i,h=h<<16|h>>>16,u=u+h|0,l^=u,l=l<<20|l>>>12,a=a+k|0,a=a+o|0,g^=a,g=g<<16|g>>>16,d=d+g|0,o^=d,o=o<<20|o>>>12,i=i+x|0,i=i+l|0,h^=i,h=h<<24|h>>>8,u=u+h|0,l^=u,l=l<<25|l>>>7,a=a+w|0,a=a+o|0,g^=a,g=g<<24|g>>>8,d=d+g|0,o^=d,o=o<<25|o>>>7,r=r+E|0,r=r+c|0,m^=r,m=m<<24|m>>>8,p=p+m|0,c^=p,c=c<<25|c>>>7,n=n+P|0,n=n+s|0,_^=n,_=_<<24|_>>>8,f=f+_|0,s^=f,s=s<<25|s>>>7,n=n+D|0,n=n+o|0,m^=n,m=m<<16|m>>>16,u=u+m|0,o^=u,o=o<<20|o>>>12,r=r+C|0,r=r+s|0,h^=r,h=h<<16|h>>>16,d=d+h|0,s^=d,s=s<<20|s>>>12,i=i+N|0,i=i+c|0,g^=i,g=g<<16|g>>>16,f=f+g|0,c^=f,c=c<<20|c>>>12,a=a+j|0,a=a+l|0,_^=a,_=_<<16|_>>>16,p=p+_|0,l^=p,l=l<<20|l>>>12,i=i+M|0,i=i+c|0,g^=i,g=g<<24|g>>>8,f=f+g|0,c^=f,c=c<<25|c>>>7,a=a+P|0,a=a+l|0,_^=a,_=_<<24|_>>>8,p=p+_|0,l^=p,l=l<<25|l>>>7,r=r+x|0,r=r+s|0,h^=r,h=h<<24|h>>>8,d=d+h|0,s^=d,s=s<<25|s>>>7,n=n+k|0,n=n+o|0,m^=n,m=m<<24|m>>>8,u=u+m|0,o^=u,o=o<<25|o>>>7,n=n+S|0,n=n+s|0,_^=n,_=_<<16|_>>>16,f=f+_|0,s^=f,s=s<<20|s>>>12,r=r+T|0,r=r+c|0,m^=r,m=m<<16|m>>>16,p=p+m|0,c^=p,c=c<<20|c>>>12,i=i+w|0,i=i+l|0,h^=i,h=h<<16|h>>>16,u=u+h|0,l^=u,l=l<<20|l>>>12,a=a+F|0,a=a+o|0,g^=a,g=g<<16|g>>>16,d=d+g|0,o^=d,o=o<<20|o>>>12,i=i+y|0,i=i+l|0,h^=i,h=h<<24|h>>>8,u=u+h|0,l^=u,l=l<<25|l>>>7,a=a+O|0,a=a+o|0,g^=a,g=g<<24|g>>>8,d=d+g|0,o^=d,o=o<<25|o>>>7,r=r+A|0,r=r+c|0,m^=r,m=m<<24|m>>>8,p=p+m|0,c^=p,c=c<<25|c>>>7,n=n+E|0,n=n+s|0,_^=n,_=_<<24|_>>>8,f=f+_|0,s^=f,s=s<<25|s>>>7,n=n+k|0,n=n+o|0,m^=n,m=m<<16|m>>>16,u=u+m|0,o^=u,o=o<<20|o>>>12,r=r+T|0,r=r+s|0,h^=r,h=h<<16|h>>>16,d=d+h|0,s^=d,s=s<<20|s>>>12,i=i+S|0,i=i+c|0,g^=i,g=g<<16|g>>>16,f=f+g|0,c^=f,c=c<<20|c>>>12,a=a+A|0,a=a+l|0,_^=a,_=_<<16|_>>>16,p=p+_|0,l^=p,l=l<<20|l>>>12,i=i+w|0,i=i+c|0,g^=i,g=g<<24|g>>>8,f=f+g|0,c^=f,c=c<<25|c>>>7,a=a+F|0,a=a+l|0,_^=a,_=_<<24|_>>>8,p=p+_|0,l^=p,l=l<<25|l>>>7,r=r+D|0,r=r+s|0,h^=r,h=h<<24|h>>>8,d=d+h|0,s^=d,s=s<<25|s>>>7,n=n+y|0,n=n+o|0,m^=n,m=m<<24|m>>>8,u=u+m|0,o^=u,o=o<<25|o>>>7,n=n+P|0,n=n+s|0,_^=n,_=_<<16|_>>>16,f=f+_|0,s^=f,s=s<<20|s>>>12,r=r+j|0,r=r+c|0,m^=r,m=m<<16|m>>>16,p=p+m|0,c^=p,c=c<<20|c>>>12,i=i+E|0,i=i+l|0,h^=i,h=h<<16|h>>>16,u=u+h|0,l^=u,l=l<<20|l>>>12,a=a+C|0,a=a+o|0,g^=a,g=g<<16|g>>>16,d=d+g|0,o^=d,o=o<<20|o>>>12,i=i+O|0,i=i+l|0,h^=i,h=h<<24|h>>>8,u=u+h|0,l^=u,l=l<<25|l>>>7,a=a+N|0,a=a+o|0,g^=a,g=g<<24|g>>>8,d=d+g|0,o^=d,o=o<<25|o>>>7,r=r+M|0,r=r+c|0,m^=r,m=m<<24|m>>>8,p=p+m|0,c^=p,c=c<<25|c>>>7,n=n+x|0,n=n+s|0,_^=n,_=_<<24|_>>>8,f=f+_|0,s^=f,s=s<<25|s>>>7,n=n+S|0,n=n+o|0,m^=n,m=m<<16|m>>>16,u=u+m|0,o^=u,o=o<<20|o>>>12,r=r+E|0,r=r+s|0,h^=r,h=h<<16|h>>>16,d=d+h|0,s^=d,s=s<<20|s>>>12,i=i+y|0,i=i+c|0,g^=i,g=g<<16|g>>>16,f=f+g|0,c^=f,c=c<<20|c>>>12,a=a+O|0,a=a+l|0,_^=a,_=_<<16|_>>>16,p=p+_|0,l^=p,l=l<<20|l>>>12,i=i+j|0,i=i+c|0,g^=i,g=g<<24|g>>>8,f=f+g|0,c^=f,c=c<<25|c>>>7,a=a+C|0,a=a+l|0,_^=a,_=_<<24|_>>>8,p=p+_|0,l^=p,l=l<<25|l>>>7,r=r+A|0,r=r+s|0,h^=r,h=h<<24|h>>>8,d=d+h|0,s^=d,s=s<<25|s>>>7,n=n+M|0,n=n+o|0,m^=n,m=m<<24|m>>>8,u=u+m|0,o^=u,o=o<<25|o>>>7,n=n+w|0,n=n+s|0,_^=n,_=_<<16|_>>>16,f=f+_|0,s^=f,s=s<<20|s>>>12,r=r+D|0,r=r+c|0,m^=r,m=m<<16|m>>>16,p=p+m|0,c^=p,c=c<<20|c>>>12,i=i+F|0,i=i+l|0,h^=i,h=h<<16|h>>>16,u=u+h|0,l^=u,l=l<<20|l>>>12,a=a+x|0,a=a+o|0,g^=a,g=g<<16|g>>>16,d=d+g|0,o^=d,o=o<<20|o>>>12,i=i+P|0,i=i+l|0,h^=i,h=h<<24|h>>>8,u=u+h|0,l^=u,l=l<<25|l>>>7,a=a+k|0,a=a+o|0,g^=a,g=g<<24|g>>>8,d=d+g|0,o^=d,o=o<<25|o>>>7,r=r+T|0,r=r+c|0,m^=r,m=m<<24|m>>>8,p=p+m|0,c^=p,c=c<<25|c>>>7,n=n+N|0,n=n+s|0,_^=n,_=_<<24|_>>>8,f=f+_|0,s^=f,s=s<<25|s>>>7,n=n+M|0,n=n+o|0,m^=n,m=m<<16|m>>>16,u=u+m|0,o^=u,o=o<<20|o>>>12,r=r+x|0,r=r+s|0,h^=r,h=h<<16|h>>>16,d=d+h|0,s^=d,s=s<<20|s>>>12,i=i+P|0,i=i+c|0,g^=i,g=g<<16|g>>>16,f=f+g|0,c^=f,c=c<<20|c>>>12,a=a+w|0,a=a+l|0,_^=a,_=_<<16|_>>>16,p=p+_|0,l^=p,l=l<<20|l>>>12,i=i+N|0,i=i+c|0,g^=i,g=g<<24|g>>>8,f=f+g|0,c^=f,c=c<<25|c>>>7,a=a+A|0,a=a+l|0,_^=a,_=_<<24|_>>>8,p=p+_|0,l^=p,l=l<<25|l>>>7,r=r+F|0,r=r+s|0,h^=r,h=h<<24|h>>>8,d=d+h|0,s^=d,s=s<<25|s>>>7,n=n+T|0,n=n+o|0,m^=n,m=m<<24|m>>>8,u=u+m|0,o^=u,o=o<<25|o>>>7,n=n+y|0,n=n+s|0,_^=n,_=_<<16|_>>>16,f=f+_|0,s^=f,s=s<<20|s>>>12,r=r+E|0,r=r+c|0,m^=r,m=m<<16|m>>>16,p=p+m|0,c^=p,c=c<<20|c>>>12,i=i+k|0,i=i+l|0,h^=i,h=h<<16|h>>>16,u=u+h|0,l^=u,l=l<<20|l>>>12,a=a+O|0,a=a+o|0,g^=a,g=g<<16|g>>>16,d=d+g|0,o^=d,o=o<<20|o>>>12,i=i+S|0,i=i+l|0,h^=i,h=h<<24|h>>>8,u=u+h|0,l^=u,l=l<<25|l>>>7,a=a+j|0,a=a+o|0,g^=a,g=g<<24|g>>>8,d=d+g|0,o^=d,o=o<<25|o>>>7,r=r+C|0,r=r+c|0,m^=r,m=m<<24|m>>>8,p=p+m|0,c^=p,c=c<<25|c>>>7,n=n+D|0,n=n+s|0,_^=n,_=_<<24|_>>>8,f=f+_|0,s^=f,s=s<<25|s>>>7,n=n+N|0,n=n+o|0,m^=n,m=m<<16|m>>>16,u=u+m|0,o^=u,o=o<<20|o>>>12,r=r+D|0,r=r+s|0,h^=r,h=h<<16|h>>>16,d=d+h|0,s^=d,s=s<<20|s>>>12,i=i+M|0,i=i+c|0,g^=i,g=g<<16|g>>>16,f=f+g|0,c^=f,c=c<<20|c>>>12,a=a+C|0,a=a+l|0,_^=a,_=_<<16|_>>>16,p=p+_|0,l^=p,l=l<<20|l>>>12,i=i+x|0,i=i+c|0,g^=i,g=g<<24|g>>>8,f=f+g|0,c^=f,c=c<<25|c>>>7,a=a+k|0,a=a+l|0,_^=a,_=_<<24|_>>>8,p=p+_|0,l^=p,l=l<<25|l>>>7,r=r+P|0,r=r+s|0,h^=r,h=h<<24|h>>>8,d=d+h|0,s^=d,s=s<<25|s>>>7,n=n+j|0,n=n+o|0,m^=n,m=m<<24|m>>>8,u=u+m|0,o^=u,o=o<<25|o>>>7,n=n+T|0,n=n+s|0,_^=n,_=_<<16|_>>>16,f=f+_|0,s^=f,s=s<<20|s>>>12,r=r+F|0,r=r+c|0,m^=r,m=m<<16|m>>>16,p=p+m|0,c^=p,c=c<<20|c>>>12,i=i+O|0,i=i+l|0,h^=i,h=h<<16|h>>>16,u=u+h|0,l^=u,l=l<<20|l>>>12,a=a+S|0,a=a+o|0,g^=a,g=g<<16|g>>>16,d=d+g|0,o^=d,o=o<<20|o>>>12,i=i+E|0,i=i+l|0,h^=i,h=h<<24|h>>>8,u=u+h|0,l^=u,l=l<<25|l>>>7,a=a+A|0,a=a+o|0,g^=a,g=g<<24|g>>>8,d=d+g|0,o^=d,o=o<<25|o>>>7,r=r+w|0,r=r+c|0,m^=r,m=m<<24|m>>>8,p=p+m|0,c^=p,c=c<<25|c>>>7,n=n+y|0,n=n+s|0,_^=n,_=_<<24|_>>>8,f=f+_|0,s^=f,s=s<<25|s>>>7,n=n+E|0,n=n+o|0,m^=n,m=m<<16|m>>>16,u=u+m|0,o^=u,o=o<<20|o>>>12,r=r+P|0,r=r+s|0,h^=r,h=h<<16|h>>>16,d=d+h|0,s^=d,s=s<<20|s>>>12,i=i+j|0,i=i+c|0,g^=i,g=g<<16|g>>>16,f=f+g|0,c^=f,c=c<<20|c>>>12,a=a+y|0,a=a+l|0,_^=a,_=_<<16|_>>>16,p=p+_|0,l^=p,l=l<<20|l>>>12,i=i+C|0,i=i+c|0,g^=i,g=g<<24|g>>>8,f=f+g|0,c^=f,c=c<<25|c>>>7,a=a+O|0,a=a+l|0,_^=a,_=_<<24|_>>>8,p=p+_|0,l^=p,l=l<<25|l>>>7,r=r+k|0,r=r+s|0,h^=r,h=h<<24|h>>>8,d=d+h|0,s^=d,s=s<<25|s>>>7,n=n+F|0,n=n+o|0,m^=n,m=m<<24|m>>>8,u=u+m|0,o^=u,o=o<<25|o>>>7,n=n+M|0,n=n+s|0,_^=n,_=_<<16|_>>>16,f=f+_|0,s^=f,s=s<<20|s>>>12,r=r+N|0,r=r+c|0,m^=r,m=m<<16|m>>>16,p=p+m|0,c^=p,c=c<<20|c>>>12,i=i+x|0,i=i+l|0,h^=i,h=h<<16|h>>>16,u=u+h|0,l^=u,l=l<<20|l>>>12,a=a+A|0,a=a+o|0,g^=a,g=g<<16|g>>>16,d=d+g|0,o^=d,o=o<<20|o>>>12,i=i+w|0,i=i+l|0,h^=i,h=h<<24|h>>>8,u=u+h|0,l^=u,l=l<<25|l>>>7,a=a+T|0,a=a+o|0,g^=a,g=g<<24|g>>>8,d=d+g|0,o^=d,o=o<<25|o>>>7,r=r+D|0,r=r+c|0,m^=r,m=m<<24|m>>>8,p=p+m|0,c^=p,c=c<<25|c>>>7,n=n+S|0,n=n+s|0,_^=n,_=_<<24|_>>>8,f=f+_|0,s^=f,s=s<<25|s>>>7,n=n+A|0,n=n+o|0,m^=n,m=m<<16|m>>>16,u=u+m|0,o^=u,o=o<<20|o>>>12,r=r+O|0,r=r+s|0,h^=r,h=h<<16|h>>>16,d=d+h|0,s^=d,s=s<<20|s>>>12,i=i+D|0,i=i+c|0,g^=i,g=g<<16|g>>>16,f=f+g|0,c^=f,c=c<<20|c>>>12,a=a+x|0,a=a+l|0,_^=a,_=_<<16|_>>>16,p=p+_|0,l^=p,l=l<<20|l>>>12,i=i+E|0,i=i+c|0,g^=i,g=g<<24|g>>>8,f=f+g|0,c^=f,c=c<<25|c>>>7,a=a+T|0,a=a+l|0,_^=a,_=_<<24|_>>>8,p=p+_|0,l^=p,l=l<<25|l>>>7,r=r+w|0,r=r+s|0,h^=r,h=h<<24|h>>>8,d=d+h|0,s^=d,s=s<<25|s>>>7,n=n+S|0,n=n+o|0,m^=n,m=m<<24|m>>>8,u=u+m|0,o^=u,o=o<<25|o>>>7,n=n+F|0,n=n+s|0,_^=n,_=_<<16|_>>>16,f=f+_|0,s^=f,s=s<<20|s>>>12,r=r+k|0,r=r+c|0,m^=r,m=m<<16|m>>>16,p=p+m|0,c^=p,c=c<<20|c>>>12,i=i+C|0,i=i+l|0,h^=i,h=h<<16|h>>>16,u=u+h|0,l^=u,l=l<<20|l>>>12,a=a+N|0,a=a+o|0,g^=a,g=g<<16|g>>>16,d=d+g|0,o^=d,o=o<<20|o>>>12,i=i+M|0,i=i+l|0,h^=i,h=h<<24|h>>>8,u=u+h|0,l^=u,l=l<<25|l>>>7,a=a+y|0,a=a+o|0,g^=a,g=g<<24|g>>>8,d=d+g|0,o^=d,o=o<<25|o>>>7,r=r+P|0,r=r+c|0,m^=r,m=m<<24|m>>>8,p=p+m|0,c^=p,c=c<<25|c>>>7,n=n+j|0,n=n+s|0,_^=n,_=_<<24|_>>>8,f=f+_|0,s^=f,s=s<<25|s>>>7,this._state[0]^=n^u,this._state[1]^=r^d,this._state[2]^=i^f,this._state[3]^=a^p,this._state[4]^=o^m,this._state[5]^=s^h,this._state[6]^=c^g,this._state[7]^=l^_}};function S(e){return e.saveState!==void 0&&e.restoreState!==void 0&&e.cleanSavedState!==void 0}var C=class{blockSize;digestLength;_inner;_outer;_finished=!1;_innerKeyedState;_outerKeyedState;constructor(e,t){this._inner=new e,this._outer=new e,this.blockSize=this._outer.blockSize,this.digestLength=this._outer.digestLength;let n=new Uint8Array(this.blockSize);t.length>this.blockSize?this._inner.update(t).finish(n).clean():n.set(t);for(let e=0;e<n.length;e++)n[e]^=54;this._inner.update(n);for(let e=0;e<n.length;e++)n[e]^=106;this._outer.update(n),S(this._inner)&&S(this._outer)&&(this._innerKeyedState=this._inner.saveState(),this._outerKeyedState=this._outer.saveState()),a(n)}reset(){if(!S(this._inner)||!S(this._outer))throw Error(`hmac: can't reset() because hash doesn't implement restoreState()`);return this._inner.restoreState(this._innerKeyedState),this._outer.restoreState(this._outerKeyedState),this._finished=!1,this}clean(){S(this._inner)&&this._inner.cleanSavedState(this._innerKeyedState),S(this._outer)&&this._outer.cleanSavedState(this._outerKeyedState),this._inner.clean(),this._outer.clean()}update(e){return this._inner.update(e),this}finish(e){return this._finished?(this._outer.finish(e),this):(this._inner.finish(e),this._outer.update(e.subarray(0,this.digestLength)).finish(e),this._finished=!0,this)}digest(){let e=new Uint8Array(this.digestLength);return this.finish(e),e}saveState(){if(!S(this._inner))throw Error(`hmac: can't saveState() because hash doesn't implement it`);return this._inner.saveState()}restoreState(e){if(!S(this._inner)||!S(this._outer))throw Error(`hmac: can't restoreState() because hash doesn't implement it`);return this._inner.restoreState(e),this._outer.restoreState(this._outerKeyedState),this._finished=!1,this}cleanSavedState(e){if(!S(this._inner))throw Error(`hmac: can't cleanSavedState() because hash doesn't implement it`);this._inner.cleanSavedState(e)}};function w(e,t,n){let r=new C(e,t);r.update(n);let i=r.digest();return r.clean(),i}var T=class{_hmac;_buffer;_bufpos;_counter=new Uint8Array(1);_hash;_info;constructor(e,t,n=new Uint8Array,r){this._hash=e,this._info=r;let i=w(this._hash,n,t);this._hmac=new C(e,i),this._buffer=new Uint8Array(this._hmac.digestLength),this._bufpos=this._buffer.length}_fillBuffer(){this._counter[0]++;let e=this._counter[0];if(e===0)throw Error(`hkdf: cannot expand more`);this._hmac.reset(),e>1&&this._hmac.update(this._buffer),this._info&&this._hmac.update(this._info),this._hmac.update(this._counter),this._hmac.finish(this._buffer),this._bufpos=0}expand(e){let t=new Uint8Array(e);for(let e=0;e<t.length;e++)this._bufpos===this._buffer.length&&this._fillBuffer(),t[e]=this._buffer[this._bufpos++];return t}clean(){this._hmac.clean(),a(this._buffer),a(this._counter),this._bufpos=0}},E=class{digestLength=32;blockSize=64;_state=new Int32Array(8);_temp=new Int32Array(64);_buffer=new Uint8Array(128);_bufferLength=0;_bytesHashed=0;_finished=!1;constructor(){this.reset()}_initState(){this._state[0]=1779033703,this._state[1]=3144134277,this._state[2]=1013904242,this._state[3]=2773480762,this._state[4]=1359893119,this._state[5]=2600822924,this._state[6]=528734635,this._state[7]=1541459225}reset(){return this._initState(),this._bufferLength=0,this._bytesHashed=0,this._finished=!1,this}clean(){a(this._buffer),a(this._temp),this.reset()}update(e,t=e.length){if(this._finished)throw Error(`SHA256: can't update because hash was finished.`);let n=0;if(this._bytesHashed+=t,this._bufferLength>0){for(;this._bufferLength<this.blockSize&&t>0;)this._buffer[this._bufferLength++]=e[n++],t--;this._bufferLength===this.blockSize&&(O(this._temp,this._state,this._buffer,0,this.blockSize),this._bufferLength=0)}for(t>=this.blockSize&&(n=O(this._temp,this._state,e,n,t),t%=this.blockSize);t>0;)this._buffer[this._bufferLength++]=e[n++],t--;return this}finish(e){if(!this._finished){let e=this._bytesHashed,t=this._bufferLength,n=e/536870912|0,r=e<<3,a=e%64<56?64:128;this._buffer[t]=128;for(let e=t+1;e<a-8;e++)this._buffer[e]=0;i(n,this._buffer,a-8),i(r,this._buffer,a-4),O(this._temp,this._state,this._buffer,0,a),this._finished=!0}for(let t=0;t<this.digestLength/4;t++)i(this._state[t],e,t*4);return this}digest(){let e=new Uint8Array(this.digestLength);return this.finish(e),e}saveState(){if(this._finished)throw Error(`SHA256: cannot save finished state`);return{state:new Int32Array(this._state),buffer:this._bufferLength>0?new Uint8Array(this._buffer):void 0,bufferLength:this._bufferLength,bytesHashed:this._bytesHashed}}restoreState(e){return this._state.set(e.state),this._bufferLength=e.bufferLength,e.buffer&&this._buffer.set(e.buffer),this._bytesHashed=e.bytesHashed,this._finished=!1,this}cleanSavedState(e){a(e.state),e.buffer&&a(e.buffer),e.bufferLength=0,e.bytesHashed=0}},D=new Int32Array([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]);function O(e,t,r,i,a){for(;a>=64;){let o=t[0],s=t[1],c=t[2],l=t[3],u=t[4],d=t[5],f=t[6],p=t[7];for(let t=0;t<16;t++)e[t]=n(r,i+t*4);for(let t=16;t<64;t++){let n=e[t-2],r=(n>>>17|n<<15)^(n>>>19|n<<13)^n>>>10;n=e[t-15];let i=(n>>>7|n<<25)^(n>>>18|n<<14)^n>>>3;e[t]=(r+e[t-7]|0)+(i+e[t-16]|0)}for(let t=0;t<64;t++){let n=(((u>>>6|u<<26)^(u>>>11|u<<21)^(u>>>25|u<<7))+(u&d^~u&f)|0)+(p+(D[t]+e[t]|0)|0)|0,r=((o>>>2|o<<30)^(o>>>13|o<<19)^(o>>>22|o<<10))+(o&s^o&c^s&c)|0;p=f,f=d,d=u,u=l+n|0,l=c,c=s,s=o,o=n+r|0}t[0]+=o,t[1]+=s,t[2]+=c,t[3]+=l,t[4]+=u,t[5]+=d,t[6]+=f,t[7]+=p,i+=64,a-=64}return i}var k=`Noise_NK_25519_ChaChaPoly_BLAKE2s`;function A(){let e=new TextEncoder().encode(k);if(e.length<=32){let t=new Uint8Array(32);return t.set(e),t}let t=new E;return t.update(e),t.digest()}function j(e,t){let n=new x(32);return n.update(e),n.update(t),n.digest()}function M(e,t){let n=new T(E,t,e).expand(64);return[n.slice(0,32),n.slice(32,64)]}async function N(e,t,n){let i=A(),a=i.slice();i=j(i,e);let o=s();i=j(i,o.publicKey);let c=r(o.secretKey,e),[l,u]=M(a,c);a=l;let d=new _(u),f=new Uint8Array(12),p=d.seal(f,new Uint8Array,i);i=j(i,p);let m=new Uint8Array(32+p.length);m.set(o.publicKey,0),m.set(p,32),await t(m);let h=await n();if(h.length<48)throw Error(`Noise NK: msg2 too short`);let g=h.slice(0,32),v=h.slice(32);i=j(i,g);let y=r(o.secretKey,g),[b,x]=M(a,y);a=b;let S=new _(x),C=new Uint8Array(12);if(!S.open(C,v,i))throw Error(`Noise NK: msg2 auth failed — wrong responder key or MITM`);i=j(i,v);let[w,T]=M(a,new Uint8Array),E=i.slice(),D=0n,O=0n;function k(e){let t=new Uint8Array(12);return new DataView(t.buffer).setBigUint64(4,e,!0),t}let N=new _(w),P=new _(T);return{encrypt(e){return N.seal(k(D++),e,new Uint8Array)},decrypt(e){let t=P.open(k(O++),e,new Uint8Array);if(!t)throw Error(`Noise NK: decryption failed`);return t},handshakeHash:E}}var P=new TextEncoder().encode(`peach-sync-v1-initiator-auth`);function F(e,t,n,i){if(i.length!==32)throw Error(`auth nonce must be 32 bytes`);let a=new C(E,r(e,n));return a.update(P),a.update(t),a.update(n),a.update(i),a.digest()}function I(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function L(e){if(e.length%2!=0)throw Error(`invalid hex`);let t=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)t[n/2]=parseInt(e.slice(n,n+2),16);return t}async function R(e,t,n,i){let a=A(),o=a.slice();a=j(a,t);let c=await i();if(c.length<48)throw Error(`Noise NK: msg1 too short`);let l=c.slice(0,32),u=c.slice(32);a=j(a,l);let d=r(e,l),[f,p]=M(o,d);o=f;let m=new _(p),h=new Uint8Array(12);if(!m.open(h,u,a))throw Error(`Noise NK: msg1 auth failed — wrong static key or MITM`);a=j(a,u);let g=s();a=j(a,g.publicKey);let v=r(g.secretKey,l),[y,b]=M(o,v);o=y;let x=new _(b),S=new Uint8Array(12),C=x.seal(S,new Uint8Array,a);a=j(a,C);let w=new Uint8Array(32+C.length);w.set(g.publicKey,0),w.set(C,32),await n(w);let[T,E]=M(o,new Uint8Array),D=a.slice(),O=0n,k=0n;function N(e){let t=new Uint8Array(12);return new DataView(t.buffer).setBigUint64(4,e,!0),t}let P=new _(E),F=new _(T);return{encrypt(e){return P.seal(N(O++),e,new Uint8Array)},decrypt(e){let t=F.open(N(k++),e,new Uint8Array);if(!t)throw Error(`Noise NK: decryption failed`);return t},handshakeHash:D}}function z(e,t){if(e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r++)n|=e[r]^t[r];return n===0}async function B(e,t,n,i,a){let o=new Uint8Array(32);crypto.getRandomValues(o);let s={type:`CHALLENGE`,nonce_hex:I(o),responder_public_key_hex:I(n)};await i(new TextEncoder().encode(JSON.stringify(s)));let c=await a(),l=JSON.parse(new TextDecoder().decode(c));if(l.type!==`PROOF`)throw Error(`expected PROOF frame`);let u=L(l.initiator_public_key_hex),d=L(l.proof_hex);if(u.length!==32)throw Error(`initiator public key must be 32 bytes`);if(d.length!==32)throw Error(`proof must be 32 bytes`);let f=new C(E,r(t,u));if(f.update(P),f.update(u),f.update(n),f.update(o),!z(f.digest(),d))throw Error(`auth proof did not verify`);return{initiatorPublicKey:u}}async function V(e,t,n,r,i,a){let o=await a(),s=JSON.parse(new TextDecoder().decode(o));if(s.type!==`CHALLENGE`)throw Error(`expected CHALLENGE frame`);let c=L(s.nonce_hex),l=L(s.responder_public_key_hex);if(l.length!==r.length||!l.every((e,t)=>e===r[t]))throw Error(`responder key in challenge does not match Noise handshake`);let u=F(t,n,r,c),d={type:`PROOF`,initiator_public_key_hex:I(n),proof_hex:I(u)};await i(new TextEncoder().encode(JSON.stringify(d)))}export{B as i,R as n,V as r,N as t};\ No newline at end of filedist-mobile/assets/sync-coordinator-BVwn6wHZ.js+2 −0
@@ -0,0 +1,2 @@1+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sync-kQd3KSmO.js","assets/chunk-CilyBKbf.js"])))=>i.map(i=>d[i]);2+import{t as e}from"./preload-helper-D4M6sveU.js";import{n as t,r as n}from"./storage-COHREhIV.js";import{M as r}from"./vault-ByqoQOTt.js";import{n as i,t as a}from"./sync-wire-O_oTp2Oy.js";var o=`peach_last_sync_at`,s=3e4;async function c(e,i,a){let s=await t(o),c=s?Number.parseInt(s,10):0;return!Number.isFinite(a)||a<=c?`ignored`:(await r(`sync_received`),await n(`peach_vault_a`,e),await n(`peach_vault_b`,i),await n(o,String(a)),`applied`)}async function l(e,t,n){return await n.isPro()?n.isUnlocked()?new Promise(r=>{let o=!1,l=[],u=e=>{if(!o){o=!0,clearTimeout(d);for(let e of l)try{e()}catch{}try{t.close()}catch{}r(e)}},d=setTimeout(()=>u({status:`errored`,error:`timeout`}),s);l.push(t.onClose(()=>u({status:`closed`}))),l.push(t.onError(e=>u({status:`errored`,error:e||`transport_error`}))),l.push(t.onFrame(r=>{(async()=>{let o;try{o=a(r)}catch{await t.send(i({type:`SYNC_ERROR`,reason:`invalid_frame`})),u({status:`errored`,error:`invalid_frame`});return}if(o.type===`SYNC_VAULT_SEND`){try{await c(o.vault_a,o.vault_b,o.sent_at)}catch(e){let n=e instanceof Error?e.message:`apply_failed`;await t.send(i({type:`SYNC_ERROR`,reason:n})),u({status:`errored`,error:n});return}if(await t.send(i({type:`SYNC_VAULT_ACK`,received_at:Date.now()})),e===`responder`){let e=await n.getVaultBlobs();await t.send(i({type:`SYNC_VAULT_SEND`,vault_a:e.vault_a,vault_b:e.vault_b,sent_at:Date.now()}))}else u({status:`completed`})}else o.type===`SYNC_VAULT_ACK`?u({status:`completed`}):o.type===`SYNC_ERROR`&&u({status:`errored`,error:o.reason})})().catch(e=>{u({status:`errored`,error:e instanceof Error?e.message:String(e)})})})),e===`initiator`&&(async()=>{try{let e=await n.getVaultBlobs();await t.send(i({type:`SYNC_VAULT_SEND`,vault_a:e.vault_a,vault_b:e.vault_b,sent_at:Date.now()}))}catch(e){u({status:`errored`,error:e instanceof Error?e.message:String(e)})}})()}):(await t.send(i({type:`SYNC_ERROR`,reason:`vault_locked`})),t.close(),{status:`errored`,error:`vault_locked`}):(await t.send(i({type:`SYNC_ERROR`,reason:`pro_required`})),t.close(),{status:`errored`,error:`pro_required`})}async function u(){let t=await e(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1]));return{sendSyncData:t.sendSyncData,onSyncMessage:t.onSyncMessage,onError:t.onError,onDisconnected:t.onDisconnected,disconnectFromPeer:t.disconnectFromPeer}}async function d(e,t,n){let r=n??await u();return new Promise((n,i)=>{let o=!1,s=[],c=e=>{if(!o){o=!0;for(let e of s)try{e()}catch{}e()}},l=setTimeout(()=>c(()=>i(Error(`pairing_response_timeout`))),t);s.push(()=>clearTimeout(l)),s.push(r.onSyncMessage((t,r)=>{if(t===e)try{let e=a(r);c(()=>n(e))}catch(e){c(()=>i(e instanceof Error?e:Error(String(e))))}})),s.push(r.onDisconnected(t=>{(t===void 0||t===e)&&c(()=>i(Error(`pairing_connection_closed`)))})),s.push(r.onError((t,n)=>{(n===void 0||n===e)&&c(()=>i(Error(t||`pairing_transport_error`)))}))})}async function f(e,t){let n=t??await u();return{send:t=>n.sendSyncData(e,t),onFrame:t=>n.onSyncMessage((n,r)=>{n===e&&t(r)}),onError:t=>n.onError((n,r)=>{(r===void 0||r===e)&&t(n)}),onClose:t=>n.onDisconnected(n=>{(n===void 0||n===e)&&t()}),close:()=>n.disconnectFromPeer(e)}}export{f as createNativeSyncTransport,l as runBlobSyncSession,d as waitForPairingResponse};\ No newline at end of filedist-mobile/assets/sync-lifecycle-kQgcH5o6.js+2 −0
@@ -0,0 +1,2 @@1+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sync-coordinator-BVwn6wHZ.js","assets/preload-helper-D4M6sveU.js","assets/storage-COHREhIV.js","assets/chunk-CilyBKbf.js","assets/dist-C5po-C0e.js","assets/vault-ByqoQOTt.js","assets/index-Dd8_N7xu.js","assets/index-Ci9pf2DC.css","assets/sync-wire-O_oTp2Oy.js"])))=>i.map(i=>d[i]);2+import{t as e}from"./dist-C5po-C0e.js";import{t}from"./preload-helper-D4M6sveU.js";import{isProUser as n}from"./license-ZF1DwcYD.js";import{C as r}from"./vault-ByqoQOTt.js";import{a as i,c as a,d as o,f as s,h as c,i as l,l as u,n as d,o as f,p,r as m,s as h,t as g,u as _}from"./sync-kQd3KSmO.js";import{n as v,r as y,t as b}from"./sync-storage-DsbiOwL6.js";import{n as x,t as S}from"./sync-wire-O_oTp2Oy.js";import{i as C,r as w,t as T}from"./pairing-server-state-TxS-duki.js";var E=`peach_device_id`,D=`peach_device_name`,O=!1,k=!1,A=!1,j=!1,M=new Map,N=`peach_last_sync_at`,P=6e4;function F(){j||(j=!0,a(e=>{M.set(e.x25519PublicKey,e),L(e)}),u(e=>{for(let[t,n]of M)if(n.deviceId===e){M.delete(t);break}}))}function I(){return Array.from(M.values())}async function L(i){if(!e.isNativePlatform())try{if(!(await v()).some(e=>e.x25519PublicKey===i.x25519PublicKey)||!r()||!await n())return;let e=await R(N);if(e){let t=Number.parseInt(e,10);if(Number.isFinite(t)&&Date.now()-t<P)return}let{createNativeSyncTransport:a,runBlobSyncSession:o}=await t(async()=>{let{createNativeSyncTransport:e,runBlobSyncSession:t}=await import(`./sync-coordinator-BVwn6wHZ.js`);return{createNativeSyncTransport:e,runBlobSyncSession:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8])),{storageGet:s,storageSet:c}=await t(async()=>{let{storageGet:e,storageSet:t}=await import(`./storage-COHREhIV.js`).then(e=>e.i);return{storageGet:e,storageSet:t}},__vite__mapDeps([2,3,1,4]));await o(`initiator`,await a(await d(i.host,i.port,i.x25519PublicKey)),{isPro:()=>n(),isUnlocked:()=>r(),getVaultBlobs:async()=>({vault_a:await s(`peach_vault_a`)??``,vault_b:await s(`peach_vault_b`)??``})}),await c(N,String(Date.now()))}catch(e){console.warn(`auto-sync failed:`,e)}}async function R(e){try{let t=(await chrome.storage.local.get(e))[e];return typeof t==`string`?t:null}catch{return null}}async function z(){try{let e=(await chrome.storage.local.get(E))[E];if(typeof e==`string`&&e)return e}catch{}let e=crypto.getRandomValues(new Uint8Array(16)),t=``;for(let n of e)t+=String.fromCharCode(n);let n=btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/g,``);try{await chrome.storage.local.set({[E]:n})}catch{}return n}async function B(){try{let e=(await chrome.storage.local.get(D))[D];if(typeof e==`string`&&e.trim())return e.trim()}catch{}return e.getPlatform()===`android`?`Peach Android`:e.getPlatform()===`ios`?`Peach iOS`:`Peach`}async function V(){if(e.isNativePlatform())return;if(!k){O=!1;return}let t=!1;try{let[e,i]=await Promise.all([n(),v()]);t=e&&r()&&i.length>0}catch{t=!1}if(t&&!O)try{let[e,t]=await Promise.all([z(),B()]);await g({deviceId:e,name:t}),O=!0}catch(e){console.warn(`sync advertise failed:`,e)}else if(!t&&O){try{await s()}catch{}O=!1}}function H(){A||(A=!0,h(e=>{U(e)}))}async function U(e){if(e.isPairingOnly){await W(e);return}await K(e.connectionId)}async function W(e){let t=_((n,r)=>{if(n!==e.connectionId)return;t();let i=e.peerPublicKeyHex??``,a=`Unknown device`;try{let t=S(r);if(t.type===`PAIR_REQUEST`)i=t.public_key_hex||i,a=t.device_name||a;else{try{m(e.connectionId)}catch{}return}}catch{try{m(e.connectionId)}catch{}return}G(e.connectionId,i,a)}),n=f(r=>{if(r===void 0||r===e.connectionId){try{t()}catch{}try{n()}catch{}}})}async function G(e,t,n){if(await T()){try{o(e,x({type:`PAIR_ACCEPT`,public_key_hex:await i(),device_name:await B()})),await c(t,n);try{await b({deviceId:t,displayName:n,x25519PublicKey:t,pairedAt:Date.now(),lastSeenAt:Date.now()})}catch{}await C({deviceName:n,pairedAt:Date.now(),side:`showing`}),await w(null);try{p()}catch{}chrome.runtime.sendMessage({type:`PAIRING_COMPLETED`,payload:{deviceName:n}}).catch(()=>{})}catch(e){console.warn(`auto-accept pairing failed:`,e)}finally{try{m(e)}catch{}}return}let r=Date.now();await y({deviceName:n,publicKeyHex:t,receivedAt:r,expiresAt:r+6e4,connectionId:e}),chrome.runtime.sendMessage({type:`INCOMING_PAIRING_REQUEST`,payload:{deviceName:n}}).catch(()=>{})}async function K(e){try{let{createNativeSyncTransport:i,runBlobSyncSession:a}=await t(async()=>{let{createNativeSyncTransport:e,runBlobSyncSession:t}=await import(`./sync-coordinator-BVwn6wHZ.js`);return{createNativeSyncTransport:e,runBlobSyncSession:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8])),{storageGet:o}=await t(async()=>{let{storageGet:e}=await import(`./storage-COHREhIV.js`).then(e=>e.i);return{storageGet:e}},__vite__mapDeps([2,3,1,4]));await a(`responder`,await i(e),{isPro:()=>n(),isUnlocked:()=>r(),getVaultBlobs:async()=>({vault_a:await o(`peach_vault_a`)??``,vault_b:await o(`peach_vault_b`)??``})})}catch(e){console.warn(`responder sync session failed:`,e)}}function q(){k=!0,H(),F();try{l()}catch{}V()}function J(){k=!1,O=!1}async function Y(){await V()}async function X(){try{if(await w(null),k)try{await p()}catch{}}catch{}await V()}async function Z(){await V()}function Q(){O=!1,k=!1,A=!1}export{Q as __resetForTests,I as getDiscoveredPeerCache,q as onNativeHostConnected,J as onNativeHostDisconnected,Z as onProActivated,X as onVaultLocked,Y as onVaultUnlocked,H as setupIncomingPairingSubscriber,V as syncLifecycleTick};\ No newline at end of filedist-mobile/assets/vault-ByqoQOTt.js+3 −0
@@ -0,0 +1,3 @@1+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sync-lifecycle-kQgcH5o6.js","assets/preload-helper-D4M6sveU.js","assets/dist-C5po-C0e.js","assets/chunk-CilyBKbf.js","assets/license-ZF1DwcYD.js","assets/pairing-server-state-TxS-duki.js","assets/sync-storage-DsbiOwL6.js","assets/sync-kQd3KSmO.js","assets/sync-wire-O_oTp2Oy.js"])))=>i.map(i=>d[i]);2+import{t as e}from"./preload-helper-D4M6sveU.js";import{_ as t,g as n,h as r,l as i,p as a}from"./index-Dd8_N7xu.js";async function o(e,t){return await a({password:e,salt:t,parallelism:4,iterations:3,memorySize:65536,hashLength:32,outputType:`binary`})}function s(){return crypto.getRandomValues(new Uint8Array(16))}var c=`autolock`,l=5,u=15;function d(){let e=D().autoLockMinutes;return typeof e==`number`?e:l}function f(){if(!chrome.alarms?.clear||!chrome.alarms?.create)return;chrome.alarms.clear(c);let e=d();e<=0||chrome.alarms.create(c,{delayInMinutes:e})}function ee(){chrome.alarms?.clear&&chrome.alarms.clear(c)}async function te(){if(await O(),!chrome.idle?.setDetectionInterval)return;let e=d(),t=e>0?Math.max(u,e*60):u;chrome.idle.setDetectionInterval(t)}function p(){e(()=>import(`./sync-lifecycle-kQgcH5o6.js`).then(e=>e.onVaultLocked()),__vite__mapDeps([0,1,2,3,4,5,6,7,8])).catch(()=>{}),chrome.runtime?.sendMessage?.({type:`VAULT_LOCKED`})?.catch?.(()=>{});try{chrome.tabs.query({},e=>{for(let t of e)t.id!==void 0&&chrome.tabs.sendMessage(t.id,{type:`VAULT_LOCKED`}).catch(()=>{})})}catch{}}chrome.alarms?.onAlarm?.addListener&&chrome.alarms.onAlarm.addListener(e=>{e.name===c&&(W(),p())}),chrome.idle?.onStateChanged&&chrome.idle.onStateChanged.addListener(e=>{d()<=0||(e===`idle`||e===`locked`)&&(W(),p())});var m=`peach_vault_a`,h=`peach_vault_b`,g=`peach_vault`,_=`peach_decoy_vault`,v=`peach_duress`,y=1024,b=null,x=[],S=new Map,C=`real`,w=!1,T=!1,E={};function D(){return E}async function O(){return await A(),E}async function ne(e){await A(),E={...E,...e},await k()}async function k(){try{await chrome.storage.local.set({peach_settings:E})}catch(e){throw re(e)}}function re(e){let t=e instanceof Error?e.message:String(e);return/QUOTA_BYTES|quota/i.test(t)?Error(`STORAGE_QUOTA_EXCEEDED`):e instanceof Error?e:Error(t)}async function A(){E=(await chrome.storage.local.get(`peach_settings`)).peach_settings??{}}async function j(e){let t=new TextEncoder,n=await crypto.subtle.digest(`SHA-1`,t.encode(e)),r=Array.from(new Uint8Array(n)).map(e=>e.toString(16).padStart(2,`0`)).join(``).toUpperCase(),i=r.slice(0,5),a=r.slice(5);try{let e=await fetch(`https://api.pwnedpasswords.com/range/${i}`);if(!e.ok)return 0;let t=(await e.text()).split(`\r3+`).find(e=>e.startsWith(a));return t?parseInt(t.split(`:`)[1],10):0}catch{return 0}}async function ie(e,t,n){let r=await M(e,t,n);await A(),E={...E,declinedCardFingerprints:[...E.declinedCardFingerprints??[],r]},await k()}async function ae(e,t,n){await A();let r=await M(e,t,n);return(E.declinedCardFingerprints??[]).includes(r)}async function M(e,t,n){let r=new TextEncoder,i=await crypto.subtle.digest(`SHA-1`,r.encode(`${e}${t}${n}`));return Array.from(new Uint8Array(i)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function N(e){return Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function P(e){let t=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)t[n/2]=parseInt(e.slice(n,n+2),16);return t}async function F(e){return(await chrome.storage.local.get(e))[e]??null}async function I(e,t){try{await chrome.storage.local.set({[e]:t})}catch(e){throw re(e)}}async function L(){if(T)return;T=!0;let e=[g,_,v,m,h],t=await chrome.storage.local.get(e),n=t[m]!==void 0,r=t[h]!==void 0,i=t[g],a=t[_];if(!n&&!i||n&&r&&!i&&!a)return;if(i&&!n&&await I(m,i),!r){let e=i??t[m];a?await I(h,a):e&&await I(h,z(e.ciphertext.length/2))}let o=[];i&&o.push(g),a&&o.push(_),t[v]!==void 0&&o.push(v),o.length>0&&await chrome.storage.local.remove(o)}function oe(e){let t=new TextEncoder().encode(e),n=Math.max(y,Math.ceil(t.length/y)*y)-t.length;return e+` `.repeat(n)}var R=65536;function se(e){for(let t=0;t<e.length;t+=R){let n=Math.min(t+R,e.length),r=new Uint8Array(n-t);crypto.getRandomValues(r),e.set(r,t)}return e}function z(e){let t=crypto.getRandomValues(new Uint8Array(16)),n=crypto.getRandomValues(new Uint8Array(12)),r=se(new Uint8Array(e)),i=crypto.getRandomValues(new Uint8Array(16));return{version:1,salt:N(t),nonce:N(n),ciphertext:N(r),tag:N(i)}}function B(e,t){return oe(JSON.stringify({entries:e,duressConfigured:t}))}function ce(e){if(`created`in e||`updated`in e)return!0;let t=e;return t.type===`passkey`||t.rpId!==void 0&&t.passkey===void 0}function le(e){let t=JSON.parse(e),n=Array.isArray(t)?t:t.entries??[],r=n.some(ce),i=n.map(Ie),{merged:a}=ue(i);return Array.isArray(t)?{entries:i,duressConfigured:!1,migratedFromLegacy:!0}:{entries:i,duressConfigured:t.duressConfigured===!0,migratedFromLegacy:r||a}}function ue(e){let t=!1,n=Date.now(),r=e.filter(e=>!e.deletedAt&&e.passkey),a=new Map;for(let e of r){let t=e.passkey.rpId,n=a.get(t);n?n.push(e):a.set(t,[e])}for(let[r,o]of a){if(o.length===0)continue;o.sort((e,t)=>{let n=e.passkey.lastUsedAt??e.passkey.createdAt??e.modifiedAt??e.createdAt;return(t.passkey.lastUsedAt??t.passkey.createdAt??t.modifiedAt??t.createdAt)-n});let a=o[0],s=e.find(e=>{if(e.deletedAt||e.passkey||e.type!==`login`)return!1;if(e.url&&i(e.url)===r)return!0;for(let t of e.additionalUrls??[])if(i(t)===r)return!0;return!1});if(s){s.passkey=a.passkey,s.modifiedAt=n;for(let e of o)e.deletedAt||(e.deletedAt=n,e.modifiedAt=n);t=!0}else if(o.length>1){for(let e=1;e<o.length;e+=1){let t=o[e];t.deletedAt||(t.deletedAt=n,t.modifiedAt=n)}t=!0}}return{merged:t}}async function V(e,t){try{return le(await r(t,e.nonce,e.ciphertext,e.tag))}catch{return null}}function H(e){S=new Map;for(let t of e){if(t.deletedAt||t.type===`note`||t.type===`card`)continue;let e=new Set,n=i(t.url??``);n&&e.add(n);for(let n of t.additionalUrls??[]){let t=i(n);t&&e.add(t)}if(e.size!==0)for(let n of e){let e=S.get(n)??[];e.push(t),S.set(n,e)}}}async function de(e){await L();let t=s();b=await o(e,t),x=[],C=`real`,w=!1,H(x);let r=B(x,w),{nonce:i,ciphertext:a,tag:c}=await n(b,r);await I(m,{version:1,salt:N(t),nonce:i,ciphertext:a,tag:c}),await I(h,z(a.length/2)),f()}async function fe(){return await L(),await F(m)!==null}async function pe(){return C===`real`&&w}async function me(e){if(!b||C!==`real`)throw Error(`vault must be unlocked in real mode`);await L();let r=await F(m);if(!r)throw Error(`missing slot A`);let i=s(),a=await o(e,i);try{let e=r.ciphertext.length/2,t=B([],!1),o=new TextEncoder().encode(t);o.length<e&&(t+=` `.repeat(e-o.length));let{nonce:s,ciphertext:c,tag:l}=await n(a,t);await I(h,{version:1,salt:N(i),nonce:s,ciphertext:c,tag:l})}finally{t(a)}w=!0,await K()}async function he(){if(!b||C!==`real`)throw Error(`vault must be unlocked in real mode`);await L();let e=await F(m);e&&await I(h,z(e.ciphertext.length/2)),w=!1,await K()}async function U(e){await L();let n=await F(m);if(!n)return!1;let r=await o(e,P(n.salt));try{return await V(n,r)!==null}finally{t(r)}}async function ge(e){await L();let[n,r]=await Promise.all([F(m),F(h)]),[i,a]=await Promise.all([n?o(e,P(n.salt)):Promise.resolve(null),r?o(e,P(r.salt)):Promise.resolve(null)]),[s,c]=await Promise.all([i&&n?V(n,i):Promise.resolve(null),a&&r?V(r,a):Promise.resolve(null)]);return s&&i?(b=i,C=`real`,x=s.entries,w=s.duressConfigured,H(x),await A(),f(),a&&t(a),s.migratedFromLegacy&&await K(),!0):c&&a?(b=a,C=`decoy`,x=c.entries,w=!1,H(x),await A(),f(),i&&t(i),!0):(i&&t(i),a&&t(a),!1)}function W(){b&&=(t(b),null),x=[],S=new Map,C=`real`,w=!1,ee()}function _e(){return b!==null}function ve(){if(!b)throw Error(`vault locked`);return x.filter(e=>!e.deletedAt)}var ye=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function be(){if(!b)throw Error(`vault locked`);let e=x.filter(e=>!e.deletedAt&&e.type===`login`),t=new Map,n=new Map;for(let r of e){let e=r.username?.trim();if(!e)continue;let a=ye.test(e)?t:n,o=a.get(e),s=i(r.url??``)??``,c=r.modifiedAt??r.createdAt??0;!o||c>o.lastUsed?a.set(e,{lastUsed:c,count:(o?.count??0)+1,domain:s}):a.set(e,{...o,count:o.count+1})}let r=e=>([t,n])=>({value:t,type:e,lastUsed:n.lastUsed,useCount:n.count,exampleDomain:n.domain||void 0});return[...[...t.entries()].map(r(`email`)).sort((e,t)=>t.useCount-e.useCount),...[...n.entries()].map(r(`username`)).sort((e,t)=>t.useCount-e.useCount)]}async function xe(e){if(!b)throw Error(`vault locked`);let t=Date.now(),n=[];for(let r of e)try{let e={...J(r),id:crypto.randomUUID(),createdAt:t,modifiedAt:t};x.push(e),n.push(e)}catch{}return n.length>0&&await q(),n}async function Se(e,t){if(!b)throw Error(`vault locked`);if(t===`replace`&&e.length===0)throw Error(`refuse to replace with empty entry set`);let n=0,r=0,i=0;if(t===`replace`){x=[];for(let t of e){let e=G(t);if(!e){i+=1;continue}x.push(e),n+=1}}else{let t=new Map;for(let e of x)t.set(e.id,e);for(let a of e){let e=G(a);if(!e){i+=1;continue}let o=t.get(e.id);if(!o)x.push(e),n+=1;else if(e.modifiedAt>o.modifiedAt){let t=x.findIndex(e=>e.id===o.id);t!==-1&&(x[t]=e,r+=1)}else i+=1}}return await q(`import`),{added:n,updated:r,skipped:i}}function G(e){if(!e||typeof e!=`object`)return null;let t=typeof e.title==`string`?e.title.trim():``;if(!t)return null;let n=typeof e.id==`string`&&e.id?e.id:crypto.randomUUID(),r=Date.now(),i=typeof e.createdAt==`number`?e.createdAt:r,a=typeof e.modifiedAt==`number`?e.modifiedAt:i,o=Y({...e,id:n,title:t,type:e.type??`login`,createdAt:i,modifiedAt:a},e);return o.type===`login`&&!o.passkey&&typeof o.password!=`string`||o.passkey&&!o.passkey.credentialId?null:o}async function Ce(e){if(e!==`REPLACE_ALL`)throw Error(`clearVaultEntries requires explicit confirmation`);if(!b)throw Error(`vault locked`);for(let e of x)e.deletedAt||(e.deletedAt=Date.now(),e.modifiedAt=Date.now());await q()}async function we(e){if(!b)throw Error(`vault locked`);let t=J(e),n=Date.now(),r={...t,id:crypto.randomUUID(),createdAt:n,modifiedAt:n,passwordChangedAt:t.password?n:void 0};return x.push(r),await q(),E.breachMonitoring!==!1&&r.type===`login`&&r.password&&j(r.password).then(async e=>{if(e>0){let t=x.findIndex(e=>e.id===r.id);t!==-1&&(x[t]={...x[t],breach:e,modifiedAt:Date.now()},await q())}}),r}async function Te(e,t){if(!b)throw Error(`vault locked`);let n=x.findIndex(t=>t.id===e);if(n===-1||x[n].deletedAt)throw Error(`entry not found`);let r=x[n],i=Fe(t),a=`password`in t&&typeof i.password==`string`&&i.password!==r.password;if(x[n]={...r,...i,modifiedAt:Date.now(),...a?{passwordChangedAt:Date.now()}:{}},x[n].type===`login`&&!x[n].password&&!x[n].passkey)throw x[n]=r,Error(`password or passkey required`);if(x[n].type===`card`&&!x[n].cardNumber)throw x[n]=r,Error(`card number is required for card entries`);if(await q(),`password`in t&&E.breachMonitoring!==!1&&x[n].type===`login`&&x[n].password){let t=x[n].password;j(t).then(async t=>{let n=x.findIndex(t=>t.id===e);n!==-1&&(x[n]={...x[n],breach:t>0?t:void 0,modifiedAt:Date.now()},await q())})}}async function Ee(e){if(!b)throw Error(`vault locked`);let t=x.find(t=>t.id===e);if(!t||t.deletedAt)throw Error(`entry not found`);t.deletedAt=Date.now(),t.modifiedAt=Date.now(),await q()}function De(){return b?x.filter(e=>!!e.deletedAt):[]}async function Oe(e){if(!b)throw Error(`vault locked`);let t=x.find(t=>t.id===e&&t.deletedAt);if(!t)throw Error(`deleted entry not found`);delete t.deletedAt,t.modifiedAt=Date.now(),await q(),H(x)}async function ke(e){if(!b)throw Error(`vault locked`);let t=x.findIndex(t=>t.id===e&&t.deletedAt);if(t===-1)throw Error(`deleted entry not found`);x.splice(t,1),await q()}async function Ae(e){if(!b||e===0)return 0;let t=Date.now()-e,n=x.length;x=x.filter(e=>!(e.deletedAt&&e.deletedAt<t));let r=n-x.length;return r>0&&await q(),r}function je(e){return S.get(e)??[]}function Me(e){return x.find(t=>t.id===e&&!t.deletedAt)}async function K(e=`local_save`){if(!b)throw Error(`vault locked`);let t=await F(m);if(!t)throw Error(`missing slot A`);await Q(e);let r=B(x,w),{nonce:i,ciphertext:a,tag:o}=await n(b,r),s={...t,nonce:i,ciphertext:a,tag:o};return await I(m,s),w||await I(h,z(a.length/2)),s}async function Ne(){if(!b)throw Error(`vault locked`);let e=await F(h);if(!e)throw Error(`missing slot B`);let t=B(x,!1),{nonce:r,ciphertext:i,tag:a}=await n(b,t);await I(h,{...e,nonce:r,ciphertext:i,tag:a})}async function q(e=`local_save`){if(!b)throw Error(`vault locked`);C===`decoy`?await Ne():await K(e),H(x)}function Pe(e){if(!Array.isArray(e))return;let t=new Set,n=[];for(let r of e){let e=typeof r==`string`?r.trim():``;if(!e)continue;let i=e.toLowerCase();t.has(i)||(t.add(i),n.push(e))}return n.length>0?n:void 0}function J(e){let t=e.title.trim(),n=e.type??`login`;if(n===`passkey`&&(n=`login`),!t)throw Error(`title is required`);if(n===`login`&&!e.password?.trim()&&!e.passkey)throw Error(`password or passkey required`);if(e.passkey){let t=e.passkey;if(!t.rpId||!t.credentialId||!t.publicKeyCose||!t.userHandle||!t.userName||t.algorithm!==-7&&t.algorithm!==-8)throw Error(`invalid passkey credential`)}if(n===`card`&&(!e.cardholderName?.trim()||!e.cardNumber?.trim()))throw Error(`cardholder name and card number are required`);return{type:n,title:t,username:n===`login`?e.username?.trim()??``:void 0,password:n===`login`?e.password:void 0,url:n===`login`?e.url?.trim()??``:void 0,additionalUrls:n===`login`?Pe(e.additionalUrls):void 0,totp:n===`login`&&e.totp?.trim()||void 0,notes:e.notes?.trim()||void 0,breach:n===`login`?e.breach:void 0,canary:n===`login`?e.canary:void 0,tags:e.tags,passkey:e.passkey,cardholderName:n===`card`?e.cardholderName?.trim():void 0,cardNumber:n===`card`?e.cardNumber?.trim():void 0,expMonth:n===`card`?e.expMonth?.trim():void 0,expYear:n===`card`?e.expYear?.trim():void 0,cvc:n===`card`?e.cvc?.trim():void 0,cardNickname:n===`card`&&e.cardNickname?.trim()||void 0,network:n===`card`?e.network:void 0,last4:n===`card`?e.last4?.trim():void 0}}function Fe(e){let t={};if(`type`in e&&(t.type=e.type),`title`in e){let n=e.title?.trim()??``;if(!n)throw Error(`title is required`);t.title=n}if(`url`in e&&(t.url=e.url?.trim()??``),`additionalUrls`in e){let n=Array.isArray(e.additionalUrls)?e.additionalUrls:[],r=new Set,i=[];for(let e of n){let t=typeof e==`string`?e.trim():``;if(!t)continue;let n=t.toLowerCase();r.has(n)||(r.add(n),i.push(t))}t.additionalUrls=i.length>0?i:void 0}return`username`in e&&(t.username=e.username?.trim()??``),`password`in e&&(t.password=(e.password??``)||void 0),`totp`in e&&(t.totp=e.totp?.trim()||void 0),`notes`in e&&(t.notes=e.notes?.trim()||void 0),`breach`in e&&(t.breach=e.breach),`canary`in e&&(t.canary=e.canary),`passkey`in e&&(t.passkey=e.passkey),`tags`in e&&(t.tags=e.tags),`cardholderName`in e&&(t.cardholderName=e.cardholderName?.trim()||void 0),`cardNumber`in e&&(t.cardNumber=(e.cardNumber??``)||void 0),`expMonth`in e&&(t.expMonth=e.expMonth?.trim()||void 0),`expYear`in e&&(t.expYear=e.expYear?.trim()||void 0),`cvc`in e&&(t.cvc=e.cvc?.trim()||void 0),`cardNickname`in e&&(t.cardNickname=e.cardNickname?.trim()||void 0),`network`in e&&(t.network=e.network),`last4`in e&&(t.last4=e.last4?.trim()||void 0),t}function Ie(e){let t=`createdAt`in e?e.createdAt:e.created,n=`modifiedAt`in e?e.modifiedAt:e.updated;return Y({id:e.id,type:`type`in e?e.type:`login`,title:e.title,username:e.username,password:e.password,url:e.url,totp:e.totp,notes:e.notes,breach:e.breach,canary:`canary`in e?e.canary:void 0,passkey:`passkey`in e?e.passkey:void 0,createdAt:t,modifiedAt:n,deletedAt:e.deletedAt,tags:`tags`in e?e.tags:void 0,cardholderName:`cardholderName`in e?e.cardholderName:void 0,cardNumber:`cardNumber`in e?e.cardNumber:void 0,expMonth:`expMonth`in e?e.expMonth:void 0,expYear:`expYear`in e?e.expYear:void 0,cvc:`cvc`in e?e.cvc:void 0,cardNickname:`cardNickname`in e?e.cardNickname:void 0,network:`network`in e?e.network:void 0,last4:`last4`in e?e.last4:void 0},e)}function Y(e,t){if(e.passkey)return e;let n=t,r=e.type===`passkey`,i=typeof n.rpId==`string`&&typeof n.credentialId==`string`&&typeof n.publicKeyCose==`string`&&typeof n.userHandle==`string`&&typeof n.userName==`string`;if(!r&&!i||!i)return e;let a=n.algorithm===-8?-8:-7;return e.passkey={rpId:n.rpId,rpName:n.rpName??n.rpId,credentialId:n.credentialId,publicKeyCose:n.publicKeyCose,privateKeyJwk:n.privateKeyJwk,userHandle:n.userHandle,userName:n.userName,userDisplayName:n.userDisplayName??n.userName,algorithm:a,signCount:n.signCount??0,aaguid:n.aaguid??``,backupEligible:n.backupEligible===!0,backupState:n.backupState===!0,lastUsedAt:n.lastUsedAt,browser:n.browser,transports:n.transports,createdAt:e.createdAt},r&&(e.type=`login`),e.username||=n.userName,e.url||=`https://${n.rpId}`,e}function X(e){return e.type===`note`?`note|${e.title.toLowerCase()}`:e.passkey?`passkey|${e.passkey.rpId.toLowerCase()}|${e.passkey.userName.toLowerCase()}`:`login|${e.title.toLowerCase()}|${(e.url??``).toLowerCase()}|${(e.username??``).toLowerCase()}`}function Le(){let e=new Map,t=0;for(let n of x.filter(e=>!e.deletedAt)){let r=X(n),i=e.get(r);i?(t++,(n.modifiedAt??n.createdAt??0)>(i.modifiedAt??i.createdAt??0)&&e.set(r,n)):e.set(r,n)}return t}async function Re(){if(!b)throw Error(`vault locked`);if(C===`decoy`)throw Error(`deduplicate disabled in decoy mode`);let e=new Map;for(let t of x.filter(e=>!e.deletedAt)){let n=X(t),r=e.get(n);r?(t.modifiedAt??t.createdAt??0)>(r.modifiedAt??r.createdAt??0)&&e.set(n,t):e.set(n,t)}let t=new Set(Array.from(e.values()).map(e=>e.id)),n=Date.now(),r=0;return x=x.map(e=>!e.deletedAt&&!t.has(e.id)?(r++,{...e,deletedAt:n}):e),r>0&&await q(),r}var Z=`peach_vault_history`,ze=10;async function Q(e){try{let t=await chrome.storage.local.get([m,h,Z]),n=t[m],r=t[h];if(!n)return;let i=JSON.stringify(n),a=JSON.stringify(r??n),o=null;if(b&&C===`real`)try{o=x.filter(e=>!e.deletedAt).length}catch{o=null}let s=t[Z],c=s&&Array.isArray(s.snapshots)?s:{snapshots:[]},l=c.snapshots[0];if(l&&l.vault_a===i&&l.vault_b===a)return;c.snapshots=[{id:crypto.randomUUID(),savedAt:Date.now(),reason:e,vault_a:i,vault_b:a,entryCount:o},...c.snapshots].slice(0,ze),await chrome.storage.local.set({[Z]:c})}catch{}}async function Be(){try{await chrome.storage.local.set({[Z]:{snapshots:[]}})}catch{}}async function $(){let e=(await chrome.storage.local.get(Z))[Z];return!e||!Array.isArray(e.snapshots)?[]:e.snapshots}async function Ve(e){let t=(await $()).find(t=>t.id===e);if(!t)return{ok:!1,error:`snapshot_not_found`};await Q(`restore`);let n,r;try{n=JSON.parse(t.vault_a),r=JSON.parse(t.vault_b)}catch{return{ok:!1,error:`snapshot_corrupt`}}return await I(m,n),await I(h,r),W(),{ok:!0}}async function He(e,r){if(!b||C!==`real`||!await U(e))return!1;let i=await F(m);if(!i)return!1;let a=s(),c=await o(r,a),{nonce:l,ciphertext:u,tag:d}=await n(c,B(x,w)),f={...i,salt:N(a),nonce:l,ciphertext:u,tag:d};return await Q(`local_save`),await I(m,f),t(b),b=c,w||await I(h,z(u.length/2)),!0}export{Ve as A,_e as C,je as D,Ae as E,ne as F,U as I,te as L,Q as M,ge as N,Se as O,Te as P,f as R,pe as S,ke as T,be as _,Ce as a,fe as b,de as c,Ee as d,he as f,Me as g,ve as h,j as i,me as j,Oe as k,ie as l,De as m,xe as n,Be as o,O as p,He as r,Le as s,we as t,Re as u,D as v,W as w,ae as x,$ as y};\ No newline at end of filedist-mobile/index.html+1 −1
@@ -18,7 +18,7 @@1818 crossorigin1919 />2020 <title>Peach</title>21- <script type="module" crossorigin src="/assets/index-J2S54SZa.js"></script>21+ <script type="module" crossorigin src="/assets/index-Dd8_N7xu.js"></script>2222 <link rel="modulepreload" crossorigin href="/assets/chunk-CilyBKbf.js">2323 <link rel="modulepreload" crossorigin href="/assets/preload-helper-D4M6sveU.js">2424 <link rel="modulepreload" crossorigin href="/assets/dist-C5po-C0e.js">dist-mobile/src/popup/index.html+1 −1
@@ -18,7 +18,7 @@1818 crossorigin1919 />2020 <title>Peach</title>21- <script type="module" crossorigin src="/assets/index-J2S54SZa.js"></script>21+ <script type="module" crossorigin src="/assets/index-Dd8_N7xu.js"></script>2222 <link rel="modulepreload" crossorigin href="/assets/chunk-CilyBKbf.js">2323 <link rel="modulepreload" crossorigin href="/assets/preload-helper-D4M6sveU.js">2424 <link rel="modulepreload" crossorigin href="/assets/dist-C5po-C0e.js">manifest.firefox.json+1 −1
@@ -1,7 +1,7 @@11 {22 "manifest_version": 3,33 "name": "Peach",4- "version": "2.16.5",4+ "version": "2.17.0",55 "description": "Zero-knowledge password manager",66 "browser_specific_settings": {77 "gecko": {manifest.json+1 −1
@@ -1,7 +1,7 @@11 {22 "manifest_version": 3,33 "name": "Peach",4- "version": "2.16.5",4+ "version": "2.17.0",55 "description": "Zero-knowledge password manager",66 "action": {77 "default_popup": "src/popup/index.html",package.json+1 −1
@@ -1,6 +1,6 @@11 {22 "name": "peach",3- "version": "2.16.5",3+ "version": "2.17.0",44 "description": "Zero-knowledge password manager",55 "type": "module",66 "scripts": {src/background/messages.ts+76 −5
@@ -107,6 +107,12 @@107107 108108 const PAIRING_TOKEN_TTL_MS = 5 * 60 * 1000;109109 110+// Active Android show-mode pairing handle, if any. Held module-locally so111+// STOP_PAIRING_SERVER can tear it down without round-tripping through112+// Kotlin storage. Cleared on success, on stop, and when the SW restarts113+// (the Kotlin server dies with the app process anyway).114+let activeAndroidPairingHandle: { stop: () => Promise<void> } | null = null;115+110116 function generateSixDigitToken(): string {111117 // crypto.getRandomValues, not Math.random — the token is the only secret112118 // protecting the pairing window from a same-LAN attacker. 6 decimal digits@@ -878,10 +884,63 @@878884 }879885 case "START_PAIRING_SERVER": {880886 if (Capacitor.isNativePlatform()) {881- // Show-mode on Android needs a Kotlin TCP/WebSocket server plus a882- // Noise NK responder. Until that lands, Android pairs by typing883- // the code shown on the desktop (the entering-side path is wired).884- return { ok: false, error: "android_pairing_show_not_yet_supported" };887+ const gate = await requirePro("sync");888+ if (!gate.allowed) return { ok: false, error: "pro_required" };889+ try {890+ const { getAndroidSyncIdentity } = await import("../shared/android-sync-identity");891+ const { getOrCreateLocalDeviceId } = await import("./sync-identity-glue");892+ const { startCapacitorPairingServer } = await import(893+ "../shared/capacitor-pairing-server"894+ );895+ const { addPairedDevice } = await import("./sync-storage");896+ const { setActivePairingToken, setRecentPairing } = await import(897+ "./pairing-server-state"898+ );899+900+ const identity = await getAndroidSyncIdentity();901+ const publicKeyHex = Array.from(identity.publicKey, (b) =>902+ b.toString(16).padStart(2, "0"),903+ ).join("");904+ const deviceId = await getOrCreateLocalDeviceId();905+ const name = await getLocalDeviceName();906+907+ const token = generateSixDigitToken();908+ const expiresAt = Date.now() + PAIRING_TOKEN_TTL_MS;909+910+ const handle = await startCapacitorPairingServer({911+ privateKey: identity.privateKey,912+ publicKey: identity.publicKey,913+ publicKeyHex,914+ deviceId,915+ deviceName: name,916+ token,917+ onPaired: async (paired) => {918+ try {919+ await addPairedDevice({920+ deviceId: paired.deviceId,921+ displayName: paired.displayName,922+ x25519PublicKey: paired.publicKeyHex,923+ pairedAt: Date.now(),924+ lastSeenAt: Date.now(),925+ });926+ } catch {927+ // Already paired — idempotent.928+ }929+ await setRecentPairing({930+ deviceName: paired.displayName,931+ pairedAt: Date.now(),932+ side: "showing",933+ });934+ await setActivePairingToken(null);935+ activeAndroidPairingHandle = null;936+ },937+ });938+ activeAndroidPairingHandle = handle;939+ await setActivePairingToken({ token, expiresAt });940+ return { ok: true, data: { token, expiresAt } };941+ } catch (err) {942+ return { ok: false, error: err instanceof Error ? err.message : "pairing_server_failed" };943+ }885944 }886945 const gate = await requirePro("sync");887946 if (!gate.allowed) return { ok: false, error: "pro_required" };@@ -902,7 +961,19 @@902961 }903962 }904963 case "STOP_PAIRING_SERVER": {905- if (Capacitor.isNativePlatform()) return { ok: true };964+ if (Capacitor.isNativePlatform()) {965+ try {966+ const { setActivePairingToken } = await import("./pairing-server-state");967+ await setActivePairingToken(null);968+ if (activeAndroidPairingHandle) {969+ await activeAndroidPairingHandle.stop();970+ activeAndroidPairingHandle = null;971+ }972+ } catch {973+ // best-effort cleanup974+ }975+ return { ok: true };976+ }906977 try {907978 const sync = await import('./sync');908979 const { setActivePairingToken } = await import('./pairing-server-state');src/popup/views/SyncPairing.tsx+5 −7
@@ -3,10 +3,10 @@33 import { sendMessage } from "../App";44 import type { PairedDevice } from "../../shared/sync-types";55 6-// Show-mode on Android requires a Kotlin Noise NK responder + WebSocket7-// server, which isn't built yet. Until that lands, Android only offers the8-// entering-side flow ("type the code shown on the other device").9-const SHOW_MODE_AVAILABLE = !Capacitor.isNativePlatform();6+// Both desktop and Android can now host or enter a 6-digit code session.7+// Android's host path uses a Kotlin TCP server + UDP beacon plus a JS8+// Noise NK responder (`capacitor-pairing-server.ts`).9+const SHOW_MODE_AVAILABLE = true;1010 1111 interface SyncPairingProps {1212 onClose: () => void;@@ -168,9 +168,7 @@168168 if (!Capacitor.isNativePlatform()) {169169 chrome.runtime.onMessage.addListener(handleRuntimeMessage);170170 }171- if (SHOW_MODE_AVAILABLE) {172- void startShow();173- }171+ void startShow();174172 });175173 176174 onCleanup(() => {src/shared/capacitor-pairing-server.ts+332 −0
@@ -0,0 +1,332 @@1+/**2+ * Capacitor pairing server — JS runtime for Android show-mode pairing.3+ *4+ * Kotlin (`SyncPlugin.startPairingTcpServer`) is the byte pump: it accepts5+ * one TCP connection and pumps inbound bytes to JS as `pairingChunk` events6+ * (base64). Outbound bytes go back via `sendPairingChunk`. Bytes are not7+ * framed on the Kotlin side — chunks may split or coalesce frames.8+ *9+ * This module reassembles u32-BE length-prefixed frames (matching10+ * `peach-sync-host/src/frame.rs`), drives the Noise NK responder, runs the11+ * auth challenge/proof round, and processes a single PAIR_REQUEST. On12+ * accept it sends PAIR_ACCEPT, persists the paired device to13+ * `peach_paired_devices`, and writes a `RecentPairing` so the popup can14+ * surface a "Paired with X" toast on next open.15+ */16+17+import { registerPlugin, type PluginListenerHandle } from "@capacitor/core";18+import {19+ noiseNKResponder,20+ performResponderAuth,21+ type NoiseNKSession,22+} from "./noise-js";23+import { encodeSyncMessage, decodeSyncMessage } from "./sync-wire";24+25+const MAX_FRAME_BYTES = 1024 * 1024;26+const PAIR_REQUEST_TIMEOUT_MS = 5 * 60 * 1000;27+28+interface SyncPluginPairing {29+ startPairingTcpServer(): Promise<{ tcpPort: number }>;30+ startPairingBeacon(opts: {31+ token: string;32+ tcpPort: number;33+ x25519PublicKey: string;34+ deviceId: string;35+ name: string;36+ }): Promise<void>;37+ stopPairingServer(): Promise<void>;38+ sendPairingChunk(opts: { dataBase64: string }): Promise<void>;39+ addListener(40+ eventName: "pairingChunk",41+ listener: (event: { dataBase64: string }) => void,42+ ): Promise<PluginListenerHandle>;43+ addListener(44+ eventName: "pairingConnected",45+ listener: (event: { peerAddr: string }) => void,46+ ): Promise<PluginListenerHandle>;47+ addListener(48+ eventName: "pairingEnded",49+ listener: () => void,50+ ): Promise<PluginListenerHandle>;51+}52+53+const Sync = registerPlugin<SyncPluginPairing>("Sync");54+55+export interface CapacitorPairingDeps {56+ /** Our static x25519 keypair. Persisted by `getAndroidSyncIdentity()`. */57+ privateKey: Uint8Array;58+ publicKey: Uint8Array;59+ /** Local device name shown to the peer in PAIR_ACCEPT. */60+ deviceName: string;61+ /** base64url-encoded random device id (not the public key). */62+ deviceId: string;63+ /** Hex-encoded public key, for the UDP beacon's `x25519_public_key`. */64+ publicKeyHex: string;65+ /** 6-digit pairing code. */66+ token: string;67+ /** Persists the new paired device on accept. */68+ onPaired: (paired: {69+ deviceId: string;70+ displayName: string;71+ publicKeyHex: string;72+ }) => void | Promise<void>;73+ /**74+ * Optional notification fired BEFORE persisting — popup uses it to flip to75+ * the success card while the SW is still finishing storage writes.76+ */77+ onPairRequest?: (deviceName: string) => void;78+}79+80+export interface CapacitorPairingHandle {81+ /** Tear down the server, beacon, and any in-flight handshake. */82+ stop: () => Promise<void>;83+}84+85+function base64ToBytes(b64: string): Uint8Array {86+ const binary = atob(b64);87+ const out = new Uint8Array(binary.length);88+ for (let i = 0; i < binary.length; i++) out[i] = binary.charCodeAt(i);89+ return out;90+}91+92+function bytesToBase64(bytes: Uint8Array): string {93+ let binary = "";94+ for (const b of bytes) binary += String.fromCharCode(b);95+ return btoa(binary);96+}97+98+/**99+ * Start the show-mode pairing server: bind TCP listener via Kotlin, start100+ * the UDP beacon, then drive Noise NK responder + auth + PAIR_REQUEST as101+ * soon as a peer connects.102+ *103+ * The returned handle's `stop()` is idempotent — call it from popup104+ * cleanup, vault-lock, and post-pair so the kotlin sockets always close.105+ */106+export async function startCapacitorPairingServer(107+ deps: CapacitorPairingDeps,108+): Promise<CapacitorPairingHandle> {109+ const { tcpPort } = await Sync.startPairingTcpServer();110+ await Sync.startPairingBeacon({111+ token: deps.token,112+ tcpPort,113+ x25519PublicKey: deps.publicKeyHex,114+ deviceId: deps.deviceId,115+ name: deps.deviceName,116+ });117+118+ // Inbound byte buffer — Kotlin sends raw socket reads; we reassemble119+ // u32-BE length-prefixed frames ourselves.120+ let inboundBuf = new Uint8Array(0);121+ const frameWaiters: Array<{122+ resolve: (frame: Uint8Array) => void;123+ reject: (err: Error) => void;124+ }> = [];125+ let connectionClosed = false;126+ let closeReason: Error | null = null;127+ let stopped = false;128+129+ function appendInbound(chunk: Uint8Array) {130+ const next = new Uint8Array(inboundBuf.length + chunk.length);131+ next.set(inboundBuf, 0);132+ next.set(chunk, inboundBuf.length);133+ inboundBuf = next;134+ drainFrameWaiters();135+ }136+137+ function tryReadFrame(): Uint8Array | null {138+ if (inboundBuf.length < 4) return null;139+ const view = new DataView(inboundBuf.buffer, inboundBuf.byteOffset, 4);140+ const len = view.getUint32(0, false); // big-endian, matches frame.rs141+ if (len > MAX_FRAME_BYTES) {142+ throw new Error(`incoming frame too large: ${len}`);143+ }144+ if (inboundBuf.length < 4 + len) return null;145+ const payload = inboundBuf.slice(4, 4 + len);146+ inboundBuf = inboundBuf.slice(4 + len);147+ return payload;148+ }149+150+ function drainFrameWaiters() {151+ while (frameWaiters.length > 0) {152+ let frame: Uint8Array | null;153+ try {154+ frame = tryReadFrame();155+ } catch (err) {156+ const w = frameWaiters.shift();157+ w?.reject(err instanceof Error ? err : new Error(String(err)));158+ continue;159+ }160+ if (!frame) return;161+ const w = frameWaiters.shift()!;162+ w.resolve(frame);163+ }164+ }165+166+ function failPendingWaiters(err: Error) {167+ while (frameWaiters.length > 0) {168+ const w = frameWaiters.shift()!;169+ w.reject(err);170+ }171+ }172+173+ function receiveFrame(): Promise<Uint8Array> {174+ if (connectionClosed && inboundBuf.length < 4) {175+ return Promise.reject(closeReason ?? new Error("connection closed"));176+ }177+ return new Promise<Uint8Array>((resolve, reject) => {178+ frameWaiters.push({ resolve, reject });179+ drainFrameWaiters();180+ });181+ }182+183+ async function sendFrame(payload: Uint8Array): Promise<void> {184+ if (connectionClosed) {185+ throw closeReason ?? new Error("connection closed");186+ }187+ const len = payload.length;188+ const framed = new Uint8Array(4 + len);189+ new DataView(framed.buffer).setUint32(0, len, false);190+ framed.set(payload, 4);191+ await Sync.sendPairingChunk({ dataBase64: bytesToBase64(framed) });192+ }193+194+ const chunkHandle = await Sync.addListener("pairingChunk", (event) => {195+ if (stopped) return;196+ try {197+ appendInbound(base64ToBytes(event.dataBase64));198+ } catch (err) {199+ failPendingWaiters(err instanceof Error ? err : new Error(String(err)));200+ }201+ });202+203+ const endHandle = await Sync.addListener("pairingEnded", () => {204+ connectionClosed = true;205+ closeReason = closeReason ?? new Error("connection closed");206+ failPendingWaiters(closeReason);207+ });208+209+ const connectedHandle = await Sync.addListener("pairingConnected", () => {210+ void runHandshake();211+ });212+213+ async function runHandshake(): Promise<void> {214+ let session: NoiseNKSession;215+ try {216+ session = await noiseNKResponder(217+ deps.privateKey,218+ deps.publicKey,219+ sendFrame,220+ receiveFrame,221+ );222+ } catch (err) {223+ console.warn("[peach-pair] noise responder failed:", err);224+ void stop();225+ return;226+ }227+228+ const sendEnc = async (data: Uint8Array) => sendFrame(session.encrypt(data));229+ const recvEnc = async () => session.decrypt(await receiveFrame());230+231+ let initiatorPublicKey: Uint8Array;232+ try {233+ const auth = await performResponderAuth(234+ session,235+ deps.privateKey,236+ deps.publicKey,237+ sendEnc,238+ recvEnc,239+ );240+ initiatorPublicKey = auth.initiatorPublicKey;241+ } catch (err) {242+ console.warn("[peach-pair] auth failed:", err);243+ void stop();244+ return;245+ }246+247+ // Read exactly one PAIR_REQUEST. Anything else on a code-pairing window248+ // is an attempted bypass — drop the connection.249+ let pairRequest;250+ try {251+ const frame = await Promise.race([252+ recvEnc(),253+ new Promise<Uint8Array>((_, reject) =>254+ setTimeout(() => reject(new Error("PAIR_REQUEST timeout")), PAIR_REQUEST_TIMEOUT_MS),255+ ),256+ ]);257+ const text = new TextDecoder().decode(frame);258+ const message = decodeSyncMessage(text);259+ if (message.type !== "PAIR_REQUEST") {260+ throw new Error(`unexpected frame: ${message.type}`);261+ }262+ pairRequest = message;263+ } catch (err) {264+ console.warn("[peach-pair] PAIR_REQUEST read failed:", err);265+ void stop();266+ return;267+ }268+269+ // The 6-digit token IS the user's consent — auto-accept on the showing270+ // side. The Noise+auth round above already proved the initiator owns271+ // the public key in PAIR_REQUEST; cross-check it with auth here.272+ const claimedHex = pairRequest.public_key_hex.toLowerCase();273+ const authedHex = bytesToHex(initiatorPublicKey);274+ if (claimedHex !== authedHex) {275+ console.warn(276+ "[peach-pair] PAIR_REQUEST public_key_hex did not match authenticated key",277+ );278+ void stop();279+ return;280+ }281+282+ deps.onPairRequest?.(pairRequest.device_name);283+284+ try {285+ await sendEnc(286+ new TextEncoder().encode(287+ encodeSyncMessage({288+ type: "PAIR_ACCEPT",289+ public_key_hex: bytesToHex(deps.publicKey),290+ device_name: deps.deviceName,291+ }),292+ ),293+ );294+ } catch (err) {295+ console.warn("[peach-pair] PAIR_ACCEPT send failed:", err);296+ void stop();297+ return;298+ }299+300+ try {301+ await deps.onPaired({302+ deviceId: pairRequest.public_key_hex,303+ displayName: pairRequest.device_name,304+ publicKeyHex: pairRequest.public_key_hex,305+ });306+ } catch (err) {307+ console.warn("[peach-pair] onPaired callback failed:", err);308+ }309+310+ // One code = one pairing. Drop the connection so a second peer can't311+ // sneak in on the same window.312+ void stop();313+ }314+315+ async function stop(): Promise<void> {316+ if (stopped) return;317+ stopped = true;318+ try { await chunkHandle.remove(); } catch { /* best-effort */ }319+ try { await endHandle.remove(); } catch { /* best-effort */ }320+ try { await connectedHandle.remove(); } catch { /* best-effort */ }321+ try { await Sync.stopPairingServer(); } catch { /* best-effort */ }322+ connectionClosed = true;323+ closeReason = closeReason ?? new Error("pairing server stopped");324+ failPendingWaiters(closeReason);325+ }326+327+ return { stop };328+}329+330+function bytesToHex(bytes: Uint8Array): string {331+ return Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join("");332+}src/shared/noise-js.test.ts+114 −1
@@ -16,7 +16,14 @@1616 import { describe, expect, it } from "vitest";1717 import { generateKeyPair as x25519GenerateKeyPair } from "@stablelib/x25519";1818 19-import { computeAuthProof, bytesToHex } from "./noise-js";19+import {20+ bytesToHex,21+ computeAuthProof,22+ noiseNKInitiator,23+ noiseNKResponder,24+ performInitiatorAuth,25+ performResponderAuth,26+} from "./noise-js";2027 2128 // Inputs match the Rust test in auth.rs::tests::print_known_proof_for_js_cross_check2229 const INITIATOR_PRIVATE = new Uint8Array(32).fill(0x01);@@ -58,6 +65,112 @@5865 );5966 6067 expect(bytesToHex(proof)).toBe(EXPECTED_PROOF);68+ });69+});70+71+describe("noise NK responder ↔ initiator round trip (pure JS)", () => {72+ it("completes handshake, encrypts/decrypts, and verifies auth proof", async () => {73+ const initiatorStatic = x25519GenerateKeyPair();74+ const responderStatic = x25519GenerateKeyPair();75+76+ const initToResp: Uint8Array[] = [];77+ const respToInit: Uint8Array[] = [];78+79+ const initSend = async (b: Uint8Array) => { initToResp.push(b); };80+ const initRecv = async () => {81+ while (respToInit.length === 0) await new Promise<void>((r) => setTimeout(r, 0));82+ return respToInit.shift()!;83+ };84+ const respSend = async (b: Uint8Array) => { respToInit.push(b); };85+ const respRecv = async () => {86+ while (initToResp.length === 0) await new Promise<void>((r) => setTimeout(r, 0));87+ return initToResp.shift()!;88+ };89+90+ const [initSession, respSession] = await Promise.all([91+ noiseNKInitiator(responderStatic.publicKey, initSend, initRecv),92+ noiseNKResponder(responderStatic.secretKey, responderStatic.publicKey, respSend, respRecv),93+ ]);94+95+ // Transport phase: bidirectional encrypt/decrypt.96+ const initiatorOut = initSession.encrypt(new TextEncoder().encode("hello from initiator"));97+ expect(new TextDecoder().decode(respSession.decrypt(initiatorOut))).toBe("hello from initiator");98+ const responderOut = respSession.encrypt(new TextEncoder().encode("hello from responder"));99+ expect(new TextDecoder().decode(initSession.decrypt(responderOut))).toBe("hello from responder");100+101+ // Auth round.102+ const initiatorEncSend = async (data: Uint8Array) => { initToResp.push(initSession.encrypt(data)); };103+ const initiatorEncRecv = async () => initSession.decrypt(await initRecv());104+ const responderEncSend = async (data: Uint8Array) => { respToInit.push(respSession.encrypt(data)); };105+ const responderEncRecv = async () => respSession.decrypt(await respRecv());106+107+ const [, authResult] = await Promise.all([108+ performInitiatorAuth(109+ initSession,110+ initiatorStatic.secretKey,111+ initiatorStatic.publicKey,112+ responderStatic.publicKey,113+ initiatorEncSend,114+ initiatorEncRecv,115+ ),116+ performResponderAuth(117+ respSession,118+ responderStatic.secretKey,119+ responderStatic.publicKey,120+ responderEncSend,121+ responderEncRecv,122+ ),123+ ]);124+125+ expect(bytesToHex(authResult.initiatorPublicKey)).toBe(bytesToHex(initiatorStatic.publicKey));126+ });127+128+ it("rejects a forged proof (constant-time MAC compare)", async () => {129+ const initiatorStatic = x25519GenerateKeyPair();130+ const attackerStatic = x25519GenerateKeyPair();131+ const responderStatic = x25519GenerateKeyPair();132+133+ const initToResp: Uint8Array[] = [];134+ const respToInit: Uint8Array[] = [];135+ const initSend = async (b: Uint8Array) => { initToResp.push(b); };136+ const initRecv = async () => {137+ while (respToInit.length === 0) await new Promise<void>((r) => setTimeout(r, 0));138+ return respToInit.shift()!;139+ };140+ const respSend = async (b: Uint8Array) => { respToInit.push(b); };141+ const respRecv = async () => {142+ while (initToResp.length === 0) await new Promise<void>((r) => setTimeout(r, 0));143+ return initToResp.shift()!;144+ };145+146+ const [initSession, respSession] = await Promise.all([147+ noiseNKInitiator(responderStatic.publicKey, initSend, initRecv),148+ noiseNKResponder(responderStatic.secretKey, responderStatic.publicKey, respSend, respRecv),149+ ]);150+151+ // Initiator lies — claims initiator's identity but signs with attacker's key.152+ const initiatorEncSend = async (data: Uint8Array) => { initToResp.push(initSession.encrypt(data)); };153+ const initiatorEncRecv = async () => initSession.decrypt(await initRecv());154+ const responderEncSend = async (data: Uint8Array) => { respToInit.push(respSession.encrypt(data)); };155+ const responderEncRecv = async () => respSession.decrypt(await respRecv());156+157+ const initiatorPromise = performInitiatorAuth(158+ initSession,159+ attackerStatic.secretKey, // wrong private — used to compute proof160+ initiatorStatic.publicKey, // claimed identity161+ responderStatic.publicKey,162+ initiatorEncSend,163+ initiatorEncRecv,164+ );165+ const responderPromise = performResponderAuth(166+ respSession,167+ responderStatic.secretKey,168+ responderStatic.publicKey,169+ responderEncSend,170+ responderEncRecv,171+ );172+173+ await expect(Promise.all([initiatorPromise, responderPromise])).rejects.toThrow(/proof did not verify/);61174 });62175 });63176 src/shared/noise-js.ts+157 −0
@@ -201,6 +201,163 @@201201 * with a `Proof` frame. Both frames are encrypted via the post-handshake202202 * Noise transport (caller owns the `sendEncrypted` / `receiveEncrypted` pair).203203 */204+/**205+ * Run the responder side of the Noise NK handshake. Symmetric with206+ * `noiseNKInitiator` — the caller provides `send` / `receive` for the two207+ * handshake messages and gets back a session for transport-phase frames.208+ *209+ * Wire-identical with the Rust `snow` responder so an Android-as-host210+ * pairing session can be driven by the desktop initiator and vice versa.211+ */212+export async function noiseNKResponder(213+ ourStaticPrivateKey: Uint8Array,214+ ourStaticPublicKey: Uint8Array,215+ send: (msg: Uint8Array) => Promise<void>,216+ receive: () => Promise<Uint8Array>,217+): Promise<NoiseNKSession> {218+ let h: Uint8Array = initHash();219+ let ck: Uint8Array = h.slice();220+221+ // NK pre-message: mix our (responder) static public key. The initiator222+ // pre-mixed the same key on its side; both transcripts must match.223+ h = mixHash(h, ourStaticPublicKey);224+225+ // --- Message 1: e, es ---226+ const msg1 = await receive();227+ if (msg1.length < 48) throw new Error("Noise NK: msg1 too short");228+ const remoteEphemeralPublic = msg1.slice(0, 32);229+ const encrypted1 = msg1.slice(32);230+231+ h = mixHash(h, remoteEphemeralPublic);232+ const es = sharedKey(ourStaticPrivateKey, remoteEphemeralPublic);233+ const [ck1, k1] = hkdf2(ck, es);234+ ck = ck1;235+236+ const cipher1 = new ChaCha20Poly1305(k1);237+ const nonce1 = new Uint8Array(12);238+ const decrypted1 = cipher1.open(nonce1, encrypted1, h);239+ if (!decrypted1) {240+ throw new Error("Noise NK: msg1 auth failed — wrong static key or MITM");241+ }242+ h = mixHash(h, encrypted1);243+244+ // --- Message 2: e, ee ---245+ const ephemeral = generateKeyPair();246+ h = mixHash(h, ephemeral.publicKey);247+ const ee = sharedKey(ephemeral.secretKey, remoteEphemeralPublic);248+ const [ck2, k2] = hkdf2(ck, ee);249+ ck = ck2;250+251+ const cipher2 = new ChaCha20Poly1305(k2);252+ const nonce2 = new Uint8Array(12);253+ const encrypted2 = cipher2.seal(nonce2, new Uint8Array(0), h);254+ h = mixHash(h, encrypted2);255+256+ const msg2 = new Uint8Array(32 + encrypted2.length);257+ msg2.set(ephemeral.publicKey, 0);258+ msg2.set(encrypted2, 32);259+ await send(msg2);260+261+ // --- Transport phase ---262+ // hkdf2 returns (k1, k2); the initiator uses k1 to send and k2 to receive,263+ // so the responder swaps: k1 → recv, k2 → send.264+ const [initiatorSendKey, responderSendKey] = hkdf2(ck, new Uint8Array(0));265+ const handshakeHash = h.slice();266+267+ let sendNonce = 0n;268+ let recvNonce = 0n;269+270+ function nonceBytes(n: bigint): Uint8Array {271+ const buf = new Uint8Array(12);272+ new DataView(buf.buffer).setBigUint64(4, n, true);273+ return buf;274+ }275+276+ const sendCipher = new ChaCha20Poly1305(responderSendKey);277+ const recvCipher = new ChaCha20Poly1305(initiatorSendKey);278+279+ return {280+ encrypt(plaintext) {281+ return sendCipher.seal(nonceBytes(sendNonce++), plaintext, new Uint8Array(0));282+ },283+ decrypt(ciphertext) {284+ const result = recvCipher.open(nonceBytes(recvNonce++), ciphertext, new Uint8Array(0));285+ if (!result) throw new Error("Noise NK: decryption failed");286+ return result;287+ },288+ handshakeHash,289+ };290+}291+292+/**293+ * Constant-time 32-byte equality. The MAC comparison in `verifyAuthProof`294+ * goes through this so a same-LAN attacker can't time the HMAC compare.295+ */296+function constantTimeEq(a: Uint8Array, b: Uint8Array): boolean {297+ if (a.length !== b.length) return false;298+ let diff = 0;299+ for (let i = 0; i < a.length; i++) diff |= a[i]! ^ b[i]!;300+ return diff === 0;301+}302+303+/**304+ * Drive the responder side of the post-handshake challenge/proof round. We305+ * generate a random 32-byte nonce, send `Challenge`, receive `Proof`, and306+ * verify. Returns the initiator's authenticated public key on success.307+ *308+ * Mirrors `auth.rs::verify_proof`: the MAC key is X25519(our_priv,309+ * initiator_pub) and the data is the same domain-separated transcript both310+ * sides feed into HMAC-SHA256.311+ */312+export async function performResponderAuth(313+ session: NoiseNKSession,314+ ourPrivateKey: Uint8Array,315+ ourPublicKey: Uint8Array,316+ sendEncryptedJson: (data: Uint8Array) => Promise<void>,317+ receiveEncryptedJson: () => Promise<Uint8Array>,318+): Promise<{ initiatorPublicKey: Uint8Array }> {319+ void session;320+321+ const nonce = new Uint8Array(32);322+ crypto.getRandomValues(nonce);323+324+ const challenge: AuthChallengeFrame = {325+ type: "CHALLENGE",326+ nonce_hex: bytesToHex(nonce),327+ responder_public_key_hex: bytesToHex(ourPublicKey),328+ };329+ await sendEncryptedJson(new TextEncoder().encode(JSON.stringify(challenge)));330+331+ const proofBytes = await receiveEncryptedJson();332+ const proofFrame = JSON.parse(new TextDecoder().decode(proofBytes)) as AuthProofFrame;333+ if (proofFrame.type !== "PROOF") {334+ throw new Error("expected PROOF frame");335+ }336+337+ const initiatorPublicKey = hexToBytes(proofFrame.initiator_public_key_hex);338+ const claimedProof = hexToBytes(proofFrame.proof_hex);339+ if (initiatorPublicKey.length !== 32) {340+ throw new Error("initiator public key must be 32 bytes");341+ }342+ if (claimedProof.length !== 32) {343+ throw new Error("proof must be 32 bytes");344+ }345+346+ // mac_for(our_priv, initiator_pub_for_dh, initiator_pub, our_pub, nonce)347+ const dh = sharedKey(ourPrivateKey, initiatorPublicKey);348+ const mac = new HMAC(SHA256, dh);349+ mac.update(AUTH_DOMAIN);350+ mac.update(initiatorPublicKey);351+ mac.update(ourPublicKey);352+ mac.update(nonce);353+ const expected = mac.digest();354+355+ if (!constantTimeEq(expected, claimedProof)) {356+ throw new Error("auth proof did not verify");357+ }358+ return { initiatorPublicKey };359+}360+204361 export async function performInitiatorAuth(205362 session: NoiseNKSession,206363 ourPrivateKey: Uint8Array,