@fangorn-network/westmarch 2026.10.29 → 2026.11.4-dev

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.
Files changed (360) hide show
  1. package/README.md +5 -5
  2. package/docs/app-to-agent.md +61 -625
  3. package/package.json +12 -17
  4. package/site/dist/assets/__vite-browser-external-D2U8RZpp.js +1 -0
  5. package/site/dist/assets/embed.worker-CmS57Zti.js +1 -0
  6. package/site/dist/assets/index-Djs8f08m.js +8 -0
  7. package/site/dist/assets/rolldown-runtime-COiEfhsA.js +1 -0
  8. package/site/dist/assets/{transformers.web-BTyOEJ0C.js → transformers.web-CwR_IYQV.js} +1 -1
  9. package/site/dist/index.html +3 -4
  10. package/site/worker.js +115 -338
  11. package/src/agent/agent-card.js +33 -45
  12. package/src/agent/mcp.js +168 -371
  13. package/src/agent/tools.js +2 -1
  14. package/src/agent/view-tools.js +4 -56
  15. package/src/agent/x402.js +182 -369
  16. package/src/core/roles.js +6 -6
  17. package/src/core/shard.js +4 -4
  18. package/src/discover/apps.js +67 -81
  19. package/src/discover/directory.js +2 -2
  20. package/src/market/reactions.js +21 -15
  21. package/src/publish/devnet.js +69 -18
  22. package/src/publish/init.js +1 -1
  23. package/src/publish/ship.js +74 -275
  24. package/src/publish/view.js +52 -53
  25. package/template/README.md +9 -11
  26. package/template/package.json +1 -1
  27. package/plugin/scripts/fx.mjs +0 -266
  28. package/site/dist/assets/AccountNotFoundScreen-C4njXc69-DyVH4CEz.js +0 -1
  29. package/site/dist/assets/AddFundsSelectionScreen-RAoCn7ej-Dz1--SS9.js +0 -31
  30. package/site/dist/assets/Address-H8kD1d9O-BdFZmRwI.js +0 -17
  31. package/site/dist/assets/AffirmativeConsentScreen-BG0MJxku-CxaCAisL.js +0 -6
  32. package/site/dist/assets/AllowlistRejectionScreen-Cae6e1Od-JGk7vndN.js +0 -1
  33. package/site/dist/assets/ApiController-CTLbMCcH.js +0 -5
  34. package/site/dist/assets/ArrowsRightLeftIcon-B8g9adpz.js +0 -1
  35. package/site/dist/assets/AuthenticateWithWalletScreen-CU6hIcFT-CXD9_OP8.js +0 -1
  36. package/site/dist/assets/AwaitingEvmToSolBridgingScreen-D0e_sZMS-BtJCglvU.js +0 -1
  37. package/site/dist/assets/AwaitingExternalEthereumTransferScreen-ur5HL4R7-BgC2TsqH.js +0 -1
  38. package/site/dist/assets/AwaitingPasswordlessCodeScreen-DRHz76mM-B9OzLeEO.js +0 -103
  39. package/site/dist/assets/AwaitingSolToEvmBridgingScreen-CdLRrGD2-C7r5snUL.js +0 -1
  40. package/site/dist/assets/BridgeNetworkSelectionView-CFGjB2nO-BTV0NRio.js +0 -68
  41. package/site/dist/assets/CaptchaScreen-DbpvkIGx-7rSZIuM-.js +0 -1
  42. package/site/dist/assets/CheckCircleIcon-B1l17ioc.js +0 -1
  43. package/site/dist/assets/CheckCircleIcon-BGSI8nKf.js +0 -1
  44. package/site/dist/assets/Checkbox-D1EDeo41-BUfq0w99.js +0 -52
  45. package/site/dist/assets/ChevronDownIcon-B6uJvPHu.js +0 -1
  46. package/site/dist/assets/Chip-CZKIKt9K-r9Nk__0-.js +0 -26
  47. package/site/dist/assets/CoinbaseOnrampStatusScreen-BbyCJDXL-DWWNHxmR.js +0 -16
  48. package/site/dist/assets/ConnectEmailForm-B-VRE0MN-CRQwS0Xu.js +0 -3
  49. package/site/dist/assets/ConnectLedgerScreen-DWHABGot-CZcCt31O.js +0 -10
  50. package/site/dist/assets/ConnectOnlyLandingScreen-CZYx9Bmp-C5IOf-SQ.js +0 -1
  51. package/site/dist/assets/ConnectOnlyStatusScreen-DCRzjxHx-cwg74F3A.js +0 -1
  52. package/site/dist/assets/ConnectOrCreateScreen-CUUYUO07-D28oeK6b.js +0 -1
  53. package/site/dist/assets/ConnectPhoneForm-Dek5xn4C-EEdkKeTp.js +0 -95
  54. package/site/dist/assets/ConnectWalletView-DqI-PTvX-C2mEzukj.js +0 -74
  55. package/site/dist/assets/ConnectionStatusScreen-fUfROm9m-CH_7r8iV.js +0 -7
  56. package/site/dist/assets/ConnectionStatusScreen-fUfROm9m-Z33kis0B.js +0 -1
  57. package/site/dist/assets/ConnectorUtil-DH4NePk5.js +0 -21
  58. package/site/dist/assets/ConstantsUtil-DmLsRHAl.js +0 -198
  59. package/site/dist/assets/CopyToClipboard-i_OQSBJr-_G88JCVR.js +0 -39
  60. package/site/dist/assets/CopyableText-CQapvaMr-CGGfc_zM.js +0 -28
  61. package/site/dist/assets/CrossAppAuthScreen-CLw7ymZq-C9Okoc0V.js +0 -1
  62. package/site/dist/assets/CustomLandingScreenView-Cm_MBSyX-D2l6hdSl.js +0 -22
  63. package/site/dist/assets/DelegatedActionsConsentScreen-DYF2U4y5-Dda3KKqS.js +0 -1
  64. package/site/dist/assets/DelegatedActionsRevokeScreen-bPp6Uwyh-DG8kJPt1.js +0 -1
  65. package/site/dist/assets/DepositAddressAddressStepView-4vdkb55L-CcOUfn6f.js +0 -187
  66. package/site/dist/assets/DepositAddressScreen-DBLRs7aI-DeituDNh.js +0 -8
  67. package/site/dist/assets/DepositAddressV3Screen-CDqIEMQw-FDg6K14-.js +0 -1
  68. package/site/dist/assets/EmailInputForm-Cqo1mda8-BmbxvPHC.js +0 -124
  69. package/site/dist/assets/EmbeddedWalletConnectingScreen-D4T7DUzs-B05CQ9rx.js +0 -1
  70. package/site/dist/assets/EmbeddedWalletCreatedScreen-D7WhW5ve-Cxd1b9XH.js +0 -1
  71. package/site/dist/assets/EmbeddedWalletKeyExportScreen-CqV4NYQ3-CrJy0ViX.js +0 -23
  72. package/site/dist/assets/EmbeddedWalletOnAccountCreateScreen-BoKb3Q2S-Bakaa3zu.js +0 -1
  73. package/site/dist/assets/EmbeddedWalletPasswordUpdateScreen-D3rMlqS7-j78vKrcj.js +0 -1
  74. package/site/dist/assets/EmbeddedWalletPasswordUpdateSplashScreen-BPFkWJeE-D3dr7W9_.js +0 -1
  75. package/site/dist/assets/EnrollTotp-Dibew4dp-BXbYV8nI.js +0 -66
  76. package/site/dist/assets/EnvelopeIcon-DjPofnRI.js +0 -1
  77. package/site/dist/assets/ErrorBanner-BcpGRt0h-BhH6_V-9.js +0 -21
  78. package/site/dist/assets/ErrorMessage-D8VaAP5m-Bs7uX2a9.js +0 -8
  79. package/site/dist/assets/ErrorScreen-DipdTWzE-BgPRgnOb.js +0 -4
  80. package/site/dist/assets/ErrorScreen-DipdTWzE-CvxXC6pz.js +0 -1
  81. package/site/dist/assets/ExclamationCircleIcon-BE-WGrut.js +0 -1
  82. package/site/dist/assets/ExclamationTriangleIcon-Ca1Xlc_f.js +0 -1
  83. package/site/dist/assets/FarcasterConnectStatusScreen-51tjUxqq-De2JvZdV.js +0 -75
  84. package/site/dist/assets/FarcasterSignerStatusScreen-6x-Uh95G-bLp3hXoO.js +0 -28
  85. package/site/dist/assets/FiatOnrampScreen-BAhYeiTI-Jr6D6JiZ.js +0 -491
  86. package/site/dist/assets/FingerPrintIcon-DOCbS93y.js +0 -1
  87. package/site/dist/assets/FundSolWalletWithExternalSolanaWallet-WtLwYaOl-A_G5kfa1.js +0 -1
  88. package/site/dist/assets/FundWalletMethodHeader-BWNkokCT-LPv35wkD.js +0 -1
  89. package/site/dist/assets/FundWithBankDepositScreen-DajkHxBD-0hfGrfvf.js +0 -58
  90. package/site/dist/assets/FundingEditAmountScreen-CpvpiO4M-Dz0s_NWR.js +0 -1
  91. package/site/dist/assets/FundingMethodSelectionScreen-Db7vhRlE-ZGm-3-Io.js +0 -1
  92. package/site/dist/assets/GlobeAltIcon-BBRl2MMn.js +0 -1
  93. package/site/dist/assets/GooglePay-B53WnudL-BGiVpB8y.js +0 -1
  94. package/site/dist/assets/HCaptchaWrapper-CUi9LJsp-CHdfIeD_.js +0 -4
  95. package/site/dist/assets/InAppBrowserLoginNotPossible-BMR9br1T-Cgoiow3m.js +0 -1
  96. package/site/dist/assets/InfoBanner-Cb3p1z12-_YqQmRiu.js +0 -22
  97. package/site/dist/assets/InjectedWalletIcon-DLcYOGDj-tuIrKQHH.js +0 -1
  98. package/site/dist/assets/InstallWalletScreen-DTA8dwLv-BMU_wa61.js +0 -1
  99. package/site/dist/assets/JsonTree-BHzNC-ic-DcVr0YF0.js +0 -34
  100. package/site/dist/assets/LabelXs-oqZNqbm_-CNprGVQM.js +0 -6
  101. package/site/dist/assets/LandingScreen-CGWUoSUG-fH6rsQen.js +0 -1
  102. package/site/dist/assets/Layouts-BMRfo5hw-e-sepi6F.js +0 -77
  103. package/site/dist/assets/Link-BdDilT2T-BdwlRJch.js +0 -40
  104. package/site/dist/assets/LinkConflictScreen-C3ZEPsgl-BXKN2Qm5.js +0 -77
  105. package/site/dist/assets/LinkEmailScreen-dKo9frwc-Cyn7Q8p1.js +0 -1
  106. package/site/dist/assets/LinkPasskeyScreen-zbrl_AI_-CWiqnwLM.js +0 -117
  107. package/site/dist/assets/LinkPasskeyScreen-zbrl_AI_-YmDevJzf.js +0 -1
  108. package/site/dist/assets/LinkPhoneScreen-oIUpfj0w-h7shW-Ay.js +0 -1
  109. package/site/dist/assets/Loader-UAZqxsnw-DJEVblm1.js +0 -62
  110. package/site/dist/assets/LoadingSkeleton-BMsgO5PV-D2atjsP5.js +0 -17
  111. package/site/dist/assets/LockClosedIcon-9EFzWK1C.js +0 -1
  112. package/site/dist/assets/LoginFailedScreen-CN0dJV6U-By3Si77a.js +0 -1
  113. package/site/dist/assets/ManualTransferScreen-CHqcuqbs-BAHPY8rs.js +0 -1
  114. package/site/dist/assets/MfaAuthEnrollmentFlowScreen-Dj7gPTRC-CLjffFG1.js +0 -1
  115. package/site/dist/assets/MfaAuthVerifyFlowScreen-DbFpyWMy-BmQg1Y61.js +0 -1
  116. package/site/dist/assets/MfaEnrollmentFlowScreen-DhLnGgnr-DmBtTtlw.js +0 -1
  117. package/site/dist/assets/MfaVerifyFlowScreen-C_XPjMRP-4a683Bmf.js +0 -1
  118. package/site/dist/assets/ModalFooter-BCuEK_nz-C_71qsaz.js +0 -403
  119. package/site/dist/assets/MoonpayStatusScreen-CzTUtokc-DEHHcEf8.js +0 -16
  120. package/site/dist/assets/OAuthStatusScreen-ufbOa-da-BjAb_WsY.js +0 -1
  121. package/site/dist/assets/OpenLink-CUpJ1mOr-BLWFsPOW.js +0 -39
  122. package/site/dist/assets/PasskeySelectSignupOrLogin-xh2ScC_l-2PJTJxX-.js +0 -1
  123. package/site/dist/assets/PasskeyStatusScreen-Bla8MaOk-DCEg761l.js +0 -6
  124. package/site/dist/assets/PasswordRecoveryScreen-awGXZkQk-8nVjNc8k.js +0 -20
  125. package/site/dist/assets/PhArrowCircleDown-D97G-BOA.js +0 -14
  126. package/site/dist/assets/PhArrowClockwise-DVgyFuez.js +0 -14
  127. package/site/dist/assets/PhArrowDown-87b1BizM.js +0 -14
  128. package/site/dist/assets/PhArrowLeft-Da0MfnbK.js +0 -14
  129. package/site/dist/assets/PhArrowRight-AdrIL4DW.js +0 -14
  130. package/site/dist/assets/PhArrowSquareOut-Bk2CMG3I.js +0 -14
  131. package/site/dist/assets/PhArrowUp-4sgyKPGx.js +0 -14
  132. package/site/dist/assets/PhArrowUpRight-BNghD2zq.js +0 -14
  133. package/site/dist/assets/PhArrowsClockwise-BXRn1GEl.js +0 -14
  134. package/site/dist/assets/PhArrowsDownUp-DM09Jo_3.js +0 -14
  135. package/site/dist/assets/PhArrowsLeftRight-MuKBLUoF.js +0 -14
  136. package/site/dist/assets/PhBank-fHbgCqqZ.js +0 -14
  137. package/site/dist/assets/PhBrowser-2-9m-AkM.js +0 -14
  138. package/site/dist/assets/PhCaretDown-BDNabFuL.js +0 -14
  139. package/site/dist/assets/PhCaretLeft-CI460R-A.js +0 -14
  140. package/site/dist/assets/PhCaretRight-D7ZS3Ls8.js +0 -14
  141. package/site/dist/assets/PhCaretUp-C-iIfyvO.js +0 -14
  142. package/site/dist/assets/PhCheck-DxQXn57r.js +0 -14
  143. package/site/dist/assets/PhCircleHalf-MJZeRBGF.js +0 -14
  144. package/site/dist/assets/PhClock-x3MS3Mwi.js +0 -14
  145. package/site/dist/assets/PhCompass-hYn3HhGN.js +0 -14
  146. package/site/dist/assets/PhCopy-CWNYcABI.js +0 -14
  147. package/site/dist/assets/PhCreditCard-Fy4pzwtt.js +0 -14
  148. package/site/dist/assets/PhCurrencyDollar-BgiaenCi.js +0 -14
  149. package/site/dist/assets/PhDesktop-CxrzCSv5.js +0 -14
  150. package/site/dist/assets/PhDeviceMobile-CsyA5Goi.js +0 -14
  151. package/site/dist/assets/PhDotsThree-D-k1BiYg.js +0 -14
  152. package/site/dist/assets/PhEnvelope-D8kzeNox.js +0 -14
  153. package/site/dist/assets/PhFunnelSimple-CfQs5DAW.js +0 -14
  154. package/site/dist/assets/PhGlobe-DvmSc9_A.js +0 -14
  155. package/site/dist/assets/PhIdentificationCard-CfkZm-5K.js +0 -14
  156. package/site/dist/assets/PhImage-Cf0J2ZfJ.js +0 -14
  157. package/site/dist/assets/PhInfo-Bwi51-2X.js +0 -14
  158. package/site/dist/assets/PhLightbulb-C4FZV7Es.js +0 -14
  159. package/site/dist/assets/PhMagnifyingGlass-C9u8jSCJ.js +0 -14
  160. package/site/dist/assets/PhPaperPlaneRight-zxQVvPLX.js +0 -14
  161. package/site/dist/assets/PhPlus-C4UoW-2n.js +0 -14
  162. package/site/dist/assets/PhPower-CFyWDmgD.js +0 -14
  163. package/site/dist/assets/PhPuzzlePiece-BjoNVfST.js +0 -14
  164. package/site/dist/assets/PhQrCode-CP3tFauY.js +0 -14
  165. package/site/dist/assets/PhQuestion-wOWJBd3G.js +0 -14
  166. package/site/dist/assets/PhQuestionMark-CV0k9C0Y.js +0 -14
  167. package/site/dist/assets/PhSealCheck-vIKzREuN.js +0 -14
  168. package/site/dist/assets/PhSignOut-CxELV-i0.js +0 -14
  169. package/site/dist/assets/PhSpinner-CGDmbzUd.js +0 -14
  170. package/site/dist/assets/PhTrash-C9PD0SAt.js +0 -14
  171. package/site/dist/assets/PhUser-0sWNXQeZ.js +0 -14
  172. package/site/dist/assets/PhVault-6JTskUcC.js +0 -14
  173. package/site/dist/assets/PhWarning-CoKs3gz6.js +0 -14
  174. package/site/dist/assets/PhWarningCircle-BXHw1fCt.js +0 -14
  175. package/site/dist/assets/PhX-DX0SFIqC.js +0 -14
  176. package/site/dist/assets/PhoneIcon-CZ47md80.js +0 -1
  177. package/site/dist/assets/PinInput-DbZ0b1i1-BrTXu3Km.js +0 -247
  178. package/site/dist/assets/PrivyPluginContext-DA-yS5vO-CY60yubk.js +0 -1
  179. package/site/dist/assets/QrCode-DbnZwlkH-CcMrWV5D.js +0 -22
  180. package/site/dist/assets/RecoveryOAuthStatusScreen-CsgtTI2x-DgeDnHOK.js +0 -1
  181. package/site/dist/assets/RecoveryPasswordCreateScreen-Be-qJ-LU-CvJJwLhK.js +0 -1
  182. package/site/dist/assets/RecoverySelectionScreen-D1iGtpmi-CADtGtSV.js +0 -7
  183. package/site/dist/assets/SIWXUtil-Cpiv91-M.js +0 -1
  184. package/site/dist/assets/Screen-D30meWsY-vEusJ7KX.js +0 -175
  185. package/site/dist/assets/ScreenHeader-CHmc4-Lu-BvGTLg53.js +0 -31
  186. package/site/dist/assets/ScreenLayout-OwaQQcxH-cfOTmyl0.js +0 -1
  187. package/site/dist/assets/SelectSourceAsset-CWFog6gm-DxYklZYs.js +0 -140
  188. package/site/dist/assets/SetAutomaticRecoveryScreen-BO_OEqAZ-oeqeo05x.js +0 -14
  189. package/site/dist/assets/SetWalletPasswordForm-DwCTVtAh-BxFee9UA.js +0 -11
  190. package/site/dist/assets/ShieldCheckIcon-eFjsosCA.js +0 -1
  191. package/site/dist/assets/SignRequestScreen-BHKv32KR-z8ixfIma.js +0 -26
  192. package/site/dist/assets/SolanaWalletConnector-C7Lqk-Wz-Bc_lvdiF.js +0 -1
  193. package/site/dist/assets/StackedContainer-B2vaEl56-Do5dXB8-.js +0 -24
  194. package/site/dist/assets/StandardSignAndSendTransactionScreen-CfhIXVtd-DudetZAc.js +0 -20
  195. package/site/dist/assets/Subtitle-CV-2yKE4-DV0o1av3.js +0 -13
  196. package/site/dist/assets/TelegramAuthScreen-UL9zLfO8-Bo3sONvf.js +0 -1
  197. package/site/dist/assets/Title-BnzYV3Is-C3qOPnO_.js +0 -7
  198. package/site/dist/assets/TodoList-DnyULl18-BvxvubbF.js +0 -36
  199. package/site/dist/assets/TransactionDetails-e9nesl30-WWflkOIi.js +0 -109
  200. package/site/dist/assets/TransactionErrorView-BDBNqA_f-CotYKcgf.js +0 -178
  201. package/site/dist/assets/TransferFromWalletScreen-Qvn1Yuno-sVFlWqa8.js +0 -31
  202. package/site/dist/assets/TransferOrBridgeLoadingScreen-Dl1I_iIz-CV2-mY19.js +0 -6
  203. package/site/dist/assets/TurnstileWrapper-B7sNddys-oPbuMTQt.js +0 -1
  204. package/site/dist/assets/UpdateEmailScreen-DVOhPV0H-D_mjSpAy.js +0 -1
  205. package/site/dist/assets/UpdatePhoneScreen-CXRswTNZ-6RLG0ahv.js +0 -1
  206. package/site/dist/assets/UserLimitReachedScreen-5we2DHn8-CaVN0bti.js +0 -1
  207. package/site/dist/assets/Value-DTgR824E-Bp6WGZZm.js +0 -27
  208. package/site/dist/assets/WalletCards-DH1rqayz-D3cOTb9x.js +0 -1
  209. package/site/dist/assets/WalletIcon-DOIZhb2l.js +0 -1
  210. package/site/dist/assets/WalletInfoCard-sq_2wgFg-bOqfl5MA.js +0 -29
  211. package/site/dist/assets/WalletInterstitialScreen-Sh7LfsAh-DWaVkMCA.js +0 -1
  212. package/site/dist/assets/WalletLink-DK5LB5Ha-DjUZvqs-.js +0 -20
  213. package/site/dist/assets/WalletOverflowButton-bfCnp-9T-B6P7DQXA.js +0 -1
  214. package/site/dist/assets/WarningBanner-ZZqCEtZK-Bc2YKZb7.js +0 -21
  215. package/site/dist/assets/__vite-browser-external-NciY4Vu1.js +0 -1
  216. package/site/dist/assets/_esm-BZP3cXTv.js +0 -1
  217. package/site/dist/assets/_esm-ZmzBJpEs.js +0 -6
  218. package/site/dist/assets/accounts-D4AXF17G.js +0 -1
  219. package/site/dist/assets/accounts-IkdFx9nq.js +0 -1
  220. package/site/dist/assets/analytics-mkkvFRju-BRBcadka.js +0 -1
  221. package/site/dist/assets/baseSepolia-Bn1j1Ysw.js +0 -1
  222. package/site/dist/assets/basic-Cz1YiCSk.js +0 -1575
  223. package/site/dist/assets/capitalizeFirstLetter-DmLYqXsO-DtOXx-2n.js +0 -1
  224. package/site/dist/assets/ccip-B1J3oTZx.js +0 -7
  225. package/site/dist/assets/ccip-Bd7261zy.js +0 -1
  226. package/site/dist/assets/ccip-D6EHKpjI.js +0 -1
  227. package/site/dist/assets/chain-scefkYIH.js +0 -5
  228. package/site/dist/assets/check-DHnllI8N.js +0 -1
  229. package/site/dist/assets/chevron-down-1y-r4bGO.js +0 -1
  230. package/site/dist/assets/circle-alert-OwxamXUX.js +0 -1
  231. package/site/dist/assets/circle-check-big-3sZGVC10.js +0 -1
  232. package/site/dist/assets/circle-x-DQjNUV9J.js +0 -1
  233. package/site/dist/assets/client-B-BpRtwY.js +0 -1
  234. package/site/dist/assets/client-BfIR1FvH.js +0 -9
  235. package/site/dist/assets/coinbase-DCPC2L_R-YEuIn3jh.js +0 -3
  236. package/site/dist/assets/copy-DMOX_yn7.js +0 -1
  237. package/site/dist/assets/core-GIEmxmAa.js +0 -12
  238. package/site/dist/assets/createLucideIcon-BsERoFTA.js +0 -1
  239. package/site/dist/assets/defineChain-B-SQDLTG.js +0 -1
  240. package/site/dist/assets/dijkstra-CY95afk4.js +0 -1
  241. package/site/dist/assets/dist-CoS6E-3x.js +0 -1
  242. package/site/dist/assets/dist-Cp6IXeJd.js +0 -1
  243. package/site/dist/assets/dist-CrNxmdZj.js +0 -1
  244. package/site/dist/assets/dist-DYGtf4F0.js +0 -16
  245. package/site/dist/assets/embed.worker-Cnl4VGr3.js +0 -1
  246. package/site/dist/assets/errors-BQ3N-RVt-CZPAWCgC.js +0 -1
  247. package/site/dist/assets/esm-C3DslVJx.js +0 -1
  248. package/site/dist/assets/esm-Ci1ogKuK.js +0 -1
  249. package/site/dist/assets/esm-Co94ENUV.js +0 -37
  250. package/site/dist/assets/esm-bb8SANZh.js +0 -1
  251. package/site/dist/assets/esm-n2lWo7kz.js +0 -1
  252. package/site/dist/assets/ethers-zTjbodk5-Cs648CnD.js +0 -1
  253. package/site/dist/assets/eventemitter3-Dzc_0Uq2.js +0 -1
  254. package/site/dist/assets/external-link-BBPG3rG7.js +0 -1
  255. package/site/dist/assets/farcaster-DPlSjvF5-CzBCmgyL.js +0 -1
  256. package/site/dist/assets/features-CuiHbgEJ.js +0 -2
  257. package/site/dist/assets/fingerprint-pattern-CjLtyIxB.js +0 -1
  258. package/site/dist/assets/floating-ui.react-DmaCfayr.js +0 -1
  259. package/site/dist/assets/floating-ui.react-dom-CaoMF8mP.js +0 -1
  260. package/site/dist/assets/formatErc20TokenAmount-BuPk9xcy-BVqOKQif.js +0 -1
  261. package/site/dist/assets/formatter-CVbp4SlJ.js +0 -1
  262. package/site/dist/assets/get-entropy-details-for-user-dHRH5Gpi-BNiOFXbK.js +0 -1
  263. package/site/dist/assets/getChainName-DjpPdUSc-DUyKDrnp.js +0 -1
  264. package/site/dist/assets/getErc20Balance-jXNpFf0N-q4bV8kQq.js +0 -1
  265. package/site/dist/assets/getErc20TokenInfo-BNTrzLMP-DcnTFrXN.js +0 -1
  266. package/site/dist/assets/getFormattedUsdFromLamports-De3U9GlO-Gx4_wxON.js +0 -1
  267. package/site/dist/assets/getUsdcMintAddress-BVgm9GRo-r2UnDeEy.js +0 -1
  268. package/site/dist/assets/guards-BIW-GiMJ-D3tWTQAR.js +0 -1
  269. package/site/dist/assets/hooks.module-BYZGfwDl.js +0 -1
  270. package/site/dist/assets/hourglass-D_GfQdJr.js +0 -1
  271. package/site/dist/assets/id-UqEwL2BI-CTlvRMA5.js +0 -1
  272. package/site/dist/assets/index-BdEw5wyl-kLbhqLbv.js +0 -1
  273. package/site/dist/assets/index-C2h3EneX.js +0 -8
  274. package/site/dist/assets/index-CWARkn2w-DxuckIFn.js +0 -61
  275. package/site/dist/assets/index-DvMddJcd-CNBb4VUn.js +0 -12
  276. package/site/dist/assets/index-YiCw0Y_x-Czl0tWfF.js +0 -436
  277. package/site/dist/assets/index.browser-B-i-Lj3J.js +0 -1
  278. package/site/dist/assets/index.browser-BMmUcykv.js +0 -1
  279. package/site/dist/assets/index.es-Crd0TyUS.js +0 -2
  280. package/site/dist/assets/index.es-DQbup1WG.js +0 -3
  281. package/site/dist/assets/isPaymentRequestAvailable-Bq1cemEn-Cjf3l05I.js +0 -1
  282. package/site/dist/assets/jsx-runtime-CndCZlyt.js +0 -1
  283. package/site/dist/assets/landmark-BZPqMFEf.js +0 -1
  284. package/site/dist/assets/lib-DGtzi2DK.js +0 -1
  285. package/site/dist/assets/localBatchGatewayRequest-B71J8sQ9.js +0 -29
  286. package/site/dist/assets/lock-DyN_c-ud.js +0 -1
  287. package/site/dist/assets/logger-CsXm3oIv-B0UYpNFI.js +0 -1
  288. package/site/dist/assets/mail-V_mcPb64.js +0 -1
  289. package/site/dist/assets/modal-context-CwmSeFcv-DPWNJrfK.js +0 -1
  290. package/site/dist/assets/native-BKj27wfc.js +0 -1
  291. package/site/dist/assets/ofetch.CWycOUEr-Duby3iHT.js +0 -1
  292. package/site/dist/assets/parseAbi-Csg-8t59.js +0 -2
  293. package/site/dist/assets/parseAbiParameters-BWbIMYe4.js +0 -1
  294. package/site/dist/assets/parseEther-CHS0GNkM.js +0 -1
  295. package/site/dist/assets/pkce-DXF0yKjP-7_VY-d83.js +0 -1
  296. package/site/dist/assets/preload-helper-CRzLMJPS.js +0 -1
  297. package/site/dist/assets/privy-context-81KmsBw2-DiR6-Yq8.js +0 -2
  298. package/site/dist/assets/property-DuZ9DLP4.js +0 -3
  299. package/site/dist/assets/react-BfYA1q0G.js +0 -1
  300. package/site/dist/assets/react-CK2HRI1t.js +0 -1
  301. package/site/dist/assets/react-DxGeY8B8.js +0 -1
  302. package/site/dist/assets/react-auth-sHnipzbS.js +0 -1
  303. package/site/dist/assets/react-dom-BI2Koe4o.js +0 -1
  304. package/site/dist/assets/reservoir-x-nGuZkT-BguVFH3D.js +0 -1
  305. package/site/dist/assets/rolldown-runtime-Bjp52BOI.js +0 -1
  306. package/site/dist/assets/safe-url-D7SRPu33-CkMedGro.js +0 -1
  307. package/site/dist/assets/secp256k1-BeYL8aZl.js +0 -1
  308. package/site/dist/assets/secp256k1-Bh4MSkhz.js +0 -1
  309. package/site/dist/assets/secp256k1-Ci4cqHl0.js +0 -1
  310. package/site/dist/assets/secp256k1-DsxXqbXv.js +0 -1
  311. package/site/dist/assets/secp256k1-N9RUmafO.js +0 -1
  312. package/site/dist/assets/serializeAuthorizationList-DGMik9Wx.js +0 -1
  313. package/site/dist/assets/serializeSignature-CWKpxoab.js +0 -2
  314. package/site/dist/assets/sha2-C6s7zZmb.js +0 -1
  315. package/site/dist/assets/shared-DRZUmnL5-BewE5wK8.js +0 -193
  316. package/site/dist/assets/shared-FM0rljBt-CxLACri_.js +0 -21
  317. package/site/dist/assets/shouldProceedtoEmbeddedWalletCreationFlow-B3vyavrh-BkAKsRNi.js +0 -1
  318. package/site/dist/assets/simulateTransaction-CfuOrae4-PjA_tGjX.js +0 -1
  319. package/site/dist/assets/smartphone-3p8nFSTE.js +0 -1
  320. package/site/dist/assets/src-BBjkfi-Q.js +0 -1
  321. package/site/dist/assets/storage-Ufl800Ne-1qCR2JMO.js +0 -8
  322. package/site/dist/assets/stringify-DqUj9VzO.js +0 -20
  323. package/site/dist/assets/stripe.esm-DEi2D291.js +0 -2
  324. package/site/dist/assets/styles-BsotlekN-Aq27nZGc.js +0 -9
  325. package/site/dist/assets/styles-Cm9H63WO-p_ic_dxE.js +0 -92
  326. package/site/dist/assets/styles-DVyDvTdj-CjsWqAld.js +0 -74
  327. package/site/dist/assets/styles-hslXy6xG-D5QHIrJU.js +0 -164
  328. package/site/dist/assets/telegram-B-JqnkqZ-Dqkm4rDn.js +0 -1
  329. package/site/dist/assets/to-ui-error-DWe-qwS3-Bi1HUQI9.js +0 -4
  330. package/site/dist/assets/toViemAccount-B5iDGq1b-CdFZwv07.js +0 -2
  331. package/site/dist/assets/transaction-BNTP-bFm-M5tJx8vY.js +0 -1
  332. package/site/dist/assets/transfer-6YztDh-t-BVQkTvG-.js +0 -1
  333. package/site/dist/assets/triangle-alert-BG3Qw-Hq.js +0 -1
  334. package/site/dist/assets/twitch-5IOe4sIQ-CaXHFlAu.js +0 -1
  335. package/site/dist/assets/types-4CuOD23i.js +0 -1
  336. package/site/dist/assets/use-headless-crypto-deposit-Yn-QRLB3-CQqeyhGY.js +0 -1
  337. package/site/dist/assets/use-unlink-wallet-BKK4_5Ur-C0xQN_Lp.js +0 -1
  338. package/site/dist/assets/useActiveWallet-B-yZYGc6-BkK6rFBm.js +0 -123
  339. package/site/dist/assets/useGetSolPrice-x7gfUIHJ-CLVXqv6I.js +0 -1
  340. package/site/dist/assets/useGetTokenPrice-CaoUkb79-DAXXs3rs.js +0 -1
  341. package/site/dist/assets/useI18n-C-5n_noF-CGpkgIVy.js +0 -1
  342. package/site/dist/assets/useWalletBalance-CZnP5f_f-Cfd64m4n.js +0 -1
  343. package/site/dist/assets/useWallets-X1ndvJ_U-CAYqg7Za.js +0 -1
  344. package/site/dist/assets/utils-BkR7EQjg.js +0 -1
  345. package/site/dist/assets/utils-DJhBNOZA.js +0 -1
  346. package/site/dist/assets/utils-DdckVfQr.js +0 -1
  347. package/site/dist/assets/w3m-modal-B4H_uiPH.js +0 -1174
  348. package/site/dist/assets/wallet-BNI12IYk.js +0 -1
  349. package/site/dist/assets/wallet-CITSaPlB.js +0 -2
  350. package/site/dist/assets/wallet-connect-BvJtUsDt-CVlSNIXP.js +0 -1
  351. package/site/dist/assets/walletconnect-registry-xxG8XLCb-BpzpBq5s.js +0 -1
  352. package/site/dist/assets/walletconnect-v2-3frQFwbg-CzZ6oybX.js +0 -12
  353. package/site/dist/assets/wui-ux-by-reown-XyHdtV1O.js +0 -1147
  354. package/site/dist/assets/x-gjDrY2rk.js +0 -1
  355. package/src/discover/explore.js +0 -291
  356. package/src/market/settle.js +0 -165
  357. package/src/market/terms.js +0 -200
  358. package/src/publish/cli.js +0 -336
  359. package/src/publish/envelope.js +0 -185
  360. package/src/publish/manifest.js +0 -142
@@ -1,140 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{t}from"./jsx-runtime-CndCZlyt.js";import{t as n}from"./react-BfYA1q0G.js";import{t as r}from"./chevron-down-1y-r4bGO.js";import{c as i}from"./Loader-UAZqxsnw-DJEVblm1.js";import{t as a}from"./ScreenLayout-OwaQQcxH-cfOTmyl0.js";import{T as o}from"./use-headless-crypto-deposit-Yn-QRLB3-CQqeyhGY.js";var s=t(),c=e(n(),1),l=({currency:e=`usd`,value:t,onChange:n,inputMode:r=`decimal`,autoFocus:i})=>{let[a,l]=(0,c.useState)(`0`),[u,h]=(0,c.useState)(null),g=(0,c.useRef)(null),_=(0,c.useRef)(null),v=t??a,y=o[e]?.symbol??`$`,b=v.length>9?`small`:v.length>6?`compact`:`default`;(0,c.useLayoutEffect)((()=>{let e=_.current?.offsetWidth;h(e?Math.ceil(e)+2:null)}),[b,v]);let x=(0,c.useCallback)((e=>{let t=e.target.value,r=(t=t.replace(/[^\d.]/g,``)).split(`.`);r.length>2&&(t=r[0]+`.`+r.slice(1).join(``));let[i=``,a]=t.split(`.`),o=i.replace(/^0+(?=\d)/,``);((t=a===void 0?o||`0`:`${o||`0`}.${a}`)===``||t===`.`)&&(t=`0`),n?n(t):l(t)}),[n]),S=(0,c.useCallback)((e=>{[`Delete`,`Backspace`,`Tab`,`Escape`,`Enter`,`.`,`ArrowLeft`,`ArrowRight`,`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)||(e.ctrlKey||e.metaKey)&&[`a`,`c`,`v`,`x`].includes(e.key.toLowerCase())||e.key>=`0`&&e.key<=`9`||e.preventDefault()}),[]);return(0,s.jsxs)(d,{$size:b,onClick:()=>g.current?.focus(),children:[(0,s.jsx)(m,{$size:b,children:y}),(0,s.jsx)(f,{ref:g,type:`text`,inputMode:r,value:v,onChange:x,onKeyDown:S,autoFocus:i,placeholder:`0`,"aria-label":`Amount`,style:u?{width:`${u}px`}:void 0}),(0,s.jsx)(p,{ref:_,"aria-hidden":`true`,children:v}),(0,s.jsx)(m,{$size:b,style:{opacity:0},children:y})]})},u=({selectedAsset:e,onEditSourceAsset:t})=>{let{icon:n}=o[e];return(0,s.jsxs)(h,{onClick:t,children:[(0,s.jsx)(g,{children:n}),(0,s.jsx)(_,{children:e.toLocaleUpperCase()}),(0,s.jsx)(v,{children:(0,s.jsx)(r,{})})]})},d=i.span`
2
- position: relative;
3
- background-color: var(--privy-color-background);
4
- width: 100%;
5
- box-sizing: border-box;
6
- text-align: center;
7
- font-kerning: none;
8
- font-feature-settings: 'calt' off;
9
- display: flex;
10
- justify-content: center;
11
- align-items: flex-start;
12
- cursor: pointer;
13
-
14
- && {
15
- color: var(--privy-color-foreground);
16
- font-size: ${({$size:e})=>e===`small`?`2.25rem`:e===`compact`?`3rem`:`3.75rem`};
17
- font-style: normal;
18
- font-weight: 600;
19
- line-height: 5.375rem;
20
- }
21
- `,f=i.input`
22
- appearance: none;
23
- align-self: flex-start;
24
- min-width: 1ch;
25
- padding: 0;
26
- border: none;
27
- background: transparent;
28
- color: inherit;
29
- font: inherit;
30
- line-height: inherit;
31
- letter-spacing: inherit;
32
- text-align: left;
33
- caret-color: currentcolor;
34
-
35
- &:focus {
36
- outline: none !important;
37
- border: none !important;
38
- box-shadow: none !important;
39
- }
40
- `,p=i.span`
41
- position: absolute;
42
- visibility: hidden;
43
- white-space: pre;
44
- pointer-events: none;
45
- `,m=i.span`
46
- color: var(--privy-color-foreground);
47
- font-kerning: none;
48
- font-feature-settings: 'calt' off;
49
- font-size: ${({$size:e})=>e===`small`?`0.75rem`:e===`compact`?`0.875rem`:`1rem`};
50
- font-style: normal;
51
- font-weight: 600;
52
- line-height: 1.5rem;
53
- margin-top: 0.75rem;
54
- `,h=i.button`
55
- display: flex;
56
- align-items: center;
57
- justify-content: space-between;
58
- width: auto;
59
- gap: 0.5rem;
60
- border: 1px solid var(--privy-color-border-default);
61
- border-radius: var(--privy-border-radius-full);
62
-
63
- && {
64
- margin: auto;
65
- padding: 0.5rem 1rem;
66
- }
67
- `,g=i.div`
68
- svg {
69
- width: 1rem;
70
- height: 1rem;
71
- border-radius: var(--privy-border-radius-full);
72
- overflow: hidden;
73
- border: solid 0.1px var(--privy-color-border-default);
74
- }
75
- `,_=i.span`
76
- color: var(--privy-color-foreground);
77
- font-kerning: none;
78
- font-feature-settings: 'calt' off;
79
- font-size: 0.875rem;
80
- font-style: normal;
81
- font-weight: 500;
82
- line-height: 1.375rem;
83
- `,v=i.div`
84
- color: var(--privy-color-foreground);
85
-
86
- svg {
87
- width: 1.25rem;
88
- height: 1.25rem;
89
- }
90
- `,y=({opts:e,isLoading:t,onSelectSource:n})=>(0,s.jsx)(a,{showClose:!1,showBack:!0,onBack:()=>n(e.source.selectedAsset),title:`Select currency`,children:(0,s.jsx)(b,{children:e.source.assets.map((e=>{let{icon:r,name:i}=o[e];return(0,s.jsx)(x,{onClick:()=>n(e),disabled:t,children:(0,s.jsxs)(S,{children:[(0,s.jsx)(C,{children:r}),(0,s.jsxs)(w,{children:[(0,s.jsx)(T,{children:i}),(0,s.jsx)(E,{children:e.toLocaleUpperCase()})]})]})},e)}))})}),b=i.div`
91
- display: flex;
92
- flex-direction: column;
93
- gap: 0.75rem;
94
- width: 100%;
95
- max-height: 20.875rem;
96
- overflow-y: auto;
97
- scrollbar-width: none;
98
-
99
- &::-webkit-scrollbar {
100
- display: none;
101
- }
102
- `,x=i.button`
103
- border-color: var(--privy-color-border-default);
104
- border-width: 1px;
105
- border-radius: var(--privy-border-radius-mdlg);
106
- border-style: solid;
107
- display: flex;
108
-
109
- && {
110
- padding: 0.75rem 1rem;
111
- }
112
- `,S=i.div`
113
- display: flex;
114
- align-items: center;
115
- gap: 1rem;
116
- width: 100%;
117
- `,C=i.div`
118
- svg {
119
- width: 2.25rem;
120
- height: 2.25rem;
121
- border-radius: var(--privy-border-radius-full);
122
- overflow: hidden;
123
- border: solid 0.1px var(--privy-color-border-default);
124
- }
125
- `,w=i.div`
126
- display: flex;
127
- flex-direction: column;
128
- align-items: flex-start;
129
- gap: 0.125rem;
130
- `,T=i.span`
131
- color: var(--privy-color-foreground);
132
- font-size: 0.875rem;
133
- font-weight: 600;
134
- line-height: 1.25rem;
135
- `,E=i.span`
136
- color: var(--privy-color-foreground-3);
137
- font-size: 0.75rem;
138
- font-weight: 400;
139
- line-height: 1.125rem;
140
- `;export{u as n,y as r,l as t};
@@ -1,14 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{$ as t,a as n,i as r,r as i}from"./privy-context-81KmsBw2-DiR6-Yq8.js";import{t as a}from"./jsx-runtime-CndCZlyt.js";import{t as o}from"./react-BfYA1q0G.js";import{n as s}from"./modal-context-CwmSeFcv-DPWNJrfK.js";import{c}from"./Loader-UAZqxsnw-DJEVblm1.js";import{c as l,i as u,t as d}from"./ModalFooter-BCuEK_nz-C_71qsaz.js";import{t as f}from"./useActiveWallet-B-yZYGc6-BkK6rFBm.js";import{t as p}from"./ExclamationTriangleIcon-Ca1Xlc_f.js";import{t as m}from"./LockClosedIcon-9EFzWK1C.js";import{t as h}from"./Subtitle-CV-2yKE4-DV0o1av3.js";import{t as g}from"./Title-BnzYV3Is-C3qOPnO_.js";var _=a(),v=e(o(),1),y=c.div`
2
- && {
3
- border-width: 4px;
4
- }
5
-
6
- display: flex;
7
- justify-content: center;
8
- align-items: center;
9
- padding: 1rem;
10
- aspect-ratio: 1;
11
- border-style: solid;
12
- border-color: ${e=>e.$color??`var(--privy-color-accent)`};
13
- border-radius: 50%;
14
- `,b={component:()=>{let{user:e}=r(),{client:a,walletProxy:o,refreshSessionAndUser:c,closePrivyModal:b}=t(),x=s(),{entropyId:S,entropyIdVerifier:C}=x.data?.recoverWallet??{},[w,T]=(0,v.useState)(!1),[E,D]=(0,v.useState)(null),[O,k]=(0,v.useState)(null);function A(){if(!w){if(O)return x.data?.setWalletPassword?.onFailure(O),void b();if(!E)return x.data?.setWalletPassword?.onFailure(Error(`User exited set recovery flow`)),void b()}}return x.onUserCloseViaDialogOrKeybindRef.current=A,(0,_.jsxs)(_.Fragment,O?{children:[(0,_.jsx)(u,{onClose:A},`header`),(0,_.jsx)(y,{$color:`var(--privy-color-error)`,style:{alignSelf:`center`},children:(0,_.jsx)(p,{height:38,width:38,stroke:`var(--privy-color-error)`})}),(0,_.jsx)(g,{style:{marginTop:`0.5rem`},children:`Something went wrong`}),(0,_.jsx)(f,{style:{minHeight:`2rem`}}),(0,_.jsx)(l,{onClick:()=>k(null),children:`Try again`}),(0,_.jsx)(d,{})]}:{children:[(0,_.jsx)(u,{onClose:A},`header`),(0,_.jsx)(m,{style:{width:`3rem`,height:`3rem`,alignSelf:`center`}}),(0,_.jsx)(g,{style:{marginTop:`0.5rem`},children:`Automatically secure your account`}),(0,_.jsx)(h,{style:{marginTop:`1rem`},children:`When you log into a new device, you’ll only need to authenticate to access your account. Never get logged out if you forget your password.`}),(0,_.jsx)(f,{style:{minHeight:`2rem`}}),(0,_.jsx)(l,{loading:w,disabled:!(!w&&!E),onClick:()=>async function(){T(!0);try{let t=await a.getAccessToken(),r=n(e,S);if(!t||!o||!r)return;if(!(await o.setRecovery({accessToken:t,entropyId:S,entropyIdVerifier:C,existingRecoveryMethod:r.recoveryMethod,recoveryMethod:`privy`})).entropyId)throw Error(`Unable to set recovery on wallet`);let s=await c();if(!s)throw Error(`Unable to set recovery on wallet`);let l=n(s,r.address);if(!l)throw Error(`Unabled to set recovery on wallet`);D(!!s),setTimeout((()=>{x.data?.setWalletPassword?.onSuccess(l),b()}),i)}catch(e){k(e)}finally{T(!1)}}(),children:E?`Success`:`Confirm`}),(0,_.jsx)(d,{})]})}};export{b as SetAutomaticRecoveryScreen,b as default};
@@ -1,11 +0,0 @@
1
- import{s as e,t}from"./rolldown-runtime-Bjp52BOI.js";import"./privy-context-81KmsBw2-DiR6-Yq8.js";import{t as n}from"./jsx-runtime-CndCZlyt.js";import{t as r}from"./react-BfYA1q0G.js";import{n as i}from"./modal-context-CwmSeFcv-DPWNJrfK.js";import{c as a}from"./Loader-UAZqxsnw-DJEVblm1.js";import{a as o,i as s,o as c,t as l}from"./ModalFooter-BCuEK_nz-C_71qsaz.js";import{a as u,c as d,d as f,f as p,h as m,i as h,l as g,m as _,n as v,o as y,p as b,r as x,s as S,t as C,u as w}from"./shared-DRZUmnL5-BewE5wK8.js";import{n as T,t as E}from"./Checkbox-D1EDeo41-BUfq0w99.js";import{t as D}from"./ExclamationTriangleIcon-Ca1Xlc_f.js";import{n as O,o as k,u as A}from"./Layouts-BMRfo5hw-e-sepi6F.js";import{n as j}from"./ScreenHeader-CHmc4-Lu-BvGTLg53.js";import{t as M}from"./CheckCircleIcon-BGSI8nKf.js";var N=n(),P=e(r());function F({title:e,titleId:t,...n},r){return P.createElement(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?P.createElement(`title`,{id:t},e):null,P.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3`}))}var I=P.forwardRef(F);function ee({title:e,titleId:t,...n},r){return P.createElement(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?P.createElement(`title`,{id:t},e):null,P.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75`}))}var te=P.forwardRef(ee);function ne({title:e,titleId:t,...n},r){return P.createElement(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?P.createElement(`title`,{id:t},e):null,P.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M15.75 5.25a3 3 0 0 1 3 3m3 0a6 6 0 0 1-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1 1 21.75 8.25Z`}))}var re=P.forwardRef(ne),L=e(t(((e,t)=>{var n=function(e,t){return Math.round(t*Math.log(e)/Math.LN2)},r=function(e){return function(t){return e.reduce(function(e,n){return e+(n.re.test(t)?n.length:0)},0)}}([{name:`lowercase`,re:/[a-z]/,length:26},{name:`uppercase`,re:/[A-Z]/,length:26},{name:`numbers`,re:/[0-9]/,length:10},{name:`symbols`,re:/[^a-zA-Z0-9]/,length:33}]);t.exports=function(e){return e?n(r(e),e.length):0}}))(),1);function R(e){return crypto.getRandomValues(new Uint8Array(e))}var z=256,B=65536;function V(){let[e]=R(1);return e}function H(){let[e,t]=R(2);return(e<<8)+t}function U(e){if(typeof e!=`number`||e<2||e>B)throw Error(`Invalid number: number must be at least two and at most ${B}`);let t=e>256,n=t?B:z,r=t?H:V,i=e*Math.floor(n/e);for(;;){let t=r();if(t<i)return t%e}}function W(e,t,n){if(typeof e!=`number`||e<1)throw Error(`Invalid argument: length must be a number greater than or equal to 1`);if(typeof t!=`number`||t<0)throw Error(`Invalid argument: start must be a number greater than or equal to 0`);if(typeof n!=`number`||n>B)throw Error(`Invalid argument: end must be a number less than or equal to ${B}`);if(n-t<2)throw Error(`Invalid range: range must contain at least two values`);let r=[];for(let i=0;i<e;i++)r[i]=t+U(n-t);return r}function G(e,t,n=`-`){if(typeof e!=`number`||e<1)throw Error(`Invalid argument: length argument must be a number greater than or equal to 1`);if(!Array.isArray(t)||t.length<2)throw Error(`Invalid argument: wordlist argument must be an array with length greater than or equal to 2`);if(typeof n!=`string`)throw Error(`Invalid argument: sep argument must be a string`);return W(e,0,t.length).reduce((e,r,i)=>{let a=t[r];return e+(i===0?a:n+a)},``)}var K=Object.freeze(`abacus.abdomen.abdominal.abide.abiding.ability.ablaze.able.abnormal.abrasion.abrasive.abreast.abridge.abroad.abruptly.absence.absentee.absently.absinthe.absolute.absolve.abstain.abstract.absurd.accent.acclaim.acclimate.accompany.account.accuracy.accurate.accustom.acetone.achiness.aching.acid.acorn.acquaint.acquire.acre.acrobat.acronym.acting.action.activate.activator.active.activism.activist.activity.actress.acts.acutely.acuteness.aeration.aerobics.aerosol.aerospace.afar.affair.affected.affecting.affection.affidavit.affiliate.affirm.affix.afflicted.affluent.afford.affront.aflame.afloat.aflutter.afoot.afraid.afterglow.afterlife.aftermath.aftermost.afternoon.aged.ageless.agency.agenda.agent.aggregate.aghast.agile.agility.aging.agnostic.agonize.agonizing.agony.agreeable.agreeably.agreed.agreeing.agreement.aground.ahead.ahoy.aide.aids.aim.ajar.alabaster.alarm.albatross.album.alfalfa.algebra.algorithm.alias.alibi.alienable.alienate.aliens.alike.alive.alkaline.alkalize.almanac.almighty.almost.aloe.aloft.aloha.alone.alongside.aloof.alphabet.alright.although.altitude.alto.aluminum.alumni.always.amaretto.amaze.amazingly.amber.ambiance.ambiguity.ambiguous.ambition.ambitious.ambulance.ambush.amendable.amendment.amends.amenity.amiable.amicably.amid.amigo.amino.amiss.ammonia.ammonium.amnesty.amniotic.among.amount.amperage.ample.amplifier.amplify.amply.amuck.amulet.amusable.amused.amusement.amuser.amusing.anaconda.anaerobic.anagram.anatomist.anatomy.anchor.anchovy.ancient.android.anemia.anemic.aneurism.anew.angelfish.angelic.anger.angled.angler.angles.angling.angrily.angriness.anguished.angular.animal.animate.animating.animation.animator.anime.animosity.ankle.annex.annotate.announcer.annoying.annually.annuity.anointer.another.answering.antacid.antarctic.anteater.antelope.antennae.anthem.anthill.anthology.antibody.antics.antidote.antihero.antiquely.antiques.antiquity.antirust.antitoxic.antitrust.antiviral.antivirus.antler.antonym.antsy.anvil.anybody.anyhow.anymore.anyone.anyplace.anything.anytime.anyway.anywhere.aorta.apache.apostle.appealing.appear.appease.appeasing.appendage.appendix.appetite.appetizer.applaud.applause.apple.appliance.applicant.applied.apply.appointee.appraisal.appraiser.apprehend.approach.approval.approve.apricot.april.apron.aptitude.aptly.aqua.aqueduct.arbitrary.arbitrate.ardently.area.arena.arguable.arguably.argue.arise.armadillo.armband.armchair.armed.armful.armhole.arming.armless.armoire.armored.armory.armrest.army.aroma.arose.around.arousal.arrange.array.arrest.arrival.arrive.arrogance.arrogant.arson.art.ascend.ascension.ascent.ascertain.ashamed.ashen.ashes.ashy.aside.askew.asleep.asparagus.aspect.aspirate.aspire.aspirin.astonish.astound.astride.astrology.astronaut.astronomy.astute.atlantic.atlas.atom.atonable.atop.atrium.atrocious.atrophy.attach.attain.attempt.attendant.attendee.attention.attentive.attest.attic.attire.attitude.attractor.attribute.atypical.auction.audacious.audacity.audible.audibly.audience.audio.audition.augmented.august.authentic.author.autism.autistic.autograph.automaker.automated.automatic.autopilot.available.avalanche.avatar.avenge.avenging.avenue.average.aversion.avert.aviation.aviator.avid.avoid.await.awaken.award.aware.awhile.awkward.awning.awoke.awry.axis.babble.babbling.babied.baboon.backache.backboard.backboned.backdrop.backed.backer.backfield.backfire.backhand.backing.backlands.backlash.backless.backlight.backlit.backlog.backpack.backpedal.backrest.backroom.backshift.backside.backslid.backspace.backspin.backstab.backstage.backtalk.backtrack.backup.backward.backwash.backwater.backyard.bacon.bacteria.bacterium.badass.badge.badland.badly.badness.baffle.baffling.bagel.bagful.baggage.bagged.baggie.bagginess.bagging.baggy.bagpipe.baguette.baked.bakery.bakeshop.baking.balance.balancing.balcony.balmy.balsamic.bamboo.banana.banish.banister.banjo.bankable.bankbook.banked.banker.banking.banknote.bankroll.banner.bannister.banshee.banter.barbecue.barbed.barbell.barber.barcode.barge.bargraph.barista.baritone.barley.barmaid.barman.barn.barometer.barrack.barracuda.barrel.barrette.barricade.barrier.barstool.bartender.barterer.bash.basically.basics.basil.basin.basis.basket.batboy.batch.bath.baton.bats.battalion.battered.battering.battery.batting.battle.bauble.bazooka.blabber.bladder.blade.blah.blame.blaming.blanching.blandness.blank.blaspheme.blasphemy.blast.blatancy.blatantly.blazer.blazing.bleach.bleak.bleep.blemish.blend.bless.blighted.blimp.bling.blinked.blinker.blinking.blinks.blip.blissful.blitz.blizzard.bloated.bloating.blob.blog.bloomers.blooming.blooper.blot.blouse.blubber.bluff.bluish.blunderer.blunt.blurb.blurred.blurry.blurt.blush.blustery.boaster.boastful.boasting.boat.bobbed.bobbing.bobble.bobcat.bobsled.bobtail.bodacious.body.bogged.boggle.bogus.boil.bok.bolster.bolt.bonanza.bonded.bonding.bondless.boned.bonehead.boneless.bonelike.boney.bonfire.bonnet.bonsai.bonus.bony.boogeyman.boogieman.book.boondocks.booted.booth.bootie.booting.bootlace.bootleg.boots.boozy.borax.boring.borough.borrower.borrowing.boss.botanical.botanist.botany.botch.both.bottle.bottling.bottom.bounce.bouncing.bouncy.bounding.boundless.bountiful.bovine.boxcar.boxer.boxing.boxlike.boxy.breach.breath.breeches.breeching.breeder.breeding.breeze.breezy.brethren.brewery.brewing.briar.bribe.brick.bride.bridged.brigade.bright.brilliant.brim.bring.brink.brisket.briskly.briskness.bristle.brittle.broadband.broadcast.broaden.broadly.broadness.broadside.broadways.broiler.broiling.broken.broker.bronchial.bronco.bronze.bronzing.brook.broom.brought.browbeat.brownnose.browse.browsing.bruising.brunch.brunette.brunt.brush.brussels.brute.brutishly.bubble.bubbling.bubbly.buccaneer.bucked.bucket.buckle.buckshot.buckskin.bucktooth.buckwheat.buddhism.buddhist.budding.buddy.budget.buffalo.buffed.buffer.buffing.buffoon.buggy.bulb.bulge.bulginess.bulgur.bulk.bulldog.bulldozer.bullfight.bullfrog.bullhorn.bullion.bullish.bullpen.bullring.bullseye.bullwhip.bully.bunch.bundle.bungee.bunion.bunkbed.bunkhouse.bunkmate.bunny.bunt.busboy.bush.busily.busload.bust.busybody.buzz.cabana.cabbage.cabbie.cabdriver.cable.caboose.cache.cackle.cacti.cactus.caddie.caddy.cadet.cadillac.cadmium.cage.cahoots.cake.calamari.calamity.calcium.calculate.calculus.caliber.calibrate.calm.caloric.calorie.calzone.camcorder.cameo.camera.camisole.camper.campfire.camping.campsite.campus.canal.canary.cancel.candied.candle.candy.cane.canine.canister.cannabis.canned.canning.cannon.cannot.canola.canon.canopener.canopy.canteen.canyon.capable.capably.capacity.cape.capillary.capital.capitol.capped.capricorn.capsize.capsule.caption.captivate.captive.captivity.capture.caramel.carat.caravan.carbon.cardboard.carded.cardiac.cardigan.cardinal.cardstock.carefully.caregiver.careless.caress.caretaker.cargo.caring.carless.carload.carmaker.carnage.carnation.carnival.carnivore.carol.carpenter.carpentry.carpool.carport.carried.carrot.carrousel.carry.cartel.cartload.carton.cartoon.cartridge.cartwheel.carve.carving.carwash.cascade.case.cash.casing.casino.casket.cassette.casually.casualty.catacomb.catalog.catalyst.catalyze.catapult.cataract.catatonic.catcall.catchable.catcher.catching.catchy.caterer.catering.catfight.catfish.cathedral.cathouse.catlike.catnap.catnip.catsup.cattail.cattishly.cattle.catty.catwalk.caucasian.caucus.causal.causation.cause.causing.cauterize.caution.cautious.cavalier.cavalry.caviar.cavity.cedar.celery.celestial.celibacy.celibate.celtic.cement.census.ceramics.ceremony.certainly.certainty.certified.certify.cesarean.cesspool.chafe.chaffing.chain.chair.chalice.challenge.chamber.chamomile.champion.chance.change.channel.chant.chaos.chaperone.chaplain.chapped.chaps.chapter.character.charbroil.charcoal.charger.charging.chariot.charity.charm.charred.charter.charting.chase.chasing.chaste.chastise.chastity.chatroom.chatter.chatting.chatty.cheating.cheddar.cheek.cheer.cheese.cheesy.chef.chemicals.chemist.chemo.cherisher.cherub.chess.chest.chevron.chevy.chewable.chewer.chewing.chewy.chief.chihuahua.childcare.childhood.childish.childless.childlike.chili.chill.chimp.chip.chirping.chirpy.chitchat.chivalry.chive.chloride.chlorine.choice.chokehold.choking.chomp.chooser.choosing.choosy.chop.chosen.chowder.chowtime.chrome.chubby.chuck.chug.chummy.chump.chunk.churn.chute.cider.cilantro.cinch.cinema.cinnamon.circle.circling.circular.circulate.circus.citable.citadel.citation.citizen.citric.citrus.city.civic.civil.clad.claim.clambake.clammy.clamor.clamp.clamshell.clang.clanking.clapped.clapper.clapping.clarify.clarinet.clarity.clash.clasp.class.clatter.clause.clavicle.claw.clay.clean.clear.cleat.cleaver.cleft.clench.clergyman.clerical.clerk.clever.clicker.client.climate.climatic.cling.clinic.clinking.clip.clique.cloak.clobber.clock.clone.cloning.closable.closure.clothes.clothing.cloud.clover.clubbed.clubbing.clubhouse.clump.clumsily.clumsy.clunky.clustered.clutch.clutter.coach.coagulant.coastal.coaster.coasting.coastland.coastline.coat.coauthor.cobalt.cobbler.cobweb.cocoa.coconut.cod.coeditor.coerce.coexist.coffee.cofounder.cognition.cognitive.cogwheel.coherence.coherent.cohesive.coil.coke.cola.cold.coleslaw.coliseum.collage.collapse.collar.collected.collector.collide.collie.collision.colonial.colonist.colonize.colony.colossal.colt.coma.come.comfort.comfy.comic.coming.comma.commence.commend.comment.commerce.commode.commodity.commodore.common.commotion.commute.commuting.compacted.compacter.compactly.compactor.companion.company.compare.compel.compile.comply.component.composed.composer.composite.compost.composure.compound.compress.comprised.computer.computing.comrade.concave.conceal.conceded.concept.concerned.concert.conch.concierge.concise.conclude.concrete.concur.condense.condiment.condition.condone.conducive.conductor.conduit.cone.confess.confetti.confidant.confident.confider.confiding.configure.confined.confining.confirm.conflict.conform.confound.confront.confused.confusing.confusion.congenial.congested.congrats.congress.conical.conjoined.conjure.conjuror.connected.connector.consensus.consent.console.consoling.consonant.constable.constant.constrain.constrict.construct.consult.consumer.consuming.contact.container.contempt.contend.contented.contently.contents.contest.context.contort.contour.contrite.control.contusion.convene.convent.copartner.cope.copied.copier.copilot.coping.copious.copper.copy.coral.cork.cornball.cornbread.corncob.cornea.corned.corner.cornfield.cornflake.cornhusk.cornmeal.cornstalk.corny.coronary.coroner.corporal.corporate.corral.correct.corridor.corrode.corroding.corrosive.corsage.corset.cortex.cosigner.cosmetics.cosmic.cosmos.cosponsor.cost.cottage.cotton.couch.cough.could.countable.countdown.counting.countless.country.county.courier.covenant.cover.coveted.coveting.coyness.cozily.coziness.cozy.crabbing.crabgrass.crablike.crabmeat.cradle.cradling.crafter.craftily.craftsman.craftwork.crafty.cramp.cranberry.crane.cranial.cranium.crank.crate.crave.craving.crawfish.crawlers.crawling.crayfish.crayon.crazed.crazily.craziness.crazy.creamed.creamer.creamlike.crease.creasing.creatable.create.creation.creative.creature.credible.credibly.credit.creed.creme.creole.crepe.crept.crescent.crested.cresting.crestless.crevice.crewless.crewman.crewmate.crib.cricket.cried.crier.crimp.crimson.cringe.cringing.crinkle.crinkly.crisped.crisping.crisply.crispness.crispy.criteria.critter.croak.crock.crook.croon.crop.cross.crouch.crouton.crowbar.crowd.crown.crucial.crudely.crudeness.cruelly.cruelness.cruelty.crumb.crummiest.crummy.crumpet.crumpled.cruncher.crunching.crunchy.crusader.crushable.crushed.crusher.crushing.crust.crux.crying.cryptic.crystal.cubbyhole.cube.cubical.cubicle.cucumber.cuddle.cuddly.cufflink.culinary.culminate.culpable.culprit.cultivate.cultural.culture.cupbearer.cupcake.cupid.cupped.cupping.curable.curator.curdle.cure.curfew.curing.curled.curler.curliness.curling.curly.curry.curse.cursive.cursor.curtain.curtly.curtsy.curvature.curve.curvy.cushy.cusp.cussed.custard.custodian.custody.customary.customer.customize.customs.cut.cycle.cyclic.cycling.cyclist.cylinder.cymbal.cytoplasm.cytoplast.dab.dad.daffodil.dagger.daily.daintily.dainty.dairy.daisy.dallying.dance.dancing.dandelion.dander.dandruff.dandy.danger.dangle.dangling.daredevil.dares.daringly.darkened.darkening.darkish.darkness.darkroom.darling.darn.dart.darwinism.dash.dastardly.data.datebook.dating.daughter.daunting.dawdler.dawn.daybed.daybreak.daycare.daydream.daylight.daylong.dayroom.daytime.dazzler.dazzling.deacon.deafening.deafness.dealer.dealing.dealmaker.dealt.dean.debatable.debate.debating.debit.debrief.debtless.debtor.debug.debunk.decade.decaf.decal.decathlon.decay.deceased.deceit.deceiver.deceiving.december.decency.decent.deception.deceptive.decibel.decidable.decimal.decimeter.decipher.deck.declared.decline.decode.decompose.decorated.decorator.decoy.decrease.decree.dedicate.dedicator.deduce.deduct.deed.deem.deepen.deeply.deepness.deface.defacing.defame.default.defeat.defection.defective.defendant.defender.defense.defensive.deferral.deferred.defiance.defiant.defile.defiling.define.definite.deflate.deflation.deflator.deflected.deflector.defog.deforest.defraud.defrost.deftly.defuse.defy.degraded.degrading.degrease.degree.dehydrate.deity.dejected.delay.delegate.delegator.delete.deletion.delicacy.delicate.delicious.delighted.delirious.delirium.deliverer.delivery.delouse.delta.deluge.delusion.deluxe.demanding.demeaning.demeanor.demise.democracy.democrat.demote.demotion.demystify.denatured.deniable.denial.denim.denote.dense.density.dental.dentist.denture.deny.deodorant.deodorize.departed.departure.depict.deplete.depletion.deplored.deploy.deport.depose.depraved.depravity.deprecate.depress.deprive.depth.deputize.deputy.derail.deranged.derby.derived.desecrate.deserve.deserving.designate.designed.designer.designing.deskbound.desktop.deskwork.desolate.despair.despise.despite.destiny.destitute.destruct.detached.detail.detection.detective.detector.detention.detergent.detest.detonate.detonator.detoxify.detract.deuce.devalue.deviancy.deviant.deviate.deviation.deviator.device.devious.devotedly.devotee.devotion.devourer.devouring.devoutly.dexterity.dexterous.diabetes.diabetic.diabolic.diagnoses.diagnosis.diagram.dial.diameter.diaper.diaphragm.diary.dice.dicing.dictate.dictation.dictator.difficult.diffused.diffuser.diffusion.diffusive.dig.dilation.diligence.diligent.dill.dilute.dime.diminish.dimly.dimmed.dimmer.dimness.dimple.diner.dingbat.dinghy.dinginess.dingo.dingy.dining.dinner.diocese.dioxide.diploma.dipped.dipper.dipping.directed.direction.directive.directly.directory.direness.dirtiness.disabled.disagree.disallow.disarm.disarray.disaster.disband.disbelief.disburse.discard.discern.discharge.disclose.discolor.discount.discourse.discover.discuss.disdain.disengage.disfigure.disgrace.dish.disinfect.disjoin.disk.dislike.disliking.dislocate.dislodge.disloyal.dismantle.dismay.dismiss.dismount.disobey.disorder.disown.disparate.disparity.dispatch.dispense.dispersal.dispersed.disperser.displace.display.displease.disposal.dispose.disprove.dispute.disregard.disrupt.dissuade.distance.distant.distaste.distill.distinct.distort.distract.distress.district.distrust.ditch.ditto.ditzy.dividable.divided.dividend.dividers.dividing.divinely.diving.divinity.divisible.divisibly.division.divisive.divorcee.dizziness.dizzy.doable.docile.dock.doctrine.document.dodge.dodgy.doily.doing.dole.dollar.dollhouse.dollop.dolly.dolphin.domain.domelike.domestic.dominion.dominoes.donated.donation.donator.donor.donut.doodle.doorbell.doorframe.doorknob.doorman.doormat.doornail.doorpost.doorstep.doorstop.doorway.doozy.dork.dormitory.dorsal.dosage.dose.dotted.doubling.douche.dove.down.dowry.doze.drab.dragging.dragonfly.dragonish.dragster.drainable.drainage.drained.drainer.drainpipe.dramatic.dramatize.drank.drapery.drastic.draw.dreaded.dreadful.dreadlock.dreamboat.dreamily.dreamland.dreamless.dreamlike.dreamt.dreamy.drearily.dreary.drench.dress.drew.dribble.dried.drier.drift.driller.drilling.drinkable.drinking.dripping.drippy.drivable.driven.driver.driveway.driving.drizzle.drizzly.drone.drool.droop.drop-down.dropbox.dropkick.droplet.dropout.dropper.drove.drown.drowsily.drudge.drum.dry.dubbed.dubiously.duchess.duckbill.ducking.duckling.ducktail.ducky.duct.dude.duffel.dugout.duh.duke.duller.dullness.duly.dumping.dumpling.dumpster.duo.dupe.duplex.duplicate.duplicity.durable.durably.duration.duress.during.dusk.dust.dutiful.duty.duvet.dwarf.dweeb.dwelled.dweller.dwelling.dwindle.dwindling.dynamic.dynamite.dynasty.dyslexia.dyslexic.each.eagle.earache.eardrum.earflap.earful.earlobe.early.earmark.earmuff.earphone.earpiece.earplugs.earring.earshot.earthen.earthlike.earthling.earthly.earthworm.earthy.earwig.easeful.easel.easiest.easily.easiness.easing.eastbound.eastcoast.easter.eastward.eatable.eaten.eatery.eating.eats.ebay.ebony.ebook.ecard.eccentric.echo.eclair.eclipse.ecologist.ecology.economic.economist.economy.ecosphere.ecosystem.edge.edginess.edging.edgy.edition.editor.educated.education.educator.eel.effective.effects.efficient.effort.eggbeater.egging.eggnog.eggplant.eggshell.egomaniac.egotism.egotistic.either.eject.elaborate.elastic.elated.elbow.eldercare.elderly.eldest.electable.election.elective.elephant.elevate.elevating.elevation.elevator.eleven.elf.eligible.eligibly.eliminate.elite.elitism.elixir.elk.ellipse.elliptic.elm.elongated.elope.eloquence.eloquent.elsewhere.elude.elusive.elves.email.embargo.embark.embassy.embattled.embellish.ember.embezzle.emblaze.emblem.embody.embolism.emboss.embroider.emcee.emerald.emergency.emission.emit.emote.emoticon.emotion.empathic.empathy.emperor.emphases.emphasis.emphasize.emphatic.empirical.employed.employee.employer.emporium.empower.emptier.emptiness.empty.emu.enable.enactment.enamel.enchanted.enchilada.encircle.enclose.enclosure.encode.encore.encounter.encourage.encroach.encrust.encrypt.endanger.endeared.endearing.ended.ending.endless.endnote.endocrine.endorphin.endorse.endowment.endpoint.endurable.endurance.enduring.energetic.energize.energy.enforced.enforcer.engaged.engaging.engine.engorge.engraved.engraver.engraving.engross.engulf.enhance.enigmatic.enjoyable.enjoyably.enjoyer.enjoying.enjoyment.enlarged.enlarging.enlighten.enlisted.enquirer.enrage.enrich.enroll.enslave.ensnare.ensure.entail.entangled.entering.entertain.enticing.entire.entitle.entity.entomb.entourage.entrap.entree.entrench.entrust.entryway.entwine.enunciate.envelope.enviable.enviably.envious.envision.envoy.envy.enzyme.epic.epidemic.epidermal.epidermis.epidural.epilepsy.epileptic.epilogue.epiphany.episode.equal.equate.equation.equator.equinox.equipment.equity.equivocal.eradicate.erasable.erased.eraser.erasure.ergonomic.errand.errant.erratic.error.erupt.escalate.escalator.escapable.escapade.escapist.escargot.eskimo.esophagus.espionage.espresso.esquire.essay.essence.essential.establish.estate.esteemed.estimate.estimator.estranged.estrogen.etching.eternal.eternity.ethanol.ether.ethically.ethics.euphemism.evacuate.evacuee.evade.evaluate.evaluator.evaporate.evasion.evasive.even.everglade.evergreen.everybody.everyday.everyone.evict.evidence.evident.evil.evoke.evolution.evolve.exact.exalted.example.excavate.excavator.exceeding.exception.excess.exchange.excitable.exciting.exclaim.exclude.excluding.exclusion.exclusive.excretion.excretory.excursion.excusable.excusably.excuse.exemplary.exemplify.exemption.exerciser.exert.exes.exfoliate.exhale.exhaust.exhume.exile.existing.exit.exodus.exonerate.exorcism.exorcist.expand.expanse.expansion.expansive.expectant.expedited.expediter.expel.expend.expenses.expensive.expert.expire.expiring.explain.expletive.explicit.explode.exploit.explore.exploring.exponent.exporter.exposable.expose.exposure.express.expulsion.exquisite.extended.extending.extent.extenuate.exterior.external.extinct.extortion.extradite.extras.extrovert.extrude.extruding.exuberant.fable.fabric.fabulous.facebook.facecloth.facedown.faceless.facelift.faceplate.faceted.facial.facility.facing.facsimile.faction.factoid.factor.factsheet.factual.faculty.fade.fading.failing.falcon.fall.false.falsify.fame.familiar.family.famine.famished.fanatic.fancied.fanciness.fancy.fanfare.fang.fanning.fantasize.fantastic.fantasy.fascism.fastball.faster.fasting.fastness.faucet.favorable.favorably.favored.favoring.favorite.fax.feast.federal.fedora.feeble.feed.feel.feisty.feline.felt-tip.feminine.feminism.feminist.feminize.femur.fence.fencing.fender.ferment.fernlike.ferocious.ferocity.ferret.ferris.ferry.fervor.fester.festival.festive.festivity.fetal.fetch.fever.fiber.fiction.fiddle.fiddling.fidelity.fidgeting.fidgety.fifteen.fifth.fiftieth.fifty.figment.figure.figurine.filing.filled.filler.filling.film.filter.filth.filtrate.finale.finalist.finalize.finally.finance.financial.finch.fineness.finer.finicky.finished.finisher.finishing.finite.finless.finlike.fiscally.fit.five.flaccid.flagman.flagpole.flagship.flagstick.flagstone.flail.flakily.flaky.flame.flammable.flanked.flanking.flannels.flap.flaring.flashback.flashbulb.flashcard.flashily.flashing.flashy.flask.flatbed.flatfoot.flatly.flatness.flatten.flattered.flatterer.flattery.flattop.flatware.flatworm.flavored.flavorful.flavoring.flaxseed.fled.fleshed.fleshy.flick.flier.flight.flinch.fling.flint.flip.flirt.float.flock.flogging.flop.floral.florist.floss.flounder.flyable.flyaway.flyer.flying.flyover.flypaper.foam.foe.fog.foil.folic.folk.follicle.follow.fondling.fondly.fondness.fondue.font.food.fool.footage.football.footbath.footboard.footer.footgear.foothill.foothold.footing.footless.footman.footnote.footpad.footpath.footprint.footrest.footsie.footsore.footwear.footwork.fossil.foster.founder.founding.fountain.fox.foyer.fraction.fracture.fragile.fragility.fragment.fragrance.fragrant.frail.frame.framing.frantic.fraternal.frayed.fraying.frays.freckled.freckles.freebase.freebee.freebie.freedom.freefall.freehand.freeing.freeload.freely.freemason.freeness.freestyle.freeware.freeway.freewill.freezable.freezing.freight.french.frenzied.frenzy.frequency.frequent.fresh.fretful.fretted.friction.friday.fridge.fried.friend.frighten.frightful.frigidity.frigidly.frill.fringe.frisbee.frisk.fritter.frivolous.frolic.from.front.frostbite.frosted.frostily.frosting.frostlike.frosty.froth.frown.frozen.fructose.frugality.frugally.fruit.frustrate.frying.gab.gaffe.gag.gainfully.gaining.gains.gala.gallantly.galleria.gallery.galley.gallon.gallows.gallstone.galore.galvanize.gambling.game.gaming.gamma.gander.gangly.gangrene.gangway.gap.garage.garbage.garden.gargle.garland.garlic.garment.garnet.garnish.garter.gas.gatherer.gathering.gating.gauging.gauntlet.gauze.gave.gawk.gazing.gear.gecko.geek.geiger.gem.gender.generic.generous.genetics.genre.gentile.gentleman.gently.gents.geography.geologic.geologist.geology.geometric.geometry.geranium.gerbil.geriatric.germicide.germinate.germless.germproof.gestate.gestation.gesture.getaway.getting.getup.giant.gibberish.giblet.giddily.giddiness.giddy.gift.gigabyte.gigahertz.gigantic.giggle.giggling.giggly.gigolo.gilled.gills.gimmick.girdle.giveaway.given.giver.giving.gizmo.gizzard.glacial.glacier.glade.gladiator.gladly.glamorous.glamour.glance.glancing.glandular.glare.glaring.glass.glaucoma.glazing.gleaming.gleeful.glider.gliding.glimmer.glimpse.glisten.glitch.glitter.glitzy.gloater.gloating.gloomily.gloomy.glorified.glorifier.glorify.glorious.glory.gloss.glove.glowing.glowworm.glucose.glue.gluten.glutinous.glutton.gnarly.gnat.goal.goatskin.goes.goggles.going.goldfish.goldmine.goldsmith.golf.goliath.gonad.gondola.gone.gong.good.gooey.goofball.goofiness.goofy.google.goon.gopher.gore.gorged.gorgeous.gory.gosling.gossip.gothic.gotten.gout.gown.grab.graceful.graceless.gracious.gradation.graded.grader.gradient.grading.gradually.graduate.graffiti.grafted.grafting.grain.granddad.grandkid.grandly.grandma.grandpa.grandson.granite.granny.granola.grant.granular.grape.graph.grapple.grappling.grasp.grass.gratified.gratify.grating.gratitude.gratuity.gravel.graveness.graves.graveyard.gravitate.gravity.gravy.gray.grazing.greasily.greedily.greedless.greedy.green.greeter.greeting.grew.greyhound.grid.grief.grievance.grieving.grievous.grill.grimace.grimacing.grime.griminess.grimy.grinch.grinning.grip.gristle.grit.groggily.groggy.groin.groom.groove.grooving.groovy.grope.ground.grouped.grout.grove.grower.growing.growl.grub.grudge.grudging.grueling.gruffly.grumble.grumbling.grumbly.grumpily.grunge.grunt.guacamole.guidable.guidance.guide.guiding.guileless.guise.gulf.gullible.gully.gulp.gumball.gumdrop.gumminess.gumming.gummy.gurgle.gurgling.guru.gush.gusto.gusty.gutless.guts.gutter.guy.guzzler.gyration.habitable.habitant.habitat.habitual.hacked.hacker.hacking.hacksaw.had.haggler.haiku.half.halogen.halt.halved.halves.hamburger.hamlet.hammock.hamper.hamster.hamstring.handbag.handball.handbook.handbrake.handcart.handclap.handclasp.handcraft.handcuff.handed.handful.handgrip.handgun.handheld.handiness.handiwork.handlebar.handled.handler.handling.handmade.handoff.handpick.handprint.handrail.handsaw.handset.handsfree.handshake.handstand.handwash.handwork.handwoven.handwrite.handyman.hangnail.hangout.hangover.hangup.hankering.hankie.hanky.haphazard.happening.happier.happiest.happily.happiness.happy.harbor.hardcopy.hardcore.hardcover.harddisk.hardened.hardener.hardening.hardhat.hardhead.hardiness.hardly.hardness.hardship.hardware.hardwired.hardwood.hardy.harmful.harmless.harmonica.harmonics.harmonize.harmony.harness.harpist.harsh.harvest.hash.hassle.haste.hastily.hastiness.hasty.hatbox.hatchback.hatchery.hatchet.hatching.hatchling.hate.hatless.hatred.haunt.haven.hazard.hazelnut.hazily.haziness.hazing.hazy.headache.headband.headboard.headcount.headdress.headed.header.headfirst.headgear.heading.headlamp.headless.headlock.headphone.headpiece.headrest.headroom.headscarf.headset.headsman.headstand.headstone.headway.headwear.heap.heat.heave.heavily.heaviness.heaving.hedge.hedging.heftiness.hefty.helium.helmet.helper.helpful.helping.helpless.helpline.hemlock.hemstitch.hence.henchman.henna.herald.herbal.herbicide.herbs.heritage.hermit.heroics.heroism.herring.herself.hertz.hesitancy.hesitant.hesitate.hexagon.hexagram.hubcap.huddle.huddling.huff.hug.hula.hulk.hull.human.humble.humbling.humbly.humid.humiliate.humility.humming.hummus.humongous.humorist.humorless.humorous.humpback.humped.humvee.hunchback.hundredth.hunger.hungrily.hungry.hunk.hunter.hunting.huntress.huntsman.hurdle.hurled.hurler.hurling.hurray.hurricane.hurried.hurry.hurt.husband.hush.husked.huskiness.hut.hybrid.hydrant.hydrated.hydration.hydrogen.hydroxide.hyperlink.hypertext.hyphen.hypnoses.hypnosis.hypnotic.hypnotism.hypnotist.hypnotize.hypocrisy.hypocrite.ibuprofen.ice.iciness.icing.icky.icon.icy.idealism.idealist.idealize.ideally.idealness.identical.identify.identity.ideology.idiocy.idiom.idly.igloo.ignition.ignore.iguana.illicitly.illusion.illusive.image.imaginary.imagines.imaging.imbecile.imitate.imitation.immature.immerse.immersion.imminent.immobile.immodest.immorally.immortal.immovable.immovably.immunity.immunize.impaired.impale.impart.impatient.impeach.impeding.impending.imperfect.imperial.impish.implant.implement.implicate.implicit.implode.implosion.implosive.imply.impolite.important.importer.impose.imposing.impotence.impotency.impotent.impound.imprecise.imprint.imprison.impromptu.improper.improve.improving.improvise.imprudent.impulse.impulsive.impure.impurity.iodine.iodize.ion.ipad.iphone.ipod.irate.irk.iron.irregular.irrigate.irritable.irritably.irritant.irritate.islamic.islamist.isolated.isolating.isolation.isotope.issue.issuing.italicize.italics.item.itinerary.itunes.ivory.ivy.jab.jackal.jacket.jackknife.jackpot.jailbird.jailbreak.jailer.jailhouse.jalapeno.jam.janitor.january.jargon.jarring.jasmine.jaundice.jaunt.java.jawed.jawless.jawline.jaws.jaybird.jaywalker.jazz.jeep.jeeringly.jellied.jelly.jersey.jester.jet.jiffy.jigsaw.jimmy.jingle.jingling.jinx.jitters.jittery.job.jockey.jockstrap.jogger.jogging.john.joining.jokester.jokingly.jolliness.jolly.jolt.jot.jovial.joyfully.joylessly.joyous.joyride.joystick.jubilance.jubilant.judge.judgingly.judicial.judiciary.judo.juggle.juggling.jugular.juice.juiciness.juicy.jujitsu.jukebox.july.jumble.jumbo.jump.junction.juncture.june.junior.juniper.junkie.junkman.junkyard.jurist.juror.jury.justice.justifier.justify.justly.justness.juvenile.kabob.kangaroo.karaoke.karate.karma.kebab.keenly.keenness.keep.keg.kelp.kennel.kept.kerchief.kerosene.kettle.kick.kiln.kilobyte.kilogram.kilometer.kilowatt.kilt.kimono.kindle.kindling.kindly.kindness.kindred.kinetic.kinfolk.king.kinship.kinsman.kinswoman.kissable.kisser.kissing.kitchen.kite.kitten.kitty.kiwi.kleenex.knapsack.knee.knelt.knickers.knoll.koala.kooky.kosher.krypton.kudos.kung.labored.laborer.laboring.laborious.labrador.ladder.ladies.ladle.ladybug.ladylike.lagged.lagging.lagoon.lair.lake.lance.landed.landfall.landfill.landing.landlady.landless.landline.landlord.landmark.landmass.landmine.landowner.landscape.landside.landslide.language.lankiness.lanky.lantern.lapdog.lapel.lapped.lapping.laptop.lard.large.lark.lash.lasso.last.latch.late.lather.latitude.latrine.latter.latticed.launch.launder.laundry.laurel.lavender.lavish.laxative.lazily.laziness.lazy.lecturer.left.legacy.legal.legend.legged.leggings.legible.legibly.legislate.lego.legroom.legume.legwarmer.legwork.lemon.lend.length.lens.lent.leotard.lesser.letdown.lethargic.lethargy.letter.lettuce.level.leverage.levers.levitate.levitator.liability.liable.liberty.librarian.library.licking.licorice.lid.life.lifter.lifting.liftoff.ligament.likely.likeness.likewise.liking.lilac.lilly.lily.limb.limeade.limelight.limes.limit.limping.limpness.line.lingo.linguini.linguist.lining.linked.linoleum.linseed.lint.lion.lip.liquefy.liqueur.liquid.lisp.list.litigate.litigator.litmus.litter.little.livable.lived.lively.liver.livestock.lividly.living.lizard.lubricant.lubricate.lucid.luckily.luckiness.luckless.lucrative.ludicrous.lugged.lukewarm.lullaby.lumber.luminance.luminous.lumpiness.lumping.lumpish.lunacy.lunar.lunchbox.luncheon.lunchroom.lunchtime.lung.lurch.lure.luridness.lurk.lushly.lushness.luster.lustfully.lustily.lustiness.lustrous.lusty.luxurious.luxury.lying.lyrically.lyricism.lyricist.lyrics.macarena.macaroni.macaw.mace.machine.machinist.magazine.magenta.maggot.magical.magician.magma.magnesium.magnetic.magnetism.magnetize.magnifier.magnify.magnitude.magnolia.mahogany.maimed.majestic.majesty.majorette.majority.makeover.maker.makeshift.making.malformed.malt.mama.mammal.mammary.mammogram.manager.managing.manatee.mandarin.mandate.mandatory.mandolin.manger.mangle.mango.mangy.manhandle.manhole.manhood.manhunt.manicotti.manicure.manifesto.manila.mankind.manlike.manliness.manly.manmade.manned.mannish.manor.manpower.mantis.mantra.manual.many.map.marathon.marauding.marbled.marbles.marbling.march.mardi.margarine.margarita.margin.marigold.marina.marine.marital.maritime.marlin.marmalade.maroon.married.marrow.marry.marshland.marshy.marsupial.marvelous.marxism.mascot.masculine.mashed.mashing.massager.masses.massive.mastiff.matador.matchbook.matchbox.matcher.matching.matchless.material.maternal.maternity.math.mating.matriarch.matrimony.matrix.matron.matted.matter.maturely.maturing.maturity.mauve.maverick.maximize.maximum.maybe.mayday.mayflower.moaner.moaning.mobile.mobility.mobilize.mobster.mocha.mocker.mockup.modified.modify.modular.modulator.module.moisten.moistness.moisture.molar.molasses.mold.molecular.molecule.molehill.mollusk.mom.monastery.monday.monetary.monetize.moneybags.moneyless.moneywise.mongoose.mongrel.monitor.monkhood.monogamy.monogram.monologue.monopoly.monorail.monotone.monotype.monoxide.monsieur.monsoon.monstrous.monthly.monument.moocher.moodiness.moody.mooing.moonbeam.mooned.moonlight.moonlike.moonlit.moonrise.moonscape.moonshine.moonstone.moonwalk.mop.morale.morality.morally.morbidity.morbidly.morphine.morphing.morse.mortality.mortally.mortician.mortified.mortify.mortuary.mosaic.mossy.most.mothball.mothproof.motion.motivate.motivator.motive.motocross.motor.motto.mountable.mountain.mounted.mounting.mourner.mournful.mouse.mousiness.moustache.mousy.mouth.movable.move.movie.moving.mower.mowing.much.muck.mud.mug.mulberry.mulch.mule.mulled.mullets.multiple.multiply.multitask.multitude.mumble.mumbling.mumbo.mummified.mummify.mummy.mumps.munchkin.mundane.municipal.muppet.mural.murkiness.murky.murmuring.muscular.museum.mushily.mushiness.mushroom.mushy.music.musket.muskiness.musky.mustang.mustard.muster.mustiness.musty.mutable.mutate.mutation.mute.mutilated.mutilator.mutiny.mutt.mutual.muzzle.myself.myspace.mystified.mystify.myth.nacho.nag.nail.name.naming.nanny.nanometer.nape.napkin.napped.napping.nappy.narrow.nastily.nastiness.national.native.nativity.natural.nature.naturist.nautical.navigate.navigator.navy.nearby.nearest.nearly.nearness.neatly.neatness.nebula.nebulizer.nectar.negate.negation.negative.neglector.negligee.negligent.negotiate.nemeses.nemesis.neon.nephew.nerd.nervous.nervy.nest.net.neurology.neuron.neurosis.neurotic.neuter.neutron.never.next.nibble.nickname.nicotine.niece.nifty.nimble.nimbly.nineteen.ninetieth.ninja.nintendo.ninth.nuclear.nuclei.nucleus.nugget.nullify.number.numbing.numbly.numbness.numeral.numerate.numerator.numeric.numerous.nuptials.nursery.nursing.nurture.nutcase.nutlike.nutmeg.nutrient.nutshell.nuttiness.nutty.nuzzle.nylon.oaf.oak.oasis.oat.obedience.obedient.obituary.object.obligate.obliged.oblivion.oblivious.oblong.obnoxious.oboe.obscure.obscurity.observant.observer.observing.obsessed.obsession.obsessive.obsolete.obstacle.obstinate.obstruct.obtain.obtrusive.obtuse.obvious.occultist.occupancy.occupant.occupier.occupy.ocean.ocelot.octagon.octane.october.octopus.ogle.oil.oink.ointment.okay.old.olive.olympics.omega.omen.ominous.omission.omit.omnivore.onboard.oncoming.ongoing.onion.online.onlooker.only.onscreen.onset.onshore.onslaught.onstage.onto.onward.onyx.oops.ooze.oozy.opacity.opal.open.operable.operate.operating.operation.operative.operator.opium.opossum.opponent.oppose.opposing.opposite.oppressed.oppressor.opt.opulently.osmosis.other.otter.ouch.ought.ounce.outage.outback.outbid.outboard.outbound.outbreak.outburst.outcast.outclass.outcome.outdated.outdoors.outer.outfield.outfit.outflank.outgoing.outgrow.outhouse.outing.outlast.outlet.outline.outlook.outlying.outmatch.outmost.outnumber.outplayed.outpost.outpour.output.outrage.outrank.outreach.outright.outscore.outsell.outshine.outshoot.outsider.outskirts.outsmart.outsource.outspoken.outtakes.outthink.outward.outweigh.outwit.oval.ovary.oven.overact.overall.overarch.overbid.overbill.overbite.overblown.overboard.overbook.overbuilt.overcast.overcoat.overcome.overcook.overcrowd.overdraft.overdrawn.overdress.overdrive.overdue.overeager.overeater.overexert.overfed.overfeed.overfill.overflow.overfull.overgrown.overhand.overhang.overhaul.overhead.overhear.overheat.overhung.overjoyed.overkill.overlabor.overlaid.overlap.overlay.overload.overlook.overlord.overlying.overnight.overpass.overpay.overplant.overplay.overpower.overprice.overrate.overreach.overreact.override.overripe.overrule.overrun.overshoot.overshot.oversight.oversized.oversleep.oversold.overspend.overstate.overstay.overstep.overstock.overstuff.oversweet.overtake.overthrow.overtime.overtly.overtone.overture.overturn.overuse.overvalue.overview.overwrite.owl.oxford.oxidant.oxidation.oxidize.oxidizing.oxygen.oxymoron.oyster.ozone.paced.pacemaker.pacific.pacifier.pacifism.pacifist.pacify.padded.padding.paddle.paddling.padlock.pagan.pager.paging.pajamas.palace.palatable.palm.palpable.palpitate.paltry.pampered.pamperer.pampers.pamphlet.panama.pancake.pancreas.panda.pandemic.pang.panhandle.panic.panning.panorama.panoramic.panther.pantomime.pantry.pants.pantyhose.paparazzi.papaya.paper.paprika.papyrus.parabola.parachute.parade.paradox.paragraph.parakeet.paralegal.paralyses.paralysis.paralyze.paramedic.parameter.paramount.parasail.parasite.parasitic.parcel.parched.parchment.pardon.parish.parka.parking.parkway.parlor.parmesan.parole.parrot.parsley.parsnip.partake.parted.parting.partition.partly.partner.partridge.party.passable.passably.passage.passcode.passenger.passerby.passing.passion.passive.passivism.passover.passport.password.pasta.pasted.pastel.pastime.pastor.pastrami.pasture.pasty.patchwork.patchy.paternal.paternity.path.patience.patient.patio.patriarch.patriot.patrol.patronage.patronize.pauper.pavement.paver.pavestone.pavilion.paving.pawing.payable.payback.paycheck.payday.payee.payer.paying.payment.payphone.payroll.pebble.pebbly.pecan.pectin.peculiar.peddling.pediatric.pedicure.pedigree.pedometer.pegboard.pelican.pellet.pelt.pelvis.penalize.penalty.pencil.pendant.pending.penholder.penknife.pennant.penniless.penny.penpal.pension.pentagon.pentagram.pep.perceive.percent.perch.percolate.perennial.perfected.perfectly.perfume.periscope.perish.perjurer.perjury.perkiness.perky.perm.peroxide.perpetual.perplexed.persecute.persevere.persuaded.persuader.pesky.peso.pessimism.pessimist.pester.pesticide.petal.petite.petition.petri.petroleum.petted.petticoat.pettiness.petty.petunia.phantom.phobia.phoenix.phonebook.phoney.phonics.phoniness.phony.phosphate.photo.phrase.phrasing.placard.placate.placidly.plank.planner.plant.plasma.plaster.plastic.plated.platform.plating.platinum.platonic.platter.platypus.plausible.plausibly.playable.playback.player.playful.playgroup.playhouse.playing.playlist.playmaker.playmate.playoff.playpen.playroom.playset.plaything.playtime.plaza.pleading.pleat.pledge.plentiful.plenty.plethora.plexiglas.pliable.plod.plop.plot.plow.ploy.pluck.plug.plunder.plunging.plural.plus.plutonium.plywood.poach.pod.poem.poet.pogo.pointed.pointer.pointing.pointless.pointy.poise.poison.poker.poking.polar.police.policy.polio.polish.politely.polka.polo.polyester.polygon.polygraph.polymer.poncho.pond.pony.popcorn.pope.poplar.popper.poppy.popsicle.populace.popular.populate.porcupine.pork.porous.porridge.portable.portal.portfolio.porthole.portion.portly.portside.poser.posh.posing.possible.possibly.possum.postage.postal.postbox.postcard.posted.poster.posting.postnasal.posture.postwar.pouch.pounce.pouncing.pound.pouring.pout.powdered.powdering.powdery.power.powwow.pox.praising.prance.prancing.pranker.prankish.prankster.prayer.praying.preacher.preaching.preachy.preamble.precinct.precise.precision.precook.precut.predator.predefine.predict.preface.prefix.preflight.preformed.pregame.pregnancy.pregnant.preheated.prelaunch.prelaw.prelude.premiere.premises.premium.prenatal.preoccupy.preorder.prepaid.prepay.preplan.preppy.preschool.prescribe.preseason.preset.preshow.president.presoak.press.presume.presuming.preteen.pretended.pretender.pretense.pretext.pretty.pretzel.prevail.prevalent.prevent.preview.previous.prewar.prewashed.prideful.pried.primal.primarily.primary.primate.primer.primp.princess.print.prior.prism.prison.prissy.pristine.privacy.private.privatize.prize.proactive.probable.probably.probation.probe.probing.probiotic.problem.procedure.process.proclaim.procreate.procurer.prodigal.prodigy.produce.product.profane.profanity.professed.professor.profile.profound.profusely.progeny.prognosis.program.progress.projector.prologue.prolonged.promenade.prominent.promoter.promotion.prompter.promptly.prone.prong.pronounce.pronto.proofing.proofread.proofs.propeller.properly.property.proponent.proposal.propose.props.prorate.protector.protegee.proton.prototype.protozoan.protract.protrude.proud.provable.proved.proven.provided.provider.providing.province.proving.provoke.provoking.provolone.prowess.prowler.prowling.proximity.proxy.prozac.prude.prudishly.prune.pruning.pry.psychic.public.publisher.pucker.pueblo.pug.pull.pulmonary.pulp.pulsate.pulse.pulverize.puma.pumice.pummel.punch.punctual.punctuate.punctured.pungent.punisher.punk.pupil.puppet.puppy.purchase.pureblood.purebred.purely.pureness.purgatory.purge.purging.purifier.purify.purist.puritan.purity.purple.purplish.purposely.purr.purse.pursuable.pursuant.pursuit.purveyor.pushcart.pushchair.pusher.pushiness.pushing.pushover.pushpin.pushup.pushy.putdown.putt.puzzle.puzzling.pyramid.pyromania.python.quack.quadrant.quail.quaintly.quake.quaking.qualified.qualifier.qualify.quality.qualm.quantum.quarrel.quarry.quartered.quarterly.quarters.quartet.quench.query.quicken.quickly.quickness.quicksand.quickstep.quiet.quill.quilt.quintet.quintuple.quirk.quit.quiver.quizzical.quotable.quotation.quote.rabid.race.racing.racism.rack.racoon.radar.radial.radiance.radiantly.radiated.radiation.radiator.radio.radish.raffle.raft.rage.ragged.raging.ragweed.raider.railcar.railing.railroad.railway.raisin.rake.raking.rally.ramble.rambling.ramp.ramrod.ranch.rancidity.random.ranged.ranger.ranging.ranked.ranking.ransack.ranting.rants.rare.rarity.rascal.rash.rasping.ravage.raven.ravine.raving.ravioli.ravishing.reabsorb.reach.reacquire.reaction.reactive.reactor.reaffirm.ream.reanalyze.reappear.reapply.reappoint.reapprove.rearrange.rearview.reason.reassign.reassure.reattach.reawake.rebalance.rebate.rebel.rebirth.reboot.reborn.rebound.rebuff.rebuild.rebuilt.reburial.rebuttal.recall.recant.recapture.recast.recede.recent.recess.recharger.recipient.recital.recite.reckless.reclaim.recliner.reclining.recluse.reclusive.recognize.recoil.recollect.recolor.reconcile.reconfirm.reconvene.recopy.record.recount.recoup.recovery.recreate.rectal.rectangle.rectified.rectify.recycled.recycler.recycling.reemerge.reenact.reenter.reentry.reexamine.referable.referee.reference.refill.refinance.refined.refinery.refining.refinish.reflected.reflector.reflex.reflux.refocus.refold.reforest.reformat.reformed.reformer.reformist.refract.refrain.refreeze.refresh.refried.refueling.refund.refurbish.refurnish.refusal.refuse.refusing.refutable.refute.regain.regalia.regally.reggae.regime.region.register.registrar.registry.regress.regretful.regroup.regular.regulate.regulator.rehab.reheat.rehire.rehydrate.reimburse.reissue.reiterate.rejoice.rejoicing.rejoin.rekindle.relapse.relapsing.relatable.related.relation.relative.relax.relay.relearn.release.relenting.reliable.reliably.reliance.reliant.relic.relieve.relieving.relight.relish.relive.reload.relocate.relock.reluctant.rely.remake.remark.remarry.rematch.remedial.remedy.remember.reminder.remindful.remission.remix.remnant.remodeler.remold.remorse.remote.removable.removal.removed.remover.removing.rename.renderer.rendering.rendition.renegade.renewable.renewably.renewal.renewed.renounce.renovate.renovator.rentable.rental.rented.renter.reoccupy.reoccur.reopen.reorder.repackage.repacking.repaint.repair.repave.repaying.repayment.repeal.repeated.repeater.repent.rephrase.replace.replay.replica.reply.reporter.repose.repossess.repost.repressed.reprimand.reprint.reprise.reproach.reprocess.reproduce.reprogram.reps.reptile.reptilian.repugnant.repulsion.repulsive.repurpose.reputable.reputably.request.require.requisite.reroute.rerun.resale.resample.rescuer.reseal.research.reselect.reseller.resemble.resend.resent.reset.reshape.reshoot.reshuffle.residence.residency.resident.residual.residue.resigned.resilient.resistant.resisting.resize.resolute.resolved.resonant.resonate.resort.resource.respect.resubmit.result.resume.resupply.resurface.resurrect.retail.retainer.retaining.retake.retaliate.retention.rethink.retinal.retired.retiree.retiring.retold.retool.retorted.retouch.retrace.retract.retrain.retread.retreat.retrial.retrieval.retriever.retry.return.retying.retype.reunion.reunite.reusable.reuse.reveal.reveler.revenge.revenue.reverb.revered.reverence.reverend.reversal.reverse.reversing.reversion.revert.revisable.revise.revision.revisit.revivable.revival.reviver.reviving.revocable.revoke.revolt.revolver.revolving.reward.rewash.rewind.rewire.reword.rework.rewrap.rewrite.rhyme.ribbon.ribcage.rice.riches.richly.richness.rickety.ricotta.riddance.ridden.ride.riding.rifling.rift.rigging.rigid.rigor.rimless.rimmed.rind.rink.rinse.rinsing.riot.ripcord.ripeness.ripening.ripping.ripple.rippling.riptide.rise.rising.risk.risotto.ritalin.ritzy.rival.riverbank.riverbed.riverboat.riverside.riveter.riveting.roamer.roaming.roast.robbing.robe.robin.robotics.robust.rockband.rocker.rocket.rockfish.rockiness.rocking.rocklike.rockslide.rockstar.rocky.rogue.roman.romp.rope.roping.roster.rosy.rotten.rotting.rotunda.roulette.rounding.roundish.roundness.roundup.roundworm.routine.routing.rover.roving.royal.rubbed.rubber.rubbing.rubble.rubdown.ruby.ruckus.rudder.rug.ruined.rule.rumble.rumbling.rummage.rumor.runaround.rundown.runner.running.runny.runt.runway.rupture.rural.ruse.rush.rust.rut.sabbath.sabotage.sacrament.sacred.sacrifice.sadden.saddlebag.saddled.saddling.sadly.sadness.safari.safeguard.safehouse.safely.safeness.saffron.saga.sage.sagging.saggy.said.saint.sake.salad.salami.salaried.salary.saline.salon.saloon.salsa.salt.salutary.salute.salvage.salvaging.salvation.same.sample.sampling.sanction.sanctity.sanctuary.sandal.sandbag.sandbank.sandbar.sandblast.sandbox.sanded.sandfish.sanding.sandlot.sandpaper.sandpit.sandstone.sandstorm.sandworm.sandy.sanitary.sanitizer.sank.santa.sapling.sappiness.sappy.sarcasm.sarcastic.sardine.sash.sasquatch.sassy.satchel.satiable.satin.satirical.satisfied.satisfy.saturate.saturday.sauciness.saucy.sauna.savage.savanna.saved.savings.savior.savor.saxophone.say.scabbed.scabby.scalded.scalding.scale.scaling.scallion.scallop.scalping.scam.scandal.scanner.scanning.scant.scapegoat.scarce.scarcity.scarecrow.scared.scarf.scarily.scariness.scarring.scary.scavenger.scenic.schedule.schematic.scheme.scheming.schilling.schnapps.scholar.science.scientist.scion.scoff.scolding.scone.scoop.scooter.scope.scorch.scorebook.scorecard.scored.scoreless.scorer.scoring.scorn.scorpion.scotch.scoundrel.scoured.scouring.scouting.scouts.scowling.scrabble.scraggly.scrambled.scrambler.scrap.scratch.scrawny.screen.scribble.scribe.scribing.scrimmage.script.scroll.scrooge.scrounger.scrubbed.scrubber.scruffy.scrunch.scrutiny.scuba.scuff.sculptor.sculpture.scurvy.scuttle.secluded.secluding.seclusion.second.secrecy.secret.sectional.sector.secular.securely.security.sedan.sedate.sedation.sedative.sediment.seduce.seducing.segment.seismic.seizing.seldom.selected.selection.selective.selector.self.seltzer.semantic.semester.semicolon.semifinal.seminar.semisoft.semisweet.senate.senator.send.senior.senorita.sensation.sensitive.sensitize.sensually.sensuous.sepia.september.septic.septum.sequel.sequence.sequester.series.sermon.serotonin.serpent.serrated.serve.service.serving.sesame.sessions.setback.setting.settle.settling.setup.sevenfold.seventeen.seventh.seventy.severity.shabby.shack.shaded.shadily.shadiness.shading.shadow.shady.shaft.shakable.shakily.shakiness.shaking.shaky.shale.shallot.shallow.shame.shampoo.shamrock.shank.shanty.shape.shaping.share.sharpener.sharper.sharpie.sharply.sharpness.shawl.sheath.shed.sheep.sheet.shelf.shell.shelter.shelve.shelving.sherry.shield.shifter.shifting.shiftless.shifty.shimmer.shimmy.shindig.shine.shingle.shininess.shining.shiny.ship.shirt.shivering.shock.shone.shoplift.shopper.shopping.shoptalk.shore.shortage.shortcake.shortcut.shorten.shorter.shorthand.shortlist.shortly.shortness.shorts.shortwave.shorty.shout.shove.showbiz.showcase.showdown.shower.showgirl.showing.showman.shown.showoff.showpiece.showplace.showroom.showy.shrank.shrapnel.shredder.shredding.shrewdly.shriek.shrill.shrimp.shrine.shrink.shrivel.shrouded.shrubbery.shrubs.shrug.shrunk.shucking.shudder.shuffle.shuffling.shun.shush.shut.shy.siamese.siberian.sibling.siding.sierra.siesta.sift.sighing.silenced.silencer.silent.silica.silicon.silk.silliness.silly.silo.silt.silver.similarly.simile.simmering.simple.simplify.simply.sincere.sincerity.singer.singing.single.singular.sinister.sinless.sinner.sinuous.sip.siren.sister.sitcom.sitter.sitting.situated.situation.sixfold.sixteen.sixth.sixties.sixtieth.sixtyfold.sizable.sizably.size.sizing.sizzle.sizzling.skater.skating.skedaddle.skeletal.skeleton.skeptic.sketch.skewed.skewer.skid.skied.skier.skies.skiing.skilled.skillet.skillful.skimmed.skimmer.skimming.skimpily.skincare.skinhead.skinless.skinning.skinny.skintight.skipper.skipping.skirmish.skirt.skittle.skydiver.skylight.skyline.skype.skyrocket.skyward.slab.slacked.slacker.slacking.slackness.slacks.slain.slam.slander.slang.slapping.slapstick.slashed.slashing.slate.slather.slaw.sled.sleek.sleep.sleet.sleeve.slept.sliceable.sliced.slicer.slicing.slick.slider.slideshow.sliding.slighted.slighting.slightly.slimness.slimy.slinging.slingshot.slinky.slip.slit.sliver.slobbery.slogan.sloped.sloping.sloppily.sloppy.slot.slouching.slouchy.sludge.slug.slum.slurp.slush.sly.small.smartly.smartness.smasher.smashing.smashup.smell.smelting.smile.smilingly.smirk.smite.smith.smitten.smock.smog.smoked.smokeless.smokiness.smoking.smoky.smolder.smooth.smother.smudge.smudgy.smuggler.smuggling.smugly.smugness.snack.snagged.snaking.snap.snare.snarl.snazzy.sneak.sneer.sneeze.sneezing.snide.sniff.snippet.snipping.snitch.snooper.snooze.snore.snoring.snorkel.snort.snout.snowbird.snowboard.snowbound.snowcap.snowdrift.snowdrop.snowfall.snowfield.snowflake.snowiness.snowless.snowman.snowplow.snowshoe.snowstorm.snowsuit.snowy.snub.snuff.snuggle.snugly.snugness.speak.spearfish.spearhead.spearman.spearmint.species.specimen.specked.speckled.specks.spectacle.spectator.spectrum.speculate.speech.speed.spellbind.speller.spelling.spendable.spender.spending.spent.spew.sphere.spherical.sphinx.spider.spied.spiffy.spill.spilt.spinach.spinal.spindle.spinner.spinning.spinout.spinster.spiny.spiral.spirited.spiritism.spirits.spiritual.splashed.splashing.splashy.splatter.spleen.splendid.splendor.splice.splicing.splinter.splotchy.splurge.spoilage.spoiled.spoiler.spoiling.spoils.spoken.spokesman.sponge.spongy.sponsor.spoof.spookily.spooky.spool.spoon.spore.sporting.sports.sporty.spotless.spotlight.spotted.spotter.spotting.spotty.spousal.spouse.spout.sprain.sprang.sprawl.spray.spree.sprig.spring.sprinkled.sprinkler.sprint.sprite.sprout.spruce.sprung.spry.spud.spur.sputter.spyglass.squabble.squad.squall.squander.squash.squatted.squatter.squatting.squeak.squealer.squealing.squeamish.squeegee.squeeze.squeezing.squid.squiggle.squiggly.squint.squire.squirt.squishier.squishy.stability.stabilize.stable.stack.stadium.staff.stage.staging.stagnant.stagnate.stainable.stained.staining.stainless.stalemate.staleness.stalling.stallion.stamina.stammer.stamp.stand.stank.staple.stapling.starboard.starch.stardom.stardust.starfish.stargazer.staring.stark.starless.starlet.starlight.starlit.starring.starry.starship.starter.starting.startle.startling.startup.starved.starving.stash.state.static.statistic.statue.stature.status.statute.statutory.staunch.stays.steadfast.steadier.steadily.steadying.steam.steed.steep.steerable.steering.steersman.stegosaur.stellar.stem.stench.stencil.step.stereo.sterile.sterility.sterilize.sterling.sternness.sternum.stew.stick.stiffen.stiffly.stiffness.stifle.stifling.stillness.stilt.stimulant.stimulate.stimuli.stimulus.stinger.stingily.stinging.stingray.stingy.stinking.stinky.stipend.stipulate.stir.stitch.stock.stoic.stoke.stole.stomp.stonewall.stoneware.stonework.stoning.stony.stood.stooge.stool.stoop.stoplight.stoppable.stoppage.stopped.stopper.stopping.stopwatch.storable.storage.storeroom.storewide.storm.stout.stove.stowaway.stowing.straddle.straggler.strained.strainer.straining.strangely.stranger.strangle.strategic.strategy.stratus.straw.stray.streak.stream.street.strength.strenuous.strep.stress.stretch.strewn.stricken.strict.stride.strife.strike.striking.strive.striving.strobe.strode.stroller.strongbox.strongly.strongman.struck.structure.strudel.struggle.strum.strung.strut.stubbed.stubble.stubbly.stubborn.stucco.stuck.student.studied.studio.study.stuffed.stuffing.stuffy.stumble.stumbling.stump.stung.stunned.stunner.stunning.stunt.stupor.sturdily.sturdy.styling.stylishly.stylist.stylized.stylus.suave.subarctic.subatomic.subdivide.subdued.subduing.subfloor.subgroup.subheader.subject.sublease.sublet.sublevel.sublime.submarine.submerge.submersed.submitter.subpanel.subpar.subplot.subprime.subscribe.subscript.subsector.subside.subsiding.subsidize.subsidy.subsoil.subsonic.substance.subsystem.subtext.subtitle.subtly.subtotal.subtract.subtype.suburb.subway.subwoofer.subzero.succulent.such.suction.sudden.sudoku.suds.sufferer.suffering.suffice.suffix.suffocate.suffrage.sugar.suggest.suing.suitable.suitably.suitcase.suitor.sulfate.sulfide.sulfite.sulfur.sulk.sullen.sulphate.sulphuric.sultry.superbowl.superglue.superhero.superior.superjet.superman.supermom.supernova.supervise.supper.supplier.supply.support.supremacy.supreme.surcharge.surely.sureness.surface.surfacing.surfboard.surfer.surgery.surgical.surging.surname.surpass.surplus.surprise.surreal.surrender.surrogate.surround.survey.survival.survive.surviving.survivor.sushi.suspect.suspend.suspense.sustained.sustainer.swab.swaddling.swagger.swampland.swan.swapping.swarm.sway.swear.sweat.sweep.swell.swept.swerve.swifter.swiftly.swiftness.swimmable.swimmer.swimming.swimsuit.swimwear.swinger.swinging.swipe.swirl.switch.swivel.swizzle.swooned.swoop.swoosh.swore.sworn.swung.sycamore.sympathy.symphonic.symphony.symptom.synapse.syndrome.synergy.synopses.synopsis.synthesis.synthetic.syrup.system.t-shirt.tabasco.tabby.tableful.tables.tablet.tableware.tabloid.tackiness.tacking.tackle.tackling.tacky.taco.tactful.tactical.tactics.tactile.tactless.tadpole.taekwondo.tag.tainted.take.taking.talcum.talisman.tall.talon.tamale.tameness.tamer.tamper.tank.tanned.tannery.tanning.tantrum.tapeless.tapered.tapering.tapestry.tapioca.tapping.taps.tarantula.target.tarmac.tarnish.tarot.tartar.tartly.tartness.task.tassel.taste.tastiness.tasting.tasty.tattered.tattle.tattling.tattoo.taunt.tavern.thank.that.thaw.theater.theatrics.thee.theft.theme.theology.theorize.thermal.thermos.thesaurus.these.thesis.thespian.thicken.thicket.thickness.thieving.thievish.thigh.thimble.thing.think.thinly.thinner.thinness.thinning.thirstily.thirsting.thirsty.thirteen.thirty.thong.thorn.those.thousand.thrash.thread.threaten.threefold.thrift.thrill.thrive.thriving.throat.throbbing.throng.throttle.throwaway.throwback.thrower.throwing.thud.thumb.thumping.thursday.thus.thwarting.thyself.tiara.tibia.tidal.tidbit.tidiness.tidings.tidy.tiger.tighten.tightly.tightness.tightrope.tightwad.tigress.tile.tiling.till.tilt.timid.timing.timothy.tinderbox.tinfoil.tingle.tingling.tingly.tinker.tinkling.tinsel.tinsmith.tint.tinwork.tiny.tipoff.tipped.tipper.tipping.tiptoeing.tiptop.tiring.tissue.trace.tracing.track.traction.tractor.trade.trading.tradition.traffic.tragedy.trailing.trailside.train.traitor.trance.tranquil.transfer.transform.translate.transpire.transport.transpose.trapdoor.trapeze.trapezoid.trapped.trapper.trapping.traps.trash.travel.traverse.travesty.tray.treachery.treading.treadmill.treason.treat.treble.tree.trekker.tremble.trembling.tremor.trench.trend.trespass.triage.trial.triangle.tribesman.tribunal.tribune.tributary.tribute.triceps.trickery.trickily.tricking.trickle.trickster.tricky.tricolor.tricycle.trident.tried.trifle.trifocals.trillion.trilogy.trimester.trimmer.trimming.trimness.trinity.trio.tripod.tripping.triumph.trivial.trodden.trolling.trombone.trophy.tropical.tropics.trouble.troubling.trough.trousers.trout.trowel.truce.truck.truffle.trump.trunks.trustable.trustee.trustful.trusting.trustless.truth.try.tubby.tubeless.tubular.tucking.tuesday.tug.tuition.tulip.tumble.tumbling.tummy.turban.turbine.turbofan.turbojet.turbulent.turf.turkey.turmoil.turret.turtle.tusk.tutor.tutu.tux.tweak.tweed.tweet.tweezers.twelve.twentieth.twenty.twerp.twice.twiddle.twiddling.twig.twilight.twine.twins.twirl.twistable.twisted.twister.twisting.twisty.twitch.twitter.tycoon.tying.tyke.udder.ultimate.ultimatum.ultra.umbilical.umbrella.umpire.unabashed.unable.unadorned.unadvised.unafraid.unaired.unaligned.unaltered.unarmored.unashamed.unaudited.unawake.unaware.unbaked.unbalance.unbeaten.unbend.unbent.unbiased.unbitten.unblended.unblessed.unblock.unbolted.unbounded.unboxed.unbraided.unbridle.unbroken.unbuckled.unbundle.unburned.unbutton.uncanny.uncapped.uncaring.uncertain.unchain.unchanged.uncharted.uncheck.uncivil.unclad.unclaimed.unclamped.unclasp.uncle.unclip.uncloak.unclog.unclothed.uncoated.uncoiled.uncolored.uncombed.uncommon.uncooked.uncork.uncorrupt.uncounted.uncouple.uncouth.uncover.uncross.uncrown.uncrushed.uncured.uncurious.uncurled.uncut.undamaged.undated.undaunted.undead.undecided.undefined.underage.underarm.undercoat.undercook.undercut.underdog.underdone.underfed.underfeed.underfoot.undergo.undergrad.underhand.underline.underling.undermine.undermost.underpaid.underpass.underpay.underrate.undertake.undertone.undertook.undertow.underuse.underwear.underwent.underwire.undesired.undiluted.undivided.undocked.undoing.undone.undrafted.undress.undrilled.undusted.undying.unearned.unearth.unease.uneasily.uneasy.uneatable.uneaten.unedited.unelected.unending.unengaged.unenvied.unequal.unethical.uneven.unexpired.unexposed.unfailing.unfair.unfasten.unfazed.unfeeling.unfiled.unfilled.unfitted.unfitting.unfixable.unfixed.unflawed.unfocused.unfold.unfounded.unframed.unfreeze.unfrosted.unfrozen.unfunded.unglazed.ungloved.unglue.ungodly.ungraded.ungreased.unguarded.unguided.unhappily.unhappy.unharmed.unhealthy.unheard.unhearing.unheated.unhelpful.unhidden.unhinge.unhitched.unholy.unhook.unicorn.unicycle.unified.unifier.uniformed.uniformly.unify.unimpeded.uninjured.uninstall.uninsured.uninvited.union.uniquely.unisexual.unison.unissued.unit.universal.universe.unjustly.unkempt.unkind.unknotted.unknowing.unknown.unlaced.unlatch.unlawful.unleaded.unlearned.unleash.unless.unleveled.unlighted.unlikable.unlimited.unlined.unlinked.unlisted.unlit.unlivable.unloaded.unloader.unlocked.unlocking.unlovable.unloved.unlovely.unloving.unluckily.unlucky.unmade.unmanaged.unmanned.unmapped.unmarked.unmasked.unmasking.unmatched.unmindful.unmixable.unmixed.unmolded.unmoral.unmovable.unmoved.unmoving.unnamable.unnamed.unnatural.unneeded.unnerve.unnerving.unnoticed.unopened.unopposed.unpack.unpadded.unpaid.unpainted.unpaired.unpaved.unpeeled.unpicked.unpiloted.unpinned.unplanned.unplanted.unpleased.unpledged.unplowed.unplug.unpopular.unproven.unquote.unranked.unrated.unraveled.unreached.unread.unreal.unreeling.unrefined.unrelated.unrented.unrest.unretired.unrevised.unrigged.unripe.unrivaled.unroasted.unrobed.unroll.unruffled.unruly.unrushed.unsaddle.unsafe.unsaid.unsalted.unsaved.unsavory.unscathed.unscented.unscrew.unsealed.unseated.unsecured.unseeing.unseemly.unseen.unselect.unselfish.unsent.unsettled.unshackle.unshaken.unshaved.unshaven.unsheathe.unshipped.unsightly.unsigned.unskilled.unsliced.unsmooth.unsnap.unsocial.unsoiled.unsold.unsolved.unsorted.unspoiled.unspoken.unstable.unstaffed.unstamped.unsteady.unsterile.unstirred.unstitch.unstopped.unstuck.unstuffed.unstylish.unsubtle.unsubtly.unsuited.unsure.unsworn.untagged.untainted.untaken.untamed.untangled.untapped.untaxed.unthawed.unthread.untidy.untie.until.untimed.untimely.untitled.untoasted.untold.untouched.untracked.untrained.untreated.untried.untrimmed.untrue.untruth.unturned.untwist.untying.unusable.unused.unusual.unvalued.unvaried.unvarying.unveiled.unveiling.unvented.unviable.unvisited.unvocal.unwanted.unwarlike.unwary.unwashed.unwatched.unweave.unwed.unwelcome.unwell.unwieldy.unwilling.unwind.unwired.unwitting.unwomanly.unworldly.unworn.unworried.unworthy.unwound.unwoven.unwrapped.unwritten.unzip.upbeat.upchuck.upcoming.upcountry.update.upfront.upgrade.upheaval.upheld.uphill.uphold.uplifted.uplifting.upload.upon.upper.upright.uprising.upriver.uproar.uproot.upscale.upside.upstage.upstairs.upstart.upstate.upstream.upstroke.upswing.uptake.uptight.uptown.upturned.upward.upwind.uranium.urban.urchin.urethane.urgency.urgent.urging.urologist.urology.usable.usage.useable.used.uselessly.user.usher.usual.utensil.utility.utilize.utmost.utopia.utter.vacancy.vacant.vacate.vacation.vagabond.vagrancy.vagrantly.vaguely.vagueness.valiant.valid.valium.valley.valuables.value.vanilla.vanish.vanity.vanquish.vantage.vaporizer.variable.variably.varied.variety.various.varmint.varnish.varsity.varying.vascular.vaseline.vastly.vastness.veal.vegan.veggie.vehicular.velcro.velocity.velvet.vendetta.vending.vendor.veneering.vengeful.venomous.ventricle.venture.venue.venus.verbalize.verbally.verbose.verdict.verify.verse.version.versus.vertebrae.vertical.vertigo.very.vessel.vest.veteran.veto.vexingly.viability.viable.vibes.vice.vicinity.victory.video.viewable.viewer.viewing.viewless.viewpoint.vigorous.village.villain.vindicate.vineyard.vintage.violate.violation.violator.violet.violin.viper.viral.virtual.virtuous.virus.visa.viscosity.viscous.viselike.visible.visibly.vision.visiting.visitor.visor.vista.vitality.vitalize.vitally.vitamins.vivacious.vividly.vividness.vixen.vocalist.vocalize.vocally.vocation.voice.voicing.void.volatile.volley.voltage.volumes.voter.voting.voucher.vowed.vowel.voyage.wackiness.wad.wafer.waffle.waged.wager.wages.waggle.wagon.wake.waking.walk.walmart.walnut.walrus.waltz.wand.wannabe.wanted.wanting.wasabi.washable.washbasin.washboard.washbowl.washcloth.washday.washed.washer.washhouse.washing.washout.washroom.washstand.washtub.wasp.wasting.watch.water.waviness.waving.wavy.whacking.whacky.wham.wharf.wheat.whenever.whiff.whimsical.whinny.whiny.whisking.whoever.whole.whomever.whoopee.whooping.whoops.why.wick.widely.widen.widget.widow.width.wieldable.wielder.wife.wifi.wikipedia.wildcard.wildcat.wilder.wildfire.wildfowl.wildland.wildlife.wildly.wildness.willed.willfully.willing.willow.willpower.wilt.wimp.wince.wincing.wind.wing.winking.winner.winnings.winter.wipe.wired.wireless.wiring.wiry.wisdom.wise.wish.wisplike.wispy.wistful.wizard.wobble.wobbling.wobbly.wok.wolf.wolverine.womanhood.womankind.womanless.womanlike.womanly.womb.woof.wooing.wool.woozy.word.work.worried.worrier.worrisome.worry.worsening.worshiper.worst.wound.woven.wow.wrangle.wrath.wreath.wreckage.wrecker.wrecking.wrench.wriggle.wriggly.wrinkle.wrinkly.wrist.writing.written.wrongdoer.wronged.wrongful.wrongly.wrongness.wrought.xbox.xerox.yahoo.yam.yanking.yapping.yard.yarn.yeah.yearbook.yearling.yearly.yearning.yeast.yelling.yelp.yen.yesterday.yiddish.yield.yin.yippee.yo-yo.yodel.yoga.yogurt.yonder.yoyo.yummy.zap.zealous.zebra.zen.zeppelin.zero.zestfully.zesty.zigzagged.zipfile.zipping.zippy.zips.zit.zodiac.zombie.zone.zoning.zookeeper.zoologist.zoology.zoom`.split(`.`)),q=Object.freeze(K.filter(e=>!e.includes(`-`)));function J({title:e,titleId:t,...n},r){return P.createElement(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?P.createElement(`title`,{id:t},e):null,P.createElement(`path`,{fillRule:`evenodd`,d:`M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25Zm-1.72 6.97a.75.75 0 1 0-1.06 1.06L10.94 12l-1.72 1.72a.75.75 0 1 0 1.06 1.06L12 13.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L13.06 12l1.72-1.72a.75.75 0 1 0-1.06-1.06L12 10.94l-1.72-1.72Z`,clipRule:`evenodd`}))}var Y=P.forwardRef(J),X=({buttonHideAnimations:e,buttonLoading:t,password:n,onSubmit:r,onBack:i})=>{let[a,o]=(0,P.useState)(!0),[c,f]=(0,P.useState)(!1),[p,g]=(0,P.useState)(``),_=n===p;return(0,P.useEffect)((()=>{p&&!c&&f(!0)}),[p]),(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(s,{closeable:!1,backFn:i}),(0,N.jsx)(O,{}),(0,N.jsxs)(v,{children:[(0,N.jsxs)(x,{children:[(0,N.jsx)(D,{height:48,width:48,stroke:`var(--privy-color-background)`,fill:`var(--privy-color-accent)`}),(0,N.jsx)(`h3`,{style:{color:`var(--privy-color-foreground)`},children:`Confirm your password`}),(0,N.jsx)(`p`,{style:{color:`var(--privy-color-foreground-2)`},children:`Please re-enter your password below to continue.`})]}),(0,N.jsxs)(h,{children:[(0,N.jsx)(u,{value:p,onChange:e=>g(e.target.value),onKeyUp:e=>{e.key===`Enter`&&r()},onBlur:()=>f(!0),placeholder:`confirm your password`,type:a?`password`:`text`,style:{paddingRight:`2.3rem`}}),(0,N.jsx)(m,{style:{right:`0.75rem`},children:a?(0,N.jsx)(b,{onClick:()=>o(!1)}):(0,N.jsx)(S,{onClick:()=>o(!0)})})]}),(0,N.jsx)(d,{"aria-hidden":!c||_,error:!0,children:`Passwords do not match`})]}),(0,N.jsx)(w,{onClick:r,loading:t,disabled:!_,$hideAnimations:e,children:`Continue`}),(0,N.jsx)(A,{}),(0,N.jsx)(l,{})]})},ie=({buttonHideAnimations:e,buttonLoading:t,onSubmit:n,onBack:r,config:i})=>{let[a,o]=(0,P.useState)(!1);return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(s,{closeable:!1,backFn:r}),(0,N.jsx)(O,{}),(0,N.jsxs)(v,{children:[(0,N.jsxs)(x,{children:[(0,N.jsx)(D,{height:48,width:48,stroke:`var(--privy-color-background)`,fill:`var(--privy-color-error)`}),(0,N.jsx)(`h3`,{style:{color:`var(--privy-color-foreground)`},children:`Confirm you have saved`}),(0,N.jsx)(`p`,{style:{color:`var(--privy-color-foreground-2)`},children:`Losing access to your password means you will lose access to your account.`})]}),(0,N.jsx)(_,{children:(0,N.jsxs)(g,{style:{color:`var(--privy-color-error)`,cursor:`pointer`},onClick:e=>{e.preventDefault(),o((e=>!e))},children:[(0,N.jsx)(E,{color:`var(--privy-color-error)`,readOnly:!0,checked:a}),(0,N.jsx)(N.Fragment,{children:`I understand that if I lose my password and device, I will lose access to my account and my assets.`})]})})]}),(0,N.jsxs)(ae,{children:[i.initiatedBy===`user`&&(0,N.jsx)(c,{onClick:i.onCancel,disabled:t,children:`Cancel`}),(0,N.jsx)(w,{onClick:n,loading:t,$hideAnimations:e,disabled:!a,children:`Set Password`})]}),(0,N.jsx)(A,{}),(0,N.jsx)(l,{})]})},ae=a.div`
2
- display: flex;
3
- gap: 10px;
4
- `,oe=/[a-z]/,se=/[A-Z]/,ce=/[0-9]/,Z=`!@#$%^&*()\\-_+.`,Q=`a-zA-Z0-9${Z}`,le=RegExp(`[${Z}]`),ue=RegExp(`[${Q}]`),de=RegExp(`^[${Q}]{6,}$`),fe=()=>G(4,q);function pe(e){return e>.9?`Strong`:e>.5?`Medium`:`Weak`}function $(e=``){return(.3*function(e){if(e.length<8)return 0;let t=0;return oe.test(e)&&(t+=1),se.test(e)&&(t+=1),ce.test(e)&&(t+=1),le.test(e)&&(t+=1),Math.max(0,Math.min(1,t/3))}(e)+(0,L.default)(e)/95)/2}var me=({buttonHideAnimations:e,buttonLoading:t,password:n=``,config:r,isResettingPassword:i,onSubmit:a,onClose:o,onBack:c,onPasswordChange:f,onPasswordGenerate:p})=>{let[T,E]=(0,P.useState)(!1),[D,k]=(0,P.useState)(!1);(0,P.useEffect)((()=>{n&&!D&&k(!0)}),[n]);let j=(0,P.useMemo)((()=>D?6>(n?.length||0)?`Password must be at least 6 characters`:de.test(n||``)?null:`Invalid characters used ( ${((e=``)=>[...new Set(e.split(``).filter((e=>!ue.test(e))).map((e=>e.replace(` `,`SPACE`))))])(n).join(` `)} )`:null),[n,D]),F=(0,P.useMemo)((()=>j?{value:0,label:`Weak`}:function(e=``){let t=$(e);return{value:t,label:pe(t)}}(n)),[n,j]),I=(0,P.useMemo)((()=>!n?.length||!!j),[j,n]);return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(s,{onClose:o,closeable:r.initiatedBy===`user`,backFn:c}),(0,N.jsx)(O,{}),(0,N.jsxs)(v,{children:[(0,N.jsxs)(x,{children:[(0,N.jsx)(re,{height:48,width:48,stroke:`var(--privy-color-accent)`}),(0,N.jsxs)(`h3`,{style:{color:`var(--privy-color-foreground)`},children:[i?`Reset`:`Set`,` your password`]}),(0,N.jsx)(`p`,{style:{color:`var(--privy-color-foreground-2)`},children:`Select a strong, memorable password to secure your account.`})]}),(0,N.jsxs)(h,{children:[(0,N.jsx)(u,{value:n,onChange:e=>f(e.target.value),onKeyUp:e=>{e.key===`Enter`&&a()},placeholder:`enter or generate a strong password`,type:T?`password`:`text`,style:{paddingRight:`3.8rem`}}),(0,N.jsxs)(m,{style:{width:`3.5rem`},children:[T?(0,N.jsx)(b,{onClick:()=>E(!1)}):(0,N.jsx)(S,{onClick:()=>E(!0)}),(0,N.jsx)(C,{onClick:p})]})]}),(0,N.jsx)(y,{value:F.value===0?.01:F.value,$label:F.label}),(0,N.jsx)(d,{error:!!j,children:j||`Password Strength: ${D?F.label:`--`}`}),(0,N.jsxs)(ge,{children:[(0,N.jsx)(he,{children:(0,N.jsxs)(_,{children:[(0,N.jsxs)(g,{children:[(0,N.jsx)(M,{width:24,height:24,fill:`var(--privy-color-accent)`}),`This password is used to secure your account.`]}),(0,N.jsxs)(g,{children:[(0,N.jsx)(M,{width:24,height:24,fill:`var(--privy-color-accent)`}),`Use it to log in on a new environment, like another browser or device.`]})]})}),(0,N.jsx)(w,{onClick:a,loading:t,disabled:I,$hideAnimations:e,children:`Continue`})]})]}),(0,N.jsx)(A,{}),(0,N.jsx)(l,{})]})},he=a(_)`
5
- flex: 1;
6
- padding-top: 1rem;
7
- `,ge=a.div`
8
- display: flex;
9
- flex-direction: column;
10
- height: 100%;
11
- `,_e=({buttonHideAnimations:e,buttonLoading:t,appName:n,password:r,onSubmit:i,onBack:a})=>{let[o,c]=(0,P.useState)(!1),[u,d]=(0,P.useState)(!0),g=(0,P.useCallback)((()=>{c(!0),r&&navigator.clipboard.writeText(r)}),[r]),_=(0,P.useCallback)((()=>{let e=document.createElement(`a`),t=n.toLowerCase().replace(/[^a-z\s]/g,``).replace(/\s/g,`-`),i=new Blob([ve(n,r)],{type:`text/plain`}),a=URL.createObjectURL(i);e.href=a,e.target=`_blank`,e.download=`${t}-privy-wallet-recovery.txt`,document.body.appendChild(e),e.click(),setTimeout((()=>{e.remove(),URL.revokeObjectURL(a)}),5e3)}),[r]);return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(s,{backFn:a,closeable:!1}),(0,N.jsx)(O,{}),(0,N.jsxs)(v,{children:[(0,N.jsxs)(x,{children:[(0,N.jsx)(D,{height:48,width:48,stroke:`var(--privy-color-background)`,fill:`var(--privy-color-accent)`}),(0,N.jsx)(`h3`,{style:{color:`var(--privy-color-foreground)`},children:`Save your password`}),(0,N.jsx)(`p`,{style:{color:`var(--privy-color-foreground-2)`},children:`For your security, this password cannot be reset, so keep it somewhere safe.`})]}),(0,N.jsxs)(h,{centered:!0,children:[(0,N.jsx)(p,{children:u?`•`.repeat(r.length):r}),(0,N.jsx)(m,{style:{right:`0.75rem`},children:u?(0,N.jsx)(b,{onClick:()=>d(!1)}):(0,N.jsx)(S,{onClick:()=>d(!0)})})]}),(0,N.jsxs)(`div`,{style:{display:`flex`,margin:`12px 0`,gap:`12px`},children:[(0,N.jsx)(f,{onClick:g,children:(0,N.jsxs)(N.Fragment,o?{children:[(0,N.jsx)(T,{style:{width:24,height:24},stroke:`var(--privy-color-accent)`}),`Copied`]}:{children:[(0,N.jsx)(te,{style:{width:24,height:24},stroke:`var(--privy-color-accent)`}),`Copy`]})}),(0,N.jsxs)(f,{onClick:_,children:[(0,N.jsx)(I,{style:{width:24,height:24},stroke:`var(--privy-color-accent)`}),`Download`]})]})]}),(0,N.jsx)(w,{onClick:i,loading:t,$hideAnimations:e,children:`Continue`}),(0,N.jsx)(A,{}),(0,N.jsx)(l,{})]})},ve=(e,t)=>`Your wallet recovery password for ${e} is\n\n${t}\n\nYou will need this password to access your ${e} wallet on a new device. Please keep it somewhere safe.`,ye=({error:e,onClose:t})=>(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(s,{closeable:!1}),(0,N.jsx)(O,{}),(0,N.jsxs)(k,e?{children:[(0,N.jsx)(Y,{fill:`var(--privy-color-error)`,width:`64px`,height:`64px`}),(0,N.jsx)(j,{title:`Something went wrong`,description:e})]}:{children:[(0,N.jsx)(M,{fill:`var(--privy-color-success)`,width:`64px`,height:`64px`}),(0,N.jsx)(j,{title:`Success`})]}),(0,N.jsx)(o,{onClick:t,children:`Close`}),(0,N.jsx)(A,{}),(0,N.jsx)(l,{})]}),be=(e,t)=>{switch(e){case`creating`:return t===`back`?e:`saving`;case`saving`:return t===`back`?`creating`:`confirming`;case`confirming`:return t===`back`?`saving`:`finalizing`;case`finalizing`:return t===`back`?`confirming`:`done`;default:return e}},xe=({onSubmit:e,...t})=>{let{lastScreen:n,navigate:r}=i(),{send:a,state:o}=(()=>{let[e,t]=(0,P.useReducer)(be,`creating`);return{send:t,state:e}})(),s=(0,P.useCallback)((async()=>{o===`finalizing`&&await e(),a(`next`)}),[o,a,e]);(0,P.useEffect)((()=>{let e;return o===`done`&&t.config.initiatedBy===`automatic`&&(e=setTimeout((()=>t.onClose?.()),1400)),()=>{e&&clearTimeout(e)}}),[o,t.config.initiatedBy,t.onClose]);let c=(0,P.useCallback)((()=>{a(`back`)}),[a]),l=(0,P.useCallback)((()=>{r(`RecoverySelectionScreen`)}),[n,r]);return o===`creating`?(0,N.jsx)(me,{...t,onSubmit:s,onBack:n===`RecoverySelectionScreen`?l:void 0}):o===`saving`?(0,N.jsx)(_e,{...t,onSubmit:s,onBack:c}):o===`confirming`?(0,N.jsx)(X,{...t,onSubmit:s,onBack:c}):o===`finalizing`?(0,N.jsx)(ie,{...t,onSubmit:s,onBack:c}):o===`done`?(0,N.jsx)(ye,{...t,onSubmit:s}):null};export{xe as n,fe as t};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{t}from"./react-BfYA1q0G.js";var n=e(t());function r({title:e,titleId:t,...r},i){return n.createElement(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:i,"aria-labelledby":t},r),e?n.createElement(`title`,{id:t},e):null,n.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z`}))}var i=n.forwardRef(r);export{i as t};
@@ -1,26 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{r as t}from"./esm-n2lWo7kz.js";import{t as n}from"./esm-Co94ENUV.js";import{$ as r,i,j as a,r as o}from"./privy-context-81KmsBw2-DiR6-Yq8.js";import{t as s}from"./jsx-runtime-CndCZlyt.js";import{t as c}from"./react-BfYA1q0G.js";import{t as l}from"./createLucideIcon-BsERoFTA.js";import{n as u}from"./modal-context-CwmSeFcv-DPWNJrfK.js";import{c as d}from"./Loader-UAZqxsnw-DJEVblm1.js";import{t as f}from"./ScreenLayout-OwaQQcxH-cfOTmyl0.js";import{Jn as p,zn as m}from"./localBatchGatewayRequest-B71J8sQ9.js";import{a as h,l as g}from"./SolanaWalletConnector-C7Lqk-Wz-Bc_lvdiF.js";import{r as _}from"./Layouts-BMRfo5hw-e-sepi6F.js";import{t as v}from"./CopyToClipboard-i_OQSBJr-_G88JCVR.js";import{n as y,t as b}from"./JsonTree-BHzNC-ic-DcVr0YF0.js";var x=l(`square-pen`,[[`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`,key:`1m0v6g`}],[`path`,{d:`M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z`,key:`ohrbg2`}]]),S=s(),C=e(c(),1),w=d.img`
2
- && {
3
- height: ${e=>e.size===`sm`?`65px`:`140px`};
4
- width: ${e=>e.size===`sm`?`65px`:`140px`};
5
- border-radius: 16px;
6
- margin-bottom: 12px;
7
- }
8
- `,T=e=>{if(!p(e))return e;try{let t=m(e);return t.includes(`�`)?e:t}catch{return e}},E=e=>{try{let n=t.decode(e),r=new TextDecoder().decode(n);return r.includes(`�`)?e:r}catch{return e}},D=e=>{let{types:t,primaryType:n,...r}=e.typedData;return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(M,{data:r}),(0,S.jsx)(v,{text:(i=e.typedData,JSON.stringify(i,null,2)),itemName:`full payload to clipboard`}),` `]});var i},O=({method:e,messageData:t,copy:n,iconUrl:r,isLoading:i,success:a,walletProxyIsLoading:o,errorMessage:s,isCancellable:c,onSign:l,onCancel:u,onClose:d})=>(0,S.jsx)(f,{title:n.title,subtitle:n.description,showClose:!0,onClose:d,icon:x,iconVariant:`subtle`,helpText:s?(0,S.jsx)(j,{children:s}):void 0,primaryCta:{label:n.buttonText,onClick:l,disabled:i||a||o,loading:i},secondaryCta:c?{label:`Not now`,onClick:u,disabled:i||a||o}:void 0,watermark:!0,children:(0,S.jsxs)(_,{children:[r?(0,S.jsx)(w,{style:{alignSelf:`center`},size:`sm`,src:r,alt:`app image`}):null,(0,S.jsxs)(A,{children:[e===`personal_sign`&&(0,S.jsx)(N,{children:T(t)}),e===`eth_signTypedData_v4`&&(0,S.jsx)(D,{typedData:t}),e===`solana_signMessage`&&(0,S.jsx)(N,{children:E(t)})]})]})}),k={component:()=>{let{authenticated:e}=i(),{initializeWalletProxy:t,closePrivyModal:s}=r(),{navigate:c,data:l,onUserCloseViaDialogOrKeybindRef:d}=u(),[f,p]=(0,C.useState)(!0),[m,_]=(0,C.useState)(``),[v,y]=(0,C.useState)(),[b,x]=(0,C.useState)(null),[w,T]=(0,C.useState)(!1);(0,C.useEffect)((()=>{e||c(`LandingScreen`)}),[e]),(0,C.useEffect)((()=>{t(a).then((e=>{p(!1),e||(_(`An error has occurred, please try again.`),y(new g(new h(m,n.E32603_DEFAULT_INTERNAL_ERROR.eipCode))))}))}),[]);let{method:E,data:D,confirmAndSign:k,onSuccess:A,onFailure:j,uiOptions:M}=l.signMessage,N={title:M?.title||`Sign message`,description:M?.description||`Signing this message will not cost you any fees.`,buttonText:M?.buttonText||`Sign and continue`},P=e=>{e?A(e):j(v||new g(new h(`The user rejected the request.`,n.E4001_USER_REJECTED_REQUEST.eipCode))),s({shouldCallAuthOnSuccess:!1}),setTimeout((()=>{x(null),_(``),y(void 0)}),200)};return d.current=()=>{P(b)},(0,S.jsx)(O,{method:E,messageData:D,copy:N,iconUrl:M?.iconUrl&&typeof M.iconUrl==`string`?M.iconUrl:void 0,isLoading:w,success:b!==null,walletProxyIsLoading:f,errorMessage:m,isCancellable:M?.isCancellable,onSign:async()=>{T(!0),_(``);try{let e=await k();x(e),T(!1),setTimeout((()=>{P(e)}),o)}catch(e){console.error(e),_(`An error has occurred, please try again.`),y(new g(new h(m,n.E32603_DEFAULT_INTERNAL_ERROR.eipCode))),T(!1)}},onCancel:()=>P(null),onClose:()=>P(b)})}},A=d.div`
9
- flex: 1;
10
- display: flex;
11
- flex-direction: column;
12
- gap: 16px;
13
- `,j=d.p`
14
- && {
15
- margin: 0;
16
- width: 100%;
17
- text-align: center;
18
- color: var(--privy-color-error-dark);
19
- font-size: 14px;
20
- line-height: 22px;
21
- }
22
- `,M=d(b)`
23
- margin-top: 0;
24
- `,N=d(y)`
25
- margin-top: 0;
26
- `;export{k as SignRequestScreen,k as default,O as SignRequestView};
@@ -1 +0,0 @@
1
- import{g as e,t}from"./esm-Co94ENUV.js";import{A as n}from"./privy-context-81KmsBw2-DiR6-Yq8.js";import{c as r,f as i,r as a}from"./errors-BQ3N-RVt-CZPAWCgC.js";import{t as o}from"./storage-Ufl800Ne-1qCR2JMO.js";import{t as s}from"./eventemitter3-Dzc_0Uq2.js";import{t as c}from"./logger-CsXm3oIv-B0UYpNFI.js";var l=class extends r{constructor(){super(`Wallet timeout`),this.type=`wallet_error`,c.warn(`Wallet request timed out`)}},u=e=>{if(e instanceof r)return c.debug(`Connector error (already formatted)`,{error:e.message}),e;if(typeof e?.code==`number`){let t=new f(e);return c.debug(`Provider RPC error`,{code:t.code,error:t.message}),t}let t=e instanceof Error?e.message:String(e);return c.debug(`Unknown connector error`,{error:t}),new r(t||`Unknown connector error`,e)},d=class extends i{constructor(e,t,n){super(e),this.type=`provider_error`,this.code=t,this.data=n}},f=class extends d{constructor(e){super(e.message,e.code,e.data);let n=Object.values(t).find((t=>t.eipCode===e.code));this.details=n||t.UNKNOWN_ERROR,e.code===-32002&&(e.message?.includes(`already pending for origin`)?this.details=e.message?.includes(`wallet_requestPermissions`)?t.E32002_CONNECTION_ALREADY_PENDING:t.E32002_REQUEST_ALREADY_PENDING:e.message?.includes(`Already processing`)&&e.message.includes(`eth_requestAccounts`)&&(this.details=t.E32002_WALLET_LOCKED))}},p={ERROR_USER_EXISTS:{message:`User already exists for this address`,detail:`Try another address!`,retryable:!1},ERROR_TIMED_OUT:{message:`Wallet request timed out`,detail:`Please try connecting again.`,retryable:!0},ERROR_WALLET_CONNECTION:{message:`Could not log in with wallet`,detail:`Please try connecting again.`,retryable:!0},ERROR_USER_LIMIT_REACHED:{message:`Unable to link`,detail:`You've reached the maximum number of linked wallets.`,retryable:!1},...t},m=class extends s{constructor(e){super(),this.walletClientType=e,this.connected=!1,this.initialized=!1}},h=()=>{let e=o.get(n);return e&&Array.isArray(e)&&e.map((e=>(e=>e&&typeof e.address==`string`&&typeof e.connectorType==`string`&&typeof e.walletClientType==`string`&&typeof e.connectedAt==`number`)(e))).every(Boolean)?e:[]},g=[`phantom`,`glow`,`solflare`,`backpack`,`okx_wallet`,`walletconnect`,`mobile_wallet_adapter`,`jupiter`,`tokenpocket`];function _(e){return e.toLowerCase().split(` `).join(`_`)}var v=class extends m{get isInstalled(){return!0}get wallet(){return this._wallet}buildConnectedWallet(){return this._wallet.accounts.map((t=>({type:`solana`,provider:new e({wallet:this._wallet,account:t}),address:t.address,connectedAt:Date.now(),walletClientType:this._wallet.name,connectorType:this.connectorType,imported:!1,meta:{name:this._wallet.name,id:this._wallet.name,icon:this._wallet.icon},isConnected:async()=>this._wallet.accounts.length>0,disconnect:async()=>{await this.disconnect()}})))}async syncAccounts(){this.wallets=this.buildConnectedWallet(),this.emit(`walletsUpdated`)}get walletBranding(){return{id:y(this.wallet)?`walletconnect_solana`:this.wallet.name,name:this.wallet.name,icon:this.wallet.icon}}async initialize(){c.debug(`Initializing Solana connector`,{wallet:this.walletClientType}),this.subscribeListeners(),await this.syncAccounts(),this.shouldAttemptAutoConnect()&&(c.debug(`Attempting Solana auto-connect`,{wallet:this.walletClientType}),await this.wallet.features[`standard:connect`]?.connect({silent:!0}).catch((()=>{})),await this.isConnected()&&(c.debug(`Solana auto-connect successful`,{wallet:this.walletClientType}),await this.syncAccounts())),this.initialized=!0,this.emit(`initialized`)}async connect(e){if(c.connectionStart(this.walletClientType,`solana_adapter`,{showPrompt:e.showPrompt}),e.showPrompt)try{await this.promptConnection()}catch(e){throw this._wallet.accounts.length===0?(c.warn(`Solana wallet connected but has no accounts`,{wallet:this.walletClientType}),new a):(c.connectionFailed(this.walletClientType,e,{method:`solana_adapter`}),e)}if(!await this.isConnected())throw c.warn(`Solana wallet not connected after prompt`,{wallet:this.walletClientType}),new a;await this.syncAccounts();let t=await this.getConnectedWallet();return t&&c.connectionSuccess(this.walletClientType),t}async getConnectedWallet(){return this.wallets.sort(((e,t)=>t.connectedAt-e.connectedAt))[0]||null}async isConnected(){return this._wallet.accounts.length>0}subscribeListeners(){this._unsubscribeListeners=this.wallet.features[`standard:events`]?.on(`change`,this.onChange)}unsubscribeListeners(){this._unsubscribeListeners?.()}shouldAttemptAutoConnect(){return!(!this.autoConnectEnabled||!g.includes(this.walletClientType))&&(this.walletClientType!==`phantom`||h().some((({walletClientType:e})=>e===`phantom`)))}constructor(e,t){super(_(y(e)?`walletconnect_solana`:e.name)),this.chainType=`solana`,this.connectorType=`solana_adapter`,this.disconnect=async()=>{c.debug(`Disconnecting Solana wallet`,{wallet:this.walletClientType}),await this.wallet.features[`standard:disconnect`]?.disconnect().catch((e=>{c.error(`Error disconnecting Solana wallet`,e,{wallet:this.walletClientType})})),await this.syncAccounts()},this.promptConnection=async()=>{c.debug(`Prompting Solana connection`,{wallet:this.walletClientType});try{await this.wallet.features[`standard:connect`]?.connect()}catch(e){throw c.connectionFailed(this.walletClientType,e,{method:`solana_adapter`}),u(e)}},this.onChange=()=>{this.syncAccounts()},this._wallet=e,this.autoConnectEnabled=t,this.wallets=[]}};function y(e){return`isWalletConnectSolana`in e&&e.isWalletConnectSolana}export{d as a,p as c,_ as i,f as l,l as n,h as o,u as r,m as s,v as t};
@@ -1,24 +0,0 @@
1
- import{c as e}from"./Loader-UAZqxsnw-DJEVblm1.js";var t=e.div`
2
- display: flex;
3
- flex-direction: column;
4
- justify-content: center;
5
- align-items: center;
6
- width: 100%;
7
- height: 82px;
8
-
9
- > div {
10
- position: relative;
11
- }
12
-
13
- > div > span {
14
- position: absolute;
15
- left: -41px;
16
- top: -41px;
17
- }
18
-
19
- > div > :last-child {
20
- position: absolute;
21
- left: -19px;
22
- top: -19px;
23
- }
24
- `;export{t};
@@ -1,20 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{I as t}from"./esm-Co94ENUV.js";import{$ as n,D as r,R as i,i as a,l as o}from"./privy-context-81KmsBw2-DiR6-Yq8.js";import{t as s}from"./jsx-runtime-CndCZlyt.js";import{t as c}from"./react-BfYA1q0G.js";import{n as l}from"./ErrorScreen-DipdTWzE-BgPRgnOb.js";import{n as u}from"./modal-context-CwmSeFcv-DPWNJrfK.js";import{c as d}from"./Loader-UAZqxsnw-DJEVblm1.js";import{a as f,i as p,t as m}from"./ModalFooter-BCuEK_nz-C_71qsaz.js";import{n as ee,r as te}from"./TransactionErrorView-BDBNqA_f-CotYKcgf.js";import{b as ne,c as h,m as g}from"./useWallets-X1ndvJ_U-CAYqg7Za.js";import{S as _,X as re,_ as ie,f as ae,i as oe,p as v,t as se}from"./index.browser-B-i-Lj3J.js";import{n as y,o as b,r as x}from"./index.browser-BMmUcykv.js";import{t as S}from"./useActiveWallet-B-yZYGc6-BkK6rFBm.js";import{t as C}from"./CheckCircleIcon-B1l17ioc.js";import{u as w}from"./Layouts-BMRfo5hw-e-sepi6F.js";import{n as T}from"./ScreenHeader-CHmc4-Lu-BvGTLg53.js";import{t as ce}from"./useGetSolPrice-x7gfUIHJ-CLVXqv6I.js";import{c as E,i as D,r as O,s as k,t as A}from"./getFormattedUsdFromLamports-De3U9GlO-Gx4_wxON.js";import{n as j}from"./transaction-BNTP-bFm-M5tJx8vY.js";import{a as M,i as N,n as P,t as F}from"./Value-DTgR824E-Bp6WGZZm.js";import{n as I,t as L}from"./simulateTransaction-CfuOrae4-PjA_tGjX.js";import{t as R}from"./StackedContainer-B2vaEl56-Do5dXB8-.js";import{n as z,t as B}from"./WalletLink-DK5LB5Ha-DjUZvqs-.js";var V=s(),H=e(c(),1);async function U(e,t,n){if(e.length===0)return{};let r=await b(t,e,n);return y(r),x(r),r.reduce((e,t)=>({...e,[t.address]:t.data.addresses}),{})}var W=d.span`
2
- && {
3
- width: 82px;
4
- height: 82px;
5
- border-width: 4px;
6
- border-style: solid;
7
- border-color: ${e=>e.color??`var(--privy-color-accent)`};
8
- background-color: ${e=>e.color??`var(--privy-color-accent)`};
9
- border-radius: 50%;
10
- display: inline-block;
11
- box-sizing: border-box;
12
- }
13
- `,G=({instruction:e,fees:t,transactionInfo:n,solPrice:r,chain:i})=>(0,V.jsxs)(M,{children:[n?.action&&(0,V.jsxs)(N,{children:[(0,V.jsx)(F,{children:`Action`}),(0,V.jsx)(P,{children:n.action})]}),e?.total!=null&&(0,V.jsxs)(N,{children:[(0,V.jsx)(F,{children:`Total`}),(0,V.jsx)(P,{children:e.total})]}),!e?.total&&e?.amount!=null&&(0,V.jsxs)(N,{children:[(0,V.jsx)(F,{children:`Total`}),(0,V.jsx)(P,{children:(0,V.jsx)(z,{quantities:[e.amount,t],tokenPrice:r})})]}),(0,V.jsxs)(N,{children:[(0,V.jsx)(F,{children:`Fees`}),(0,V.jsx)(P,{children:(0,V.jsx)(z,{quantities:[t],tokenPrice:r})})]}),e?.to&&(0,V.jsxs)(N,{children:[(0,V.jsx)(F,{children:`To`}),(0,V.jsx)(P,{children:(0,V.jsx)(B,{walletAddress:e.to,chainId:i,chainType:`solana`})})]})]}),le=({fees:e,onClose:t,receiptHeader:n,receiptDescription:r,transactionInfo:i,solPrice:a,signOnly:o,instruction:s,chain:c})=>(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(p,{onClose:t}),(0,V.jsx)(R,{style:{marginBottom:`16px`},children:(0,V.jsxs)(`div`,{children:[(0,V.jsx)(W,{color:`var(--privy-color-success-light)`}),(0,V.jsx)(C,{height:38,width:38,strokeWidth:2,stroke:`var(--privy-color-success)`})]})}),(0,V.jsx)(T,{title:n??`Transaction ${o?`signed`:`complete`}!`,description:r??`You're all set.`}),(0,V.jsx)(G,{solPrice:a,instruction:s,fees:e,transactionInfo:i,chain:c}),(0,V.jsx)(S,{}),(0,V.jsx)(K,{loading:!1,onClick:t,children:`Close`}),(0,V.jsx)(w,{}),(0,V.jsx)(m,{})]}),K=d(f)`
14
- && {
15
- margin-top: 24px;
16
- }
17
- transition:
18
- color 350ms ease,
19
- background-color 350ms ease;
20
- `;async function q(e,t){try{return await e}catch{return t}}function J(e){switch(e){case`solana:mainnet`:return`mainnet-beta`;case`solana:devnet`:return`devnet`;case`solana:testnet`:return`testnet`}}async function Y({privyClient:e,chain:t,mint:n}){let r=k[t];if(!r[n]){let i=await e.getSplTokenMetadata({mintAddress:n,cluster:J(t)});i&&(r[n]={address:n,symbol:i.symbol,decimals:i.decimals})}return r[n]}async function ue({tx:e,solanaClient:t,privyClient:n,checkFunds:r}){let i=v().decode(h(e)),a=i.staticAccounts[0]??``,o=i.version===1?await q(I({solanaClient:t,tx:e})):await I({solanaClient:t,tx:e}),s=(r?await q(L({solanaClient:t,tx:e})):void 0)?.hasFunds??!0,c={},l=[],u=await async function({solanaClient:e,message:t}){if(!(`addressTableLookups`in t)||!t.addressTableLookups)return[...t.staticAccounts];let n=t.addressTableLookups.map((e=>e.lookupTableAddress)),r=await U(n,e.rpc),i=n.map(((e,n)=>[...t.addressTableLookups[n]?.writableIndexes.map((t=>{let i=r[e]?.[t];if(i)return{key:i,isWritable:!0,altIdx:n}}))??[],...t.addressTableLookups[n]?.readonlyIndexes.map((t=>{let i=r[e]?.[t];if(i)return{key:i,isWritable:!1,altIdx:n}}))??[]])).flat().filter((e=>!!e)).sort(((e,t)=>e.isWritable===t.isWritable?e.altIdx-t.altIdx:e.isWritable?-1:1)).map((({key:e})=>e));return[...t.staticAccounts,...i]}({solanaClient:t,message:i});for(let e of`instructionHeaders`in i?i.instructionHeaders.map(((e,t)=>{let n=i.instructionPayloads[t];return{programAddressIndex:e.programAccountIndex,accountIndices:n?.instructionAccountIndices,data:n?.instructionData}})):[...i.instructions]){let r=i.staticAccounts[e.programAddressIndex]||``;if(r!==`TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA`&&r!==`TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`){if(r!==`11111111111111111111111111111111`){if(r===`ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL`){let t=await q(function(e,t,n){let[r,i,a,o]=e.accountIndices?.map((e=>t[e]))??[];return{type:`ata-creation`,program:n,payer:r,ata:i,owner:a,mint:o}}(e,u,r));if(!t){l.push({type:`unknown`,program:r,discriminator:e.data?.[0]});continue}if(l.push(t),t.ata&&t.owner&&t.mint){c[t.ata]={owner:t.owner,mint:t.mint};continue}}if(E.includes(r)){let i=await q(fe(e,u,t,n,r));if(!i){l.push({type:`unknown`,program:r,discriminator:e.data?.[0]});continue}l.push(i)}else if(D.includes(r)){let i=await q(pe(e,u,t,n,r));if(!i){l.push({type:`unknown`,program:r,discriminator:e.data?.[0]});continue}l.push(i)}else l.push({type:`unknown`,program:r,discriminator:e.data?.[0]})}else{let t=await q(de(e,u));if(!t){l.push({type:`unknown`,program:r,discriminator:e.data?.[0]});continue}l.push(t)}}else{let i=await q(Z(e,u,t,n,c,r));if(!i){l.push({type:`unknown`,program:r,discriminator:e.data?.[0]});continue}l.push(i),i.type===`spl-transfer`&&(i.fromAta&&i.fromAccount&&i.token.address&&(c[i.fromAta]??={owner:i.fromAccount,mint:i.token.address}),i.toAta&&i.toAccount&&i.token.address&&(c[i.toAta]??={owner:i.toAccount,mint:i.token.address}))}}return{spender:a,fee:o,instructions:l,hasFunds:!!s}}function X(e,t=0){try{return function(e,t=0){let n=0n;for(let r=0;r<8;r++)n|=BigInt(e[t+r])<<BigInt(8*r);return n}(e,t)}catch{}try{return e.readBigInt64LE(t)}catch{}let n=g(e);try{return((e,t=0)=>{let n=e[t],r=e[t+7];if(!n||!r)throw Error(`Buffer offset out of range: first: ${n}, last: ${r}.`);return(BigInt(e[t+4]+256*e[t+5]+65536*e[t+6]+(r<<24))<<32n)+BigInt(n+256*e[++t]+65536*e[++t]+16777216*e[++t])})(n)}catch{}try{return n.subarray(t).readBigInt64LE()}catch{}try{return n.readBigInt64LE(t)}catch{}return 0n}async function Z(e,t,n,r,i,a){let o=e.data?.[0],s=e.accountIndices?.map((e=>t[e]))??[];if(o===1){let[e,t,n]=s;return{type:`spl-init-account`,program:a,account:e,mint:t,owner:n}}if(o===3){let t,o,[c,l,u]=s,d=``,f=l?i[l]:void 0;if(f)t=f.owner,d=f.mint;else if(l){let e=(await n.rpc.getAccountInfo(l,{commitment:`confirmed`,encoding:`jsonParsed`}).send()).value?.data;t=e?.parsed?.info?.owner,d=e?.parsed?.info?.mint??``,o=e?.parsed?.info?.tokenAmount?.decimals}!d&&c&&(d=((await n.rpc.getAccountInfo(c,{commitment:`confirmed`,encoding:`jsonParsed`}).send()).value?.data)?.parsed?.info?.mint??``);let p=await Y({privyClient:r,chain:n.chain,mint:d}),m=p?.symbol??``;return o??=p?.decimals??9,{type:`spl-transfer`,program:a,fromAta:c,fromAccount:u,toAta:l,toAccount:t,value:X(e.data,1),token:{symbol:m,decimals:o,address:d}}}if(o===9){let[e,t,n]=s;return{type:`spl-close-account`,program:a,source:e,destination:t,owner:n}}if(o===17)return{type:`spl-sync-native`,program:a};throw Error(`Token program instruction type ${o} not supported`)}async function de(e,t){let n=e.data?.[0],r=e.accountIndices?.map((e=>t[e]))??[];if(n===0){let[,t]=r;return{type:`create-account`,program:O,account:t?.toString(),value:X(e.data,4),withSeed:!1}}if(n===2){let[t,n]=r;return{type:`sol-transfer`,program:O,fromAccount:t,toAccount:n,token:{symbol:`SOL`,decimals:9},value:X(e.data,4),withSeed:!1}}if(n===3){let[,t]=r;return{type:`create-account`,program:O,account:t,withSeed:!0,value:X(e.data.slice(e.data.length-32-8-8))}}if(n===11){let[t,n]=r;return{type:`sol-transfer`,program:O,fromAccount:t,toAccount:n,value:X(e.data,4),token:{symbol:`SOL`,decimals:9},withSeed:!0}}throw Error(`System program instruction type ${n} not supported`)}async function fe(e,t,n,r,i){let a=e.accountIndices?.map((e=>t[e]))??[],o=e.data?.[0];if(o===143){let t=a[10],o=a[11];return{type:`raydium-swap-base-input`,program:i,mintIn:t,mintOut:o,tokenIn:t?await Y({privyClient:r,chain:n.chain,mint:t}):void 0,tokenOut:o?await Y({privyClient:r,chain:n.chain,mint:o}):void 0,amountIn:X(e.data,8),minimumAmountOut:X(e.data,16)}}if(o===55){let t=a[10],o=a[11];return{type:`raydium-swap-base-output`,program:i,mintIn:t,mintOut:o,tokenIn:t?await Y({privyClient:r,chain:n.chain,mint:t}):void 0,tokenOut:o?await Y({privyClient:r,chain:n.chain,mint:o}):void 0,maxAmountIn:X(e.data,8),amountOut:X(e.data,16)}}throw Error(`Raydium swap program instruction type ${o} not supported`)}async function pe(e,t,n,r,i){let a=e.data?.[0],o=e.accountIndices?.map((e=>t[e]))??[];if([208,51,239,151,123,43,237,92].includes(a)){let t=o[5],a=o[6];return{type:`jupiter-swap-exact-out-route`,program:i,mintIn:t,mintOut:a,tokenIn:t?await Y({privyClient:r,chain:n.chain,mint:t}):void 0,tokenOut:a?await Y({privyClient:r,chain:n.chain,mint:a}):void 0,outAmount:X(e.data,e.data.length-1-2-8-8),quotedInAmount:X(e.data,e.data.length-1-2-8)}}if([176,209,105,168,154,125,69,62].includes(a)){let t=o[7],a=o[8];return{type:`jupiter-swap-exact-out-route`,program:i,mintIn:t,mintOut:a,tokenIn:t?await Y({privyClient:r,chain:n.chain,mint:t}):void 0,tokenOut:a?await Y({privyClient:r,chain:n.chain,mint:a}):void 0,outAmount:X(e.data,e.data.length-1-2-8-8),quotedInAmount:X(e.data,e.data.length-1-2-8)}}if([193,32,155,51,65,214,156,129].includes(a)){let t=o[7],a=o[8];return{type:`jupiter-swap-shared-accounts-route`,program:i,mintIn:t,mintOut:a,tokenIn:t?await Y({privyClient:r,chain:n.chain,mint:t}):void 0,tokenOut:a?await Y({privyClient:r,chain:n.chain,mint:a}):void 0,inAmount:X(e.data,e.data.length-1-2-8-8),quotedOutAmount:X(e.data,e.data.length-1-2-8)}}throw[62,198,214,193,213,159,108,210].includes(a)&&console.warn(`Jupiter swap program instruction 'claim' not implemented`),[116,206,27,191,166,19,0,73].includes(a)&&console.warn(`Jupiter swap program instruction 'claim_token' not implemented`),[26,74,236,151,104,64,183,249].includes(a)&&console.warn(`Jupiter swap program instruction 'close_token' not implemented`),[229,194,212,172,8,10,134,147].includes(a)&&console.warn(`Jupiter swap program instruction 'create_open_orders' not implemented`),[28,226,32,148,188,136,113,171].includes(a)&&console.warn(`Jupiter swap program instruction 'create_program_open_orders' not implemented`),[232,242,197,253,240,143,129,52].includes(a)&&console.warn(`Jupiter swap program instruction 'create_token_ledger' not implemented`),[147,241,123,100,244,132,174,118].includes(a)&&console.warn(`Jupiter swap program instruction 'create_token_account' not implemented`),[229,23,203,151,122,227,173,42].includes(a)&&console.warn(`Jupiter swap program instruction 'route' not implemented`),[150,86,71,116,167,93,14,104].includes(a)&&console.warn(`Jupiter swap program instruction 'route_with_token_ledger' not implemented`),[228,85,185,112,78,79,77,2].includes(a)&&console.warn(`Jupiter swap program instruction 'set_token_ledger' not implemented`),[230,121,143,80,119,159,106,170].includes(a)&&console.warn(`Jupiter swap program instruction 'shared_accounts_route_with_token_ledger' not implemented`),Error(`Jupiter swap program instruction type ${a} not supported`)}var Q=`Fee unavailable`,$={component:()=>{let{data:e,onUserCloseViaDialogOrKeybindRef:s,setModalData:c,navigate:d}=u(),{client:f,closePrivyModal:p,walletProxy:m,showFiatPrices:g}=n(),y=r(),{user:b}=a(),x=ne()(e?.standardSignAndSendTransaction?.chain??`solana:mainnet`),[S,C]=(0,H.useState)(e?.standardSignAndSendTransaction?.transaction),[w,T]=(0,H.useState)(),[E,D]=(0,H.useState)(),[O,k]=(0,H.useState)({value:0n,isLoading:!1}),[M,N]=(0,H.useState)(!1),[P,F]=(0,H.useState)({}),[I,L]=(0,H.useState)(),R=e?.standardSignAndSendTransaction?.account,z=!!e?.standardSignAndSendTransaction?.signOnly,B=!!e?.standardSignAndSendTransaction?.isSponsored,U=R?.imported?i(b).find((e=>e.address===R.address)):o(b),{solPrice:W,isSolPriceLoading:G}=ce({enabled:g}),K=(0,H.useMemo)((()=>{if(!w)return;let e=w.spender,n=w.fee===void 0?Q:j(w.fee),r=j(O.value,3,!0),i=w.instructions.filter((e=>[`sol-transfer`,`spl-transfer`,`raydium-swap-base-input`,`raydium-swap-base-output`,`jupiter-swap-shared-accounts-route`,`jupiter-swap-exact-out-route`].includes(e.type))),a=i.at(0);return!a||i.length>1?{fee:n,spender:e,balance:r}:a.type===`sol-transfer`?{fee:n,spender:e,balance:r,total:j(a.value)}:a.type===`spl-transfer`?{fee:n,spender:e,balance:r,total:`${t({amount:a.value,decimals:a.token.decimals})} ${a.token.symbol}`}:a.type===`raydium-swap-base-input`&&a.tokenIn&&a.tokenOut?{fee:n,spender:e,balance:r,swap:`${`${t({amount:a.amountIn,decimals:a.tokenIn.decimals})} ${a.tokenIn.symbol}`} → ${`${t({amount:a.minimumAmountOut,decimals:a.tokenOut.decimals})} ${a.tokenOut.symbol}`}`}:a.type===`raydium-swap-base-output`&&a.tokenIn&&a.tokenOut?{fee:n,spender:e,balance:r,swap:`${`${t({amount:a.maxAmountIn,decimals:a.tokenIn.decimals})} ${a.tokenIn.symbol}`} → ${`${t({amount:a.amountOut,decimals:a.tokenOut.decimals})} ${a.tokenOut.symbol}`}`}:a.type===`jupiter-swap-shared-accounts-route`&&a.tokenIn&&a.tokenOut?{fee:n,spender:e,balance:r,swap:`${`${t({amount:a.inAmount,decimals:a.tokenIn.decimals})} ${a.tokenIn.symbol}`} → ${`${t({amount:a.quotedOutAmount,decimals:a.tokenOut.decimals})} ${a.tokenOut.symbol}`}`}:a.type===`jupiter-swap-exact-out-route`&&a.tokenIn&&a.tokenOut?{fee:n,spender:e,balance:r,swap:`${`${t({amount:a.quotedInAmount,decimals:a.tokenIn.decimals})} ${a.tokenIn.symbol}`} → ${`${t({amount:a.outAmount,decimals:a.tokenOut.decimals})} ${a.tokenOut.symbol}`}`}:{fee:n,spender:e,balance:r}}),[w,R?.address,O]),q=(0,H.useMemo)((()=>{let e;if(!w||!g||!W||G)return;function n(...e){return A(e.reduce(((e,t)=>e+t),0n),W??0)}let r=R?.address===w.spender;r&&(e=w.fee===void 0?Q:n(w.fee));let i=n(O.value),a=w.instructions.filter((e=>e.type===`sol-transfer`||e.type===`spl-transfer`)).at(0);return!a||w.instructions.length>1?{fee:e,balance:i}:a.type===`sol-transfer`?r&&w.fee===void 0?{fee:e,balance:i}:{fee:e,balance:i,total:n(a.value,r?w.fee??0n:0n)}:a.type===`spl-transfer`?{fee:e,balance:i,total:`${t({amount:a.value,decimals:a.token.decimals})} ${a.token.symbol}`}:{fee:e,balance:i}}),[w,g,W,G,R?.address,O]);if((0,H.useEffect)((()=>{(async function(){if(S&&f)try{D(void 0);let e=await ue({tx:S,solanaClient:x,privyClient:f,checkFunds:!z&&!B});T(e)}catch(e){console.error(`Failed to prepare transaction`,e),D(e)}})()}),[S,x,f,z]),(0,H.useEffect)((()=>{(async function(){if(!R)return;k({value:O.value,isLoading:!0});let{value:e}=await x.rpc.getBalance(R.address,{commitment:`confirmed`}).send();k({value:e??0n,isLoading:!1})})().catch(console.error)}),[w]),!S||!e?.standardSignAndSendTransaction||!R){let t=Error(`Invalid transaction request`);return(0,V.jsx)(l,{error:t,allowlistConfig:y.allowlistConfig,onRetry:()=>{e?.standardSignAndSendTransaction?.onFailure(t),p({shouldCallAuthOnSuccess:!1})}})}let J=()=>{if(!M)return P.signature||P.signedTransaction?e?.standardSignAndSendTransaction?.onSuccess({signature:P.signature,signedTransaction:P.signedTransaction}):e?.standardSignAndSendTransaction?.onFailure(I??E??Error(`User exited the modal before submitting the transaction`)),p({shouldCallAuthOnSuccess:!1})};s.current=J;let Y=e.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?(0,V.jsx)(`img`,{src:e.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:e.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,X=!!(e.funding&&e.funding.supportedOptions.length>0),Z=!w?.hasFunds&&X&&!B;if(P.signature||P.signedTransaction){let t=w?.instructions.filter((e=>e.type===`sol-transfer`||e.type===`spl-transfer`)),n=t?.length===1?t?.at(0):void 0;return(0,V.jsx)(le,{fees:P.fees??0n,onClose:J,transactionInfo:e.standardSignAndSendTransaction?.uiOptions.transactionInfo,solPrice:W,receiptHeader:e.standardSignAndSendTransaction?.uiOptions.successHeader,receiptDescription:e.standardSignAndSendTransaction?.uiOptions.successDescription,chain:x.chain,signOnly:z,instruction:n?.type===`sol-transfer`?{to:n.toAccount,amount:n.value}:{to:n?.toAccount||n?.toAta,total:K?.total}})}return I?(0,V.jsx)(te,{transactionError:I,chainId:x.chain,onClose:J,chainType:`solana`,onRetry:async()=>{L(void 0);let{value:e}=await x.rpc.getLatestBlockhash().send();var t,n;C((t=S,n=e,_(v().decode(h(t)),(e=>ae(e)),(e=>ie(n,e)),(e=>se(e)),(e=>new Uint8Array(oe().encode(e))))))}}):(0,V.jsx)(ee,{img:Y,title:e.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.title||`Confirm transaction`,subtitle:e.standardSignAndSendTransaction?.uiOptions?.description||`${y.name} wants your permission to approve the following transaction.`,cta:Z?`Add funds`:e.standardSignAndSendTransaction?.uiOptions?.buttonText||`Approve`,instructions:w?.instructions??[],network:x.chain==`solana:mainnet`?`Solana`:x.chain.replace(`solana:`,``),blockExplorerUrl:x.blockExplorerUrl,total:g?q?.total:K?.total,fee:g?q?.fee:K?.fee,balance:g?q?.balance:K?.balance,swap:K?.swap,transactingWalletAddress:R.address,disabled:!w?.hasFunds&&!X,isSubmitting:M,isPreparing:!w||O.isLoading,isTokenPriceLoading:g&&G,isMissingFunds:!w?.hasFunds,submitError:I??void 0,isSponsored:!!e.standardSignAndSendTransaction?.isSponsored,parseError:E,onClick:Z?async()=>{if(!R)return;if(!X)throw Error(`Funding wallet is not enabled`);let t=`FundingMethodSelectionScreen`;c({...e,funding:{...e.funding,methodScreen:t},solanaFundingData:e?.solanaFundingData}),d(t)}:async()=>{try{if(N(!0),M||!R||!m||!b||!U)return;let t=await e.standardSignAndSendTransaction.onConfirm(S);if(`signature`in t){let e=await async function({solanaClient:e,signature:t}){let n=re().decode(t),r=await e.rpc.getTransaction(n,{maxSupportedTransactionVersion:1,commitment:`confirmed`,encoding:`base64`}).send().catch((()=>null));return r?{fee:r.meta?.fee??0n}:null}({solanaClient:x,signature:t.signature});F({...t,fees:e?.fee});return}F(t)}catch(e){console.warn({transaction:S,error:e}),L(e)}finally{N(!1)}},onClose:J})}};export{$ as StandardSignAndSendTransactionScreen,$ as default};
@@ -1,13 +0,0 @@
1
- import{c as e}from"./Loader-UAZqxsnw-DJEVblm1.js";var t=e.span`
2
- margin-top: 4px;
3
- color: var(--privy-color-foreground);
4
- text-align: center;
5
-
6
- font-size: 0.875rem;
7
- font-weight: 400;
8
- line-height: 1.375rem; /* 157.143% */
9
-
10
- && a {
11
- color: var(--privy-color-accent);
12
- }
13
- `;export{t};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{$ as t,D as n,i as r,r as i}from"./privy-context-81KmsBw2-DiR6-Yq8.js";import{t as a}from"./jsx-runtime-CndCZlyt.js";import{t as o}from"./react-BfYA1q0G.js";import{n as s}from"./modal-context-CwmSeFcv-DPWNJrfK.js";import{t as c}from"./ScreenLayout-OwaQQcxH-cfOTmyl0.js";import{s as l,t as u}from"./errors-BQ3N-RVt-CZPAWCgC.js";import{Vt as d,b as f,h as p}from"./index-YiCw0Y_x-Czl0tWfF.js";import{t as m}from"./shouldProceedtoEmbeddedWalletCreationFlow-B3vyavrh-BkAKsRNi.js";import{t as h}from"./telegram-B-JqnkqZ-Dqkm4rDn.js";var g=a(),_=e(o(),1),v=({success:e,errorMessage:t,onRetry:n})=>{let r=e?`Successfully connected with Telegram`:t?t.message:`Verifying connection to Telegram`;return(0,g.jsx)(c,{title:r,subtitle:e?`You're good to go!`:t?t.detail:`Just a few moments more`,icon:h,iconVariant:`loading`,iconLoadingStatus:{success:e,fail:!!t},secondaryCta:t?.retryable&&n?{label:`Retry`,onClick:n}:void 0,watermark:!0})},y={component:()=>{let{authenticated:e,logout:a,ready:o,user:c}=r(),{setModalData:h,navigate:y,resetNavigation:b,data:x}=s(),S=n(),{initLoginWithTelegram:C,loginWithTelegram:w,updateWallets:T,setReadyToTrue:E,closePrivyModal:D,createAnalyticsEvent:O,getAuthMeta:k}=t(),[A,j]=(0,_.useState)(!1),[M,N]=(0,_.useState)(void 0),P=p();async function F(){try{let t=await async function(){let t;if(!e){if(P.enabled&&P.status===`error`)throw new d(P.error,null,l.CAPTCHA_FAILURE);return P.enabled&&P.status!==`success`&&(P.execute(),t=await P.waitForResult()),t}}();await w({captchaToken:t}),j(!0),E(!0)}catch(e){if(e?.privyErrorCode===l.ALLOWLIST_REJECTED)return N(void 0),b(),void y(`AllowlistRejectionScreen`);if(e?.privyErrorCode===l.USER_LIMIT_REACHED)return console.error(new u(e).toString()),N(void 0),b(),void y(`UserLimitReachedScreen`);if(e?.privyErrorCode===l.USER_DOES_NOT_EXIST)return N(void 0),b(),void y(`AccountNotFoundScreen`);if(e?.privyErrorCode===l.ACCOUNT_TRANSFER_REQUIRED&&e.data?.data?.nonce)return N(void 0),b(),h({accountTransfer:{nonce:e.data?.data?.nonce,account:e.data?.data?.subject,telegramAuthResult:k()?.telegramAuthResult,telegramWebAppData:k()?.telegramWebAppData,displayName:e.data?.data?.account?.displayName,linkMethod:`telegram`,embeddedWalletAddress:e.data?.data?.otherUser?.embeddedWalletAddress}}),void y(`LinkConflictScreen`);let{retryable:t,detail:n}=f(e);N({retryable:t,detail:n,message:`Authentication failed`})}}return(0,_.useEffect)((()=>{F()}),[]),(0,_.useEffect)((()=>{if(!(o&&e&&A&&c))return;if(S?.legal.requireUsersAcceptTerms&&!c.hasAcceptedTerms){let e=setTimeout((()=>{y(`AffirmativeConsentScreen`)}),i);return()=>clearTimeout(e)}if(m(c,S.embeddedWallets)){let e=setTimeout((()=>{h({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),O({eventName:`embedded_wallet_creation_failure_logout`,payload:{error:e,provider:`telegram`,screen:`TelegramAuthScreen`}}),a()},callAuthOnSuccessOnClose:!0}}),y(`EmbeddedWalletOnAccountCreateScreen`)}),i);return()=>clearTimeout(e)}T();let t=setTimeout((()=>D({shouldCallAuthOnSuccess:!0,isSuccess:!0})),i);return()=>clearTimeout(t)}),[o,e,A,c]),(0,g.jsx)(v,{success:A,errorMessage:M,onRetry:M?.retryable?async()=>{try{N(void 0),x?.telegramAuthModalData?.seamlessAuth||await C(void 0,x?.login?.disableSignup),await F()}catch(e){let{retryable:t,detail:n}=f(e);N({retryable:t,detail:n,message:`Authentication failed`})}}:void 0})},isCaptchaRequired:!0,isShownBeforeReady:!0};export{y as TelegramAuthScreen,y as default,v as TelegramAuthScreenView};
@@ -1,7 +0,0 @@
1
- import{c as e}from"./Loader-UAZqxsnw-DJEVblm1.js";var t=e.span`
2
- color: var(--privy-color-foreground);
3
- font-size: 1.125rem;
4
- font-weight: 600;
5
- line-height: 1.875rem; /* 166.667% */
6
- text-align: center;
7
- `;export{t};
@@ -1,36 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{t}from"./jsx-runtime-CndCZlyt.js";import{t as n}from"./react-BfYA1q0G.js";import{t as r}from"./check-DHnllI8N.js";import{t as i}from"./x-gjDrY2rk.js";import{c as a}from"./Loader-UAZqxsnw-DJEVblm1.js";var o=t(),s=e(n(),1),c=a.div`
2
- display: flex;
3
- flex-direction: column;
4
- justify-content: flex-start;
5
- gap: 10px; /* 10px gap between items */
6
- padding-left: 8px; /* 8px indentation container */
7
- `;a.div`
8
- &&& {
9
- margin-left: 6px; /* Center the line under the checkbox (12px/2) */
10
- border-left: 2px solid var(--privy-color-foreground-4);
11
- height: 10px; /* 10px H padding between paragraphs */
12
- margin-top: 0;
13
- margin-bottom: 0;
14
- }
15
- `;var l=({children:e,variant:t=`default`,icon:n})=>{let a=()=>{switch(t){case`success`:return`var(--privy-color-icon-success)`;case`error`:return`var(--privy-color-icon-error)`;default:return`var(--privy-color-icon-muted)`}};return(0,o.jsxs)(d,{children:[(0,o.jsx)(u,{$variant:t,"data-variant":t,children:(()=>{if(n)return s.isValidElement(n)?s.cloneElement(n,{stroke:a(),strokeWidth:2}):n;switch(t){case`success`:default:return(0,o.jsx)(r,{size:12,stroke:a(),strokeWidth:3});case`error`:return(0,o.jsx)(i,{size:12,stroke:a(),strokeWidth:3})}})()}),e]})},u=a.div`
16
- display: flex;
17
- align-items: center;
18
- justify-content: center;
19
- width: 20px;
20
- height: 20px;
21
- border-radius: 50%;
22
- background-color: ${({$variant:e})=>{switch(e){case`success`:return`var(--privy-color-success-bg)`;case`error`:return`var(--privy-color-error-bg)`;default:return`var(--privy-color-background-2)`}}};
23
- flex-shrink: 0;
24
- `,d=a.div`
25
- display: flex;
26
- justify-content: flex-start;
27
- align-items: flex-start; /* Align all elements to the top */
28
- text-align: left;
29
- gap: 8px;
30
-
31
- && {
32
- a {
33
- color: var(--privy-color-accent);
34
- }
35
- }
36
- `;export{l as n,c as t};