termdock 1.4.282 → 1.4.283

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 (314) hide show
  1. package/dist/client/assets/{App-KjvxjYWp.js → App-DIYNv8nX.js} +27 -27
  2. package/dist/client/assets/App-DIYNv8nX.js.br +0 -0
  3. package/dist/client/assets/App-DIYNv8nX.js.gz +0 -0
  4. package/dist/client/assets/{ChangeWalkthroughPanel-D0dLmuqS.js → ChangeWalkthroughPanel-D3P0LWfU.js} +1 -1
  5. package/dist/client/assets/ChangeWalkthroughPanel-D3P0LWfU.js.br +0 -0
  6. package/dist/client/assets/ChangeWalkthroughPanel-D3P0LWfU.js.gz +0 -0
  7. package/dist/client/assets/{DagPlayground-BnxrVoa1.js → DagPlayground-DHLTKfYe.js} +1 -1
  8. package/dist/client/assets/DagPlayground-DHLTKfYe.js.br +0 -0
  9. package/dist/client/assets/DagPlayground-DHLTKfYe.js.gz +0 -0
  10. package/dist/client/assets/{DiffLab-CEJHH47s.js → DiffLab-DyapQhFp.js} +1 -1
  11. package/dist/client/assets/DiffLab-DyapQhFp.js.br +0 -0
  12. package/dist/client/assets/DiffLab-DyapQhFp.js.gz +0 -0
  13. package/dist/client/assets/{DiffReview-B4MgHev_.js → DiffReview-CtlVXUuM.js} +1 -1
  14. package/dist/client/assets/DiffReview-CtlVXUuM.js.br +0 -0
  15. package/dist/client/assets/DiffReview-CtlVXUuM.js.gz +0 -0
  16. package/dist/client/assets/{DiffReviewLab-CwxhCK9D.js → DiffReviewLab-CcATFm0V.js} +1 -1
  17. package/dist/client/assets/DiffReviewLab-CcATFm0V.js.br +0 -0
  18. package/dist/client/assets/DiffReviewLab-CcATFm0V.js.gz +0 -0
  19. package/dist/client/assets/{DiffViewer-B5Fj1S7h.js → DiffViewer-DbAcE-rO.js} +1 -1
  20. package/dist/client/assets/DiffViewer-DbAcE-rO.js.br +0 -0
  21. package/dist/client/assets/DiffViewer-DbAcE-rO.js.gz +0 -0
  22. package/dist/client/assets/{ModelPreview-BgzcGTC4.js → ModelPreview-DFsugreu.js} +1 -1
  23. package/dist/client/assets/ModelPreview-DFsugreu.js.br +0 -0
  24. package/dist/client/assets/ModelPreview-DFsugreu.js.gz +0 -0
  25. package/dist/client/assets/{RightSidebar-BZfXFW1d.js → RightSidebar-BljTZjyo.js} +4 -4
  26. package/dist/client/assets/RightSidebar-BljTZjyo.js.br +0 -0
  27. package/dist/client/assets/RightSidebar-BljTZjyo.js.gz +0 -0
  28. package/dist/client/assets/{abnfDiagram-VCTEODGH-DrqWxUpF.js → abnfDiagram-VCTEODGH-C6Qn78Kl.js} +1 -1
  29. package/dist/client/assets/abnfDiagram-VCTEODGH-C6Qn78Kl.js.br +0 -0
  30. package/dist/client/assets/abnfDiagram-VCTEODGH-C6Qn78Kl.js.gz +0 -0
  31. package/dist/client/assets/{app-Cx1S0NEn.js → app-BT_37rUb.js} +3 -3
  32. package/dist/client/assets/app-BT_37rUb.js.br +0 -0
  33. package/dist/client/assets/app-BT_37rUb.js.gz +0 -0
  34. package/dist/client/assets/{arc-D-c2BO48.js → arc-DlrdXzuL.js} +1 -1
  35. package/dist/client/assets/arc-DlrdXzuL.js.br +0 -0
  36. package/dist/client/assets/arc-DlrdXzuL.js.gz +0 -0
  37. package/dist/client/assets/{architectureDiagram-5GKGNRK7-Dw3s7taT.js → architectureDiagram-5GKGNRK7-yDm6ZlLB.js} +1 -1
  38. package/dist/client/assets/architectureDiagram-5GKGNRK7-yDm6ZlLB.js.br +0 -0
  39. package/dist/client/assets/architectureDiagram-5GKGNRK7-yDm6ZlLB.js.gz +0 -0
  40. package/dist/client/assets/{blockDiagram-I7D4REHJ-BJb1cd3h.js → blockDiagram-I7D4REHJ-CQ_ev6HF.js} +1 -1
  41. package/dist/client/assets/blockDiagram-I7D4REHJ-CQ_ev6HF.js.br +0 -0
  42. package/dist/client/assets/blockDiagram-I7D4REHJ-CQ_ev6HF.js.gz +0 -0
  43. package/dist/client/assets/{c4Diagram-7LVT6UL2-BeS1pCi3.js → c4Diagram-7LVT6UL2-Xc0eRnWn.js} +1 -1
  44. package/dist/client/assets/c4Diagram-7LVT6UL2-Xc0eRnWn.js.br +0 -0
  45. package/dist/client/assets/c4Diagram-7LVT6UL2-Xc0eRnWn.js.gz +0 -0
  46. package/dist/client/assets/channel-JBVMoCs6.js +1 -0
  47. package/dist/client/assets/{chunk-2Q5K7J3B-Bbs_OKMp.js → chunk-2Q5K7J3B-DOea--M6.js} +1 -1
  48. package/dist/client/assets/{chunk-5VM5RSS4-Cb5qWSQ9.js → chunk-5VM5RSS4-5BTB5aOY.js} +1 -1
  49. package/dist/client/assets/{chunk-F27PBJKO-DuSEgqou.js → chunk-F27PBJKO-D4bPuUCL.js} +1 -1
  50. package/dist/client/assets/chunk-F27PBJKO-D4bPuUCL.js.br +0 -0
  51. package/dist/client/assets/chunk-F27PBJKO-D4bPuUCL.js.gz +0 -0
  52. package/dist/client/assets/{chunk-IMKFNOWR-DJ_KSg28.js → chunk-IMKFNOWR-CcpsYCGR.js} +1 -1
  53. package/dist/client/assets/chunk-IMKFNOWR-CcpsYCGR.js.br +0 -0
  54. package/dist/client/assets/chunk-IMKFNOWR-CcpsYCGR.js.gz +0 -0
  55. package/dist/client/assets/{chunk-JWPE2WC7-G6gJR-qb.js → chunk-JWPE2WC7-DrVzbPfl.js} +1 -1
  56. package/dist/client/assets/{chunk-POPQ4Y6H-4nUthGI-.js → chunk-POPQ4Y6H-D2vQ6I_d.js} +1 -1
  57. package/dist/client/assets/{chunk-SVP7TREG-Bjz61A31.js → chunk-SVP7TREG-BK9PycPu.js} +1 -1
  58. package/dist/client/assets/chunk-SVP7TREG-BK9PycPu.js.br +0 -0
  59. package/dist/client/assets/chunk-SVP7TREG-BK9PycPu.js.gz +0 -0
  60. package/dist/client/assets/{chunk-TICWLB2K-DibS9hjO.js → chunk-TICWLB2K-LPhjhi7S.js} +1 -1
  61. package/dist/client/assets/chunk-TICWLB2K-LPhjhi7S.js.br +0 -0
  62. package/dist/client/assets/chunk-TICWLB2K-LPhjhi7S.js.gz +0 -0
  63. package/dist/client/assets/{chunk-XXDRQBXY-Pd9xo63D.js → chunk-XXDRQBXY-qujR76f5.js} +1 -1
  64. package/dist/client/assets/classDiagram-ZZMXUADV-BkraiclO.js +1 -0
  65. package/dist/client/assets/classDiagram-v2-VYDZK3BY-BkraiclO.js +1 -0
  66. package/dist/client/assets/{cose-bilkent-JH36ORCC-C9juqAQ3.js → cose-bilkent-JH36ORCC-BArSIiIO.js} +1 -1
  67. package/dist/client/assets/cose-bilkent-JH36ORCC-BArSIiIO.js.br +0 -0
  68. package/dist/client/assets/cose-bilkent-JH36ORCC-BArSIiIO.js.gz +0 -0
  69. package/dist/client/assets/{cynefin-OW5HDTMX-DVk5dNlQ.js → cynefin-OW5HDTMX-CCs1or7w.js} +1 -1
  70. package/dist/client/assets/cynefin-OW5HDTMX-CCs1or7w.js.br +0 -0
  71. package/dist/client/assets/{cynefin-OW5HDTMX-DVk5dNlQ.js.gz → cynefin-OW5HDTMX-CCs1or7w.js.gz} +0 -0
  72. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-CUy-CI0N.js → cynefinDiagram-5FMLGOSQ-CZtiCwpH.js} +1 -1
  73. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CZtiCwpH.js.br +0 -0
  74. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CZtiCwpH.js.gz +0 -0
  75. package/dist/client/assets/{dagre-GXQ25YYZ-BF9uZc8K.js → dagre-GXQ25YYZ-sxi6dz48.js} +1 -1
  76. package/dist/client/assets/dagre-GXQ25YYZ-sxi6dz48.js.br +0 -0
  77. package/dist/client/assets/dagre-GXQ25YYZ-sxi6dz48.js.gz +0 -0
  78. package/dist/client/assets/{diagram-S7CK7UJ4-CaYJASCw.js → diagram-S7CK7UJ4-CqA9RxCi.js} +1 -1
  79. package/dist/client/assets/diagram-S7CK7UJ4-CqA9RxCi.js.br +0 -0
  80. package/dist/client/assets/diagram-S7CK7UJ4-CqA9RxCi.js.gz +0 -0
  81. package/dist/client/assets/{diagram-UQ7AKVKN-0-M4q-QN.js → diagram-UQ7AKVKN-DI6HGWgF.js} +1 -1
  82. package/dist/client/assets/diagram-UQ7AKVKN-DI6HGWgF.js.br +0 -0
  83. package/dist/client/assets/diagram-UQ7AKVKN-DI6HGWgF.js.gz +0 -0
  84. package/dist/client/assets/{diagram-VSXAHHWV-4ggjBQOj.js → diagram-VSXAHHWV-CMZi8lNh.js} +1 -1
  85. package/dist/client/assets/diagram-VSXAHHWV-CMZi8lNh.js.br +0 -0
  86. package/dist/client/assets/diagram-VSXAHHWV-CMZi8lNh.js.gz +0 -0
  87. package/dist/client/assets/{diagram-VX7I27RA-awKrOIYn.js → diagram-VX7I27RA-C7C5Wauj.js} +1 -1
  88. package/dist/client/assets/diagram-VX7I27RA-C7C5Wauj.js.br +0 -0
  89. package/dist/client/assets/diagram-VX7I27RA-C7C5Wauj.js.gz +0 -0
  90. package/dist/client/assets/{diagram-Z3DM3KII-CvmtkYW3.js → diagram-Z3DM3KII-5gZWUza2.js} +1 -1
  91. package/dist/client/assets/diagram-Z3DM3KII-5gZWUza2.js.br +0 -0
  92. package/dist/client/assets/diagram-Z3DM3KII-5gZWUza2.js.gz +0 -0
  93. package/dist/client/assets/{ebnfDiagram-PWID7BFC-ZS9U0Fk-.js → ebnfDiagram-PWID7BFC-_UeIqZQ9.js} +1 -1
  94. package/dist/client/assets/ebnfDiagram-PWID7BFC-_UeIqZQ9.js.br +0 -0
  95. package/dist/client/assets/ebnfDiagram-PWID7BFC-_UeIqZQ9.js.gz +0 -0
  96. package/dist/client/assets/{erDiagram-RLTQ6QDP-CcWwxLbE.js → erDiagram-RLTQ6QDP-Xmw2qbA7.js} +1 -1
  97. package/dist/client/assets/erDiagram-RLTQ6QDP-Xmw2qbA7.js.br +0 -0
  98. package/dist/client/assets/erDiagram-RLTQ6QDP-Xmw2qbA7.js.gz +0 -0
  99. package/dist/client/assets/{flowDiagram-HODETNUW-BvYM0Nn3.js → flowDiagram-HODETNUW-KRYKHFDk.js} +1 -1
  100. package/dist/client/assets/flowDiagram-HODETNUW-KRYKHFDk.js.br +0 -0
  101. package/dist/client/assets/flowDiagram-HODETNUW-KRYKHFDk.js.gz +0 -0
  102. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-DEr4hj6W.js → ganttDiagram-EL5Y4UJY-UcoHnpCx.js} +1 -1
  103. package/dist/client/assets/ganttDiagram-EL5Y4UJY-UcoHnpCx.js.br +0 -0
  104. package/dist/client/assets/ganttDiagram-EL5Y4UJY-UcoHnpCx.js.gz +0 -0
  105. package/dist/client/assets/{gestureArbiter-CDxeAcBI.js → gestureArbiter-B6OZhQjV.js} +1 -1
  106. package/dist/client/assets/gestureArbiter-B6OZhQjV.js.br +0 -0
  107. package/dist/client/assets/gestureArbiter-B6OZhQjV.js.gz +0 -0
  108. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-DJXcqbTp.js → gitGraphDiagram-WWUBYQGX-Evwvg64n.js} +1 -1
  109. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Evwvg64n.js.br +0 -0
  110. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Evwvg64n.js.gz +0 -0
  111. package/dist/client/assets/{infoDiagram-27XIBGKW-u_tuWUg-.js → infoDiagram-27XIBGKW-CdTYa6sH.js} +1 -1
  112. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-BFYZSOqo.js → ishikawaDiagram-5VMMS53U-D1-1rWNL.js} +1 -1
  113. package/dist/client/assets/ishikawaDiagram-5VMMS53U-D1-1rWNL.js.br +0 -0
  114. package/dist/client/assets/ishikawaDiagram-5VMMS53U-D1-1rWNL.js.gz +0 -0
  115. package/dist/client/assets/{journeyDiagram-3NMN7TZE-BCCDGuPm.js → journeyDiagram-3NMN7TZE-DNF2Xeph.js} +1 -1
  116. package/dist/client/assets/journeyDiagram-3NMN7TZE-DNF2Xeph.js.br +0 -0
  117. package/dist/client/assets/journeyDiagram-3NMN7TZE-DNF2Xeph.js.gz +0 -0
  118. package/dist/client/assets/{kanban-definition-UXKFOSKX-BL414bhZ.js → kanban-definition-UXKFOSKX-nNy4MKl1.js} +1 -1
  119. package/dist/client/assets/kanban-definition-UXKFOSKX-nNy4MKl1.js.br +0 -0
  120. package/dist/client/assets/kanban-definition-UXKFOSKX-nNy4MKl1.js.gz +0 -0
  121. package/dist/client/assets/{layout-BLj6qqUe.js → layout-eOsGqyyy.js} +1 -1
  122. package/dist/client/assets/layout-eOsGqyyy.js.br +0 -0
  123. package/dist/client/assets/layout-eOsGqyyy.js.gz +0 -0
  124. package/dist/client/assets/{linear-9XUUJjvf.js → linear-BvPFVZ5r.js} +1 -1
  125. package/dist/client/assets/linear-BvPFVZ5r.js.br +0 -0
  126. package/dist/client/assets/linear-BvPFVZ5r.js.gz +0 -0
  127. package/dist/client/assets/{mermaid.core-BMjyQhe0.js → mermaid.core-xgi3W3HJ.js} +5 -5
  128. package/dist/client/assets/mermaid.core-xgi3W3HJ.js.br +0 -0
  129. package/dist/client/assets/mermaid.core-xgi3W3HJ.js.gz +0 -0
  130. package/dist/client/assets/{mindmap-definition-YA3MSWOX-B5hQdEJ0.js → mindmap-definition-YA3MSWOX-C0Y8K-f6.js} +1 -1
  131. package/dist/client/assets/mindmap-definition-YA3MSWOX-C0Y8K-f6.js.br +0 -0
  132. package/dist/client/assets/mindmap-definition-YA3MSWOX-C0Y8K-f6.js.gz +0 -0
  133. package/dist/client/assets/{passwordBootstrap-D7lxBxbp.js → passwordBootstrap-dH2p1UXM.js} +1 -1
  134. package/dist/client/assets/passwordBootstrap-dH2p1UXM.js.br +0 -0
  135. package/dist/client/assets/passwordBootstrap-dH2p1UXM.js.gz +0 -0
  136. package/dist/client/assets/{pegDiagram-XKGWAZYB-CJQClA-K.js → pegDiagram-XKGWAZYB-DDphzW5Y.js} +1 -1
  137. package/dist/client/assets/pegDiagram-XKGWAZYB-DDphzW5Y.js.br +0 -0
  138. package/dist/client/assets/pegDiagram-XKGWAZYB-DDphzW5Y.js.gz +0 -0
  139. package/dist/client/assets/{pieDiagram-E7YTZNPT-D2ARaSkf.js → pieDiagram-E7YTZNPT-GDu--HqE.js} +1 -1
  140. package/dist/client/assets/pieDiagram-E7YTZNPT-GDu--HqE.js.br +0 -0
  141. package/dist/client/assets/pieDiagram-E7YTZNPT-GDu--HqE.js.gz +0 -0
  142. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-B2Rs8gQh.js → quadrantDiagram-AXDQQJYC-NSIlEYZd.js} +1 -1
  143. package/dist/client/assets/quadrantDiagram-AXDQQJYC-NSIlEYZd.js.br +0 -0
  144. package/dist/client/assets/quadrantDiagram-AXDQQJYC-NSIlEYZd.js.gz +0 -0
  145. package/dist/client/assets/{railroadDiagram-O6MQD6OU-7zaEGVqP.js → railroadDiagram-O6MQD6OU-BMr8_470.js} +1 -1
  146. package/dist/client/assets/railroadDiagram-O6MQD6OU-BMr8_470.js.br +0 -0
  147. package/dist/client/assets/railroadDiagram-O6MQD6OU-BMr8_470.js.gz +0 -0
  148. package/dist/client/assets/{referenceLongPress-1MdQQqBu.js → referenceLongPress-5KOTIE_2.js} +1 -1
  149. package/dist/client/assets/referenceLongPress-5KOTIE_2.js.br +0 -0
  150. package/dist/client/assets/referenceLongPress-5KOTIE_2.js.gz +0 -0
  151. package/dist/client/assets/{requirementDiagram-BXWQKSXE-B7YLqxNi.js → requirementDiagram-BXWQKSXE-BYfx-BnY.js} +1 -1
  152. package/dist/client/assets/requirementDiagram-BXWQKSXE-BYfx-BnY.js.br +0 -0
  153. package/dist/client/assets/requirementDiagram-BXWQKSXE-BYfx-BnY.js.gz +0 -0
  154. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-BQqZ501N.js → sankeyDiagram-P5KCCOFB-Sjw1moBs.js} +1 -1
  155. package/dist/client/assets/sankeyDiagram-P5KCCOFB-Sjw1moBs.js.br +0 -0
  156. package/dist/client/assets/sankeyDiagram-P5KCCOFB-Sjw1moBs.js.gz +0 -0
  157. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-CI5zNczi.js → sequenceDiagram-WJ2MYXX4-BdB4bAuv.js} +1 -1
  158. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BdB4bAuv.js.br +0 -0
  159. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BdB4bAuv.js.gz +0 -0
  160. package/dist/client/assets/{sizeCapture-INFHLROL-_g6rD1KV.js → sizeCapture-INFHLROL-Bqjs5SmV.js} +1 -1
  161. package/dist/client/assets/sizeCapture-INFHLROL-Bqjs5SmV.js.br +0 -0
  162. package/dist/client/assets/sizeCapture-INFHLROL-Bqjs5SmV.js.gz +0 -0
  163. package/dist/client/assets/{sparkles-DZP-rTUQ.js → sparkles-BqYxpm2T.js} +1 -1
  164. package/dist/client/assets/{stateDiagram-D77RDMKH-Cu8lQyFr.js → stateDiagram-D77RDMKH-CeGiiS-A.js} +1 -1
  165. package/dist/client/assets/stateDiagram-D77RDMKH-CeGiiS-A.js.br +0 -0
  166. package/dist/client/assets/stateDiagram-D77RDMKH-CeGiiS-A.js.gz +0 -0
  167. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-DAcs8J97.js +1 -0
  168. package/dist/client/assets/{swimlanes-42K2YHIH-DyoG1kjH.js → swimlanes-42K2YHIH-CfKdzOcE.js} +1 -1
  169. package/dist/client/assets/swimlanes-42K2YHIH-CfKdzOcE.js.br +0 -0
  170. package/dist/client/assets/{swimlanes-42K2YHIH-DyoG1kjH.js.gz → swimlanes-42K2YHIH-CfKdzOcE.js.gz} +0 -0
  171. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-ByPh86Cc.js +8 -0
  172. package/dist/client/assets/{timeline-definition-24CTP7MA-MgVnEDIt.js → timeline-definition-24CTP7MA-BQHm94LP.js} +1 -1
  173. package/dist/client/assets/timeline-definition-24CTP7MA-BQHm94LP.js.br +0 -0
  174. package/dist/client/assets/timeline-definition-24CTP7MA-BQHm94LP.js.gz +0 -0
  175. package/dist/client/assets/{triangle-alert-6HTQse_h.js → triangle-alert-9JebA9Zi.js} +1 -1
  176. package/dist/client/assets/{vennDiagram-4TSXK5OY-DIA3-8fT.js → vennDiagram-4TSXK5OY-CiDKvpY7.js} +1 -1
  177. package/dist/client/assets/vennDiagram-4TSXK5OY-CiDKvpY7.js.br +0 -0
  178. package/dist/client/assets/vennDiagram-4TSXK5OY-CiDKvpY7.js.gz +0 -0
  179. package/dist/client/assets/{videoCompression-BiLlPFCU.js → videoCompression-BZCAJl_H.js} +1 -1
  180. package/dist/client/assets/videoCompression-BZCAJl_H.js.br +0 -0
  181. package/dist/client/assets/videoCompression-BZCAJl_H.js.gz +0 -0
  182. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-BrgRWH1G.js → wardleyDiagram-VM6X3IG4-DOUAhlES.js} +1 -1
  183. package/dist/client/assets/wardleyDiagram-VM6X3IG4-DOUAhlES.js.br +0 -0
  184. package/dist/client/assets/wardleyDiagram-VM6X3IG4-DOUAhlES.js.gz +0 -0
  185. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-DbVR2OUc.js → xychartDiagram-S5SC5T6Z-BV7ihxFK.js} +1 -1
  186. package/dist/client/assets/xychartDiagram-S5SC5T6Z-BV7ihxFK.js.br +0 -0
  187. package/dist/client/assets/xychartDiagram-S5SC5T6Z-BV7ihxFK.js.gz +0 -0
  188. package/dist/client/index.html +1 -1
  189. package/dist/client/index.html.br +0 -0
  190. package/dist/client/index.html.gz +0 -0
  191. package/dist/client/sw.js +1 -1
  192. package/dist/client/sw.js.br +0 -0
  193. package/dist/client/sw.js.gz +0 -0
  194. package/package.json +1 -1
  195. package/runtime-manifest.json +2 -2
  196. package/dist/client/assets/App-KjvxjYWp.js.br +0 -0
  197. package/dist/client/assets/App-KjvxjYWp.js.gz +0 -0
  198. package/dist/client/assets/ChangeWalkthroughPanel-D0dLmuqS.js.br +0 -0
  199. package/dist/client/assets/ChangeWalkthroughPanel-D0dLmuqS.js.gz +0 -0
  200. package/dist/client/assets/DagPlayground-BnxrVoa1.js.br +0 -0
  201. package/dist/client/assets/DagPlayground-BnxrVoa1.js.gz +0 -0
  202. package/dist/client/assets/DiffLab-CEJHH47s.js.br +0 -0
  203. package/dist/client/assets/DiffLab-CEJHH47s.js.gz +0 -0
  204. package/dist/client/assets/DiffReview-B4MgHev_.js.br +0 -0
  205. package/dist/client/assets/DiffReview-B4MgHev_.js.gz +0 -0
  206. package/dist/client/assets/DiffReviewLab-CwxhCK9D.js.br +0 -0
  207. package/dist/client/assets/DiffReviewLab-CwxhCK9D.js.gz +0 -0
  208. package/dist/client/assets/DiffViewer-B5Fj1S7h.js.br +0 -0
  209. package/dist/client/assets/DiffViewer-B5Fj1S7h.js.gz +0 -0
  210. package/dist/client/assets/ModelPreview-BgzcGTC4.js.br +0 -0
  211. package/dist/client/assets/ModelPreview-BgzcGTC4.js.gz +0 -0
  212. package/dist/client/assets/RightSidebar-BZfXFW1d.js.br +0 -0
  213. package/dist/client/assets/RightSidebar-BZfXFW1d.js.gz +0 -0
  214. package/dist/client/assets/abnfDiagram-VCTEODGH-DrqWxUpF.js.br +0 -0
  215. package/dist/client/assets/abnfDiagram-VCTEODGH-DrqWxUpF.js.gz +0 -0
  216. package/dist/client/assets/app-Cx1S0NEn.js.br +0 -0
  217. package/dist/client/assets/app-Cx1S0NEn.js.gz +0 -0
  218. package/dist/client/assets/arc-D-c2BO48.js.br +0 -0
  219. package/dist/client/assets/arc-D-c2BO48.js.gz +0 -0
  220. package/dist/client/assets/architectureDiagram-5GKGNRK7-Dw3s7taT.js.br +0 -0
  221. package/dist/client/assets/architectureDiagram-5GKGNRK7-Dw3s7taT.js.gz +0 -0
  222. package/dist/client/assets/blockDiagram-I7D4REHJ-BJb1cd3h.js.br +0 -0
  223. package/dist/client/assets/blockDiagram-I7D4REHJ-BJb1cd3h.js.gz +0 -0
  224. package/dist/client/assets/c4Diagram-7LVT6UL2-BeS1pCi3.js.br +0 -0
  225. package/dist/client/assets/c4Diagram-7LVT6UL2-BeS1pCi3.js.gz +0 -0
  226. package/dist/client/assets/channel-DhhM4ZRP.js +0 -1
  227. package/dist/client/assets/chunk-F27PBJKO-DuSEgqou.js.br +0 -0
  228. package/dist/client/assets/chunk-F27PBJKO-DuSEgqou.js.gz +0 -0
  229. package/dist/client/assets/chunk-IMKFNOWR-DJ_KSg28.js.br +0 -0
  230. package/dist/client/assets/chunk-IMKFNOWR-DJ_KSg28.js.gz +0 -0
  231. package/dist/client/assets/chunk-SVP7TREG-Bjz61A31.js.br +0 -0
  232. package/dist/client/assets/chunk-SVP7TREG-Bjz61A31.js.gz +0 -0
  233. package/dist/client/assets/chunk-TICWLB2K-DibS9hjO.js.br +0 -0
  234. package/dist/client/assets/chunk-TICWLB2K-DibS9hjO.js.gz +0 -0
  235. package/dist/client/assets/classDiagram-ZZMXUADV-CNhLKXhv.js +0 -1
  236. package/dist/client/assets/classDiagram-v2-VYDZK3BY-CNhLKXhv.js +0 -1
  237. package/dist/client/assets/cose-bilkent-JH36ORCC-C9juqAQ3.js.br +0 -0
  238. package/dist/client/assets/cose-bilkent-JH36ORCC-C9juqAQ3.js.gz +0 -0
  239. package/dist/client/assets/cynefin-OW5HDTMX-DVk5dNlQ.js.br +0 -0
  240. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CUy-CI0N.js.br +0 -0
  241. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CUy-CI0N.js.gz +0 -0
  242. package/dist/client/assets/dagre-GXQ25YYZ-BF9uZc8K.js.br +0 -0
  243. package/dist/client/assets/dagre-GXQ25YYZ-BF9uZc8K.js.gz +0 -0
  244. package/dist/client/assets/diagram-S7CK7UJ4-CaYJASCw.js.br +0 -0
  245. package/dist/client/assets/diagram-S7CK7UJ4-CaYJASCw.js.gz +0 -0
  246. package/dist/client/assets/diagram-UQ7AKVKN-0-M4q-QN.js.br +0 -0
  247. package/dist/client/assets/diagram-UQ7AKVKN-0-M4q-QN.js.gz +0 -0
  248. package/dist/client/assets/diagram-VSXAHHWV-4ggjBQOj.js.br +0 -0
  249. package/dist/client/assets/diagram-VSXAHHWV-4ggjBQOj.js.gz +0 -0
  250. package/dist/client/assets/diagram-VX7I27RA-awKrOIYn.js.br +0 -0
  251. package/dist/client/assets/diagram-VX7I27RA-awKrOIYn.js.gz +0 -0
  252. package/dist/client/assets/diagram-Z3DM3KII-CvmtkYW3.js.br +0 -0
  253. package/dist/client/assets/diagram-Z3DM3KII-CvmtkYW3.js.gz +0 -0
  254. package/dist/client/assets/ebnfDiagram-PWID7BFC-ZS9U0Fk-.js.br +0 -0
  255. package/dist/client/assets/ebnfDiagram-PWID7BFC-ZS9U0Fk-.js.gz +0 -0
  256. package/dist/client/assets/erDiagram-RLTQ6QDP-CcWwxLbE.js.br +0 -0
  257. package/dist/client/assets/erDiagram-RLTQ6QDP-CcWwxLbE.js.gz +0 -0
  258. package/dist/client/assets/flowDiagram-HODETNUW-BvYM0Nn3.js.br +0 -0
  259. package/dist/client/assets/flowDiagram-HODETNUW-BvYM0Nn3.js.gz +0 -0
  260. package/dist/client/assets/ganttDiagram-EL5Y4UJY-DEr4hj6W.js.br +0 -0
  261. package/dist/client/assets/ganttDiagram-EL5Y4UJY-DEr4hj6W.js.gz +0 -0
  262. package/dist/client/assets/gestureArbiter-CDxeAcBI.js.br +0 -0
  263. package/dist/client/assets/gestureArbiter-CDxeAcBI.js.gz +0 -0
  264. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DJXcqbTp.js.br +0 -0
  265. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DJXcqbTp.js.gz +0 -0
  266. package/dist/client/assets/ishikawaDiagram-5VMMS53U-BFYZSOqo.js.br +0 -0
  267. package/dist/client/assets/ishikawaDiagram-5VMMS53U-BFYZSOqo.js.gz +0 -0
  268. package/dist/client/assets/journeyDiagram-3NMN7TZE-BCCDGuPm.js.br +0 -0
  269. package/dist/client/assets/journeyDiagram-3NMN7TZE-BCCDGuPm.js.gz +0 -0
  270. package/dist/client/assets/kanban-definition-UXKFOSKX-BL414bhZ.js.br +0 -0
  271. package/dist/client/assets/kanban-definition-UXKFOSKX-BL414bhZ.js.gz +0 -0
  272. package/dist/client/assets/layout-BLj6qqUe.js.br +0 -0
  273. package/dist/client/assets/layout-BLj6qqUe.js.gz +0 -0
  274. package/dist/client/assets/linear-9XUUJjvf.js.br +0 -0
  275. package/dist/client/assets/linear-9XUUJjvf.js.gz +0 -0
  276. package/dist/client/assets/mermaid.core-BMjyQhe0.js.br +0 -0
  277. package/dist/client/assets/mermaid.core-BMjyQhe0.js.gz +0 -0
  278. package/dist/client/assets/mindmap-definition-YA3MSWOX-B5hQdEJ0.js.br +0 -0
  279. package/dist/client/assets/mindmap-definition-YA3MSWOX-B5hQdEJ0.js.gz +0 -0
  280. package/dist/client/assets/passwordBootstrap-D7lxBxbp.js.br +0 -0
  281. package/dist/client/assets/passwordBootstrap-D7lxBxbp.js.gz +0 -0
  282. package/dist/client/assets/pegDiagram-XKGWAZYB-CJQClA-K.js.br +0 -0
  283. package/dist/client/assets/pegDiagram-XKGWAZYB-CJQClA-K.js.gz +0 -0
  284. package/dist/client/assets/pieDiagram-E7YTZNPT-D2ARaSkf.js.br +0 -0
  285. package/dist/client/assets/pieDiagram-E7YTZNPT-D2ARaSkf.js.gz +0 -0
  286. package/dist/client/assets/quadrantDiagram-AXDQQJYC-B2Rs8gQh.js.br +0 -0
  287. package/dist/client/assets/quadrantDiagram-AXDQQJYC-B2Rs8gQh.js.gz +0 -0
  288. package/dist/client/assets/railroadDiagram-O6MQD6OU-7zaEGVqP.js.br +0 -0
  289. package/dist/client/assets/railroadDiagram-O6MQD6OU-7zaEGVqP.js.gz +0 -0
  290. package/dist/client/assets/referenceLongPress-1MdQQqBu.js.br +0 -0
  291. package/dist/client/assets/referenceLongPress-1MdQQqBu.js.gz +0 -0
  292. package/dist/client/assets/requirementDiagram-BXWQKSXE-B7YLqxNi.js.br +0 -0
  293. package/dist/client/assets/requirementDiagram-BXWQKSXE-B7YLqxNi.js.gz +0 -0
  294. package/dist/client/assets/sankeyDiagram-P5KCCOFB-BQqZ501N.js.br +0 -0
  295. package/dist/client/assets/sankeyDiagram-P5KCCOFB-BQqZ501N.js.gz +0 -0
  296. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-CI5zNczi.js.br +0 -0
  297. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-CI5zNczi.js.gz +0 -0
  298. package/dist/client/assets/sizeCapture-INFHLROL-_g6rD1KV.js.br +0 -0
  299. package/dist/client/assets/sizeCapture-INFHLROL-_g6rD1KV.js.gz +0 -0
  300. package/dist/client/assets/stateDiagram-D77RDMKH-Cu8lQyFr.js.br +0 -0
  301. package/dist/client/assets/stateDiagram-D77RDMKH-Cu8lQyFr.js.gz +0 -0
  302. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CieARAQ3.js +0 -1
  303. package/dist/client/assets/swimlanes-42K2YHIH-DyoG1kjH.js.br +0 -0
  304. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-D9qBVMDu.js +0 -8
  305. package/dist/client/assets/timeline-definition-24CTP7MA-MgVnEDIt.js.br +0 -0
  306. package/dist/client/assets/timeline-definition-24CTP7MA-MgVnEDIt.js.gz +0 -0
  307. package/dist/client/assets/vennDiagram-4TSXK5OY-DIA3-8fT.js.br +0 -0
  308. package/dist/client/assets/vennDiagram-4TSXK5OY-DIA3-8fT.js.gz +0 -0
  309. package/dist/client/assets/videoCompression-BiLlPFCU.js.br +0 -0
  310. package/dist/client/assets/videoCompression-BiLlPFCU.js.gz +0 -0
  311. package/dist/client/assets/wardleyDiagram-VM6X3IG4-BrgRWH1G.js.br +0 -0
  312. package/dist/client/assets/wardleyDiagram-VM6X3IG4-BrgRWH1G.js.gz +0 -0
  313. package/dist/client/assets/xychartDiagram-S5SC5T6Z-DbVR2OUc.js.br +0 -0
  314. package/dist/client/assets/xychartDiagram-S5SC5T6Z-DbVR2OUc.js.gz +0 -0
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/passwordBootstrap-D7lxBxbp.js","assets/react-XDCjal2T.js","assets/dnd-BCFAPC0L.js","assets/terminal-C7X98Amf.js","assets/App-KjvxjYWp.js","assets/gestureArbiter-CDxeAcBI.js","assets/gestureArbiter-C2J0D0kV.css","assets/triangle-alert-6HTQse_h.js","assets/referenceLongPress-1MdQQqBu.js","assets/DagPlayground-BnxrVoa1.js","assets/ChangeWalkthroughPanel-D0dLmuqS.js","assets/sparkles-DZP-rTUQ.js","assets/DiffLab-CEJHH47s.js","assets/DiffViewer-B5Fj1S7h.js","assets/DiffViewer-T3uj2-aP.css","assets/DiffReviewLab-CwxhCK9D.js","assets/DiffReview-B4MgHev_.js"])))=>i.map(i=>d[i]);
2
- import{r as $c,a as jm,g as Df}from"./react-XDCjal2T.js";import{b as _,R as Xe,r as qc}from"./dnd-BCFAPC0L.js";import{L as Hm,l as Um}from"./terminal-C7X98Amf.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(o){if(o.ep)return;o.ep=!0;const s=n(o);fetch(o.href,s)}})();const $m="modulepreload",qm=function(t){return"/"+t},ed={},en=function(e,n,r){let o=Promise.resolve();if(n&&n.length>0){let c=function(l){return Promise.all(l.map(d=>Promise.resolve(d).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=i?.nonce||i?.getAttribute("nonce");o=c(n.map(l=>{if(l=qm(l),l in ed)return;ed[l]=!0;const d=l.endsWith(".css"),u=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const f=document.createElement("link");if(f.rel=d?"stylesheet":$m,d||(f.as="script"),f.crossOrigin="",f.href=l,a&&f.setAttribute("nonce",a),document.head.appendChild(f),d)return new Promise((h,g)=>{f.addEventListener("load",h),f.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${l}`)))})}))}function s(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return o.then(i=>{for(const a of i||[])a.status==="rejected"&&s(a.reason);return e().catch(s)})};var Ri={exports:{}},Cr={};var td;function Km(){if(td)return Cr;td=1;var t=$c(),e=Symbol.for("react.element"),n=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,o=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function i(a,c,l){var d,u={},f=null,h=null;l!==void 0&&(f=""+l),c.key!==void 0&&(f=""+c.key),c.ref!==void 0&&(h=c.ref);for(d in c)r.call(c,d)&&!s.hasOwnProperty(d)&&(u[d]=c[d]);if(a&&a.defaultProps)for(d in c=a.defaultProps,c)u[d]===void 0&&(u[d]=c[d]);return{$$typeof:e,type:a,key:f,ref:h,props:u,_owner:o.current}}return Cr.Fragment=n,Cr.jsx=i,Cr.jsxs=i,Cr}var nd;function zm(){return nd||(nd=1,Ri.exports=Km()),Ri.exports}var p=zm();const mn="termdock-secure-target-v1",Kc="termdock-secure-entry-v1",Wm=new Set([mn,Kc,"termdock-color-theme","termdock:locale","termdock.federation.connections.v1"]),To=typeof Storage>"u"?void 0:Storage.prototype.getItem,Ti=typeof Storage>"u"?void 0:Storage.prototype.setItem,rd="termdock-secure-legacy-owner",Gs=typeof window<"u"&&window.parent!==window&&location.pathname==="/workspace.html";function Gm(){if(typeof window>"u")return null;try{if(Gs){const e=new URLSearchParams(location.search).get("termdock-workspace"),n=JSON.parse(localStorage.getItem("termdock.federation.connections.v1")||"[]"),r=Array.isArray(n)?n.find(o=>o?.targetPeerId===e):void 0;return r&&typeof r.url=="string"&&typeof r.targetPeerId=="string"?{...r,serviceName:r.label||r.serviceName}:null}const t=JSON.parse(sessionStorage.getItem(mn)??localStorage.getItem(mn)??"null");return t&&typeof t.url=="string"&&typeof t.targetPeerId=="string"?t:null}catch{return null}}let Vs=Gm();const Vn=Vs?.targetPeerId??"unpaired";function ao(){return Vs}function Ff(t){if(Vs=t,Gs)return;const e=JSON.stringify(t);sessionStorage.setItem(mn,e),localStorage.setItem(mn,e)}function Vm(){Vs=null,!Gs&&(localStorage.removeItem(mn),sessionStorage.removeItem(mn),localStorage.removeItem(Kc))}function Zr(t,e=Vn){return Wm.has(t)||t.startsWith("termdock-secure-")?t:`termdock-service:${e}:${t}`}function Xm(t){if(!(!To||!Ti))try{if(To.call(localStorage,rd))return;Ti.call(localStorage,rd,t);for(const n of[localStorage,sessionStorage]){const r=Array.from({length:n.length},(o,s)=>n.key(s)).filter(o=>!!o);for(const o of r){if(o.startsWith("termdock-service:")||Zr(o,t)===o)continue;const s=Zr(o,t),i=To.call(n,o);i!==null&&To.call(n,s)===null&&Ti.call(n,s,i)}}}catch{}}let od=!1;function Ym(){if(od||typeof Storage>"u")return;od=!0;const t=Storage.prototype.getItem,e=Storage.prototype.setItem,n=Storage.prototype.removeItem;Storage.prototype.getItem=function(r){return t.call(this,Zr(String(r)))},Storage.prototype.setItem=function(r,o){e.call(this,Zr(String(r)),o)},Storage.prototype.removeItem=function(r){n.call(this,Zr(String(r)))}}Ym();const Xs="termdock.federation.connections.v1",Ma="termdock:services-changed",zc="termdock-secure-removed-services",ps=t=>[t.id,t.targetPeerId,t.serviceOrigin||t.url].filter(e=>!!e);function Wc(){try{const t=JSON.parse(localStorage.getItem(zc)||"[]");return Array.isArray(t)?t.filter(e=>typeof e=="string"):[]}catch{return[]}}function Me(t){const e=t.trim();if(!e)throw new Error("请输入服务地址。");const n=new URL(/^[a-z][a-z\d+.-]*:\/\//i.test(e)?e:`https://${e}`);n.protocol==="wss:"&&(n.protocol="https:"),n.protocol==="ws:"&&(n.protocol="http:");const r=["localhost","127.0.0.1","[::1]"].includes(n.hostname);if(!["https:","http:"].includes(n.protocol)||n.protocol==="http:"&&!r)throw new Error("请使用 HTTPS 服务地址。");if(n.username||n.password||n.search||n.hash||!["/","/api/federation/secure"].includes(n.pathname))throw new Error("请输入服务首页地址,不要包含账号或额外参数。");return n.origin}function Ys(t){if(!t||typeof t!="object")return;const e=t;if(typeof e.url=="string")try{const n=Me(e.url),r=typeof e.targetPeerId=="string"&&e.targetPeerId?e.targetPeerId:void 0,o=(typeof e.label=="string"?e.label:typeof e.serviceName=="string"?e.serviceName:"").trim().slice(0,120)||new URL(n).host;return{id:typeof e.id=="string"&&e.id?e.id:r||n,url:n,label:o,...r?{targetPeerId:r}:{},...typeof e.serviceOrigin=="string"?{serviceOrigin:Me(e.serviceOrigin)}:{},...typeof e.entryServiceId=="string"&&e.entryServiceId?{entryServiceId:e.entryServiceId}:{},...Array.isArray(e.routes)?{routes:e.routes.slice(0,4).flatMap(s=>{try{return s&&typeof s.targetPeerId=="string"&&s.targetPeerId?[{url:Me(s.url),targetPeerId:s.targetPeerId}]:[]}catch{return[]}})}:{}}}catch{return}}function kt(t,e){return t.targetPeerId&&e.targetPeerId?t.targetPeerId===e.targetPeerId:(t.serviceOrigin||t.url)===(e.serviceOrigin||e.url)}function Mf(t){const e=[];for(const n of t){const r=e.findIndex(o=>kt(o,n));r<0?e.push(n):e[r]={...e[r],...n,id:e[r].id}}return e}function bo(){return typeof window>"u"?void 0:window.termdockDesktop}function wn(){try{const t=JSON.parse(localStorage.getItem(Xs)||"[]");return Array.isArray(t)?Mf(t.map(Ys).filter(e=>!!e)):[]}catch{return[]}}function jf(t){localStorage.setItem(Xs,JSON.stringify(t.map(e=>({...e,serviceName:e.label})))),window.dispatchEvent(new Event(Ma))}let Ir;async function We(){const t=bo();if(!t?.serviceConnections||!t.saveServiceConnection)return wn();if(Ir)return Ir;Ir=(async()=>{let e=await t.serviceConnections();const n=wn();for(const r of n)e.some(o=>kt(o,r))||(e=await(t.importServiceConnection||t.saveServiceConnection)(r));return n.length&&localStorage.removeItem(Xs),e})();try{return await Ir}finally{Ir=void 0}}async function Nt(t){const e=Ys(t);if(!e)throw new Error("服务地址无效。");const n=bo();if(n?.saveServiceConnection)return n.saveServiceConnection(e);const r=wn(),o=r.find(a=>a.id===e.id||kt(a,e)),s=new Set([...ps(e),...o?ps(o):[]]);localStorage.setItem(zc,JSON.stringify(Wc().filter(a=>!s.has(a))));const i=Mf([...r.filter(a=>a!==o),{...o,...e,id:o?.id||e.id}]);return jf(i),i}async function Zm(t){const e=Ys(t);if(!e)throw new Error("服务地址无效。");const n=bo();if(n?.importServiceConnection)return n.importServiceConnection(e);if(n?.serviceConnections){const r=await n.serviceConnections();return r.some(o=>kt(o,e))?Nt(e):r}return ps(e).some(r=>Wc().includes(r))?wn():Nt(e)}async function Jm(t){const e=bo();if(e?.removeServiceConnection)return e.removeServiceConnection(t);const n=wn(),r=n.find(s=>s.id===t);r&&localStorage.setItem(zc,JSON.stringify([...new Set([...Wc(),...ps(r)])].slice(-768)));const o=n.filter(s=>s.id!==t);return jf(o),o}function Zs(t){const e=r=>{(r.key===Xs||r.key===null)&&t()};window.addEventListener(Ma,t),window.addEventListener("storage",e);const n=bo()?.onServiceConnections?.(t);return()=>{window.removeEventListener(Ma,t),window.removeEventListener("storage",e),n?.()}}class Qm extends Error{static name="UnexpectedPeerError";constructor(e="Unexpected Peer"){super(e),this.name="UnexpectedPeerError"}}let ew=class extends Error{static name="InvalidCryptoExchangeError";constructor(e="Invalid crypto exchange"){super(e),this.name="InvalidCryptoExchangeError"}},lt=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}};class Hf extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}}class Uf extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}}class tw extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}}class nw extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}}class Js extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}}const $f=Symbol.for("@libp2p/peer-id");function rw(t){return typeof t?.handleEvent=="function"}function ow(t){return t===!0||t===!1}function sw(t){return ow(t)?t:t?.capture??!1}function ja(t){const e={capture:sw(t),once:!!t?.once};return t?.passive!=null&&(e.passive=t?.passive),t?.signal!=null&&(e.signal=t?.signal),e}function sd(t,e){return ja(t).capture===ja(e).capture}class iw extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){const n=this.#e.get(e);return n==null?0:n.length}addEventListener(e,n,r){const o=ja(r);if(o?.signal?.aborted===!0)return;const s=l=>{o.once&&this.removeEventListener(e,n,o),rw(n)?n.handleEvent(l):n(l)};let i=this.#e.get(e);if(i==null&&(i=[],this.#e.set(e,i)),i.some(l=>l.callback!==n?!1:sd(l.options,o)))return;super.addEventListener(e,s,o);const c=()=>{this.removeEventListener(e,n,o)};o.signal?.addEventListener("abort",c),i.push({callback:n,wrapper:s,options:o,onAbort:c})}removeEventListener(e,n,r){const o=this.#e.get(e);if(o==null){super.removeEventListener(e,n??null,r);return}this.#e.set(e,o.filter(s=>s.callback===n&&sd(s.options,r)?(super.removeEventListener(e,s.wrapper,r),s.options?.signal?.removeEventListener("abort",s.onAbort),!1):!0))}safeDispatchEvent(e,n={}){return this.dispatchEvent(new CustomEvent(e,n))}}const aw=Symbol.for("@libp2p/service-capabilities");function cw(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let n=0;n<t.byteLength;n++)if(t[n]!==e[n])return!1;return!0}function Qs(t){if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")}function lw(t){return new TextEncoder().encode(t)}function dw(t){return new TextDecoder().decode(t)}function uw(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var n=new Uint8Array(256),r=0;r<n.length;r++)n[r]=255;for(var o=0;o<t.length;o++){var s=t.charAt(o),i=s.charCodeAt(0);if(n[i]!==255)throw new TypeError(s+" is ambiguous");n[i]=o}var a=t.length,c=t.charAt(0),l=Math.log(a)/Math.log(256),d=Math.log(256)/Math.log(a);function u(g){if(g instanceof Uint8Array||(ArrayBuffer.isView(g)?g=new Uint8Array(g.buffer,g.byteOffset,g.byteLength):Array.isArray(g)&&(g=Uint8Array.from(g))),!(g instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(g.length===0)return"";for(var m=0,b=0,w=0,I=g.length;w!==I&&g[w]===0;)w++,m++;for(var y=(I-w)*d+1>>>0,k=new Uint8Array(y);w!==I;){for(var N=g[w],x=0,T=y-1;(N!==0||x<b)&&T!==-1;T--,x++)N+=256*k[T]>>>0,k[T]=N%a>>>0,N=N/a>>>0;if(N!==0)throw new Error("Non-zero carry");b=x,w++}for(var S=y-b;S!==y&&k[S]===0;)S++;for(var v=c.repeat(m);S<y;++S)v+=t.charAt(k[S]);return v}function f(g){if(typeof g!="string")throw new TypeError("Expected String");if(g.length===0)return new Uint8Array;var m=0;if(g[m]!==" "){for(var b=0,w=0;g[m]===c;)b++,m++;for(var I=(g.length-m)*l+1>>>0,y=new Uint8Array(I);g[m];){var k=n[g.charCodeAt(m)];if(k===255)return;for(var N=0,x=I-1;(k!==0||N<w)&&x!==-1;x--,N++)k+=a*y[x]>>>0,y[x]=k%256>>>0,k=k/256>>>0;if(k!==0)throw new Error("Non-zero carry");w=N,m++}if(g[m]!==" "){for(var T=I-w;T!==I&&y[T]===0;)T++;for(var S=new Uint8Array(b+(I-T)),v=b;T!==I;)S[v++]=y[T++];return S}}}function h(g){var m=f(g);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:h}}var fw=uw,hw=fw;class pw{name;prefix;baseEncode;constructor(e,n,r){this.name=e,this.prefix=n,this.baseEncode=r}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class gw{name;prefix;baseDecode;prefixCodePoint;constructor(e,n,r){this.name=e,this.prefix=n;const o=n.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=r}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return qf(this,e)}}class mw{decoders;constructor(e){this.decoders=e}or(e){return qf(this,e)}decode(e){const n=e[0],r=this.decoders[n];if(r!=null)return r.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}function qf(t,e){return new mw({...t.decoders??{[t.prefix]:t},...e.decoders??{[e.prefix]:e}})}class ww{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,n,r,o){this.name=e,this.prefix=n,this.baseEncode=r,this.baseDecode=o,this.encoder=new pw(e,n,r),this.decoder=new gw(e,n,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}function ei({name:t,prefix:e,encode:n,decode:r}){return new ww(t,e,n,r)}function vo({name:t,prefix:e,alphabet:n}){const{encode:r,decode:o}=hw(n,t);return ei({prefix:e,name:t,encode:r,decode:s=>Qs(o(s))})}function yw(t,e,n,r){let o=t.length;for(;t[o-1]==="=";)--o;const s=new Uint8Array(o*n/8|0);let i=0,a=0,c=0;for(let l=0;l<o;++l){const d=e[t[l]];if(d===void 0)throw new SyntaxError(`Non-${r} character`);a=a<<n|d,i+=n,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=n||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function bw(t,e,n){const r=e[e.length-1]==="=",o=(1<<n)-1;let s="",i=0,a=0;for(let c=0;c<t.length;++c)for(a=a<<8|t[c],i+=8;i>n;)i-=n,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<n-i]),r)for(;(s.length*n&7)!==0;)s+="=";return s}function vw(t){const e={};for(let n=0;n<t.length;++n)e[t[n]]=n;return e}function Ne({name:t,prefix:e,bitsPerChar:n,alphabet:r}){const o=vw(r);return ei({prefix:e,name:t,encode(s){return bw(s,r,n)},decode(s){return yw(s,o,n,t)}})}const je=vo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Sw=vo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"}),xw=Object.freeze(Object.defineProperty({__proto__:null,base58btc:je,base58flickr:Sw},Symbol.toStringTag,{value:"Module"})),Jr=Ne({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Ew=Ne({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Aw=Ne({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),kw=Ne({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Cw=Ne({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Iw=Ne({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Rw=Ne({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Tw=Ne({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Pw=Ne({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5}),Nw=Object.freeze(Object.defineProperty({__proto__:null,base32:Jr,base32hex:Cw,base32hexpad:Rw,base32hexpadupper:Tw,base32hexupper:Iw,base32pad:Aw,base32padupper:kw,base32upper:Ew,base32z:Pw},Symbol.toStringTag,{value:"Module"})),Qo=vo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Lw=vo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}),Bw=Object.freeze(Object.defineProperty({__proto__:null,base36:Qo,base36upper:Lw},Symbol.toStringTag,{value:"Module"}));var _w=Kf,id=128,Ow=-128,Dw=Math.pow(2,31);function Kf(t,e,n){e=e||[],n=n||0;for(var r=n;t>=Dw;)e[n++]=t&255|id,t/=128;for(;t&Ow;)e[n++]=t&255|id,t>>>=7;return e[n]=t|0,Kf.bytes=n-r+1,e}var Fw=Ha,Mw=128,ad=127;function Ha(t,r){var n=0,r=r||0,o=0,s=r,i,a=t.length;do{if(s>=a)throw Ha.bytes=0,new RangeError("Could not decode varint");i=t[s++],n+=o<28?(i&ad)<<o:(i&ad)*Math.pow(2,o),o+=7}while(i>=Mw);return Ha.bytes=s-r,n}var jw=Math.pow(2,7),Hw=Math.pow(2,14),Uw=Math.pow(2,21),$w=Math.pow(2,28),qw=Math.pow(2,35),Kw=Math.pow(2,42),zw=Math.pow(2,49),Ww=Math.pow(2,56),Gw=Math.pow(2,63),Vw=function(t){return t<jw?1:t<Hw?2:t<Uw?3:t<$w?4:t<qw?5:t<Kw?6:t<zw?7:t<Ww?8:t<Gw?9:10},Xw={encode:_w,decode:Fw,encodingLength:Vw},gs=Xw;function Ua(t,e=0){return[gs.decode(t,e),gs.decode.bytes]}function ms(t,e,n=0){return gs.encode(t,e,n),e}function ws(t){return gs.encodingLength(t)}function So(t,e){const n=e.byteLength,r=ws(t),o=r+ws(n),s=new Uint8Array(o+n);return ms(t,s,0),ms(n,s,r),s.set(e,o),new Gc(t,n,e,s)}function zf(t){const e=Qs(t),[n,r]=Ua(e),[o,s]=Ua(e.subarray(r)),i=e.subarray(r+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Gc(n,o,i,e)}function Yw(t,e){if(t===e)return!0;{const n=e;return t.code===n.code&&t.size===n.size&&n.bytes instanceof Uint8Array&&cw(t.bytes,n.bytes)}}class Gc{code;size;digest;bytes;constructor(e,n,r,o){this.code=e,this.size=n,this.digest=r,this.bytes=o}}function cd(t,e){const{bytes:n,version:r}=t;return r===0?Jw(n,$a(t),e??je.encoder):Qw(n,$a(t),e??Jr.encoder)}const ld=new WeakMap;function $a(t){const e=ld.get(t);if(e==null){const n=new Map;return ld.set(t,n),n}return e}class ue{code;version;multihash;bytes;"/";constructor(e,n,r,o){this.code=n,this.version=e,this.multihash=r,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{const{code:e,multihash:n}=this;if(e!==Rr)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(n.code!==ey)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return ue.createV0(n)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{const{code:e,digest:n}=this.multihash,r=So(e,n);return ue.createV1(this.code,r)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return ue.equals(this,e)}static equals(e,n){const r=n;return r!=null&&e.code===r.code&&e.version===r.version&&Yw(e.multihash,r.multihash)}toString(e){return cd(this,e)}toJSON(){return{"/":cd(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;const n=e;if(n instanceof ue)return n;if(n["/"]!=null&&n["/"]===n.bytes||n.asCID===n){const{version:r,code:o,multihash:s,bytes:i}=n;return new ue(r,o,s,i??dd(r,o,s.bytes))}else if(n[ty]===!0){const{version:r,multihash:o,code:s}=n,i=zf(o);return ue.create(r,s,i)}else return null}static create(e,n,r){if(typeof n!="number")throw new Error("String codecs are no longer supported");if(!(r.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(n!==Rr)throw new Error(`Version 0 CID must use dag-pb (code: ${Rr}) block encoding`);return new ue(e,n,r,r.bytes)}case 1:{const o=dd(e,n,r.bytes);return new ue(e,n,r,o)}default:throw new Error("Invalid version")}}static createV0(e){return ue.create(0,Rr,e)}static createV1(e,n){return ue.create(1,e,n)}static decode(e){const[n,r]=ue.decodeFirst(e);if(r.length!==0)throw new Error("Incorrect length");return n}static decodeFirst(e){const n=ue.inspectBytes(e),r=n.size-n.multihashSize,o=Qs(e.subarray(r,r+n.multihashSize));if(o.byteLength!==n.multihashSize)throw new Error("Incorrect length");const s=o.subarray(n.multihashSize-n.digestSize),i=new Gc(n.multihashCode,n.digestSize,s,o);return[n.version===0?ue.createV0(i):ue.createV1(n.codec,i),e.subarray(n.size)]}static inspectBytes(e){let n=0;const r=()=>{const[u,f]=Ua(e.subarray(n));return n+=f,u};let o=r(),s=Rr;if(o===18?(o=0,n=0):s=r(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);const i=n,a=r(),c=r(),l=n+c,d=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:d,size:l}}static parse(e,n){const[r,o]=Zw(e,n),s=ue.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return $a(s).set(r,e),s}}function Zw(t,e){switch(t[0]){case"Q":{const n=e??je;return[je.prefix,n.decode(`${je.prefix}${t}`)]}case je.prefix:{const n=e??je;return[je.prefix,n.decode(t)]}case Jr.prefix:{const n=e??Jr;return[Jr.prefix,n.decode(t)]}case Qo.prefix:{const n=e??Qo;return[Qo.prefix,n.decode(t)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[t[0],e.decode(t)]}}}function Jw(t,e,n){const{prefix:r}=n;if(r!==je.prefix)throw Error(`Cannot string encode V0 in ${n.name} encoding`);const o=e.get(r);if(o==null){const s=n.encode(t).slice(1);return e.set(r,s),s}else return o}function Qw(t,e,n){const{prefix:r}=n,o=e.get(r);if(o==null){const s=n.encode(t);return e.set(r,s),s}else return o}const Rr=112,ey=18;function dd(t,e,n){const r=ws(t),o=r+ws(e),s=new Uint8Array(o+n.byteLength);return ms(t,s,0),ms(e,s,r),s.set(n,o),s}const ty=Symbol.for("@ipld/js-cid/CID"),Wf=0,ny="identity",Gf=Qs;function ry(t,e){if(e?.truncate!=null&&e.truncate!==t.byteLength){if(e.truncate<0||e.truncate>t.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${t.byteLength}`);t=t.subarray(0,e.truncate)}return So(Wf,Gf(t))}const xo={code:Wf,name:ny,encode:Gf,digest:ry};function dt(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let n=0;n<t.byteLength;n++)if(t[n]!==e[n])return!1;return!0}function qe(t=0){return new Uint8Array(t)}function Lt(t=0){return new Uint8Array(t)}function qa(t,e){e==null&&(e=t.reduce((o,s)=>o+s.length,0));const n=Lt(e);let r=0;for(const o of t)n.set(o,r),r+=o.length;return n}const Vf=Symbol.for("@achingbrain/uint8arraylist");function ud(t,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let n=0;for(const r of t){const o=n+r.byteLength;if(e<o)return{buf:r,index:e-n};n=o}throw new RangeError("index is out of bounds")}function Po(t){return!!t?.[Vf]}class ce{bufs;length;[Vf]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let n=0;for(const r of e)if(r instanceof Uint8Array)n+=r.byteLength,this.bufs.push(r);else if(Po(r)){n+=r.byteLength;for(const o of r.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=n}prepend(...e){this.prependAll(e)}prependAll(e){let n=0;for(const r of e.reverse())if(r instanceof Uint8Array)n+=r.byteLength,this.bufs.unshift(r);else if(Po(r))n+=r.byteLength,this.bufs.unshift(...r.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=n}get(e){const n=ud(this.bufs,e);return n.buf[n.index]}set(e,n){const r=ud(this.bufs,e);r.buf[r.index]=n}write(e,n=0){if(e instanceof Uint8Array)for(let r=0;r<e.length;r++)this.set(n+r,e[r]);else if(Po(e))for(let r=0;r<e.length;r++)this.set(n+r,e.get(r));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,n){const{bufs:r,length:o}=this._subList(e,n);return qa(r,o)}subarray(e,n){const{bufs:r,length:o}=this._subList(e,n);return r.length===1?r[0]:qa(r,o)}sublist(e,n){const{bufs:r,length:o}=this._subList(e,n),s=new ce;return s.length=o,s.bufs=r,s}_subList(e,n){if(e=e??0,n=n??this.length,e<0&&(e=this.length+e),n<0&&(n=this.length+n),e<0||n>this.length)throw new RangeError("index is out of bounds");if(e===n)return{bufs:[],length:0};if(e===0&&n===this.length)return{bufs:[...this.bufs],length:this.length};const r=[];let o=0;for(let s=0;s<this.bufs.length;s++){const i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;const l=e>=a&&e<c,d=n>a&&n<=c;if(l&&d){if(e===a&&n===c){r.push(i);break}const u=e-a;r.push(i.subarray(u,u+(n-e)));break}if(l){if(e===0){r.push(i);continue}r.push(i.subarray(e-a));continue}if(d){if(n===c){r.push(i);break}r.push(i.subarray(0,n-a));break}r.push(i)}return{bufs:r,length:n-e}}indexOf(e,n=0){if(!Po(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');const r=e instanceof Uint8Array?e:e.subarray();if(n=Number(n??0),isNaN(n)&&(n=0),n<0&&(n=this.length+n),n<0&&(n=0),e.length===0)return n>this.length?this.length:n;const o=r.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");const s=256,i=new Int32Array(s);for(let u=0;u<s;u++)i[u]=-1;for(let u=0;u<o;u++)i[r[u]]=u;const a=i,c=this.byteLength-r.byteLength,l=r.byteLength-1;let d;for(let u=n;u<=c;u+=d){d=0;for(let f=l;f>=0;f--){const h=this.get(u+f);if(r[f]!==h){d=Math.max(1,f-a[h]);break}}if(d===0)return u}return-1}getInt8(e){const n=this.subarray(e,e+1);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt8(0)}setInt8(e,n){const r=Lt(1);new DataView(r.buffer,r.byteOffset,r.byteLength).setInt8(0,n),this.write(r,e)}getInt16(e,n){const r=this.subarray(e,e+2);return new DataView(r.buffer,r.byteOffset,r.byteLength).getInt16(0,n)}setInt16(e,n,r){const o=qe(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,n,r),this.write(o,e)}getInt32(e,n){const r=this.subarray(e,e+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getInt32(0,n)}setInt32(e,n,r){const o=qe(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,n,r),this.write(o,e)}getBigInt64(e,n){const r=this.subarray(e,e+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getBigInt64(0,n)}setBigInt64(e,n,r){const o=qe(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,n,r),this.write(o,e)}getUint8(e){const n=this.subarray(e,e+1);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint8(0)}setUint8(e,n){const r=Lt(1);new DataView(r.buffer,r.byteOffset,r.byteLength).setUint8(0,n),this.write(r,e)}getUint16(e,n){const r=this.subarray(e,e+2);return new DataView(r.buffer,r.byteOffset,r.byteLength).getUint16(0,n)}setUint16(e,n,r){const o=qe(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,n,r),this.write(o,e)}getUint32(e,n){const r=this.subarray(e,e+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getUint32(0,n)}setUint32(e,n,r){const o=qe(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,n,r),this.write(o,e)}getBigUint64(e,n){const r=this.subarray(e,e+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getBigUint64(0,n)}setBigUint64(e,n,r){const o=qe(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,n,r),this.write(o,e)}getFloat32(e,n){const r=this.subarray(e,e+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getFloat32(0,n)}setFloat32(e,n,r){const o=qe(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,n,r),this.write(o,e)}getFloat64(e,n){const r=this.subarray(e,e+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getFloat64(0,n)}setFloat64(e,n,r){const o=qe(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,n,r),this.write(o,e)}equals(e){if(e==null||!(e instanceof ce)||e.bufs.length!==this.bufs.length)return!1;for(let n=0;n<this.bufs.length;n++)if(!dt(this.bufs[n],e.bufs[n]))return!1;return!0}static fromUint8Arrays(e,n){const r=new ce;return r.bufs=e,n==null&&(n=e.reduce((o,s)=>o+s.byteLength,0)),r.length=n,r}}const oy=vo({prefix:"9",name:"base10",alphabet:"0123456789"}),sy=Object.freeze(Object.defineProperty({__proto__:null,base10:oy},Symbol.toStringTag,{value:"Module"})),iy=Ne({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),ay=Ne({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4}),cy=Object.freeze(Object.defineProperty({__proto__:null,base16:iy,base16upper:ay},Symbol.toStringTag,{value:"Module"})),ly=Ne({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1}),dy=Object.freeze(Object.defineProperty({__proto__:null,base2:ly},Symbol.toStringTag,{value:"Module"})),Xf=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),uy=Xf.reduce((t,e,n)=>(t[n]=e,t),[]),fy=Xf.reduce((t,e,n)=>{const r=e.codePointAt(0);if(r==null)throw new Error(`Invalid character: ${e}`);return t[r]=n,t},[]);function hy(t){return t.reduce((e,n)=>(e+=uy[n],e),"")}function py(t){const e=[];for(const n of t){const r=n.codePointAt(0);if(r==null)throw new Error(`Invalid character: ${n}`);const o=fy[r];if(o==null)throw new Error(`Non-base256emoji character: ${n}`);e.push(o)}return new Uint8Array(e)}const gy=ei({prefix:"🚀",name:"base256emoji",encode:hy,decode:py}),my=Object.freeze(Object.defineProperty({__proto__:null,base256emoji:gy},Symbol.toStringTag,{value:"Module"})),wy=Ne({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),yy=Ne({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),by=Ne({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),vy=Ne({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6}),Sy=Object.freeze(Object.defineProperty({__proto__:null,base64:wy,base64pad:yy,base64url:by,base64urlpad:vy},Symbol.toStringTag,{value:"Module"})),xy=Ne({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3}),Ey=Object.freeze(Object.defineProperty({__proto__:null,base8:xy},Symbol.toStringTag,{value:"Module"})),Ay=ei({prefix:"\0",name:"identity",encode:t=>dw(t),decode:t=>lw(t)}),ky=Object.freeze(Object.defineProperty({__proto__:null,identity:Ay},Symbol.toStringTag,{value:"Module"}));new TextEncoder;new TextDecoder;const Cy=20;function Iy({name:t,code:e,encode:n,minDigestLength:r,maxDigestLength:o}){return new Ry(t,e,n,r,o)}class Ry{name;code;encode;minDigestLength;maxDigestLength;constructor(e,n,r,o,s){this.name=e,this.code=n,this.encode=r,this.minDigestLength=o??Cy,this.maxDigestLength=s}digest(e,n){if(n?.truncate!=null){if(n.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&n.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){const r=this.encode(e);return r instanceof Uint8Array?fd(r,this.code,n?.truncate):r.then(o=>fd(o,this.code,n?.truncate))}else throw Error("Unknown type, must be binary type")}}function fd(t,e,n){if(n!=null&&n!==t.byteLength){if(n>t.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${t.byteLength}`);t=t.subarray(0,n)}return So(e,t)}function Ty(t){return async e=>new Uint8Array(await crypto.subtle.digest(t,e))}const Vc=Iy({name:"sha2-256",code:18,encode:Ty("SHA-256")}),hd={...ky,...dy,...Ey,...sy,...cy,...Nw,...Bw,...xw,...Sy,...my};function Yf(t,e,n,r){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:n},decoder:{decode:r}}}const pd=Yf("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Pi=Yf("ascii","a",t=>{let e="a";for(let n=0;n<t.length;n++)e+=String.fromCharCode(t[n]);return e},t=>{t=t.substring(1);const e=Lt(t.length);for(let n=0;n<t.length;n++)e[n]=t.charCodeAt(n);return e}),Zf={utf8:pd,"utf-8":pd,hex:hd.base16,latin1:Pi,ascii:Pi,binary:Pi,...hd};function ve(t,e="utf8"){const n=Zf[e];if(n==null)throw new Error(`Unsupported encoding "${e}"`);return n.decoder.decode(`${n.prefix}${t}`)}function te(t,e="utf8"){const n=Zf[e];if(n==null)throw new Error(`Unsupported encoding "${e}"`);return n.encoder.encode(t).substring(1)}const Py=parseInt("11111",2),Ka=parseInt("10000000",2),Ny=parseInt("01111111",2),gd={0:Tr,1:Tr,2:Ly,3:Oy,4:Dy,5:_y,6:By,16:Tr,22:Tr,48:Tr};function yr(t,e={offset:0}){const n=t[e.offset]&Py;if(e.offset++,gd[n]!=null)return gd[n](t,e);throw new Error("No decoder for tag "+n)}function Eo(t,e){let n=0;if((t[e.offset]&Ka)===Ka){const r=t[e.offset]&Ny;let o="0x";e.offset++;for(let s=0;s<r;s++,e.offset++)o+=t[e.offset].toString(16).padStart(2,"0");n=parseInt(o,16)}else n=t[e.offset],e.offset++;return n}function Tr(t,e){Eo(t,e);const n=[];for(;!(e.offset>=t.byteLength);){const r=yr(t,e);if(r===null)break;n.push(r)}return n}function Ly(t,e){const n=Eo(t,e),r=e.offset,o=e.offset+n,s=[];for(let i=r;i<o;i++)i===r&&t[i]===0||s.push(t[i]);return e.offset+=n,Uint8Array.from(s)}function By(t,e){const n=Eo(t,e),r=e.offset+n,o=t[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<r;){const l=t[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let d=0;for(let u=0;u<c.length;u++)d+=c[u]<<u*7;a+=`.${d}`,c=[]}}return a}function _y(t,e){return e.offset++,null}function Oy(t,e){const n=Eo(t,e),r=t[e.offset];e.offset++;const o=t.subarray(e.offset,e.offset+n-1);if(e.offset+=n,r!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function Dy(t,e){const n=Eo(t,e),r=t.subarray(e.offset,e.offset+n);return e.offset+=n,r}function Fy(t){let e=t.toString(16);e.length%2===1&&(e="0"+e);const n=new ce;for(let r=0;r<e.length;r+=2)n.append(Uint8Array.from([parseInt(`${e[r]}${e[r+1]}`,16)]));return n}function ti(t){if(t.byteLength<128)return Uint8Array.from([t.byteLength]);const e=Fy(t.byteLength);return new ce(Uint8Array.from([e.byteLength|Ka]),e)}function Ve(t){const e=new ce,n=128;return(t.subarray()[0]&n)===n&&e.append(Uint8Array.from([0])),e.append(t),new ce(Uint8Array.from([2]),ti(e),e)}function Xc(t){const e=Uint8Array.from([0]),n=new ce(e,t);return new ce(Uint8Array.from([3]),ti(n),n)}function My(t){return new ce(Uint8Array.from([4]),ti(t),t)}function Tt(t,e=48){const n=new ce;for(const r of t)n.append(r);return new ce(Uint8Array.from([e]),ti(n),n)}async function jy(t,e,n){const r=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["sign"]);n?.signal?.throwIfAborted();const o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},r,e.subarray());return n?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function Hy(t,e,n,r){const o=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["verify"]);r?.signal?.throwIfAborted();const s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,n.subarray());return r?.signal?.throwIfAborted(),s}const Uy=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),$y=Uint8Array.from([6,5,43,129,4,0,34]),qy=Uint8Array.from([6,5,43,129,4,0,35]),Jf={ext:!0,kty:"EC",crv:"P-256"},Qf={ext:!0,kty:"EC",crv:"P-384"},eh={ext:!0,kty:"EC",crv:"P-521"},Xn=32,Yn=48,Zn=66;function Ky(t){const e=yr(t);return zy(e)}function zy(t){const e=t[1],n=te(e,"base64url"),r=t[2][1][0],o=1;let s,i;if(e.byteLength===Xn)return s=te(r.subarray(o,o+Xn),"base64url"),i=te(r.subarray(o+Xn),"base64url"),new Ni({...Jf,key_ops:["sign"],d:n,x:s,y:i});if(e.byteLength===Yn)return s=te(r.subarray(o,o+Yn),"base64url"),i=te(r.subarray(o+Yn),"base64url"),new Ni({...Qf,key_ops:["sign"],d:n,x:s,y:i});if(e.byteLength===Zn)return s=te(r.subarray(o,o+Zn),"base64url"),i=te(r.subarray(o+Zn),"base64url"),new Ni({...eh,key_ops:["sign"],d:n,x:s,y:i});throw new lt(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function th(t){const e=yr(t);return Wy(e)}function Wy(t){const e=t[1][1][0],n=1;let r,o;if(e.byteLength===Xn*2+1)return r=te(e.subarray(n,n+Xn),"base64url"),o=te(e.subarray(n+Xn),"base64url"),new es({...Jf,key_ops:["verify"],x:r,y:o});if(e.byteLength===Yn*2+1)return r=te(e.subarray(n,n+Yn),"base64url"),o=te(e.subarray(n+Yn),"base64url"),new es({...Qf,key_ops:["verify"],x:r,y:o});if(e.byteLength===Zn*2+1)return r=te(e.subarray(n,n+Zn),"base64url"),o=te(e.subarray(n+Zn),"base64url"),new es({...eh,key_ops:["verify"],x:r,y:o});throw new lt(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function Gy(t){return Tt([Ve(Uint8Array.from([1])),My(ve(t.d??"","base64url")),Tt([nh(t.crv)],160),Tt([Xc(new ce(Uint8Array.from([4]),ve(t.x??"","base64url"),ve(t.y??"","base64url")))],161)]).subarray()}function Vy(t){return Tt([Ve(Uint8Array.from([1])),Tt([nh(t.crv)],160),Tt([Xc(new ce(Uint8Array.from([4]),ve(t.x??"","base64url"),ve(t.y??"","base64url")))],161)]).subarray()}function nh(t){if(t==="P-256")return Uy;if(t==="P-384")return $y;if(t==="P-521")return qy;throw new lt(`Invalid curve ${t}`)}class es{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=Vy(this.jwk)),this._raw}toMultihash(){return xo.digest(ai(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return je.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}async verify(e,n,r){return Hy(this.jwk,n,e,r)}}class Ni{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new es({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=Gy(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}async sign(e,n){return jy(this.jwk,e,n)}}const _n=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function Ao(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function za(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function En(t,...e){if(!Ao(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function rh(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");za(t.outputLen),za(t.blockLen)}function ys(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Xy(t,e){En(t);const n=e.outputLen;if(t.length<n)throw new Error("digestInto() expects output buffer of length at least "+n)}function lr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Li(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function ft(t,e){return t<<32-e|t>>>e}const oh=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Yy=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function fn(t){if(En(t),oh)return t.toHex();let e="";for(let n=0;n<t.length;n++)e+=Yy[t[n]];return e}const bt={_0:48,_9:57,A:65,F:70,a:97,f:102};function md(t){if(t>=bt._0&&t<=bt._9)return t-bt._0;if(t>=bt.A&&t<=bt.F)return t-(bt.A-10);if(t>=bt.a&&t<=bt.f)return t-(bt.a-10)}function bs(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(oh)return Uint8Array.fromHex(t);const e=t.length,n=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=md(t.charCodeAt(s)),a=md(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}r[o]=i*16+a}return r}function Zy(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function Yc(t){return typeof t=="string"&&(t=Zy(t)),En(t),t}function gt(...t){let e=0;for(let r=0;r<t.length;r++){const o=t[r];En(o),e+=o.length}const n=new Uint8Array(e);for(let r=0,o=0;r<t.length;r++){const s=t[r];n.set(s,o),o+=s.length}return n}class sh{}function ih(t){const e=r=>t().update(Yc(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function Zc(t=32){if(_n&&typeof _n.getRandomValues=="function")return _n.getRandomValues(new Uint8Array(t));if(_n&&typeof _n.randomBytes=="function")return Uint8Array.from(_n.randomBytes(t));throw new Error("crypto.getRandomValues must be defined")}function Jy(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);const o=BigInt(32),s=BigInt(4294967295),i=Number(n>>o&s),a=Number(n&s),c=r?4:0,l=r?0:4;t.setUint32(e+c,i,r),t.setUint32(e+l,a,r)}function Qy(t,e,n){return t&e^~t&n}function eb(t,e,n){return t&e^t&n^e&n}let ah=class extends sh{constructor(e,n,r,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Li(this.buffer)}update(e){ys(this),e=Yc(e),En(e);const{view:n,buffer:r,blockLen:o}=this,s=e.length;for(let i=0;i<s;){const a=Math.min(o-this.pos,s-i);if(a===o){const c=Li(e);for(;o<=s-i;i+=o)this.process(c,i);continue}r.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ys(this),Xy(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,lr(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(r,0),i=0);for(let u=i;u<o;u++)n[u]=0;Jy(r,o-8,BigInt(this.length*8),s),this.process(r,0);const a=Li(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:n,buffer:r,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%n&&e.buffer.set(r),e}clone(){return this._cloneInto()}};const Ft=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),_e=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),No=BigInt(2**32-1),wd=BigInt(32);function tb(t,e=!1){return e?{h:Number(t&No),l:Number(t>>wd&No)}:{h:Number(t>>wd&No)|0,l:Number(t&No)|0}}function nb(t,e=!1){const n=t.length;let r=new Uint32Array(n),o=new Uint32Array(n);for(let s=0;s<n;s++){const{h:i,l:a}=tb(t[s],e);[r[s],o[s]]=[i,a]}return[r,o]}const yd=(t,e,n)=>t>>>n,bd=(t,e,n)=>t<<32-n|e>>>n,On=(t,e,n)=>t>>>n|e<<32-n,Dn=(t,e,n)=>t<<32-n|e>>>n,Lo=(t,e,n)=>t<<64-n|e>>>n-32,Bo=(t,e,n)=>t>>>n-32|e<<64-n;function vt(t,e,n,r){const o=(e>>>0)+(r>>>0);return{h:t+n+(o/2**32|0)|0,l:o|0}}const rb=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),ob=(t,e,n,r)=>e+n+r+(t/2**32|0)|0,sb=(t,e,n,r)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0),ib=(t,e,n,r,o)=>e+n+r+o+(t/2**32|0)|0,ab=(t,e,n,r,o)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0)+(o>>>0),cb=(t,e,n,r,o,s)=>e+n+r+o+s+(t/2**32|0)|0,lb=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Mt=new Uint32Array(64);class db extends ah{constructor(e=32){super(64,e,8,!1),this.A=Ft[0]|0,this.B=Ft[1]|0,this.C=Ft[2]|0,this.D=Ft[3]|0,this.E=Ft[4]|0,this.F=Ft[5]|0,this.G=Ft[6]|0,this.H=Ft[7]|0}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:c}=this;return[e,n,r,o,s,i,a,c]}set(e,n,r,o,s,i,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,n){for(let u=0;u<16;u++,n+=4)Mt[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const f=Mt[u-15],h=Mt[u-2],g=ft(f,7)^ft(f,18)^f>>>3,m=ft(h,17)^ft(h,19)^h>>>10;Mt[u]=m+Mt[u-7]+g+Mt[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=ft(a,6)^ft(a,11)^ft(a,25),h=d+f+Qy(a,c,l)+lb[u]+Mt[u]|0,m=(ft(r,2)^ft(r,13)^ft(r,22))+eb(r,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=r,r=h+m|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,c,l,d)}roundClean(){lr(Mt)}destroy(){this.set(0,0,0,0,0,0,0,0),lr(this.buffer)}}const ch=nb(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(t=>BigInt(t))),ub=ch[0],fb=ch[1],jt=new Uint32Array(80),Ht=new Uint32Array(80);class hb extends ah{constructor(e=64){super(128,e,16,!1),this.Ah=_e[0]|0,this.Al=_e[1]|0,this.Bh=_e[2]|0,this.Bl=_e[3]|0,this.Ch=_e[4]|0,this.Cl=_e[5]|0,this.Dh=_e[6]|0,this.Dl=_e[7]|0,this.Eh=_e[8]|0,this.El=_e[9]|0,this.Fh=_e[10]|0,this.Fl=_e[11]|0,this.Gh=_e[12]|0,this.Gl=_e[13]|0,this.Hh=_e[14]|0,this.Hl=_e[15]|0}get(){const{Ah:e,Al:n,Bh:r,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:d,Fh:u,Fl:f,Gh:h,Gl:g,Hh:m,Hl:b}=this;return[e,n,r,o,s,i,a,c,l,d,u,f,h,g,m,b]}set(e,n,r,o,s,i,a,c,l,d,u,f,h,g,m,b){this.Ah=e|0,this.Al=n|0,this.Bh=r|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=d|0,this.Fh=u|0,this.Fl=f|0,this.Gh=h|0,this.Gl=g|0,this.Hh=m|0,this.Hl=b|0}process(e,n){for(let y=0;y<16;y++,n+=4)jt[y]=e.getUint32(n),Ht[y]=e.getUint32(n+=4);for(let y=16;y<80;y++){const k=jt[y-15]|0,N=Ht[y-15]|0,x=On(k,N,1)^On(k,N,8)^yd(k,N,7),T=Dn(k,N,1)^Dn(k,N,8)^bd(k,N,7),S=jt[y-2]|0,v=Ht[y-2]|0,A=On(S,v,19)^Lo(S,v,61)^yd(S,v,6),O=Dn(S,v,19)^Bo(S,v,61)^bd(S,v,6),B=sb(T,O,Ht[y-7],Ht[y-16]),C=ib(B,x,A,jt[y-7],jt[y-16]);jt[y]=C|0,Ht[y]=B|0}let{Ah:r,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:h,Fl:g,Gh:m,Gl:b,Hh:w,Hl:I}=this;for(let y=0;y<80;y++){const k=On(u,f,14)^On(u,f,18)^Lo(u,f,41),N=Dn(u,f,14)^Dn(u,f,18)^Bo(u,f,41),x=u&h^~u&m,T=f&g^~f&b,S=ab(I,N,T,fb[y],Ht[y]),v=cb(S,w,k,x,ub[y],jt[y]),A=S|0,O=On(r,o,28)^Lo(r,o,34)^Lo(r,o,39),B=Dn(r,o,28)^Bo(r,o,34)^Bo(r,o,39),C=r&s^r&a^s&a,E=o&i^o&c^i&c;w=m|0,I=b|0,m=h|0,b=g|0,h=u|0,g=f|0,{h:u,l:f}=vt(l|0,d|0,v|0,A|0),l=a|0,d=c|0,a=s|0,c=i|0,s=r|0,i=o|0;const P=rb(A,B,E);r=ob(P,v,O,C),o=P|0}({h:r,l:o}=vt(this.Ah|0,this.Al|0,r|0,o|0)),{h:s,l:i}=vt(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=vt(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=vt(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=vt(this.Eh|0,this.El|0,u|0,f|0),{h,l:g}=vt(this.Fh|0,this.Fl|0,h|0,g|0),{h:m,l:b}=vt(this.Gh|0,this.Gl|0,m|0,b|0),{h:w,l:I}=vt(this.Hh|0,this.Hl|0,w|0,I|0),this.set(r,o,s,i,a,c,l,d,u,f,h,g,m,b,w,I)}roundClean(){lr(jt,Ht)}destroy(){lr(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const lh=ih(()=>new db),pb=ih(()=>new hb);const Jc=BigInt(0),Wa=BigInt(1);function yn(t,e=""){if(typeof t!="boolean"){const n=e&&`"${e}"`;throw new Error(n+"expected boolean, got type="+typeof t)}return t}function ct(t,e,n=""){const r=Ao(t),o=t?.length,s=e!==void 0;if(!r||s&&o!==e){const i=n&&`"${n}" `,a=s?` of length ${e}`:"",c=r?`length=${o}`:`type=${typeof t}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return t}function _o(t){const e=t.toString(16);return e.length&1?"0"+e:e}function dh(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?Jc:BigInt("0x"+t)}function ni(t){return dh(fn(t))}function co(t){return En(t),dh(fn(Uint8Array.from(t).reverse()))}function Qc(t,e){return bs(t.toString(16).padStart(e*2,"0"))}function uh(t,e){return Qc(t,e).reverse()}function ge(t,e,n){let r;if(typeof e=="string")try{r=bs(e)}catch(s){throw new Error(t+" must be hex string or Uint8Array, cause: "+s)}else if(Ao(e))r=Uint8Array.from(e);else throw new Error(t+" must be hex string or Uint8Array");const o=r.length;if(typeof n=="number"&&o!==n)throw new Error(t+" of length "+n+" expected, got "+o);return r}function vd(t){return Uint8Array.from(t)}const Bi=t=>typeof t=="bigint"&&Jc<=t;function gb(t,e,n){return Bi(t)&&Bi(e)&&Bi(n)&&e<=t&&t<n}function Ga(t,e,n,r){if(!gb(e,n,r))throw new Error("expected valid "+t+": "+n+" <= n < "+r+", got "+e)}function fh(t){let e;for(e=0;t>Jc;t>>=Wa,e+=1);return e}const ko=t=>(Wa<<BigInt(t))-Wa;function mb(t,e,n){if(typeof t!="number"||t<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof n!="function")throw new Error("hmacFn must be a function");const r=h=>new Uint8Array(h),o=h=>Uint8Array.of(h);let s=r(t),i=r(t),a=0;const c=()=>{s.fill(1),i.fill(0),a=0},l=(...h)=>n(i,s,...h),d=(h=r(0))=>{i=l(o(0),h),s=l(),h.length!==0&&(i=l(o(1),h),s=l())},u=()=>{if(a++>=1e3)throw new Error("drbg: tried 1000 values");let h=0;const g=[];for(;h<e;){s=l();const m=s.slice();g.push(m),h+=s.length}return gt(...g)};return(h,g)=>{c(),d(h);let m;for(;!(m=g(u()));)d();return c(),m}}function Co(t,e,n={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function r(o,s,i){const a=t[o];if(i&&a===void 0)return;const c=typeof a;if(c!==s||a===null)throw new Error(`param "${o}" is invalid: expected ${s}, got ${c}`)}Object.entries(e).forEach(([o,s])=>r(o,s,!1)),Object.entries(n).forEach(([o,s])=>r(o,s,!0))}function vs(t){const e=new WeakMap;return(n,...r)=>{const o=e.get(n);if(o!==void 0)return o;const s=t(n,...r);return e.set(n,s),s}}const Ke=BigInt(0),Pe=BigInt(1),on=BigInt(2),hh=BigInt(3),ph=BigInt(4),gh=BigInt(5),wb=BigInt(7),mh=BigInt(8),yb=BigInt(9),wh=BigInt(16);function Se(t,e){const n=t%e;return n>=Ke?n:e+n}function pe(t,e,n){let r=t;for(;e-- >Ke;)r*=r,r%=n;return r}function Sd(t,e){if(t===Ke)throw new Error("invert: expected non-zero number");if(e<=Ke)throw new Error("invert: expected positive modulus, got "+e);let n=Se(t,e),r=e,o=Ke,s=Pe;for(;n!==Ke;){const a=r/n,c=r%n,l=o-s*a;r=n,n=c,o=s,s=l}if(r!==Pe)throw new Error("invert: does not exist");return Se(o,e)}function el(t,e,n){if(!t.eql(t.sqr(e),n))throw new Error("Cannot find square root")}function yh(t,e){const n=(t.ORDER+Pe)/ph,r=t.pow(e,n);return el(t,r,e),r}function bb(t,e){const n=(t.ORDER-gh)/mh,r=t.mul(e,on),o=t.pow(r,n),s=t.mul(e,o),i=t.mul(t.mul(s,on),o),a=t.mul(s,t.sub(i,t.ONE));return el(t,a,e),a}function vb(t){const e=An(t),n=bh(t),r=n(e,e.neg(e.ONE)),o=n(e,r),s=n(e,e.neg(r)),i=(t+wb)/wh;return(a,c)=>{let l=a.pow(c,i),d=a.mul(l,r);const u=a.mul(l,o),f=a.mul(l,s),h=a.eql(a.sqr(d),c),g=a.eql(a.sqr(u),c);l=a.cmov(l,d,h),d=a.cmov(f,u,g);const m=a.eql(a.sqr(d),c),b=a.cmov(l,d,m);return el(a,b,c),b}}function bh(t){if(t<hh)throw new Error("sqrt is not defined for small field");let e=t-Pe,n=0;for(;e%on===Ke;)e/=on,n++;let r=on;const o=An(t);for(;xd(o,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return yh;let s=o.pow(r,e);const i=(e+Pe)/on;return function(c,l){if(c.is0(l))return l;if(xd(c,l)!==1)throw new Error("Cannot find square root");let d=n,u=c.mul(c.ONE,s),f=c.pow(l,e),h=c.pow(l,i);for(;!c.eql(f,c.ONE);){if(c.is0(f))return c.ZERO;let g=1,m=c.sqr(f);for(;!c.eql(m,c.ONE);)if(g++,m=c.sqr(m),g===d)throw new Error("Cannot find square root");const b=Pe<<BigInt(d-g-1),w=c.pow(u,b);d=g,u=c.sqr(w),f=c.mul(f,u),h=c.mul(h,w)}return h}}function Sb(t){return t%ph===hh?yh:t%mh===gh?bb:t%wh===yb?vb(t):bh(t)}const xb=(t,e)=>(Se(t,e)&Pe)===Pe,Eb=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Ab(t){const e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},n=Eb.reduce((r,o)=>(r[o]="function",r),e);return Co(t,n),t}function kb(t,e,n){if(n<Ke)throw new Error("invalid exponent, negatives unsupported");if(n===Ke)return t.ONE;if(n===Pe)return e;let r=t.ONE,o=e;for(;n>Ke;)n&Pe&&(r=t.mul(r,o)),o=t.sqr(o),n>>=Pe;return r}function vh(t,e,n=!1){const r=new Array(e.length).fill(n?t.ZERO:void 0),o=e.reduce((i,a,c)=>t.is0(a)?i:(r[c]=i,t.mul(i,a)),t.ONE),s=t.inv(o);return e.reduceRight((i,a,c)=>t.is0(a)?i:(r[c]=t.mul(i,r[c]),t.mul(i,a)),s),r}function xd(t,e){const n=(t.ORDER-Pe)/on,r=t.pow(e,n),o=t.eql(r,t.ONE),s=t.eql(r,t.ZERO),i=t.eql(r,t.neg(t.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function Sh(t,e){e!==void 0&&za(e);const n=e!==void 0?e:t.toString(2).length,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}function An(t,e,n=!1,r={}){if(t<=Ke)throw new Error("invalid field: expected ORDER > 0, got "+t);let o,s,i=!1,a;if(typeof e=="object"&&e!=null){if(r.sqrt||n)throw new Error("cannot specify opts in two arguments");const f=e;f.BITS&&(o=f.BITS),f.sqrt&&(s=f.sqrt),typeof f.isLE=="boolean"&&(n=f.isLE),typeof f.modFromBytes=="boolean"&&(i=f.modFromBytes),a=f.allowedLengths}else typeof e=="number"&&(o=e),r.sqrt&&(s=r.sqrt);const{nBitLength:c,nByteLength:l}=Sh(t,o);if(l>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let d;const u=Object.freeze({ORDER:t,isLE:n,BITS:c,BYTES:l,MASK:ko(c),ZERO:Ke,ONE:Pe,allowedLengths:a,create:f=>Se(f,t),isValid:f=>{if(typeof f!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof f);return Ke<=f&&f<t},is0:f=>f===Ke,isValidNot0:f=>!u.is0(f)&&u.isValid(f),isOdd:f=>(f&Pe)===Pe,neg:f=>Se(-f,t),eql:(f,h)=>f===h,sqr:f=>Se(f*f,t),add:(f,h)=>Se(f+h,t),sub:(f,h)=>Se(f-h,t),mul:(f,h)=>Se(f*h,t),pow:(f,h)=>kb(u,f,h),div:(f,h)=>Se(f*Sd(h,t),t),sqrN:f=>f*f,addN:(f,h)=>f+h,subN:(f,h)=>f-h,mulN:(f,h)=>f*h,inv:f=>Sd(f,t),sqrt:s||(f=>(d||(d=Sb(t)),d(u,f))),toBytes:f=>n?uh(f,l):Qc(f,l),fromBytes:(f,h=!0)=>{if(a){if(!a.includes(f.length)||f.length>l)throw new Error("Field.fromBytes: expected "+a+" bytes, got "+f.length);const m=new Uint8Array(l);m.set(f,n?0:m.length-f.length),f=m}if(f.length!==l)throw new Error("Field.fromBytes: expected "+l+" bytes, got "+f.length);let g=n?co(f):ni(f);if(i&&(g=Se(g,t)),!h&&!u.isValid(g))throw new Error("invalid field element: outside of range 0..ORDER");return g},invertBatch:f=>vh(u,f),cmov:(f,h,g)=>g?h:f});return Object.freeze(u)}function xh(t){if(typeof t!="bigint")throw new Error("field order must be bigint");const e=t.toString(2).length;return Math.ceil(e/8)}function Eh(t){const e=xh(t);return e+Math.ceil(e/2)}function Cb(t,e,n=!1){const r=t.length,o=xh(e),s=Eh(e);if(r<16||r<s||r>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+r);const i=n?co(t):ni(t),a=Se(i,e-Pe)+Pe;return n?uh(a,o):Qc(a,o)}const dr=BigInt(0),sn=BigInt(1);function Ss(t,e){const n=e.negate();return t?n:e}function an(t,e){const n=vh(t.Fp,e.map(r=>r.Z));return e.map((r,o)=>t.fromAffine(r.toAffine(n[o])))}function Ah(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function _i(t,e){Ah(t,e);const n=Math.ceil(e/t)+1,r=2**(t-1),o=2**t,s=ko(t),i=BigInt(t);return{windows:n,windowSize:r,mask:s,maxNumber:o,shiftBy:i}}function Ed(t,e,n){const{windowSize:r,mask:o,maxNumber:s,shiftBy:i}=n;let a=Number(t&o),c=t>>i;a>r&&(a-=s,c+=sn);const l=e*r,d=l+Math.abs(a)-1,u=a===0,f=a<0,h=e%2!==0;return{nextN:c,offset:d,isZero:u,isNeg:f,isNegF:h,offsetF:l}}function Ib(t,e){if(!Array.isArray(t))throw new Error("array expected");t.forEach((n,r)=>{if(!(n instanceof e))throw new Error("invalid point at index "+r)})}function Rb(t,e){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((n,r)=>{if(!e.isValid(n))throw new Error("invalid scalar at index "+r)})}const Oi=new WeakMap,kh=new WeakMap;function Di(t){return kh.get(t)||1}function Ad(t){if(t!==dr)throw new Error("invalid wNAF")}class Ch{constructor(e,n){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=n}_unsafeLadder(e,n,r=this.ZERO){let o=e;for(;n>dr;)n&sn&&(r=r.add(o)),o=o.double(),n>>=sn;return r}precomputeWindow(e,n){const{windows:r,windowSize:o}=_i(n,this.bits),s=[];let i=e,a=i;for(let c=0;c<r;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,n,r){if(!this.Fn.isValid(r))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE;const i=_i(e,this.bits);for(let a=0;a<i.windows;a++){const{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:f,offsetF:h}=Ed(r,a,i);r=c,d?s=s.add(Ss(f,n[h])):o=o.add(Ss(u,n[l]))}return Ad(r),{p:o,f:s}}wNAFUnsafe(e,n,r,o=this.ZERO){const s=_i(e,this.bits);for(let i=0;i<s.windows&&r!==dr;i++){const{nextN:a,offset:c,isZero:l,isNeg:d}=Ed(r,i,s);if(r=a,!l){const u=n[c];o=o.add(d?u.negate():u)}}return Ad(r),o}getPrecomputes(e,n,r){let o=Oi.get(n);return o||(o=this.precomputeWindow(n,e),e!==1&&(typeof r=="function"&&(o=r(o)),Oi.set(n,o))),o}cached(e,n,r){const o=Di(e);return this.wNAF(o,this.getPrecomputes(o,e,r),n)}unsafe(e,n,r,o){const s=Di(e);return s===1?this._unsafeLadder(e,n,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,r),n,o)}createCache(e,n){Ah(n,this.bits),kh.set(e,n),Oi.delete(e)}hasCache(e){return Di(e)!==1}}function Tb(t,e,n,r){let o=e,s=t.ZERO,i=t.ZERO;for(;n>dr||r>dr;)n&sn&&(s=s.add(o)),r&sn&&(i=i.add(o)),o=o.double(),n>>=sn,r>>=sn;return{p1:s,p2:i}}function Ih(t,e,n,r){Ib(n,t),Rb(r,e);const o=n.length,s=r.length;if(o!==s)throw new Error("arrays of points and scalars must have equal length");const i=t.ZERO,a=fh(BigInt(o));let c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);const l=ko(c),d=new Array(Number(l)+1).fill(i),u=Math.floor((e.BITS-1)/c)*c;let f=i;for(let h=u;h>=0;h-=c){d.fill(i);for(let m=0;m<s;m++){const b=r[m],w=Number(b>>BigInt(h)&l);d[w]=d[w].add(n[m])}let g=i;for(let m=d.length-1,b=i;m>0;m--)b=b.add(d[m]),g=g.add(b);if(f=f.add(g),h!==0)for(let m=0;m<c;m++)f=f.double()}return f}function kd(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Ab(e),e}else return An(t,{isLE:n})}function Rh(t,e,n={},r){if(r===void 0&&(r=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(const c of["p","n","h"]){const l=e[c];if(!(typeof l=="bigint"&&l>dr))throw new Error(`CURVE.${c} must be positive bigint`)}const o=kd(e.p,n.Fp,r),s=kd(e.n,n.Fn,r),a=["Gx","Gy","a",t==="weierstrass"?"b":"d"];for(const c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}const Ut=BigInt(0),Ce=BigInt(1),Fi=BigInt(2),Pb=BigInt(8);function Nb(t,e,n,r){const o=t.sqr(n),s=t.sqr(r),i=t.add(t.mul(e.a,o),s),a=t.add(t.ONE,t.mul(e.d,t.mul(o,s)));return t.eql(i,a)}function Lb(t,e={}){const n=Rh("edwards",t,e,e.FpFnLE),{Fp:r,Fn:o}=n;let s=n.CURVE;const{h:i}=s;Co(e,{},{uvRatio:"function"});const a=Fi<<BigInt(o.BYTES*8)-Ce,c=b=>r.create(b),l=e.uvRatio||((b,w)=>{try{return{isValid:!0,value:r.sqrt(r.div(b,w))}}catch{return{isValid:!1,value:Ut}}});if(!Nb(r,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function d(b,w,I=!1){const y=I?Ce:Ut;return Ga("coordinate "+b,w,y,a),w}function u(b){if(!(b instanceof g))throw new Error("ExtendedPoint expected")}const f=vs((b,w)=>{const{X:I,Y:y,Z:k}=b,N=b.is0();w==null&&(w=N?Pb:r.inv(k));const x=c(I*w),T=c(y*w),S=r.mul(k,w);if(N)return{x:Ut,y:Ce};if(S!==Ce)throw new Error("invZ was invalid");return{x,y:T}}),h=vs(b=>{const{a:w,d:I}=s;if(b.is0())throw new Error("bad point: ZERO");const{X:y,Y:k,Z:N,T:x}=b,T=c(y*y),S=c(k*k),v=c(N*N),A=c(v*v),O=c(T*w),B=c(v*c(O+S)),C=c(A+c(I*c(T*S)));if(B!==C)throw new Error("bad point: equation left != right (1)");const E=c(y*k),P=c(N*x);if(E!==P)throw new Error("bad point: equation left != right (2)");return!0});class g{constructor(w,I,y,k){this.X=d("x",w),this.Y=d("y",I),this.Z=d("z",y,!0),this.T=d("t",k),Object.freeze(this)}static CURVE(){return s}static fromAffine(w){if(w instanceof g)throw new Error("extended point not allowed");const{x:I,y}=w||{};return d("x",I),d("y",y),new g(I,y,Ce,c(I*y))}static fromBytes(w,I=!1){const y=r.BYTES,{a:k,d:N}=s;w=vd(ct(w,y,"point")),yn(I,"zip215");const x=vd(w),T=w[y-1];x[y-1]=T&-129;const S=co(x),v=I?a:r.ORDER;Ga("point.y",S,Ut,v);const A=c(S*S),O=c(A-Ce),B=c(N*A-k);let{isValid:C,value:E}=l(O,B);if(!C)throw new Error("bad point: invalid y coordinate");const P=(E&Ce)===Ce,R=(T&128)!==0;if(!I&&E===Ut&&R)throw new Error("bad point: x=0 and x_0=1");return R!==P&&(E=c(-E)),g.fromAffine({x:E,y:S})}static fromHex(w,I=!1){return g.fromBytes(ge("point",w),I)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(w=8,I=!0){return m.createCache(this,w),I||this.multiply(Fi),this}assertValidity(){h(this)}equals(w){u(w);const{X:I,Y:y,Z:k}=this,{X:N,Y:x,Z:T}=w,S=c(I*T),v=c(N*k),A=c(y*T),O=c(x*k);return S===v&&A===O}is0(){return this.equals(g.ZERO)}negate(){return new g(c(-this.X),this.Y,this.Z,c(-this.T))}double(){const{a:w}=s,{X:I,Y:y,Z:k}=this,N=c(I*I),x=c(y*y),T=c(Fi*c(k*k)),S=c(w*N),v=I+y,A=c(c(v*v)-N-x),O=S+x,B=O-T,C=S-x,E=c(A*B),P=c(O*C),R=c(A*C),D=c(B*O);return new g(E,P,D,R)}add(w){u(w);const{a:I,d:y}=s,{X:k,Y:N,Z:x,T}=this,{X:S,Y:v,Z:A,T:O}=w,B=c(k*S),C=c(N*v),E=c(T*y*O),P=c(x*A),R=c((k+N)*(S+v)-B-C),D=P-E,M=P+E,F=c(C-I*B),L=c(R*D),H=c(M*F),$=c(R*F),X=c(D*M);return new g(L,H,X,$)}subtract(w){return this.add(w.negate())}multiply(w){if(!o.isValidNot0(w))throw new Error("invalid scalar: expected 1 <= sc < curve.n");const{p:I,f:y}=m.cached(this,w,k=>an(g,k));return an(g,[I,y])[0]}multiplyUnsafe(w,I=g.ZERO){if(!o.isValid(w))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return w===Ut?g.ZERO:this.is0()||w===Ce?this:m.unsafe(this,w,y=>an(g,y),I)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return m.unsafe(this,s.n).is0()}toAffine(w){return f(this,w)}clearCofactor(){return i===Ce?this:this.multiplyUnsafe(i)}toBytes(){const{x:w,y:I}=this.toAffine(),y=r.toBytes(I);return y[y.length-1]|=w&Ce?128:0,y}toHex(){return fn(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get ex(){return this.X}get ey(){return this.Y}get ez(){return this.Z}get et(){return this.T}static normalizeZ(w){return an(g,w)}static msm(w,I){return Ih(g,o,w,I)}_setWindowSize(w){this.precompute(w)}toRawBytes(){return this.toBytes()}}g.BASE=new g(s.Gx,s.Gy,Ce,c(s.Gx*s.Gy)),g.ZERO=new g(Ut,Ce,Ce,Ut),g.Fp=r,g.Fn=o;const m=new Ch(g,o.BITS);return g.BASE.precompute(8),g}function Bb(t,e,n={}){if(typeof e!="function")throw new Error('"hash" function param is required');Co(n,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});const{prehash:r}=n,{BASE:o,Fp:s,Fn:i}=t,a=n.randomBytes||Zc,c=n.adjustScalarBytes||(v=>v),l=n.domain||((v,A,O)=>{if(yn(O,"phflag"),A.length||O)throw new Error("Contexts/pre-hash are not supported");return v});function d(v){return i.create(co(v))}function u(v){const A=y.secretKey;v=ge("private key",v,A);const O=ge("hashed private key",e(v),2*A),B=c(O.slice(0,A)),C=O.slice(A,2*A),E=d(B);return{head:B,prefix:C,scalar:E}}function f(v){const{head:A,prefix:O,scalar:B}=u(v),C=o.multiply(B),E=C.toBytes();return{head:A,prefix:O,scalar:B,point:C,pointBytes:E}}function h(v){return f(v).pointBytes}function g(v=Uint8Array.of(),...A){const O=gt(...A);return d(e(l(O,ge("context",v),!!r)))}function m(v,A,O={}){v=ge("message",v),r&&(v=r(v));const{prefix:B,scalar:C,pointBytes:E}=f(A),P=g(O.context,B,v),R=o.multiply(P).toBytes(),D=g(O.context,R,E,v),M=i.create(P+D*C);if(!i.isValid(M))throw new Error("sign failed: invalid s");const F=gt(R,i.toBytes(M));return ct(F,y.signature,"result")}const b={zip215:!0};function w(v,A,O,B=b){const{context:C,zip215:E}=B,P=y.signature;v=ge("signature",v,P),A=ge("message",A),O=ge("publicKey",O,y.publicKey),E!==void 0&&yn(E,"zip215"),r&&(A=r(A));const R=P/2,D=v.subarray(0,R),M=co(v.subarray(R,P));let F,L,H;try{F=t.fromBytes(O,E),L=t.fromBytes(D,E),H=o.multiplyUnsafe(M)}catch{return!1}if(!E&&F.isSmallOrder())return!1;const $=g(C,L.toBytes(),F.toBytes(),A);return L.add(F.multiplyUnsafe($)).subtract(H).clearCofactor().is0()}const I=s.BYTES,y={secretKey:I,publicKey:I,signature:2*I,seed:I};function k(v=a(y.seed)){return ct(v,y.seed,"seed")}function N(v){const A=S.randomSecretKey(v);return{secretKey:A,publicKey:h(A)}}function x(v){return Ao(v)&&v.length===i.BYTES}function T(v,A){try{return!!t.fromBytes(v,A)}catch{return!1}}const S={getExtendedPublicKey:f,randomSecretKey:k,isValidSecretKey:x,isValidPublicKey:T,toMontgomery(v){const{y:A}=t.fromBytes(v),O=y.publicKey,B=O===32;if(!B&&O!==57)throw new Error("only defined for 25519 and 448");const C=B?s.div(Ce+A,Ce-A):s.div(A-Ce,A+Ce);return s.toBytes(C)},toMontgomerySecret(v){const A=y.secretKey;ct(v,A);const O=e(v.subarray(0,A));return c(O).subarray(0,A)},randomPrivateKey:k,precompute(v=8,A=t.BASE){return A.precompute(v,!1)}};return Object.freeze({keygen:N,getPublicKey:h,sign:m,verify:w,utils:S,Point:t,lengths:y})}function _b(t){const e={a:t.a,d:t.d,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},n=t.Fp,r=An(e.n,t.nBitLength,!0),o={Fp:n,Fn:r,uvRatio:t.uvRatio},s={randomBytes:t.randomBytes,adjustScalarBytes:t.adjustScalarBytes,domain:t.domain,prehash:t.prehash,mapToCurve:t.mapToCurve};return{CURVE:e,curveOpts:o,hash:t.hash,eddsaOpts:s}}function Ob(t,e){const n=e.Point;return Object.assign({},e,{ExtendedPoint:n,CURVE:t,nBitLength:n.Fn.BITS,nByteLength:n.Fn.BYTES})}function Db(t){const{CURVE:e,curveOpts:n,hash:r,eddsaOpts:o}=_b(t),s=Lb(e,n),i=Bb(s,r,o);return Ob(t,i)}const Fb=BigInt(1),Cd=BigInt(2);BigInt(3);const Mb=BigInt(5),jb=BigInt(8),tl=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),Th={p:tl,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:jb,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function Hb(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),o=BigInt(80),s=tl,a=t*t%s*t%s,c=pe(a,Cd,s)*a%s,l=pe(c,Fb,s)*t%s,d=pe(l,Mb,s)*l%s,u=pe(d,e,s)*d%s,f=pe(u,n,s)*u%s,h=pe(f,r,s)*f%s,g=pe(h,o,s)*h%s,m=pe(g,o,s)*h%s,b=pe(m,e,s)*d%s;return{pow_p_5_8:pe(b,Cd,s)*t%s,b2:a}}function Ub(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Id=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function $b(t,e){const n=tl,r=Se(e*e*e,n),o=Se(r*r*e,n),s=Hb(t*o).pow_p_5_8;let i=Se(t*r*s,n);const a=Se(e*i*i,n),c=i,l=Se(i*Id,n),d=a===t,u=a===Se(-t,n),f=a===Se(-t*Id,n);return d&&(i=c),(u||f)&&(i=l),xb(i,n)&&(i=Se(-i,n)),{isValid:d||u,value:i}}const qb=An(Th.p,{isLE:!0}),Kb={...Th,Fp:qb,hash:pb,adjustScalarBytes:Ub,uvRatio:$b},xs=Db(Kb);class Rd extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}}class Td extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}}class zb extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}}const Bt={get(t=globalThis){const e=t.crypto;if(e?.subtle==null)throw new zb("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}},Es=32,Et=64,Va=32;let Jn;const Ph=(async()=>{try{return await Bt.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function Wb(){const t=xs.utils.randomPrivateKey(),e=xs.getPublicKey(t);return{privateKey:Qb(t,e),publicKey:e}}async function Gb(t,e){let n;t.length===Et?n=t.subarray(0,32):n=t;const r={crv:"Ed25519",kty:"OKP",x:te(t.subarray(32),"base64url"),d:te(n,"base64url"),ext:!0,key_ops:["sign"]},o=await Bt.get().subtle.importKey("jwk",r,{name:"Ed25519"},!0,["sign"]),s=await Bt.get().subtle.sign({name:"Ed25519"},o,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(s,0,s.byteLength)}function Vb(t,e){const n=t.subarray(0,Va);return xs.sign(e instanceof Uint8Array?e:e.subarray(),n)}async function Xb(t,e){return Jn==null&&(Jn=await Ph),Jn?Gb(t,e):Vb(t,e)}async function Yb(t,e,n){if(t.buffer instanceof ArrayBuffer){const r=await Bt.get().subtle.importKey("raw",t.buffer,{name:"Ed25519"},!1,["verify"]);return await Bt.get().subtle.verify({name:"Ed25519"},r,e,n instanceof Uint8Array?n:n.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function Zb(t,e,n){return xs.verify(e,n instanceof Uint8Array?n:n.subarray(),t)}async function Jb(t,e,n){return Jn==null&&(Jn=await Ph),Jn?Yb(t,e,n):Zb(t,e,n)}function Qb(t,e){const n=new Uint8Array(Et);for(let r=0;r<Va;r++)n[r]=t[r],n[Va+r]=e[r];return n}function ri(t){return t==null?!1:typeof t.then=="function"&&typeof t.catch=="function"&&typeof t.finally=="function"}class Nh{type="Ed25519";raw;constructor(e){this.raw=lo(e,Es)}toMultihash(){return xo.digest(ai(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return je.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}verify(e,n,r){r?.signal?.throwIfAborted();const o=Jb(this.raw,n,e);return ri(o)?o.then(s=>(r?.signal?.throwIfAborted(),s)):o}}class Xa{type="Ed25519";raw;publicKey;constructor(e,n){this.raw=lo(e,Et),this.publicKey=new Nh(n)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}sign(e,n){n?.signal?.throwIfAborted();const r=Xb(this.raw,e);return ri(r)?r.then(o=>(n?.signal?.throwIfAborted(),o)):(n?.signal?.throwIfAborted(),r)}}function e0(t){if(t.length>Et){t=lo(t,Et+Es);const r=t.subarray(0,Et),o=t.subarray(Et,t.length);return new Xa(r,o)}t=lo(t,Et);const e=t.subarray(0,Et),n=t.subarray(Es);return new Xa(e,n)}function Lh(t){return t=lo(t,Es),new Nh(t)}async function t0(){const{privateKey:t,publicKey:e}=Wb();return new Xa(t,e)}function lo(t,e){if(t=Uint8Array.from(t??[]),t.length!==e)throw new lt(`Key must be a Uint8Array of length ${e}, got ${t.length}`);return t}const n0=Math.pow(2,7),r0=Math.pow(2,14),o0=Math.pow(2,21),nl=Math.pow(2,28),rl=Math.pow(2,35),ol=Math.pow(2,42),sl=Math.pow(2,49),ie=128,Oe=127;function kn(t){if(t<n0)return 1;if(t<r0)return 2;if(t<o0)return 3;if(t<nl)return 4;if(t<rl)return 5;if(t<ol)return 6;if(t<sl)return 7;if(Number.MAX_SAFE_INTEGER!=null&&t>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Bh(t,e,n=0){switch(kn(t)){case 8:e[n++]=t&255|ie,t/=128;case 7:e[n++]=t&255|ie,t/=128;case 6:e[n++]=t&255|ie,t/=128;case 5:e[n++]=t&255|ie,t/=128;case 4:e[n++]=t&255|ie,t>>>=7;case 3:e[n++]=t&255|ie,t>>>=7;case 2:e[n++]=t&255|ie,t>>>=7;case 1:{e[n++]=t&255,t>>>=7;break}default:throw new Error("unreachable")}return e}function s0(t,e,n=0){switch(kn(t)){case 8:e.set(n++,t&255|ie),t/=128;case 7:e.set(n++,t&255|ie),t/=128;case 6:e.set(n++,t&255|ie),t/=128;case 5:e.set(n++,t&255|ie),t/=128;case 4:e.set(n++,t&255|ie),t>>>=7;case 3:e.set(n++,t&255|ie),t>>>=7;case 2:e.set(n++,t&255|ie),t>>>=7;case 1:{e.set(n++,t&255),t>>>=7;break}default:throw new Error("unreachable")}return e}function _h(t,e){let n=t[e],r=0;if(r+=n&Oe,n<ie||(n=t[e+1],r+=(n&Oe)<<7,n<ie)||(n=t[e+2],r+=(n&Oe)<<14,n<ie)||(n=t[e+3],r+=(n&Oe)<<21,n<ie)||(n=t[e+4],r+=(n&Oe)*nl,n<ie)||(n=t[e+5],r+=(n&Oe)*rl,n<ie)||(n=t[e+6],r+=(n&Oe)*ol,n<ie)||(n=t[e+7],r+=(n&Oe)*sl,n<ie))return r;throw new RangeError("Could not decode varint")}function i0(t,e){let n=t.get(e),r=0;if(r+=n&Oe,n<ie||(n=t.get(e+1),r+=(n&Oe)<<7,n<ie)||(n=t.get(e+2),r+=(n&Oe)<<14,n<ie)||(n=t.get(e+3),r+=(n&Oe)<<21,n<ie)||(n=t.get(e+4),r+=(n&Oe)*nl,n<ie)||(n=t.get(e+5),r+=(n&Oe)*rl,n<ie)||(n=t.get(e+6),r+=(n&Oe)*ol,n<ie)||(n=t.get(e+7),r+=(n&Oe)*sl,n<ie))return r;throw new RangeError("Could not decode varint")}function a0(t,e,n=0){return e==null&&(e=Lt(kn(t))),e instanceof Uint8Array?Bh(t,e,n):s0(t,e,n)}function Oh(t,e=0){return t instanceof Uint8Array?_h(t,e):i0(t,e)}const il=new Float32Array([-0]),Yt=new Uint8Array(il.buffer);function c0(t,e,n){il[0]=t,e[n]=Yt[0],e[n+1]=Yt[1],e[n+2]=Yt[2],e[n+3]=Yt[3]}function l0(t,e){return Yt[0]=t[e],Yt[1]=t[e+1],Yt[2]=t[e+2],Yt[3]=t[e+3],il[0]}const al=new Float64Array([-0]),De=new Uint8Array(al.buffer);function d0(t,e,n){al[0]=t,e[n]=De[0],e[n+1]=De[1],e[n+2]=De[2],e[n+3]=De[3],e[n+4]=De[4],e[n+5]=De[5],e[n+6]=De[6],e[n+7]=De[7]}function u0(t,e){return De[0]=t[e],De[1]=t[e+1],De[2]=t[e+2],De[3]=t[e+3],De[4]=t[e+4],De[5]=t[e+5],De[6]=t[e+6],De[7]=t[e+7],al[0]}const f0=BigInt(Number.MAX_SAFE_INTEGER),h0=BigInt(Number.MIN_SAFE_INTEGER);class Fe{lo;hi;constructor(e,n){this.lo=e|0,this.hi=n|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){const n=~this.lo+1>>>0;let r=~this.hi>>>0;return n===0&&(r=r+1>>>0),-(n+r*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){const n=~this.lo+1>>>0;let r=~this.hi>>>0;return n===0&&(r=r+1>>>0),-(BigInt(n)+(BigInt(r)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){const e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){const e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){const e=this.lo,n=(this.lo>>>28|this.hi<<4)>>>0,r=this.hi>>>24;return r===0?n===0?e<16384?e<128?1:2:e<2097152?3:4:n<16384?n<128?5:6:n<2097152?7:8:r<128?9:10}static fromBigInt(e){if(e===0n)return hn;if(e<f0&&e>h0)return this.fromNumber(Number(e));const n=e<0n;n&&(e=-e);let r=e>>32n,o=e-(r<<32n);return n&&(r=~r|0n,o=~o|0n,++o>Pd&&(o=0n,++r>Pd&&(r=0n))),new Fe(Number(o),Number(r))}static fromNumber(e){if(e===0)return hn;const n=e<0;n&&(e=-e);let r=e>>>0,o=(e-r)/4294967296>>>0;return n&&(o=~o>>>0,r=~r>>>0,++r>4294967295&&(r=0,++o>4294967295&&(o=0))),new Fe(r,o)}static from(e){return typeof e=="number"?Fe.fromNumber(e):typeof e=="bigint"?Fe.fromBigInt(e):typeof e=="string"?Fe.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new Fe(e.low>>>0,e.high>>>0):hn}}const hn=new Fe(0,0);hn.toBigInt=function(){return 0n};hn.zzEncode=hn.zzDecode=function(){return this};hn.length=function(){return 1};const Pd=4294967296n;function p0(t){let e=0,n=0;for(let r=0;r<t.length;++r)n=t.charCodeAt(r),n<128?e+=1:n<2048?e+=2:(n&64512)===55296&&(t.charCodeAt(r+1)&64512)===56320?(++r,e+=4):e+=3;return e}function g0(t,e,n){if(n-e<1)return"";let o;const s=[];let i=0,a;for(;e<n;)a=t[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|t[e++]&63:a>239&&a<365?(a=((a&7)<<18|(t[e++]&63)<<12|(t[e++]&63)<<6|t[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(t[e++]&63)<<6|t[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function Dh(t,e,n){const r=n;let o,s;for(let i=0;i<t.length;++i)o=t.charCodeAt(i),o<128?e[n++]=o:o<2048?(e[n++]=o>>6|192,e[n++]=o&63|128):(o&64512)===55296&&((s=t.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[n++]=o>>18|240,e[n++]=o>>12&63|128,e[n++]=o>>6&63|128,e[n++]=o&63|128):(e[n++]=o>>12|224,e[n++]=o>>6&63|128,e[n++]=o&63|128);return n-r}function ot(t,e){return RangeError(`index out of range: ${t.pos} + ${e??1} > ${t.len}`)}function Oo(t,e){return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0}class m0{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,ot(this,10);return e}int32(){return this.uint32()|0}sint32(){const e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw ot(this,4);return Oo(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw ot(this,4);return Oo(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw ot(this,4);const e=l0(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw ot(this,4);const e=u0(this.buf,this.pos);return this.pos+=8,e}bytes(){const e=this.uint32(),n=this.pos,r=this.pos+e;if(r>this.len)throw ot(this,e);return this.pos+=e,n===r?new Uint8Array(0):this.buf.subarray(n,r)}string(){const e=this.bytes();return g0(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw ot(this,e);this.pos+=e}else do if(this.pos>=this.len)throw ot(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){const e=new Fe(0,0);let n=0;if(this.len-this.pos>4){for(;n<4;++n)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<n*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;n=0}else{for(;n<3;++n){if(this.pos>=this.len)throw ot(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<n*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<n*7)>>>0,e}if(this.len-this.pos>4){for(;n<5;++n)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<n*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;n<5;++n){if(this.pos>=this.len)throw ot(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<n*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw ot(this,8);const e=Oo(this.buf,this.pos+=4),n=Oo(this.buf,this.pos+=4);return new Fe(e,n)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){const e=_h(this.buf,this.pos);return this.pos+=kn(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}}function w0(t){return new m0(t instanceof Uint8Array?t:t.subarray())}function oi(t,e,n){const r=w0(t);return e.decode(r,void 0,n)}function y0(t){let r,o=8192;return function(i){if(i<1||i>4096)return Lt(i);o+i>8192&&(r=Lt(8192),o=0);const a=r.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}class Wr{fn;len;next;val;constructor(e,n,r){this.fn=e,this.len=n,this.next=void 0,this.val=r}}function Mi(){}class b0{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}}const v0=y0();function S0(t){return globalThis.Buffer!=null?Lt(t):v0(t)}class Ya{len;head;tail;states;constructor(){this.len=0,this.head=new Wr(Mi,0,0),this.tail=this.head,this.states=null}_push(e,n,r){return this.tail=this.tail.next=new Wr(e,n,r),this.len+=n,this}uint32(e){return this.len+=(this.tail=this.tail.next=new E0((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Do,10,Fe.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){const n=Fe.fromBigInt(e);return this._push(Do,n.length(),n)}uint64Number(e){return this._push(Bh,kn(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){const n=Fe.fromBigInt(e).zzEncode();return this._push(Do,n.length(),n)}sint64Number(e){const n=Fe.fromNumber(e).zzEncode();return this._push(Do,n.length(),n)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(ji,1,e?1:0)}fixed32(e){return this._push(Pr,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){const n=Fe.fromBigInt(e);return this._push(Pr,4,n.lo)._push(Pr,4,n.hi)}fixed64Number(e){const n=Fe.fromNumber(e);return this._push(Pr,4,n.lo)._push(Pr,4,n.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(c0,4,e)}double(e){return this._push(d0,8,e)}bytes(e){const n=e.length>>>0;return n===0?this._push(ji,1,0):this.uint32(n)._push(A0,n,e)}string(e){const n=p0(e);return n!==0?this.uint32(n)._push(Dh,n,e):this._push(ji,1,0)}fork(){return this.states=new b0(this),this.head=this.tail=new Wr(Mi,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new Wr(Mi,0,0),this.len=0),this}ldelim(){const e=this.head,n=this.tail,r=this.len;return this.reset().uint32(r),r!==0&&(this.tail.next=e.next,this.tail=n,this.len+=r),this}finish(){let e=this.head.next;const n=S0(this.len);let r=0;for(;e!=null;)e.fn(e.val,n,r),r+=e.len,e=e.next;return n}}function ji(t,e,n){e[n]=t&255}function x0(t,e,n){for(;t>127;)e[n++]=t&127|128,t>>>=7;e[n]=t}class E0 extends Wr{next;constructor(e,n){super(x0,e,n),this.next=void 0}}function Do(t,e,n){for(;t.hi!==0;)e[n++]=t.lo&127|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)e[n++]=t.lo&127|128,t.lo=t.lo>>>7;e[n++]=t.lo}function Pr(t,e,n){e[n]=t&255,e[n+1]=t>>>8&255,e[n+2]=t>>>16&255,e[n+3]=t>>>24}function A0(t,e,n){e.set(t,n)}globalThis.Buffer!=null&&(Ya.prototype.bytes=function(t){const e=t.length>>>0;return this.uint32(e),e>0&&this._push(k0,e,t),this},Ya.prototype.string=function(t){const e=globalThis.Buffer.byteLength(t);return this.uint32(e),e>0&&this._push(C0,e,t),this});function k0(t,e,n){e.set(t,n)}function C0(t,e,n){t.length<40?Dh(t,e,n):e.utf8Write!=null?e.utf8Write(t,n):e.set(ve(t),n)}function I0(){return new Ya}function si(t,e){const n=I0();return e.encode(t,n,{lengthDelimited:!1}),n.finish()}var As;(function(t){t[t.VARINT=0]="VARINT",t[t.BIT64=1]="BIT64",t[t.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",t[t.START_GROUP=3]="START_GROUP",t[t.END_GROUP=4]="END_GROUP",t[t.BIT32=5]="BIT32"})(As||(As={}));function Fh(t,e,n,r){return{name:t,type:e,encode:n,decode:r}}function R0(t){function e(o){if(t[o.toString()]==null)throw new Error("Invalid enum value");return t[o]}const n=function(s,i){const a=e(s);i.int32(a)},r=function(s){const i=s.int32();return e(i)};return Fh("enum",As.VARINT,n,r)}function ii(t,e){return Fh("message",As.LENGTH_DELIMITED,t,e)}class Nd extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"}var fe;(function(t){t.RSA="RSA",t.Ed25519="Ed25519",t.secp256k1="secp256k1",t.ECDSA="ECDSA"})(fe||(fe={}));var Za;(function(t){t[t.RSA=0]="RSA",t[t.Ed25519=1]="Ed25519",t[t.secp256k1=2]="secp256k1",t[t.ECDSA=3]="ECDSA"})(Za||(Za={}));(function(t){t.codec=()=>R0(Za)})(fe||(fe={}));var bn;(function(t){let e;t.codec=()=>(e==null&&(e=ii((n,r,o={})=>{o.lengthDelimited!==!1&&r.fork(),n.Type!=null&&(r.uint32(8),fe.codec().encode(n.Type,r)),n.Data!=null&&(r.uint32(18),r.bytes(n.Data)),o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{s.Type=fe.codec().decode(n);break}case 2:{s.Data=n.bytes();break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>si(n,t.codec()),t.decode=(n,r)=>oi(n,t.codec(),r)})(bn||(bn={}));var ks;(function(t){let e;t.codec=()=>(e==null&&(e=ii((n,r,o={})=>{o.lengthDelimited!==!1&&r.fork(),n.Type!=null&&(r.uint32(8),fe.codec().encode(n.Type,r)),n.Data!=null&&(r.uint32(18),r.bytes(n.Data)),o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{s.Type=fe.codec().decode(n);break}case 2:{s.Data=n.bytes();break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>si(n,t.codec()),t.decode=(n,r)=>oi(n,t.codec(),r)})(ks||(ks={}));const Mh=lh;class jh{type="RSA";jwk;_raw;_multihash;constructor(e,n){this.jwk=e,this._multihash=n}get raw(){return this._raw==null&&(this._raw=Uh(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return ue.createV1(114,this._multihash)}toString(){return je.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}verify(e,n,r){return q0(this.jwk,n,e,r)}}class T0{type="RSA";jwk;_raw;publicKey;constructor(e,n){this.jwk=e,this.publicKey=n}get raw(){return this._raw==null&&(this._raw=_0(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}sign(e,n){return $0(this.jwk,e,n)}}const P0=8192,Hh=18,N0=1062,L0=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function B0(t){return{n:te(t[1],"base64url"),e:te(t[2],"base64url"),d:te(t[3],"base64url"),p:te(t[4],"base64url"),q:te(t[5],"base64url"),dp:te(t[6],"base64url"),dq:te(t[7],"base64url"),qi:te(t[8],"base64url"),kty:"RSA"}}function _0(t){if(t.n==null||t.e==null||t.d==null||t.p==null||t.q==null||t.dp==null||t.dq==null||t.qi==null)throw new lt("JWK was missing components");return Tt([Ve(Uint8Array.from([0])),Ve(ve(t.n,"base64url")),Ve(ve(t.e,"base64url")),Ve(ve(t.d,"base64url")),Ve(ve(t.p,"base64url")),Ve(ve(t.q,"base64url")),Ve(ve(t.dp,"base64url")),Ve(ve(t.dq,"base64url")),Ve(ve(t.qi,"base64url"))]).subarray()}function O0(t){const e=yr(t[1],{offset:0});return{kty:"RSA",n:te(e[0],"base64url"),e:te(e[1],"base64url")}}function Uh(t){if(t.n==null||t.e==null)throw new lt("JWK was missing components");return Tt([L0,Xc(Tt([Ve(ve(t.n,"base64url")),Ve(ve(t.e,"base64url"))]))]).subarray()}function D0(t){const e=yr(t);return F0(e)}function F0(t){const e=B0(t);return H0(e)}function M0(t,e){if(t.byteLength>=N0)throw new Hf("Key size is too large");const n=yr(t,{offset:0});return j0(n,t,e)}function j0(t,e,n){const r=O0(t);if(n==null){const o=Mh(bn.encode({Type:fe.RSA,Data:e}));n=So(Hh,o)}return new jh(r,n)}function H0(t){if(K0(t)>P0)throw new lt("Key size is too large");const e=U0(t),n=Mh(bn.encode({Type:fe.RSA,Data:Uh(e.publicKey)})),r=So(Hh,n);return new T0(e.privateKey,new jh(e.publicKey,r))}function U0(t){if(t==null)throw new lt("Missing key parameter");return{privateKey:t,publicKey:{kty:t.kty,n:t.n,e:t.e}}}async function $0(t,e,n){const r=await Bt.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);n?.signal?.throwIfAborted();const o=await Bt.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},r,e instanceof Uint8Array?e:e.subarray());return n?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function q0(t,e,n,r){const o=await Bt.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);r?.signal?.throwIfAborted();const s=await Bt.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,n instanceof Uint8Array?n:n.subarray());return r?.signal?.throwIfAborted(),s}function K0(t){if(t.kty!=="RSA")throw new lt("invalid key type");if(t.n==null)throw new lt("invalid key modulus");return ve(t.n,"base64url").length*8}class $h extends sh{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,rh(e);const r=Yc(n);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const o=this.blockLen,s=new Uint8Array(o);s.set(r.length>o?e.create().update(r).digest():r);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),lr(s)}update(e){return ys(this),this.iHash.update(e),this}digestInto(e){ys(this),En(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const qh=(t,e,n)=>new $h(t,e).update(n).digest();qh.create=(t,e)=>new $h(t,e);const Ld=(t,e)=>(t+(t>=0?e:-e)/Kh)/e;function z0(t,e,n){const[[r,o],[s,i]]=e,a=Ld(i*t,n),c=Ld(-o*t,n);let l=t-a*r-c*s,d=-a*o-c*i;const u=l<Ct,f=d<Ct;u&&(l=-l),f&&(d=-d);const h=ko(Math.ceil(fh(n)/2))+Qn;if(l<Ct||l>=h||d<Ct||d>=h)throw new Error("splitScalar (endomorphism): failed, k="+t);return{k1neg:u,k1:l,k2neg:f,k2:d}}function Ja(t){if(!["compact","recovered","der"].includes(t))throw new Error('Signature format must be "compact", "recovered", or "der"');return t}function Hi(t,e){const n={};for(let r of Object.keys(e))n[r]=t[r]===void 0?e[r]:t[r];return yn(n.lowS,"lowS"),yn(n.prehash,"prehash"),n.format!==void 0&&Ja(n.format),n}class W0 extends Error{constructor(e=""){super(e)}}const At={Err:W0,_tlv:{encode:(t,e)=>{const{Err:n}=At;if(t<0||t>256)throw new n("tlv.encode: wrong tag");if(e.length&1)throw new n("tlv.encode: unpadded data");const r=e.length/2,o=_o(r);if(o.length/2&128)throw new n("tlv.encode: long form length too big");const s=r>127?_o(o.length/2|128):"";return _o(t)+s+o+e},decode(t,e){const{Err:n}=At;let r=0;if(t<0||t>256)throw new n("tlv.encode: wrong tag");if(e.length<2||e[r++]!==t)throw new n("tlv.decode: wrong tlv");const o=e[r++],s=!!(o&128);let i=0;if(!s)i=o;else{const c=o&127;if(!c)throw new n("tlv.decode(long): indefinite length not supported");if(c>4)throw new n("tlv.decode(long): byte length is too big");const l=e.subarray(r,r+c);if(l.length!==c)throw new n("tlv.decode: length bytes not complete");if(l[0]===0)throw new n("tlv.decode(long): zero leftmost byte");for(const d of l)i=i<<8|d;if(r+=c,i<128)throw new n("tlv.decode(long): not minimal encoding")}const a=e.subarray(r,r+i);if(a.length!==i)throw new n("tlv.decode: wrong value length");return{v:a,l:e.subarray(r+i)}}},_int:{encode(t){const{Err:e}=At;if(t<Ct)throw new e("integer: negative integers are not allowed");let n=_o(t);if(Number.parseInt(n[0],16)&8&&(n="00"+n),n.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return n},decode(t){const{Err:e}=At;if(t[0]&128)throw new e("invalid signature integer: negative");if(t[0]===0&&!(t[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return ni(t)}},toSig(t){const{Err:e,_int:n,_tlv:r}=At,o=ge("signature",t),{v:s,l:i}=r.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");const{v:a,l:c}=r.decode(2,s),{v:l,l:d}=r.decode(2,c);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:n.decode(a),s:n.decode(l)}},hexFromSig(t){const{_tlv:e,_int:n}=At,r=e.encode(2,n.encode(t.r)),o=e.encode(2,n.encode(t.s)),s=r+o;return e.encode(48,s)}},Ct=BigInt(0),Qn=BigInt(1),Kh=BigInt(2),Fo=BigInt(3),G0=BigInt(4);function zn(t,e){const{BYTES:n}=t;let r;if(typeof e=="bigint")r=e;else{let o=ge("private key",e);try{r=t.fromBytes(o)}catch{throw new Error(`invalid private key: expected ui8a of size ${n}, got ${typeof e}`)}}if(!t.isValidNot0(r))throw new Error("invalid private key: out of range [1..N-1]");return r}function V0(t,e={}){const n=Rh("weierstrass",t,e),{Fp:r,Fn:o}=n;let s=n.CURVE;const{h:i,n:a}=s;Co(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});const{endo:c}=e;if(c&&(!r.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');const l=Wh(r,o);function d(){if(!r.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(B,C,E){const{x:P,y:R}=C.toAffine(),D=r.toBytes(P);if(yn(E,"isCompressed"),E){d();const M=!r.isOdd(R);return gt(zh(M),D)}else return gt(Uint8Array.of(4),D,r.toBytes(R))}function f(B){ct(B,void 0,"Point");const{publicKey:C,publicKeyUncompressed:E}=l,P=B.length,R=B[0],D=B.subarray(1);if(P===C&&(R===2||R===3)){const M=r.fromBytes(D);if(!r.isValid(M))throw new Error("bad point: is not on curve, wrong x");const F=m(M);let L;try{L=r.sqrt(F)}catch(X){const Y=X instanceof Error?": "+X.message:"";throw new Error("bad point: is not on curve, sqrt error"+Y)}d();const H=r.isOdd(L);return(R&1)===1!==H&&(L=r.neg(L)),{x:M,y:L}}else if(P===E&&R===4){const M=r.BYTES,F=r.fromBytes(D.subarray(0,M)),L=r.fromBytes(D.subarray(M,M*2));if(!b(F,L))throw new Error("bad point: is not on curve");return{x:F,y:L}}else throw new Error(`bad point: got length ${P}, expected compressed=${C} or uncompressed=${E}`)}const h=e.toBytes||u,g=e.fromBytes||f;function m(B){const C=r.sqr(B),E=r.mul(C,B);return r.add(r.add(E,r.mul(B,s.a)),s.b)}function b(B,C){const E=r.sqr(C),P=m(B);return r.eql(E,P)}if(!b(s.Gx,s.Gy))throw new Error("bad curve params: generator point");const w=r.mul(r.pow(s.a,Fo),G0),I=r.mul(r.sqr(s.b),BigInt(27));if(r.is0(r.add(w,I)))throw new Error("bad curve params: a or b");function y(B,C,E=!1){if(!r.isValid(C)||E&&r.is0(C))throw new Error(`bad point coordinate ${B}`);return C}function k(B){if(!(B instanceof v))throw new Error("ProjectivePoint expected")}function N(B){if(!c||!c.basises)throw new Error("no endo");return z0(B,c.basises,o.ORDER)}const x=vs((B,C)=>{const{X:E,Y:P,Z:R}=B;if(r.eql(R,r.ONE))return{x:E,y:P};const D=B.is0();C==null&&(C=D?r.ONE:r.inv(R));const M=r.mul(E,C),F=r.mul(P,C),L=r.mul(R,C);if(D)return{x:r.ZERO,y:r.ZERO};if(!r.eql(L,r.ONE))throw new Error("invZ was invalid");return{x:M,y:F}}),T=vs(B=>{if(B.is0()){if(e.allowInfinityPoint&&!r.is0(B.Y))return;throw new Error("bad point: ZERO")}const{x:C,y:E}=B.toAffine();if(!r.isValid(C)||!r.isValid(E))throw new Error("bad point: x or y not field elements");if(!b(C,E))throw new Error("bad point: equation left != right");if(!B.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function S(B,C,E,P,R){return E=new v(r.mul(E.X,B),E.Y,E.Z),C=Ss(P,C),E=Ss(R,E),C.add(E)}class v{constructor(C,E,P){this.X=y("x",C),this.Y=y("y",E,!0),this.Z=y("z",P),Object.freeze(this)}static CURVE(){return s}static fromAffine(C){const{x:E,y:P}=C||{};if(!C||!r.isValid(E)||!r.isValid(P))throw new Error("invalid affine point");if(C instanceof v)throw new Error("projective point not allowed");return r.is0(E)&&r.is0(P)?v.ZERO:new v(E,P,r.ONE)}static fromBytes(C){const E=v.fromAffine(g(ct(C,void 0,"point")));return E.assertValidity(),E}static fromHex(C){return v.fromBytes(ge("pointHex",C))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(C=8,E=!0){return O.createCache(this,C),E||this.multiply(Fo),this}assertValidity(){T(this)}hasEvenY(){const{y:C}=this.toAffine();if(!r.isOdd)throw new Error("Field doesn't support isOdd");return!r.isOdd(C)}equals(C){k(C);const{X:E,Y:P,Z:R}=this,{X:D,Y:M,Z:F}=C,L=r.eql(r.mul(E,F),r.mul(D,R)),H=r.eql(r.mul(P,F),r.mul(M,R));return L&&H}negate(){return new v(this.X,r.neg(this.Y),this.Z)}double(){const{a:C,b:E}=s,P=r.mul(E,Fo),{X:R,Y:D,Z:M}=this;let F=r.ZERO,L=r.ZERO,H=r.ZERO,$=r.mul(R,R),X=r.mul(D,D),Y=r.mul(M,M),U=r.mul(R,D);return U=r.add(U,U),H=r.mul(R,M),H=r.add(H,H),F=r.mul(C,H),L=r.mul(P,Y),L=r.add(F,L),F=r.sub(X,L),L=r.add(X,L),L=r.mul(F,L),F=r.mul(U,F),H=r.mul(P,H),Y=r.mul(C,Y),U=r.sub($,Y),U=r.mul(C,U),U=r.add(U,H),H=r.add($,$),$=r.add(H,$),$=r.add($,Y),$=r.mul($,U),L=r.add(L,$),Y=r.mul(D,M),Y=r.add(Y,Y),$=r.mul(Y,U),F=r.sub(F,$),H=r.mul(Y,X),H=r.add(H,H),H=r.add(H,H),new v(F,L,H)}add(C){k(C);const{X:E,Y:P,Z:R}=this,{X:D,Y:M,Z:F}=C;let L=r.ZERO,H=r.ZERO,$=r.ZERO;const X=s.a,Y=r.mul(s.b,Fo);let U=r.mul(E,D),K=r.mul(P,M),q=r.mul(R,F),W=r.add(E,P),z=r.add(D,M);W=r.mul(W,z),z=r.add(U,K),W=r.sub(W,z),z=r.add(E,R);let V=r.add(D,F);return z=r.mul(z,V),V=r.add(U,q),z=r.sub(z,V),V=r.add(P,R),L=r.add(M,F),V=r.mul(V,L),L=r.add(K,q),V=r.sub(V,L),$=r.mul(X,z),L=r.mul(Y,q),$=r.add(L,$),L=r.sub(K,$),$=r.add(K,$),H=r.mul(L,$),K=r.add(U,U),K=r.add(K,U),q=r.mul(X,q),z=r.mul(Y,z),K=r.add(K,q),q=r.sub(U,q),q=r.mul(X,q),z=r.add(z,q),U=r.mul(K,z),H=r.add(H,U),U=r.mul(V,z),L=r.mul(W,L),L=r.sub(L,U),U=r.mul(W,K),$=r.mul(V,$),$=r.add($,U),new v(L,H,$)}subtract(C){return this.add(C.negate())}is0(){return this.equals(v.ZERO)}multiply(C){const{endo:E}=e;if(!o.isValidNot0(C))throw new Error("invalid scalar: out of range");let P,R;const D=M=>O.cached(this,M,F=>an(v,F));if(E){const{k1neg:M,k1:F,k2neg:L,k2:H}=N(C),{p:$,f:X}=D(F),{p:Y,f:U}=D(H);R=X.add(U),P=S(E.beta,$,Y,M,L)}else{const{p:M,f:F}=D(C);P=M,R=F}return an(v,[P,R])[0]}multiplyUnsafe(C){const{endo:E}=e,P=this;if(!o.isValid(C))throw new Error("invalid scalar: out of range");if(C===Ct||P.is0())return v.ZERO;if(C===Qn)return P;if(O.hasCache(this))return this.multiply(C);if(E){const{k1neg:R,k1:D,k2neg:M,k2:F}=N(C),{p1:L,p2:H}=Tb(v,P,D,F);return S(E.beta,L,H,R,M)}else return O.unsafe(P,C)}multiplyAndAddUnsafe(C,E,P){const R=this.multiplyUnsafe(E).add(C.multiplyUnsafe(P));return R.is0()?void 0:R}toAffine(C){return x(this,C)}isTorsionFree(){const{isTorsionFree:C}=e;return i===Qn?!0:C?C(v,this):O.unsafe(this,a).is0()}clearCofactor(){const{clearCofactor:C}=e;return i===Qn?this:C?C(v,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(C=!0){return yn(C,"isCompressed"),this.assertValidity(),h(v,this,C)}toHex(C=!0){return fn(this.toBytes(C))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(C=!0){return this.toBytes(C)}_setWindowSize(C){this.precompute(C)}static normalizeZ(C){return an(v,C)}static msm(C,E){return Ih(v,o,C,E)}static fromPrivateKey(C){return v.BASE.multiply(zn(o,C))}}v.BASE=new v(s.Gx,s.Gy,r.ONE),v.ZERO=new v(r.ZERO,r.ONE,r.ZERO),v.Fp=r,v.Fn=o;const A=o.BITS,O=new Ch(v,e.endo?Math.ceil(A/2):A);return v.BASE.precompute(8),v}function zh(t){return Uint8Array.of(t?2:3)}function Wh(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function X0(t,e={}){const{Fn:n}=t,r=e.randomBytes||Zc,o=Object.assign(Wh(t.Fp,n),{seed:Eh(n.ORDER)});function s(h){try{return!!zn(n,h)}catch{return!1}}function i(h,g){const{publicKey:m,publicKeyUncompressed:b}=o;try{const w=h.length;return g===!0&&w!==m||g===!1&&w!==b?!1:!!t.fromBytes(h)}catch{return!1}}function a(h=r(o.seed)){return Cb(ct(h,o.seed,"seed"),n.ORDER)}function c(h,g=!0){return t.BASE.multiply(zn(n,h)).toBytes(g)}function l(h){const g=a(h);return{secretKey:g,publicKey:c(g)}}function d(h){if(typeof h=="bigint")return!1;if(h instanceof t)return!0;const{secretKey:g,publicKey:m,publicKeyUncompressed:b}=o;if(n.allowedLengths||g===m)return;const w=ge("key",h).length;return w===m||w===b}function u(h,g,m=!0){if(d(h)===!0)throw new Error("first arg must be private key");if(d(g)===!1)throw new Error("second arg must be public key");const b=zn(n,h);return t.fromHex(g).multiply(b).toBytes(m)}return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:l,Point:t,utils:{isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a,isValidPrivateKey:s,randomPrivateKey:a,normPrivateKeyToScalar:h=>zn(n,h),precompute(h=8,g=t.BASE){return g.precompute(h,!1)}},lengths:o})}function Y0(t,e,n={}){rh(e),Co(n,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});const r=n.randomBytes||Zc,o=n.hmac||((E,...P)=>qh(e,E,gt(...P))),{Fp:s,Fn:i}=t,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h}=X0(t,n),g={prehash:!1,lowS:typeof n.lowS=="boolean"?n.lowS:!1,format:void 0,extraEntropy:!1},m="compact";function b(E){const P=a>>Qn;return E>P}function w(E,P){if(!i.isValidNot0(P))throw new Error(`invalid signature ${E}: out of range 1..Point.Fn.ORDER`);return P}function I(E,P){Ja(P);const R=h.signature,D=P==="compact"?R:P==="recovered"?R+1:void 0;return ct(E,D,`${P} signature`)}class y{constructor(P,R,D){this.r=w("r",P),this.s=w("s",R),D!=null&&(this.recovery=D),Object.freeze(this)}static fromBytes(P,R=m){I(P,R);let D;if(R==="der"){const{r:H,s:$}=At.toSig(ct(P));return new y(H,$)}R==="recovered"&&(D=P[0],R="compact",P=P.subarray(1));const M=i.BYTES,F=P.subarray(0,M),L=P.subarray(M,M*2);return new y(i.fromBytes(F),i.fromBytes(L),D)}static fromHex(P,R){return this.fromBytes(bs(P),R)}addRecoveryBit(P){return new y(this.r,this.s,P)}recoverPublicKey(P){const R=s.ORDER,{r:D,s:M,recovery:F}=this;if(F==null||![0,1,2,3].includes(F))throw new Error("recovery id invalid");if(a*Kh<R&&F>1)throw new Error("recovery id is ambiguous for h>1 curve");const H=F===2||F===3?D+a:D;if(!s.isValid(H))throw new Error("recovery id 2 or 3 invalid");const $=s.toBytes(H),X=t.fromBytes(gt(zh((F&1)===0),$)),Y=i.inv(H),U=N(ge("msgHash",P)),K=i.create(-U*Y),q=i.create(M*Y),W=t.BASE.multiplyUnsafe(K).add(X.multiplyUnsafe(q));if(W.is0())throw new Error("point at infinify");return W.assertValidity(),W}hasHighS(){return b(this.s)}toBytes(P=m){if(Ja(P),P==="der")return bs(At.hexFromSig(this));const R=i.toBytes(this.r),D=i.toBytes(this.s);if(P==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return gt(Uint8Array.of(this.recovery),R,D)}return gt(R,D)}toHex(P){return fn(this.toBytes(P))}assertValidity(){}static fromCompact(P){return y.fromBytes(ge("sig",P),"compact")}static fromDER(P){return y.fromBytes(ge("sig",P),"der")}normalizeS(){return this.hasHighS()?new y(this.r,i.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return fn(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return fn(this.toBytes("compact"))}}const k=n.bits2int||function(P){if(P.length>8192)throw new Error("input is too large");const R=ni(P),D=P.length*8-c;return D>0?R>>BigInt(D):R},N=n.bits2int_modN||function(P){return i.create(k(P))},x=ko(c);function T(E){return Ga("num < 2^"+c,E,Ct,x),i.toBytes(E)}function S(E,P){return ct(E,void 0,"message"),P?ct(e(E),void 0,"prehashed message"):E}function v(E,P,R){if(["recovered","canonical"].some(K=>K in R))throw new Error("sign() legacy options not supported");const{lowS:D,prehash:M,extraEntropy:F}=Hi(R,g);E=S(E,M);const L=N(E),H=zn(i,P),$=[T(H),T(L)];if(F!=null&&F!==!1){const K=F===!0?r(h.secretKey):F;$.push(ge("extraEntropy",K))}const X=gt(...$),Y=L;function U(K){const q=k(K);if(!i.isValidNot0(q))return;const W=i.inv(q),z=t.BASE.multiply(q).toAffine(),V=i.create(z.x);if(V===Ct)return;const J=i.create(W*i.create(Y+V*H));if(J===Ct)return;let oe=(z.x===V?0:2)|Number(z.y&Qn),ne=J;return D&&b(J)&&(ne=i.neg(J),oe^=1),new y(V,ne,oe)}return{seed:X,k2sig:U}}function A(E,P,R={}){E=ge("message",E);const{seed:D,k2sig:M}=v(E,P,R);return mb(e.outputLen,i.BYTES,o)(D,M)}function O(E){let P;const R=typeof E=="string"||Ao(E),D=!R&&E!==null&&typeof E=="object"&&typeof E.r=="bigint"&&typeof E.s=="bigint";if(!R&&!D)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(D)P=new y(E.r,E.s);else if(R){try{P=y.fromBytes(ge("sig",E),"der")}catch(M){if(!(M instanceof At.Err))throw M}if(!P)try{P=y.fromBytes(ge("sig",E),"compact")}catch{return!1}}return P||!1}function B(E,P,R,D={}){const{lowS:M,prehash:F,format:L}=Hi(D,g);if(R=ge("publicKey",R),P=S(ge("message",P),F),"strict"in D)throw new Error("options.strict was renamed to lowS");const H=L===void 0?O(E):y.fromBytes(ge("sig",E),L);if(H===!1)return!1;try{const $=t.fromBytes(R);if(M&&H.hasHighS())return!1;const{r:X,s:Y}=H,U=N(P),K=i.inv(Y),q=i.create(U*K),W=i.create(X*K),z=t.BASE.multiplyUnsafe(q).add($.multiplyUnsafe(W));return z.is0()?!1:i.create(z.x)===X}catch{return!1}}function C(E,P,R={}){const{prehash:D}=Hi(R,g);return P=S(P,D),y.fromBytes(E,"recovered").recoverPublicKey(P).toBytes()}return Object.freeze({keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h,Point:t,sign:A,verify:B,recoverPublicKey:C,Signature:y,hash:e})}function Z0(t){const e={a:t.a,b:t.b,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},n=t.Fp;let r=t.allowedPrivateKeyLengths?Array.from(new Set(t.allowedPrivateKeyLengths.map(i=>Math.ceil(i/2)))):void 0;const o=An(e.n,{BITS:t.nBitLength,allowedLengths:r,modFromBytes:t.wrapPrivateKey}),s={Fp:n,Fn:o,allowInfinityPoint:t.allowInfinityPoint,endo:t.endo,isTorsionFree:t.isTorsionFree,clearCofactor:t.clearCofactor,fromBytes:t.fromBytes,toBytes:t.toBytes};return{CURVE:e,curveOpts:s}}function J0(t){const{CURVE:e,curveOpts:n}=Z0(t),r={hmac:t.hmac,randomBytes:t.randomBytes,lowS:t.lowS,bits2int:t.bits2int,bits2int_modN:t.bits2int_modN};return{CURVE:e,curveOpts:n,hash:t.hash,ecdsaOpts:r}}function Q0(t,e){const n=e.Point;return Object.assign({},e,{ProjectivePoint:n,CURVE:Object.assign({},t,Sh(n.Fn.ORDER,n.Fn.BITS))})}function ev(t){const{CURVE:e,curveOpts:n,hash:r,ecdsaOpts:o}=J0(t),s=V0(e,n),i=Y0(s,r,o);return Q0(t,i)}function tv(t,e){const n=r=>ev({...t,hash:r});return{...n(e),create:n}}const cl={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},nv={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},Bd=BigInt(2);function rv(t){const e=cl.p,n=BigInt(3),r=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=t*t*t%e,d=l*l*t%e,u=pe(d,n,e)*d%e,f=pe(u,n,e)*d%e,h=pe(f,Bd,e)*l%e,g=pe(h,o,e)*h%e,m=pe(g,s,e)*g%e,b=pe(m,a,e)*m%e,w=pe(b,c,e)*b%e,I=pe(w,a,e)*m%e,y=pe(I,n,e)*d%e,k=pe(y,i,e)*g%e,N=pe(k,r,e)*l%e,x=pe(N,Bd,e);if(!Qa.eql(Qa.sqr(x),t))throw new Error("Cannot find square root");return x}const Qa=An(cl.p,{sqrt:rv}),Jt=tv({...cl,Fp:Qa,lowS:!0,endo:nv},lh);function ov(t,e,n){const r=Vc.digest(e instanceof Uint8Array?e:e.subarray());if(ri(r))return r.then(({digest:o})=>(n?.signal?.throwIfAborted(),Jt.sign(o,t).toDERRawBytes())).catch(o=>{throw o.name==="AbortError"?o:new Rd(String(o))});try{return Jt.sign(r.digest,t).toDERRawBytes()}catch(o){throw new Rd(String(o))}}function sv(t,e,n,r){const o=Vc.digest(n instanceof Uint8Array?n:n.subarray());if(ri(o))return o.then(({digest:s})=>(r?.signal?.throwIfAborted(),Jt.verify(e,s,t))).catch(s=>{throw s.name==="AbortError"?s:new Td(String(s))});try{return r?.signal?.throwIfAborted(),Jt.verify(e,o.digest,t)}catch(s){throw new Td(String(s))}}class Gh{type="secp256k1";raw;_key;constructor(e){this._key=dv(e),this.raw=cv(this._key)}toMultihash(){return xo.digest(ai(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return je.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}verify(e,n,r){return sv(this._key,n,e,r)}}class iv{type="secp256k1";raw;publicKey;constructor(e,n){this.raw=lv(e),this.publicKey=new Gh(n??uv(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}sign(e,n){return ov(this.raw,e,n)}}function av(t){return new iv(t)}function Vh(t){return new Gh(t)}function cv(t){return Jt.ProjectivePoint.fromHex(t).toRawBytes(!0)}function lv(t){try{return Jt.getPublicKey(t,!0),t}catch(e){throw new Uf(String(e))}}function dv(t){try{return Jt.ProjectivePoint.fromHex(t),t}catch(e){throw new Hf(String(e))}}function uv(t){try{return Jt.getPublicKey(t,!0)}catch(e){throw new Uf(String(e))}}async function fv(t,e){return t0()}function ec(t,e){const{Type:n,Data:r}=bn.decode(t),o=r??new Uint8Array;switch(n){case fe.RSA:return M0(o,e);case fe.Ed25519:return Lh(o);case fe.secp256k1:return Vh(o);case fe.ECDSA:return th(o);default:throw new Js}}function hv(t){const{Type:e,Data:n}=bn.decode(t.digest),r=n??new Uint8Array;switch(e){case fe.Ed25519:return Lh(r);case fe.secp256k1:return Vh(r);case fe.ECDSA:return th(r);default:throw new Js}}function ai(t){return bn.encode({Type:fe[t.type],Data:t.raw})}function pv(t){const e=ks.decode(t),n=e.Data??new Uint8Array;switch(e.Type){case fe.RSA:return D0(n);case fe.Ed25519:return e0(n);case fe.secp256k1:return av(n);case fe.ECDSA:return Ky(n);default:throw new Js}}function gv(t){return ks.encode({Type:fe[t.type],Data:t.raw})}const Xh=Symbol.for("nodejs.util.inspect.custom"),mv=114;class ll{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[$f]=!0;toString(){return this.string==null&&(this.string=je.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return ue.createV1(mv,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return dt(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return dt(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[Xh](){return`PeerId(${this.toString()})`}}class Yh extends ll{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}}class Zh extends ll{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}}class Jh extends ll{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}}const wv=2336;class Qh{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=xo.digest(ve(this.url))}[Xh](){return`PeerId(${this.url})`}[$f]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return ue.createV1(wv,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=te(e)),e.toString()===this.toString())}}const yv=114,_d=2336;function bv(t,e){let n;if(t.charAt(0)==="1"||t.charAt(0)==="Q")n=zf(je.decode(`z${t}`));else{if(t.startsWith("k51qzi5uqu5")||t.startsWith("kzwfwjn5ji4")||t.startsWith("k2k4r8")||t.startsWith("bafz"))return vv(ue.parse(t));throw new lt('Please pass a multibase decoder for strings that do not start with "1" or "Q"')}return ep(n)}function ur(t){if(t.type==="Ed25519")return new Zh({multihash:t.toCID().multihash,publicKey:t});if(t.type==="secp256k1")return new Jh({multihash:t.toCID().multihash,publicKey:t});if(t.type==="RSA")return new Yh({multihash:t.toCID().multihash,publicKey:t});throw new Js}function ep(t){if(xv(t))return new Yh({multihash:t});if(Sv(t))try{const e=hv(t);if(e.type==="Ed25519")return new Zh({multihash:t,publicKey:e});if(e.type==="secp256k1")return new Jh({multihash:t,publicKey:e})}catch{const n=te(t.digest);return new Qh(new URL(n))}throw new nw("Supplied PeerID Multihash is invalid")}function vv(t){if(t?.multihash==null||t.version==null||t.version===1&&t.code!==yv&&t.code!==_d)throw new tw("Supplied PeerID CID is invalid");if(t.code===_d){const e=te(t.multihash.digest);return new Qh(new URL(e))}return ep(t.multihash)}function Sv(t){return t.code===xo.code}function xv(t){return t.code===Vc.code}class tp extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}}class Ev extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}}class Nr extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}}class Od extends Error{static name="StreamBufferError";constructor(e="The stream buffer was full"){super(e),this.name="StreamBufferError"}}class Av extends Event{data;constructor(e,n){super("message",n),this.data=e}}class dl extends Event{error;local;constructor(e,n,r){super("close",r),this.error=n,this.local=e}}class kv extends dl{constructor(e,n){super(!0,e,n)}}class Cv extends dl{constructor(e,n){super(!1,e,n)}}const Iv=t=>t/2**32|0,Rv=t=>t>>>0;function Tv(t,e,n,r){const o=Iv(n),s=Rv(n);t.setUint32(e,r?s:o,r),t.setUint32(e+4,r?o:s,r)}function tc(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const nc=t=>t?`"${t}" `:"";function _t(t,e=""){if(typeof t!="number")throw new TypeError(nc(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(nc(e)+"expected integer >= 0, got "+t);return t}function Ot(t,e,n=""){if(tc(t)&&(e===void 0||t.length===e))return t;e!==void 0&&_t(e,"length");const r=tc(t),o=e!==void 0?` of length ${e}`:"",s=r?`length=${t.length}`:`type=${typeof t}`,i=nc(n)+"expected Uint8Array"+o+", got "+s;throw r?new RangeError(i):new TypeError(i)}function ul(t){if(typeof t!="function"||typeof t.create!="function")throw new TypeError("expected hash wrapped by utils.createHasher");if(_t(t.outputLen),_t(t.blockLen),t.outputLen<1||t.blockLen<1)throw new Error("hash blockLen / outputLen must be >= 1")}const Pv=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError((e==="object"?"":`"${e}" `)+"expected object, got type="+typeof t)},Dd=(t,e)=>{Pv(t,e);const n=Object.getPrototypeOf(t);if(n!==Object.prototype&&n!==null)throw new TypeError(`"${e}" expected plain object`);if(Object.hasOwn(t,"__proto__"))throw new TypeError(`"${e}.__proto__" is not allowed`)};function Cs(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function np(t,e){Ot(t,void 0,"output");const n=e.outputLen;if(!(t.length>=n))throw new RangeError('"output" expected length >= '+n)}function CR(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function pn(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Ui(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function ht(t,e){return t<<32-e|t>>>e}function IR(t,e){return t<<e|t>>>32-e>>>0}const Nv=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Lv(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function Bv(t){for(let e=0;e<t.length;e++)t[e]=Lv(t[e]);return t}const RR=Nv?t=>t:Bv,rp=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",_v=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function fl(t){if(Ot(t),rp)return t.toHex();let e="";for(let n=0;n<t.length;n++)e+=_v[t[n]];return e}function Fd(t){return t>=48&&t<=57?t-48:t>=65&&t<=70?t-55:t>=97&&t<=102?t-87:void 0}function op(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);if(rp)try{return Uint8Array.fromHex(t)}catch(o){throw o instanceof SyntaxError?new RangeError(o.message):o}const e=t.length,n=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=Fd(t.charCodeAt(s)),a=Fd(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new RangeError('hex string expected, got non-hex character "'+c+'" at index '+s)}r[o]=i*16+a}return r}function Ov(t){const e=globalThis;if(typeof e.scheduler?.yield=="function"){const n=e.scheduler.yield();return t&&n.catch(t),n}return new Promise(n=>e.setTimeout(n,0))}async function TR(t,e,n,r){if(_t(t,"iters"),_t(e,"tick"),typeof n!="function")throw new TypeError("callback must be a function");let o=Date.now();for(let s=0;s<t;s++){n(s);const i=Date.now()-o;i>=0&&i<e||(await Ov(r),o=Date.now())}}function Dv(t){if(typeof t!="string")throw new TypeError("string expected");const e=new TextEncoder().encode(t);try{return new Uint8Array(e)}finally{pn(e)}}function PR(t,e=""){return typeof t=="string"?Dv(t):Ot(t,void 0,e)}function Fv(t,e,n="opts"){return Dd(t,"defaults"),e!==void 0&&Dd(e,n),Object.assign(Object.create(null),t,e)}function Mv(t,e={}){if(typeof t!="function")throw new TypeError('"hashCons" expected function, got type='+typeof t);e=Fv({},e,"info");const n=(o,s)=>t(s).update(o).digest(),r=t(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.canXOF=r.canXOF,n.create=o=>t(o),Object.assign(n,e),Object.freeze(n)}function jv(t=32){_t(t,"bytesLength");const e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(t>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${t}`);return e.getRandomValues(new Uint8Array(t))}const Hv=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function Uv(t,e,n){return t&e^~t&n}function $v(t,e,n){return t&e^t&n^e&n}class qv{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,n,r,o){this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Ui(this.buffer)}update(e){Cs(this),Ot(e);const{view:n,buffer:r,blockLen:o}=this,s=e.length;let i=!1;for(let a=0;a<s;){const c=Math.min(o-this.pos,s-a);if(c===o){const l=Ui(e);for(;o<=s-a;a+=o)this.process(l,a);i=!0;continue}r.set(a===0&&c===s?e:e.subarray(a,a+c),this.pos),this.pos+=c,a+=c,this.pos===o&&(this.process(n,0),this.pos=0,i=!0)}return this.length+=e.length,i&&this.roundClean(),this}digestInto(e){Cs(this),np(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,n.fill(0,i),this.padOffset>o-i&&(this.process(r,0),n.fill(0)),Tv(r,o-8,this.length*8,s),this.process(r,0),this.roundClean();const a=e===n?r:Ui(e),c=this.outputLen,l=c/4,d=this.get();if(c%4||l>d.length)throw new Error("invalid outputLen");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneIntoMeta(e){const{buffer:n,length:r,finished:o,destroyed:s,pos:i}=this;return e.destroyed=s,e.finished=o,e.length=r,e.pos=i,i&&e.buffer.set(n),e}clone(){return this._cloneInto()}}const Kv=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),zv=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),$t=new Uint32Array(64);class Wv extends qv{A=0;B=0;C=0;D=0;E=0;F=0;G=0;H=0;constructor(e,n){super(64,e,8,!1),this.A=n[0]|0,this.B=n[1]|0,this.C=n[2]|0,this.D=n[3]|0,this.E=n[4]|0,this.F=n[5]|0,this.G=n[6]|0,this.H=n[7]|0}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:c}=this;return[e,n,r,o,s,i,a,c]}set(e,n,r,o,s,i,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}_cloneInto(e){return(e||=new this.constructor).set(...this.get()),this._cloneIntoMeta(e)}process(e,n){for(let u=0;u<16;u++,n+=4)$t[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const f=$t[u-15],h=$t[u-2],g=ht(f,7)^ht(f,18)^f>>>3,m=ht(h,17)^ht(h,19)^h>>>10;$t[u]=m+$t[u-7]+g+$t[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=ht(a,6)^ht(a,11)^ht(a,25),h=d+f+Uv(a,c,l)+zv[u]+$t[u]|0,m=(ht(r,2)^ht(r,13)^ht(r,22))+$v(r,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=r,r=h+m|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,c,l,d)}roundClean(){pn($t)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),pn(this.buffer)}}class Gv extends Wv{constructor(){super(32,Kv)}}const $i=Mv(()=>new Gv,Hv(1));function sp(t,e,n=()=>{}){if(!Array.isArray(t))throw new TypeError(`"${e}" expected array, got type=${typeof t}`);for(let r=0;r<t.length;r++)n(t[r],`${e}[${r}]`);return t}const er=(t,e,n)=>Ot(t,e,n),ip=_t;function tr(t,e="object"){if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(e==="object"?"expected valid options object":`"${e}" expected object, got type=${typeof t}`);return t}function Qr(t,e){if(typeof t!="function")throw new TypeError(`"${e}" is invalid: expected function, got ${typeof t}`);return t}const Vv=fl,Xv=t=>op(t),ap=tc,cp=t=>jv(t),Is=BigInt(0),Md=BigInt(1),Yv=t=>t?`"${t}" `:"";function ci(t,e=""){if(typeof t!="boolean")throw new TypeError(Yv(e)+"expected boolean, got type="+typeof t);return t}function Zv(t){if(typeof t=="bigint"){if(!gn(t))throw new RangeError("positive bigint expected, got "+t)}else ip(t);return t}function rc(t,e=""){if(typeof t!="number"){const n=e&&`"${e}" `;throw new TypeError(n+"expected number, got type="+typeof t)}if(!Number.isSafeInteger(t)){const n=e&&`"${e}" `;throw new RangeError(n+"expected safe integer, got "+t)}}function lp(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);return t===""?Is:BigInt("0x"+t)}function dp(t){return lp(fl(t))}function Rs(t){return lp(fl(uo(Ot(t)).reverse()))}function up(t,e){if(_t(e),e===0)throw new Error("zero output length is invalid");t=Zv(t);const n=e*2,r=t.toString(16);if(r.length>n)throw new RangeError("number is too large");return op(r.padStart(n,"0"))}function fp(t,e){return up(t,e).reverse()}function uo(t){return Uint8Array.from(er(t))}function gn(t){return typeof t=="bigint"&&Is<=t}function hp(t,e,n){return gn(t)&&gn(e)&&gn(n)&&e<=t&&t<n}function eo(t,e,n,r){if(!hp(e,n,r))throw new RangeError("expected valid "+t+": "+n+" <= n < "+r+", got "+e)}function Jv(t){if(t<Is)throw new Error("expected non-negative bigint, got "+t);return t===Is?0:t.toString(2).length}const Qv=t=>(rc(t,"n"),(Md<<BigInt(t))-Md);function Ts(t,e={},n={},r="object"){tr(t,r),tr(e,"fields"),tr(n,"optFields");function o(i,a,c){const l=r==="object"?`param "${String(i)}"`:`"${r}.${String(i)}"`,d=t[i];if(!Object.hasOwn(t,i)&&(c?d!==void 0:a!=="function"))throw new TypeError(`${l} is invalid: expected own property`);if(c&&d===void 0)return;const u=typeof d;if(u!==a||d===null)throw new TypeError(`${l} is invalid: expected ${a}, got ${u}`)}const s=(i,a)=>Object.entries(i).forEach(([c,l])=>o(c,l,a));s(e,!1),s(n,!0)}const Re=BigInt(0),de=BigInt(1),cn=BigInt(2),pp=BigInt(3),hl=BigInt(4),gp=BigInt(5),eS=BigInt(7),mp=BigInt(8),tS=BigInt(9),nS=BigInt(15),wp=BigInt(16),rS=BigInt("0x10000000000000000");function le(t,e){if(e<=Re)throw new Error("mod: expected positive modulus, got "+e);const n=t%e;return n>=Re?n:e+n}function oS(t,e,n){if(n<=de)throw new Error("pow: expected modulus > 1, got "+n);if(typeof e!="bigint")throw new TypeError("invalid exponent: expected bigint, got "+typeof e);if(e<Re)throw new Error("invalid exponent, negatives unsupported");if(e===Re)return de;if(e===de)return t;let r=t%n;if(r<Re&&(r+=n),e<rS){let a=de;for(;e>Re;)e&de&&(a=a*r%n),r=r*r%n,e>>=de;return a}const o=[];for(;e>Re;)o.push(Number(e&nS)),e>>=hl;const s=new Array(16);s[0]=de,s[1]=r;for(let a=2;a<16;a++)s[a]=s[a-1]*r%n;let i=s[o[o.length-1]];for(let a=o.length-2;a>=0;a--){i=i*i%n,i=i*i%n,i=i*i%n,i=i*i%n;const c=o[a];c!==0&&(i=i*s[c]%n)}return i}function st(t,e,n){if(n<=de)throw new Error("pow2: expected modulus > 1, got "+n);if(e<Re)throw new Error("pow2: expected non-negative exponent, got "+e);let r=t;for(;e-- >Re;)r*=r,r%=n;return r}function jd(t,e){if(t===Re)throw new Error("invert: expected non-zero number");if(e<=de)throw new Error("invert: expected modulus > 1, got "+e);let n=le(t,e),r=e,o=Re,s=de;for(;n!==Re;){const a=r/n,c=r-n*a,l=o-s*a;r=n,n=c,o=s,s=l}if(r!==de)throw new Error("invert: does not exist");return le(o,e)}function pl(t,e,n){const r=t;if(!r.eql(r.sqr(e),n))throw new Error("Cannot find square root")}function gl(t,e){if((t&de)===Re)throw new Error(e+": expected odd modulus, got "+t)}function yp(t,e){const n=t,r=(n.ORDER+de)/hl,o=n.pow(e,r);return pl(n,o,e),o}function sS(t,e){const n=t,r=(n.ORDER-gp)/mp,o=n.mul(e,cn),s=n.pow(o,r),i=n.mul(e,s),a=n.mul(n.mul(i,cn),s),c=n.mul(i,n.sub(a,n.ONE));return pl(n,c,e),c}function iS(t){const e=ml(t),n=bp(t),r=n(e,e.neg(e.ONE)),o=n(e,r),s=n(e,e.neg(r)),i=(t+eS)/wp;return((a,c)=>{const l=a;let d=l.pow(c,i),u=l.mul(d,r);const f=l.mul(d,o),h=l.mul(d,s),g=l.eql(l.sqr(u),c),m=l.eql(l.sqr(f),c);d=l.cmov(d,u,g),u=l.cmov(h,f,m);const b=l.eql(l.sqr(u),c),w=l.cmov(d,u,b);return pl(l,w,c),w})}function bp(t){if(t<pp)throw new Error("sqrt is not defined for small field");gl(t,"tonelliShanks");let e=t-de,n=0;for(;e%cn===Re;)e/=cn,n++;let r=cn;const o=ml(t);for(;Ps(o,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return yp;let s=o.pow(r,e);const i=(e+de)/cn;return function(c,l){const d=c;if(d.is0(l))return l;if(Ps(d,l)!==1)throw new Error("Cannot find square root");let u=n,f=d.mul(d.ONE,s),h=d.pow(l,e),g=d.pow(l,i);for(;!d.eql(h,d.ONE);){if(d.is0(h))throw new Error("Cannot find square root: probably non-prime P");let m=1,b=d.sqr(h);for(;!d.eql(b,d.ONE);)if(m++,b=d.sqr(b),m===u)throw new Error("Cannot find square root");const w=de<<BigInt(u-m-1),I=d.pow(f,w);u=m,f=d.sqr(I),h=d.mul(h,f),g=d.mul(g,I)}return g}}function aS(t){return gl(t,"Fp.sqrt"),t%hl===pp?yp:t%mp===gp?sS:t%wp===tS?iS(t):bp(t)}const cS=(t,e)=>(le(t,e)&de)===de,lS=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function fo(t){if(tr(t,"field"),typeof t.ORDER!="bigint")throw new TypeError('param "ORDER" is invalid: expected bigint, got '+typeof t.ORDER);rc(t.BYTES,"BYTES"),rc(t.BITS,"BITS");for(const e of lS)Qr(t[e],"field."+e);if(t.BYTES<1||t.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(t.ORDER<=de)throw new Error("invalid field: expected ORDER > 1, got "+t.ORDER);return t}function vp(t,e,n=!1){fo(t),sp(e,"nums"),ci(n,"passZero");const r=t,o=new Array(e.length).fill(n?r.ZERO:void 0),s=e.reduce((a,c,l)=>r.is0(c)?a:(o[l]=a,r.mul(a,c)),r.ONE),i=r.inv(s);return e.reduceRight((a,c,l)=>r.is0(c)?a:(o[l]=r.mul(a,o[l]),r.mul(a,c)),i),o}function Ps(t,e){fo(t);const n=t;gl(n.ORDER,"FpLegendre");const r=(n.ORDER-de)/cn,o=n.pow(e,r),s=n.eql(o,n.ONE),i=n.eql(o,n.ZERO),a=n.eql(o,n.neg(n.ONE));if(!s&&!i&&!a)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function dS(t,e){if(e!==void 0&&ip(e),t<=Re)throw new Error("invalid n length: expected positive n, got "+t);if(e!==void 0&&e<1)throw new Error("invalid n length: expected positive bit length, got "+e);const n=Jv(t);if(e!==void 0&&e<n)throw new Error(`invalid n length: expected nBitLength (${e}) >= bitLen(n) (${n})`);const r=e!==void 0?e:n,o=Math.ceil(r/8);return{nBitLength:r,nByteLength:o}}const Hd=new WeakMap;class Ud{ORDER;BITS;BYTES;isLE;ZERO=Re;ONE=de;_lengths;_mod;constructor(e,n={}){if(e<=de)throw new Error("invalid field: expected ORDER > 1, got "+e);let r;this.isLE=!1,n!=null&&typeof n=="object"&&(typeof n.BITS=="number"&&(r=n.BITS),typeof n.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:n.sqrt,enumerable:!0}),typeof n.isLE=="boolean"&&(this.isLE=n.isLE),n.allowedLengths&&(this._lengths=Object.freeze(n.allowedLengths.slice())),typeof n.modFromBytes=="boolean"&&(this._mod=n.modFromBytes));const{nBitLength:o,nByteLength:s}=dS(e,r);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,Object.freeze(this)}create(e){return le(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return Re<=e&&e<this.ORDER}is0(e){return e===Re}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&de)===de}neg(e){return le(-e,this.ORDER)}eql(e,n){return e===n}sqr(e){return le(e*e,this.ORDER)}add(e,n){return le(e+n,this.ORDER)}sub(e,n){return le(e-n,this.ORDER)}mul(e,n){return le(e*n,this.ORDER)}pow(e,n){return oS(e,n,this.ORDER)}div(e,n){return le(e*jd(n,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,n){return e+n}subN(e,n){return e-n}mulN(e,n){return e*n}inv(e){return jd(e,this.ORDER)}sqrt(e){let n=Hd.get(this);return n||Hd.set(this,n=aS(this.ORDER)),n(this,e)}toBytes(e){return this.isLE?fp(e,this.BYTES):up(e,this.BYTES)}fromBytes(e,n=!1){er(e);const{_lengths:r,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(r){if(e.length<1||!r.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+e.length);const l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?Rs(e):dp(e);if(a&&(c=le(c,i)),!n&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return vp(this,e,!0)}cmov(e,n,r){return ci(r,"condition"),r?n:e}}function ml(t,e={}){return Object.freeze(Ud.prototype),new Ud(t,e)}const wl=BigInt(0),ho=BigInt(1),uS=BigInt(4),qi=16,$d=128,fS=5,qd=2**31;function yl(t){const e=t;if(typeof e!="function")throw new TypeError('"Point" expected constructor, got type='+typeof t);Qr(e.fromAffine,"Point.fromAffine"),Qr(e.fromBytes,"Point.fromBytes"),Qr(e.fromHex,"Point.fromHex"),tr(e.BASE,"Point.BASE"),tr(e.ZERO,"Point.ZERO"),fo(e.Fp),fo(e.Fn)}function hS(t,e){yl(t),Sp(e,t);const n=vp(t.Fp,e.map(r=>r.Z));return e.map((r,o)=>t.fromAffine(r.toAffine(n[o])))}function pS(t,e,n=1){if(!Number.isSafeInteger(t)||t<n||t>e)throw new Error("invalid window size, expected ["+n+".."+e+"], got W="+t)}function gS(t,e){const n=t*(4*e+128);if(n>qd)throw new Error("invalid window size: table would need ~"+Math.ceil(n/2**20)+" MiB, max "+qd/2**20+" MiB")}function mS(t,e){if(t!==void 0){Qr(t,"randomBytes");try{const n=t(e);if(!ap(n)||n.length!==e)return}catch{return}return t}}function Sp(t,e){sp(t,"points"),t.forEach((n,r)=>{if(!(n instanceof e))throw new Error("invalid point at index "+r)})}function wS(t,e,n){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((r,o)=>{if(!(n===void 0?e.isValid(r):gn(r)&&r<n))throw new Error("invalid scalar at index "+o)})}const xp=new WeakMap;function Ki(t){return xp.get(t)||1}function yS(t,e){const n=t.double(),r=[t];for(let o=1;o<e;o++)r.push(r[o-1].add(n));return r}function bS(t,e){const n=2**e,r=n/2,o=BigInt(n-1),s=[];for(;t>wl;){let i=0;t&ho&&(i=Number(t&o),i>=r&&(i-=n),t-=BigInt(i)),s.push(i),t>>=ho}return s}function vS(t,e,n){const r=2**e,o=r/2,s=BigInt(r-1),i=BigInt(e),a=[];for(let c=0;c<n;c++){let l=Number(t&s);t>>=i,l>o&&(l-=r,t+=ho),a.push(l)}if(t!==wl)throw new Error("invalid wnaf");return a}function SS(t,e,n){let r=0;for(const s of n)r=Math.max(r,s.length);let o=t;for(let s=r-1;s>=0;s--){s!==r-1&&(o=o.double());for(let i=0;i<n.length;i++){const a=n[i][s];if(a){const c=e[i][Math.abs(a)-1>>1];o=o.add(a<0?c.negate():c)}}}return o}class xS{Point;BASE;ZERO;randomBytes;wnafPrecomputes=new WeakMap;baseCanBeBlinded;bits;constructor(e,n){yl(e),this.randomBytes=mS(n,qi),this.Point=e,this.BASE=e.BASE,this.ZERO=e.ZERO,this.bits=e.Fn.BITS}buildWnafTable(e,n,r){const o=Math.ceil(r/n)+1,s=2**(n-1),i=[];let a=e;for(let c=0;c<o;c++){let l=a;for(let d=0;d<s;d++)i.push(l),l=l.add(a);a=i[i.length-1].double()}return{W:n,bits:r,windows:o,comp:i}}wnafCachedCT(e,n){const{W:r,windows:o,comp:s}=e,i=2**(r-1),a=vS(n,r,o);let c=this.ZERO,l=this.BASE;for(let d=0;d<o;d++){const u=a[d],f=d*i,h=Math.abs(u)-1;let g=s[f];for(let b=1;b<i;b++)g=b===h?s[f+b]:g;const m=g.negate();u===0?l=l.add(s[f]):c=c.add(u<0?m:g)}return{p:c,f:l}}getWnafPrecomputes(e,n,r,o){let s=this.wnafPrecomputes.get(n),i=s?.find(a=>a.W===e&&a.bits===r);return i||(i=this.buildWnafTable(n,e,r),typeof o=="function"&&(i={...i,comp:o(i.comp)}),s||(s=[],this.wnafPrecomputes.set(n,s)),s.push(i)),i}assertPoint(e){if(!(e instanceof this.Point))throw new TypeError('"point" expected Point instance, got type='+typeof e)}validateMulInput(e,n){if(this.assertPoint(e),!hp(n,ho,this.Point.Fn.ORDER))throw new Error("invalid scalar")}runCT(e,n,r,o){const s=Ki(e);return s===1?this.fixedWindowCT(e,n,r):this.wnafCachedCT(this.getWnafPrecomputes(s,e,r,o),n)}mulCT(e,n,r){return this.validateMulInput(e,n),this.runCT(e,n,this.bits,r)}mulCTBlinded(e,n,r){if(this.validateMulInput(e,n),this.randomBytes===void 0)throw new Error("randomBytes is required for scalar blinding");const o=this.Point.Fn.BITS+$d,s=this.randomBytes(qi);if(!ap(s)||s.length!==qi)throw new Error("randomBytes returned invalid byte array");s[0]=s[0]&63|128;const i=n+dp(s)*this.Point.Fn.ORDER;return this.runCT(e,i,o,r)}fixedWindowCT(e,n,r){const o=fS,s=1<<o,i=Qv(o),a=new Array(s);a[0]=this.ZERO;for(let d=1;d<s;d++)a[d]=a[d-1].add(e);const c=Math.ceil(r/o);let l=this.ZERO;for(let d=c-1;d>=0;d--){if(d!==c-1)for(let h=0;h<o;h++)l=l.double();const u=Number(n>>BigInt(d*o)&i);let f=a[0];for(let h=1;h<s;h++)f=h===u?a[h]:f;l=l.add(f)}return{p:l,f:l}}shouldBlind(e,n){return this.randomBytes===void 0?!1:n===ho?!0:e!==this.BASE?!1:(this.baseCanBeBlinded===void 0&&(this.baseCanBeBlinded=this.mulUnsafe(this.BASE,this.Point.Fn.ORDER).is0()),this.baseCanBeBlinded)}mulSecret(e,n,r,o){return this.shouldBlind(e,r)?this.mulCTBlinded(e,n,o):this.mulCT(e,n,o)}mulUnsafe(e,n,r){if(this.assertPoint(e),!gn(n))throw new Error("invalid scalar");const o=Ki(e);if(o===1||n>=this.Point.Fn.ORDER)return ES(this.Point,[e],[n],!0);const s=this.getWnafPrecomputes(o,e,this.bits,r);return this.wnafCachedCT(s,n).p}setWindowSize(e,n){this.assertPoint(e),pS(n,this.bits);const r=Math.ceil((this.bits+$d)/n)+1;gS(r*2**(n-1),this.Point.Fp.BYTES),xp.set(e,n),this.wnafPrecomputes.delete(e)}hasWindowSize(e){return Ki(e)!==1}}function ES(t,e,n,r=!1){if(yl(t),Sp(e,t),ci(r,"allowOversized"),wS(n,t.Fn,r?t.Fn.ORDER**uS:void 0),e.length!==n.length)throw new Error("arrays of points and scalars must have equal length");const o=e.map(i=>yS(i,4)),s=n.map(i=>bS(i,4));return SS(t.ZERO,o,s)}function Kd(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return fo(e),e}else return ml(t,{isLE:n})}function AS(t,e,n={},r){if(r===void 0&&(r=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);Ts(n);for(const c of["p","n","h"]){const l=e[c];if(!(gn(l)&&l!==wl))throw new Error(`CURVE.${c} must be positive bigint`)}const o=Kd(e.p,n.Fp,r),s=Kd(e.n,n.Fn,r),a=["Gx","Gy","a","d"];for(const c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function kS(t,e){return function(r){const o=t(r);return{secretKey:o,publicKey:e(o)}}}const Mo=BigInt(0),jo=BigInt(1),Ho=BigInt(2),CS=BigInt(4),zd=BigInt(8);function IS(t,e,n,r){const o=t.sqr(n),s=t.sqr(r),i=t.add(t.mul(e.a,o),s),a=t.add(t.ONE,t.mul(e.d,t.mul(o,s)));return t.eql(i,a)}function RS(t,e={}){Ts(e,{},{},"extraOpts");const n=e,r=AS("edwards",t,n,n.FpFnLE),{Fp:o,Fn:s}=r;let i=r.CURVE;const{h:a}=i;if(Ps(o,i.a)!==1)throw new Error("edwards: CURVE.a must be a square in Fp for complete addition formulas");if(Ps(o,i.d)!==-1)throw new Error("edwards: CURVE.d must be a non-square in Fp for complete addition formulas");Ts(n,{},{uvRatio:"function",randomBytes:"function"});const c=n.randomBytes===void 0?cp:n.randomBytes,l=Ho<<BigInt(o.BYTES*8)-jo;function d(I){if(!o.isOdd)throw new Error("Field does not have .isOdd()");return o.isOdd(I)}const u=n.uvRatio===void 0?(I,y)=>{try{return{isValid:!0,value:o.sqrt(o.div(I,y))}}catch{return{isValid:!1,value:Mo}}}:n.uvRatio;if(!IS(o,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");const f=o.eql(i.a,o.neg(o.ONE))?I=>o.neg(I):o.eql(i.a,o.ONE)?I=>I:I=>o.mul(i.a,I);function h(I,y,k=!1){const N=k?jo:Mo;return eo("coordinate "+I,y,N,l),y}function g(I){if(!(I instanceof m))throw new Error("EdwardsPoint expected")}class m{static BASE=new m(i.Gx,i.Gy,o.ONE,o.mul(i.Gx,i.Gy));static ZERO=new m(o.ZERO,o.ONE,o.ONE,o.ZERO);static Fp=o;static Fn=s;X;Y;Z;T;constructor(y,k,N,x){this.X=h("x",y),this.Y=h("y",k),this.Z=h("z",N,!0),this.T=h("t",x),Object.freeze(this)}static CURVE(){return i}static fromAffine(y){if(y instanceof m)throw new Error("extended point not allowed");const{x:k,y:N}=y||{};return h("x",k),h("y",N),new m(k,N,o.ONE,o.mul(k,N))}static fromBytes(y,k=!1){const N=o.BYTES,{a:x,d:T}=i;y=uo(er(y,N,"point")),ci(k,"zip215");const S=uo(y),v=y[N-1];S[N-1]=v&-129;const A=Rs(S),O=k?l:o.ORDER;eo("point.y",A,Mo,O);const B=o.sqr(A),C=o.sub(B,o.ONE),E=o.sub(o.mulN(T,B),x);let{isValid:P,value:R}=u(C,E);if(!P)throw new Error("bad point: invalid y coordinate");const D=d(R),M=(v&128)!==0;if(!k&&o.is0(R)&&M)throw new Error("bad point: x=0 and x_0=1");return M!==D&&(R=o.neg(R)),m.fromAffine({x:R,y:A})}static fromHex(y,k=!1){return m.fromBytes(Xv(y),k)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(y=6,k=!0){return w.setWindowSize(this,y),k||this.multiply(Ho),this}assertValidity(){const y=this,{a:k,d:N}=i;if(y.is0())throw new Error("bad point: ZERO");const{X:x,Y:T,Z:S,T:v}=y,A=o.sqr(x),O=o.sqr(T),B=o.sqr(S),C=o.sqr(B),E=o.mul(A,k),P=o.mul(o.add(E,O),B),R=o.add(C,o.mul(N,o.mul(A,O)));if(!o.eql(P,R))throw new Error("bad point: equation left != right (1)");const D=o.mul(x,T),M=o.mul(S,v);if(!o.eql(D,M))throw new Error("bad point: equation left != right (2)")}equals(y){g(y);const{X:k,Y:N,Z:x}=this,{X:T,Y:S,Z:v}=y,A=o.mul(k,v),O=o.mul(T,x),B=o.mul(N,v),C=o.mul(S,x);return o.eql(A,O)&&o.eql(B,C)}is0(){return this.equals(m.ZERO)}negate(){return new m(o.neg(this.X),this.Y,this.Z,o.neg(this.T))}double(){const{X:y,Y:k,Z:N}=this,x=o.sqr(y),T=o.sqr(k),S=o.mul(o.sqr(N),Ho),v=f(x),A=o.addN(y,k),O=o.sub(o.subN(o.sqr(A),x),T),B=o.addN(v,T),C=o.subN(B,S),E=o.subN(v,T),P=o.mul(O,C),R=o.mul(B,E),D=o.mul(O,E),M=o.mul(C,B);return new m(P,R,M,D)}add(y){g(y);const{d:k}=i,{X:N,Y:x,Z:T,T:S}=this,{X:v,Y:A,Z:O,T:B}=y,C=o.mul(N,v),E=o.mul(x,A),P=o.mul(o.mulN(S,k),B),R=o.mul(T,O),D=o.sub(o.subN(o.mulN(o.addN(N,x),o.addN(v,A)),C),E),M=o.subN(R,P),F=o.addN(R,P),L=o.sub(E,f(C)),H=o.mul(D,M),$=o.mul(F,L),X=o.mul(D,L),Y=o.mul(M,F);return new m(H,$,Y,X)}subtract(y){return g(y),this.add(y.negate())}multiply(y){if(!s.isValidNot0(y))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:k,f:N}=w.mulSecret(this,y,a,b);return b([k,N])[0]}multiplyUnsafe(y){if(!s.isValid(y))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return y===Mo?m.ZERO:this.is0()||y===jo?this:w.mulUnsafe(this,y,b)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return w.mulUnsafe(this,i.n).is0()}toAffine(y){const k=this;let N=y;if(N!=null&&typeof N!="bigint")throw new TypeError('"invertedZ" expected bigint, got type='+typeof N);const{X:x,Y:T,Z:S}=k,v=k.is0();N==null&&(N=v?o.create(zd):o.inv(S));const A=o.mul(x,N),O=o.mul(T,N),B=o.mul(S,N);if(v)return{x:o.ZERO,y:o.ONE};if(!o.eql(B,o.ONE))throw new Error("invZ was invalid");return{x:A,y:O}}clearCofactor(){return a===jo?this:a===Ho?this.double():a===CS?this.double().double():a===zd?this.double().double().double():this.multiplyUnsafe(a)}toBytes(){const{x:y,y:k}=this.toAffine(),N=o.toBytes(k);return N[N.length-1]|=d(y)?128:0,N}toHex(){return Vv(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const b=I=>hS(m,I),w=new xS(m,c);return w.bits>=6&&m.BASE.precompute(6),Object.freeze(m.prototype),Object.freeze(m),m}const nn=BigInt(0),Je=BigInt(1),Uo=BigInt(2);function Wd(t,e){return t+e-(e>>Je<<Je)}function TS(t){const e=BigInt(6)*t;return(n,r,o)=>{const s=r+o,a=((e+o-r)*n+r)%t;return{x_2:a,x_3:s-a}}}function PS(t){return Ts(t,{P:"bigint",type:"string",adjustScalarBytes:"function",powPminus2:"function"},{randomBytes:"function",scalarMultBase:"function"}),Object.freeze({...t})}function NS(t){const e=PS(t),{P:n,type:r,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,a=e.scalarMultBase,c=r==="x25519";if(!c&&r!=="x448")throw new Error("invalid type");const l=i===void 0?cp:i,d=c?255:448,u=TS(n),f=c?32:56,h=BigInt(c?9:5),g=BigInt(c?121665:39081),m=c?Uo**BigInt(254):Uo**BigInt(447),b=c?BigInt(8)*(Uo**BigInt(251)-Je):BigInt(4)*(Uo**BigInt(445)-Je),w=m+b+Je,I=R=>le(R,n),y=k(h);function k(R){return fp(I(R),f)}function N(R){const D=uo(er(R,f,"uCoordinate"));return c&&(D[31]&=127),I(Rs(D))}function x(R){return Rs(o(uo(er(R,f,"scalar"))))}const T=new Set(c?[nn,Je,n-Je,BigInt("325606250916557431795983626356110631294008115727848805560023387167927233504"),BigInt("39382357235489614581723060781553021112529911719440698176882885853963445705823")]:[nn,Je,n-Je]);function S(R,D){const M=N(D);if(T.has(M))throw new Error("invalid private or public key received");const F=B(M,x(R));if(F===nn)throw new Error("invalid private or public key received");return k(F)}function v(R){if(a===void 0)return S(R,y);const D=x(R);eo("scalar",D,m,w);const M=I(a(D));if(M===nn)throw new Error("invalid private or public key received");return k(M)}const A=v,O=S;function B(R,D){eo("u",R,nn,n),eo("scalar",D,m,w);const M=D,F=R;let L=Je,H=nn,$=R,X=Je;const Y=M^M>>Je;for(let q=BigInt(d-1);q>=nn;q--){const W=Wd(n,Y>>q);({x_2:L,x_3:$}=u(W,L,$)),{x_2:H,x_3:X}=u(W,H,X);const z=L+H,V=I(z*z),J=L-H,oe=I(J*J),ne=V-oe,ae=$+X,he=$-X,Be=I(he*z),Ge=I(ae*J),Ee=Be+Ge,Ae=Be-Ge;$=I(Ee*Ee),X=I(F*I(Ae*Ae)),L=I(V*oe),H=I(ne*(V+I(g*ne)))}const U=Wd(n,M);({x_2:L,x_3:$}=u(U,L,$)),{x_2:H,x_3:X}=u(U,H,X);const K=s(H);return I(L*K)}const C={secretKey:f,publicKey:f,seed:f},E=R=>(R=R===void 0?l(f):R,er(R,C.seed,"seed"),R),P={randomSecretKey:E};return Object.freeze(C),Object.freeze(P),Object.freeze({keygen:kS(E,A),getSharedSecret:O,getPublicKey:A,scalarMult:S,scalarMultBase:v,utils:P,GuBytes:y.slice(),lengths:C})}const Gd=BigInt(0),LS=BigInt(1),Vd=BigInt(2),BS=BigInt(3),_S=BigInt(5),OS=BigInt(8),li=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),DS={p:li,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:OS,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function Ep(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),o=BigInt(80),s=li,a=t*t%s*t%s,c=st(a,Vd,s)*a%s,l=st(c,LS,s)*t%s,d=st(l,_S,s)*l%s,u=st(d,e,s)*d%s,f=st(u,n,s)*u%s,h=st(f,r,s)*f%s,g=st(h,o,s)*h%s,m=st(g,o,s)*h%s,b=st(m,e,s)*d%s;return{pow_p_5_8:st(b,Vd,s)*t%s,b2:a}}function FS(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Xd=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function MS(t,e){const n=li,r=le(e*e*e,n),o=le(r*r*e,n),s=Ep(t*o).pow_p_5_8;let i=le(t*r*s,n);const a=le(e*i*i,n),c=i,l=le(i*Xd,n),d=a===t,u=a===le(-t,n),f=a===le(-t*Xd,n);return d&&(i=c),(u||f)&&(i=l),cS(i,n)&&(i=le(-i,n)),{isValid:d||u,value:i}}const Yd=RS(DS,{uvRatio:MS}),$o=(()=>{const t=li,e=n=>{const{pow_p_5_8:r,b2:o}=Ep(n);return le(st(r,BS,t)*o,t)};return NS({P:t,type:"x25519",powPminus2:e,adjustScalarBytes:FS,scalarMultBase:n=>{const r=le(n,Yd.Fn.ORDER);if(r===Gd)return Gd;const o=Yd.BASE.multiply(r);return le((o.Z+o.Y)*e(le(o.Z-o.Y,t)),t)}})})();class Zd{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,n){if(ul(e),Ot(n,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("expected Hash instance");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,o=new Uint8Array(r);o.set(n.length>r?e.create().update(n).digest():n);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),pn(o)}update(e){return Cs(this),this.iHash.update(e),this}digestInto(e){Cs(this),np(e,this),this.finished=!0;const n=e.subarray(0,this.outputLen);this.iHash.digestInto(n),this.oHash.update(n),this.oHash.digestInto(n),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:a,canXOF:c}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.canXOF=c,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Ap=(()=>{const t=((e,n,r)=>new Zd(e,n).update(r).digest());return t.create=(e,n)=>new Zd(e,n),t})();function Jd(){const t={};return t.promise=new Promise((e,n)=>{t.resolve=e,t.reject=n}),t}class Qd{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){const e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}}class zi{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Qd(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){const n=this.head;this.head=n.next=new Qd(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){const n=this.tail.next;this.tail.next=null,this.tail=n,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}}class jS extends Error{type;code;constructor(e,n){super(e??"The operation was aborted"),this.type="aborted",this.code=n??"ABORT_ERR"}}function HS(t={}){return US(n=>{const r=n.shift();if(r==null)return{done:!0};if(r.error!=null)throw r.error;return{done:r.done===!0,value:r.value}},t)}function US(t,e){e=e??{};let n=e.onEnd,r=new zi,o,s,i,a=Jd();const c=async()=>{try{return r.isEmpty()?i?{done:!0}:await new Promise((b,w)=>{s=I=>{s=null,r.push(I);try{b(t(r))}catch(y){w(y)}return o}}):t(r)}finally{r.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=Jd()})}},l=b=>s!=null?s(b):(r.push(b),o),d=b=>(r=new zi,s!=null?s({error:b}):(r.push({error:b}),o)),u=b=>{if(i)return o;if(e?.objectMode!==!0&&b?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:b})},f=b=>i?o:(i=!0,b!=null?d(b):l({done:!0})),h=()=>(r=new zi,f(),{done:!0}),g=b=>(f(b),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:g,push:u,end:f,get readableLength(){return r.size},onEmpty:async b=>{const w=b?.signal;if(w?.throwIfAborted(),r.isEmpty())return;let I,y;w!=null&&(I=new Promise((k,N)=>{y=()=>{N(new jS)},w.addEventListener("abort",y)}));try{await Promise.race([a.promise,I])}finally{y!=null&&w!=null&&w?.removeEventListener("abort",y)}}},n==null)return o;const m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(b){return m.throw(b),n!=null&&(n(b),n=void 0),{done:!0}},return(){return m.return(),n!=null&&(n(),n=void 0),{done:!0}},push:u,end(b){return m.end(b),n!=null&&(n(b),n=void 0),o},get readableLength(){return m.readableLength},onEmpty:b=>m.onEmpty(b)},o}class bl extends Error{name="TimeoutError";constructor(e,n){super(e,n),Error.captureStackTrace?.(this,bl)}}const eu=t=>t.reason??new DOMException("This operation was aborted.","AbortError");function $S(t,e){const{milliseconds:n,fallback:r,message:o,customTimers:s={setTimeout,clearTimeout},signal:i}=e;let a,c;const d=new Promise((u,f)=>{if(typeof n!="number"||Math.sign(n)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${n}\``);if(i?.aborted){f(eu(i));return}if(i&&(c=()=>{f(eu(i))},i.addEventListener("abort",c,{once:!0})),t.then(u,f),n===Number.POSITIVE_INFINITY)return;const h=new bl;a=s.setTimeout.call(void 0,()=>{if(r){try{u(r())}catch(g){f(g)}return}typeof t.cancel=="function"&&t.cancel(),o===!1?u():o instanceof Error?f(o):(h.message=o??`Promise timed out after ${n} milliseconds`,f(h))},n)}).finally(()=>{d.clear(),c&&i&&i.removeEventListener("abort",c)});return d.clear=()=>{s.clearTimeout.call(void 0,a),a=void 0},d}const qS=t=>{const e=t.addEventListener||t.on||t.addListener,n=t.removeEventListener||t.off||t.removeListener;if(!e||!n)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(t),removeListener:n.bind(t)}};function KS(t,e,n){let r;const o=new Promise((s,i)=>{if(n={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...n},!(n.count>=0&&(n.count===Number.POSITIVE_INFINITY||Number.isInteger(n.count))))throw new TypeError("The `count` option should be at least 0 or more");n.signal?.throwIfAborted();const a=[e].flat(),c=[],{addListener:l,removeListener:d}=qS(t),u=async(...h)=>{const g=n.multiArgs?h:h[0];if(n.filter)try{if(!await n.filter(g))return}catch(m){r(),i(m);return}c.push(g),n.count===c.length&&(r(),s(c))},f=(...h)=>{r(),i(n.rejectionMultiArgs?h:h[0])};r=()=>{for(const h of a)d(h,u);for(const h of n.rejectionEvents)a.includes(h)||d(h,f)};for(const h of a)l(h,u);for(const h of n.rejectionEvents)a.includes(h)||l(h,f);n.signal&&n.signal.addEventListener("abort",()=>{f(n.signal.reason)},{once:!0}),n.resolveImmediately&&s(c)});if(o.cancel=r,typeof n.timeout=="number"){const s=$S(o,{milliseconds:n.timeout});return s.cancel=()=>{r(),s.clear()},s}return o}function zS(t,e,n){typeof n=="function"&&(n={filter:n}),n={...n,count:1,resolveImmediately:!1};const r=KS(t,e,n),o=r.then(s=>s[0]);return o.cancel=r.cancel,o}class Ns extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"}class WS extends Error{static name="StreamClosedError";name="StreamClosedError"}function GS(t){return t.reason}function kp(t,e,n){if(e==null||t==null)return t;const r=GS;if(e.aborted)return t.catch(()=>{}),Promise.reject(r(e));let o;return Promise.race([t,new Promise((s,i)=>{o=()=>{i(r(e))},e.addEventListener("abort",o)})]).finally(()=>{o!=null&&e.removeEventListener("abort",o)})}const VS=Math.pow(2,20)*4;class Cp extends iw{status;timeline;inactivityTimeout;maxReadBufferLength;maxWriteBufferLength;log;direction;maxMessageSize;readStatus;writeStatus;remoteReadStatus;remoteWriteStatus;writableNeedsDrain;readBuffer;writeBuffer;sendingData;onDrainPromise;constructor(e){super(),this.status="open",this.log=e.log,this.direction=e.direction??"outbound",this.inactivityTimeout=e.inactivityTimeout??12e4,this.maxReadBufferLength=e.maxReadBufferLength??VS,this.maxWriteBufferLength=e.maxWriteBufferLength,this.maxMessageSize=e.maxMessageSize,this.readBuffer=new ce,this.writeBuffer=new ce,this.readStatus="readable",this.remoteReadStatus="readable",this.writeStatus="writable",this.remoteWriteStatus="writable",this.sendingData=!1,this.writableNeedsDrain=!1,this.timeline={open:Date.now()},this.processSendQueue=this.processSendQueue.bind(this);const n=()=>{this.writableNeedsDrain&&(this.log.trace("drain event received, continue sending data"),this.writableNeedsDrain=!1,this.processSendQueue()),this.onDrainPromise?.resolve()};this.addEventListener("drain",n);const r=o=>{this.onDrainPromise?.reject(o.error??new WS)};this.addEventListener("close",r)}get readBufferLength(){return this.readBuffer.byteLength}get writeBufferLength(){return this.writeBuffer.byteLength}async onDrain(e){return this.writableNeedsDrain!==!0?Promise.resolve():(this.onDrainPromise==null&&(this.onDrainPromise=Promise.withResolvers()),kp(this.onDrainPromise.promise,e?.signal))}async*[Symbol.asyncIterator](){if(this.readStatus!=="readable"&&this.readStatus!=="paused")return;const e=HS(),n=s=>{e.push(s.data)};this.addEventListener("message",n);const r=s=>{e.end(s.error)};this.addEventListener("close",r);const o=()=>{e.end()};this.addEventListener("remoteCloseWrite",o);try{yield*e}finally{this.removeEventListener("message",n),this.removeEventListener("close",r),this.removeEventListener("remoteCloseWrite",o)}}isReadable(){return this.status==="open"}send(e){if(this.writeStatus==="closed"||this.writeStatus==="closing")throw new Nr(`Cannot write to a stream that is ${this.writeStatus}`);return this.log.trace("append %d bytes to write buffer",e.byteLength),this.writeBuffer.append(e),this.processSendQueue()}abort(e){if(!(this.status==="aborted"||this.status==="reset"||this.status==="closed")){this.log.error("abort with error - %e",e),this.status="aborted",this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle")),this.writeStatus="closed",this.remoteWriteStatus="closed",this.readStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now();try{this.sendReset(e)}catch(n){this.log("failed to send reset to remote - %e",n)}this.dispatchEvent(new kv(e))}}pause(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr("Cannot pause a stream that is closing/closed");this.readStatus!=="paused"&&(this.readStatus="paused",this.sendPause())}resume(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr("Cannot resume a stream that is closing/closed");this.readStatus!=="readable"&&(this.readStatus="readable",this.dispatchReadBuffer(),this.sendResume())}push(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.append(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}unshift(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.prepend(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}onData(e){if(e.byteLength!==0){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("ignoring data - read status %s",this.readStatus);return}this.readBuffer.append(e),this.dispatchReadBuffer()}}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="message"&&this.readBuffer.byteLength>0&&queueMicrotask(()=>{this.dispatchReadBuffer()})}onRemoteReset(){this.log("remote reset"),this.status="reset",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now(),this.readBuffer.byteLength===0&&(this.readStatus="closed");const e=new Ev;this.dispatchEvent(new Cv(e))}onTransportClosed(e){this.log("transport closed"),this.readStatus==="readable"&&this.readBuffer.byteLength===0&&(this.log("close readable end after transport closed and read buffer is empty"),this.readStatus="closed"),this.remoteReadStatus!=="closed"&&(this.remoteReadStatus="closed"),this.remoteWriteStatus!=="closed"&&(this.remoteWriteStatus="closed"),this.writeStatus!=="closed"&&(this.writeStatus="closed"),e!=null?this.abort(e):(this.status==="open"||this.status==="closing")&&(this.timeline.close=Date.now(),this.status="closed",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.dispatchEvent(new dl))}onRemoteCloseWrite(){this.remoteWriteStatus!=="closed"&&(this.log.trace("on remote close write"),this.remoteWriteStatus="closed",this.safeDispatchEvent("remoteCloseWrite"),this.writeStatus==="closed"&&this.onTransportClosed())}onRemoteCloseRead(){this.log.trace("on remote close read"),this.remoteReadStatus="closed",this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle"))}processSendQueue(){if(this.writableNeedsDrain)return this.log.trace("not processing send queue as drain is required"),this.checkWriteBufferLength(),!1;if(this.writeBuffer.byteLength===0)return this.log.trace("not processing send queue as no bytes to send"),!0;if(this.sendingData)return this.log.trace("not processing send queue as already sending data"),!0;this.sendingData=!0,this.log.trace("processing send queue with %d queued bytes",this.writeBuffer.byteLength);try{let e=!0;const n=this.writeBuffer.byteLength;let r=0;for(;this.writeBuffer.byteLength>0;){const o=Math.min(this.maxMessageSize??this.writeBuffer.byteLength,this.writeBuffer.byteLength);if(o===0){e=!1;break}const s=this.writeBuffer.sublist(0,o),i=new ce(s);this.writeBuffer.consume(s.byteLength);const a=this.sendData(s);if(e=a.canSendMore,r+=a.sentBytes,a.sentBytes!==i.byteLength&&(i.consume(a.sentBytes),this.writeBuffer.prepend(i)),!e)break}return e||(this.log.trace("sent %d/%d bytes, pausing sending because underlying stream is full, %d bytes left in the write buffer",r,n,this.writeBuffer.byteLength),this.writableNeedsDrain=!0,this.checkWriteBufferLength()),this.writeBuffer.byteLength===0&&this.safeDispatchEvent("idle"),e}finally{this.sendingData=!1}}dispatchReadBuffer(){try{if(this.listenerCount("message")===0){this.log.trace("not dispatching pause buffer as there are no listeners for the message event");return}if(this.readBuffer.byteLength===0){this.log.trace("not dispatching pause buffer as there is no data to dispatch");return}if(this.readStatus==="paused"){this.log.trace("not dispatching pause buffer we are paused");return}if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("dropping %d bytes because the readable end is %s",this.readBuffer.byteLength,this.readStatus),this.readBuffer.consume(this.readBuffer.byteLength);return}const e=this.readBuffer.sublist();this.readBuffer.consume(e.byteLength),this.dispatchEvent(new Av(e))}finally{this.readBuffer.byteLength===0&&this.remoteWriteStatus==="closed"&&(this.log("close readable end after dispatching read buffer and remote writable end is closed"),this.readStatus="closed"),this.checkReadBufferLength()}}checkReadBufferLength(){this.readBuffer.byteLength>this.maxReadBufferLength&&this.abort(new Od(`Read buffer length of ${this.readBuffer.byteLength} exceeded limit of ${this.maxReadBufferLength}, read status is ${this.readStatus}`))}checkWriteBufferLength(){this.maxWriteBufferLength!=null&&this.writeBuffer.byteLength>this.maxWriteBufferLength&&this.abort(new Od(`Write buffer length of ${this.writeBuffer.byteLength} exceeded limit of ${this.maxWriteBufferLength}, write status is ${this.writeStatus}`))}onMuxerNeedsDrain(){this.writableNeedsDrain=!0}onMuxerDrain(){this.safeDispatchEvent("drain")}}const XS=4194304;class tu extends Error{static name="UnwrappedError";name="UnwrappedError"}class Ip extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"}class YS extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"}class ZS extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"}function JS(t){return typeof t?.closeRead=="function"}function QS(t){return typeof t?.close=="function"}function Wi(t){return JS(t)?t.remoteWriteStatus!=="writable"&&t.readBufferLength===0:QS(t)?t.status!=="open":!1}function ex(t){return t?.addEventListener!=null&&t?.removeEventListener!=null&&t?.send!=null&&t?.push!=null&&t?.log!=null}function tx(t,e){const n=e?.maxBufferSize??XS,r=new ce;let o,s=!1;if(!ex(t))throw new tp("Argument should be a Stream or a Multiaddr");const i=d=>{if(r.append(d.data),r.byteLength>n){const u=r.byteLength;r.consume(r.byteLength),o?.reject(new Error(`Read buffer overflow - ${u} > ${n}`))}o?.resolve()};t.addEventListener("message",i);const a=d=>{d.error!=null?o?.reject(d.error):o?.resolve()};t.addEventListener("close",a);const c=()=>{o?.resolve()};t.addEventListener("remoteCloseWrite",c);const l={readBuffer:r,async read(d){if(s===!0)throw new tu("Stream was unwrapped");if(Wi(t)){if(d?.bytes==null)return null;if(r.byteLength<d.bytes)throw t.log.error("closed after reading %d/%d bytes",r.byteLength,d.bytes),new Ns(`Unexpected EOF - stream closed after reading ${r.byteLength}/${d.bytes} bytes`)}const u=d?.bytes??1;for(o=Promise.withResolvers();;){if(r.byteLength>=u){o.resolve();break}if(await kp(o.promise,d?.signal),Wi(t)){if(r.byteLength===0&&d?.bytes==null)return null;break}o=Promise.withResolvers()}const f=d?.bytes??r.byteLength;if(r.byteLength<f){if(Wi(t))throw t.log.error("closed while reading %d/%d bytes",r.byteLength,f),new Ns(`Unexpected EOF - stream closed while reading ${r.byteLength}/${f} bytes`);return l.read(d)}const h=r.sublist(0,f);return r.consume(f),h},async write(d,u){if(s===!0)throw new tu("Stream was unwrapped");t.send(d)||await zS(t,"drain",{signal:u?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,t.removeEventListener("message",i),t.removeEventListener("close",a),t.removeEventListener("remoteCloseWrite",c),r.byteLength>0&&(t.log("stream unwrapped with %d unread bytes",r.byteLength),t.push(r))),t}};return l}function nu(t,e={}){const n=tx(t,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=kn(e.maxDataLength));const r=e?.lengthDecoder??Oh,o=e?.lengthEncoder??a0;return{async read(i){let a=-1;const c=new ce;for(;;){const d=await n.read({...i,bytes:1});if(d==null)break;c.append(d);try{a=r(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new Ip("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new ZS(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new YS(`Message length too long - ${a} > ${e.maxDataLength}`);const l=await n.read({...i,bytes:a});if(l==null)throw t.log.error("tried to read %d bytes but the stream closed",a),new Ns(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw t.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new Ns(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await n.write(new ce(o(i.byteLength),i),a)},async writeV(i,a){const c=new ce(...i.flatMap(l=>[o(l.byteLength),l]));await n.write(c,a)},unwrap(){return n.unwrap()}}}const nx=1024*1024*4,rx=1024*1024*4;class ox{buffer;maxBufferSize;lengthDecoder;maxDataLength;encodingLength;constructor(e={}){this.buffer=new ce,this.maxBufferSize=e.maxBufferSize??nx,this.maxDataLength=e.maxDataLength??rx,this.lengthDecoder=e.lengthDecoder??Oh,this.encodingLength=e.encodingLength??kn}*decode(e){if(this.buffer.append(e),this.buffer.byteLength>this.maxBufferSize)throw new tp(`Buffer length limit exceeded - ${this.buffer.byteLength}/${this.maxBufferSize}`);for(;;){let n;try{n=this.lengthDecoder(this.buffer)}catch(s){if(s instanceof RangeError)break;throw s}if(n<0||n>this.maxDataLength)throw new Ip("Invalid message length");const r=this.encodingLength(n),o=r+n;if(this.buffer.byteLength>=o){const s=this.buffer.sublist(r,o);this.buffer.consume(o),s.byteLength>0&&(yield s)}else break}}}var sx={};const po=65535,ru=po-16,Io=!!sx?.DUMP_SESSION_KEYS,ou=16;function oc(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const Ls=t=>t?`"${t}" `:"";function sc(t,e=""){if(typeof t!="boolean")throw new TypeError(Ls(e)+"expected boolean, got type="+typeof t);return t}function nr(t,e=""){if(typeof t!="number")throw new TypeError(Ls(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(Ls(e)+"expected integer >= 0, got "+t);return t}function Ie(t,e,n=""){if(oc(t)&&(e===void 0||t.length===e))return t;e!==void 0&&nr(e,"length");const r=oc(t),o=e!==void 0?` of length ${e}`:"",s=r?`length=${t.length}`:`type=${typeof t}`,i=Ls(n)+"expected Uint8Array"+o+", got "+s;throw r?new RangeError(i):new TypeError(i)}const su=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(e==="object"?"expected valid options object":`"${e}" expected object, got type=${typeof t}`)};function iu(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function ix(t,e){Ie(t,void 0,"output");const n=e.outputLen;if(!(t.length>=n))throw new RangeError('"output" expected length >= '+n)}function It(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function Zt(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function ax(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}const rr=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function cx(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function lx(t){for(let e=0;e<t.length;e++)t[e]=cx(t[e]);return t}const ln=rr?t=>t:lx;function dx(t,e){return!t.byteLength||!e.byteLength?!1:t.buffer===e.buffer&&t.byteOffset<e.byteOffset+e.byteLength&&e.byteOffset<t.byteOffset+t.byteLength}function ux(t,e){if(dx(t,e)&&t.byteOffset<e.byteOffset)throw new Error("complex overlap of input and output is not supported")}function fx(t,e){return su(t,"defaults"),su(e,"opts"),Object.assign(t,e)}function hx(t,e){if(t=Ie(t),e=Ie(e),t.length!==e.length)return!1;let n=0;for(let r=0;r<t.length;r++)n|=t[r]^e[r];return n===0}function px(t,e,n){const r=e,o=(()=>[]),s=(a,c)=>r(c,...o(a)).update(a).digest(),i=r(new Uint8Array(t),...o(new Uint8Array(0)));return s.outputLen=i.outputLen,s.blockLen=i.blockLen,s.create=(a,...c)=>r(a,...c),s}const gx=(t,e)=>{function n(r,...o){if(Ie(r,void 0,"key"),t.nonceLength!==void 0){const u=o[0];Ie(u,t.varSizeNonce?void 0:t.nonceLength,"nonce")}const s=t.tagLength,i=t.nonceLength!==void 0?1:0;if(!t.withAAD){for(let u=i;u<o.length;u++)if(oc(o[u]))throw new Error("AAD not supported")}t.withAAD&&o[i]!==void 0&&Ie(o[i],void 0,"AAD");const a=e(r,...o),c=(u,f)=>{if(f!==void 0){if(u!==2)throw new Error("cipher output not supported");Ie(f,void 0,"output")}};let l=!1;return{encrypt(u,f){if(l)throw new Error("cannot encrypt() twice with same key + nonce");return l=!0,Ie(u,void 0,"data"),c(a.encrypt.length,f),a.encrypt(u,f)},decrypt(u,f){if(Ie(u,void 0,"data"),s&&u.length<s)throw new Error('"ciphertext" expected length >= tagLength='+s);return c(a.decrypt.length,f),a.decrypt(u,f)}}}return Object.assign(n,t),n};function ic(t,e,n=!0){if(e===void 0)return new Uint8Array(t);if(Ie(e,t,"output"),n&&!Bs(e))throw new Error("invalid output, must be aligned");return e}function mx(t,e,n){nr(t),nr(e),sc(n);const r=new Uint8Array(16),o=ax(r);return o.setBigUint64(0,BigInt(e),n),o.setBigUint64(8,BigInt(t),n),r}function Bs(t){return t.byteOffset%4===0}function _s(t){return Uint8Array.from(Ie(t))}const Rp=t=>Uint8Array.from(t.split(""),e=>e.charCodeAt(0)),wx=ln(It(Rp("expand 16-byte k"))),yx=ln(It(Rp("expand 32-byte k")));function re(t,e){return t<<e|t>>>32-e}const Lr=64,bx=16,ac=2**32-1,au=Uint32Array.of();function vx(t,e,n,r,o,s,i,a){const c=o.length,l=new Uint8Array(Lr),d=It(l),u=rr&&Bs(o)&&Bs(s),f=u?It(o):au,h=u?It(s):au;if(!rr){for(let g=0;g<c;i++){if(t(e,n,r,d,i,a),ln(d),i>=ac)throw new Error("arx: counter overflow");const m=Math.min(Lr,c-g);for(let b=0,w;b<m;b++)w=g+b,s[w]=o[w]^l[b];g+=m}return}for(let g=0;g<c;i++){if(t(e,n,r,d,i,a),i>=ac)throw new Error("arx: counter overflow");const m=Math.min(Lr,c-g);if(u&&m===Lr){const b=g/4;if(g%4!==0)throw new Error("arx: invalid block position");for(let w=0,I;w<bx;w++)I=b+w,h[I]=f[I]^d[w];g+=Lr;continue}for(let b=0,w;b<m;b++)w=g+b,s[w]=o[w]^l[b];g+=m}}function Sx(t,e){const{allowShortKeys:n,extendNonceFn:r,counterLength:o,counterRight:s,rounds:i}=fx({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof t!="function")throw new Error("core must be a function");return nr(o),nr(i),sc(s),sc(n),(a,c,l,d,u=0)=>{Ie(a,void 0,"key"),Ie(c,void 0,"nonce"),Ie(l,void 0,"data");const f=l.length,h=d!==void 0;if(d=ic(f,d,!1),h&&ux(l,d),nr(u),u<0||u>=ac)throw new Error("arx: counter overflow");const g=[];let m=a.length,b,w;if(m===32)g.push(b=_s(a)),w=yx;else if(m===16&&n)b=new Uint8Array(32),b.set(a),b.set(a,16),w=wx,g.push(b);else throw Ie(a,32,"arx key"),new Error("invalid key size");(!rr||!Bs(c))&&g.push(c=_s(c));let I=It(b);if(r){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");const N=c.subarray(0,16);if(rr)r(w,I,It(N),I);else{const x=ln(Uint32Array.from(w));r(x,I,It(N),I),Zt(x),ln(I)}c=c.subarray(16)}else rr||ln(I);const y=16-o;if(y!==c.length)throw new Error(`arx: nonce must be ${y} or 16 bytes`);if(y!==12){const N=new Uint8Array(12);N.set(c,s?0:12-c.length),c=N,g.push(c)}const k=ln(It(c));try{return vx(t,w,I,k,l,d,u,i),d}finally{Zt(...g)}}}function Te(t,e){return t[e++]&255|(t[e++]&255)<<8}class xx{blockLen=16;outputLen=16;buffer=new Uint8Array(16);r=new Uint16Array(10);h=new Uint16Array(10);pad=new Uint16Array(8);pos=0;finished=!1;destroyed=!1;constructor(e){e=_s(Ie(e,32,"key"));const n=Te(e,0),r=Te(e,2),o=Te(e,4),s=Te(e,6),i=Te(e,8),a=Te(e,10),c=Te(e,12),l=Te(e,14);this.r[0]=n&8191,this.r[1]=(n>>>13|r<<3)&8191,this.r[2]=(r>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let d=0;d<8;d++)this.pad[d]=Te(e,16+2*d)}process(e,n,r=!1){const o=r?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],d=i[3],u=i[4],f=i[5],h=i[6],g=i[7],m=i[8],b=i[9],w=Te(e,n+0),I=Te(e,n+2),y=Te(e,n+4),k=Te(e,n+6),N=Te(e,n+8),x=Te(e,n+10),T=Te(e,n+12),S=Te(e,n+14);let v=s[0]+(w&8191),A=s[1]+((w>>>13|I<<3)&8191),O=s[2]+((I>>>10|y<<6)&8191),B=s[3]+((y>>>7|k<<9)&8191),C=s[4]+((k>>>4|N<<12)&8191),E=s[5]+(N>>>1&8191),P=s[6]+((N>>>14|x<<2)&8191),R=s[7]+((x>>>11|T<<5)&8191),D=s[8]+((T>>>8|S<<8)&8191),M=s[9]+(S>>>5|o),F=0,L=F+v*a+A*(5*b)+O*(5*m)+B*(5*g)+C*(5*h);F=L>>>13,L&=8191,L+=E*(5*f)+P*(5*u)+R*(5*d)+D*(5*l)+M*(5*c),F+=L>>>13,L&=8191;let H=F+v*c+A*a+O*(5*b)+B*(5*m)+C*(5*g);F=H>>>13,H&=8191,H+=E*(5*h)+P*(5*f)+R*(5*u)+D*(5*d)+M*(5*l),F+=H>>>13,H&=8191;let $=F+v*l+A*c+O*a+B*(5*b)+C*(5*m);F=$>>>13,$&=8191,$+=E*(5*g)+P*(5*h)+R*(5*f)+D*(5*u)+M*(5*d),F+=$>>>13,$&=8191;let X=F+v*d+A*l+O*c+B*a+C*(5*b);F=X>>>13,X&=8191,X+=E*(5*m)+P*(5*g)+R*(5*h)+D*(5*f)+M*(5*u),F+=X>>>13,X&=8191;let Y=F+v*u+A*d+O*l+B*c+C*a;F=Y>>>13,Y&=8191,Y+=E*(5*b)+P*(5*m)+R*(5*g)+D*(5*h)+M*(5*f),F+=Y>>>13,Y&=8191;let U=F+v*f+A*u+O*d+B*l+C*c;F=U>>>13,U&=8191,U+=E*a+P*(5*b)+R*(5*m)+D*(5*g)+M*(5*h),F+=U>>>13,U&=8191;let K=F+v*h+A*f+O*u+B*d+C*l;F=K>>>13,K&=8191,K+=E*c+P*a+R*(5*b)+D*(5*m)+M*(5*g),F+=K>>>13,K&=8191;let q=F+v*g+A*h+O*f+B*u+C*d;F=q>>>13,q&=8191,q+=E*l+P*c+R*a+D*(5*b)+M*(5*m),F+=q>>>13,q&=8191;let W=F+v*m+A*g+O*h+B*f+C*u;F=W>>>13,W&=8191,W+=E*d+P*l+R*c+D*a+M*(5*b),F+=W>>>13,W&=8191;let z=F+v*b+A*m+O*g+B*h+C*f;F=z>>>13,z&=8191,z+=E*u+P*d+R*l+D*c+M*a,F+=z>>>13,z&=8191,F=(F<<2)+F|0,F=F+L|0,L=F&8191,F=F>>>13,H+=F,s[0]=L,s[1]=H,s[2]=$,s[3]=X,s[4]=Y,s[5]=U,s[6]=K,s[7]=q,s[8]=W,s[9]=z}finalize(){const{h:e,pad:n}=this,r=new Uint16Array(10);let o=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=o,o=e[a]>>>13,e[a]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,r[0]=e[0]+5,o=r[0]>>>13,r[0]&=8191;for(let a=1;a<10;a++)r[a]=e[a]+o,o=r[a]>>>13,r[a]&=8191;r[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)r[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|r[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+n[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+n[a]|0)+(i>>>16)|0,e[a]=i&65535;Zt(r)}update(e){iu(this),Ie(e),e=_s(e);const{buffer:n,blockLen:r}=this,o=e.length;for(let s=0;s<o;){const i=Math.min(r-this.pos,o-s);if(i===r){for(;r<=o-s;s+=r)this.process(e,s);continue}n.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===r&&(this.process(n,0,!1),this.pos=0)}return this}destroy(){this.destroyed=!0,Zt(this.h,this.r,this.buffer,this.pad)}digestInto(e){iu(this),ix(e,this),this.finished=!0;const{buffer:n,h:r}=this;let{pos:o}=this;if(o){for(n[o++]=1;o<16;o++)n[o]=0;this.process(n,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=r[i]>>>0,e[s++]=r[i]>>>8}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}}const Ex=px(32,t=>new xx(t));function Ax(t,e,n,r,o,s=20){let i=t[0],a=t[1],c=t[2],l=t[3],d=e[0],u=e[1],f=e[2],h=e[3],g=e[4],m=e[5],b=e[6],w=e[7],I=o,y=n[0],k=n[1],N=n[2],x=i,T=a,S=c,v=l,A=d,O=u,B=f,C=h,E=g,P=m,R=b,D=w,M=I,F=y,L=k,H=N;for(let X=0;X<s;X+=2)x=x+A|0,M=re(M^x,16),E=E+M|0,A=re(A^E,12),x=x+A|0,M=re(M^x,8),E=E+M|0,A=re(A^E,7),T=T+O|0,F=re(F^T,16),P=P+F|0,O=re(O^P,12),T=T+O|0,F=re(F^T,8),P=P+F|0,O=re(O^P,7),S=S+B|0,L=re(L^S,16),R=R+L|0,B=re(B^R,12),S=S+B|0,L=re(L^S,8),R=R+L|0,B=re(B^R,7),v=v+C|0,H=re(H^v,16),D=D+H|0,C=re(C^D,12),v=v+C|0,H=re(H^v,8),D=D+H|0,C=re(C^D,7),x=x+O|0,H=re(H^x,16),R=R+H|0,O=re(O^R,12),x=x+O|0,H=re(H^x,8),R=R+H|0,O=re(O^R,7),T=T+B|0,M=re(M^T,16),D=D+M|0,B=re(B^D,12),T=T+B|0,M=re(M^T,8),D=D+M|0,B=re(B^D,7),S=S+C|0,F=re(F^S,16),E=E+F|0,C=re(C^E,12),S=S+C|0,F=re(F^S,8),E=E+F|0,C=re(C^E,7),v=v+A|0,L=re(L^v,16),P=P+L|0,A=re(A^P,12),v=v+A|0,L=re(L^v,8),P=P+L|0,A=re(A^P,7);let $=0;r[$++]=i+x|0,r[$++]=a+T|0,r[$++]=c+S|0,r[$++]=l+v|0,r[$++]=d+A|0,r[$++]=u+O|0,r[$++]=f+B|0,r[$++]=h+C|0,r[$++]=g+E|0,r[$++]=m+P|0,r[$++]=b+R|0,r[$++]=w+D|0,r[$++]=I+M|0,r[$++]=y+F|0,r[$++]=k+L|0,r[$++]=N+H|0}const kx=Sx(Ax,{counterRight:!1,counterLength:4,allowShortKeys:!1}),Cx=new Uint8Array(16),cu=(t,e)=>{t.update(e);const n=e.length%16;n&&t.update(Cx.subarray(n))},Ix=new Uint8Array(32);function lu(t,e,n,r,o){o!==void 0&&Ie(o,void 0,"AAD");const s=t(e,n,Ix),i=mx(r.length,o?o.length:0,!0),a=Ex.create(s);o&&cu(a,o),cu(a,r),a.update(i);const c=a.digest();return Zt(s,i),c}const Rx=t=>(e,n,r)=>({encrypt(s,i){const a=s.length;i=ic(a+16,i,!1),i.set(s);const c=i.subarray(0,-16);t(e,n,c,c,1);const l=lu(t,e,n,c,r);return i.set(l,a),Zt(l),i},decrypt(s,i){i=ic(s.length-16,i,!1);const a=s.subarray(0,-16),c=s.subarray(-16),l=lu(t,e,n,a,r);if(!hx(c,l))throw Zt(l),new Error("invalid tag");return i.set(s.subarray(0,-16)),t(e,n,i,i,1),Zt(l),i}}),du=gx({blockSize:64,nonceLength:12,tagLength:16,withAAD:!0},Rx(kx));function Tx(t,e,n){return ul(t),n===void 0&&(n=new Uint8Array(t.outputLen)),Ap(t,n,e)}const Br=Uint8Array.of(0),Px=Uint8Array.of();function Nx(t,e,n,r=32,o){ul(t),_t(r,"length"),Ot(e,void 0,"prk");const s=t.outputLen;if(e.length<s)throw new Error('"prk" must be at least HashLen octets');if(r>255*s)throw new Error("Length must be <= 255*HashLen");const i=Math.ceil(r/s);if(n===void 0?n=Px:Ot(n,void 0,"info"),!i)return new Uint8Array;const a=new Uint8Array(i*s),{iHash:c,oHash:l}=Ap.create(t,e),d=new Uint8Array(s),u=i>1?t.create():void 0;for(let h=0;h<i-1;h++){Br[0]=h+1;const g=c._cloneInto(u);h&&g.update(d),g.update(n).update(Br).digestInto(d),l._cloneInto(u).update(d).digestInto(d),a.set(d,s*h)}if(Br[0]=i,i>1&&c.update(d),c.update(n).update(Br).digestInto(d),l.update(d).digestInto(d),a.set(d,s*(i-1)),c.destroy(),l.destroy(),u?.destroy(),d!==a&&pn(d),pn(Br),r===a.length)return a;const f=a.slice(0,r);return pn(a),f}const Tp={hashSHA256(t){return $i(t.subarray())},getHKDF(t,e){const n=Tx($i,e,t),o=Nx($i,n,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){const t=$o.utils.randomSecretKey();return{publicKey:$o.getPublicKey(t),privateKey:t}},generateX25519KeyPairFromSeed(t){return{publicKey:$o.getPublicKey(t),privateKey:t}},generateX25519SharedKey(t,e){return $o.getSharedSecret(t.subarray(),e.subarray())},chaCha20Poly1305Encrypt(t,e,n,r){return du(r,e,n).encrypt(t.subarray())},chaCha20Poly1305Decrypt(t,e,n,r,o){return du(r,e,n).decrypt(t.subarray(),o)}},Lx=Tp;function Bx(t){return{generateKeypair:t.generateX25519KeyPair,dh:(e,n)=>t.generateX25519SharedKey(e.privateKey,n).subarray(0,32),encrypt:t.chaCha20Poly1305Encrypt,decrypt:t.chaCha20Poly1305Decrypt,hash:t.hashSHA256,hkdf:t.getHKDF}}const Os=t=>{const e=Lt(2);return e[0]=t>>8,e[1]=t,e};Os.bytes=2;const Ds=t=>{if(t.length<2)throw RangeError("Could not decode int16BE");if(t instanceof Uint8Array){let e=0;return e+=t[0]<<8,e+=t[1],e}return t.getUint16(0)};Ds.bytes=2;function _x(t){return{xxHandshakeSuccesses:t.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:t.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:t.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:t.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:t.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}function Pp(t,e){!e.enabled||!Io||(t?(e(`LOCAL_STATIC_PUBLIC_KEY ${te(t.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${te(t.privateKey,"hex")}`)):e("Missing local static keys."))}function Np(t,e){!e.enabled||!Io||(t?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${te(t.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${te(t.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function Ox(t,e){!e.enabled||!Io||e(t?`REMOTE_STATIC_PUBLIC_KEY ${te(t.subarray(),"hex")}`:"Missing remote static public key.")}function Lp(t,e){!e.enabled||!Io||e(t?`REMOTE_EPHEMERAL_PUBLIC_KEY ${te(t.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function Bp(t,e,n){!n.enabled||!Io||(n(`CIPHER_STATE_1 ${t.n.getUint64()} ${t.k&&te(t.k,"hex")}`),n(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&te(e.k,"hex")}`))}class to extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=to.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"}const Dx=0,Fx=4294967295,Mx="Cipherstate has reached maximum n, a new handshake must be performed";class jx{n;bytes;view;constructor(e=Dx){this.n=e,this.bytes=qe(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,e,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>Fx)throw new Error(Mx)}}const or=qe(0);class qo{k;n;crypto;constructor(e,n=void 0,r=0){this.crypto=e,this.k=n,this.n=new jx(r)}hasKey(){return!!this.k}encryptWithAd(e,n){if(!this.hasKey())return n;this.n.assertValue();const r=this.crypto.encrypt(n,this.n.getBytes(),e,this.k);return this.n.increment(),r}decryptWithAd(e,n,r){if(!this.hasKey())return n;this.n.assertValue();const o=this.crypto.decrypt(n,this.n.getBytes(),e,this.k,r);return this.n.increment(),o}}class Hx{cs;ck;h;crypto;constructor(e,n){this.crypto=e;const r=ve(n,"utf-8");this.h=$x(e,r),this.ck=this.h,this.cs=new qo(e)}mixKey(e){const[n,r]=this.crypto.hkdf(this.ck,e);this.ck=n,this.cs=new qo(this.crypto,r)}mixHash(e){this.h=this.crypto.hash(new ce(this.h,e))}encryptAndHash(e){const n=this.cs.encryptWithAd(this.h,e);return this.mixHash(n),n}decryptAndHash(e){const n=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),n}split(){const[e,n]=this.crypto.hkdf(this.ck,or);return[new qo(this.crypto,e),new qo(this.crypto,n)]}}class Ux{ss;s;e;rs;re;initiator;crypto;constructor(e){const{crypto:n,protocolName:r,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=n,this.ss=new Hx(n,r),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");const e=this.crypto.generateKeypair();return this.ss.mixHash(e.publicKey),this.e=e,e.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(e,n=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<n+32)throw new Error("message is not long enough");this.re=e.sublist(n,n+32),this.ss.mixHash(this.re)}readS(e,n=0){if(this.rs)throw new Error("remote static public key is already set");const r=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<n+r)throw new Error("message is not long enough");const o=e.sublist(n,n+r);return this.rs=this.ss.decryptAndHash(o),r}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}}class _p extends Ux{writeMessageA(e){return new ce(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){const n=this.writeE();this.writeEE();const r=this.writeS();return this.writeES(),new ce(n,r,this.ss.encryptAndHash(e))}writeMessageC(e){const n=this.writeS();return this.writeSE(),new ce(n,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(n){throw new to(`handshake stage 0 validation fail: ${n.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();const n=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+n))}catch(n){throw new to(`handshake stage 1 validation fail: ${n.message}`)}}readMessageC(e){try{const n=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(n))}catch(n){throw new to(`handshake stage 2 validation fail: ${n.message}`)}}}function $x(t,e){if(e.length<=32){const n=qe(32);return n.set(e),n}else return t.hash(e)}var Fs;(function(t){let e;t.codec=()=>(e==null&&(e=ii((n,r,o={})=>{if(o.lengthDelimited!==!1&&r.fork(),n.webtransportCerthashes!=null)for(const s of n.webtransportCerthashes)r.uint32(10),r.bytes(s);if(n.streamMuxers!=null)for(const s of n.streamMuxers)r.uint32(18),r.string(s);o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={webtransportCerthashes:[],streamMuxers:[]},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{if(o.limits?.webtransportCerthashes!=null&&s.webtransportCerthashes.length===o.limits.webtransportCerthashes)throw new Nd('Decode error - map field "webtransportCerthashes" had too many elements');s.webtransportCerthashes.push(n.bytes());break}case 2:{if(o.limits?.streamMuxers!=null&&s.streamMuxers.length===o.limits.streamMuxers)throw new Nd('Decode error - map field "streamMuxers" had too many elements');s.streamMuxers.push(n.string());break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>si(n,t.codec()),t.decode=(n,r)=>oi(n,t.codec(),r)})(Fs||(Fs={}));var Ms;(function(t){let e;t.codec=()=>(e==null&&(e=ii((n,r,o={})=>{o.lengthDelimited!==!1&&r.fork(),n.identityKey!=null&&n.identityKey.byteLength>0&&(r.uint32(10),r.bytes(n.identityKey)),n.identitySig!=null&&n.identitySig.byteLength>0&&(r.uint32(18),r.bytes(n.identitySig)),n.extensions!=null&&(r.uint32(34),Fs.codec().encode(n.extensions,r)),o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={identityKey:qe(0),identitySig:qe(0)},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{s.identityKey=n.bytes();break}case 2:{s.identitySig=n.bytes();break}case 4:{s.extensions=Fs.codec().decode(n,n.uint32(),{limits:o.limits?.extensions});break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>si(n,t.codec()),t.decode=(n,r)=>oi(n,t.codec(),r)})(Ms||(Ms={}));async function Op(t,e,n){const r=await t.sign(Fp(e));return Ms.encode({identityKey:ai(t.publicKey),identitySig:r,extensions:n})}async function Dp(t,e,n){try{const r=Ms.decode(t),o=ec(r.identityKey);if(n?.equals(o)===!1)throw new Error(`Payload identity key ${o} does not match expected remote identity key ${n}`);if(!e)throw new Error("Remote static does not exist");const s=Fp(e);if(!await o.verify(s,r.identitySig))throw new Error("Invalid payload signature");return r}catch(r){throw new Qm(r.message)}}function Fp(t){const e=ve("noise-libp2p-static-key:");return t instanceof Uint8Array?qa([e,t],e.length+t.length):(t.prepend(e),t)}class qx extends Cp{stream;handshake;metrics;decoder;constructor(e,n,r){super({log:e.log,inactivityTimeout:e.inactivityTimeout,maxReadBufferLength:e.maxReadBufferLength,direction:e.direction}),this.stream=e,this.handshake=n,this.metrics=r,this.decoder=new ox({lengthDecoder:Ds,maxBufferSize:16*1024*1024,encodingLength:()=>2});const o=c=>{try{for(const l of this.decoder.decode(c.data))this.onData(this.decrypt(l))}catch(l){this.abort(l)}};this.stream.addEventListener("message",o);const s=c=>{c.error!=null?c.local===!0?this.abort(c.error):this.onRemoteReset():this.onTransportClosed()};this.stream.addEventListener("close",s);const i=()=>{this.safeDispatchEvent("drain")};this.stream.addEventListener("drain",i);const a=()=>{this.onRemoteCloseWrite()};this.stream.addEventListener("remoteCloseWrite",a)}encrypt(e){const n=new ce;for(let r=0;r<e.byteLength;r+=ru){let o=r+ru;o>e.byteLength&&(o=e.byteLength);let s;e instanceof Uint8Array?s=this.handshake.encrypt(e.subarray(r,o)):s=this.handshake.encrypt(e.sublist(r,o)),this.metrics?.encryptedPackets.increment(),n.append(Os(s.byteLength)),n.append(s)}return n}decrypt(e){const n=new ce;for(let r=0;r<e.byteLength;r+=po){let o=r+po;if(o>e.byteLength&&(o=e.byteLength),o-ou<r)throw new Error("Invalid chunk");let s;e instanceof Uint8Array?s=e.subarray(r,o):s=e.sublist(r,o);const i=e.subarray(r,o-ou);try{const a=this.handshake.decrypt(s,i);this.metrics?.decryptedPackets.increment(),n.append(a)}catch(a){throw this.metrics?.decryptErrors.increment(),a}}return n}close(e){return this.stream.close(e)}sendPause(){this.stream.pause()}sendResume(){this.stream.resume()}sendReset(e){this.stream.abort(e)}sendData(e){return{sentBytes:e.byteLength,canSendMore:this.stream.send(this.encrypt(e))}}}function uu(t,e,n){return new qx(t,e,n)}async function Kx(t,e){const{log:n,connection:r,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await Op(s,a.publicKey,l),u=new _p({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:i,s:a});Pp(u.s,n),n.trace("Stage 0 - Initiator starting to send first message."),await r.write(u.writeMessageA(or),e),n.trace("Stage 0 - Initiator finished sending first message."),Np(u.e,n),n.trace("Stage 1 - Initiator waiting to receive first message from responder...");const f=u.readMessageB(await r.read(e));n.trace("Stage 1 - Initiator received the message."),Lp(u.re,n),Ox(u.rs,n),n.trace("Initiator going to check remote's signature...");const h=await Dp(f,u.rs,c);n.trace("All good with the signature!"),n.trace("Stage 2 - Initiator sending third handshake message."),await r.write(u.writeMessageC(d),e),n.trace("Stage 2 - Initiator sent message with signed payload.");const[g,m]=u.ss.split();return Bp(g,m,n),{payload:h,encrypt:b=>g.encryptWithAd(or,b),decrypt:(b,w)=>m.decryptWithAd(or,b,w)}}async function zx(t,e){const{log:n,connection:r,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await Op(s,a.publicKey,l),u=new _p({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:i,s:a});Pp(u.s,n),n.trace("Stage 0 - Responder waiting to receive first message."),u.readMessageA(await r.read(e)),n.trace("Stage 0 - Responder received first message."),Lp(u.re,n),n.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await r.write(u.writeMessageB(d),e),n.trace("Stage 1 - Responder sent the second handshake message with signed payload."),Np(u.e,n),n.trace("Stage 2 - Responder waiting for third handshake message...");const f=u.readMessageC(await r.read(e));n.trace("Stage 2 - Responder received the message, finished handshake.");const h=await Dp(f,u.rs,c),[g,m]=u.ss.split();return Bp(g,m,n),{payload:h,encrypt:b=>m.encryptWithAd(or,b),decrypt:(b,w)=>g.decryptWithAd(or,b,w)}}class Wx{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;log;constructor(e,n={}){const{staticNoiseKey:r,extensions:o,crypto:s,prologueBytes:i}=n,{metrics:a}=e;this.components=e,this.log=e.logger.forComponent("libp2p:noise");const c=s??Lx;this.crypto=Bx(c),this.extensions={webtransportCerthashes:[],...o},this.metrics=a?_x(a):void 0,r?this.staticKey=c.generateX25519KeyPairFromSeed(r):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??qe(0)}[Symbol.toStringTag]="@chainsafe/libp2p-noise";[aw]=["@libp2p/connection-encryption","@chainsafe/libp2p-noise"];async secureOutbound(e,n){const r=e.log?.newScope("noise")??this.log,o=nu(e,{lengthEncoder:Os,lengthDecoder:Ds,maxDataLength:po}),s=await this.performHandshakeInitiator(o,this.components.privateKey,r,n?.remotePeer?.publicKey,n),i=ec(s.payload.identityKey);return{connection:uu(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:ur(i),streamMuxer:n?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}getStreamMuxer(e){if(e==null||e.length===0)return;const n=this.components.upgrader.getStreamMuxers();if(n!=null)for(const r of e){const o=n.get(r);if(o!=null)return o}if(e.length)throw new ew("Early muxer negotiation was requested but the initiator and responder had no common muxers")}async secureInbound(e,n){const r=e.log?.newScope("noise")??this.log,o=nu(e,{lengthEncoder:Os,lengthDecoder:Ds,maxDataLength:po}),s=await this.performHandshakeResponder(o,this.components.privateKey,r,n?.remotePeer?.publicKey,n),i=ec(s.payload.identityKey);return{connection:uu(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:ur(i),streamMuxer:n?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}async performHandshakeInitiator(e,n,r,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await Kx({connection:e,privateKey:n,remoteIdentityKey:o,log:r.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}async performHandshakeResponder(e,n,r,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await zx({connection:e,privateKey:n,remoteIdentityKey:o,log:r.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}}function Gx(t={}){return e=>new Wx(e,t)}const Vx="termdock-e2ee-v1",cc=3600*1e3,fu=512*1024*1024,lc=4*1024*1024,ts=()=>{},di=Object.assign(ts,{enabled:!1,error:ts,trace:ts,newScope:()=>di});Object.freeze(di);async function Mp(){const t=await fv();return{privateKey:t,peerId:ur(t.publicKey).toString()}}function Xx(t){return btoa(String.fromCharCode(...gv(t.privateKey)))}function hu(t){if(t.length>512||!/^[A-Za-z0-9+/]+={0,2}$/.test(t))throw new Error("Invalid identity encoding");const e=pv(Uint8Array.from(atob(t),n=>n.charCodeAt(0)));if(e.type!=="Ed25519")throw new Error("Only Ed25519 device identities are supported");return{privateKey:e,peerId:ur(e.publicKey).toString()}}class jp{constructor(e=ts){this.consumed=e}consumed;chunks=[];size=0;ended=!1;error;wake;push(e){if(this.ended)throw this.error??new Error("Byte stream closed");if(this.size+e.byteLength>lc)throw new Error("Secure stream buffer limit exceeded");this.chunks.push(e.slice()),this.size+=e.byteLength,this.wake?.()}end(e){this.ended=!0,this.error??=e,this.wake?.()}async*[Symbol.asyncIterator](){for(;;){if(this.error)throw this.error;const e=this.chunks.shift();if(e)this.size-=e.byteLength,yield e,this.consumed();else{if(this.ended)return;await new Promise(n=>{this.wake=n})}}}}class Yx extends Cp{constructor(e,n){super({log:di,direction:n?"outbound":"inbound",maxReadBufferLength:lc,maxWriteBufferLength:lc}),this.duplex=e,this.finished=e.sink(this.outgoing).catch(r=>{this.abort(fr(r))}),this.readTransport()}duplex;outgoing=new jp(()=>this.onMuxerDrain());finished;async readTransport(){try{for await(const e of this.duplex.source)this.onData(e.slice());this.onTransportClosed()}catch(e){this.onTransportClosed(fr(e))}}sendData(e){return this.outgoing.push(e.subarray()),{sentBytes:e.byteLength,canSendMore:!1}}sendReset(e){this.outgoing.end(e),this.duplex.close?.(e)}sendPause(){}sendResume(){}async close(){this.outgoing.end(),this.duplex.close?.(),this.onTransportClosed(),await this.finished}}function fr(t){return t instanceof Error?t:new Error("Secure transport failed")}class Zx extends Error{code="E2EE_REHANDSHAKE_REQUIRED";constructor(){super("Encrypted connection lifetime reached; establish a new handshake without replaying pending input")}}function Jx(t){const e=t?.maxAgeMs??cc,n=t?.maxBytesPerDirection??fu;if(!Number.isSafeInteger(e)||e<=0||e>cc||!Number.isSafeInteger(n)||n<=0||n>fu)throw new Error("Encrypted connection limits cannot exceed the production maximum");return{maxAgeMs:e,maxBytesPerDirection:n}}async function Qx(t){const{identity:e,duplex:n,initiator:r,targetPinnedPeerId:o,signal:s}=t,i=Jx(t.limits);if(typeof Reflect.get(Promise,"withResolvers")!="function"||typeof globalThis.crypto?.getRandomValues!="function")throw new Error("End-to-end encryption requires Node.js 22+ or a modern browser with Promise.withResolvers and secure random support");if(r&&!o)throw new Error("A pinned target identity is required");const a=o?bv(o):void 0;if(a&&a.type!=="Ed25519")throw new Error("Only Ed25519 target identities are supported");if(e.peerId!==ur(e.privateKey.publicKey).toString())throw new Error("Local identity mismatch");if(s?.aborted)throw s.reason??new Error("Connection aborted");const c=new Yx(n,r),l=new AbortController,d=setTimeout(()=>{const h=new Error("Encrypted handshake timed out");l.abort(h),c.abort(h)},15e3),u=()=>{l.abort(s?.reason),c.abort(fr(s?.reason))};s?.addEventListener("abort",u,{once:!0}),c.addEventListener("close",()=>s?.removeEventListener("abort",u),{once:!0});const f=Gx({crypto:Tp,prologueBytes:new TextEncoder().encode(Vx)})({privateKey:e.privateKey,peerId:ur(e.privateKey.publicKey),logger:{forComponent:()=>di},upgrader:{getStreamMuxers:()=>new Map}});try{const h=await(r?f.secureOutbound(c,{remotePeer:a,signal:l.signal,skipStreamMuxerNegotiation:!0}):f.secureInbound(c,{remotePeer:a,signal:l.signal,skipStreamMuxerNegotiation:!0}));if(h.remotePeer.type!=="Ed25519")throw new Error("Unsupported remote identity");return{authenticatedPeerId:h.remotePeer.toString(),duplex:eE(h.connection,i)}}catch(h){throw c.abort(fr(h)),h}finally{clearTimeout(d),s?.removeEventListener("abort",u)}}function eE(t,e){const n=new jp,r=performance.now(),o=Date.now();let s=0,i=0,a;const c=()=>(a??=new Zx,n.end(a),t.abort(a),a),l=setTimeout(c,e.maxAgeMs);typeof l=="object"&&l.unref?.();const d=(f,h)=>{if(a)throw a;if(Math.max(performance.now()-r,Date.now()-o)>=e.maxAgeMs||f+h>=e.maxBytesPerDirection)throw c()};t.addEventListener("message",f=>{try{d(i,f.data.byteLength),i+=f.data.byteLength,n.push(f.data.subarray())}catch(h){t.abort(fr(h))}}),t.addEventListener("close",f=>{clearTimeout(l),n.end(f.error)},{once:!0});let u=!1;return{source:n,async sink(f){if(u)throw new Error("Secure sink already consumed");u=!0;try{for await(const h of f)d(s,h.byteLength),s+=h.byteLength,t.send(h)||await t.onDrain()}catch(h){throw t.abort(fr(h)),h}},close(f){f?t.abort(f):t.close()}}}const Hp=1012,Up="Encrypted transport renewed";class vl{constructor(e=64){this.limit=e}limit;items=[];wake;ended=!1;error;push(e){if(this.ended)throw new Error("Channel closed");if(this.items.length>=this.limit)throw this.end(new Error("Channel queue exceeded")),this.error;this.items.push(e),this.wake?.()}end(e){this.ended=!0,this.error??=e,this.wake?.()}async*[Symbol.asyncIterator](){for(;;){if(this.error)throw this.error;const e=this.items.shift();if(e!==void 0){yield e;continue}if(this.ended)return;await new Promise(n=>{this.wake=n}),this.wake=void 0}}}const Gi=2*1024*1024,tE=new TextEncoder,nE=new TextDecoder("utf-8",{fatal:!0});class rE{constructor(e){this.duplex=e;const n=this;this.done=e.sink((async function*(){for await(const r of n.outgoing)try{yield r}finally{n.outgoingBytes-=r.byteLength}})()),this.done.catch(r=>this.close(r instanceof Error?r:new Error("Transport failed")))}duplex;outgoing=new vl(256);outgoingBytes=0;get hasPendingWrites(){return this.outgoingBytes>0}done;send(e){const n=tE.encode(JSON.stringify(e));if(n.length>Gi)throw new Error("Record too large");const r=new Uint8Array(n.length+4);if(new DataView(r.buffer).setUint32(0,n.length),r.set(n,4),this.outgoingBytes+r.byteLength>4*1024*1024)throw new Error("Record queue byte budget exceeded");this.outgoingBytes+=r.byteLength;try{this.outgoing.push(r)}catch(o){throw this.outgoingBytes-=r.byteLength,o}}close(e){this.outgoing.end(e),this.duplex.close?.(e)}async*read(){let e=new Uint8Array(0);for await(const n of this.duplex.source){if(e.length+n.length>Gi*2+8)throw new Error("Record buffer exceeded");const r=new Uint8Array(e.length+n.length);for(r.set(e),r.set(n,e.length),e=r;e.length>=4;){const o=new DataView(e.buffer,e.byteOffset,4).getUint32(0);if(o>Gi||o===0)throw new Error("Invalid record size");if(e.length<o+4)break;const s=JSON.parse(nE.decode(e.subarray(4,o+4)));if(!s||typeof s!="object"||typeof s.id!="string"||typeof s.type!="string")throw new Error("Invalid record");yield s,e=e.slice(o+4)}}if(e.length)throw new Error("Truncated record")}}function $p(t){let e="";for(let n=0;n<t.length;n+=8192)e+=String.fromCharCode(...t.subarray(n,n+8192));return btoa(e)}function qp(t){const e=atob(t);return Uint8Array.from(e,n=>n.charCodeAt(0))}function oE(t){const e=new vl(64);t.binaryType="arraybuffer";const n=r=>{e.end(r),t.close(1e3)};return t.addEventListener("message",r=>{try{if(!(r.data instanceof ArrayBuffer)||r.data.byteLength>1024*1024)throw new Error("Invalid encrypted frame");e.push(new Uint8Array(r.data))}catch{n(new Error("Encrypted transport rejected frame"))}}),t.addEventListener("close",()=>e.end()),t.addEventListener("error",()=>e.end(new Error("Encrypted transport disconnected"))),{source:e,close:n,async sink(r){try{for await(const o of r)for(let s=0;s<o.length;s+=64*1024){const i=Date.now();for(;t.bufferedAmount>256*1024;){if(t.readyState!==1||Date.now()-i>15e3)throw new Error("Encrypted transport congested");await new Promise(a=>setTimeout(a,10))}if(t.readyState!==1)throw new Error("Encrypted transport closed");t.send(o.subarray(s,s+64*1024))}}catch(o){throw n(o instanceof Error?o:new Error("Encrypted transport failed")),o}}}}const Kp=8,zp=128,sE=5*1024*1024,iE=zp+Kp+8,aE=256,Ko=3e4,_r=64*1024;function Wt(t){return t instanceof Error?t:new Error(String(t??"Secure connection closed"))}function pu(t){if(!t.startsWith("/")||t.startsWith("//")||t.includes("#"))throw new Error("A local API path is required");return t}class Wp extends EventTarget{constructor(e,n,r){super(),this.url=e,this.transmit=n,this.disconnect=r}url;transmit;disconnect;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;binaryType="arraybuffer";bufferedAmount=0;protocol="termdock-e2ee-v1";extensions="";getConnectionDiagnostics;createdAt=performance.now();openedAfterMs;readyState=0;onopen=null;onmessage=null;onerror=null;onclose=null;send(e){if(this.readyState!==1)throw new Error("Secure socket is not open");if(typeof e!="string"||new TextEncoder().encode(e).length>1024*1024)throw new Error("Unsupported socket payload");this.transmit(e)}close(e=1e3,n=""){this.readyState!==3&&(this.disconnect(),this.finish(e,n))}accept(e){if(this.readyState!==3)if(e.type==="ws-ready"){this.openedAfterMs=performance.now()-this.createdAt,this.readyState=1;const n=new Event("open");this.dispatchEvent(n),this.onopen?.(n)}else if(e.type==="ws-data"&&typeof e.data=="string"){const n=new MessageEvent("message",{data:e.data});this.dispatchEvent(n),this.onmessage?.(n)}else e.type==="ws-close"?this.finish(typeof e.code=="number"?e.code:1e3,typeof e.reason=="string"?e.reason:""):e.type==="error"&&this.fail(Wt(e.error))}fail(e){if(this.readyState===3)return;const n=new Event("error");this.dispatchEvent(n),this.onerror?.(n),this.finish(1006,e.message)}finish(e,n){if(this.readyState===3)return;this.readyState=3;const r=new CloseEvent("close",{code:e,reason:n,wasClean:e===1e3});this.dispatchEvent(r),this.onclose?.(r)}}class cE{constructor(e,n,r){this.channel=e,this.identity=n,this.targetPeerId=r,this.read().catch(o=>this.close(Wt(o))),e.done.catch(o=>this.close(Wt(o)))}channel;identity;targetPeerId;transportDiagnostics;establishedAt=performance.now();establishedWallTime=Date.now();lastInputAt=-1/0;pending=new Map;waiting=[];stopped=!1;closeReason;get canSwitchTransport(){return!this.channel.hasPendingWrites&&performance.now()-this.lastInputAt>=2e3&&![...this.pending.values()].some(e=>e.kind!=="socket")&&!this.waiting.some(e=>e.kind!=="socket")}get renewalDue(){return!this.stopped&&Math.max(performance.now()-this.establishedAt,Date.now()-this.establishedWallTime)>=cc-5*6e4}get closed(){return this.stopped}hasCapacity(e){if(this.pending.size>=iE)return!1;const n=[...this.pending.values()].filter(r=>r.kind===e).length;return e==="http"?n<Kp:e==="socket"?n<zp:!0}allocate(e){if(this.stopped)throw this.closeReason??new Error("Secure connection closed");const n=crypto.randomUUID(),r=new vl(4);return this.pending.set(n,{queue:r,kind:e}),{id:n,queue:r}}reserve(e,n){return n?.aborted?Promise.reject(n.reason):this.stopped?Promise.reject(this.closeReason??new Error("Secure connection closed")):this.hasCapacity(e)?Promise.resolve(this.allocate(e)):this.waiting.length>=aE?Promise.reject(new Error("连接繁忙,请稍后重试。")):new Promise((r,o)=>{const s=l=>{this.waiting=this.waiting.filter(d=>d!==c),c.cleanup(),o(l)},i=()=>s(n?.reason??new Error("Request aborted")),a=setTimeout(()=>s(new Error("连接等待超时,请重试。")),Ko),c={kind:e,resolve:r,reject:o,cleanup:()=>{clearTimeout(a),n?.removeEventListener("abort",i)}};this.waiting.push(c),n?.addEventListener("abort",i,{once:!0})})}dispatchWaiting(){if(!this.stopped)for(let e=0;e<this.waiting.length;){const n=this.waiting[e];if(!this.hasCapacity(n.kind)){e++;continue}this.waiting.splice(e,1),n.cleanup(),n.resolve(this.allocate(n.kind))}}async read(){try{for await(const e of this.channel.read()){const n=this.pending.get(e.id);n&&(n.socket?(n.socket.accept(e),(e.type==="ws-close"||e.type==="error")&&this.release(e.id)):(n.queue.push(e),(e.type==="end"||e.type==="error")&&(n.cancelUpload?.(),this.release(e.id))))}}finally{this.close(new Error("Secure connection closed"))}}release(e){this.pending.get(e)?.queue.end(),this.pending.delete(e),this.dispatchWaiting()}async request(e,n){const{id:r,queue:o}=await this.reserve("request"),s=setTimeout(()=>this.close(new Error("Secure connection timed out")),Math.max(1e3,Math.min(Ko,n?.timeoutMs??Ko)));try{if(this.stopped)throw this.closeReason;this.channel.send({...e,id:r});const i=(await o[Symbol.asyncIterator]().next()).value;if(!i)throw new Error("Secure request closed");if(i.type==="error")throw Wt(i.error);return i}finally{clearTimeout(s),this.release(r)}}openSocket(e){pu(e);let n;const r=new AbortController,o=new Wp(e,i=>{if(n){try{JSON.parse(i)?.type==="input"&&(this.lastInputAt=performance.now())}catch{}this.channel.send({id:n,type:"ws-data",data:i})}},()=>{if(r.abort(),n)try{this.channel.send({id:n,type:"ws-close"})}finally{this.release(n)}});let s;return o.getConnectionDiagnostics=()=>{const i=this.transportDiagnostics?.();return i?{...i,socketOpenMs:o.openedAfterMs,socketQueueMs:s,pendingWrites:this.channel.hasPendingWrites,activeRequests:[...this.pending.values()].filter(a=>a.kind!=="socket").length,waitingRequests:this.waiting.length}:void 0},this.reserve("socket",r.signal).then(i=>{if(s=performance.now()-o.createdAt,n=i.id,o.readyState===3){this.release(n);return}const a=this.pending.get(n);if(!a)throw new Error("Secure connection closed");a.socket=o,this.channel.send({id:n,type:"ws-open",path:e})}).catch(i=>{n&&this.release(n),o.fail(Wt(i))}),o}async fetch(e,n){const r=typeof location>"u"?"https://termdock.invalid":location.origin,o=e instanceof Request?e:null,s=new URL(o?.url??String(e),r);if(s.origin!==r)throw new Error("Only current-service API requests are supported");const i=new Request(s,o?new Request(o,n):n),a=i.method.toUpperCase(),c=pu(s.pathname+s.search),l=s.pathname==="/api/terminal/fs/upload"?110*1024*1024:sE;if(i.signal.aborted)throw i.signal.reason;const d={};i.headers.forEach((k,N)=>{["cookie","authorization","host","connection","content-length"].includes(N)||(d[N]=k)});const{id:u,queue:f}=await this.reserve("http",i.signal),h=f[Symbol.asyncIterator]();let g;const m=()=>{g?.cancel().catch(()=>{})},b=this.pending.get(u);if(!b)throw new Error("Secure connection closed");b.cancelUpload=m;const w=()=>{m();try{this.channel.send({id:u,type:"cancel"})}catch{}f.end(Wt(i.signal.reason??"Request aborted")),this.release(u)};i.signal.addEventListener("abort",w,{once:!0});const I=()=>{i.signal.removeEventListener("abort",w),this.release(u)},y=async()=>{let k;try{const N=(await Promise.race([h.next(),new Promise((x,T)=>{k=setTimeout(()=>T(new Error("服务响应超时,请重试。")),Ko)})])).value;if(!N)throw new Error("Secure response ended unexpectedly");if(N.type==="error")throw Wt(N.error);return N}finally{clearTimeout(k)}};try{if(i.signal.aborted)throw i.signal.reason;if(this.channel.send({id:u,type:"http",method:a,path:c,headers:d}),i.body){const S=i.body.getReader();g=S;let v=0,A=0;try{for(;;){const{done:O,value:B}=await S.read();if(O)break;if(v+=B.byteLength,v>l)throw new Error("Request body exceeds upload limit");for(let C=0;C<B.byteLength;C+=_r){if(this.channel.send({id:u,type:"upload",data:$p(B.subarray(C,C+_r))}),(await y()).type!=="upload-ack")throw new Error("Invalid upload acknowledgement");A+=Math.min(_r,B.byteLength-C),n?.onUploadProgress?.(A)}}}catch(O){throw await S.cancel(O).catch(()=>{}),O}finally{g=void 0,S.releaseLock()}}if(i.signal.aborted||this.stopped)throw new Error("Request aborted");this.channel.send({id:u,type:"upload-end"});const k=await y();if(k.type!=="head"||typeof k.status!="number")throw new Error("Invalid response header");const N=new Headers(k.headers);if(a==="HEAD"||[204,205,304].includes(k.status)){if((await y()).type!=="end")throw new Error("Unexpected response body");return I(),new Response(null,{status:k.status,headers:N})}let x=!1;const T=new ReadableStream({pull:async S=>{try{x&&(this.channel.send({id:u,type:"ack"}),x=!1);const v=await y();if(v.type==="end"){S.close(),I();return}if(v.type!=="chunk"||typeof v.data!="string")throw new Error("Invalid response chunk");const A=qp(v.data);if(A.length>_r)throw new Error("Response chunk exceeds budget");S.enqueue(A),x=!0}catch(v){S.error(v),w(),I()}},cancel:()=>{w(),I()}},{highWaterMark:_r,size:S=>S.byteLength});return new Response(T,{status:k.status,headers:N})}catch(k){throw w(),I(),k}}retire(){for(const e of this.pending.values())e.socket?.accept({id:"",type:"ws-close",code:Hp,reason:Up});this.close()}close(e=new Error("Secure connection closed")){if(!this.stopped){this.stopped=!0,this.closeReason=e;for(const n of this.waiting.splice(0))n.cleanup(),n.reject(e);for(const n of this.pending.values())n.queue.end(e),n.cancelUpload?.(),n.socket?.fail(e);this.pending.clear(),this.channel.close(e)}}}async function vn(t){const e=new URL(t.url);if(!["wss:","ws:"].includes(e.protocol))throw new Error("A WebSocket endpoint is required");if(e.protocol==="ws:"&&!["127.0.0.1","localhost","[::1]"].includes(e.hostname))throw new Error("Remote secure channels require WSS");const n=t.identity??await Mp(),r=performance.now(),o=(t.socketFactory??(l=>new WebSocket(l)))(e.href),s=oE(o),i=new AbortController,a=setTimeout(()=>i.abort(new Error("Secure handshake timed out")),2e4),c=t.signal?AbortSignal.any([t.signal,i.signal]):i.signal;try{await new Promise((m,b)=>{if(c.aborted){b(c.reason);return}const w=()=>{c.removeEventListener("abort",k),o.removeEventListener("open",I),o.removeEventListener("error",y),o.removeEventListener("close",y)},I=()=>{w(),m()},y=()=>{w(),b(new Error("Secure transport unavailable"))},k=()=>{w(),b(c.reason)};c.addEventListener("abort",k,{once:!0}),o.addEventListener("open",I),o.addEventListener("error",y),o.addEventListener("close",y),o.readyState===1&&I()});const l=performance.now(),d=await Qx({identity:n,duplex:s,initiator:!0,targetPinnedPeerId:t.targetPeerId,signal:c}),u=new cE(new rE(d.duplex),n,d.authenticatedPeerId),f=performance.now(),h=Date.now(),g=o.connectionTimings;if(u.transportDiagnostics=()=>({endpoint:e.host,path:g?"relay":"direct",targetPeerId:d.authenticatedPeerId,transportOpenMs:l-r,handshakeMs:f-l,establishedAt:h,relay:g?{...g}:void 0,bufferedBytes:o.bufferedAmount,pendingWrites:!1,activeRequests:0,waitingRequests:0}),t.pairingCode)try{await u.request({type:"pair",code:t.pairingCode})}catch(m){throw u.close(Wt(m)),m}return u}catch(l){throw o.close(),l}finally{clearTimeout(a)}}const gu=256*1024,lE=1024*1024;class dE extends EventTarget{constructor(e,n,r=o=>new WebSocket(o)){if(super(),this.url=e,!/^[a-zA-Z0-9_.:-]{1,160}$/.test(n))throw new Error("Invalid target identity");const o=performance.now();let s;this.upstream=r(e),this.upstream.addEventListener("open",()=>{this.connectionTimings.entryOpenMs=performance.now()-o}),this.deadline=setTimeout(()=>this.fail("Relay connection timed out"),2e4),this.upstream.addEventListener("message",i=>{if(this.readyState!==3)try{if(typeof i.data!="string"||new TextEncoder().encode(i.data).length>gu)throw new Error("Invalid relay envelope");const a=JSON.parse(i.data);if(a.type==="ready"&&!this.requested){s=performance.now(),this.requested=!0,this.transmit({type:"open",streamId:this.streamId,serviceId:n});return}if(a.streamId!==this.streamId)return;if(a.type==="opened"&&this.readyState===0){this.connectionTimings.routeOpenMs=s===void 0?null:performance.now()-s,clearTimeout(this.deadline),this.readyState=1;const u=new Event("open");this.dispatchEvent(u),this.onopen?.(u);return}if(a.type==="close"){this.finish(1001,"Relay route closed"),this.upstream.close();return}if(a.type!=="data"||this.readyState!==1||a.encoding!=="base64"||typeof a.payload!="string"||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(a.payload))throw new Error("Invalid ciphertext relay frame");const c=qp(a.payload),l=this.binaryType==="blob"?new Blob([c]):c.buffer,d=new MessageEvent("message",{data:l});this.dispatchEvent(d),this.onmessage?.(d)}catch{this.fail("Relay protocol rejected frame")}}),this.upstream.addEventListener("close",i=>this.finish(i.code||1006,"Relay disconnected")),this.upstream.addEventListener("error",()=>this.fail("Relay transport unavailable"))}url;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;protocol="";extensions="";binaryType="arraybuffer";readyState=0;onopen=null;onmessage=null;onerror=null;onclose=null;connectionTimings={entryOpenMs:null,routeOpenMs:null};upstream;streamId=crypto.randomUUID();requested=!1;deadline;get bufferedAmount(){return this.upstream.bufferedAmount}transmit(e){const n=JSON.stringify(e);if(this.upstream.readyState!==1||this.upstream.bufferedAmount+n.length>lE||n.length>gu)throw new Error("Relay unavailable or congested");this.upstream.send(n)}send(e){if(this.readyState!==1)throw new Error("Relay socket is not open");let n;if(ArrayBuffer.isView(e))n=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);else if(e instanceof ArrayBuffer)n=new Uint8Array(e);else throw new Error("Relay secure transport requires binary bytes");try{this.transmit({type:"data",streamId:this.streamId,encoding:"base64",payload:$p(n)})}catch(r){throw this.fail("Relay transport congested"),r}}close(e=1e3,n=""){if(this.readyState!==3){try{this.requested&&this.transmit({type:"close",streamId:this.streamId})}catch{}this.finish(e,n),this.upstream.close()}}fail(e){if(this.readyState===3)return;const n=new Event("error");this.dispatchEvent(n),this.onerror?.(n),this.finish(1006,e),this.upstream.close()}finish(e,n){if(this.readyState===3)return;clearTimeout(this.deadline),this.readyState=3;const r=new CloseEvent("close",{code:e,reason:n,wasClean:e===1e3});this.dispatchEvent(r),this.onclose?.(r)}}function Gp(t){return e=>new dE(e,t)}function uE(t){if(typeof t!="string"||!t.startsWith("/api/")||/[\\\x00-\x20\x7f#]/.test(t))return null;const e=t.split("?")[0];if(e.includes("//"))return null;try{const r=e.split("/").map((o,s)=>{if(s===0||o===""&&s===e.split("/").length-1)return o;const i=decodeURIComponent(o);if(!i||i==="."||i===".."||/[\\/\x00-\x1f\x7f]/.test(i)||/%[a-f0-9]{2}/i.test(i))throw new Error("Ambiguous API path");return i}).join("/");return r.endsWith("/")&&!r.startsWith("/api/terminal/fs/preview/")?null:r}catch{return null}}function fE(t){if(!("serviceWorker"in navigator))return()=>{};const e=new Set,n=r=>{if(r.source!==navigator.serviceWorker.controller||r.data?.type!=="termdock-secure-fetch"||r.ports.length!==1)return;const o=r.ports[0],{path:s,method:i,headers:a,body:c,expectedTargetPeerId:l,previewPrefix:d}=r.data;let u;try{u=new URL(s,location.origin)}catch{o.close();return}if(u.origin!==location.origin||!u.pathname.startsWith("/api/")||e.size>=32||typeof i!="string"||c!==void 0&&(!(c instanceof ArrayBuffer)||c.byteLength>5*1024*1024)){o.postMessage({type:"error"}),o.close();return}if(d!==void 0&&(typeof d!="string"||!d.endsWith("/")||!/^\/api\/terminal\/fs\/preview\/[a-f0-9]{32}\//.test(d)||!["GET","HEAD"].includes(i)||!uE(u.pathname)?.startsWith(d))){o.postMessage({type:"error"}),o.close();return}const f=new AbortController;let h,g,m=!1,b=!1;const w=()=>{b||(b=!0,e.delete(w),f.abort(),h?.cancel().catch(()=>{}),o.close())};e.add(w),o.onmessage=I=>{if(I.data?.type==="cancel"){w();return}I.data?.type!=="pull"||m||b||(m=!0,(async()=>{if(!h){o.postMessage({type:"end"}),w();return}if(!g?.length){const k=await h.read();if(k.done){o.postMessage({type:"end"}),w();return}g=k.value}const y=g.slice(0,64*1024);g=g.subarray(y.length),o.postMessage({type:"chunk",data:y.buffer},[y.buffer])})().catch(()=>{o.postMessage({type:"error"}),w()}).finally(()=>{m=!1}))},o.onmessageerror=w,o.start(),(async()=>{const I=await t();if(b)return;if(l&&l!==I.targetPeerId)throw new Error("Preview target changed");const y=await I.fetch(u.pathname+u.search,{method:i,headers:a,body:["GET","HEAD"].includes(i)?void 0:c,signal:f.signal});if(b){await y.body?.cancel();return}h=y.body?.getReader();const k={};y.headers.forEach((N,x)=>{k[x]=N}),o.postMessage({type:"head",status:y.status,headers:k,bodyless:!h,targetPeerId:I.targetPeerId})})().catch(()=>{b||(o.postMessage({type:"error"}),w())})};return navigator.serviceWorker.addEventListener("message",n),()=>{navigator.serviceWorker.removeEventListener("message",n);for(const r of[...e])r()}}class tt extends Error{constructor(){super("Device authorization expired or revoked")}}const zo=new WeakMap;function br(t,e={}){const n=zo.get(t);if(!t.closed&&n&&(!n.settled||Date.now()-n.at<(e.maxAgeMs??1e3)))return n.pending;const r={at:Date.now(),settled:!1,pending:void 0},o=hE(t,e.timeoutMs??5e3).then(s=>(r.at=Date.now(),r.settled=!0,s),s=>{throw zo.get(t)===r&&zo.delete(t),s});return r.pending=o,zo.set(t,r),o}async function hE(t,e){const n=await t.request({type:"permissions"},{timeoutMs:e});if(n.type!=="result"||typeof n.fullService!="boolean"||!Array.isArray(n.grants))throw new Error("Invalid permission response");const r=n.grants,o=n.fullService===!0;if(!o&&r.length===0)throw new tt;return{fullService:o,grants:r,canManage:o&&r.length>0||r.some(s=>s.actions.includes("authorization.manage"))}}const Vp="termdock-secure-last-path:",pE=10*6e4;function Xp(t){try{const e=JSON.parse(sessionStorage.getItem(Vp+t)||"null");return e&&typeof e.key=="string"&&Date.now()-e.at<pE?e.key:void 0}catch{return}}function dc(t,e){try{sessionStorage.setItem(Vp+t,JSON.stringify({key:e,at:Date.now()}))}catch{}}function Yp(t,e,n=!1){return new Promise((r,o)=>{let s=0,i=0,a=!1,c,l;const d=new Set,u=()=>{clearTimeout(l);for(const h of d)h.abort();d.clear()},f=()=>{if(a)return;if(s>=t.length){i||(a=!0,u(),o(c||new Error("没有可用的连接路线。")));return}if(i>=(n?1:2))return;const h=t[s++],g=performance.now(),m=w=>{performance.getEntriesByName("termdock:connection-path").length>64&&performance.clearMeasures("termdock:connection-path"),performance.measure("termdock:connection-path",{start:g,end:performance.now(),detail:{path:h.key.startsWith("relay:")?"relay":"direct",ok:w}})},b=new AbortController;d.add(b),i++,h.run(b.signal).then(w=>{if(m(!0),d.delete(b),a){e(w);return}a=!0,u(),r({value:w,key:h.key})},w=>{if(m(!1),d.delete(b),i--,!a){if(c=w,w instanceof tt){a=!0,u(),o(w);return}f()}}),clearTimeout(l),!n&&s<t.length&&(l=setTimeout(f,400))};f()})}const gE=3,mE=1/0,wE=10,Zp="termdock-secure-workspace-limit";function Jp(t){return t===1/0||Number.isInteger(t)&&t>=3&&t<=wE}function yE(){try{const t=localStorage.getItem(Zp),e=t==="unlimited"?1/0:Number(t);if(Jp(e))return e}catch{}return navigator.maxTouchPoints>0?gE:mE}function bE(t,e,n,r){if(t.length<=r)return t;const o=new Set(["root",e,...n?[n]:[]]),s=[...t].reverse().sort((i,a)=>a.touchedAt-i.touchedAt);for(const i of s){if(o.size>=r)break;o.add(i.key)}return t.filter(i=>o.has(i.key))}const Qp="termdock-workspace",go="termdock:workspace-visibility",uc="termdock:workspace-activate";function ui(){return window.parent!==window&&location.pathname==="/workspace.html"&&new URLSearchParams(location.search).get(Qp)||"root"}let mu,wu;function mt(){try{if(window.parent===window)return window.__termdockWorkspaceHost;const t=window.parent.__termdockWorkspaceHost;return t&&t!==mu&&(mu=t,wu={...t,subscribe(e){const n=t.subscribe(e,ui()),r=o=>{o.persisted||n()};return window.addEventListener("pagehide",r),()=>{n(),window.removeEventListener("pagehide",r)}}}),t?wu:void 0}catch{return}}function ns(){const t=mt();return!t||t.snapshot().activeKey===ui()}function js(t,e=!0){return mt()?.activate(t,e)??!1}function $n(t){mt()?.report(ui(),t)}const fc="termdock-secure-workspace-session:",eg="termdock-secure-last-workspace";function vE(){for(const t of["sessionStorage","localStorage"])try{const e=window[t].getItem(eg);if(e)return e}catch{}return null}function SE(t){for(const e of["sessionStorage","localStorage"])try{window[e].setItem(eg,t)}catch{}}function NR(t){if(t)try{const e=JSON.parse(localStorage.getItem(fc+t)||"null");return localStorage.removeItem(fc+t),e&&typeof e.sessionId=="string"&&Date.now()-e.at<6e4?e.sessionId:void 0}catch{return}}function xE(t){if(window.parent!==window||window.termdockDesktop)return;if(window.__termdockWorkspaceHost)return window.__termdockWorkspaceHost;let e={activeKey:"root",items:[{key:"root",service:t,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()}]};try{const u=vE(),f=t&&u!==t.targetPeerId?wn().find(h=>h.targetPeerId===u):void 0;f?.targetPeerId&&(e={activeKey:f.targetPeerId,items:[...e.items,{key:f.targetPeerId,service:f,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()}]})}catch{}let n=yE(),r=e.activeKey==="root"?"root":null;const o=new Map,s=new Map([["root",window]]),i=new Set,a=()=>{for(const u of[...o.keys()])u()},c=()=>{const u=bE(e.items,e.activeKey,r,n),f=new Set(u.map(h=>h.key));e={...e,items:u};for(const[h,g]of o)g&&!f.has(g)&&o.delete(h);for(const h of s.keys())f.has(h)||s.delete(h);for(const h of i)f.has(h)||i.delete(h)},l=(u,f)=>{try{const h=f.document.createEvent("CustomEvent");if(h.initCustomEvent(go,!1,!1,{active:e.activeKey===u}),f.dispatchEvent(h),e.activeKey===u){const g=f.document.createEvent("Event");if(g.initEvent("resize",!1,!1),f.dispatchEvent(g),i.delete(u)){const m=f.document.createEvent("Event");m.initEvent(uc,!1,!1),f.dispatchEvent(m)}}else f.document.activeElement?.blur?.()}catch{}},d={snapshot:()=>e,subscribe:(u,f)=>(o.set(u,f),()=>{o.delete(u)}),present(u){r=u},retentionLimit:()=>n,setRetentionLimit(u){if(Jp(u)){n=u;try{localStorage.setItem(Zp,u===1/0?"unlimited":String(u))}catch{}c(),a()}},activate(u,f=!0){const h=Ys(u);if(!h?.targetPeerId)return!1;const g=e.items.find(w=>w.service?.targetPeerId===h.targetPeerId),m=g?.key||h.targetPeerId,b=g?{...g,service:h,touchedAt:Date.now()}:{key:m,service:h,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()};e={activeKey:m,items:g?e.items.map(w=>w===g?b:w):[...e.items,b]},c(),SE(h.targetPeerId),f&&i.add(m),a();for(const[w,I]of s)l(w,I);return!0},report(u,f){const h=e.items.find(m=>m.key===u);if(!h||f.service&&h.service?.targetPeerId&&f.service.targetPeerId!==h.service.targetPeerId)return;const g={...h,...f};JSON.stringify(g)!==JSON.stringify(h)&&(e={...e,items:e.items.map(m=>m===h?g:m)},a())},attach(u,f){f&&e.items.some(h=>h.key===u)?(s.set(u,f),l(u,f)):s.delete(u)},focusSession(u,f){const h=wn().find(m=>m.targetPeerId===u);if(!h)return!1;try{localStorage.setItem(fc+u,JSON.stringify({sessionId:f,at:Date.now()}))}catch{return!1}d.activate(h,!1);const g=s.get(e.activeKey);if(g){const m=g.document.createEvent("CustomEvent");m.initCustomEvent("termdock:workspace-session",!1,!1,null),g.dispatchEvent(m)}return!0}};return window.__termdockWorkspaceHost=d,d}let Vi;async function nt(){return Vi||(Vi=(async()=>{const t=await new Promise((e,n)=>{const r=indexedDB.open("termdock-device-identity",1);r.onupgradeneeded=()=>r.result.createObjectStore("keys"),r.onsuccess=()=>e(r.result),r.onerror=()=>n(r.error)});try{const e=await new Promise((o,s)=>{const i=t.transaction("keys").objectStore("keys").get("identity");i.onsuccess=()=>o(i.result),i.onerror=()=>s(i.error)});if(e)return hu(e);const n=await Mp();let r=n;return await new Promise((o,s)=>{const i=t.transaction("keys","readwrite"),a=i.objectStore("keys"),c=a.get("identity");c.onsuccess=()=>{typeof c.result=="string"?r=hu(c.result):a.put(Xx(n),"identity")},i.oncomplete=()=>o(),i.onerror=()=>s(i.error)}),r}finally{t.close()}})()),Vi}const Qe="termdock:secure-state";let Q,qn,He,hr="direct",rs=!1,yu=0,os=!1,bu=-1/0;const pr=globalThis.fetch.bind(globalThis);function se(){return ao()}function Vt(){return Q}function EE(){return He}function tg(){Q?.close(),He?.close(),Q=void 0,He=void 0}async function ng(){const t=await pr("/api/auth/status",{signal:AbortSignal.timeout(5e3)});if(!t.ok)throw new Error("Failed to query auth status");return t.json()}async function AE(){if(se()){await at();return}if((await ng()).enabled)return;const t=await pr("/api/auth/open/parameters",{cache:"no-store"});if(!t.ok)throw new Error("Open service unavailable");const{serviceIdentity:e}=await t.json();if(typeof e!="string"||!e)throw new Error("Invalid service identity");await et({url:location.origin,targetPeerId:e,serviceName:location.hostname})}async function kE(t,e){const{startPasswordBootstrap:n,finishPasswordBootstrap:r}=await en(async()=>{const{startPasswordBootstrap:l,finishPasswordBootstrap:d}=await import("./passwordBootstrap-D7lxBxbp.js");return{startPasswordBootstrap:l,finishPasswordBootstrap:d}},__vite__mapDeps([0,1,2,3])),o=l=>t===location.origin?l:new URL(l,t).href,s=async(l,d)=>{const u=await pr(o(l),{credentials:"omit",cache:"no-store",signal:AbortSignal.timeout(15e3),...d?{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)}:{}});if(!u.ok)throw new Error(u.status===429?"尝试次数较多,请稍后再试。":u.status===401?"密码不正确,请重新输入。":"暂时无法登录这台服务,请稍后重试。");return u.json()},{saltHex:i}=await s("/api/auth/password/parameters"),a=await nt(),c=await n(e,i);try{const l=await s("/api/auth/password/start",{startLoginRequest:c.startLoginRequest,clientIdentity:a.peerId});let d;try{d=await r(c,l,{clientIdentity:a.peerId,origin:location.origin})}catch{throw new Error("密码不正确,或服务身份无法验证。请检查后重试。")}return await s("/api/auth/password/finish",{attemptId:d.attemptId,finishLoginRequest:d.finishLoginRequest}),{url:t,targetPeerId:d.serverIdentity,serviceName:new URL(t).host,serviceOrigin:t}}finally{c.passwordKey=""}}async function Sl(t,e){const n=se();if(n&&(n.serviceOrigin||n.url)===t)return await hc(n,e),n;try{return await kE(t,e)}catch(r){if(!(r instanceof TypeError)&&!(r instanceof DOMException))throw r;const o=(await We()).find(i=>i.targetPeerId&&(i.serviceOrigin||i.url)===t);if(!o?.targetPeerId)throw new Error("暂时连不上这台服务,请检查地址和网络。");const s={...o,targetPeerId:o.targetPeerId,serviceName:o.label};return await hc(s,e),s}}async function hc(t,e){const n=await xl(t),{startPasswordBootstrap:r,finishPasswordBootstrap:o}=await en(async()=>{const{startPasswordBootstrap:i,finishPasswordBootstrap:a}=await import("./passwordBootstrap-D7lxBxbp.js");return{startPasswordBootstrap:i,finishPasswordBootstrap:a}},__vite__mapDeps([0,1,2,3]));let s;try{const i=await n.request({type:"password-parameters"},{timeoutMs:5e3});s=await r(e,String(i.saltHex));const a=await n.request({type:"password-start",startLoginRequest:s.startLoginRequest,origin:location.origin}),c=await o(s,a,{clientIdentity:(await nt()).peerId,origin:location.origin});if(c.serverIdentity!==t.targetPeerId)throw new Error("服务身份发生变化。");await n.request({type:"password-finish",attemptId:c.attemptId,finishLoginRequest:c.finishLoginRequest})}catch{throw new Error("暂时无法登录,请检查目标服务密码与入口授权后重试。")}finally{s&&(s.passwordKey=""),n.close()}}async function CE(t){try{const e=se(),n=e?.serviceOrigin||location.origin,r=await Sl(n,t);return await et({...r,routes:e?.routes,serviceName:e?.serviceName||r.serviceName}),Response.json({ok:!0})}catch(e){return Response.json({error:e instanceof Error?e.message:"暂时无法登录,请重试。",code:"INVALID_PASSWORD"},{status:401})}}async function vu(t,e){const n=Me(t),r=(await We()).find(i=>(i.serviceOrigin||i.url)===n&&i.targetPeerId);if(e===void 0&&r?.targetPeerId)try{return await et({...r,targetPeerId:r.targetPeerId,serviceName:r.label}),{}}catch(i){if(!(i instanceof tt))throw i}if(e!==void 0){const i=await Sl(n,e);if(r?.targetPeerId&&r.targetPeerId!==i.targetPeerId)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await et({...i,routes:r?.routes,serviceName:r?.label||i.serviceName}),{}}const o=await pr(new URL("/api/auth/open/parameters",n).href,{credentials:"omit",cache:"no-store",signal:AbortSignal.timeout(1e4)}).catch(()=>{throw new Error("暂时连不上这台服务,请检查地址和网络后重试。")});if(o.status===403)return{passwordRequired:!0};if(!o.ok)throw new Error("这台服务暂时不可用,请稍后重试。");const{serviceIdentity:s}=await o.json();if(typeof s!="string"||!s)throw new Error("这不是可连接的 Termdock 服务。");if(r?.targetPeerId&&r.targetPeerId!==s)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await et({url:n,targetPeerId:s,serviceName:r?.label||new URL(n).host,serviceOrigin:n}),{}}function Qt(t){const e=[...t.routes||[]];if(t.entryServiceId&&t.entryServiceId!==t.targetPeerId&&e.unshift({url:t.url,targetPeerId:t.entryServiceId}),!e.length&&t.routes===void 0)try{const n=JSON.parse(localStorage.getItem(Kc)||"null");n&&n.targetPeerId!==t.targetPeerId&&new URL(n.url).host===new URL(t.url).host&&e.push(n)}catch{}return e.flatMap((n,r)=>{try{return n.targetPeerId&&n.targetPeerId!==t.targetPeerId&&e.findIndex(o=>o.targetPeerId===n.targetPeerId)===r?[{url:Me(n.url),targetPeerId:n.targetPeerId}]:[]}catch{return[]}}).slice(0,4)}function vr(t){const e=Qt(t),n=[t.serviceOrigin||t.url,...(t.routes||[]).slice(0,4).filter(o=>o.targetPeerId===t.targetPeerId).map(o=>o.url)],r=new Set;for(const o of n)try{const s=Me(o);e.some(i=>i.url===s)||r.add(s)}catch{}return[...r]}function Sn(t){const e=new URL("/api/federation/secure",Me(t));return e.protocol=e.protocol==="https:"?"wss:":"ws:",e.href}async function tn(t,e){return vn({url:Sn(t.url),targetPeerId:t.targetPeerId,identity:await nt(),signal:e?AbortSignal.any([e,AbortSignal.timeout(5e3)]):AbortSignal.timeout(5e3)})}async function xl(t,e){const n=await nt(),r=vr(t).map(i=>({key:`direct:${i}`,run:a=>vn({url:Sn(i),targetPeerId:t.targetPeerId,identity:n,signal:AbortSignal.any([a,AbortSignal.timeout(8e3),...e?[e]:[]])})}));for(const i of Qt(t))r.push({key:`relay:${i.targetPeerId}:${i.url}`,run:async a=>{e&&(a=AbortSignal.any([a,e]));const c=[Q,He].find(d=>d&&!d.closed&&d.targetPeerId===i.targetPeerId),l=c||await tn(i,a);try{if(a.aborted)throw a.reason;const d=await l.request({type:"route-ticket",serviceId:t.targetPeerId},{timeoutMs:5e3});if(a.aborted)throw a.reason;if(typeof d.routeToken!="string")throw new Error("入口未允许此设备连接该服务。");const u=new URL(Sn(i.url));return u.pathname="/api/federation/relay",u.searchParams.set("routeToken",d.routeToken),await vn({url:u.href,targetPeerId:t.targetPeerId,identity:n,socketFactory:Gp(t.targetPeerId),signal:AbortSignal.any([a,AbortSignal.timeout(8e3)])})}finally{c||l.close()}}});const o=Xp(t.targetPeerId);r.sort((i,a)=>+(a.key===o)-+(i.key===o));const s=await Yp(r,i=>i.close());return dc(t.targetPeerId,s.key),s.value}async function IE(t,e){const n=await xl(t,e);try{const o=(await n.request({type:"collaboration-descriptor"},{timeoutMs:5e3})).node;if(o?.serviceId!==t.targetPeerId)throw new Error("PEER_IDENTITY_MISMATCH");return{...o,serviceId:t.targetPeerId}}finally{n.close()}}async function RE(t,e){const n=await xl(t,e),r=()=>n.close();e.addEventListener("abort",r,{once:!0});try{if(e.aborted||(await br(n,{timeoutMs:3e3}),e.aborted))throw e.reason;return n}catch(o){throw n.close(),o}finally{e.removeEventListener("abort",r)}}async function et(t,e={}){const n=Q,r=He,o=await nt(),s=Me(t.serviceOrigin||t.url),i=(await We()).find(w=>w.targetPeerId===t.targetPeerId),a={...t,routes:t.routes??i?.routes},c=Qt(a),l=vr(a);let d,u,f=t.pairingCode,h="direct";const g=new Set,m=new Map,b=async(w,I)=>{if(n&&!n.closed&&n.targetPeerId===w.targetPeerId)return n;if(r&&!r.closed&&r.targetPeerId===w.targetPeerId)return r;const y=m.get(w.targetPeerId);if(y&&!y.closed)return y;const k=await tn(w,I);return g.add(k),m.set(w.targetPeerId,k),k};try{if(t.routeCode&&t.entryServiceId){const S=c.find(O=>O.targetPeerId===t.entryServiceId);if(!S)throw new Error("邀请缺少入口信息。");if((await(await b(S)).request({type:"route-pair",code:t.routeCode})).serviceId!==t.targetPeerId)throw new Error("邀请的目标服务不一致。");t.routeOnly&&await Nt({id:t.targetPeerId,url:s,label:t.serviceName||new URL(s).host,targetPeerId:t.targetPeerId,serviceOrigin:s,routes:c})}const w=[],I=async(S,v)=>{const A=()=>S.close();v.addEventListener("abort",A,{once:!0});try{if(v.aborted||(await br(S),v.aborted))throw v.reason}catch(O){throw S.close(),O}finally{v.removeEventListener("abort",A)}};for(const S of l)w.push({key:`direct:${S}`,run:async v=>{const A=await vn({url:Sn(S),targetPeerId:t.targetPeerId,pairingCode:f,identity:o,signal:AbortSignal.any([v,AbortSignal.timeout(8e3)])});return f=void 0,await I(A,v),{client:A,path:"direct"}}});for(const S of c)w.push({key:`relay:${S.targetPeerId}:${S.url}`,run:async v=>{let A,O;try{if(A=await b(S,v),v.aborted)throw v.reason;const B=await A.request({type:"route-ticket",serviceId:t.targetPeerId},{timeoutMs:5e3});if(v.aborted)throw v.reason;if(typeof B.routeToken!="string"||!B.routeToken)throw new Error("入口未允许此设备连接该服务。");const C=new URL(Sn(S.url));return C.pathname="/api/federation/relay",C.searchParams.set("routeToken",B.routeToken),O=await vn({url:C.href,targetPeerId:t.targetPeerId,pairingCode:f,identity:o,socketFactory:Gp(t.targetPeerId),signal:AbortSignal.any([v,AbortSignal.timeout(8e3)])}),f=void 0,await I(O,v),{client:O,entry:A,path:"relay"}}catch(B){throw O?.close(),A&&A!==r&&A!==n&&A.close(),B}}});const y=Xp(t.targetPeerId);w.sort((S,v)=>+(v.key===y)-+(S.key===y));const k=await Yp(w,S=>{S.client.close(),S.entry&&S.entry!==n&&S.entry!==r&&S.entry.close()},!!f);if(d=k.value.client,u=k.value.entry,h=k.value.path,e.renewIfCurrent){if(Q!==e.renewIfCurrent||n!==e.renewIfCurrent||n.closed||!n.canSwitchTransport||se()?.targetPeerId!==t.targetPeerId){d.close();for(const S of g)S!==He&&S!==Q&&S.close();return Q??n}Q=d,hr=h,He=u,dc(t.targetPeerId,k.key),n.retire();for(const S of new Set([r,...g]))S&&S!==n&&S!==d&&S!==u&&S.close();return window.dispatchEvent(new Event(Qe)),d}if(dc(t.targetPeerId,k.key),Q!==n&&Q&&!Q.closed&&Q.targetPeerId===t.targetPeerId){d.close();for(const S of g)S!==He&&S.close();return Q}h==="direct"&&new URL(s).host===location.host&&Xm(t.targetPeerId);const N=(await We()).find(S=>S.targetPeerId===t.targetPeerId||!S.targetPeerId&&(S.serviceOrigin||S.url)===s),x=N?.label||t.serviceName||new URL(s).host,T={url:s,targetPeerId:t.targetPeerId,serviceName:x,serviceOrigin:s,routes:a.routes??c};if(await(e.rememberOnly?Zm:Nt)({id:N?.id||t.targetPeerId,...T,label:x}),Vn!=="unpaired"&&Vn!==t.targetPeerId&&mt()&&js({id:N?.id||t.targetPeerId,...T,label:x})){d.close();for(const S of g)S!==n&&S!==r&&S.close();return n||d}Ff(T),Q=d,hr=h,He=u;for(const S of new Set([n,r,...g]))S&&S!==d&&S!==u&&S.close();return Vn!==t.targetPeerId?(location.reload(),new Promise(()=>{})):(window.dispatchEvent(new Event(Qe)),d)}catch(w){d?.close();for(const I of g)I!==r&&I.close();throw w}}async function TE(){const t=Q,e=se();if(!(os||rs||qn||!t?.renewalDue||!t.canSwitchTransport||!e||performance.now()-bu<3e4)){bu=performance.now(),os=!0;try{await et(e,{renewIfCurrent:t})}catch(n){console.debug("[connection] renewal deferred",{reason:n instanceof Error?n.message:"unknown"})}finally{os=!1}}}async function PE(){const t=Q,e=se();if(Date.now()-yu<6e4||os||rs||hr!=="relay"||!t||t.closed||!t.canSwitchTransport||!e?.serviceOrigin)return;rs=!0,yu=Date.now();let n;try{for(const o of vr(e))try{n=await vn({url:Sn(o),targetPeerId:e.targetPeerId,identity:await nt(),signal:AbortSignal.timeout(3e3)}),await br(n);break}catch(s){if(n?.close(),n=void 0,s instanceof tt)throw s}if(!n||Q!==t||!t.canSwitchTransport)return;const r=He;Q=n,n=void 0,He=void 0,hr="direct",t.close(),r?.close(),window.dispatchEvent(new Event(Qe))}catch(r){r instanceof tt&&Q===t&&(tg(),window.dispatchEvent(new Event("auth:unauthorized")))}finally{n?.close(),rs=!1}}function NE(){return hr}async function LE(t){return t?(t.throwIfAborted(),new Promise((e,n)=>{const r=()=>n(t.reason);t.addEventListener("abort",r,{once:!0}),at().then(o=>{t.removeEventListener("abort",r),t.aborted?n(t.reason):e(o)},o=>{t.removeEventListener("abort",r),n(o)})})):at()}async function at(){if(Q&&!Q.closed){const e=Q;return TE(),e}if(Q=void 0,qn)return qn;const t=se();if(!t)throw new Error("DEVICE_PAIRING_REQUIRED");return qn=et(t,{rememberOnly:!0}).catch(e=>{if(Q&&!Q.closed&&Q.targetPeerId===t.targetPeerId)return Q;throw e}).finally(()=>{qn=void 0}),qn}function rg(t){const e=new URL(t,location.href);if(Q&&!Q.closed)return Q.openSocket(e.pathname+e.search);let n;const r=new Wp(t,o=>n?.send(o),()=>n?.close());return at().then(o=>{r.readyState!==3&&(n=o.openSocket(e.pathname+e.search),r.getConnectionDiagnostics=()=>{const s=n?.getConnectionDiagnostics?.();return s?{...s,socketOpenMs:r.openedAfterMs}:void 0},n.onopen=()=>r.accept({type:"ws-ready",id:""}),n.onmessage=s=>r.accept({type:"ws-data",id:"",data:s.data}),n.onclose=s=>r.accept({type:"ws-close",id:"",code:s.code,reason:s.reason}),n.onerror=()=>r.fail(new Error("Encrypted connection unavailable")))}).catch(o=>r.fail(o)),r}function BE(){fE(at),window.fetch=async(t,e)=>{const n=new URL(t instanceof Request?t.url:String(t),location.href);if(!n.pathname.startsWith("/api/"))return pr(t,e);if(n.origin!==location.origin)throw new Error("Remote business API requires a paired encrypted service");if(n.pathname==="/api/meta")return pr(t,e);if(n.pathname==="/api/auth/status"){if(!se()){const s=await ng();return Response.json({enabled:s.enabled,authenticated:!1})}try{const s=await br(await at());return Response.json({enabled:s.grants.length>0,authenticated:!0})}catch(s){if(s instanceof tt)return Response.json({enabled:!0,authenticated:!1});throw s}}if(n.pathname==="/api/auth/login"){const i=await new Request(t instanceof Request?t:n.href,e).json();return CE(typeof i.password=="string"?i.password:"")}if(n.pathname==="/api/csrf-token")return Response.json({csrfToken:"encrypted-device-channel"});if(n.pathname==="/api/auth/logout")return Q&&!Q.closed&&await Q.request({type:"logout"}),Q?.close(),He?.close(),Q=void 0,He=void 0,Vm(),location.reload(),Response.json({ok:!0});const r=e?.signal!==void 0?e.signal:t instanceof Request?t.signal:void 0,o=await LE(r);return t instanceof Request?o.fetch(t,e):o.fetch(n.pathname+n.search,e)}}async function _E(t){if(!t.targetPeerId)throw new Error("请先连接这台服务,再查看可中转的服务。");for(const e of vr({...t,targetPeerId:t.targetPeerId})){let n;const r={url:e,targetPeerId:t.targetPeerId};try{n=await tn(r)}catch{continue}try{const o=await n.request({type:"route-targets"},{timeoutMs:5e3});if(!Array.isArray(o.items))throw new Error("入口服务需要更新后才能查看中转列表。");return{route:r,canManage:o.canManage===!0,items:o.items}}catch(o){throw o instanceof Error&&/UNKNOWN|UNSUPPORTED/i.test(o.message)?new Error("入口服务需要更新后才能查看中转列表。"):o}finally{n.close()}}throw new Error("暂时连不上中转入口,请检查地址和网络后重试。")}async function OE(t,e){const n=await tn(t);try{const r=await n.request({type:"route-targets"},{timeoutMs:5e3}),o=(Array.isArray(r.items)?r.items:[]).find(c=>c.serviceId===e);if(!o)throw new Error("该服务已不可见,请刷新列表或请入口管理员授权。");if(!o.available)throw new Error("入口暂时无法中转到这台服务,请稍后重试。");const s=(await We()).find(c=>c.targetPeerId===o.serviceId),i=[t,...(s?.routes||[]).filter(c=>c.targetPeerId!==t.targetPeerId)];if(i.length>4)throw new Error("这台服务已保存 4 个备用连接,请先移除一个后重试。");if(!o.authorized){if(!r.canManage)throw new Error("请先让入口管理员授权此设备。");await n.request({type:"route-grant",serviceId:o.serviceId,subjectId:(await nt()).peerId})}const a=s?.serviceOrigin||s?.url||o.url||t.url;return{url:a,serviceOrigin:a,targetPeerId:o.serviceId,serviceName:s?.label||o.label||(o.url?new URL(o.url).host:`中转服务 ${o.serviceId.slice(0,8)}`),routes:i}}finally{n.close()}}async function DE(t,e){const n=await tn(t);try{const r=await n.request({type:"route-access"},{timeoutMs:5e3}),o=(await nt()).peerId;return{canManage:r.canManage===!0,grants:(Array.isArray(r.grants)?r.grants:[]).filter(s=>s.subjectId===o&&s.targetServiceId===e)}}finally{n.close()}}async function FE(t,e,n){if(n!==void 0&&(await Sl(Me(e.url),n)).targetPeerId!==e.targetPeerId)throw new Error("入口服务的身份已改变,请重新连接并确认。");const r=await tn(e);try{await r.request({type:"route-grant",serviceId:t.targetPeerId,subjectId:(await nt()).peerId,url:Me(t.serviceOrigin||t.url)})}finally{r.close()}}async function ME(t,e){const n=await tn(e);try{const r=await n.request({type:"route-access"},{timeoutMs:5e3}),o=(await nt()).peerId,s=(Array.isArray(r.grants)?r.grants:[]).filter(i=>i.subjectId===o&&i.targetServiceId===t&&i.active);for(const i of s)await n.request({type:"route-revoke",grantId:i.id})}finally{n.close()}}async function og(t,e){const n=await tn(e);try{const r=await n.request({type:"route-invite-create",serviceId:t.targetPeerId});if(typeof r.routeCode!="string"||typeof r.expiresAt!="number")throw new Error("暂时无法生成备用连接邀请。");return{routeCode:r.routeCode,expiresAt:r.expiresAt}}finally{n.close()}}async function ss(t,e){const n=(await We()).find(o=>o.id===t.id||t.targetPeerId&&o.targetPeerId===t.targetPeerId)||t;await Nt({...n,url:n.serviceOrigin||n.url,entryServiceId:void 0,routes:e});const r=se();r&&r.targetPeerId===t.targetPeerId&&Ff({...r,url:r.serviceOrigin||r.url,entryServiceId:void 0,routes:e})}async function jE(t,e){const n=t.targetPeerId;if(!n)throw new Error("请先连接这台服务,再添加备用地址。");let r;try{r=Me(e)}catch{throw new Error("请输入有效的 HTTPS 地址,例如 https://电脑地址:9834。")}const o=async()=>(await We()).find(a=>a.targetPeerId===n)||t,s=a=>{const c=a.routes??Qt({...a,targetPeerId:n});if(Me(a.serviceOrigin||a.url)===r||c.some(l=>Me(l.url)===r))throw new Error("这个地址已经在连接列表中。");if(c.length>=4)throw new Error("最多保存 4 个备用地址或入口,请先移除不再使用的连接。");return[...c,{url:r,targetPeerId:n}]};s(await o());let i;try{try{i=await vn({url:Sn(r),targetPeerId:n,identity:await nt(),signal:AbortSignal.timeout(5e3)}),await br(i)}catch(l){throw l instanceof tt?new Error("这台服务尚未授权当前设备,请先恢复设备授权。"):new Error("无法验证这个地址。请确认能访问该地址、HTTPS 证书受信任,且运行的是同一台 Termdock 服务。")}const a=await o(),c=s(a);if(await ss(a,c),se()?.targetPeerId===n&&Vn===n&&(!Q||Q.closed)){const l=Q,d=He;Q=i,i=void 0,He=void 0,hr="direct",l?.close(),d?.close(),window.dispatchEvent(new Event(Qe))}return c}finally{i?.close()}}async function Su(t,e){await hc(t,e),await et({...t,pairingCode:void 0,routeCode:void 0})}function HE(){let t=!1,e=!1,n=!1,r;const o=new Map,s=new Set,i=new Map,a=async(f,h,g)=>{const m=JSON.stringify(g);if(o.get(h.serviceId)===m)return;const b=AbortSignal.timeout(1e4),w=await f.fetch("/api/csrf-token",{signal:b});if(!w.ok)throw new Error("CONNECTION_AUTHORIZATION_REQUIRED");const I=await w.json();if(typeof I.csrfToken!="string")throw new Error("INVALID_CSRF_TOKEN");const y=await f.fetch("/api/terminal/operations/collaboration-connections",{method:"POST",signal:b,headers:{"Content-Type":"application/json","X-XSRF-TOKEN":I.csrfToken},body:JSON.stringify({origin:h.origin,nodes:g})});if(!y.ok){const k=await y.json().catch(()=>({}));throw new Error(k.error||`HTTP_${y.status}`)}o.set(h.serviceId,m)},c=async()=>{if(t){n=!0;return}const f=se(),h=Vt();if(!(e||!f||!h||h.closed)){t=!0,n=!1;try{let g;const m=await Promise.race([We(),new Promise((N,x)=>{g=setTimeout(()=>x(new Error("SERVICE_DIRECTORY_TIMEOUT")),8e3)})]).finally(()=>clearTimeout(g));m.some(N=>N.targetPeerId===f.targetPeerId)||m.push({...f,id:f.targetPeerId,label:f.serviceName||f.url});const b=[...new Map(m.filter(N=>!!N.targetPeerId).map(N=>[N.targetPeerId,N])).values()].slice(0,64);if(b.length<2)return;const w=[];for(const N of b)try{const x=`${N.targetPeerId}:${N.serviceOrigin||N.url}`;let T=i.get(x);if(!T){const S=N.targetPeerId===f.targetPeerId?(await h.request({type:"collaboration-descriptor"},{timeoutMs:5e3})).node:await IE({...N,targetPeerId:N.targetPeerId},AbortSignal.timeout(8e3));if(S?.serviceId!==N.targetPeerId)throw new Error("PEER_IDENTITY_MISMATCH");const v=S.origin||N.serviceOrigin||N.url,A=new URL(v);if(A.protocol!=="https:"||A.origin!==v)throw new Error("INVALID_SERVICE_ORIGIN");T={serviceId:S.serviceId,origin:v,...S.caFingerprint256?{caFingerprint256:S.caFingerprint256}:{}},i.set(x,T)}w.push({service:N,node:T})}catch{}if(e||Vt()!==h||se()?.targetPeerId!==f.targetPeerId)return;const I=w.find(N=>N.node.serviceId===f.targetPeerId);if(!I||w.length<2){l(3e4);return}const y=w.map(N=>N.node).sort((N,x)=>N.serviceId.localeCompare(x.serviceId));await a(h,I.node,y);let k=w.length<b.length;for(const N of w){if(N===I||o.get(N.node.serviceId)===JSON.stringify(y))continue;let x;try{x=await RE({...N.service,targetPeerId:N.node.serviceId},AbortSignal.timeout(8e3)),await a(x,N.node,y)}catch{let T=s.has(N.node.serviceId);if(!T&&x)try{(await x.request({type:"collaboration-scoped-peer",origin:N.node.origin,node:I.node},{timeoutMs:8e3})).type==="result"&&(s.add(N.node.serviceId),T=!0)}catch{}T||(k=!0)}finally{x?.close()}}window.dispatchEvent(new CustomEvent("termdock:collaboration-enrollment",{detail:{ok:!0}})),k&&l(3e4)}catch(g){window.dispatchEvent(new CustomEvent("termdock:collaboration-enrollment",{detail:{ok:!1,error:g instanceof Error?g.message:"CONNECTION_ENROLLMENT_FAILED"}})),l(3e4)}finally{t=!1,n&&l(100)}}};function l(f=100){e||(clearTimeout(r),r=setTimeout(()=>{c()},f))}const d=()=>{l()},u=Zs(d);window.addEventListener(Qe,d),window.addEventListener("termdock:collaboration-enroll",d),window.addEventListener("online",d),window.addEventListener("pageshow",d),window.addEventListener("pagehide",f=>{f.persisted||(e=!0,clearTimeout(r),u(),window.removeEventListener("termdock:collaboration-enroll",d),window.removeEventListener(Qe,d),window.removeEventListener("online",d),window.removeEventListener("pageshow",d))}),l()}var Wo={},xu;function UE(){if(xu)return Wo;xu=1;var t=jm();return Wo.createRoot=t.createRoot,Wo.hydrateRoot=t.hydrateRoot,Wo}var $E=UE();const qE=Df($E);function Ue({size:t=16,className:e="",...n}){const r=!!(n["aria-label"]||n["aria-labelledby"]);return p.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none","aria-hidden":r?void 0:!0,role:r?"img":void 0,focusable:"false",...n,className:`td-loading-spinner animate-spin ${e.replace(/\b(?:animate-spin|service-spinning)\b/g,"")}`,children:p.jsx("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"2.5",strokeDasharray:"18 44.8",strokeLinecap:"round"})})}function KE(){return p.jsx("span",{className:"td-loading-dots","aria-hidden":"true",children:[0,1,2].map(t=>p.jsx("span",{style:{animationDelay:`${(t-3)*400}ms`}},t))})}function LR({label:t,className:e="",dots:n=!1}){return p.jsxs("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:`flex items-center justify-center gap-2 text-sm text-muted-foreground ${e}`,children:[n?p.jsx(KE,{}):p.jsx(Ue,{size:18}),p.jsx("span",{children:t})]})}const sg=(...t)=>t.filter((e,n,r)=>!!e&&e.trim()!==""&&r.indexOf(e)===n).join(" ").trim();const zE=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const WE=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,n,r)=>r?r.toUpperCase():n.toLowerCase());const Eu=t=>{const e=WE(t);return e.charAt(0).toUpperCase()+e.slice(1)};var Xi={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const GE=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1},VE=_.createContext({}),XE=()=>_.useContext(VE),YE=_.forwardRef(({color:t,size:e,strokeWidth:n,absoluteStrokeWidth:r,className:o="",children:s,iconNode:i,...a},c)=>{const{size:l=24,strokeWidth:d=2,absoluteStrokeWidth:u=!1,color:f="currentColor",className:h=""}=XE()??{},g=r??u?Number(n??d)*24/Number(e??l):n??d;return _.createElement("svg",{ref:c,...Xi,width:e??l??Xi.width,height:e??l??Xi.height,stroke:t??f,strokeWidth:g,className:sg("lucide",h,o),...!s&&!GE(a)&&{"aria-hidden":"true"},...a},[...i.map(([m,b])=>_.createElement(m,b)),...Array.isArray(s)?s:[s]])});const Le=(t,e)=>{const n=_.forwardRef(({className:r,...o},s)=>_.createElement(YE,{ref:s,iconNode:e,className:sg(`lucide-${zE(Eu(t))}`,`lucide-${t}`,r),...o}));return n.displayName=Eu(t),n};const ZE=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],ig=Le("arrow-left",ZE);const JE=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],QE=Le("arrow-right",JE);const e1=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],t1=Le("arrow-up-right",e1);const n1=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M11.68 2.009A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673c-.824-.85-1.678-1.731-2.21-3.348",key:"xaq59h"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]],ag=Le("bell-dot",n1);const r1=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Hs=Le("check",r1);const o1=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],cg=Le("chevron-down",o1);const s1=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],xn=Le("chevron-right",s1);const i1=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],a1=Le("chevron-up",i1);const c1=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],lg=Le("copy",c1);const l1=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],dg=Le("ellipsis",l1);const d1=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],u1=Le("monitor",d1);const f1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],h1=Le("pencil",f1);const p1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],ug=Le("plus",p1);const g1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],fi=Le("server",g1);const m1=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],fg=Le("smartphone",m1);const w1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],y1=Le("terminal",w1);const b1=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],hg=Le("x",b1),v1={},Au=t=>{let e;const n=new Set,r=(d,u)=>{const f=typeof d=="function"?d(e):d;if(!Object.is(f,e)){const h=e;e=u??(typeof f!="object"||f===null)?f:Object.assign({},e,f),n.forEach(g=>g(e,h))}},o=()=>e,c={setState:r,getState:o,getInitialState:()=>l,subscribe:d=>(n.add(d),()=>n.delete(d)),destroy:()=>{(v1?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},l=e=t(r,o,c);return c},S1=t=>t?Au(t):Au;var Yi={exports:{}},Zi={},Ji={exports:{}},Qi={};var ku;function x1(){if(ku)return Qi;ku=1;var t=$c();function e(u,f){return u===f&&(u!==0||1/u===1/f)||u!==u&&f!==f}var n=typeof Object.is=="function"?Object.is:e,r=t.useState,o=t.useEffect,s=t.useLayoutEffect,i=t.useDebugValue;function a(u,f){var h=f(),g=r({inst:{value:h,getSnapshot:f}}),m=g[0].inst,b=g[1];return s(function(){m.value=h,m.getSnapshot=f,c(m)&&b({inst:m})},[u,h,f]),o(function(){return c(m)&&b({inst:m}),u(function(){c(m)&&b({inst:m})})},[u]),i(h),h}function c(u){var f=u.getSnapshot;u=u.value;try{var h=f();return!n(u,h)}catch{return!0}}function l(u,f){return f()}var d=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?l:a;return Qi.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:d,Qi}var Cu;function E1(){return Cu||(Cu=1,Ji.exports=x1()),Ji.exports}var Iu;function A1(){if(Iu)return Zi;Iu=1;var t=$c(),e=E1();function n(l,d){return l===d&&(l!==0||1/l===1/d)||l!==l&&d!==d}var r=typeof Object.is=="function"?Object.is:n,o=e.useSyncExternalStore,s=t.useRef,i=t.useEffect,a=t.useMemo,c=t.useDebugValue;return Zi.useSyncExternalStoreWithSelector=function(l,d,u,f,h){var g=s(null);if(g.current===null){var m={hasValue:!1,value:null};g.current=m}else m=g.current;g=a(function(){function w(x){if(!I){if(I=!0,y=x,x=f(x),h!==void 0&&m.hasValue){var T=m.value;if(h(T,x))return k=T}return k=x}if(T=k,r(y,x))return T;var S=f(x);return h!==void 0&&h(T,S)?(y=x,T):(y=x,k=S)}var I=!1,y,k,N=u===void 0?null:u;return[function(){return w(d())},N===null?void 0:function(){return w(N())}]},[d,u,f,h]);var b=o(l,g[0],g[1]);return i(function(){m.hasValue=!0,m.value=b},[b]),c(b),b},Zi}var Ru;function k1(){return Ru||(Ru=1,Yi.exports=A1()),Yi.exports}var C1=k1();const I1=Df(C1),pg={},{useDebugValue:R1}=Xe,{useSyncExternalStoreWithSelector:T1}=I1;let Tu=!1;const P1=t=>t;function N1(t,e=P1,n){(pg?"production":void 0)!=="production"&&n&&!Tu&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),Tu=!0);const r=T1(t.subscribe,t.getState,t.getServerState||t.getInitialState,e,n);return R1(r),r}const Pu=t=>{(pg?"production":void 0)!=="production"&&typeof t!="function"&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");const e=typeof t=="function"?S1(t):t,n=(r,o)=>N1(e,r,o);return Object.assign(n,e),n},hi=t=>t?Pu(t):Pu,El=t=>`@collaboration:${t}`,gg=hi(t=>({activePaneId:null,setActivePane:e=>t({activePaneId:e}),docks:{},hosts:{},setDock:(e,n)=>t(r=>{const o={...r.docks};return n?o[e]=n:delete o[e],{docks:o,...!n&&r.activePaneId===El(e)?{activePaneId:r.docks[e]?.sessionId??null}:{}}}),setHost:(e,n)=>t(r=>{const o={...r.hosts};return n?o[e]=n:delete o[e],{hosts:o}})})),dn=new Map;let no;function mg(){const t=gg.getState().activePaneId;for(const[n,r]of dn)if(r.requiresFocus&&t===El(n))return r.receive;const e=dn.get(no??"");return e&&!e.requiresFocus?e.receive:void 0}function BR(t){const e=dn.get(t);e&&(e.requiresFocus?gg.getState().setActivePane(El(t)):no=t)}function L1(t){const e=mg();return!e||!t?!1:(e(t),!0)}function _R(t,e="default",n=!1){dn.set(e,{receive:t,requiresFocus:n}),n||(no=e);const r=o=>{const{text:s,nonce:i}=o.detail??{};!s||mg()!==t||(t(s),o.stopImmediatePropagation(),i&&window.dispatchEvent(new CustomEvent("termdock-insert-reference-ack",{detail:{nonce:i,ok:!0}})))};return window.addEventListener("termdock-insert-reference",r,!0),()=>{dn.get(e)?.receive===t&&(dn.delete(e),no===e&&(no=[...dn.keys()].at(-1))),window.removeEventListener("termdock-insert-reference",r,!0)}}const B1=/^[A-Za-z0-9_@%+=:,./-]$/;function _1(t){return Array.from(t,e=>(e.codePointAt(0)??0)>127||B1.test(e)?e:`\\${e}`).join("")}function O1(t,e){if(!e)return!1;try{const n=new URL(e.serviceOrigin||e.url);return n.origin===t&&/^(localhost|\[::1\]|127(?:\.\d{1,3}){3})$/.test(n.hostname)&&!(e.routes??[]).some(r=>r.targetPeerId!==e.targetPeerId)}catch{return!1}}function D1(t){const e=s=>s.target instanceof Element?s.target.closest("[data-termdock-terminal-dropzone]"):null,n=()=>!O1(location.origin,ao()),r=s=>{const i=e(s);!i||!n()||!s.dataTransfer?.types.includes("Files")||(s.preventDefault(),s.stopImmediatePropagation(),s.dataTransfer.dropEffect="copy",i.dataset.nativeFileDrag="true",i.dataset.nativeFileDropState="remote")},o=s=>{const i=e(s),a=Array.from(s.dataTransfer?.files??[]);if(!i||!a.length||!n())return;s.preventDefault(),s.stopImmediatePropagation();const c=i.dataset.termdockTerminalDropzone??"";i.dataset.nativeFileDrag="true",i.dataset.nativeFileDropState="uploading",en(async()=>{const{uploadFiles:l}=await Promise.resolve().then(()=>tI);return{uploadFiles:l}},void 0).then(({uploadFiles:l})=>l("/tmp",a)).then(l=>{if(l.files.length!==a.length||l.files.some(d=>!d.path))throw new Error("Upload did not return every file path");delete i.dataset.nativeFileDrag,delete i.dataset.nativeFileDropState,t({sessionKey:c,paths:l.files.map(d=>d.path)})}).catch(l=>{i.dataset.nativeFileDropState="error",i.dispatchEvent(new CustomEvent("termdock:file-drop-error",{bubbles:!0,detail:l instanceof Error?l.message:"File upload failed"})),window.setTimeout(()=>{i.dataset.nativeFileDropState==="error"&&(delete i.dataset.nativeFileDrag,delete i.dataset.nativeFileDropState)},3e3)})};return window.addEventListener("dragover",r,!0),window.addEventListener("drop",o,!0),()=>{window.removeEventListener("dragover",r,!0),window.removeEventListener("drop",o,!0)}}function rt(){return typeof window>"u"?null:window.termdockDesktop??null}const ea=new Set;let Nu=!1;function OR(t){const e=rt();if(!e)return()=>{};if(ea.add(t),!Nu){const n=r=>{if(!L1(r.paths.map(_1).join(" ")+" "))for(const o of ea)o(r)};D1(n),e.onNativeFileDrop(n),Nu=!0}return()=>{ea.delete(t)}}function wg(t=navigator.userAgent,e=navigator.maxTouchPoints){const n=/iPad/.test(t)||/Macintosh/.test(t)&&e>1?"iPad":/iPhone/.test(t)?"iPhone":/Android/.test(t)?"Android":/Windows/.test(t)?"Windows":/Macintosh|Mac OS X/.test(t)?"Mac":/Linux/.test(t)?"Linux":"设备",r=/Electron/.test(t)?"Termdock":/Edg\//.test(t)?"Edge":/Firefox|FxiOS/.test(t)?"Firefox":/Chrome|CriOS/.test(t)?"Chrome":/Safari/.test(t)?"Safari":"浏览器";return`${n} · ${r}`}let F1;function M1(){return F1??=(async()=>{const t=navigator.userAgent,[e,n]=wg().split(" · "),r=/(?:Edg|Firefox|FxiOS|Chrome|CriOS|Version)\/([\d.]+)/g,o=[...t.matchAll(r)],s=/(?:CPU (?:iPhone )?OS |Mac OS X |Android )([\d._]+)/.exec(t)?.[1]?.replaceAll("_","."),i={system:`${e}${s?` ${s}`:""}`,client:`${n}${o.length?` ${o.at(-1)[1]}`:""}`,mode:matchMedia("(display-mode: standalone)").matches||navigator.standalone?"已安装的网页应用":"网页"},a=rt();if(a){i.mode="桌面客户端";const l=/Electron\/([\d.]+)/.exec(t)?.[1];i.client=l?`Termdock(Electron ${l})`:"Termdock";try{Object.assign(i,await a.deviceInfo?.())}catch{}return i}const c=navigator.userAgentData;try{const l=await c?.getHighEntropyValues(["model","architecture","bitness","platformVersion"]);typeof l?.model=="string"&&l.model&&(i.model=l.model),typeof l?.architecture=="string"&&l.architecture&&(i.arch=`${l.architecture}${l.bitness?` ${l.bitness} 位`:""}`)}catch{}return i})()}function j1({service:t,onBusyChange:e,onConnect:n,onConnectWithPassword:r}){const[o,s]=_.useState(),[i,a]=_.useState(!0),[c,l]=_.useState(!1),[d,u]=_.useState(""),[f,h]=_.useState(0),[g,m]=_.useState(),[b,w]=_.useState("");_.useEffect(()=>{let k=!1,N=!1,x;a(!0),u(""),s(void 0);const T=async S=>{try{const v=await _E(t);if(k)return;N=!0,s(v),u("")}catch(v){!k&&(!N||S)&&u(v instanceof Error?v.message:"暂时无法读取中转列表,请重试。")}finally{k||(a(!1),x=setTimeout(()=>{T(!1)},2e3))}};return T(!0),()=>{k=!0,clearTimeout(x)}},[t.id,t.url,f]);const I=async k=>{if(!c){l(!0),e(!0),u("");try{await k()}catch(N){u(N instanceof Error?N.message:"暂时无法连接,请重试。")}finally{l(!1),e(!1)}}},y=async k=>{const N=await OE(o.route,k.serviceId);try{await n(N)}catch(x){if(!(x instanceof tt))throw x;m(N)}};return p.jsxs("div",{className:"service-form",children:[g?p.jsxs("form",{className:"service-form",onSubmit:k=>{k.preventDefault(),I(async()=>{try{await r?.(g,b)}finally{w("")}})},children:[p.jsxs("p",{className:"service-help",children:["已通过“",t.label,"”连接到“",g.serviceName,"”。请登录目标服务,完成此设备的访问授权。"]}),r?p.jsxs(p.Fragment,{children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"目标服务密码"}),p.jsx("input",{type:"password",autoFocus:!0,required:!0,autoComplete:"current-password",value:b,disabled:c,onChange:k=>w(k.target.value)})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:c||!b,children:c?"正在登录…":"登录并连接"})]}):p.jsx("p",{className:"service-help",children:"请让目标服务管理员邀请此设备后再连接。"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:c,onClick:()=>{m(void 0),w(""),u(""),h(k=>k+1)},children:"返回中转列表"})]}):p.jsxs(p.Fragment,{children:[p.jsxs("p",{className:"service-help",children:["通过“",t.label,"”连接下方服务。",o?.canManage?"选择未授权的服务会授权此设备使用该中转。":"这里只显示已授权给此设备的中转。","目标服务会单独验证访问权限。"]}),i?p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(Ue,{size:16,className:"service-spinning"}),"正在读取可中转的服务…"]}):o&&p.jsxs("div",{className:"service-list",children:[o.items.map(k=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:c||!k.available,onClick:()=>{I(()=>y(k))},children:[p.jsx("span",{className:"service-icon",children:p.jsx(fi,{size:19})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:k.label||(k.url?new URL(k.url).host:`中转服务 ${k.serviceId.slice(0,8)}`)}),p.jsx("span",{className:"service-description",children:k.available?k.authorized?"已获中转授权 · 连接":"授权此设备并连接":"中转暂不可用"})]}),p.jsx(xn,{size:16})]},k.serviceId)),o.items.length===0&&p.jsx("p",{className:"service-empty",children:o.canManage?"暂无可中转的服务。可在本机 Mac 客户端连接目标服务,或在目标服务的“备用连接”中启用本入口。":"暂无已授权的中转服务,请让入口管理员分享备用连接邀请。"})]}),c&&p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(Ue,{size:16,className:"service-spinning"}),"正在授权并连接目标服务…"]}),!i&&p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:c,onClick:()=>h(k=>k+1),children:"刷新列表"})]}),d&&p.jsx("p",{className:"service-error",role:"alert",children:d})]})}const pc="#termdock-invite=";function yg(t){const e=new URL(t.entryUrl);e.hash="",e.search="",e.pathname="/";const n=new TextEncoder().encode(JSON.stringify(t));return e.hash=pc.slice(1)+btoa(String.fromCharCode(...n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),e.href}function Us(t){const e=new URL(t);if(!["https:","http:"].includes(e.protocol)||!e.hash.startsWith(pc))throw new Error("这不是有效的 Termdock 邀请链接");const n=e.hash.slice(pc.length);if(n.length>8192)throw new Error("邀请链接过长");let r;try{const i=n.replace(/-/g,"+").replace(/_/g,"/");r=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(Uint8Array.from(atob(i),a=>a.charCodeAt(0))))}catch{throw new Error("邀请链接不完整,请重新复制")}if(r.v!==1||typeof r.serviceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(r.serviceId)||r.routeOnly!==!0&&(typeof r.code!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(r.code)))throw new Error("邀请信息无效或版本不兼容");const o=new URL(r.entryUrl);if(o.origin!==e.origin||o.username||o.password||!["https:","http:"].includes(o.protocol))throw new Error("邀请地址与服务不一致");if(o.protocol==="http:"&&!["localhost","127.0.0.1","[::1]"].includes(o.hostname))throw new Error("远程邀请需要 HTTPS");if(r.entryServiceId!==void 0&&(typeof r.entryServiceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(r.entryServiceId)))throw new Error("邀请入口身份无效");if(r.routeCode!==void 0&&(typeof r.routeCode!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(r.routeCode)||!r.entryServiceId))throw new Error("邀请入口权限无效");if(r.routeOnly===!0&&(!r.entryServiceId||!r.routeCode||r.code!==void 0))throw new Error("备用连接邀请不完整");let s=o.origin;if(r.serviceUrl!==void 0){const i=new URL(r.serviceUrl);if(!["https:","http:"].includes(i.protocol)||i.username||i.password)throw new Error("目标服务地址无效");s=r.entryServiceId&&r.entryServiceId!==r.serviceId?i.origin:o.origin}return{url:o.origin,targetPeerId:r.serviceId,pairingCode:r.code,...r.routeOnly===!0?{routeOnly:!0}:{},serviceOrigin:s,serviceName:typeof r.name=="string"?r.name.slice(0,120):void 0,entryServiceId:r.entryServiceId,routeCode:r.routeCode}}function H1({service:t,onBusyChange:e}){const n={...t,targetPeerId:t.targetPeerId,serviceName:t.label},[r,o]=_.useState(()=>t.routes??Qt(n)),[s,i]=_.useState([]),[a,c]=_.useState(!0),[l,d]=_.useState(!1),[u,f]=_.useState(""),h=L=>{d(L),e(L)},[g,m]=_.useState(),[b,w]=_.useState(""),[I,y]=_.useState(""),[k,N]=_.useState(""),[x,T]=_.useState(!1),[S,v]=_.useState(),[A,O]=_.useState(),[B,C]=_.useState(!1);_.useEffect(()=>{let L=!1;return We().then(H=>{L||i(H.filter($=>$.targetPeerId&&$.targetPeerId!==t.targetPeerId))}).catch(()=>{L||f("暂时无法读取可用服务。")}).finally(()=>{L||c(!1)}),()=>{L=!0}},[t.targetPeerId]);const E=L=>s.find(H=>H.targetPeerId===L.targetPeerId)?.label||new URL(L.url).host,P=async L=>{h(!0),f(""),N("");try{await L()}catch(H){const $=H instanceof Error?H.message:"";f(/AUTHORIZATION|DENIED/.test($)?"当前设备没有入口管理权限。请让管理员分享备用连接邀请,或使用入口密码授权。":"暂时无法完成。请确认入口能连接目标服务,且目标地址、证书和授权有效。")}finally{h(!1)}},R=async(L,H)=>{const $={url:L.serviceOrigin||L.url,targetPeerId:L.targetPeerId};await P(async()=>{const X=await DE($,n.targetPeerId);if(!X.grants.some(U=>U.active)){if(!X.canManage&&H===void 0){m(L);return}await FE(n,$,H)}const Y=[...r.filter(U=>U.targetPeerId!==$.targetPeerId),$];await ss(t,Y),o(Y),m(void 0),w("")})};if(A)return p.jsxs("div",{className:"service-form",children:[p.jsxs("p",{className:"service-help",children:["把链接发给需要使用此备用连接的人。它只允许通过入口连接“",t.label,"”,对方仍需获得目标服务的访问权限。"]}),p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"备用连接邀请"}),p.jsx("input",{readOnly:!0,value:A,onFocus:L=>L.target.select()})]}),p.jsxs("button",{type:"button",className:"service-button service-primary",onClick:()=>{navigator.clipboard.writeText(A).then(()=>C(!0)).catch(()=>f("无法自动复制,请长按链接复制。"))},children:[p.jsx(lg,{size:16}),B?"已复制":"复制邀请链接"]}),p.jsx("button",{type:"button",className:"service-button service-secondary",onClick:()=>{O(void 0),C(!1)},children:"返回备用连接"}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u})]});if(g)return p.jsxs("form",{className:"service-form",onSubmit:L=>{L.preventDefault(),R(g,b).finally(()=>w(""))},children:[p.jsxs("p",{className:"service-help",children:["需要“",g.label,"”的管理员授权。若这是你的服务,可以使用它的密码;否则请管理员分享备用连接邀请。"]}),p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"入口服务密码"}),p.jsx("input",{type:"password",required:!0,value:b,onChange:L=>w(L.target.value),autoComplete:"current-password",disabled:l,autoFocus:!0})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:l||!b,children:l?"正在授权…":"授权并启用"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>{m(void 0),w("")},children:"取消"}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u})]});const D=r.filter(L=>L.targetPeerId===n.targetPeerId),M=r.filter(L=>L.targetPeerId!==n.targetPeerId),F=async()=>{if(!l){h(!0),T(!0),f(""),N("");try{o(await jE({...t,routes:r},I)),y(""),N("备用地址已验证并保存。")}catch(L){f(L instanceof Error?L.message:"暂时无法添加地址,请重试。")}finally{h(!1),T(!1)}}};return p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"电脑换了网络?添加它在新网络下的地址,原地址连不上时会自动尝试。只接受同一台服务。"}),p.jsxs("form",{className:"service-form",onSubmit:L=>{L.preventDefault(),F()},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"备用地址"}),p.jsx("input",{value:I,onChange:L=>{y(L.target.value),f(""),N("")},required:!0,disabled:l||r.length>=4,inputMode:"url",autoComplete:"off",autoCapitalize:"none",spellCheck:!1,placeholder:"例如:192.168.10.20:9834"})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:l||r.length>=4||!I.trim(),children:x?p.jsxs(p.Fragment,{children:[p.jsx(Ue,{size:16,className:"service-spinning"}),"正在验证…"]}):"验证并添加"})]}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u}),k&&p.jsx("p",{role:"status",className:"service-help",children:k}),r.length>=4&&p.jsx("p",{className:"service-help",children:"已保存 4 个备用连接。移除不再使用的地址或入口后,可以继续添加。"}),p.jsxs("div",{children:[p.jsx("p",{className:"service-help",children:"首选地址"}),p.jsx("p",{className:"service-address",children:t.serviceOrigin||t.url})]}),D.length>0&&p.jsx("div",{className:"service-list",children:D.map(L=>p.jsxs("div",{className:"service-route-item",children:[p.jsxs("div",{className:"service-route-line",children:[p.jsx("span",{className:"service-address service-route-address",children:L.url}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`移除地址 ${L.url}`,disabled:l,onClick:()=>v(L),children:"移除"})]}),S?.targetPeerId===L.targetPeerId&&S.url===L.url&&p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"从备用连接中移除此地址?不会停止正在运行的终端。"}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>v(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{P(async()=>{const H=r.filter($=>$.targetPeerId!==L.targetPeerId||$.url!==L.url);await ss(t,H),o(H),v(void 0)})},children:"确认移除"})]})]})]},L.url))}),p.jsxs("details",{className:"service-relay-options",children:[p.jsxs("summary",{children:["通过其他服务中转",M.length?`(${M.length})`:""]}),p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"所有直连地址都不可用时,尝试下方已授权入口;直连恢复后自动切回。"}),M.length>0&&p.jsx("div",{className:"service-list",children:M.map(L=>p.jsxs("div",{className:"service-route-item",children:[p.jsxs("div",{className:"service-route-line",children:[p.jsx("span",{className:"service-icon",children:p.jsx(fi,{size:18})}),p.jsx("span",{className:"service-name",children:E(L)}),p.jsx(Hs,{size:16,className:"service-selected"})]}),S?.targetPeerId===L.targetPeerId?p.jsxs("div",{className:"service-form",children:[p.jsxs("p",{className:"service-help",children:["撤销此设备经“",E(L),"”连接目标的权限?如当前无法直连,目标服务将断开。"]}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>v(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{P(async()=>{await ME(n.targetPeerId,L);const H=r.filter($=>$.targetPeerId!==L.targetPeerId);await ss(t,H),o(H),v(void 0)})},children:"确认撤销"})]})]}):p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>{P(async()=>{const H=await og(n,L);O(yg({v:1,routeOnly:!0,serviceId:n.targetPeerId,name:t.label,serviceUrl:t.serviceOrigin||t.url,entryUrl:L.url,entryServiceId:L.targetPeerId,routeCode:H.routeCode}))})},children:"分享备用连接"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>v(L),children:"撤销授权"})]})]},L.targetPeerId))}),a?p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx(Ue,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{children:[p.jsx("p",{className:"service-help",children:"添加中转入口"}),s.filter(L=>!r.some(H=>H.targetPeerId===L.targetPeerId)).map(L=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:l||r.length>=4,onClick:()=>{R(L)},children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:L.label}),p.jsx("span",{className:"service-description",children:"验证并授权后启用"})]}),p.jsx(xn,{size:16})]},L.id)),s.length===0&&p.jsx("p",{className:"service-empty",children:"添加并登录另一台服务后,可以将它设为中转入口。"})]})]})]}),l&&!x&&p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx(Ue,{size:16,className:"service-spinning"}),"正在验证连接与授权…"]})]})}function U1({current:t,renderRoutes:e,renderRelayServices:n,onOpen:r,onAdd:o,onInvite:s,hideHeader:i,onNavigation:a,onBusyChange:c,initiallyAdding:l=!1}){const[d,u]=_.useState([]),[f,h]=_.useState(!0),[g,m]=_.useState(l?{kind:"add"}:{kind:"list"}),[b,w]=_.useState(!1),I=_.useCallback(C=>{w(C),c?.(C)},[c]),[y,k]=_.useState(""),N=_.useCallback(()=>{m(C=>C.kind==="routes"||C.kind==="relay-services"?{kind:"edit",service:C.service}:{kind:"list"}),k("")},[]),x=g.kind==="add"?"添加服务":g.kind==="edit"?"服务设置":g.kind==="routes"?"备用连接":g.kind==="relay-services"?"可中转的服务":void 0;_.useEffect(()=>{a?.({title:x,...x?{back:N}:{}})},[x,N,a]),_.useEffect(()=>{let C=!1,E=0;const P=async()=>{const D=++E;try{const M=await We();!C&&E===D&&(u(M),k(""))}catch{!C&&E===D&&k("暂时无法读取服务列表,请重试。")}finally{!C&&E===D&&h(!1)}};P();const R=Zs(()=>{P()});return()=>{C=!0,R()}},[]);const T=async C=>{if(!b){I(!0),k("");try{await C()}catch(E){k(E instanceof Error?E.message:"暂时无法完成,请重试。")}finally{I(!1)}}},S=g.kind==="edit"||g.kind==="routes"||g.kind==="relay-services"?d.find(C=>kt(C,g.service))||g.service:void 0,v=t?d.find(C=>kt(C,t))||t:void 0,A=d.filter(C=>!t||!kt(C,t)),O=v?[v,...A]:A,B=p.jsxs(p.Fragment,{children:[f?p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(Ue,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{className:"service-list",children:[O.map(C=>{const E=!!t&&kt(C,t);return p.jsxs("div",{className:"service-row",children:[p.jsxs("button",{type:"button",className:"service-row-open",disabled:b||E,onClick:()=>{T(async()=>{(await r(C))?.passwordRequired&&m({kind:"add",input:C.serviceOrigin||C.url,passwordRequired:!0})})},"aria-label":E?`当前服务 ${C.label}`:`打开 ${C.label}`,children:[p.jsx("span",{className:"service-icon",children:p.jsx(fi,{size:20})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:C.label}),p.jsx("span",{className:"service-description",children:E?"当前服务":new URL(C.serviceOrigin||C.url).host})]}),E?p.jsx(Hs,{size:17,className:"service-selected"}):p.jsx(xn,{size:16,className:"service-muted"})]}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`管理 ${C.label}`,disabled:b,onClick:()=>{m({kind:"edit",service:C}),k("")},children:p.jsx(dg,{size:19})})]},C.id)}),O.length===0&&p.jsx("p",{className:"service-empty",children:"还没有添加服务。连接你的电脑,或粘贴收到的邀请链接。"})]}),p.jsxs("div",{className:`service-actions${s?" service-actions-pair":""}`,children:[p.jsxs("button",{type:"button",className:"service-button service-secondary",disabled:b,onClick:()=>{m({kind:"add"}),k("")},children:[p.jsx(ug,{size:16}),"添加服务"]}),s&&p.jsxs("button",{type:"button",className:"service-button service-secondary",disabled:b,onClick:s,children:[p.jsx(fg,{size:16}),"邀请设备"]})]})]});return p.jsxs("div",{className:"service-manager",children:[!i&&p.jsxs("div",{className:"service-heading",children:[x&&p.jsx("button",{type:"button",className:"service-icon-button","aria-label":"返回服务",disabled:b,onClick:N,children:p.jsx(ig,{size:20})}),p.jsx("h2",{children:x||"服务"})]}),g.kind==="relay-services"?n?.(S,I):g.kind==="routes"?e?.(S,I):g.kind==="list"?B:g.kind==="add"?p.jsx($1,{onSave:C=>T(async()=>{const E=Me(C);u(await Nt({id:E,url:E,label:new URL(E).host})),N()}),initialInput:g.input,passwordRequired:g.passwordRequired,busy:b,onSubmit:async(C,E)=>{let P;return await T(async()=>{P=await o(C,E),P?.passwordRequired||N()}),P}}):p.jsx(q1,{onRelayServices:n&&g.service.targetPeerId?()=>m({kind:"relay-services",service:g.service}):void 0,onRoutes:e&&g.service.targetPeerId?()=>m({kind:"routes",service:g.service}):void 0,service:S,busy:b,canRemove:!t||!kt(g.service,t),onSave:C=>{T(async()=>{u(await Nt({...S,label:C})),N()})},onRemove:()=>{T(async()=>{u(await Jm(g.service.id)),N()})}}),y&&p.jsx("p",{className:"service-error",role:"alert",children:y})]})}function $1({busy:t,onSubmit:e,onSave:n,initialInput:r="",passwordRequired:o=!1}){const[s,i]=_.useState(r),[a,c]=_.useState(""),[l,d]=_.useState(o);return p.jsxs("form",{className:"service-form",onSubmit:async u=>{u.preventDefault(),(await e(s.trim(),l?a:void 0))?.passwordRequired&&d(!0),c("")},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务地址或邀请链接"}),p.jsx("input",{value:s,onChange:u=>{i(u.target.value),d(!1),c("")},disabled:t,required:!0,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,placeholder:"例如:电脑地址:9834 或 https://…"})]}),l?p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务密码"}),p.jsx("input",{type:"password",value:a,onChange:u=>c(u.target.value),disabled:t,required:!0,autoFocus:!0,autoComplete:"current-password",placeholder:"输入这台服务的密码"})]}):p.jsx("p",{className:"service-help",children:"连接自己的服务,输入地址即可;收到邀请时,粘贴完整链接。"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:t||!s.trim()||s.includes("#termdock-invite="),onClick:()=>{n(s.trim())},children:"仅保存,不连接"}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:t||!s.trim()||l&&!a,children:t?p.jsxs(p.Fragment,{children:[p.jsx(Ue,{size:16,className:"service-spinning"}),"正在连接…"]}):l?"登录并连接":"继续"})]})}function q1({service:t,busy:e,canRemove:n,onSave:r,onRemove:o,onRoutes:s,onRelayServices:i}){const[a,c]=_.useState(t.label),[l,d]=_.useState(!1);return p.jsxs("form",{className:"service-form",onSubmit:u=>{u.preventDefault(),r(a.trim())},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务名称"}),p.jsx("input",{value:a,onChange:u=>c(u.target.value),disabled:e,required:!0,maxLength:120,placeholder:"例如:办公室电脑"})]}),p.jsx("p",{className:"service-address",children:t.serviceOrigin||t.url}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:e||!a.trim(),children:"保存名称"}),i&&p.jsxs("button",{type:"button",className:"service-row-open",disabled:e,onClick:i,children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:"可中转的服务"}),p.jsx("span",{className:"service-description",children:"通过这台服务连接其他电脑"})]}),p.jsx(xn,{size:16})]}),s&&p.jsxs("button",{type:"button",className:"service-row-open",disabled:e,onClick:s,children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:"备用连接"}),p.jsx("span",{className:"service-description",children:"添加其他网络地址或授权入口"})]}),p.jsx(xn,{size:16})]}),n&&p.jsx("div",{className:"service-remove",children:l?p.jsxs(p.Fragment,{children:[p.jsxs("p",{className:"service-help",children:["从列表移除“",t.label,"”?不会停止服务或删除终端。"]}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:e,onClick:()=>d(!1),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:e,onClick:o,children:"确认移除"})]})]}):p.jsx("button",{type:"button",className:"service-button service-danger",disabled:e,onClick:()=>d(!0),children:"移除服务"})})]})}var Fn={},ta,Lu;function K1(){return Lu||(Lu=1,ta=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),ta}var na={},qt={},Bu;function Cn(){if(Bu)return qt;Bu=1;let t;const e=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return qt.getSymbolSize=function(r){if(!r)throw new Error('"version" cannot be null or undefined');if(r<1||r>40)throw new Error('"version" should be in range from 1 to 40');return r*4+17},qt.getSymbolTotalCodewords=function(r){return e[r]},qt.getBCHDigit=function(n){let r=0;for(;n!==0;)r++,n>>>=1;return r},qt.setToSJISFunction=function(r){if(typeof r!="function")throw new Error('"toSJISFunc" is not a valid function.');t=r},qt.isKanjiModeEnabled=function(){return typeof t<"u"},qt.toSJIS=function(r){return t(r)},qt}var ra={},_u;function Al(){return _u||(_u=1,(function(t){t.L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2};function e(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw new Error("Unknown EC Level: "+n)}}t.isValid=function(r){return r&&typeof r.bit<"u"&&r.bit>=0&&r.bit<4},t.from=function(r,o){if(t.isValid(r))return r;try{return e(r)}catch{return o}}})(ra)),ra}var oa,Ou;function z1(){if(Ou)return oa;Ou=1;function t(){this.buffer=[],this.length=0}return t.prototype={get:function(e){const n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)===1},put:function(e,n){for(let r=0;r<n;r++)this.putBit((e>>>n-r-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}},oa=t,oa}var sa,Du;function W1(){if(Du)return sa;Du=1;function t(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}return t.prototype.set=function(e,n,r,o){const s=e*this.size+n;this.data[s]=r,o&&(this.reservedBit[s]=!0)},t.prototype.get=function(e,n){return this.data[e*this.size+n]},t.prototype.xor=function(e,n,r){this.data[e*this.size+n]^=r},t.prototype.isReserved=function(e,n){return this.reservedBit[e*this.size+n]},sa=t,sa}var ia={},Fu;function G1(){return Fu||(Fu=1,(function(t){const e=Cn().getSymbolSize;t.getRowColCoords=function(r){if(r===1)return[];const o=Math.floor(r/7)+2,s=e(r),i=s===145?26:Math.ceil((s-13)/(2*o-2))*2,a=[s-7];for(let c=1;c<o-1;c++)a[c]=a[c-1]-i;return a.push(6),a.reverse()},t.getPositions=function(r){const o=[],s=t.getRowColCoords(r),i=s.length;for(let a=0;a<i;a++)for(let c=0;c<i;c++)a===0&&c===0||a===0&&c===i-1||a===i-1&&c===0||o.push([s[a],s[c]]);return o}})(ia)),ia}var aa={},Mu;function V1(){if(Mu)return aa;Mu=1;const t=Cn().getSymbolSize,e=7;return aa.getPositions=function(r){const o=t(r);return[[0,0],[o-e,0],[0,o-e]]},aa}var ca={},ju;function X1(){return ju||(ju=1,(function(t){t.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const e={N1:3,N2:3,N3:40,N4:10};t.isValid=function(o){return o!=null&&o!==""&&!isNaN(o)&&o>=0&&o<=7},t.from=function(o){return t.isValid(o)?parseInt(o,10):void 0},t.getPenaltyN1=function(o){const s=o.size;let i=0,a=0,c=0,l=null,d=null;for(let u=0;u<s;u++){a=c=0,l=d=null;for(let f=0;f<s;f++){let h=o.get(u,f);h===l?a++:(a>=5&&(i+=e.N1+(a-5)),l=h,a=1),h=o.get(f,u),h===d?c++:(c>=5&&(i+=e.N1+(c-5)),d=h,c=1)}a>=5&&(i+=e.N1+(a-5)),c>=5&&(i+=e.N1+(c-5))}return i},t.getPenaltyN2=function(o){const s=o.size;let i=0;for(let a=0;a<s-1;a++)for(let c=0;c<s-1;c++){const l=o.get(a,c)+o.get(a,c+1)+o.get(a+1,c)+o.get(a+1,c+1);(l===4||l===0)&&i++}return i*e.N2},t.getPenaltyN3=function(o){const s=o.size;let i=0,a=0,c=0;for(let l=0;l<s;l++){a=c=0;for(let d=0;d<s;d++)a=a<<1&2047|o.get(l,d),d>=10&&(a===1488||a===93)&&i++,c=c<<1&2047|o.get(d,l),d>=10&&(c===1488||c===93)&&i++}return i*e.N3},t.getPenaltyN4=function(o){let s=0;const i=o.data.length;for(let c=0;c<i;c++)s+=o.data[c];return Math.abs(Math.ceil(s*100/i/5)-10)*e.N4};function n(r,o,s){switch(r){case t.Patterns.PATTERN000:return(o+s)%2===0;case t.Patterns.PATTERN001:return o%2===0;case t.Patterns.PATTERN010:return s%3===0;case t.Patterns.PATTERN011:return(o+s)%3===0;case t.Patterns.PATTERN100:return(Math.floor(o/2)+Math.floor(s/3))%2===0;case t.Patterns.PATTERN101:return o*s%2+o*s%3===0;case t.Patterns.PATTERN110:return(o*s%2+o*s%3)%2===0;case t.Patterns.PATTERN111:return(o*s%3+(o+s)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}t.applyMask=function(o,s){const i=s.size;for(let a=0;a<i;a++)for(let c=0;c<i;c++)s.isReserved(c,a)||s.xor(c,a,n(o,c,a))},t.getBestMask=function(o,s){const i=Object.keys(t.Patterns).length;let a=0,c=1/0;for(let l=0;l<i;l++){s(l),t.applyMask(l,o);const d=t.getPenaltyN1(o)+t.getPenaltyN2(o)+t.getPenaltyN3(o)+t.getPenaltyN4(o);t.applyMask(l,o),d<c&&(c=d,a=l)}return a}})(ca)),ca}var Go={},Hu;function bg(){if(Hu)return Go;Hu=1;const t=Al(),e=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],n=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return Go.getBlocksCount=function(o,s){switch(s){case t.L:return e[(o-1)*4+0];case t.M:return e[(o-1)*4+1];case t.Q:return e[(o-1)*4+2];case t.H:return e[(o-1)*4+3];default:return}},Go.getTotalCodewordsCount=function(o,s){switch(s){case t.L:return n[(o-1)*4+0];case t.M:return n[(o-1)*4+1];case t.Q:return n[(o-1)*4+2];case t.H:return n[(o-1)*4+3];default:return}},Go}var la={},Or={},Uu;function Y1(){if(Uu)return Or;Uu=1;const t=new Uint8Array(512),e=new Uint8Array(256);return(function(){let r=1;for(let o=0;o<255;o++)t[o]=r,e[r]=o,r<<=1,r&256&&(r^=285);for(let o=255;o<512;o++)t[o]=t[o-255]})(),Or.log=function(r){if(r<1)throw new Error("log("+r+")");return e[r]},Or.exp=function(r){return t[r]},Or.mul=function(r,o){return r===0||o===0?0:t[e[r]+e[o]]},Or}var $u;function Z1(){return $u||($u=1,(function(t){const e=Y1();t.mul=function(r,o){const s=new Uint8Array(r.length+o.length-1);for(let i=0;i<r.length;i++)for(let a=0;a<o.length;a++)s[i+a]^=e.mul(r[i],o[a]);return s},t.mod=function(r,o){let s=new Uint8Array(r);for(;s.length-o.length>=0;){const i=s[0];for(let c=0;c<o.length;c++)s[c]^=e.mul(o[c],i);let a=0;for(;a<s.length&&s[a]===0;)a++;s=s.slice(a)}return s},t.generateECPolynomial=function(r){let o=new Uint8Array([1]);for(let s=0;s<r;s++)o=t.mul(o,new Uint8Array([1,e.exp(s)]));return o}})(la)),la}var da,qu;function J1(){if(qu)return da;qu=1;const t=Z1();function e(n){this.genPoly=void 0,this.degree=n,this.degree&&this.initialize(this.degree)}return e.prototype.initialize=function(r){this.degree=r,this.genPoly=t.generateECPolynomial(this.degree)},e.prototype.encode=function(r){if(!this.genPoly)throw new Error("Encoder not initialized");const o=new Uint8Array(r.length+this.degree);o.set(r);const s=t.mod(o,this.genPoly),i=this.degree-s.length;if(i>0){const a=new Uint8Array(this.degree);return a.set(s,i),a}return s},da=e,da}var ua={},fa={},ha={},Ku;function vg(){return Ku||(Ku=1,ha.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}),ha}var pt={},zu;function Sg(){if(zu)return pt;zu=1;const t="[0-9]+",e="[A-Z $%*+\\-./:]+";let n="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";n=n.replace(/u/g,"\\u");const r="(?:(?![A-Z0-9 $%*+\\-./:]|"+n+`)(?:.|[\r
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/passwordBootstrap-dH2p1UXM.js","assets/react-XDCjal2T.js","assets/dnd-BCFAPC0L.js","assets/terminal-C7X98Amf.js","assets/App-DIYNv8nX.js","assets/gestureArbiter-B6OZhQjV.js","assets/gestureArbiter-C2J0D0kV.css","assets/triangle-alert-9JebA9Zi.js","assets/referenceLongPress-5KOTIE_2.js","assets/DagPlayground-DHLTKfYe.js","assets/ChangeWalkthroughPanel-D3P0LWfU.js","assets/sparkles-BqYxpm2T.js","assets/DiffLab-DyapQhFp.js","assets/DiffViewer-DbAcE-rO.js","assets/DiffViewer-T3uj2-aP.css","assets/DiffReviewLab-CcATFm0V.js","assets/DiffReview-CtlVXUuM.js"])))=>i.map(i=>d[i]);
2
+ import{r as $c,a as jm,g as Df}from"./react-XDCjal2T.js";import{b as _,R as Xe,r as qc}from"./dnd-BCFAPC0L.js";import{L as Hm,l as Um}from"./terminal-C7X98Amf.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(o){if(o.ep)return;o.ep=!0;const s=n(o);fetch(o.href,s)}})();const $m="modulepreload",qm=function(t){return"/"+t},ed={},en=function(e,n,r){let o=Promise.resolve();if(n&&n.length>0){let c=function(l){return Promise.all(l.map(d=>Promise.resolve(d).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=i?.nonce||i?.getAttribute("nonce");o=c(n.map(l=>{if(l=qm(l),l in ed)return;ed[l]=!0;const d=l.endsWith(".css"),u=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const f=document.createElement("link");if(f.rel=d?"stylesheet":$m,d||(f.as="script"),f.crossOrigin="",f.href=l,a&&f.setAttribute("nonce",a),document.head.appendChild(f),d)return new Promise((h,g)=>{f.addEventListener("load",h),f.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${l}`)))})}))}function s(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return o.then(i=>{for(const a of i||[])a.status==="rejected"&&s(a.reason);return e().catch(s)})};var Ri={exports:{}},Cr={};var td;function Km(){if(td)return Cr;td=1;var t=$c(),e=Symbol.for("react.element"),n=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,o=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function i(a,c,l){var d,u={},f=null,h=null;l!==void 0&&(f=""+l),c.key!==void 0&&(f=""+c.key),c.ref!==void 0&&(h=c.ref);for(d in c)r.call(c,d)&&!s.hasOwnProperty(d)&&(u[d]=c[d]);if(a&&a.defaultProps)for(d in c=a.defaultProps,c)u[d]===void 0&&(u[d]=c[d]);return{$$typeof:e,type:a,key:f,ref:h,props:u,_owner:o.current}}return Cr.Fragment=n,Cr.jsx=i,Cr.jsxs=i,Cr}var nd;function zm(){return nd||(nd=1,Ri.exports=Km()),Ri.exports}var p=zm();const mn="termdock-secure-target-v1",Kc="termdock-secure-entry-v1",Wm=new Set([mn,Kc,"termdock-color-theme","termdock:locale","termdock.federation.connections.v1"]),To=typeof Storage>"u"?void 0:Storage.prototype.getItem,Ti=typeof Storage>"u"?void 0:Storage.prototype.setItem,rd="termdock-secure-legacy-owner",Gs=typeof window<"u"&&window.parent!==window&&location.pathname==="/workspace.html";function Gm(){if(typeof window>"u")return null;try{if(Gs){const e=new URLSearchParams(location.search).get("termdock-workspace"),n=JSON.parse(localStorage.getItem("termdock.federation.connections.v1")||"[]"),r=Array.isArray(n)?n.find(o=>o?.targetPeerId===e):void 0;return r&&typeof r.url=="string"&&typeof r.targetPeerId=="string"?{...r,serviceName:r.label||r.serviceName}:null}const t=JSON.parse(sessionStorage.getItem(mn)??localStorage.getItem(mn)??"null");return t&&typeof t.url=="string"&&typeof t.targetPeerId=="string"?t:null}catch{return null}}let Vs=Gm();const Vn=Vs?.targetPeerId??"unpaired";function ao(){return Vs}function Ff(t){if(Vs=t,Gs)return;const e=JSON.stringify(t);sessionStorage.setItem(mn,e),localStorage.setItem(mn,e)}function Vm(){Vs=null,!Gs&&(localStorage.removeItem(mn),sessionStorage.removeItem(mn),localStorage.removeItem(Kc))}function Zr(t,e=Vn){return Wm.has(t)||t.startsWith("termdock-secure-")?t:`termdock-service:${e}:${t}`}function Xm(t){if(!(!To||!Ti))try{if(To.call(localStorage,rd))return;Ti.call(localStorage,rd,t);for(const n of[localStorage,sessionStorage]){const r=Array.from({length:n.length},(o,s)=>n.key(s)).filter(o=>!!o);for(const o of r){if(o.startsWith("termdock-service:")||Zr(o,t)===o)continue;const s=Zr(o,t),i=To.call(n,o);i!==null&&To.call(n,s)===null&&Ti.call(n,s,i)}}}catch{}}let od=!1;function Ym(){if(od||typeof Storage>"u")return;od=!0;const t=Storage.prototype.getItem,e=Storage.prototype.setItem,n=Storage.prototype.removeItem;Storage.prototype.getItem=function(r){return t.call(this,Zr(String(r)))},Storage.prototype.setItem=function(r,o){e.call(this,Zr(String(r)),o)},Storage.prototype.removeItem=function(r){n.call(this,Zr(String(r)))}}Ym();const Xs="termdock.federation.connections.v1",Ma="termdock:services-changed",zc="termdock-secure-removed-services",ps=t=>[t.id,t.targetPeerId,t.serviceOrigin||t.url].filter(e=>!!e);function Wc(){try{const t=JSON.parse(localStorage.getItem(zc)||"[]");return Array.isArray(t)?t.filter(e=>typeof e=="string"):[]}catch{return[]}}function Me(t){const e=t.trim();if(!e)throw new Error("请输入服务地址。");const n=new URL(/^[a-z][a-z\d+.-]*:\/\//i.test(e)?e:`https://${e}`);n.protocol==="wss:"&&(n.protocol="https:"),n.protocol==="ws:"&&(n.protocol="http:");const r=["localhost","127.0.0.1","[::1]"].includes(n.hostname);if(!["https:","http:"].includes(n.protocol)||n.protocol==="http:"&&!r)throw new Error("请使用 HTTPS 服务地址。");if(n.username||n.password||n.search||n.hash||!["/","/api/federation/secure"].includes(n.pathname))throw new Error("请输入服务首页地址,不要包含账号或额外参数。");return n.origin}function Ys(t){if(!t||typeof t!="object")return;const e=t;if(typeof e.url=="string")try{const n=Me(e.url),r=typeof e.targetPeerId=="string"&&e.targetPeerId?e.targetPeerId:void 0,o=(typeof e.label=="string"?e.label:typeof e.serviceName=="string"?e.serviceName:"").trim().slice(0,120)||new URL(n).host;return{id:typeof e.id=="string"&&e.id?e.id:r||n,url:n,label:o,...r?{targetPeerId:r}:{},...typeof e.serviceOrigin=="string"?{serviceOrigin:Me(e.serviceOrigin)}:{},...typeof e.entryServiceId=="string"&&e.entryServiceId?{entryServiceId:e.entryServiceId}:{},...Array.isArray(e.routes)?{routes:e.routes.slice(0,4).flatMap(s=>{try{return s&&typeof s.targetPeerId=="string"&&s.targetPeerId?[{url:Me(s.url),targetPeerId:s.targetPeerId}]:[]}catch{return[]}})}:{}}}catch{return}}function kt(t,e){return t.targetPeerId&&e.targetPeerId?t.targetPeerId===e.targetPeerId:(t.serviceOrigin||t.url)===(e.serviceOrigin||e.url)}function Mf(t){const e=[];for(const n of t){const r=e.findIndex(o=>kt(o,n));r<0?e.push(n):e[r]={...e[r],...n,id:e[r].id}}return e}function bo(){return typeof window>"u"?void 0:window.termdockDesktop}function wn(){try{const t=JSON.parse(localStorage.getItem(Xs)||"[]");return Array.isArray(t)?Mf(t.map(Ys).filter(e=>!!e)):[]}catch{return[]}}function jf(t){localStorage.setItem(Xs,JSON.stringify(t.map(e=>({...e,serviceName:e.label})))),window.dispatchEvent(new Event(Ma))}let Ir;async function We(){const t=bo();if(!t?.serviceConnections||!t.saveServiceConnection)return wn();if(Ir)return Ir;Ir=(async()=>{let e=await t.serviceConnections();const n=wn();for(const r of n)e.some(o=>kt(o,r))||(e=await(t.importServiceConnection||t.saveServiceConnection)(r));return n.length&&localStorage.removeItem(Xs),e})();try{return await Ir}finally{Ir=void 0}}async function Nt(t){const e=Ys(t);if(!e)throw new Error("服务地址无效。");const n=bo();if(n?.saveServiceConnection)return n.saveServiceConnection(e);const r=wn(),o=r.find(a=>a.id===e.id||kt(a,e)),s=new Set([...ps(e),...o?ps(o):[]]);localStorage.setItem(zc,JSON.stringify(Wc().filter(a=>!s.has(a))));const i=Mf([...r.filter(a=>a!==o),{...o,...e,id:o?.id||e.id}]);return jf(i),i}async function Zm(t){const e=Ys(t);if(!e)throw new Error("服务地址无效。");const n=bo();if(n?.importServiceConnection)return n.importServiceConnection(e);if(n?.serviceConnections){const r=await n.serviceConnections();return r.some(o=>kt(o,e))?Nt(e):r}return ps(e).some(r=>Wc().includes(r))?wn():Nt(e)}async function Jm(t){const e=bo();if(e?.removeServiceConnection)return e.removeServiceConnection(t);const n=wn(),r=n.find(s=>s.id===t);r&&localStorage.setItem(zc,JSON.stringify([...new Set([...Wc(),...ps(r)])].slice(-768)));const o=n.filter(s=>s.id!==t);return jf(o),o}function Zs(t){const e=r=>{(r.key===Xs||r.key===null)&&t()};window.addEventListener(Ma,t),window.addEventListener("storage",e);const n=bo()?.onServiceConnections?.(t);return()=>{window.removeEventListener(Ma,t),window.removeEventListener("storage",e),n?.()}}class Qm extends Error{static name="UnexpectedPeerError";constructor(e="Unexpected Peer"){super(e),this.name="UnexpectedPeerError"}}let ew=class extends Error{static name="InvalidCryptoExchangeError";constructor(e="Invalid crypto exchange"){super(e),this.name="InvalidCryptoExchangeError"}},lt=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}};class Hf extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}}class Uf extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}}class tw extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}}class nw extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}}class Js extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}}const $f=Symbol.for("@libp2p/peer-id");function rw(t){return typeof t?.handleEvent=="function"}function ow(t){return t===!0||t===!1}function sw(t){return ow(t)?t:t?.capture??!1}function ja(t){const e={capture:sw(t),once:!!t?.once};return t?.passive!=null&&(e.passive=t?.passive),t?.signal!=null&&(e.signal=t?.signal),e}function sd(t,e){return ja(t).capture===ja(e).capture}class iw extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){const n=this.#e.get(e);return n==null?0:n.length}addEventListener(e,n,r){const o=ja(r);if(o?.signal?.aborted===!0)return;const s=l=>{o.once&&this.removeEventListener(e,n,o),rw(n)?n.handleEvent(l):n(l)};let i=this.#e.get(e);if(i==null&&(i=[],this.#e.set(e,i)),i.some(l=>l.callback!==n?!1:sd(l.options,o)))return;super.addEventListener(e,s,o);const c=()=>{this.removeEventListener(e,n,o)};o.signal?.addEventListener("abort",c),i.push({callback:n,wrapper:s,options:o,onAbort:c})}removeEventListener(e,n,r){const o=this.#e.get(e);if(o==null){super.removeEventListener(e,n??null,r);return}this.#e.set(e,o.filter(s=>s.callback===n&&sd(s.options,r)?(super.removeEventListener(e,s.wrapper,r),s.options?.signal?.removeEventListener("abort",s.onAbort),!1):!0))}safeDispatchEvent(e,n={}){return this.dispatchEvent(new CustomEvent(e,n))}}const aw=Symbol.for("@libp2p/service-capabilities");function cw(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let n=0;n<t.byteLength;n++)if(t[n]!==e[n])return!1;return!0}function Qs(t){if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")}function lw(t){return new TextEncoder().encode(t)}function dw(t){return new TextDecoder().decode(t)}function uw(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var n=new Uint8Array(256),r=0;r<n.length;r++)n[r]=255;for(var o=0;o<t.length;o++){var s=t.charAt(o),i=s.charCodeAt(0);if(n[i]!==255)throw new TypeError(s+" is ambiguous");n[i]=o}var a=t.length,c=t.charAt(0),l=Math.log(a)/Math.log(256),d=Math.log(256)/Math.log(a);function u(g){if(g instanceof Uint8Array||(ArrayBuffer.isView(g)?g=new Uint8Array(g.buffer,g.byteOffset,g.byteLength):Array.isArray(g)&&(g=Uint8Array.from(g))),!(g instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(g.length===0)return"";for(var m=0,b=0,w=0,I=g.length;w!==I&&g[w]===0;)w++,m++;for(var y=(I-w)*d+1>>>0,k=new Uint8Array(y);w!==I;){for(var N=g[w],x=0,T=y-1;(N!==0||x<b)&&T!==-1;T--,x++)N+=256*k[T]>>>0,k[T]=N%a>>>0,N=N/a>>>0;if(N!==0)throw new Error("Non-zero carry");b=x,w++}for(var S=y-b;S!==y&&k[S]===0;)S++;for(var v=c.repeat(m);S<y;++S)v+=t.charAt(k[S]);return v}function f(g){if(typeof g!="string")throw new TypeError("Expected String");if(g.length===0)return new Uint8Array;var m=0;if(g[m]!==" "){for(var b=0,w=0;g[m]===c;)b++,m++;for(var I=(g.length-m)*l+1>>>0,y=new Uint8Array(I);g[m];){var k=n[g.charCodeAt(m)];if(k===255)return;for(var N=0,x=I-1;(k!==0||N<w)&&x!==-1;x--,N++)k+=a*y[x]>>>0,y[x]=k%256>>>0,k=k/256>>>0;if(k!==0)throw new Error("Non-zero carry");w=N,m++}if(g[m]!==" "){for(var T=I-w;T!==I&&y[T]===0;)T++;for(var S=new Uint8Array(b+(I-T)),v=b;T!==I;)S[v++]=y[T++];return S}}}function h(g){var m=f(g);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:h}}var fw=uw,hw=fw;class pw{name;prefix;baseEncode;constructor(e,n,r){this.name=e,this.prefix=n,this.baseEncode=r}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class gw{name;prefix;baseDecode;prefixCodePoint;constructor(e,n,r){this.name=e,this.prefix=n;const o=n.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=r}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return qf(this,e)}}class mw{decoders;constructor(e){this.decoders=e}or(e){return qf(this,e)}decode(e){const n=e[0],r=this.decoders[n];if(r!=null)return r.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}function qf(t,e){return new mw({...t.decoders??{[t.prefix]:t},...e.decoders??{[e.prefix]:e}})}class ww{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,n,r,o){this.name=e,this.prefix=n,this.baseEncode=r,this.baseDecode=o,this.encoder=new pw(e,n,r),this.decoder=new gw(e,n,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}function ei({name:t,prefix:e,encode:n,decode:r}){return new ww(t,e,n,r)}function vo({name:t,prefix:e,alphabet:n}){const{encode:r,decode:o}=hw(n,t);return ei({prefix:e,name:t,encode:r,decode:s=>Qs(o(s))})}function yw(t,e,n,r){let o=t.length;for(;t[o-1]==="=";)--o;const s=new Uint8Array(o*n/8|0);let i=0,a=0,c=0;for(let l=0;l<o;++l){const d=e[t[l]];if(d===void 0)throw new SyntaxError(`Non-${r} character`);a=a<<n|d,i+=n,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=n||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function bw(t,e,n){const r=e[e.length-1]==="=",o=(1<<n)-1;let s="",i=0,a=0;for(let c=0;c<t.length;++c)for(a=a<<8|t[c],i+=8;i>n;)i-=n,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<n-i]),r)for(;(s.length*n&7)!==0;)s+="=";return s}function vw(t){const e={};for(let n=0;n<t.length;++n)e[t[n]]=n;return e}function Ne({name:t,prefix:e,bitsPerChar:n,alphabet:r}){const o=vw(r);return ei({prefix:e,name:t,encode(s){return bw(s,r,n)},decode(s){return yw(s,o,n,t)}})}const je=vo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Sw=vo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"}),xw=Object.freeze(Object.defineProperty({__proto__:null,base58btc:je,base58flickr:Sw},Symbol.toStringTag,{value:"Module"})),Jr=Ne({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Ew=Ne({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Aw=Ne({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),kw=Ne({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Cw=Ne({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Iw=Ne({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Rw=Ne({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Tw=Ne({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Pw=Ne({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5}),Nw=Object.freeze(Object.defineProperty({__proto__:null,base32:Jr,base32hex:Cw,base32hexpad:Rw,base32hexpadupper:Tw,base32hexupper:Iw,base32pad:Aw,base32padupper:kw,base32upper:Ew,base32z:Pw},Symbol.toStringTag,{value:"Module"})),Qo=vo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Lw=vo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}),Bw=Object.freeze(Object.defineProperty({__proto__:null,base36:Qo,base36upper:Lw},Symbol.toStringTag,{value:"Module"}));var _w=Kf,id=128,Ow=-128,Dw=Math.pow(2,31);function Kf(t,e,n){e=e||[],n=n||0;for(var r=n;t>=Dw;)e[n++]=t&255|id,t/=128;for(;t&Ow;)e[n++]=t&255|id,t>>>=7;return e[n]=t|0,Kf.bytes=n-r+1,e}var Fw=Ha,Mw=128,ad=127;function Ha(t,r){var n=0,r=r||0,o=0,s=r,i,a=t.length;do{if(s>=a)throw Ha.bytes=0,new RangeError("Could not decode varint");i=t[s++],n+=o<28?(i&ad)<<o:(i&ad)*Math.pow(2,o),o+=7}while(i>=Mw);return Ha.bytes=s-r,n}var jw=Math.pow(2,7),Hw=Math.pow(2,14),Uw=Math.pow(2,21),$w=Math.pow(2,28),qw=Math.pow(2,35),Kw=Math.pow(2,42),zw=Math.pow(2,49),Ww=Math.pow(2,56),Gw=Math.pow(2,63),Vw=function(t){return t<jw?1:t<Hw?2:t<Uw?3:t<$w?4:t<qw?5:t<Kw?6:t<zw?7:t<Ww?8:t<Gw?9:10},Xw={encode:_w,decode:Fw,encodingLength:Vw},gs=Xw;function Ua(t,e=0){return[gs.decode(t,e),gs.decode.bytes]}function ms(t,e,n=0){return gs.encode(t,e,n),e}function ws(t){return gs.encodingLength(t)}function So(t,e){const n=e.byteLength,r=ws(t),o=r+ws(n),s=new Uint8Array(o+n);return ms(t,s,0),ms(n,s,r),s.set(e,o),new Gc(t,n,e,s)}function zf(t){const e=Qs(t),[n,r]=Ua(e),[o,s]=Ua(e.subarray(r)),i=e.subarray(r+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Gc(n,o,i,e)}function Yw(t,e){if(t===e)return!0;{const n=e;return t.code===n.code&&t.size===n.size&&n.bytes instanceof Uint8Array&&cw(t.bytes,n.bytes)}}class Gc{code;size;digest;bytes;constructor(e,n,r,o){this.code=e,this.size=n,this.digest=r,this.bytes=o}}function cd(t,e){const{bytes:n,version:r}=t;return r===0?Jw(n,$a(t),e??je.encoder):Qw(n,$a(t),e??Jr.encoder)}const ld=new WeakMap;function $a(t){const e=ld.get(t);if(e==null){const n=new Map;return ld.set(t,n),n}return e}class ue{code;version;multihash;bytes;"/";constructor(e,n,r,o){this.code=n,this.version=e,this.multihash=r,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{const{code:e,multihash:n}=this;if(e!==Rr)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(n.code!==ey)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return ue.createV0(n)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{const{code:e,digest:n}=this.multihash,r=So(e,n);return ue.createV1(this.code,r)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return ue.equals(this,e)}static equals(e,n){const r=n;return r!=null&&e.code===r.code&&e.version===r.version&&Yw(e.multihash,r.multihash)}toString(e){return cd(this,e)}toJSON(){return{"/":cd(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;const n=e;if(n instanceof ue)return n;if(n["/"]!=null&&n["/"]===n.bytes||n.asCID===n){const{version:r,code:o,multihash:s,bytes:i}=n;return new ue(r,o,s,i??dd(r,o,s.bytes))}else if(n[ty]===!0){const{version:r,multihash:o,code:s}=n,i=zf(o);return ue.create(r,s,i)}else return null}static create(e,n,r){if(typeof n!="number")throw new Error("String codecs are no longer supported");if(!(r.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(n!==Rr)throw new Error(`Version 0 CID must use dag-pb (code: ${Rr}) block encoding`);return new ue(e,n,r,r.bytes)}case 1:{const o=dd(e,n,r.bytes);return new ue(e,n,r,o)}default:throw new Error("Invalid version")}}static createV0(e){return ue.create(0,Rr,e)}static createV1(e,n){return ue.create(1,e,n)}static decode(e){const[n,r]=ue.decodeFirst(e);if(r.length!==0)throw new Error("Incorrect length");return n}static decodeFirst(e){const n=ue.inspectBytes(e),r=n.size-n.multihashSize,o=Qs(e.subarray(r,r+n.multihashSize));if(o.byteLength!==n.multihashSize)throw new Error("Incorrect length");const s=o.subarray(n.multihashSize-n.digestSize),i=new Gc(n.multihashCode,n.digestSize,s,o);return[n.version===0?ue.createV0(i):ue.createV1(n.codec,i),e.subarray(n.size)]}static inspectBytes(e){let n=0;const r=()=>{const[u,f]=Ua(e.subarray(n));return n+=f,u};let o=r(),s=Rr;if(o===18?(o=0,n=0):s=r(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);const i=n,a=r(),c=r(),l=n+c,d=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:d,size:l}}static parse(e,n){const[r,o]=Zw(e,n),s=ue.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return $a(s).set(r,e),s}}function Zw(t,e){switch(t[0]){case"Q":{const n=e??je;return[je.prefix,n.decode(`${je.prefix}${t}`)]}case je.prefix:{const n=e??je;return[je.prefix,n.decode(t)]}case Jr.prefix:{const n=e??Jr;return[Jr.prefix,n.decode(t)]}case Qo.prefix:{const n=e??Qo;return[Qo.prefix,n.decode(t)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[t[0],e.decode(t)]}}}function Jw(t,e,n){const{prefix:r}=n;if(r!==je.prefix)throw Error(`Cannot string encode V0 in ${n.name} encoding`);const o=e.get(r);if(o==null){const s=n.encode(t).slice(1);return e.set(r,s),s}else return o}function Qw(t,e,n){const{prefix:r}=n,o=e.get(r);if(o==null){const s=n.encode(t);return e.set(r,s),s}else return o}const Rr=112,ey=18;function dd(t,e,n){const r=ws(t),o=r+ws(e),s=new Uint8Array(o+n.byteLength);return ms(t,s,0),ms(e,s,r),s.set(n,o),s}const ty=Symbol.for("@ipld/js-cid/CID"),Wf=0,ny="identity",Gf=Qs;function ry(t,e){if(e?.truncate!=null&&e.truncate!==t.byteLength){if(e.truncate<0||e.truncate>t.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${t.byteLength}`);t=t.subarray(0,e.truncate)}return So(Wf,Gf(t))}const xo={code:Wf,name:ny,encode:Gf,digest:ry};function dt(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let n=0;n<t.byteLength;n++)if(t[n]!==e[n])return!1;return!0}function qe(t=0){return new Uint8Array(t)}function Lt(t=0){return new Uint8Array(t)}function qa(t,e){e==null&&(e=t.reduce((o,s)=>o+s.length,0));const n=Lt(e);let r=0;for(const o of t)n.set(o,r),r+=o.length;return n}const Vf=Symbol.for("@achingbrain/uint8arraylist");function ud(t,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let n=0;for(const r of t){const o=n+r.byteLength;if(e<o)return{buf:r,index:e-n};n=o}throw new RangeError("index is out of bounds")}function Po(t){return!!t?.[Vf]}class ce{bufs;length;[Vf]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let n=0;for(const r of e)if(r instanceof Uint8Array)n+=r.byteLength,this.bufs.push(r);else if(Po(r)){n+=r.byteLength;for(const o of r.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=n}prepend(...e){this.prependAll(e)}prependAll(e){let n=0;for(const r of e.reverse())if(r instanceof Uint8Array)n+=r.byteLength,this.bufs.unshift(r);else if(Po(r))n+=r.byteLength,this.bufs.unshift(...r.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=n}get(e){const n=ud(this.bufs,e);return n.buf[n.index]}set(e,n){const r=ud(this.bufs,e);r.buf[r.index]=n}write(e,n=0){if(e instanceof Uint8Array)for(let r=0;r<e.length;r++)this.set(n+r,e[r]);else if(Po(e))for(let r=0;r<e.length;r++)this.set(n+r,e.get(r));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,n){const{bufs:r,length:o}=this._subList(e,n);return qa(r,o)}subarray(e,n){const{bufs:r,length:o}=this._subList(e,n);return r.length===1?r[0]:qa(r,o)}sublist(e,n){const{bufs:r,length:o}=this._subList(e,n),s=new ce;return s.length=o,s.bufs=r,s}_subList(e,n){if(e=e??0,n=n??this.length,e<0&&(e=this.length+e),n<0&&(n=this.length+n),e<0||n>this.length)throw new RangeError("index is out of bounds");if(e===n)return{bufs:[],length:0};if(e===0&&n===this.length)return{bufs:[...this.bufs],length:this.length};const r=[];let o=0;for(let s=0;s<this.bufs.length;s++){const i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;const l=e>=a&&e<c,d=n>a&&n<=c;if(l&&d){if(e===a&&n===c){r.push(i);break}const u=e-a;r.push(i.subarray(u,u+(n-e)));break}if(l){if(e===0){r.push(i);continue}r.push(i.subarray(e-a));continue}if(d){if(n===c){r.push(i);break}r.push(i.subarray(0,n-a));break}r.push(i)}return{bufs:r,length:n-e}}indexOf(e,n=0){if(!Po(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');const r=e instanceof Uint8Array?e:e.subarray();if(n=Number(n??0),isNaN(n)&&(n=0),n<0&&(n=this.length+n),n<0&&(n=0),e.length===0)return n>this.length?this.length:n;const o=r.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");const s=256,i=new Int32Array(s);for(let u=0;u<s;u++)i[u]=-1;for(let u=0;u<o;u++)i[r[u]]=u;const a=i,c=this.byteLength-r.byteLength,l=r.byteLength-1;let d;for(let u=n;u<=c;u+=d){d=0;for(let f=l;f>=0;f--){const h=this.get(u+f);if(r[f]!==h){d=Math.max(1,f-a[h]);break}}if(d===0)return u}return-1}getInt8(e){const n=this.subarray(e,e+1);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt8(0)}setInt8(e,n){const r=Lt(1);new DataView(r.buffer,r.byteOffset,r.byteLength).setInt8(0,n),this.write(r,e)}getInt16(e,n){const r=this.subarray(e,e+2);return new DataView(r.buffer,r.byteOffset,r.byteLength).getInt16(0,n)}setInt16(e,n,r){const o=qe(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,n,r),this.write(o,e)}getInt32(e,n){const r=this.subarray(e,e+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getInt32(0,n)}setInt32(e,n,r){const o=qe(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,n,r),this.write(o,e)}getBigInt64(e,n){const r=this.subarray(e,e+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getBigInt64(0,n)}setBigInt64(e,n,r){const o=qe(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,n,r),this.write(o,e)}getUint8(e){const n=this.subarray(e,e+1);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint8(0)}setUint8(e,n){const r=Lt(1);new DataView(r.buffer,r.byteOffset,r.byteLength).setUint8(0,n),this.write(r,e)}getUint16(e,n){const r=this.subarray(e,e+2);return new DataView(r.buffer,r.byteOffset,r.byteLength).getUint16(0,n)}setUint16(e,n,r){const o=qe(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,n,r),this.write(o,e)}getUint32(e,n){const r=this.subarray(e,e+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getUint32(0,n)}setUint32(e,n,r){const o=qe(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,n,r),this.write(o,e)}getBigUint64(e,n){const r=this.subarray(e,e+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getBigUint64(0,n)}setBigUint64(e,n,r){const o=qe(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,n,r),this.write(o,e)}getFloat32(e,n){const r=this.subarray(e,e+4);return new DataView(r.buffer,r.byteOffset,r.byteLength).getFloat32(0,n)}setFloat32(e,n,r){const o=qe(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,n,r),this.write(o,e)}getFloat64(e,n){const r=this.subarray(e,e+8);return new DataView(r.buffer,r.byteOffset,r.byteLength).getFloat64(0,n)}setFloat64(e,n,r){const o=qe(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,n,r),this.write(o,e)}equals(e){if(e==null||!(e instanceof ce)||e.bufs.length!==this.bufs.length)return!1;for(let n=0;n<this.bufs.length;n++)if(!dt(this.bufs[n],e.bufs[n]))return!1;return!0}static fromUint8Arrays(e,n){const r=new ce;return r.bufs=e,n==null&&(n=e.reduce((o,s)=>o+s.byteLength,0)),r.length=n,r}}const oy=vo({prefix:"9",name:"base10",alphabet:"0123456789"}),sy=Object.freeze(Object.defineProperty({__proto__:null,base10:oy},Symbol.toStringTag,{value:"Module"})),iy=Ne({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),ay=Ne({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4}),cy=Object.freeze(Object.defineProperty({__proto__:null,base16:iy,base16upper:ay},Symbol.toStringTag,{value:"Module"})),ly=Ne({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1}),dy=Object.freeze(Object.defineProperty({__proto__:null,base2:ly},Symbol.toStringTag,{value:"Module"})),Xf=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),uy=Xf.reduce((t,e,n)=>(t[n]=e,t),[]),fy=Xf.reduce((t,e,n)=>{const r=e.codePointAt(0);if(r==null)throw new Error(`Invalid character: ${e}`);return t[r]=n,t},[]);function hy(t){return t.reduce((e,n)=>(e+=uy[n],e),"")}function py(t){const e=[];for(const n of t){const r=n.codePointAt(0);if(r==null)throw new Error(`Invalid character: ${n}`);const o=fy[r];if(o==null)throw new Error(`Non-base256emoji character: ${n}`);e.push(o)}return new Uint8Array(e)}const gy=ei({prefix:"🚀",name:"base256emoji",encode:hy,decode:py}),my=Object.freeze(Object.defineProperty({__proto__:null,base256emoji:gy},Symbol.toStringTag,{value:"Module"})),wy=Ne({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),yy=Ne({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),by=Ne({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),vy=Ne({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6}),Sy=Object.freeze(Object.defineProperty({__proto__:null,base64:wy,base64pad:yy,base64url:by,base64urlpad:vy},Symbol.toStringTag,{value:"Module"})),xy=Ne({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3}),Ey=Object.freeze(Object.defineProperty({__proto__:null,base8:xy},Symbol.toStringTag,{value:"Module"})),Ay=ei({prefix:"\0",name:"identity",encode:t=>dw(t),decode:t=>lw(t)}),ky=Object.freeze(Object.defineProperty({__proto__:null,identity:Ay},Symbol.toStringTag,{value:"Module"}));new TextEncoder;new TextDecoder;const Cy=20;function Iy({name:t,code:e,encode:n,minDigestLength:r,maxDigestLength:o}){return new Ry(t,e,n,r,o)}class Ry{name;code;encode;minDigestLength;maxDigestLength;constructor(e,n,r,o,s){this.name=e,this.code=n,this.encode=r,this.minDigestLength=o??Cy,this.maxDigestLength=s}digest(e,n){if(n?.truncate!=null){if(n.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&n.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){const r=this.encode(e);return r instanceof Uint8Array?fd(r,this.code,n?.truncate):r.then(o=>fd(o,this.code,n?.truncate))}else throw Error("Unknown type, must be binary type")}}function fd(t,e,n){if(n!=null&&n!==t.byteLength){if(n>t.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${t.byteLength}`);t=t.subarray(0,n)}return So(e,t)}function Ty(t){return async e=>new Uint8Array(await crypto.subtle.digest(t,e))}const Vc=Iy({name:"sha2-256",code:18,encode:Ty("SHA-256")}),hd={...ky,...dy,...Ey,...sy,...cy,...Nw,...Bw,...xw,...Sy,...my};function Yf(t,e,n,r){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:n},decoder:{decode:r}}}const pd=Yf("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Pi=Yf("ascii","a",t=>{let e="a";for(let n=0;n<t.length;n++)e+=String.fromCharCode(t[n]);return e},t=>{t=t.substring(1);const e=Lt(t.length);for(let n=0;n<t.length;n++)e[n]=t.charCodeAt(n);return e}),Zf={utf8:pd,"utf-8":pd,hex:hd.base16,latin1:Pi,ascii:Pi,binary:Pi,...hd};function ve(t,e="utf8"){const n=Zf[e];if(n==null)throw new Error(`Unsupported encoding "${e}"`);return n.decoder.decode(`${n.prefix}${t}`)}function te(t,e="utf8"){const n=Zf[e];if(n==null)throw new Error(`Unsupported encoding "${e}"`);return n.encoder.encode(t).substring(1)}const Py=parseInt("11111",2),Ka=parseInt("10000000",2),Ny=parseInt("01111111",2),gd={0:Tr,1:Tr,2:Ly,3:Oy,4:Dy,5:_y,6:By,16:Tr,22:Tr,48:Tr};function yr(t,e={offset:0}){const n=t[e.offset]&Py;if(e.offset++,gd[n]!=null)return gd[n](t,e);throw new Error("No decoder for tag "+n)}function Eo(t,e){let n=0;if((t[e.offset]&Ka)===Ka){const r=t[e.offset]&Ny;let o="0x";e.offset++;for(let s=0;s<r;s++,e.offset++)o+=t[e.offset].toString(16).padStart(2,"0");n=parseInt(o,16)}else n=t[e.offset],e.offset++;return n}function Tr(t,e){Eo(t,e);const n=[];for(;!(e.offset>=t.byteLength);){const r=yr(t,e);if(r===null)break;n.push(r)}return n}function Ly(t,e){const n=Eo(t,e),r=e.offset,o=e.offset+n,s=[];for(let i=r;i<o;i++)i===r&&t[i]===0||s.push(t[i]);return e.offset+=n,Uint8Array.from(s)}function By(t,e){const n=Eo(t,e),r=e.offset+n,o=t[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<r;){const l=t[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let d=0;for(let u=0;u<c.length;u++)d+=c[u]<<u*7;a+=`.${d}`,c=[]}}return a}function _y(t,e){return e.offset++,null}function Oy(t,e){const n=Eo(t,e),r=t[e.offset];e.offset++;const o=t.subarray(e.offset,e.offset+n-1);if(e.offset+=n,r!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function Dy(t,e){const n=Eo(t,e),r=t.subarray(e.offset,e.offset+n);return e.offset+=n,r}function Fy(t){let e=t.toString(16);e.length%2===1&&(e="0"+e);const n=new ce;for(let r=0;r<e.length;r+=2)n.append(Uint8Array.from([parseInt(`${e[r]}${e[r+1]}`,16)]));return n}function ti(t){if(t.byteLength<128)return Uint8Array.from([t.byteLength]);const e=Fy(t.byteLength);return new ce(Uint8Array.from([e.byteLength|Ka]),e)}function Ve(t){const e=new ce,n=128;return(t.subarray()[0]&n)===n&&e.append(Uint8Array.from([0])),e.append(t),new ce(Uint8Array.from([2]),ti(e),e)}function Xc(t){const e=Uint8Array.from([0]),n=new ce(e,t);return new ce(Uint8Array.from([3]),ti(n),n)}function My(t){return new ce(Uint8Array.from([4]),ti(t),t)}function Tt(t,e=48){const n=new ce;for(const r of t)n.append(r);return new ce(Uint8Array.from([e]),ti(n),n)}async function jy(t,e,n){const r=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["sign"]);n?.signal?.throwIfAborted();const o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},r,e.subarray());return n?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function Hy(t,e,n,r){const o=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["verify"]);r?.signal?.throwIfAborted();const s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,n.subarray());return r?.signal?.throwIfAborted(),s}const Uy=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),$y=Uint8Array.from([6,5,43,129,4,0,34]),qy=Uint8Array.from([6,5,43,129,4,0,35]),Jf={ext:!0,kty:"EC",crv:"P-256"},Qf={ext:!0,kty:"EC",crv:"P-384"},eh={ext:!0,kty:"EC",crv:"P-521"},Xn=32,Yn=48,Zn=66;function Ky(t){const e=yr(t);return zy(e)}function zy(t){const e=t[1],n=te(e,"base64url"),r=t[2][1][0],o=1;let s,i;if(e.byteLength===Xn)return s=te(r.subarray(o,o+Xn),"base64url"),i=te(r.subarray(o+Xn),"base64url"),new Ni({...Jf,key_ops:["sign"],d:n,x:s,y:i});if(e.byteLength===Yn)return s=te(r.subarray(o,o+Yn),"base64url"),i=te(r.subarray(o+Yn),"base64url"),new Ni({...Qf,key_ops:["sign"],d:n,x:s,y:i});if(e.byteLength===Zn)return s=te(r.subarray(o,o+Zn),"base64url"),i=te(r.subarray(o+Zn),"base64url"),new Ni({...eh,key_ops:["sign"],d:n,x:s,y:i});throw new lt(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function th(t){const e=yr(t);return Wy(e)}function Wy(t){const e=t[1][1][0],n=1;let r,o;if(e.byteLength===Xn*2+1)return r=te(e.subarray(n,n+Xn),"base64url"),o=te(e.subarray(n+Xn),"base64url"),new es({...Jf,key_ops:["verify"],x:r,y:o});if(e.byteLength===Yn*2+1)return r=te(e.subarray(n,n+Yn),"base64url"),o=te(e.subarray(n+Yn),"base64url"),new es({...Qf,key_ops:["verify"],x:r,y:o});if(e.byteLength===Zn*2+1)return r=te(e.subarray(n,n+Zn),"base64url"),o=te(e.subarray(n+Zn),"base64url"),new es({...eh,key_ops:["verify"],x:r,y:o});throw new lt(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function Gy(t){return Tt([Ve(Uint8Array.from([1])),My(ve(t.d??"","base64url")),Tt([nh(t.crv)],160),Tt([Xc(new ce(Uint8Array.from([4]),ve(t.x??"","base64url"),ve(t.y??"","base64url")))],161)]).subarray()}function Vy(t){return Tt([Ve(Uint8Array.from([1])),Tt([nh(t.crv)],160),Tt([Xc(new ce(Uint8Array.from([4]),ve(t.x??"","base64url"),ve(t.y??"","base64url")))],161)]).subarray()}function nh(t){if(t==="P-256")return Uy;if(t==="P-384")return $y;if(t==="P-521")return qy;throw new lt(`Invalid curve ${t}`)}class es{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=Vy(this.jwk)),this._raw}toMultihash(){return xo.digest(ai(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return je.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}async verify(e,n,r){return Hy(this.jwk,n,e,r)}}class Ni{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new es({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=Gy(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}async sign(e,n){return jy(this.jwk,e,n)}}const _n=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function Ao(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function za(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function En(t,...e){if(!Ao(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function rh(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");za(t.outputLen),za(t.blockLen)}function ys(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Xy(t,e){En(t);const n=e.outputLen;if(t.length<n)throw new Error("digestInto() expects output buffer of length at least "+n)}function lr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Li(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function ft(t,e){return t<<32-e|t>>>e}const oh=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Yy=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function fn(t){if(En(t),oh)return t.toHex();let e="";for(let n=0;n<t.length;n++)e+=Yy[t[n]];return e}const bt={_0:48,_9:57,A:65,F:70,a:97,f:102};function md(t){if(t>=bt._0&&t<=bt._9)return t-bt._0;if(t>=bt.A&&t<=bt.F)return t-(bt.A-10);if(t>=bt.a&&t<=bt.f)return t-(bt.a-10)}function bs(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(oh)return Uint8Array.fromHex(t);const e=t.length,n=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=md(t.charCodeAt(s)),a=md(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}r[o]=i*16+a}return r}function Zy(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function Yc(t){return typeof t=="string"&&(t=Zy(t)),En(t),t}function gt(...t){let e=0;for(let r=0;r<t.length;r++){const o=t[r];En(o),e+=o.length}const n=new Uint8Array(e);for(let r=0,o=0;r<t.length;r++){const s=t[r];n.set(s,o),o+=s.length}return n}class sh{}function ih(t){const e=r=>t().update(Yc(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function Zc(t=32){if(_n&&typeof _n.getRandomValues=="function")return _n.getRandomValues(new Uint8Array(t));if(_n&&typeof _n.randomBytes=="function")return Uint8Array.from(_n.randomBytes(t));throw new Error("crypto.getRandomValues must be defined")}function Jy(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);const o=BigInt(32),s=BigInt(4294967295),i=Number(n>>o&s),a=Number(n&s),c=r?4:0,l=r?0:4;t.setUint32(e+c,i,r),t.setUint32(e+l,a,r)}function Qy(t,e,n){return t&e^~t&n}function eb(t,e,n){return t&e^t&n^e&n}let ah=class extends sh{constructor(e,n,r,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Li(this.buffer)}update(e){ys(this),e=Yc(e),En(e);const{view:n,buffer:r,blockLen:o}=this,s=e.length;for(let i=0;i<s;){const a=Math.min(o-this.pos,s-i);if(a===o){const c=Li(e);for(;o<=s-i;i+=o)this.process(c,i);continue}r.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ys(this),Xy(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,lr(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(r,0),i=0);for(let u=i;u<o;u++)n[u]=0;Jy(r,o-8,BigInt(this.length*8),s),this.process(r,0);const a=Li(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:n,buffer:r,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%n&&e.buffer.set(r),e}clone(){return this._cloneInto()}};const Ft=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),_e=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),No=BigInt(2**32-1),wd=BigInt(32);function tb(t,e=!1){return e?{h:Number(t&No),l:Number(t>>wd&No)}:{h:Number(t>>wd&No)|0,l:Number(t&No)|0}}function nb(t,e=!1){const n=t.length;let r=new Uint32Array(n),o=new Uint32Array(n);for(let s=0;s<n;s++){const{h:i,l:a}=tb(t[s],e);[r[s],o[s]]=[i,a]}return[r,o]}const yd=(t,e,n)=>t>>>n,bd=(t,e,n)=>t<<32-n|e>>>n,On=(t,e,n)=>t>>>n|e<<32-n,Dn=(t,e,n)=>t<<32-n|e>>>n,Lo=(t,e,n)=>t<<64-n|e>>>n-32,Bo=(t,e,n)=>t>>>n-32|e<<64-n;function vt(t,e,n,r){const o=(e>>>0)+(r>>>0);return{h:t+n+(o/2**32|0)|0,l:o|0}}const rb=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),ob=(t,e,n,r)=>e+n+r+(t/2**32|0)|0,sb=(t,e,n,r)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0),ib=(t,e,n,r,o)=>e+n+r+o+(t/2**32|0)|0,ab=(t,e,n,r,o)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0)+(o>>>0),cb=(t,e,n,r,o,s)=>e+n+r+o+s+(t/2**32|0)|0,lb=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Mt=new Uint32Array(64);class db extends ah{constructor(e=32){super(64,e,8,!1),this.A=Ft[0]|0,this.B=Ft[1]|0,this.C=Ft[2]|0,this.D=Ft[3]|0,this.E=Ft[4]|0,this.F=Ft[5]|0,this.G=Ft[6]|0,this.H=Ft[7]|0}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:c}=this;return[e,n,r,o,s,i,a,c]}set(e,n,r,o,s,i,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,n){for(let u=0;u<16;u++,n+=4)Mt[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const f=Mt[u-15],h=Mt[u-2],g=ft(f,7)^ft(f,18)^f>>>3,m=ft(h,17)^ft(h,19)^h>>>10;Mt[u]=m+Mt[u-7]+g+Mt[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=ft(a,6)^ft(a,11)^ft(a,25),h=d+f+Qy(a,c,l)+lb[u]+Mt[u]|0,m=(ft(r,2)^ft(r,13)^ft(r,22))+eb(r,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=r,r=h+m|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,c,l,d)}roundClean(){lr(Mt)}destroy(){this.set(0,0,0,0,0,0,0,0),lr(this.buffer)}}const ch=nb(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(t=>BigInt(t))),ub=ch[0],fb=ch[1],jt=new Uint32Array(80),Ht=new Uint32Array(80);class hb extends ah{constructor(e=64){super(128,e,16,!1),this.Ah=_e[0]|0,this.Al=_e[1]|0,this.Bh=_e[2]|0,this.Bl=_e[3]|0,this.Ch=_e[4]|0,this.Cl=_e[5]|0,this.Dh=_e[6]|0,this.Dl=_e[7]|0,this.Eh=_e[8]|0,this.El=_e[9]|0,this.Fh=_e[10]|0,this.Fl=_e[11]|0,this.Gh=_e[12]|0,this.Gl=_e[13]|0,this.Hh=_e[14]|0,this.Hl=_e[15]|0}get(){const{Ah:e,Al:n,Bh:r,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:d,Fh:u,Fl:f,Gh:h,Gl:g,Hh:m,Hl:b}=this;return[e,n,r,o,s,i,a,c,l,d,u,f,h,g,m,b]}set(e,n,r,o,s,i,a,c,l,d,u,f,h,g,m,b){this.Ah=e|0,this.Al=n|0,this.Bh=r|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=d|0,this.Fh=u|0,this.Fl=f|0,this.Gh=h|0,this.Gl=g|0,this.Hh=m|0,this.Hl=b|0}process(e,n){for(let y=0;y<16;y++,n+=4)jt[y]=e.getUint32(n),Ht[y]=e.getUint32(n+=4);for(let y=16;y<80;y++){const k=jt[y-15]|0,N=Ht[y-15]|0,x=On(k,N,1)^On(k,N,8)^yd(k,N,7),T=Dn(k,N,1)^Dn(k,N,8)^bd(k,N,7),S=jt[y-2]|0,v=Ht[y-2]|0,A=On(S,v,19)^Lo(S,v,61)^yd(S,v,6),O=Dn(S,v,19)^Bo(S,v,61)^bd(S,v,6),B=sb(T,O,Ht[y-7],Ht[y-16]),C=ib(B,x,A,jt[y-7],jt[y-16]);jt[y]=C|0,Ht[y]=B|0}let{Ah:r,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:h,Fl:g,Gh:m,Gl:b,Hh:w,Hl:I}=this;for(let y=0;y<80;y++){const k=On(u,f,14)^On(u,f,18)^Lo(u,f,41),N=Dn(u,f,14)^Dn(u,f,18)^Bo(u,f,41),x=u&h^~u&m,T=f&g^~f&b,S=ab(I,N,T,fb[y],Ht[y]),v=cb(S,w,k,x,ub[y],jt[y]),A=S|0,O=On(r,o,28)^Lo(r,o,34)^Lo(r,o,39),B=Dn(r,o,28)^Bo(r,o,34)^Bo(r,o,39),C=r&s^r&a^s&a,E=o&i^o&c^i&c;w=m|0,I=b|0,m=h|0,b=g|0,h=u|0,g=f|0,{h:u,l:f}=vt(l|0,d|0,v|0,A|0),l=a|0,d=c|0,a=s|0,c=i|0,s=r|0,i=o|0;const P=rb(A,B,E);r=ob(P,v,O,C),o=P|0}({h:r,l:o}=vt(this.Ah|0,this.Al|0,r|0,o|0)),{h:s,l:i}=vt(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=vt(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=vt(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=vt(this.Eh|0,this.El|0,u|0,f|0),{h,l:g}=vt(this.Fh|0,this.Fl|0,h|0,g|0),{h:m,l:b}=vt(this.Gh|0,this.Gl|0,m|0,b|0),{h:w,l:I}=vt(this.Hh|0,this.Hl|0,w|0,I|0),this.set(r,o,s,i,a,c,l,d,u,f,h,g,m,b,w,I)}roundClean(){lr(jt,Ht)}destroy(){lr(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const lh=ih(()=>new db),pb=ih(()=>new hb);const Jc=BigInt(0),Wa=BigInt(1);function yn(t,e=""){if(typeof t!="boolean"){const n=e&&`"${e}"`;throw new Error(n+"expected boolean, got type="+typeof t)}return t}function ct(t,e,n=""){const r=Ao(t),o=t?.length,s=e!==void 0;if(!r||s&&o!==e){const i=n&&`"${n}" `,a=s?` of length ${e}`:"",c=r?`length=${o}`:`type=${typeof t}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return t}function _o(t){const e=t.toString(16);return e.length&1?"0"+e:e}function dh(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?Jc:BigInt("0x"+t)}function ni(t){return dh(fn(t))}function co(t){return En(t),dh(fn(Uint8Array.from(t).reverse()))}function Qc(t,e){return bs(t.toString(16).padStart(e*2,"0"))}function uh(t,e){return Qc(t,e).reverse()}function ge(t,e,n){let r;if(typeof e=="string")try{r=bs(e)}catch(s){throw new Error(t+" must be hex string or Uint8Array, cause: "+s)}else if(Ao(e))r=Uint8Array.from(e);else throw new Error(t+" must be hex string or Uint8Array");const o=r.length;if(typeof n=="number"&&o!==n)throw new Error(t+" of length "+n+" expected, got "+o);return r}function vd(t){return Uint8Array.from(t)}const Bi=t=>typeof t=="bigint"&&Jc<=t;function gb(t,e,n){return Bi(t)&&Bi(e)&&Bi(n)&&e<=t&&t<n}function Ga(t,e,n,r){if(!gb(e,n,r))throw new Error("expected valid "+t+": "+n+" <= n < "+r+", got "+e)}function fh(t){let e;for(e=0;t>Jc;t>>=Wa,e+=1);return e}const ko=t=>(Wa<<BigInt(t))-Wa;function mb(t,e,n){if(typeof t!="number"||t<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof n!="function")throw new Error("hmacFn must be a function");const r=h=>new Uint8Array(h),o=h=>Uint8Array.of(h);let s=r(t),i=r(t),a=0;const c=()=>{s.fill(1),i.fill(0),a=0},l=(...h)=>n(i,s,...h),d=(h=r(0))=>{i=l(o(0),h),s=l(),h.length!==0&&(i=l(o(1),h),s=l())},u=()=>{if(a++>=1e3)throw new Error("drbg: tried 1000 values");let h=0;const g=[];for(;h<e;){s=l();const m=s.slice();g.push(m),h+=s.length}return gt(...g)};return(h,g)=>{c(),d(h);let m;for(;!(m=g(u()));)d();return c(),m}}function Co(t,e,n={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function r(o,s,i){const a=t[o];if(i&&a===void 0)return;const c=typeof a;if(c!==s||a===null)throw new Error(`param "${o}" is invalid: expected ${s}, got ${c}`)}Object.entries(e).forEach(([o,s])=>r(o,s,!1)),Object.entries(n).forEach(([o,s])=>r(o,s,!0))}function vs(t){const e=new WeakMap;return(n,...r)=>{const o=e.get(n);if(o!==void 0)return o;const s=t(n,...r);return e.set(n,s),s}}const Ke=BigInt(0),Pe=BigInt(1),on=BigInt(2),hh=BigInt(3),ph=BigInt(4),gh=BigInt(5),wb=BigInt(7),mh=BigInt(8),yb=BigInt(9),wh=BigInt(16);function Se(t,e){const n=t%e;return n>=Ke?n:e+n}function pe(t,e,n){let r=t;for(;e-- >Ke;)r*=r,r%=n;return r}function Sd(t,e){if(t===Ke)throw new Error("invert: expected non-zero number");if(e<=Ke)throw new Error("invert: expected positive modulus, got "+e);let n=Se(t,e),r=e,o=Ke,s=Pe;for(;n!==Ke;){const a=r/n,c=r%n,l=o-s*a;r=n,n=c,o=s,s=l}if(r!==Pe)throw new Error("invert: does not exist");return Se(o,e)}function el(t,e,n){if(!t.eql(t.sqr(e),n))throw new Error("Cannot find square root")}function yh(t,e){const n=(t.ORDER+Pe)/ph,r=t.pow(e,n);return el(t,r,e),r}function bb(t,e){const n=(t.ORDER-gh)/mh,r=t.mul(e,on),o=t.pow(r,n),s=t.mul(e,o),i=t.mul(t.mul(s,on),o),a=t.mul(s,t.sub(i,t.ONE));return el(t,a,e),a}function vb(t){const e=An(t),n=bh(t),r=n(e,e.neg(e.ONE)),o=n(e,r),s=n(e,e.neg(r)),i=(t+wb)/wh;return(a,c)=>{let l=a.pow(c,i),d=a.mul(l,r);const u=a.mul(l,o),f=a.mul(l,s),h=a.eql(a.sqr(d),c),g=a.eql(a.sqr(u),c);l=a.cmov(l,d,h),d=a.cmov(f,u,g);const m=a.eql(a.sqr(d),c),b=a.cmov(l,d,m);return el(a,b,c),b}}function bh(t){if(t<hh)throw new Error("sqrt is not defined for small field");let e=t-Pe,n=0;for(;e%on===Ke;)e/=on,n++;let r=on;const o=An(t);for(;xd(o,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return yh;let s=o.pow(r,e);const i=(e+Pe)/on;return function(c,l){if(c.is0(l))return l;if(xd(c,l)!==1)throw new Error("Cannot find square root");let d=n,u=c.mul(c.ONE,s),f=c.pow(l,e),h=c.pow(l,i);for(;!c.eql(f,c.ONE);){if(c.is0(f))return c.ZERO;let g=1,m=c.sqr(f);for(;!c.eql(m,c.ONE);)if(g++,m=c.sqr(m),g===d)throw new Error("Cannot find square root");const b=Pe<<BigInt(d-g-1),w=c.pow(u,b);d=g,u=c.sqr(w),f=c.mul(f,u),h=c.mul(h,w)}return h}}function Sb(t){return t%ph===hh?yh:t%mh===gh?bb:t%wh===yb?vb(t):bh(t)}const xb=(t,e)=>(Se(t,e)&Pe)===Pe,Eb=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Ab(t){const e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},n=Eb.reduce((r,o)=>(r[o]="function",r),e);return Co(t,n),t}function kb(t,e,n){if(n<Ke)throw new Error("invalid exponent, negatives unsupported");if(n===Ke)return t.ONE;if(n===Pe)return e;let r=t.ONE,o=e;for(;n>Ke;)n&Pe&&(r=t.mul(r,o)),o=t.sqr(o),n>>=Pe;return r}function vh(t,e,n=!1){const r=new Array(e.length).fill(n?t.ZERO:void 0),o=e.reduce((i,a,c)=>t.is0(a)?i:(r[c]=i,t.mul(i,a)),t.ONE),s=t.inv(o);return e.reduceRight((i,a,c)=>t.is0(a)?i:(r[c]=t.mul(i,r[c]),t.mul(i,a)),s),r}function xd(t,e){const n=(t.ORDER-Pe)/on,r=t.pow(e,n),o=t.eql(r,t.ONE),s=t.eql(r,t.ZERO),i=t.eql(r,t.neg(t.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function Sh(t,e){e!==void 0&&za(e);const n=e!==void 0?e:t.toString(2).length,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}function An(t,e,n=!1,r={}){if(t<=Ke)throw new Error("invalid field: expected ORDER > 0, got "+t);let o,s,i=!1,a;if(typeof e=="object"&&e!=null){if(r.sqrt||n)throw new Error("cannot specify opts in two arguments");const f=e;f.BITS&&(o=f.BITS),f.sqrt&&(s=f.sqrt),typeof f.isLE=="boolean"&&(n=f.isLE),typeof f.modFromBytes=="boolean"&&(i=f.modFromBytes),a=f.allowedLengths}else typeof e=="number"&&(o=e),r.sqrt&&(s=r.sqrt);const{nBitLength:c,nByteLength:l}=Sh(t,o);if(l>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let d;const u=Object.freeze({ORDER:t,isLE:n,BITS:c,BYTES:l,MASK:ko(c),ZERO:Ke,ONE:Pe,allowedLengths:a,create:f=>Se(f,t),isValid:f=>{if(typeof f!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof f);return Ke<=f&&f<t},is0:f=>f===Ke,isValidNot0:f=>!u.is0(f)&&u.isValid(f),isOdd:f=>(f&Pe)===Pe,neg:f=>Se(-f,t),eql:(f,h)=>f===h,sqr:f=>Se(f*f,t),add:(f,h)=>Se(f+h,t),sub:(f,h)=>Se(f-h,t),mul:(f,h)=>Se(f*h,t),pow:(f,h)=>kb(u,f,h),div:(f,h)=>Se(f*Sd(h,t),t),sqrN:f=>f*f,addN:(f,h)=>f+h,subN:(f,h)=>f-h,mulN:(f,h)=>f*h,inv:f=>Sd(f,t),sqrt:s||(f=>(d||(d=Sb(t)),d(u,f))),toBytes:f=>n?uh(f,l):Qc(f,l),fromBytes:(f,h=!0)=>{if(a){if(!a.includes(f.length)||f.length>l)throw new Error("Field.fromBytes: expected "+a+" bytes, got "+f.length);const m=new Uint8Array(l);m.set(f,n?0:m.length-f.length),f=m}if(f.length!==l)throw new Error("Field.fromBytes: expected "+l+" bytes, got "+f.length);let g=n?co(f):ni(f);if(i&&(g=Se(g,t)),!h&&!u.isValid(g))throw new Error("invalid field element: outside of range 0..ORDER");return g},invertBatch:f=>vh(u,f),cmov:(f,h,g)=>g?h:f});return Object.freeze(u)}function xh(t){if(typeof t!="bigint")throw new Error("field order must be bigint");const e=t.toString(2).length;return Math.ceil(e/8)}function Eh(t){const e=xh(t);return e+Math.ceil(e/2)}function Cb(t,e,n=!1){const r=t.length,o=xh(e),s=Eh(e);if(r<16||r<s||r>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+r);const i=n?co(t):ni(t),a=Se(i,e-Pe)+Pe;return n?uh(a,o):Qc(a,o)}const dr=BigInt(0),sn=BigInt(1);function Ss(t,e){const n=e.negate();return t?n:e}function an(t,e){const n=vh(t.Fp,e.map(r=>r.Z));return e.map((r,o)=>t.fromAffine(r.toAffine(n[o])))}function Ah(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function _i(t,e){Ah(t,e);const n=Math.ceil(e/t)+1,r=2**(t-1),o=2**t,s=ko(t),i=BigInt(t);return{windows:n,windowSize:r,mask:s,maxNumber:o,shiftBy:i}}function Ed(t,e,n){const{windowSize:r,mask:o,maxNumber:s,shiftBy:i}=n;let a=Number(t&o),c=t>>i;a>r&&(a-=s,c+=sn);const l=e*r,d=l+Math.abs(a)-1,u=a===0,f=a<0,h=e%2!==0;return{nextN:c,offset:d,isZero:u,isNeg:f,isNegF:h,offsetF:l}}function Ib(t,e){if(!Array.isArray(t))throw new Error("array expected");t.forEach((n,r)=>{if(!(n instanceof e))throw new Error("invalid point at index "+r)})}function Rb(t,e){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((n,r)=>{if(!e.isValid(n))throw new Error("invalid scalar at index "+r)})}const Oi=new WeakMap,kh=new WeakMap;function Di(t){return kh.get(t)||1}function Ad(t){if(t!==dr)throw new Error("invalid wNAF")}class Ch{constructor(e,n){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=n}_unsafeLadder(e,n,r=this.ZERO){let o=e;for(;n>dr;)n&sn&&(r=r.add(o)),o=o.double(),n>>=sn;return r}precomputeWindow(e,n){const{windows:r,windowSize:o}=_i(n,this.bits),s=[];let i=e,a=i;for(let c=0;c<r;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,n,r){if(!this.Fn.isValid(r))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE;const i=_i(e,this.bits);for(let a=0;a<i.windows;a++){const{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:f,offsetF:h}=Ed(r,a,i);r=c,d?s=s.add(Ss(f,n[h])):o=o.add(Ss(u,n[l]))}return Ad(r),{p:o,f:s}}wNAFUnsafe(e,n,r,o=this.ZERO){const s=_i(e,this.bits);for(let i=0;i<s.windows&&r!==dr;i++){const{nextN:a,offset:c,isZero:l,isNeg:d}=Ed(r,i,s);if(r=a,!l){const u=n[c];o=o.add(d?u.negate():u)}}return Ad(r),o}getPrecomputes(e,n,r){let o=Oi.get(n);return o||(o=this.precomputeWindow(n,e),e!==1&&(typeof r=="function"&&(o=r(o)),Oi.set(n,o))),o}cached(e,n,r){const o=Di(e);return this.wNAF(o,this.getPrecomputes(o,e,r),n)}unsafe(e,n,r,o){const s=Di(e);return s===1?this._unsafeLadder(e,n,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,r),n,o)}createCache(e,n){Ah(n,this.bits),kh.set(e,n),Oi.delete(e)}hasCache(e){return Di(e)!==1}}function Tb(t,e,n,r){let o=e,s=t.ZERO,i=t.ZERO;for(;n>dr||r>dr;)n&sn&&(s=s.add(o)),r&sn&&(i=i.add(o)),o=o.double(),n>>=sn,r>>=sn;return{p1:s,p2:i}}function Ih(t,e,n,r){Ib(n,t),Rb(r,e);const o=n.length,s=r.length;if(o!==s)throw new Error("arrays of points and scalars must have equal length");const i=t.ZERO,a=fh(BigInt(o));let c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);const l=ko(c),d=new Array(Number(l)+1).fill(i),u=Math.floor((e.BITS-1)/c)*c;let f=i;for(let h=u;h>=0;h-=c){d.fill(i);for(let m=0;m<s;m++){const b=r[m],w=Number(b>>BigInt(h)&l);d[w]=d[w].add(n[m])}let g=i;for(let m=d.length-1,b=i;m>0;m--)b=b.add(d[m]),g=g.add(b);if(f=f.add(g),h!==0)for(let m=0;m<c;m++)f=f.double()}return f}function kd(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Ab(e),e}else return An(t,{isLE:n})}function Rh(t,e,n={},r){if(r===void 0&&(r=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(const c of["p","n","h"]){const l=e[c];if(!(typeof l=="bigint"&&l>dr))throw new Error(`CURVE.${c} must be positive bigint`)}const o=kd(e.p,n.Fp,r),s=kd(e.n,n.Fn,r),a=["Gx","Gy","a",t==="weierstrass"?"b":"d"];for(const c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}const Ut=BigInt(0),Ce=BigInt(1),Fi=BigInt(2),Pb=BigInt(8);function Nb(t,e,n,r){const o=t.sqr(n),s=t.sqr(r),i=t.add(t.mul(e.a,o),s),a=t.add(t.ONE,t.mul(e.d,t.mul(o,s)));return t.eql(i,a)}function Lb(t,e={}){const n=Rh("edwards",t,e,e.FpFnLE),{Fp:r,Fn:o}=n;let s=n.CURVE;const{h:i}=s;Co(e,{},{uvRatio:"function"});const a=Fi<<BigInt(o.BYTES*8)-Ce,c=b=>r.create(b),l=e.uvRatio||((b,w)=>{try{return{isValid:!0,value:r.sqrt(r.div(b,w))}}catch{return{isValid:!1,value:Ut}}});if(!Nb(r,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function d(b,w,I=!1){const y=I?Ce:Ut;return Ga("coordinate "+b,w,y,a),w}function u(b){if(!(b instanceof g))throw new Error("ExtendedPoint expected")}const f=vs((b,w)=>{const{X:I,Y:y,Z:k}=b,N=b.is0();w==null&&(w=N?Pb:r.inv(k));const x=c(I*w),T=c(y*w),S=r.mul(k,w);if(N)return{x:Ut,y:Ce};if(S!==Ce)throw new Error("invZ was invalid");return{x,y:T}}),h=vs(b=>{const{a:w,d:I}=s;if(b.is0())throw new Error("bad point: ZERO");const{X:y,Y:k,Z:N,T:x}=b,T=c(y*y),S=c(k*k),v=c(N*N),A=c(v*v),O=c(T*w),B=c(v*c(O+S)),C=c(A+c(I*c(T*S)));if(B!==C)throw new Error("bad point: equation left != right (1)");const E=c(y*k),P=c(N*x);if(E!==P)throw new Error("bad point: equation left != right (2)");return!0});class g{constructor(w,I,y,k){this.X=d("x",w),this.Y=d("y",I),this.Z=d("z",y,!0),this.T=d("t",k),Object.freeze(this)}static CURVE(){return s}static fromAffine(w){if(w instanceof g)throw new Error("extended point not allowed");const{x:I,y}=w||{};return d("x",I),d("y",y),new g(I,y,Ce,c(I*y))}static fromBytes(w,I=!1){const y=r.BYTES,{a:k,d:N}=s;w=vd(ct(w,y,"point")),yn(I,"zip215");const x=vd(w),T=w[y-1];x[y-1]=T&-129;const S=co(x),v=I?a:r.ORDER;Ga("point.y",S,Ut,v);const A=c(S*S),O=c(A-Ce),B=c(N*A-k);let{isValid:C,value:E}=l(O,B);if(!C)throw new Error("bad point: invalid y coordinate");const P=(E&Ce)===Ce,R=(T&128)!==0;if(!I&&E===Ut&&R)throw new Error("bad point: x=0 and x_0=1");return R!==P&&(E=c(-E)),g.fromAffine({x:E,y:S})}static fromHex(w,I=!1){return g.fromBytes(ge("point",w),I)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(w=8,I=!0){return m.createCache(this,w),I||this.multiply(Fi),this}assertValidity(){h(this)}equals(w){u(w);const{X:I,Y:y,Z:k}=this,{X:N,Y:x,Z:T}=w,S=c(I*T),v=c(N*k),A=c(y*T),O=c(x*k);return S===v&&A===O}is0(){return this.equals(g.ZERO)}negate(){return new g(c(-this.X),this.Y,this.Z,c(-this.T))}double(){const{a:w}=s,{X:I,Y:y,Z:k}=this,N=c(I*I),x=c(y*y),T=c(Fi*c(k*k)),S=c(w*N),v=I+y,A=c(c(v*v)-N-x),O=S+x,B=O-T,C=S-x,E=c(A*B),P=c(O*C),R=c(A*C),D=c(B*O);return new g(E,P,D,R)}add(w){u(w);const{a:I,d:y}=s,{X:k,Y:N,Z:x,T}=this,{X:S,Y:v,Z:A,T:O}=w,B=c(k*S),C=c(N*v),E=c(T*y*O),P=c(x*A),R=c((k+N)*(S+v)-B-C),D=P-E,M=P+E,F=c(C-I*B),L=c(R*D),H=c(M*F),$=c(R*F),X=c(D*M);return new g(L,H,X,$)}subtract(w){return this.add(w.negate())}multiply(w){if(!o.isValidNot0(w))throw new Error("invalid scalar: expected 1 <= sc < curve.n");const{p:I,f:y}=m.cached(this,w,k=>an(g,k));return an(g,[I,y])[0]}multiplyUnsafe(w,I=g.ZERO){if(!o.isValid(w))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return w===Ut?g.ZERO:this.is0()||w===Ce?this:m.unsafe(this,w,y=>an(g,y),I)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return m.unsafe(this,s.n).is0()}toAffine(w){return f(this,w)}clearCofactor(){return i===Ce?this:this.multiplyUnsafe(i)}toBytes(){const{x:w,y:I}=this.toAffine(),y=r.toBytes(I);return y[y.length-1]|=w&Ce?128:0,y}toHex(){return fn(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get ex(){return this.X}get ey(){return this.Y}get ez(){return this.Z}get et(){return this.T}static normalizeZ(w){return an(g,w)}static msm(w,I){return Ih(g,o,w,I)}_setWindowSize(w){this.precompute(w)}toRawBytes(){return this.toBytes()}}g.BASE=new g(s.Gx,s.Gy,Ce,c(s.Gx*s.Gy)),g.ZERO=new g(Ut,Ce,Ce,Ut),g.Fp=r,g.Fn=o;const m=new Ch(g,o.BITS);return g.BASE.precompute(8),g}function Bb(t,e,n={}){if(typeof e!="function")throw new Error('"hash" function param is required');Co(n,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});const{prehash:r}=n,{BASE:o,Fp:s,Fn:i}=t,a=n.randomBytes||Zc,c=n.adjustScalarBytes||(v=>v),l=n.domain||((v,A,O)=>{if(yn(O,"phflag"),A.length||O)throw new Error("Contexts/pre-hash are not supported");return v});function d(v){return i.create(co(v))}function u(v){const A=y.secretKey;v=ge("private key",v,A);const O=ge("hashed private key",e(v),2*A),B=c(O.slice(0,A)),C=O.slice(A,2*A),E=d(B);return{head:B,prefix:C,scalar:E}}function f(v){const{head:A,prefix:O,scalar:B}=u(v),C=o.multiply(B),E=C.toBytes();return{head:A,prefix:O,scalar:B,point:C,pointBytes:E}}function h(v){return f(v).pointBytes}function g(v=Uint8Array.of(),...A){const O=gt(...A);return d(e(l(O,ge("context",v),!!r)))}function m(v,A,O={}){v=ge("message",v),r&&(v=r(v));const{prefix:B,scalar:C,pointBytes:E}=f(A),P=g(O.context,B,v),R=o.multiply(P).toBytes(),D=g(O.context,R,E,v),M=i.create(P+D*C);if(!i.isValid(M))throw new Error("sign failed: invalid s");const F=gt(R,i.toBytes(M));return ct(F,y.signature,"result")}const b={zip215:!0};function w(v,A,O,B=b){const{context:C,zip215:E}=B,P=y.signature;v=ge("signature",v,P),A=ge("message",A),O=ge("publicKey",O,y.publicKey),E!==void 0&&yn(E,"zip215"),r&&(A=r(A));const R=P/2,D=v.subarray(0,R),M=co(v.subarray(R,P));let F,L,H;try{F=t.fromBytes(O,E),L=t.fromBytes(D,E),H=o.multiplyUnsafe(M)}catch{return!1}if(!E&&F.isSmallOrder())return!1;const $=g(C,L.toBytes(),F.toBytes(),A);return L.add(F.multiplyUnsafe($)).subtract(H).clearCofactor().is0()}const I=s.BYTES,y={secretKey:I,publicKey:I,signature:2*I,seed:I};function k(v=a(y.seed)){return ct(v,y.seed,"seed")}function N(v){const A=S.randomSecretKey(v);return{secretKey:A,publicKey:h(A)}}function x(v){return Ao(v)&&v.length===i.BYTES}function T(v,A){try{return!!t.fromBytes(v,A)}catch{return!1}}const S={getExtendedPublicKey:f,randomSecretKey:k,isValidSecretKey:x,isValidPublicKey:T,toMontgomery(v){const{y:A}=t.fromBytes(v),O=y.publicKey,B=O===32;if(!B&&O!==57)throw new Error("only defined for 25519 and 448");const C=B?s.div(Ce+A,Ce-A):s.div(A-Ce,A+Ce);return s.toBytes(C)},toMontgomerySecret(v){const A=y.secretKey;ct(v,A);const O=e(v.subarray(0,A));return c(O).subarray(0,A)},randomPrivateKey:k,precompute(v=8,A=t.BASE){return A.precompute(v,!1)}};return Object.freeze({keygen:N,getPublicKey:h,sign:m,verify:w,utils:S,Point:t,lengths:y})}function _b(t){const e={a:t.a,d:t.d,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},n=t.Fp,r=An(e.n,t.nBitLength,!0),o={Fp:n,Fn:r,uvRatio:t.uvRatio},s={randomBytes:t.randomBytes,adjustScalarBytes:t.adjustScalarBytes,domain:t.domain,prehash:t.prehash,mapToCurve:t.mapToCurve};return{CURVE:e,curveOpts:o,hash:t.hash,eddsaOpts:s}}function Ob(t,e){const n=e.Point;return Object.assign({},e,{ExtendedPoint:n,CURVE:t,nBitLength:n.Fn.BITS,nByteLength:n.Fn.BYTES})}function Db(t){const{CURVE:e,curveOpts:n,hash:r,eddsaOpts:o}=_b(t),s=Lb(e,n),i=Bb(s,r,o);return Ob(t,i)}const Fb=BigInt(1),Cd=BigInt(2);BigInt(3);const Mb=BigInt(5),jb=BigInt(8),tl=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),Th={p:tl,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:jb,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function Hb(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),o=BigInt(80),s=tl,a=t*t%s*t%s,c=pe(a,Cd,s)*a%s,l=pe(c,Fb,s)*t%s,d=pe(l,Mb,s)*l%s,u=pe(d,e,s)*d%s,f=pe(u,n,s)*u%s,h=pe(f,r,s)*f%s,g=pe(h,o,s)*h%s,m=pe(g,o,s)*h%s,b=pe(m,e,s)*d%s;return{pow_p_5_8:pe(b,Cd,s)*t%s,b2:a}}function Ub(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Id=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function $b(t,e){const n=tl,r=Se(e*e*e,n),o=Se(r*r*e,n),s=Hb(t*o).pow_p_5_8;let i=Se(t*r*s,n);const a=Se(e*i*i,n),c=i,l=Se(i*Id,n),d=a===t,u=a===Se(-t,n),f=a===Se(-t*Id,n);return d&&(i=c),(u||f)&&(i=l),xb(i,n)&&(i=Se(-i,n)),{isValid:d||u,value:i}}const qb=An(Th.p,{isLE:!0}),Kb={...Th,Fp:qb,hash:pb,adjustScalarBytes:Ub,uvRatio:$b},xs=Db(Kb);class Rd extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}}class Td extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}}class zb extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}}const Bt={get(t=globalThis){const e=t.crypto;if(e?.subtle==null)throw new zb("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}},Es=32,Et=64,Va=32;let Jn;const Ph=(async()=>{try{return await Bt.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function Wb(){const t=xs.utils.randomPrivateKey(),e=xs.getPublicKey(t);return{privateKey:Qb(t,e),publicKey:e}}async function Gb(t,e){let n;t.length===Et?n=t.subarray(0,32):n=t;const r={crv:"Ed25519",kty:"OKP",x:te(t.subarray(32),"base64url"),d:te(n,"base64url"),ext:!0,key_ops:["sign"]},o=await Bt.get().subtle.importKey("jwk",r,{name:"Ed25519"},!0,["sign"]),s=await Bt.get().subtle.sign({name:"Ed25519"},o,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(s,0,s.byteLength)}function Vb(t,e){const n=t.subarray(0,Va);return xs.sign(e instanceof Uint8Array?e:e.subarray(),n)}async function Xb(t,e){return Jn==null&&(Jn=await Ph),Jn?Gb(t,e):Vb(t,e)}async function Yb(t,e,n){if(t.buffer instanceof ArrayBuffer){const r=await Bt.get().subtle.importKey("raw",t.buffer,{name:"Ed25519"},!1,["verify"]);return await Bt.get().subtle.verify({name:"Ed25519"},r,e,n instanceof Uint8Array?n:n.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function Zb(t,e,n){return xs.verify(e,n instanceof Uint8Array?n:n.subarray(),t)}async function Jb(t,e,n){return Jn==null&&(Jn=await Ph),Jn?Yb(t,e,n):Zb(t,e,n)}function Qb(t,e){const n=new Uint8Array(Et);for(let r=0;r<Va;r++)n[r]=t[r],n[Va+r]=e[r];return n}function ri(t){return t==null?!1:typeof t.then=="function"&&typeof t.catch=="function"&&typeof t.finally=="function"}class Nh{type="Ed25519";raw;constructor(e){this.raw=lo(e,Es)}toMultihash(){return xo.digest(ai(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return je.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}verify(e,n,r){r?.signal?.throwIfAborted();const o=Jb(this.raw,n,e);return ri(o)?o.then(s=>(r?.signal?.throwIfAborted(),s)):o}}class Xa{type="Ed25519";raw;publicKey;constructor(e,n){this.raw=lo(e,Et),this.publicKey=new Nh(n)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}sign(e,n){n?.signal?.throwIfAborted();const r=Xb(this.raw,e);return ri(r)?r.then(o=>(n?.signal?.throwIfAborted(),o)):(n?.signal?.throwIfAborted(),r)}}function e0(t){if(t.length>Et){t=lo(t,Et+Es);const r=t.subarray(0,Et),o=t.subarray(Et,t.length);return new Xa(r,o)}t=lo(t,Et);const e=t.subarray(0,Et),n=t.subarray(Es);return new Xa(e,n)}function Lh(t){return t=lo(t,Es),new Nh(t)}async function t0(){const{privateKey:t,publicKey:e}=Wb();return new Xa(t,e)}function lo(t,e){if(t=Uint8Array.from(t??[]),t.length!==e)throw new lt(`Key must be a Uint8Array of length ${e}, got ${t.length}`);return t}const n0=Math.pow(2,7),r0=Math.pow(2,14),o0=Math.pow(2,21),nl=Math.pow(2,28),rl=Math.pow(2,35),ol=Math.pow(2,42),sl=Math.pow(2,49),ie=128,Oe=127;function kn(t){if(t<n0)return 1;if(t<r0)return 2;if(t<o0)return 3;if(t<nl)return 4;if(t<rl)return 5;if(t<ol)return 6;if(t<sl)return 7;if(Number.MAX_SAFE_INTEGER!=null&&t>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Bh(t,e,n=0){switch(kn(t)){case 8:e[n++]=t&255|ie,t/=128;case 7:e[n++]=t&255|ie,t/=128;case 6:e[n++]=t&255|ie,t/=128;case 5:e[n++]=t&255|ie,t/=128;case 4:e[n++]=t&255|ie,t>>>=7;case 3:e[n++]=t&255|ie,t>>>=7;case 2:e[n++]=t&255|ie,t>>>=7;case 1:{e[n++]=t&255,t>>>=7;break}default:throw new Error("unreachable")}return e}function s0(t,e,n=0){switch(kn(t)){case 8:e.set(n++,t&255|ie),t/=128;case 7:e.set(n++,t&255|ie),t/=128;case 6:e.set(n++,t&255|ie),t/=128;case 5:e.set(n++,t&255|ie),t/=128;case 4:e.set(n++,t&255|ie),t>>>=7;case 3:e.set(n++,t&255|ie),t>>>=7;case 2:e.set(n++,t&255|ie),t>>>=7;case 1:{e.set(n++,t&255),t>>>=7;break}default:throw new Error("unreachable")}return e}function _h(t,e){let n=t[e],r=0;if(r+=n&Oe,n<ie||(n=t[e+1],r+=(n&Oe)<<7,n<ie)||(n=t[e+2],r+=(n&Oe)<<14,n<ie)||(n=t[e+3],r+=(n&Oe)<<21,n<ie)||(n=t[e+4],r+=(n&Oe)*nl,n<ie)||(n=t[e+5],r+=(n&Oe)*rl,n<ie)||(n=t[e+6],r+=(n&Oe)*ol,n<ie)||(n=t[e+7],r+=(n&Oe)*sl,n<ie))return r;throw new RangeError("Could not decode varint")}function i0(t,e){let n=t.get(e),r=0;if(r+=n&Oe,n<ie||(n=t.get(e+1),r+=(n&Oe)<<7,n<ie)||(n=t.get(e+2),r+=(n&Oe)<<14,n<ie)||(n=t.get(e+3),r+=(n&Oe)<<21,n<ie)||(n=t.get(e+4),r+=(n&Oe)*nl,n<ie)||(n=t.get(e+5),r+=(n&Oe)*rl,n<ie)||(n=t.get(e+6),r+=(n&Oe)*ol,n<ie)||(n=t.get(e+7),r+=(n&Oe)*sl,n<ie))return r;throw new RangeError("Could not decode varint")}function a0(t,e,n=0){return e==null&&(e=Lt(kn(t))),e instanceof Uint8Array?Bh(t,e,n):s0(t,e,n)}function Oh(t,e=0){return t instanceof Uint8Array?_h(t,e):i0(t,e)}const il=new Float32Array([-0]),Yt=new Uint8Array(il.buffer);function c0(t,e,n){il[0]=t,e[n]=Yt[0],e[n+1]=Yt[1],e[n+2]=Yt[2],e[n+3]=Yt[3]}function l0(t,e){return Yt[0]=t[e],Yt[1]=t[e+1],Yt[2]=t[e+2],Yt[3]=t[e+3],il[0]}const al=new Float64Array([-0]),De=new Uint8Array(al.buffer);function d0(t,e,n){al[0]=t,e[n]=De[0],e[n+1]=De[1],e[n+2]=De[2],e[n+3]=De[3],e[n+4]=De[4],e[n+5]=De[5],e[n+6]=De[6],e[n+7]=De[7]}function u0(t,e){return De[0]=t[e],De[1]=t[e+1],De[2]=t[e+2],De[3]=t[e+3],De[4]=t[e+4],De[5]=t[e+5],De[6]=t[e+6],De[7]=t[e+7],al[0]}const f0=BigInt(Number.MAX_SAFE_INTEGER),h0=BigInt(Number.MIN_SAFE_INTEGER);class Fe{lo;hi;constructor(e,n){this.lo=e|0,this.hi=n|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){const n=~this.lo+1>>>0;let r=~this.hi>>>0;return n===0&&(r=r+1>>>0),-(n+r*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){const n=~this.lo+1>>>0;let r=~this.hi>>>0;return n===0&&(r=r+1>>>0),-(BigInt(n)+(BigInt(r)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){const e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){const e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){const e=this.lo,n=(this.lo>>>28|this.hi<<4)>>>0,r=this.hi>>>24;return r===0?n===0?e<16384?e<128?1:2:e<2097152?3:4:n<16384?n<128?5:6:n<2097152?7:8:r<128?9:10}static fromBigInt(e){if(e===0n)return hn;if(e<f0&&e>h0)return this.fromNumber(Number(e));const n=e<0n;n&&(e=-e);let r=e>>32n,o=e-(r<<32n);return n&&(r=~r|0n,o=~o|0n,++o>Pd&&(o=0n,++r>Pd&&(r=0n))),new Fe(Number(o),Number(r))}static fromNumber(e){if(e===0)return hn;const n=e<0;n&&(e=-e);let r=e>>>0,o=(e-r)/4294967296>>>0;return n&&(o=~o>>>0,r=~r>>>0,++r>4294967295&&(r=0,++o>4294967295&&(o=0))),new Fe(r,o)}static from(e){return typeof e=="number"?Fe.fromNumber(e):typeof e=="bigint"?Fe.fromBigInt(e):typeof e=="string"?Fe.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new Fe(e.low>>>0,e.high>>>0):hn}}const hn=new Fe(0,0);hn.toBigInt=function(){return 0n};hn.zzEncode=hn.zzDecode=function(){return this};hn.length=function(){return 1};const Pd=4294967296n;function p0(t){let e=0,n=0;for(let r=0;r<t.length;++r)n=t.charCodeAt(r),n<128?e+=1:n<2048?e+=2:(n&64512)===55296&&(t.charCodeAt(r+1)&64512)===56320?(++r,e+=4):e+=3;return e}function g0(t,e,n){if(n-e<1)return"";let o;const s=[];let i=0,a;for(;e<n;)a=t[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|t[e++]&63:a>239&&a<365?(a=((a&7)<<18|(t[e++]&63)<<12|(t[e++]&63)<<6|t[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(t[e++]&63)<<6|t[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function Dh(t,e,n){const r=n;let o,s;for(let i=0;i<t.length;++i)o=t.charCodeAt(i),o<128?e[n++]=o:o<2048?(e[n++]=o>>6|192,e[n++]=o&63|128):(o&64512)===55296&&((s=t.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[n++]=o>>18|240,e[n++]=o>>12&63|128,e[n++]=o>>6&63|128,e[n++]=o&63|128):(e[n++]=o>>12|224,e[n++]=o>>6&63|128,e[n++]=o&63|128);return n-r}function ot(t,e){return RangeError(`index out of range: ${t.pos} + ${e??1} > ${t.len}`)}function Oo(t,e){return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0}class m0{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,ot(this,10);return e}int32(){return this.uint32()|0}sint32(){const e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw ot(this,4);return Oo(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw ot(this,4);return Oo(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw ot(this,4);const e=l0(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw ot(this,4);const e=u0(this.buf,this.pos);return this.pos+=8,e}bytes(){const e=this.uint32(),n=this.pos,r=this.pos+e;if(r>this.len)throw ot(this,e);return this.pos+=e,n===r?new Uint8Array(0):this.buf.subarray(n,r)}string(){const e=this.bytes();return g0(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw ot(this,e);this.pos+=e}else do if(this.pos>=this.len)throw ot(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){const e=new Fe(0,0);let n=0;if(this.len-this.pos>4){for(;n<4;++n)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<n*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;n=0}else{for(;n<3;++n){if(this.pos>=this.len)throw ot(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<n*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<n*7)>>>0,e}if(this.len-this.pos>4){for(;n<5;++n)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<n*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;n<5;++n){if(this.pos>=this.len)throw ot(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<n*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw ot(this,8);const e=Oo(this.buf,this.pos+=4),n=Oo(this.buf,this.pos+=4);return new Fe(e,n)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){const e=_h(this.buf,this.pos);return this.pos+=kn(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}}function w0(t){return new m0(t instanceof Uint8Array?t:t.subarray())}function oi(t,e,n){const r=w0(t);return e.decode(r,void 0,n)}function y0(t){let r,o=8192;return function(i){if(i<1||i>4096)return Lt(i);o+i>8192&&(r=Lt(8192),o=0);const a=r.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}class Wr{fn;len;next;val;constructor(e,n,r){this.fn=e,this.len=n,this.next=void 0,this.val=r}}function Mi(){}class b0{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}}const v0=y0();function S0(t){return globalThis.Buffer!=null?Lt(t):v0(t)}class Ya{len;head;tail;states;constructor(){this.len=0,this.head=new Wr(Mi,0,0),this.tail=this.head,this.states=null}_push(e,n,r){return this.tail=this.tail.next=new Wr(e,n,r),this.len+=n,this}uint32(e){return this.len+=(this.tail=this.tail.next=new E0((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Do,10,Fe.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){const n=Fe.fromBigInt(e);return this._push(Do,n.length(),n)}uint64Number(e){return this._push(Bh,kn(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){const n=Fe.fromBigInt(e).zzEncode();return this._push(Do,n.length(),n)}sint64Number(e){const n=Fe.fromNumber(e).zzEncode();return this._push(Do,n.length(),n)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(ji,1,e?1:0)}fixed32(e){return this._push(Pr,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){const n=Fe.fromBigInt(e);return this._push(Pr,4,n.lo)._push(Pr,4,n.hi)}fixed64Number(e){const n=Fe.fromNumber(e);return this._push(Pr,4,n.lo)._push(Pr,4,n.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(c0,4,e)}double(e){return this._push(d0,8,e)}bytes(e){const n=e.length>>>0;return n===0?this._push(ji,1,0):this.uint32(n)._push(A0,n,e)}string(e){const n=p0(e);return n!==0?this.uint32(n)._push(Dh,n,e):this._push(ji,1,0)}fork(){return this.states=new b0(this),this.head=this.tail=new Wr(Mi,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new Wr(Mi,0,0),this.len=0),this}ldelim(){const e=this.head,n=this.tail,r=this.len;return this.reset().uint32(r),r!==0&&(this.tail.next=e.next,this.tail=n,this.len+=r),this}finish(){let e=this.head.next;const n=S0(this.len);let r=0;for(;e!=null;)e.fn(e.val,n,r),r+=e.len,e=e.next;return n}}function ji(t,e,n){e[n]=t&255}function x0(t,e,n){for(;t>127;)e[n++]=t&127|128,t>>>=7;e[n]=t}class E0 extends Wr{next;constructor(e,n){super(x0,e,n),this.next=void 0}}function Do(t,e,n){for(;t.hi!==0;)e[n++]=t.lo&127|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)e[n++]=t.lo&127|128,t.lo=t.lo>>>7;e[n++]=t.lo}function Pr(t,e,n){e[n]=t&255,e[n+1]=t>>>8&255,e[n+2]=t>>>16&255,e[n+3]=t>>>24}function A0(t,e,n){e.set(t,n)}globalThis.Buffer!=null&&(Ya.prototype.bytes=function(t){const e=t.length>>>0;return this.uint32(e),e>0&&this._push(k0,e,t),this},Ya.prototype.string=function(t){const e=globalThis.Buffer.byteLength(t);return this.uint32(e),e>0&&this._push(C0,e,t),this});function k0(t,e,n){e.set(t,n)}function C0(t,e,n){t.length<40?Dh(t,e,n):e.utf8Write!=null?e.utf8Write(t,n):e.set(ve(t),n)}function I0(){return new Ya}function si(t,e){const n=I0();return e.encode(t,n,{lengthDelimited:!1}),n.finish()}var As;(function(t){t[t.VARINT=0]="VARINT",t[t.BIT64=1]="BIT64",t[t.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",t[t.START_GROUP=3]="START_GROUP",t[t.END_GROUP=4]="END_GROUP",t[t.BIT32=5]="BIT32"})(As||(As={}));function Fh(t,e,n,r){return{name:t,type:e,encode:n,decode:r}}function R0(t){function e(o){if(t[o.toString()]==null)throw new Error("Invalid enum value");return t[o]}const n=function(s,i){const a=e(s);i.int32(a)},r=function(s){const i=s.int32();return e(i)};return Fh("enum",As.VARINT,n,r)}function ii(t,e){return Fh("message",As.LENGTH_DELIMITED,t,e)}class Nd extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"}var fe;(function(t){t.RSA="RSA",t.Ed25519="Ed25519",t.secp256k1="secp256k1",t.ECDSA="ECDSA"})(fe||(fe={}));var Za;(function(t){t[t.RSA=0]="RSA",t[t.Ed25519=1]="Ed25519",t[t.secp256k1=2]="secp256k1",t[t.ECDSA=3]="ECDSA"})(Za||(Za={}));(function(t){t.codec=()=>R0(Za)})(fe||(fe={}));var bn;(function(t){let e;t.codec=()=>(e==null&&(e=ii((n,r,o={})=>{o.lengthDelimited!==!1&&r.fork(),n.Type!=null&&(r.uint32(8),fe.codec().encode(n.Type,r)),n.Data!=null&&(r.uint32(18),r.bytes(n.Data)),o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{s.Type=fe.codec().decode(n);break}case 2:{s.Data=n.bytes();break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>si(n,t.codec()),t.decode=(n,r)=>oi(n,t.codec(),r)})(bn||(bn={}));var ks;(function(t){let e;t.codec=()=>(e==null&&(e=ii((n,r,o={})=>{o.lengthDelimited!==!1&&r.fork(),n.Type!=null&&(r.uint32(8),fe.codec().encode(n.Type,r)),n.Data!=null&&(r.uint32(18),r.bytes(n.Data)),o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{s.Type=fe.codec().decode(n);break}case 2:{s.Data=n.bytes();break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>si(n,t.codec()),t.decode=(n,r)=>oi(n,t.codec(),r)})(ks||(ks={}));const Mh=lh;class jh{type="RSA";jwk;_raw;_multihash;constructor(e,n){this.jwk=e,this._multihash=n}get raw(){return this._raw==null&&(this._raw=Uh(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return ue.createV1(114,this._multihash)}toString(){return je.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}verify(e,n,r){return q0(this.jwk,n,e,r)}}class T0{type="RSA";jwk;_raw;publicKey;constructor(e,n){this.jwk=e,this.publicKey=n}get raw(){return this._raw==null&&(this._raw=_0(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}sign(e,n){return $0(this.jwk,e,n)}}const P0=8192,Hh=18,N0=1062,L0=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function B0(t){return{n:te(t[1],"base64url"),e:te(t[2],"base64url"),d:te(t[3],"base64url"),p:te(t[4],"base64url"),q:te(t[5],"base64url"),dp:te(t[6],"base64url"),dq:te(t[7],"base64url"),qi:te(t[8],"base64url"),kty:"RSA"}}function _0(t){if(t.n==null||t.e==null||t.d==null||t.p==null||t.q==null||t.dp==null||t.dq==null||t.qi==null)throw new lt("JWK was missing components");return Tt([Ve(Uint8Array.from([0])),Ve(ve(t.n,"base64url")),Ve(ve(t.e,"base64url")),Ve(ve(t.d,"base64url")),Ve(ve(t.p,"base64url")),Ve(ve(t.q,"base64url")),Ve(ve(t.dp,"base64url")),Ve(ve(t.dq,"base64url")),Ve(ve(t.qi,"base64url"))]).subarray()}function O0(t){const e=yr(t[1],{offset:0});return{kty:"RSA",n:te(e[0],"base64url"),e:te(e[1],"base64url")}}function Uh(t){if(t.n==null||t.e==null)throw new lt("JWK was missing components");return Tt([L0,Xc(Tt([Ve(ve(t.n,"base64url")),Ve(ve(t.e,"base64url"))]))]).subarray()}function D0(t){const e=yr(t);return F0(e)}function F0(t){const e=B0(t);return H0(e)}function M0(t,e){if(t.byteLength>=N0)throw new Hf("Key size is too large");const n=yr(t,{offset:0});return j0(n,t,e)}function j0(t,e,n){const r=O0(t);if(n==null){const o=Mh(bn.encode({Type:fe.RSA,Data:e}));n=So(Hh,o)}return new jh(r,n)}function H0(t){if(K0(t)>P0)throw new lt("Key size is too large");const e=U0(t),n=Mh(bn.encode({Type:fe.RSA,Data:Uh(e.publicKey)})),r=So(Hh,n);return new T0(e.privateKey,new jh(e.publicKey,r))}function U0(t){if(t==null)throw new lt("Missing key parameter");return{privateKey:t,publicKey:{kty:t.kty,n:t.n,e:t.e}}}async function $0(t,e,n){const r=await Bt.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);n?.signal?.throwIfAborted();const o=await Bt.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},r,e instanceof Uint8Array?e:e.subarray());return n?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function q0(t,e,n,r){const o=await Bt.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);r?.signal?.throwIfAborted();const s=await Bt.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,n instanceof Uint8Array?n:n.subarray());return r?.signal?.throwIfAborted(),s}function K0(t){if(t.kty!=="RSA")throw new lt("invalid key type");if(t.n==null)throw new lt("invalid key modulus");return ve(t.n,"base64url").length*8}class $h extends sh{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,rh(e);const r=Yc(n);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const o=this.blockLen,s=new Uint8Array(o);s.set(r.length>o?e.create().update(r).digest():r);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),lr(s)}update(e){return ys(this),this.iHash.update(e),this}digestInto(e){ys(this),En(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const qh=(t,e,n)=>new $h(t,e).update(n).digest();qh.create=(t,e)=>new $h(t,e);const Ld=(t,e)=>(t+(t>=0?e:-e)/Kh)/e;function z0(t,e,n){const[[r,o],[s,i]]=e,a=Ld(i*t,n),c=Ld(-o*t,n);let l=t-a*r-c*s,d=-a*o-c*i;const u=l<Ct,f=d<Ct;u&&(l=-l),f&&(d=-d);const h=ko(Math.ceil(fh(n)/2))+Qn;if(l<Ct||l>=h||d<Ct||d>=h)throw new Error("splitScalar (endomorphism): failed, k="+t);return{k1neg:u,k1:l,k2neg:f,k2:d}}function Ja(t){if(!["compact","recovered","der"].includes(t))throw new Error('Signature format must be "compact", "recovered", or "der"');return t}function Hi(t,e){const n={};for(let r of Object.keys(e))n[r]=t[r]===void 0?e[r]:t[r];return yn(n.lowS,"lowS"),yn(n.prehash,"prehash"),n.format!==void 0&&Ja(n.format),n}class W0 extends Error{constructor(e=""){super(e)}}const At={Err:W0,_tlv:{encode:(t,e)=>{const{Err:n}=At;if(t<0||t>256)throw new n("tlv.encode: wrong tag");if(e.length&1)throw new n("tlv.encode: unpadded data");const r=e.length/2,o=_o(r);if(o.length/2&128)throw new n("tlv.encode: long form length too big");const s=r>127?_o(o.length/2|128):"";return _o(t)+s+o+e},decode(t,e){const{Err:n}=At;let r=0;if(t<0||t>256)throw new n("tlv.encode: wrong tag");if(e.length<2||e[r++]!==t)throw new n("tlv.decode: wrong tlv");const o=e[r++],s=!!(o&128);let i=0;if(!s)i=o;else{const c=o&127;if(!c)throw new n("tlv.decode(long): indefinite length not supported");if(c>4)throw new n("tlv.decode(long): byte length is too big");const l=e.subarray(r,r+c);if(l.length!==c)throw new n("tlv.decode: length bytes not complete");if(l[0]===0)throw new n("tlv.decode(long): zero leftmost byte");for(const d of l)i=i<<8|d;if(r+=c,i<128)throw new n("tlv.decode(long): not minimal encoding")}const a=e.subarray(r,r+i);if(a.length!==i)throw new n("tlv.decode: wrong value length");return{v:a,l:e.subarray(r+i)}}},_int:{encode(t){const{Err:e}=At;if(t<Ct)throw new e("integer: negative integers are not allowed");let n=_o(t);if(Number.parseInt(n[0],16)&8&&(n="00"+n),n.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return n},decode(t){const{Err:e}=At;if(t[0]&128)throw new e("invalid signature integer: negative");if(t[0]===0&&!(t[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return ni(t)}},toSig(t){const{Err:e,_int:n,_tlv:r}=At,o=ge("signature",t),{v:s,l:i}=r.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");const{v:a,l:c}=r.decode(2,s),{v:l,l:d}=r.decode(2,c);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:n.decode(a),s:n.decode(l)}},hexFromSig(t){const{_tlv:e,_int:n}=At,r=e.encode(2,n.encode(t.r)),o=e.encode(2,n.encode(t.s)),s=r+o;return e.encode(48,s)}},Ct=BigInt(0),Qn=BigInt(1),Kh=BigInt(2),Fo=BigInt(3),G0=BigInt(4);function zn(t,e){const{BYTES:n}=t;let r;if(typeof e=="bigint")r=e;else{let o=ge("private key",e);try{r=t.fromBytes(o)}catch{throw new Error(`invalid private key: expected ui8a of size ${n}, got ${typeof e}`)}}if(!t.isValidNot0(r))throw new Error("invalid private key: out of range [1..N-1]");return r}function V0(t,e={}){const n=Rh("weierstrass",t,e),{Fp:r,Fn:o}=n;let s=n.CURVE;const{h:i,n:a}=s;Co(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});const{endo:c}=e;if(c&&(!r.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');const l=Wh(r,o);function d(){if(!r.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(B,C,E){const{x:P,y:R}=C.toAffine(),D=r.toBytes(P);if(yn(E,"isCompressed"),E){d();const M=!r.isOdd(R);return gt(zh(M),D)}else return gt(Uint8Array.of(4),D,r.toBytes(R))}function f(B){ct(B,void 0,"Point");const{publicKey:C,publicKeyUncompressed:E}=l,P=B.length,R=B[0],D=B.subarray(1);if(P===C&&(R===2||R===3)){const M=r.fromBytes(D);if(!r.isValid(M))throw new Error("bad point: is not on curve, wrong x");const F=m(M);let L;try{L=r.sqrt(F)}catch(X){const Y=X instanceof Error?": "+X.message:"";throw new Error("bad point: is not on curve, sqrt error"+Y)}d();const H=r.isOdd(L);return(R&1)===1!==H&&(L=r.neg(L)),{x:M,y:L}}else if(P===E&&R===4){const M=r.BYTES,F=r.fromBytes(D.subarray(0,M)),L=r.fromBytes(D.subarray(M,M*2));if(!b(F,L))throw new Error("bad point: is not on curve");return{x:F,y:L}}else throw new Error(`bad point: got length ${P}, expected compressed=${C} or uncompressed=${E}`)}const h=e.toBytes||u,g=e.fromBytes||f;function m(B){const C=r.sqr(B),E=r.mul(C,B);return r.add(r.add(E,r.mul(B,s.a)),s.b)}function b(B,C){const E=r.sqr(C),P=m(B);return r.eql(E,P)}if(!b(s.Gx,s.Gy))throw new Error("bad curve params: generator point");const w=r.mul(r.pow(s.a,Fo),G0),I=r.mul(r.sqr(s.b),BigInt(27));if(r.is0(r.add(w,I)))throw new Error("bad curve params: a or b");function y(B,C,E=!1){if(!r.isValid(C)||E&&r.is0(C))throw new Error(`bad point coordinate ${B}`);return C}function k(B){if(!(B instanceof v))throw new Error("ProjectivePoint expected")}function N(B){if(!c||!c.basises)throw new Error("no endo");return z0(B,c.basises,o.ORDER)}const x=vs((B,C)=>{const{X:E,Y:P,Z:R}=B;if(r.eql(R,r.ONE))return{x:E,y:P};const D=B.is0();C==null&&(C=D?r.ONE:r.inv(R));const M=r.mul(E,C),F=r.mul(P,C),L=r.mul(R,C);if(D)return{x:r.ZERO,y:r.ZERO};if(!r.eql(L,r.ONE))throw new Error("invZ was invalid");return{x:M,y:F}}),T=vs(B=>{if(B.is0()){if(e.allowInfinityPoint&&!r.is0(B.Y))return;throw new Error("bad point: ZERO")}const{x:C,y:E}=B.toAffine();if(!r.isValid(C)||!r.isValid(E))throw new Error("bad point: x or y not field elements");if(!b(C,E))throw new Error("bad point: equation left != right");if(!B.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function S(B,C,E,P,R){return E=new v(r.mul(E.X,B),E.Y,E.Z),C=Ss(P,C),E=Ss(R,E),C.add(E)}class v{constructor(C,E,P){this.X=y("x",C),this.Y=y("y",E,!0),this.Z=y("z",P),Object.freeze(this)}static CURVE(){return s}static fromAffine(C){const{x:E,y:P}=C||{};if(!C||!r.isValid(E)||!r.isValid(P))throw new Error("invalid affine point");if(C instanceof v)throw new Error("projective point not allowed");return r.is0(E)&&r.is0(P)?v.ZERO:new v(E,P,r.ONE)}static fromBytes(C){const E=v.fromAffine(g(ct(C,void 0,"point")));return E.assertValidity(),E}static fromHex(C){return v.fromBytes(ge("pointHex",C))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(C=8,E=!0){return O.createCache(this,C),E||this.multiply(Fo),this}assertValidity(){T(this)}hasEvenY(){const{y:C}=this.toAffine();if(!r.isOdd)throw new Error("Field doesn't support isOdd");return!r.isOdd(C)}equals(C){k(C);const{X:E,Y:P,Z:R}=this,{X:D,Y:M,Z:F}=C,L=r.eql(r.mul(E,F),r.mul(D,R)),H=r.eql(r.mul(P,F),r.mul(M,R));return L&&H}negate(){return new v(this.X,r.neg(this.Y),this.Z)}double(){const{a:C,b:E}=s,P=r.mul(E,Fo),{X:R,Y:D,Z:M}=this;let F=r.ZERO,L=r.ZERO,H=r.ZERO,$=r.mul(R,R),X=r.mul(D,D),Y=r.mul(M,M),U=r.mul(R,D);return U=r.add(U,U),H=r.mul(R,M),H=r.add(H,H),F=r.mul(C,H),L=r.mul(P,Y),L=r.add(F,L),F=r.sub(X,L),L=r.add(X,L),L=r.mul(F,L),F=r.mul(U,F),H=r.mul(P,H),Y=r.mul(C,Y),U=r.sub($,Y),U=r.mul(C,U),U=r.add(U,H),H=r.add($,$),$=r.add(H,$),$=r.add($,Y),$=r.mul($,U),L=r.add(L,$),Y=r.mul(D,M),Y=r.add(Y,Y),$=r.mul(Y,U),F=r.sub(F,$),H=r.mul(Y,X),H=r.add(H,H),H=r.add(H,H),new v(F,L,H)}add(C){k(C);const{X:E,Y:P,Z:R}=this,{X:D,Y:M,Z:F}=C;let L=r.ZERO,H=r.ZERO,$=r.ZERO;const X=s.a,Y=r.mul(s.b,Fo);let U=r.mul(E,D),K=r.mul(P,M),q=r.mul(R,F),W=r.add(E,P),z=r.add(D,M);W=r.mul(W,z),z=r.add(U,K),W=r.sub(W,z),z=r.add(E,R);let V=r.add(D,F);return z=r.mul(z,V),V=r.add(U,q),z=r.sub(z,V),V=r.add(P,R),L=r.add(M,F),V=r.mul(V,L),L=r.add(K,q),V=r.sub(V,L),$=r.mul(X,z),L=r.mul(Y,q),$=r.add(L,$),L=r.sub(K,$),$=r.add(K,$),H=r.mul(L,$),K=r.add(U,U),K=r.add(K,U),q=r.mul(X,q),z=r.mul(Y,z),K=r.add(K,q),q=r.sub(U,q),q=r.mul(X,q),z=r.add(z,q),U=r.mul(K,z),H=r.add(H,U),U=r.mul(V,z),L=r.mul(W,L),L=r.sub(L,U),U=r.mul(W,K),$=r.mul(V,$),$=r.add($,U),new v(L,H,$)}subtract(C){return this.add(C.negate())}is0(){return this.equals(v.ZERO)}multiply(C){const{endo:E}=e;if(!o.isValidNot0(C))throw new Error("invalid scalar: out of range");let P,R;const D=M=>O.cached(this,M,F=>an(v,F));if(E){const{k1neg:M,k1:F,k2neg:L,k2:H}=N(C),{p:$,f:X}=D(F),{p:Y,f:U}=D(H);R=X.add(U),P=S(E.beta,$,Y,M,L)}else{const{p:M,f:F}=D(C);P=M,R=F}return an(v,[P,R])[0]}multiplyUnsafe(C){const{endo:E}=e,P=this;if(!o.isValid(C))throw new Error("invalid scalar: out of range");if(C===Ct||P.is0())return v.ZERO;if(C===Qn)return P;if(O.hasCache(this))return this.multiply(C);if(E){const{k1neg:R,k1:D,k2neg:M,k2:F}=N(C),{p1:L,p2:H}=Tb(v,P,D,F);return S(E.beta,L,H,R,M)}else return O.unsafe(P,C)}multiplyAndAddUnsafe(C,E,P){const R=this.multiplyUnsafe(E).add(C.multiplyUnsafe(P));return R.is0()?void 0:R}toAffine(C){return x(this,C)}isTorsionFree(){const{isTorsionFree:C}=e;return i===Qn?!0:C?C(v,this):O.unsafe(this,a).is0()}clearCofactor(){const{clearCofactor:C}=e;return i===Qn?this:C?C(v,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(C=!0){return yn(C,"isCompressed"),this.assertValidity(),h(v,this,C)}toHex(C=!0){return fn(this.toBytes(C))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(C=!0){return this.toBytes(C)}_setWindowSize(C){this.precompute(C)}static normalizeZ(C){return an(v,C)}static msm(C,E){return Ih(v,o,C,E)}static fromPrivateKey(C){return v.BASE.multiply(zn(o,C))}}v.BASE=new v(s.Gx,s.Gy,r.ONE),v.ZERO=new v(r.ZERO,r.ONE,r.ZERO),v.Fp=r,v.Fn=o;const A=o.BITS,O=new Ch(v,e.endo?Math.ceil(A/2):A);return v.BASE.precompute(8),v}function zh(t){return Uint8Array.of(t?2:3)}function Wh(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function X0(t,e={}){const{Fn:n}=t,r=e.randomBytes||Zc,o=Object.assign(Wh(t.Fp,n),{seed:Eh(n.ORDER)});function s(h){try{return!!zn(n,h)}catch{return!1}}function i(h,g){const{publicKey:m,publicKeyUncompressed:b}=o;try{const w=h.length;return g===!0&&w!==m||g===!1&&w!==b?!1:!!t.fromBytes(h)}catch{return!1}}function a(h=r(o.seed)){return Cb(ct(h,o.seed,"seed"),n.ORDER)}function c(h,g=!0){return t.BASE.multiply(zn(n,h)).toBytes(g)}function l(h){const g=a(h);return{secretKey:g,publicKey:c(g)}}function d(h){if(typeof h=="bigint")return!1;if(h instanceof t)return!0;const{secretKey:g,publicKey:m,publicKeyUncompressed:b}=o;if(n.allowedLengths||g===m)return;const w=ge("key",h).length;return w===m||w===b}function u(h,g,m=!0){if(d(h)===!0)throw new Error("first arg must be private key");if(d(g)===!1)throw new Error("second arg must be public key");const b=zn(n,h);return t.fromHex(g).multiply(b).toBytes(m)}return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:l,Point:t,utils:{isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a,isValidPrivateKey:s,randomPrivateKey:a,normPrivateKeyToScalar:h=>zn(n,h),precompute(h=8,g=t.BASE){return g.precompute(h,!1)}},lengths:o})}function Y0(t,e,n={}){rh(e),Co(n,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});const r=n.randomBytes||Zc,o=n.hmac||((E,...P)=>qh(e,E,gt(...P))),{Fp:s,Fn:i}=t,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h}=X0(t,n),g={prehash:!1,lowS:typeof n.lowS=="boolean"?n.lowS:!1,format:void 0,extraEntropy:!1},m="compact";function b(E){const P=a>>Qn;return E>P}function w(E,P){if(!i.isValidNot0(P))throw new Error(`invalid signature ${E}: out of range 1..Point.Fn.ORDER`);return P}function I(E,P){Ja(P);const R=h.signature,D=P==="compact"?R:P==="recovered"?R+1:void 0;return ct(E,D,`${P} signature`)}class y{constructor(P,R,D){this.r=w("r",P),this.s=w("s",R),D!=null&&(this.recovery=D),Object.freeze(this)}static fromBytes(P,R=m){I(P,R);let D;if(R==="der"){const{r:H,s:$}=At.toSig(ct(P));return new y(H,$)}R==="recovered"&&(D=P[0],R="compact",P=P.subarray(1));const M=i.BYTES,F=P.subarray(0,M),L=P.subarray(M,M*2);return new y(i.fromBytes(F),i.fromBytes(L),D)}static fromHex(P,R){return this.fromBytes(bs(P),R)}addRecoveryBit(P){return new y(this.r,this.s,P)}recoverPublicKey(P){const R=s.ORDER,{r:D,s:M,recovery:F}=this;if(F==null||![0,1,2,3].includes(F))throw new Error("recovery id invalid");if(a*Kh<R&&F>1)throw new Error("recovery id is ambiguous for h>1 curve");const H=F===2||F===3?D+a:D;if(!s.isValid(H))throw new Error("recovery id 2 or 3 invalid");const $=s.toBytes(H),X=t.fromBytes(gt(zh((F&1)===0),$)),Y=i.inv(H),U=N(ge("msgHash",P)),K=i.create(-U*Y),q=i.create(M*Y),W=t.BASE.multiplyUnsafe(K).add(X.multiplyUnsafe(q));if(W.is0())throw new Error("point at infinify");return W.assertValidity(),W}hasHighS(){return b(this.s)}toBytes(P=m){if(Ja(P),P==="der")return bs(At.hexFromSig(this));const R=i.toBytes(this.r),D=i.toBytes(this.s);if(P==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return gt(Uint8Array.of(this.recovery),R,D)}return gt(R,D)}toHex(P){return fn(this.toBytes(P))}assertValidity(){}static fromCompact(P){return y.fromBytes(ge("sig",P),"compact")}static fromDER(P){return y.fromBytes(ge("sig",P),"der")}normalizeS(){return this.hasHighS()?new y(this.r,i.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return fn(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return fn(this.toBytes("compact"))}}const k=n.bits2int||function(P){if(P.length>8192)throw new Error("input is too large");const R=ni(P),D=P.length*8-c;return D>0?R>>BigInt(D):R},N=n.bits2int_modN||function(P){return i.create(k(P))},x=ko(c);function T(E){return Ga("num < 2^"+c,E,Ct,x),i.toBytes(E)}function S(E,P){return ct(E,void 0,"message"),P?ct(e(E),void 0,"prehashed message"):E}function v(E,P,R){if(["recovered","canonical"].some(K=>K in R))throw new Error("sign() legacy options not supported");const{lowS:D,prehash:M,extraEntropy:F}=Hi(R,g);E=S(E,M);const L=N(E),H=zn(i,P),$=[T(H),T(L)];if(F!=null&&F!==!1){const K=F===!0?r(h.secretKey):F;$.push(ge("extraEntropy",K))}const X=gt(...$),Y=L;function U(K){const q=k(K);if(!i.isValidNot0(q))return;const W=i.inv(q),z=t.BASE.multiply(q).toAffine(),V=i.create(z.x);if(V===Ct)return;const J=i.create(W*i.create(Y+V*H));if(J===Ct)return;let oe=(z.x===V?0:2)|Number(z.y&Qn),ne=J;return D&&b(J)&&(ne=i.neg(J),oe^=1),new y(V,ne,oe)}return{seed:X,k2sig:U}}function A(E,P,R={}){E=ge("message",E);const{seed:D,k2sig:M}=v(E,P,R);return mb(e.outputLen,i.BYTES,o)(D,M)}function O(E){let P;const R=typeof E=="string"||Ao(E),D=!R&&E!==null&&typeof E=="object"&&typeof E.r=="bigint"&&typeof E.s=="bigint";if(!R&&!D)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(D)P=new y(E.r,E.s);else if(R){try{P=y.fromBytes(ge("sig",E),"der")}catch(M){if(!(M instanceof At.Err))throw M}if(!P)try{P=y.fromBytes(ge("sig",E),"compact")}catch{return!1}}return P||!1}function B(E,P,R,D={}){const{lowS:M,prehash:F,format:L}=Hi(D,g);if(R=ge("publicKey",R),P=S(ge("message",P),F),"strict"in D)throw new Error("options.strict was renamed to lowS");const H=L===void 0?O(E):y.fromBytes(ge("sig",E),L);if(H===!1)return!1;try{const $=t.fromBytes(R);if(M&&H.hasHighS())return!1;const{r:X,s:Y}=H,U=N(P),K=i.inv(Y),q=i.create(U*K),W=i.create(X*K),z=t.BASE.multiplyUnsafe(q).add($.multiplyUnsafe(W));return z.is0()?!1:i.create(z.x)===X}catch{return!1}}function C(E,P,R={}){const{prehash:D}=Hi(R,g);return P=S(P,D),y.fromBytes(E,"recovered").recoverPublicKey(P).toBytes()}return Object.freeze({keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h,Point:t,sign:A,verify:B,recoverPublicKey:C,Signature:y,hash:e})}function Z0(t){const e={a:t.a,b:t.b,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},n=t.Fp;let r=t.allowedPrivateKeyLengths?Array.from(new Set(t.allowedPrivateKeyLengths.map(i=>Math.ceil(i/2)))):void 0;const o=An(e.n,{BITS:t.nBitLength,allowedLengths:r,modFromBytes:t.wrapPrivateKey}),s={Fp:n,Fn:o,allowInfinityPoint:t.allowInfinityPoint,endo:t.endo,isTorsionFree:t.isTorsionFree,clearCofactor:t.clearCofactor,fromBytes:t.fromBytes,toBytes:t.toBytes};return{CURVE:e,curveOpts:s}}function J0(t){const{CURVE:e,curveOpts:n}=Z0(t),r={hmac:t.hmac,randomBytes:t.randomBytes,lowS:t.lowS,bits2int:t.bits2int,bits2int_modN:t.bits2int_modN};return{CURVE:e,curveOpts:n,hash:t.hash,ecdsaOpts:r}}function Q0(t,e){const n=e.Point;return Object.assign({},e,{ProjectivePoint:n,CURVE:Object.assign({},t,Sh(n.Fn.ORDER,n.Fn.BITS))})}function ev(t){const{CURVE:e,curveOpts:n,hash:r,ecdsaOpts:o}=J0(t),s=V0(e,n),i=Y0(s,r,o);return Q0(t,i)}function tv(t,e){const n=r=>ev({...t,hash:r});return{...n(e),create:n}}const cl={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},nv={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},Bd=BigInt(2);function rv(t){const e=cl.p,n=BigInt(3),r=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=t*t*t%e,d=l*l*t%e,u=pe(d,n,e)*d%e,f=pe(u,n,e)*d%e,h=pe(f,Bd,e)*l%e,g=pe(h,o,e)*h%e,m=pe(g,s,e)*g%e,b=pe(m,a,e)*m%e,w=pe(b,c,e)*b%e,I=pe(w,a,e)*m%e,y=pe(I,n,e)*d%e,k=pe(y,i,e)*g%e,N=pe(k,r,e)*l%e,x=pe(N,Bd,e);if(!Qa.eql(Qa.sqr(x),t))throw new Error("Cannot find square root");return x}const Qa=An(cl.p,{sqrt:rv}),Jt=tv({...cl,Fp:Qa,lowS:!0,endo:nv},lh);function ov(t,e,n){const r=Vc.digest(e instanceof Uint8Array?e:e.subarray());if(ri(r))return r.then(({digest:o})=>(n?.signal?.throwIfAborted(),Jt.sign(o,t).toDERRawBytes())).catch(o=>{throw o.name==="AbortError"?o:new Rd(String(o))});try{return Jt.sign(r.digest,t).toDERRawBytes()}catch(o){throw new Rd(String(o))}}function sv(t,e,n,r){const o=Vc.digest(n instanceof Uint8Array?n:n.subarray());if(ri(o))return o.then(({digest:s})=>(r?.signal?.throwIfAborted(),Jt.verify(e,s,t))).catch(s=>{throw s.name==="AbortError"?s:new Td(String(s))});try{return r?.signal?.throwIfAborted(),Jt.verify(e,o.digest,t)}catch(s){throw new Td(String(s))}}class Gh{type="secp256k1";raw;_key;constructor(e){this._key=dv(e),this.raw=cv(this._key)}toMultihash(){return xo.digest(ai(this))}toCID(){return ue.createV1(114,this.toMultihash())}toString(){return je.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}verify(e,n,r){return sv(this._key,n,e,r)}}class iv{type="secp256k1";raw;publicKey;constructor(e,n){this.raw=lv(e),this.publicKey=new Gh(n??uv(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:dt(this.raw,e.raw)}sign(e,n){return ov(this.raw,e,n)}}function av(t){return new iv(t)}function Vh(t){return new Gh(t)}function cv(t){return Jt.ProjectivePoint.fromHex(t).toRawBytes(!0)}function lv(t){try{return Jt.getPublicKey(t,!0),t}catch(e){throw new Uf(String(e))}}function dv(t){try{return Jt.ProjectivePoint.fromHex(t),t}catch(e){throw new Hf(String(e))}}function uv(t){try{return Jt.getPublicKey(t,!0)}catch(e){throw new Uf(String(e))}}async function fv(t,e){return t0()}function ec(t,e){const{Type:n,Data:r}=bn.decode(t),o=r??new Uint8Array;switch(n){case fe.RSA:return M0(o,e);case fe.Ed25519:return Lh(o);case fe.secp256k1:return Vh(o);case fe.ECDSA:return th(o);default:throw new Js}}function hv(t){const{Type:e,Data:n}=bn.decode(t.digest),r=n??new Uint8Array;switch(e){case fe.Ed25519:return Lh(r);case fe.secp256k1:return Vh(r);case fe.ECDSA:return th(r);default:throw new Js}}function ai(t){return bn.encode({Type:fe[t.type],Data:t.raw})}function pv(t){const e=ks.decode(t),n=e.Data??new Uint8Array;switch(e.Type){case fe.RSA:return D0(n);case fe.Ed25519:return e0(n);case fe.secp256k1:return av(n);case fe.ECDSA:return Ky(n);default:throw new Js}}function gv(t){return ks.encode({Type:fe[t.type],Data:t.raw})}const Xh=Symbol.for("nodejs.util.inspect.custom"),mv=114;class ll{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[$f]=!0;toString(){return this.string==null&&(this.string=je.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return ue.createV1(mv,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return dt(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return dt(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[Xh](){return`PeerId(${this.toString()})`}}class Yh extends ll{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}}class Zh extends ll{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}}class Jh extends ll{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}}const wv=2336;class Qh{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=xo.digest(ve(this.url))}[Xh](){return`PeerId(${this.url})`}[$f]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return ue.createV1(wv,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=te(e)),e.toString()===this.toString())}}const yv=114,_d=2336;function bv(t,e){let n;if(t.charAt(0)==="1"||t.charAt(0)==="Q")n=zf(je.decode(`z${t}`));else{if(t.startsWith("k51qzi5uqu5")||t.startsWith("kzwfwjn5ji4")||t.startsWith("k2k4r8")||t.startsWith("bafz"))return vv(ue.parse(t));throw new lt('Please pass a multibase decoder for strings that do not start with "1" or "Q"')}return ep(n)}function ur(t){if(t.type==="Ed25519")return new Zh({multihash:t.toCID().multihash,publicKey:t});if(t.type==="secp256k1")return new Jh({multihash:t.toCID().multihash,publicKey:t});if(t.type==="RSA")return new Yh({multihash:t.toCID().multihash,publicKey:t});throw new Js}function ep(t){if(xv(t))return new Yh({multihash:t});if(Sv(t))try{const e=hv(t);if(e.type==="Ed25519")return new Zh({multihash:t,publicKey:e});if(e.type==="secp256k1")return new Jh({multihash:t,publicKey:e})}catch{const n=te(t.digest);return new Qh(new URL(n))}throw new nw("Supplied PeerID Multihash is invalid")}function vv(t){if(t?.multihash==null||t.version==null||t.version===1&&t.code!==yv&&t.code!==_d)throw new tw("Supplied PeerID CID is invalid");if(t.code===_d){const e=te(t.multihash.digest);return new Qh(new URL(e))}return ep(t.multihash)}function Sv(t){return t.code===xo.code}function xv(t){return t.code===Vc.code}class tp extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}}class Ev extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}}class Nr extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}}class Od extends Error{static name="StreamBufferError";constructor(e="The stream buffer was full"){super(e),this.name="StreamBufferError"}}class Av extends Event{data;constructor(e,n){super("message",n),this.data=e}}class dl extends Event{error;local;constructor(e,n,r){super("close",r),this.error=n,this.local=e}}class kv extends dl{constructor(e,n){super(!0,e,n)}}class Cv extends dl{constructor(e,n){super(!1,e,n)}}const Iv=t=>t/2**32|0,Rv=t=>t>>>0;function Tv(t,e,n,r){const o=Iv(n),s=Rv(n);t.setUint32(e,r?s:o,r),t.setUint32(e+4,r?o:s,r)}function tc(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const nc=t=>t?`"${t}" `:"";function _t(t,e=""){if(typeof t!="number")throw new TypeError(nc(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(nc(e)+"expected integer >= 0, got "+t);return t}function Ot(t,e,n=""){if(tc(t)&&(e===void 0||t.length===e))return t;e!==void 0&&_t(e,"length");const r=tc(t),o=e!==void 0?` of length ${e}`:"",s=r?`length=${t.length}`:`type=${typeof t}`,i=nc(n)+"expected Uint8Array"+o+", got "+s;throw r?new RangeError(i):new TypeError(i)}function ul(t){if(typeof t!="function"||typeof t.create!="function")throw new TypeError("expected hash wrapped by utils.createHasher");if(_t(t.outputLen),_t(t.blockLen),t.outputLen<1||t.blockLen<1)throw new Error("hash blockLen / outputLen must be >= 1")}const Pv=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError((e==="object"?"":`"${e}" `)+"expected object, got type="+typeof t)},Dd=(t,e)=>{Pv(t,e);const n=Object.getPrototypeOf(t);if(n!==Object.prototype&&n!==null)throw new TypeError(`"${e}" expected plain object`);if(Object.hasOwn(t,"__proto__"))throw new TypeError(`"${e}.__proto__" is not allowed`)};function Cs(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function np(t,e){Ot(t,void 0,"output");const n=e.outputLen;if(!(t.length>=n))throw new RangeError('"output" expected length >= '+n)}function CR(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function pn(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Ui(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function ht(t,e){return t<<32-e|t>>>e}function IR(t,e){return t<<e|t>>>32-e>>>0}const Nv=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Lv(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function Bv(t){for(let e=0;e<t.length;e++)t[e]=Lv(t[e]);return t}const RR=Nv?t=>t:Bv,rp=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",_v=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function fl(t){if(Ot(t),rp)return t.toHex();let e="";for(let n=0;n<t.length;n++)e+=_v[t[n]];return e}function Fd(t){return t>=48&&t<=57?t-48:t>=65&&t<=70?t-55:t>=97&&t<=102?t-87:void 0}function op(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);if(rp)try{return Uint8Array.fromHex(t)}catch(o){throw o instanceof SyntaxError?new RangeError(o.message):o}const e=t.length,n=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=Fd(t.charCodeAt(s)),a=Fd(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new RangeError('hex string expected, got non-hex character "'+c+'" at index '+s)}r[o]=i*16+a}return r}function Ov(t){const e=globalThis;if(typeof e.scheduler?.yield=="function"){const n=e.scheduler.yield();return t&&n.catch(t),n}return new Promise(n=>e.setTimeout(n,0))}async function TR(t,e,n,r){if(_t(t,"iters"),_t(e,"tick"),typeof n!="function")throw new TypeError("callback must be a function");let o=Date.now();for(let s=0;s<t;s++){n(s);const i=Date.now()-o;i>=0&&i<e||(await Ov(r),o=Date.now())}}function Dv(t){if(typeof t!="string")throw new TypeError("string expected");const e=new TextEncoder().encode(t);try{return new Uint8Array(e)}finally{pn(e)}}function PR(t,e=""){return typeof t=="string"?Dv(t):Ot(t,void 0,e)}function Fv(t,e,n="opts"){return Dd(t,"defaults"),e!==void 0&&Dd(e,n),Object.assign(Object.create(null),t,e)}function Mv(t,e={}){if(typeof t!="function")throw new TypeError('"hashCons" expected function, got type='+typeof t);e=Fv({},e,"info");const n=(o,s)=>t(s).update(o).digest(),r=t(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.canXOF=r.canXOF,n.create=o=>t(o),Object.assign(n,e),Object.freeze(n)}function jv(t=32){_t(t,"bytesLength");const e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(t>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${t}`);return e.getRandomValues(new Uint8Array(t))}const Hv=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function Uv(t,e,n){return t&e^~t&n}function $v(t,e,n){return t&e^t&n^e&n}class qv{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,n,r,o){this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Ui(this.buffer)}update(e){Cs(this),Ot(e);const{view:n,buffer:r,blockLen:o}=this,s=e.length;let i=!1;for(let a=0;a<s;){const c=Math.min(o-this.pos,s-a);if(c===o){const l=Ui(e);for(;o<=s-a;a+=o)this.process(l,a);i=!0;continue}r.set(a===0&&c===s?e:e.subarray(a,a+c),this.pos),this.pos+=c,a+=c,this.pos===o&&(this.process(n,0),this.pos=0,i=!0)}return this.length+=e.length,i&&this.roundClean(),this}digestInto(e){Cs(this),np(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,n.fill(0,i),this.padOffset>o-i&&(this.process(r,0),n.fill(0)),Tv(r,o-8,this.length*8,s),this.process(r,0),this.roundClean();const a=e===n?r:Ui(e),c=this.outputLen,l=c/4,d=this.get();if(c%4||l>d.length)throw new Error("invalid outputLen");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneIntoMeta(e){const{buffer:n,length:r,finished:o,destroyed:s,pos:i}=this;return e.destroyed=s,e.finished=o,e.length=r,e.pos=i,i&&e.buffer.set(n),e}clone(){return this._cloneInto()}}const Kv=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),zv=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),$t=new Uint32Array(64);class Wv extends qv{A=0;B=0;C=0;D=0;E=0;F=0;G=0;H=0;constructor(e,n){super(64,e,8,!1),this.A=n[0]|0,this.B=n[1]|0,this.C=n[2]|0,this.D=n[3]|0,this.E=n[4]|0,this.F=n[5]|0,this.G=n[6]|0,this.H=n[7]|0}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:c}=this;return[e,n,r,o,s,i,a,c]}set(e,n,r,o,s,i,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}_cloneInto(e){return(e||=new this.constructor).set(...this.get()),this._cloneIntoMeta(e)}process(e,n){for(let u=0;u<16;u++,n+=4)$t[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const f=$t[u-15],h=$t[u-2],g=ht(f,7)^ht(f,18)^f>>>3,m=ht(h,17)^ht(h,19)^h>>>10;$t[u]=m+$t[u-7]+g+$t[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=ht(a,6)^ht(a,11)^ht(a,25),h=d+f+Uv(a,c,l)+zv[u]+$t[u]|0,m=(ht(r,2)^ht(r,13)^ht(r,22))+$v(r,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=r,r=h+m|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,c,l,d)}roundClean(){pn($t)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),pn(this.buffer)}}class Gv extends Wv{constructor(){super(32,Kv)}}const $i=Mv(()=>new Gv,Hv(1));function sp(t,e,n=()=>{}){if(!Array.isArray(t))throw new TypeError(`"${e}" expected array, got type=${typeof t}`);for(let r=0;r<t.length;r++)n(t[r],`${e}[${r}]`);return t}const er=(t,e,n)=>Ot(t,e,n),ip=_t;function tr(t,e="object"){if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(e==="object"?"expected valid options object":`"${e}" expected object, got type=${typeof t}`);return t}function Qr(t,e){if(typeof t!="function")throw new TypeError(`"${e}" is invalid: expected function, got ${typeof t}`);return t}const Vv=fl,Xv=t=>op(t),ap=tc,cp=t=>jv(t),Is=BigInt(0),Md=BigInt(1),Yv=t=>t?`"${t}" `:"";function ci(t,e=""){if(typeof t!="boolean")throw new TypeError(Yv(e)+"expected boolean, got type="+typeof t);return t}function Zv(t){if(typeof t=="bigint"){if(!gn(t))throw new RangeError("positive bigint expected, got "+t)}else ip(t);return t}function rc(t,e=""){if(typeof t!="number"){const n=e&&`"${e}" `;throw new TypeError(n+"expected number, got type="+typeof t)}if(!Number.isSafeInteger(t)){const n=e&&`"${e}" `;throw new RangeError(n+"expected safe integer, got "+t)}}function lp(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);return t===""?Is:BigInt("0x"+t)}function dp(t){return lp(fl(t))}function Rs(t){return lp(fl(uo(Ot(t)).reverse()))}function up(t,e){if(_t(e),e===0)throw new Error("zero output length is invalid");t=Zv(t);const n=e*2,r=t.toString(16);if(r.length>n)throw new RangeError("number is too large");return op(r.padStart(n,"0"))}function fp(t,e){return up(t,e).reverse()}function uo(t){return Uint8Array.from(er(t))}function gn(t){return typeof t=="bigint"&&Is<=t}function hp(t,e,n){return gn(t)&&gn(e)&&gn(n)&&e<=t&&t<n}function eo(t,e,n,r){if(!hp(e,n,r))throw new RangeError("expected valid "+t+": "+n+" <= n < "+r+", got "+e)}function Jv(t){if(t<Is)throw new Error("expected non-negative bigint, got "+t);return t===Is?0:t.toString(2).length}const Qv=t=>(rc(t,"n"),(Md<<BigInt(t))-Md);function Ts(t,e={},n={},r="object"){tr(t,r),tr(e,"fields"),tr(n,"optFields");function o(i,a,c){const l=r==="object"?`param "${String(i)}"`:`"${r}.${String(i)}"`,d=t[i];if(!Object.hasOwn(t,i)&&(c?d!==void 0:a!=="function"))throw new TypeError(`${l} is invalid: expected own property`);if(c&&d===void 0)return;const u=typeof d;if(u!==a||d===null)throw new TypeError(`${l} is invalid: expected ${a}, got ${u}`)}const s=(i,a)=>Object.entries(i).forEach(([c,l])=>o(c,l,a));s(e,!1),s(n,!0)}const Re=BigInt(0),de=BigInt(1),cn=BigInt(2),pp=BigInt(3),hl=BigInt(4),gp=BigInt(5),eS=BigInt(7),mp=BigInt(8),tS=BigInt(9),nS=BigInt(15),wp=BigInt(16),rS=BigInt("0x10000000000000000");function le(t,e){if(e<=Re)throw new Error("mod: expected positive modulus, got "+e);const n=t%e;return n>=Re?n:e+n}function oS(t,e,n){if(n<=de)throw new Error("pow: expected modulus > 1, got "+n);if(typeof e!="bigint")throw new TypeError("invalid exponent: expected bigint, got "+typeof e);if(e<Re)throw new Error("invalid exponent, negatives unsupported");if(e===Re)return de;if(e===de)return t;let r=t%n;if(r<Re&&(r+=n),e<rS){let a=de;for(;e>Re;)e&de&&(a=a*r%n),r=r*r%n,e>>=de;return a}const o=[];for(;e>Re;)o.push(Number(e&nS)),e>>=hl;const s=new Array(16);s[0]=de,s[1]=r;for(let a=2;a<16;a++)s[a]=s[a-1]*r%n;let i=s[o[o.length-1]];for(let a=o.length-2;a>=0;a--){i=i*i%n,i=i*i%n,i=i*i%n,i=i*i%n;const c=o[a];c!==0&&(i=i*s[c]%n)}return i}function st(t,e,n){if(n<=de)throw new Error("pow2: expected modulus > 1, got "+n);if(e<Re)throw new Error("pow2: expected non-negative exponent, got "+e);let r=t;for(;e-- >Re;)r*=r,r%=n;return r}function jd(t,e){if(t===Re)throw new Error("invert: expected non-zero number");if(e<=de)throw new Error("invert: expected modulus > 1, got "+e);let n=le(t,e),r=e,o=Re,s=de;for(;n!==Re;){const a=r/n,c=r-n*a,l=o-s*a;r=n,n=c,o=s,s=l}if(r!==de)throw new Error("invert: does not exist");return le(o,e)}function pl(t,e,n){const r=t;if(!r.eql(r.sqr(e),n))throw new Error("Cannot find square root")}function gl(t,e){if((t&de)===Re)throw new Error(e+": expected odd modulus, got "+t)}function yp(t,e){const n=t,r=(n.ORDER+de)/hl,o=n.pow(e,r);return pl(n,o,e),o}function sS(t,e){const n=t,r=(n.ORDER-gp)/mp,o=n.mul(e,cn),s=n.pow(o,r),i=n.mul(e,s),a=n.mul(n.mul(i,cn),s),c=n.mul(i,n.sub(a,n.ONE));return pl(n,c,e),c}function iS(t){const e=ml(t),n=bp(t),r=n(e,e.neg(e.ONE)),o=n(e,r),s=n(e,e.neg(r)),i=(t+eS)/wp;return((a,c)=>{const l=a;let d=l.pow(c,i),u=l.mul(d,r);const f=l.mul(d,o),h=l.mul(d,s),g=l.eql(l.sqr(u),c),m=l.eql(l.sqr(f),c);d=l.cmov(d,u,g),u=l.cmov(h,f,m);const b=l.eql(l.sqr(u),c),w=l.cmov(d,u,b);return pl(l,w,c),w})}function bp(t){if(t<pp)throw new Error("sqrt is not defined for small field");gl(t,"tonelliShanks");let e=t-de,n=0;for(;e%cn===Re;)e/=cn,n++;let r=cn;const o=ml(t);for(;Ps(o,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return yp;let s=o.pow(r,e);const i=(e+de)/cn;return function(c,l){const d=c;if(d.is0(l))return l;if(Ps(d,l)!==1)throw new Error("Cannot find square root");let u=n,f=d.mul(d.ONE,s),h=d.pow(l,e),g=d.pow(l,i);for(;!d.eql(h,d.ONE);){if(d.is0(h))throw new Error("Cannot find square root: probably non-prime P");let m=1,b=d.sqr(h);for(;!d.eql(b,d.ONE);)if(m++,b=d.sqr(b),m===u)throw new Error("Cannot find square root");const w=de<<BigInt(u-m-1),I=d.pow(f,w);u=m,f=d.sqr(I),h=d.mul(h,f),g=d.mul(g,I)}return g}}function aS(t){return gl(t,"Fp.sqrt"),t%hl===pp?yp:t%mp===gp?sS:t%wp===tS?iS(t):bp(t)}const cS=(t,e)=>(le(t,e)&de)===de,lS=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function fo(t){if(tr(t,"field"),typeof t.ORDER!="bigint")throw new TypeError('param "ORDER" is invalid: expected bigint, got '+typeof t.ORDER);rc(t.BYTES,"BYTES"),rc(t.BITS,"BITS");for(const e of lS)Qr(t[e],"field."+e);if(t.BYTES<1||t.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(t.ORDER<=de)throw new Error("invalid field: expected ORDER > 1, got "+t.ORDER);return t}function vp(t,e,n=!1){fo(t),sp(e,"nums"),ci(n,"passZero");const r=t,o=new Array(e.length).fill(n?r.ZERO:void 0),s=e.reduce((a,c,l)=>r.is0(c)?a:(o[l]=a,r.mul(a,c)),r.ONE),i=r.inv(s);return e.reduceRight((a,c,l)=>r.is0(c)?a:(o[l]=r.mul(a,o[l]),r.mul(a,c)),i),o}function Ps(t,e){fo(t);const n=t;gl(n.ORDER,"FpLegendre");const r=(n.ORDER-de)/cn,o=n.pow(e,r),s=n.eql(o,n.ONE),i=n.eql(o,n.ZERO),a=n.eql(o,n.neg(n.ONE));if(!s&&!i&&!a)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function dS(t,e){if(e!==void 0&&ip(e),t<=Re)throw new Error("invalid n length: expected positive n, got "+t);if(e!==void 0&&e<1)throw new Error("invalid n length: expected positive bit length, got "+e);const n=Jv(t);if(e!==void 0&&e<n)throw new Error(`invalid n length: expected nBitLength (${e}) >= bitLen(n) (${n})`);const r=e!==void 0?e:n,o=Math.ceil(r/8);return{nBitLength:r,nByteLength:o}}const Hd=new WeakMap;class Ud{ORDER;BITS;BYTES;isLE;ZERO=Re;ONE=de;_lengths;_mod;constructor(e,n={}){if(e<=de)throw new Error("invalid field: expected ORDER > 1, got "+e);let r;this.isLE=!1,n!=null&&typeof n=="object"&&(typeof n.BITS=="number"&&(r=n.BITS),typeof n.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:n.sqrt,enumerable:!0}),typeof n.isLE=="boolean"&&(this.isLE=n.isLE),n.allowedLengths&&(this._lengths=Object.freeze(n.allowedLengths.slice())),typeof n.modFromBytes=="boolean"&&(this._mod=n.modFromBytes));const{nBitLength:o,nByteLength:s}=dS(e,r);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,Object.freeze(this)}create(e){return le(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return Re<=e&&e<this.ORDER}is0(e){return e===Re}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&de)===de}neg(e){return le(-e,this.ORDER)}eql(e,n){return e===n}sqr(e){return le(e*e,this.ORDER)}add(e,n){return le(e+n,this.ORDER)}sub(e,n){return le(e-n,this.ORDER)}mul(e,n){return le(e*n,this.ORDER)}pow(e,n){return oS(e,n,this.ORDER)}div(e,n){return le(e*jd(n,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,n){return e+n}subN(e,n){return e-n}mulN(e,n){return e*n}inv(e){return jd(e,this.ORDER)}sqrt(e){let n=Hd.get(this);return n||Hd.set(this,n=aS(this.ORDER)),n(this,e)}toBytes(e){return this.isLE?fp(e,this.BYTES):up(e,this.BYTES)}fromBytes(e,n=!1){er(e);const{_lengths:r,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(r){if(e.length<1||!r.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+e.length);const l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?Rs(e):dp(e);if(a&&(c=le(c,i)),!n&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return vp(this,e,!0)}cmov(e,n,r){return ci(r,"condition"),r?n:e}}function ml(t,e={}){return Object.freeze(Ud.prototype),new Ud(t,e)}const wl=BigInt(0),ho=BigInt(1),uS=BigInt(4),qi=16,$d=128,fS=5,qd=2**31;function yl(t){const e=t;if(typeof e!="function")throw new TypeError('"Point" expected constructor, got type='+typeof t);Qr(e.fromAffine,"Point.fromAffine"),Qr(e.fromBytes,"Point.fromBytes"),Qr(e.fromHex,"Point.fromHex"),tr(e.BASE,"Point.BASE"),tr(e.ZERO,"Point.ZERO"),fo(e.Fp),fo(e.Fn)}function hS(t,e){yl(t),Sp(e,t);const n=vp(t.Fp,e.map(r=>r.Z));return e.map((r,o)=>t.fromAffine(r.toAffine(n[o])))}function pS(t,e,n=1){if(!Number.isSafeInteger(t)||t<n||t>e)throw new Error("invalid window size, expected ["+n+".."+e+"], got W="+t)}function gS(t,e){const n=t*(4*e+128);if(n>qd)throw new Error("invalid window size: table would need ~"+Math.ceil(n/2**20)+" MiB, max "+qd/2**20+" MiB")}function mS(t,e){if(t!==void 0){Qr(t,"randomBytes");try{const n=t(e);if(!ap(n)||n.length!==e)return}catch{return}return t}}function Sp(t,e){sp(t,"points"),t.forEach((n,r)=>{if(!(n instanceof e))throw new Error("invalid point at index "+r)})}function wS(t,e,n){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((r,o)=>{if(!(n===void 0?e.isValid(r):gn(r)&&r<n))throw new Error("invalid scalar at index "+o)})}const xp=new WeakMap;function Ki(t){return xp.get(t)||1}function yS(t,e){const n=t.double(),r=[t];for(let o=1;o<e;o++)r.push(r[o-1].add(n));return r}function bS(t,e){const n=2**e,r=n/2,o=BigInt(n-1),s=[];for(;t>wl;){let i=0;t&ho&&(i=Number(t&o),i>=r&&(i-=n),t-=BigInt(i)),s.push(i),t>>=ho}return s}function vS(t,e,n){const r=2**e,o=r/2,s=BigInt(r-1),i=BigInt(e),a=[];for(let c=0;c<n;c++){let l=Number(t&s);t>>=i,l>o&&(l-=r,t+=ho),a.push(l)}if(t!==wl)throw new Error("invalid wnaf");return a}function SS(t,e,n){let r=0;for(const s of n)r=Math.max(r,s.length);let o=t;for(let s=r-1;s>=0;s--){s!==r-1&&(o=o.double());for(let i=0;i<n.length;i++){const a=n[i][s];if(a){const c=e[i][Math.abs(a)-1>>1];o=o.add(a<0?c.negate():c)}}}return o}class xS{Point;BASE;ZERO;randomBytes;wnafPrecomputes=new WeakMap;baseCanBeBlinded;bits;constructor(e,n){yl(e),this.randomBytes=mS(n,qi),this.Point=e,this.BASE=e.BASE,this.ZERO=e.ZERO,this.bits=e.Fn.BITS}buildWnafTable(e,n,r){const o=Math.ceil(r/n)+1,s=2**(n-1),i=[];let a=e;for(let c=0;c<o;c++){let l=a;for(let d=0;d<s;d++)i.push(l),l=l.add(a);a=i[i.length-1].double()}return{W:n,bits:r,windows:o,comp:i}}wnafCachedCT(e,n){const{W:r,windows:o,comp:s}=e,i=2**(r-1),a=vS(n,r,o);let c=this.ZERO,l=this.BASE;for(let d=0;d<o;d++){const u=a[d],f=d*i,h=Math.abs(u)-1;let g=s[f];for(let b=1;b<i;b++)g=b===h?s[f+b]:g;const m=g.negate();u===0?l=l.add(s[f]):c=c.add(u<0?m:g)}return{p:c,f:l}}getWnafPrecomputes(e,n,r,o){let s=this.wnafPrecomputes.get(n),i=s?.find(a=>a.W===e&&a.bits===r);return i||(i=this.buildWnafTable(n,e,r),typeof o=="function"&&(i={...i,comp:o(i.comp)}),s||(s=[],this.wnafPrecomputes.set(n,s)),s.push(i)),i}assertPoint(e){if(!(e instanceof this.Point))throw new TypeError('"point" expected Point instance, got type='+typeof e)}validateMulInput(e,n){if(this.assertPoint(e),!hp(n,ho,this.Point.Fn.ORDER))throw new Error("invalid scalar")}runCT(e,n,r,o){const s=Ki(e);return s===1?this.fixedWindowCT(e,n,r):this.wnafCachedCT(this.getWnafPrecomputes(s,e,r,o),n)}mulCT(e,n,r){return this.validateMulInput(e,n),this.runCT(e,n,this.bits,r)}mulCTBlinded(e,n,r){if(this.validateMulInput(e,n),this.randomBytes===void 0)throw new Error("randomBytes is required for scalar blinding");const o=this.Point.Fn.BITS+$d,s=this.randomBytes(qi);if(!ap(s)||s.length!==qi)throw new Error("randomBytes returned invalid byte array");s[0]=s[0]&63|128;const i=n+dp(s)*this.Point.Fn.ORDER;return this.runCT(e,i,o,r)}fixedWindowCT(e,n,r){const o=fS,s=1<<o,i=Qv(o),a=new Array(s);a[0]=this.ZERO;for(let d=1;d<s;d++)a[d]=a[d-1].add(e);const c=Math.ceil(r/o);let l=this.ZERO;for(let d=c-1;d>=0;d--){if(d!==c-1)for(let h=0;h<o;h++)l=l.double();const u=Number(n>>BigInt(d*o)&i);let f=a[0];for(let h=1;h<s;h++)f=h===u?a[h]:f;l=l.add(f)}return{p:l,f:l}}shouldBlind(e,n){return this.randomBytes===void 0?!1:n===ho?!0:e!==this.BASE?!1:(this.baseCanBeBlinded===void 0&&(this.baseCanBeBlinded=this.mulUnsafe(this.BASE,this.Point.Fn.ORDER).is0()),this.baseCanBeBlinded)}mulSecret(e,n,r,o){return this.shouldBlind(e,r)?this.mulCTBlinded(e,n,o):this.mulCT(e,n,o)}mulUnsafe(e,n,r){if(this.assertPoint(e),!gn(n))throw new Error("invalid scalar");const o=Ki(e);if(o===1||n>=this.Point.Fn.ORDER)return ES(this.Point,[e],[n],!0);const s=this.getWnafPrecomputes(o,e,this.bits,r);return this.wnafCachedCT(s,n).p}setWindowSize(e,n){this.assertPoint(e),pS(n,this.bits);const r=Math.ceil((this.bits+$d)/n)+1;gS(r*2**(n-1),this.Point.Fp.BYTES),xp.set(e,n),this.wnafPrecomputes.delete(e)}hasWindowSize(e){return Ki(e)!==1}}function ES(t,e,n,r=!1){if(yl(t),Sp(e,t),ci(r,"allowOversized"),wS(n,t.Fn,r?t.Fn.ORDER**uS:void 0),e.length!==n.length)throw new Error("arrays of points and scalars must have equal length");const o=e.map(i=>yS(i,4)),s=n.map(i=>bS(i,4));return SS(t.ZERO,o,s)}function Kd(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return fo(e),e}else return ml(t,{isLE:n})}function AS(t,e,n={},r){if(r===void 0&&(r=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);Ts(n);for(const c of["p","n","h"]){const l=e[c];if(!(gn(l)&&l!==wl))throw new Error(`CURVE.${c} must be positive bigint`)}const o=Kd(e.p,n.Fp,r),s=Kd(e.n,n.Fn,r),a=["Gx","Gy","a","d"];for(const c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function kS(t,e){return function(r){const o=t(r);return{secretKey:o,publicKey:e(o)}}}const Mo=BigInt(0),jo=BigInt(1),Ho=BigInt(2),CS=BigInt(4),zd=BigInt(8);function IS(t,e,n,r){const o=t.sqr(n),s=t.sqr(r),i=t.add(t.mul(e.a,o),s),a=t.add(t.ONE,t.mul(e.d,t.mul(o,s)));return t.eql(i,a)}function RS(t,e={}){Ts(e,{},{},"extraOpts");const n=e,r=AS("edwards",t,n,n.FpFnLE),{Fp:o,Fn:s}=r;let i=r.CURVE;const{h:a}=i;if(Ps(o,i.a)!==1)throw new Error("edwards: CURVE.a must be a square in Fp for complete addition formulas");if(Ps(o,i.d)!==-1)throw new Error("edwards: CURVE.d must be a non-square in Fp for complete addition formulas");Ts(n,{},{uvRatio:"function",randomBytes:"function"});const c=n.randomBytes===void 0?cp:n.randomBytes,l=Ho<<BigInt(o.BYTES*8)-jo;function d(I){if(!o.isOdd)throw new Error("Field does not have .isOdd()");return o.isOdd(I)}const u=n.uvRatio===void 0?(I,y)=>{try{return{isValid:!0,value:o.sqrt(o.div(I,y))}}catch{return{isValid:!1,value:Mo}}}:n.uvRatio;if(!IS(o,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");const f=o.eql(i.a,o.neg(o.ONE))?I=>o.neg(I):o.eql(i.a,o.ONE)?I=>I:I=>o.mul(i.a,I);function h(I,y,k=!1){const N=k?jo:Mo;return eo("coordinate "+I,y,N,l),y}function g(I){if(!(I instanceof m))throw new Error("EdwardsPoint expected")}class m{static BASE=new m(i.Gx,i.Gy,o.ONE,o.mul(i.Gx,i.Gy));static ZERO=new m(o.ZERO,o.ONE,o.ONE,o.ZERO);static Fp=o;static Fn=s;X;Y;Z;T;constructor(y,k,N,x){this.X=h("x",y),this.Y=h("y",k),this.Z=h("z",N,!0),this.T=h("t",x),Object.freeze(this)}static CURVE(){return i}static fromAffine(y){if(y instanceof m)throw new Error("extended point not allowed");const{x:k,y:N}=y||{};return h("x",k),h("y",N),new m(k,N,o.ONE,o.mul(k,N))}static fromBytes(y,k=!1){const N=o.BYTES,{a:x,d:T}=i;y=uo(er(y,N,"point")),ci(k,"zip215");const S=uo(y),v=y[N-1];S[N-1]=v&-129;const A=Rs(S),O=k?l:o.ORDER;eo("point.y",A,Mo,O);const B=o.sqr(A),C=o.sub(B,o.ONE),E=o.sub(o.mulN(T,B),x);let{isValid:P,value:R}=u(C,E);if(!P)throw new Error("bad point: invalid y coordinate");const D=d(R),M=(v&128)!==0;if(!k&&o.is0(R)&&M)throw new Error("bad point: x=0 and x_0=1");return M!==D&&(R=o.neg(R)),m.fromAffine({x:R,y:A})}static fromHex(y,k=!1){return m.fromBytes(Xv(y),k)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(y=6,k=!0){return w.setWindowSize(this,y),k||this.multiply(Ho),this}assertValidity(){const y=this,{a:k,d:N}=i;if(y.is0())throw new Error("bad point: ZERO");const{X:x,Y:T,Z:S,T:v}=y,A=o.sqr(x),O=o.sqr(T),B=o.sqr(S),C=o.sqr(B),E=o.mul(A,k),P=o.mul(o.add(E,O),B),R=o.add(C,o.mul(N,o.mul(A,O)));if(!o.eql(P,R))throw new Error("bad point: equation left != right (1)");const D=o.mul(x,T),M=o.mul(S,v);if(!o.eql(D,M))throw new Error("bad point: equation left != right (2)")}equals(y){g(y);const{X:k,Y:N,Z:x}=this,{X:T,Y:S,Z:v}=y,A=o.mul(k,v),O=o.mul(T,x),B=o.mul(N,v),C=o.mul(S,x);return o.eql(A,O)&&o.eql(B,C)}is0(){return this.equals(m.ZERO)}negate(){return new m(o.neg(this.X),this.Y,this.Z,o.neg(this.T))}double(){const{X:y,Y:k,Z:N}=this,x=o.sqr(y),T=o.sqr(k),S=o.mul(o.sqr(N),Ho),v=f(x),A=o.addN(y,k),O=o.sub(o.subN(o.sqr(A),x),T),B=o.addN(v,T),C=o.subN(B,S),E=o.subN(v,T),P=o.mul(O,C),R=o.mul(B,E),D=o.mul(O,E),M=o.mul(C,B);return new m(P,R,M,D)}add(y){g(y);const{d:k}=i,{X:N,Y:x,Z:T,T:S}=this,{X:v,Y:A,Z:O,T:B}=y,C=o.mul(N,v),E=o.mul(x,A),P=o.mul(o.mulN(S,k),B),R=o.mul(T,O),D=o.sub(o.subN(o.mulN(o.addN(N,x),o.addN(v,A)),C),E),M=o.subN(R,P),F=o.addN(R,P),L=o.sub(E,f(C)),H=o.mul(D,M),$=o.mul(F,L),X=o.mul(D,L),Y=o.mul(M,F);return new m(H,$,Y,X)}subtract(y){return g(y),this.add(y.negate())}multiply(y){if(!s.isValidNot0(y))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:k,f:N}=w.mulSecret(this,y,a,b);return b([k,N])[0]}multiplyUnsafe(y){if(!s.isValid(y))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return y===Mo?m.ZERO:this.is0()||y===jo?this:w.mulUnsafe(this,y,b)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return w.mulUnsafe(this,i.n).is0()}toAffine(y){const k=this;let N=y;if(N!=null&&typeof N!="bigint")throw new TypeError('"invertedZ" expected bigint, got type='+typeof N);const{X:x,Y:T,Z:S}=k,v=k.is0();N==null&&(N=v?o.create(zd):o.inv(S));const A=o.mul(x,N),O=o.mul(T,N),B=o.mul(S,N);if(v)return{x:o.ZERO,y:o.ONE};if(!o.eql(B,o.ONE))throw new Error("invZ was invalid");return{x:A,y:O}}clearCofactor(){return a===jo?this:a===Ho?this.double():a===CS?this.double().double():a===zd?this.double().double().double():this.multiplyUnsafe(a)}toBytes(){const{x:y,y:k}=this.toAffine(),N=o.toBytes(k);return N[N.length-1]|=d(y)?128:0,N}toHex(){return Vv(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const b=I=>hS(m,I),w=new xS(m,c);return w.bits>=6&&m.BASE.precompute(6),Object.freeze(m.prototype),Object.freeze(m),m}const nn=BigInt(0),Je=BigInt(1),Uo=BigInt(2);function Wd(t,e){return t+e-(e>>Je<<Je)}function TS(t){const e=BigInt(6)*t;return(n,r,o)=>{const s=r+o,a=((e+o-r)*n+r)%t;return{x_2:a,x_3:s-a}}}function PS(t){return Ts(t,{P:"bigint",type:"string",adjustScalarBytes:"function",powPminus2:"function"},{randomBytes:"function",scalarMultBase:"function"}),Object.freeze({...t})}function NS(t){const e=PS(t),{P:n,type:r,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,a=e.scalarMultBase,c=r==="x25519";if(!c&&r!=="x448")throw new Error("invalid type");const l=i===void 0?cp:i,d=c?255:448,u=TS(n),f=c?32:56,h=BigInt(c?9:5),g=BigInt(c?121665:39081),m=c?Uo**BigInt(254):Uo**BigInt(447),b=c?BigInt(8)*(Uo**BigInt(251)-Je):BigInt(4)*(Uo**BigInt(445)-Je),w=m+b+Je,I=R=>le(R,n),y=k(h);function k(R){return fp(I(R),f)}function N(R){const D=uo(er(R,f,"uCoordinate"));return c&&(D[31]&=127),I(Rs(D))}function x(R){return Rs(o(uo(er(R,f,"scalar"))))}const T=new Set(c?[nn,Je,n-Je,BigInt("325606250916557431795983626356110631294008115727848805560023387167927233504"),BigInt("39382357235489614581723060781553021112529911719440698176882885853963445705823")]:[nn,Je,n-Je]);function S(R,D){const M=N(D);if(T.has(M))throw new Error("invalid private or public key received");const F=B(M,x(R));if(F===nn)throw new Error("invalid private or public key received");return k(F)}function v(R){if(a===void 0)return S(R,y);const D=x(R);eo("scalar",D,m,w);const M=I(a(D));if(M===nn)throw new Error("invalid private or public key received");return k(M)}const A=v,O=S;function B(R,D){eo("u",R,nn,n),eo("scalar",D,m,w);const M=D,F=R;let L=Je,H=nn,$=R,X=Je;const Y=M^M>>Je;for(let q=BigInt(d-1);q>=nn;q--){const W=Wd(n,Y>>q);({x_2:L,x_3:$}=u(W,L,$)),{x_2:H,x_3:X}=u(W,H,X);const z=L+H,V=I(z*z),J=L-H,oe=I(J*J),ne=V-oe,ae=$+X,he=$-X,Be=I(he*z),Ge=I(ae*J),Ee=Be+Ge,Ae=Be-Ge;$=I(Ee*Ee),X=I(F*I(Ae*Ae)),L=I(V*oe),H=I(ne*(V+I(g*ne)))}const U=Wd(n,M);({x_2:L,x_3:$}=u(U,L,$)),{x_2:H,x_3:X}=u(U,H,X);const K=s(H);return I(L*K)}const C={secretKey:f,publicKey:f,seed:f},E=R=>(R=R===void 0?l(f):R,er(R,C.seed,"seed"),R),P={randomSecretKey:E};return Object.freeze(C),Object.freeze(P),Object.freeze({keygen:kS(E,A),getSharedSecret:O,getPublicKey:A,scalarMult:S,scalarMultBase:v,utils:P,GuBytes:y.slice(),lengths:C})}const Gd=BigInt(0),LS=BigInt(1),Vd=BigInt(2),BS=BigInt(3),_S=BigInt(5),OS=BigInt(8),li=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),DS={p:li,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:OS,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function Ep(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),o=BigInt(80),s=li,a=t*t%s*t%s,c=st(a,Vd,s)*a%s,l=st(c,LS,s)*t%s,d=st(l,_S,s)*l%s,u=st(d,e,s)*d%s,f=st(u,n,s)*u%s,h=st(f,r,s)*f%s,g=st(h,o,s)*h%s,m=st(g,o,s)*h%s,b=st(m,e,s)*d%s;return{pow_p_5_8:st(b,Vd,s)*t%s,b2:a}}function FS(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Xd=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function MS(t,e){const n=li,r=le(e*e*e,n),o=le(r*r*e,n),s=Ep(t*o).pow_p_5_8;let i=le(t*r*s,n);const a=le(e*i*i,n),c=i,l=le(i*Xd,n),d=a===t,u=a===le(-t,n),f=a===le(-t*Xd,n);return d&&(i=c),(u||f)&&(i=l),cS(i,n)&&(i=le(-i,n)),{isValid:d||u,value:i}}const Yd=RS(DS,{uvRatio:MS}),$o=(()=>{const t=li,e=n=>{const{pow_p_5_8:r,b2:o}=Ep(n);return le(st(r,BS,t)*o,t)};return NS({P:t,type:"x25519",powPminus2:e,adjustScalarBytes:FS,scalarMultBase:n=>{const r=le(n,Yd.Fn.ORDER);if(r===Gd)return Gd;const o=Yd.BASE.multiply(r);return le((o.Z+o.Y)*e(le(o.Z-o.Y,t)),t)}})})();class Zd{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,n){if(ul(e),Ot(n,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("expected Hash instance");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,o=new Uint8Array(r);o.set(n.length>r?e.create().update(n).digest():n);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),pn(o)}update(e){return Cs(this),this.iHash.update(e),this}digestInto(e){Cs(this),np(e,this),this.finished=!0;const n=e.subarray(0,this.outputLen);this.iHash.digestInto(n),this.oHash.update(n),this.oHash.digestInto(n),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:a,canXOF:c}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.canXOF=c,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Ap=(()=>{const t=((e,n,r)=>new Zd(e,n).update(r).digest());return t.create=(e,n)=>new Zd(e,n),t})();function Jd(){const t={};return t.promise=new Promise((e,n)=>{t.resolve=e,t.reject=n}),t}class Qd{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){const e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}}class zi{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Qd(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){const n=this.head;this.head=n.next=new Qd(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){const n=this.tail.next;this.tail.next=null,this.tail=n,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}}class jS extends Error{type;code;constructor(e,n){super(e??"The operation was aborted"),this.type="aborted",this.code=n??"ABORT_ERR"}}function HS(t={}){return US(n=>{const r=n.shift();if(r==null)return{done:!0};if(r.error!=null)throw r.error;return{done:r.done===!0,value:r.value}},t)}function US(t,e){e=e??{};let n=e.onEnd,r=new zi,o,s,i,a=Jd();const c=async()=>{try{return r.isEmpty()?i?{done:!0}:await new Promise((b,w)=>{s=I=>{s=null,r.push(I);try{b(t(r))}catch(y){w(y)}return o}}):t(r)}finally{r.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=Jd()})}},l=b=>s!=null?s(b):(r.push(b),o),d=b=>(r=new zi,s!=null?s({error:b}):(r.push({error:b}),o)),u=b=>{if(i)return o;if(e?.objectMode!==!0&&b?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:b})},f=b=>i?o:(i=!0,b!=null?d(b):l({done:!0})),h=()=>(r=new zi,f(),{done:!0}),g=b=>(f(b),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:g,push:u,end:f,get readableLength(){return r.size},onEmpty:async b=>{const w=b?.signal;if(w?.throwIfAborted(),r.isEmpty())return;let I,y;w!=null&&(I=new Promise((k,N)=>{y=()=>{N(new jS)},w.addEventListener("abort",y)}));try{await Promise.race([a.promise,I])}finally{y!=null&&w!=null&&w?.removeEventListener("abort",y)}}},n==null)return o;const m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(b){return m.throw(b),n!=null&&(n(b),n=void 0),{done:!0}},return(){return m.return(),n!=null&&(n(),n=void 0),{done:!0}},push:u,end(b){return m.end(b),n!=null&&(n(b),n=void 0),o},get readableLength(){return m.readableLength},onEmpty:b=>m.onEmpty(b)},o}class bl extends Error{name="TimeoutError";constructor(e,n){super(e,n),Error.captureStackTrace?.(this,bl)}}const eu=t=>t.reason??new DOMException("This operation was aborted.","AbortError");function $S(t,e){const{milliseconds:n,fallback:r,message:o,customTimers:s={setTimeout,clearTimeout},signal:i}=e;let a,c;const d=new Promise((u,f)=>{if(typeof n!="number"||Math.sign(n)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${n}\``);if(i?.aborted){f(eu(i));return}if(i&&(c=()=>{f(eu(i))},i.addEventListener("abort",c,{once:!0})),t.then(u,f),n===Number.POSITIVE_INFINITY)return;const h=new bl;a=s.setTimeout.call(void 0,()=>{if(r){try{u(r())}catch(g){f(g)}return}typeof t.cancel=="function"&&t.cancel(),o===!1?u():o instanceof Error?f(o):(h.message=o??`Promise timed out after ${n} milliseconds`,f(h))},n)}).finally(()=>{d.clear(),c&&i&&i.removeEventListener("abort",c)});return d.clear=()=>{s.clearTimeout.call(void 0,a),a=void 0},d}const qS=t=>{const e=t.addEventListener||t.on||t.addListener,n=t.removeEventListener||t.off||t.removeListener;if(!e||!n)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(t),removeListener:n.bind(t)}};function KS(t,e,n){let r;const o=new Promise((s,i)=>{if(n={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...n},!(n.count>=0&&(n.count===Number.POSITIVE_INFINITY||Number.isInteger(n.count))))throw new TypeError("The `count` option should be at least 0 or more");n.signal?.throwIfAborted();const a=[e].flat(),c=[],{addListener:l,removeListener:d}=qS(t),u=async(...h)=>{const g=n.multiArgs?h:h[0];if(n.filter)try{if(!await n.filter(g))return}catch(m){r(),i(m);return}c.push(g),n.count===c.length&&(r(),s(c))},f=(...h)=>{r(),i(n.rejectionMultiArgs?h:h[0])};r=()=>{for(const h of a)d(h,u);for(const h of n.rejectionEvents)a.includes(h)||d(h,f)};for(const h of a)l(h,u);for(const h of n.rejectionEvents)a.includes(h)||l(h,f);n.signal&&n.signal.addEventListener("abort",()=>{f(n.signal.reason)},{once:!0}),n.resolveImmediately&&s(c)});if(o.cancel=r,typeof n.timeout=="number"){const s=$S(o,{milliseconds:n.timeout});return s.cancel=()=>{r(),s.clear()},s}return o}function zS(t,e,n){typeof n=="function"&&(n={filter:n}),n={...n,count:1,resolveImmediately:!1};const r=KS(t,e,n),o=r.then(s=>s[0]);return o.cancel=r.cancel,o}class Ns extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"}class WS extends Error{static name="StreamClosedError";name="StreamClosedError"}function GS(t){return t.reason}function kp(t,e,n){if(e==null||t==null)return t;const r=GS;if(e.aborted)return t.catch(()=>{}),Promise.reject(r(e));let o;return Promise.race([t,new Promise((s,i)=>{o=()=>{i(r(e))},e.addEventListener("abort",o)})]).finally(()=>{o!=null&&e.removeEventListener("abort",o)})}const VS=Math.pow(2,20)*4;class Cp extends iw{status;timeline;inactivityTimeout;maxReadBufferLength;maxWriteBufferLength;log;direction;maxMessageSize;readStatus;writeStatus;remoteReadStatus;remoteWriteStatus;writableNeedsDrain;readBuffer;writeBuffer;sendingData;onDrainPromise;constructor(e){super(),this.status="open",this.log=e.log,this.direction=e.direction??"outbound",this.inactivityTimeout=e.inactivityTimeout??12e4,this.maxReadBufferLength=e.maxReadBufferLength??VS,this.maxWriteBufferLength=e.maxWriteBufferLength,this.maxMessageSize=e.maxMessageSize,this.readBuffer=new ce,this.writeBuffer=new ce,this.readStatus="readable",this.remoteReadStatus="readable",this.writeStatus="writable",this.remoteWriteStatus="writable",this.sendingData=!1,this.writableNeedsDrain=!1,this.timeline={open:Date.now()},this.processSendQueue=this.processSendQueue.bind(this);const n=()=>{this.writableNeedsDrain&&(this.log.trace("drain event received, continue sending data"),this.writableNeedsDrain=!1,this.processSendQueue()),this.onDrainPromise?.resolve()};this.addEventListener("drain",n);const r=o=>{this.onDrainPromise?.reject(o.error??new WS)};this.addEventListener("close",r)}get readBufferLength(){return this.readBuffer.byteLength}get writeBufferLength(){return this.writeBuffer.byteLength}async onDrain(e){return this.writableNeedsDrain!==!0?Promise.resolve():(this.onDrainPromise==null&&(this.onDrainPromise=Promise.withResolvers()),kp(this.onDrainPromise.promise,e?.signal))}async*[Symbol.asyncIterator](){if(this.readStatus!=="readable"&&this.readStatus!=="paused")return;const e=HS(),n=s=>{e.push(s.data)};this.addEventListener("message",n);const r=s=>{e.end(s.error)};this.addEventListener("close",r);const o=()=>{e.end()};this.addEventListener("remoteCloseWrite",o);try{yield*e}finally{this.removeEventListener("message",n),this.removeEventListener("close",r),this.removeEventListener("remoteCloseWrite",o)}}isReadable(){return this.status==="open"}send(e){if(this.writeStatus==="closed"||this.writeStatus==="closing")throw new Nr(`Cannot write to a stream that is ${this.writeStatus}`);return this.log.trace("append %d bytes to write buffer",e.byteLength),this.writeBuffer.append(e),this.processSendQueue()}abort(e){if(!(this.status==="aborted"||this.status==="reset"||this.status==="closed")){this.log.error("abort with error - %e",e),this.status="aborted",this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle")),this.writeStatus="closed",this.remoteWriteStatus="closed",this.readStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now();try{this.sendReset(e)}catch(n){this.log("failed to send reset to remote - %e",n)}this.dispatchEvent(new kv(e))}}pause(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr("Cannot pause a stream that is closing/closed");this.readStatus!=="paused"&&(this.readStatus="paused",this.sendPause())}resume(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr("Cannot resume a stream that is closing/closed");this.readStatus!=="readable"&&(this.readStatus="readable",this.dispatchReadBuffer(),this.sendResume())}push(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.append(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}unshift(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Nr(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.prepend(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}onData(e){if(e.byteLength!==0){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("ignoring data - read status %s",this.readStatus);return}this.readBuffer.append(e),this.dispatchReadBuffer()}}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="message"&&this.readBuffer.byteLength>0&&queueMicrotask(()=>{this.dispatchReadBuffer()})}onRemoteReset(){this.log("remote reset"),this.status="reset",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now(),this.readBuffer.byteLength===0&&(this.readStatus="closed");const e=new Ev;this.dispatchEvent(new Cv(e))}onTransportClosed(e){this.log("transport closed"),this.readStatus==="readable"&&this.readBuffer.byteLength===0&&(this.log("close readable end after transport closed and read buffer is empty"),this.readStatus="closed"),this.remoteReadStatus!=="closed"&&(this.remoteReadStatus="closed"),this.remoteWriteStatus!=="closed"&&(this.remoteWriteStatus="closed"),this.writeStatus!=="closed"&&(this.writeStatus="closed"),e!=null?this.abort(e):(this.status==="open"||this.status==="closing")&&(this.timeline.close=Date.now(),this.status="closed",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.dispatchEvent(new dl))}onRemoteCloseWrite(){this.remoteWriteStatus!=="closed"&&(this.log.trace("on remote close write"),this.remoteWriteStatus="closed",this.safeDispatchEvent("remoteCloseWrite"),this.writeStatus==="closed"&&this.onTransportClosed())}onRemoteCloseRead(){this.log.trace("on remote close read"),this.remoteReadStatus="closed",this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle"))}processSendQueue(){if(this.writableNeedsDrain)return this.log.trace("not processing send queue as drain is required"),this.checkWriteBufferLength(),!1;if(this.writeBuffer.byteLength===0)return this.log.trace("not processing send queue as no bytes to send"),!0;if(this.sendingData)return this.log.trace("not processing send queue as already sending data"),!0;this.sendingData=!0,this.log.trace("processing send queue with %d queued bytes",this.writeBuffer.byteLength);try{let e=!0;const n=this.writeBuffer.byteLength;let r=0;for(;this.writeBuffer.byteLength>0;){const o=Math.min(this.maxMessageSize??this.writeBuffer.byteLength,this.writeBuffer.byteLength);if(o===0){e=!1;break}const s=this.writeBuffer.sublist(0,o),i=new ce(s);this.writeBuffer.consume(s.byteLength);const a=this.sendData(s);if(e=a.canSendMore,r+=a.sentBytes,a.sentBytes!==i.byteLength&&(i.consume(a.sentBytes),this.writeBuffer.prepend(i)),!e)break}return e||(this.log.trace("sent %d/%d bytes, pausing sending because underlying stream is full, %d bytes left in the write buffer",r,n,this.writeBuffer.byteLength),this.writableNeedsDrain=!0,this.checkWriteBufferLength()),this.writeBuffer.byteLength===0&&this.safeDispatchEvent("idle"),e}finally{this.sendingData=!1}}dispatchReadBuffer(){try{if(this.listenerCount("message")===0){this.log.trace("not dispatching pause buffer as there are no listeners for the message event");return}if(this.readBuffer.byteLength===0){this.log.trace("not dispatching pause buffer as there is no data to dispatch");return}if(this.readStatus==="paused"){this.log.trace("not dispatching pause buffer we are paused");return}if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("dropping %d bytes because the readable end is %s",this.readBuffer.byteLength,this.readStatus),this.readBuffer.consume(this.readBuffer.byteLength);return}const e=this.readBuffer.sublist();this.readBuffer.consume(e.byteLength),this.dispatchEvent(new Av(e))}finally{this.readBuffer.byteLength===0&&this.remoteWriteStatus==="closed"&&(this.log("close readable end after dispatching read buffer and remote writable end is closed"),this.readStatus="closed"),this.checkReadBufferLength()}}checkReadBufferLength(){this.readBuffer.byteLength>this.maxReadBufferLength&&this.abort(new Od(`Read buffer length of ${this.readBuffer.byteLength} exceeded limit of ${this.maxReadBufferLength}, read status is ${this.readStatus}`))}checkWriteBufferLength(){this.maxWriteBufferLength!=null&&this.writeBuffer.byteLength>this.maxWriteBufferLength&&this.abort(new Od(`Write buffer length of ${this.writeBuffer.byteLength} exceeded limit of ${this.maxWriteBufferLength}, write status is ${this.writeStatus}`))}onMuxerNeedsDrain(){this.writableNeedsDrain=!0}onMuxerDrain(){this.safeDispatchEvent("drain")}}const XS=4194304;class tu extends Error{static name="UnwrappedError";name="UnwrappedError"}class Ip extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"}class YS extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"}class ZS extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"}function JS(t){return typeof t?.closeRead=="function"}function QS(t){return typeof t?.close=="function"}function Wi(t){return JS(t)?t.remoteWriteStatus!=="writable"&&t.readBufferLength===0:QS(t)?t.status!=="open":!1}function ex(t){return t?.addEventListener!=null&&t?.removeEventListener!=null&&t?.send!=null&&t?.push!=null&&t?.log!=null}function tx(t,e){const n=e?.maxBufferSize??XS,r=new ce;let o,s=!1;if(!ex(t))throw new tp("Argument should be a Stream or a Multiaddr");const i=d=>{if(r.append(d.data),r.byteLength>n){const u=r.byteLength;r.consume(r.byteLength),o?.reject(new Error(`Read buffer overflow - ${u} > ${n}`))}o?.resolve()};t.addEventListener("message",i);const a=d=>{d.error!=null?o?.reject(d.error):o?.resolve()};t.addEventListener("close",a);const c=()=>{o?.resolve()};t.addEventListener("remoteCloseWrite",c);const l={readBuffer:r,async read(d){if(s===!0)throw new tu("Stream was unwrapped");if(Wi(t)){if(d?.bytes==null)return null;if(r.byteLength<d.bytes)throw t.log.error("closed after reading %d/%d bytes",r.byteLength,d.bytes),new Ns(`Unexpected EOF - stream closed after reading ${r.byteLength}/${d.bytes} bytes`)}const u=d?.bytes??1;for(o=Promise.withResolvers();;){if(r.byteLength>=u){o.resolve();break}if(await kp(o.promise,d?.signal),Wi(t)){if(r.byteLength===0&&d?.bytes==null)return null;break}o=Promise.withResolvers()}const f=d?.bytes??r.byteLength;if(r.byteLength<f){if(Wi(t))throw t.log.error("closed while reading %d/%d bytes",r.byteLength,f),new Ns(`Unexpected EOF - stream closed while reading ${r.byteLength}/${f} bytes`);return l.read(d)}const h=r.sublist(0,f);return r.consume(f),h},async write(d,u){if(s===!0)throw new tu("Stream was unwrapped");t.send(d)||await zS(t,"drain",{signal:u?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,t.removeEventListener("message",i),t.removeEventListener("close",a),t.removeEventListener("remoteCloseWrite",c),r.byteLength>0&&(t.log("stream unwrapped with %d unread bytes",r.byteLength),t.push(r))),t}};return l}function nu(t,e={}){const n=tx(t,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=kn(e.maxDataLength));const r=e?.lengthDecoder??Oh,o=e?.lengthEncoder??a0;return{async read(i){let a=-1;const c=new ce;for(;;){const d=await n.read({...i,bytes:1});if(d==null)break;c.append(d);try{a=r(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new Ip("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new ZS(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new YS(`Message length too long - ${a} > ${e.maxDataLength}`);const l=await n.read({...i,bytes:a});if(l==null)throw t.log.error("tried to read %d bytes but the stream closed",a),new Ns(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw t.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new Ns(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await n.write(new ce(o(i.byteLength),i),a)},async writeV(i,a){const c=new ce(...i.flatMap(l=>[o(l.byteLength),l]));await n.write(c,a)},unwrap(){return n.unwrap()}}}const nx=1024*1024*4,rx=1024*1024*4;class ox{buffer;maxBufferSize;lengthDecoder;maxDataLength;encodingLength;constructor(e={}){this.buffer=new ce,this.maxBufferSize=e.maxBufferSize??nx,this.maxDataLength=e.maxDataLength??rx,this.lengthDecoder=e.lengthDecoder??Oh,this.encodingLength=e.encodingLength??kn}*decode(e){if(this.buffer.append(e),this.buffer.byteLength>this.maxBufferSize)throw new tp(`Buffer length limit exceeded - ${this.buffer.byteLength}/${this.maxBufferSize}`);for(;;){let n;try{n=this.lengthDecoder(this.buffer)}catch(s){if(s instanceof RangeError)break;throw s}if(n<0||n>this.maxDataLength)throw new Ip("Invalid message length");const r=this.encodingLength(n),o=r+n;if(this.buffer.byteLength>=o){const s=this.buffer.sublist(r,o);this.buffer.consume(o),s.byteLength>0&&(yield s)}else break}}}var sx={};const po=65535,ru=po-16,Io=!!sx?.DUMP_SESSION_KEYS,ou=16;function oc(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const Ls=t=>t?`"${t}" `:"";function sc(t,e=""){if(typeof t!="boolean")throw new TypeError(Ls(e)+"expected boolean, got type="+typeof t);return t}function nr(t,e=""){if(typeof t!="number")throw new TypeError(Ls(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(Ls(e)+"expected integer >= 0, got "+t);return t}function Ie(t,e,n=""){if(oc(t)&&(e===void 0||t.length===e))return t;e!==void 0&&nr(e,"length");const r=oc(t),o=e!==void 0?` of length ${e}`:"",s=r?`length=${t.length}`:`type=${typeof t}`,i=Ls(n)+"expected Uint8Array"+o+", got "+s;throw r?new RangeError(i):new TypeError(i)}const su=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(e==="object"?"expected valid options object":`"${e}" expected object, got type=${typeof t}`)};function iu(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function ix(t,e){Ie(t,void 0,"output");const n=e.outputLen;if(!(t.length>=n))throw new RangeError('"output" expected length >= '+n)}function It(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function Zt(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function ax(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}const rr=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function cx(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function lx(t){for(let e=0;e<t.length;e++)t[e]=cx(t[e]);return t}const ln=rr?t=>t:lx;function dx(t,e){return!t.byteLength||!e.byteLength?!1:t.buffer===e.buffer&&t.byteOffset<e.byteOffset+e.byteLength&&e.byteOffset<t.byteOffset+t.byteLength}function ux(t,e){if(dx(t,e)&&t.byteOffset<e.byteOffset)throw new Error("complex overlap of input and output is not supported")}function fx(t,e){return su(t,"defaults"),su(e,"opts"),Object.assign(t,e)}function hx(t,e){if(t=Ie(t),e=Ie(e),t.length!==e.length)return!1;let n=0;for(let r=0;r<t.length;r++)n|=t[r]^e[r];return n===0}function px(t,e,n){const r=e,o=(()=>[]),s=(a,c)=>r(c,...o(a)).update(a).digest(),i=r(new Uint8Array(t),...o(new Uint8Array(0)));return s.outputLen=i.outputLen,s.blockLen=i.blockLen,s.create=(a,...c)=>r(a,...c),s}const gx=(t,e)=>{function n(r,...o){if(Ie(r,void 0,"key"),t.nonceLength!==void 0){const u=o[0];Ie(u,t.varSizeNonce?void 0:t.nonceLength,"nonce")}const s=t.tagLength,i=t.nonceLength!==void 0?1:0;if(!t.withAAD){for(let u=i;u<o.length;u++)if(oc(o[u]))throw new Error("AAD not supported")}t.withAAD&&o[i]!==void 0&&Ie(o[i],void 0,"AAD");const a=e(r,...o),c=(u,f)=>{if(f!==void 0){if(u!==2)throw new Error("cipher output not supported");Ie(f,void 0,"output")}};let l=!1;return{encrypt(u,f){if(l)throw new Error("cannot encrypt() twice with same key + nonce");return l=!0,Ie(u,void 0,"data"),c(a.encrypt.length,f),a.encrypt(u,f)},decrypt(u,f){if(Ie(u,void 0,"data"),s&&u.length<s)throw new Error('"ciphertext" expected length >= tagLength='+s);return c(a.decrypt.length,f),a.decrypt(u,f)}}}return Object.assign(n,t),n};function ic(t,e,n=!0){if(e===void 0)return new Uint8Array(t);if(Ie(e,t,"output"),n&&!Bs(e))throw new Error("invalid output, must be aligned");return e}function mx(t,e,n){nr(t),nr(e),sc(n);const r=new Uint8Array(16),o=ax(r);return o.setBigUint64(0,BigInt(e),n),o.setBigUint64(8,BigInt(t),n),r}function Bs(t){return t.byteOffset%4===0}function _s(t){return Uint8Array.from(Ie(t))}const Rp=t=>Uint8Array.from(t.split(""),e=>e.charCodeAt(0)),wx=ln(It(Rp("expand 16-byte k"))),yx=ln(It(Rp("expand 32-byte k")));function re(t,e){return t<<e|t>>>32-e}const Lr=64,bx=16,ac=2**32-1,au=Uint32Array.of();function vx(t,e,n,r,o,s,i,a){const c=o.length,l=new Uint8Array(Lr),d=It(l),u=rr&&Bs(o)&&Bs(s),f=u?It(o):au,h=u?It(s):au;if(!rr){for(let g=0;g<c;i++){if(t(e,n,r,d,i,a),ln(d),i>=ac)throw new Error("arx: counter overflow");const m=Math.min(Lr,c-g);for(let b=0,w;b<m;b++)w=g+b,s[w]=o[w]^l[b];g+=m}return}for(let g=0;g<c;i++){if(t(e,n,r,d,i,a),i>=ac)throw new Error("arx: counter overflow");const m=Math.min(Lr,c-g);if(u&&m===Lr){const b=g/4;if(g%4!==0)throw new Error("arx: invalid block position");for(let w=0,I;w<bx;w++)I=b+w,h[I]=f[I]^d[w];g+=Lr;continue}for(let b=0,w;b<m;b++)w=g+b,s[w]=o[w]^l[b];g+=m}}function Sx(t,e){const{allowShortKeys:n,extendNonceFn:r,counterLength:o,counterRight:s,rounds:i}=fx({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof t!="function")throw new Error("core must be a function");return nr(o),nr(i),sc(s),sc(n),(a,c,l,d,u=0)=>{Ie(a,void 0,"key"),Ie(c,void 0,"nonce"),Ie(l,void 0,"data");const f=l.length,h=d!==void 0;if(d=ic(f,d,!1),h&&ux(l,d),nr(u),u<0||u>=ac)throw new Error("arx: counter overflow");const g=[];let m=a.length,b,w;if(m===32)g.push(b=_s(a)),w=yx;else if(m===16&&n)b=new Uint8Array(32),b.set(a),b.set(a,16),w=wx,g.push(b);else throw Ie(a,32,"arx key"),new Error("invalid key size");(!rr||!Bs(c))&&g.push(c=_s(c));let I=It(b);if(r){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");const N=c.subarray(0,16);if(rr)r(w,I,It(N),I);else{const x=ln(Uint32Array.from(w));r(x,I,It(N),I),Zt(x),ln(I)}c=c.subarray(16)}else rr||ln(I);const y=16-o;if(y!==c.length)throw new Error(`arx: nonce must be ${y} or 16 bytes`);if(y!==12){const N=new Uint8Array(12);N.set(c,s?0:12-c.length),c=N,g.push(c)}const k=ln(It(c));try{return vx(t,w,I,k,l,d,u,i),d}finally{Zt(...g)}}}function Te(t,e){return t[e++]&255|(t[e++]&255)<<8}class xx{blockLen=16;outputLen=16;buffer=new Uint8Array(16);r=new Uint16Array(10);h=new Uint16Array(10);pad=new Uint16Array(8);pos=0;finished=!1;destroyed=!1;constructor(e){e=_s(Ie(e,32,"key"));const n=Te(e,0),r=Te(e,2),o=Te(e,4),s=Te(e,6),i=Te(e,8),a=Te(e,10),c=Te(e,12),l=Te(e,14);this.r[0]=n&8191,this.r[1]=(n>>>13|r<<3)&8191,this.r[2]=(r>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let d=0;d<8;d++)this.pad[d]=Te(e,16+2*d)}process(e,n,r=!1){const o=r?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],d=i[3],u=i[4],f=i[5],h=i[6],g=i[7],m=i[8],b=i[9],w=Te(e,n+0),I=Te(e,n+2),y=Te(e,n+4),k=Te(e,n+6),N=Te(e,n+8),x=Te(e,n+10),T=Te(e,n+12),S=Te(e,n+14);let v=s[0]+(w&8191),A=s[1]+((w>>>13|I<<3)&8191),O=s[2]+((I>>>10|y<<6)&8191),B=s[3]+((y>>>7|k<<9)&8191),C=s[4]+((k>>>4|N<<12)&8191),E=s[5]+(N>>>1&8191),P=s[6]+((N>>>14|x<<2)&8191),R=s[7]+((x>>>11|T<<5)&8191),D=s[8]+((T>>>8|S<<8)&8191),M=s[9]+(S>>>5|o),F=0,L=F+v*a+A*(5*b)+O*(5*m)+B*(5*g)+C*(5*h);F=L>>>13,L&=8191,L+=E*(5*f)+P*(5*u)+R*(5*d)+D*(5*l)+M*(5*c),F+=L>>>13,L&=8191;let H=F+v*c+A*a+O*(5*b)+B*(5*m)+C*(5*g);F=H>>>13,H&=8191,H+=E*(5*h)+P*(5*f)+R*(5*u)+D*(5*d)+M*(5*l),F+=H>>>13,H&=8191;let $=F+v*l+A*c+O*a+B*(5*b)+C*(5*m);F=$>>>13,$&=8191,$+=E*(5*g)+P*(5*h)+R*(5*f)+D*(5*u)+M*(5*d),F+=$>>>13,$&=8191;let X=F+v*d+A*l+O*c+B*a+C*(5*b);F=X>>>13,X&=8191,X+=E*(5*m)+P*(5*g)+R*(5*h)+D*(5*f)+M*(5*u),F+=X>>>13,X&=8191;let Y=F+v*u+A*d+O*l+B*c+C*a;F=Y>>>13,Y&=8191,Y+=E*(5*b)+P*(5*m)+R*(5*g)+D*(5*h)+M*(5*f),F+=Y>>>13,Y&=8191;let U=F+v*f+A*u+O*d+B*l+C*c;F=U>>>13,U&=8191,U+=E*a+P*(5*b)+R*(5*m)+D*(5*g)+M*(5*h),F+=U>>>13,U&=8191;let K=F+v*h+A*f+O*u+B*d+C*l;F=K>>>13,K&=8191,K+=E*c+P*a+R*(5*b)+D*(5*m)+M*(5*g),F+=K>>>13,K&=8191;let q=F+v*g+A*h+O*f+B*u+C*d;F=q>>>13,q&=8191,q+=E*l+P*c+R*a+D*(5*b)+M*(5*m),F+=q>>>13,q&=8191;let W=F+v*m+A*g+O*h+B*f+C*u;F=W>>>13,W&=8191,W+=E*d+P*l+R*c+D*a+M*(5*b),F+=W>>>13,W&=8191;let z=F+v*b+A*m+O*g+B*h+C*f;F=z>>>13,z&=8191,z+=E*u+P*d+R*l+D*c+M*a,F+=z>>>13,z&=8191,F=(F<<2)+F|0,F=F+L|0,L=F&8191,F=F>>>13,H+=F,s[0]=L,s[1]=H,s[2]=$,s[3]=X,s[4]=Y,s[5]=U,s[6]=K,s[7]=q,s[8]=W,s[9]=z}finalize(){const{h:e,pad:n}=this,r=new Uint16Array(10);let o=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=o,o=e[a]>>>13,e[a]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,r[0]=e[0]+5,o=r[0]>>>13,r[0]&=8191;for(let a=1;a<10;a++)r[a]=e[a]+o,o=r[a]>>>13,r[a]&=8191;r[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)r[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|r[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+n[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+n[a]|0)+(i>>>16)|0,e[a]=i&65535;Zt(r)}update(e){iu(this),Ie(e),e=_s(e);const{buffer:n,blockLen:r}=this,o=e.length;for(let s=0;s<o;){const i=Math.min(r-this.pos,o-s);if(i===r){for(;r<=o-s;s+=r)this.process(e,s);continue}n.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===r&&(this.process(n,0,!1),this.pos=0)}return this}destroy(){this.destroyed=!0,Zt(this.h,this.r,this.buffer,this.pad)}digestInto(e){iu(this),ix(e,this),this.finished=!0;const{buffer:n,h:r}=this;let{pos:o}=this;if(o){for(n[o++]=1;o<16;o++)n[o]=0;this.process(n,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=r[i]>>>0,e[s++]=r[i]>>>8}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}}const Ex=px(32,t=>new xx(t));function Ax(t,e,n,r,o,s=20){let i=t[0],a=t[1],c=t[2],l=t[3],d=e[0],u=e[1],f=e[2],h=e[3],g=e[4],m=e[5],b=e[6],w=e[7],I=o,y=n[0],k=n[1],N=n[2],x=i,T=a,S=c,v=l,A=d,O=u,B=f,C=h,E=g,P=m,R=b,D=w,M=I,F=y,L=k,H=N;for(let X=0;X<s;X+=2)x=x+A|0,M=re(M^x,16),E=E+M|0,A=re(A^E,12),x=x+A|0,M=re(M^x,8),E=E+M|0,A=re(A^E,7),T=T+O|0,F=re(F^T,16),P=P+F|0,O=re(O^P,12),T=T+O|0,F=re(F^T,8),P=P+F|0,O=re(O^P,7),S=S+B|0,L=re(L^S,16),R=R+L|0,B=re(B^R,12),S=S+B|0,L=re(L^S,8),R=R+L|0,B=re(B^R,7),v=v+C|0,H=re(H^v,16),D=D+H|0,C=re(C^D,12),v=v+C|0,H=re(H^v,8),D=D+H|0,C=re(C^D,7),x=x+O|0,H=re(H^x,16),R=R+H|0,O=re(O^R,12),x=x+O|0,H=re(H^x,8),R=R+H|0,O=re(O^R,7),T=T+B|0,M=re(M^T,16),D=D+M|0,B=re(B^D,12),T=T+B|0,M=re(M^T,8),D=D+M|0,B=re(B^D,7),S=S+C|0,F=re(F^S,16),E=E+F|0,C=re(C^E,12),S=S+C|0,F=re(F^S,8),E=E+F|0,C=re(C^E,7),v=v+A|0,L=re(L^v,16),P=P+L|0,A=re(A^P,12),v=v+A|0,L=re(L^v,8),P=P+L|0,A=re(A^P,7);let $=0;r[$++]=i+x|0,r[$++]=a+T|0,r[$++]=c+S|0,r[$++]=l+v|0,r[$++]=d+A|0,r[$++]=u+O|0,r[$++]=f+B|0,r[$++]=h+C|0,r[$++]=g+E|0,r[$++]=m+P|0,r[$++]=b+R|0,r[$++]=w+D|0,r[$++]=I+M|0,r[$++]=y+F|0,r[$++]=k+L|0,r[$++]=N+H|0}const kx=Sx(Ax,{counterRight:!1,counterLength:4,allowShortKeys:!1}),Cx=new Uint8Array(16),cu=(t,e)=>{t.update(e);const n=e.length%16;n&&t.update(Cx.subarray(n))},Ix=new Uint8Array(32);function lu(t,e,n,r,o){o!==void 0&&Ie(o,void 0,"AAD");const s=t(e,n,Ix),i=mx(r.length,o?o.length:0,!0),a=Ex.create(s);o&&cu(a,o),cu(a,r),a.update(i);const c=a.digest();return Zt(s,i),c}const Rx=t=>(e,n,r)=>({encrypt(s,i){const a=s.length;i=ic(a+16,i,!1),i.set(s);const c=i.subarray(0,-16);t(e,n,c,c,1);const l=lu(t,e,n,c,r);return i.set(l,a),Zt(l),i},decrypt(s,i){i=ic(s.length-16,i,!1);const a=s.subarray(0,-16),c=s.subarray(-16),l=lu(t,e,n,a,r);if(!hx(c,l))throw Zt(l),new Error("invalid tag");return i.set(s.subarray(0,-16)),t(e,n,i,i,1),Zt(l),i}}),du=gx({blockSize:64,nonceLength:12,tagLength:16,withAAD:!0},Rx(kx));function Tx(t,e,n){return ul(t),n===void 0&&(n=new Uint8Array(t.outputLen)),Ap(t,n,e)}const Br=Uint8Array.of(0),Px=Uint8Array.of();function Nx(t,e,n,r=32,o){ul(t),_t(r,"length"),Ot(e,void 0,"prk");const s=t.outputLen;if(e.length<s)throw new Error('"prk" must be at least HashLen octets');if(r>255*s)throw new Error("Length must be <= 255*HashLen");const i=Math.ceil(r/s);if(n===void 0?n=Px:Ot(n,void 0,"info"),!i)return new Uint8Array;const a=new Uint8Array(i*s),{iHash:c,oHash:l}=Ap.create(t,e),d=new Uint8Array(s),u=i>1?t.create():void 0;for(let h=0;h<i-1;h++){Br[0]=h+1;const g=c._cloneInto(u);h&&g.update(d),g.update(n).update(Br).digestInto(d),l._cloneInto(u).update(d).digestInto(d),a.set(d,s*h)}if(Br[0]=i,i>1&&c.update(d),c.update(n).update(Br).digestInto(d),l.update(d).digestInto(d),a.set(d,s*(i-1)),c.destroy(),l.destroy(),u?.destroy(),d!==a&&pn(d),pn(Br),r===a.length)return a;const f=a.slice(0,r);return pn(a),f}const Tp={hashSHA256(t){return $i(t.subarray())},getHKDF(t,e){const n=Tx($i,e,t),o=Nx($i,n,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){const t=$o.utils.randomSecretKey();return{publicKey:$o.getPublicKey(t),privateKey:t}},generateX25519KeyPairFromSeed(t){return{publicKey:$o.getPublicKey(t),privateKey:t}},generateX25519SharedKey(t,e){return $o.getSharedSecret(t.subarray(),e.subarray())},chaCha20Poly1305Encrypt(t,e,n,r){return du(r,e,n).encrypt(t.subarray())},chaCha20Poly1305Decrypt(t,e,n,r,o){return du(r,e,n).decrypt(t.subarray(),o)}},Lx=Tp;function Bx(t){return{generateKeypair:t.generateX25519KeyPair,dh:(e,n)=>t.generateX25519SharedKey(e.privateKey,n).subarray(0,32),encrypt:t.chaCha20Poly1305Encrypt,decrypt:t.chaCha20Poly1305Decrypt,hash:t.hashSHA256,hkdf:t.getHKDF}}const Os=t=>{const e=Lt(2);return e[0]=t>>8,e[1]=t,e};Os.bytes=2;const Ds=t=>{if(t.length<2)throw RangeError("Could not decode int16BE");if(t instanceof Uint8Array){let e=0;return e+=t[0]<<8,e+=t[1],e}return t.getUint16(0)};Ds.bytes=2;function _x(t){return{xxHandshakeSuccesses:t.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:t.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:t.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:t.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:t.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}function Pp(t,e){!e.enabled||!Io||(t?(e(`LOCAL_STATIC_PUBLIC_KEY ${te(t.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${te(t.privateKey,"hex")}`)):e("Missing local static keys."))}function Np(t,e){!e.enabled||!Io||(t?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${te(t.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${te(t.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function Ox(t,e){!e.enabled||!Io||e(t?`REMOTE_STATIC_PUBLIC_KEY ${te(t.subarray(),"hex")}`:"Missing remote static public key.")}function Lp(t,e){!e.enabled||!Io||e(t?`REMOTE_EPHEMERAL_PUBLIC_KEY ${te(t.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function Bp(t,e,n){!n.enabled||!Io||(n(`CIPHER_STATE_1 ${t.n.getUint64()} ${t.k&&te(t.k,"hex")}`),n(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&te(e.k,"hex")}`))}class to extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=to.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"}const Dx=0,Fx=4294967295,Mx="Cipherstate has reached maximum n, a new handshake must be performed";class jx{n;bytes;view;constructor(e=Dx){this.n=e,this.bytes=qe(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,e,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>Fx)throw new Error(Mx)}}const or=qe(0);class qo{k;n;crypto;constructor(e,n=void 0,r=0){this.crypto=e,this.k=n,this.n=new jx(r)}hasKey(){return!!this.k}encryptWithAd(e,n){if(!this.hasKey())return n;this.n.assertValue();const r=this.crypto.encrypt(n,this.n.getBytes(),e,this.k);return this.n.increment(),r}decryptWithAd(e,n,r){if(!this.hasKey())return n;this.n.assertValue();const o=this.crypto.decrypt(n,this.n.getBytes(),e,this.k,r);return this.n.increment(),o}}class Hx{cs;ck;h;crypto;constructor(e,n){this.crypto=e;const r=ve(n,"utf-8");this.h=$x(e,r),this.ck=this.h,this.cs=new qo(e)}mixKey(e){const[n,r]=this.crypto.hkdf(this.ck,e);this.ck=n,this.cs=new qo(this.crypto,r)}mixHash(e){this.h=this.crypto.hash(new ce(this.h,e))}encryptAndHash(e){const n=this.cs.encryptWithAd(this.h,e);return this.mixHash(n),n}decryptAndHash(e){const n=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),n}split(){const[e,n]=this.crypto.hkdf(this.ck,or);return[new qo(this.crypto,e),new qo(this.crypto,n)]}}class Ux{ss;s;e;rs;re;initiator;crypto;constructor(e){const{crypto:n,protocolName:r,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=n,this.ss=new Hx(n,r),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");const e=this.crypto.generateKeypair();return this.ss.mixHash(e.publicKey),this.e=e,e.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(e,n=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<n+32)throw new Error("message is not long enough");this.re=e.sublist(n,n+32),this.ss.mixHash(this.re)}readS(e,n=0){if(this.rs)throw new Error("remote static public key is already set");const r=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<n+r)throw new Error("message is not long enough");const o=e.sublist(n,n+r);return this.rs=this.ss.decryptAndHash(o),r}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}}class _p extends Ux{writeMessageA(e){return new ce(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){const n=this.writeE();this.writeEE();const r=this.writeS();return this.writeES(),new ce(n,r,this.ss.encryptAndHash(e))}writeMessageC(e){const n=this.writeS();return this.writeSE(),new ce(n,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(n){throw new to(`handshake stage 0 validation fail: ${n.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();const n=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+n))}catch(n){throw new to(`handshake stage 1 validation fail: ${n.message}`)}}readMessageC(e){try{const n=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(n))}catch(n){throw new to(`handshake stage 2 validation fail: ${n.message}`)}}}function $x(t,e){if(e.length<=32){const n=qe(32);return n.set(e),n}else return t.hash(e)}var Fs;(function(t){let e;t.codec=()=>(e==null&&(e=ii((n,r,o={})=>{if(o.lengthDelimited!==!1&&r.fork(),n.webtransportCerthashes!=null)for(const s of n.webtransportCerthashes)r.uint32(10),r.bytes(s);if(n.streamMuxers!=null)for(const s of n.streamMuxers)r.uint32(18),r.string(s);o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={webtransportCerthashes:[],streamMuxers:[]},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{if(o.limits?.webtransportCerthashes!=null&&s.webtransportCerthashes.length===o.limits.webtransportCerthashes)throw new Nd('Decode error - map field "webtransportCerthashes" had too many elements');s.webtransportCerthashes.push(n.bytes());break}case 2:{if(o.limits?.streamMuxers!=null&&s.streamMuxers.length===o.limits.streamMuxers)throw new Nd('Decode error - map field "streamMuxers" had too many elements');s.streamMuxers.push(n.string());break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>si(n,t.codec()),t.decode=(n,r)=>oi(n,t.codec(),r)})(Fs||(Fs={}));var Ms;(function(t){let e;t.codec=()=>(e==null&&(e=ii((n,r,o={})=>{o.lengthDelimited!==!1&&r.fork(),n.identityKey!=null&&n.identityKey.byteLength>0&&(r.uint32(10),r.bytes(n.identityKey)),n.identitySig!=null&&n.identitySig.byteLength>0&&(r.uint32(18),r.bytes(n.identitySig)),n.extensions!=null&&(r.uint32(34),Fs.codec().encode(n.extensions,r)),o.lengthDelimited!==!1&&r.ldelim()},(n,r,o={})=>{const s={identityKey:qe(0),identitySig:qe(0)},i=r==null?n.len:n.pos+r;for(;n.pos<i;){const a=n.uint32();switch(a>>>3){case 1:{s.identityKey=n.bytes();break}case 2:{s.identitySig=n.bytes();break}case 4:{s.extensions=Fs.codec().decode(n,n.uint32(),{limits:o.limits?.extensions});break}default:{n.skipType(a&7);break}}}return s})),e),t.encode=n=>si(n,t.codec()),t.decode=(n,r)=>oi(n,t.codec(),r)})(Ms||(Ms={}));async function Op(t,e,n){const r=await t.sign(Fp(e));return Ms.encode({identityKey:ai(t.publicKey),identitySig:r,extensions:n})}async function Dp(t,e,n){try{const r=Ms.decode(t),o=ec(r.identityKey);if(n?.equals(o)===!1)throw new Error(`Payload identity key ${o} does not match expected remote identity key ${n}`);if(!e)throw new Error("Remote static does not exist");const s=Fp(e);if(!await o.verify(s,r.identitySig))throw new Error("Invalid payload signature");return r}catch(r){throw new Qm(r.message)}}function Fp(t){const e=ve("noise-libp2p-static-key:");return t instanceof Uint8Array?qa([e,t],e.length+t.length):(t.prepend(e),t)}class qx extends Cp{stream;handshake;metrics;decoder;constructor(e,n,r){super({log:e.log,inactivityTimeout:e.inactivityTimeout,maxReadBufferLength:e.maxReadBufferLength,direction:e.direction}),this.stream=e,this.handshake=n,this.metrics=r,this.decoder=new ox({lengthDecoder:Ds,maxBufferSize:16*1024*1024,encodingLength:()=>2});const o=c=>{try{for(const l of this.decoder.decode(c.data))this.onData(this.decrypt(l))}catch(l){this.abort(l)}};this.stream.addEventListener("message",o);const s=c=>{c.error!=null?c.local===!0?this.abort(c.error):this.onRemoteReset():this.onTransportClosed()};this.stream.addEventListener("close",s);const i=()=>{this.safeDispatchEvent("drain")};this.stream.addEventListener("drain",i);const a=()=>{this.onRemoteCloseWrite()};this.stream.addEventListener("remoteCloseWrite",a)}encrypt(e){const n=new ce;for(let r=0;r<e.byteLength;r+=ru){let o=r+ru;o>e.byteLength&&(o=e.byteLength);let s;e instanceof Uint8Array?s=this.handshake.encrypt(e.subarray(r,o)):s=this.handshake.encrypt(e.sublist(r,o)),this.metrics?.encryptedPackets.increment(),n.append(Os(s.byteLength)),n.append(s)}return n}decrypt(e){const n=new ce;for(let r=0;r<e.byteLength;r+=po){let o=r+po;if(o>e.byteLength&&(o=e.byteLength),o-ou<r)throw new Error("Invalid chunk");let s;e instanceof Uint8Array?s=e.subarray(r,o):s=e.sublist(r,o);const i=e.subarray(r,o-ou);try{const a=this.handshake.decrypt(s,i);this.metrics?.decryptedPackets.increment(),n.append(a)}catch(a){throw this.metrics?.decryptErrors.increment(),a}}return n}close(e){return this.stream.close(e)}sendPause(){this.stream.pause()}sendResume(){this.stream.resume()}sendReset(e){this.stream.abort(e)}sendData(e){return{sentBytes:e.byteLength,canSendMore:this.stream.send(this.encrypt(e))}}}function uu(t,e,n){return new qx(t,e,n)}async function Kx(t,e){const{log:n,connection:r,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await Op(s,a.publicKey,l),u=new _p({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:i,s:a});Pp(u.s,n),n.trace("Stage 0 - Initiator starting to send first message."),await r.write(u.writeMessageA(or),e),n.trace("Stage 0 - Initiator finished sending first message."),Np(u.e,n),n.trace("Stage 1 - Initiator waiting to receive first message from responder...");const f=u.readMessageB(await r.read(e));n.trace("Stage 1 - Initiator received the message."),Lp(u.re,n),Ox(u.rs,n),n.trace("Initiator going to check remote's signature...");const h=await Dp(f,u.rs,c);n.trace("All good with the signature!"),n.trace("Stage 2 - Initiator sending third handshake message."),await r.write(u.writeMessageC(d),e),n.trace("Stage 2 - Initiator sent message with signed payload.");const[g,m]=u.ss.split();return Bp(g,m,n),{payload:h,encrypt:b=>g.encryptWithAd(or,b),decrypt:(b,w)=>m.decryptWithAd(or,b,w)}}async function zx(t,e){const{log:n,connection:r,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await Op(s,a.publicKey,l),u=new _p({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:i,s:a});Pp(u.s,n),n.trace("Stage 0 - Responder waiting to receive first message."),u.readMessageA(await r.read(e)),n.trace("Stage 0 - Responder received first message."),Lp(u.re,n),n.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await r.write(u.writeMessageB(d),e),n.trace("Stage 1 - Responder sent the second handshake message with signed payload."),Np(u.e,n),n.trace("Stage 2 - Responder waiting for third handshake message...");const f=u.readMessageC(await r.read(e));n.trace("Stage 2 - Responder received the message, finished handshake.");const h=await Dp(f,u.rs,c),[g,m]=u.ss.split();return Bp(g,m,n),{payload:h,encrypt:b=>m.encryptWithAd(or,b),decrypt:(b,w)=>g.decryptWithAd(or,b,w)}}class Wx{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;log;constructor(e,n={}){const{staticNoiseKey:r,extensions:o,crypto:s,prologueBytes:i}=n,{metrics:a}=e;this.components=e,this.log=e.logger.forComponent("libp2p:noise");const c=s??Lx;this.crypto=Bx(c),this.extensions={webtransportCerthashes:[],...o},this.metrics=a?_x(a):void 0,r?this.staticKey=c.generateX25519KeyPairFromSeed(r):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??qe(0)}[Symbol.toStringTag]="@chainsafe/libp2p-noise";[aw]=["@libp2p/connection-encryption","@chainsafe/libp2p-noise"];async secureOutbound(e,n){const r=e.log?.newScope("noise")??this.log,o=nu(e,{lengthEncoder:Os,lengthDecoder:Ds,maxDataLength:po}),s=await this.performHandshakeInitiator(o,this.components.privateKey,r,n?.remotePeer?.publicKey,n),i=ec(s.payload.identityKey);return{connection:uu(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:ur(i),streamMuxer:n?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}getStreamMuxer(e){if(e==null||e.length===0)return;const n=this.components.upgrader.getStreamMuxers();if(n!=null)for(const r of e){const o=n.get(r);if(o!=null)return o}if(e.length)throw new ew("Early muxer negotiation was requested but the initiator and responder had no common muxers")}async secureInbound(e,n){const r=e.log?.newScope("noise")??this.log,o=nu(e,{lengthEncoder:Os,lengthDecoder:Ds,maxDataLength:po}),s=await this.performHandshakeResponder(o,this.components.privateKey,r,n?.remotePeer?.publicKey,n),i=ec(s.payload.identityKey);return{connection:uu(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:ur(i),streamMuxer:n?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}async performHandshakeInitiator(e,n,r,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await Kx({connection:e,privateKey:n,remoteIdentityKey:o,log:r.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}async performHandshakeResponder(e,n,r,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await zx({connection:e,privateKey:n,remoteIdentityKey:o,log:r.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}}function Gx(t={}){return e=>new Wx(e,t)}const Vx="termdock-e2ee-v1",cc=3600*1e3,fu=512*1024*1024,lc=4*1024*1024,ts=()=>{},di=Object.assign(ts,{enabled:!1,error:ts,trace:ts,newScope:()=>di});Object.freeze(di);async function Mp(){const t=await fv();return{privateKey:t,peerId:ur(t.publicKey).toString()}}function Xx(t){return btoa(String.fromCharCode(...gv(t.privateKey)))}function hu(t){if(t.length>512||!/^[A-Za-z0-9+/]+={0,2}$/.test(t))throw new Error("Invalid identity encoding");const e=pv(Uint8Array.from(atob(t),n=>n.charCodeAt(0)));if(e.type!=="Ed25519")throw new Error("Only Ed25519 device identities are supported");return{privateKey:e,peerId:ur(e.publicKey).toString()}}class jp{constructor(e=ts){this.consumed=e}consumed;chunks=[];size=0;ended=!1;error;wake;push(e){if(this.ended)throw this.error??new Error("Byte stream closed");if(this.size+e.byteLength>lc)throw new Error("Secure stream buffer limit exceeded");this.chunks.push(e.slice()),this.size+=e.byteLength,this.wake?.()}end(e){this.ended=!0,this.error??=e,this.wake?.()}async*[Symbol.asyncIterator](){for(;;){if(this.error)throw this.error;const e=this.chunks.shift();if(e)this.size-=e.byteLength,yield e,this.consumed();else{if(this.ended)return;await new Promise(n=>{this.wake=n})}}}}class Yx extends Cp{constructor(e,n){super({log:di,direction:n?"outbound":"inbound",maxReadBufferLength:lc,maxWriteBufferLength:lc}),this.duplex=e,this.finished=e.sink(this.outgoing).catch(r=>{this.abort(fr(r))}),this.readTransport()}duplex;outgoing=new jp(()=>this.onMuxerDrain());finished;async readTransport(){try{for await(const e of this.duplex.source)this.onData(e.slice());this.onTransportClosed()}catch(e){this.onTransportClosed(fr(e))}}sendData(e){return this.outgoing.push(e.subarray()),{sentBytes:e.byteLength,canSendMore:!1}}sendReset(e){this.outgoing.end(e),this.duplex.close?.(e)}sendPause(){}sendResume(){}async close(){this.outgoing.end(),this.duplex.close?.(),this.onTransportClosed(),await this.finished}}function fr(t){return t instanceof Error?t:new Error("Secure transport failed")}class Zx extends Error{code="E2EE_REHANDSHAKE_REQUIRED";constructor(){super("Encrypted connection lifetime reached; establish a new handshake without replaying pending input")}}function Jx(t){const e=t?.maxAgeMs??cc,n=t?.maxBytesPerDirection??fu;if(!Number.isSafeInteger(e)||e<=0||e>cc||!Number.isSafeInteger(n)||n<=0||n>fu)throw new Error("Encrypted connection limits cannot exceed the production maximum");return{maxAgeMs:e,maxBytesPerDirection:n}}async function Qx(t){const{identity:e,duplex:n,initiator:r,targetPinnedPeerId:o,signal:s}=t,i=Jx(t.limits);if(typeof Reflect.get(Promise,"withResolvers")!="function"||typeof globalThis.crypto?.getRandomValues!="function")throw new Error("End-to-end encryption requires Node.js 22+ or a modern browser with Promise.withResolvers and secure random support");if(r&&!o)throw new Error("A pinned target identity is required");const a=o?bv(o):void 0;if(a&&a.type!=="Ed25519")throw new Error("Only Ed25519 target identities are supported");if(e.peerId!==ur(e.privateKey.publicKey).toString())throw new Error("Local identity mismatch");if(s?.aborted)throw s.reason??new Error("Connection aborted");const c=new Yx(n,r),l=new AbortController,d=setTimeout(()=>{const h=new Error("Encrypted handshake timed out");l.abort(h),c.abort(h)},15e3),u=()=>{l.abort(s?.reason),c.abort(fr(s?.reason))};s?.addEventListener("abort",u,{once:!0}),c.addEventListener("close",()=>s?.removeEventListener("abort",u),{once:!0});const f=Gx({crypto:Tp,prologueBytes:new TextEncoder().encode(Vx)})({privateKey:e.privateKey,peerId:ur(e.privateKey.publicKey),logger:{forComponent:()=>di},upgrader:{getStreamMuxers:()=>new Map}});try{const h=await(r?f.secureOutbound(c,{remotePeer:a,signal:l.signal,skipStreamMuxerNegotiation:!0}):f.secureInbound(c,{remotePeer:a,signal:l.signal,skipStreamMuxerNegotiation:!0}));if(h.remotePeer.type!=="Ed25519")throw new Error("Unsupported remote identity");return{authenticatedPeerId:h.remotePeer.toString(),duplex:eE(h.connection,i)}}catch(h){throw c.abort(fr(h)),h}finally{clearTimeout(d),s?.removeEventListener("abort",u)}}function eE(t,e){const n=new jp,r=performance.now(),o=Date.now();let s=0,i=0,a;const c=()=>(a??=new Zx,n.end(a),t.abort(a),a),l=setTimeout(c,e.maxAgeMs);typeof l=="object"&&l.unref?.();const d=(f,h)=>{if(a)throw a;if(Math.max(performance.now()-r,Date.now()-o)>=e.maxAgeMs||f+h>=e.maxBytesPerDirection)throw c()};t.addEventListener("message",f=>{try{d(i,f.data.byteLength),i+=f.data.byteLength,n.push(f.data.subarray())}catch(h){t.abort(fr(h))}}),t.addEventListener("close",f=>{clearTimeout(l),n.end(f.error)},{once:!0});let u=!1;return{source:n,async sink(f){if(u)throw new Error("Secure sink already consumed");u=!0;try{for await(const h of f)d(s,h.byteLength),s+=h.byteLength,t.send(h)||await t.onDrain()}catch(h){throw t.abort(fr(h)),h}},close(f){f?t.abort(f):t.close()}}}const Hp=1012,Up="Encrypted transport renewed";class vl{constructor(e=64){this.limit=e}limit;items=[];wake;ended=!1;error;push(e){if(this.ended)throw new Error("Channel closed");if(this.items.length>=this.limit)throw this.end(new Error("Channel queue exceeded")),this.error;this.items.push(e),this.wake?.()}end(e){this.ended=!0,this.error??=e,this.wake?.()}async*[Symbol.asyncIterator](){for(;;){if(this.error)throw this.error;const e=this.items.shift();if(e!==void 0){yield e;continue}if(this.ended)return;await new Promise(n=>{this.wake=n}),this.wake=void 0}}}const Gi=2*1024*1024,tE=new TextEncoder,nE=new TextDecoder("utf-8",{fatal:!0});class rE{constructor(e){this.duplex=e;const n=this;this.done=e.sink((async function*(){for await(const r of n.outgoing)try{yield r}finally{n.outgoingBytes-=r.byteLength}})()),this.done.catch(r=>this.close(r instanceof Error?r:new Error("Transport failed")))}duplex;outgoing=new vl(256);outgoingBytes=0;get hasPendingWrites(){return this.outgoingBytes>0}done;send(e){const n=tE.encode(JSON.stringify(e));if(n.length>Gi)throw new Error("Record too large");const r=new Uint8Array(n.length+4);if(new DataView(r.buffer).setUint32(0,n.length),r.set(n,4),this.outgoingBytes+r.byteLength>4*1024*1024)throw new Error("Record queue byte budget exceeded");this.outgoingBytes+=r.byteLength;try{this.outgoing.push(r)}catch(o){throw this.outgoingBytes-=r.byteLength,o}}close(e){this.outgoing.end(e),this.duplex.close?.(e)}async*read(){let e=new Uint8Array(0);for await(const n of this.duplex.source){if(e.length+n.length>Gi*2+8)throw new Error("Record buffer exceeded");const r=new Uint8Array(e.length+n.length);for(r.set(e),r.set(n,e.length),e=r;e.length>=4;){const o=new DataView(e.buffer,e.byteOffset,4).getUint32(0);if(o>Gi||o===0)throw new Error("Invalid record size");if(e.length<o+4)break;const s=JSON.parse(nE.decode(e.subarray(4,o+4)));if(!s||typeof s!="object"||typeof s.id!="string"||typeof s.type!="string")throw new Error("Invalid record");yield s,e=e.slice(o+4)}}if(e.length)throw new Error("Truncated record")}}function $p(t){let e="";for(let n=0;n<t.length;n+=8192)e+=String.fromCharCode(...t.subarray(n,n+8192));return btoa(e)}function qp(t){const e=atob(t);return Uint8Array.from(e,n=>n.charCodeAt(0))}function oE(t){const e=new vl(64);t.binaryType="arraybuffer";const n=r=>{e.end(r),t.close(1e3)};return t.addEventListener("message",r=>{try{if(!(r.data instanceof ArrayBuffer)||r.data.byteLength>1024*1024)throw new Error("Invalid encrypted frame");e.push(new Uint8Array(r.data))}catch{n(new Error("Encrypted transport rejected frame"))}}),t.addEventListener("close",()=>e.end()),t.addEventListener("error",()=>e.end(new Error("Encrypted transport disconnected"))),{source:e,close:n,async sink(r){try{for await(const o of r)for(let s=0;s<o.length;s+=64*1024){const i=Date.now();for(;t.bufferedAmount>256*1024;){if(t.readyState!==1||Date.now()-i>15e3)throw new Error("Encrypted transport congested");await new Promise(a=>setTimeout(a,10))}if(t.readyState!==1)throw new Error("Encrypted transport closed");t.send(o.subarray(s,s+64*1024))}}catch(o){throw n(o instanceof Error?o:new Error("Encrypted transport failed")),o}}}}const Kp=8,zp=128,sE=5*1024*1024,iE=zp+Kp+8,aE=256,Ko=3e4,_r=64*1024;function Wt(t){return t instanceof Error?t:new Error(String(t??"Secure connection closed"))}function pu(t){if(!t.startsWith("/")||t.startsWith("//")||t.includes("#"))throw new Error("A local API path is required");return t}class Wp extends EventTarget{constructor(e,n,r){super(),this.url=e,this.transmit=n,this.disconnect=r}url;transmit;disconnect;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;binaryType="arraybuffer";bufferedAmount=0;protocol="termdock-e2ee-v1";extensions="";getConnectionDiagnostics;createdAt=performance.now();openedAfterMs;readyState=0;onopen=null;onmessage=null;onerror=null;onclose=null;send(e){if(this.readyState!==1)throw new Error("Secure socket is not open");if(typeof e!="string"||new TextEncoder().encode(e).length>1024*1024)throw new Error("Unsupported socket payload");this.transmit(e)}close(e=1e3,n=""){this.readyState!==3&&(this.disconnect(),this.finish(e,n))}accept(e){if(this.readyState!==3)if(e.type==="ws-ready"){this.openedAfterMs=performance.now()-this.createdAt,this.readyState=1;const n=new Event("open");this.dispatchEvent(n),this.onopen?.(n)}else if(e.type==="ws-data"&&typeof e.data=="string"){const n=new MessageEvent("message",{data:e.data});this.dispatchEvent(n),this.onmessage?.(n)}else e.type==="ws-close"?this.finish(typeof e.code=="number"?e.code:1e3,typeof e.reason=="string"?e.reason:""):e.type==="error"&&this.fail(Wt(e.error))}fail(e){if(this.readyState===3)return;const n=new Event("error");this.dispatchEvent(n),this.onerror?.(n),this.finish(1006,e.message)}finish(e,n){if(this.readyState===3)return;this.readyState=3;const r=new CloseEvent("close",{code:e,reason:n,wasClean:e===1e3});this.dispatchEvent(r),this.onclose?.(r)}}class cE{constructor(e,n,r){this.channel=e,this.identity=n,this.targetPeerId=r,this.read().catch(o=>this.close(Wt(o))),e.done.catch(o=>this.close(Wt(o)))}channel;identity;targetPeerId;transportDiagnostics;establishedAt=performance.now();establishedWallTime=Date.now();lastInputAt=-1/0;pending=new Map;waiting=[];stopped=!1;closeReason;get canSwitchTransport(){return!this.channel.hasPendingWrites&&performance.now()-this.lastInputAt>=2e3&&![...this.pending.values()].some(e=>e.kind!=="socket")&&!this.waiting.some(e=>e.kind!=="socket")}get renewalDue(){return!this.stopped&&Math.max(performance.now()-this.establishedAt,Date.now()-this.establishedWallTime)>=cc-5*6e4}get closed(){return this.stopped}hasCapacity(e){if(this.pending.size>=iE)return!1;const n=[...this.pending.values()].filter(r=>r.kind===e).length;return e==="http"?n<Kp:e==="socket"?n<zp:!0}allocate(e){if(this.stopped)throw this.closeReason??new Error("Secure connection closed");const n=crypto.randomUUID(),r=new vl(4);return this.pending.set(n,{queue:r,kind:e}),{id:n,queue:r}}reserve(e,n){return n?.aborted?Promise.reject(n.reason):this.stopped?Promise.reject(this.closeReason??new Error("Secure connection closed")):this.hasCapacity(e)?Promise.resolve(this.allocate(e)):this.waiting.length>=aE?Promise.reject(new Error("连接繁忙,请稍后重试。")):new Promise((r,o)=>{const s=l=>{this.waiting=this.waiting.filter(d=>d!==c),c.cleanup(),o(l)},i=()=>s(n?.reason??new Error("Request aborted")),a=setTimeout(()=>s(new Error("连接等待超时,请重试。")),Ko),c={kind:e,resolve:r,reject:o,cleanup:()=>{clearTimeout(a),n?.removeEventListener("abort",i)}};this.waiting.push(c),n?.addEventListener("abort",i,{once:!0})})}dispatchWaiting(){if(!this.stopped)for(let e=0;e<this.waiting.length;){const n=this.waiting[e];if(!this.hasCapacity(n.kind)){e++;continue}this.waiting.splice(e,1),n.cleanup(),n.resolve(this.allocate(n.kind))}}async read(){try{for await(const e of this.channel.read()){const n=this.pending.get(e.id);n&&(n.socket?(n.socket.accept(e),(e.type==="ws-close"||e.type==="error")&&this.release(e.id)):(n.queue.push(e),(e.type==="end"||e.type==="error")&&(n.cancelUpload?.(),this.release(e.id))))}}finally{this.close(new Error("Secure connection closed"))}}release(e){this.pending.get(e)?.queue.end(),this.pending.delete(e),this.dispatchWaiting()}async request(e,n){const{id:r,queue:o}=await this.reserve("request"),s=setTimeout(()=>this.close(new Error("Secure connection timed out")),Math.max(1e3,Math.min(Ko,n?.timeoutMs??Ko)));try{if(this.stopped)throw this.closeReason;this.channel.send({...e,id:r});const i=(await o[Symbol.asyncIterator]().next()).value;if(!i)throw new Error("Secure request closed");if(i.type==="error")throw Wt(i.error);return i}finally{clearTimeout(s),this.release(r)}}openSocket(e){pu(e);let n;const r=new AbortController,o=new Wp(e,i=>{if(n){try{JSON.parse(i)?.type==="input"&&(this.lastInputAt=performance.now())}catch{}this.channel.send({id:n,type:"ws-data",data:i})}},()=>{if(r.abort(),n)try{this.channel.send({id:n,type:"ws-close"})}finally{this.release(n)}});let s;return o.getConnectionDiagnostics=()=>{const i=this.transportDiagnostics?.();return i?{...i,socketOpenMs:o.openedAfterMs,socketQueueMs:s,pendingWrites:this.channel.hasPendingWrites,activeRequests:[...this.pending.values()].filter(a=>a.kind!=="socket").length,waitingRequests:this.waiting.length}:void 0},this.reserve("socket",r.signal).then(i=>{if(s=performance.now()-o.createdAt,n=i.id,o.readyState===3){this.release(n);return}const a=this.pending.get(n);if(!a)throw new Error("Secure connection closed");a.socket=o,this.channel.send({id:n,type:"ws-open",path:e})}).catch(i=>{n&&this.release(n),o.fail(Wt(i))}),o}async fetch(e,n){const r=typeof location>"u"?"https://termdock.invalid":location.origin,o=e instanceof Request?e:null,s=new URL(o?.url??String(e),r);if(s.origin!==r)throw new Error("Only current-service API requests are supported");const i=new Request(s,o?new Request(o,n):n),a=i.method.toUpperCase(),c=pu(s.pathname+s.search),l=s.pathname==="/api/terminal/fs/upload"?110*1024*1024:sE;if(i.signal.aborted)throw i.signal.reason;const d={};i.headers.forEach((k,N)=>{["cookie","authorization","host","connection","content-length"].includes(N)||(d[N]=k)});const{id:u,queue:f}=await this.reserve("http",i.signal),h=f[Symbol.asyncIterator]();let g;const m=()=>{g?.cancel().catch(()=>{})},b=this.pending.get(u);if(!b)throw new Error("Secure connection closed");b.cancelUpload=m;const w=()=>{m();try{this.channel.send({id:u,type:"cancel"})}catch{}f.end(Wt(i.signal.reason??"Request aborted")),this.release(u)};i.signal.addEventListener("abort",w,{once:!0});const I=()=>{i.signal.removeEventListener("abort",w),this.release(u)},y=async()=>{let k;try{const N=(await Promise.race([h.next(),new Promise((x,T)=>{k=setTimeout(()=>T(new Error("服务响应超时,请重试。")),Ko)})])).value;if(!N)throw new Error("Secure response ended unexpectedly");if(N.type==="error")throw Wt(N.error);return N}finally{clearTimeout(k)}};try{if(i.signal.aborted)throw i.signal.reason;if(this.channel.send({id:u,type:"http",method:a,path:c,headers:d}),i.body){const S=i.body.getReader();g=S;let v=0,A=0;try{for(;;){const{done:O,value:B}=await S.read();if(O)break;if(v+=B.byteLength,v>l)throw new Error("Request body exceeds upload limit");for(let C=0;C<B.byteLength;C+=_r){if(this.channel.send({id:u,type:"upload",data:$p(B.subarray(C,C+_r))}),(await y()).type!=="upload-ack")throw new Error("Invalid upload acknowledgement");A+=Math.min(_r,B.byteLength-C),n?.onUploadProgress?.(A)}}}catch(O){throw await S.cancel(O).catch(()=>{}),O}finally{g=void 0,S.releaseLock()}}if(i.signal.aborted||this.stopped)throw new Error("Request aborted");this.channel.send({id:u,type:"upload-end"});const k=await y();if(k.type!=="head"||typeof k.status!="number")throw new Error("Invalid response header");const N=new Headers(k.headers);if(a==="HEAD"||[204,205,304].includes(k.status)){if((await y()).type!=="end")throw new Error("Unexpected response body");return I(),new Response(null,{status:k.status,headers:N})}let x=!1;const T=new ReadableStream({pull:async S=>{try{x&&(this.channel.send({id:u,type:"ack"}),x=!1);const v=await y();if(v.type==="end"){S.close(),I();return}if(v.type!=="chunk"||typeof v.data!="string")throw new Error("Invalid response chunk");const A=qp(v.data);if(A.length>_r)throw new Error("Response chunk exceeds budget");S.enqueue(A),x=!0}catch(v){S.error(v),w(),I()}},cancel:()=>{w(),I()}},{highWaterMark:_r,size:S=>S.byteLength});return new Response(T,{status:k.status,headers:N})}catch(k){throw w(),I(),k}}retire(){for(const e of this.pending.values())e.socket?.accept({id:"",type:"ws-close",code:Hp,reason:Up});this.close()}close(e=new Error("Secure connection closed")){if(!this.stopped){this.stopped=!0,this.closeReason=e;for(const n of this.waiting.splice(0))n.cleanup(),n.reject(e);for(const n of this.pending.values())n.queue.end(e),n.cancelUpload?.(),n.socket?.fail(e);this.pending.clear(),this.channel.close(e)}}}async function vn(t){const e=new URL(t.url);if(!["wss:","ws:"].includes(e.protocol))throw new Error("A WebSocket endpoint is required");if(e.protocol==="ws:"&&!["127.0.0.1","localhost","[::1]"].includes(e.hostname))throw new Error("Remote secure channels require WSS");const n=t.identity??await Mp(),r=performance.now(),o=(t.socketFactory??(l=>new WebSocket(l)))(e.href),s=oE(o),i=new AbortController,a=setTimeout(()=>i.abort(new Error("Secure handshake timed out")),2e4),c=t.signal?AbortSignal.any([t.signal,i.signal]):i.signal;try{await new Promise((m,b)=>{if(c.aborted){b(c.reason);return}const w=()=>{c.removeEventListener("abort",k),o.removeEventListener("open",I),o.removeEventListener("error",y),o.removeEventListener("close",y)},I=()=>{w(),m()},y=()=>{w(),b(new Error("Secure transport unavailable"))},k=()=>{w(),b(c.reason)};c.addEventListener("abort",k,{once:!0}),o.addEventListener("open",I),o.addEventListener("error",y),o.addEventListener("close",y),o.readyState===1&&I()});const l=performance.now(),d=await Qx({identity:n,duplex:s,initiator:!0,targetPinnedPeerId:t.targetPeerId,signal:c}),u=new cE(new rE(d.duplex),n,d.authenticatedPeerId),f=performance.now(),h=Date.now(),g=o.connectionTimings;if(u.transportDiagnostics=()=>({endpoint:e.host,path:g?"relay":"direct",targetPeerId:d.authenticatedPeerId,transportOpenMs:l-r,handshakeMs:f-l,establishedAt:h,relay:g?{...g}:void 0,bufferedBytes:o.bufferedAmount,pendingWrites:!1,activeRequests:0,waitingRequests:0}),t.pairingCode)try{await u.request({type:"pair",code:t.pairingCode})}catch(m){throw u.close(Wt(m)),m}return u}catch(l){throw o.close(),l}finally{clearTimeout(a)}}const gu=256*1024,lE=1024*1024;class dE extends EventTarget{constructor(e,n,r=o=>new WebSocket(o)){if(super(),this.url=e,!/^[a-zA-Z0-9_.:-]{1,160}$/.test(n))throw new Error("Invalid target identity");const o=performance.now();let s;this.upstream=r(e),this.upstream.addEventListener("open",()=>{this.connectionTimings.entryOpenMs=performance.now()-o}),this.deadline=setTimeout(()=>this.fail("Relay connection timed out"),2e4),this.upstream.addEventListener("message",i=>{if(this.readyState!==3)try{if(typeof i.data!="string"||new TextEncoder().encode(i.data).length>gu)throw new Error("Invalid relay envelope");const a=JSON.parse(i.data);if(a.type==="ready"&&!this.requested){s=performance.now(),this.requested=!0,this.transmit({type:"open",streamId:this.streamId,serviceId:n});return}if(a.streamId!==this.streamId)return;if(a.type==="opened"&&this.readyState===0){this.connectionTimings.routeOpenMs=s===void 0?null:performance.now()-s,clearTimeout(this.deadline),this.readyState=1;const u=new Event("open");this.dispatchEvent(u),this.onopen?.(u);return}if(a.type==="close"){this.finish(1001,"Relay route closed"),this.upstream.close();return}if(a.type!=="data"||this.readyState!==1||a.encoding!=="base64"||typeof a.payload!="string"||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(a.payload))throw new Error("Invalid ciphertext relay frame");const c=qp(a.payload),l=this.binaryType==="blob"?new Blob([c]):c.buffer,d=new MessageEvent("message",{data:l});this.dispatchEvent(d),this.onmessage?.(d)}catch{this.fail("Relay protocol rejected frame")}}),this.upstream.addEventListener("close",i=>this.finish(i.code||1006,"Relay disconnected")),this.upstream.addEventListener("error",()=>this.fail("Relay transport unavailable"))}url;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;protocol="";extensions="";binaryType="arraybuffer";readyState=0;onopen=null;onmessage=null;onerror=null;onclose=null;connectionTimings={entryOpenMs:null,routeOpenMs:null};upstream;streamId=crypto.randomUUID();requested=!1;deadline;get bufferedAmount(){return this.upstream.bufferedAmount}transmit(e){const n=JSON.stringify(e);if(this.upstream.readyState!==1||this.upstream.bufferedAmount+n.length>lE||n.length>gu)throw new Error("Relay unavailable or congested");this.upstream.send(n)}send(e){if(this.readyState!==1)throw new Error("Relay socket is not open");let n;if(ArrayBuffer.isView(e))n=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);else if(e instanceof ArrayBuffer)n=new Uint8Array(e);else throw new Error("Relay secure transport requires binary bytes");try{this.transmit({type:"data",streamId:this.streamId,encoding:"base64",payload:$p(n)})}catch(r){throw this.fail("Relay transport congested"),r}}close(e=1e3,n=""){if(this.readyState!==3){try{this.requested&&this.transmit({type:"close",streamId:this.streamId})}catch{}this.finish(e,n),this.upstream.close()}}fail(e){if(this.readyState===3)return;const n=new Event("error");this.dispatchEvent(n),this.onerror?.(n),this.finish(1006,e),this.upstream.close()}finish(e,n){if(this.readyState===3)return;clearTimeout(this.deadline),this.readyState=3;const r=new CloseEvent("close",{code:e,reason:n,wasClean:e===1e3});this.dispatchEvent(r),this.onclose?.(r)}}function Gp(t){return e=>new dE(e,t)}function uE(t){if(typeof t!="string"||!t.startsWith("/api/")||/[\\\x00-\x20\x7f#]/.test(t))return null;const e=t.split("?")[0];if(e.includes("//"))return null;try{const r=e.split("/").map((o,s)=>{if(s===0||o===""&&s===e.split("/").length-1)return o;const i=decodeURIComponent(o);if(!i||i==="."||i===".."||/[\\/\x00-\x1f\x7f]/.test(i)||/%[a-f0-9]{2}/i.test(i))throw new Error("Ambiguous API path");return i}).join("/");return r.endsWith("/")&&!r.startsWith("/api/terminal/fs/preview/")?null:r}catch{return null}}function fE(t){if(!("serviceWorker"in navigator))return()=>{};const e=new Set,n=r=>{if(r.source!==navigator.serviceWorker.controller||r.data?.type!=="termdock-secure-fetch"||r.ports.length!==1)return;const o=r.ports[0],{path:s,method:i,headers:a,body:c,expectedTargetPeerId:l,previewPrefix:d}=r.data;let u;try{u=new URL(s,location.origin)}catch{o.close();return}if(u.origin!==location.origin||!u.pathname.startsWith("/api/")||e.size>=32||typeof i!="string"||c!==void 0&&(!(c instanceof ArrayBuffer)||c.byteLength>5*1024*1024)){o.postMessage({type:"error"}),o.close();return}if(d!==void 0&&(typeof d!="string"||!d.endsWith("/")||!/^\/api\/terminal\/fs\/preview\/[a-f0-9]{32}\//.test(d)||!["GET","HEAD"].includes(i)||!uE(u.pathname)?.startsWith(d))){o.postMessage({type:"error"}),o.close();return}const f=new AbortController;let h,g,m=!1,b=!1;const w=()=>{b||(b=!0,e.delete(w),f.abort(),h?.cancel().catch(()=>{}),o.close())};e.add(w),o.onmessage=I=>{if(I.data?.type==="cancel"){w();return}I.data?.type!=="pull"||m||b||(m=!0,(async()=>{if(!h){o.postMessage({type:"end"}),w();return}if(!g?.length){const k=await h.read();if(k.done){o.postMessage({type:"end"}),w();return}g=k.value}const y=g.slice(0,64*1024);g=g.subarray(y.length),o.postMessage({type:"chunk",data:y.buffer},[y.buffer])})().catch(()=>{o.postMessage({type:"error"}),w()}).finally(()=>{m=!1}))},o.onmessageerror=w,o.start(),(async()=>{const I=await t();if(b)return;if(l&&l!==I.targetPeerId)throw new Error("Preview target changed");const y=await I.fetch(u.pathname+u.search,{method:i,headers:a,body:["GET","HEAD"].includes(i)?void 0:c,signal:f.signal});if(b){await y.body?.cancel();return}h=y.body?.getReader();const k={};y.headers.forEach((N,x)=>{k[x]=N}),o.postMessage({type:"head",status:y.status,headers:k,bodyless:!h,targetPeerId:I.targetPeerId})})().catch(()=>{b||(o.postMessage({type:"error"}),w())})};return navigator.serviceWorker.addEventListener("message",n),()=>{navigator.serviceWorker.removeEventListener("message",n);for(const r of[...e])r()}}class tt extends Error{constructor(){super("Device authorization expired or revoked")}}const zo=new WeakMap;function br(t,e={}){const n=zo.get(t);if(!t.closed&&n&&(!n.settled||Date.now()-n.at<(e.maxAgeMs??1e3)))return n.pending;const r={at:Date.now(),settled:!1,pending:void 0},o=hE(t,e.timeoutMs??5e3).then(s=>(r.at=Date.now(),r.settled=!0,s),s=>{throw zo.get(t)===r&&zo.delete(t),s});return r.pending=o,zo.set(t,r),o}async function hE(t,e){const n=await t.request({type:"permissions"},{timeoutMs:e});if(n.type!=="result"||typeof n.fullService!="boolean"||!Array.isArray(n.grants))throw new Error("Invalid permission response");const r=n.grants,o=n.fullService===!0;if(!o&&r.length===0)throw new tt;return{fullService:o,grants:r,canManage:o&&r.length>0||r.some(s=>s.actions.includes("authorization.manage"))}}const Vp="termdock-secure-last-path:",pE=10*6e4;function Xp(t){try{const e=JSON.parse(sessionStorage.getItem(Vp+t)||"null");return e&&typeof e.key=="string"&&Date.now()-e.at<pE?e.key:void 0}catch{return}}function dc(t,e){try{sessionStorage.setItem(Vp+t,JSON.stringify({key:e,at:Date.now()}))}catch{}}function Yp(t,e,n=!1){return new Promise((r,o)=>{let s=0,i=0,a=!1,c,l;const d=new Set,u=()=>{clearTimeout(l);for(const h of d)h.abort();d.clear()},f=()=>{if(a)return;if(s>=t.length){i||(a=!0,u(),o(c||new Error("没有可用的连接路线。")));return}if(i>=(n?1:2))return;const h=t[s++],g=performance.now(),m=w=>{performance.getEntriesByName("termdock:connection-path").length>64&&performance.clearMeasures("termdock:connection-path"),performance.measure("termdock:connection-path",{start:g,end:performance.now(),detail:{path:h.key.startsWith("relay:")?"relay":"direct",ok:w}})},b=new AbortController;d.add(b),i++,h.run(b.signal).then(w=>{if(m(!0),d.delete(b),a){e(w);return}a=!0,u(),r({value:w,key:h.key})},w=>{if(m(!1),d.delete(b),i--,!a){if(c=w,w instanceof tt){a=!0,u(),o(w);return}f()}}),clearTimeout(l),!n&&s<t.length&&(l=setTimeout(f,400))};f()})}const gE=3,mE=1/0,wE=10,Zp="termdock-secure-workspace-limit";function Jp(t){return t===1/0||Number.isInteger(t)&&t>=3&&t<=wE}function yE(){try{const t=localStorage.getItem(Zp),e=t==="unlimited"?1/0:Number(t);if(Jp(e))return e}catch{}return navigator.maxTouchPoints>0?gE:mE}function bE(t,e,n,r){if(t.length<=r)return t;const o=new Set(["root",e,...n?[n]:[]]),s=[...t].reverse().sort((i,a)=>a.touchedAt-i.touchedAt);for(const i of s){if(o.size>=r)break;o.add(i.key)}return t.filter(i=>o.has(i.key))}const Qp="termdock-workspace",go="termdock:workspace-visibility",uc="termdock:workspace-activate";function ui(){return window.parent!==window&&location.pathname==="/workspace.html"&&new URLSearchParams(location.search).get(Qp)||"root"}let mu,wu;function mt(){try{if(window.parent===window)return window.__termdockWorkspaceHost;const t=window.parent.__termdockWorkspaceHost;return t&&t!==mu&&(mu=t,wu={...t,subscribe(e){const n=t.subscribe(e,ui()),r=o=>{o.persisted||n()};return window.addEventListener("pagehide",r),()=>{n(),window.removeEventListener("pagehide",r)}}}),t?wu:void 0}catch{return}}function ns(){const t=mt();return!t||t.snapshot().activeKey===ui()}function js(t,e=!0){return mt()?.activate(t,e)??!1}function $n(t){mt()?.report(ui(),t)}const fc="termdock-secure-workspace-session:",eg="termdock-secure-last-workspace";function vE(){for(const t of["sessionStorage","localStorage"])try{const e=window[t].getItem(eg);if(e)return e}catch{}return null}function SE(t){for(const e of["sessionStorage","localStorage"])try{window[e].setItem(eg,t)}catch{}}function NR(t){if(t)try{const e=JSON.parse(localStorage.getItem(fc+t)||"null");return localStorage.removeItem(fc+t),e&&typeof e.sessionId=="string"&&Date.now()-e.at<6e4?e.sessionId:void 0}catch{return}}function xE(t){if(window.parent!==window||window.termdockDesktop)return;if(window.__termdockWorkspaceHost)return window.__termdockWorkspaceHost;let e={activeKey:"root",items:[{key:"root",service:t,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()}]};try{const u=vE(),f=t&&u!==t.targetPeerId?wn().find(h=>h.targetPeerId===u):void 0;f?.targetPeerId&&(e={activeKey:f.targetPeerId,items:[...e.items,{key:f.targetPeerId,service:f,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()}]})}catch{}let n=yE(),r=e.activeKey==="root"?"root":null;const o=new Map,s=new Map([["root",window]]),i=new Set,a=()=>{for(const u of[...o.keys()])u()},c=()=>{const u=bE(e.items,e.activeKey,r,n),f=new Set(u.map(h=>h.key));e={...e,items:u};for(const[h,g]of o)g&&!f.has(g)&&o.delete(h);for(const h of s.keys())f.has(h)||s.delete(h);for(const h of i)f.has(h)||i.delete(h)},l=(u,f)=>{try{const h=f.document.createEvent("CustomEvent");if(h.initCustomEvent(go,!1,!1,{active:e.activeKey===u}),f.dispatchEvent(h),e.activeKey===u){const g=f.document.createEvent("Event");if(g.initEvent("resize",!1,!1),f.dispatchEvent(g),i.delete(u)){const m=f.document.createEvent("Event");m.initEvent(uc,!1,!1),f.dispatchEvent(m)}}else f.document.activeElement?.blur?.()}catch{}},d={snapshot:()=>e,subscribe:(u,f)=>(o.set(u,f),()=>{o.delete(u)}),present(u){r=u},retentionLimit:()=>n,setRetentionLimit(u){if(Jp(u)){n=u;try{localStorage.setItem(Zp,u===1/0?"unlimited":String(u))}catch{}c(),a()}},activate(u,f=!0){const h=Ys(u);if(!h?.targetPeerId)return!1;const g=e.items.find(w=>w.service?.targetPeerId===h.targetPeerId),m=g?.key||h.targetPeerId,b=g?{...g,service:h,touchedAt:Date.now()}:{key:m,service:h,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()};e={activeKey:m,items:g?e.items.map(w=>w===g?b:w):[...e.items,b]},c(),SE(h.targetPeerId),f&&i.add(m),a();for(const[w,I]of s)l(w,I);return!0},report(u,f){const h=e.items.find(m=>m.key===u);if(!h||f.service&&h.service?.targetPeerId&&f.service.targetPeerId!==h.service.targetPeerId)return;const g={...h,...f};JSON.stringify(g)!==JSON.stringify(h)&&(e={...e,items:e.items.map(m=>m===h?g:m)},a())},attach(u,f){f&&e.items.some(h=>h.key===u)?(s.set(u,f),l(u,f)):s.delete(u)},focusSession(u,f){const h=wn().find(m=>m.targetPeerId===u);if(!h)return!1;try{localStorage.setItem(fc+u,JSON.stringify({sessionId:f,at:Date.now()}))}catch{return!1}d.activate(h,!1);const g=s.get(e.activeKey);if(g){const m=g.document.createEvent("CustomEvent");m.initCustomEvent("termdock:workspace-session",!1,!1,null),g.dispatchEvent(m)}return!0}};return window.__termdockWorkspaceHost=d,d}let Vi;async function nt(){return Vi||(Vi=(async()=>{const t=await new Promise((e,n)=>{const r=indexedDB.open("termdock-device-identity",1);r.onupgradeneeded=()=>r.result.createObjectStore("keys"),r.onsuccess=()=>e(r.result),r.onerror=()=>n(r.error)});try{const e=await new Promise((o,s)=>{const i=t.transaction("keys").objectStore("keys").get("identity");i.onsuccess=()=>o(i.result),i.onerror=()=>s(i.error)});if(e)return hu(e);const n=await Mp();let r=n;return await new Promise((o,s)=>{const i=t.transaction("keys","readwrite"),a=i.objectStore("keys"),c=a.get("identity");c.onsuccess=()=>{typeof c.result=="string"?r=hu(c.result):a.put(Xx(n),"identity")},i.oncomplete=()=>o(),i.onerror=()=>s(i.error)}),r}finally{t.close()}})()),Vi}const Qe="termdock:secure-state";let Q,qn,He,hr="direct",rs=!1,yu=0,os=!1,bu=-1/0;const pr=globalThis.fetch.bind(globalThis);function se(){return ao()}function Vt(){return Q}function EE(){return He}function tg(){Q?.close(),He?.close(),Q=void 0,He=void 0}async function ng(){const t=await pr("/api/auth/status",{signal:AbortSignal.timeout(5e3)});if(!t.ok)throw new Error("Failed to query auth status");return t.json()}async function AE(){if(se()){await at();return}if((await ng()).enabled)return;const t=await pr("/api/auth/open/parameters",{cache:"no-store"});if(!t.ok)throw new Error("Open service unavailable");const{serviceIdentity:e}=await t.json();if(typeof e!="string"||!e)throw new Error("Invalid service identity");await et({url:location.origin,targetPeerId:e,serviceName:location.hostname})}async function kE(t,e){const{startPasswordBootstrap:n,finishPasswordBootstrap:r}=await en(async()=>{const{startPasswordBootstrap:l,finishPasswordBootstrap:d}=await import("./passwordBootstrap-dH2p1UXM.js");return{startPasswordBootstrap:l,finishPasswordBootstrap:d}},__vite__mapDeps([0,1,2,3])),o=l=>t===location.origin?l:new URL(l,t).href,s=async(l,d)=>{const u=await pr(o(l),{credentials:"omit",cache:"no-store",signal:AbortSignal.timeout(15e3),...d?{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)}:{}});if(!u.ok)throw new Error(u.status===429?"尝试次数较多,请稍后再试。":u.status===401?"密码不正确,请重新输入。":"暂时无法登录这台服务,请稍后重试。");return u.json()},{saltHex:i}=await s("/api/auth/password/parameters"),a=await nt(),c=await n(e,i);try{const l=await s("/api/auth/password/start",{startLoginRequest:c.startLoginRequest,clientIdentity:a.peerId});let d;try{d=await r(c,l,{clientIdentity:a.peerId,origin:location.origin})}catch{throw new Error("密码不正确,或服务身份无法验证。请检查后重试。")}return await s("/api/auth/password/finish",{attemptId:d.attemptId,finishLoginRequest:d.finishLoginRequest}),{url:t,targetPeerId:d.serverIdentity,serviceName:new URL(t).host,serviceOrigin:t}}finally{c.passwordKey=""}}async function Sl(t,e){const n=se();if(n&&(n.serviceOrigin||n.url)===t)return await hc(n,e),n;try{return await kE(t,e)}catch(r){if(!(r instanceof TypeError)&&!(r instanceof DOMException))throw r;const o=(await We()).find(i=>i.targetPeerId&&(i.serviceOrigin||i.url)===t);if(!o?.targetPeerId)throw new Error("暂时连不上这台服务,请检查地址和网络。");const s={...o,targetPeerId:o.targetPeerId,serviceName:o.label};return await hc(s,e),s}}async function hc(t,e){const n=await xl(t),{startPasswordBootstrap:r,finishPasswordBootstrap:o}=await en(async()=>{const{startPasswordBootstrap:i,finishPasswordBootstrap:a}=await import("./passwordBootstrap-dH2p1UXM.js");return{startPasswordBootstrap:i,finishPasswordBootstrap:a}},__vite__mapDeps([0,1,2,3]));let s;try{const i=await n.request({type:"password-parameters"},{timeoutMs:5e3});s=await r(e,String(i.saltHex));const a=await n.request({type:"password-start",startLoginRequest:s.startLoginRequest,origin:location.origin}),c=await o(s,a,{clientIdentity:(await nt()).peerId,origin:location.origin});if(c.serverIdentity!==t.targetPeerId)throw new Error("服务身份发生变化。");await n.request({type:"password-finish",attemptId:c.attemptId,finishLoginRequest:c.finishLoginRequest})}catch{throw new Error("暂时无法登录,请检查目标服务密码与入口授权后重试。")}finally{s&&(s.passwordKey=""),n.close()}}async function CE(t){try{const e=se(),n=e?.serviceOrigin||location.origin,r=await Sl(n,t);return await et({...r,routes:e?.routes,serviceName:e?.serviceName||r.serviceName}),Response.json({ok:!0})}catch(e){return Response.json({error:e instanceof Error?e.message:"暂时无法登录,请重试。",code:"INVALID_PASSWORD"},{status:401})}}async function vu(t,e){const n=Me(t),r=(await We()).find(i=>(i.serviceOrigin||i.url)===n&&i.targetPeerId);if(e===void 0&&r?.targetPeerId)try{return await et({...r,targetPeerId:r.targetPeerId,serviceName:r.label}),{}}catch(i){if(!(i instanceof tt))throw i}if(e!==void 0){const i=await Sl(n,e);if(r?.targetPeerId&&r.targetPeerId!==i.targetPeerId)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await et({...i,routes:r?.routes,serviceName:r?.label||i.serviceName}),{}}const o=await pr(new URL("/api/auth/open/parameters",n).href,{credentials:"omit",cache:"no-store",signal:AbortSignal.timeout(1e4)}).catch(()=>{throw new Error("暂时连不上这台服务,请检查地址和网络后重试。")});if(o.status===403)return{passwordRequired:!0};if(!o.ok)throw new Error("这台服务暂时不可用,请稍后重试。");const{serviceIdentity:s}=await o.json();if(typeof s!="string"||!s)throw new Error("这不是可连接的 Termdock 服务。");if(r?.targetPeerId&&r.targetPeerId!==s)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await et({url:n,targetPeerId:s,serviceName:r?.label||new URL(n).host,serviceOrigin:n}),{}}function Qt(t){const e=[...t.routes||[]];if(t.entryServiceId&&t.entryServiceId!==t.targetPeerId&&e.unshift({url:t.url,targetPeerId:t.entryServiceId}),!e.length&&t.routes===void 0)try{const n=JSON.parse(localStorage.getItem(Kc)||"null");n&&n.targetPeerId!==t.targetPeerId&&new URL(n.url).host===new URL(t.url).host&&e.push(n)}catch{}return e.flatMap((n,r)=>{try{return n.targetPeerId&&n.targetPeerId!==t.targetPeerId&&e.findIndex(o=>o.targetPeerId===n.targetPeerId)===r?[{url:Me(n.url),targetPeerId:n.targetPeerId}]:[]}catch{return[]}}).slice(0,4)}function vr(t){const e=Qt(t),n=[t.serviceOrigin||t.url,...(t.routes||[]).slice(0,4).filter(o=>o.targetPeerId===t.targetPeerId).map(o=>o.url)],r=new Set;for(const o of n)try{const s=Me(o);e.some(i=>i.url===s)||r.add(s)}catch{}return[...r]}function Sn(t){const e=new URL("/api/federation/secure",Me(t));return e.protocol=e.protocol==="https:"?"wss:":"ws:",e.href}async function tn(t,e){return vn({url:Sn(t.url),targetPeerId:t.targetPeerId,identity:await nt(),signal:e?AbortSignal.any([e,AbortSignal.timeout(5e3)]):AbortSignal.timeout(5e3)})}async function xl(t,e){const n=await nt(),r=vr(t).map(i=>({key:`direct:${i}`,run:a=>vn({url:Sn(i),targetPeerId:t.targetPeerId,identity:n,signal:AbortSignal.any([a,AbortSignal.timeout(8e3),...e?[e]:[]])})}));for(const i of Qt(t))r.push({key:`relay:${i.targetPeerId}:${i.url}`,run:async a=>{e&&(a=AbortSignal.any([a,e]));const c=[Q,He].find(d=>d&&!d.closed&&d.targetPeerId===i.targetPeerId),l=c||await tn(i,a);try{if(a.aborted)throw a.reason;const d=await l.request({type:"route-ticket",serviceId:t.targetPeerId},{timeoutMs:5e3});if(a.aborted)throw a.reason;if(typeof d.routeToken!="string")throw new Error("入口未允许此设备连接该服务。");const u=new URL(Sn(i.url));return u.pathname="/api/federation/relay",u.searchParams.set("routeToken",d.routeToken),await vn({url:u.href,targetPeerId:t.targetPeerId,identity:n,socketFactory:Gp(t.targetPeerId),signal:AbortSignal.any([a,AbortSignal.timeout(8e3)])})}finally{c||l.close()}}});const o=Xp(t.targetPeerId);r.sort((i,a)=>+(a.key===o)-+(i.key===o));const s=await Yp(r,i=>i.close());return dc(t.targetPeerId,s.key),s.value}async function IE(t,e){const n=await xl(t,e);try{const o=(await n.request({type:"collaboration-descriptor"},{timeoutMs:5e3})).node;if(o?.serviceId!==t.targetPeerId)throw new Error("PEER_IDENTITY_MISMATCH");return{...o,serviceId:t.targetPeerId}}finally{n.close()}}async function RE(t,e){const n=await xl(t,e),r=()=>n.close();e.addEventListener("abort",r,{once:!0});try{if(e.aborted||(await br(n,{timeoutMs:3e3}),e.aborted))throw e.reason;return n}catch(o){throw n.close(),o}finally{e.removeEventListener("abort",r)}}async function et(t,e={}){const n=Q,r=He,o=await nt(),s=Me(t.serviceOrigin||t.url),i=(await We()).find(w=>w.targetPeerId===t.targetPeerId),a={...t,routes:t.routes??i?.routes},c=Qt(a),l=vr(a);let d,u,f=t.pairingCode,h="direct";const g=new Set,m=new Map,b=async(w,I)=>{if(n&&!n.closed&&n.targetPeerId===w.targetPeerId)return n;if(r&&!r.closed&&r.targetPeerId===w.targetPeerId)return r;const y=m.get(w.targetPeerId);if(y&&!y.closed)return y;const k=await tn(w,I);return g.add(k),m.set(w.targetPeerId,k),k};try{if(t.routeCode&&t.entryServiceId){const S=c.find(O=>O.targetPeerId===t.entryServiceId);if(!S)throw new Error("邀请缺少入口信息。");if((await(await b(S)).request({type:"route-pair",code:t.routeCode})).serviceId!==t.targetPeerId)throw new Error("邀请的目标服务不一致。");t.routeOnly&&await Nt({id:t.targetPeerId,url:s,label:t.serviceName||new URL(s).host,targetPeerId:t.targetPeerId,serviceOrigin:s,routes:c})}const w=[],I=async(S,v)=>{const A=()=>S.close();v.addEventListener("abort",A,{once:!0});try{if(v.aborted||(await br(S),v.aborted))throw v.reason}catch(O){throw S.close(),O}finally{v.removeEventListener("abort",A)}};for(const S of l)w.push({key:`direct:${S}`,run:async v=>{const A=await vn({url:Sn(S),targetPeerId:t.targetPeerId,pairingCode:f,identity:o,signal:AbortSignal.any([v,AbortSignal.timeout(8e3)])});return f=void 0,await I(A,v),{client:A,path:"direct"}}});for(const S of c)w.push({key:`relay:${S.targetPeerId}:${S.url}`,run:async v=>{let A,O;try{if(A=await b(S,v),v.aborted)throw v.reason;const B=await A.request({type:"route-ticket",serviceId:t.targetPeerId},{timeoutMs:5e3});if(v.aborted)throw v.reason;if(typeof B.routeToken!="string"||!B.routeToken)throw new Error("入口未允许此设备连接该服务。");const C=new URL(Sn(S.url));return C.pathname="/api/federation/relay",C.searchParams.set("routeToken",B.routeToken),O=await vn({url:C.href,targetPeerId:t.targetPeerId,pairingCode:f,identity:o,socketFactory:Gp(t.targetPeerId),signal:AbortSignal.any([v,AbortSignal.timeout(8e3)])}),f=void 0,await I(O,v),{client:O,entry:A,path:"relay"}}catch(B){throw O?.close(),A&&A!==r&&A!==n&&A.close(),B}}});const y=Xp(t.targetPeerId);w.sort((S,v)=>+(v.key===y)-+(S.key===y));const k=await Yp(w,S=>{S.client.close(),S.entry&&S.entry!==n&&S.entry!==r&&S.entry.close()},!!f);if(d=k.value.client,u=k.value.entry,h=k.value.path,e.renewIfCurrent){if(Q!==e.renewIfCurrent||n!==e.renewIfCurrent||n.closed||!n.canSwitchTransport||se()?.targetPeerId!==t.targetPeerId){d.close();for(const S of g)S!==He&&S!==Q&&S.close();return Q??n}Q=d,hr=h,He=u,dc(t.targetPeerId,k.key),n.retire();for(const S of new Set([r,...g]))S&&S!==n&&S!==d&&S!==u&&S.close();return window.dispatchEvent(new Event(Qe)),d}if(dc(t.targetPeerId,k.key),Q!==n&&Q&&!Q.closed&&Q.targetPeerId===t.targetPeerId){d.close();for(const S of g)S!==He&&S.close();return Q}h==="direct"&&new URL(s).host===location.host&&Xm(t.targetPeerId);const N=(await We()).find(S=>S.targetPeerId===t.targetPeerId||!S.targetPeerId&&(S.serviceOrigin||S.url)===s),x=N?.label||t.serviceName||new URL(s).host,T={url:s,targetPeerId:t.targetPeerId,serviceName:x,serviceOrigin:s,routes:a.routes??c};if(await(e.rememberOnly?Zm:Nt)({id:N?.id||t.targetPeerId,...T,label:x}),Vn!=="unpaired"&&Vn!==t.targetPeerId&&mt()&&js({id:N?.id||t.targetPeerId,...T,label:x})){d.close();for(const S of g)S!==n&&S!==r&&S.close();return n||d}Ff(T),Q=d,hr=h,He=u;for(const S of new Set([n,r,...g]))S&&S!==d&&S!==u&&S.close();return Vn!==t.targetPeerId?(location.reload(),new Promise(()=>{})):(window.dispatchEvent(new Event(Qe)),d)}catch(w){d?.close();for(const I of g)I!==r&&I.close();throw w}}async function TE(){const t=Q,e=se();if(!(os||rs||qn||!t?.renewalDue||!t.canSwitchTransport||!e||performance.now()-bu<3e4)){bu=performance.now(),os=!0;try{await et(e,{renewIfCurrent:t})}catch(n){console.debug("[connection] renewal deferred",{reason:n instanceof Error?n.message:"unknown"})}finally{os=!1}}}async function PE(){const t=Q,e=se();if(Date.now()-yu<6e4||os||rs||hr!=="relay"||!t||t.closed||!t.canSwitchTransport||!e?.serviceOrigin)return;rs=!0,yu=Date.now();let n;try{for(const o of vr(e))try{n=await vn({url:Sn(o),targetPeerId:e.targetPeerId,identity:await nt(),signal:AbortSignal.timeout(3e3)}),await br(n);break}catch(s){if(n?.close(),n=void 0,s instanceof tt)throw s}if(!n||Q!==t||!t.canSwitchTransport)return;const r=He;Q=n,n=void 0,He=void 0,hr="direct",t.close(),r?.close(),window.dispatchEvent(new Event(Qe))}catch(r){r instanceof tt&&Q===t&&(tg(),window.dispatchEvent(new Event("auth:unauthorized")))}finally{n?.close(),rs=!1}}function NE(){return hr}async function LE(t){return t?(t.throwIfAborted(),new Promise((e,n)=>{const r=()=>n(t.reason);t.addEventListener("abort",r,{once:!0}),at().then(o=>{t.removeEventListener("abort",r),t.aborted?n(t.reason):e(o)},o=>{t.removeEventListener("abort",r),n(o)})})):at()}async function at(){if(Q&&!Q.closed){const e=Q;return TE(),e}if(Q=void 0,qn)return qn;const t=se();if(!t)throw new Error("DEVICE_PAIRING_REQUIRED");return qn=et(t,{rememberOnly:!0}).catch(e=>{if(Q&&!Q.closed&&Q.targetPeerId===t.targetPeerId)return Q;throw e}).finally(()=>{qn=void 0}),qn}function rg(t){const e=new URL(t,location.href);if(Q&&!Q.closed)return Q.openSocket(e.pathname+e.search);let n;const r=new Wp(t,o=>n?.send(o),()=>n?.close());return at().then(o=>{r.readyState!==3&&(n=o.openSocket(e.pathname+e.search),r.getConnectionDiagnostics=()=>{const s=n?.getConnectionDiagnostics?.();return s?{...s,socketOpenMs:r.openedAfterMs}:void 0},n.onopen=()=>r.accept({type:"ws-ready",id:""}),n.onmessage=s=>r.accept({type:"ws-data",id:"",data:s.data}),n.onclose=s=>r.accept({type:"ws-close",id:"",code:s.code,reason:s.reason}),n.onerror=()=>r.fail(new Error("Encrypted connection unavailable")))}).catch(o=>r.fail(o)),r}function BE(){fE(at),window.fetch=async(t,e)=>{const n=new URL(t instanceof Request?t.url:String(t),location.href);if(!n.pathname.startsWith("/api/"))return pr(t,e);if(n.origin!==location.origin)throw new Error("Remote business API requires a paired encrypted service");if(n.pathname==="/api/meta")return pr(t,e);if(n.pathname==="/api/auth/status"){if(!se()){const s=await ng();return Response.json({enabled:s.enabled,authenticated:!1})}try{const s=await br(await at());return Response.json({enabled:s.grants.length>0,authenticated:!0})}catch(s){if(s instanceof tt)return Response.json({enabled:!0,authenticated:!1});throw s}}if(n.pathname==="/api/auth/login"){const i=await new Request(t instanceof Request?t:n.href,e).json();return CE(typeof i.password=="string"?i.password:"")}if(n.pathname==="/api/csrf-token")return Response.json({csrfToken:"encrypted-device-channel"});if(n.pathname==="/api/auth/logout")return Q&&!Q.closed&&await Q.request({type:"logout"}),Q?.close(),He?.close(),Q=void 0,He=void 0,Vm(),location.reload(),Response.json({ok:!0});const r=e?.signal!==void 0?e.signal:t instanceof Request?t.signal:void 0,o=await LE(r);return t instanceof Request?o.fetch(t,e):o.fetch(n.pathname+n.search,e)}}async function _E(t){if(!t.targetPeerId)throw new Error("请先连接这台服务,再查看可中转的服务。");for(const e of vr({...t,targetPeerId:t.targetPeerId})){let n;const r={url:e,targetPeerId:t.targetPeerId};try{n=await tn(r)}catch{continue}try{const o=await n.request({type:"route-targets"},{timeoutMs:5e3});if(!Array.isArray(o.items))throw new Error("入口服务需要更新后才能查看中转列表。");return{route:r,canManage:o.canManage===!0,items:o.items}}catch(o){throw o instanceof Error&&/UNKNOWN|UNSUPPORTED/i.test(o.message)?new Error("入口服务需要更新后才能查看中转列表。"):o}finally{n.close()}}throw new Error("暂时连不上中转入口,请检查地址和网络后重试。")}async function OE(t,e){const n=await tn(t);try{const r=await n.request({type:"route-targets"},{timeoutMs:5e3}),o=(Array.isArray(r.items)?r.items:[]).find(c=>c.serviceId===e);if(!o)throw new Error("该服务已不可见,请刷新列表或请入口管理员授权。");if(!o.available)throw new Error("入口暂时无法中转到这台服务,请稍后重试。");const s=(await We()).find(c=>c.targetPeerId===o.serviceId),i=[t,...(s?.routes||[]).filter(c=>c.targetPeerId!==t.targetPeerId)];if(i.length>4)throw new Error("这台服务已保存 4 个备用连接,请先移除一个后重试。");if(!o.authorized){if(!r.canManage)throw new Error("请先让入口管理员授权此设备。");await n.request({type:"route-grant",serviceId:o.serviceId,subjectId:(await nt()).peerId})}const a=s?.serviceOrigin||s?.url||o.url||t.url;return{url:a,serviceOrigin:a,targetPeerId:o.serviceId,serviceName:s?.label||o.label||(o.url?new URL(o.url).host:`中转服务 ${o.serviceId.slice(0,8)}`),routes:i}}finally{n.close()}}async function DE(t,e){const n=await tn(t);try{const r=await n.request({type:"route-access"},{timeoutMs:5e3}),o=(await nt()).peerId;return{canManage:r.canManage===!0,grants:(Array.isArray(r.grants)?r.grants:[]).filter(s=>s.subjectId===o&&s.targetServiceId===e)}}finally{n.close()}}async function FE(t,e,n){if(n!==void 0&&(await Sl(Me(e.url),n)).targetPeerId!==e.targetPeerId)throw new Error("入口服务的身份已改变,请重新连接并确认。");const r=await tn(e);try{await r.request({type:"route-grant",serviceId:t.targetPeerId,subjectId:(await nt()).peerId,url:Me(t.serviceOrigin||t.url)})}finally{r.close()}}async function ME(t,e){const n=await tn(e);try{const r=await n.request({type:"route-access"},{timeoutMs:5e3}),o=(await nt()).peerId,s=(Array.isArray(r.grants)?r.grants:[]).filter(i=>i.subjectId===o&&i.targetServiceId===t&&i.active);for(const i of s)await n.request({type:"route-revoke",grantId:i.id})}finally{n.close()}}async function og(t,e){const n=await tn(e);try{const r=await n.request({type:"route-invite-create",serviceId:t.targetPeerId});if(typeof r.routeCode!="string"||typeof r.expiresAt!="number")throw new Error("暂时无法生成备用连接邀请。");return{routeCode:r.routeCode,expiresAt:r.expiresAt}}finally{n.close()}}async function ss(t,e){const n=(await We()).find(o=>o.id===t.id||t.targetPeerId&&o.targetPeerId===t.targetPeerId)||t;await Nt({...n,url:n.serviceOrigin||n.url,entryServiceId:void 0,routes:e});const r=se();r&&r.targetPeerId===t.targetPeerId&&Ff({...r,url:r.serviceOrigin||r.url,entryServiceId:void 0,routes:e})}async function jE(t,e){const n=t.targetPeerId;if(!n)throw new Error("请先连接这台服务,再添加备用地址。");let r;try{r=Me(e)}catch{throw new Error("请输入有效的 HTTPS 地址,例如 https://电脑地址:9834。")}const o=async()=>(await We()).find(a=>a.targetPeerId===n)||t,s=a=>{const c=a.routes??Qt({...a,targetPeerId:n});if(Me(a.serviceOrigin||a.url)===r||c.some(l=>Me(l.url)===r))throw new Error("这个地址已经在连接列表中。");if(c.length>=4)throw new Error("最多保存 4 个备用地址或入口,请先移除不再使用的连接。");return[...c,{url:r,targetPeerId:n}]};s(await o());let i;try{try{i=await vn({url:Sn(r),targetPeerId:n,identity:await nt(),signal:AbortSignal.timeout(5e3)}),await br(i)}catch(l){throw l instanceof tt?new Error("这台服务尚未授权当前设备,请先恢复设备授权。"):new Error("无法验证这个地址。请确认能访问该地址、HTTPS 证书受信任,且运行的是同一台 Termdock 服务。")}const a=await o(),c=s(a);if(await ss(a,c),se()?.targetPeerId===n&&Vn===n&&(!Q||Q.closed)){const l=Q,d=He;Q=i,i=void 0,He=void 0,hr="direct",l?.close(),d?.close(),window.dispatchEvent(new Event(Qe))}return c}finally{i?.close()}}async function Su(t,e){await hc(t,e),await et({...t,pairingCode:void 0,routeCode:void 0})}function HE(){let t=!1,e=!1,n=!1,r;const o=new Map,s=new Set,i=new Map,a=async(f,h,g)=>{const m=JSON.stringify(g);if(o.get(h.serviceId)===m)return;const b=AbortSignal.timeout(1e4),w=await f.fetch("/api/csrf-token",{signal:b});if(!w.ok)throw new Error("CONNECTION_AUTHORIZATION_REQUIRED");const I=await w.json();if(typeof I.csrfToken!="string")throw new Error("INVALID_CSRF_TOKEN");const y=await f.fetch("/api/terminal/operations/collaboration-connections",{method:"POST",signal:b,headers:{"Content-Type":"application/json","X-XSRF-TOKEN":I.csrfToken},body:JSON.stringify({origin:h.origin,nodes:g})});if(!y.ok){const k=await y.json().catch(()=>({}));throw new Error(k.error||`HTTP_${y.status}`)}o.set(h.serviceId,m)},c=async()=>{if(t){n=!0;return}const f=se(),h=Vt();if(!(e||!f||!h||h.closed)){t=!0,n=!1;try{let g;const m=await Promise.race([We(),new Promise((N,x)=>{g=setTimeout(()=>x(new Error("SERVICE_DIRECTORY_TIMEOUT")),8e3)})]).finally(()=>clearTimeout(g));m.some(N=>N.targetPeerId===f.targetPeerId)||m.push({...f,id:f.targetPeerId,label:f.serviceName||f.url});const b=[...new Map(m.filter(N=>!!N.targetPeerId).map(N=>[N.targetPeerId,N])).values()].slice(0,64);if(b.length<2)return;const w=[];for(const N of b)try{const x=`${N.targetPeerId}:${N.serviceOrigin||N.url}`;let T=i.get(x);if(!T){const S=N.targetPeerId===f.targetPeerId?(await h.request({type:"collaboration-descriptor"},{timeoutMs:5e3})).node:await IE({...N,targetPeerId:N.targetPeerId},AbortSignal.timeout(8e3));if(S?.serviceId!==N.targetPeerId)throw new Error("PEER_IDENTITY_MISMATCH");const v=S.origin||N.serviceOrigin||N.url,A=new URL(v);if(A.protocol!=="https:"||A.origin!==v)throw new Error("INVALID_SERVICE_ORIGIN");T={serviceId:S.serviceId,origin:v,...S.caFingerprint256?{caFingerprint256:S.caFingerprint256}:{}},i.set(x,T)}w.push({service:N,node:T})}catch{}if(e||Vt()!==h||se()?.targetPeerId!==f.targetPeerId)return;const I=w.find(N=>N.node.serviceId===f.targetPeerId);if(!I||w.length<2){l(3e4);return}const y=w.map(N=>N.node).sort((N,x)=>N.serviceId.localeCompare(x.serviceId));await a(h,I.node,y);let k=w.length<b.length;for(const N of w){if(N===I||o.get(N.node.serviceId)===JSON.stringify(y))continue;let x;try{x=await RE({...N.service,targetPeerId:N.node.serviceId},AbortSignal.timeout(8e3)),await a(x,N.node,y)}catch{let T=s.has(N.node.serviceId);if(!T&&x)try{(await x.request({type:"collaboration-scoped-peer",origin:N.node.origin,node:I.node},{timeoutMs:8e3})).type==="result"&&(s.add(N.node.serviceId),T=!0)}catch{}T||(k=!0)}finally{x?.close()}}window.dispatchEvent(new CustomEvent("termdock:collaboration-enrollment",{detail:{ok:!0}})),k&&l(3e4)}catch(g){window.dispatchEvent(new CustomEvent("termdock:collaboration-enrollment",{detail:{ok:!1,error:g instanceof Error?g.message:"CONNECTION_ENROLLMENT_FAILED"}})),l(3e4)}finally{t=!1,n&&l(100)}}};function l(f=100){e||(clearTimeout(r),r=setTimeout(()=>{c()},f))}const d=()=>{l()},u=Zs(d);window.addEventListener(Qe,d),window.addEventListener("termdock:collaboration-enroll",d),window.addEventListener("online",d),window.addEventListener("pageshow",d),window.addEventListener("pagehide",f=>{f.persisted||(e=!0,clearTimeout(r),u(),window.removeEventListener("termdock:collaboration-enroll",d),window.removeEventListener(Qe,d),window.removeEventListener("online",d),window.removeEventListener("pageshow",d))}),l()}var Wo={},xu;function UE(){if(xu)return Wo;xu=1;var t=jm();return Wo.createRoot=t.createRoot,Wo.hydrateRoot=t.hydrateRoot,Wo}var $E=UE();const qE=Df($E);function Ue({size:t=16,className:e="",...n}){const r=!!(n["aria-label"]||n["aria-labelledby"]);return p.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none","aria-hidden":r?void 0:!0,role:r?"img":void 0,focusable:"false",...n,className:`td-loading-spinner animate-spin ${e.replace(/\b(?:animate-spin|service-spinning)\b/g,"")}`,children:p.jsx("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"2.5",strokeDasharray:"18 44.8",strokeLinecap:"round"})})}function KE(){return p.jsx("span",{className:"td-loading-dots","aria-hidden":"true",children:[0,1,2].map(t=>p.jsx("span",{style:{animationDelay:`${(t-3)*400}ms`}},t))})}function LR({label:t,className:e="",dots:n=!1}){return p.jsxs("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:`flex items-center justify-center gap-2 text-sm text-muted-foreground ${e}`,children:[n?p.jsx(KE,{}):p.jsx(Ue,{size:18}),p.jsx("span",{children:t})]})}const sg=(...t)=>t.filter((e,n,r)=>!!e&&e.trim()!==""&&r.indexOf(e)===n).join(" ").trim();const zE=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const WE=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,n,r)=>r?r.toUpperCase():n.toLowerCase());const Eu=t=>{const e=WE(t);return e.charAt(0).toUpperCase()+e.slice(1)};var Xi={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const GE=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1},VE=_.createContext({}),XE=()=>_.useContext(VE),YE=_.forwardRef(({color:t,size:e,strokeWidth:n,absoluteStrokeWidth:r,className:o="",children:s,iconNode:i,...a},c)=>{const{size:l=24,strokeWidth:d=2,absoluteStrokeWidth:u=!1,color:f="currentColor",className:h=""}=XE()??{},g=r??u?Number(n??d)*24/Number(e??l):n??d;return _.createElement("svg",{ref:c,...Xi,width:e??l??Xi.width,height:e??l??Xi.height,stroke:t??f,strokeWidth:g,className:sg("lucide",h,o),...!s&&!GE(a)&&{"aria-hidden":"true"},...a},[...i.map(([m,b])=>_.createElement(m,b)),...Array.isArray(s)?s:[s]])});const Le=(t,e)=>{const n=_.forwardRef(({className:r,...o},s)=>_.createElement(YE,{ref:s,iconNode:e,className:sg(`lucide-${zE(Eu(t))}`,`lucide-${t}`,r),...o}));return n.displayName=Eu(t),n};const ZE=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],ig=Le("arrow-left",ZE);const JE=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],QE=Le("arrow-right",JE);const e1=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],t1=Le("arrow-up-right",e1);const n1=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M11.68 2.009A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673c-.824-.85-1.678-1.731-2.21-3.348",key:"xaq59h"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]],ag=Le("bell-dot",n1);const r1=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Hs=Le("check",r1);const o1=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],cg=Le("chevron-down",o1);const s1=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],xn=Le("chevron-right",s1);const i1=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],a1=Le("chevron-up",i1);const c1=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],lg=Le("copy",c1);const l1=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],dg=Le("ellipsis",l1);const d1=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],u1=Le("monitor",d1);const f1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],h1=Le("pencil",f1);const p1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],ug=Le("plus",p1);const g1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],fi=Le("server",g1);const m1=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],fg=Le("smartphone",m1);const w1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],y1=Le("terminal",w1);const b1=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],hg=Le("x",b1),v1={},Au=t=>{let e;const n=new Set,r=(d,u)=>{const f=typeof d=="function"?d(e):d;if(!Object.is(f,e)){const h=e;e=u??(typeof f!="object"||f===null)?f:Object.assign({},e,f),n.forEach(g=>g(e,h))}},o=()=>e,c={setState:r,getState:o,getInitialState:()=>l,subscribe:d=>(n.add(d),()=>n.delete(d)),destroy:()=>{(v1?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},l=e=t(r,o,c);return c},S1=t=>t?Au(t):Au;var Yi={exports:{}},Zi={},Ji={exports:{}},Qi={};var ku;function x1(){if(ku)return Qi;ku=1;var t=$c();function e(u,f){return u===f&&(u!==0||1/u===1/f)||u!==u&&f!==f}var n=typeof Object.is=="function"?Object.is:e,r=t.useState,o=t.useEffect,s=t.useLayoutEffect,i=t.useDebugValue;function a(u,f){var h=f(),g=r({inst:{value:h,getSnapshot:f}}),m=g[0].inst,b=g[1];return s(function(){m.value=h,m.getSnapshot=f,c(m)&&b({inst:m})},[u,h,f]),o(function(){return c(m)&&b({inst:m}),u(function(){c(m)&&b({inst:m})})},[u]),i(h),h}function c(u){var f=u.getSnapshot;u=u.value;try{var h=f();return!n(u,h)}catch{return!0}}function l(u,f){return f()}var d=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?l:a;return Qi.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:d,Qi}var Cu;function E1(){return Cu||(Cu=1,Ji.exports=x1()),Ji.exports}var Iu;function A1(){if(Iu)return Zi;Iu=1;var t=$c(),e=E1();function n(l,d){return l===d&&(l!==0||1/l===1/d)||l!==l&&d!==d}var r=typeof Object.is=="function"?Object.is:n,o=e.useSyncExternalStore,s=t.useRef,i=t.useEffect,a=t.useMemo,c=t.useDebugValue;return Zi.useSyncExternalStoreWithSelector=function(l,d,u,f,h){var g=s(null);if(g.current===null){var m={hasValue:!1,value:null};g.current=m}else m=g.current;g=a(function(){function w(x){if(!I){if(I=!0,y=x,x=f(x),h!==void 0&&m.hasValue){var T=m.value;if(h(T,x))return k=T}return k=x}if(T=k,r(y,x))return T;var S=f(x);return h!==void 0&&h(T,S)?(y=x,T):(y=x,k=S)}var I=!1,y,k,N=u===void 0?null:u;return[function(){return w(d())},N===null?void 0:function(){return w(N())}]},[d,u,f,h]);var b=o(l,g[0],g[1]);return i(function(){m.hasValue=!0,m.value=b},[b]),c(b),b},Zi}var Ru;function k1(){return Ru||(Ru=1,Yi.exports=A1()),Yi.exports}var C1=k1();const I1=Df(C1),pg={},{useDebugValue:R1}=Xe,{useSyncExternalStoreWithSelector:T1}=I1;let Tu=!1;const P1=t=>t;function N1(t,e=P1,n){(pg?"production":void 0)!=="production"&&n&&!Tu&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),Tu=!0);const r=T1(t.subscribe,t.getState,t.getServerState||t.getInitialState,e,n);return R1(r),r}const Pu=t=>{(pg?"production":void 0)!=="production"&&typeof t!="function"&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");const e=typeof t=="function"?S1(t):t,n=(r,o)=>N1(e,r,o);return Object.assign(n,e),n},hi=t=>t?Pu(t):Pu,El=t=>`@collaboration:${t}`,gg=hi(t=>({activePaneId:null,setActivePane:e=>t({activePaneId:e}),docks:{},hosts:{},setDock:(e,n)=>t(r=>{const o={...r.docks};return n?o[e]=n:delete o[e],{docks:o,...!n&&r.activePaneId===El(e)?{activePaneId:r.docks[e]?.sessionId??null}:{}}}),setHost:(e,n)=>t(r=>{const o={...r.hosts};return n?o[e]=n:delete o[e],{hosts:o}})})),dn=new Map;let no;function mg(){const t=gg.getState().activePaneId;for(const[n,r]of dn)if(r.requiresFocus&&t===El(n))return r.receive;const e=dn.get(no??"");return e&&!e.requiresFocus?e.receive:void 0}function BR(t){const e=dn.get(t);e&&(e.requiresFocus?gg.getState().setActivePane(El(t)):no=t)}function L1(t){const e=mg();return!e||!t?!1:(e(t),!0)}function _R(t,e="default",n=!1){dn.set(e,{receive:t,requiresFocus:n}),n||(no=e);const r=o=>{const{text:s,nonce:i}=o.detail??{};!s||mg()!==t||(t(s),o.stopImmediatePropagation(),i&&window.dispatchEvent(new CustomEvent("termdock-insert-reference-ack",{detail:{nonce:i,ok:!0}})))};return window.addEventListener("termdock-insert-reference",r,!0),()=>{dn.get(e)?.receive===t&&(dn.delete(e),no===e&&(no=[...dn.keys()].at(-1))),window.removeEventListener("termdock-insert-reference",r,!0)}}const B1=/^[A-Za-z0-9_@%+=:,./-]$/;function _1(t){return Array.from(t,e=>(e.codePointAt(0)??0)>127||B1.test(e)?e:`\\${e}`).join("")}function O1(t,e){if(!e)return!1;try{const n=new URL(e.serviceOrigin||e.url);return n.origin===t&&/^(localhost|\[::1\]|127(?:\.\d{1,3}){3})$/.test(n.hostname)&&!(e.routes??[]).some(r=>r.targetPeerId!==e.targetPeerId)}catch{return!1}}function D1(t){const e=s=>s.target instanceof Element?s.target.closest("[data-termdock-terminal-dropzone]"):null,n=()=>!O1(location.origin,ao()),r=s=>{const i=e(s);!i||!n()||!s.dataTransfer?.types.includes("Files")||(s.preventDefault(),s.stopImmediatePropagation(),s.dataTransfer.dropEffect="copy",i.dataset.nativeFileDrag="true",i.dataset.nativeFileDropState="remote")},o=s=>{const i=e(s),a=Array.from(s.dataTransfer?.files??[]);if(!i||!a.length||!n())return;s.preventDefault(),s.stopImmediatePropagation();const c=i.dataset.termdockTerminalDropzone??"";i.dataset.nativeFileDrag="true",i.dataset.nativeFileDropState="uploading",en(async()=>{const{uploadFiles:l}=await Promise.resolve().then(()=>tI);return{uploadFiles:l}},void 0).then(({uploadFiles:l})=>l("/tmp",a)).then(l=>{if(l.files.length!==a.length||l.files.some(d=>!d.path))throw new Error("Upload did not return every file path");delete i.dataset.nativeFileDrag,delete i.dataset.nativeFileDropState,t({sessionKey:c,paths:l.files.map(d=>d.path)})}).catch(l=>{i.dataset.nativeFileDropState="error",i.dispatchEvent(new CustomEvent("termdock:file-drop-error",{bubbles:!0,detail:l instanceof Error?l.message:"File upload failed"})),window.setTimeout(()=>{i.dataset.nativeFileDropState==="error"&&(delete i.dataset.nativeFileDrag,delete i.dataset.nativeFileDropState)},3e3)})};return window.addEventListener("dragover",r,!0),window.addEventListener("drop",o,!0),()=>{window.removeEventListener("dragover",r,!0),window.removeEventListener("drop",o,!0)}}function rt(){return typeof window>"u"?null:window.termdockDesktop??null}const ea=new Set;let Nu=!1;function OR(t){const e=rt();if(!e)return()=>{};if(ea.add(t),!Nu){const n=r=>{if(!L1(r.paths.map(_1).join(" ")+" "))for(const o of ea)o(r)};D1(n),e.onNativeFileDrop(n),Nu=!0}return()=>{ea.delete(t)}}function wg(t=navigator.userAgent,e=navigator.maxTouchPoints){const n=/iPad/.test(t)||/Macintosh/.test(t)&&e>1?"iPad":/iPhone/.test(t)?"iPhone":/Android/.test(t)?"Android":/Windows/.test(t)?"Windows":/Macintosh|Mac OS X/.test(t)?"Mac":/Linux/.test(t)?"Linux":"设备",r=/Electron/.test(t)?"Termdock":/Edg\//.test(t)?"Edge":/Firefox|FxiOS/.test(t)?"Firefox":/Chrome|CriOS/.test(t)?"Chrome":/Safari/.test(t)?"Safari":"浏览器";return`${n} · ${r}`}let F1;function M1(){return F1??=(async()=>{const t=navigator.userAgent,[e,n]=wg().split(" · "),r=/(?:Edg|Firefox|FxiOS|Chrome|CriOS|Version)\/([\d.]+)/g,o=[...t.matchAll(r)],s=/(?:CPU (?:iPhone )?OS |Mac OS X |Android )([\d._]+)/.exec(t)?.[1]?.replaceAll("_","."),i={system:`${e}${s?` ${s}`:""}`,client:`${n}${o.length?` ${o.at(-1)[1]}`:""}`,mode:matchMedia("(display-mode: standalone)").matches||navigator.standalone?"已安装的网页应用":"网页"},a=rt();if(a){i.mode="桌面客户端";const l=/Electron\/([\d.]+)/.exec(t)?.[1];i.client=l?`Termdock(Electron ${l})`:"Termdock";try{Object.assign(i,await a.deviceInfo?.())}catch{}return i}const c=navigator.userAgentData;try{const l=await c?.getHighEntropyValues(["model","architecture","bitness","platformVersion"]);typeof l?.model=="string"&&l.model&&(i.model=l.model),typeof l?.architecture=="string"&&l.architecture&&(i.arch=`${l.architecture}${l.bitness?` ${l.bitness} 位`:""}`)}catch{}return i})()}function j1({service:t,onBusyChange:e,onConnect:n,onConnectWithPassword:r}){const[o,s]=_.useState(),[i,a]=_.useState(!0),[c,l]=_.useState(!1),[d,u]=_.useState(""),[f,h]=_.useState(0),[g,m]=_.useState(),[b,w]=_.useState("");_.useEffect(()=>{let k=!1,N=!1,x;a(!0),u(""),s(void 0);const T=async S=>{try{const v=await _E(t);if(k)return;N=!0,s(v),u("")}catch(v){!k&&(!N||S)&&u(v instanceof Error?v.message:"暂时无法读取中转列表,请重试。")}finally{k||(a(!1),x=setTimeout(()=>{T(!1)},2e3))}};return T(!0),()=>{k=!0,clearTimeout(x)}},[t.id,t.url,f]);const I=async k=>{if(!c){l(!0),e(!0),u("");try{await k()}catch(N){u(N instanceof Error?N.message:"暂时无法连接,请重试。")}finally{l(!1),e(!1)}}},y=async k=>{const N=await OE(o.route,k.serviceId);try{await n(N)}catch(x){if(!(x instanceof tt))throw x;m(N)}};return p.jsxs("div",{className:"service-form",children:[g?p.jsxs("form",{className:"service-form",onSubmit:k=>{k.preventDefault(),I(async()=>{try{await r?.(g,b)}finally{w("")}})},children:[p.jsxs("p",{className:"service-help",children:["已通过“",t.label,"”连接到“",g.serviceName,"”。请登录目标服务,完成此设备的访问授权。"]}),r?p.jsxs(p.Fragment,{children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"目标服务密码"}),p.jsx("input",{type:"password",autoFocus:!0,required:!0,autoComplete:"current-password",value:b,disabled:c,onChange:k=>w(k.target.value)})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:c||!b,children:c?"正在登录…":"登录并连接"})]}):p.jsx("p",{className:"service-help",children:"请让目标服务管理员邀请此设备后再连接。"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:c,onClick:()=>{m(void 0),w(""),u(""),h(k=>k+1)},children:"返回中转列表"})]}):p.jsxs(p.Fragment,{children:[p.jsxs("p",{className:"service-help",children:["通过“",t.label,"”连接下方服务。",o?.canManage?"选择未授权的服务会授权此设备使用该中转。":"这里只显示已授权给此设备的中转。","目标服务会单独验证访问权限。"]}),i?p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(Ue,{size:16,className:"service-spinning"}),"正在读取可中转的服务…"]}):o&&p.jsxs("div",{className:"service-list",children:[o.items.map(k=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:c||!k.available,onClick:()=>{I(()=>y(k))},children:[p.jsx("span",{className:"service-icon",children:p.jsx(fi,{size:19})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:k.label||(k.url?new URL(k.url).host:`中转服务 ${k.serviceId.slice(0,8)}`)}),p.jsx("span",{className:"service-description",children:k.available?k.authorized?"已获中转授权 · 连接":"授权此设备并连接":"中转暂不可用"})]}),p.jsx(xn,{size:16})]},k.serviceId)),o.items.length===0&&p.jsx("p",{className:"service-empty",children:o.canManage?"暂无可中转的服务。可在本机 Mac 客户端连接目标服务,或在目标服务的“备用连接”中启用本入口。":"暂无已授权的中转服务,请让入口管理员分享备用连接邀请。"})]}),c&&p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(Ue,{size:16,className:"service-spinning"}),"正在授权并连接目标服务…"]}),!i&&p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:c,onClick:()=>h(k=>k+1),children:"刷新列表"})]}),d&&p.jsx("p",{className:"service-error",role:"alert",children:d})]})}const pc="#termdock-invite=";function yg(t){const e=new URL(t.entryUrl);e.hash="",e.search="",e.pathname="/";const n=new TextEncoder().encode(JSON.stringify(t));return e.hash=pc.slice(1)+btoa(String.fromCharCode(...n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),e.href}function Us(t){const e=new URL(t);if(!["https:","http:"].includes(e.protocol)||!e.hash.startsWith(pc))throw new Error("这不是有效的 Termdock 邀请链接");const n=e.hash.slice(pc.length);if(n.length>8192)throw new Error("邀请链接过长");let r;try{const i=n.replace(/-/g,"+").replace(/_/g,"/");r=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(Uint8Array.from(atob(i),a=>a.charCodeAt(0))))}catch{throw new Error("邀请链接不完整,请重新复制")}if(r.v!==1||typeof r.serviceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(r.serviceId)||r.routeOnly!==!0&&(typeof r.code!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(r.code)))throw new Error("邀请信息无效或版本不兼容");const o=new URL(r.entryUrl);if(o.origin!==e.origin||o.username||o.password||!["https:","http:"].includes(o.protocol))throw new Error("邀请地址与服务不一致");if(o.protocol==="http:"&&!["localhost","127.0.0.1","[::1]"].includes(o.hostname))throw new Error("远程邀请需要 HTTPS");if(r.entryServiceId!==void 0&&(typeof r.entryServiceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(r.entryServiceId)))throw new Error("邀请入口身份无效");if(r.routeCode!==void 0&&(typeof r.routeCode!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(r.routeCode)||!r.entryServiceId))throw new Error("邀请入口权限无效");if(r.routeOnly===!0&&(!r.entryServiceId||!r.routeCode||r.code!==void 0))throw new Error("备用连接邀请不完整");let s=o.origin;if(r.serviceUrl!==void 0){const i=new URL(r.serviceUrl);if(!["https:","http:"].includes(i.protocol)||i.username||i.password)throw new Error("目标服务地址无效");s=r.entryServiceId&&r.entryServiceId!==r.serviceId?i.origin:o.origin}return{url:o.origin,targetPeerId:r.serviceId,pairingCode:r.code,...r.routeOnly===!0?{routeOnly:!0}:{},serviceOrigin:s,serviceName:typeof r.name=="string"?r.name.slice(0,120):void 0,entryServiceId:r.entryServiceId,routeCode:r.routeCode}}function H1({service:t,onBusyChange:e}){const n={...t,targetPeerId:t.targetPeerId,serviceName:t.label},[r,o]=_.useState(()=>t.routes??Qt(n)),[s,i]=_.useState([]),[a,c]=_.useState(!0),[l,d]=_.useState(!1),[u,f]=_.useState(""),h=L=>{d(L),e(L)},[g,m]=_.useState(),[b,w]=_.useState(""),[I,y]=_.useState(""),[k,N]=_.useState(""),[x,T]=_.useState(!1),[S,v]=_.useState(),[A,O]=_.useState(),[B,C]=_.useState(!1);_.useEffect(()=>{let L=!1;return We().then(H=>{L||i(H.filter($=>$.targetPeerId&&$.targetPeerId!==t.targetPeerId))}).catch(()=>{L||f("暂时无法读取可用服务。")}).finally(()=>{L||c(!1)}),()=>{L=!0}},[t.targetPeerId]);const E=L=>s.find(H=>H.targetPeerId===L.targetPeerId)?.label||new URL(L.url).host,P=async L=>{h(!0),f(""),N("");try{await L()}catch(H){const $=H instanceof Error?H.message:"";f(/AUTHORIZATION|DENIED/.test($)?"当前设备没有入口管理权限。请让管理员分享备用连接邀请,或使用入口密码授权。":"暂时无法完成。请确认入口能连接目标服务,且目标地址、证书和授权有效。")}finally{h(!1)}},R=async(L,H)=>{const $={url:L.serviceOrigin||L.url,targetPeerId:L.targetPeerId};await P(async()=>{const X=await DE($,n.targetPeerId);if(!X.grants.some(U=>U.active)){if(!X.canManage&&H===void 0){m(L);return}await FE(n,$,H)}const Y=[...r.filter(U=>U.targetPeerId!==$.targetPeerId),$];await ss(t,Y),o(Y),m(void 0),w("")})};if(A)return p.jsxs("div",{className:"service-form",children:[p.jsxs("p",{className:"service-help",children:["把链接发给需要使用此备用连接的人。它只允许通过入口连接“",t.label,"”,对方仍需获得目标服务的访问权限。"]}),p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"备用连接邀请"}),p.jsx("input",{readOnly:!0,value:A,onFocus:L=>L.target.select()})]}),p.jsxs("button",{type:"button",className:"service-button service-primary",onClick:()=>{navigator.clipboard.writeText(A).then(()=>C(!0)).catch(()=>f("无法自动复制,请长按链接复制。"))},children:[p.jsx(lg,{size:16}),B?"已复制":"复制邀请链接"]}),p.jsx("button",{type:"button",className:"service-button service-secondary",onClick:()=>{O(void 0),C(!1)},children:"返回备用连接"}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u})]});if(g)return p.jsxs("form",{className:"service-form",onSubmit:L=>{L.preventDefault(),R(g,b).finally(()=>w(""))},children:[p.jsxs("p",{className:"service-help",children:["需要“",g.label,"”的管理员授权。若这是你的服务,可以使用它的密码;否则请管理员分享备用连接邀请。"]}),p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"入口服务密码"}),p.jsx("input",{type:"password",required:!0,value:b,onChange:L=>w(L.target.value),autoComplete:"current-password",disabled:l,autoFocus:!0})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:l||!b,children:l?"正在授权…":"授权并启用"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>{m(void 0),w("")},children:"取消"}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u})]});const D=r.filter(L=>L.targetPeerId===n.targetPeerId),M=r.filter(L=>L.targetPeerId!==n.targetPeerId),F=async()=>{if(!l){h(!0),T(!0),f(""),N("");try{o(await jE({...t,routes:r},I)),y(""),N("备用地址已验证并保存。")}catch(L){f(L instanceof Error?L.message:"暂时无法添加地址,请重试。")}finally{h(!1),T(!1)}}};return p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"电脑换了网络?添加它在新网络下的地址,原地址连不上时会自动尝试。只接受同一台服务。"}),p.jsxs("form",{className:"service-form",onSubmit:L=>{L.preventDefault(),F()},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"备用地址"}),p.jsx("input",{value:I,onChange:L=>{y(L.target.value),f(""),N("")},required:!0,disabled:l||r.length>=4,inputMode:"url",autoComplete:"off",autoCapitalize:"none",spellCheck:!1,placeholder:"例如:192.168.10.20:9834"})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:l||r.length>=4||!I.trim(),children:x?p.jsxs(p.Fragment,{children:[p.jsx(Ue,{size:16,className:"service-spinning"}),"正在验证…"]}):"验证并添加"})]}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u}),k&&p.jsx("p",{role:"status",className:"service-help",children:k}),r.length>=4&&p.jsx("p",{className:"service-help",children:"已保存 4 个备用连接。移除不再使用的地址或入口后,可以继续添加。"}),p.jsxs("div",{children:[p.jsx("p",{className:"service-help",children:"首选地址"}),p.jsx("p",{className:"service-address",children:t.serviceOrigin||t.url})]}),D.length>0&&p.jsx("div",{className:"service-list",children:D.map(L=>p.jsxs("div",{className:"service-route-item",children:[p.jsxs("div",{className:"service-route-line",children:[p.jsx("span",{className:"service-address service-route-address",children:L.url}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`移除地址 ${L.url}`,disabled:l,onClick:()=>v(L),children:"移除"})]}),S?.targetPeerId===L.targetPeerId&&S.url===L.url&&p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"从备用连接中移除此地址?不会停止正在运行的终端。"}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>v(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{P(async()=>{const H=r.filter($=>$.targetPeerId!==L.targetPeerId||$.url!==L.url);await ss(t,H),o(H),v(void 0)})},children:"确认移除"})]})]})]},L.url))}),p.jsxs("details",{className:"service-relay-options",children:[p.jsxs("summary",{children:["通过其他服务中转",M.length?`(${M.length})`:""]}),p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"所有直连地址都不可用时,尝试下方已授权入口;直连恢复后自动切回。"}),M.length>0&&p.jsx("div",{className:"service-list",children:M.map(L=>p.jsxs("div",{className:"service-route-item",children:[p.jsxs("div",{className:"service-route-line",children:[p.jsx("span",{className:"service-icon",children:p.jsx(fi,{size:18})}),p.jsx("span",{className:"service-name",children:E(L)}),p.jsx(Hs,{size:16,className:"service-selected"})]}),S?.targetPeerId===L.targetPeerId?p.jsxs("div",{className:"service-form",children:[p.jsxs("p",{className:"service-help",children:["撤销此设备经“",E(L),"”连接目标的权限?如当前无法直连,目标服务将断开。"]}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>v(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{P(async()=>{await ME(n.targetPeerId,L);const H=r.filter($=>$.targetPeerId!==L.targetPeerId);await ss(t,H),o(H),v(void 0)})},children:"确认撤销"})]})]}):p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>{P(async()=>{const H=await og(n,L);O(yg({v:1,routeOnly:!0,serviceId:n.targetPeerId,name:t.label,serviceUrl:t.serviceOrigin||t.url,entryUrl:L.url,entryServiceId:L.targetPeerId,routeCode:H.routeCode}))})},children:"分享备用连接"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>v(L),children:"撤销授权"})]})]},L.targetPeerId))}),a?p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx(Ue,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{children:[p.jsx("p",{className:"service-help",children:"添加中转入口"}),s.filter(L=>!r.some(H=>H.targetPeerId===L.targetPeerId)).map(L=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:l||r.length>=4,onClick:()=>{R(L)},children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:L.label}),p.jsx("span",{className:"service-description",children:"验证并授权后启用"})]}),p.jsx(xn,{size:16})]},L.id)),s.length===0&&p.jsx("p",{className:"service-empty",children:"添加并登录另一台服务后,可以将它设为中转入口。"})]})]})]}),l&&!x&&p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx(Ue,{size:16,className:"service-spinning"}),"正在验证连接与授权…"]})]})}function U1({current:t,renderRoutes:e,renderRelayServices:n,onOpen:r,onAdd:o,onInvite:s,hideHeader:i,onNavigation:a,onBusyChange:c,initiallyAdding:l=!1}){const[d,u]=_.useState([]),[f,h]=_.useState(!0),[g,m]=_.useState(l?{kind:"add"}:{kind:"list"}),[b,w]=_.useState(!1),I=_.useCallback(C=>{w(C),c?.(C)},[c]),[y,k]=_.useState(""),N=_.useCallback(()=>{m(C=>C.kind==="routes"||C.kind==="relay-services"?{kind:"edit",service:C.service}:{kind:"list"}),k("")},[]),x=g.kind==="add"?"添加服务":g.kind==="edit"?"服务设置":g.kind==="routes"?"备用连接":g.kind==="relay-services"?"可中转的服务":void 0;_.useEffect(()=>{a?.({title:x,...x?{back:N}:{}})},[x,N,a]),_.useEffect(()=>{let C=!1,E=0;const P=async()=>{const D=++E;try{const M=await We();!C&&E===D&&(u(M),k(""))}catch{!C&&E===D&&k("暂时无法读取服务列表,请重试。")}finally{!C&&E===D&&h(!1)}};P();const R=Zs(()=>{P()});return()=>{C=!0,R()}},[]);const T=async C=>{if(!b){I(!0),k("");try{await C()}catch(E){k(E instanceof Error?E.message:"暂时无法完成,请重试。")}finally{I(!1)}}},S=g.kind==="edit"||g.kind==="routes"||g.kind==="relay-services"?d.find(C=>kt(C,g.service))||g.service:void 0,v=t?d.find(C=>kt(C,t))||t:void 0,A=d.filter(C=>!t||!kt(C,t)),O=v?[v,...A]:A,B=p.jsxs(p.Fragment,{children:[f?p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(Ue,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{className:"service-list",children:[O.map(C=>{const E=!!t&&kt(C,t);return p.jsxs("div",{className:"service-row",children:[p.jsxs("button",{type:"button",className:"service-row-open",disabled:b||E,onClick:()=>{T(async()=>{(await r(C))?.passwordRequired&&m({kind:"add",input:C.serviceOrigin||C.url,passwordRequired:!0})})},"aria-label":E?`当前服务 ${C.label}`:`打开 ${C.label}`,children:[p.jsx("span",{className:"service-icon",children:p.jsx(fi,{size:20})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:C.label}),p.jsx("span",{className:"service-description",children:E?"当前服务":new URL(C.serviceOrigin||C.url).host})]}),E?p.jsx(Hs,{size:17,className:"service-selected"}):p.jsx(xn,{size:16,className:"service-muted"})]}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`管理 ${C.label}`,disabled:b,onClick:()=>{m({kind:"edit",service:C}),k("")},children:p.jsx(dg,{size:19})})]},C.id)}),O.length===0&&p.jsx("p",{className:"service-empty",children:"还没有添加服务。连接你的电脑,或粘贴收到的邀请链接。"})]}),p.jsxs("div",{className:`service-actions${s?" service-actions-pair":""}`,children:[p.jsxs("button",{type:"button",className:"service-button service-secondary",disabled:b,onClick:()=>{m({kind:"add"}),k("")},children:[p.jsx(ug,{size:16}),"添加服务"]}),s&&p.jsxs("button",{type:"button",className:"service-button service-secondary",disabled:b,onClick:s,children:[p.jsx(fg,{size:16}),"邀请设备"]})]})]});return p.jsxs("div",{className:"service-manager",children:[!i&&p.jsxs("div",{className:"service-heading",children:[x&&p.jsx("button",{type:"button",className:"service-icon-button","aria-label":"返回服务",disabled:b,onClick:N,children:p.jsx(ig,{size:20})}),p.jsx("h2",{children:x||"服务"})]}),g.kind==="relay-services"?n?.(S,I):g.kind==="routes"?e?.(S,I):g.kind==="list"?B:g.kind==="add"?p.jsx($1,{onSave:C=>T(async()=>{const E=Me(C);u(await Nt({id:E,url:E,label:new URL(E).host})),N()}),initialInput:g.input,passwordRequired:g.passwordRequired,busy:b,onSubmit:async(C,E)=>{let P;return await T(async()=>{P=await o(C,E),P?.passwordRequired||N()}),P}}):p.jsx(q1,{onRelayServices:n&&g.service.targetPeerId?()=>m({kind:"relay-services",service:g.service}):void 0,onRoutes:e&&g.service.targetPeerId?()=>m({kind:"routes",service:g.service}):void 0,service:S,busy:b,canRemove:!t||!kt(g.service,t),onSave:C=>{T(async()=>{u(await Nt({...S,label:C})),N()})},onRemove:()=>{T(async()=>{u(await Jm(g.service.id)),N()})}}),y&&p.jsx("p",{className:"service-error",role:"alert",children:y})]})}function $1({busy:t,onSubmit:e,onSave:n,initialInput:r="",passwordRequired:o=!1}){const[s,i]=_.useState(r),[a,c]=_.useState(""),[l,d]=_.useState(o);return p.jsxs("form",{className:"service-form",onSubmit:async u=>{u.preventDefault(),(await e(s.trim(),l?a:void 0))?.passwordRequired&&d(!0),c("")},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务地址或邀请链接"}),p.jsx("input",{value:s,onChange:u=>{i(u.target.value),d(!1),c("")},disabled:t,required:!0,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,placeholder:"例如:电脑地址:9834 或 https://…"})]}),l?p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务密码"}),p.jsx("input",{type:"password",value:a,onChange:u=>c(u.target.value),disabled:t,required:!0,autoFocus:!0,autoComplete:"current-password",placeholder:"输入这台服务的密码"})]}):p.jsx("p",{className:"service-help",children:"连接自己的服务,输入地址即可;收到邀请时,粘贴完整链接。"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:t||!s.trim()||s.includes("#termdock-invite="),onClick:()=>{n(s.trim())},children:"仅保存,不连接"}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:t||!s.trim()||l&&!a,children:t?p.jsxs(p.Fragment,{children:[p.jsx(Ue,{size:16,className:"service-spinning"}),"正在连接…"]}):l?"登录并连接":"继续"})]})}function q1({service:t,busy:e,canRemove:n,onSave:r,onRemove:o,onRoutes:s,onRelayServices:i}){const[a,c]=_.useState(t.label),[l,d]=_.useState(!1);return p.jsxs("form",{className:"service-form",onSubmit:u=>{u.preventDefault(),r(a.trim())},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务名称"}),p.jsx("input",{value:a,onChange:u=>c(u.target.value),disabled:e,required:!0,maxLength:120,placeholder:"例如:办公室电脑"})]}),p.jsx("p",{className:"service-address",children:t.serviceOrigin||t.url}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:e||!a.trim(),children:"保存名称"}),i&&p.jsxs("button",{type:"button",className:"service-row-open",disabled:e,onClick:i,children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:"可中转的服务"}),p.jsx("span",{className:"service-description",children:"通过这台服务连接其他电脑"})]}),p.jsx(xn,{size:16})]}),s&&p.jsxs("button",{type:"button",className:"service-row-open",disabled:e,onClick:s,children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:"备用连接"}),p.jsx("span",{className:"service-description",children:"添加其他网络地址或授权入口"})]}),p.jsx(xn,{size:16})]}),n&&p.jsx("div",{className:"service-remove",children:l?p.jsxs(p.Fragment,{children:[p.jsxs("p",{className:"service-help",children:["从列表移除“",t.label,"”?不会停止服务或删除终端。"]}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:e,onClick:()=>d(!1),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:e,onClick:o,children:"确认移除"})]})]}):p.jsx("button",{type:"button",className:"service-button service-danger",disabled:e,onClick:()=>d(!0),children:"移除服务"})})]})}var Fn={},ta,Lu;function K1(){return Lu||(Lu=1,ta=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),ta}var na={},qt={},Bu;function Cn(){if(Bu)return qt;Bu=1;let t;const e=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return qt.getSymbolSize=function(r){if(!r)throw new Error('"version" cannot be null or undefined');if(r<1||r>40)throw new Error('"version" should be in range from 1 to 40');return r*4+17},qt.getSymbolTotalCodewords=function(r){return e[r]},qt.getBCHDigit=function(n){let r=0;for(;n!==0;)r++,n>>>=1;return r},qt.setToSJISFunction=function(r){if(typeof r!="function")throw new Error('"toSJISFunc" is not a valid function.');t=r},qt.isKanjiModeEnabled=function(){return typeof t<"u"},qt.toSJIS=function(r){return t(r)},qt}var ra={},_u;function Al(){return _u||(_u=1,(function(t){t.L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2};function e(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw new Error("Unknown EC Level: "+n)}}t.isValid=function(r){return r&&typeof r.bit<"u"&&r.bit>=0&&r.bit<4},t.from=function(r,o){if(t.isValid(r))return r;try{return e(r)}catch{return o}}})(ra)),ra}var oa,Ou;function z1(){if(Ou)return oa;Ou=1;function t(){this.buffer=[],this.length=0}return t.prototype={get:function(e){const n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)===1},put:function(e,n){for(let r=0;r<n;r++)this.putBit((e>>>n-r-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}},oa=t,oa}var sa,Du;function W1(){if(Du)return sa;Du=1;function t(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}return t.prototype.set=function(e,n,r,o){const s=e*this.size+n;this.data[s]=r,o&&(this.reservedBit[s]=!0)},t.prototype.get=function(e,n){return this.data[e*this.size+n]},t.prototype.xor=function(e,n,r){this.data[e*this.size+n]^=r},t.prototype.isReserved=function(e,n){return this.reservedBit[e*this.size+n]},sa=t,sa}var ia={},Fu;function G1(){return Fu||(Fu=1,(function(t){const e=Cn().getSymbolSize;t.getRowColCoords=function(r){if(r===1)return[];const o=Math.floor(r/7)+2,s=e(r),i=s===145?26:Math.ceil((s-13)/(2*o-2))*2,a=[s-7];for(let c=1;c<o-1;c++)a[c]=a[c-1]-i;return a.push(6),a.reverse()},t.getPositions=function(r){const o=[],s=t.getRowColCoords(r),i=s.length;for(let a=0;a<i;a++)for(let c=0;c<i;c++)a===0&&c===0||a===0&&c===i-1||a===i-1&&c===0||o.push([s[a],s[c]]);return o}})(ia)),ia}var aa={},Mu;function V1(){if(Mu)return aa;Mu=1;const t=Cn().getSymbolSize,e=7;return aa.getPositions=function(r){const o=t(r);return[[0,0],[o-e,0],[0,o-e]]},aa}var ca={},ju;function X1(){return ju||(ju=1,(function(t){t.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const e={N1:3,N2:3,N3:40,N4:10};t.isValid=function(o){return o!=null&&o!==""&&!isNaN(o)&&o>=0&&o<=7},t.from=function(o){return t.isValid(o)?parseInt(o,10):void 0},t.getPenaltyN1=function(o){const s=o.size;let i=0,a=0,c=0,l=null,d=null;for(let u=0;u<s;u++){a=c=0,l=d=null;for(let f=0;f<s;f++){let h=o.get(u,f);h===l?a++:(a>=5&&(i+=e.N1+(a-5)),l=h,a=1),h=o.get(f,u),h===d?c++:(c>=5&&(i+=e.N1+(c-5)),d=h,c=1)}a>=5&&(i+=e.N1+(a-5)),c>=5&&(i+=e.N1+(c-5))}return i},t.getPenaltyN2=function(o){const s=o.size;let i=0;for(let a=0;a<s-1;a++)for(let c=0;c<s-1;c++){const l=o.get(a,c)+o.get(a,c+1)+o.get(a+1,c)+o.get(a+1,c+1);(l===4||l===0)&&i++}return i*e.N2},t.getPenaltyN3=function(o){const s=o.size;let i=0,a=0,c=0;for(let l=0;l<s;l++){a=c=0;for(let d=0;d<s;d++)a=a<<1&2047|o.get(l,d),d>=10&&(a===1488||a===93)&&i++,c=c<<1&2047|o.get(d,l),d>=10&&(c===1488||c===93)&&i++}return i*e.N3},t.getPenaltyN4=function(o){let s=0;const i=o.data.length;for(let c=0;c<i;c++)s+=o.data[c];return Math.abs(Math.ceil(s*100/i/5)-10)*e.N4};function n(r,o,s){switch(r){case t.Patterns.PATTERN000:return(o+s)%2===0;case t.Patterns.PATTERN001:return o%2===0;case t.Patterns.PATTERN010:return s%3===0;case t.Patterns.PATTERN011:return(o+s)%3===0;case t.Patterns.PATTERN100:return(Math.floor(o/2)+Math.floor(s/3))%2===0;case t.Patterns.PATTERN101:return o*s%2+o*s%3===0;case t.Patterns.PATTERN110:return(o*s%2+o*s%3)%2===0;case t.Patterns.PATTERN111:return(o*s%3+(o+s)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}t.applyMask=function(o,s){const i=s.size;for(let a=0;a<i;a++)for(let c=0;c<i;c++)s.isReserved(c,a)||s.xor(c,a,n(o,c,a))},t.getBestMask=function(o,s){const i=Object.keys(t.Patterns).length;let a=0,c=1/0;for(let l=0;l<i;l++){s(l),t.applyMask(l,o);const d=t.getPenaltyN1(o)+t.getPenaltyN2(o)+t.getPenaltyN3(o)+t.getPenaltyN4(o);t.applyMask(l,o),d<c&&(c=d,a=l)}return a}})(ca)),ca}var Go={},Hu;function bg(){if(Hu)return Go;Hu=1;const t=Al(),e=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],n=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return Go.getBlocksCount=function(o,s){switch(s){case t.L:return e[(o-1)*4+0];case t.M:return e[(o-1)*4+1];case t.Q:return e[(o-1)*4+2];case t.H:return e[(o-1)*4+3];default:return}},Go.getTotalCodewordsCount=function(o,s){switch(s){case t.L:return n[(o-1)*4+0];case t.M:return n[(o-1)*4+1];case t.Q:return n[(o-1)*4+2];case t.H:return n[(o-1)*4+3];default:return}},Go}var la={},Or={},Uu;function Y1(){if(Uu)return Or;Uu=1;const t=new Uint8Array(512),e=new Uint8Array(256);return(function(){let r=1;for(let o=0;o<255;o++)t[o]=r,e[r]=o,r<<=1,r&256&&(r^=285);for(let o=255;o<512;o++)t[o]=t[o-255]})(),Or.log=function(r){if(r<1)throw new Error("log("+r+")");return e[r]},Or.exp=function(r){return t[r]},Or.mul=function(r,o){return r===0||o===0?0:t[e[r]+e[o]]},Or}var $u;function Z1(){return $u||($u=1,(function(t){const e=Y1();t.mul=function(r,o){const s=new Uint8Array(r.length+o.length-1);for(let i=0;i<r.length;i++)for(let a=0;a<o.length;a++)s[i+a]^=e.mul(r[i],o[a]);return s},t.mod=function(r,o){let s=new Uint8Array(r);for(;s.length-o.length>=0;){const i=s[0];for(let c=0;c<o.length;c++)s[c]^=e.mul(o[c],i);let a=0;for(;a<s.length&&s[a]===0;)a++;s=s.slice(a)}return s},t.generateECPolynomial=function(r){let o=new Uint8Array([1]);for(let s=0;s<r;s++)o=t.mul(o,new Uint8Array([1,e.exp(s)]));return o}})(la)),la}var da,qu;function J1(){if(qu)return da;qu=1;const t=Z1();function e(n){this.genPoly=void 0,this.degree=n,this.degree&&this.initialize(this.degree)}return e.prototype.initialize=function(r){this.degree=r,this.genPoly=t.generateECPolynomial(this.degree)},e.prototype.encode=function(r){if(!this.genPoly)throw new Error("Encoder not initialized");const o=new Uint8Array(r.length+this.degree);o.set(r);const s=t.mod(o,this.genPoly),i=this.degree-s.length;if(i>0){const a=new Uint8Array(this.degree);return a.set(s,i),a}return s},da=e,da}var ua={},fa={},ha={},Ku;function vg(){return Ku||(Ku=1,ha.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}),ha}var pt={},zu;function Sg(){if(zu)return pt;zu=1;const t="[0-9]+",e="[A-Z $%*+\\-./:]+";let n="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";n=n.replace(/u/g,"\\u");const r="(?:(?![A-Z0-9 $%*+\\-./:]|"+n+`)(?:.|[\r
3
3
  ]))+`;pt.KANJI=new RegExp(n,"g"),pt.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),pt.BYTE=new RegExp(r,"g"),pt.NUMERIC=new RegExp(t,"g"),pt.ALPHANUMERIC=new RegExp(e,"g");const o=new RegExp("^"+n+"$"),s=new RegExp("^"+t+"$"),i=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return pt.testKanji=function(c){return o.test(c)},pt.testNumeric=function(c){return s.test(c)},pt.testAlphanumeric=function(c){return i.test(c)},pt}var Wu;function In(){return Wu||(Wu=1,(function(t){const e=vg(),n=Sg();t.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},t.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},t.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},t.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},t.MIXED={bit:-1},t.getCharCountIndicator=function(s,i){if(!s.ccBits)throw new Error("Invalid mode: "+s);if(!e.isValid(i))throw new Error("Invalid version: "+i);return i>=1&&i<10?s.ccBits[0]:i<27?s.ccBits[1]:s.ccBits[2]},t.getBestModeForData=function(s){return n.testNumeric(s)?t.NUMERIC:n.testAlphanumeric(s)?t.ALPHANUMERIC:n.testKanji(s)?t.KANJI:t.BYTE},t.toString=function(s){if(s&&s.id)return s.id;throw new Error("Invalid mode")},t.isValid=function(s){return s&&s.bit&&s.ccBits};function r(o){if(typeof o!="string")throw new Error("Param is not a string");switch(o.toLowerCase()){case"numeric":return t.NUMERIC;case"alphanumeric":return t.ALPHANUMERIC;case"kanji":return t.KANJI;case"byte":return t.BYTE;default:throw new Error("Unknown mode: "+o)}}t.from=function(s,i){if(t.isValid(s))return s;try{return r(s)}catch{return i}}})(fa)),fa}var Gu;function Q1(){return Gu||(Gu=1,(function(t){const e=Cn(),n=bg(),r=Al(),o=In(),s=vg(),i=7973,a=e.getBCHDigit(i);function c(f,h,g){for(let m=1;m<=40;m++)if(h<=t.getCapacity(m,g,f))return m}function l(f,h){return o.getCharCountIndicator(f,h)+4}function d(f,h){let g=0;return f.forEach(function(m){const b=l(m.mode,h);g+=b+m.getBitsLength()}),g}function u(f,h){for(let g=1;g<=40;g++)if(d(f,g)<=t.getCapacity(g,h,o.MIXED))return g}t.from=function(h,g){return s.isValid(h)?parseInt(h,10):g},t.getCapacity=function(h,g,m){if(!s.isValid(h))throw new Error("Invalid QR Code version");typeof m>"u"&&(m=o.BYTE);const b=e.getSymbolTotalCodewords(h),w=n.getTotalCodewordsCount(h,g),I=(b-w)*8;if(m===o.MIXED)return I;const y=I-l(m,h);switch(m){case o.NUMERIC:return Math.floor(y/10*3);case o.ALPHANUMERIC:return Math.floor(y/11*2);case o.KANJI:return Math.floor(y/13);case o.BYTE:default:return Math.floor(y/8)}},t.getBestVersionForData=function(h,g){let m;const b=r.from(g,r.M);if(Array.isArray(h)){if(h.length>1)return u(h,b);if(h.length===0)return 1;m=h[0]}else m=h;return c(m.mode,m.getLength(),b)},t.getEncodedBits=function(h){if(!s.isValid(h)||h<7)throw new Error("Invalid QR Code version");let g=h<<12;for(;e.getBCHDigit(g)-a>=0;)g^=i<<e.getBCHDigit(g)-a;return h<<12|g}})(ua)),ua}var pa={},Vu;function eA(){if(Vu)return pa;Vu=1;const t=Cn(),e=1335,n=21522,r=t.getBCHDigit(e);return pa.getEncodedBits=function(s,i){const a=s.bit<<3|i;let c=a<<10;for(;t.getBCHDigit(c)-r>=0;)c^=e<<t.getBCHDigit(c)-r;return(a<<10|c)^n},pa}var ga={},ma,Xu;function tA(){if(Xu)return ma;Xu=1;const t=In();function e(n){this.mode=t.NUMERIC,this.data=n.toString()}return e.getBitsLength=function(r){return 10*Math.floor(r/3)+(r%3?r%3*3+1:0)},e.prototype.getLength=function(){return this.data.length},e.prototype.getBitsLength=function(){return e.getBitsLength(this.data.length)},e.prototype.write=function(r){let o,s,i;for(o=0;o+3<=this.data.length;o+=3)s=this.data.substr(o,3),i=parseInt(s,10),r.put(i,10);const a=this.data.length-o;a>0&&(s=this.data.substr(o),i=parseInt(s,10),r.put(i,a*3+1))},ma=e,ma}var wa,Yu;function nA(){if(Yu)return wa;Yu=1;const t=In(),e=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function n(r){this.mode=t.ALPHANUMERIC,this.data=r}return n.getBitsLength=function(o){return 11*Math.floor(o/2)+6*(o%2)},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(o){let s;for(s=0;s+2<=this.data.length;s+=2){let i=e.indexOf(this.data[s])*45;i+=e.indexOf(this.data[s+1]),o.put(i,11)}this.data.length%2&&o.put(e.indexOf(this.data[s]),6)},wa=n,wa}var ya,Zu;function rA(){if(Zu)return ya;Zu=1;const t=In();function e(n){this.mode=t.BYTE,typeof n=="string"?this.data=new TextEncoder().encode(n):this.data=new Uint8Array(n)}return e.getBitsLength=function(r){return r*8},e.prototype.getLength=function(){return this.data.length},e.prototype.getBitsLength=function(){return e.getBitsLength(this.data.length)},e.prototype.write=function(n){for(let r=0,o=this.data.length;r<o;r++)n.put(this.data[r],8)},ya=e,ya}var ba,Ju;function oA(){if(Ju)return ba;Ju=1;const t=In(),e=Cn();function n(r){this.mode=t.KANJI,this.data=r}return n.getBitsLength=function(o){return o*13},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(r){let o;for(o=0;o<this.data.length;o++){let s=e.toSJIS(this.data[o]);if(s>=33088&&s<=40956)s-=33088;else if(s>=57408&&s<=60351)s-=49472;else throw new Error("Invalid SJIS character: "+this.data[o]+`
4
4
  Make sure your charset is UTF-8`);s=(s>>>8&255)*192+(s&255),r.put(s,13)}},ba=n,ba}var va={exports:{}},Qu;function sA(){return Qu||(Qu=1,(function(t){var e={single_source_shortest_paths:function(n,r,o){var s={},i={};i[r]=0;var a=e.PriorityQueue.make();a.push(r,0);for(var c,l,d,u,f,h,g,m,b;!a.empty();){c=a.pop(),l=c.value,u=c.cost,f=n[l]||{};for(d in f)f.hasOwnProperty(d)&&(h=f[d],g=u+h,m=i[d],b=typeof i[d]>"u",(b||m>g)&&(i[d]=g,a.push(d,g),s[d]=l))}if(typeof o<"u"&&typeof i[o]>"u"){var w=["Could not find a path from ",r," to ",o,"."].join("");throw new Error(w)}return s},extract_shortest_path_from_predecessor_list:function(n,r){for(var o=[],s=r;s;)o.push(s),n[s],s=n[s];return o.reverse(),o},find_path:function(n,r,o){var s=e.single_source_shortest_paths(n,r,o);return e.extract_shortest_path_from_predecessor_list(s,o)},PriorityQueue:{make:function(n){var r=e.PriorityQueue,o={},s;n=n||{};for(s in r)r.hasOwnProperty(s)&&(o[s]=r[s]);return o.queue=[],o.sorter=n.sorter||r.default_sorter,o},default_sorter:function(n,r){return n.cost-r.cost},push:function(n,r){var o={value:n,cost:r};this.queue.push(o),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t.exports=e})(va)),va.exports}var ef;function iA(){return ef||(ef=1,(function(t){const e=In(),n=tA(),r=nA(),o=rA(),s=oA(),i=Sg(),a=Cn(),c=sA();function l(w){return unescape(encodeURIComponent(w)).length}function d(w,I,y){const k=[];let N;for(;(N=w.exec(y))!==null;)k.push({data:N[0],index:N.index,mode:I,length:N[0].length});return k}function u(w){const I=d(i.NUMERIC,e.NUMERIC,w),y=d(i.ALPHANUMERIC,e.ALPHANUMERIC,w);let k,N;return a.isKanjiModeEnabled()?(k=d(i.BYTE,e.BYTE,w),N=d(i.KANJI,e.KANJI,w)):(k=d(i.BYTE_KANJI,e.BYTE,w),N=[]),I.concat(y,k,N).sort(function(T,S){return T.index-S.index}).map(function(T){return{data:T.data,mode:T.mode,length:T.length}})}function f(w,I){switch(I){case e.NUMERIC:return n.getBitsLength(w);case e.ALPHANUMERIC:return r.getBitsLength(w);case e.KANJI:return s.getBitsLength(w);case e.BYTE:return o.getBitsLength(w)}}function h(w){return w.reduce(function(I,y){const k=I.length-1>=0?I[I.length-1]:null;return k&&k.mode===y.mode?(I[I.length-1].data+=y.data,I):(I.push(y),I)},[])}function g(w){const I=[];for(let y=0;y<w.length;y++){const k=w[y];switch(k.mode){case e.NUMERIC:I.push([k,{data:k.data,mode:e.ALPHANUMERIC,length:k.length},{data:k.data,mode:e.BYTE,length:k.length}]);break;case e.ALPHANUMERIC:I.push([k,{data:k.data,mode:e.BYTE,length:k.length}]);break;case e.KANJI:I.push([k,{data:k.data,mode:e.BYTE,length:l(k.data)}]);break;case e.BYTE:I.push([{data:k.data,mode:e.BYTE,length:l(k.data)}])}}return I}function m(w,I){const y={},k={start:{}};let N=["start"];for(let x=0;x<w.length;x++){const T=w[x],S=[];for(let v=0;v<T.length;v++){const A=T[v],O=""+x+v;S.push(O),y[O]={node:A,lastCount:0},k[O]={};for(let B=0;B<N.length;B++){const C=N[B];y[C]&&y[C].node.mode===A.mode?(k[C][O]=f(y[C].lastCount+A.length,A.mode)-f(y[C].lastCount,A.mode),y[C].lastCount+=A.length):(y[C]&&(y[C].lastCount=A.length),k[C][O]=f(A.length,A.mode)+4+e.getCharCountIndicator(A.mode,I))}}N=S}for(let x=0;x<N.length;x++)k[N[x]].end=0;return{map:k,table:y}}function b(w,I){let y;const k=e.getBestModeForData(w);if(y=e.from(I,k),y!==e.BYTE&&y.bit<k.bit)throw new Error('"'+w+'" cannot be encoded with mode '+e.toString(y)+`.
5
5
  Suggested mode is: `+e.toString(k));switch(y===e.KANJI&&!a.isKanjiModeEnabled()&&(y=e.BYTE),y){case e.NUMERIC:return new n(w);case e.ALPHANUMERIC:return new r(w);case e.KANJI:return new s(w);case e.BYTE:return new o(w)}}t.fromArray=function(I){return I.reduce(function(y,k){return typeof k=="string"?y.push(b(k,null)):k.data&&y.push(b(k.data,k.mode)),y},[])},t.fromString=function(I,y){const k=u(I,a.isKanjiModeEnabled()),N=g(k),x=m(N,y),T=c.find_path(x.map,"start","end"),S=[];for(let v=1;v<T.length-1;v++)S.push(x.table[T[v]].node);return t.fromArray(h(S))},t.rawSplit=function(I){return t.fromArray(u(I,a.isKanjiModeEnabled()))}})(ga)),ga}var tf;function aA(){if(tf)return na;tf=1;const t=Cn(),e=Al(),n=z1(),r=W1(),o=G1(),s=V1(),i=X1(),a=bg(),c=J1(),l=Q1(),d=eA(),u=In(),f=iA();function h(x,T){const S=x.size,v=s.getPositions(T);for(let A=0;A<v.length;A++){const O=v[A][0],B=v[A][1];for(let C=-1;C<=7;C++)if(!(O+C<=-1||S<=O+C))for(let E=-1;E<=7;E++)B+E<=-1||S<=B+E||(C>=0&&C<=6&&(E===0||E===6)||E>=0&&E<=6&&(C===0||C===6)||C>=2&&C<=4&&E>=2&&E<=4?x.set(O+C,B+E,!0,!0):x.set(O+C,B+E,!1,!0))}}function g(x){const T=x.size;for(let S=8;S<T-8;S++){const v=S%2===0;x.set(S,6,v,!0),x.set(6,S,v,!0)}}function m(x,T){const S=o.getPositions(T);for(let v=0;v<S.length;v++){const A=S[v][0],O=S[v][1];for(let B=-2;B<=2;B++)for(let C=-2;C<=2;C++)B===-2||B===2||C===-2||C===2||B===0&&C===0?x.set(A+B,O+C,!0,!0):x.set(A+B,O+C,!1,!0)}}function b(x,T){const S=x.size,v=l.getEncodedBits(T);let A,O,B;for(let C=0;C<18;C++)A=Math.floor(C/3),O=C%3+S-8-3,B=(v>>C&1)===1,x.set(A,O,B,!0),x.set(O,A,B,!0)}function w(x,T,S){const v=x.size,A=d.getEncodedBits(T,S);let O,B;for(O=0;O<15;O++)B=(A>>O&1)===1,O<6?x.set(O,8,B,!0):O<8?x.set(O+1,8,B,!0):x.set(v-15+O,8,B,!0),O<8?x.set(8,v-O-1,B,!0):O<9?x.set(8,15-O-1+1,B,!0):x.set(8,15-O-1,B,!0);x.set(v-8,8,1,!0)}function I(x,T){const S=x.size;let v=-1,A=S-1,O=7,B=0;for(let C=S-1;C>0;C-=2)for(C===6&&C--;;){for(let E=0;E<2;E++)if(!x.isReserved(A,C-E)){let P=!1;B<T.length&&(P=(T[B]>>>O&1)===1),x.set(A,C-E,P),O--,O===-1&&(B++,O=7)}if(A+=v,A<0||S<=A){A-=v,v=-v;break}}}function y(x,T,S){const v=new n;S.forEach(function(E){v.put(E.mode.bit,4),v.put(E.getLength(),u.getCharCountIndicator(E.mode,x)),E.write(v)});const A=t.getSymbolTotalCodewords(x),O=a.getTotalCodewordsCount(x,T),B=(A-O)*8;for(v.getLengthInBits()+4<=B&&v.put(0,4);v.getLengthInBits()%8!==0;)v.putBit(0);const C=(B-v.getLengthInBits())/8;for(let E=0;E<C;E++)v.put(E%2?17:236,8);return k(v,x,T)}function k(x,T,S){const v=t.getSymbolTotalCodewords(T),A=a.getTotalCodewordsCount(T,S),O=v-A,B=a.getBlocksCount(T,S),C=v%B,E=B-C,P=Math.floor(v/B),R=Math.floor(O/B),D=R+1,M=P-R,F=new c(M);let L=0;const H=new Array(B),$=new Array(B);let X=0;const Y=new Uint8Array(x.buffer);for(let z=0;z<B;z++){const V=z<E?R:D;H[z]=Y.slice(L,L+V),$[z]=F.encode(H[z]),L+=V,X=Math.max(X,V)}const U=new Uint8Array(v);let K=0,q,W;for(q=0;q<X;q++)for(W=0;W<B;W++)q<H[W].length&&(U[K++]=H[W][q]);for(q=0;q<M;q++)for(W=0;W<B;W++)U[K++]=$[W][q];return U}function N(x,T,S,v){let A;if(Array.isArray(x))A=f.fromArray(x);else if(typeof x=="string"){let P=T;if(!P){const R=f.rawSplit(x);P=l.getBestVersionForData(R,S)}A=f.fromString(x,P||40)}else throw new Error("Invalid data");const O=l.getBestVersionForData(A,S);if(!O)throw new Error("The amount of data is too big to be stored in a QR Code");if(!T)T=O;else if(T<O)throw new Error(`
@@ -32,4 +32,4 @@ ${t.stack}`:"",e?`
32
32
  React component stack:
33
33
  ${e.trim()}`:""].filter(Boolean).join(`
34
34
  `)}async function e2(t){try{if(navigator.clipboard?.writeText)return await navigator.clipboard.writeText(t),!0}catch{}const e=document.createElement("textarea");e.value=t,e.setAttribute("readonly",""),e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.select();try{return document.execCommand("copy")}catch{return!1}finally{e.remove()}}function t2({error:t,componentStack:e}){const{t:n}=gi(),[r,o]=Xe.useState("idle"),s=async()=>{const i=QI(t,e,{url:window.location.href,userAgent:navigator.userAgent,capturedAt:new Date().toISOString()});o(await e2(i)?"copied":"failed")};return p.jsx("div",{className:"flex h-full items-center justify-center p-4",children:p.jsxs("div",{className:"flex flex-col items-center gap-3 text-center max-w-md",children:[p.jsx("div",{className:"w-12 h-12 rounded-full bg-destructive/10 flex items-center justify-center",children:p.jsx("svg",{className:"w-6 h-6 text-destructive",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:p.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})})}),p.jsxs("div",{className:"space-y-1",children:[p.jsx("h3",{className:"font-medium text-foreground",children:n("errorBoundary.title")}),p.jsx("p",{className:"text-sm text-muted-foreground",children:t?.message||n("errorBoundary.unexpected")})]}),p.jsxs("div",{className:"mt-2 flex flex-wrap items-center justify-center gap-2",children:[p.jsx("button",{type:"button",onClick:()=>{s()},className:"rounded-full bg-surface-2 px-5 py-2.5 text-sm font-medium text-foreground ring-1 ring-border/15 transition hover:bg-surface-elevated active:scale-[0.97]",children:n(r==="copied"?"errorBoundary.copied":r==="failed"?"errorBoundary.copyFailed":"errorBoundary.copyDetails")}),p.jsx("button",{type:"button",onClick:()=>window.location.reload(),className:"rounded-full bg-primary px-5 py-2.5 text-sm font-medium text-primary-foreground shadow-sm transition-all hover:bg-primary/90 active:scale-[0.97]",children:n("errorBoundary.retry")})]})]})})}class n2 extends Xe.Component{state={hasError:!1,error:null,componentStack:""};static getDerivedStateFromError(e){return{hasError:!0,error:e,componentStack:""}}componentDidCatch(e,n){console.error("Terminal error caught by boundary:",e,n),this.setState({componentStack:n.componentStack??""})}render(){return this.state.hasError?this.props.fallback?this.props.fallback:p.jsx(t2,{error:this.state.error,componentStack:this.state.componentStack}):this.props.children}}function be(){try{if(window.parent!==window&&location.pathname==="/workspace.html"&&window.parent.location.origin===location.origin&&window.parent.__termdockWorkspaceHost)return window.parent}catch{}return window}const r2="debug",o2="termdock:debug";function Sf(t){return t?new Set(t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)):new Set}function s2(){if(typeof window>"u")return new Set;const t=Sf(new URLSearchParams(window.location.search).get(r2));let e=new Set;try{e=Sf(window.localStorage.getItem(o2))}catch{e=new Set}const n=new Set([...t,...e]);return n.has("1")||n.has("true")||n.has("*")||n.has("all")?new Set(["*"]):n}function i2(t){const e=s2();return e.has("*")||e.has(t)}function a2(t){const e=i2(t);return(...n)=>{e&&console.log(`[debug:${t}]`,...n)}}const xf=80,c2=60,l2="termdock:viewport-keyboard-change",d2="termdock:viewport-layout-change",Rt=240,Ef=640,Af=360,u2=1500;function f2({measuredHeight:t,documentVisible:e,editableFocused:n}){return e&&n&&t>0}function Ba(){if(typeof document>"u")return!1;const t=document.activeElement;return t instanceof HTMLElement&&t.matches('input:not([type="hidden"]), textarea, select, [contenteditable]:not([contenteditable="false"])')}const zs=t=>{const e=typeof t=="number"?t:Number.parseFloat(typeof t=="string"?t:"0");return Number.isFinite(e)&&e>0?Math.round(e):0},lm=(t,e)=>{const n=t.map(zs).filter(r=>r>0);return n.find(r=>r>=Rt)??n[0]??e},so=()=>typeof window>"u"?Ef:lm([be().innerHeight,document.documentElement?.clientHeight,document.body?.clientHeight,be().visualViewport?.height,window.screen?.availHeight,window.screen?.height],Ef),dm=()=>typeof window>"u"?Af:lm([be().innerWidth,document.documentElement?.clientWidth,document.body?.clientWidth,be().visualViewport?.width,window.screen?.availWidth,window.screen?.width],Af),Kt=t=>{const e=Number.parseFloat(t||"0");return Number.isFinite(e)?Math.max(0,Math.round(e)):0},um=()=>typeof navigator>"u"?!1:/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1,h2=()=>typeof window>"u"?!1:be().navigator.standalone===!0||be().matchMedia?.("(display-mode: standalone)").matches===!0,fm=()=>{if(typeof window>"u"||!um()||!h2())return{top:0,right:0,bottom:0,left:0};if(!(so()>=dm()))return{top:0,right:0,bottom:0,left:0};const e=window.screen?.width||window.innerWidth,n=window.screen?.height||window.innerHeight,r=Math.min(e,n),o=Math.max(e,n);return r>=700?{top:20,right:0,bottom:20,left:0}:o<780?{top:20,right:0,bottom:0,left:0}:{top:o>=852?59:o>=844?47:44,right:0,bottom:34,left:0}};function p2(t="--app-vh"){if(typeof window>"u"||typeof document>"u")return;const e=zs(be().visualViewport?.height),n=Math.max(0,Math.round(be().visualViewport?.offsetTop??0)),r=so(),s=e>=Rt?Math.min(r,e+n):r,i=Math.max(r,s),a=document.documentElement.style;a.setProperty(t,`${Math.max(s,Rt)}px`),a.setProperty("--app-base-vh",`${Math.max(i,Rt)}px`),a.setProperty("--app-visible-vh",`${Math.max(s,Rt)}px`),a.setProperty("--app-vv-offset-top",`${n}px`),a.setProperty("--kb-translate-y","0px"),a.setProperty("--kb-margin-top","0px"),a.setProperty("--kb-height","0px");const c=fm();c.top>0&&a.setProperty("--safe-top-inset",`${c.top}px`),c.right>0&&a.setProperty("--safe-right-inset",`${c.right}px`),c.bottom>0&&a.setProperty("--safe-bottom-inset",`${c.bottom}px`),c.left>0&&a.setProperty("--safe-left-inset",`${c.left}px`)}function zR(t={}){const{cssVarName:e="--app-vh"}=t,n=Xe.useMemo(()=>a2("viewport"),[]),r=Xe.useCallback(()=>{if(typeof window>"u")return 0;const d=be().visualViewport,u=so();if(!d)return u;const f=zs(d.height);if(f<Rt&&u>=Rt)return u;const h=d.offsetTop,m=f<u-1&&h>0&&h<=96?f+h:f,b=Math.max(0,Math.min(u,m));return b>0?Math.round(b):u},[]),[o,s]=Xe.useState(r),i=Xe.useRef(0),a=Xe.useRef(0),c=Xe.useRef(0),l=Xe.useRef(!1);return Xe.useEffect(()=>{if(typeof window>"u")return;let d=null,u=0,f=null,h="",g=null;const m=()=>{if(g?.isConnected)return g;try{return g=document.createElement("div"),g.setAttribute("aria-hidden","true"),g.style.cssText=["position:fixed","top:0","left:0","width:0","height:0","visibility:hidden","pointer-events:none","padding-top:constant(safe-area-inset-top)","padding-top:env(safe-area-inset-top,0px)","padding-right:constant(safe-area-inset-right)","padding-right:env(safe-area-inset-right,0px)","padding-bottom:constant(safe-area-inset-bottom)","padding-bottom:env(safe-area-inset-bottom,0px)","padding-left:constant(safe-area-inset-left)","padding-left:env(safe-area-inset-left,0px)"].join(";"),(document.body||document.documentElement).appendChild(g),g}catch{}return null},b=()=>{let R={top:0,right:0,bottom:0,left:0};try{const L=m();if(L){const H=getComputedStyle(L);R={top:Kt(H.paddingTop),right:Kt(H.paddingRight),bottom:Kt(H.paddingBottom),left:Kt(H.paddingLeft)}}}catch{}const D=be();if(D!==window){const L=D.getComputedStyle(D.document.documentElement);R={top:Math.max(R.top,Kt(L.getPropertyValue("--safe-top-inset"))),right:Math.max(R.right,Kt(L.getPropertyValue("--safe-right-inset"))),bottom:Math.max(R.bottom,Kt(L.getPropertyValue("--safe-bottom-inset"))),left:Math.max(R.left,Kt(L.getPropertyValue("--safe-left-inset")))}}const M=fm(),F={top:Math.max(R.top,M.top),right:Math.max(R.right,M.right),bottom:Math.max(R.bottom,M.bottom),left:Math.max(R.left,M.left)};return document.documentElement.style.setProperty("--safe-top-inset",`${F.top}px`),document.documentElement.style.setProperty("--safe-right-inset",`${F.right}px`),document.documentElement.style.setProperty("--safe-bottom-inset",`${F.bottom}px`),document.documentElement.style.setProperty("--safe-left-inset",`${F.left}px`),F},w=(R,D,M,F)=>{const L=Math.max(D,M);if(i.current===0){i.current=L,a.current=R,document.documentElement.style.setProperty("--app-base-vh",`${L}px`);return}const H=Math.abs(R-a.current),$=F<=xf;(H>c2||$)&&(i.current=L,a.current=R,document.documentElement.style.setProperty("--app-base-vh",`${L}px`))},I=(R="event")=>{d=null;const D=r(),M=Math.round(be().visualViewport?.offsetTop??0),F=zs(be().visualViewport?.height),L=F>=Rt?F:D,H=so(),$=dm(),X=Math.max(0,L+M),Y=b(),U=Y.bottom,K=Math.max(0,i.current-X-U);w($,H,X,K),s(Sr=>Sr===D?Sr:D);const q=Number.parseInt(document.documentElement.style.getPropertyValue(e)||"0",10);document.documentElement.style.setProperty(e,`${D}px`),document.documentElement.style.setProperty("--app-vv-offset-top",`${M}px`);const W=i.current,z=Math.min(D,L),V=Math.max(0,Math.min(W,X)),J=Math.max(0,Math.round(W-z-U)),oe=Ba(),ne=f2({measuredHeight:J,documentVisible:document.visibilityState==="visible",editableFocused:oe}),ae=ne?J:0,he=ae>=xf,Be=-ae,Ge=ae;document.documentElement.style.setProperty("--kb-translate-y",`${Be}px`),document.documentElement.style.setProperty("--kb-margin-top",`${Ge}px`),document.documentElement.style.setProperty("--kb-height",`${ae}px`),document.documentElement.style.setProperty("--app-visible-vh",`${V}px`);const Ee=Math.abs(ae-c.current)>1,Ae=he!==l.current;(Ee||Ae)&&(c.current=ae,l.current=he,document.dispatchEvent(new CustomEvent(l2,{detail:{baseHeight:W,visibleHeight:V,visualViewportHeight:L,offsetTop:M,keyboardHeight:ae,isOpen:he,source:R}}))),(q!==D||M>0||Ee||Ae)&&n("sync",{cssVarName:e,innerHeight:H,baseHeight:W,rawViewportHeight:L,offsetTop:M,visibleHeight:V,rawHeight:D,appliedHeight:D,keyboardViewportHeight:z,measuredKeyboardHeight:J,editableFocused:oe,applyKeyboardInset:ne,keyboardHeight:ae,isKeyboardOpen:he,safeAreaInsets:Y,source:R}),document.dispatchEvent(new CustomEvent(d2,{detail:{height:D,baseHeight:W,visibleHeight:V,offsetTop:M,source:R}}))},y=()=>{d===null&&(d=window.requestAnimationFrame(()=>{d=null;const R=be(),D=R.visualViewport,M=[R.innerWidth,R.innerHeight,D?.width,D?.height,D?.offsetTop,D?.offsetLeft,document.visibilityState,Ba()].join(":"),F=f;f=null,(F||M!==h)&&(h=M,I(F||"viewport.settle")),performance.now()<u&&y()}))},k=(R="event")=>{(R.includes("visibilitychange")||R.includes("pageshow"))&&n("schedule",{source:R}),f=R,um()&&document.visibilityState==="visible"&&(u=performance.now()+u2),y()};k("mount");const N=()=>k("resize"),x=()=>k("orientationchange"),T=()=>k("visualViewport.resize"),S=()=>k("visualViewport.scroll"),v=()=>k("focusin"),A=()=>k("focusout"),O=R=>{u=0;const D=document.activeElement;D instanceof HTMLElement&&Ba()&&D.blur(),c.current=0,l.current=!1;const M=Math.max(i.current,so(),Rt),F=document.documentElement.style;F.setProperty(e,`${M}px`),F.setProperty("--app-visible-vh",`${M}px`),F.setProperty("--app-vv-offset-top","0px"),F.setProperty("--kb-translate-y","0px"),F.setProperty("--kb-margin-top","0px"),F.setProperty("--kb-height","0px"),s(L=>L===M?L:M),n("keyboard session reset",{source:R,baseHeight:M})};window.addEventListener("resize",N),window.addEventListener("orientationchange",x),be().visualViewport?.addEventListener("resize",T),be().visualViewport?.addEventListener("scroll",S),document.addEventListener("focusin",v),document.addEventListener("focusout",A);const B=R=>{n("resume",{source:R,innerHeight:Math.round(window.innerHeight),visualViewport:be().visualViewport?{width:Math.round(be().visualViewport.width),height:Math.round(be().visualViewport.height),offsetTop:Math.round(be().visualViewport.offsetTop)}:null,hidden:document.hidden}),k(R)},C=()=>{document.hidden?O("visibilitychange:hidden"):B("visibilitychange")},E=()=>B("pageshow"),P=()=>O("pagehide");return document.addEventListener("visibilitychange",C),window.addEventListener("pageshow",E),window.addEventListener("pagehide",P),()=>{window.removeEventListener("resize",N),window.removeEventListener("orientationchange",x),be().visualViewport?.removeEventListener("resize",T),be().visualViewport?.removeEventListener("scroll",S),document.removeEventListener("focusin",v),document.removeEventListener("focusout",A),document.removeEventListener("visibilitychange",C),window.removeEventListener("pageshow",E),window.removeEventListener("pagehide",P),d!==null&&window.cancelAnimationFrame(d),g?.remove()}},[e,n,r]),o}const g2=1e3,m2=2e4,w2=9e4,y2=5e3,ee={ws:null,listeners:new Set,reconnectAttempt:0,reconnectTimer:null,idleCloseTimer:null,closing:!1};let Jo=0,cr=null;function b2(){return typeof window>"u"?null:`${window.location.protocol==="https:"?"wss":"ws"}://${window.location.host}/api/control/ws`}function hm(){ee.idleCloseTimer&&(clearTimeout(ee.idleCloseTimer),ee.idleCloseTimer=null)}function v2(){hm(),!(ee.ws&&ee.ws.readyState===WebSocket.OPEN)&&(ee.idleCloseTimer=setTimeout(()=>{ee.idleCloseTimer=null,ee.listeners.size===0&&S2()},y2))}function S2(){if(ee.ws){try{ee.ws.close()}catch{}ee.ws=null}cr&&(clearInterval(cr),cr=null)}function kf(){if(ee.reconnectTimer)return;const t=Math.min(g2*Math.pow(2,ee.reconnectAttempt),m2);ee.reconnectAttempt+=1,ee.reconnectTimer=setTimeout(()=>{ee.reconnectTimer=null,pm()},t)}function pm(){const t=b2();if(!t||ee.ws&&ee.ws.readyState===WebSocket.OPEN)return;let e;try{e=rg(t)}catch{kf();return}ee.ws=e,e.onopen=()=>{ee.reconnectAttempt=0,Jo=Date.now(),cr||(cr=setInterval(()=>{if(!(!ee.ws||ee.ws.readyState!==WebSocket.OPEN)&&Jo>0&&Date.now()-Jo>w2)try{ee.ws.close()}catch{}},3e4),cr.unref?.())},e.onmessage=n=>{Jo=Date.now();let r=null;try{r=JSON.parse(n.data)}catch{return}if(!r)return;if(r.type==="session-notice"){if(typeof r.id!="string"||typeof r.sessionId!="string"||typeof r.sessionName!="string"||typeof r.message!="string"||!r.message.trim()||r.message.length>4e3||r.title!==void 0&&(typeof r.title!="string"||r.title.length>120)||typeof r.createdAt!="number")return;const i=r;for(const a of ee.listeners)try{a(i)}catch(c){console.error("[clientStateSync] listener threw:",c)}return}if(r.type==="update-state"){const i=r.state;if(!i||typeof i.status!="string"||typeof i.currentVersion!="string")return;const a={type:"update-state",state:i};for(const c of ee.listeners)try{c(a)}catch(l){console.error("[clientStateSync] listener threw:",l)}return}if(r.type==="server-health"){const i=r.state;if(!i||typeof i.attention!="boolean"||typeof i.supervised!="boolean")return;const a={type:"server-health",state:i};for(const c of ee.listeners)try{c(a)}catch(l){console.error("[clientStateSync] listener threw:",l)}return}if(r.type==="context-draft"){if(typeof r.text!="string")return;const i={type:"context-draft",text:r.text,updatedAt:typeof r.updatedAt=="number"?r.updatedAt:Date.now(),origin:typeof r.origin=="string"?r.origin:null};for(const a of ee.listeners)try{a(i)}catch(c){console.error("[clientStateSync] listener threw:",c)}return}if(r.type==="pinned-explorer-roots"){if(!r.pinnedExplorerRoots||typeof r.pinnedExplorerRoots!="object"||Array.isArray(r.pinnedExplorerRoots))return;const i={type:"pinned-explorer-roots",pinnedExplorerRoots:r.pinnedExplorerRoots,updatedAt:typeof r.updatedAt=="number"?r.updatedAt:Date.now(),origin:typeof r.origin=="string"?r.origin:null};for(const a of ee.listeners)try{a(i)}catch(c){console.error("[clientStateSync] listener threw:",c)}return}if(r.type==="config-updated"){if(r.key!=="toolbar-presets"&&r.key!=="agent-rules"&&r.key!=="program-detection")return;const i={type:"config-updated",key:r.key,updatedAt:typeof r.updatedAt=="number"?r.updatedAt:void 0};for(const a of ee.listeners)try{a(i)}catch(c){console.error("[clientStateSync] listener threw:",c)}return}if(r.type!=="client-state"||!r.state)return;const o=r.state,s={type:"client-state",clientState:{sessions:Array.isArray(o.sessions)?o.sessions:[],updatedAt:typeof o.updatedAt=="number"?o.updatedAt:Date.now()},inventory:r.inventory,seq:typeof r.seq=="number"?r.seq:void 0};for(const i of ee.listeners)try{i(s)}catch(a){console.error("[clientStateSync] listener threw:",a)}},e.onclose=()=>{ee.ws===e&&(ee.ws=null),ee.listeners.size>0&&kf()},e.onerror=()=>{}}function gm(t){return ee.listeners.add(t),hm(),ee.ws||pm(),()=>{ee.listeners.delete(t),ee.listeners.size===0&&v2()}}const _a=hi(t=>({unread:{},viewing:null,receive:(e,n)=>t(r=>{const o=r.unread[e]??[];return r.viewing===e||o.includes(n)?r:{unread:{...r.unread,[e]:[...o,n]}}}),view:e=>t(n=>{if(!e||!n.unread[e])return n.viewing===e?n:{viewing:e};const r={...n.unread};return delete r[e],{viewing:e,unread:r}})})),mm=new Set(["bash","zsh","fish","sh","dash","ksh","tcsh","csh","nu"]);function Gn(t){if(!t)return null;if(t==="/")return"/";const e=t.replace(/\/+$/,"").split("/");return e[e.length-1]||t}function x2(t,e,n,r=mm,o=null,s=null){if(t.customName)return{primary:t.name,secondary:Gn(n)};if(o){const a=Gn(n),c=o===n||o===a;if(s!=="idle"&&!r.has(o)&&!c)return{primary:o,secondary:a}}if(e&&!r.has(e))return{primary:e,secondary:Gn(n)};const i=Gn(n);return i?{primary:i,secondary:null}:{primary:t.name,secondary:null}}function E2(t,e,n,r=mm,o=null,s=null){return x2(t,e,n,r,o,s).primary}function A2(t,e,n){const r=[],o=new Map;for(const s of t){const i=e(s),a=i&&i.trim().length>0?i:"";let c=o.get(a);c||(c={key:a,label:a?Gn(a)??a:n,sessions:[]},o.set(a,c),r.push(c)),c.sessions.push(s)}return r.sort((s,i)=>(s.key===""?1:0)-(i.key===""?1:0))}function WR(t){return t&&t.trim().length>0?t:""}function GR(t,e,n){const r=[...t],[o]=r.splice(e,1);return o?(r.splice(n,0,o),r.flatMap(s=>s.sessions.map(i=>i.id))):t.flatMap(s=>s.sessions.map(i=>i.id))}function k2(t,e){const n=new Set;return t.flatMap(r=>{const o=[...new Set(r.sessionIds)].filter(s=>e.has(s)&&!n.has(s));return o.length<(r.federated?1:2)?[]:(o.forEach(s=>n.add(s)),[{...r,sessionIds:o}])})}function VR(t,e,n,r,o=[],s=[]){const i=new Map(t.map(g=>[g.id,g])),a=k2(s,new Set(i.keys())),c=new Map,l=new Map,d=o.filter(g=>g.sessionIds.length>=2&&g.sessionIds.every(m=>i.has(m))),u=(g,m)=>{const b=i.get(m);g.forEach(w=>{c.set(w,g),l.set(w,b)})};for(const g of a){const m=new Set(g.sessionIds),b=new Map;for(const y of d)y.sessionIds.every(k=>m.has(k))&&y.sessionIds.forEach(k=>b.set(k,y.sessionIds));const w=new Set,I=g.sessionIds.flatMap(y=>{if(w.has(y))return[];const k=b.get(y)??[y];return k.forEach(N=>w.add(N)),k});u(I,g.sessionIds[0])}for(const g of d)g.sessionIds.some(m=>c.has(m))||u(g.sessionIds,g.sessionIds[0]);const f=g=>{const m=new Set;return g.flatMap(b=>{if(m.has(b.id))return[];const w=c.get(b.id)??[b.id];return w.forEach(I=>m.add(I)),w.map(I=>i.get(I))})};if(!n)return{arranged:f(t),groups:[]};const h=A2(t,g=>e(l.get(g.id)??g),r).map(g=>({...g,sessions:f(g.sessions)}));return{arranged:h.flatMap(g=>g.sessions),groups:h}}function C2(t,e,n){const r=t.findIndex(o=>n(o)===e);return r<0?null:t[r+1]?n(t[r+1]):r>0?n(t[r-1]):null}const wm="termdock-session-fonts-v1",Cf=8,I2=32;function ym(t){return Number.isFinite(t)?Math.max(Cf,Math.min(I2,Math.round(t))):Cf}function Ul(){if(typeof window>"u")return{};try{const t=window.localStorage.getItem(wm);if(!t)return{};const e=JSON.parse(t);if(typeof e!="object"||e===null)return{};const n={};for(const[r,o]of Object.entries(e))typeof o=="number"&&Number.isFinite(o)&&(n[r]=ym(o));return n}catch{return{}}}function bm(t){if(!(typeof window>"u"))try{window.localStorage.setItem(wm,JSON.stringify(t))}catch{}}function XR(t){return Ul()[t]??null}function YR(t,e){if(typeof window>"u")return;const n=Ul(),r=e===null?null:ym(e);r===null?delete n[t]:n[t]=r,bm(n),window.dispatchEvent(new CustomEvent("termfontchange",{detail:{sessionId:t,fontSize:r}}))}function R2(t){if(typeof window>"u")return;const e=Ul();t in e&&(delete e[t],bm(e))}const Oa="termdock-sessions",Bc="termdock-active-session",$l="termdock-sessions-cache";function _c(){try{const t=localStorage.getItem(Bc);return t&&t.trim().length>0?t:null}catch{return null}}function Un(t){try{t?localStorage.setItem(Bc,t):localStorage.removeItem(Bc)}catch{}}function vm(){if(typeof window>"u")return null;try{const t=localStorage.getItem($l);if(!t)return null;const e=JSON.parse(t);return Array.isArray(e)?e.filter(n=>typeof n=="object"&&n!==null&&typeof n.sessionId=="string"&&typeof n.name=="string"):null}catch{return null}}function rn(t){if(!(typeof window>"u"))try{localStorage.setItem($l,JSON.stringify(t))}catch{}}function If(){if(!(typeof window>"u"))try{localStorage.removeItem($l)}catch{}}function Sm(t){return t.map(e=>({...e,mode:e.mode==="tmux"?"tmux":"shell",tmuxSessionName:e.tmuxSessionName??null,customName:e.customName===!0}))}function Rf(t){return Sm(t.map(e=>({sessionId:e.sessionId,name:e.name,customName:e.customName===!0,backendSessionId:e.backendSessionId,mode:e.mode,tmuxSessionName:e.tmuxSessionName,createdAt:e.createdAt,lastActivity:e.lastActivity}))).map((e,n)=>({...e,activeProgram:t[n]?.activeProgram??null,cwd:t[n]?.cwd??null}))}function Tf(t){return t.map(e=>`${e.sessionId}:${e.name}:${e.customName}:${e.backendSessionId}:${e.mode}:${e.tmuxSessionName}:${e.lastActivity}:${e.activeProgram??""}:${e.cwd??""}`).join("|")}function Oc(t,e){return t.length===0?null:e&&t.some(n=>n.sessionId===e)?e:t[0]?.sessionId??null}function T2(){const t=vm()??[];return{sessions:t,activeSessionId:Oc(t,_c())}}function ZR(){const t=_.useRef(vm()).current,e=_.useRef(_c()).current,[n,r]=_.useState(t??[]),[o,s]=_.useState(null),[i,a]=_.useState(t&&t.length>0?Oc(t,e):e),[c,l]=_.useState(t===null),d=_.useRef(!1),u=_.useRef(null),f=_.useRef(t===null),h=_.useRef(0),g=_.useRef(new Set),m=_.useRef(0);_.useEffect(()=>{f.current=c},[c]),_.useEffect(()=>{u.current=i},[i]);const b=_.useCallback(E=>{const P=Oc(E,u.current??_c());return a(R=>R===P?R:P),Un(P),u.current=P,P},[]),w=_.useCallback((E,P)=>{const R=E.filter(D=>!g.current.has(D.sessionId));r(D=>Tf(D)===Tf(R)?D:R),rn(R),P?.reconcileActive&&b(R)},[b]),I=_.useCallback((E,P)=>{const R=g.current.size===0?E:{...E,clientSessions:E.clientSessions.filter(D=>!g.current.has(D.sessionId))};s(R),w(Rf(R.clientSessions),P)},[w]),y=_.useCallback(()=>typeof window>"u"?[]:localStorage.getItem(Oa)?(localStorage.removeItem(Oa),If(),Un(null),r([]),a(null),console.info("[session-persist] discarded legacy local session cache"),[]):[],[]),k=_.useCallback(async()=>{if(typeof window>"u")return[];const E=m.current;try{const P=await Dg(),R=Rf(P.clientSessions);return E!==m.current?(console.info("[session-inventory] ignored restore snapshot superseded by a local mutation"),R.filter(D=>!g.current.has(D.sessionId))):(I(P,{reconcileActive:!0}),R.length>0?R:y())}catch(P){console.error("Failed to restore sessions from server:",P);try{return y()}catch(R){console.error("Failed to discard legacy local sessions:",R)}}finally{l(!1)}return[]},[I,y]),N=_.useCallback(async E=>{const P=++m.current,R=await Fg(E);return P===m.current&&(I(R.inventory),a(R.session.sessionId),Un(R.session.sessionId)),R},[I]),x=_.useCallback(async(E,P)=>{++m.current,g.current.add(E),R2(E),r(R=>{const D=R.filter(L=>L.sessionId!==E),M=P!=null&&D.some(L=>L.sessionId===P),F=u.current===E?M?P:C2(R,E,L=>L.sessionId):u.current;return a(F),Un(F),rn(D),D});try{await jg(E)}catch(R){console.error("Failed to remove session from inventory:",R)}},[]),T=_.useCallback(E=>{const P=Date.now();r(R=>{const D=R.map(M=>M.sessionId===E?{...M,lastActivity:P}:M);return rn(D),D})},[]),S=_.useCallback(E=>{a(E),Un(E)},[]),v=_.useCallback(async(E,P)=>{const R=P.trim();if(!R)return;const D=++m.current;r(M=>{const F=M.map(L=>L.sessionId===E?{...L,name:R,customName:!0}:L);return rn(F),F});try{const M=await as(E,{name:R,customName:!0});D===m.current&&I(M)}catch(M){console.error("Failed to rename session in inventory:",M)}},[I]),A=_.useCallback(async E=>{const P=++m.current;r(R=>{const D=R.map(M=>M.sessionId===E?{...M,customName:!1}:M);return rn(D),D});try{const R=await as(E,{customName:!1});P===m.current&&I(R)}catch(R){console.error("Failed to reset session name in inventory:",R)}},[I]),O=_.useCallback(async E=>{const P=++m.current;r(R=>{const D=new Map(R.map($=>[$.sessionId,$])),M=E.map($=>D.get($)).filter($=>$!==void 0),F=new Set(E),L=R.filter($=>!F.has($.sessionId)),H=[...M,...L];return rn(H),H});try{const R=await Mg(E);P===m.current&&I(R)}catch(R){console.error("Failed to reorder sessions in inventory:",R)}},[I]),B=_.useCallback(async()=>{++m.current;for(const E of n)g.current.add(E.sessionId);r([]),s(null),a(null),Un(null),If(),typeof window<"u"&&localStorage.removeItem(Oa);try{await Hg()}catch(E){console.error("Failed to clear session inventory:",E)}},[n]),C=_.useCallback(async(E,P)=>{const R=++m.current;r(D=>{const M=D.map(F=>F.sessionId===E?{...F,backendSessionId:P}:F);return rn(M),M});try{const D=await as(E,{backendSessionId:P});R===m.current&&I(D)}catch(D){console.error("Failed to update session backend in inventory:",D)}},[I]);return _.useEffect(()=>{d.current||(d.current=!0,k())},[k]),_.useEffect(()=>gm(P=>{if(P.type!=="client-state"||f.current)return;const R=typeof P.seq=="number"?P.seq:null;if(R!==null){if(R<h.current){console.warn("[session-inventory] ignored stale control snapshot",{seq:R,latestSeq:h.current});return}h.current=R}if(P.inventory){I(P.inventory,{reconcileActive:!0});return}const D=Sm(P.clientState.sessions||[]);w(D,{reconcileActive:!0})}),[I,w]),{sessions:n,inventory:o,activeSessionId:i,isLoading:c,openSession:N,removeSession:x,updateSessionActivity:T,setActiveSession:S,updateSessionBackendId:C,renameSession:v,resetSessionCustomName:A,reorderSessions:O,clearAllSessions:B,restoreSessions:k}}const P2=256*1024,N2=256*1024,L2=128;function Pf(t,e=P2){if(!t)return[];if(t.length<=e)return[t];const n=[];let r=0;for(;r<t.length;){let o=Math.min(r+e,t.length);if(o<t.length){const s=t.lastIndexOf(`
35
- `,o);s>r&&(o=s+1)}n.push(t.slice(r,o)),r=o}return n}function B2(t,e=N2,n=L2){const r=new Map;let o=0,s=0;for(const i of[...t.keys()]){const a=t.get(i);if(!a||a.length===0){t.delete(i);continue}const c=[];for(;a.length>0;){const l=a[0];if(s>0&&(s>=n||o+l.length>e))break;a.shift(),c.push(l),o+=l.length,s+=1}if(c.length>0&&r.set(i,c),t.delete(i),a.length>0&&t.set(i,a),s>=n||o>=e)break}return r}async function xm(t,e=!1,n="termdock-encrypted-background"){const r=await new Promise((o,s)=>{const i=indexedDB.open(n,1);i.onupgradeneeded=()=>i.result.createObjectStore("state"),i.onsuccess=()=>o(i.result),i.onerror=()=>s(i.error)});try{return await new Promise((o,s)=>{const i=r.transaction("state",e?"readwrite":"readonly"),a=t(i.objectStore("state"));i.oncomplete=()=>o(a.result),i.onabort=i.onerror=()=>s(i.error)})}finally{r.close()}}const _2=t=>xm(e=>e.put(t,t.targetPeerId),!0),O2=t=>xm(e=>e.delete(t),!0),Em="termdock-pwa-notifications-enabled",Am="termdock-pwa-ai-notifications-enabled",km="termdock-pwa-exit-notifications-enabled",Cm="termdock-pwa-notification-alert-style",D2="termdock-notification-claim:",Dc=5e3,F2=1500,Fc="termdock-push-last-sync",Nf=360*60*1e3,M2=10080*60*1e3,io=new Map;function ql(){return rt()?!0:typeof window<"u"&&typeof Notification<"u"&&"serviceWorker"in navigator&&window.isSecureContext}function j2(){if(typeof navigator>"u")return!1;const t=navigator.userAgent;return/iPad|iPhone|iPod/.test(t)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1}function H2(){return typeof window>"u"?!1:!!(window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&navigator.standalone===!0)}function U2(){return rt()?!0:!(!ql()||j2()&&!H2())}function JR(){return rt()?"granted":typeof Notification>"u"?"unsupported":Notification.permission}function Kl(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(Em)==="true"}catch{return!1}}function QR(t){if(!(typeof window>"u"))try{window.localStorage.setItem(Em,String(t))}catch{}}function Ws(){if(typeof window>"u")return!0;try{const t=window.localStorage.getItem(Am);return t===null?!0:t==="true"}catch{return!0}}function eT(t){if(!(typeof window>"u"))try{window.localStorage.setItem(Am,String(t))}catch{}}function Mc(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(km)==="true"}catch{return!1}}function tT(t){if(!(typeof window>"u"))try{window.localStorage.setItem(km,String(t))}catch{}}function yo(){if(typeof window>"u")return"normal";try{const t=window.localStorage.getItem(Cm);if(t==="quiet"||t==="persistent")return t}catch{}return"normal"}function nT(t){if(!(typeof window>"u"))try{window.localStorage.setItem(Cm,t)}catch{}}async function rT(){return rt()?"granted":ql()?Notification.permission==="default"?Notification.requestPermission():Notification.permission:"unsupported"}function $2(){return typeof document>"u"?!0:document.visibilityState==="visible"&&document.hasFocus()}function q2(t){for(const[e,n]of io)t-n>Dc&&io.delete(e)}function K2(t){return t.dedupKey?.trim()?t.dedupKey.trim():t.tag?.trim()?t.tag.trim():[t.data?.sessionId,t.title,t.body].filter(e=>typeof e=="string"&&e.trim().length>0).map(e=>e.trim()).join("|")}function z2(t){const e=K2(t);if(!e)return!0;const n=Date.now();q2(n);const r=io.get(e)??0;if(n-r<Dc)return!1;try{if(typeof window<"u"&&window.localStorage){const o=`${D2}${e}`,s=Number(window.localStorage.getItem(o)??"0");if(Number.isFinite(s)&&n-s<Dc)return io.set(e,s),!1;Number.isFinite(s)&&s>0&&window.localStorage.removeItem(o),window.localStorage.setItem(o,String(n))}}catch{}return io.set(e,n),!0}async function mi(){if(typeof navigator>"u"||!("serviceWorker"in navigator))return null;try{const t=await navigator.serviceWorker.getRegistration()??null;return t?.active?t:await Promise.race([navigator.serviceWorker.ready,new Promise(n=>{window.setTimeout(()=>n(null),F2)})])??t}catch{return null}}function W2(t){const e="=".repeat((4-t.length%4)%4),n=(t+e).replace(/-/g,"+").replace(/_/g,"/"),r=window.atob(n),o=new Uint8Array(new ArrayBuffer(r.length));for(let s=0;s<r.length;s+=1)o[s]=r.charCodeAt(s);return o}async function zl(t,e){const n=await fetch("/api/csrf-token");if(!n.ok)throw new Error("Unable to get notification security token");const{csrfToken:r}=await n.json();return fetch(`/api/notifications/${t}`,{method:"POST",headers:{"Content-Type":"application/json","X-XSRF-TOKEN":r},body:JSON.stringify(e)})}async function G2(t=!1,e=!1){if(rt())return!0;if(!Kl()||!U2()||Notification.permission!=="granted")return!1;const n=await mi();if(!n?.pushManager)return!1;try{const r=await fetch("/api/notifications/status");if(!r.ok)return!1;const o=await r.json();let s=await n.pushManager.getSubscription();const i=!!(s?.expirationTime&&s.expirationTime-Date.now()<M2);if(!s)try{s=await n.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:W2(o.publicKey)})}catch(d){return console.warn(`[PWA notifications] Push subscription missing; re-subscribe failed${e?" (user gesture)":""}:`,d),!1}const a=Number(window.localStorage.getItem(Fc)??"0"),c=!o.subscription||o.subscription.endpoint!==s.endpoint||Date.now()-(o.subscription.updatedAt??0)>=Nf;if(t||c||Date.now()-a>=Nf||i){if(!(await zl("subscribe",{subscription:s.toJSON(),aiEnabled:Ws(),exitEnabled:Mc(),alertStyle:yo(),locale:navigator.language})).ok)return!1;window.localStorage.setItem(Fc,String(Date.now()))}const l=se();return l&&await _2({targetPeerId:l.targetPeerId,addresses:vr(l),routes:Qt(l),publicKey:o.publicKey,preferences:{aiEnabled:Ws(),exitEnabled:Mc(),alertStyle:yo(),locale:navigator.language}}),!0}catch(r){return console.warn("[PWA notifications] Push subscription sync failed:",r),!1}}async function oT(){if(rt())return;const e=await(await mi())?.pushManager?.getSubscription();try{await zl("unsubscribe",{endpoint:e?.endpoint})}finally{const n=se();n&&await O2(n.targetPeerId),await e?.unsubscribe();try{window.localStorage.removeItem(Fc)}catch{}}}async function sT(){if(rt()||!Kl())return;(await zl("preferences",{aiEnabled:Ws(),exitEnabled:Mc(),alertStyle:yo(),locale:navigator.language})).status===404&&await G2(!0)}async function iT(){if(!rt())try{const t=navigator;typeof t.clearAppBadge=="function"&&await t.clearAppBadge()}catch{}}async function aT(t){if(!rt())try{const e=await mi();if(!e||typeof e.getNotifications!="function")return;const n=`agent:${t}`,r=await e.getNotifications({tag:n});for(const s of r)s.close();const o=navigator;if(typeof o.setAppBadge=="function"){const s=await e.getNotifications();await o.setAppBadge(s.length)}}catch{}}async function Da(t){if(!Kl()||!ql())return!1;if(t.requireHidden!==!1&&$2())return!0;const e=rt();if(e){const s=t.alertStyle??yo(),i=await e.showNotification({title:t.title,body:t.body,tag:t.tag,sessionId:t.data?.sessionId,silent:s==="quiet",persistent:s==="persistent"});return e.notificationDeliveryConfirmation===!0&&i}if(Notification.permission!=="granted")return!1;const n=await mi();if(t.deferToPush&&await n?.pushManager?.getSubscription())return!0;if(t.requireHidden!==!1){if(await n?.pushManager?.getSubscription())return!0}if(!z2(t))return!0;const r=t.alertStyle??yo(),o={body:t.body,tag:t.tag,icon:"/pwa-192x192.png",badge:"/maskable-icon-512x512.png",requireInteraction:r==="persistent",renotify:r==="persistent"?!!t.tag:!1,silent:r==="quiet",vibrate:r==="quiet"?[]:[80,40,80],data:{url:t.data?.url??"/",sessionId:t.data?.sessionId}};try{if(n&&typeof n.showNotification=="function")return await n.showNotification(t.title,o),!0;const s=new Notification(t.title,o);return s.onclick=()=>{window.focus(),t.data?.url&&window.location.href!==t.data.url&&window.location.assign(t.data.url),s.close()},!0}catch(s){if(s instanceof DOMException&&s.name==="NotSupportedError"&&o.renotify)try{const i={...o,renotify:!1};return n&&typeof n.showNotification=="function"?await n.showNotification(t.title,i):new Notification(t.title,i),!0}catch(i){return console.warn("[PWA notifications] Failed to show notification (renotify fallback):",i),!1}return console.warn("[PWA notifications] Failed to show notification:",s),!1}}function V2(){try{return localStorage.getItem("termdock:locale")||"en"}catch{return"en"}}function X2(t,e){return t==="zh"?{waitingTitle:`${e} 需要你的处理`,waitingBody:`${e} 需要你的处理。`,doneTitle:`${e} 已完成`,doneBody:`${e} 已完成,点按查看结果。`,exitedTitle:`${e} 已退出`,exitedBody:`${e} 已退出,点按查看结果。`}:{waitingTitle:`${e} needs your input`,waitingBody:`${e} is waiting for your input.`,doneTitle:`${e} finished`,doneBody:"Tap to see the result.",exitedTitle:`${e} exited`,exitedBody:"Tap to see the result."}}const Lf=1e6;function zt(t){return{sessionId:t,directory:"",terminalSessionId:null,mode:"shell",tmuxSessionName:null,activeProgram:null,activeProgramRaw:null,activeProgramSource:null,cwd:null,inCopyMode:!1,isConnecting:!1,agentStatus:null,agentIndicator:null,agentStatusDetail:null,agent:null,agentMessage:null,agentNativeSessionId:null,agentResumeRecovered:!1,agentRich:!1,agentActivity:0,agentCwd:null,agentNeedsReview:!1,shellTitle:null,promptState:null,shellExitCode:null,tuiProgress:null,gitStatus:null,bufferChunks:[],bufferLength:0,lastOutputAt:null,updatedAt:Date.now()}}const wi="termdock-shell-titles-v1";function yi(){if(typeof window>"u")return{};try{const t=localStorage.getItem(wi);if(!t)return{};const e=JSON.parse(t);return typeof e=="object"&&e!==null?e:{}}catch{return{}}}function Y2(t){return yi()[t]??null}function Z2(t,e){if(!(typeof window>"u"))try{const n=yi();e?n[t]=e:delete n[t],localStorage.setItem(wi,JSON.stringify(n))}catch{}}function J2(t){if(!(typeof window>"u"))try{const e=yi();delete e[t],localStorage.setItem(wi,JSON.stringify(e))}catch{}}const bi="termdock-agent-cache-v1";function Wl(){if(typeof window>"u")return{};try{const t=localStorage.getItem(bi);if(!t)return{};const e=JSON.parse(t);return typeof e=="object"&&e!==null?e:{}}catch{return{}}}function Q2(t,e){if(!(typeof window>"u"))try{const n=Wl();e?n[t]=e:delete n[t],localStorage.setItem(bi,JSON.stringify(n))}catch{}}function eR(t){if(!(typeof window>"u"))try{const e=Wl();delete e[t],localStorage.setItem(bi,JSON.stringify(e))}catch{}}function tR(){if(!(typeof window>"u"))try{localStorage.removeItem(bi)}catch{}}function cT(t){return Wl()[t]??null}function nR(){if(!(typeof window>"u"))try{localStorage.removeItem(wi)}catch{}}const Fa=hi((t,e)=>{const n={pendingChunksBySession:new Map,activitySessionIds:new Set,batchFlushRafRef:null},r=(i,a)=>{const c=new Map;return t(l=>{const d=new Map(l.sessions);let u=l.nextChunkId;const f=Date.now();for(const[h,g]of i){const m=d.get(h)??zt(h);let b=m.bufferChunks.length>0?[...m.bufferChunks]:[],w=m.bufferLength;for(const I of g){const y=u++;b.push({id:y,data:I}),c.set(h,y),w+=I.length}for(;w>Lf&&b.length>1;){const I=b.shift();if(!I)break;w-=I.data.length}d.set(h,{...m,bufferChunks:b,bufferLength:w,lastOutputAt:a.has(h)?f:m.lastOutputAt,updatedAt:f})}return{sessions:d,nextChunkId:u}}),c},o=()=>{if(n.batchFlushRafRef===null){if(typeof window>"u"){s();return}n.batchFlushRafRef=window.requestAnimationFrame(()=>{n.batchFlushRafRef=null,s()})}},s=()=>{if(n.pendingChunksBySession.size===0)return;const i=B2(n.pendingChunksBySession),a=new Set([...i.keys()].filter(c=>n.activitySessionIds.has(c)));for(const c of i.keys())n.pendingChunksBySession.has(c)||n.activitySessionIds.delete(c);r(i,a),n.pendingChunksBySession.size>0&&o()};return{sessions:new Map,nextChunkId:1,activeSessionId:null,getTerminalSession:i=>e().sessions.get(i),setActiveSessionId:i=>{if(t({activeSessionId:i}),i){const a=e().sessions.get(i);if(a?.agentNeedsReview){const c=new Map(e().sessions);c.set(i,{...a,agentNeedsReview:!1,updatedAt:Date.now()}),t({sessions:c}),a.terminalSessionId&&xc(a.terminalSessionId)}}},setTerminalSession:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i),f=!d||d.terminalSessionId!==a.sessionId?zt(i):d??zt(i),h=a.history??d?.history??[];return l.set(i,{...f,terminalSessionId:a.sessionId,mode:a.mode??f.mode,tmuxSessionName:a.tmuxSessionName??f.tmuxSessionName,activeProgram:a.activeProgram??d?.activeProgram??f.activeProgram,activeProgramRaw:a.activeProgramRaw??d?.activeProgramRaw??f.activeProgramRaw,activeProgramSource:a.activeProgramSource??d?.activeProgramSource??f.activeProgramSource,cwd:a.cwd??d?.cwd??f.cwd,agentResumeRecovered:d?.agentResumeRecovered??f.agentResumeRecovered,shellTitle:d?.shellTitle??yi()[i]??f.shellTitle,sessionId:i,isConnecting:!1,history:h,updatedAt:Date.now()}),{sessions:l}})},setSessionHistory:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??zt(i);return l.set(i,{...d,history:a,updatedAt:Date.now()}),{sessions:l}})},setSessionActiveProgram:(i,a,c=null,l=null)=>{t(d=>{const u=new Map(d.sessions),f=u.get(i)??zt(i);return u.set(i,{...f,activeProgram:a,activeProgramRaw:l,activeProgramSource:c,updatedAt:Date.now()}),{sessions:u}})},setSessionCwd:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??zt(i);return l.set(i,{...d,cwd:a,updatedAt:Date.now()}),{sessions:l}})},setSessionShellTitle:(i,a)=>{t(c=>{const l=c.sessions.get(i);if(!l||l.shellTitle===a)return c;const d=new Map(c.sessions);return d.set(i,{...l,shellTitle:a,updatedAt:Date.now()}),{sessions:d}}),Z2(i,a)},setSessionPromptState:(i,a,c)=>{t(l=>{const d=l.sessions.get(i);if(!d||d.promptState===a)return l;const u=new Map(l.sessions);return u.set(i,{...d,promptState:a,shellExitCode:c??d.shellExitCode,updatedAt:Date.now()}),{sessions:u}})},setSessionTuiProgress:(i,a)=>{t(c=>{const l=c.sessions.get(i);if(!l)return c;const d=a?.state==="remove"?null:a;if(l.tuiProgress?.state===d?.state&&l.tuiProgress?.progress===d?.progress)return c;const u=new Map(c.sessions);return u.set(i,{...l,tuiProgress:d,updatedAt:Date.now()}),{sessions:u}})},setSessionGitStatus:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i);return!d||JSON.stringify(d.gitStatus)===JSON.stringify(a)?c:(l.set(i,{...d,gitStatus:a,updatedAt:Date.now()}),{sessions:l})})},setSessionCopyMode:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i);return!d||d.inCopyMode===a?c:(l.set(i,{...d,inCopyMode:a,updatedAt:Date.now()}),{sessions:l})})},setSessionAgentStatus:(i,a)=>{const c=e(),l=c.sessions.get(i);if(!l)return;const d=a.agentStatus??null,u=d&&d!=="idle"?a.agentIndicator??l.agentIndicator??null:null,f=d&&d!=="idle"?a.agentStatusDetail??null:null,h=a.agent!==void 0?a.agent:l.agent,g=a.agentMessage!==void 0?a.agentMessage:d?l.agentMessage:null,m=a.agentNativeSessionId!==void 0?a.agentNativeSessionId:l.agentNativeSessionId,b=a.agentResumeRecovered!==void 0?a.agentResumeRecovered:l.agentResumeRecovered,w=a.agentRich??l.agentRich,I=a.agentActivity??l.agentActivity,y=a.agentCwd!==void 0?a.agentCwd:l.agentCwd,k=c.activeSessionId!==i,N=l.agentStatus==="working"||l.agentStatus==="waiting"||l.agentStatus==="done",x=a.reviewed===!1||a.reviewed===null&&d===null&&N&&k;if(l.agentStatus===d&&l.agentIndicator===u&&l.agentStatusDetail===f&&l.agent===h&&l.agentMessage===g&&l.agentNativeSessionId===m&&l.agentResumeRecovered===b&&l.agentRich===w&&l.agentActivity===I&&l.agentCwd===y&&l.agentNeedsReview===x)return;const T=new Map(c.sessions);if(T.set(i,{...l,agentStatus:d,agentIndicator:u,agentStatusDetail:f,agent:h,agentMessage:g,agentNativeSessionId:m,agentResumeRecovered:b,agentRich:w,agentActivity:I,agentCwd:y,agentNeedsReview:x,updatedAt:Date.now()}),t({sessions:T}),h&&Q2(i,h),!Ws())return;const S=h?.displayName??l.agent?.displayName??"Agent",v=V2(),A=X2(v,S);if(d==="waiting"&&l.agentStatus!=="waiting"&&k){Da({title:A.waitingTitle,body:g??A.waitingBody,tag:`agent:${i}`,dedupKey:`agent:${i}:waiting:${I}`,data:{url:"/",sessionId:i},deferToPush:!0});return}if(d==="done"&&l.agentStatus!=="done"&&k){Da({title:A.doneTitle,body:A.doneBody,tag:`agent:${i}`,dedupKey:`agent:${i}:done:${I}`,data:{url:"/",sessionId:i},deferToPush:!0});return}d===null&&(l.agentStatus==="working"||l.agentStatus==="waiting")&&k&&Da({title:A.exitedTitle,body:A.exitedBody,tag:`agent:${i}`,dedupKey:`agent:${i}:exited:${I}`,data:{url:"/",sessionId:i},deferToPush:!0})},setAgentResumeRecovered:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??zt(i);return d.agentResumeRecovered===a?c:(l.set(i,{...d,agentResumeRecovered:a,updatedAt:Date.now()}),{sessions:l})})},clearAgentNeedsReview:i=>{const a=e().sessions.get(i);a?.agentNeedsReview&&(t(c=>{const l=new Map(c.sessions),d=l.get(i);return!d||!d.agentNeedsReview?c:(l.set(i,{...d,agentNeedsReview:!1,updatedAt:Date.now()}),{sessions:l})}),a.terminalSessionId&&xc(a.terminalSessionId))},setConnecting:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??zt(i);return l.set(i,{...d,isConnecting:a,updatedAt:Date.now()}),{sessions:l}})},appendToBuffer:(i,a,c)=>{if(!a)return;let l=n.pendingChunksBySession.get(i);l||(l=[],n.pendingChunksBySession.set(i,l)),l.push(...Pf(a)),c?.markActivity!==!1&&n.activitySessionIds.add(i),o()},hasPendingBufferWrites:i=>(n.pendingChunksBySession.get(i)?.length??0)>0,flushPendingBufferWrites:i=>{const a=n.pendingChunksBySession.get(i);if(!a?.length)return e().sessions.get(i)?.bufferChunks.at(-1)?.id??null;n.pendingChunksBySession.delete(i);const c=n.activitySessionIds.delete(i);return n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),r(new Map([[i,a]]),c?new Set([i]):new Set).get(i)??null},replaceBuffer:(i,a)=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null);let c=null;return t(l=>{const d=new Map(l.sessions),u=d.get(i);if(!u)return l;if(!a||a.length===0)return d.set(i,{...u,bufferChunks:[],bufferLength:0,updatedAt:Date.now()}),{sessions:d};let f=l.nextChunkId;const h=[];let g=0;for(const m of a)if(m)for(const b of Pf(m)){const w=f++;h.push({id:w,data:b}),c=w,g+=b.length}for(;g>Lf&&h.length>1;){const m=h.shift();if(!m)break;g-=m.data.length}return d.set(i,{...u,bufferChunks:h,bufferLength:g,updatedAt:Date.now()}),{sessions:d,nextChunkId:f}}),c},clearTerminalSession:i=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),t(a=>{const c=new Map(a.sessions),l=c.get(i);return l&&c.set(i,{...l,terminalSessionId:null,isConnecting:!1,agentStatus:null,agentIndicator:null,agentStatusDetail:null,agent:null,agentMessage:null,agentNeedsReview:!1,updatedAt:Date.now()}),{sessions:c}})},clearBuffer:i=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),t(a=>{const c=new Map(a.sessions),l=c.get(i);return l?(c.set(i,{...l,bufferChunks:[],bufferLength:0,updatedAt:Date.now()}),{sessions:c}):a})},removeTerminalSession:i=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),t(a=>{const c=new Map(a.sessions);return c.delete(i),{sessions:c}}),J2(i),eR(i)},clearAllTerminalSessions:()=>{n.pendingChunksBySession.clear(),n.activitySessionIds.clear(),n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),t({sessions:new Map,nextChunkId:1}),nR(),tR()}}}),jc="termdock:session-notice";function rR(){return _.useEffect(()=>{const t=()=>_a.getState().view(!document.hidden&&ns()?Fa.getState().activeSessionId:null);t();const e=Fa.subscribe((n,r)=>{n.activeSessionId!==r.activeSessionId&&t()});return document.addEventListener("visibilitychange",t),window.addEventListener(go,t),()=>{e(),document.removeEventListener("visibilitychange",t),window.removeEventListener(go,t),_a.getState().view(null)}},[]),_.useEffect(()=>gm(t=>{if(t.type!=="session-notice")return;_a.getState().receive(t.sessionId,t.id);const e=se()?.targetPeerId,n=mt(),r=window.parent,o=T2().sessions.find(u=>u.sessionId===t.sessionId),s=Fa.getState().sessions.get(t.sessionId),i=s?.shellTitle??Y2(t.sessionId),a=i===s?.cwd||i===Gn(s?.cwd??null)?null:i,c=E2(o??{name:t.sessionName},s?.activeProgram??null,null,void 0,a,s?.promptState??null),l={...t,sessionName:c,key:`${e??"local"}:${t.id}`,open:()=>e&&n?n.focusSession(e,t.sessionId):(window.dispatchEvent(new CustomEvent("termdock:focus-session",{detail:t.sessionId})),!0)},d=r.document.createEvent("CustomEvent");d.initCustomEvent(jc,!1,!1,l),r.dispatchEvent(d)}),[]),null}function oR(){const{locale:t}=gi(),e=t==="zh",[n,r]=_.useState([]);_.useEffect(()=>{const i=a=>{const c=a.detail;r(l=>l.some(d=>d.key===c.key)?l:[...l,c])};return window.addEventListener(jc,i),()=>window.removeEventListener(jc,i)},[]);const o=_.useCallback(i=>{r(a=>a.filter(c=>c.key!==i))},[]),s=n[0];return s?qc.createPortal(p.jsx(sR,{notice:s,remaining:n.length-1,chinese:e,onDismiss:o},s.key),document.body):null}function sR({notice:t,remaining:e,chinese:n,onDismiss:r}){const[o,s]=_.useState(!1);return p.jsxs("section",{"aria-label":n?"关键进展提醒":"Progress reminder",className:"fixed left-3 right-3 top-[calc(var(--safe-top-inset,0px)+0.75rem)] z-toast overflow-hidden rounded-xl bg-surface text-foreground shadow-lg ring-1 ring-inset ring-border/15 animate-fade-in md:left-auto md:right-4 md:w-[360px]",children:[p.jsxs("button",{type:"button","aria-label":n?"查看 Session":"Open session",className:"group flex w-full items-start gap-2.5 p-3.5 pr-11 text-left transition-colors hover:bg-surface-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary",onClick:()=>{t.open()?r(t.key):s(!0)},children:[p.jsx(ag,{size:16,className:"mt-0.5 shrink-0 text-primary","aria-hidden":"true"}),p.jsxs("span",{className:"min-w-0 flex-1",role:"status","aria-live":"polite","aria-atomic":"true",children:[p.jsxs("span",{className:"flex items-center gap-2",children:[p.jsx("span",{className:"min-w-0 flex-1 truncate text-[12px] font-medium",title:t.sessionName,children:t.sessionName}),p.jsx(t1,{size:13,className:"shrink-0 text-muted-foreground/60 transition-colors group-hover:text-primary","aria-hidden":"true"})]}),t.title&&p.jsx("span",{className:"mt-1 block truncate text-[11px] text-muted-foreground",children:t.title}),p.jsx("span",{className:"mt-1.5 line-clamp-3 whitespace-pre-wrap break-words text-[13px] leading-relaxed text-foreground/85",title:t.message,children:t.message}),e>0&&p.jsx("span",{className:"mt-2 block text-[10px] text-muted-foreground",children:n?`还有 ${e} 条`:`${e} more`}),o&&p.jsx("span",{role:"alert",className:"mt-2 block text-xs text-warning",children:n?"暂时无法打开该服务,请重试。":"Unable to open the service. Please retry."})]})]}),p.jsx("button",{type:"button","aria-label":n?"关闭提醒":"Dismiss reminder",className:"absolute right-0 top-0 flex h-11 w-11 items-center justify-center rounded-tr-xl text-muted-foreground/60 transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary",onClick:()=>r(t.key),children:p.jsx(hg,{size:14})})]})}const Bf=5*6e4;let Hc,Im=!1,Rm=!1,_f=!1;const Uc=new Set;function Of(){Im=!0,Uc.forEach(t=>t())}function iR(){return _.useSyncExternalStore(t=>(Uc.add(t),()=>{Uc.delete(t)}),()=>Im,()=>!1)}function aR(){window.dispatchEvent(new Event("termdock:before-update")),Rm=!0,Hc?.waiting?Hc.waiting.postMessage({type:"SKIP_WAITING"}):window.location.reload()}function cR(t,e){let n=t;return()=>{if(!n){n=!0;return}e()}}function lR(){if(_f||typeof window>"u"||!("serviceWorker"in navigator))return;_f=!0,navigator.serviceWorker.addEventListener("controllerchange",cR(!!navigator.serviceWorker.controller,()=>{Rm?window.location.reload():Of()}));const t=()=>{navigator.serviceWorker.register("/sw.js",{scope:"/",updateViaCache:"none"}).then(e=>{Hc=e;const n=()=>{e.waiting&&Of()},r=()=>{const i=e.installing;i?.addEventListener("statechange",()=>{i.state==="installed"&&navigator.serviceWorker.controller&&n()})};e.addEventListener("updatefound",r),r(),n();let o=0;const s=()=>{document.visibilityState!=="visible"||Date.now()-o<Bf||(o=Date.now(),e.update().then(n).catch(()=>{}))};s(),window.setInterval(s,Bf),document.addEventListener("visibilitychange",s)}).catch(()=>{})};document.readyState==="complete"?t():window.addEventListener("load",t,{once:!0})}function dR(){const t=iR(),[e,n]=_.useState(!1),{locale:r}=gi();if(!t||e)return null;const o=r==="zh";return p.jsxs("div",{role:"status",className:"fixed bottom-16 left-1/2 z-toast flex max-w-[calc(100%-2rem)] -translate-x-1/2 items-center gap-3 rounded-lg border border-border bg-background px-4 py-3 text-sm text-foreground shadow-lg",children:[p.jsx("span",{children:o?"新版本已就绪":"An update is ready"}),p.jsx("button",{type:"button",className:"whitespace-nowrap text-primary",onClick:aR,children:o?"重新加载":"Reload"}),p.jsx("button",{type:"button",className:"whitespace-nowrap text-muted-foreground",onClick:()=>n(!0),children:o?"稍后":"Later"})]})}function Tm(t){const e=document.querySelector('meta[name="theme-color"]');e&&e.setAttribute("content",t==="light"?"#FFFCF0":"#1C1B1A")}const Pm=_.createContext(void 0);function lT({children:t}){const e=_.useContext(Pm),n=e===void 0?typeof document>"u"?null:document.body:e;return n?qc.createPortal(t,n):null}const uR={activeKey:"root",items:[]},fR=()=>()=>{},hR=()=>uR;function pR({host:t,item:e,visible:n,active:r}){const o=_.useRef(null);return _.useEffect(()=>{o.current?.toggleAttribute("inert",!r)},[r]),_.useLayoutEffect(()=>{const s=o.current;return()=>{try{const i=s?.contentWindow,a=i?.document.createEvent("Event");a&&(a.initEvent("termdock:before-update",!1,!1),i?.dispatchEvent(a))}catch{}t.attach(e.key,null)}},[t,e.key]),p.jsx("iframe",{ref:o,title:e.service?.label||"服务工作区","data-workspace-key":e.key,src:`/workspace.html?${Qp}=${encodeURIComponent(e.key)}`,className:"fixed inset-0 w-full border-0 bg-[var(--chrome-bg)]",style:{height:"var(--app-base-vh, 100%)",visibility:n?"visible":"hidden",pointerEvents:r?"auto":"none"},"aria-hidden":!r,tabIndex:r?0:-1,allow:"clipboard-read; clipboard-write; fullscreen"})}function gR({children:t}){const e=window.parent===window?mt():void 0,n=_.useSyncExternalStore(e?.subscribe||fR,e?.snapshot||hR),[r,o]=_.useState(null),[s,i]=_.useState(()=>n.activeKey==="root"?"root":null),[a,c]=_.useState(),[l,d]=_.useState(!1),[u,f]=_.useState(),h=n.items.find(y=>y.key===n.activeKey),g=h?.rendered||a===n.activeKey?n.activeKey:s,m=g!==n.activeKey,b=m&&s===null;_.useLayoutEffect(()=>{if(!m||b){f(void 0);return}const y=()=>{const k=Array.from(document.querySelectorAll("iframe[data-workspace-key]")).find(O=>O.dataset.workspaceKey===s),S=(s==="root"?r:k?.contentDocument)?.querySelector('nav[aria-label="切换服务"]')?.closest("[data-sidebar-gesture-ignore]")?.getBoundingClientRect();if(!S||S.width===0||S.right<=0){f(void 0);return}const v=k?.getBoundingClientRect(),A=S.top+(v?.top??0)>=160;f({left:S.left+(v?.left??0)+12,top:(A?S.top-8:S.bottom+8)+(v?.top??0),width:Math.max(0,S.width-24),transform:A?"translateY(-100%)":"none"})};return y(),window.addEventListener("resize",y),()=>window.removeEventListener("resize",y)},[m,b,s,r]),_.useLayoutEffect(()=>{e?.present(g),m||i(g),r?.toggleAttribute("inert",g!=="root"||m)},[e,r,g,m]),_.useEffect(()=>{if(d(!1),!m)return;const y=setTimeout(()=>d(!0),8e3);return()=>clearTimeout(y)},[n.activeKey,m]),_.useEffect(()=>{c(void 0)},[n.activeKey]);const w=n.items.find(y=>y.key===s),I=h?.phase==="offline"?"网络已断开,等待恢复…":h?.phase==="reconnecting"?"连接暂未恢复,正在重试…":l?"连接时间较长,仍在等待服务…":b?"正在恢复服务…":"正在切换服务…";return _.useEffect(()=>{if(!e)return;const y=()=>{try{const k=JSON.parse(localStorage.getItem("termdock-color-theme")||"null");(k==="dark"||k==="light")&&(document.documentElement.dataset.theme=k,Tm(k))}catch{}};return window.addEventListener("storage",y),()=>window.removeEventListener("storage",y)},[e]),_.useEffect(()=>{if(!e||!("serviceWorker"in navigator))return;const y=x=>{if(x.source!==navigator.serviceWorker.controller)return;const T=x.data;T?.type==="termdock:focus-session"&&typeof T.targetPeerId=="string"&&typeof T.sessionId=="string"&&e.focusSession(T.targetPeerId,T.sessionId)&&(x.ports[0]?.postMessage({type:"termdock:focus-session-ack"}),x.stopImmediatePropagation())},k=async()=>{if("caches"in window)try{const x=await caches.open("termdock-notification-target-v1"),T=await x.match("/__termdock-notification-target");if(!T)return;const S=await T.json();typeof S.targetPeerId=="string"&&typeof S.sessionId=="string"&&Date.now()-S.clickedAt<3e4&&e.focusSession(S.targetPeerId,S.sessionId)&&await x.delete("/__termdock-notification-target")}catch{}},N=()=>{document.hidden||k()};return navigator.serviceWorker.addEventListener("message",y),document.addEventListener("visibilitychange",N),k(),()=>{navigator.serviceWorker.removeEventListener("message",y),document.removeEventListener("visibilitychange",N)}},[e]),e?p.jsxs("div",{className:"relative h-full w-full overflow-hidden bg-[var(--chrome-bg)]",children:[p.jsx("div",{ref:o,className:"isolate h-full w-full","aria-hidden":g!=="root"||m,style:{visibility:g==="root"?"visible":"hidden"},children:p.jsx(Pm.Provider,{value:r,children:t})}),n.items.filter(y=>y.key!=="root").map(y=>p.jsx(pR,{host:e,item:y,visible:g===y.key,active:!m&&g===y.key},y.key)),b&&p.jsx(Hl,{className:"z-modal-panel",status:I,detail:l||h?.phase==="offline"||h?.phase==="reconnecting"?h?.service?.label:void 0,actionLabel:l||h?.phase==="offline"||h?.phase==="reconnecting"?"查看连接页面":void 0,onAction:()=>c(n.activeKey)}),m&&!b&&p.jsx("div",{className:"fixed inset-0 z-modal-panel flex items-end justify-center px-3 pb-[calc(env(safe-area-inset-bottom)+96px)]",role:"dialog","aria-modal":"true","aria-label":"切换服务",onKeyDown:y=>{if(y.key==="Escape"&&w?.service&&(y.preventDefault(),e.activate(w.service)),y.key==="Tab"){const k=Array.from(y.currentTarget.querySelectorAll("button")),N=k[0],x=k[k.length-1];y.shiftKey&&document.activeElement===N?(y.preventDefault(),x?.focus()):!y.shiftKey&&document.activeElement===x&&(y.preventDefault(),N?.focus())}},children:p.jsxs("div",{style:u?{position:"absolute",...u}:void 0,className:"flex w-full max-w-sm flex-wrap items-center gap-x-2 gap-y-1 rounded-xl border border-border bg-surface-elevated px-3 py-1.5 text-foreground shadow-lg",children:[p.jsxs("div",{role:"status","aria-live":"polite",className:"flex min-w-0 flex-1 items-center gap-2",children:[p.jsx(Ue,{size:16,className:"shrink-0 animate-spin text-primary motion-reduce:animate-none","aria-hidden":"true"}),p.jsxs("div",{className:"min-w-0",children:[p.jsx("div",{className:"truncate text-sm font-medium",children:h?.service?.label||"服务工作区"}),p.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:I})]})]}),p.jsxs("div",{className:"flex items-center justify-end gap-1",children:[l&&p.jsx("button",{type:"button",className:"min-h-11 rounded-lg px-3 text-xs text-muted-foreground hover:bg-surface-2",onClick:()=>c(n.activeKey),children:"查看连接页面"}),w?.service&&p.jsx("button",{type:"button",autoFocus:!0,"aria-label":"取消切换",className:"min-h-11 shrink-0 rounded-lg px-3 text-xs text-muted-foreground hover:bg-surface-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",onClick:()=>e.activate(w.service),children:"取消"})]})]})})]}):t}const mR=_.lazy(()=>en(()=>import("./App-KjvxjYWp.js").then(t=>t.b),__vite__mapDeps([4,2,1,5,6,3,7,8]))),wR=_.lazy(()=>en(()=>import("./DagPlayground-BnxrVoa1.js"),__vite__mapDeps([9,10,2,1,11,7,3])).then(t=>({default:t.DagPlayground}))),yR=_.lazy(()=>en(()=>import("./DiffLab-CEJHH47s.js"),__vite__mapDeps([12,2,1,13,8,14,3])).then(t=>({default:t.DiffLab}))),bR=_.lazy(()=>en(()=>import("./DiffReviewLab-CwxhCK9D.js"),__vite__mapDeps([15,2,1,16,5,6,11,13,8,14,3])).then(t=>({default:t.DiffReviewLab})));p2();BE();HE();window.parent===window&&lR();const Yr=se();Yr&&en(()=>import("./App-KjvxjYWp.js").then(t=>t.b),__vite__mapDeps([4,2,1,5,6,3,7,8])).catch(()=>{});!new URLSearchParams(location.search).has("dag-playground")&&!new URLSearchParams(location.search).has("diff-lab")&&!new URLSearchParams(location.search).has("diff-review-lab")&&xE(Yr?{...Yr,id:Yr.targetPeerId,label:Yr.serviceName||location.host}:void 0);try{const t=JSON.parse(window.localStorage.getItem("termdock-color-theme")||"null");(t==="dark"||t==="light")&&(document.documentElement.dataset.theme=t,Tm(t))}catch{}qE.createRoot(document.getElementById("root")).render(p.jsxs(Xe.StrictMode,{children:[p.jsx(YI,{}),p.jsxs(aI,{children:[window.parent===window&&p.jsxs(p.Fragment,{children:[p.jsx(dR,{}),p.jsx(oR,{})]}),p.jsx(n2,{children:p.jsx(_.Suspense,{fallback:p.jsx(Hl,{}),children:(()=>{const t=new URLSearchParams(window.location.search);return t.get("dag-playground")==="1"?p.jsx(wR,{}):t.get("diff-review-lab")==="1"?p.jsx(bR,{}):t.get("diff-lab")==="1"?p.jsx(yR,{}):p.jsx(gR,{children:p.jsxs(JI,{children:[p.jsx(rR,{}),p.jsx(mR,{})]})})})()})})]})]}));export{El as $,Nl as A,ag as B,Hs as C,mm as D,Ig as E,fl as F,uC as G,uE as H,Mk as I,Fv as J,_A as K,Ue as L,wE as M,wk as N,UR as O,bI as P,pn as Q,BC as R,fi as S,y1 as T,LC as U,d2 as V,go as W,hg as X,iT as Y,gk as Z,en as _,ig as a,Ik as a$,EA as a0,OA as a1,ok as a2,NR as a3,hi as a4,Dk as a5,a2 as a6,Le as a7,rk as a8,Ui as a9,TC as aA,Rk as aB,Gn as aC,oC as aD,AC as aE,FC as aF,hC as aG,OC as aH,CC as aI,SC as aJ,Vk as aK,JR as aL,PC as aM,Ks as aN,FA as aO,x2 as aP,E2 as aQ,XR as aR,un as aS,Ws as aT,Mc as aU,yo as aV,Kl as aW,rt as aX,BA as aY,VA as aZ,yA as a_,Uk as aa,bC as ab,VR as ac,aT as ad,MA as ae,Ek as af,Hk as ag,yC as ah,DA as ai,_1 as aj,kg as ak,jA as al,mI as am,BR as an,WR as ao,yk as ap,at as aq,Lk as ar,Nk as as,Ok as at,nk as au,NC as av,RC as aw,cT as ax,Y2 as ay,IC as az,QE as b,$R as b$,vk as b0,kk as b1,_C as b2,Kg as b3,mt as b4,Ba as b5,op as b6,Ap as b7,mC as b8,Bk as b9,Kk as bA,ik as bB,ut as bC,T2 as bD,gC as bE,fC as bF,pC as bG,wC as bH,KR as bI,qR as bJ,DR as bK,ak as bL,HA as bM,_R as bN,wc as bO,qC as bP,zk as bQ,ZC as bR,GR as bS,Xk as bT,Wk as bU,Ck as bV,$n as bW,rT as bX,Yk as bY,Gk as bZ,hk as b_,Fk as ba,qg as bb,rC as bc,sC as bd,Jk as be,nC as bf,eC as bg,U2 as bh,ql as bi,ns as bj,p as bk,PR as bl,Sk as bm,jC as bn,qk as bo,WC as bp,JC as bq,cC as br,bk as bs,Pk as bt,VC as bu,k2 as bv,xC as bw,Eg as bx,Fg as by,C2 as bz,cg as c,mk as c0,xk as c1,$k as c2,zC as c3,IR as c4,L1 as c5,UC as c6,DC as c7,HC as c8,GC as c9,ck as cA,RR as cB,sT as cC,G2 as cD,Tm as cE,CR as cF,_k as cG,oT as cH,jk as cI,Tk as cJ,as as cK,it as cL,vC as cM,gg as cN,gi as cO,MR as cP,_a as cQ,ZR as cR,ke as cS,Fa as cT,zR as cU,be as cV,dC as cW,ui as cX,ze as cY,jR as cZ,FR as c_,se as ca,lC as cb,eI as cc,rg as cd,QC as ce,fk as cf,lk as cg,sk as ch,uk as ci,pk as cj,$C as ck,YC as cl,YR as cm,eT as cn,tT as co,nT as cp,QR as cq,Og as cr,tk as cs,$i as ct,HR as cu,Da as cv,XC as cw,gm as cx,KC as cy,OR as cz,xn as d,a1 as e,lg as f,dg as g,n2 as h,LR as i,Cg as j,h1 as k,ug as l,pI as m,fg as n,Hl as o,xe as p,lT as q,dk as r,ul as s,_t as t,MC as u,TR as v,uA as w,A2 as x,iC as y,tC as z};
35
+ `,o);s>r&&(o=s+1)}n.push(t.slice(r,o)),r=o}return n}function B2(t,e=N2,n=L2){const r=new Map;let o=0,s=0;for(const i of[...t.keys()]){const a=t.get(i);if(!a||a.length===0){t.delete(i);continue}const c=[];for(;a.length>0;){const l=a[0];if(s>0&&(s>=n||o+l.length>e))break;a.shift(),c.push(l),o+=l.length,s+=1}if(c.length>0&&r.set(i,c),t.delete(i),a.length>0&&t.set(i,a),s>=n||o>=e)break}return r}async function xm(t,e=!1,n="termdock-encrypted-background"){const r=await new Promise((o,s)=>{const i=indexedDB.open(n,1);i.onupgradeneeded=()=>i.result.createObjectStore("state"),i.onsuccess=()=>o(i.result),i.onerror=()=>s(i.error)});try{return await new Promise((o,s)=>{const i=r.transaction("state",e?"readwrite":"readonly"),a=t(i.objectStore("state"));i.oncomplete=()=>o(a.result),i.onabort=i.onerror=()=>s(i.error)})}finally{r.close()}}const _2=t=>xm(e=>e.put(t,t.targetPeerId),!0),O2=t=>xm(e=>e.delete(t),!0),Em="termdock-pwa-notifications-enabled",Am="termdock-pwa-ai-notifications-enabled",km="termdock-pwa-exit-notifications-enabled",Cm="termdock-pwa-notification-alert-style",D2="termdock-notification-claim:",Dc=5e3,F2=1500,Fc="termdock-push-last-sync",Nf=360*60*1e3,M2=10080*60*1e3,io=new Map;function ql(){return rt()?!0:typeof window<"u"&&typeof Notification<"u"&&"serviceWorker"in navigator&&window.isSecureContext}function j2(){if(typeof navigator>"u")return!1;const t=navigator.userAgent;return/iPad|iPhone|iPod/.test(t)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1}function H2(){return typeof window>"u"?!1:!!(window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&navigator.standalone===!0)}function U2(){return rt()?!0:!(!ql()||j2()&&!H2())}function JR(){return rt()?"granted":typeof Notification>"u"?"unsupported":Notification.permission}function Kl(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(Em)==="true"}catch{return!1}}function QR(t){if(!(typeof window>"u"))try{window.localStorage.setItem(Em,String(t))}catch{}}function Ws(){if(typeof window>"u")return!0;try{const t=window.localStorage.getItem(Am);return t===null?!0:t==="true"}catch{return!0}}function eT(t){if(!(typeof window>"u"))try{window.localStorage.setItem(Am,String(t))}catch{}}function Mc(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(km)==="true"}catch{return!1}}function tT(t){if(!(typeof window>"u"))try{window.localStorage.setItem(km,String(t))}catch{}}function yo(){if(typeof window>"u")return"normal";try{const t=window.localStorage.getItem(Cm);if(t==="quiet"||t==="persistent")return t}catch{}return"normal"}function nT(t){if(!(typeof window>"u"))try{window.localStorage.setItem(Cm,t)}catch{}}async function rT(){return rt()?"granted":ql()?Notification.permission==="default"?Notification.requestPermission():Notification.permission:"unsupported"}function $2(){return typeof document>"u"?!0:document.visibilityState==="visible"&&document.hasFocus()}function q2(t){for(const[e,n]of io)t-n>Dc&&io.delete(e)}function K2(t){return t.dedupKey?.trim()?t.dedupKey.trim():t.tag?.trim()?t.tag.trim():[t.data?.sessionId,t.title,t.body].filter(e=>typeof e=="string"&&e.trim().length>0).map(e=>e.trim()).join("|")}function z2(t){const e=K2(t);if(!e)return!0;const n=Date.now();q2(n);const r=io.get(e)??0;if(n-r<Dc)return!1;try{if(typeof window<"u"&&window.localStorage){const o=`${D2}${e}`,s=Number(window.localStorage.getItem(o)??"0");if(Number.isFinite(s)&&n-s<Dc)return io.set(e,s),!1;Number.isFinite(s)&&s>0&&window.localStorage.removeItem(o),window.localStorage.setItem(o,String(n))}}catch{}return io.set(e,n),!0}async function mi(){if(typeof navigator>"u"||!("serviceWorker"in navigator))return null;try{const t=await navigator.serviceWorker.getRegistration()??null;return t?.active?t:await Promise.race([navigator.serviceWorker.ready,new Promise(n=>{window.setTimeout(()=>n(null),F2)})])??t}catch{return null}}function W2(t){const e="=".repeat((4-t.length%4)%4),n=(t+e).replace(/-/g,"+").replace(/_/g,"/"),r=window.atob(n),o=new Uint8Array(new ArrayBuffer(r.length));for(let s=0;s<r.length;s+=1)o[s]=r.charCodeAt(s);return o}async function zl(t,e){const n=await fetch("/api/csrf-token");if(!n.ok)throw new Error("Unable to get notification security token");const{csrfToken:r}=await n.json();return fetch(`/api/notifications/${t}`,{method:"POST",headers:{"Content-Type":"application/json","X-XSRF-TOKEN":r},body:JSON.stringify(e)})}async function G2(t=!1,e=!1){if(rt())return!0;if(!Kl()||!U2()||Notification.permission!=="granted")return!1;const n=await mi();if(!n?.pushManager)return!1;try{const r=await fetch("/api/notifications/status");if(!r.ok)return!1;const o=await r.json();let s=await n.pushManager.getSubscription();const i=!!(s?.expirationTime&&s.expirationTime-Date.now()<M2);if(!s)try{s=await n.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:W2(o.publicKey)})}catch(d){return console.warn(`[PWA notifications] Push subscription missing; re-subscribe failed${e?" (user gesture)":""}:`,d),!1}const a=Number(window.localStorage.getItem(Fc)??"0"),c=!o.subscription||o.subscription.endpoint!==s.endpoint||Date.now()-(o.subscription.updatedAt??0)>=Nf;if(t||c||Date.now()-a>=Nf||i){if(!(await zl("subscribe",{subscription:s.toJSON(),aiEnabled:Ws(),exitEnabled:Mc(),alertStyle:yo(),locale:navigator.language})).ok)return!1;window.localStorage.setItem(Fc,String(Date.now()))}const l=se();return l&&await _2({targetPeerId:l.targetPeerId,addresses:vr(l),routes:Qt(l),publicKey:o.publicKey,preferences:{aiEnabled:Ws(),exitEnabled:Mc(),alertStyle:yo(),locale:navigator.language}}),!0}catch(r){return console.warn("[PWA notifications] Push subscription sync failed:",r),!1}}async function oT(){if(rt())return;const e=await(await mi())?.pushManager?.getSubscription();try{await zl("unsubscribe",{endpoint:e?.endpoint})}finally{const n=se();n&&await O2(n.targetPeerId),await e?.unsubscribe();try{window.localStorage.removeItem(Fc)}catch{}}}async function sT(){if(rt()||!Kl())return;(await zl("preferences",{aiEnabled:Ws(),exitEnabled:Mc(),alertStyle:yo(),locale:navigator.language})).status===404&&await G2(!0)}async function iT(){if(!rt())try{const t=navigator;typeof t.clearAppBadge=="function"&&await t.clearAppBadge()}catch{}}async function aT(t){if(!rt())try{const e=await mi();if(!e||typeof e.getNotifications!="function")return;const n=`agent:${t}`,r=await e.getNotifications({tag:n});for(const s of r)s.close();const o=navigator;if(typeof o.setAppBadge=="function"){const s=await e.getNotifications();await o.setAppBadge(s.length)}}catch{}}async function Da(t){if(!Kl()||!ql())return!1;if(t.requireHidden!==!1&&$2())return!0;const e=rt();if(e){const s=t.alertStyle??yo(),i=await e.showNotification({title:t.title,body:t.body,tag:t.tag,sessionId:t.data?.sessionId,silent:s==="quiet",persistent:s==="persistent"});return e.notificationDeliveryConfirmation===!0&&i}if(Notification.permission!=="granted")return!1;const n=await mi();if(t.deferToPush&&await n?.pushManager?.getSubscription())return!0;if(t.requireHidden!==!1){if(await n?.pushManager?.getSubscription())return!0}if(!z2(t))return!0;const r=t.alertStyle??yo(),o={body:t.body,tag:t.tag,icon:"/pwa-192x192.png",badge:"/maskable-icon-512x512.png",requireInteraction:r==="persistent",renotify:r==="persistent"?!!t.tag:!1,silent:r==="quiet",vibrate:r==="quiet"?[]:[80,40,80],data:{url:t.data?.url??"/",sessionId:t.data?.sessionId}};try{if(n&&typeof n.showNotification=="function")return await n.showNotification(t.title,o),!0;const s=new Notification(t.title,o);return s.onclick=()=>{window.focus(),t.data?.url&&window.location.href!==t.data.url&&window.location.assign(t.data.url),s.close()},!0}catch(s){if(s instanceof DOMException&&s.name==="NotSupportedError"&&o.renotify)try{const i={...o,renotify:!1};return n&&typeof n.showNotification=="function"?await n.showNotification(t.title,i):new Notification(t.title,i),!0}catch(i){return console.warn("[PWA notifications] Failed to show notification (renotify fallback):",i),!1}return console.warn("[PWA notifications] Failed to show notification:",s),!1}}function V2(){try{return localStorage.getItem("termdock:locale")||"en"}catch{return"en"}}function X2(t,e){return t==="zh"?{waitingTitle:`${e} 需要你的处理`,waitingBody:`${e} 需要你的处理。`,doneTitle:`${e} 已完成`,doneBody:`${e} 已完成,点按查看结果。`,exitedTitle:`${e} 已退出`,exitedBody:`${e} 已退出,点按查看结果。`}:{waitingTitle:`${e} needs your input`,waitingBody:`${e} is waiting for your input.`,doneTitle:`${e} finished`,doneBody:"Tap to see the result.",exitedTitle:`${e} exited`,exitedBody:"Tap to see the result."}}const Lf=1e6;function zt(t){return{sessionId:t,directory:"",terminalSessionId:null,mode:"shell",tmuxSessionName:null,activeProgram:null,activeProgramRaw:null,activeProgramSource:null,cwd:null,inCopyMode:!1,isConnecting:!1,agentStatus:null,agentIndicator:null,agentStatusDetail:null,agent:null,agentMessage:null,agentNativeSessionId:null,agentResumeRecovered:!1,agentRich:!1,agentActivity:0,agentCwd:null,agentNeedsReview:!1,shellTitle:null,promptState:null,shellExitCode:null,tuiProgress:null,gitStatus:null,bufferChunks:[],bufferLength:0,lastOutputAt:null,updatedAt:Date.now()}}const wi="termdock-shell-titles-v1";function yi(){if(typeof window>"u")return{};try{const t=localStorage.getItem(wi);if(!t)return{};const e=JSON.parse(t);return typeof e=="object"&&e!==null?e:{}}catch{return{}}}function Y2(t){return yi()[t]??null}function Z2(t,e){if(!(typeof window>"u"))try{const n=yi();e?n[t]=e:delete n[t],localStorage.setItem(wi,JSON.stringify(n))}catch{}}function J2(t){if(!(typeof window>"u"))try{const e=yi();delete e[t],localStorage.setItem(wi,JSON.stringify(e))}catch{}}const bi="termdock-agent-cache-v1";function Wl(){if(typeof window>"u")return{};try{const t=localStorage.getItem(bi);if(!t)return{};const e=JSON.parse(t);return typeof e=="object"&&e!==null?e:{}}catch{return{}}}function Q2(t,e){if(!(typeof window>"u"))try{const n=Wl();e?n[t]=e:delete n[t],localStorage.setItem(bi,JSON.stringify(n))}catch{}}function eR(t){if(!(typeof window>"u"))try{const e=Wl();delete e[t],localStorage.setItem(bi,JSON.stringify(e))}catch{}}function tR(){if(!(typeof window>"u"))try{localStorage.removeItem(bi)}catch{}}function cT(t){return Wl()[t]??null}function nR(){if(!(typeof window>"u"))try{localStorage.removeItem(wi)}catch{}}const Fa=hi((t,e)=>{const n={pendingChunksBySession:new Map,activitySessionIds:new Set,batchFlushRafRef:null},r=(i,a)=>{const c=new Map;return t(l=>{const d=new Map(l.sessions);let u=l.nextChunkId;const f=Date.now();for(const[h,g]of i){const m=d.get(h)??zt(h);let b=m.bufferChunks.length>0?[...m.bufferChunks]:[],w=m.bufferLength;for(const I of g){const y=u++;b.push({id:y,data:I}),c.set(h,y),w+=I.length}for(;w>Lf&&b.length>1;){const I=b.shift();if(!I)break;w-=I.data.length}d.set(h,{...m,bufferChunks:b,bufferLength:w,lastOutputAt:a.has(h)?f:m.lastOutputAt,updatedAt:f})}return{sessions:d,nextChunkId:u}}),c},o=()=>{if(n.batchFlushRafRef===null){if(typeof window>"u"){s();return}n.batchFlushRafRef=window.requestAnimationFrame(()=>{n.batchFlushRafRef=null,s()})}},s=()=>{if(n.pendingChunksBySession.size===0)return;const i=B2(n.pendingChunksBySession),a=new Set([...i.keys()].filter(c=>n.activitySessionIds.has(c)));for(const c of i.keys())n.pendingChunksBySession.has(c)||n.activitySessionIds.delete(c);r(i,a),n.pendingChunksBySession.size>0&&o()};return{sessions:new Map,nextChunkId:1,activeSessionId:null,getTerminalSession:i=>e().sessions.get(i),setActiveSessionId:i=>{if(t({activeSessionId:i}),i){const a=e().sessions.get(i);if(a?.agentNeedsReview){const c=new Map(e().sessions);c.set(i,{...a,agentNeedsReview:!1,updatedAt:Date.now()}),t({sessions:c}),a.terminalSessionId&&xc(a.terminalSessionId)}}},setTerminalSession:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i),f=!d||d.terminalSessionId!==a.sessionId?zt(i):d??zt(i),h=a.history??d?.history??[];return l.set(i,{...f,terminalSessionId:a.sessionId,mode:a.mode??f.mode,tmuxSessionName:a.tmuxSessionName??f.tmuxSessionName,activeProgram:a.activeProgram??d?.activeProgram??f.activeProgram,activeProgramRaw:a.activeProgramRaw??d?.activeProgramRaw??f.activeProgramRaw,activeProgramSource:a.activeProgramSource??d?.activeProgramSource??f.activeProgramSource,cwd:a.cwd??d?.cwd??f.cwd,agentResumeRecovered:d?.agentResumeRecovered??f.agentResumeRecovered,shellTitle:d?.shellTitle??yi()[i]??f.shellTitle,sessionId:i,isConnecting:!1,history:h,updatedAt:Date.now()}),{sessions:l}})},setSessionHistory:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??zt(i);return l.set(i,{...d,history:a,updatedAt:Date.now()}),{sessions:l}})},setSessionActiveProgram:(i,a,c=null,l=null)=>{t(d=>{const u=new Map(d.sessions),f=u.get(i)??zt(i);return u.set(i,{...f,activeProgram:a,activeProgramRaw:l,activeProgramSource:c,updatedAt:Date.now()}),{sessions:u}})},setSessionCwd:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??zt(i);return l.set(i,{...d,cwd:a,updatedAt:Date.now()}),{sessions:l}})},setSessionShellTitle:(i,a)=>{t(c=>{const l=c.sessions.get(i);if(!l||l.shellTitle===a)return c;const d=new Map(c.sessions);return d.set(i,{...l,shellTitle:a,updatedAt:Date.now()}),{sessions:d}}),Z2(i,a)},setSessionPromptState:(i,a,c)=>{t(l=>{const d=l.sessions.get(i);if(!d||d.promptState===a)return l;const u=new Map(l.sessions);return u.set(i,{...d,promptState:a,shellExitCode:c??d.shellExitCode,updatedAt:Date.now()}),{sessions:u}})},setSessionTuiProgress:(i,a)=>{t(c=>{const l=c.sessions.get(i);if(!l)return c;const d=a?.state==="remove"?null:a;if(l.tuiProgress?.state===d?.state&&l.tuiProgress?.progress===d?.progress)return c;const u=new Map(c.sessions);return u.set(i,{...l,tuiProgress:d,updatedAt:Date.now()}),{sessions:u}})},setSessionGitStatus:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i);return!d||JSON.stringify(d.gitStatus)===JSON.stringify(a)?c:(l.set(i,{...d,gitStatus:a,updatedAt:Date.now()}),{sessions:l})})},setSessionCopyMode:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i);return!d||d.inCopyMode===a?c:(l.set(i,{...d,inCopyMode:a,updatedAt:Date.now()}),{sessions:l})})},setSessionAgentStatus:(i,a)=>{const c=e(),l=c.sessions.get(i);if(!l)return;const d=a.agentStatus??null,u=d&&d!=="idle"?a.agentIndicator??l.agentIndicator??null:null,f=d&&d!=="idle"?a.agentStatusDetail??null:null,h=a.agent!==void 0?a.agent:l.agent,g=a.agentMessage!==void 0?a.agentMessage:d?l.agentMessage:null,m=a.agentNativeSessionId!==void 0?a.agentNativeSessionId:l.agentNativeSessionId,b=a.agentResumeRecovered!==void 0?a.agentResumeRecovered:l.agentResumeRecovered,w=a.agentRich??l.agentRich,I=a.agentActivity??l.agentActivity,y=a.agentCwd!==void 0?a.agentCwd:l.agentCwd,k=c.activeSessionId!==i,N=l.agentStatus==="working"||l.agentStatus==="waiting"||l.agentStatus==="done",x=a.reviewed===!1||a.reviewed===null&&d===null&&N&&k;if(l.agentStatus===d&&l.agentIndicator===u&&l.agentStatusDetail===f&&l.agent===h&&l.agentMessage===g&&l.agentNativeSessionId===m&&l.agentResumeRecovered===b&&l.agentRich===w&&l.agentActivity===I&&l.agentCwd===y&&l.agentNeedsReview===x)return;const T=new Map(c.sessions);if(T.set(i,{...l,agentStatus:d,agentIndicator:u,agentStatusDetail:f,agent:h,agentMessage:g,agentNativeSessionId:m,agentResumeRecovered:b,agentRich:w,agentActivity:I,agentCwd:y,agentNeedsReview:x,updatedAt:Date.now()}),t({sessions:T}),h&&Q2(i,h),!Ws())return;const S=h?.displayName??l.agent?.displayName??"Agent",v=V2(),A=X2(v,S);if(d==="waiting"&&l.agentStatus!=="waiting"&&k){Da({title:A.waitingTitle,body:g??A.waitingBody,tag:`agent:${i}`,dedupKey:`agent:${i}:waiting:${I}`,data:{url:"/",sessionId:i},deferToPush:!0});return}if(d==="done"&&l.agentStatus!=="done"&&k){Da({title:A.doneTitle,body:A.doneBody,tag:`agent:${i}`,dedupKey:`agent:${i}:done:${I}`,data:{url:"/",sessionId:i},deferToPush:!0});return}d===null&&(l.agentStatus==="working"||l.agentStatus==="waiting")&&k&&Da({title:A.exitedTitle,body:A.exitedBody,tag:`agent:${i}`,dedupKey:`agent:${i}:exited:${I}`,data:{url:"/",sessionId:i},deferToPush:!0})},setAgentResumeRecovered:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??zt(i);return d.agentResumeRecovered===a?c:(l.set(i,{...d,agentResumeRecovered:a,updatedAt:Date.now()}),{sessions:l})})},clearAgentNeedsReview:i=>{const a=e().sessions.get(i);a?.agentNeedsReview&&(t(c=>{const l=new Map(c.sessions),d=l.get(i);return!d||!d.agentNeedsReview?c:(l.set(i,{...d,agentNeedsReview:!1,updatedAt:Date.now()}),{sessions:l})}),a.terminalSessionId&&xc(a.terminalSessionId))},setConnecting:(i,a)=>{t(c=>{const l=new Map(c.sessions),d=l.get(i)??zt(i);return l.set(i,{...d,isConnecting:a,updatedAt:Date.now()}),{sessions:l}})},appendToBuffer:(i,a,c)=>{if(!a)return;let l=n.pendingChunksBySession.get(i);l||(l=[],n.pendingChunksBySession.set(i,l)),l.push(...Pf(a)),c?.markActivity!==!1&&n.activitySessionIds.add(i),o()},hasPendingBufferWrites:i=>(n.pendingChunksBySession.get(i)?.length??0)>0,flushPendingBufferWrites:i=>{const a=n.pendingChunksBySession.get(i);if(!a?.length)return e().sessions.get(i)?.bufferChunks.at(-1)?.id??null;n.pendingChunksBySession.delete(i);const c=n.activitySessionIds.delete(i);return n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),r(new Map([[i,a]]),c?new Set([i]):new Set).get(i)??null},replaceBuffer:(i,a)=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null);let c=null;return t(l=>{const d=new Map(l.sessions),u=d.get(i);if(!u)return l;if(!a||a.length===0)return d.set(i,{...u,bufferChunks:[],bufferLength:0,updatedAt:Date.now()}),{sessions:d};let f=l.nextChunkId;const h=[];let g=0;for(const m of a)if(m)for(const b of Pf(m)){const w=f++;h.push({id:w,data:b}),c=w,g+=b.length}for(;g>Lf&&h.length>1;){const m=h.shift();if(!m)break;g-=m.data.length}return d.set(i,{...u,bufferChunks:h,bufferLength:g,updatedAt:Date.now()}),{sessions:d,nextChunkId:f}}),c},clearTerminalSession:i=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),t(a=>{const c=new Map(a.sessions),l=c.get(i);return l&&c.set(i,{...l,terminalSessionId:null,isConnecting:!1,agentStatus:null,agentIndicator:null,agentStatusDetail:null,agent:null,agentMessage:null,agentNeedsReview:!1,updatedAt:Date.now()}),{sessions:c}})},clearBuffer:i=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),n.pendingChunksBySession.size===0&&n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),t(a=>{const c=new Map(a.sessions),l=c.get(i);return l?(c.set(i,{...l,bufferChunks:[],bufferLength:0,updatedAt:Date.now()}),{sessions:c}):a})},removeTerminalSession:i=>{n.pendingChunksBySession.delete(i),n.activitySessionIds.delete(i),t(a=>{const c=new Map(a.sessions);return c.delete(i),{sessions:c}}),J2(i),eR(i)},clearAllTerminalSessions:()=>{n.pendingChunksBySession.clear(),n.activitySessionIds.clear(),n.batchFlushRafRef!==null&&(window.cancelAnimationFrame(n.batchFlushRafRef),n.batchFlushRafRef=null),t({sessions:new Map,nextChunkId:1}),nR(),tR()}}}),jc="termdock:session-notice";function rR(){return _.useEffect(()=>{const t=()=>_a.getState().view(!document.hidden&&ns()?Fa.getState().activeSessionId:null);t();const e=Fa.subscribe((n,r)=>{n.activeSessionId!==r.activeSessionId&&t()});return document.addEventListener("visibilitychange",t),window.addEventListener(go,t),()=>{e(),document.removeEventListener("visibilitychange",t),window.removeEventListener(go,t),_a.getState().view(null)}},[]),_.useEffect(()=>gm(t=>{if(t.type!=="session-notice")return;_a.getState().receive(t.sessionId,t.id);const e=se()?.targetPeerId,n=mt(),r=window.parent,o=T2().sessions.find(u=>u.sessionId===t.sessionId),s=Fa.getState().sessions.get(t.sessionId),i=s?.shellTitle??Y2(t.sessionId),a=i===s?.cwd||i===Gn(s?.cwd??null)?null:i,c=E2(o??{name:t.sessionName},s?.activeProgram??null,null,void 0,a,s?.promptState??null),l={...t,sessionName:c,key:`${e??"local"}:${t.id}`,open:()=>e&&n?n.focusSession(e,t.sessionId):(window.dispatchEvent(new CustomEvent("termdock:focus-session",{detail:t.sessionId})),!0)},d=r.document.createEvent("CustomEvent");d.initCustomEvent(jc,!1,!1,l),r.dispatchEvent(d)}),[]),null}function oR(){const{locale:t}=gi(),e=t==="zh",[n,r]=_.useState([]);_.useEffect(()=>{const i=a=>{const c=a.detail;r(l=>l.some(d=>d.key===c.key)?l:[...l,c])};return window.addEventListener(jc,i),()=>window.removeEventListener(jc,i)},[]);const o=_.useCallback(i=>{r(a=>a.filter(c=>c.key!==i))},[]),s=n[0];return s?qc.createPortal(p.jsx(sR,{notice:s,remaining:n.length-1,chinese:e,onDismiss:o},s.key),document.body):null}function sR({notice:t,remaining:e,chinese:n,onDismiss:r}){const[o,s]=_.useState(!1);return p.jsxs("section",{"aria-label":n?"关键进展提醒":"Progress reminder",className:"fixed left-3 right-3 top-[calc(var(--safe-top-inset,0px)+0.75rem)] z-toast overflow-hidden rounded-xl bg-surface text-foreground shadow-lg ring-1 ring-inset ring-border/15 animate-fade-in md:left-auto md:right-4 md:w-[360px]",children:[p.jsxs("button",{type:"button","aria-label":n?"查看 Session":"Open session",className:"group flex w-full items-start gap-2.5 p-3.5 pr-11 text-left transition-colors hover:bg-surface-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary",onClick:()=>{t.open()?r(t.key):s(!0)},children:[p.jsx(ag,{size:16,className:"mt-0.5 shrink-0 text-primary","aria-hidden":"true"}),p.jsxs("span",{className:"min-w-0 flex-1",role:"status","aria-live":"polite","aria-atomic":"true",children:[p.jsxs("span",{className:"flex items-center gap-2",children:[p.jsx("span",{className:"min-w-0 flex-1 truncate text-[12px] font-medium",title:t.sessionName,children:t.sessionName}),p.jsx(t1,{size:13,className:"shrink-0 text-muted-foreground/60 transition-colors group-hover:text-primary","aria-hidden":"true"})]}),t.title&&p.jsx("span",{className:"mt-1 block truncate text-[11px] text-muted-foreground",children:t.title}),p.jsx("span",{className:"mt-1.5 line-clamp-3 whitespace-pre-wrap break-words text-[13px] leading-relaxed text-foreground/85",title:t.message,children:t.message}),e>0&&p.jsx("span",{className:"mt-2 block text-[10px] text-muted-foreground",children:n?`还有 ${e} 条`:`${e} more`}),o&&p.jsx("span",{role:"alert",className:"mt-2 block text-xs text-warning",children:n?"暂时无法打开该服务,请重试。":"Unable to open the service. Please retry."})]})]}),p.jsx("button",{type:"button","aria-label":n?"关闭提醒":"Dismiss reminder",className:"absolute right-0 top-0 flex h-11 w-11 items-center justify-center rounded-tr-xl text-muted-foreground/60 transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary",onClick:()=>r(t.key),children:p.jsx(hg,{size:14})})]})}const Bf=5*6e4;let Hc,Im=!1,Rm=!1,_f=!1;const Uc=new Set;function Of(){Im=!0,Uc.forEach(t=>t())}function iR(){return _.useSyncExternalStore(t=>(Uc.add(t),()=>{Uc.delete(t)}),()=>Im,()=>!1)}function aR(){window.dispatchEvent(new Event("termdock:before-update")),Rm=!0,Hc?.waiting?Hc.waiting.postMessage({type:"SKIP_WAITING"}):window.location.reload()}function cR(t,e){let n=t;return()=>{if(!n){n=!0;return}e()}}function lR(){if(_f||typeof window>"u"||!("serviceWorker"in navigator))return;_f=!0,navigator.serviceWorker.addEventListener("controllerchange",cR(!!navigator.serviceWorker.controller,()=>{Rm?window.location.reload():Of()}));const t=()=>{navigator.serviceWorker.register("/sw.js",{scope:"/",updateViaCache:"none"}).then(e=>{Hc=e;const n=()=>{e.waiting&&Of()},r=()=>{const i=e.installing;i?.addEventListener("statechange",()=>{i.state==="installed"&&navigator.serviceWorker.controller&&n()})};e.addEventListener("updatefound",r),r(),n();let o=0;const s=()=>{document.visibilityState!=="visible"||Date.now()-o<Bf||(o=Date.now(),e.update().then(n).catch(()=>{}))};s(),window.setInterval(s,Bf),document.addEventListener("visibilitychange",s)}).catch(()=>{})};document.readyState==="complete"?t():window.addEventListener("load",t,{once:!0})}function dR(){const t=iR(),[e,n]=_.useState(!1),{locale:r}=gi();if(!t||e)return null;const o=r==="zh";return p.jsxs("div",{role:"status",className:"fixed bottom-16 left-1/2 z-toast flex max-w-[calc(100%-2rem)] -translate-x-1/2 items-center gap-3 rounded-lg border border-border bg-background px-4 py-3 text-sm text-foreground shadow-lg",children:[p.jsx("span",{children:o?"新版本已就绪":"An update is ready"}),p.jsx("button",{type:"button",className:"whitespace-nowrap text-primary",onClick:aR,children:o?"重新加载":"Reload"}),p.jsx("button",{type:"button",className:"whitespace-nowrap text-muted-foreground",onClick:()=>n(!0),children:o?"稍后":"Later"})]})}function Tm(t){const e=document.querySelector('meta[name="theme-color"]');e&&e.setAttribute("content",t==="light"?"#FFFCF0":"#1C1B1A")}const Pm=_.createContext(void 0);function lT({children:t}){const e=_.useContext(Pm),n=e===void 0?typeof document>"u"?null:document.body:e;return n?qc.createPortal(t,n):null}const uR={activeKey:"root",items:[]},fR=()=>()=>{},hR=()=>uR;function pR({host:t,item:e,visible:n,active:r}){const o=_.useRef(null);return _.useEffect(()=>{o.current?.toggleAttribute("inert",!r)},[r]),_.useLayoutEffect(()=>{const s=o.current;return()=>{try{const i=s?.contentWindow,a=i?.document.createEvent("Event");a&&(a.initEvent("termdock:before-update",!1,!1),i?.dispatchEvent(a))}catch{}t.attach(e.key,null)}},[t,e.key]),p.jsx("iframe",{ref:o,title:e.service?.label||"服务工作区","data-workspace-key":e.key,src:`/workspace.html?${Qp}=${encodeURIComponent(e.key)}`,className:"fixed inset-0 w-full border-0 bg-[var(--chrome-bg)]",style:{height:"var(--app-base-vh, 100%)",visibility:n?"visible":"hidden",pointerEvents:r?"auto":"none"},"aria-hidden":!r,tabIndex:r?0:-1,allow:"clipboard-read; clipboard-write; fullscreen"})}function gR({children:t}){const e=window.parent===window?mt():void 0,n=_.useSyncExternalStore(e?.subscribe||fR,e?.snapshot||hR),[r,o]=_.useState(null),[s,i]=_.useState(()=>n.activeKey==="root"?"root":null),[a,c]=_.useState(),[l,d]=_.useState(!1),[u,f]=_.useState(),h=n.items.find(y=>y.key===n.activeKey),g=h?.rendered||a===n.activeKey?n.activeKey:s,m=g!==n.activeKey,b=m&&s===null;_.useLayoutEffect(()=>{if(!m||b){f(void 0);return}const y=()=>{const k=Array.from(document.querySelectorAll("iframe[data-workspace-key]")).find(O=>O.dataset.workspaceKey===s),S=(s==="root"?r:k?.contentDocument)?.querySelector('nav[aria-label="切换服务"]')?.closest("[data-sidebar-gesture-ignore]")?.getBoundingClientRect();if(!S||S.width===0||S.right<=0){f(void 0);return}const v=k?.getBoundingClientRect(),A=S.top+(v?.top??0)>=160;f({left:S.left+(v?.left??0)+12,top:(A?S.top-8:S.bottom+8)+(v?.top??0),width:Math.max(0,S.width-24),transform:A?"translateY(-100%)":"none"})};return y(),window.addEventListener("resize",y),()=>window.removeEventListener("resize",y)},[m,b,s,r]),_.useLayoutEffect(()=>{e?.present(g),m||i(g),r?.toggleAttribute("inert",g!=="root"||m)},[e,r,g,m]),_.useEffect(()=>{if(d(!1),!m)return;const y=setTimeout(()=>d(!0),8e3);return()=>clearTimeout(y)},[n.activeKey,m]),_.useEffect(()=>{c(void 0)},[n.activeKey]);const w=n.items.find(y=>y.key===s),I=h?.phase==="offline"?"网络已断开,等待恢复…":h?.phase==="reconnecting"?"连接暂未恢复,正在重试…":l?"连接时间较长,仍在等待服务…":b?"正在恢复服务…":"正在切换服务…";return _.useEffect(()=>{if(!e)return;const y=()=>{try{const k=JSON.parse(localStorage.getItem("termdock-color-theme")||"null");(k==="dark"||k==="light")&&(document.documentElement.dataset.theme=k,Tm(k))}catch{}};return window.addEventListener("storage",y),()=>window.removeEventListener("storage",y)},[e]),_.useEffect(()=>{if(!e||!("serviceWorker"in navigator))return;const y=x=>{if(x.source!==navigator.serviceWorker.controller)return;const T=x.data;T?.type==="termdock:focus-session"&&typeof T.targetPeerId=="string"&&typeof T.sessionId=="string"&&e.focusSession(T.targetPeerId,T.sessionId)&&(x.ports[0]?.postMessage({type:"termdock:focus-session-ack"}),x.stopImmediatePropagation())},k=async()=>{if("caches"in window)try{const x=await caches.open("termdock-notification-target-v1"),T=await x.match("/__termdock-notification-target");if(!T)return;const S=await T.json();typeof S.targetPeerId=="string"&&typeof S.sessionId=="string"&&Date.now()-S.clickedAt<3e4&&e.focusSession(S.targetPeerId,S.sessionId)&&await x.delete("/__termdock-notification-target")}catch{}},N=()=>{document.hidden||k()};return navigator.serviceWorker.addEventListener("message",y),document.addEventListener("visibilitychange",N),k(),()=>{navigator.serviceWorker.removeEventListener("message",y),document.removeEventListener("visibilitychange",N)}},[e]),e?p.jsxs("div",{className:"relative h-full w-full overflow-hidden bg-[var(--chrome-bg)]",children:[p.jsx("div",{ref:o,className:"isolate h-full w-full","aria-hidden":g!=="root"||m,style:{visibility:g==="root"?"visible":"hidden"},children:p.jsx(Pm.Provider,{value:r,children:t})}),n.items.filter(y=>y.key!=="root").map(y=>p.jsx(pR,{host:e,item:y,visible:g===y.key,active:!m&&g===y.key},y.key)),b&&p.jsx(Hl,{className:"z-modal-panel",status:I,detail:l||h?.phase==="offline"||h?.phase==="reconnecting"?h?.service?.label:void 0,actionLabel:l||h?.phase==="offline"||h?.phase==="reconnecting"?"查看连接页面":void 0,onAction:()=>c(n.activeKey)}),m&&!b&&p.jsx("div",{className:"fixed inset-0 z-modal-panel flex items-end justify-center px-3 pb-[calc(env(safe-area-inset-bottom)+96px)]",role:"dialog","aria-modal":"true","aria-label":"切换服务",onKeyDown:y=>{if(y.key==="Escape"&&w?.service&&(y.preventDefault(),e.activate(w.service)),y.key==="Tab"){const k=Array.from(y.currentTarget.querySelectorAll("button")),N=k[0],x=k[k.length-1];y.shiftKey&&document.activeElement===N?(y.preventDefault(),x?.focus()):!y.shiftKey&&document.activeElement===x&&(y.preventDefault(),N?.focus())}},children:p.jsxs("div",{style:u?{position:"absolute",...u}:void 0,className:"flex w-full max-w-sm flex-wrap items-center gap-x-2 gap-y-1 rounded-xl border border-border bg-surface-elevated px-3 py-1.5 text-foreground shadow-lg",children:[p.jsxs("div",{role:"status","aria-live":"polite",className:"flex min-w-0 flex-1 items-center gap-2",children:[p.jsx(Ue,{size:16,className:"shrink-0 animate-spin text-primary motion-reduce:animate-none","aria-hidden":"true"}),p.jsxs("div",{className:"min-w-0",children:[p.jsx("div",{className:"truncate text-sm font-medium",children:h?.service?.label||"服务工作区"}),p.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:I})]})]}),p.jsxs("div",{className:"flex items-center justify-end gap-1",children:[l&&p.jsx("button",{type:"button",className:"min-h-11 rounded-lg px-3 text-xs text-muted-foreground hover:bg-surface-2",onClick:()=>c(n.activeKey),children:"查看连接页面"}),w?.service&&p.jsx("button",{type:"button",autoFocus:!0,"aria-label":"取消切换",className:"min-h-11 shrink-0 rounded-lg px-3 text-xs text-muted-foreground hover:bg-surface-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",onClick:()=>e.activate(w.service),children:"取消"})]})]})})]}):t}const mR=_.lazy(()=>en(()=>import("./App-DIYNv8nX.js").then(t=>t.b),__vite__mapDeps([4,2,1,5,6,3,7,8]))),wR=_.lazy(()=>en(()=>import("./DagPlayground-DHLTKfYe.js"),__vite__mapDeps([9,10,2,1,11,7,3])).then(t=>({default:t.DagPlayground}))),yR=_.lazy(()=>en(()=>import("./DiffLab-DyapQhFp.js"),__vite__mapDeps([12,2,1,13,8,14,3])).then(t=>({default:t.DiffLab}))),bR=_.lazy(()=>en(()=>import("./DiffReviewLab-CcATFm0V.js"),__vite__mapDeps([15,2,1,16,5,6,11,13,8,14,3])).then(t=>({default:t.DiffReviewLab})));p2();BE();HE();window.parent===window&&lR();const Yr=se();Yr&&en(()=>import("./App-DIYNv8nX.js").then(t=>t.b),__vite__mapDeps([4,2,1,5,6,3,7,8])).catch(()=>{});!new URLSearchParams(location.search).has("dag-playground")&&!new URLSearchParams(location.search).has("diff-lab")&&!new URLSearchParams(location.search).has("diff-review-lab")&&xE(Yr?{...Yr,id:Yr.targetPeerId,label:Yr.serviceName||location.host}:void 0);try{const t=JSON.parse(window.localStorage.getItem("termdock-color-theme")||"null");(t==="dark"||t==="light")&&(document.documentElement.dataset.theme=t,Tm(t))}catch{}qE.createRoot(document.getElementById("root")).render(p.jsxs(Xe.StrictMode,{children:[p.jsx(YI,{}),p.jsxs(aI,{children:[window.parent===window&&p.jsxs(p.Fragment,{children:[p.jsx(dR,{}),p.jsx(oR,{})]}),p.jsx(n2,{children:p.jsx(_.Suspense,{fallback:p.jsx(Hl,{}),children:(()=>{const t=new URLSearchParams(window.location.search);return t.get("dag-playground")==="1"?p.jsx(wR,{}):t.get("diff-review-lab")==="1"?p.jsx(bR,{}):t.get("diff-lab")==="1"?p.jsx(yR,{}):p.jsx(gR,{children:p.jsxs(JI,{children:[p.jsx(rR,{}),p.jsx(mR,{})]})})})()})})]})]}));export{El as $,Nl as A,ag as B,Hs as C,mm as D,Ig as E,fl as F,uC as G,uE as H,Mk as I,Fv as J,_A as K,Ue as L,wE as M,wk as N,UR as O,bI as P,pn as Q,BC as R,fi as S,y1 as T,LC as U,d2 as V,go as W,hg as X,iT as Y,gk as Z,en as _,ig as a,Ik as a$,EA as a0,OA as a1,ok as a2,NR as a3,hi as a4,Dk as a5,a2 as a6,Le as a7,rk as a8,Ui as a9,TC as aA,Rk as aB,Gn as aC,oC as aD,AC as aE,FC as aF,hC as aG,OC as aH,CC as aI,SC as aJ,Vk as aK,JR as aL,PC as aM,Ks as aN,FA as aO,x2 as aP,E2 as aQ,XR as aR,un as aS,Ws as aT,Mc as aU,yo as aV,Kl as aW,rt as aX,BA as aY,VA as aZ,yA as a_,Uk as aa,bC as ab,VR as ac,aT as ad,MA as ae,Ek as af,Hk as ag,yC as ah,DA as ai,_1 as aj,kg as ak,jA as al,mI as am,BR as an,WR as ao,yk as ap,at as aq,Lk as ar,Nk as as,Ok as at,nk as au,NC as av,RC as aw,cT as ax,Y2 as ay,IC as az,QE as b,$R as b$,vk as b0,kk as b1,_C as b2,Kg as b3,mt as b4,Ba as b5,op as b6,Ap as b7,mC as b8,Bk as b9,Kk as bA,ik as bB,ut as bC,T2 as bD,gC as bE,fC as bF,pC as bG,wC as bH,KR as bI,qR as bJ,DR as bK,ak as bL,HA as bM,_R as bN,wc as bO,qC as bP,zk as bQ,ZC as bR,GR as bS,Xk as bT,Wk as bU,Ck as bV,$n as bW,rT as bX,Yk as bY,Gk as bZ,hk as b_,Fk as ba,qg as bb,rC as bc,sC as bd,Jk as be,nC as bf,eC as bg,U2 as bh,ql as bi,ns as bj,p as bk,PR as bl,Sk as bm,jC as bn,qk as bo,WC as bp,JC as bq,cC as br,bk as bs,Pk as bt,VC as bu,k2 as bv,xC as bw,Eg as bx,Fg as by,C2 as bz,cg as c,mk as c0,xk as c1,$k as c2,zC as c3,IR as c4,L1 as c5,UC as c6,DC as c7,HC as c8,GC as c9,ck as cA,RR as cB,sT as cC,G2 as cD,Tm as cE,CR as cF,_k as cG,oT as cH,jk as cI,Tk as cJ,as as cK,it as cL,vC as cM,gg as cN,gi as cO,MR as cP,_a as cQ,ZR as cR,ke as cS,Fa as cT,zR as cU,be as cV,dC as cW,ui as cX,ze as cY,jR as cZ,FR as c_,se as ca,lC as cb,eI as cc,rg as cd,QC as ce,fk as cf,lk as cg,sk as ch,uk as ci,pk as cj,$C as ck,YC as cl,YR as cm,eT as cn,tT as co,nT as cp,QR as cq,Og as cr,tk as cs,$i as ct,HR as cu,Da as cv,XC as cw,gm as cx,KC as cy,OR as cz,xn as d,a1 as e,lg as f,dg as g,n2 as h,LR as i,Cg as j,h1 as k,ug as l,pI as m,fg as n,Hl as o,xe as p,lT as q,dk as r,ul as s,_t as t,MC as u,TR as v,uA as w,A2 as x,iC as y,tC as z};