@pollar/core 0.4.3 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +7 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:/freighterApi/webpack/universalModuleDefinition","webpack:/freighterApi/webpack/bootstrap","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@shared/constants/services.ts","webpack:/freighterApi/webpack/runtime/define%20property%20getters","webpack:/freighterApi/webpack/runtime/hasOwnProperty%20shorthand","webpack:/freighterApi/webpack/runtime/make%20namespace%20object","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@shared/api/helpers/extensionMessaging.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getPublicKey.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@shared/api/external.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/signTransaction.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/signBlob.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/signAuthEntry.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/isConnected.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getNetwork.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getNetworkDetails.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/isAllowed.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/setAllowed.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getUserInfo.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/requestAccess.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/index.ts","../../../node_modules/openapi-fetch/src/index.js","../src/api/client.ts","../src/constants.ts","../src/client/helpers.ts","../src/wallets/FreighterAdapter.ts","../src/wallets/types.ts","../src/wallets/AlbedoAdapter.ts","../src/client/session.ts","../src/client/stream.ts","../src/client/login.ts","../src/client/client.ts","../src/stellar/StellarClient.ts"],"names":["root","factory","exports","module","define","amd","this","SERVICE_TYPES","EXTERNAL_SERVICE_TYPES","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","e","sendMessageToContentScript","msg","MESSAGE_ID","Date","now","Math","random","window","postMessage","source","messageId","location","origin","Promise","resolve","requestTimeout","type","REQUEST_CONNECTION_STATUS","REQUEST_PUBLIC_KEY","setTimeout","isConnected","publicKey","removeEventListener","messageListener","event","r","data","t","messagedId","clearTimeout","addEventListener","getPublicKey","isBrowser","async","response","error","console","requestPublicKey","signTransaction","transactionXdr","opts","accountToSign","network","_accountToSign","networkPassphrase","signedTransaction","SUBMIT_TRANSACTION","signBlob","blob","signedBlob","SUBMIT_BLOB","signAuthEntry","entryXdr","signedAuthEntry","SUBMIT_AUTH_ENTRY","freighter","requestConnectionStatus","getNetwork","REQUEST_NETWORK","requestNetwork","getNetworkDetails","networkDetails","networkName","networkUrl","sorobanRpcUrl","undefined","REQUEST_NETWORK_DETAILS","isAllowed","REQUEST_ALLOWED_STATUS","requestAllowedStatus","setAllowed","SET_ALLOWED_STATUS","setAllowedStatus","getUserInfo","userInfo","REQUEST_USER_INFO","requestUserInfo","REQUEST_ACCESS","requestAccess","fetch","final","joiner","WalletType"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,CAAA,CAAA,SAA2CA,GAAMC,CAAAA,EAAAA;AAC1B,MAAA,QAAA,IAAA,OAAZC,SAAAA,IAA0C,QAAA,IAAA,OAAXC,MAAAA,GACxCA,MAAAA,CAAOD,OAAAA,GAAUD,CAAAA,EAAAA,GACQ,UAAA,IAAA,OAAXG,MAAAA,IAAyBA,MAAAA,CAAOC,GAAAA,GAC9CD,MAAAA,CAAO,EAAA,EAAIH,CAAAA,CAAAA,GACe,QAAA,IAAA,OAAZC,SAAAA,GACdA,SAAAA,CAAsB,YAAA,GAAID,CAAAA,EAAAA,GAE1BD,CAAAA,CAAmB,YAAA,GAAIC,CAAAA,EAAAA;IACxB,CAAA,EAAEK,SAAAA,GAAM,OAAA,MAAA;ACRT,MAAA,ICDYC,GAiDAC,CAAAA,EDhDRC,CAAAA,GAAsB,EEA1BA,CAAAA,EAAwB,CAACP,IAASQ,EAAAA,KAAAA;AACjC,QAAA,KAAA,IAAQC,EAAAA,IAAOD,EAAAA,EACXD,CAAAA,CAAoBG,CAAAA,CAAEF,EAAAA,EAAYC,EAAAA,CAAAA,IAAAA,CAASF,CAAAA,CAAoBG,CAAAA,CAAEV,EAAAA,EAASS,EAAAA,KAC5EE,MAAAA,CAAOC,cAAAA,CAAeZ,EAAAA,EAASS,EAAAA,EAAK,EAAEI,UAAAA,EAAAA,MAAkBC,GAAAA,EAAKN,EAAAA,CAAWC,EAAAA,CAAAA,EAAAA,CAAAA;AAE1E,MAAA,CAAA,ECNDF,CAAAA,EAAwB,CAACQ,EAAAA,EAAKC,EAAAA,KAAUL,MAAAA,CAAOM,SAAAA,CAAUC,cAAAA,CAAeC,IAAAA,CAAKJ,EAAAA,EAAKC,EAAAA,CAAAA,ECClFT,CAAAA,EAAyBP,CAAAA,EAAAA,KAAAA;AACH,QAAA,WAAA,IAAA,OAAXoB,UAA0BA,MAAAA,CAAOC,WAAAA,IAC1CV,OAAOC,cAAAA,CAAeZ,EAAAA,EAASoB,OAAOC,WAAAA,EAAa,EAAEC,OAAO,QAAA,EAAA,GAE7DX,MAAAA,CAAOC,cAAAA,CAAeZ,IAAS,YAAA,EAAc,EAAEsB,KAAAA,EAAAA,IAAAA,EAAO,CAAA;MAAO,CAAA,EAAA,EAAA,IAAA,EAAA;AAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,iBAAA,EAAA,MAAA,CAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,SAAA,EAAA,MAAA,GAAA,SAAA,EAAA,MAAA,GAAA,WAAA,EAAA,MAAA,GAAA,aAAA,EAAA,MAAA,CAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,eAAA,MAAA,CAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CHL9D,SAAYjB,EAAAA,EAAAA;AACV,QAAAkB,EAAAA,CAAA,cAAA,GAAA,gBAAA,EACAA,EAAAA,CAAA,YAAA,GAAA,cAAA,EACAA,EAAAA,CAAA,WAAA,GAAA,aAAA,EACAA,EAAAA,CAAA,cAAA,GAAA,gBAAA,EACAA,GAAA,sBAAA,GAAA,wBAAA,EACAA,EAAAA,CAAA,YAAA,GAAA,cAAA,EACAA,EAAAA,CAAA,mBAAA,GAAA,qBAAA,EACAA,GAAA,mBAAA,GAAA,qBAAA,EACAA,EAAAA,CAAA,mBAAA,GAAA,qBAAA,EACAA,EAAAA,CAAA,uBAAA,GAAA,yBAAA,EACAA,GAAA,gCAAA,GAAA,kCAAA,EACAA,EAAAA,CAAA,eAAA,GAAA,iBAAA,EACAA,EAAAA,CAAA,gBAAA,GAAA,kBAAA,EACAA,EAAAA,CAAA,aAAA,GAAA,eAAA,EACAA,EAAAA,CAAA,YAAA,GAAA,cAAA,EACAA,EAAAA,CAAA,gBAAA,GAAA,oBACAA,EAAAA,CAAA,SAAA,GAAA,WAAA,EACAA,EAAAA,CAAA,eAAA,GAAA,iBAAA,EACAA,EAAAA,CAAA,4BAAA,GAAA,gCACAA,EAAAA,CAAA,kBAAA,GAAA,oBAAA,EACAA,EAAAA,CAAA,0BAAA,GAAA,4BAAA,EACAA,EAAAA,CAAA,kCAAA,GAAA,sCACAA,EAAAA,CAAA,kBAAA,GAAA,oBAAA,EACAA,EAAAA,CAAA,qBAAA,GAAA,uBAAA,EACAA,EAAAA,CAAA,QAAA,GAAA,UAAA,EACAA,EAAAA,CAAA,kBAAA,GAAA,oBAAA,EACAA,EAAAA,CAAA,cAAA,GAAA,gBAAA,EACAA,EAAAA,CAAA,gBAAA,eAAA,EACAA,EAAAA,CAAA,aAAA,GAAA,eAAA,EACAA,EAAAA,CAAA,qBAAA,GAAA,uBAAA,EACAA,EAAAA,CAAA,mBAAA,kBAAA,EACAA,EAAAA,CAAA,uBAAA,GAAA,yBAAA,EACAA,EAAAA,CAAA,kBAAA,GAAA,oBAAA,EACAA,EAAAA,CAAA,uBAAA,sBAAA,EACAA,EAAAA,CAAA,mBAAA,GAAA,qBAAA,EACAA,EAAAA,CAAA,kBAAA,GAAA,oBAAA,EACAA,EAAAA,CAAA,cAAA,GAAA,gBAAA,EACAA,EAAAA,CAAA,qBAAA,GAAA,uBAAA,EACAA,EAAAA,CAAA,mBAAA,GAAA,qBAAA,EACAA,GAAA,cAAA,GAAA,gBAAA,EACAA,EAAAA,CAAA,YAAA,GAAA,cAAA,EACAA,EAAAA,CAAA,aAAA,GAAA,eAAA,EACAA,GAAA,eAAA,GAAA,iBAAA,EACAA,EAAAA,CAAA,uBAAA,GAAA,yBAAA,EACAA,EAAAA,CAAA,4BAAA,GAAA,8BAAA,EACAA,GAAA,gBAAA,GAAA,kBAAA;AACD,MAAA,CAAA,EA/CWlB,MAAAA,CAAAA,GAAa,EAAA,CAAA,CAAA,EAAA,CAiDzB,SAAYC,EAAAA,EAAAA;AACV,QAAAiB,EAAAA,CAAA,cAAA,GAAA,gBAAA,EACAA,EAAAA,CAAA,kBAAA,GAAA,oBAAA,EACAA,EAAAA,CAAA,kBAAA,GAAA,oBAAA,EACAA,EAAAA,CAAA,WAAA,GAAA,aAAA,EACAA,GAAA,iBAAA,GAAA,mBAAA,EACAA,EAAAA,CAAA,eAAA,GAAA,iBAAA,EACAA,EAAAA,CAAA,uBAAA,GAAA,yBAAA,EACAA,GAAA,yBAAA,GAAA,2BAAA,EACAA,EAAAA,CAAA,sBAAA,GAAA,wBAAA,EACAA,EAAAA,CAAA,kBAAA,GAAA,oBAAA,EACAA,GAAA,iBAAA,GAAA,mBAAA;MACD,CAAA,EAZWjB,CAAAA,KAAAA,CAAAA,GAAsB,EAAA,CAAA,CAAA;AAc3B,MAAA,MIhDMkB,CAAAA,GAA8BC,CAAAA,EAAAA,KAAAA;AAMzC,QAAA,MAAMC,EAAAA,GAAaC,IAAAA,CAAKC,GAAAA,EAAAA,GAAQC,KAAKC,MAAAA,EAAAA;AAMrC,QAAA,OAJAC,OAAOC,WAAAA,CACL,EAAEC,MAAAA,EJuC8B,gCAAA,EIvCAC,WAAWR,EAAAA,EAAAA,GAAeD,EAAAA,EAAAA,EAC1DM,OAAOI,QAAAA,CAASC,MAAAA,GAEX,IAAIC,OAAAA,EAASC,CAAAA,EAAAA,KAAAA;AAClB,UAAA,IAAIC,EAAAA,GAAiB,CAAA;AAWnBd,UAAAA,EAAAA,CAAIe,IAAAA,KAASlC,CAAAA,CAAuBmC,yBAAAA,IACpChB,EAAAA,CAAIe,SAASlC,CAAAA,CAAuBoC,kBAAAA,KAEpCH,EAAAA,GAAiBI,UAAAA,EAAW,MAAA;AAC1BL,YAAAA,EAAAA,CAAQ,EACNM,WAAAA,EAAAA,KAAAA,EACAC,SAAAA,EAAW,EAAA,EAAA,CAAA,EAEbd,MAAAA,CAAOe,mBAAAA,CAAoB,SAAA,EAAWC,EAAAA,CAAAA;AAAgB,UAAA,CAAA,GACrD,GAAA,CAAA,CAAA;AAGL,UAAA,MAAMA,EAAAA,GAAmBC,CAAAA,EAAAA,KAAAA;AAAAA,YAAAA,IAAAA,EAAAA,EAAAA,EAAAA;AAEnBA,YAAAA,GAAMf,MAAAA,KAAWF,MAAAA,IJWU,iCAAA,MIThB,IAAA,MAAXkB,KAAAD,IAAAA,IAAAA,EAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAOE,SAAAA,MAAAA,KAAID,EAAAA,GAAA,SAAAA,EAAAA,CAAEhB,MAAAA,CAAAA,IAAAA,CAEF,UAAXkB,EAAAA,GAAAH,IAAAA,IAAAA,EAAAA,GAAAA,MAAAA,GAAAA,GAAOE,IAAAA,CAAAA,IAAAA,MAAAA,KAAIC,KAAA,MAAA,GAAAA,EAAAA,CAAEC,gBAAe1B,EAAAA,KAEhCY,EAAAA,CAAQU,EAAAA,CAAME,IAAAA,GACdnB,MAAAA,CAAOe,mBAAAA,CAAoB,WAAWC,EAAAA,CAAAA,EACtCM,aAAad,EAAAA,CAAAA,CAAAA;AAAe,UAAA,CAAA;AAE9BR,UAAAA,MAAAA,CAAOuB,gBAAAA,CAAiB,SAAA,EAAWP,EAAAA,EAAAA,KAAiB,CAAA;QAAM,CAAA,EAAA;MAC1D,CAAA,EC7DSQ,CAAAA,GAAe,MAC1BC,CAAAA,GAAAA,CCmB8BC,YAAAA;AAC9B,QAAA,IAAIC,EAAAA,GAAW,EAAEb,SAAAA,EAAW,EAAA,EAAIc,OAAO,EAAA,EAAA;AACvC,QAAA,IAAA;AACED,UAAAA,KAAAA,MAAiBlC,CAAAA,CAA2B,EAC1CgB,IAAAA,EAAMlC,CAAAA,CAAuBoC,oBAAAA,CAAAA;AAAAA,QAAAA,CAAAA,CAAAA,OAExBnB,EAAAA,EAAAA;AACPqC,UAAAA,OAAAA,CAAQD,MAAMpC,EAAAA,CAAAA;AAAAA,QAAAA;AAGhB,QAAA,MAAA,EAAM,SAAA,EAAEsB,EAAAA,EAAS,KAAA,EAAEc,IAAAA,GAAUD,EAAAA;AAE7B,QAAA,IAAIC,IACF,MAAMA,EAAAA;AAER,QAAA,OAAOd,EAAAA;AAAS,MAAA,CAAA,GDlCJgB,GAAqBxB,OAAAA,CAAQC,OAAAA,CAAQ,EAAA,CAAA,EEDtCwB,CAAAA,GAAkB,CAC7BC,EAAAA,EACAC,EAAAA,KAMAR,CAAAA,GAAAA,CD8B+BC,OAC/BM,EAAAA,EACAC,IAOAC,EAAAA,KAAAA;AAEA,QAAA,IAAIC,EAAAA,GAAU,EAAA,EACVC,EAAAA,GAAiB,EAAA,EACjBC,EAAAA,GAAoB,EAAA;AAOJ,QAAA,QAAA,IAAA,OAATJ,EAAAA,IACTE,EAAAA,GAAUF,EAAAA,CAAKE,OAAAA,IAAW,IAC1BC,EAAAA,GAAiBH,EAAAA,CAAKC,aAAAA,IAAiB,EAAA,EACvCG,KAAoBJ,EAAAA,CAAKI,iBAAAA,IAAqB,OAE9CF,EAAAA,GAAUF,EAAAA,IAAQ,IAClBG,EAAAA,GAAkC,EAAA,CAAA;AAGpC,QAAA,IAAIT,EAAAA,GAAW,EAAEW,iBAAAA,EAAmB,EAAA,EAAIV,OAAO,EAAA,EAAA;AAC/C,QAAA,IAAA;AACED,UAAAA,EAAAA,GAAAA,MAAiBlC,CAAAA,CAA2B,EAC1CuC,gBAAAA,EAAAA,EACAG,OAAAA,EAAAA,EAAAA,EACAE,iBAAAA,EAAAA,IACAH,aAAAA,EAAeE,EAAAA,EACf3B,IAAAA,EAAMlC,CAAAA,CAAuBgE,oBAAAA,CAAAA;AAAAA,QAAAA,CAAAA,CAAAA,OAExB/C,EAAAA,EAAAA;AAEP,UAAA,MADAqC,OAAAA,CAAQD,KAAAA,CAAMpC,EAAAA,CAAAA,EACRA,EAAAA;AAAAA,QAAAA;AAER,QAAA,MAAA,EAAM,iBAAA,EAAE8C,EAAAA,EAAiB,KAAA,EAAEV,IAAAA,GAAUD,EAAAA;AAErC,QAAA,IAAIC,IACF,MAAMA,EAAAA;AAER,QAAA,OAAOU,EAAAA;AAAiB,MAAA,CAAA,EC7EMN,EAAAA,EAAgBC,EAAAA,CAAAA,GAAQ3B,OAAAA,CAAQC,QAAQ,EAAA,CAAA,ECR3DiC,CAAAA,GAAW,CACtBC,EAAAA,EACAR,EAAAA,KAIAR,CAAAA,GAAAA,CFkFwBC,OACxBe,IACAR,EAAAA,KAAAA;AAIA,QAAA,IAAIN,EAAAA,GAAW,EAAEe,UAAAA,EAAY,EAAA,EAAId,OAAO,EAAA,EAAA;AACxC,QAAA,MACMM,EAAAA,GAAAA,CADQD,EAAAA,IAAQ,EAAC,EACKC,aAAAA,IAAiB,EAAA;AAC7C,QAAA,IAAA;AACEP,UAAAA,EAAAA,GAAAA,MAAiBlC,CAAAA,CAA2B,EAC1CgD,IAAAA,EAAAA,EAAAA,EACAP,aAAAA,EAAAA,EAAAA,EACAzB,IAAAA,EAAMlC,CAAAA,CAAuBoE,WAAAA,EAAAA,CAAAA;AAAAA,QAAAA,CAAAA,CAAAA,OAExBnD,EAAAA,EAAAA;AAEP,UAAA,MADAqC,OAAAA,CAAQD,KAAAA,CAAMpC,EAAAA,CAAAA,EACRA,EAAAA;AAAAA,QAAAA;AAER,QAAA,MAAA,EAAM,UAAA,EAAEkD,EAAAA,EAAU,KAAA,EAAEd,IAAAA,GAAUD,EAAAA;AAE9B,QAAA,IAAIC,IACF,MAAMA,EAAAA;AAER,QAAA,OAAOc,EAAAA;AAAU,MAAA,CAAA,EE1GMD,EAAAA,EAAMR,EAAAA,CAAAA,GAAQ3B,OAAAA,CAAQC,QAAQ,EAAA,CAAA,ECN1CqC,CAAAA,GAAgB,CAC3BC,EAAAA,EACAZ,EAAAA,KAIAR,CAAAA,GAAAA,CH6G6BC,OAC7BmB,IACAZ,EAAAA,KAAAA;AAIA,QAAA,IAAIN,EAAAA,GAAW,EAAEmB,eAAAA,EAAiB,EAAA,EAAIlB,OAAO,EAAA,EAAA;AAC7C,QAAA,MACMM,EAAAA,GAAAA,CADQD,EAAAA,IAAQ,EAAC,EACKC,aAAAA,IAAiB,EAAA;AAC7C,QAAA,IAAA;AACEP,UAAAA,EAAAA,GAAAA,MAAiBlC,CAAAA,CAA2B,EAC1CoD,QAAAA,EAAAA,EAAAA,EACAX,aAAAA,EAAAA,EAAAA,EACAzB,IAAAA,EAAMlC,CAAAA,CAAuBwE,iBAAAA,EAAAA,CAAAA;AAAAA,QAAAA,CAAAA,CAAAA,OAExBvD,EAAAA,EAAAA;AACPqC,UAAAA,OAAAA,CAAQD,MAAMpC,EAAAA,CAAAA;AAAAA,QAAAA;AAEhB,QAAA,MAAA,EAAM,eAAA,EAAEsD,EAAAA,EAAe,KAAA,EAAElB,IAAAA,GAAUD,EAAAA;AAEnC,QAAA,IAAIC,IACF,MAAMA,EAAAA;AAER,QAAA,OAAOkB,EAAAA;AAAe,MAAA,CAAA,EGpIMD,IAAUZ,EAAAA,CAAAA,GAAQ3B,OAAAA,CAAQC,OAAAA,CAAQ,EAAA,CAAA,ECNnDM,CAAAA,GAAc,MACpBY,CAAAA,GAEDzB,OAAOgD,SAAAA,GACF1C,OAAAA,CAAQC,QAAQP,MAAAA,CAAOgD,SAAAA,KJiMKtB,YAAAA;AACrC,QAAA,IAAIC,EAAAA,GAAW,EACbd,WAAAA,EAAAA,KAAAA,EAAa;AAGf,QAAA,IAAA;AACEc,UAAAA,KAAAA,MAAiBlC,CAAAA,CAA2B,EAC1CgB,IAAAA,EAAMlC,CAAAA,CAAuBmC,2BAAAA,CAAAA;AAAAA,QAAAA,CAAAA,CAAAA,OAExBlB,EAAAA,EAAAA;AACPqC,UAAAA,OAAAA,CAAQD,MAAMpC,EAAAA,CAAAA;AAAAA,QAAAA;AAGhB,QAAA,OAAOmC,EAAAA,CAASd,WAAAA;MAAW,CAAA,GI3MpBoC,GANgB3C,QAAQC,OAAAA,CAAAA,KAAQ,GCD5B2C,CAAAA,GAAa,MACxBzB,KL4I4BC,YAAAA;AAC5B,QAAA,IAAIC,EAAAA,GAAW,EAAEQ,OAAAA,EAAS,EAAA,EAAIP,OAAO,EAAA,EAAA;AACrC,QAAA,IAAA;AACED,UAAAA,KAAAA,MAAiBlC,CAAAA,CAA2B,EAC1CgB,IAAAA,EAAMlC,CAAAA,CAAuB4E,iBAAAA,CAAAA;AAAAA,QAAAA,CAAAA,CAAAA,OAExB3D,EAAAA,EAAAA;AACPqC,UAAAA,OAAAA,CAAQD,MAAMpC,EAAAA,CAAAA;AAAAA,QAAAA;AAGhB,QAAA,MAAA,EAAM,OAAA,EAAE2C,EAAAA,EAAO,KAAA,EAAEP,IAAAA,GAAUD,EAAAA;AAE3B,QAAA,IAAIC,IACF,MAAMA,EAAAA;AAER,QAAA,OAAOO,EAAAA;MAAO,CAAA,GK3JFiB,GAAmB9C,QAAQC,OAAAA,CAAQ,EAAA,GCDpC8C,CAAAA,GAAoB,MAM/B5B,KNyJmCC,YAAAA;AAMnC,QAAA,IAAIC,KAAW,EACb2B,cAAAA,EAAgB,EACdnB,OAAAA,EAAS,IACToB,WAAAA,EAAa,EAAA,EACbC,UAAAA,EAAY,EAAA,EACZnB,mBAAmB,EAAA,EACnBoB,aAAAA,EAAAA,MAAAA,EAAeC,EAEjB9B,OAAO,EAAA,EAAA;AAET,QAAA,IAAA;AACED,UAAAA,KAAAA,MAAiBlC,CAAAA,CAA2B,EAC1CgB,IAAAA,EAAMlC,CAAAA,CAAuBoF,yBAAAA,CAAAA;AAAAA,QAAAA,CAAAA,CAAAA,OAExBnE,EAAAA,EAAAA;AACPqC,UAAAA,OAAAA,CAAQD,MAAMpC,EAAAA,CAAAA;AAAAA,QAAAA;AAGhB,QAAA,MAAA,EAAM,cAAA,EAAE8D,EAAAA,EAAc,KAAA,EAAE1B,EAAAA,KAAUD,EAAAA,EAAAA,EAC5B,OAAA,EACJQ,EAAAA,EAAO,YACPqB,EAAAA,EAAU,iBAAA,EACVnB,EAAAA,EAAiB,aAAA,EACjBoB,IAAAA,GACEH,EAAAA;AAEJ,QAAA,IAAI1B,IACF,MAAMA,EAAAA;AAER,QAAA,OAAO,EAAEO,SAAAA,EAAAA,EAASqB,UAAAA,EAAAA,IAAYnB,iBAAAA,EAAAA,EAAAA,EAAmBoB,eAAAA,EAAAA,EAAAA;AAAe,MAAA,CAAA,MM1L5DnD,OAAAA,CAAQC,OAAAA,CAAQ,EACd4B,OAAAA,EAAS,IACTqB,UAAAA,EAAY,EAAA,EACZnB,iBAAAA,EAAmB,EAAA,EACnBoB,eAAe,EAAA,EAAA,GCZVG,CAAAA,GAAY,MACvBnC,KPoNkCC,YAAAA;AAClC,QAAA,IAAIC,EAAAA,GAAW,EACbiC,SAAAA,EAAAA,KAAAA,EAAW;AAGb,QAAA,IAAA;AACEjC,UAAAA,KAAAA,MAAiBlC,CAAAA,CAA2B,EAC1CgB,IAAAA,EAAMlC,CAAAA,CAAuBsF,wBAAAA,CAAAA;AAAAA,QAAAA,CAAAA,CAAAA,OAExBrE,EAAAA,EAAAA;AACPqC,UAAAA,OAAAA,CAAQD,MAAMpC,EAAAA,CAAAA;AAAAA,QAAAA;AAGhB,QAAA,OAAOmC,EAAAA,CAASiC,SAAAA;MAAS,CAAA,GOjObE,GAAyBxD,QAAQC,OAAAA,CAAAA,KAAQ,GCD1CwD,CAAAA,GAAa,MACxBtC,KRoO8BC,YAAAA;AAC9B,QAAA,IAAIC,EAAAA,GAAW,EACbiC,SAAAA,EAAAA,KAAAA,EACAhC,OAAO,EAAA,EAAA;AAGT,QAAA,IAAA;AACED,UAAAA,KAAAA,MAAiBlC,CAAAA,CAA2B,EAC1CgB,IAAAA,EAAMlC,CAAAA,CAAuByF,oBAAAA,CAAAA;AAAAA,QAAAA,CAAAA,CAAAA,OAExBxE,EAAAA,EAAAA;AACPqC,UAAAA,OAAAA,CAAQD,MAAMpC,EAAAA,CAAAA;AAAAA,QAAAA;AAGhB,QAAA,MAAA,EAAM,SAAA,EAAEoE,EAAAA,EAAS,KAAA,EAAEhC,IAAAA,GAAUD,EAAAA;AAE7B,QAAA,IAAIC,IACF,MAAMA,EAAAA;AAER,QAAA,OAAOgC,EAAAA;MAAS,CAAA,GQvPJK,GAAqB3D,QAAQC,OAAAA,CAAAA,KAAQ,GCDtC2D,CAAAA,GAAc,MACzBzC,KT0P6BC,YAAAA;AAC7B,QAAA,IAAIC,EAAAA,GAAW,EAAEwC,QAAAA,EAAU,EAAErD,WAAW,EAAA,EAAA,EAAMc,OAAO,EAAA,EAAA;AACrD,QAAA,IAAA;AACED,UAAAA,KAAAA,MAAiBlC,CAAAA,CAA2B,EAC1CgB,IAAAA,EAAMlC,CAAAA,CAAuB6F,mBAAAA,CAAAA;AAAAA,QAAAA,CAAAA,CAAAA,OAExB5E,EAAAA,EAAAA;AACPqC,UAAAA,OAAAA,CAAQD,MAAMpC,EAAAA,CAAAA;AAAAA,QAAAA;AAGhB,QAAA,MAAA,EAAM,QAAA,EAAE2E,EAAAA,EAAQ,KAAA,EAAEvC,IAAAA,GAAUD,EAAAA;AAE5B,QAAA,IAAIC,IACF,MAAMA,EAAAA;AAER,QAAA,OAAOuC,EAAAA;MAAQ,CAAA,GSzQHE,GAAoB/D,OAAAA,CAAQC,OAAAA,CAAQ,EAAEO,SAAAA,EAAW,EAAA,EAAA,CAAA,ECDlD,CAAA,GAAgB,MAC3BW,CAAAA,GAAAA,CVC2BC,YAAAA;AAC3B,QAAA,IAAIC,EAAAA,GAAW,EAAEb,SAAAA,EAAW,EAAA,EAAIc,OAAO,EAAA,EAAA;AACvC,QAAA,IAAA;AACED,UAAAA,KAAAA,MAAiBlC,CAAAA,CAA2B,EAC1CgB,IAAAA,EAAMlC,CAAAA,CAAuB+F,gBAAAA,CAAAA;AAAAA,QAAAA,CAAAA,CAAAA,OAExB9E,EAAAA,EAAAA;AACPqC,UAAAA,OAAAA,CAAQD,MAAMpC,EAAAA,CAAAA;AAAAA,QAAAA;AAGhB,QAAA,MAAA,EAAM,SAAA,EAAEsB,EAAAA,EAAS,KAAA,EAAEc,IAAAA,GAAUD,EAAAA;AAE7B,QAAA,IAAIC,IACF,MAAMA,EAAAA;AAER,QAAA,OAAOd,EAAAA;AAAS,MAAA,CAAA,GUhBJyD,GAAqBjE,OAAAA,CAAQC,OAAAA,CAAQ,EAAA,GCQtCkB,CAAAA,GAA8B,WAAA,IAAA,OAAXzB,MAAAA,EAehC,CAAA,GAAA,EACEwB,YAAAA,EAAY,CAAA,EACZO,iBAAe,CAAA,EACfS,QAAAA,EAAQ,CAAA,EACRI,aAAAA,EAAa,CAAA,EACb/B,WAAAA,EAAW,CAAA,EACXqC,UAAAA,EAAU,GACVG,iBAAAA,EAAiB,CAAA,EACjBO,SAAAA,EAAS,CAAA,EACTG,UAAAA,EAAU,CAAA,EACVG,WAAAA,EAAW,CAAA,EACXK,eAAa,CAAA,EAAA;AAAA,MAAA,OAAA,CAAA;AAAA,IAAA,CAAA,GAAA,EAAA;;;;;ACrCf,IAAM,aAAA,GAAgB,aAAA;AAEtB,IAAM,yBAAyB,MAAM;AACnC,EAAA,OACE,OAAO,OAAA,KAAY,QAAA,IACnB,MAAA,CAAO,SAAS,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,SAAA,CAAU,GAAG,CAAC,CAAC,CAAA,IAAK,EAAA,IAC7D,QAAQ,QAAA,CAAS,MAAA;AAErB,CAAA;AAMO,SAAS,QAAA,GAAW;AACzB,EAAA,OAAO,IAAA,CAAK,QAAA,CAAS,QAAA,CAAS,EAAE,CAAA,CAAE,KAAA,CAAM,GAAG,EAAE,CAAA;AAC/C;AAMA,SAAwB,aAAa,aAAA,EAAe;AAClD,EAAA,IAAI;IACF,OAAA,GAAU,EAAA;AACV,IAAA,OAAA,EAAS,gBAAgB,UAAA,CAAW,OAAA;AACpC,IAAA,KAAA,EAAO,YAAY,UAAA,CAAW,KAAA;IAC9B,eAAA,EAAiB,qBAAA;IACjB,cAAA,EAAgB,oBAAA;IAChB,cAAA,EAAgB,oBAAA;IAChB,OAAA,EAAS,WAAA;IACT,cAAA,GAAiB,MAAA;IACjB,GAAG;GAAA,GACD,EAAE,GAAG,aAAA,EAAA;AACT,EAAA,cAAA,GAAiB,sBAAA,KAA2B,cAAA,GAAiB,MAAA;AAC7D,EAAA,OAAA,GAAU,oBAAoB,OAAO,CAAA;AACrC,EAAA,MAAM,oBAAoB,EAAA;AAO1B,EAAA,eAAe,SAAA,CAAU,YAAY,YAAA,EAAc;AACjD,IAAA,MAAM;MACJ,OAAA,EAAS,YAAA;AACT,MAAA,KAAA,EAAAC,MAAAA,GAAQ,SAAA;MACR,OAAA,GAAU,aAAA;AACV,MAAA,OAAA;AACA,MAAA,MAAA,GAAS,EAAA;MACT,OAAA,GAAU,MAAA;MACV,eAAA,EAAiB,sBAAA;AACjB,MAAA,cAAA,GAAiB,oBAAA,IAAwB,qBAAA;MACzC,cAAA,EAAgB,qBAAA;AAChB,MAAA,IAAA;AACA,MAAA,UAAA,EAAY,qBAAqB,EAAA;MACjC,GAAG;AAAA,KAAA,GACD,gBAAgB,EAAA;AACpB,IAAA,IAAI,YAAA,GAAe,OAAA;AACnB,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,YAAA,GAAe,mBAAA,CAAoB,YAAY,CAAA,IAAK,OAAA;AACtD,IAAA;AAEA,IAAA,IAAI,kBACF,OAAO,qBAAA,KAA0B,UAAA,GAC7B,qBAAA,GACA,sBAAsB,qBAAqB,CAAA;AACjD,IAAA,IAAI,sBAAA,EAAwB;AAC1B,MAAA,eAAA,GACE,OAAO,sBAAA,KAA2B,UAAA,GAC9B,sBAAA,GACA,qBAAA,CAAsB;AACpB,QAAA,GAAI,OAAO,qBAAA,KAA0B,QAAA,GAAW,qBAAA,GAAwB,EAAA;QACxE,GAAG;OACJ,CAAA;AACT,IAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,yBAAyB,oBAAA,IAAwB,qBAAA;AAExE,IAAA,MAAM,cAAA,GACJ,IAAA,KAAS,MAAA,GACL,MAAA,GACA,cAAA;AACE,MAAA,IAAA;;;;;;MAMA,YAAA,CAAa,WAAA,EAAa,OAAA,EAAS,MAAA,CAAO,MAAM;AAAA,KAAA;AAExD,IAAA,MAAM,YAAA,GAAe,YAAA;;MAEnB,cAAA,KAAmB,MAAA;MAEjB,cAAA,YAA0B,QAAA,GACxB,EAAA,GACA;QACE,cAAA,EAAgB;AAAA,OAAA;AAEtB,MAAA,WAAA;AACA,MAAA,OAAA;MACA,MAAA,CAAO;AAAA,KAAA;AAIT,IAAA,MAAM,gBAAA,GAAmB,CAAC,GAAG,iBAAA,EAAmB,GAAG,kBAAkB,CAAA;AAErE,IAAA,MAAM,WAAA,GAAc;MAClB,QAAA,EAAU,QAAA;MACV,GAAG,WAAA;MACH,GAAG,IAAA;MACH,IAAA,EAAM,cAAA;MACN,OAAA,EAAS;AAAA,KAAA;AAGX,IAAA,IAAI,EAAA;AACJ,IAAA,IAAI,OAAA;AACJ,IAAA,IAAI,UAAU,IAAI,OAAA;AAChB,MAAA,cAAA,CAAe,YAAY,EAAE,OAAA,EAAS,cAAc,MAAA,EAAQ,eAAA,EAAiB,gBAAgB,CAAA;AAC7F,MAAA;AAAA,KAAA;AAEF,IAAA,IAAI,QAAA;AAGJ,IAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,MAAA,IAAI,EAAE,OAAO,OAAA,CAAA,EAAU;AACrB,QAAA,OAAA,CAAQ,GAAG,CAAA,GAAI,IAAA,CAAK,GAAG,CAAA;AACzB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,iBAAiB,MAAA,EAAQ;AAC3B,MAAA,EAAA,GAAK,QAAA,EAAA;AAGL,MAAA,OAAA,GAAU,OAAO,MAAA,CAAO;QACtB,OAAA,EAAS,YAAA;QACT,KAAA,EAAAA,MAAAA;AACA,QAAA,OAAA;AACA,QAAA,eAAA;AACA,QAAA,cAAA;AACA,QAAA;OACD,CAAA;AACD,MAAA,KAAA,MAAW,KAAK,gBAAA,EAAkB;AAChC,QAAA,IAAI,KAAK,OAAO,CAAA,KAAM,YAAY,OAAO,CAAA,CAAE,cAAc,UAAA,EAAY;AACnE,UAAA,MAAM,MAAA,GAAS,MAAM,CAAA,CAAE,SAAA,CAAU;AAC/B,YAAA,OAAA;AACA,YAAA,UAAA;AACA,YAAA,MAAA;AACA,YAAA,OAAA;AACA,YAAA;WACD,CAAA;AACD,UAAA,IAAI,MAAA,EAAQ;AACV,YAAA,IAAI,kBAAkB,OAAA,EAAS;AAC7B,cAAA,OAAA,GAAU,MAAA;AACZ,YAAA,CAAA,MAAA,IAAW,kBAAkB,QAAA,EAAU;AACrC,cAAA,QAAA,GAAW,MAAA;AACX,cAAA;YACF,CAAA,MAAO;AACL,cAAA,MAAM,IAAI,MAAM,+EAA+E,CAAA;AACjG,YAAA;AACF,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAC,QAAA,EAAU;AAEb,MAAA,IAAI;AACF,QAAA,QAAA,GAAW,MAAMA,MAAAA,CAAM,OAAA,EAAS,cAAc,CAAA;AAChD,MAAA,CAAA,CAAA,OAAS5C,MAAAA,EAAO;AACd,QAAA,IAAI,oBAAA,GAAuBA,MAAAA;AAG3B,QAAA,IAAI,iBAAiB,MAAA,EAAQ;AAC3B,UAAA,KAAA,IAAS,IAAI,gBAAA,CAAiB,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AACrD,YAAA,MAAM,CAAA,GAAI,iBAAiB,CAAC,CAAA;AAC5B,YAAA,IAAI,KAAK,OAAO,CAAA,KAAM,YAAY,OAAO,CAAA,CAAE,YAAY,UAAA,EAAY;AACjE,cAAA,MAAM,MAAA,GAAS,MAAM,CAAA,CAAE,OAAA,CAAQ;AAC7B,gBAAA,OAAA;gBACA,KAAA,EAAO,oBAAA;AACP,gBAAA,UAAA;AACA,gBAAA,MAAA;AACA,gBAAA,OAAA;AACA,gBAAA;eACD,CAAA;AACD,cAAA,IAAI,MAAA,EAAQ;AAEV,gBAAA,IAAI,kBAAkB,QAAA,EAAU;AAC9B,kBAAA,oBAAA,GAAuB,MAAA;AACvB,kBAAA,QAAA,GAAW,MAAA;AACX,kBAAA;AACF,gBAAA;AAEA,gBAAA,IAAI,kBAAkB,KAAA,EAAO;AAC3B,kBAAA,oBAAA,GAAuB,MAAA;AACvB,kBAAA;AACF,gBAAA;AAEA,gBAAA,MAAM,IAAI,MAAM,0DAA0D,CAAA;AAC5E,cAAA;AACF,YAAA;AACF,UAAA;AACF,QAAA;AAGA,QAAA,IAAI,oBAAA,EAAsB;AACxB,UAAA,MAAM,oBAAA;AACR,QAAA;AACF,MAAA;AAIA,MAAA,IAAI,iBAAiB,MAAA,EAAQ;AAC3B,QAAA,KAAA,IAAS,IAAI,gBAAA,CAAiB,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AACrD,UAAA,MAAM,CAAA,GAAI,iBAAiB,CAAC,CAAA;AAC5B,UAAA,IAAI,KAAK,OAAO,CAAA,KAAM,YAAY,OAAO,CAAA,CAAE,eAAe,UAAA,EAAY;AACpE,YAAA,MAAM,MAAA,GAAS,MAAM,CAAA,CAAE,UAAA,CAAW;AAChC,cAAA,OAAA;AACA,cAAA,QAAA;AACA,cAAA,UAAA;AACA,cAAA,MAAA;AACA,cAAA,OAAA;AACA,cAAA;aACD,CAAA;AACD,YAAA,IAAI,MAAA,EAAQ;AACV,cAAA,IAAI,EAAE,kBAAkB,QAAA,CAAA,EAAW;AACjC,gBAAA,MAAM,IAAI,MAAM,oEAAoE,CAAA;AACtF,cAAA;AACA,cAAA,QAAA,GAAW,MAAA;AACb,YAAA;AACF,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,gBAAgB,CAAA;AAE3D,IAAA,IACE,SAAS,MAAA,KAAW,GAAA,IACpB,OAAA,CAAQ,MAAA,KAAW,UAClB,aAAA,KAAkB,GAAA,IAAO,CAAC,QAAA,CAAS,QAAQ,GAAA,CAAI,mBAAmB,CAAA,EAAG,QAAA,CAAS,SAAS,CAAA,EACxF;AACA,MAAA,OAAO,QAAA,CAAS,EAAA,GAAK,EAAE,IAAA,EAAM,MAAA,EAAW,UAAA,GAAa,EAAE,KAAA,EAAO,MAAA,EAAW,QAAA,EAAA;AAC3E,IAAA;AAGA,IAAA,IAAI,SAAS,EAAA,EAAI;AACf,MAAA,MAAM,kBAAkB,YAAY;AAElC,QAAA,IAAI,YAAY,QAAA,EAAU;AACxB,UAAA,OAAO,QAAA,CAAS,IAAA;AAClB,QAAA;AAEA,QAAA,IAAI,OAAA,KAAY,MAAA,IAAU,CAAC,aAAA,EAAe;AAExC,UAAA,MAAM,GAAA,GAAM,MAAM,QAAA,CAAS,IAAA,EAAA;AAC3B,UAAA,OAAO,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,GAAI,MAAA;AACjC,QAAA;AAEA,QAAA,OAAO,MAAM,QAAA,CAAS,OAAO,CAAA,EAAA;AAC/B,MAAA,CAAA;AACA,MAAA,OAAO,EAAE,IAAA,EAAM,MAAM,eAAA,IAAmB,QAAA,EAAA;AAC1C,IAAA;AAGA,IAAA,IAAI,KAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAA;AAC3B,IAAA,IAAI;AACF,MAAA,KAAA,GAAQ,IAAA,CAAK,MAAM,KAAK,CAAA;IAC1B,CAAA,CAAA,MAAQ;AAER,IAAA;AACA,IAAA,OAAO,EAAE,OAAO,QAAA,EAAA;AAClB,EAAA;AAEA,EAAA,OAAO;IACL,OAAA,CAAQ,MAAA,EAAQ,KAAK,IAAA,EAAM;AACzB,MAAA,OAAO,SAAA,CAAU,KAAK,EAAE,GAAG,MAAM,MAAA,EAAQ,MAAA,CAAO,WAAA,EAAA,EAAe,CAAA;AACjE,IAAA,CAAA;;AAEA,IAAA,GAAA,CAAI,KAAK,IAAA,EAAM;AACb,MAAA,OAAO,UAAU,GAAA,EAAK,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA;AAClD,IAAA,CAAA;;AAEA,IAAA,GAAA,CAAI,KAAK,IAAA,EAAM;AACb,MAAA,OAAO,UAAU,GAAA,EAAK,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA;AAClD,IAAA,CAAA;;AAEA,IAAA,IAAA,CAAK,KAAK,IAAA,EAAM;AACd,MAAA,OAAO,UAAU,GAAA,EAAK,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,QAAQ,CAAA;AACnD,IAAA,CAAA;;AAEA,IAAA,MAAA,CAAO,KAAK,IAAA,EAAM;AAChB,MAAA,OAAO,UAAU,GAAA,EAAK,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,UAAU,CAAA;AACrD,IAAA,CAAA;;AAEA,IAAA,OAAA,CAAQ,KAAK,IAAA,EAAM;AACjB,MAAA,OAAO,UAAU,GAAA,EAAK,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,WAAW,CAAA;AACtD,IAAA,CAAA;;AAEA,IAAA,IAAA,CAAK,KAAK,IAAA,EAAM;AACd,MAAA,OAAO,UAAU,GAAA,EAAK,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,QAAQ,CAAA;AACnD,IAAA,CAAA;;AAEA,IAAA,KAAA,CAAM,KAAK,IAAA,EAAM;AACf,MAAA,OAAO,UAAU,GAAA,EAAK,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA;AACpD,IAAA,CAAA;;AAEA,IAAA,KAAA,CAAM,KAAK,IAAA,EAAM;AACf,MAAA,OAAO,UAAU,GAAA,EAAK,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA;AACpD,IAAA,CAAA;;AAEA,IAAA,GAAA,CAAA,GAAO,UAAA,EAAY;AACjB,MAAA,KAAA,MAAW,KAAK,UAAA,EAAY;AAC1B,QAAA,IAAI,CAAC,CAAA,EAAG;AACN,UAAA;AACF,QAAA;AACA,QAAA,IAAI,OAAO,MAAM,QAAA,IAAY,EAAE,eAAe,CAAA,IAAK,YAAA,IAAgB,CAAA,IAAK,SAAA,IAAa,CAAA,CAAA,EAAI;AACvF,UAAA,MAAM,IAAI,MAAM,sFAAsF,CAAA;AACxG,QAAA;AACA,QAAA,iBAAA,CAAkB,KAAK,CAAC,CAAA;AAC1B,MAAA;AACF,IAAA,CAAA;;AAEA,IAAA,KAAA,CAAA,GAAS,UAAA,EAAY;AACnB,MAAA,KAAA,MAAW,KAAK,UAAA,EAAY;AAC1B,QAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,OAAA,CAAQ,CAAC,CAAA;AACrC,QAAA,IAAI,MAAM,EAAA,EAAI;AACZ,UAAA,iBAAA,CAAkB,MAAA,CAAO,GAAG,CAAC,CAAA;AAC/B,QAAA;AACF,MAAA;AACF,IAAA;AAAA,GAAA;AAEJ;AAuFO,SAAS,uBAAA,CAAwB,IAAA,EAAM,KAAA,EAAO,OAAA,EAAS;AAC5D,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,IAAA,OAAO,EAAA;AACT,EAAA;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,MAAM,IAAI,KAAA;AACR,MAAA;AAAA,KAAA;AAEJ,EAAA;AACA,EAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,OAAA,EAAS,kBAAkB,IAAA,GAAO,KAAA,GAAQ,kBAAA,CAAmB,KAAK,CAAC,CAAA,CAAA;AACvF;AAMO,SAAS,oBAAA,CAAqB,IAAA,EAAM,KAAA,EAAO,OAAA,EAAS;AACzD,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AACvC,IAAA,OAAO,EAAA;AACT,EAAA;AACA,EAAA,MAAM,SAAS,EAAA;AACf,EAAA,MAAM,MAAA,GACJ;IACE,MAAA,EAAQ,GAAA;IACR,KAAA,EAAO,GAAA;IACP,MAAA,EAAQ;GAAA,CACR,OAAA,CAAQ,KAAK,CAAA,IAAK,GAAA;AAGtB,EAAA,IAAI,OAAA,CAAQ,KAAA,KAAU,YAAA,IAAgB,OAAA,CAAQ,YAAY,KAAA,EAAO;AAC/D,IAAA,KAAA,MAAW,KAAK,KAAA,EAAO;AACrB,MAAA,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,OAAA,CAAQ,aAAA,KAAkB,IAAA,GAAO,KAAA,CAAM,CAAC,CAAA,GAAI,kBAAA,CAAmB,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AACzF,IAAA;AACA,IAAA,MAAM6C,MAAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA;AAC7B,IAAA,QAAQ,QAAQ,KAAA;AACd,MAAA,KAAK,MAAA,EAAQ;AACX,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAIA,MAAK,CAAA,CAAA;AACzB,MAAA;AACA,MAAA,KAAK,OAAA,EAAS;AACZ,QAAA,OAAO,IAAIA,MAAK,CAAA,CAAA;AAClB,MAAA;AACA,MAAA,KAAK,QAAA,EAAU;AACb,QAAA,OAAO,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAIA,MAAK,CAAA,CAAA;AAC1B,MAAA;MACA,SAAS;AACP,QAAA,OAAOA,MAAAA;AACT,MAAA;AAAA;AAEJ,EAAA;AAGA,EAAA,KAAA,MAAW,KAAK,KAAA,EAAO;AACrB,IAAA,MAAM,SAAA,GAAY,QAAQ,KAAA,KAAU,YAAA,GAAe,GAAG,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAA,GAAM,CAAA;AACrE,IAAA,MAAA,CAAO,KAAK,uBAAA,CAAwB,SAAA,EAAW,MAAM,CAAC,CAAA,EAAG,OAAO,CAAC,CAAA;AACnE,EAAA;AACA,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAChC,EAAA,OAAO,OAAA,CAAQ,KAAA,KAAU,OAAA,IAAW,OAAA,CAAQ,KAAA,KAAU,WAAW,CAAA,EAAG,MAAM,CAAA,EAAG,KAAK,CAAA,CAAA,GAAK,KAAA;AACzF;AAMO,SAAS,mBAAA,CAAoB,IAAA,EAAM,KAAA,EAAO,OAAA,EAAS;AACxD,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACzB,IAAA,OAAO,EAAA;AACT,EAAA;AAGA,EAAA,IAAI,OAAA,CAAQ,YAAY,KAAA,EAAO;AAC7B,IAAA,MAAMC,OAAAA,GAAS,EAAE,IAAA,EAAM,GAAA,EAAK,cAAA,EAAgB,KAAA,EAAO,aAAA,EAAe,GAAA,EAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,GAAA;AAC1F,IAAA,MAAM,KAAA,GAAA,CAAS,OAAA,CAAQ,aAAA,KAAkB,IAAA,GAAO,QAAQ,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,kBAAA,CAAmB,CAAC,CAAC,CAAA,EAAG,KAAKA,OAAM,CAAA;AAC5G,IAAA,QAAQ,QAAQ,KAAA;AACd,MAAA,KAAK,QAAA,EAAU;AACb,QAAA,OAAO,KAAA;AACT,MAAA;AACA,MAAA,KAAK,OAAA,EAAS;AACZ,QAAA,OAAO,IAAI,KAAK,CAAA,CAAA;AAClB,MAAA;AACA,MAAA,KAAK,QAAA,EAAU;AACb,QAAA,OAAO,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAC1B,MAAA;;;MAGA,SAAS;AACP,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AACzB,MAAA;AAAA;AAEJ,EAAA;AAGA,EAAA,MAAM,MAAA,GAAS,EAAE,MAAA,EAAQ,GAAA,EAAK,KAAA,EAAO,GAAA,EAAK,MAAA,EAAQ,GAAA,EAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,GAAA;AAC1E,EAAA,MAAM,SAAS,EAAA;AACf,EAAA,KAAA,MAAW,KAAK,KAAA,EAAO;AACrB,IAAA,IAAI,OAAA,CAAQ,KAAA,KAAU,QAAA,IAAY,OAAA,CAAQ,UAAU,OAAA,EAAS;AAC3D,MAAA,MAAA,CAAO,KAAK,OAAA,CAAQ,aAAA,KAAkB,OAAO,CAAA,GAAI,kBAAA,CAAmB,CAAC,CAAC,CAAA;IACxE,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,IAAA,CAAK,uBAAA,CAAwB,IAAA,EAAM,CAAA,EAAG,OAAO,CAAC,CAAA;AACvD,IAAA;AACF,EAAA;AACA,EAAA,OAAO,QAAQ,KAAA,KAAU,OAAA,IAAW,OAAA,CAAQ,KAAA,KAAU,WAClD,CAAA,EAAG,MAAM,CAAA,EAAG,MAAA,CAAO,KAAK,MAAM,CAAC,CAAA,CAAA,GAC/B,MAAA,CAAO,KAAK,MAAM,CAAA;AACxB;AAMO,SAAS,sBAAsB,OAAA,EAAS;AAC7C,EAAA,OAAO,SAAS,gBAAgB,WAAA,EAAa;AAC3C,IAAA,MAAM,SAAS,EAAA;AACf,IAAA,IAAI,WAAA,IAAe,OAAO,WAAA,KAAgB,QAAA,EAAU;AAClD,MAAA,KAAA,MAAW,QAAQ,WAAA,EAAa;AAC9B,QAAA,MAAM,KAAA,GAAQ,YAAY,IAAI,CAAA;AAC9B,QAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,UAAA;AACF,QAAA;AACA,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,UAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,YAAA;AACF,UAAA;AACA,UAAA,MAAA,CAAO,IAAA;AACL,YAAA,mBAAA,CAAoB,MAAM,KAAA,EAAO;cAC/B,KAAA,EAAO,MAAA;cACP,OAAA,EAAS,IAAA;AACT,cAAA,GAAG,OAAA,EAAS,KAAA;AACZ,cAAA,aAAA,EAAe,SAAS,aAAA,IAAiB;aAC1C;AAAA,WAAA;AAEH,UAAA;AACF,QAAA;AACA,QAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,UAAA,MAAA,CAAO,IAAA;AACL,YAAA,oBAAA,CAAqB,MAAM,KAAA,EAAO;cAChC,KAAA,EAAO,YAAA;cACP,OAAA,EAAS,IAAA;AACT,cAAA,GAAG,OAAA,EAAS,MAAA;AACZ,cAAA,aAAA,EAAe,SAAS,aAAA,IAAiB;aAC1C;AAAA,WAAA;AAEH,UAAA;AACF,QAAA;AACA,QAAA,MAAA,CAAO,IAAA,CAAK,uBAAA,CAAwB,IAAA,EAAM,KAAA,EAAO,OAAO,CAAC,CAAA;AAC3D,MAAA;AACF,IAAA;AACA,IAAA,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACxB,EAAA,CAAA;AACF;AAOO,SAAS,qBAAA,CAAsB,UAAU,UAAA,EAAY;AAC1D,EAAA,IAAI,OAAA,GAAU,QAAA;AACd,EAAA,KAAA,MAAW,SAAS,QAAA,CAAS,KAAA,CAAM,aAAa,CAAA,IAAK,EAAA,EAAI;AACvD,IAAA,IAAI,OAAO,KAAA,CAAM,SAAA,CAAU,CAAA,EAAG,KAAA,CAAM,SAAS,CAAC,CAAA;AAC9C,IAAA,IAAI,OAAA,GAAU,KAAA;AACd,IAAA,IAAI,KAAA,GAAQ,QAAA;AACZ,IAAA,IAAI,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAG;AACtB,MAAA,OAAA,GAAU,IAAA;AACV,MAAA,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,CAAA,EAAG,IAAA,CAAK,SAAS,CAAC,CAAA;AAC1C,IAAA;AACA,IAAA,IAAI,IAAA,CAAK,UAAA,CAAW,GAAG,CAAA,EAAG;AACxB,MAAA,KAAA,GAAQ,OAAA;AACR,MAAA,IAAA,GAAO,IAAA,CAAK,UAAU,CAAC,CAAA;IACzB,CAAA,MAAA,IAAW,IAAA,CAAK,UAAA,CAAW,GAAG,CAAA,EAAG;AAC/B,MAAA,KAAA,GAAQ,QAAA;AACR,MAAA,IAAA,GAAO,IAAA,CAAK,UAAU,CAAC,CAAA;AACzB,IAAA;AACA,IAAA,IAAI,CAAC,cAAc,UAAA,CAAW,IAAI,MAAM,MAAA,IAAa,UAAA,CAAW,IAAI,CAAA,KAAM,IAAA,EAAM;AAC9E,MAAA;AACF,IAAA;AACA,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAI,CAAA;AAC7B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,OAAA,GAAU,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO,mBAAA,CAAoB,IAAA,EAAM,OAAO,EAAE,KAAA,EAAO,OAAA,EAAS,CAAC,CAAA;AACrF,MAAA;AACF,IAAA;AACA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,MAAA,OAAA,GAAU,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO,oBAAA,CAAqB,IAAA,EAAM,OAAO,EAAE,KAAA,EAAO,OAAA,EAAS,CAAC,CAAA;AACtF,MAAA;AACF,IAAA;AACA,IAAA,IAAI,UAAU,QAAA,EAAU;AACtB,MAAA,OAAA,GAAU,OAAA,CAAQ,QAAQ,KAAA,EAAO,CAAA,CAAA,EAAI,wBAAwB,IAAA,EAAM,KAAK,CAAC,CAAA,CAAE,CAAA;AAC3E,MAAA;AACF,IAAA;AACA,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO,KAAA,KAAU,OAAA,GAAU,CAAA,CAAA,EAAI,kBAAA,CAAmB,KAAK,CAAC,CAAA,CAAA,GAAK,kBAAA,CAAmB,KAAK,CAAC,CAAA;AAClH,EAAA;AACA,EAAA,OAAO,OAAA;AACT;AAMO,SAAS,qBAAA,CAAsB,MAAM,OAAA,EAAS;AACnD,EAAA,IAAI,gBAAgB,QAAA,EAAU;AAC5B,IAAA,OAAO,IAAA;AACT,EAAA;AACA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,MAAM,cACJ,OAAA,CAAQ,GAAA,YAAe,QAAA,GAClB,OAAA,CAAQ,IAAI,cAAc,CAAA,IAAK,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,GACzD,OAAA,CAAQ,cAAc,CAAA,IAAK,QAAQ,cAAc,CAAA;AACxD,IAAA,IAAI,gBAAgB,mCAAA,EAAqC;AACvD,MAAA,OAAO,IAAI,eAAA,CAAgB,IAAI,CAAA,CAAE,QAAA,EAAA;AACnC,IAAA;AACF,EAAA;AACA,EAAA,OAAO,IAAA,CAAK,UAAU,IAAI,CAAA;AAC5B;AAMO,SAAS,cAAA,CAAe,UAAU,OAAA,EAAS;AAChD,EAAA,IAAI,QAAA,GAAW,CAAA,EAAG,OAAA,CAAQ,OAAO,GAAG,QAAQ,CAAA,CAAA;AAC5C,EAAA,IAAI,OAAA,CAAQ,QAAQ,IAAA,EAAM;AACxB,IAAA,QAAA,GAAW,OAAA,CAAQ,cAAA,CAAe,QAAA,EAAU,OAAA,CAAQ,OAAO,IAAI,CAAA;AACjE,EAAA;AACA,EAAA,IAAI,SAAS,OAAA,CAAQ,eAAA,CAAgB,QAAQ,MAAA,CAAO,KAAA,IAAS,EAAE,CAAA;AAC/D,EAAA,IAAI,MAAA,CAAO,UAAA,CAAW,GAAG,CAAA,EAAG;AAC1B,IAAA,MAAA,GAAS,MAAA,CAAO,UAAU,CAAC,CAAA;AAC7B,EAAA;AACA,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,QAAA,IAAY,IAAI,MAAM,CAAA,CAAA;AACxB,EAAA;AACA,EAAA,OAAO,QAAA;AACT;AAMO,SAAS,gBAAgB,UAAA,EAAY;AAC1C,EAAA,MAAM,YAAA,GAAe,IAAI,OAAA,EAAA;AACzB,EAAA,KAAA,MAAW,KAAK,UAAA,EAAY;AAC1B,IAAA,IAAI,CAAC,CAAA,IAAK,OAAO,CAAA,KAAM,QAAA,EAAU;AAC/B,MAAA;AACF,IAAA;AACA,IAAA,MAAM,QAAA,GAAW,aAAa,OAAA,GAAU,CAAA,CAAE,SAAA,GAAY,MAAA,CAAO,QAAQ,CAAC,CAAA;AACtE,IAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,CAAA,IAAK,QAAA,EAAU;AAC7B,MAAA,IAAI,MAAM,IAAA,EAAM;AACd,QAAA,YAAA,CAAa,OAAO,CAAC,CAAA;MACvB,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AAC3B,QAAA,KAAA,MAAW,MAAM,CAAA,EAAG;AAClB,UAAA,YAAA,CAAa,MAAA,CAAO,GAAG,EAAE,CAAA;AAC3B,QAAA;AACF,MAAA,CAAA,MAAA,IAAW,MAAM,MAAA,EAAW;AAC1B,QAAA,YAAA,CAAa,GAAA,CAAI,GAAG,CAAC,CAAA;AACvB,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA,OAAO,YAAA;AACT;AAMO,SAAS,oBAAoB,GAAA,EAAK;AACvC,EAAA,IAAI,GAAA,CAAI,QAAA,CAAS,GAAG,CAAA,EAAG;AACrB,IAAA,OAAO,GAAA,CAAI,SAAA,CAAU,CAAA,EAAG,GAAA,CAAI,SAAS,CAAC,CAAA;AACxC,EAAA;AACA,EAAA,OAAO,GAAA;AACT;;;AC3qBO,SAAS,gBAAgB,OAAA,EAAiB;AAC/C,EAAA,OAAO,YAAA,CAAoB,EAAE,OAAA,EAAS,CAAA;AACxC;;;ACPO,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA,EAAM,MAAA;AAAA,EACN,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,KAAA,EAAO;AACT;AAGO,IAAM,cAAA,GAAiB;AAAA,EAC5B,OAAA,EAAS,SAAA;AAAA,EACT,cAAA,EAAgB,gBAAA;AAAA,EAChB,WAAA,EAAa;AACf;AAIO,IAAM,eAAA,GAAkB;AAAA,EAC7B,cAAA,EAAgB;AAAA,IACd,IAAA,EAAM,MAAA;AAAA,IACN,MAAA,EAAQ,QAAA;AAAA,IACR,oBAAA,EAAsB,sBAAA;AAAA,IACtB,oBAAA,EAAsB,sBAAA;AAAA,IACtB,sBAAA,EAAwB,wBAAA;AAAA,IACxB,gBAAA,EAAkB,kBAAA;AAAA,IAClB,sBAAA,EAAwB,wBAAA;AAAA,IACxB,wBAAA,EAA0B,0BAAA;AAAA,IAC1B,qBAAA,EAAuB,uBAAA;AAAA,IACvB,uBAAA,EAAyB,yBAAA;AAAA,IACzB,iBAAA,EAAmB,mBAAA;AAAA,IACnB,mCAAA,EAAqC,qCAAA;AAAA,IACrC,gCAAA,EAAkC,kCAAA;AAAA,IAClC,qBAAA,EAAuB,uBAAA;AAAA,IACvB,uBAAA,EAAyB,yBAAA;AAAA,IACzB,+BAAA,EAAiC,iCAAA;AAAA,IACjC,6BAAA,EAA+B,+BAAA;AAAA,IAC/B,iBAAA,EAAmB,mBAAA;AAAA,IACnB,iBAAA,EAAmB,mBAAA;AAAA,IACnB,iBAAA,EAAmB,mBAAA;AAAA,IACnB,iBAAA,EAAmB,mBAAA;AAAA,IACnB,mBAAA,EAAqB,qBAAA;AAAA,IACrB,qBAAA,EAAuB,uBAAA;AAAA,IACvB,mBAAA,EAAqB,qBAAA;AAAA,IACrB,mBAAA,EAAqB,qBAAA;AAAA,IACrB,wBAAA,EAA0B,0BAAA;AAAA,IAC1B,sBAAA,EAAwB,wBAAA;AAAA,IACxB,cAAA,EAAgB,gBAAA;AAAA,IAChB,aAAA,EAAe,SAAA;AAAA,IACf,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,aAAA,EAAe;AAAA,IACb,IAAA,EAAM,MAAA;AAAA,IACN,eAAA,EAAiB,iBAAA;AAAA,IACjB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,MAAA;AAAA,IACN,iCAAA,EAAmC,mCAAA;AAAA,IACnC,uBAAA,EAAyB,yBAAA;AAAA,IACzB,yBAAA,EAA2B,2BAAA;AAAA,IAC3B,uBAAA,EAAyB,yBAAA;AAAA,IACzB,2BAAA,EAA6B,6BAAA;AAAA,IAC7B,6BAAA,EAA+B,+BAAA;AAAA,IAC/B,2BAAA,EAA6B;AAAA,GAC/B;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,eAAA,EAAiB;AAAA;AAErB;;;ACjEO,IAAM,eAAe,CAC1B,KAAA,EACA,QAAA,EACA,OAAA,EACA,WACA,OAAA,KAOG;AACH,EAAA,MAAM,SAAA,GAAY,CAAC,QAAA,CAAS,KAAA,IAAS,CAAC,CAAC,QAAA,CAAS,IAAA,IAAQ,CAAC,CAAC,QAAA,CAAS,IAAA,EAAM,OAAA;AACzE,EAAA,OAAA;AAAA,IACE,KAAA;AAAA,IACA,SAAA,GAAY,QAAQ,IAAA,GAAO,SAAA;AAAA,IAC3B,YAAY,MAAA,GAAS,OAAA;AAAA,IACrB,SAAA,GAAY,OAAA,CAAQ,MAAA,IAAU,WAAA,CAAY,UAAU,WAAA,CAAY,KAAA;AAAA,IAChE,SAAA,GAAY,QAAA,CAAS,IAAA,GAAO,QAAA,CAAS;AAAA,GACvC;AACA,EAAA,OAAO,SAAA;AACT,CAAA;;;ACtBA,IAAA,oBAAA,GAQO,OAAA,CAAA,iBAAA,EAAA,CAAA;;;ACRA,IAAK,UAAA,qBAAAC,WAAAA,KAAL;AACL,EAAAA,YAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,YAAA,QAAA,CAAA,GAAS,QAAA;AAFC,EAAA,OAAAA,WAAAA;AAAA,CAAA,EAAA,UAAA,IAAA,EAAA;;;ADoBL,IAAM,mBAAN,MAAgD;AAAA,EAAhD,WAAA,GAAA;AACL,IAAA,IAAA,CAAS,IAAA,GAAA,WAAA;AAAA,EAAA;AAAA,EAET,MAAM,WAAA,GAAgC;AACpC,IAAA,IAAI;AACF,MAAA,OAAO,UAAM,oBAAA,CAAA,WAAA,GAAY;AAAA,IAC3B,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,OAAA,GAA0C;AAC9C,IAAA,MAAM,SAAA,GAAY,UAAM,oBAAA,CAAA,WAAA,GAAY;AACpC,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA,IACrD;AAEA,IAAA,MAAM,OAAA,GAAU,UAAM,oBAAA,CAAA,SAAA,GAAU;AAChC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAA,IAAM,oBAAA,CAAA,UAAA,GAAW;AAAA,IACnB;AAEA,IAAA,MAAM,QAAA,GAAW,UAAM,oBAAA,CAAA,WAAA,GAAY;AACnC,IAAA,IAAI,CAAC,UAAU,SAAA,EAAW;AACxB,MAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAAA,IACjE;AAEA,IAAA,OAAO,EAAE,OAAA,EAAS,QAAA,CAAS,SAAA,EAAW,SAAA,EAAW,SAAS,SAAA,EAAU;AAAA,EACtE;AAAA,EAEA,MAAM,UAAA,GAA4B;AAAA,EAElC;AAAA,EAEA,MAAM,YAAA,GAAuC;AAC3C,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,UAAM,oBAAA,CAAA,SAAA,GAAU;AAChC,MAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,MAAA,MAAM,QAAA,GAAW,UAAM,oBAAA,CAAA,WAAA,GAAY;AACnC,MAAA,OAAO,UAAU,SAAA,IAAa,IAAA;AAAA,IAChC,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,UAAA,GAA8B;AAClC,IAAA,OAAA,IAAO,oBAAA,CAAA,UAAA,GAAW;AAAA,EACpB;AAAA,EAEA,MAAM,eAAA,CAAgB,GAAA,EAAa,OAAA,EAAoE;AACrG,IAAA,MAAM,MAAA,GAAS,MAAA,IAAM,oBAAA,CAAA,eAAA,EAAgB,GAAA,EAAK;AAAA,MACxC,SAAS,OAAA,EAAS,OAAA;AAAA,MAClB,mBAAmB,OAAA,EAAS,iBAAA;AAAA,MAC5B,eAAe,OAAA,EAAS;AAAA,KACzB,CAAA;AACD,IAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,KAAW,QAAA,EAAU;AACzC,MAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAAA,IACnD;AACA,IAAA,OAAO,EAAE,aAAa,MAAA,EAAO;AAAA,EAC/B;AAAA,EAEA,MAAM,aAAA,CAAc,QAAA,EAAkB,OAAA,EAAgE;AACpG,IAAA,MAAM,MAAA,GAAS,UAAM,oBAAA,CAAA,aAAA,EAAc,QAAA,EAAU,EAAE,aAAA,EAAe,OAAA,EAAS,eAAe,CAAA;AACtF,IAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,KAAW,QAAA,EAAU;AACzC,MAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAAA,IACnD;AACA,IAAA,OAAO,EAAE,iBAAiB,MAAA,EAAO;AAAA,EACnC;AACF;;;AE9EA,SAAS,gBAAgB,GAAA,EAAqB;AAC5C,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,GAAA,EAAK,UAAU,mDAAmD,CAAA;AAC5F,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,MAAM,kDAAkD,CAAA;AAAA,EACpE;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,kBAAA,GAAsD;AAC7D,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,MAAM,MAAA,CAAO,IAAI,KAAA,CAAM,yBAAyB,CAAC,CAAA,EAAG,CAAA,GAAI,EAAA,GAAK,GAAI,CAAA;AAE5F,IAAA,SAAS,QAAQ,KAAA,EAAqB;AACpC,MAAA,IAAI,KAAA,CAAM,WAAW,MAAA,CAAO,QAAA,CAAS,UAAU,KAAA,CAAM,IAAA,EAAM,SAAS,eAAA,EAAiB;AACrF,MAAA,YAAA,CAAa,OAAO,CAAA;AACpB,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,OAAO,CAAA;AAC7C,MAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,OAAiC,CAAA;AAAA,IACtD;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,OAAO,CAAA;AAAA,EAC5C,CAAC,CAAA;AACH;AAEA,SAAS,mBAAA,GAAuD;AAC9D,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,MAAM,MAAA,CAAO,IAAI,KAAA,CAAM,yBAAyB,CAAC,CAAA,EAAG,CAAA,GAAI,EAAA,GAAK,GAAI,CAAA;AAE5F,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,MAAA,CAAO,SAAS,MAAM,CAAA;AACzD,MAAA,IAAI,CAAC,MAAA,CAAO,GAAA,CAAI,QAAQ,KAAK,CAAC,MAAA,CAAO,GAAA,CAAI,qBAAqB,CAAA,IAAK,CAAC,MAAA,CAAO,GAAA,CAAI,YAAY,CAAA,EAAG;AAE9F,MAAA,YAAA,CAAa,OAAO,CAAA;AACpB,MAAA,MAAM,SAAiC,EAAC;AACxC,MAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,EAAO,GAAA,KAAQ;AAAE,QAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,MAAO,CAAC,CAAA;AACvD,MAAA,MAAA,CAAO,OAAA,CAAQ,aAAa,EAAC,EAAG,SAAS,KAAA,EAAO,MAAA,CAAO,SAAS,QAAQ,CAAA;AACxE,MAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,IAChB,CAAA;AAEA,IAAA,WAAA,EAAY;AACZ,IAAA,MAAA,CAAO,gBAAA,CAAiB,YAAY,WAAW,CAAA;AAAA,EACjD,CAAC,CAAA;AACH;AAEO,IAAM,gBAAN,MAA6C;AAAA,EAA7C,WAAA,GAAA;AACL,IAAA,IAAA,CAAS,IAAA,GAAA,QAAA;AAAA,EAAA;AAAA,EAET,MAAM,WAAA,GAAgC;AACpC,IAAA,OAAO,OAAO,MAAA,KAAW,WAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,OAAA,GAA0C;AAC9C,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,qBAAqB,CAAA;AACzC,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,QAAA,EAAU,YAAY,CAAA;AAC3C,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,UAAA,EAAY,QAAQ,CAAA;AACzC,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,SAAA,EAAW,SAAS,CAAA;AACzC,IAAA,GAAA,CAAI,aAAa,GAAA,CAAI,UAAA,EAAY,GAAG,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,gBAAA,CAAkB,CAAA;AAC5E,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,QAAA,EAAU,MAAA,CAAO,SAAS,MAAM,CAAA;AAErD,IAAA,eAAA,CAAgB,GAAA,CAAI,UAAU,CAAA;AAC9B,IAAA,MAAM,MAAA,GAAS,MAAM,kBAAA,EAAmB;AAExC,IAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AAClB,MAAA,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAAA,IAC9C;AAEA,IAAA,OAAO,EAAE,OAAA,EAAS,MAAA,CAAO,MAAA,EAAQ,SAAA,EAAW,OAAO,MAAA,EAAO;AAAA,EAC5D;AAAA,EAEA,MAAM,UAAA,GAA4B;AAAA,EAAC;AAAA,EAEnC,MAAM,YAAA,GAAuC;AAC3C,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,MAAM,UAAA,GAA8B;AAClC,IAAA,MAAM,IAAI,MAAM,gCAAgC,CAAA;AAAA,EAClD;AAAA,EAEA,MAAM,eAAA,CAAgB,GAAA,EAAa,QAAA,EAAqE;AACtG,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,qBAAqB,CAAA;AACzC,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,QAAA,EAAU,IAAI,CAAA;AACnC,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA;AAC/B,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,UAAA,EAAY,QAAQ,CAAA;AACzC,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,SAAA,EAAW,SAAS,CAAA;AACzC,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,UAAA,EAAY,MAAA,CAAO,SAAS,IAAI,CAAA;AACrD,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,QAAA,EAAU,MAAA,CAAO,SAAS,MAAM,CAAA;AAErD,IAAA,MAAA,CAAO,QAAA,CAAS,IAAA,GAAO,GAAA,CAAI,QAAA,EAAS;AACpC,IAAA,MAAM,MAAA,GAAS,MAAM,mBAAA,EAAoB;AAEzC,IAAA,IAAI,CAAC,MAAA,CAAO,mBAAA,EAAqB,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAC1E,IAAA,OAAO,EAAE,WAAA,EAAa,MAAA,CAAO,mBAAA,EAAoB;AAAA,EACnD;AAAA,EAEA,MAAM,aAAA,CAAc,QAAA,EAAkB,QAAA,EAAiE;AACrG,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,qBAAqB,CAAA;AACzC,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,QAAA,EAAU,iBAAiB,CAAA;AAChD,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,KAAA,EAAO,QAAQ,CAAA;AACpC,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,UAAA,EAAY,QAAQ,CAAA;AACzC,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,SAAA,EAAW,SAAS,CAAA;AACzC,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,UAAA,EAAY,MAAA,CAAO,SAAS,IAAI,CAAA;AACrD,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,QAAA,EAAU,MAAA,CAAO,SAAS,MAAM,CAAA;AAErD,IAAA,MAAA,CAAO,QAAA,CAAS,IAAA,GAAO,GAAA,CAAI,QAAA,EAAS;AACpC,IAAA,MAAM,MAAA,GAAS,MAAM,mBAAA,EAAoB;AAEzC,IAAA,IAAI,CAAC,MAAA,CAAO,UAAA,EAAY,MAAM,IAAI,MAAM,oCAAoC,CAAA;AAC5E,IAAA,OAAO,EAAE,eAAA,EAAiB,MAAA,CAAO,UAAA,EAAW;AAAA,EAC9C;AACF;;;ACxHO,IAAM,WAAA,GAAc,gBAAA;AAEpB,SAAS,eAAe,KAAA,EAAyD;AACtF,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,EAAM;AAC/C,IAAA,OAAA,CAAQ,KAAK,sEAAiE,CAAA;AAC9E,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,MAAM,CAAA,GAAI,KAAA;AAGV,EAAA,IAAI,OAAO,EAAE,iBAAiB,CAAA,KAAM,YAAY,CAAA,CAAE,iBAAiB,MAAM,EAAA,EAAI;AAC3E,IAAA,OAAA,CAAQ,KAAK,gFAA2E,CAAA;AACxF,IAAA,OAAO,KAAA;AAAA,EACT;AAGA,EAAA,IAAI,CAAA,CAAE,QAAQ,CAAA,KAAM,IAAA,IAAQ,OAAO,CAAA,CAAE,QAAQ,MAAM,QAAA,EAAU;AAC3D,IAAA,OAAA,CAAQ,IAAA,CAAK,mFAAA,EAAgF,OAAO,CAAA,CAAE,QAAQ,CAAC,CAAA;AAC/G,IAAA,OAAO,KAAA;AAAA,EACT;AAGA,EAAA,IAAI,OAAO,CAAA,CAAE,QAAQ,CAAA,KAAM,QAAA,EAAU;AACnC,IAAA,OAAA,CAAQ,IAAA,CAAK,2EAAA,EAAwE,OAAO,CAAA,CAAE,QAAQ,CAAC,CAAA;AACvG,IAAA,OAAO,KAAA;AAAA,EACT;AAGA,EAAA,MAAM,KAAA,GAAQ,EAAE,OAAO,CAAA;AACvB,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,EAAM;AAC/C,IAAA,OAAA,CAAQ,KAAK,8EAAyE,CAAA;AACtF,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,CAAA,GAAI,KAAA;AACV,EAAA,IAAI,OAAO,EAAE,aAAa,CAAA,KAAM,YAAY,CAAA,CAAE,aAAa,MAAM,EAAA,EAAI;AACnE,IAAA,OAAA,CAAQ,KAAK,kFAA6E,CAAA;AAC1F,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,EAAE,cAAc,CAAA,KAAM,YAAY,CAAA,CAAE,cAAc,MAAM,EAAA,EAAI;AACrE,IAAA,OAAA,CAAQ,KAAK,mFAA8E,CAAA;AAC3F,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,CAAA,CAAE,WAAW,CAAA,KAAM,QAAA,IAAY,CAAC,MAAA,CAAO,QAAA,CAAS,CAAA,CAAE,WAAW,CAAC,CAAA,EAAG;AAC1E,IAAA,OAAA,CAAQ,KAAK,uFAAkF,CAAA;AAC/F,IAAA,OAAO,KAAA;AAAA,EACT;AAGA,EAAA,MAAM,IAAA,GAAO,EAAE,MAAM,CAAA;AACrB,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,IAAA,EAAM;AAC7C,IAAA,OAAA,CAAQ,KAAK,6EAAwE,CAAA;AACrF,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,CAAA,GAAI,IAAA;AACV,EAAA,IAAI,CAAA,CAAE,IAAI,CAAA,KAAM,MAAA,IAAa,OAAO,CAAA,CAAE,IAAI,MAAM,QAAA,EAAU;AACxD,IAAA,OAAA,CAAQ,IAAA,CAAK,uFAAA,EAAoF,OAAO,CAAA,CAAE,IAAI,CAAC,CAAA;AAC/G,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,CAAA,CAAE,OAAO,CAAA,KAAM,SAAA,EAAW;AACnC,IAAA,OAAA,CAAQ,IAAA,CAAK,gFAAA,EAA6E,OAAO,CAAA,CAAE,OAAO,CAAC,CAAA;AAC3G,IAAA,OAAO,KAAA;AAAA,EACT;AAGA,EAAA,MAAM,MAAA,GAAS,EAAE,QAAQ,CAAA;AACzB,EAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,KAAW,IAAA,EAAM;AACjD,IAAA,OAAA,CAAQ,KAAK,+EAA0E,CAAA;AACvF,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,CAAA,GAAI,MAAA;AACV,EAAA,IAAI,CAAA,CAAE,WAAW,CAAA,KAAM,IAAA,IAAQ,OAAO,CAAA,CAAE,WAAW,MAAM,QAAA,EAAU;AACjE,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN,6FAAA;AAAA,MACA,OAAO,EAAE,WAAW;AAAA,KACtB;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,CAAA,CAAE,iBAAiB,CAAA,KAAM,MAAA,IAAa,OAAO,CAAA,CAAE,iBAAiB,MAAM,SAAA,EAAW;AACnF,IAAA,OAAA,CAAQ,KAAK,iGAA4F,CAAA;AACzG,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,CAAA,CAAE,WAAW,CAAA,KAAM,MAAA,KAAc,OAAO,CAAA,CAAE,WAAW,CAAA,KAAM,QAAA,IAAY,CAAC,MAAA,CAAO,QAAA,CAAS,CAAA,CAAE,WAAW,CAAC,CAAA,CAAA,EAAI;AAC5G,IAAA,OAAA,CAAQ,KAAK,mGAA8F,CAAA;AAC3G,IAAA,OAAO,KAAA;AAAA,EACT;AAGA,EAAA,MAAM,IAAA,GAAO,EAAE,MAAM,CAAA;AACrB,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,IAAA,EAAM;AAC7C,IAAA,OAAA,CAAQ,KAAK,6EAAwE,CAAA;AACrF,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,CAAA,GAAI,IAAA;AAEV,EAAA,KAAA,MAAW,SAAS,CAAC,MAAA,EAAQ,YAAA,EAAc,WAAA,EAAa,QAAQ,CAAA,EAAY;AAC1E,IAAA,IAAI,OAAO,CAAA,CAAE,KAAK,CAAA,KAAM,QAAA,EAAU;AAChC,MAAA,OAAA,CAAQ,KAAK,CAAA,mDAAA,EAAiD,KAAK,yBAAyB,OAAO,CAAA,CAAE,KAAK,CAAC,CAAA;AAC3G,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAGA,EAAA,MAAM,SAAA,GAAY,EAAE,WAAW,CAAA;AAC/B,EAAA,IAAI,OAAO,SAAA,KAAc,QAAA,IAAY,SAAA,KAAc,IAAA,EAAM;AACvD,IAAA,OAAA,CAAQ,KAAK,uFAAkF,CAAA;AAC/F,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,CAAA,GAAI,SAAA;AAEV,EAAA,MAAM,kBAAA,GAAqB,EAAE,KAAA,EAAO,SAAA,EAAW,QAAQ,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAQ,SAAA,EAAU;AAE7F,EAAA,KAAA,MAAW,CAAC,KAAA,EAAO,UAAU,KAAK,MAAA,CAAO,OAAA,CAAQ,kBAAkB,CAAA,EAAkD;AACnH,IAAA,MAAM,CAAA,GAAI,EAAE,KAAK,CAAA;AACjB,IAAA,IAAI,MAAM,IAAA,EAAM;AAChB,IAAA,IAAI,OAAO,MAAM,QAAA,EAAU;AACzB,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,6DAAA,EAA2D,KAAK,CAAA,6BAAA,CAAA,EAAiC,OAAO,CAAC,CAAA;AACtH,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,MAAM,IAAA,GAAO,CAAA;AACb,IAAA,IAAI,OAAO,KAAK,UAAU,CAAA,KAAM,YAAY,IAAA,CAAK,UAAU,MAAM,EAAA,EAAI;AACnE,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,6DAAA,EAA2D,KAAK,CAAA,CAAA,EAAI,UAAU,CAAA,2BAAA,CAA6B,CAAA;AACxH,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,WAAA,GAAqD;AACnE,EAAA,MAAM,GAAA,GAAM,YAAA,CAAa,OAAA,CAAQ,WAAW,CAAA;AAC5C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAE9B,IAAA,IAAI,CAAC,cAAA,CAAe,OAAO,CAAA,EAAG;AAC5B,MAAA,YAAA,CAAa,WAAW,WAAW,CAAA;AACnC,MAAA,OAAA,CAAQ,KAAK,0EAAqE,CAAA;AAClF,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,IAAI,QAAQ,KAAA,CAAM,SAAA,GAAY,GAAA,GAAO,IAAA,CAAK,KAAI,EAAG;AAC/C,MAAA,YAAA,CAAa,WAAW,WAAW,CAAA;AACnC,MAAA,OAAA,CAAQ,KAAK,0EAAqE,CAAA;AAClF,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,OAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,+DAA+D,KAAK,CAAA;AAClF,IAAA,YAAA,CAAa,WAAW,WAAW,CAAA;AACnC,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAEO,SAAS,aAAa,OAAA,EAA+C;AAC1E,EAAA,YAAA,CAAa,OAAA,CAAQ,WAAA,EAAa,IAAA,CAAK,SAAA,CAAU,OAAO,CAAC,CAAA;AACzD,EAAA,OAAA,CAAQ,KAAK,mDAAmD,CAAA;AAClE;AAEO,SAAS,aAAA,GAAsB;AACpC,EAAA,YAAA,CAAa,WAAW,WAAW,CAAA;AACnC,EAAA,OAAA,CAAQ,KAAK,qDAAqD,CAAA;AACpE;;;ACtKA,SAAS,cAAA,CAAe,IAAY,MAAA,EAAoC;AACtE,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,IAAA,MAAM,CAAA,GAAI,UAAA,CAAW,OAAA,EAAS,EAAE,CAAA;AAChC,IAAA,MAAA,CAAO,gBAAA;AAAA,MACL,OAAA;AAAA,MACA,MAAM;AACJ,QAAA,YAAA,CAAa,CAAC,CAAA;AACd,QAAA,MAAA,CAAO,IAAI,YAAA,CAAa,SAAA,EAAW,YAAY,CAAC,CAAA;AAAA,MAClD,CAAA;AAAA,MACA,EAAE,MAAM,IAAA;AAAK,KACf;AAAA,EACF,CAAC,CAAA;AACH;AAEA,eAAsB,iBACpB,GAAA,EACA,eAAA,EACA,KAAA,EACA,YAAA,GAAe,KACf,MAAA,EACkC;AAClC,EAAA,OAAO,IAAA,EAAM;AACX,IAAA,MAAA,EAAQ,cAAA,EAAe;AAEvB,IAAA,IAAI,IAAA,EAAM,KAAA;AACV,IAAA,IAAI;AACF,MAAA,CAAC,EAAE,IAAA,EAAM,KAAA,KAAU,MAAM,GAAA,CAAI,IAAI,wCAAA,EAA0C;AAAA,QACzE,MAAA,EAAQ,EAAE,IAAA,EAAM,EAAE,iBAAgB,EAAE;AAAA,QACpC,OAAA,EAAS,QAAA;AAAA,QACT,QAAQ,MAAA,IAAU;AAAA,OACnB,CAAA;AAAA,IACH,SAAS,CAAA,EAAG;AACV,MAAA,IAAI,CAAA,YAAa,KAAA,IAAS,CAAA,CAAE,IAAA,KAAS,cAAc,MAAM,CAAA;AACzD,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAEA,IAAA,IAAI,KAAA,IAAS,CAAC,IAAA,EAAM;AAClB,MAAA,IAAI,MAAA,EAAQ,MAAM,cAAA,CAAe,YAAA,EAAc,MAAM,CAAA;AAAA,WAChD,MAAM,IAAI,OAAA,CAAQ,CAAC,MAAM,UAAA,CAAW,CAAA,EAAG,YAAY,CAAC,CAAA;AACzD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GAAS,KAAK,SAAA,EAAU;AAC9B,IAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,IAAA,IAAI,UAAA,GAAa,KAAA;AAEjB,IAAA,IAAI;AACF,MAAA,OAAO,IAAA,EAAM;AACX,QAAA,MAAA,EAAQ,cAAA,EAAe;AACvB,QAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,OAAO,IAAA,EAAK;AAC1C,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,UAAA,GAAa,IAAA;AACb,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA;AAClC,QAAA,KAAA,MAAW,WAAW,KAAA,CAAM,KAAA,CAAM,MAAM,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,EAAG;AACzD,UAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAA,CAAW,OAAO,CAAC,CAAA;AACtE,UAAA,IAAI,CAAC,QAAA,EAAU;AACf,UAAA,IAAI;AACF,YAAA,MAAM,MAAA,GAAS,KAAK,KAAA,CAAM,QAAA,CAAS,MAAM,OAAA,CAAQ,MAAM,CAAA,CAAE,IAAA,EAAM,CAAA;AAC/D,YAAA,IAAI,KAAA,CAAM,MAAM,CAAA,EAAG;AACjB,cAAA,OAAO,MAAA;AAAA,YACT;AAAA,UACF,CAAA,CAAA,MAAQ;AAAA,UAER;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,CAAA,EAAG;AACV,MAAA,IAAI,CAAA,YAAa,KAAA,IAAS,CAAA,CAAE,IAAA,KAAS,cAAc,MAAM,CAAA;AACzD,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB,CAAA,SAAE;AACA,MAAA,MAAA,CAAO,WAAA,EAAY;AAAA,IACrB;AAGA,IAAA,MAAM,KAAA,GAAQ,aAAa,YAAA,GAAe,CAAA;AAC1C,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,IAAI,MAAA,EAAQ,MAAM,cAAA,CAAe,KAAA,EAAO,MAAM,CAAA;AAAA,WACzC,MAAM,IAAI,OAAA,CAAQ,CAAC,MAAM,UAAA,CAAW,CAAA,EAAG,KAAK,CAAC,CAAA;AAAA,IACpD;AAAA,EACF;AACF;;;AC7EA,SAAS,UAAA,CAAc,SAAqB,MAAA,EAAiC;AAC3E,EAAA,OAAO,QAAQ,IAAA,CAAK;AAAA,IAClB,OAAA;AAAA,IACA,IAAI,OAAA,CAAe,CAAC,CAAA,EAAG,MAAA,KAAW;AAChC,MAAA,IAAI,OAAO,OAAA,EAAS;AAClB,QAAA,MAAA,CAAO,IAAI,YAAA,CAAa,SAAA,EAAW,YAAY,CAAC,CAAA;AAChD,QAAA;AAAA,MACF;AACA,MAAA,MAAA,CAAO,gBAAA,CAAiB,OAAA,EAAS,MAAM,MAAA,CAAO,IAAI,YAAA,CAAa,SAAA,EAAW,YAAY,CAAC,CAAA,EAAG,EAAE,IAAA,EAAM,MAAM,CAAA;AAAA,IAC1G,CAAC;AAAA,GACF,CAAA;AACH;AAkBA,eAAsB,KAAA,CAAM,SAA6B,IAAA,EAAgC;AACvF,EAAA,MAAM,EAAE,KAAK,QAAA,EAAU,MAAA,EAAQ,QAAQ,SAAA,EAAW,YAAA,EAAc,cAAa,GAAI,IAAA;AAEjF,EAAA,SAAA,CAAU,kBAAkB,eAAA,CAAgB,cAAA,CAAe,oBAAA,EAAsB,MAAA,EAAQ,YAAY,OAAO,CAAA;AAC5G,EAAA,MAAM,wBAAwB,MAAM,GAAA,CAAI,KAAK,eAAA,EAAiB,EAAE,QAAQ,CAAA;AAExE,EAAA,IACE,CAAC,YAAA;AAAA,IACC,cAAA,CAAe,cAAA;AAAA,IACf,qBAAA;AAAA,IACA,EAAE,IAAA,EAAM,eAAA,CAAgB,cAAA,CAAe,sBAAA,EAAuB;AAAA,IAC9D,gBAAgB,cAAA,CAAe,oBAAA;AAAA,IAC/B;AAAA,GACF,EACA;AACA,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,eAAA,GAAkB,qBAAA,CAAsB,IAAA,CAAM,OAAA,CAAQ,eAAA;AAE5D,EAAA,QAAQ,QAAQ,QAAA;AAAU,IACxB,KAAK,OAAA,EAAS;AACZ,MAAA,SAAA,CAAU,kBAAkB,eAAA,CAAgB,cAAA,CAAe,gBAAA,EAAkB,MAAA,EAAQ,YAAY,OAAA,EAAS;AAAA,QACxG,OAAO,OAAA,CAAQ;AAAA,OAChB,CAAA;AACD,MAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,IAAA,CAAK,CAAA,WAAA,CAAA,EAAe;AAAA,QAC7C,IAAA,EAAM,EAAE,eAAA,EAAiB,KAAA,EAAO,QAAQ,KAAA,EAAM;AAAA,QAC9C;AAAA,OACD,CAAA;AAED,MAAA,IACE,CAAC,YAAA;AAAA,QACC,cAAA,CAAe,cAAA;AAAA,QACf,QAAA;AAAA,QACA,EAAE,IAAA,EAAM,eAAA,CAAgB,cAAA,CAAe,wBAAA,EAAyB;AAAA,QAChE,gBAAgB,cAAA,CAAe,sBAAA;AAAA,QAC/B;AAAA,OACF,EACA;AACA,QAAA;AAAA,MACF;AACA,MAAA;AAAA,IACF;AAAA,IACA,KAAK,QAAA;AAAA,IACL,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,CAAA,EAAG,QAAQ,CAAA,MAAA,EAAS,OAAA,CAAQ,QAAQ,CAAA,CAAE,CAAA;AAC1D,MAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,SAAA,EAAW,MAAM,CAAA;AACtC,MAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,mBAAA,EAAqB,eAAe,CAAA;AACzD,MAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,cAAA,EAAgB,MAAA,CAAO,SAAS,MAAM,CAAA;AAC3D,MAAA,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,QAAA,EAAS,EAAG,QAAQ,CAAA;AACpC,MAAA;AAAA,IACF;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,IAAI;AACF,QAAA,SAAA,CAAU,kBAAkB,eAAA,CAAgB,cAAA,CAAe,iBAAA,EAAmB,MAAA,EAAQ,YAAY,OAAA,EAAS;AAAA,UACzG,SAAS,OAAA,CAAQ;AAAA,SAClB,CAAA;AACD,QAAA,MAAM,UAAU,OAAA,CAAQ,IAAA,KAAA,WAAA,mBAAgC,IAAI,gBAAA,EAAiB,GAAI,IAAI,aAAA,EAAc;AAEnG,QAAA,MAAM,YAAY,MAAM,UAAA,CAAW,OAAA,CAAQ,WAAA,IAAe,MAAM,CAAA;AAChE,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,SAAA;AAAA,YACE,gBAAA;AAAA,YACA,QAAQ,IAAA,KAAA,WAAA,mBACJ,eAAA,CAAgB,cAAA,CAAe,mCAAA,GAC/B,gBAAgB,cAAA,CAAe,gCAAA;AAAA,YACnC,MAAA;AAAA,YACA,WAAA,CAAY,OAAA;AAAA,YACZ;AAAA,cACE,MAAM,OAAA,CAAQ;AAAA;AAChB,WACF;AAAA,QACF;AAEA,QAAA,MAAM,EAAE,WAAU,GAAI,MAAM,WAAW,OAAA,CAAQ,OAAA,IAAW,MAAM,CAAA;AAChE,QAAA,SAAA,CAAU,kBAAkB,eAAA,CAAgB,cAAA,CAAe,qBAAA,EAAuB,MAAA,EAAQ,YAAY,OAAA,EAAS;AAAA,UAC7G,SAAS,OAAA,CAAQ,IAAA;AAAA,UACjB;AAAA,SACD,CAAA;AACD,QAAA,SAAA,CAAU,kBAAkB,eAAA,CAAgB,cAAA,CAAe,uBAAA,EAAyB,MAAA,EAAQ,YAAY,OAAA,EAAS;AAAA,UAC/G,SAAS,OAAA,CAAQ,IAAA;AAAA,UACjB;AAAA,SACD,CAAA;AACD,QAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,IAAA,CAAK,CAAA,YAAA,CAAA,EAAgB;AAAA,UAC9C,IAAA,EAAM,EAAE,eAAA,EAAiB,aAAA,EAAe,SAAA,EAAU;AAAA,UAClD;AAAA,SACD,CAAA;AAED,QAAA,IACE,CAAC,YAAA;AAAA,UACC,cAAA,CAAe,cAAA;AAAA,UACf,QAAA;AAAA,UACA,EAAE,IAAA,EAAM,eAAA,CAAgB,cAAA,CAAe,+BAAA,EAAgC;AAAA,UACvE,gBAAgB,cAAA,CAAe,6BAAA;AAAA,UAC/B;AAAA,SACF,EACA;AACA,UAAA;AAAA,QACF;AAAA,MACF,SAAS/C,MAAAA,EAAO;AACd,QAAA,SAAA,CAAU,kBAAkB,eAAA,CAAgB,cAAA,CAAe,iBAAA,EAAmB,OAAA,EAAS,YAAY,KAAA,EAAO;AAAA,UACxG;AAAA,SACD,CAAA;AAAA,MACH;AACA,MAAA;AAAA,IACF;AAAA;AAGF,EAAA,SAAA,CAAU,kBAAkB,eAAA,CAAgB,cAAA,CAAe,iBAAA,EAAmB,MAAA,EAAQ,YAAY,OAAA,EAAS;AAAA,IACzG;AAAA,GACD,CAAA;AACD,EAAA,MAAM,gBAAA;AAAA,IACJ,GAAA;AAAA,IACA,eAAA;AAAA,IACA,CAACT,KAAAA,KAAS;AACR,MAAA,MAAM,SAASA,KAAAA,EAAM,MAAA;AACrB,MAAA,IAAI,WAAW,OAAA,EAAS;AACtB,QAAA,SAAA,CAAU,kBAAkB,eAAA,CAAgB,cAAA,CAAe,iBAAA,EAAmB,MAAA,EAAQ,YAAY,OAAO,CAAA;AACzG,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,SAAA;AAAA,QACE,gBAAA;AAAA,QACC,gBAAgB,cAAA,CAAe,iBAAA,IAAqB,MAAA,GAAS,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,GAAK,EAAA,CAAA;AAAA,QAC7E,MAAA;AAAA,QACA,WAAA,CAAY,OAAA;AAAA,QACZA;AAAA,OACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAAA,IACA,GAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,SAAA,CAAU,kBAAkB,eAAA,CAAgB,cAAA,CAAe,mBAAA,EAAqB,MAAA,EAAQ,YAAY,OAAO,CAAA;AAC3G,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,KAAU,MAAM,GAAA,CAAI,KAAK,CAAA,WAAA,CAAA,EAAe;AAAA,IACpD,IAAA,EAAM,EAAE,eAAA,EAAgB;AAAA,IACxB;AAAA,GACD,CAAA;AAED,EAAA,IAAI,MAAM,IAAA,KAAS,mBAAA,IAAuB,cAAA,CAAe,IAAA,EAAM,OAAO,CAAA,EAAG;AACvE,IAAA,SAAA,CAAU,kBAAkB,eAAA,CAAgB,cAAA,CAAe,qBAAA,EAAuB,MAAA,EAAQ,YAAY,OAAO,CAAA;AAC7G,IAAA,YAAA,CAAa,KAAK,OAAO,CAAA;AAAA,EAC3B,CAAA,MAAO;AACL,IAAA,SAAA,CAAU,kBAAkB,eAAA,CAAgB,cAAA,CAAe,mBAAA,EAAqB,OAAA,EAAS,YAAY,KAAA,EAAO;AAAA,MAC1G,KAAA;AAAA,MACA;AAAA,KACD,CAAA;AACD,IAAA,YAAA,EAAa;AAAA,EACf;AACF;;;AC1KA,IAAM,SAAA,GAAY,OAAO,MAAA,KAAW,WAAA,IAAe,OAAO,YAAA,KAAiB,WAAA;AAE3E,SAAS,eAAe,MAAA,EAAsB;AAC5C,EAAA,OAAA,CAAQ,IAAA;AAAA,IACN,kBAAkB,MAAM,CAAA,kGAAA;AAAA,GAC1B;AACF;AAEO,IAAM,eAAN,MAAmB;AAAA,EAcxB,YAAY,MAAA,EAA4B;AARxC,IAAA,IAAA,CAAQ,QAAA,GAAkD,IAAA;AAC1D,IAAA,IAAA,CAAQ,eAAA,uBAAsB,GAAA,EAAqC;AACnE,IAAA,IAAA,CAAQ,MAAA,GAAsB;AAAA,MAC5B,SAAS,EAAC;AAAA,MACV,gBAAgB,EAAC;AAAA,MACjB,aAAa;AAAC,KAChB;AAGE,IAAA,IAAA,CAAK,SAAS,MAAA,CAAO,MAAA;AACrB,IAAA,IAAA,CAAK,EAAA,GAAK,OAAO,UAAA,EAAW;AAC5B,IAAA,IAAA,CAAK,QAAA,GAAW,CAAA,EAAG,MAAA,CAAO,OAAA,IAAW,4BAA4B,CAAA,GAAA,CAAA;AACjE,IAAA,IAAA,CAAK,IAAA,GAAO,eAAA,CAAgB,IAAA,CAAK,QAAQ,CAAA;AACzC,IAAA,IAAA,CAAK,KAAK,GAAA,CAAI;AAAA,MACZ,SAAA,CAAU,EAAE,OAAA,EAAQ,EAAyB;AAC3C,QAAA,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,kBAAA,EAAoB,MAAA,CAAO,MAAM,CAAA;AACrD,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,KACD,CAAA;AAED,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,cAAA,CAAe,aAAa,CAAA;AAC5B,MAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,4CAAA,EAA0C,IAAA,CAAK,QAAQ,CAAA,CAAE,CAAA;AAEtE,IAAA,IAAA,CAAK,UAAA,EAAW;AAEhB,IAAA,MAAA,CAAO,gBAAA,CAAiB,SAAA,EAAW,CAAC,CAAA,KAAoB;AACtD,MAAA,IAAI,CAAA,CAAE,QAAQ,WAAA,EAAa;AACzB,QAAA,MAAM,OAAO,IAAA,CAAK,QAAA;AAClB,QAAA,OAAA,CAAQ,IAAA,CAAK,+CAA0C,IAAA,CAAK,QAAA,GAAW,YAAY,IAAA,GAAO,SAAA,GAAY,WAAW,CAAA,CAAE,CAAA;AACnH,QAAA,IAAA,CAAK,UAAA,EAAW;AAAA,MAClB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,IAAA,CAAK,WAAW,SAAA,EAAW,eAAA,CAAgB,QAAQ,eAAA,EAAiB,MAAA,EAAQ,YAAY,OAAA,EAAS;AAAA,MAC/F,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AAAA,EAEA,eAAA,GAA2B;AACzB,IAAA,OAAO,CAAC,CAAC,IAAA,CAAK,QAAA,EAAU,MAAA,EAAQ,SAAA;AAAA,EAClC;AAAA,EAEA,QAAA,GAAW;AACT,IAAA,OAAO,EAAE,OAAA,EAAS,IAAA,CAAK,QAAA,EAAS;AAAA,EAClC;AAAA,EAEA,MAAA,GAA0B;AACxB,IAAA,OAAO,IAAA,CAAK,IAAA;AAAA,EACd;AAAA,EAEA,MAAM,OAAA,EAA0D;AAC9D,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,cAAA,CAAe,OAAO,CAAA;AACtB,MAAA,OAAO;AAAA,QACL,aAAa,MAAM;AAAA,QAAC;AAAA,OACtB;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAa,IAAI,eAAA,EAAgB;AAEvC,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,8CAAA,EAA4C,OAAA,CAAQ,QAAQ,CAAA,CAAE,CAAA;AAE3E,IAAA,KAAA,CAAQ,OAAA,EAAS;AAAA,MACf,KAAK,IAAA,CAAK,IAAA;AAAA,MACV,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,QAAQ,IAAA,CAAK,MAAA;AAAA,MACb,QAAQ,UAAA,CAAW,MAAA;AAAA,MACnB,SAAA,EAAW,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA;AAAA,MACpC,YAAA,EAAc,IAAA,CAAK,aAAA,CAAc,IAAA,CAAK,IAAI,CAAA;AAAA,MAC1C,YAAA,EAAc,IAAA,CAAK,aAAA,CAAc,IAAA,CAAK,IAAI;AAAA,KAC3C,CAAA,CAAE,KAAA,CAAM,CAAC,KAAA,KAAmB;AAC3B,MAAA,IAAI,KAAA,YAAiB,KAAA,IAAS,KAAA,CAAM,IAAA,KAAS,YAAA,EAAc;AACzD,QAAA,OAAA,CAAQ,KAAK,sCAAsC,CAAA;AACnD,QAAA,IAAA,CAAK,WAAW,gBAAA,EAAkB,eAAA,CAAgB,eAAe,aAAA,EAAe,OAAA,EAAS,YAAY,KAAK,CAAA;AAC1G,QAAA;AAAA,MACF;AACA,MAAA,OAAA,CAAQ,KAAA,CAAM,qDAAqD,KAAK,CAAA;AACxE,MAAA,IAAA,CAAK,WAAW,gBAAA,EAAkB,eAAA,CAAgB,eAAe,aAAA,EAAe,OAAA,EAAS,YAAY,KAAA,EAAO;AAAA,QAC1G;AAAA,OACD,CAAA;AAAA,IACH,CAAC,CAAA;AAED,IAAA,OAAO,EAAE,WAAA,EAAa,MAAM,UAAA,CAAW,OAAM,EAAE;AAAA,EACjD;AAAA,EAEA,cAAc,EAAA,EAAmD;AAC/D,IAAA,IAAA,CAAK,eAAA,CAAgB,IAAI,EAAE,CAAA;AAC3B,IAAA,KAAA,MAAW,GAAG,UAAU,CAAA,IAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,EAAG;AACxD,MAAA,IAAI,UAAA,CAAW,UAAU,CAAA,EAAG;AAC1B,QAAA,EAAA,CAAG,UAAA,CAAW,EAAA,CAAG,EAAE,CAAE,CAAA;AAAA,MACvB;AAAA,IACF;AACA,IAAA,OAAO,MAAM,IAAA,CAAK,eAAA,CAAgB,MAAA,CAAO,EAAE,CAAA;AAAA,EAC7C;AAAA,EAEA,MAAM,eAAA,CAAgB,eAAA,EAAyB,IAAA,EAA6B;AAC1E,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,cAAA,CAAe,iBAAiB,CAAA;AAChC,MAAA;AAAA,IACF;AACA,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,OAAO,IAAA,EAAK,GAAI,MAAM,IAAA,CAAK,IAAA,CAAK,KAAK,yBAAA,EAA2B;AAAA,QACtE,IAAA,EAAM,EAAE,eAAA,EAAiB,IAAA;AAAK,OAC/B,CAAA;AACD,MAAA,IAAI,KAAA,IAAS,CAAC,IAAA,IAAQ,IAAA,EAAM,SAAS,yBAAA,EAA2B;AAC9D,QAAA,IAAA,CAAK,WAAW,gBAAA,EAAkB,eAAA,CAAgB,eAAe,qBAAA,EAAuB,OAAA,EAAS,YAAY,KAAA,EAAO;AAAA,UAClH,IAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA;AAAA,MACF;AAEA,MAAA,IAAA,CAAK,WAAW,gBAAA,EAAkB,eAAA,CAAgB,eAAe,uBAAA,EAAyB,MAAA,EAAQ,YAAY,OAAA,EAAS;AAAA,QACrH,IAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,UAAA;AAAA,QACH,gBAAA;AAAA,QACA,gBAAgB,cAAA,CAAe,gCAAA;AAAA,QAC/B,OAAA;AAAA,QACA,WAAA,CAAY;AAAA,OACd;AAAA,IACF;AAAA,EACF;AAAA,EAEA,UAAA,GAAa;AACX,IAAA,OAAQ,IAAA,CAAK,OAAO,OAAA,CAAQ,EAAA,CAAG,EAAE,CAAA,EAAG,IAAA,EAA8B,OAAA,KAAY,QAAA,GAAW,QAAA,GAAW,SAAA;AAAA,EACtG;AAAA,EAEA,MAAM,OAAA,CACJ,SAAA,EACA,MAAA,EACA,OAAA,EACe;AACf,IAAA,IAAI,CAAC,IAAA,CAAK,QAAA,EAAU,MAAA,EAAQ,SAAA,EAAW;AACrC,MAAA,IAAA,CAAK,WAAW,aAAA,EAAe,eAAA,CAAgB,YAAY,iCAAA,EAAmC,OAAA,EAAS,YAAY,KAAK,CAAA;AACxH,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,IAAA,GAAoB;AAAA,MACxB,OAAA,EAAS,KAAK,UAAA,EAAW;AAAA,MACzB,SAAA,EAAW,IAAA,CAAK,QAAA,EAAU,MAAA,EAAQ,SAAA;AAAA,MAClC,SAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA,EAAS,WAAW;AAAC,KACvB;AAEA,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,WAAW,aAAA,EAAe,eAAA,CAAgB,YAAY,uBAAA,EAAyB,MAAA,EAAQ,YAAY,OAAO,CAAA;AAC/G,MAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,IAAA,CAAK,KAAK,WAAA,EAAa,EAAE,MAAM,CAAA;AAC3D,MAAA,IACE,CAAC,YAAA;AAAA,QACC,cAAA,CAAe,WAAA;AAAA,QACf,QAAA;AAAA,QACA,EAAE,IAAA,EAAM,eAAA,CAAgB,YAAY,yBAAA,EAA2B,MAAA,EAAQ,YAAY,OAAA,EAAQ;AAAA,QAC3F,gBAAgB,WAAA,CAAY,uBAAA;AAAA,QAC5B,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,IAAI;AAAA,OAC3B,EACA;AACA,QAAA;AAAA,MACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,WAAW,aAAA,EAAe,eAAA,CAAgB,YAAY,uBAAA,EAAyB,OAAA,EAAS,YAAY,KAAA,EAAO;AAAA,QAC9G,IAAA;AAAA,QACA;AAAA,OACD,CAAA;AACD,MAAA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,SAAA,EAAkC;AAC/C,IAAA,MAAM,IAAA,GAA0B;AAAA,MAC9B,OAAA,EAAS,KAAK,UAAA,EAAW;AAAA,MACzB;AAAA,KACF;AAEA,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,WAAW,aAAA,EAAe,eAAA,CAAgB,YAAY,2BAAA,EAA6B,MAAA,EAAQ,YAAY,OAAO,CAAA;AACnH,MAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,IAAA,CAAK,KAAK,mBAAA,EAAqB,EAAE,MAAM,CAAA;AACnE,MAAA,IACE,CAAC,YAAA;AAAA,QACC,cAAA,CAAe,WAAA;AAAA,QACf,QAAA;AAAA,QACA,EAAE,IAAA,EAAM,eAAA,CAAgB,YAAY,6BAAA,EAA+B,MAAA,EAAQ,YAAY,OAAA,EAAQ;AAAA,QAC/F,gBAAgB,WAAA,CAAY,2BAAA;AAAA,QAC5B,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,IAAI;AAAA,OAC3B,EACA;AACA,QAAA;AAAA,MACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,WAAW,aAAA,EAAe,eAAA,CAAgB,YAAY,2BAAA,EAA6B,OAAA,EAAS,YAAY,KAAA,EAAO;AAAA,QAClH,IAAA;AAAA,QACA;AAAA,OACD,CAAA;AACD,MAAA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAA,GAAe;AACb,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,cAAA,CAAe,QAAQ,CAAA;AACvB,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,CAAQ,KAAK,iCAAiC,CAAA;AAC9C,IAAA,IAAA,CAAK,aAAA,EAAc;AAAA,EACrB;AAAA,EAEQ,UAAA,GAAa;AACnB,IAAA,IAAA,CAAK,WAAW,WAAA,EAAY;AAC5B,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,IAAA,CAAK,UAAA;AAAA,QACH,gBAAA;AAAA,QACA,gBAAgB,cAAA,CAAe,wBAAA;AAAA,QAC/B,MAAA;AAAA,QACA,WAAA,CAAY,OAAA;AAAA,QACZ,IAAA,CAAK;AAAA,OACP;AACA,MAAA,OAAA,CAAQ,KAAK,8CAA8C,CAAA;AAAA,IAC7D,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,WAAW,gBAAA,EAAkB,eAAA,CAAgB,eAAe,mBAAA,EAAqB,MAAA,EAAQ,YAAY,IAAI,CAAA;AAC9G,MAAA,OAAA,CAAQ,KAAK,iDAAiD,CAAA;AAAA,IAChE;AAAA,EACF;AAAA,EAEQ,cAAc,OAAA,EAA+C;AACnE,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,2CAAA,EAAyC,OAAA,CAAQ,MAAA,IAAU,WAAW,CAAA,CAAE,CAAA;AACrF,IAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAChB,IAAA,YAAA,CAAa,OAAO,CAAA;AACpB,IAAA,IAAA,CAAK,UAAA;AAAA,MACH,gBAAA;AAAA,MACA,gBAAgB,cAAA,CAAe,cAAA;AAAA,MAC/B,MAAA;AAAA,MACA,WAAA,CAAY,OAAA;AAAA,MACZ,IAAA,CAAK;AAAA,KACP;AAAA,EACF;AAAA,EAEQ,aAAA,GAAsB;AAC5B,IAAA,OAAA,CAAQ,KAAK,gCAAgC,CAAA;AAC7C,IAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,IAAA,aAAA,EAAc;AACd,IAAA,IAAA,CAAK,MAAA,GAAS;AAAA,MACZ,SAAS,EAAC;AAAA,MACV,gBAAgB,EAAC;AAAA,MACjB,aAAa;AAAC,KAChB;AACA,IAAA,IAAA,CAAK,WAAW,gBAAA,EAAkB,eAAA,CAAgB,eAAe,MAAA,EAAQ,MAAA,EAAQ,YAAY,IAAI,CAAA;AAAA,EACnG;AAAA,EAEQ,UAAA,CACN,EAAA,EACA,IAAA,EACA,KAAA,EACA,QACA,IAAA,EACM;AACN,IAAA,MAAM,UAAA,GAA+B,EAAE,GAAA,EAAK,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,EAAA,EAAI,IAAA,CAAK,GAAA,EAAI,EAAE;AAC1F,IAAA,IAAA,CAAK,MAAA,CAAO,EAAE,CAAA,CAAE,IAAA,CAAK,UAAU,CAAA;AAC/B,IAAA,OAAA,CAAQ,KAAK,EAAE,CAAA,eAAA,EAAkB,EAAE,IAAI,IAAI,CAAA,QAAA,EAAM,MAAM,CAAA,CAAE,CAAA;AACzD,IAAA,KAAA,MAAW,EAAA,IAAM,KAAK,eAAA,EAAiB;AACrC,MAAA,EAAA,CAAG,UAAU,CAAA;AAAA,IACf;AAAA,EACF;AACF;;;AC3SA,IAAM,YAAA,GAA+C;AAAA,EACnD,OAAA,EAAS,6BAAA;AAAA,EACT,OAAA,EAAS;AACX,CAAA;AAyBO,IAAM,gBAAN,MAAoB;AAAA,EAGzB,YAAY,MAAA,EAA6B;AACvC,IAAA,IAAA,CAAK,aAAa,OAAO,MAAA,KAAW,WAAW,YAAA,CAAa,MAAM,IAAI,MAAA,CAAO,UAAA;AAAA,EAC/E;AAAA,EAEA,MAAM,YAAY,SAAA,EAA+C;AAC/D,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,CAAA,EAAG,KAAK,UAAU,CAAA,UAAA,EAAa,SAAS,CAAA,CAAE,CAAA;AAEvE,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,IAAI,QAAA,CAAS,WAAW,GAAA,EAAK;AAC3B,UAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,mCAAA,EAAsC,SAAS,CAAA,CAAE,CAAA;AAC9D,UAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,WAAW,mBAAA,EAAqB,QAAA,EAAU,EAAC,EAAE;AAAA,QACxE;AACA,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,mCAAA,EAAsC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AACpE,QAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,WAAW,eAAA,EAAiB,QAAA,EAAU,EAAC,EAAE;AAAA,MACpE;AAEA,MAAA,MAAM,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAElC,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,IAAA;AAAA,QACT,QAAA,EAAU,IAAA,CAAK,QAAA,CACZ,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,UAAA,KAAe,uBAAuB,CAAA,CACtD,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,UACX,OAAO,CAAA,CAAE,UAAA,KAAe,QAAA,GAAW,KAAA,GAAS,EAAE,UAAA,IAAc,EAAA;AAAA,UAC5D,SAAS,CAAA,CAAE,OAAA;AAAA,UACX,GAAI,CAAA,CAAE,UAAA,KAAe,YAAY,EAAE,WAAA,EAAa,EAAE,YAAA;AAAa,SACjE,CAAE;AAAA,OACN;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,IAAA,CAAK,mDAAmD,KAAK,CAAA;AACrE,MAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,WAAW,eAAA,EAAiB,QAAA,EAAU,EAAC,EAAE;AAAA,IACpE;AAAA,EACF;AACF","file":"index.mjs","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"freighterApi\"] = factory();\n\telse\n\t\troot[\"freighterApi\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","export enum SERVICE_TYPES {\n CREATE_ACCOUNT = \"CREATE_ACCOUNT\",\n FUND_ACCOUNT = \"FUND_ACCOUNT\",\n ADD_ACCOUNT = \"ADD_ACCOUNT\",\n IMPORT_ACCOUNT = \"IMPORT_ACCOUNT\",\n IMPORT_HARDWARE_WALLET = \"IMPORT_HARDWARE_WALLET\",\n LOAD_ACCOUNT = \"LOAD_ACCOUNT\",\n MAKE_ACCOUNT_ACTIVE = \"MAKE_ACCOUNT_ACTIVE\",\n UPDATE_ACCOUNT_NAME = \"UPDATE_ACCOUNT_NAME\",\n GET_MNEMONIC_PHRASE = \"GET_MNEMONIC_PHRASE\",\n CONFIRM_MNEMONIC_PHRASE = \"CONFIRM_MNEMONIC_PHRASE\",\n CONFIRM_MIGRATED_MNEMONIC_PHRASE = \"CONFIRM_MIGRATED_MNEMONIC_PHRASE\",\n RECOVER_ACCOUNT = \"RECOVER_ACCOUNT\",\n CONFIRM_PASSWORD = \"CONFIRM_PASSWORD\",\n REJECT_ACCESS = \"REJECT_ACCESS\",\n GRANT_ACCESS = \"GRANT_ACCESS\",\n SIGN_TRANSACTION = \"SIGN_TRANSACTION\",\n SIGN_BLOB = \"SIGN_BLOB\",\n SIGN_AUTH_ENTRY = \"SIGN_AUTH_ENTRY\",\n HANDLE_SIGNED_HW_TRANSACTION = \"HANDLE_SIGNED_HW_TRANSACTION\",\n REJECT_TRANSACTION = \"REJECT_TRANSACTION\",\n SIGN_FREIGHTER_TRANSACTION = \"SIGN_FREIGHTER_TRANSACTION\",\n SIGN_FREIGHTER_SOROBAN_TRANSACTION = \"SIGN_FREIGHTER_SOROBAN_TRANSACTION\",\n ADD_RECENT_ADDRESS = \"ADD_RECENT_ADDRESS\",\n LOAD_RECENT_ADDRESSES = \"LOAD_RECENT_ADDRESSES\",\n SIGN_OUT = \"SIGN_OUT\",\n SHOW_BACKUP_PHRASE = \"SHOW_BACKUP_PHRASE\",\n SAVE_ALLOWLIST = \"SAVE_ALLOWLIST\",\n SAVE_SETTINGS = \"SAVE_SETTINGS\",\n LOAD_SETTINGS = \"LOAD_SETTINGS\",\n GET_CACHED_ASSET_ICON = \"GET_CACHED_ASSET_ICON\",\n CACHE_ASSET_ICON = \"CACHE_ASSET_ICON\",\n GET_CACHED_ASSET_DOMAIN = \"GET_CACHED_ASSET_DOMAIN\",\n CACHE_ASSET_DOMAIN = \"CACHE_ASSET_DOMAIN\",\n GET_BLOCKED_ACCOUNTS = \"GET_BLOCKED_ACCOUNTS\",\n GET_BLOCKED_DOMAINS = \"GET_BLOCKED_DOMAINS\",\n ADD_CUSTOM_NETWORK = \"ADD_CUSTOM_NETWORK\",\n CHANGE_NETWORK = \"CHANGE_NETWORK\",\n REMOVE_CUSTOM_NETWORK = \"REMOVE_CUSTOM_NETWORK\",\n EDIT_CUSTOM_NETWORK = \"EDIT_CUSTOM_NETWORK\",\n RESET_EXP_DATA = \"RESET_EXP_DATA\",\n ADD_TOKEN_ID = \"ADD_TOKEN_ID\",\n GET_TOKEN_IDS = \"GET_TOKEN_IDS\",\n REMOVE_TOKEN_ID = \"REMOVE_TOKEN_ID\",\n GET_MIGRATABLE_ACCOUNTS = \"GET_MIGRATABLE_ACCOUNTS\",\n GET_MIGRATED_MNEMONIC_PHRASE = \"GET_MIGRATED_MNEMONIC_PHRASE\",\n MIGRATE_ACCOUNTS = \"MIGRATE_ACCOUNTS\",\n}\n\nexport enum EXTERNAL_SERVICE_TYPES {\n REQUEST_ACCESS = \"REQUEST_ACCESS\",\n REQUEST_PUBLIC_KEY = \"REQUEST_PUBLIC_KEY\",\n SUBMIT_TRANSACTION = \"SUBMIT_TRANSACTION\",\n SUBMIT_BLOB = \"SUBMIT_BLOB\",\n SUBMIT_AUTH_ENTRY = \"SUBMIT_AUTH_ENTRY\",\n REQUEST_NETWORK = \"REQUEST_NETWORK\",\n REQUEST_NETWORK_DETAILS = \"REQUEST_NETWORK_DETAILS\",\n REQUEST_CONNECTION_STATUS = \"REQUEST_CONNECTION_STATUS\",\n REQUEST_ALLOWED_STATUS = \"REQUEST_ALLOWED_STATUS\",\n SET_ALLOWED_STATUS = \"SET_ALLOWED_STATUS\",\n REQUEST_USER_INFO = \"REQUEST_USER_INFO\",\n}\n\nexport const EXTERNAL_MSG_REQUEST = \"FREIGHTER_EXTERNAL_MSG_REQUEST\";\nexport const EXTERNAL_MSG_RESPONSE = \"FREIGHTER_EXTERNAL_MSG_RESPONSE\";\n\ndeclare const DEV_SERVER: string;\nconst _DEV_SERVER = DEV_SERVER;\nexport { _DEV_SERVER as DEV_SERVER };\n\ndeclare const DEV_EXTENSION: string;\nconst _DEV_EXTENSION = DEV_EXTENSION;\nexport { _DEV_EXTENSION as DEV_EXTENSION };\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import browser from \"webextension-polyfill\";\nimport {\n DEV_SERVER,\n EXTERNAL_MSG_RESPONSE,\n EXTERNAL_MSG_REQUEST,\n EXTERNAL_SERVICE_TYPES,\n SERVICE_TYPES,\n} from \"../../constants/services\";\nimport { Response } from \"../types\";\n\ninterface Msg {\n [key: string]: any;\n type: EXTERNAL_SERVICE_TYPES | SERVICE_TYPES;\n}\n\nexport const sendMessageToContentScript = (msg: Msg): Promise<Response> => {\n /* \n In the case of multiple calls coming in sequentially, we use this MESSAGE_ID to make sure we're responding to\n the appropriate message sender. Otherwise, we can run into race conditions where we simply resolve all \n sent messages with the first thing that comes back.\n */\n const MESSAGE_ID = Date.now() + Math.random();\n\n window.postMessage(\n { source: EXTERNAL_MSG_REQUEST, messageId: MESSAGE_ID, ...msg },\n window.location.origin,\n );\n return new Promise((resolve) => {\n let requestTimeout = 0;\n\n /* \n In the case that Freighter is not installed at all, any messages to \n background from freighter-api will hang forever and not respond in any way. \n This is especially a problem for the isConnected method, because this is \n likely to be called in a situation where Freighter isn't installed.\n To prevent this, we add a timeout to automatically resolve in the event \n Freighter doesn't respond in a timely fashion to this method.\n */\n if (\n msg.type === EXTERNAL_SERVICE_TYPES.REQUEST_CONNECTION_STATUS ||\n msg.type === EXTERNAL_SERVICE_TYPES.REQUEST_PUBLIC_KEY\n ) {\n requestTimeout = setTimeout(() => {\n resolve({\n isConnected: false,\n publicKey: \"\",\n } as Response);\n window.removeEventListener(\"message\", messageListener);\n }, 2000);\n }\n\n const messageListener = (event: { source: any; data: Response }) => {\n // We only accept messages from ourselves\n if (event.source !== window) return;\n // Only respond to messages tagged as being from our content script\n if (event?.data?.source !== EXTERNAL_MSG_RESPONSE) return;\n // Only respond to messages that this instance of sendMessageToContentScript sent\n if (event?.data?.messagedId !== MESSAGE_ID) return;\n\n resolve(event.data);\n window.removeEventListener(\"message\", messageListener);\n clearTimeout(requestTimeout);\n };\n window.addEventListener(\"message\", messageListener, false);\n });\n};\n\nexport const sendMessageToBackground = async (msg: Msg): Promise<Response> => {\n let res;\n if (DEV_SERVER) {\n // treat this as an external call because we're making the call from the browser, not the popup\n res = await sendMessageToContentScript(msg);\n } else {\n res = await browser.runtime.sendMessage(msg);\n }\n\n return res;\n};\n","import { requestPublicKey } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getPublicKey = (): Promise<string> =>\n isBrowser ? requestPublicKey() : Promise.resolve(\"\");\n","import { EXTERNAL_SERVICE_TYPES } from \"../constants/services\";\nimport { NetworkDetails } from \"../constants/stellar\";\nimport { sendMessageToContentScript } from \"./helpers/extensionMessaging\";\nimport { UserInfo } from \"./types\";\n\nexport const requestAccess = async (): Promise<string> => {\n let response = { publicKey: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_ACCESS,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { publicKey, error } = response;\n\n if (error) {\n throw error;\n }\n return publicKey;\n};\n\nexport const requestPublicKey = async (): Promise<string> => {\n let response = { publicKey: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_PUBLIC_KEY,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { publicKey, error } = response;\n\n if (error) {\n throw error;\n }\n return publicKey;\n};\n\nexport const submitTransaction = async (\n transactionXdr: string,\n opts?:\n | string\n | {\n network?: string;\n accountToSign?: string;\n networkPassphrase?: string;\n },\n accountToSign?: string,\n): Promise<string> => {\n let network = \"\";\n let _accountToSign = \"\";\n let networkPassphrase = \"\";\n\n /* \n As of v1.3.0, this method now accepts an object as its second param. \n Previously, it accepted optional second and third string parameters.\n This logic maintains backwards compatibility for older versions\n */\n if (typeof opts === \"object\") {\n network = opts.network || \"\";\n _accountToSign = opts.accountToSign || \"\";\n networkPassphrase = opts.networkPassphrase || \"\";\n } else {\n network = opts || \"\";\n _accountToSign = accountToSign || \"\";\n }\n\n let response = { signedTransaction: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n transactionXdr,\n network,\n networkPassphrase,\n accountToSign: _accountToSign,\n type: EXTERNAL_SERVICE_TYPES.SUBMIT_TRANSACTION,\n });\n } catch (e) {\n console.error(e);\n throw e;\n }\n const { signedTransaction, error } = response;\n\n if (error) {\n throw error;\n }\n return signedTransaction;\n};\n\nexport const submitBlob = async (\n blob: string,\n opts?: {\n accountToSign?: string;\n },\n): Promise<string> => {\n let response = { signedBlob: \"\", error: \"\" };\n const _opts = opts || {};\n const accountToSign = _opts.accountToSign || \"\";\n try {\n response = await sendMessageToContentScript({\n blob,\n accountToSign,\n type: EXTERNAL_SERVICE_TYPES.SUBMIT_BLOB,\n });\n } catch (e) {\n console.error(e);\n throw e;\n }\n const { signedBlob, error } = response;\n\n if (error) {\n throw error;\n }\n return signedBlob;\n};\n\nexport const submitAuthEntry = async (\n entryXdr: string,\n opts?: {\n accountToSign?: string;\n },\n): Promise<string> => {\n let response = { signedAuthEntry: \"\", error: \"\" };\n const _opts = opts || {};\n const accountToSign = _opts.accountToSign || \"\";\n try {\n response = await sendMessageToContentScript({\n entryXdr,\n accountToSign,\n type: EXTERNAL_SERVICE_TYPES.SUBMIT_AUTH_ENTRY,\n });\n } catch (e) {\n console.error(e);\n }\n const { signedAuthEntry, error } = response;\n\n if (error) {\n throw error;\n }\n return signedAuthEntry;\n};\n\nexport const requestNetwork = async (): Promise<string> => {\n let response = { network: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_NETWORK,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { network, error } = response;\n\n if (error) {\n throw error;\n }\n return network;\n};\n\nexport const requestNetworkDetails = async (): Promise<{\n network: string;\n networkUrl: string;\n networkPassphrase: string;\n sorobanRpcUrl?: string;\n}> => {\n let response = {\n networkDetails: {\n network: \"\",\n networkName: \"\",\n networkUrl: \"\",\n networkPassphrase: \"\",\n sorobanRpcUrl: undefined,\n } as NetworkDetails,\n error: \"\",\n };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_NETWORK_DETAILS,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { networkDetails, error } = response;\n const {\n network,\n networkUrl,\n networkPassphrase,\n sorobanRpcUrl,\n } = networkDetails;\n\n if (error) {\n throw error;\n }\n return { network, networkUrl, networkPassphrase, sorobanRpcUrl };\n};\n\nexport const requestConnectionStatus = async (): Promise<boolean> => {\n let response = {\n isConnected: false,\n };\n\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_CONNECTION_STATUS,\n });\n } catch (e) {\n console.error(e);\n }\n\n return response.isConnected;\n};\n\nexport const requestAllowedStatus = async (): Promise<boolean> => {\n let response = {\n isAllowed: false,\n };\n\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_ALLOWED_STATUS,\n });\n } catch (e) {\n console.error(e);\n }\n\n return response.isAllowed;\n};\n\nexport const setAllowedStatus = async (): Promise<boolean> => {\n let response = {\n isAllowed: false,\n error: \"\",\n };\n\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.SET_ALLOWED_STATUS,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { isAllowed, error } = response;\n\n if (error) {\n throw error;\n }\n return isAllowed;\n};\n\nexport const requestUserInfo = async (): Promise<UserInfo> => {\n let response = { userInfo: { publicKey: \"\" }, error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_USER_INFO,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { userInfo, error } = response;\n\n if (error) {\n throw error;\n }\n return userInfo;\n};\n","import { submitTransaction } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const signTransaction = (\n transactionXdr: string,\n opts?: {\n network?: string;\n networkPassphrase?: string;\n accountToSign?: string;\n }\n): Promise<string> =>\n isBrowser ? submitTransaction(transactionXdr, opts) : Promise.resolve(\"\");\n","import { submitBlob } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const signBlob = (\n blob: string,\n opts?: {\n accountToSign?: string;\n }\n): Promise<string> =>\n isBrowser ? submitBlob(blob, opts) : Promise.resolve(\"\");\n","import { submitAuthEntry } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const signAuthEntry = (\n entryXdr: string,\n opts?: {\n accountToSign?: string;\n }\n): Promise<string> =>\n isBrowser ? submitAuthEntry(entryXdr, opts) : Promise.resolve(\"\");\n","import { requestConnectionStatus } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const isConnected = (): Promise<boolean> => {\n if (!isBrowser) return Promise.resolve(false);\n\n if (window.freighter) {\n return Promise.resolve(window.freighter);\n }\n\n return requestConnectionStatus();\n};\n","import { requestNetwork } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getNetwork = (): Promise<string> =>\n isBrowser ? requestNetwork() : Promise.resolve(\"\");\n","import { requestNetworkDetails } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getNetworkDetails = (): Promise<{\n network: string;\n networkUrl: string;\n networkPassphrase: string;\n sorobanRpcUrl?: string;\n}> =>\n isBrowser\n ? requestNetworkDetails()\n : Promise.resolve({\n network: \"\",\n networkUrl: \"\",\n networkPassphrase: \"\",\n sorobanRpcUrl: \"\",\n });\n","import { requestAllowedStatus } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const isAllowed = (): Promise<boolean> =>\n isBrowser ? requestAllowedStatus() : Promise.resolve(false);\n","import { setAllowedStatus } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const setAllowed = (): Promise<boolean> =>\n isBrowser ? setAllowedStatus() : Promise.resolve(false);\n","import { requestUserInfo } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getUserInfo = (): Promise<{ publicKey: string }> =>\n isBrowser ? requestUserInfo() : Promise.resolve({ publicKey: \"\" });\n","import { requestAccess as requestAccessApi } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const requestAccess = (): Promise<string> =>\n isBrowser ? requestAccessApi() : Promise.resolve(\"\");\n","import { getPublicKey } from \"./getPublicKey\";\nimport { signTransaction } from \"./signTransaction\";\nimport { signBlob } from \"./signBlob\";\nimport { signAuthEntry } from \"./signAuthEntry\";\nimport { isConnected } from \"./isConnected\";\nimport { getNetwork } from \"./getNetwork\";\nimport { getNetworkDetails } from \"./getNetworkDetails\";\nimport { isAllowed } from \"./isAllowed\";\nimport { setAllowed } from \"./setAllowed\";\nimport { getUserInfo } from \"./getUserInfo\";\nimport { requestAccess } from \"./requestAccess\";\n\nexport const isBrowser = typeof window !== \"undefined\";\n\nexport {\n getPublicKey,\n signTransaction,\n signBlob,\n signAuthEntry,\n isConnected,\n getNetwork,\n getNetworkDetails,\n isAllowed,\n setAllowed,\n getUserInfo,\n requestAccess,\n};\nexport default {\n getPublicKey,\n signTransaction,\n signBlob,\n signAuthEntry,\n isConnected,\n getNetwork,\n getNetworkDetails,\n isAllowed,\n setAllowed,\n getUserInfo,\n requestAccess,\n};\n","// settings & const\nconst PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nconst supportsRequestInitExt = () => {\n return (\n typeof process === \"object\" &&\n Number.parseInt(process?.versions?.node?.substring(0, 2)) >= 18 &&\n process.versions.undici\n );\n};\n\n/**\n * Returns a cheap, non-cryptographically-secure random ID\n * Courtesy of @imranbarbhuiya (https://github.com/imranbarbhuiya)\n */\nexport function randomID() {\n return Math.random().toString(36).slice(2, 11);\n}\n\n/**\n * Create an openapi-fetch client.\n * @type {import(\"./index.js\").default}\n */\nexport default function createClient(clientOptions) {\n let {\n baseUrl = \"\",\n Request: CustomRequest = globalThis.Request,\n fetch: baseFetch = globalThis.fetch,\n querySerializer: globalQuerySerializer,\n bodySerializer: globalBodySerializer,\n pathSerializer: globalPathSerializer,\n headers: baseHeaders,\n requestInitExt = undefined,\n ...baseOptions\n } = { ...clientOptions };\n requestInitExt = supportsRequestInitExt() ? requestInitExt : undefined;\n baseUrl = removeTrailingSlash(baseUrl);\n const globalMiddlewares = [];\n\n /**\n * Per-request fetch (keeps settings created in createClient()\n * @param {T} url\n * @param {import('./index.js').FetchOptions<T>} fetchOptions\n */\n async function coreFetch(schemaPath, fetchOptions) {\n const {\n baseUrl: localBaseUrl,\n fetch = baseFetch,\n Request = CustomRequest,\n headers,\n params = {},\n parseAs = \"json\",\n querySerializer: requestQuerySerializer,\n bodySerializer = globalBodySerializer ?? defaultBodySerializer,\n pathSerializer: requestPathSerializer,\n body,\n middleware: requestMiddlewares = [],\n ...init\n } = fetchOptions || {};\n let finalBaseUrl = baseUrl;\n if (localBaseUrl) {\n finalBaseUrl = removeTrailingSlash(localBaseUrl) ?? baseUrl;\n }\n\n let querySerializer =\n typeof globalQuerySerializer === \"function\"\n ? globalQuerySerializer\n : createQuerySerializer(globalQuerySerializer);\n if (requestQuerySerializer) {\n querySerializer =\n typeof requestQuerySerializer === \"function\"\n ? requestQuerySerializer\n : createQuerySerializer({\n ...(typeof globalQuerySerializer === \"object\" ? globalQuerySerializer : {}),\n ...requestQuerySerializer,\n });\n }\n\n const pathSerializer = requestPathSerializer || globalPathSerializer || defaultPathSerializer;\n\n const serializedBody =\n body === undefined\n ? undefined\n : bodySerializer(\n body,\n // Note: we declare mergeHeaders() both here and below because it’s a bit of a chicken-or-egg situation:\n // bodySerializer() needs all headers so we aren’t dropping ones set by the user, however,\n // the result of this ALSO sets the lowest-priority content-type header. So we re-merge below,\n // setting the content-type at the very beginning to be overwritten.\n // Lastly, based on the way headers work, it’s not a simple “present-or-not” check becauase null intentionally un-sets headers.\n mergeHeaders(baseHeaders, headers, params.header),\n );\n const finalHeaders = mergeHeaders(\n // with no body, we should not to set Content-Type\n serializedBody === undefined ||\n // if serialized body is FormData; browser will correctly set Content-Type & boundary expression\n serializedBody instanceof FormData\n ? {}\n : {\n \"Content-Type\": \"application/json\",\n },\n baseHeaders,\n headers,\n params.header,\n );\n\n // Client level middleware take priority over request-level middleware\n const finalMiddlewares = [...globalMiddlewares, ...requestMiddlewares];\n\n const requestInit = {\n redirect: \"follow\",\n ...baseOptions,\n ...init,\n body: serializedBody,\n headers: finalHeaders,\n };\n\n let id;\n let options;\n let request = new Request(\n createFinalURL(schemaPath, { baseUrl: finalBaseUrl, params, querySerializer, pathSerializer }),\n requestInit,\n );\n let response;\n\n /** Add custom parameters to Request object */\n for (const key in init) {\n if (!(key in request)) {\n request[key] = init[key];\n }\n }\n\n if (finalMiddlewares.length) {\n id = randomID();\n\n // middleware (request)\n options = Object.freeze({\n baseUrl: finalBaseUrl,\n fetch,\n parseAs,\n querySerializer,\n bodySerializer,\n pathSerializer,\n });\n for (const m of finalMiddlewares) {\n if (m && typeof m === \"object\" && typeof m.onRequest === \"function\") {\n const result = await m.onRequest({\n request,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (result instanceof Request) {\n request = result;\n } else if (result instanceof Response) {\n response = result;\n break;\n } else {\n throw new Error(\"onRequest: must return new Request() or Response() when modifying the request\");\n }\n }\n }\n }\n }\n\n if (!response) {\n // fetch!\n try {\n response = await fetch(request, requestInitExt);\n } catch (error) {\n let errorAfterMiddleware = error;\n // middleware (error)\n // execute in reverse-array order (first priority gets last transform)\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onError === \"function\") {\n const result = await m.onError({\n request,\n error: errorAfterMiddleware,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n // if error is handled by returning a response, skip remaining middleware\n if (result instanceof Response) {\n errorAfterMiddleware = undefined;\n response = result;\n break;\n }\n\n if (result instanceof Error) {\n errorAfterMiddleware = result;\n continue;\n }\n\n throw new Error(\"onError: must return new Response() or instance of Error\");\n }\n }\n }\n }\n\n // rethrow error if not handled by middleware\n if (errorAfterMiddleware) {\n throw errorAfterMiddleware;\n }\n }\n\n // middleware (response)\n // execute in reverse-array order (first priority gets last transform)\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onResponse === \"function\") {\n const result = await m.onResponse({\n request,\n response,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (!(result instanceof Response)) {\n throw new Error(\"onResponse: must return new Response() when modifying the response\");\n }\n response = result;\n }\n }\n }\n }\n }\n\n const contentLength = response.headers.get(\"Content-Length\");\n // handle empty content\n if (\n response.status === 204 ||\n request.method === \"HEAD\" ||\n (contentLength === \"0\" && !response.headers.get(\"Transfer-Encoding\")?.includes(\"chunked\"))\n ) {\n return response.ok ? { data: undefined, response } : { error: undefined, response };\n }\n\n // parse response (falling back to .text() when necessary)\n if (response.ok) {\n const getResponseData = async () => {\n // if \"stream\", skip parsing entirely\n if (parseAs === \"stream\") {\n return response.body;\n }\n\n if (parseAs === \"json\" && !contentLength) {\n // use text() when no content-length is provided to avoid errors parsing empty bodies (200 with no content)\n const raw = await response.text();\n return raw ? JSON.parse(raw) : undefined;\n }\n\n return await response[parseAs]();\n };\n return { data: await getResponseData(), response };\n }\n\n // handle errors\n let error = await response.text();\n try {\n error = JSON.parse(error); // attempt to parse as JSON\n } catch {\n // noop\n }\n return { error, response };\n }\n\n return {\n request(method, url, init) {\n return coreFetch(url, { ...init, method: method.toUpperCase() });\n },\n /** Call a GET endpoint */\n GET(url, init) {\n return coreFetch(url, { ...init, method: \"GET\" });\n },\n /** Call a PUT endpoint */\n PUT(url, init) {\n return coreFetch(url, { ...init, method: \"PUT\" });\n },\n /** Call a POST endpoint */\n POST(url, init) {\n return coreFetch(url, { ...init, method: \"POST\" });\n },\n /** Call a DELETE endpoint */\n DELETE(url, init) {\n return coreFetch(url, { ...init, method: \"DELETE\" });\n },\n /** Call a OPTIONS endpoint */\n OPTIONS(url, init) {\n return coreFetch(url, { ...init, method: \"OPTIONS\" });\n },\n /** Call a HEAD endpoint */\n HEAD(url, init) {\n return coreFetch(url, { ...init, method: \"HEAD\" });\n },\n /** Call a PATCH endpoint */\n PATCH(url, init) {\n return coreFetch(url, { ...init, method: \"PATCH\" });\n },\n /** Call a TRACE endpoint */\n TRACE(url, init) {\n return coreFetch(url, { ...init, method: \"TRACE\" });\n },\n /** Register middleware */\n use(...middleware) {\n for (const m of middleware) {\n if (!m) {\n continue;\n }\n if (typeof m !== \"object\" || !(\"onRequest\" in m || \"onResponse\" in m || \"onError\" in m)) {\n throw new Error(\"Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`\");\n }\n globalMiddlewares.push(m);\n }\n },\n /** Unregister middleware */\n eject(...middleware) {\n for (const m of middleware) {\n const i = globalMiddlewares.indexOf(m);\n if (i !== -1) {\n globalMiddlewares.splice(i, 1);\n }\n }\n },\n };\n}\n\nclass PathCallForwarder {\n constructor(client, url) {\n this.client = client;\n this.url = url;\n }\n\n GET = (init) => {\n return this.client.GET(this.url, init);\n };\n PUT = (init) => {\n return this.client.PUT(this.url, init);\n };\n POST = (init) => {\n return this.client.POST(this.url, init);\n };\n DELETE = (init) => {\n return this.client.DELETE(this.url, init);\n };\n OPTIONS = (init) => {\n return this.client.OPTIONS(this.url, init);\n };\n HEAD = (init) => {\n return this.client.HEAD(this.url, init);\n };\n PATCH = (init) => {\n return this.client.PATCH(this.url, init);\n };\n TRACE = (init) => {\n return this.client.TRACE(this.url, init);\n };\n}\n\nclass PathClientProxyHandler {\n constructor() {\n this.client = null;\n }\n\n // Assume the property is an URL.\n get(coreClient, url) {\n const forwarder = new PathCallForwarder(coreClient, url);\n this.client[url] = forwarder;\n return forwarder;\n }\n}\n\n/**\n * Wrap openapi-fetch client to support a path based API.\n * @type {import(\"./index.js\").wrapAsPathBasedClient}\n */\nexport function wrapAsPathBasedClient(coreClient) {\n const handler = new PathClientProxyHandler();\n const proxy = new Proxy(coreClient, handler);\n\n // Put the proxy on the prototype chain of the actual client.\n // This means if we do not have a memoized PathCallForwarder,\n // we fall back to the proxy to synthesize it.\n // However, the proxy itself is not on the hot-path (if we fetch the same\n // endpoint multiple times, only the first call will hit the proxy).\n function Client() {}\n Client.prototype = proxy;\n\n const client = new Client();\n\n // Feed the client back to the proxy handler so it can store the generated\n // PathCallForwarder.\n handler.client = client;\n\n return client;\n}\n\n/**\n * Convenience method to an openapi-fetch path based client.\n * Strictly equivalent to `wrapAsPathBasedClient(createClient(...))`.\n * @type {import(\"./index.js\").createPathBasedClient}\n */\nexport function createPathBasedClient(clientOptions) {\n return wrapAsPathBasedClient(createClient(clientOptions));\n}\n\n// utils\n\n/**\n * Serialize primitive param values\n * @type {import(\"./index.js\").serializePrimitiveParam}\n */\nexport function serializePrimitiveParam(name, value, options) {\n if (value === undefined || value === null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.\",\n );\n }\n return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`;\n}\n\n/**\n * Serialize object param (shallow only)\n * @type {import(\"./index.js\").serializeObjectParam}\n */\nexport function serializeObjectParam(name, value, options) {\n if (!value || typeof value !== \"object\") {\n return \"\";\n }\n const values = [];\n const joiner =\n {\n simple: \",\",\n label: \".\",\n matrix: \";\",\n }[options.style] || \"&\";\n\n // explode: false\n if (options.style !== \"deepObject\" && options.explode === false) {\n for (const k in value) {\n values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k]));\n }\n const final = values.join(\",\"); // note: values are always joined by comma in explode: false (but joiner can prefix)\n switch (options.style) {\n case \"form\": {\n return `${name}=${final}`;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n default: {\n return final;\n }\n }\n }\n\n // explode: true\n for (const k in value) {\n const finalName = options.style === \"deepObject\" ? `${name}[${k}]` : k;\n values.push(serializePrimitiveParam(finalName, value[k], options));\n }\n const final = values.join(joiner);\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${final}` : final;\n}\n\n/**\n * Serialize array param (shallow only)\n * @type {import(\"./index.js\").serializeArrayParam}\n */\nexport function serializeArrayParam(name, value, options) {\n if (!Array.isArray(value)) {\n return \"\";\n }\n\n // explode: false\n if (options.explode === false) {\n const joiner = { form: \",\", spaceDelimited: \"%20\", pipeDelimited: \"|\" }[options.style] || \",\"; // note: for arrays, joiners vary wildly based on style + explode behavior\n const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner);\n switch (options.style) {\n case \"simple\": {\n return final;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n // case \"spaceDelimited\":\n // case \"pipeDelimited\":\n default: {\n return `${name}=${final}`;\n }\n }\n }\n\n // explode: true\n const joiner = { simple: \",\", label: \".\", matrix: \";\" }[options.style] || \"&\";\n const values = [];\n for (const v of value) {\n if (options.style === \"simple\" || options.style === \"label\") {\n values.push(options.allowReserved === true ? v : encodeURIComponent(v));\n } else {\n values.push(serializePrimitiveParam(name, v, options));\n }\n }\n return options.style === \"label\" || options.style === \"matrix\"\n ? `${joiner}${values.join(joiner)}`\n : values.join(joiner);\n}\n\n/**\n * Serialize query params to string\n * @type {import(\"./index.js\").createQuerySerializer}\n */\nexport function createQuerySerializer(options) {\n return function querySerializer(queryParams) {\n const search = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === undefined || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n search.push(\n serializeArrayParam(name, value, {\n style: \"form\",\n explode: true,\n ...options?.array,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n if (typeof value === \"object\") {\n search.push(\n serializeObjectParam(name, value, {\n style: \"deepObject\",\n explode: true,\n ...options?.object,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n search.push(serializePrimitiveParam(name, value, options));\n }\n }\n return search.join(\"&\");\n };\n}\n\n/**\n * Handle different OpenAPI 3.x serialization styles\n * @type {import(\"./index.js\").defaultPathSerializer}\n * @see https://swagger.io/docs/specification/serialization/#path\n */\nexport function defaultPathSerializer(pathname, pathParams) {\n let nextURL = pathname;\n for (const match of pathname.match(PATH_PARAM_RE) ?? []) {\n let name = match.substring(1, match.length - 1);\n let explode = false;\n let style = \"simple\";\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith(\".\")) {\n style = \"label\";\n name = name.substring(1);\n } else if (name.startsWith(\";\")) {\n style = \"matrix\";\n name = name.substring(1);\n }\n if (!pathParams || pathParams[name] === undefined || pathParams[name] === null) {\n continue;\n }\n const value = pathParams[name];\n if (Array.isArray(value)) {\n nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode }));\n continue;\n }\n if (typeof value === \"object\") {\n nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode }));\n continue;\n }\n if (style === \"matrix\") {\n nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`);\n continue;\n }\n nextURL = nextURL.replace(match, style === \"label\" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value));\n }\n return nextURL;\n}\n\n/**\n * Serialize body object to string\n * @type {import(\"./index.js\").defaultBodySerializer}\n */\nexport function defaultBodySerializer(body, headers) {\n if (body instanceof FormData) {\n return body;\n }\n if (headers) {\n const contentType =\n headers.get instanceof Function\n ? (headers.get(\"Content-Type\") ?? headers.get(\"content-type\"))\n : (headers[\"Content-Type\"] ?? headers[\"content-type\"]);\n if (contentType === \"application/x-www-form-urlencoded\") {\n return new URLSearchParams(body).toString();\n }\n }\n return JSON.stringify(body);\n}\n\n/**\n * Construct URL string from baseUrl and handle path and query params\n * @type {import(\"./index.js\").createFinalURL}\n */\nexport function createFinalURL(pathname, options) {\n let finalURL = `${options.baseUrl}${pathname}`;\n if (options.params?.path) {\n finalURL = options.pathSerializer(finalURL, options.params.path);\n }\n let search = options.querySerializer(options.params.query ?? {});\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n finalURL += `?${search}`;\n }\n return finalURL;\n}\n\n/**\n * Merge headers a and b, with b taking priority\n * @type {import(\"./index.js\").mergeHeaders}\n */\nexport function mergeHeaders(...allHeaders) {\n const finalHeaders = new Headers();\n for (const h of allHeaders) {\n if (!h || typeof h !== \"object\") {\n continue;\n }\n const iterator = h instanceof Headers ? h.entries() : Object.entries(h);\n for (const [k, v] of iterator) {\n if (v === null) {\n finalHeaders.delete(k);\n } else if (Array.isArray(v)) {\n for (const v2 of v) {\n finalHeaders.append(k, v2);\n }\n } else if (v !== undefined) {\n finalHeaders.set(k, v);\n }\n }\n }\n return finalHeaders;\n}\n\n/**\n * Remove trailing slash from url\n * @type {import(\"./index.js\").removeTrailingSlash}\n */\nexport function removeTrailingSlash(url) {\n if (url.endsWith(\"/\")) {\n return url.substring(0, url.length - 1);\n }\n return url;\n}\n","import createClient from 'openapi-fetch';\nimport type { paths } from './schema';\n\nexport type PollarApiClient = ReturnType<typeof createApiClient>;\n\nexport function createApiClient(baseUrl: string) {\n return createClient<paths>({ baseUrl });\n}","export const StateStatus = {\n NONE: 'NONE',\n LOADING: 'LOADING',\n SUCCESS: 'SUCCESS',\n ERROR: 'ERROR',\n} as const;\nexport type StateStatus = (typeof StateStatus)[keyof typeof StateStatus];\n\nexport const PollarStateVar = {\n NETWORK: 'network',\n AUTHENTICATION: 'authentication',\n TRANSACTION: 'transaction',\n} as const;\n\nexport type PollarStateVar = (typeof PollarStateVar)[keyof typeof PollarStateVar];\n\nexport const STATE_VAR_CODES = {\n authentication: {\n NONE: 'NONE',\n LOGOUT: 'LOGOUT',\n CREATE_SESSION_START: 'CREATE_SESSION_START',\n CREATE_SESSION_ERROR: 'CREATE_SESSION_ERROR',\n CREATE_SESSION_SUCCESS: 'CREATE_SESSION_SUCCESS',\n EMAIL_AUTH_START: 'EMAIL_AUTH_START',\n EMAIL_AUTH_START_ERROR: 'EMAIL_AUTH_START_ERROR',\n EMAIL_AUTH_START_SUCCESS: 'EMAIL_AUTH_START_SUCCESS',\n EMAIL_AUTH_CODE_ERROR: 'EMAIL_AUTH_CODE_ERROR',\n EMAIL_AUTH_CODE_SUCCESS: 'EMAIL_AUTH_CODE_SUCCESS',\n WALLET_AUTH_START: 'WALLET_AUTH_START',\n WALLET_AUTH_FREIGHTER_NOT_INSTALLED: 'WALLET_AUTH_FREIGHTER_NOT_INSTALLED',\n WALLET_AUTH_ALBEDO_NOT_INSTALLED: 'WALLET_AUTH_ALBEDO_NOT_INSTALLED',\n WALLET_AUTH_CONNECTED: 'WALLET_AUTH_CONNECTED',\n WALLET_AUTH_LOGIN_START: 'WALLET_AUTH_LOGIN_START',\n WALLET_AUTH_LOGIN_START_SUCCESS: 'WALLET_AUTH_LOGIN_START_SUCCESS',\n WALLET_AUTH_LOGIN_START_ERROR: 'WALLET_AUTH_LOGIN_START_ERROR',\n WALLET_AUTH_ERROR: 'WALLET_AUTH_ERROR',\n STREAM_POLL_START: 'STREAM_POLL_START',\n STREAM_POLL_EVENT: 'STREAM_POLL_EVENT',\n STREAM_POLL_READY: 'STREAM_POLL_READY',\n FETCH_SESSION_START: 'FETCH_SESSION_START',\n FETCH_SESSION_SUCCESS: 'FETCH_SESSION_SUCCESS',\n FETCH_SESSION_ERROR: 'FETCH_SESSION_ERROR',\n NO_RESTORED_SESSION: 'NO_RESTORED_SESSION',\n RESTORED_SESSION_SUCCESS: 'RESTORED_SESSION_SUCCESS',\n RESTORED_SESSION_ERROR: 'RESTORED_SESSION_ERROR',\n SESSION_STORED: 'SESSION_STORED',\n ERROR_ABORTED: 'ABORTED',\n ERROR_UNKNOWN: 'ERROR_UNKNOWN',\n },\n walletAddress: {\n NONE: 'NONE',\n REMOVED_ADDRESS: 'REMOVED_ADDRESS',\n UPDATED_ADDRESS: 'UPDATED_ADDRESS',\n },\n transaction: {\n NONE: 'NONE',\n BUILD_TRANSACTION_ERROR_NO_WALLET: 'BUILD_TRANSACTION_ERROR_NO_WALLET',\n BUILD_TRANSACTION_START: 'BUILD_TRANSACTION_START',\n BUILD_TRANSACTION_SUCCESS: 'BUILD_TRANSACTION_SUCCESS',\n BUILD_TRANSACTION_ERROR: 'BUILD_TRANSACTION_ERROR',\n SIGN_SEND_TRANSACTION_START: 'SIGN_SEND_TRANSACTION_START',\n SIGN_SEND_TRANSACTION_SUCCESS: 'SIGN_SEND_TRANSACTION_SUCCESS',\n SIGN_SEND_TRANSACTION_ERROR: 'SIGN_SEND_TRANSACTION_ERROR',\n },\n network: {\n NONE: 'NONE',\n NETWORK_UPDATED: 'NETWORK_UPDATED',\n },\n} as const;\n","import { PollarStateVar, StateStatus } from '../constants';\nimport { PollarStateEntry } from '../types';\n\nexport const emitResponse = <T>(\n state: PollarStateVar,\n response: { data?: any; error?: any },\n success: { code: T; status?: StateStatus },\n errorCode: T,\n emitLog: (\n state: PollarStateVar,\n code: T,\n level: PollarStateEntry['level'],\n status: PollarStateEntry['status'],\n data?: unknown,\n ) => void,\n) => {\n const isSuccess = !response.error && !!response.data && !!response.data?.success;\n emitLog(\n state,\n isSuccess ? success.code : errorCode,\n isSuccess ? 'info' : 'error',\n isSuccess ? success.status || StateStatus.LOADING : StateStatus.ERROR,\n isSuccess ? response.data : response.error,\n );\n return isSuccess;\n};\n","// Derived from stellar-wallet-kit by Tushar Pamnani (MIT)\n// https://github.com/tusharpamnani/stellar-wallet-kit\n\nimport {\n getNetwork,\n getUserInfo,\n isAllowed,\n isConnected,\n setAllowed,\n signAuthEntry,\n signTransaction,\n} from '@stellar/freighter-api';\n\nimport type {\n ConnectWalletResponse,\n SignAuthEntryOptions,\n SignAuthEntryResponse,\n SignTransactionOptions,\n SignTransactionResponse,\n WalletAdapter,\n} from './types';\nimport { WalletType } from './types';\n\nexport class FreighterAdapter implements WalletAdapter {\n readonly type = WalletType.FREIGHTER;\n\n async isAvailable(): Promise<boolean> {\n try {\n return await isConnected();\n } catch {\n return false;\n }\n }\n\n async connect(): Promise<ConnectWalletResponse> {\n const connected = await isConnected();\n if (!connected) {\n throw new Error('Freighter wallet is not installed');\n }\n\n const allowed = await isAllowed();\n if (!allowed) {\n await setAllowed();\n }\n\n const userInfo = await getUserInfo();\n if (!userInfo?.publicKey) {\n throw new Error('Failed to get user information from Freighter');\n }\n\n return { address: userInfo.publicKey, publicKey: userInfo.publicKey };\n }\n\n async disconnect(): Promise<void> {\n // Freighter does not expose a programmatic disconnect\n }\n\n async getPublicKey(): Promise<string | null> {\n try {\n const allowed = await isAllowed();\n if (!allowed) return null;\n const userInfo = await getUserInfo();\n return userInfo?.publicKey ?? null;\n } catch {\n return null;\n }\n }\n\n async getNetwork(): Promise<string> {\n return getNetwork();\n }\n\n async signTransaction(xdr: string, options?: SignTransactionOptions): Promise<SignTransactionResponse> {\n const result = await signTransaction(xdr, {\n network: options?.network,\n networkPassphrase: options?.networkPassphrase,\n accountToSign: options?.accountToSign,\n });\n if (!result || typeof result !== 'string') {\n throw new Error('Invalid response from Freighter');\n }\n return { signedTxXdr: result };\n }\n\n async signAuthEntry(entryXdr: string, options?: SignAuthEntryOptions): Promise<SignAuthEntryResponse> {\n const result = await signAuthEntry(entryXdr, { accountToSign: options?.accountToSign });\n if (!result || typeof result !== 'string') {\n throw new Error('Invalid response from Freighter');\n }\n return { signedAuthEntry: result };\n }\n}\n","// Derived from stellar-wallet-kit by Tushar Pamnani (MIT)\n// https://github.com/tusharpamnani/stellar-wallet-kit\n\nexport enum WalletType {\n FREIGHTER = 'freighter',\n ALBEDO = 'albedo',\n}\n\nexport interface ConnectWalletResponse {\n address: string;\n publicKey: string;\n}\n\nexport interface SignTransactionOptions {\n network?: string;\n networkPassphrase?: string;\n accountToSign?: string;\n}\n\nexport interface SignAuthEntryOptions {\n accountToSign?: string;\n}\n\nexport interface SignTransactionResponse {\n signedTxXdr: string;\n}\n\nexport interface SignAuthEntryResponse {\n signedAuthEntry: string;\n}\n\nexport interface WalletAdapter {\n type: WalletType;\n isAvailable(): Promise<boolean>;\n connect(): Promise<ConnectWalletResponse>;\n disconnect(): Promise<void>;\n getPublicKey(): Promise<string | null>;\n signTransaction(xdr: string, options?: SignTransactionOptions): Promise<SignTransactionResponse>;\n signAuthEntry(entryXdr: string, options?: SignAuthEntryOptions): Promise<SignAuthEntryResponse>;\n}\n","// Derived from stellar-wallet-kit by Tushar Pamnani (MIT)\n// https://github.com/tusharpamnani/stellar-wallet-kit\n\nimport { WalletType } from './types';\nimport type {\n WalletAdapter,\n ConnectWalletResponse,\n SignTransactionOptions,\n SignTransactionResponse,\n SignAuthEntryOptions,\n SignAuthEntryResponse,\n} from './types';\n\nfunction openAlbedoPopup(url: string): Window {\n const popup = window.open(url, 'albedo', 'width=420,height=720,resizable=yes,scrollbars=yes');\n if (!popup) {\n throw new Error('Failed to open Albedo popup (blocked by browser)');\n }\n return popup;\n}\n\nfunction waitForAlbedoPopup(): Promise<Record<string, string>> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error('Albedo response timeout')), 2 * 60 * 1000);\n\n function handler(event: MessageEvent) {\n if (event.origin !== window.location.origin || event.data?.type !== 'ALBEDO_RESULT') return;\n clearTimeout(timeout);\n window.removeEventListener('message', handler);\n resolve(event.data.payload as Record<string, string>);\n }\n\n window.addEventListener('message', handler);\n });\n}\n\nfunction waitForAlbedoResult(): Promise<Record<string, string>> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error('Albedo response timeout')), 2 * 60 * 1000);\n\n const parseResult = () => {\n const params = new URLSearchParams(window.location.search);\n if (!params.has('pubkey') && !params.has('signed_envelope_xdr') && !params.has('signed_xdr')) return;\n\n clearTimeout(timeout);\n const result: Record<string, string> = {};\n params.forEach((value, key) => { result[key] = value; });\n window.history.replaceState({}, document.title, window.location.pathname);\n resolve(result);\n };\n\n parseResult();\n window.addEventListener('popstate', parseResult);\n });\n}\n\nexport class AlbedoAdapter implements WalletAdapter {\n readonly type = WalletType.ALBEDO;\n\n async isAvailable(): Promise<boolean> {\n return typeof window !== 'undefined';\n }\n\n async connect(): Promise<ConnectWalletResponse> {\n const url = new URL('https://albedo.link');\n url.searchParams.set('intent', 'public-key');\n url.searchParams.set('app_name', 'Pollar');\n url.searchParams.set('network', 'testnet');\n url.searchParams.set('callback', `${window.location.origin}/albedo-callback`);\n url.searchParams.set('origin', window.location.origin);\n\n openAlbedoPopup(url.toString());\n const result = await waitForAlbedoPopup();\n\n if (!result.pubkey) {\n throw new Error('Albedo connection rejected');\n }\n\n return { address: result.pubkey, publicKey: result.pubkey };\n }\n\n async disconnect(): Promise<void> {}\n\n async getPublicKey(): Promise<string | null> {\n return null; // Albedo does not support silent reconnect\n }\n\n async getNetwork(): Promise<string> {\n throw new Error('Albedo does not expose network');\n }\n\n async signTransaction(xdr: string, _options?: SignTransactionOptions): Promise<SignTransactionResponse> {\n const url = new URL('https://albedo.link');\n url.searchParams.set('intent', 'tx');\n url.searchParams.set('xdr', xdr);\n url.searchParams.set('app_name', 'Pollar');\n url.searchParams.set('network', 'testnet');\n url.searchParams.set('callback', window.location.href);\n url.searchParams.set('origin', window.location.origin);\n\n window.location.href = url.toString();\n const result = await waitForAlbedoResult();\n\n if (!result.signed_envelope_xdr) throw new Error('Albedo signing rejected');\n return { signedTxXdr: result.signed_envelope_xdr };\n }\n\n async signAuthEntry(entryXdr: string, _options?: SignAuthEntryOptions): Promise<SignAuthEntryResponse> {\n const url = new URL('https://albedo.link');\n url.searchParams.set('intent', 'sign-auth-entry');\n url.searchParams.set('xdr', entryXdr);\n url.searchParams.set('app_name', 'Pollar');\n url.searchParams.set('network', 'testnet');\n url.searchParams.set('callback', window.location.href);\n url.searchParams.set('origin', window.location.origin);\n\n window.location.href = url.toString();\n const result = await waitForAlbedoResult();\n\n if (!result.signed_xdr) throw new Error('Albedo auth entry signing rejected');\n return { signedAuthEntry: result.signed_xdr };\n }\n}","import { PollarApplicationConfigContent } from '../types';\n\nexport const STORAGE_KEY = 'pollar:session';\n\nexport function isValidSession(value: unknown): value is PollarApplicationConfigContent {\n if (typeof value !== 'object' || value === null) {\n console.warn('[PollarClient:session] Invalid session — value is not an object');\n return false;\n }\n\n const s = value as Record<string, unknown>;\n\n // clientSessionId: string\n if (typeof s['clientSessionId'] !== 'string' || s['clientSessionId'] === '') {\n console.warn('[PollarClient:session] Invalid session — clientSessionId missing or empty');\n return false;\n }\n\n // userId: string | null (required, explicitly null or string)\n if (s['userId'] !== null && typeof s['userId'] !== 'string') {\n console.warn('[PollarClient:session] Invalid session — userId must be string or null, got:', typeof s['userId']);\n return false;\n }\n\n // status: string\n if (typeof s['status'] !== 'string') {\n console.warn('[PollarClient:session] Invalid session — status must be string, got:', typeof s['status']);\n return false;\n }\n\n // token: { accessToken: string, refreshToken: string, expiresAt: number }\n const token = s['token'];\n if (typeof token !== 'object' || token === null) {\n console.warn('[PollarClient:session] Invalid session — token missing or not an object');\n return false;\n }\n const t = token as Record<string, unknown>;\n if (typeof t['accessToken'] !== 'string' || t['accessToken'] === '') {\n console.warn('[PollarClient:session] Invalid session — token.accessToken missing or empty');\n return false;\n }\n if (typeof t['refreshToken'] !== 'string' || t['refreshToken'] === '') {\n console.warn('[PollarClient:session] Invalid session — token.refreshToken missing or empty');\n return false;\n }\n if (typeof t['expiresAt'] !== 'number' || !Number.isFinite(t['expiresAt'])) {\n console.warn('[PollarClient:session] Invalid session — token.expiresAt must be a finite number');\n return false;\n }\n\n // user: { id?: string, ready: boolean }\n const user = s['user'];\n if (typeof user !== 'object' || user === null) {\n console.warn('[PollarClient:session] Invalid session — user missing or not an object');\n return false;\n }\n const u = user as Record<string, unknown>;\n if (u['id'] !== undefined && typeof u['id'] !== 'string') {\n console.warn('[PollarClient:session] Invalid session — user.id must be string if present, got:', typeof u['id']);\n return false;\n }\n if (typeof u['ready'] !== 'boolean') {\n console.warn('[PollarClient:session] Invalid session — user.ready must be boolean, got:', typeof u['ready']);\n return false;\n }\n\n // wallet: { publicKey: string | null, existsOnStellar?: boolean, createdAt?: number }\n const wallet = s['wallet'];\n if (typeof wallet !== 'object' || wallet === null) {\n console.warn('[PollarClient:session] Invalid session — wallet missing or not an object');\n return false;\n }\n const w = wallet as Record<string, unknown>;\n if (w['publicKey'] !== null && typeof w['publicKey'] !== 'string') {\n console.warn(\n '[PollarClient:session] Invalid session — wallet.publicKey must be string or null, got:',\n typeof w['publicKey'],\n );\n return false;\n }\n if (w['existsOnStellar'] !== undefined && typeof w['existsOnStellar'] !== 'boolean') {\n console.warn('[PollarClient:session] Invalid session — wallet.existsOnStellar must be boolean if present');\n return false;\n }\n if (w['createdAt'] !== undefined && (typeof w['createdAt'] !== 'number' || !Number.isFinite(w['createdAt']))) {\n console.warn('[PollarClient:session] Invalid session — wallet.createdAt must be a finite number if present');\n return false;\n }\n\n // data: { mail, first_name, last_name, avatar: string, providers: {...} }\n const data = s['data'];\n if (typeof data !== 'object' || data === null) {\n console.warn('[PollarClient:session] Invalid session — data missing or not an object');\n return false;\n }\n const d = data as Record<string, unknown>;\n\n for (const field of ['mail', 'first_name', 'last_name', 'avatar'] as const) {\n if (typeof d[field] !== 'string') {\n console.warn(`[PollarClient:session] Invalid session — data.${field} must be string, got:`, typeof d[field]);\n return false;\n }\n }\n\n // providers: { email: {address:string}|null, google: {id:string}|null, github: {id:string}|null, wallet: {address:string}|null }\n const providers = d['providers'];\n if (typeof providers !== 'object' || providers === null) {\n console.warn('[PollarClient:session] Invalid session — data.providers missing or not an object');\n return false;\n }\n const p = providers as Record<string, unknown>;\n\n const providerInnerField = { email: 'address', google: 'id', github: 'id', wallet: 'address' } as const;\n\n for (const [field, innerField] of Object.entries(providerInnerField) as [keyof typeof providerInnerField, string][]) {\n const v = p[field];\n if (v === null) continue;\n if (typeof v !== 'object') {\n console.warn(`[PollarClient:session] Invalid session — data.providers.${field} must be object or null, got:`, typeof v);\n return false;\n }\n const vObj = v as Record<string, unknown>;\n if (typeof vObj[innerField] !== 'string' || vObj[innerField] === '') {\n console.warn(`[PollarClient:session] Invalid session — data.providers.${field}.${innerField} must be a non-empty string`);\n return false;\n }\n }\n\n return true;\n}\n\nexport function readStorage(): PollarApplicationConfigContent | null {\n const raw = localStorage.getItem(STORAGE_KEY);\n if (!raw) {\n return null;\n }\n\n try {\n const session = JSON.parse(raw) as unknown;\n\n if (!isValidSession(session)) {\n localStorage.removeItem(STORAGE_KEY);\n console.warn('[PollarClient:session] Stored session is invalid — clearing storage');\n return null;\n }\n\n if (session.token.expiresAt * 1000 < Date.now()) {\n localStorage.removeItem(STORAGE_KEY);\n console.warn('[PollarClient:session] Session token has expired — clearing storage');\n return null;\n }\n\n return session;\n } catch (error) {\n console.error('[PollarClient:session] Failed to parse session from storage', error);\n localStorage.removeItem(STORAGE_KEY);\n return null;\n }\n}\n\nexport function writeStorage(session: PollarApplicationConfigContent): void {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(session));\n console.info('[PollarClient:session] Session written to storage');\n}\n\nexport function removeStorage(): void {\n localStorage.removeItem(STORAGE_KEY);\n console.info('[PollarClient:session] Session removed from storage');\n}\n","import { PollarApiClient } from '../api/client';\n\nfunction abortableDelay(ms: number, signal: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n const t = setTimeout(resolve, ms);\n signal.addEventListener(\n 'abort',\n () => {\n clearTimeout(t);\n reject(new DOMException('Aborted', 'AbortError'));\n },\n { once: true },\n );\n });\n}\n\nexport async function streamUntilFound(\n api: PollarApiClient,\n clientSessionId: string,\n check: (data: Record<string, unknown>) => boolean,\n retryDelayMs = 200,\n signal?: AbortSignal,\n): Promise<Record<string, unknown>> {\n while (true) {\n signal?.throwIfAborted();\n\n let data, error;\n try {\n ({ data, error } = await api.GET('/auth/session/status/{clientSessionId}', {\n params: { path: { clientSessionId } },\n parseAs: 'stream',\n signal: signal ?? null,\n }));\n } catch (e) {\n if (e instanceof Error && e.name === 'AbortError') throw e;\n console.warn(e);\n }\n\n if (error || !data) {\n if (signal) await abortableDelay(retryDelayMs, signal);\n else await new Promise((r) => setTimeout(r, retryDelayMs));\n continue;\n }\n\n const reader = data.getReader();\n const decoder = new TextDecoder();\n let streamDone = false;\n\n try {\n while (true) {\n signal?.throwIfAborted();\n const { done, value } = await reader.read();\n if (done) {\n streamDone = true;\n break;\n }\n\n const chunk = decoder.decode(value);\n for (const message of chunk.split('\\n\\n').filter(Boolean)) {\n const dataLine = message.split('\\n').find((l) => l.startsWith('data:'));\n if (!dataLine) continue;\n try {\n const parsed = JSON.parse(dataLine.slice('data:'.length).trim());\n if (check(parsed)) {\n return parsed;\n }\n } catch {\n // chunk parcial, ignorar\n }\n }\n }\n } catch (e) {\n if (e instanceof Error && e.name === 'AbortError') throw e;\n console.warn(e);\n } finally {\n reader.releaseLock();\n }\n\n // stream cerrado sin encontrar el valor → reintenta\n const delay = streamDone ? retryDelayMs : 0;\n if (delay) {\n if (signal) await abortableDelay(delay, signal);\n else await new Promise((r) => setTimeout(r, delay));\n }\n }\n}\n","import { PollarApiClient } from '../api/client';\nimport { PollarStateVar, STATE_VAR_CODES, StateStatus } from '../constants';\nimport { PollarApplicationConfigContent, PollarLoginOptions, PollarStateEntry } from '../types';\nimport { AlbedoAdapter, FreighterAdapter, WalletType } from '../wallets';\nimport { emitResponse } from './helpers';\nimport { isValidSession } from './session';\nimport { streamUntilFound } from './stream';\n\nfunction withSignal<T>(promise: Promise<T>, signal: AbortSignal): Promise<T> {\n return Promise.race([\n promise,\n new Promise<never>((_, reject) => {\n if (signal.aborted) {\n reject(new DOMException('Aborted', 'AbortError'));\n return;\n }\n signal.addEventListener('abort', () => reject(new DOMException('Aborted', 'AbortError')), { once: true });\n }),\n ]);\n}\n\nexport type LoginDeps = {\n api: PollarApiClient;\n basePath: string;\n apiKey: string;\n signal: AbortSignal;\n emitState: (\n state: PollarStateEntry['var'],\n code: PollarStateEntry['code'],\n level: PollarStateEntry['level'],\n status: PollarStateEntry['status'],\n data?: PollarStateEntry['data'],\n ) => void;\n storeSession: (session: PollarApplicationConfigContent) => void;\n clearSession: () => void;\n};\n\nexport async function login(options: PollarLoginOptions, deps: LoginDeps): Promise<void> {\n const { api, basePath, apiKey, signal, emitState, storeSession, clearSession } = deps;\n\n emitState('authentication', STATE_VAR_CODES.authentication.CREATE_SESSION_START, 'info', StateStatus.LOADING);\n const createSessionResponse = await api.POST('/auth/session', { signal });\n\n if (\n !emitResponse(\n PollarStateVar.AUTHENTICATION,\n createSessionResponse,\n { code: STATE_VAR_CODES.authentication.CREATE_SESSION_SUCCESS },\n STATE_VAR_CODES.authentication.CREATE_SESSION_ERROR,\n emitState,\n )\n ) {\n return;\n }\n\n const clientSessionId = createSessionResponse.data!.content.clientSessionId;\n\n switch (options.provider) {\n case 'email': {\n emitState('authentication', STATE_VAR_CODES.authentication.EMAIL_AUTH_START, 'info', StateStatus.LOADING, {\n email: options.email,\n });\n const emailRes = await api.POST(`/auth/email`, {\n body: { clientSessionId, email: options.email },\n signal,\n });\n\n if (\n !emitResponse(\n PollarStateVar.AUTHENTICATION,\n emailRes,\n { code: STATE_VAR_CODES.authentication.EMAIL_AUTH_START_SUCCESS },\n STATE_VAR_CODES.authentication.EMAIL_AUTH_START_ERROR,\n emitState,\n )\n ) {\n return;\n }\n break;\n }\n case 'google':\n case 'github': {\n const url = new URL(`${basePath}/auth/${options.provider}`);\n url.searchParams.set('api_key', apiKey);\n url.searchParams.set('client_session_id', clientSessionId);\n url.searchParams.set('redirect_uri', window.location.origin);\n window.open(url.toString(), '_blank');\n break;\n }\n case 'wallet': {\n try {\n emitState('authentication', STATE_VAR_CODES.authentication.WALLET_AUTH_START, 'info', StateStatus.LOADING, {\n adapter: options.type,\n });\n const adapter = options.type === WalletType.FREIGHTER ? new FreighterAdapter() : new AlbedoAdapter();\n\n const available = await withSignal(adapter.isAvailable(), signal);\n if (!available) {\n emitState(\n 'authentication',\n options.type === WalletType.FREIGHTER\n ? STATE_VAR_CODES.authentication.WALLET_AUTH_FREIGHTER_NOT_INSTALLED\n : STATE_VAR_CODES.authentication.WALLET_AUTH_ALBEDO_NOT_INSTALLED,\n 'info',\n StateStatus.LOADING,\n {\n type: options.type,\n },\n );\n }\n\n const { publicKey } = await withSignal(adapter.connect(), signal);\n emitState('authentication', STATE_VAR_CODES.authentication.WALLET_AUTH_CONNECTED, 'info', StateStatus.LOADING, {\n adapter: options.type,\n publicKey,\n });\n emitState('authentication', STATE_VAR_CODES.authentication.WALLET_AUTH_LOGIN_START, 'info', StateStatus.LOADING, {\n adapter: options.type,\n publicKey,\n });\n const emailRes = await api.POST(`/auth/wallet`, {\n body: { clientSessionId, walletAddress: publicKey },\n signal,\n });\n\n if (\n !emitResponse(\n PollarStateVar.AUTHENTICATION,\n emailRes,\n { code: STATE_VAR_CODES.authentication.WALLET_AUTH_LOGIN_START_SUCCESS },\n STATE_VAR_CODES.authentication.WALLET_AUTH_LOGIN_START_ERROR,\n emitState,\n )\n ) {\n return;\n }\n } catch (error) {\n emitState('authentication', STATE_VAR_CODES.authentication.WALLET_AUTH_ERROR, 'error', StateStatus.ERROR, {\n clientSessionId,\n });\n }\n break;\n }\n }\n\n emitState('authentication', STATE_VAR_CODES.authentication.STREAM_POLL_START, 'info', StateStatus.LOADING, {\n clientSessionId,\n });\n await streamUntilFound(\n api,\n clientSessionId,\n (data) => {\n const status = data?.status;\n if (status === 'READY') {\n emitState('authentication', STATE_VAR_CODES.authentication.STREAM_POLL_READY, 'info', StateStatus.LOADING);\n return true;\n }\n emitState(\n 'authentication',\n (STATE_VAR_CODES.authentication.STREAM_POLL_EVENT + (status ? `/${status}` : '')) as PollarStateEntry['code'],\n 'info',\n StateStatus.LOADING,\n data,\n );\n return false;\n },\n 200,\n signal,\n );\n\n emitState('authentication', STATE_VAR_CODES.authentication.FETCH_SESSION_START, 'info', StateStatus.LOADING);\n const { data, error } = await api.POST(`/auth/login`, {\n body: { clientSessionId },\n signal,\n });\n\n if (data?.code === 'SDK_LOGIN_SUCCESS' && isValidSession(data?.content)) {\n emitState('authentication', STATE_VAR_CODES.authentication.FETCH_SESSION_SUCCESS, 'info', StateStatus.SUCCESS);\n storeSession(data.content);\n } else {\n emitState('authentication', STATE_VAR_CODES.authentication.FETCH_SESSION_ERROR, 'error', StateStatus.ERROR, {\n error,\n data,\n });\n clearSession();\n }\n}\n","import { createApiClient, PollarApiClient } from '../api/client';\nimport { PollarStateVar, STATE_VAR_CODES, StateStatus } from '../constants';\nimport {\n PollarApplicationConfigContent,\n PollarClientConfig,\n PollarLoginOptions,\n PollarState,\n PollarStateEntry,\n StateVarCodes,\n TxBuildBody,\n TxSignAndSendBody,\n} from '../types';\nimport { emitResponse } from './helpers';\nimport { login as loginFn } from './login';\nimport { readStorage, removeStorage, STORAGE_KEY, writeStorage } from './session';\n\nconst isBrowser = typeof window !== 'undefined' && typeof localStorage !== 'undefined';\n\nfunction warnServerSide(method: string): void {\n console.warn(\n `[PollarClient] ${method}() called server-side — browser APIs unavailable. Use PollarClient only in Client Components.`,\n );\n}\n\nexport class PollarClient {\n readonly apiKey: string;\n readonly id: string;\n readonly basePath: string;\n\n private readonly _api: PollarApiClient;\n private _session: PollarApplicationConfigContent | null = null;\n private _stateListeners = new Set<(log: PollarStateEntry) => void>();\n private _state: PollarState = {\n network: [],\n authentication: [],\n transaction: [],\n };\n\n constructor(config: PollarClientConfig) {\n this.apiKey = config.apiKey;\n this.id = crypto.randomUUID();\n this.basePath = `${config.baseUrl || 'https://sdk.api.pollar.xyz'}/v1`;\n this._api = createApiClient(this.basePath);\n this._api.use({\n onRequest({ request }: { request: Request }) {\n request.headers.set('x-pollar-api-key', config.apiKey);\n return request;\n },\n });\n\n if (!isBrowser) {\n warnServerSide('constructor');\n this._session = null;\n return;\n }\n\n console.info(`[PollarClient] Initialized — endpoint: ${this.basePath}`);\n\n this._readStore();\n\n window.addEventListener('storage', (e: StorageEvent) => {\n if (e.key === STORAGE_KEY) {\n const prev = this._session;\n console.info(`[PollarClient] Storage event — session ${this._session ? 'updated' : prev ? 'cleared' : 'unchanged'}`);\n this._readStore();\n }\n });\n\n this._emitState('network', STATE_VAR_CODES.network.NETWORK_UPDATED, 'info', StateStatus.SUCCESS, {\n network: 'testnet',\n });\n }\n\n isAuthenticated(): boolean {\n return !!this._session?.wallet?.publicKey;\n }\n\n getState() {\n return { session: this._session };\n }\n\n getApi(): PollarApiClient {\n return this._api;\n }\n\n login(options: PollarLoginOptions): { cancelLogin: () => void } {\n if (!isBrowser) {\n warnServerSide('login');\n return {\n cancelLogin: () => {},\n };\n }\n\n const controller = new AbortController();\n\n console.info(`[PollarClient] Login started — provider: ${options.provider}`);\n\n loginFn(options, {\n api: this._api,\n basePath: this.basePath,\n apiKey: this.apiKey,\n signal: controller.signal,\n emitState: this._emitState.bind(this),\n storeSession: this._storeSession.bind(this),\n clearSession: this._clearSession.bind(this),\n }).catch((error: unknown) => {\n if (error instanceof Error && error.name === 'AbortError') {\n console.info('[PollarClient] Login aborted by user');\n this._emitState('authentication', STATE_VAR_CODES.authentication.ERROR_ABORTED, 'error', StateStatus.ERROR);\n return;\n }\n console.error('[PollarClient] Login failed with unexpected error', error);\n this._emitState('authentication', STATE_VAR_CODES.authentication.ERROR_UNKNOWN, 'error', StateStatus.ERROR, {\n error,\n });\n });\n\n return { cancelLogin: () => controller.abort() };\n }\n\n onStateChange(cb: (state: PollarStateEntry) => void): () => void {\n this._stateListeners.add(cb);\n for (const [, stateEntry] of Object.entries(this._state)) {\n if (stateEntry.length >= 1) {\n cb(stateEntry.at(-1)!);\n }\n }\n return () => this._stateListeners.delete(cb);\n }\n\n async verifyEmailCode(clientSessionId: string, code: string): Promise<void> {\n if (!isBrowser) {\n warnServerSide('verifyEmailCode');\n return;\n }\n try {\n const { error, data } = await this._api.POST('/auth/email/verify-code', {\n body: { clientSessionId, code },\n });\n if (error || !data || data?.code !== 'SDK_EMAIL_CODE_VERIFIED') {\n this._emitState('authentication', STATE_VAR_CODES.authentication.EMAIL_AUTH_CODE_ERROR, 'error', StateStatus.ERROR, {\n data,\n error,\n });\n return;\n }\n\n this._emitState('authentication', STATE_VAR_CODES.authentication.EMAIL_AUTH_CODE_SUCCESS, 'info', StateStatus.SUCCESS, {\n data,\n error,\n });\n } catch (error) {\n this._emitState(\n 'authentication',\n STATE_VAR_CODES.authentication.WALLET_AUTH_ALBEDO_NOT_INSTALLED,\n 'error',\n StateStatus.ERROR,\n );\n }\n }\n\n getNetwork() {\n return (this._state.network.at(-1)?.data as { network: string })?.network === 'public' ? 'public' : 'testnet';\n }\n\n async buildTx(\n operation: TxBuildBody['operation'],\n params: TxBuildBody['params'],\n options?: TxBuildBody['options'],\n ): Promise<void> {\n if (!this._session?.wallet?.publicKey) {\n this._emitState('transaction', STATE_VAR_CODES.transaction.BUILD_TRANSACTION_ERROR_NO_WALLET, 'error', StateStatus.ERROR);\n return;\n }\n\n const body: TxBuildBody = {\n network: this.getNetwork(),\n publicKey: this._session?.wallet?.publicKey,\n operation,\n params,\n options: options || {},\n };\n\n try {\n this._emitState('transaction', STATE_VAR_CODES.transaction.BUILD_TRANSACTION_START, 'info', StateStatus.LOADING);\n const response = await this._api.POST('/tx/build', { body });\n if (\n !emitResponse(\n PollarStateVar.TRANSACTION,\n response,\n { code: STATE_VAR_CODES.transaction.BUILD_TRANSACTION_SUCCESS, status: StateStatus.SUCCESS },\n STATE_VAR_CODES.transaction.BUILD_TRANSACTION_ERROR,\n this._emitState.bind(this),\n )\n ) {\n return;\n }\n } catch (error) {\n this._emitState('transaction', STATE_VAR_CODES.transaction.BUILD_TRANSACTION_ERROR, 'error', StateStatus.ERROR, {\n body,\n error,\n });\n return;\n }\n }\n\n async submitTx(signedXdr: string): Promise<void> {\n const body: TxSignAndSendBody = {\n network: this.getNetwork(),\n signedXdr,\n };\n\n try {\n this._emitState('transaction', STATE_VAR_CODES.transaction.SIGN_SEND_TRANSACTION_START, 'info', StateStatus.LOADING);\n const response = await this._api.POST('/tx/sign-and-send', { body });\n if (\n !emitResponse(\n PollarStateVar.TRANSACTION,\n response,\n { code: STATE_VAR_CODES.transaction.SIGN_SEND_TRANSACTION_SUCCESS, status: StateStatus.SUCCESS },\n STATE_VAR_CODES.transaction.SIGN_SEND_TRANSACTION_ERROR,\n this._emitState.bind(this),\n )\n ) {\n return;\n }\n } catch (error) {\n this._emitState('transaction', STATE_VAR_CODES.transaction.SIGN_SEND_TRANSACTION_ERROR, 'error', StateStatus.ERROR, {\n body,\n error,\n });\n return;\n }\n }\n\n logout(): void {\n if (!isBrowser) {\n warnServerSide('logout');\n return;\n }\n\n console.info('[PollarClient] Logout requested');\n this._clearSession();\n }\n\n private _readStore() {\n this._session = readStorage();\n if (this._session) {\n this._emitState(\n 'authentication',\n STATE_VAR_CODES.authentication.RESTORED_SESSION_SUCCESS,\n 'info',\n StateStatus.SUCCESS,\n this._session,\n );\n console.info('[PollarClient] Session restored from storage');\n } else {\n this._emitState('authentication', STATE_VAR_CODES.authentication.NO_RESTORED_SESSION, 'info', StateStatus.NONE);\n console.info('[PollarClient] Session NO restored from storage');\n }\n }\n\n private _storeSession(session: PollarApplicationConfigContent): void {\n console.info(`[PollarClient] Session stored — user: ${session.userId ?? 'anonymous'}`);\n this._session = session;\n writeStorage(session);\n this._emitState(\n 'authentication',\n STATE_VAR_CODES.authentication.SESSION_STORED,\n 'info',\n StateStatus.SUCCESS,\n this._session,\n );\n }\n\n private _clearSession(): void {\n console.info('[PollarClient] Session cleared');\n this._session = null;\n removeStorage();\n this._state = {\n network: [],\n authentication: [],\n transaction: [],\n };\n this._emitState('authentication', STATE_VAR_CODES.authentication.LOGOUT, 'info', StateStatus.NONE);\n }\n\n private _emitState(\n fn: PollarStateVar,\n code: StateVarCodes,\n level: PollarStateEntry['level'],\n status: PollarStateEntry['status'],\n data?: unknown,\n ): void {\n const stateEntry: PollarStateEntry = { var: fn, code, level, data, status, ts: Date.now() };\n this._state[fn].push(stateEntry);\n console[level](`[PollarClient] ${fn}:${code} — ${status}`);\n for (const cb of this._stateListeners) {\n cb(stateEntry);\n }\n }\n}\n","export type StellarNetwork = 'mainnet' | 'testnet';\n\nconst HORIZON_URLS: Record<StellarNetwork, string> = {\n mainnet: 'https://horizon.stellar.org',\n testnet: 'https://horizon-testnet.stellar.org',\n};\n\nexport type StellarClientConfig = StellarNetwork | { horizonUrl: string };\n\nexport interface StellarBalance {\n asset: string;\n balance: string;\n assetIssuer?: string;\n}\n\nexport type GetBalancesResult =\n | { success: true; balances: StellarBalance[] }\n | { success: false; errorCode: 'ACCOUNT_NOT_FOUND' | 'HORIZON_ERROR' | 'NETWORK_ERROR'; balances: [] };\n\ninterface HorizonBalance {\n balance: string;\n asset_type: 'native' | 'credit_alphanum4' | 'credit_alphanum12' | 'liquidity_pool_shares';\n asset_code?: string;\n asset_issuer?: string;\n}\n\ninterface HorizonAccountResponse {\n balances: HorizonBalance[];\n}\n\nexport class StellarClient {\n private readonly horizonUrl: string;\n\n constructor(config: StellarClientConfig) {\n this.horizonUrl = typeof config === 'string' ? HORIZON_URLS[config] : config.horizonUrl;\n }\n\n async getBalances(publicKey: string): Promise<GetBalancesResult> {\n try {\n const response = await fetch(`${this.horizonUrl}/accounts/${publicKey}`);\n\n if (!response.ok) {\n if (response.status === 404) {\n console.warn(`[StellarClient] Account not found: ${publicKey}`);\n return { success: false, errorCode: 'ACCOUNT_NOT_FOUND', balances: [] };\n }\n console.warn(`[StellarClient] Horizon API error: ${response.status}`);\n return { success: false, errorCode: 'HORIZON_ERROR', balances: [] };\n }\n\n const data = (await response.json()) as HorizonAccountResponse;\n\n return {\n success: true,\n balances: data.balances\n .filter((b) => b.asset_type !== 'liquidity_pool_shares')\n .map((b) => ({\n asset: b.asset_type === 'native' ? 'XLM' : (b.asset_code ?? ''),\n balance: b.balance,\n ...(b.asset_type !== 'native' && { assetIssuer: b.asset_issuer }),\n })),\n };\n } catch (error) {\n console.warn('[StellarClient] Network error fetching balances', error);\n return { success: false, errorCode: 'NETWORK_ERROR', balances: [] };\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["webpack:/freighterApi/webpack/universalModuleDefinition","webpack:/freighterApi/webpack/bootstrap","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@shared/constants/services.ts","webpack:/freighterApi/webpack/runtime/define%20property%20getters","webpack:/freighterApi/webpack/runtime/hasOwnProperty%20shorthand","webpack:/freighterApi/webpack/runtime/make%20namespace%20object","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@shared/api/helpers/extensionMessaging.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getPublicKey.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@shared/api/external.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/signTransaction.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/signBlob.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/signAuthEntry.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/isConnected.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getNetwork.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getNetworkDetails.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/isAllowed.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/setAllowed.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/getUserInfo.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/requestAccess.ts","webpack:/freighterApi/src/Users/piyalbasu/Stellar/lyra/@stellar/freighter-api/src/index.ts","../../../node_modules/openapi-fetch/src/index.js","../src/api/client.ts","../src/constants.ts","../src/client/helpers.ts","../src/wallets/FreighterAdapter.ts","../src/wallets/types.ts","../src/wallets/AlbedoAdapter.ts","../src/client/session.ts","../src/client/stream.ts","../src/client/login.ts","../src/client/client.ts","../src/stellar/StellarClient.ts"],"names":["root","factory","exports","module","define","amd","this","SERVICE_TYPES","EXTERNAL_SERVICE_TYPES","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","e","sendMessageToContentScript","msg","MESSAGE_ID","Date","now","Math","random","window","postMessage","source","messageId","location","origin","Promise","resolve","requestTimeout","type","REQUEST_CONNECTION_STATUS","REQUEST_PUBLIC_KEY","setTimeout","isConnected","publicKey","removeEventListener","messageListener","event","r","data","t","messagedId","clearTimeout","addEventListener","getPublicKey","isBrowser","async","response","error","console","requestPublicKey","signTransaction","transactionXdr","opts","accountToSign","network","_accountToSign","networkPassphrase","signedTransaction","SUBMIT_TRANSACTION","signBlob","blob","signedBlob","SUBMIT_BLOB","signAuthEntry","entryXdr","signedAuthEntry","SUBMIT_AUTH_ENTRY","freighter","requestConnectionStatus","getNetwork","REQUEST_NETWORK","requestNetwork","getNetworkDetails","networkDetails","networkName","networkUrl","sorobanRpcUrl","undefined","REQUEST_NETWORK_DETAILS","isAllowed","REQUEST_ALLOWED_STATUS","requestAllowedStatus","setAllowed","SET_ALLOWED_STATUS","setAllowedStatus","getUserInfo","userInfo","REQUEST_USER_INFO","requestUserInfo","REQUEST_ACCESS","requestAccess","fetch","final","joiner","WalletType"],"mappings":"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","file":"index.mjs","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"freighterApi\"] = factory();\n\telse\n\t\troot[\"freighterApi\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","export enum SERVICE_TYPES {\n CREATE_ACCOUNT = \"CREATE_ACCOUNT\",\n FUND_ACCOUNT = \"FUND_ACCOUNT\",\n ADD_ACCOUNT = \"ADD_ACCOUNT\",\n IMPORT_ACCOUNT = \"IMPORT_ACCOUNT\",\n IMPORT_HARDWARE_WALLET = \"IMPORT_HARDWARE_WALLET\",\n LOAD_ACCOUNT = \"LOAD_ACCOUNT\",\n MAKE_ACCOUNT_ACTIVE = \"MAKE_ACCOUNT_ACTIVE\",\n UPDATE_ACCOUNT_NAME = \"UPDATE_ACCOUNT_NAME\",\n GET_MNEMONIC_PHRASE = \"GET_MNEMONIC_PHRASE\",\n CONFIRM_MNEMONIC_PHRASE = \"CONFIRM_MNEMONIC_PHRASE\",\n CONFIRM_MIGRATED_MNEMONIC_PHRASE = \"CONFIRM_MIGRATED_MNEMONIC_PHRASE\",\n RECOVER_ACCOUNT = \"RECOVER_ACCOUNT\",\n CONFIRM_PASSWORD = \"CONFIRM_PASSWORD\",\n REJECT_ACCESS = \"REJECT_ACCESS\",\n GRANT_ACCESS = \"GRANT_ACCESS\",\n SIGN_TRANSACTION = \"SIGN_TRANSACTION\",\n SIGN_BLOB = \"SIGN_BLOB\",\n SIGN_AUTH_ENTRY = \"SIGN_AUTH_ENTRY\",\n HANDLE_SIGNED_HW_TRANSACTION = \"HANDLE_SIGNED_HW_TRANSACTION\",\n REJECT_TRANSACTION = \"REJECT_TRANSACTION\",\n SIGN_FREIGHTER_TRANSACTION = \"SIGN_FREIGHTER_TRANSACTION\",\n SIGN_FREIGHTER_SOROBAN_TRANSACTION = \"SIGN_FREIGHTER_SOROBAN_TRANSACTION\",\n ADD_RECENT_ADDRESS = \"ADD_RECENT_ADDRESS\",\n LOAD_RECENT_ADDRESSES = \"LOAD_RECENT_ADDRESSES\",\n SIGN_OUT = \"SIGN_OUT\",\n SHOW_BACKUP_PHRASE = \"SHOW_BACKUP_PHRASE\",\n SAVE_ALLOWLIST = \"SAVE_ALLOWLIST\",\n SAVE_SETTINGS = \"SAVE_SETTINGS\",\n LOAD_SETTINGS = \"LOAD_SETTINGS\",\n GET_CACHED_ASSET_ICON = \"GET_CACHED_ASSET_ICON\",\n CACHE_ASSET_ICON = \"CACHE_ASSET_ICON\",\n GET_CACHED_ASSET_DOMAIN = \"GET_CACHED_ASSET_DOMAIN\",\n CACHE_ASSET_DOMAIN = \"CACHE_ASSET_DOMAIN\",\n GET_BLOCKED_ACCOUNTS = \"GET_BLOCKED_ACCOUNTS\",\n GET_BLOCKED_DOMAINS = \"GET_BLOCKED_DOMAINS\",\n ADD_CUSTOM_NETWORK = \"ADD_CUSTOM_NETWORK\",\n CHANGE_NETWORK = \"CHANGE_NETWORK\",\n REMOVE_CUSTOM_NETWORK = \"REMOVE_CUSTOM_NETWORK\",\n EDIT_CUSTOM_NETWORK = \"EDIT_CUSTOM_NETWORK\",\n RESET_EXP_DATA = \"RESET_EXP_DATA\",\n ADD_TOKEN_ID = \"ADD_TOKEN_ID\",\n GET_TOKEN_IDS = \"GET_TOKEN_IDS\",\n REMOVE_TOKEN_ID = \"REMOVE_TOKEN_ID\",\n GET_MIGRATABLE_ACCOUNTS = \"GET_MIGRATABLE_ACCOUNTS\",\n GET_MIGRATED_MNEMONIC_PHRASE = \"GET_MIGRATED_MNEMONIC_PHRASE\",\n MIGRATE_ACCOUNTS = \"MIGRATE_ACCOUNTS\",\n}\n\nexport enum EXTERNAL_SERVICE_TYPES {\n REQUEST_ACCESS = \"REQUEST_ACCESS\",\n REQUEST_PUBLIC_KEY = \"REQUEST_PUBLIC_KEY\",\n SUBMIT_TRANSACTION = \"SUBMIT_TRANSACTION\",\n SUBMIT_BLOB = \"SUBMIT_BLOB\",\n SUBMIT_AUTH_ENTRY = \"SUBMIT_AUTH_ENTRY\",\n REQUEST_NETWORK = \"REQUEST_NETWORK\",\n REQUEST_NETWORK_DETAILS = \"REQUEST_NETWORK_DETAILS\",\n REQUEST_CONNECTION_STATUS = \"REQUEST_CONNECTION_STATUS\",\n REQUEST_ALLOWED_STATUS = \"REQUEST_ALLOWED_STATUS\",\n SET_ALLOWED_STATUS = \"SET_ALLOWED_STATUS\",\n REQUEST_USER_INFO = \"REQUEST_USER_INFO\",\n}\n\nexport const EXTERNAL_MSG_REQUEST = \"FREIGHTER_EXTERNAL_MSG_REQUEST\";\nexport const EXTERNAL_MSG_RESPONSE = \"FREIGHTER_EXTERNAL_MSG_RESPONSE\";\n\ndeclare const DEV_SERVER: string;\nconst _DEV_SERVER = DEV_SERVER;\nexport { _DEV_SERVER as DEV_SERVER };\n\ndeclare const DEV_EXTENSION: string;\nconst _DEV_EXTENSION = DEV_EXTENSION;\nexport { _DEV_EXTENSION as DEV_EXTENSION };\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import browser from \"webextension-polyfill\";\nimport {\n DEV_SERVER,\n EXTERNAL_MSG_RESPONSE,\n EXTERNAL_MSG_REQUEST,\n EXTERNAL_SERVICE_TYPES,\n SERVICE_TYPES,\n} from \"../../constants/services\";\nimport { Response } from \"../types\";\n\ninterface Msg {\n [key: string]: any;\n type: EXTERNAL_SERVICE_TYPES | SERVICE_TYPES;\n}\n\nexport const sendMessageToContentScript = (msg: Msg): Promise<Response> => {\n /* \n In the case of multiple calls coming in sequentially, we use this MESSAGE_ID to make sure we're responding to\n the appropriate message sender. Otherwise, we can run into race conditions where we simply resolve all \n sent messages with the first thing that comes back.\n */\n const MESSAGE_ID = Date.now() + Math.random();\n\n window.postMessage(\n { source: EXTERNAL_MSG_REQUEST, messageId: MESSAGE_ID, ...msg },\n window.location.origin,\n );\n return new Promise((resolve) => {\n let requestTimeout = 0;\n\n /* \n In the case that Freighter is not installed at all, any messages to \n background from freighter-api will hang forever and not respond in any way. \n This is especially a problem for the isConnected method, because this is \n likely to be called in a situation where Freighter isn't installed.\n To prevent this, we add a timeout to automatically resolve in the event \n Freighter doesn't respond in a timely fashion to this method.\n */\n if (\n msg.type === EXTERNAL_SERVICE_TYPES.REQUEST_CONNECTION_STATUS ||\n msg.type === EXTERNAL_SERVICE_TYPES.REQUEST_PUBLIC_KEY\n ) {\n requestTimeout = setTimeout(() => {\n resolve({\n isConnected: false,\n publicKey: \"\",\n } as Response);\n window.removeEventListener(\"message\", messageListener);\n }, 2000);\n }\n\n const messageListener = (event: { source: any; data: Response }) => {\n // We only accept messages from ourselves\n if (event.source !== window) return;\n // Only respond to messages tagged as being from our content script\n if (event?.data?.source !== EXTERNAL_MSG_RESPONSE) return;\n // Only respond to messages that this instance of sendMessageToContentScript sent\n if (event?.data?.messagedId !== MESSAGE_ID) return;\n\n resolve(event.data);\n window.removeEventListener(\"message\", messageListener);\n clearTimeout(requestTimeout);\n };\n window.addEventListener(\"message\", messageListener, false);\n });\n};\n\nexport const sendMessageToBackground = async (msg: Msg): Promise<Response> => {\n let res;\n if (DEV_SERVER) {\n // treat this as an external call because we're making the call from the browser, not the popup\n res = await sendMessageToContentScript(msg);\n } else {\n res = await browser.runtime.sendMessage(msg);\n }\n\n return res;\n};\n","import { requestPublicKey } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getPublicKey = (): Promise<string> =>\n isBrowser ? requestPublicKey() : Promise.resolve(\"\");\n","import { EXTERNAL_SERVICE_TYPES } from \"../constants/services\";\nimport { NetworkDetails } from \"../constants/stellar\";\nimport { sendMessageToContentScript } from \"./helpers/extensionMessaging\";\nimport { UserInfo } from \"./types\";\n\nexport const requestAccess = async (): Promise<string> => {\n let response = { publicKey: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_ACCESS,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { publicKey, error } = response;\n\n if (error) {\n throw error;\n }\n return publicKey;\n};\n\nexport const requestPublicKey = async (): Promise<string> => {\n let response = { publicKey: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_PUBLIC_KEY,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { publicKey, error } = response;\n\n if (error) {\n throw error;\n }\n return publicKey;\n};\n\nexport const submitTransaction = async (\n transactionXdr: string,\n opts?:\n | string\n | {\n network?: string;\n accountToSign?: string;\n networkPassphrase?: string;\n },\n accountToSign?: string,\n): Promise<string> => {\n let network = \"\";\n let _accountToSign = \"\";\n let networkPassphrase = \"\";\n\n /* \n As of v1.3.0, this method now accepts an object as its second param. \n Previously, it accepted optional second and third string parameters.\n This logic maintains backwards compatibility for older versions\n */\n if (typeof opts === \"object\") {\n network = opts.network || \"\";\n _accountToSign = opts.accountToSign || \"\";\n networkPassphrase = opts.networkPassphrase || \"\";\n } else {\n network = opts || \"\";\n _accountToSign = accountToSign || \"\";\n }\n\n let response = { signedTransaction: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n transactionXdr,\n network,\n networkPassphrase,\n accountToSign: _accountToSign,\n type: EXTERNAL_SERVICE_TYPES.SUBMIT_TRANSACTION,\n });\n } catch (e) {\n console.error(e);\n throw e;\n }\n const { signedTransaction, error } = response;\n\n if (error) {\n throw error;\n }\n return signedTransaction;\n};\n\nexport const submitBlob = async (\n blob: string,\n opts?: {\n accountToSign?: string;\n },\n): Promise<string> => {\n let response = { signedBlob: \"\", error: \"\" };\n const _opts = opts || {};\n const accountToSign = _opts.accountToSign || \"\";\n try {\n response = await sendMessageToContentScript({\n blob,\n accountToSign,\n type: EXTERNAL_SERVICE_TYPES.SUBMIT_BLOB,\n });\n } catch (e) {\n console.error(e);\n throw e;\n }\n const { signedBlob, error } = response;\n\n if (error) {\n throw error;\n }\n return signedBlob;\n};\n\nexport const submitAuthEntry = async (\n entryXdr: string,\n opts?: {\n accountToSign?: string;\n },\n): Promise<string> => {\n let response = { signedAuthEntry: \"\", error: \"\" };\n const _opts = opts || {};\n const accountToSign = _opts.accountToSign || \"\";\n try {\n response = await sendMessageToContentScript({\n entryXdr,\n accountToSign,\n type: EXTERNAL_SERVICE_TYPES.SUBMIT_AUTH_ENTRY,\n });\n } catch (e) {\n console.error(e);\n }\n const { signedAuthEntry, error } = response;\n\n if (error) {\n throw error;\n }\n return signedAuthEntry;\n};\n\nexport const requestNetwork = async (): Promise<string> => {\n let response = { network: \"\", error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_NETWORK,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { network, error } = response;\n\n if (error) {\n throw error;\n }\n return network;\n};\n\nexport const requestNetworkDetails = async (): Promise<{\n network: string;\n networkUrl: string;\n networkPassphrase: string;\n sorobanRpcUrl?: string;\n}> => {\n let response = {\n networkDetails: {\n network: \"\",\n networkName: \"\",\n networkUrl: \"\",\n networkPassphrase: \"\",\n sorobanRpcUrl: undefined,\n } as NetworkDetails,\n error: \"\",\n };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_NETWORK_DETAILS,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { networkDetails, error } = response;\n const {\n network,\n networkUrl,\n networkPassphrase,\n sorobanRpcUrl,\n } = networkDetails;\n\n if (error) {\n throw error;\n }\n return { network, networkUrl, networkPassphrase, sorobanRpcUrl };\n};\n\nexport const requestConnectionStatus = async (): Promise<boolean> => {\n let response = {\n isConnected: false,\n };\n\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_CONNECTION_STATUS,\n });\n } catch (e) {\n console.error(e);\n }\n\n return response.isConnected;\n};\n\nexport const requestAllowedStatus = async (): Promise<boolean> => {\n let response = {\n isAllowed: false,\n };\n\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_ALLOWED_STATUS,\n });\n } catch (e) {\n console.error(e);\n }\n\n return response.isAllowed;\n};\n\nexport const setAllowedStatus = async (): Promise<boolean> => {\n let response = {\n isAllowed: false,\n error: \"\",\n };\n\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.SET_ALLOWED_STATUS,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { isAllowed, error } = response;\n\n if (error) {\n throw error;\n }\n return isAllowed;\n};\n\nexport const requestUserInfo = async (): Promise<UserInfo> => {\n let response = { userInfo: { publicKey: \"\" }, error: \"\" };\n try {\n response = await sendMessageToContentScript({\n type: EXTERNAL_SERVICE_TYPES.REQUEST_USER_INFO,\n });\n } catch (e) {\n console.error(e);\n }\n\n const { userInfo, error } = response;\n\n if (error) {\n throw error;\n }\n return userInfo;\n};\n","import { submitTransaction } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const signTransaction = (\n transactionXdr: string,\n opts?: {\n network?: string;\n networkPassphrase?: string;\n accountToSign?: string;\n }\n): Promise<string> =>\n isBrowser ? submitTransaction(transactionXdr, opts) : Promise.resolve(\"\");\n","import { submitBlob } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const signBlob = (\n blob: string,\n opts?: {\n accountToSign?: string;\n }\n): Promise<string> =>\n isBrowser ? submitBlob(blob, opts) : Promise.resolve(\"\");\n","import { submitAuthEntry } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const signAuthEntry = (\n entryXdr: string,\n opts?: {\n accountToSign?: string;\n }\n): Promise<string> =>\n isBrowser ? submitAuthEntry(entryXdr, opts) : Promise.resolve(\"\");\n","import { requestConnectionStatus } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const isConnected = (): Promise<boolean> => {\n if (!isBrowser) return Promise.resolve(false);\n\n if (window.freighter) {\n return Promise.resolve(window.freighter);\n }\n\n return requestConnectionStatus();\n};\n","import { requestNetwork } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getNetwork = (): Promise<string> =>\n isBrowser ? requestNetwork() : Promise.resolve(\"\");\n","import { requestNetworkDetails } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getNetworkDetails = (): Promise<{\n network: string;\n networkUrl: string;\n networkPassphrase: string;\n sorobanRpcUrl?: string;\n}> =>\n isBrowser\n ? requestNetworkDetails()\n : Promise.resolve({\n network: \"\",\n networkUrl: \"\",\n networkPassphrase: \"\",\n sorobanRpcUrl: \"\",\n });\n","import { requestAllowedStatus } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const isAllowed = (): Promise<boolean> =>\n isBrowser ? requestAllowedStatus() : Promise.resolve(false);\n","import { setAllowedStatus } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const setAllowed = (): Promise<boolean> =>\n isBrowser ? setAllowedStatus() : Promise.resolve(false);\n","import { requestUserInfo } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const getUserInfo = (): Promise<{ publicKey: string }> =>\n isBrowser ? requestUserInfo() : Promise.resolve({ publicKey: \"\" });\n","import { requestAccess as requestAccessApi } from \"@shared/api/external\";\nimport { isBrowser } from \".\";\n\nexport const requestAccess = (): Promise<string> =>\n isBrowser ? requestAccessApi() : Promise.resolve(\"\");\n","import { getPublicKey } from \"./getPublicKey\";\nimport { signTransaction } from \"./signTransaction\";\nimport { signBlob } from \"./signBlob\";\nimport { signAuthEntry } from \"./signAuthEntry\";\nimport { isConnected } from \"./isConnected\";\nimport { getNetwork } from \"./getNetwork\";\nimport { getNetworkDetails } from \"./getNetworkDetails\";\nimport { isAllowed } from \"./isAllowed\";\nimport { setAllowed } from \"./setAllowed\";\nimport { getUserInfo } from \"./getUserInfo\";\nimport { requestAccess } from \"./requestAccess\";\n\nexport const isBrowser = typeof window !== \"undefined\";\n\nexport {\n getPublicKey,\n signTransaction,\n signBlob,\n signAuthEntry,\n isConnected,\n getNetwork,\n getNetworkDetails,\n isAllowed,\n setAllowed,\n getUserInfo,\n requestAccess,\n};\nexport default {\n getPublicKey,\n signTransaction,\n signBlob,\n signAuthEntry,\n isConnected,\n getNetwork,\n getNetworkDetails,\n isAllowed,\n setAllowed,\n getUserInfo,\n requestAccess,\n};\n","// settings & const\nconst PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nconst supportsRequestInitExt = () => {\n return (\n typeof process === \"object\" &&\n Number.parseInt(process?.versions?.node?.substring(0, 2)) >= 18 &&\n process.versions.undici\n );\n};\n\n/**\n * Returns a cheap, non-cryptographically-secure random ID\n * Courtesy of @imranbarbhuiya (https://github.com/imranbarbhuiya)\n */\nexport function randomID() {\n return Math.random().toString(36).slice(2, 11);\n}\n\n/**\n * Create an openapi-fetch client.\n * @type {import(\"./index.js\").default}\n */\nexport default function createClient(clientOptions) {\n let {\n baseUrl = \"\",\n Request: CustomRequest = globalThis.Request,\n fetch: baseFetch = globalThis.fetch,\n querySerializer: globalQuerySerializer,\n bodySerializer: globalBodySerializer,\n pathSerializer: globalPathSerializer,\n headers: baseHeaders,\n requestInitExt = undefined,\n ...baseOptions\n } = { ...clientOptions };\n requestInitExt = supportsRequestInitExt() ? requestInitExt : undefined;\n baseUrl = removeTrailingSlash(baseUrl);\n const globalMiddlewares = [];\n\n /**\n * Per-request fetch (keeps settings created in createClient()\n * @param {T} url\n * @param {import('./index.js').FetchOptions<T>} fetchOptions\n */\n async function coreFetch(schemaPath, fetchOptions) {\n const {\n baseUrl: localBaseUrl,\n fetch = baseFetch,\n Request = CustomRequest,\n headers,\n params = {},\n parseAs = \"json\",\n querySerializer: requestQuerySerializer,\n bodySerializer = globalBodySerializer ?? defaultBodySerializer,\n pathSerializer: requestPathSerializer,\n body,\n middleware: requestMiddlewares = [],\n ...init\n } = fetchOptions || {};\n let finalBaseUrl = baseUrl;\n if (localBaseUrl) {\n finalBaseUrl = removeTrailingSlash(localBaseUrl) ?? baseUrl;\n }\n\n let querySerializer =\n typeof globalQuerySerializer === \"function\"\n ? globalQuerySerializer\n : createQuerySerializer(globalQuerySerializer);\n if (requestQuerySerializer) {\n querySerializer =\n typeof requestQuerySerializer === \"function\"\n ? requestQuerySerializer\n : createQuerySerializer({\n ...(typeof globalQuerySerializer === \"object\" ? globalQuerySerializer : {}),\n ...requestQuerySerializer,\n });\n }\n\n const pathSerializer = requestPathSerializer || globalPathSerializer || defaultPathSerializer;\n\n const serializedBody =\n body === undefined\n ? undefined\n : bodySerializer(\n body,\n // Note: we declare mergeHeaders() both here and below because it’s a bit of a chicken-or-egg situation:\n // bodySerializer() needs all headers so we aren’t dropping ones set by the user, however,\n // the result of this ALSO sets the lowest-priority content-type header. So we re-merge below,\n // setting the content-type at the very beginning to be overwritten.\n // Lastly, based on the way headers work, it’s not a simple “present-or-not” check becauase null intentionally un-sets headers.\n mergeHeaders(baseHeaders, headers, params.header),\n );\n const finalHeaders = mergeHeaders(\n // with no body, we should not to set Content-Type\n serializedBody === undefined ||\n // if serialized body is FormData; browser will correctly set Content-Type & boundary expression\n serializedBody instanceof FormData\n ? {}\n : {\n \"Content-Type\": \"application/json\",\n },\n baseHeaders,\n headers,\n params.header,\n );\n\n // Client level middleware take priority over request-level middleware\n const finalMiddlewares = [...globalMiddlewares, ...requestMiddlewares];\n\n const requestInit = {\n redirect: \"follow\",\n ...baseOptions,\n ...init,\n body: serializedBody,\n headers: finalHeaders,\n };\n\n let id;\n let options;\n let request = new Request(\n createFinalURL(schemaPath, { baseUrl: finalBaseUrl, params, querySerializer, pathSerializer }),\n requestInit,\n );\n let response;\n\n /** Add custom parameters to Request object */\n for (const key in init) {\n if (!(key in request)) {\n request[key] = init[key];\n }\n }\n\n if (finalMiddlewares.length) {\n id = randomID();\n\n // middleware (request)\n options = Object.freeze({\n baseUrl: finalBaseUrl,\n fetch,\n parseAs,\n querySerializer,\n bodySerializer,\n pathSerializer,\n });\n for (const m of finalMiddlewares) {\n if (m && typeof m === \"object\" && typeof m.onRequest === \"function\") {\n const result = await m.onRequest({\n request,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (result instanceof Request) {\n request = result;\n } else if (result instanceof Response) {\n response = result;\n break;\n } else {\n throw new Error(\"onRequest: must return new Request() or Response() when modifying the request\");\n }\n }\n }\n }\n }\n\n if (!response) {\n // fetch!\n try {\n response = await fetch(request, requestInitExt);\n } catch (error) {\n let errorAfterMiddleware = error;\n // middleware (error)\n // execute in reverse-array order (first priority gets last transform)\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onError === \"function\") {\n const result = await m.onError({\n request,\n error: errorAfterMiddleware,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n // if error is handled by returning a response, skip remaining middleware\n if (result instanceof Response) {\n errorAfterMiddleware = undefined;\n response = result;\n break;\n }\n\n if (result instanceof Error) {\n errorAfterMiddleware = result;\n continue;\n }\n\n throw new Error(\"onError: must return new Response() or instance of Error\");\n }\n }\n }\n }\n\n // rethrow error if not handled by middleware\n if (errorAfterMiddleware) {\n throw errorAfterMiddleware;\n }\n }\n\n // middleware (response)\n // execute in reverse-array order (first priority gets last transform)\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onResponse === \"function\") {\n const result = await m.onResponse({\n request,\n response,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (!(result instanceof Response)) {\n throw new Error(\"onResponse: must return new Response() when modifying the response\");\n }\n response = result;\n }\n }\n }\n }\n }\n\n const contentLength = response.headers.get(\"Content-Length\");\n // handle empty content\n if (\n response.status === 204 ||\n request.method === \"HEAD\" ||\n (contentLength === \"0\" && !response.headers.get(\"Transfer-Encoding\")?.includes(\"chunked\"))\n ) {\n return response.ok ? { data: undefined, response } : { error: undefined, response };\n }\n\n // parse response (falling back to .text() when necessary)\n if (response.ok) {\n const getResponseData = async () => {\n // if \"stream\", skip parsing entirely\n if (parseAs === \"stream\") {\n return response.body;\n }\n\n if (parseAs === \"json\" && !contentLength) {\n // use text() when no content-length is provided to avoid errors parsing empty bodies (200 with no content)\n const raw = await response.text();\n return raw ? JSON.parse(raw) : undefined;\n }\n\n return await response[parseAs]();\n };\n return { data: await getResponseData(), response };\n }\n\n // handle errors\n let error = await response.text();\n try {\n error = JSON.parse(error); // attempt to parse as JSON\n } catch {\n // noop\n }\n return { error, response };\n }\n\n return {\n request(method, url, init) {\n return coreFetch(url, { ...init, method: method.toUpperCase() });\n },\n /** Call a GET endpoint */\n GET(url, init) {\n return coreFetch(url, { ...init, method: \"GET\" });\n },\n /** Call a PUT endpoint */\n PUT(url, init) {\n return coreFetch(url, { ...init, method: \"PUT\" });\n },\n /** Call a POST endpoint */\n POST(url, init) {\n return coreFetch(url, { ...init, method: \"POST\" });\n },\n /** Call a DELETE endpoint */\n DELETE(url, init) {\n return coreFetch(url, { ...init, method: \"DELETE\" });\n },\n /** Call a OPTIONS endpoint */\n OPTIONS(url, init) {\n return coreFetch(url, { ...init, method: \"OPTIONS\" });\n },\n /** Call a HEAD endpoint */\n HEAD(url, init) {\n return coreFetch(url, { ...init, method: \"HEAD\" });\n },\n /** Call a PATCH endpoint */\n PATCH(url, init) {\n return coreFetch(url, { ...init, method: \"PATCH\" });\n },\n /** Call a TRACE endpoint */\n TRACE(url, init) {\n return coreFetch(url, { ...init, method: \"TRACE\" });\n },\n /** Register middleware */\n use(...middleware) {\n for (const m of middleware) {\n if (!m) {\n continue;\n }\n if (typeof m !== \"object\" || !(\"onRequest\" in m || \"onResponse\" in m || \"onError\" in m)) {\n throw new Error(\"Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`\");\n }\n globalMiddlewares.push(m);\n }\n },\n /** Unregister middleware */\n eject(...middleware) {\n for (const m of middleware) {\n const i = globalMiddlewares.indexOf(m);\n if (i !== -1) {\n globalMiddlewares.splice(i, 1);\n }\n }\n },\n };\n}\n\nclass PathCallForwarder {\n constructor(client, url) {\n this.client = client;\n this.url = url;\n }\n\n GET = (init) => {\n return this.client.GET(this.url, init);\n };\n PUT = (init) => {\n return this.client.PUT(this.url, init);\n };\n POST = (init) => {\n return this.client.POST(this.url, init);\n };\n DELETE = (init) => {\n return this.client.DELETE(this.url, init);\n };\n OPTIONS = (init) => {\n return this.client.OPTIONS(this.url, init);\n };\n HEAD = (init) => {\n return this.client.HEAD(this.url, init);\n };\n PATCH = (init) => {\n return this.client.PATCH(this.url, init);\n };\n TRACE = (init) => {\n return this.client.TRACE(this.url, init);\n };\n}\n\nclass PathClientProxyHandler {\n constructor() {\n this.client = null;\n }\n\n // Assume the property is an URL.\n get(coreClient, url) {\n const forwarder = new PathCallForwarder(coreClient, url);\n this.client[url] = forwarder;\n return forwarder;\n }\n}\n\n/**\n * Wrap openapi-fetch client to support a path based API.\n * @type {import(\"./index.js\").wrapAsPathBasedClient}\n */\nexport function wrapAsPathBasedClient(coreClient) {\n const handler = new PathClientProxyHandler();\n const proxy = new Proxy(coreClient, handler);\n\n // Put the proxy on the prototype chain of the actual client.\n // This means if we do not have a memoized PathCallForwarder,\n // we fall back to the proxy to synthesize it.\n // However, the proxy itself is not on the hot-path (if we fetch the same\n // endpoint multiple times, only the first call will hit the proxy).\n function Client() {}\n Client.prototype = proxy;\n\n const client = new Client();\n\n // Feed the client back to the proxy handler so it can store the generated\n // PathCallForwarder.\n handler.client = client;\n\n return client;\n}\n\n/**\n * Convenience method to an openapi-fetch path based client.\n * Strictly equivalent to `wrapAsPathBasedClient(createClient(...))`.\n * @type {import(\"./index.js\").createPathBasedClient}\n */\nexport function createPathBasedClient(clientOptions) {\n return wrapAsPathBasedClient(createClient(clientOptions));\n}\n\n// utils\n\n/**\n * Serialize primitive param values\n * @type {import(\"./index.js\").serializePrimitiveParam}\n */\nexport function serializePrimitiveParam(name, value, options) {\n if (value === undefined || value === null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.\",\n );\n }\n return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`;\n}\n\n/**\n * Serialize object param (shallow only)\n * @type {import(\"./index.js\").serializeObjectParam}\n */\nexport function serializeObjectParam(name, value, options) {\n if (!value || typeof value !== \"object\") {\n return \"\";\n }\n const values = [];\n const joiner =\n {\n simple: \",\",\n label: \".\",\n matrix: \";\",\n }[options.style] || \"&\";\n\n // explode: false\n if (options.style !== \"deepObject\" && options.explode === false) {\n for (const k in value) {\n values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k]));\n }\n const final = values.join(\",\"); // note: values are always joined by comma in explode: false (but joiner can prefix)\n switch (options.style) {\n case \"form\": {\n return `${name}=${final}`;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n default: {\n return final;\n }\n }\n }\n\n // explode: true\n for (const k in value) {\n const finalName = options.style === \"deepObject\" ? `${name}[${k}]` : k;\n values.push(serializePrimitiveParam(finalName, value[k], options));\n }\n const final = values.join(joiner);\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${final}` : final;\n}\n\n/**\n * Serialize array param (shallow only)\n * @type {import(\"./index.js\").serializeArrayParam}\n */\nexport function serializeArrayParam(name, value, options) {\n if (!Array.isArray(value)) {\n return \"\";\n }\n\n // explode: false\n if (options.explode === false) {\n const joiner = { form: \",\", spaceDelimited: \"%20\", pipeDelimited: \"|\" }[options.style] || \",\"; // note: for arrays, joiners vary wildly based on style + explode behavior\n const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner);\n switch (options.style) {\n case \"simple\": {\n return final;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n // case \"spaceDelimited\":\n // case \"pipeDelimited\":\n default: {\n return `${name}=${final}`;\n }\n }\n }\n\n // explode: true\n const joiner = { simple: \",\", label: \".\", matrix: \";\" }[options.style] || \"&\";\n const values = [];\n for (const v of value) {\n if (options.style === \"simple\" || options.style === \"label\") {\n values.push(options.allowReserved === true ? v : encodeURIComponent(v));\n } else {\n values.push(serializePrimitiveParam(name, v, options));\n }\n }\n return options.style === \"label\" || options.style === \"matrix\"\n ? `${joiner}${values.join(joiner)}`\n : values.join(joiner);\n}\n\n/**\n * Serialize query params to string\n * @type {import(\"./index.js\").createQuerySerializer}\n */\nexport function createQuerySerializer(options) {\n return function querySerializer(queryParams) {\n const search = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === undefined || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n search.push(\n serializeArrayParam(name, value, {\n style: \"form\",\n explode: true,\n ...options?.array,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n if (typeof value === \"object\") {\n search.push(\n serializeObjectParam(name, value, {\n style: \"deepObject\",\n explode: true,\n ...options?.object,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n search.push(serializePrimitiveParam(name, value, options));\n }\n }\n return search.join(\"&\");\n };\n}\n\n/**\n * Handle different OpenAPI 3.x serialization styles\n * @type {import(\"./index.js\").defaultPathSerializer}\n * @see https://swagger.io/docs/specification/serialization/#path\n */\nexport function defaultPathSerializer(pathname, pathParams) {\n let nextURL = pathname;\n for (const match of pathname.match(PATH_PARAM_RE) ?? []) {\n let name = match.substring(1, match.length - 1);\n let explode = false;\n let style = \"simple\";\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith(\".\")) {\n style = \"label\";\n name = name.substring(1);\n } else if (name.startsWith(\";\")) {\n style = \"matrix\";\n name = name.substring(1);\n }\n if (!pathParams || pathParams[name] === undefined || pathParams[name] === null) {\n continue;\n }\n const value = pathParams[name];\n if (Array.isArray(value)) {\n nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode }));\n continue;\n }\n if (typeof value === \"object\") {\n nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode }));\n continue;\n }\n if (style === \"matrix\") {\n nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`);\n continue;\n }\n nextURL = nextURL.replace(match, style === \"label\" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value));\n }\n return nextURL;\n}\n\n/**\n * Serialize body object to string\n * @type {import(\"./index.js\").defaultBodySerializer}\n */\nexport function defaultBodySerializer(body, headers) {\n if (body instanceof FormData) {\n return body;\n }\n if (headers) {\n const contentType =\n headers.get instanceof Function\n ? (headers.get(\"Content-Type\") ?? headers.get(\"content-type\"))\n : (headers[\"Content-Type\"] ?? headers[\"content-type\"]);\n if (contentType === \"application/x-www-form-urlencoded\") {\n return new URLSearchParams(body).toString();\n }\n }\n return JSON.stringify(body);\n}\n\n/**\n * Construct URL string from baseUrl and handle path and query params\n * @type {import(\"./index.js\").createFinalURL}\n */\nexport function createFinalURL(pathname, options) {\n let finalURL = `${options.baseUrl}${pathname}`;\n if (options.params?.path) {\n finalURL = options.pathSerializer(finalURL, options.params.path);\n }\n let search = options.querySerializer(options.params.query ?? {});\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n finalURL += `?${search}`;\n }\n return finalURL;\n}\n\n/**\n * Merge headers a and b, with b taking priority\n * @type {import(\"./index.js\").mergeHeaders}\n */\nexport function mergeHeaders(...allHeaders) {\n const finalHeaders = new Headers();\n for (const h of allHeaders) {\n if (!h || typeof h !== \"object\") {\n continue;\n }\n const iterator = h instanceof Headers ? h.entries() : Object.entries(h);\n for (const [k, v] of iterator) {\n if (v === null) {\n finalHeaders.delete(k);\n } else if (Array.isArray(v)) {\n for (const v2 of v) {\n finalHeaders.append(k, v2);\n }\n } else if (v !== undefined) {\n finalHeaders.set(k, v);\n }\n }\n }\n return finalHeaders;\n}\n\n/**\n * Remove trailing slash from url\n * @type {import(\"./index.js\").removeTrailingSlash}\n */\nexport function removeTrailingSlash(url) {\n if (url.endsWith(\"/\")) {\n return url.substring(0, url.length - 1);\n }\n return url;\n}\n","import createClient from 'openapi-fetch';\nimport type { paths } from './schema';\n\nexport type PollarApiClient = ReturnType<typeof createApiClient>;\n\nexport function createApiClient(baseUrl: string) {\n return createClient<paths>({ baseUrl });\n}","export const StateStatus = {\n NONE: 'NONE',\n LOADING: 'LOADING',\n SUCCESS: 'SUCCESS',\n ERROR: 'ERROR',\n} as const;\nexport type StateStatus = (typeof StateStatus)[keyof typeof StateStatus];\n\nexport const PollarStateVar = {\n NETWORK: 'network',\n AUTHENTICATION: 'authentication',\n TRANSACTION: 'transaction',\n} as const;\n\nexport type PollarStateVar = (typeof PollarStateVar)[keyof typeof PollarStateVar];\n\nexport const STATE_VAR_CODES = {\n authentication: {\n NONE: 'NONE',\n LOGOUT: 'LOGOUT',\n CREATE_SESSION_START: 'CREATE_SESSION_START',\n CREATE_SESSION_ERROR: 'CREATE_SESSION_ERROR',\n CREATE_SESSION_SUCCESS: 'CREATE_SESSION_SUCCESS',\n EMAIL_AUTH_START: 'EMAIL_AUTH_START',\n EMAIL_AUTH_START_ERROR: 'EMAIL_AUTH_START_ERROR',\n EMAIL_AUTH_START_SUCCESS: 'EMAIL_AUTH_START_SUCCESS',\n EMAIL_AUTH_CODE_ERROR: 'EMAIL_AUTH_CODE_ERROR',\n EMAIL_AUTH_CODE_SUCCESS: 'EMAIL_AUTH_CODE_SUCCESS',\n WALLET_AUTH_START: 'WALLET_AUTH_START',\n WALLET_AUTH_FREIGHTER_NOT_INSTALLED: 'WALLET_AUTH_FREIGHTER_NOT_INSTALLED',\n WALLET_AUTH_ALBEDO_NOT_INSTALLED: 'WALLET_AUTH_ALBEDO_NOT_INSTALLED',\n WALLET_AUTH_CONNECTED: 'WALLET_AUTH_CONNECTED',\n WALLET_AUTH_LOGIN_START: 'WALLET_AUTH_LOGIN_START',\n WALLET_AUTH_LOGIN_START_SUCCESS: 'WALLET_AUTH_LOGIN_START_SUCCESS',\n WALLET_AUTH_LOGIN_START_ERROR: 'WALLET_AUTH_LOGIN_START_ERROR',\n WALLET_AUTH_ERROR: 'WALLET_AUTH_ERROR',\n STREAM_POLL_START: 'STREAM_POLL_START',\n STREAM_POLL_EVENT: 'STREAM_POLL_EVENT',\n STREAM_POLL_READY: 'STREAM_POLL_READY',\n FETCH_SESSION_START: 'FETCH_SESSION_START',\n FETCH_SESSION_SUCCESS: 'FETCH_SESSION_SUCCESS',\n FETCH_SESSION_ERROR: 'FETCH_SESSION_ERROR',\n NO_RESTORED_SESSION: 'NO_RESTORED_SESSION',\n RESTORED_SESSION_SUCCESS: 'RESTORED_SESSION_SUCCESS',\n RESTORED_SESSION_ERROR: 'RESTORED_SESSION_ERROR',\n SESSION_STORED: 'SESSION_STORED',\n ERROR_ABORTED: 'ABORTED',\n ERROR_UNKNOWN: 'ERROR_UNKNOWN',\n },\n walletAddress: {\n NONE: 'NONE',\n REMOVED_ADDRESS: 'REMOVED_ADDRESS',\n UPDATED_ADDRESS: 'UPDATED_ADDRESS',\n },\n transaction: {\n NONE: 'NONE',\n BUILD_TRANSACTION_ERROR_NO_WALLET: 'BUILD_TRANSACTION_ERROR_NO_WALLET',\n BUILD_TRANSACTION_START: 'BUILD_TRANSACTION_START',\n BUILD_TRANSACTION_SUCCESS: 'BUILD_TRANSACTION_SUCCESS',\n BUILD_TRANSACTION_ERROR: 'BUILD_TRANSACTION_ERROR',\n SIGN_SEND_TRANSACTION_START: 'SIGN_SEND_TRANSACTION_START',\n SIGN_SEND_TRANSACTION_SUCCESS: 'SIGN_SEND_TRANSACTION_SUCCESS',\n SIGN_SEND_TRANSACTION_ERROR: 'SIGN_SEND_TRANSACTION_ERROR',\n },\n network: {\n NONE: 'NONE',\n NETWORK_UPDATED: 'NETWORK_UPDATED',\n },\n} as const;\n","import { PollarStateVar, StateStatus } from '../constants';\nimport { PollarStateEntry } from '../types';\n\nexport const emitResponse = <T>(\n state: PollarStateVar,\n response: { data?: any; error?: any },\n success: { code: T; status?: StateStatus },\n errorCode: T,\n emitLog: (\n state: PollarStateVar,\n code: T,\n level: PollarStateEntry['level'],\n status: PollarStateEntry['status'],\n data?: unknown,\n ) => void,\n) => {\n const isSuccess = !response.error && !!response.data && !!response.data?.success;\n emitLog(\n state,\n isSuccess ? success.code : errorCode,\n isSuccess ? 'info' : 'error',\n isSuccess ? success.status || StateStatus.LOADING : StateStatus.ERROR,\n isSuccess ? response.data : response.error,\n );\n return isSuccess;\n};\n","// Derived from stellar-wallet-kit by Tushar Pamnani (MIT)\n// https://github.com/tusharpamnani/stellar-wallet-kit\n\nimport {\n getNetwork,\n getUserInfo,\n isAllowed,\n isConnected,\n setAllowed,\n signAuthEntry,\n signTransaction,\n} from '@stellar/freighter-api';\n\nimport type {\n ConnectWalletResponse,\n SignAuthEntryOptions,\n SignAuthEntryResponse,\n SignTransactionOptions,\n SignTransactionResponse,\n WalletAdapter,\n} from './types';\nimport { WalletType } from './types';\n\nexport class FreighterAdapter implements WalletAdapter {\n readonly type = WalletType.FREIGHTER;\n\n async isAvailable(): Promise<boolean> {\n try {\n return await isConnected();\n } catch {\n return false;\n }\n }\n\n async connect(): Promise<ConnectWalletResponse> {\n const connected = await isConnected();\n if (!connected) {\n throw new Error('Freighter wallet is not installed');\n }\n\n const allowed = await isAllowed();\n if (!allowed) {\n await setAllowed();\n }\n\n const userInfo = await getUserInfo();\n if (!userInfo?.publicKey) {\n throw new Error('Failed to get user information from Freighter');\n }\n\n return { address: userInfo.publicKey, publicKey: userInfo.publicKey };\n }\n\n async disconnect(): Promise<void> {\n // Freighter does not expose a programmatic disconnect\n }\n\n async getPublicKey(): Promise<string | null> {\n try {\n const allowed = await isAllowed();\n if (!allowed) return null;\n const userInfo = await getUserInfo();\n return userInfo?.publicKey ?? null;\n } catch {\n return null;\n }\n }\n\n async getNetwork(): Promise<string> {\n return getNetwork();\n }\n\n async signTransaction(xdr: string, options?: SignTransactionOptions): Promise<SignTransactionResponse> {\n const result = await signTransaction(xdr, {\n network: options?.network,\n networkPassphrase: options?.networkPassphrase,\n accountToSign: options?.accountToSign,\n });\n if (!result || typeof result !== 'string') {\n throw new Error('Invalid response from Freighter');\n }\n return { signedTxXdr: result };\n }\n\n async signAuthEntry(entryXdr: string, options?: SignAuthEntryOptions): Promise<SignAuthEntryResponse> {\n const result = await signAuthEntry(entryXdr, { accountToSign: options?.accountToSign });\n if (!result || typeof result !== 'string') {\n throw new Error('Invalid response from Freighter');\n }\n return { signedAuthEntry: result };\n }\n}\n","// Derived from stellar-wallet-kit by Tushar Pamnani (MIT)\n// https://github.com/tusharpamnani/stellar-wallet-kit\n\nexport enum WalletType {\n FREIGHTER = 'freighter',\n ALBEDO = 'albedo',\n}\n\nexport interface ConnectWalletResponse {\n address: string;\n publicKey: string;\n}\n\nexport interface SignTransactionOptions {\n network?: string;\n networkPassphrase?: string;\n accountToSign?: string;\n}\n\nexport interface SignAuthEntryOptions {\n accountToSign?: string;\n}\n\nexport interface SignTransactionResponse {\n signedTxXdr: string;\n}\n\nexport interface SignAuthEntryResponse {\n signedAuthEntry: string;\n}\n\nexport interface WalletAdapter {\n type: WalletType;\n isAvailable(): Promise<boolean>;\n connect(): Promise<ConnectWalletResponse>;\n disconnect(): Promise<void>;\n getPublicKey(): Promise<string | null>;\n signTransaction(xdr: string, options?: SignTransactionOptions): Promise<SignTransactionResponse>;\n signAuthEntry(entryXdr: string, options?: SignAuthEntryOptions): Promise<SignAuthEntryResponse>;\n}\n","// Derived from stellar-wallet-kit by Tushar Pamnani (MIT)\n// https://github.com/tusharpamnani/stellar-wallet-kit\n\nimport { WalletType } from './types';\nimport type {\n WalletAdapter,\n ConnectWalletResponse,\n SignTransactionOptions,\n SignTransactionResponse,\n SignAuthEntryOptions,\n SignAuthEntryResponse,\n} from './types';\n\nfunction openAlbedoPopup(url: string): Window {\n const popup = window.open(url, 'albedo', 'width=420,height=720,resizable=yes,scrollbars=yes');\n if (!popup) {\n throw new Error('Failed to open Albedo popup (blocked by browser)');\n }\n return popup;\n}\n\nfunction waitForAlbedoPopup(): Promise<Record<string, string>> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error('Albedo response timeout')), 2 * 60 * 1000);\n\n function handler(event: MessageEvent) {\n if (event.origin !== window.location.origin || event.data?.type !== 'ALBEDO_RESULT') return;\n clearTimeout(timeout);\n window.removeEventListener('message', handler);\n resolve(event.data.payload as Record<string, string>);\n }\n\n window.addEventListener('message', handler);\n });\n}\n\nfunction waitForAlbedoResult(): Promise<Record<string, string>> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error('Albedo response timeout')), 2 * 60 * 1000);\n\n const parseResult = () => {\n const params = new URLSearchParams(window.location.search);\n if (!params.has('pubkey') && !params.has('signed_envelope_xdr') && !params.has('signed_xdr')) return;\n\n clearTimeout(timeout);\n const result: Record<string, string> = {};\n params.forEach((value, key) => { result[key] = value; });\n window.history.replaceState({}, document.title, window.location.pathname);\n resolve(result);\n };\n\n parseResult();\n window.addEventListener('popstate', parseResult);\n });\n}\n\nexport class AlbedoAdapter implements WalletAdapter {\n readonly type = WalletType.ALBEDO;\n\n async isAvailable(): Promise<boolean> {\n return typeof window !== 'undefined';\n }\n\n async connect(): Promise<ConnectWalletResponse> {\n const url = new URL('https://albedo.link');\n url.searchParams.set('intent', 'public-key');\n url.searchParams.set('app_name', 'Pollar');\n url.searchParams.set('network', 'testnet');\n url.searchParams.set('callback', `${window.location.origin}/albedo-callback`);\n url.searchParams.set('origin', window.location.origin);\n\n openAlbedoPopup(url.toString());\n const result = await waitForAlbedoPopup();\n\n if (!result.pubkey) {\n throw new Error('Albedo connection rejected');\n }\n\n return { address: result.pubkey, publicKey: result.pubkey };\n }\n\n async disconnect(): Promise<void> {}\n\n async getPublicKey(): Promise<string | null> {\n return null; // Albedo does not support silent reconnect\n }\n\n async getNetwork(): Promise<string> {\n throw new Error('Albedo does not expose network');\n }\n\n async signTransaction(xdr: string, _options?: SignTransactionOptions): Promise<SignTransactionResponse> {\n const url = new URL('https://albedo.link');\n url.searchParams.set('intent', 'tx');\n url.searchParams.set('xdr', xdr);\n url.searchParams.set('app_name', 'Pollar');\n url.searchParams.set('network', 'testnet');\n url.searchParams.set('callback', window.location.href);\n url.searchParams.set('origin', window.location.origin);\n\n window.location.href = url.toString();\n const result = await waitForAlbedoResult();\n\n if (!result.signed_envelope_xdr) throw new Error('Albedo signing rejected');\n return { signedTxXdr: result.signed_envelope_xdr };\n }\n\n async signAuthEntry(entryXdr: string, _options?: SignAuthEntryOptions): Promise<SignAuthEntryResponse> {\n const url = new URL('https://albedo.link');\n url.searchParams.set('intent', 'sign-auth-entry');\n url.searchParams.set('xdr', entryXdr);\n url.searchParams.set('app_name', 'Pollar');\n url.searchParams.set('network', 'testnet');\n url.searchParams.set('callback', window.location.href);\n url.searchParams.set('origin', window.location.origin);\n\n window.location.href = url.toString();\n const result = await waitForAlbedoResult();\n\n if (!result.signed_xdr) throw new Error('Albedo auth entry signing rejected');\n return { signedAuthEntry: result.signed_xdr };\n }\n}","import { PollarApplicationConfigContent } from '../types';\n\nexport const STORAGE_KEY = 'pollar:session';\n\nexport function isValidSession(value: unknown): value is PollarApplicationConfigContent {\n if (typeof value !== 'object' || value === null) {\n console.warn('[PollarClient:session] Invalid session — value is not an object');\n return false;\n }\n\n const s = value as Record<string, unknown>;\n\n // clientSessionId: string\n if (typeof s['clientSessionId'] !== 'string' || s['clientSessionId'] === '') {\n console.warn('[PollarClient:session] Invalid session — clientSessionId missing or empty');\n return false;\n }\n\n // userId: string | null (required, explicitly null or string)\n if (s['userId'] !== null && typeof s['userId'] !== 'string') {\n console.warn('[PollarClient:session] Invalid session — userId must be string or null, got:', typeof s['userId']);\n return false;\n }\n\n // status: string\n if (typeof s['status'] !== 'string') {\n console.warn('[PollarClient:session] Invalid session — status must be string, got:', typeof s['status']);\n return false;\n }\n\n // token: { accessToken: string, refreshToken: string, expiresAt: number }\n const token = s['token'];\n if (typeof token !== 'object' || token === null) {\n console.warn('[PollarClient:session] Invalid session — token missing or not an object');\n return false;\n }\n const t = token as Record<string, unknown>;\n if (typeof t['accessToken'] !== 'string' || t['accessToken'] === '') {\n console.warn('[PollarClient:session] Invalid session — token.accessToken missing or empty');\n return false;\n }\n if (typeof t['refreshToken'] !== 'string' || t['refreshToken'] === '') {\n console.warn('[PollarClient:session] Invalid session — token.refreshToken missing or empty');\n return false;\n }\n if (typeof t['expiresAt'] !== 'number' || !Number.isFinite(t['expiresAt'])) {\n console.warn('[PollarClient:session] Invalid session — token.expiresAt must be a finite number');\n return false;\n }\n\n // user: { id?: string, ready: boolean }\n const user = s['user'];\n if (typeof user !== 'object' || user === null) {\n console.warn('[PollarClient:session] Invalid session — user missing or not an object');\n return false;\n }\n const u = user as Record<string, unknown>;\n if (u['id'] !== undefined && typeof u['id'] !== 'string') {\n console.warn('[PollarClient:session] Invalid session — user.id must be string if present, got:', typeof u['id']);\n return false;\n }\n if (typeof u['ready'] !== 'boolean') {\n console.warn('[PollarClient:session] Invalid session — user.ready must be boolean, got:', typeof u['ready']);\n return false;\n }\n\n // wallet: { publicKey: string | null, existsOnStellar?: boolean, createdAt?: number }\n const wallet = s['wallet'];\n if (typeof wallet !== 'object' || wallet === null) {\n console.warn('[PollarClient:session] Invalid session — wallet missing or not an object');\n return false;\n }\n const w = wallet as Record<string, unknown>;\n if (w['publicKey'] !== null && typeof w['publicKey'] !== 'string') {\n console.warn(\n '[PollarClient:session] Invalid session — wallet.publicKey must be string or null, got:',\n typeof w['publicKey'],\n );\n return false;\n }\n if (w['existsOnStellar'] !== undefined && typeof w['existsOnStellar'] !== 'boolean') {\n console.warn('[PollarClient:session] Invalid session — wallet.existsOnStellar must be boolean if present');\n return false;\n }\n if (w['createdAt'] !== undefined && (typeof w['createdAt'] !== 'number' || !Number.isFinite(w['createdAt']))) {\n console.warn('[PollarClient:session] Invalid session — wallet.createdAt must be a finite number if present');\n return false;\n }\n\n // data: { mail, first_name, last_name, avatar: string, providers: {...} }\n const data = s['data'];\n if (typeof data !== 'object' || data === null) {\n console.warn('[PollarClient:session] Invalid session — data missing or not an object');\n return false;\n }\n const d = data as Record<string, unknown>;\n\n for (const field of ['mail', 'first_name', 'last_name', 'avatar'] as const) {\n if (typeof d[field] !== 'string') {\n console.warn(`[PollarClient:session] Invalid session — data.${field} must be string, got:`, typeof d[field]);\n return false;\n }\n }\n\n // providers: { email: {address:string}|null, google: {id:string}|null, github: {id:string}|null, wallet: {address:string}|null }\n const providers = d['providers'];\n if (typeof providers !== 'object' || providers === null) {\n console.warn('[PollarClient:session] Invalid session — data.providers missing or not an object');\n return false;\n }\n const p = providers as Record<string, unknown>;\n\n const providerInnerField = { email: 'address', google: 'id', github: 'id', wallet: 'address' } as const;\n\n for (const [field, innerField] of Object.entries(providerInnerField) as [keyof typeof providerInnerField, string][]) {\n const v = p[field];\n if (v === null) continue;\n if (typeof v !== 'object') {\n console.warn(`[PollarClient:session] Invalid session — data.providers.${field} must be object or null, got:`, typeof v);\n return false;\n }\n const vObj = v as Record<string, unknown>;\n if (typeof vObj[innerField] !== 'string' || vObj[innerField] === '') {\n console.warn(`[PollarClient:session] Invalid session — data.providers.${field}.${innerField} must be a non-empty string`);\n return false;\n }\n }\n\n return true;\n}\n\nexport function readStorage(): PollarApplicationConfigContent | null {\n const raw = localStorage.getItem(STORAGE_KEY);\n if (!raw) {\n return null;\n }\n\n try {\n const session = JSON.parse(raw) as unknown;\n\n if (!isValidSession(session)) {\n localStorage.removeItem(STORAGE_KEY);\n console.warn('[PollarClient:session] Stored session is invalid — clearing storage');\n return null;\n }\n\n if (session.token.expiresAt * 1000 < Date.now()) {\n localStorage.removeItem(STORAGE_KEY);\n console.warn('[PollarClient:session] Session token has expired — clearing storage');\n return null;\n }\n\n return session;\n } catch (error) {\n console.error('[PollarClient:session] Failed to parse session from storage', error);\n localStorage.removeItem(STORAGE_KEY);\n return null;\n }\n}\n\nexport function writeStorage(session: PollarApplicationConfigContent): void {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(session));\n console.info('[PollarClient:session] Session written to storage');\n}\n\nexport function removeStorage(): void {\n localStorage.removeItem(STORAGE_KEY);\n console.info('[PollarClient:session] Session removed from storage');\n}\n","import { PollarApiClient } from '../api/client';\n\nfunction abortableDelay(ms: number, signal: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n const t = setTimeout(resolve, ms);\n signal.addEventListener(\n 'abort',\n () => {\n clearTimeout(t);\n reject(new DOMException('Aborted', 'AbortError'));\n },\n { once: true },\n );\n });\n}\n\nexport async function streamUntilFound(\n api: PollarApiClient,\n clientSessionId: string,\n check: (data: Record<string, unknown>) => boolean,\n retryDelayMs = 200,\n signal?: AbortSignal,\n): Promise<Record<string, unknown>> {\n while (true) {\n signal?.throwIfAborted();\n\n let data, error;\n try {\n ({ data, error } = await api.GET('/auth/session/status/{clientSessionId}', {\n params: { path: { clientSessionId } },\n parseAs: 'stream',\n signal: signal ?? null,\n }));\n } catch (e) {\n if (e instanceof Error && e.name === 'AbortError') throw e;\n console.warn(e);\n }\n\n if (error || !data) {\n if (signal) await abortableDelay(retryDelayMs, signal);\n else await new Promise((r) => setTimeout(r, retryDelayMs));\n continue;\n }\n\n const reader = data.getReader();\n const decoder = new TextDecoder();\n let streamDone = false;\n\n try {\n while (true) {\n signal?.throwIfAborted();\n const { done, value } = await reader.read();\n if (done) {\n streamDone = true;\n break;\n }\n\n const chunk = decoder.decode(value);\n for (const message of chunk.split('\\n\\n').filter(Boolean)) {\n const dataLine = message.split('\\n').find((l) => l.startsWith('data:'));\n if (!dataLine) continue;\n try {\n const parsed = JSON.parse(dataLine.slice('data:'.length).trim());\n if (check(parsed)) {\n return parsed;\n }\n } catch {\n // chunk parcial, ignorar\n }\n }\n }\n } catch (e) {\n if (e instanceof Error && e.name === 'AbortError') throw e;\n console.warn(e);\n } finally {\n reader.releaseLock();\n }\n\n // stream cerrado sin encontrar el valor → reintenta\n const delay = streamDone ? retryDelayMs : 0;\n if (delay) {\n if (signal) await abortableDelay(delay, signal);\n else await new Promise((r) => setTimeout(r, delay));\n }\n }\n}\n","import { PollarApiClient } from '../api/client';\nimport { PollarStateVar, STATE_VAR_CODES, StateStatus } from '../constants';\nimport { PollarApplicationConfigContent, PollarLoginOptions, PollarStateEntry } from '../types';\nimport { AlbedoAdapter, FreighterAdapter, WalletType } from '../wallets';\nimport { emitResponse } from './helpers';\nimport { isValidSession } from './session';\nimport { streamUntilFound } from './stream';\n\nfunction withSignal<T>(promise: Promise<T>, signal: AbortSignal): Promise<T> {\n return Promise.race([\n promise,\n new Promise<never>((_, reject) => {\n if (signal.aborted) {\n reject(new DOMException('Aborted', 'AbortError'));\n return;\n }\n signal.addEventListener('abort', () => reject(new DOMException('Aborted', 'AbortError')), { once: true });\n }),\n ]);\n}\n\nexport type LoginDeps = {\n api: PollarApiClient;\n basePath: string;\n apiKey: string;\n signal: AbortSignal;\n emitState: (\n state: PollarStateEntry['var'],\n code: PollarStateEntry['code'],\n level: PollarStateEntry['level'],\n status: PollarStateEntry['status'],\n data?: PollarStateEntry['data'],\n ) => void;\n storeSession: (session: PollarApplicationConfigContent) => void;\n clearSession: () => void;\n};\n\nexport async function login(options: PollarLoginOptions, deps: LoginDeps): Promise<void> {\n const { api, basePath, apiKey, signal, emitState, storeSession, clearSession } = deps;\n\n // Open the OAuth popup immediately (before any await) so Safari/iOS doesn't block it.\n // On non-OAuth providers this stays null and is never used.\n const oauthPopup =\n options.provider === 'google' || options.provider === 'github'\n ? window.open('about:blank', '_blank')\n : null;\n\n emitState('authentication', STATE_VAR_CODES.authentication.CREATE_SESSION_START, 'info', StateStatus.LOADING);\n const createSessionResponse = await api.POST('/auth/session', { signal });\n\n if (\n !emitResponse(\n PollarStateVar.AUTHENTICATION,\n createSessionResponse,\n { code: STATE_VAR_CODES.authentication.CREATE_SESSION_SUCCESS },\n STATE_VAR_CODES.authentication.CREATE_SESSION_ERROR,\n emitState,\n )\n ) {\n oauthPopup?.close();\n return;\n }\n\n const clientSessionId = createSessionResponse.data!.content.clientSessionId;\n\n switch (options.provider) {\n case 'email': {\n emitState('authentication', STATE_VAR_CODES.authentication.EMAIL_AUTH_START, 'info', StateStatus.LOADING, {\n email: options.email,\n });\n const emailRes = await api.POST(`/auth/email`, {\n body: { clientSessionId, email: options.email },\n signal,\n });\n\n if (\n !emitResponse(\n PollarStateVar.AUTHENTICATION,\n emailRes,\n { code: STATE_VAR_CODES.authentication.EMAIL_AUTH_START_SUCCESS },\n STATE_VAR_CODES.authentication.EMAIL_AUTH_START_ERROR,\n emitState,\n )\n ) {\n return;\n }\n break;\n }\n case 'google':\n case 'github': {\n const url = new URL(`${basePath}/auth/${options.provider}`);\n url.searchParams.set('api_key', apiKey);\n url.searchParams.set('client_session_id', clientSessionId);\n url.searchParams.set('redirect_uri', window.location.origin);\n if (oauthPopup) {\n oauthPopup.location.href = url.toString();\n } else {\n // Fallback: popup was blocked by the browser\n window.open(url.toString(), '_blank');\n }\n break;\n }\n case 'wallet': {\n try {\n emitState('authentication', STATE_VAR_CODES.authentication.WALLET_AUTH_START, 'info', StateStatus.LOADING, {\n adapter: options.type,\n });\n const adapter = options.type === WalletType.FREIGHTER ? new FreighterAdapter() : new AlbedoAdapter();\n\n const available = await withSignal(adapter.isAvailable(), signal);\n if (!available) {\n emitState(\n 'authentication',\n options.type === WalletType.FREIGHTER\n ? STATE_VAR_CODES.authentication.WALLET_AUTH_FREIGHTER_NOT_INSTALLED\n : STATE_VAR_CODES.authentication.WALLET_AUTH_ALBEDO_NOT_INSTALLED,\n 'info',\n StateStatus.LOADING,\n {\n type: options.type,\n },\n );\n }\n\n const { publicKey } = await withSignal(adapter.connect(), signal);\n emitState('authentication', STATE_VAR_CODES.authentication.WALLET_AUTH_CONNECTED, 'info', StateStatus.LOADING, {\n adapter: options.type,\n publicKey,\n });\n emitState('authentication', STATE_VAR_CODES.authentication.WALLET_AUTH_LOGIN_START, 'info', StateStatus.LOADING, {\n adapter: options.type,\n publicKey,\n });\n const emailRes = await api.POST(`/auth/wallet`, {\n body: { clientSessionId, walletAddress: publicKey },\n signal,\n });\n\n if (\n !emitResponse(\n PollarStateVar.AUTHENTICATION,\n emailRes,\n { code: STATE_VAR_CODES.authentication.WALLET_AUTH_LOGIN_START_SUCCESS },\n STATE_VAR_CODES.authentication.WALLET_AUTH_LOGIN_START_ERROR,\n emitState,\n )\n ) {\n return;\n }\n } catch (error) {\n emitState('authentication', STATE_VAR_CODES.authentication.WALLET_AUTH_ERROR, 'error', StateStatus.ERROR, {\n clientSessionId,\n });\n }\n break;\n }\n }\n\n emitState('authentication', STATE_VAR_CODES.authentication.STREAM_POLL_START, 'info', StateStatus.LOADING, {\n clientSessionId,\n });\n await streamUntilFound(\n api,\n clientSessionId,\n (data) => {\n const status = data?.status;\n if (status === 'READY') {\n emitState('authentication', STATE_VAR_CODES.authentication.STREAM_POLL_READY, 'info', StateStatus.LOADING);\n return true;\n }\n emitState(\n 'authentication',\n (STATE_VAR_CODES.authentication.STREAM_POLL_EVENT + (status ? `/${status}` : '')) as PollarStateEntry['code'],\n 'info',\n StateStatus.LOADING,\n data,\n );\n return false;\n },\n 200,\n signal,\n );\n\n emitState('authentication', STATE_VAR_CODES.authentication.FETCH_SESSION_START, 'info', StateStatus.LOADING);\n const { data, error } = await api.POST(`/auth/login`, {\n body: { clientSessionId },\n signal,\n });\n\n if (data?.code === 'SDK_LOGIN_SUCCESS' && isValidSession(data?.content)) {\n emitState('authentication', STATE_VAR_CODES.authentication.FETCH_SESSION_SUCCESS, 'info', StateStatus.SUCCESS);\n storeSession(data.content);\n } else {\n emitState('authentication', STATE_VAR_CODES.authentication.FETCH_SESSION_ERROR, 'error', StateStatus.ERROR, {\n error,\n data,\n });\n clearSession();\n }\n}\n","import { createApiClient, PollarApiClient } from '../api/client';\nimport { PollarStateVar, STATE_VAR_CODES, StateStatus } from '../constants';\nimport {\n PollarApplicationConfigContent,\n PollarClientConfig,\n PollarLoginOptions,\n PollarState,\n PollarStateEntry,\n StateVarCodes,\n TxBuildBody,\n TxSignAndSendBody,\n} from '../types';\nimport { emitResponse } from './helpers';\nimport { login as loginFn } from './login';\nimport { readStorage, removeStorage, STORAGE_KEY, writeStorage } from './session';\n\nconst isBrowser = typeof window !== 'undefined' && typeof localStorage !== 'undefined';\n\nfunction warnServerSide(method: string): void {\n console.warn(\n `[PollarClient] ${method}() called server-side — browser APIs unavailable. Use PollarClient only in Client Components.`,\n );\n}\n\nexport class PollarClient {\n readonly apiKey: string;\n readonly id: string;\n readonly basePath: string;\n\n private readonly _api: PollarApiClient;\n private _session: PollarApplicationConfigContent | null = null;\n private _stateListeners = new Set<(log: PollarStateEntry) => void>();\n private _state: PollarState = {\n network: [],\n authentication: [],\n transaction: [],\n };\n\n constructor(config: PollarClientConfig) {\n this.apiKey = config.apiKey;\n this.id = crypto.randomUUID();\n this.basePath = `${config.baseUrl || 'https://sdk.api.pollar.xyz'}/v1`;\n this._api = createApiClient(this.basePath);\n this._api.use({\n onRequest({ request }: { request: Request }) {\n request.headers.set('x-pollar-api-key', config.apiKey);\n return request;\n },\n });\n\n if (!isBrowser) {\n warnServerSide('constructor');\n this._session = null;\n return;\n }\n\n console.info(`[PollarClient] Initialized — endpoint: ${this.basePath}`);\n\n this._readStore();\n\n window.addEventListener('storage', (e: StorageEvent) => {\n if (e.key === STORAGE_KEY) {\n const prev = this._session;\n console.info(`[PollarClient] Storage event — session ${this._session ? 'updated' : prev ? 'cleared' : 'unchanged'}`);\n this._readStore();\n }\n });\n\n this._emitState('network', STATE_VAR_CODES.network.NETWORK_UPDATED, 'info', StateStatus.SUCCESS, {\n network: 'testnet',\n });\n }\n\n isAuthenticated(): boolean {\n return !!this._session?.wallet?.publicKey;\n }\n\n getState() {\n return { session: this._session };\n }\n\n getApi(): PollarApiClient {\n return this._api;\n }\n\n login(options: PollarLoginOptions): { cancelLogin: () => void } {\n if (!isBrowser) {\n warnServerSide('login');\n return {\n cancelLogin: () => {},\n };\n }\n\n const controller = new AbortController();\n\n console.info(`[PollarClient] Login started — provider: ${options.provider}`);\n\n loginFn(options, {\n api: this._api,\n basePath: this.basePath,\n apiKey: this.apiKey,\n signal: controller.signal,\n emitState: this._emitState.bind(this),\n storeSession: this._storeSession.bind(this),\n clearSession: this._clearSession.bind(this),\n }).catch((error: unknown) => {\n if (error instanceof Error && error.name === 'AbortError') {\n console.info('[PollarClient] Login aborted by user');\n this._emitState('authentication', STATE_VAR_CODES.authentication.ERROR_ABORTED, 'error', StateStatus.ERROR);\n return;\n }\n console.error('[PollarClient] Login failed with unexpected error', error);\n this._emitState('authentication', STATE_VAR_CODES.authentication.ERROR_UNKNOWN, 'error', StateStatus.ERROR, {\n error,\n });\n });\n\n return { cancelLogin: () => controller.abort() };\n }\n\n onStateChange(cb: (state: PollarStateEntry) => void): () => void {\n this._stateListeners.add(cb);\n for (const [, stateEntry] of Object.entries(this._state)) {\n if (stateEntry.length >= 1) {\n cb(stateEntry.at(-1)!);\n }\n }\n return () => this._stateListeners.delete(cb);\n }\n\n async verifyEmailCode(clientSessionId: string, code: string): Promise<void> {\n if (!isBrowser) {\n warnServerSide('verifyEmailCode');\n return;\n }\n try {\n const { error, data } = await this._api.POST('/auth/email/verify-code', {\n body: { clientSessionId, code },\n });\n if (error || !data || data?.code !== 'SDK_EMAIL_CODE_VERIFIED') {\n this._emitState('authentication', STATE_VAR_CODES.authentication.EMAIL_AUTH_CODE_ERROR, 'error', StateStatus.ERROR, {\n data,\n error,\n });\n return;\n }\n\n this._emitState('authentication', STATE_VAR_CODES.authentication.EMAIL_AUTH_CODE_SUCCESS, 'info', StateStatus.SUCCESS, {\n data,\n error,\n });\n } catch (error) {\n this._emitState(\n 'authentication',\n STATE_VAR_CODES.authentication.WALLET_AUTH_ALBEDO_NOT_INSTALLED,\n 'error',\n StateStatus.ERROR,\n );\n }\n }\n\n getNetwork() {\n return (this._state.network.at(-1)?.data as { network: string })?.network === 'public' ? 'public' : 'testnet';\n }\n\n async buildTx(\n operation: TxBuildBody['operation'],\n params: TxBuildBody['params'],\n options?: TxBuildBody['options'],\n ): Promise<void> {\n if (!this._session?.wallet?.publicKey) {\n this._emitState('transaction', STATE_VAR_CODES.transaction.BUILD_TRANSACTION_ERROR_NO_WALLET, 'error', StateStatus.ERROR);\n return;\n }\n\n const body: TxBuildBody = {\n network: this.getNetwork(),\n publicKey: this._session?.wallet?.publicKey,\n operation,\n params,\n options: options || {},\n };\n\n try {\n this._emitState('transaction', STATE_VAR_CODES.transaction.BUILD_TRANSACTION_START, 'info', StateStatus.LOADING);\n const response = await this._api.POST('/tx/build', { body });\n if (\n !emitResponse(\n PollarStateVar.TRANSACTION,\n response,\n { code: STATE_VAR_CODES.transaction.BUILD_TRANSACTION_SUCCESS, status: StateStatus.SUCCESS },\n STATE_VAR_CODES.transaction.BUILD_TRANSACTION_ERROR,\n this._emitState.bind(this),\n )\n ) {\n return;\n }\n } catch (error) {\n this._emitState('transaction', STATE_VAR_CODES.transaction.BUILD_TRANSACTION_ERROR, 'error', StateStatus.ERROR, {\n body,\n error,\n });\n return;\n }\n }\n\n async submitTx(signedXdr: string): Promise<void> {\n const body: TxSignAndSendBody = {\n network: this.getNetwork(),\n signedXdr,\n };\n\n try {\n this._emitState('transaction', STATE_VAR_CODES.transaction.SIGN_SEND_TRANSACTION_START, 'info', StateStatus.LOADING);\n const response = await this._api.POST('/tx/sign-and-send', { body });\n if (\n !emitResponse(\n PollarStateVar.TRANSACTION,\n response,\n { code: STATE_VAR_CODES.transaction.SIGN_SEND_TRANSACTION_SUCCESS, status: StateStatus.SUCCESS },\n STATE_VAR_CODES.transaction.SIGN_SEND_TRANSACTION_ERROR,\n this._emitState.bind(this),\n )\n ) {\n return;\n }\n } catch (error) {\n this._emitState('transaction', STATE_VAR_CODES.transaction.SIGN_SEND_TRANSACTION_ERROR, 'error', StateStatus.ERROR, {\n body,\n error,\n });\n return;\n }\n }\n\n logout(): void {\n if (!isBrowser) {\n warnServerSide('logout');\n return;\n }\n\n console.info('[PollarClient] Logout requested');\n this._clearSession();\n }\n\n private _readStore() {\n this._session = readStorage();\n if (this._session) {\n this._emitState(\n 'authentication',\n STATE_VAR_CODES.authentication.RESTORED_SESSION_SUCCESS,\n 'info',\n StateStatus.SUCCESS,\n this._session,\n );\n console.info('[PollarClient] Session restored from storage');\n } else {\n this._emitState('authentication', STATE_VAR_CODES.authentication.NO_RESTORED_SESSION, 'info', StateStatus.NONE);\n console.info('[PollarClient] Session NO restored from storage');\n }\n }\n\n private _storeSession(session: PollarApplicationConfigContent): void {\n console.info(`[PollarClient] Session stored — user: ${session.userId ?? 'anonymous'}`);\n this._session = session;\n writeStorage(session);\n this._emitState(\n 'authentication',\n STATE_VAR_CODES.authentication.SESSION_STORED,\n 'info',\n StateStatus.SUCCESS,\n this._session,\n );\n }\n\n private _clearSession(): void {\n console.info('[PollarClient] Session cleared');\n this._session = null;\n removeStorage();\n this._state = {\n network: [],\n authentication: [],\n transaction: [],\n };\n this._emitState('authentication', STATE_VAR_CODES.authentication.LOGOUT, 'info', StateStatus.NONE);\n }\n\n private _emitState(\n fn: PollarStateVar,\n code: StateVarCodes,\n level: PollarStateEntry['level'],\n status: PollarStateEntry['status'],\n data?: unknown,\n ): void {\n const stateEntry: PollarStateEntry = { var: fn, code, level, data, status, ts: Date.now() };\n this._state[fn].push(stateEntry);\n console[level](`[PollarClient] ${fn}:${code} — ${status}`);\n for (const cb of this._stateListeners) {\n cb(stateEntry);\n }\n }\n}\n","export type StellarNetwork = 'mainnet' | 'testnet';\n\nconst HORIZON_URLS: Record<StellarNetwork, string> = {\n mainnet: 'https://horizon.stellar.org',\n testnet: 'https://horizon-testnet.stellar.org',\n};\n\nexport type StellarClientConfig = StellarNetwork | { horizonUrl: string };\n\nexport interface StellarBalance {\n asset: string;\n balance: string;\n assetIssuer?: string;\n}\n\nexport type GetBalancesResult =\n | { success: true; balances: StellarBalance[] }\n | { success: false; errorCode: 'ACCOUNT_NOT_FOUND' | 'HORIZON_ERROR' | 'NETWORK_ERROR'; balances: [] };\n\ninterface HorizonBalance {\n balance: string;\n asset_type: 'native' | 'credit_alphanum4' | 'credit_alphanum12' | 'liquidity_pool_shares';\n asset_code?: string;\n asset_issuer?: string;\n}\n\ninterface HorizonAccountResponse {\n balances: HorizonBalance[];\n}\n\nexport class StellarClient {\n private readonly horizonUrl: string;\n\n constructor(config: StellarClientConfig) {\n this.horizonUrl = typeof config === 'string' ? HORIZON_URLS[config] : config.horizonUrl;\n }\n\n async getBalances(publicKey: string): Promise<GetBalancesResult> {\n try {\n const response = await fetch(`${this.horizonUrl}/accounts/${publicKey}`);\n\n if (!response.ok) {\n if (response.status === 404) {\n console.warn(`[StellarClient] Account not found: ${publicKey}`);\n return { success: false, errorCode: 'ACCOUNT_NOT_FOUND', balances: [] };\n }\n console.warn(`[StellarClient] Horizon API error: ${response.status}`);\n return { success: false, errorCode: 'HORIZON_ERROR', balances: [] };\n }\n\n const data = (await response.json()) as HorizonAccountResponse;\n\n return {\n success: true,\n balances: data.balances\n .filter((b) => b.asset_type !== 'liquidity_pool_shares')\n .map((b) => ({\n asset: b.asset_type === 'native' ? 'XLM' : (b.asset_code ?? ''),\n balance: b.balance,\n ...(b.asset_type !== 'native' && { assetIssuer: b.asset_issuer }),\n })),\n };\n } catch (error) {\n console.warn('[StellarClient] Network error fetching balances', error);\n return { success: false, errorCode: 'NETWORK_ERROR', balances: [] };\n }\n }\n}\n"]}
|