termdock 1.4.187 → 1.4.189
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.desktop-dist/main.js +19 -2
- package/dist/client/assets/App-CqPSkz_g.js +150 -0
- package/dist/client/assets/App-CqPSkz_g.js.br +0 -0
- package/dist/client/assets/App-CqPSkz_g.js.gz +0 -0
- package/dist/client/assets/{ChangeWalkthroughPanel-CagNE5sS.js → ChangeWalkthroughPanel-CtZKX2AS.js} +1 -1
- package/dist/client/assets/ChangeWalkthroughPanel-CtZKX2AS.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-CtZKX2AS.js.gz +0 -0
- package/dist/client/assets/{DagPlayground-ByHPEtI-.js → DagPlayground-B9ly2Wta.js} +1 -1
- package/dist/client/assets/DagPlayground-B9ly2Wta.js.br +0 -0
- package/dist/client/assets/DagPlayground-B9ly2Wta.js.gz +0 -0
- package/dist/client/assets/{DiffLab-DRSI8fLW.js → DiffLab-Bkzvr6Ys.js} +1 -1
- package/dist/client/assets/DiffLab-Bkzvr6Ys.js.br +0 -0
- package/dist/client/assets/DiffLab-Bkzvr6Ys.js.gz +0 -0
- package/dist/client/assets/{DiffReview-zlUgwQmz.js → DiffReview-B5AC89kp.js} +1 -1
- package/dist/client/assets/DiffReview-B5AC89kp.js.br +0 -0
- package/dist/client/assets/DiffReview-B5AC89kp.js.gz +0 -0
- package/dist/client/assets/{DiffReviewLab-CEXLSbXZ.js → DiffReviewLab--K2fE9B_.js} +1 -1
- package/dist/client/assets/DiffReviewLab--K2fE9B_.js.br +0 -0
- package/dist/client/assets/DiffReviewLab--K2fE9B_.js.gz +0 -0
- package/dist/client/assets/{DiffViewer-BKveUbws.js → DiffViewer-YO7X8DnR.js} +1 -1
- package/dist/client/assets/DiffViewer-YO7X8DnR.js.br +0 -0
- package/dist/client/assets/DiffViewer-YO7X8DnR.js.gz +0 -0
- package/dist/client/assets/{ModelPreview-qytCBHVC.js → ModelPreview-B0942mh0.js} +1 -1
- package/dist/client/assets/ModelPreview-B0942mh0.js.br +0 -0
- package/dist/client/assets/ModelPreview-B0942mh0.js.gz +0 -0
- package/dist/client/assets/{RightSidebar-bsiODrHb.js → RightSidebar-Dvo-tMYw.js} +4 -4
- package/dist/client/assets/RightSidebar-Dvo-tMYw.js.br +0 -0
- package/dist/client/assets/RightSidebar-Dvo-tMYw.js.gz +0 -0
- package/dist/client/assets/{abnfDiagram-VCTEODGH-B7JRd7FY.js → abnfDiagram-VCTEODGH-DR1DwZvG.js} +1 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-DR1DwZvG.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-DR1DwZvG.js.gz +0 -0
- package/dist/client/assets/{app-CMWQDZw8.js → app-CSjqfJEX.js} +3 -3
- package/dist/client/assets/app-CSjqfJEX.js.br +0 -0
- package/dist/client/assets/app-CSjqfJEX.js.gz +0 -0
- package/dist/client/assets/{arc-Bq9PhNQ5.js → arc-BiK-hDRQ.js} +1 -1
- package/dist/client/assets/arc-BiK-hDRQ.js.br +0 -0
- package/dist/client/assets/arc-BiK-hDRQ.js.gz +0 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-DXBIWjmY.js → architectureDiagram-5GKGNRK7-BRoIiPdr.js} +1 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-BRoIiPdr.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-BRoIiPdr.js.gz +0 -0
- package/dist/client/assets/{blockDiagram-I7D4REHJ-D-2n-_9v.js → blockDiagram-I7D4REHJ--oR7UeK0.js} +1 -1
- package/dist/client/assets/blockDiagram-I7D4REHJ--oR7UeK0.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ--oR7UeK0.js.gz +0 -0
- package/dist/client/assets/{c4Diagram-7LVT6UL2-BxeL4VmS.js → c4Diagram-7LVT6UL2-DWZqhfmV.js} +1 -1
- package/dist/client/assets/{c4Diagram-7LVT6UL2-BxeL4VmS.js.br → c4Diagram-7LVT6UL2-DWZqhfmV.js.br} +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-DWZqhfmV.js.gz +0 -0
- package/dist/client/assets/channel-CC0QyaPQ.js +1 -0
- package/dist/client/assets/{chunk-2Q5K7J3B-DqlBvHfi.js → chunk-2Q5K7J3B-CDds2Uuw.js} +1 -1
- package/dist/client/assets/{chunk-5VM5RSS4-KrpNQJH4.js → chunk-5VM5RSS4-C6tFNdRP.js} +1 -1
- package/dist/client/assets/{chunk-F27PBJKO-D0wocBcX.js → chunk-F27PBJKO-Byjlqrbp.js} +1 -1
- package/dist/client/assets/chunk-F27PBJKO-Byjlqrbp.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-Byjlqrbp.js.gz +0 -0
- package/dist/client/assets/{chunk-IMKFNOWR-lGQBbgyX.js → chunk-IMKFNOWR--FcxAC6S.js} +1 -1
- package/dist/client/assets/chunk-IMKFNOWR--FcxAC6S.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR--FcxAC6S.js.gz +0 -0
- package/dist/client/assets/{chunk-JWPE2WC7-CZTYzRB4.js → chunk-JWPE2WC7-DXF5NaP8.js} +1 -1
- package/dist/client/assets/{chunk-POPQ4Y6H-D6ffMDuT.js → chunk-POPQ4Y6H-BX-3HMDv.js} +1 -1
- package/dist/client/assets/{chunk-SVP7TREG-DuFIymmY.js → chunk-SVP7TREG-BOiT609f.js} +1 -1
- package/dist/client/assets/chunk-SVP7TREG-BOiT609f.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-BOiT609f.js.gz +0 -0
- package/dist/client/assets/{chunk-TICWLB2K-CArxeuFV.js → chunk-TICWLB2K-e4h0BXa_.js} +1 -1
- package/dist/client/assets/chunk-TICWLB2K-e4h0BXa_.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-e4h0BXa_.js.gz +0 -0
- package/dist/client/assets/{chunk-XXDRQBXY-BuaCF8UW.js → chunk-XXDRQBXY-CGDPxIY9.js} +1 -1
- package/dist/client/assets/classDiagram-ZZMXUADV-C5HydkJF.js +1 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-C5HydkJF.js +1 -0
- package/dist/client/assets/{cose-bilkent-JH36ORCC-CS73MARn.js → cose-bilkent-JH36ORCC-BI_vxPbJ.js} +1 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-BI_vxPbJ.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-BI_vxPbJ.js.gz +0 -0
- package/dist/client/assets/{cynefin-OW5HDTMX-DiSoTNXZ.js → cynefin-OW5HDTMX-Do00pWzR.js} +1 -1
- package/dist/client/assets/cynefin-OW5HDTMX-Do00pWzR.js.br +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-Do00pWzR.js.gz +0 -0
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-KP7hecj2.js → cynefinDiagram-5FMLGOSQ-1WmUYFxF.js} +1 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-1WmUYFxF.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-1WmUYFxF.js.gz +0 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-DPa9H560.js → dagre-GXQ25YYZ-DuPIdG-w.js} +1 -1
- package/dist/client/assets/dagre-GXQ25YYZ-DuPIdG-w.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-DuPIdG-w.js.gz +0 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-0c11wnvd.js → diagram-S7CK7UJ4-umWopOc1.js} +1 -1
- package/dist/client/assets/diagram-S7CK7UJ4-umWopOc1.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-umWopOc1.js.gz +0 -0
- package/dist/client/assets/{diagram-UQ7AKVKN-ChdxK4pX.js → diagram-UQ7AKVKN-BZGG-JMX.js} +1 -1
- package/dist/client/assets/diagram-UQ7AKVKN-BZGG-JMX.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-BZGG-JMX.js.gz +0 -0
- package/dist/client/assets/{diagram-VSXAHHWV-BvO0IjNv.js → diagram-VSXAHHWV-3yFnWBx7.js} +1 -1
- package/dist/client/assets/diagram-VSXAHHWV-3yFnWBx7.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-3yFnWBx7.js.gz +0 -0
- package/dist/client/assets/{diagram-VX7I27RA-CijtmQ6O.js → diagram-VX7I27RA-zH56mQpP.js} +1 -1
- package/dist/client/assets/diagram-VX7I27RA-zH56mQpP.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-zH56mQpP.js.gz +0 -0
- package/dist/client/assets/{diagram-Z3DM3KII-9g6WXVIr.js → diagram-Z3DM3KII-gXKs8FAs.js} +1 -1
- package/dist/client/assets/diagram-Z3DM3KII-gXKs8FAs.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-gXKs8FAs.js.gz +0 -0
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-D_Qe1zir.js → ebnfDiagram-PWID7BFC-S-Aae0-1.js} +1 -1
- package/dist/client/assets/ebnfDiagram-PWID7BFC-S-Aae0-1.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-S-Aae0-1.js.gz +0 -0
- package/dist/client/assets/{erDiagram-RLTQ6QDP-Dn4AmVGb.js → erDiagram-RLTQ6QDP-xdgylvRj.js} +1 -1
- package/dist/client/assets/{erDiagram-RLTQ6QDP-Dn4AmVGb.js.br → erDiagram-RLTQ6QDP-xdgylvRj.js.br} +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-xdgylvRj.js.gz +0 -0
- package/dist/client/assets/{flowDiagram-HODETNUW-Dm2nQ-hn.js → flowDiagram-HODETNUW-B6UrhCh4.js} +1 -1
- package/dist/client/assets/flowDiagram-HODETNUW-B6UrhCh4.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-B6UrhCh4.js.gz +0 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-qEp4aLP1.js → ganttDiagram-EL5Y4UJY-C3TlLmkc.js} +1 -1
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-C3TlLmkc.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-C3TlLmkc.js.gz +0 -0
- package/dist/client/assets/{gestureArbiter-DjfNwRXW.js → gestureArbiter-BVBarnU9.js} +1 -1
- package/dist/client/assets/gestureArbiter-BVBarnU9.js.br +0 -0
- package/dist/client/assets/gestureArbiter-BVBarnU9.js.gz +0 -0
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-BEW8CEt_.js → gitGraphDiagram-WWUBYQGX-wwc8lPj0.js} +1 -1
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-wwc8lPj0.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-wwc8lPj0.js.gz +0 -0
- package/dist/client/assets/{index-rP_pCOXJ.css → index-CreRkeNE.css} +1 -1
- package/dist/client/assets/index-CreRkeNE.css.br +0 -0
- package/dist/client/assets/index-CreRkeNE.css.gz +0 -0
- package/dist/client/assets/{infoDiagram-27XIBGKW-Dr8qLPgo.js → infoDiagram-27XIBGKW-CuWcAjaO.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-CtCO6www.js → ishikawaDiagram-5VMMS53U-ixH6dlqa.js} +1 -1
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-ixH6dlqa.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-ixH6dlqa.js.gz +0 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-X94V-pq4.js → journeyDiagram-3NMN7TZE-jsf7IH_2.js} +1 -1
- package/dist/client/assets/journeyDiagram-3NMN7TZE-jsf7IH_2.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-jsf7IH_2.js.gz +0 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-DWBqM8Qj.js → kanban-definition-UXKFOSKX-BjqjHq8B.js} +1 -1
- package/dist/client/assets/kanban-definition-UXKFOSKX-BjqjHq8B.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-BjqjHq8B.js.gz +0 -0
- package/dist/client/assets/{layout-DuJwRaFg.js → layout-DJhyTq7J.js} +1 -1
- package/dist/client/assets/layout-DJhyTq7J.js.br +0 -0
- package/dist/client/assets/layout-DJhyTq7J.js.gz +0 -0
- package/dist/client/assets/{linear-DeU8whPd.js → linear-Cuf3UwJO.js} +1 -1
- package/dist/client/assets/linear-Cuf3UwJO.js.br +0 -0
- package/dist/client/assets/linear-Cuf3UwJO.js.gz +0 -0
- package/dist/client/assets/{mermaid.core-B31OwZdg.js → mermaid.core-q_70PIqZ.js} +5 -5
- package/dist/client/assets/mermaid.core-q_70PIqZ.js.br +0 -0
- package/dist/client/assets/mermaid.core-q_70PIqZ.js.gz +0 -0
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-BGgQm9ov.js → mindmap-definition-YA3MSWOX-Dk3Drgrh.js} +1 -1
- package/dist/client/assets/mindmap-definition-YA3MSWOX-Dk3Drgrh.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-Dk3Drgrh.js.gz +0 -0
- package/dist/client/assets/{passwordBootstrap-DXFQ8-hp.js → passwordBootstrap-CQsYwRFF.js} +1 -1
- package/dist/client/assets/{passwordBootstrap-DXFQ8-hp.js.br → passwordBootstrap-CQsYwRFF.js.br} +0 -0
- package/dist/client/assets/passwordBootstrap-CQsYwRFF.js.gz +0 -0
- package/dist/client/assets/{pegDiagram-XKGWAZYB-CU0KnAf3.js → pegDiagram-XKGWAZYB-Cx2kpJ53.js} +1 -1
- package/dist/client/assets/pegDiagram-XKGWAZYB-Cx2kpJ53.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-Cx2kpJ53.js.gz +0 -0
- package/dist/client/assets/{pieDiagram-E7YTZNPT-D6ya1lkd.js → pieDiagram-E7YTZNPT-CAECgOHT.js} +1 -1
- package/dist/client/assets/pieDiagram-E7YTZNPT-CAECgOHT.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-CAECgOHT.js.gz +0 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-CoiSIe4H.js → quadrantDiagram-AXDQQJYC-BYb3yLp6.js} +1 -1
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-BYb3yLp6.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-BYb3yLp6.js.gz +0 -0
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-HmCMTygb.js → railroadDiagram-O6MQD6OU-9NFnMkmP.js} +1 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-9NFnMkmP.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-9NFnMkmP.js.gz +0 -0
- package/dist/client/assets/{referenceLongPress-DgKgl5sQ.js → referenceLongPress-B-A_CKaJ.js} +1 -1
- package/dist/client/assets/referenceLongPress-B-A_CKaJ.js.br +0 -0
- package/dist/client/assets/referenceLongPress-B-A_CKaJ.js.gz +0 -0
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-D3fbYAaR.js → requirementDiagram-BXWQKSXE-ClYJW_kx.js} +1 -1
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-D3fbYAaR.js.br → requirementDiagram-BXWQKSXE-ClYJW_kx.js.br} +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-ClYJW_kx.js.gz +0 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-OKa73AXM.js → sankeyDiagram-P5KCCOFB-BVKU1OEs.js} +1 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-BVKU1OEs.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-BVKU1OEs.js.gz +0 -0
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-hodMKHS3.js → sequenceDiagram-WJ2MYXX4-BphaQddV.js} +1 -1
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BphaQddV.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BphaQddV.js.gz +0 -0
- package/dist/client/assets/{sizeCapture-INFHLROL-DztG1LXM.js → sizeCapture-INFHLROL-B7SoOz1O.js} +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-B7SoOz1O.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-B7SoOz1O.js.gz +0 -0
- package/dist/client/assets/{sparkles-CZR3YsPh.js → sparkles-B3lcHnSJ.js} +1 -1
- package/dist/client/assets/{stateDiagram-D77RDMKH-eClpdLIp.js → stateDiagram-D77RDMKH-CrvEfGMj.js} +1 -1
- package/dist/client/assets/stateDiagram-D77RDMKH-CrvEfGMj.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-CrvEfGMj.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-u1T2HR3l.js +1 -0
- package/dist/client/assets/{swimlanes-42K2YHIH-CBpzBVG4.js → swimlanes-42K2YHIH-BTV61yEQ.js} +1 -1
- package/dist/client/assets/swimlanes-42K2YHIH-BTV61yEQ.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-BTV61yEQ.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DFZ62Fin.js +8 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-lVo_qsp7.js → timeline-definition-24CTP7MA-CO2JWGKo.js} +1 -1
- package/dist/client/assets/timeline-definition-24CTP7MA-CO2JWGKo.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-CO2JWGKo.js.gz +0 -0
- package/dist/client/assets/{triangle-alert-CNEjTwvU.js → triangle-alert-eoJEloNw.js} +1 -1
- package/dist/client/assets/{vennDiagram-4TSXK5OY-Cq53MU2g.js → vennDiagram-4TSXK5OY-CH1q34kT.js} +1 -1
- package/dist/client/assets/vennDiagram-4TSXK5OY-CH1q34kT.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-CH1q34kT.js.gz +0 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-C8Tuo1yq.js → wardleyDiagram-VM6X3IG4-DiU2pGsi.js} +1 -1
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-DiU2pGsi.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-DiU2pGsi.js.gz +0 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-zvG4aWeh.js → xychartDiagram-S5SC5T6Z-CIufUBWj.js} +1 -1
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-CIufUBWj.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-CIufUBWj.js.gz +0 -0
- package/dist/client/index.html +2 -2
- package/dist/client/index.html.br +0 -0
- package/dist/client/index.html.gz +0 -0
- package/dist/client/sw.js +1 -1
- package/dist/client/sw.js.br +0 -0
- package/dist/client/sw.js.gz +0 -0
- package/dist/server/routes/terminal.js +14 -3
- package/dist/server/utils/tmuxRecovery.js +6 -0
- package/package.json +1 -1
- package/runtime-manifest.json +3 -3
- package/dist/client/assets/App-Cdj9QrTs.js +0 -150
- package/dist/client/assets/App-Cdj9QrTs.js.br +0 -0
- package/dist/client/assets/App-Cdj9QrTs.js.gz +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-CagNE5sS.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-CagNE5sS.js.gz +0 -0
- package/dist/client/assets/DagPlayground-ByHPEtI-.js.br +0 -0
- package/dist/client/assets/DagPlayground-ByHPEtI-.js.gz +0 -0
- package/dist/client/assets/DiffLab-DRSI8fLW.js.br +0 -0
- package/dist/client/assets/DiffLab-DRSI8fLW.js.gz +0 -0
- package/dist/client/assets/DiffReview-zlUgwQmz.js.br +0 -0
- package/dist/client/assets/DiffReview-zlUgwQmz.js.gz +0 -0
- package/dist/client/assets/DiffReviewLab-CEXLSbXZ.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-CEXLSbXZ.js.gz +0 -0
- package/dist/client/assets/DiffViewer-BKveUbws.js.br +0 -0
- package/dist/client/assets/DiffViewer-BKveUbws.js.gz +0 -0
- package/dist/client/assets/ModelPreview-qytCBHVC.js.br +0 -0
- package/dist/client/assets/ModelPreview-qytCBHVC.js.gz +0 -0
- package/dist/client/assets/RightSidebar-bsiODrHb.js.br +0 -0
- package/dist/client/assets/RightSidebar-bsiODrHb.js.gz +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-B7JRd7FY.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-B7JRd7FY.js.gz +0 -0
- package/dist/client/assets/app-CMWQDZw8.js.br +0 -0
- package/dist/client/assets/app-CMWQDZw8.js.gz +0 -0
- package/dist/client/assets/arc-Bq9PhNQ5.js.br +0 -0
- package/dist/client/assets/arc-Bq9PhNQ5.js.gz +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-DXBIWjmY.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-DXBIWjmY.js.gz +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-D-2n-_9v.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-D-2n-_9v.js.gz +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-BxeL4VmS.js.gz +0 -0
- package/dist/client/assets/channel-BQ6D-AKi.js +0 -1
- package/dist/client/assets/chunk-F27PBJKO-D0wocBcX.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-D0wocBcX.js.gz +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-lGQBbgyX.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-lGQBbgyX.js.gz +0 -0
- package/dist/client/assets/chunk-SVP7TREG-DuFIymmY.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-DuFIymmY.js.gz +0 -0
- package/dist/client/assets/chunk-TICWLB2K-CArxeuFV.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-CArxeuFV.js.gz +0 -0
- package/dist/client/assets/classDiagram-ZZMXUADV-DOL7JlEz.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-DOL7JlEz.js +0 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-CS73MARn.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-CS73MARn.js.gz +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-DiSoTNXZ.js.br +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-DiSoTNXZ.js.gz +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-KP7hecj2.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-KP7hecj2.js.gz +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-DPa9H560.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-DPa9H560.js.gz +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-0c11wnvd.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-0c11wnvd.js.gz +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-ChdxK4pX.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-ChdxK4pX.js.gz +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-BvO0IjNv.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-BvO0IjNv.js.gz +0 -0
- package/dist/client/assets/diagram-VX7I27RA-CijtmQ6O.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-CijtmQ6O.js.gz +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-9g6WXVIr.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-9g6WXVIr.js.gz +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-D_Qe1zir.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-D_Qe1zir.js.gz +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-Dn4AmVGb.js.gz +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-Dm2nQ-hn.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-Dm2nQ-hn.js.gz +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-qEp4aLP1.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-qEp4aLP1.js.gz +0 -0
- package/dist/client/assets/gestureArbiter-DjfNwRXW.js.br +0 -0
- package/dist/client/assets/gestureArbiter-DjfNwRXW.js.gz +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BEW8CEt_.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BEW8CEt_.js.gz +0 -0
- package/dist/client/assets/index-rP_pCOXJ.css.br +0 -0
- package/dist/client/assets/index-rP_pCOXJ.css.gz +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-CtCO6www.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-CtCO6www.js.gz +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-X94V-pq4.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-X94V-pq4.js.gz +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-DWBqM8Qj.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-DWBqM8Qj.js.gz +0 -0
- package/dist/client/assets/layout-DuJwRaFg.js.br +0 -0
- package/dist/client/assets/layout-DuJwRaFg.js.gz +0 -0
- package/dist/client/assets/linear-DeU8whPd.js.br +0 -0
- package/dist/client/assets/linear-DeU8whPd.js.gz +0 -0
- package/dist/client/assets/mermaid.core-B31OwZdg.js.br +0 -0
- package/dist/client/assets/mermaid.core-B31OwZdg.js.gz +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-BGgQm9ov.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-BGgQm9ov.js.gz +0 -0
- package/dist/client/assets/passwordBootstrap-DXFQ8-hp.js.gz +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-CU0KnAf3.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-CU0KnAf3.js.gz +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-D6ya1lkd.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-D6ya1lkd.js.gz +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-CoiSIe4H.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-CoiSIe4H.js.gz +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-HmCMTygb.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-HmCMTygb.js.gz +0 -0
- package/dist/client/assets/referenceLongPress-DgKgl5sQ.js.br +0 -0
- package/dist/client/assets/referenceLongPress-DgKgl5sQ.js.gz +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-D3fbYAaR.js.gz +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-OKa73AXM.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-OKa73AXM.js.gz +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-hodMKHS3.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-hodMKHS3.js.gz +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-DztG1LXM.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-DztG1LXM.js.gz +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-eClpdLIp.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-eClpdLIp.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CXXG01M2.js +0 -1
- package/dist/client/assets/swimlanes-42K2YHIH-CBpzBVG4.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-CBpzBVG4.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-CFHlOfMQ.js +0 -8
- package/dist/client/assets/timeline-definition-24CTP7MA-lVo_qsp7.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-lVo_qsp7.js.gz +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-Cq53MU2g.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-Cq53MU2g.js.gz +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-C8Tuo1yq.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-C8Tuo1yq.js.gz +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-zvG4aWeh.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-zvG4aWeh.js.gz +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/passwordBootstrap-
|
|
2
|
-
import{r as Ka,a as Zp,g as Au}from"./react-XDCjal2T.js";import{b as O,r as Jp,R as je}from"./dnd-BCFAPC0L.js";import{L as Qp,l as eg}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"]'))n(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"&&n(i)}).observe(document,{childList:!0,subtree:!0});function r(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 n(o){if(o.ep)return;o.ep=!0;const s=r(o);fetch(o.href,s)}})();const tg="modulepreload",rg=function(t){return"/"+t},Wc={},Kt=function(e,r,n){let o=Promise.resolve();if(r&&r.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(r.map(l=>{if(l=rg(l),l in Wc)return;Wc[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":tg,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 Ks={exports:{}},ln={};var Gc;function ng(){if(Gc)return ln;Gc=1;var t=Ka(),e=Symbol.for("react.element"),r=Symbol.for("react.fragment"),n=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)n.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 ln.Fragment=r,ln.jsx=i,ln.jsxs=i,ln}var Xc;function og(){return Xc||(Xc=1,Ks.exports=ng()),Ks.exports}var p=og();const sr="termdock-secure-target-v1",za="termdock-secure-entry-v1",sg=new Set([sr,za,"termdock-color-theme","termdock:locale","termdock.federation.connections.v1"]),co=typeof Storage>"u"?void 0:Storage.prototype.getItem,zs=typeof Storage>"u"?void 0:Storage.prototype.setItem,Yc="termdock-secure-legacy-owner",$n=typeof window<"u"&&window.parent!==window&&location.pathname==="/workspace.html";function ig(){if(typeof window>"u")return null;try{if($n){const e=new URLSearchParams(location.search).get("termdock-workspace"),r=JSON.parse(localStorage.getItem("termdock.federation.connections.v1")||"[]"),n=Array.isArray(r)?r.find(o=>o?.targetPeerId===e):void 0;return n&&typeof n.url=="string"&&typeof n.targetPeerId=="string"?{...n,serviceName:n.label||n.serviceName}:null}const t=JSON.parse(sessionStorage.getItem(sr)??localStorage.getItem(sr)??"null");return t&&typeof t.url=="string"&&typeof t.targetPeerId=="string"?t:null}catch{return null}}let bs=ig();const Lr=bs?.targetPeerId??"unpaired";function Br(){return bs}function ku(t){if(bs=t,$n)return;const e=JSON.stringify(t);sessionStorage.setItem(sr,e),localStorage.setItem(sr,e)}function ag(){bs=null,!$n&&(localStorage.removeItem(sr),sessionStorage.removeItem(sr),localStorage.removeItem(za))}function Bn(t,e=Lr){return sg.has(t)||t.startsWith("termdock-secure-")?t:`termdock-service:${e}:${t}`}function cg(t){if(!(!co||!zs))try{if(co.call(localStorage,Yc))return;zs.call(localStorage,Yc,t);for(const r of[localStorage,sessionStorage]){const n=Array.from({length:r.length},(o,s)=>r.key(s)).filter(o=>!!o);for(const o of n){if(o.startsWith("termdock-service:")||Bn(o,t)===o)continue;const s=Bn(o,t),i=co.call(r,o);i!==null&&co.call(r,s)===null&&zs.call(r,s,i)}}}catch{}}let Zc=!1;function lg(){if(Zc||typeof Storage>"u")return;Zc=!0;const t=Storage.prototype.getItem,e=Storage.prototype.setItem,r=Storage.prototype.removeItem;Storage.prototype.getItem=function(n){return t.call(this,Bn(String(n)))},Storage.prototype.setItem=function(n,o){e.call(this,Bn(String(n)),o)},Storage.prototype.removeItem=function(n){r.call(this,Bn(String(n)))}}lg();const Jc={pending:0,failed:1,expired:1,delivered:2,read:3},lo=32768,$o="remote:";function ut(t,e){return e.startsWith($o)?e:`${$o}${encodeURIComponent(t)}:${encodeURIComponent(e)}`}function qe(t){if(!t.startsWith($o))return null;const e=t.slice($o.length).split(":");if(e.length!==2)return null;try{return{origin:decodeURIComponent(e[0]),id:decodeURIComponent(e[1])}}catch{return null}}function Qc(t,e){const r=qe(e);return r?.origin===t?r.id:e}function uo(t,e){return{...t,fromSessionId:t.fromSessionId?e(t.fromSessionId):null,toSessionId:e(t.toSessionId)}}class dg{constructor(e){this.services=e}services;snapshots=new Map;reachable=new Set;groups=new Map;messages=new Map;sessions=new Map;diagnostics=new Map;serviceErrors=new Map;inFlight=null;catalogInFlight=null;async refresh(){return this.inFlight?this.inFlight:(this.inFlight=this.synchronize().finally(()=>{this.inFlight=null}),this.inFlight)}async refreshCatalog(){return this.catalogInFlight?this.catalogInFlight:(this.catalogInFlight=this.discover().finally(()=>{this.catalogInFlight=null}),this.catalogInFlight)}async discover(){const e=this.services();this.serviceErrors.clear();const r=await Promise.all(e.map(async n=>{try{const o=await n.request("/collaboration-federation");if(!Array.isArray(o.groups)||!Array.isArray(o.sessions)||!Array.isArray(o.messages))throw new Error("协作目录响应无效,请更新服务");return{service:n,data:o}}catch(o){return this.serviceErrors.set(n.origin,o instanceof Error?o.message.slice(0,300):"协作目录请求失败"),null}}));this.reachable.clear();for(const n of r){if(!n)continue;const{service:o,data:s}=n;for(const[i,a]of Object.entries(s.transportDiagnostics??{}))(!this.diagnostics.has(i)||a.checked_at>this.diagnostics.get(i).checked_at)&&this.diagnostics.set(i,a);this.reachable.add(o.origin),this.snapshots.set(o.origin,s);for(const i of s.groups){const a={...i,sessionIds:i.sessionIds.map(l=>ut(o.origin,l))},c=this.groups.get(i.id);(!c||a.updatedAt>c.updatedAt)&&this.groups.set(i.id,a)}for(const i of s.messages)this.mergeMessage(uo(i,a=>ut(o.origin,a)))}this.sessions.clear();for(const n of this.groups.values())for(const o of n.remoteSessions??[])this.sessions.set(o.sessionId,{...o,serviceConnected:!1,status:"offline",serviceCheckedAt:Date.now()});for(const[n,o]of this.snapshots){const s=this.reachable.has(n);for(const i of o.sessions){const a=ut(n,i.sessionId);this.sessions.set(a,{...i,sessionId:a,serviceOrigin:n,serviceLabel:e.find(c=>c.origin===n)?.label??n,serviceConnected:s,serviceCheckedAt:Date.now(),status:s?i.status:"offline"})}}}async synchronize(){await this.refreshCatalog();const e=this.services();for(const r of this.messages.values()){const n=qe(r.toSessionId)?.origin;if(r.status==="pending"&&n&&!this.reachable.has(n)){const o=this.diagnostics.get(r.id);this.diagnostics.set(r.id,{...o,relay_online:!0,peer_reachable:!1,attempt_count:o?.attempt_count??0,next_retry_at:Date.now()+2e3,last_error:"PEER_UNREACHABLE",checked_at:Date.now()})}}await Promise.all(e.filter(r=>this.reachable.has(r.origin)).map(async r=>{for(const n of this.groups.values())if(!(!this.snapshots.get(r.origin)?.groups.some(s=>s.id===n.id)&&!n.sessionIds.some(s=>qe(s)?.origin===r.origin)))try{await this.push(r,n)}catch{this.reachable.delete(r.origin)}})),await Promise.all(e.filter(r=>this.reachable.has(r.origin)).map(async r=>{if(!((this.snapshots.get(r.origin)?.protocolVersion??1)<2))for(const n of this.groups.values()){if(n.deleted||!n.sessionIds.some(s=>qe(s)?.origin===r.origin))continue;const o=[...this.diagnostics].filter(([s])=>this.messages.get(s)?.groupId===n.id).map(([s,i])=>({message_id:s,diagnostic:i,...this.messages.get(s)?.status==="failed"?{failure_reason:this.messages.get(s)?.failureReason}:{}}));if(o.length)try{await r.request("/collaboration-federation","POST",{group:this.groupForService(n,r.origin),messages:[],transport:o})}catch{}}}))}mergeMessage(e){const r=this.messages.get(e.id),n=Jc;if((!r||n[e.status]>n[r.status])&&this.messages.set(e.id,e),this.messages.size>2e3){const o=[...this.messages.values()].find(s=>s.status!=="pending"&&s.status!=="failed");o&&this.messages.delete(o.id)}}groupForService(e,r){const n=e.sessionIds.filter(o=>qe(o)?.origin!==r).map(o=>{const s=qe(o),i=this.sessions.get(o);return{sessionId:o,name:i?.name??s.id,cwd:i?.cwd??"",status:i?.status??"offline",capability:i?.capability??"",currentTask:i?.currentTask??"",updatedAt:i?.updatedAt??0,agent:i?.agent??null,backendSessionId:null,agentNativeSessionId:null,serviceOrigin:s.origin,serviceLabel:i?.serviceLabel??s.origin,serviceConnected:this.reachable.has(s.origin),serviceCheckedAt:Date.now()}});return{...e,sessionIds:e.sessionIds.map(o=>Qc(r,o)),remoteSessions:n}}async push(e,r){const n=Jc,o=new Map((this.snapshots.get(e.origin)?.messages??[]).map(i=>[i.id,i])),s=[...this.messages.values()].filter(i=>i.groupId===r.id&&(!o.has(i.id)||n[i.status]>n[o.get(i.id).status])).map(i=>uo(i,a=>Qc(e.origin,a)));if(!s.length){await e.request("/collaboration-federation","POST",{group:this.groupForService(r,e.origin),messages:[]});return}for(const i of s){const a=this.messages.get(i.id),c=qe(a.toSessionId)?.origin===e.origin,l=this.diagnostics.get(i.id);if(c&&l?.next_retry_at&&l.next_retry_at>Date.now()&&l.last_error!=="PEER_UNREACHABLE")continue;const d={relay_online:!0,peer_reachable:!0,attempt_count:(l?.attempt_count??0)+(c?1:0),next_retry_at:null,last_error:null,checked_at:Date.now(),fragments_sent:0,fragments_total:0},u=this.snapshots.get(e.origin)?.protocolVersion??1;if(u<2&&(String(i.content??"").length>2e4||i.responseKind||i.task||i.metadata||i.expiresAt||i.status==="failed"||i.status==="expired")){c&&(this.messages.set(i.id,{...a,status:"failed",failureReason:"PEER_UPGRADE_REQUIRED"}),this.diagnostics.set(i.id,{...d,last_error:"PEER_UPGRADE_REQUIRED"}));continue}try{const f=new TextEncoder().encode(JSON.stringify(i));if(u>=2&&f.length>lo&&!o.has(i.id)){const h=Math.ceil(f.length/lo),g=Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",f)),m=>m.toString(16).padStart(2,"0")).join("");d.fragments_total=h;for(let m=0;m<h;m++){const y=await e.request("/collaboration-federation","POST",{group:this.groupForService(r,e.origin),messages:[],fragments:[{message_id:i.id,group_id:r.id,index:m,total:h,sha256:g,data:btoa(String.fromCharCode(...f.subarray(m*lo,(m+1)*lo)))}]}),w=y.fragmentReceipts?.find(I=>I.message_id===i.id);if(!w||m===h-1&&!w.complete)throw new Error("FRAGMENT_ACK_MISSING");d.fragments_sent=w.received;for(const I of y.messages??[])this.mergeMessage(uo(I,v=>ut(e.origin,v)));if(c){this.diagnostics.set(i.id,{...d,checked_at:Date.now()});const I=this.services().find(v=>v.origin===qe(a.fromSessionId??"")?.origin);I&&I.origin!==e.origin&&(this.snapshots.get(I.origin)?.protocolVersion??1)>=2&&await I.request("/collaboration-federation","POST",{group:this.groupForService(r,I.origin),messages:[],transport:[{message_id:i.id,diagnostic:d}]}).catch(()=>{})}}}else{const h=await e.request("/collaboration-federation","POST",{group:this.groupForService(r,e.origin),messages:[i]});if(!(h.messages??[]).some(g=>g.id===i.id))throw new Error("PEER_REJECTED_MESSAGE");for(const g of h.messages??[])this.mergeMessage(uo(g,m=>ut(e.origin,m)))}c&&this.diagnostics.set(i.id,{...d,checked_at:Date.now()})}catch(f){c&&this.diagnostics.set(i.id,{...d,checked_at:Date.now(),peer_reachable:null,last_error:f instanceof Error?f.message.slice(0,300):"RELAY_REQUEST_FAILED",next_retry_at:Date.now()+Math.min(3e4,1e3*2**Math.min(d.attempt_count,5))})}}}async peers(e){if(!this.services().some(r=>r.origin===e))throw new Error("当前服务未连接");return await this.refreshCatalog(),{protocolVersion:2,origin:e,sessions:[...this.sessions.values()].filter(r=>qe(r.sessionId)?.origin!==e),services:[...this.snapshots.keys(),...this.services().map(r=>r.origin)].filter((r,n,o)=>o.indexOf(r)===n).map(r=>({origin:r,label:this.services().find(n=>n.origin===r)?.label??r,connected:this.reachable.has(r),error:this.serviceErrors.get(r)}))}}async list(e){const r=this.services().find(s=>s.origin===e);if(!r)throw new Error("当前服务未连接");const[n,o]=await Promise.all([this.peers(e),r.request("/collaboration-groups")]);return{groups:o.groups,sessions:[...n.sessions,...o.sessions]}}async save(e,r){await this.refreshCatalog();const n=this.services().find(d=>d.origin===e);if(!n)throw new Error("当前服务未连接");const o=await n.request("/collaboration-groups"),s=r.id?o.groups.find(d=>d.id===r.id):void 0;if(r.id&&!s)throw new Error("协作组已删除,请刷新列表");if(s&&r.expectedUpdatedAt!==void 0&&r.expectedUpdatedAt!==s.updatedAt)throw new Error("协作组已被修改,请重新打开成员管理后再保存");for(const d of this.sessions.keys())qe(d)?.origin===e&&this.sessions.delete(d);for(const d of o.sessions){const u=ut(e,d.sessionId);this.sessions.set(u,{...d,sessionId:u,serviceOrigin:e,serviceLabel:n.label,serviceConnected:!0})}if(!r.id?.startsWith("cross-")&&!r.sessionIds.some(d=>qe(d)))return n.request("/collaboration-groups","POST",r);if(!this.reachable.has(e))throw new Error("当前服务需要升级 Termdock 后才能跨服务组队");const i=[...new Set(r.sessionIds.map(d=>ut(e,d)))],a=new Set(s?.sessionIds.map(d=>ut(e,d))??[]);if(!r.name?.trim()||i.length<2||i.some(d=>!a.has(d)&&(!this.sessions.has(d)||!this.reachable.has(qe(d).origin))))throw new Error("所选成员已变化或服务不可达,请刷新后重新选择;尚未保存任何修改");const c=s?.federated?{...s,sessionIds:s.sessionIds.map(d=>ut(e,d))}:void 0,l={id:c?.id??`cross-${crypto.randomUUID()}`,name:r.name.trim(),sessionIds:i,createdAt:c?.createdAt??Date.now(),updatedAt:Math.max(Date.now(),(c?.updatedAt??0)+1),federated:!0};if(s&&!s.federated){if(o.capabilities?.groupPromotion!==1)throw new Error("当前服务需要升级后才能将已有组转换为跨服务组;原组和记录均未修改");const d=await n.request(`/collaboration-groups/${encodeURIComponent(s.id)}/promote`,"POST",{group:this.groupForService(l,e),expectedUpdatedAt:r.expectedUpdatedAt??s.updatedAt});l.updatedAt=d.group.updatedAt,l.createdAt=d.group.createdAt}else await n.request("/collaboration-federation","POST",{group:this.groupForService(l,e),messages:[],...c?{expectedUpdatedAt:r.expectedUpdatedAt??c.updatedAt}:{}});return this.groups.set(l.id,l),{group:this.groupForService(l,e)}}async remove(e,r){const n=this.services().find(o=>o.origin===e);if(!n)throw new Error("当前服务未连接");await n.request(`/collaboration-groups/${encodeURIComponent(r)}`,"DELETE")}}const vs="termdock.federation.connections.v1",Yi="termdock:services-changed",Va="termdock-secure-removed-services",Ho=t=>[t.id,t.targetPeerId,t.serviceOrigin||t.url].filter(e=>!!e);function Wa(){try{const t=JSON.parse(localStorage.getItem(Va)||"[]");return Array.isArray(t)?t.filter(e=>typeof e=="string"):[]}catch{return[]}}function Le(t){const e=t.trim();if(!e)throw new Error("请输入服务地址。");const r=new URL(/^[a-z][a-z\d+.-]*:\/\//i.test(e)?e:`https://${e}`);r.protocol==="wss:"&&(r.protocol="https:"),r.protocol==="ws:"&&(r.protocol="http:");const n=["localhost","127.0.0.1","[::1]"].includes(r.hostname);if(!["https:","http:"].includes(r.protocol)||r.protocol==="http:"&&!n)throw new Error("请使用 HTTPS 服务地址。");if(r.username||r.password||r.search||r.hash||!["/","/api/federation/secure"].includes(r.pathname))throw new Error("请输入服务首页地址,不要包含账号或额外参数。");return r.origin}function xs(t){if(!t||typeof t!="object")return;const e=t;if(typeof e.url=="string")try{const r=Le(e.url),n=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(r).host;return{id:typeof e.id=="string"&&e.id?e.id:n||r,url:r,label:o,...n?{targetPeerId:n}:{},...typeof e.serviceOrigin=="string"?{serviceOrigin:Le(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:Le(s.url),targetPeerId:s.targetPeerId}]:[]}catch{return[]}})}:{}}}catch{return}}function wt(t,e){return t.targetPeerId&&e.targetPeerId?t.targetPeerId===e.targetPeerId:(t.serviceOrigin||t.url)===(e.serviceOrigin||e.url)}function Iu(t){const e=[];for(const r of t){const n=e.findIndex(o=>wt(o,r));n<0?e.push(r):e[n]={...e[n],...r,id:e[n].id}}return e}function Yn(){return typeof window>"u"?void 0:window.termdockDesktop}function Ht(){try{const t=JSON.parse(localStorage.getItem(vs)||"[]");return Array.isArray(t)?Iu(t.map(xs).filter(e=>!!e)):[]}catch{return[]}}function Cu(t){localStorage.setItem(vs,JSON.stringify(t.map(e=>({...e,serviceName:e.label})))),window.dispatchEvent(new Event(Yi))}let dn;async function We(){const t=Yn();if(!t?.serviceConnections||!t.saveServiceConnection)return Ht();if(dn)return dn;dn=(async()=>{let e=await t.serviceConnections();const r=Ht();for(const n of r)e.some(o=>wt(o,n))||(e=await(t.importServiceConnection||t.saveServiceConnection)(n));return r.length&&localStorage.removeItem(vs),e})();try{return await dn}finally{dn=void 0}}async function Et(t){const e=xs(t);if(!e)throw new Error("服务地址无效。");const r=Yn();if(r?.saveServiceConnection)return r.saveServiceConnection(e);const n=Ht(),o=n.find(a=>a.id===e.id||wt(a,e)),s=new Set([...Ho(e),...o?Ho(o):[]]);localStorage.setItem(Va,JSON.stringify(Wa().filter(a=>!s.has(a))));const i=Iu([...n.filter(a=>a!==o),{...o,...e,id:o?.id||e.id}]);return Cu(i),i}async function ug(t){const e=xs(t);if(!e)throw new Error("服务地址无效。");const r=Yn();if(r?.importServiceConnection)return r.importServiceConnection(e);if(r?.serviceConnections){const n=await r.serviceConnections();return n.some(o=>wt(o,e))?Et(e):n}return Ho(e).some(n=>Wa().includes(n))?Ht():Et(e)}async function fg(t){const e=Yn();if(e?.removeServiceConnection)return e.removeServiceConnection(t);const r=Ht(),n=r.find(s=>s.id===t);n&&localStorage.setItem(Va,JSON.stringify([...new Set([...Wa(),...Ho(n)])].slice(-768)));const o=r.filter(s=>s.id!==t);return Cu(o),o}function Ru(t){const e=n=>{(n.key===vs||n.key===null)&&t()};window.addEventListener(Yi,t),window.addEventListener("storage",e);const r=Yn()?.onServiceConnections?.(t);return()=>{window.removeEventListener(Yi,t),window.removeEventListener("storage",e),r?.()}}class hg extends Error{static name="UnexpectedPeerError";constructor(e="Unexpected Peer"){super(e),this.name="UnexpectedPeerError"}}let pg=class extends Error{static name="InvalidCryptoExchangeError";constructor(e="Invalid crypto exchange"){super(e),this.name="InvalidCryptoExchangeError"}},et=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}};class Tu extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}}class Pu extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}}class gg extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}}class mg extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}}class Ss extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}}const Nu=Symbol.for("@libp2p/peer-id");function wg(t){return typeof t?.handleEvent=="function"}function yg(t){return t===!0||t===!1}function bg(t){return yg(t)?t:t?.capture??!1}function Zi(t){const e={capture:bg(t),once:!!t?.once};return t?.passive!=null&&(e.passive=t?.passive),t?.signal!=null&&(e.signal=t?.signal),e}function el(t,e){return Zi(t).capture===Zi(e).capture}class vg extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){const r=this.#e.get(e);return r==null?0:r.length}addEventListener(e,r,n){const o=Zi(n);if(o?.signal?.aborted===!0)return;const s=l=>{o.once&&this.removeEventListener(e,r,o),wg(r)?r.handleEvent(l):r(l)};let i=this.#e.get(e);if(i==null&&(i=[],this.#e.set(e,i)),i.some(l=>l.callback!==r?!1:el(l.options,o)))return;super.addEventListener(e,s,o);const c=()=>{this.removeEventListener(e,r,o)};o.signal?.addEventListener("abort",c),i.push({callback:r,wrapper:s,options:o,onAbort:c})}removeEventListener(e,r,n){const o=this.#e.get(e);if(o==null){super.removeEventListener(e,r??null,n);return}this.#e.set(e,o.filter(s=>s.callback===r&&el(s.options,n)?(super.removeEventListener(e,s.wrapper,n),s.options?.signal?.removeEventListener("abort",s.onAbort),!1):!0))}safeDispatchEvent(e,r={}){return this.dispatchEvent(new CustomEvent(e,r))}}const xg=Symbol.for("@libp2p/service-capabilities");function Sg(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let r=0;r<t.byteLength;r++)if(t[r]!==e[r])return!1;return!0}function Es(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 Eg(t){return new TextEncoder().encode(t)}function Ag(t){return new TextDecoder().decode(t)}function kg(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),n=0;n<r.length;n++)r[n]=255;for(var o=0;o<t.length;o++){var s=t.charAt(o),i=s.charCodeAt(0);if(r[i]!==255)throw new TypeError(s+" is ambiguous");r[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,y=0,w=0,I=g.length;w!==I&&g[w]===0;)w++,m++;for(var v=(I-w)*d+1>>>0,A=new Uint8Array(v);w!==I;){for(var B=g[w],T=0,N=v-1;(B!==0||T<y)&&N!==-1;N--,T++)B+=256*A[N]>>>0,A[N]=B%a>>>0,B=B/a>>>0;if(B!==0)throw new Error("Non-zero carry");y=T,w++}for(var k=v-y;k!==v&&A[k]===0;)k++;for(var x=c.repeat(m);k<v;++k)x+=t.charAt(A[k]);return x}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 y=0,w=0;g[m]===c;)y++,m++;for(var I=(g.length-m)*l+1>>>0,v=new Uint8Array(I);g[m];){var A=r[g.charCodeAt(m)];if(A===255)return;for(var B=0,T=I-1;(A!==0||B<w)&&T!==-1;T--,B++)A+=a*v[T]>>>0,v[T]=A%256>>>0,A=A/256>>>0;if(A!==0)throw new Error("Non-zero carry");w=B,m++}if(g[m]!==" "){for(var N=I-w;N!==I&&v[N]===0;)N++;for(var k=new Uint8Array(y+(I-N)),x=y;N!==I;)k[x++]=v[N++];return k}}}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 Ig=kg,Cg=Ig;class Rg{name;prefix;baseEncode;constructor(e,r,n){this.name=e,this.prefix=r,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class Tg{name;prefix;baseDecode;prefixCodePoint;constructor(e,r,n){this.name=e,this.prefix=r;const o=r.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}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 Lu(this,e)}}class Pg{decoders;constructor(e){this.decoders=e}or(e){return Lu(this,e)}decode(e){const r=e[0],n=this.decoders[r];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}function Lu(t,e){return new Pg({...t.decoders??{[t.prefix]:t},...e.decoders??{[e.prefix]:e}})}class Ng{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,r,n,o){this.name=e,this.prefix=r,this.baseEncode=n,this.baseDecode=o,this.encoder=new Rg(e,r,n),this.decoder=new Tg(e,r,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}function As({name:t,prefix:e,encode:r,decode:n}){return new Ng(t,e,r,n)}function Zn({name:t,prefix:e,alphabet:r}){const{encode:n,decode:o}=Cg(r,t);return As({prefix:e,name:t,encode:n,decode:s=>Es(o(s))})}function Lg(t,e,r,n){let o=t.length;for(;t[o-1]==="=";)--o;const s=new Uint8Array(o*r/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-${n} character`);a=a<<r|d,i+=r,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=r||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function Bg(t,e,r){const n=e[e.length-1]==="=",o=(1<<r)-1;let s="",i=0,a=0;for(let c=0;c<t.length;++c)for(a=a<<8|t[c],i+=8;i>r;)i-=r,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<r-i]),n)for(;(s.length*r&7)!==0;)s+="=";return s}function _g(t){const e={};for(let r=0;r<t.length;++r)e[t[r]]=r;return e}function Ae({name:t,prefix:e,bitsPerChar:r,alphabet:n}){const o=_g(n);return As({prefix:e,name:t,encode(s){return Bg(s,n,r)},decode(s){return Lg(s,o,r,t)}})}const Ne=Zn({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Dg=Zn({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"}),Fg=Object.freeze(Object.defineProperty({__proto__:null,base58btc:Ne,base58flickr:Dg},Symbol.toStringTag,{value:"Module"})),_n=Ae({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Og=Ae({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Mg=Ae({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),jg=Ae({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Ug=Ae({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),$g=Ae({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Hg=Ae({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),qg=Ae({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Kg=Ae({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5}),zg=Object.freeze(Object.defineProperty({__proto__:null,base32:_n,base32hex:Ug,base32hexpad:Hg,base32hexpadupper:qg,base32hexupper:$g,base32pad:Mg,base32padupper:jg,base32upper:Og,base32z:Kg},Symbol.toStringTag,{value:"Module"})),Bo=Zn({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Vg=Zn({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}),Wg=Object.freeze(Object.defineProperty({__proto__:null,base36:Bo,base36upper:Vg},Symbol.toStringTag,{value:"Module"}));var Gg=Bu,tl=128,Xg=-128,Yg=Math.pow(2,31);function Bu(t,e,r){e=e||[],r=r||0;for(var n=r;t>=Yg;)e[r++]=t&255|tl,t/=128;for(;t&Xg;)e[r++]=t&255|tl,t>>>=7;return e[r]=t|0,Bu.bytes=r-n+1,e}var Zg=Ji,Jg=128,rl=127;function Ji(t,n){var r=0,n=n||0,o=0,s=n,i,a=t.length;do{if(s>=a)throw Ji.bytes=0,new RangeError("Could not decode varint");i=t[s++],r+=o<28?(i&rl)<<o:(i&rl)*Math.pow(2,o),o+=7}while(i>=Jg);return Ji.bytes=s-n,r}var Qg=Math.pow(2,7),em=Math.pow(2,14),tm=Math.pow(2,21),rm=Math.pow(2,28),nm=Math.pow(2,35),om=Math.pow(2,42),sm=Math.pow(2,49),im=Math.pow(2,56),am=Math.pow(2,63),cm=function(t){return t<Qg?1:t<em?2:t<tm?3:t<rm?4:t<nm?5:t<om?6:t<sm?7:t<im?8:t<am?9:10},lm={encode:Gg,decode:Zg,encodingLength:cm},qo=lm;function Qi(t,e=0){return[qo.decode(t,e),qo.decode.bytes]}function Ko(t,e,r=0){return qo.encode(t,e,r),e}function zo(t){return qo.encodingLength(t)}function Jn(t,e){const r=e.byteLength,n=zo(t),o=n+zo(r),s=new Uint8Array(o+r);return Ko(t,s,0),Ko(r,s,n),s.set(e,o),new Ga(t,r,e,s)}function _u(t){const e=Es(t),[r,n]=Qi(e),[o,s]=Qi(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Ga(r,o,i,e)}function dm(t,e){if(t===e)return!0;{const r=e;return t.code===r.code&&t.size===r.size&&r.bytes instanceof Uint8Array&&Sg(t.bytes,r.bytes)}}class Ga{code;size;digest;bytes;constructor(e,r,n,o){this.code=e,this.size=r,this.digest=n,this.bytes=o}}function nl(t,e){const{bytes:r,version:n}=t;return n===0?fm(r,ea(t),e??Ne.encoder):hm(r,ea(t),e??_n.encoder)}const ol=new WeakMap;function ea(t){const e=ol.get(t);if(e==null){const r=new Map;return ol.set(t,r),r}return e}class ce{code;version;multihash;bytes;"/";constructor(e,r,n,o){this.code=r,this.version=e,this.multihash=n,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:r}=this;if(e!==un)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(r.code!==pm)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return ce.createV0(r)}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:r}=this.multihash,n=Jn(e,r);return ce.createV1(this.code,n)}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 ce.equals(this,e)}static equals(e,r){const n=r;return n!=null&&e.code===n.code&&e.version===n.version&&dm(e.multihash,n.multihash)}toString(e){return nl(this,e)}toJSON(){return{"/":nl(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 r=e;if(r instanceof ce)return r;if(r["/"]!=null&&r["/"]===r.bytes||r.asCID===r){const{version:n,code:o,multihash:s,bytes:i}=r;return new ce(n,o,s,i??sl(n,o,s.bytes))}else if(r[gm]===!0){const{version:n,multihash:o,code:s}=r,i=_u(o);return ce.create(n,s,i)}else return null}static create(e,r,n){if(typeof r!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(r!==un)throw new Error(`Version 0 CID must use dag-pb (code: ${un}) block encoding`);return new ce(e,r,n,n.bytes)}case 1:{const o=sl(e,r,n.bytes);return new ce(e,r,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return ce.create(0,un,e)}static createV1(e,r){return ce.create(1,e,r)}static decode(e){const[r,n]=ce.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return r}static decodeFirst(e){const r=ce.inspectBytes(e),n=r.size-r.multihashSize,o=Es(e.subarray(n,n+r.multihashSize));if(o.byteLength!==r.multihashSize)throw new Error("Incorrect length");const s=o.subarray(r.multihashSize-r.digestSize),i=new Ga(r.multihashCode,r.digestSize,s,o);return[r.version===0?ce.createV0(i):ce.createV1(r.codec,i),e.subarray(r.size)]}static inspectBytes(e){let r=0;const n=()=>{const[u,f]=Qi(e.subarray(r));return r+=f,u};let o=n(),s=un;if(o===18?(o=0,r=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);const i=r,a=n(),c=n(),l=r+c,d=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:d,size:l}}static parse(e,r){const[n,o]=um(e,r),s=ce.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return ea(s).set(n,e),s}}function um(t,e){switch(t[0]){case"Q":{const r=e??Ne;return[Ne.prefix,r.decode(`${Ne.prefix}${t}`)]}case Ne.prefix:{const r=e??Ne;return[Ne.prefix,r.decode(t)]}case _n.prefix:{const r=e??_n;return[_n.prefix,r.decode(t)]}case Bo.prefix:{const r=e??Bo;return[Bo.prefix,r.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 fm(t,e,r){const{prefix:n}=r;if(n!==Ne.prefix)throw Error(`Cannot string encode V0 in ${r.name} encoding`);const o=e.get(n);if(o==null){const s=r.encode(t).slice(1);return e.set(n,s),s}else return o}function hm(t,e,r){const{prefix:n}=r,o=e.get(n);if(o==null){const s=r.encode(t);return e.set(n,s),s}else return o}const un=112,pm=18;function sl(t,e,r){const n=zo(t),o=n+zo(e),s=new Uint8Array(o+r.byteLength);return Ko(t,s,0),Ko(e,s,n),s.set(r,o),s}const gm=Symbol.for("@ipld/js-cid/CID"),Du=0,mm="identity",Fu=Es;function wm(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 Jn(Du,Fu(t))}const Qn={code:Du,name:mm,encode:Fu,digest:wm};function tt(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let r=0;r<t.byteLength;r++)if(t[r]!==e[r])return!1;return!0}function Be(t=0){return new Uint8Array(t)}function At(t=0){return new Uint8Array(t)}function ta(t,e){e==null&&(e=t.reduce((o,s)=>o+s.length,0));const r=At(e);let n=0;for(const o of t)r.set(o,n),n+=o.length;return r}const Ou=Symbol.for("@achingbrain/uint8arraylist");function il(t,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let r=0;for(const n of t){const o=r+n.byteLength;if(e<o)return{buf:n,index:e-r};r=o}throw new RangeError("index is out of bounds")}function fo(t){return!!t?.[Ou]}class re{bufs;length;[Ou]=!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 r=0;for(const n of e)if(n instanceof Uint8Array)r+=n.byteLength,this.bufs.push(n);else if(fo(n)){r+=n.byteLength;for(const o of n.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=r}prepend(...e){this.prependAll(e)}prependAll(e){let r=0;for(const n of e.reverse())if(n instanceof Uint8Array)r+=n.byteLength,this.bufs.unshift(n);else if(fo(n))r+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=r}get(e){const r=il(this.bufs,e);return r.buf[r.index]}set(e,r){const n=il(this.bufs,e);n.buf[n.index]=r}write(e,r=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(r+n,e[n]);else if(fo(e))for(let n=0;n<e.length;n++)this.set(r+n,e.get(n));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,r){const{bufs:n,length:o}=this._subList(e,r);return ta(n,o)}subarray(e,r){const{bufs:n,length:o}=this._subList(e,r);return n.length===1?n[0]:ta(n,o)}sublist(e,r){const{bufs:n,length:o}=this._subList(e,r),s=new re;return s.length=o,s.bufs=n,s}_subList(e,r){if(e=e??0,r=r??this.length,e<0&&(e=this.length+e),r<0&&(r=this.length+r),e<0||r>this.length)throw new RangeError("index is out of bounds");if(e===r)return{bufs:[],length:0};if(e===0&&r===this.length)return{bufs:[...this.bufs],length:this.length};const n=[];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=r>a&&r<=c;if(l&&d){if(e===a&&r===c){n.push(i);break}const u=e-a;n.push(i.subarray(u,u+(r-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(d){if(r===c){n.push(i);break}n.push(i.subarray(0,r-a));break}n.push(i)}return{bufs:n,length:r-e}}indexOf(e,r=0){if(!fo(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');const n=e instanceof Uint8Array?e:e.subarray();if(r=Number(r??0),isNaN(r)&&(r=0),r<0&&(r=this.length+r),r<0&&(r=0),e.length===0)return r>this.length?this.length:r;const o=n.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[n[u]]=u;const a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1;let d;for(let u=r;u<=c;u+=d){d=0;for(let f=l;f>=0;f--){const h=this.get(u+f);if(n[f]!==h){d=Math.max(1,f-a[h]);break}}if(d===0)return u}return-1}getInt8(e){const r=this.subarray(e,e+1);return new DataView(r.buffer,r.byteOffset,r.byteLength).getInt8(0)}setInt8(e,r){const n=At(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,r),this.write(n,e)}getInt16(e,r){const n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,r)}setInt16(e,r,n){const o=Be(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,r,n),this.write(o,e)}getInt32(e,r){const n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,r)}setInt32(e,r,n){const o=Be(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,r,n),this.write(o,e)}getBigInt64(e,r){const n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,r)}setBigInt64(e,r,n){const o=Be(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,r,n),this.write(o,e)}getUint8(e){const r=this.subarray(e,e+1);return new DataView(r.buffer,r.byteOffset,r.byteLength).getUint8(0)}setUint8(e,r){const n=At(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,r),this.write(n,e)}getUint16(e,r){const n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,r)}setUint16(e,r,n){const o=Be(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,r,n),this.write(o,e)}getUint32(e,r){const n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,r)}setUint32(e,r,n){const o=Be(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,r,n),this.write(o,e)}getBigUint64(e,r){const n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,r)}setBigUint64(e,r,n){const o=Be(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,r,n),this.write(o,e)}getFloat32(e,r){const n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,r)}setFloat32(e,r,n){const o=Be(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,r,n),this.write(o,e)}getFloat64(e,r){const n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,r)}setFloat64(e,r,n){const o=Be(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,r,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof re)||e.bufs.length!==this.bufs.length)return!1;for(let r=0;r<this.bufs.length;r++)if(!tt(this.bufs[r],e.bufs[r]))return!1;return!0}static fromUint8Arrays(e,r){const n=new re;return n.bufs=e,r==null&&(r=e.reduce((o,s)=>o+s.byteLength,0)),n.length=r,n}}const ym=Zn({prefix:"9",name:"base10",alphabet:"0123456789"}),bm=Object.freeze(Object.defineProperty({__proto__:null,base10:ym},Symbol.toStringTag,{value:"Module"})),vm=Ae({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),xm=Ae({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4}),Sm=Object.freeze(Object.defineProperty({__proto__:null,base16:vm,base16upper:xm},Symbol.toStringTag,{value:"Module"})),Em=Ae({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1}),Am=Object.freeze(Object.defineProperty({__proto__:null,base2:Em},Symbol.toStringTag,{value:"Module"})),Mu=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),km=Mu.reduce((t,e,r)=>(t[r]=e,t),[]),Im=Mu.reduce((t,e,r)=>{const n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return t[n]=r,t},[]);function Cm(t){return t.reduce((e,r)=>(e+=km[r],e),"")}function Rm(t){const e=[];for(const r of t){const n=r.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${r}`);const o=Im[n];if(o==null)throw new Error(`Non-base256emoji character: ${r}`);e.push(o)}return new Uint8Array(e)}const Tm=As({prefix:"🚀",name:"base256emoji",encode:Cm,decode:Rm}),Pm=Object.freeze(Object.defineProperty({__proto__:null,base256emoji:Tm},Symbol.toStringTag,{value:"Module"})),Nm=Ae({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Lm=Ae({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Bm=Ae({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),_m=Ae({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6}),Dm=Object.freeze(Object.defineProperty({__proto__:null,base64:Nm,base64pad:Lm,base64url:Bm,base64urlpad:_m},Symbol.toStringTag,{value:"Module"})),Fm=Ae({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3}),Om=Object.freeze(Object.defineProperty({__proto__:null,base8:Fm},Symbol.toStringTag,{value:"Module"})),Mm=As({prefix:"\0",name:"identity",encode:t=>Ag(t),decode:t=>Eg(t)}),jm=Object.freeze(Object.defineProperty({__proto__:null,identity:Mm},Symbol.toStringTag,{value:"Module"}));new TextEncoder;new TextDecoder;const Um=20;function $m({name:t,code:e,encode:r,minDigestLength:n,maxDigestLength:o}){return new Hm(t,e,r,n,o)}class Hm{name;code;encode;minDigestLength;maxDigestLength;constructor(e,r,n,o,s){this.name=e,this.code=r,this.encode=n,this.minDigestLength=o??Um,this.maxDigestLength=s}digest(e,r){if(r?.truncate!=null){if(r.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&r.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){const n=this.encode(e);return n instanceof Uint8Array?al(n,this.code,r?.truncate):n.then(o=>al(o,this.code,r?.truncate))}else throw Error("Unknown type, must be binary type")}}function al(t,e,r){if(r!=null&&r!==t.byteLength){if(r>t.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${t.byteLength}`);t=t.subarray(0,r)}return Jn(e,t)}function qm(t){return async e=>new Uint8Array(await crypto.subtle.digest(t,e))}const Xa=$m({name:"sha2-256",code:18,encode:qm("SHA-256")}),cl={...jm,...Am,...Om,...bm,...Sm,...zg,...Wg,...Fg,...Dm,...Pm};function ju(t,e,r,n){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:n}}}const ll=ju("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Vs=ju("ascii","a",t=>{let e="a";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e},t=>{t=t.substring(1);const e=At(t.length);for(let r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}),Uu={utf8:ll,"utf-8":ll,hex:cl.base16,latin1:Vs,ascii:Vs,binary:Vs,...cl};function we(t,e="utf8"){const r=Uu[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return r.decoder.decode(`${r.prefix}${t}`)}function J(t,e="utf8"){const r=Uu[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return r.encoder.encode(t).substring(1)}const Km=parseInt("11111",2),ra=parseInt("10000000",2),zm=parseInt("01111111",2),dl={0:fn,1:fn,2:Vm,3:Xm,4:Ym,5:Gm,6:Wm,16:fn,22:fn,48:fn};function tn(t,e={offset:0}){const r=t[e.offset]&Km;if(e.offset++,dl[r]!=null)return dl[r](t,e);throw new Error("No decoder for tag "+r)}function eo(t,e){let r=0;if((t[e.offset]&ra)===ra){const n=t[e.offset]&zm;let o="0x";e.offset++;for(let s=0;s<n;s++,e.offset++)o+=t[e.offset].toString(16).padStart(2,"0");r=parseInt(o,16)}else r=t[e.offset],e.offset++;return r}function fn(t,e){eo(t,e);const r=[];for(;!(e.offset>=t.byteLength);){const n=tn(t,e);if(n===null)break;r.push(n)}return r}function Vm(t,e){const r=eo(t,e),n=e.offset,o=e.offset+r,s=[];for(let i=n;i<o;i++)i===n&&t[i]===0||s.push(t[i]);return e.offset+=r,Uint8Array.from(s)}function Wm(t,e){const r=eo(t,e),n=e.offset+r,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<n;){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 Gm(t,e){return e.offset++,null}function Xm(t,e){const r=eo(t,e),n=t[e.offset];e.offset++;const o=t.subarray(e.offset,e.offset+r-1);if(e.offset+=r,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function Ym(t,e){const r=eo(t,e),n=t.subarray(e.offset,e.offset+r);return e.offset+=r,n}function Zm(t){let e=t.toString(16);e.length%2===1&&(e="0"+e);const r=new re;for(let n=0;n<e.length;n+=2)r.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return r}function ks(t){if(t.byteLength<128)return Uint8Array.from([t.byteLength]);const e=Zm(t.byteLength);return new re(Uint8Array.from([e.byteLength|ra]),e)}function Me(t){const e=new re,r=128;return(t.subarray()[0]&r)===r&&e.append(Uint8Array.from([0])),e.append(t),new re(Uint8Array.from([2]),ks(e),e)}function Ya(t){const e=Uint8Array.from([0]),r=new re(e,t);return new re(Uint8Array.from([3]),ks(r),r)}function Jm(t){return new re(Uint8Array.from([4]),ks(t),t)}function xt(t,e=48){const r=new re;for(const n of t)r.append(n);return new re(Uint8Array.from([e]),ks(r),r)}async function Qm(t,e,r){const n=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["sign"]);r?.signal?.throwIfAborted();const o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,e.subarray());return r?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function ew(t,e,r,n){const o=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();const s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,r.subarray());return n?.signal?.throwIfAborted(),s}const tw=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),rw=Uint8Array.from([6,5,43,129,4,0,34]),nw=Uint8Array.from([6,5,43,129,4,0,35]),$u={ext:!0,kty:"EC",crv:"P-256"},Hu={ext:!0,kty:"EC",crv:"P-384"},qu={ext:!0,kty:"EC",crv:"P-521"},_r=32,Dr=48,Fr=66;function ow(t){const e=tn(t);return sw(e)}function sw(t){const e=t[1],r=J(e,"base64url"),n=t[2][1][0],o=1;let s,i;if(e.byteLength===_r)return s=J(n.subarray(o,o+_r),"base64url"),i=J(n.subarray(o+_r),"base64url"),new Ws({...$u,key_ops:["sign"],d:r,x:s,y:i});if(e.byteLength===Dr)return s=J(n.subarray(o,o+Dr),"base64url"),i=J(n.subarray(o+Dr),"base64url"),new Ws({...Hu,key_ops:["sign"],d:r,x:s,y:i});if(e.byteLength===Fr)return s=J(n.subarray(o,o+Fr),"base64url"),i=J(n.subarray(o+Fr),"base64url"),new Ws({...qu,key_ops:["sign"],d:r,x:s,y:i});throw new et(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function Ku(t){const e=tn(t);return iw(e)}function iw(t){const e=t[1][1][0],r=1;let n,o;if(e.byteLength===_r*2+1)return n=J(e.subarray(r,r+_r),"base64url"),o=J(e.subarray(r+_r),"base64url"),new _o({...$u,key_ops:["verify"],x:n,y:o});if(e.byteLength===Dr*2+1)return n=J(e.subarray(r,r+Dr),"base64url"),o=J(e.subarray(r+Dr),"base64url"),new _o({...Hu,key_ops:["verify"],x:n,y:o});if(e.byteLength===Fr*2+1)return n=J(e.subarray(r,r+Fr),"base64url"),o=J(e.subarray(r+Fr),"base64url"),new _o({...qu,key_ops:["verify"],x:n,y:o});throw new et(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function aw(t){return xt([Me(Uint8Array.from([1])),Jm(we(t.d??"","base64url")),xt([zu(t.crv)],160),xt([Ya(new re(Uint8Array.from([4]),we(t.x??"","base64url"),we(t.y??"","base64url")))],161)]).subarray()}function cw(t){return xt([Me(Uint8Array.from([1])),xt([zu(t.crv)],160),xt([Ya(new re(Uint8Array.from([4]),we(t.x??"","base64url"),we(t.y??"","base64url")))],161)]).subarray()}function zu(t){if(t==="P-256")return tw;if(t==="P-384")return rw;if(t==="P-521")return nw;throw new et(`Invalid curve ${t}`)}class _o{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=cw(this.jwk)),this._raw}toMultihash(){return Qn.digest(Ns(this))}toCID(){return ce.createV1(114,this.toMultihash())}toString(){return Ne.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}async verify(e,r,n){return ew(this.jwk,r,e,n)}}class Ws{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new _o({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=aw(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}async sign(e,r){return Qm(this.jwk,e,r)}}const Er=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function to(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function na(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function hr(t,...e){if(!to(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 Vu(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");na(t.outputLen),na(t.blockLen)}function Vo(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 lw(t,e){hr(t);const r=e.outputLen;if(t.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)}function Wr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Gs(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function ot(t,e){return t<<32-e|t>>>e}const Wu=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",dw=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function tr(t){if(hr(t),Wu)return t.toHex();let e="";for(let r=0;r<t.length;r++)e+=dw[t[r]];return e}const ft={_0:48,_9:57,A:65,F:70,a:97,f:102};function ul(t){if(t>=ft._0&&t<=ft._9)return t-ft._0;if(t>=ft.A&&t<=ft.F)return t-(ft.A-10);if(t>=ft.a&&t<=ft.f)return t-(ft.a-10)}function Wo(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(Wu)return Uint8Array.fromHex(t);const e=t.length,r=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(r);for(let o=0,s=0;o<r;o++,s+=2){const i=ul(t.charCodeAt(s)),a=ul(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)}n[o]=i*16+a}return n}function uw(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function Za(t){return typeof t=="string"&&(t=uw(t)),hr(t),t}function at(...t){let e=0;for(let n=0;n<t.length;n++){const o=t[n];hr(o),e+=o.length}const r=new Uint8Array(e);for(let n=0,o=0;n<t.length;n++){const s=t[n];r.set(s,o),o+=s.length}return r}class Gu{}function Xu(t){const e=n=>t().update(Za(n)).digest(),r=t();return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=()=>t(),e}function Ja(t=32){if(Er&&typeof Er.getRandomValues=="function")return Er.getRandomValues(new Uint8Array(t));if(Er&&typeof Er.randomBytes=="function")return Uint8Array.from(Er.randomBytes(t));throw new Error("crypto.getRandomValues must be defined")}function fw(t,e,r,n){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,r,n);const o=BigInt(32),s=BigInt(4294967295),i=Number(r>>o&s),a=Number(r&s),c=n?4:0,l=n?0:4;t.setUint32(e+c,i,n),t.setUint32(e+l,a,n)}function hw(t,e,r){return t&e^~t&r}function pw(t,e,r){return t&e^t&r^e&r}let Yu=class extends Gu{constructor(e,r,n,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Gs(this.buffer)}update(e){Vo(this),e=Za(e),hr(e);const{view:r,buffer:n,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=Gs(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(r,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Vo(this),lw(e,this),this.finished=!0;const{buffer:r,view:n,blockLen:o,isLE:s}=this;let{pos:i}=this;r[i++]=128,Wr(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let u=i;u<o;u++)r[u]=0;fw(n,o-8,BigInt(this.length*8),s),this.process(n,0);const a=Gs(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:r}=this;this.digestInto(e);const n=e.slice(0,r);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:r,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%r&&e.buffer.set(n),e}clone(){return this._cloneInto()}};const Tt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ke=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),ho=BigInt(2**32-1),fl=BigInt(32);function gw(t,e=!1){return e?{h:Number(t&ho),l:Number(t>>fl&ho)}:{h:Number(t>>fl&ho)|0,l:Number(t&ho)|0}}function mw(t,e=!1){const r=t.length;let n=new Uint32Array(r),o=new Uint32Array(r);for(let s=0;s<r;s++){const{h:i,l:a}=gw(t[s],e);[n[s],o[s]]=[i,a]}return[n,o]}const hl=(t,e,r)=>t>>>r,pl=(t,e,r)=>t<<32-r|e>>>r,Ar=(t,e,r)=>t>>>r|e<<32-r,kr=(t,e,r)=>t<<32-r|e>>>r,po=(t,e,r)=>t<<64-r|e>>>r-32,go=(t,e,r)=>t>>>r-32|e<<64-r;function ht(t,e,r,n){const o=(e>>>0)+(n>>>0);return{h:t+r+(o/2**32|0)|0,l:o|0}}const ww=(t,e,r)=>(t>>>0)+(e>>>0)+(r>>>0),yw=(t,e,r,n)=>e+r+n+(t/2**32|0)|0,bw=(t,e,r,n)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0),vw=(t,e,r,n,o)=>e+r+n+o+(t/2**32|0)|0,xw=(t,e,r,n,o)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0)+(o>>>0),Sw=(t,e,r,n,o,s)=>e+r+n+o+s+(t/2**32|0)|0,Ew=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]),Pt=new Uint32Array(64);class Aw extends Yu{constructor(e=32){super(64,e,8,!1),this.A=Tt[0]|0,this.B=Tt[1]|0,this.C=Tt[2]|0,this.D=Tt[3]|0,this.E=Tt[4]|0,this.F=Tt[5]|0,this.G=Tt[6]|0,this.H=Tt[7]|0}get(){const{A:e,B:r,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,r,n,o,s,i,a,c]}set(e,r,n,o,s,i,a,c){this.A=e|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,r){for(let u=0;u<16;u++,r+=4)Pt[u]=e.getUint32(r,!1);for(let u=16;u<64;u++){const f=Pt[u-15],h=Pt[u-2],g=ot(f,7)^ot(f,18)^f>>>3,m=ot(h,17)^ot(h,19)^h>>>10;Pt[u]=m+Pt[u-7]+g+Pt[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=ot(a,6)^ot(a,11)^ot(a,25),h=d+f+hw(a,c,l)+Ew[u]+Pt[u]|0,m=(ot(n,2)^ot(n,13)^ot(n,22))+pw(n,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+m|0}n=n+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(n,o,s,i,a,c,l,d)}roundClean(){Wr(Pt)}destroy(){this.set(0,0,0,0,0,0,0,0),Wr(this.buffer)}}const Zu=mw(["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))),kw=Zu[0],Iw=Zu[1],Nt=new Uint32Array(80),Lt=new Uint32Array(80);class Cw extends Yu{constructor(e=64){super(128,e,16,!1),this.Ah=ke[0]|0,this.Al=ke[1]|0,this.Bh=ke[2]|0,this.Bl=ke[3]|0,this.Ch=ke[4]|0,this.Cl=ke[5]|0,this.Dh=ke[6]|0,this.Dl=ke[7]|0,this.Eh=ke[8]|0,this.El=ke[9]|0,this.Fh=ke[10]|0,this.Fl=ke[11]|0,this.Gh=ke[12]|0,this.Gl=ke[13]|0,this.Hh=ke[14]|0,this.Hl=ke[15]|0}get(){const{Ah:e,Al:r,Bh:n,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:y}=this;return[e,r,n,o,s,i,a,c,l,d,u,f,h,g,m,y]}set(e,r,n,o,s,i,a,c,l,d,u,f,h,g,m,y){this.Ah=e|0,this.Al=r|0,this.Bh=n|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=y|0}process(e,r){for(let v=0;v<16;v++,r+=4)Nt[v]=e.getUint32(r),Lt[v]=e.getUint32(r+=4);for(let v=16;v<80;v++){const A=Nt[v-15]|0,B=Lt[v-15]|0,T=Ar(A,B,1)^Ar(A,B,8)^hl(A,B,7),N=kr(A,B,1)^kr(A,B,8)^pl(A,B,7),k=Nt[v-2]|0,x=Lt[v-2]|0,S=Ar(k,x,19)^po(k,x,61)^hl(k,x,6),R=kr(k,x,19)^go(k,x,61)^pl(k,x,6),P=bw(N,R,Lt[v-7],Lt[v-16]),b=vw(P,T,S,Nt[v-7],Nt[v-16]);Nt[v]=b|0,Lt[v]=P|0}let{Ah:n,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:y,Hh:w,Hl:I}=this;for(let v=0;v<80;v++){const A=Ar(u,f,14)^Ar(u,f,18)^po(u,f,41),B=kr(u,f,14)^kr(u,f,18)^go(u,f,41),T=u&h^~u&m,N=f&g^~f&y,k=xw(I,B,N,Iw[v],Lt[v]),x=Sw(k,w,A,T,kw[v],Nt[v]),S=k|0,R=Ar(n,o,28)^po(n,o,34)^po(n,o,39),P=kr(n,o,28)^go(n,o,34)^go(n,o,39),b=n&s^n&a^s&a,E=o&i^o&c^i&c;w=m|0,I=y|0,m=h|0,y=g|0,h=u|0,g=f|0,{h:u,l:f}=ht(l|0,d|0,x|0,S|0),l=a|0,d=c|0,a=s|0,c=i|0,s=n|0,i=o|0;const C=ww(S,P,E);n=yw(C,x,R,b),o=C|0}({h:n,l:o}=ht(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=ht(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=ht(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=ht(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=ht(this.Eh|0,this.El|0,u|0,f|0),{h,l:g}=ht(this.Fh|0,this.Fl|0,h|0,g|0),{h:m,l:y}=ht(this.Gh|0,this.Gl|0,m|0,y|0),{h:w,l:I}=ht(this.Hh|0,this.Hl|0,w|0,I|0),this.set(n,o,s,i,a,c,l,d,u,f,h,g,m,y,w,I)}roundClean(){Wr(Nt,Lt)}destroy(){Wr(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const Ju=Xu(()=>new Aw),Rw=Xu(()=>new Cw);const Qa=BigInt(0),oa=BigInt(1);function ir(t,e=""){if(typeof t!="boolean"){const r=e&&`"${e}"`;throw new Error(r+"expected boolean, got type="+typeof t)}return t}function Je(t,e,r=""){const n=to(t),o=t?.length,s=e!==void 0;if(!n||s&&o!==e){const i=r&&`"${r}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof t}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return t}function mo(t){const e=t.toString(16);return e.length&1?"0"+e:e}function Qu(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?Qa:BigInt("0x"+t)}function Is(t){return Qu(tr(t))}function Hn(t){return hr(t),Qu(tr(Uint8Array.from(t).reverse()))}function ec(t,e){return Wo(t.toString(16).padStart(e*2,"0"))}function ef(t,e){return ec(t,e).reverse()}function fe(t,e,r){let n;if(typeof e=="string")try{n=Wo(e)}catch(s){throw new Error(t+" must be hex string or Uint8Array, cause: "+s)}else if(to(e))n=Uint8Array.from(e);else throw new Error(t+" must be hex string or Uint8Array");const o=n.length;if(typeof r=="number"&&o!==r)throw new Error(t+" of length "+r+" expected, got "+o);return n}function gl(t){return Uint8Array.from(t)}const Xs=t=>typeof t=="bigint"&&Qa<=t;function Tw(t,e,r){return Xs(t)&&Xs(e)&&Xs(r)&&e<=t&&t<r}function sa(t,e,r,n){if(!Tw(e,r,n))throw new Error("expected valid "+t+": "+r+" <= n < "+n+", got "+e)}function tf(t){let e;for(e=0;t>Qa;t>>=oa,e+=1);return e}const ro=t=>(oa<<BigInt(t))-oa;function Pw(t,e,r){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 r!="function")throw new Error("hmacFn must be a function");const n=h=>new Uint8Array(h),o=h=>Uint8Array.of(h);let s=n(t),i=n(t),a=0;const c=()=>{s.fill(1),i.fill(0),a=0},l=(...h)=>r(i,s,...h),d=(h=n(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 at(...g)};return(h,g)=>{c(),d(h);let m;for(;!(m=g(u()));)d();return c(),m}}function no(t,e,r={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function n(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])=>n(o,s,!1)),Object.entries(r).forEach(([o,s])=>n(o,s,!0))}function Go(t){const e=new WeakMap;return(r,...n)=>{const o=e.get(r);if(o!==void 0)return o;const s=t(r,...n);return e.set(r,s),s}}const _e=BigInt(0),Ee=BigInt(1),Yt=BigInt(2),rf=BigInt(3),nf=BigInt(4),of=BigInt(5),Nw=BigInt(7),sf=BigInt(8),Lw=BigInt(9),af=BigInt(16);function ye(t,e){const r=t%e;return r>=_e?r:e+r}function ue(t,e,r){let n=t;for(;e-- >_e;)n*=n,n%=r;return n}function ml(t,e){if(t===_e)throw new Error("invert: expected non-zero number");if(e<=_e)throw new Error("invert: expected positive modulus, got "+e);let r=ye(t,e),n=e,o=_e,s=Ee;for(;r!==_e;){const a=n/r,c=n%r,l=o-s*a;n=r,r=c,o=s,s=l}if(n!==Ee)throw new Error("invert: does not exist");return ye(o,e)}function tc(t,e,r){if(!t.eql(t.sqr(e),r))throw new Error("Cannot find square root")}function cf(t,e){const r=(t.ORDER+Ee)/nf,n=t.pow(e,r);return tc(t,n,e),n}function Bw(t,e){const r=(t.ORDER-of)/sf,n=t.mul(e,Yt),o=t.pow(n,r),s=t.mul(e,o),i=t.mul(t.mul(s,Yt),o),a=t.mul(s,t.sub(i,t.ONE));return tc(t,a,e),a}function _w(t){const e=pr(t),r=lf(t),n=r(e,e.neg(e.ONE)),o=r(e,n),s=r(e,e.neg(n)),i=(t+Nw)/af;return(a,c)=>{let l=a.pow(c,i),d=a.mul(l,n);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),y=a.cmov(l,d,m);return tc(a,y,c),y}}function lf(t){if(t<rf)throw new Error("sqrt is not defined for small field");let e=t-Ee,r=0;for(;e%Yt===_e;)e/=Yt,r++;let n=Yt;const o=pr(t);for(;wl(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return cf;let s=o.pow(n,e);const i=(e+Ee)/Yt;return function(c,l){if(c.is0(l))return l;if(wl(c,l)!==1)throw new Error("Cannot find square root");let d=r,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 y=Ee<<BigInt(d-g-1),w=c.pow(u,y);d=g,u=c.sqr(w),f=c.mul(f,u),h=c.mul(h,w)}return h}}function Dw(t){return t%nf===rf?cf:t%sf===of?Bw:t%af===Lw?_w(t):lf(t)}const Fw=(t,e)=>(ye(t,e)&Ee)===Ee,Ow=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Mw(t){const e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},r=Ow.reduce((n,o)=>(n[o]="function",n),e);return no(t,r),t}function jw(t,e,r){if(r<_e)throw new Error("invalid exponent, negatives unsupported");if(r===_e)return t.ONE;if(r===Ee)return e;let n=t.ONE,o=e;for(;r>_e;)r&Ee&&(n=t.mul(n,o)),o=t.sqr(o),r>>=Ee;return n}function df(t,e,r=!1){const n=new Array(e.length).fill(r?t.ZERO:void 0),o=e.reduce((i,a,c)=>t.is0(a)?i:(n[c]=i,t.mul(i,a)),t.ONE),s=t.inv(o);return e.reduceRight((i,a,c)=>t.is0(a)?i:(n[c]=t.mul(i,n[c]),t.mul(i,a)),s),n}function wl(t,e){const r=(t.ORDER-Ee)/Yt,n=t.pow(e,r),o=t.eql(n,t.ONE),s=t.eql(n,t.ZERO),i=t.eql(n,t.neg(t.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function uf(t,e){e!==void 0&&na(e);const r=e!==void 0?e:t.toString(2).length,n=Math.ceil(r/8);return{nBitLength:r,nByteLength:n}}function pr(t,e,r=!1,n={}){if(t<=_e)throw new Error("invalid field: expected ORDER > 0, got "+t);let o,s,i=!1,a;if(typeof e=="object"&&e!=null){if(n.sqrt||r)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"&&(r=f.isLE),typeof f.modFromBytes=="boolean"&&(i=f.modFromBytes),a=f.allowedLengths}else typeof e=="number"&&(o=e),n.sqrt&&(s=n.sqrt);const{nBitLength:c,nByteLength:l}=uf(t,o);if(l>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let d;const u=Object.freeze({ORDER:t,isLE:r,BITS:c,BYTES:l,MASK:ro(c),ZERO:_e,ONE:Ee,allowedLengths:a,create:f=>ye(f,t),isValid:f=>{if(typeof f!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof f);return _e<=f&&f<t},is0:f=>f===_e,isValidNot0:f=>!u.is0(f)&&u.isValid(f),isOdd:f=>(f&Ee)===Ee,neg:f=>ye(-f,t),eql:(f,h)=>f===h,sqr:f=>ye(f*f,t),add:(f,h)=>ye(f+h,t),sub:(f,h)=>ye(f-h,t),mul:(f,h)=>ye(f*h,t),pow:(f,h)=>jw(u,f,h),div:(f,h)=>ye(f*ml(h,t),t),sqrN:f=>f*f,addN:(f,h)=>f+h,subN:(f,h)=>f-h,mulN:(f,h)=>f*h,inv:f=>ml(f,t),sqrt:s||(f=>(d||(d=Dw(t)),d(u,f))),toBytes:f=>r?ef(f,l):ec(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,r?0:m.length-f.length),f=m}if(f.length!==l)throw new Error("Field.fromBytes: expected "+l+" bytes, got "+f.length);let g=r?Hn(f):Is(f);if(i&&(g=ye(g,t)),!h&&!u.isValid(g))throw new Error("invalid field element: outside of range 0..ORDER");return g},invertBatch:f=>df(u,f),cmov:(f,h,g)=>g?h:f});return Object.freeze(u)}function ff(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 hf(t){const e=ff(t);return e+Math.ceil(e/2)}function Uw(t,e,r=!1){const n=t.length,o=ff(e),s=hf(e);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);const i=r?Hn(t):Is(t),a=ye(i,e-Ee)+Ee;return r?ef(a,o):ec(a,o)}const Gr=BigInt(0),Zt=BigInt(1);function Xo(t,e){const r=e.negate();return t?r:e}function Jt(t,e){const r=df(t.Fp,e.map(n=>n.Z));return e.map((n,o)=>t.fromAffine(n.toAffine(r[o])))}function pf(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function Ys(t,e){pf(t,e);const r=Math.ceil(e/t)+1,n=2**(t-1),o=2**t,s=ro(t),i=BigInt(t);return{windows:r,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function yl(t,e,r){const{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=r;let a=Number(t&o),c=t>>i;a>n&&(a-=s,c+=Zt);const l=e*n,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 $w(t,e){if(!Array.isArray(t))throw new Error("array expected");t.forEach((r,n)=>{if(!(r instanceof e))throw new Error("invalid point at index "+n)})}function Hw(t,e){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((r,n)=>{if(!e.isValid(r))throw new Error("invalid scalar at index "+n)})}const Zs=new WeakMap,gf=new WeakMap;function Js(t){return gf.get(t)||1}function bl(t){if(t!==Gr)throw new Error("invalid wNAF")}class mf{constructor(e,r){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=r}_unsafeLadder(e,r,n=this.ZERO){let o=e;for(;r>Gr;)r&Zt&&(n=n.add(o)),o=o.double(),r>>=Zt;return n}precomputeWindow(e,r){const{windows:n,windowSize:o}=Ys(r,this.bits),s=[];let i=e,a=i;for(let c=0;c<n;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,r,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE;const i=Ys(e,this.bits);for(let a=0;a<i.windows;a++){const{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:f,offsetF:h}=yl(n,a,i);n=c,d?s=s.add(Xo(f,r[h])):o=o.add(Xo(u,r[l]))}return bl(n),{p:o,f:s}}wNAFUnsafe(e,r,n,o=this.ZERO){const s=Ys(e,this.bits);for(let i=0;i<s.windows&&n!==Gr;i++){const{nextN:a,offset:c,isZero:l,isNeg:d}=yl(n,i,s);if(n=a,!l){const u=r[c];o=o.add(d?u.negate():u)}}return bl(n),o}getPrecomputes(e,r,n){let o=Zs.get(r);return o||(o=this.precomputeWindow(r,e),e!==1&&(typeof n=="function"&&(o=n(o)),Zs.set(r,o))),o}cached(e,r,n){const o=Js(e);return this.wNAF(o,this.getPrecomputes(o,e,n),r)}unsafe(e,r,n,o){const s=Js(e);return s===1?this._unsafeLadder(e,r,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,n),r,o)}createCache(e,r){pf(r,this.bits),gf.set(e,r),Zs.delete(e)}hasCache(e){return Js(e)!==1}}function qw(t,e,r,n){let o=e,s=t.ZERO,i=t.ZERO;for(;r>Gr||n>Gr;)r&Zt&&(s=s.add(o)),n&Zt&&(i=i.add(o)),o=o.double(),r>>=Zt,n>>=Zt;return{p1:s,p2:i}}function wf(t,e,r,n){$w(r,t),Hw(n,e);const o=r.length,s=n.length;if(o!==s)throw new Error("arrays of points and scalars must have equal length");const i=t.ZERO,a=tf(BigInt(o));let c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);const l=ro(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 y=n[m],w=Number(y>>BigInt(h)&l);d[w]=d[w].add(r[m])}let g=i;for(let m=d.length-1,y=i;m>0;m--)y=y.add(d[m]),g=g.add(y);if(f=f.add(g),h!==0)for(let m=0;m<c;m++)f=f.double()}return f}function vl(t,e,r){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Mw(e),e}else return pr(t,{isLE:r})}function yf(t,e,r={},n){if(n===void 0&&(n=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>Gr))throw new Error(`CURVE.${c} must be positive bigint`)}const o=vl(e.p,r.Fp,n),s=vl(e.n,r.Fn,n),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 Bt=BigInt(0),be=BigInt(1),Qs=BigInt(2),Kw=BigInt(8);function zw(t,e,r,n){const o=t.sqr(r),s=t.sqr(n),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 Vw(t,e={}){const r=yf("edwards",t,e,e.FpFnLE),{Fp:n,Fn:o}=r;let s=r.CURVE;const{h:i}=s;no(e,{},{uvRatio:"function"});const a=Qs<<BigInt(o.BYTES*8)-be,c=y=>n.create(y),l=e.uvRatio||((y,w)=>{try{return{isValid:!0,value:n.sqrt(n.div(y,w))}}catch{return{isValid:!1,value:Bt}}});if(!zw(n,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function d(y,w,I=!1){const v=I?be:Bt;return sa("coordinate "+y,w,v,a),w}function u(y){if(!(y instanceof g))throw new Error("ExtendedPoint expected")}const f=Go((y,w)=>{const{X:I,Y:v,Z:A}=y,B=y.is0();w==null&&(w=B?Kw:n.inv(A));const T=c(I*w),N=c(v*w),k=n.mul(A,w);if(B)return{x:Bt,y:be};if(k!==be)throw new Error("invZ was invalid");return{x:T,y:N}}),h=Go(y=>{const{a:w,d:I}=s;if(y.is0())throw new Error("bad point: ZERO");const{X:v,Y:A,Z:B,T}=y,N=c(v*v),k=c(A*A),x=c(B*B),S=c(x*x),R=c(N*w),P=c(x*c(R+k)),b=c(S+c(I*c(N*k)));if(P!==b)throw new Error("bad point: equation left != right (1)");const E=c(v*A),C=c(B*T);if(E!==C)throw new Error("bad point: equation left != right (2)");return!0});class g{constructor(w,I,v,A){this.X=d("x",w),this.Y=d("y",I),this.Z=d("z",v,!0),this.T=d("t",A),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:v}=w||{};return d("x",I),d("y",v),new g(I,v,be,c(I*v))}static fromBytes(w,I=!1){const v=n.BYTES,{a:A,d:B}=s;w=gl(Je(w,v,"point")),ir(I,"zip215");const T=gl(w),N=w[v-1];T[v-1]=N&-129;const k=Hn(T),x=I?a:n.ORDER;sa("point.y",k,Bt,x);const S=c(k*k),R=c(S-be),P=c(B*S-A);let{isValid:b,value:E}=l(R,P);if(!b)throw new Error("bad point: invalid y coordinate");const C=(E&be)===be,L=(N&128)!==0;if(!I&&E===Bt&&L)throw new Error("bad point: x=0 and x_0=1");return L!==C&&(E=c(-E)),g.fromAffine({x:E,y:k})}static fromHex(w,I=!1){return g.fromBytes(fe("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(Qs),this}assertValidity(){h(this)}equals(w){u(w);const{X:I,Y:v,Z:A}=this,{X:B,Y:T,Z:N}=w,k=c(I*N),x=c(B*A),S=c(v*N),R=c(T*A);return k===x&&S===R}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:v,Z:A}=this,B=c(I*I),T=c(v*v),N=c(Qs*c(A*A)),k=c(w*B),x=I+v,S=c(c(x*x)-B-T),R=k+T,P=R-N,b=k-T,E=c(S*P),C=c(R*b),L=c(S*b),M=c(P*R);return new g(E,C,M,L)}add(w){u(w);const{a:I,d:v}=s,{X:A,Y:B,Z:T,T:N}=this,{X:k,Y:x,Z:S,T:R}=w,P=c(A*k),b=c(B*x),E=c(N*v*R),C=c(T*S),L=c((A+B)*(k+x)-P-b),M=C-E,$=C+E,j=c(b-I*P),D=c(L*M),_=c($*j),F=c(L*j),q=c(M*$);return new g(D,_,q,F)}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:v}=m.cached(this,w,A=>Jt(g,A));return Jt(g,[I,v])[0]}multiplyUnsafe(w,I=g.ZERO){if(!o.isValid(w))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return w===Bt?g.ZERO:this.is0()||w===be?this:m.unsafe(this,w,v=>Jt(g,v),I)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return m.unsafe(this,s.n).is0()}toAffine(w){return f(this,w)}clearCofactor(){return i===be?this:this.multiplyUnsafe(i)}toBytes(){const{x:w,y:I}=this.toAffine(),v=n.toBytes(I);return v[v.length-1]|=w&be?128:0,v}toHex(){return tr(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 Jt(g,w)}static msm(w,I){return wf(g,o,w,I)}_setWindowSize(w){this.precompute(w)}toRawBytes(){return this.toBytes()}}g.BASE=new g(s.Gx,s.Gy,be,c(s.Gx*s.Gy)),g.ZERO=new g(Bt,be,be,Bt),g.Fp=n,g.Fn=o;const m=new mf(g,o.BITS);return g.BASE.precompute(8),g}function Ww(t,e,r={}){if(typeof e!="function")throw new Error('"hash" function param is required');no(r,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});const{prehash:n}=r,{BASE:o,Fp:s,Fn:i}=t,a=r.randomBytes||Ja,c=r.adjustScalarBytes||(x=>x),l=r.domain||((x,S,R)=>{if(ir(R,"phflag"),S.length||R)throw new Error("Contexts/pre-hash are not supported");return x});function d(x){return i.create(Hn(x))}function u(x){const S=v.secretKey;x=fe("private key",x,S);const R=fe("hashed private key",e(x),2*S),P=c(R.slice(0,S)),b=R.slice(S,2*S),E=d(P);return{head:P,prefix:b,scalar:E}}function f(x){const{head:S,prefix:R,scalar:P}=u(x),b=o.multiply(P),E=b.toBytes();return{head:S,prefix:R,scalar:P,point:b,pointBytes:E}}function h(x){return f(x).pointBytes}function g(x=Uint8Array.of(),...S){const R=at(...S);return d(e(l(R,fe("context",x),!!n)))}function m(x,S,R={}){x=fe("message",x),n&&(x=n(x));const{prefix:P,scalar:b,pointBytes:E}=f(S),C=g(R.context,P,x),L=o.multiply(C).toBytes(),M=g(R.context,L,E,x),$=i.create(C+M*b);if(!i.isValid($))throw new Error("sign failed: invalid s");const j=at(L,i.toBytes($));return Je(j,v.signature,"result")}const y={zip215:!0};function w(x,S,R,P=y){const{context:b,zip215:E}=P,C=v.signature;x=fe("signature",x,C),S=fe("message",S),R=fe("publicKey",R,v.publicKey),E!==void 0&&ir(E,"zip215"),n&&(S=n(S));const L=C/2,M=x.subarray(0,L),$=Hn(x.subarray(L,C));let j,D,_;try{j=t.fromBytes(R,E),D=t.fromBytes(M,E),_=o.multiplyUnsafe($)}catch{return!1}if(!E&&j.isSmallOrder())return!1;const F=g(b,D.toBytes(),j.toBytes(),S);return D.add(j.multiplyUnsafe(F)).subtract(_).clearCofactor().is0()}const I=s.BYTES,v={secretKey:I,publicKey:I,signature:2*I,seed:I};function A(x=a(v.seed)){return Je(x,v.seed,"seed")}function B(x){const S=k.randomSecretKey(x);return{secretKey:S,publicKey:h(S)}}function T(x){return to(x)&&x.length===i.BYTES}function N(x,S){try{return!!t.fromBytes(x,S)}catch{return!1}}const k={getExtendedPublicKey:f,randomSecretKey:A,isValidSecretKey:T,isValidPublicKey:N,toMontgomery(x){const{y:S}=t.fromBytes(x),R=v.publicKey,P=R===32;if(!P&&R!==57)throw new Error("only defined for 25519 and 448");const b=P?s.div(be+S,be-S):s.div(S-be,S+be);return s.toBytes(b)},toMontgomerySecret(x){const S=v.secretKey;Je(x,S);const R=e(x.subarray(0,S));return c(R).subarray(0,S)},randomPrivateKey:A,precompute(x=8,S=t.BASE){return S.precompute(x,!1)}};return Object.freeze({keygen:B,getPublicKey:h,sign:m,verify:w,utils:k,Point:t,lengths:v})}function Gw(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},r=t.Fp,n=pr(e.n,t.nBitLength,!0),o={Fp:r,Fn:n,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 Xw(t,e){const r=e.Point;return Object.assign({},e,{ExtendedPoint:r,CURVE:t,nBitLength:r.Fn.BITS,nByteLength:r.Fn.BYTES})}function Yw(t){const{CURVE:e,curveOpts:r,hash:n,eddsaOpts:o}=Gw(t),s=Vw(e,r),i=Ww(s,n,o);return Xw(t,i)}const Zw=BigInt(1),xl=BigInt(2);BigInt(3);const Jw=BigInt(5),Qw=BigInt(8),rc=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),bf={p:rc,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:Qw,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function ey(t){const e=BigInt(10),r=BigInt(20),n=BigInt(40),o=BigInt(80),s=rc,a=t*t%s*t%s,c=ue(a,xl,s)*a%s,l=ue(c,Zw,s)*t%s,d=ue(l,Jw,s)*l%s,u=ue(d,e,s)*d%s,f=ue(u,r,s)*u%s,h=ue(f,n,s)*f%s,g=ue(h,o,s)*h%s,m=ue(g,o,s)*h%s,y=ue(m,e,s)*d%s;return{pow_p_5_8:ue(y,xl,s)*t%s,b2:a}}function ty(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Sl=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function ry(t,e){const r=rc,n=ye(e*e*e,r),o=ye(n*n*e,r),s=ey(t*o).pow_p_5_8;let i=ye(t*n*s,r);const a=ye(e*i*i,r),c=i,l=ye(i*Sl,r),d=a===t,u=a===ye(-t,r),f=a===ye(-t*Sl,r);return d&&(i=c),(u||f)&&(i=l),Fw(i,r)&&(i=ye(-i,r)),{isValid:d||u,value:i}}const ny=pr(bf.p,{isLE:!0}),oy={...bf,Fp:ny,hash:Rw,adjustScalarBytes:ty,uvRatio:ry},Yo=Yw(oy);class El extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}}class Al extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}}class sy extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}}const kt={get(t=globalThis){const e=t.crypto;if(e?.subtle==null)throw new sy("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}},Zo=32,gt=64,ia=32;let Or;const vf=(async()=>{try{return await kt.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function iy(){const t=Yo.utils.randomPrivateKey(),e=Yo.getPublicKey(t);return{privateKey:hy(t,e),publicKey:e}}async function ay(t,e){let r;t.length===gt?r=t.subarray(0,32):r=t;const n={crv:"Ed25519",kty:"OKP",x:J(t.subarray(32),"base64url"),d:J(r,"base64url"),ext:!0,key_ops:["sign"]},o=await kt.get().subtle.importKey("jwk",n,{name:"Ed25519"},!0,["sign"]),s=await kt.get().subtle.sign({name:"Ed25519"},o,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(s,0,s.byteLength)}function cy(t,e){const r=t.subarray(0,ia);return Yo.sign(e instanceof Uint8Array?e:e.subarray(),r)}async function ly(t,e){return Or==null&&(Or=await vf),Or?ay(t,e):cy(t,e)}async function dy(t,e,r){if(t.buffer instanceof ArrayBuffer){const n=await kt.get().subtle.importKey("raw",t.buffer,{name:"Ed25519"},!1,["verify"]);return await kt.get().subtle.verify({name:"Ed25519"},n,e,r instanceof Uint8Array?r:r.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function uy(t,e,r){return Yo.verify(e,r instanceof Uint8Array?r:r.subarray(),t)}async function fy(t,e,r){return Or==null&&(Or=await vf),Or?dy(t,e,r):uy(t,e,r)}function hy(t,e){const r=new Uint8Array(gt);for(let n=0;n<ia;n++)r[n]=t[n],r[ia+n]=e[n];return r}function Cs(t){return t==null?!1:typeof t.then=="function"&&typeof t.catch=="function"&&typeof t.finally=="function"}class xf{type="Ed25519";raw;constructor(e){this.raw=qn(e,Zo)}toMultihash(){return Qn.digest(Ns(this))}toCID(){return ce.createV1(114,this.toMultihash())}toString(){return Ne.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}verify(e,r,n){n?.signal?.throwIfAborted();const o=fy(this.raw,r,e);return Cs(o)?o.then(s=>(n?.signal?.throwIfAborted(),s)):o}}class aa{type="Ed25519";raw;publicKey;constructor(e,r){this.raw=qn(e,gt),this.publicKey=new xf(r)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}sign(e,r){r?.signal?.throwIfAborted();const n=ly(this.raw,e);return Cs(n)?n.then(o=>(r?.signal?.throwIfAborted(),o)):(r?.signal?.throwIfAborted(),n)}}function py(t){if(t.length>gt){t=qn(t,gt+Zo);const n=t.subarray(0,gt),o=t.subarray(gt,t.length);return new aa(n,o)}t=qn(t,gt);const e=t.subarray(0,gt),r=t.subarray(Zo);return new aa(e,r)}function Sf(t){return t=qn(t,Zo),new xf(t)}async function gy(){const{privateKey:t,publicKey:e}=iy();return new aa(t,e)}function qn(t,e){if(t=Uint8Array.from(t??[]),t.length!==e)throw new et(`Key must be a Uint8Array of length ${e}, got ${t.length}`);return t}const my=Math.pow(2,7),wy=Math.pow(2,14),yy=Math.pow(2,21),nc=Math.pow(2,28),oc=Math.pow(2,35),sc=Math.pow(2,42),ic=Math.pow(2,49),te=128,Ie=127;function gr(t){if(t<my)return 1;if(t<wy)return 2;if(t<yy)return 3;if(t<nc)return 4;if(t<oc)return 5;if(t<sc)return 6;if(t<ic)return 7;if(Number.MAX_SAFE_INTEGER!=null&&t>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Ef(t,e,r=0){switch(gr(t)){case 8:e[r++]=t&255|te,t/=128;case 7:e[r++]=t&255|te,t/=128;case 6:e[r++]=t&255|te,t/=128;case 5:e[r++]=t&255|te,t/=128;case 4:e[r++]=t&255|te,t>>>=7;case 3:e[r++]=t&255|te,t>>>=7;case 2:e[r++]=t&255|te,t>>>=7;case 1:{e[r++]=t&255,t>>>=7;break}default:throw new Error("unreachable")}return e}function by(t,e,r=0){switch(gr(t)){case 8:e.set(r++,t&255|te),t/=128;case 7:e.set(r++,t&255|te),t/=128;case 6:e.set(r++,t&255|te),t/=128;case 5:e.set(r++,t&255|te),t/=128;case 4:e.set(r++,t&255|te),t>>>=7;case 3:e.set(r++,t&255|te),t>>>=7;case 2:e.set(r++,t&255|te),t>>>=7;case 1:{e.set(r++,t&255),t>>>=7;break}default:throw new Error("unreachable")}return e}function Af(t,e){let r=t[e],n=0;if(n+=r&Ie,r<te||(r=t[e+1],n+=(r&Ie)<<7,r<te)||(r=t[e+2],n+=(r&Ie)<<14,r<te)||(r=t[e+3],n+=(r&Ie)<<21,r<te)||(r=t[e+4],n+=(r&Ie)*nc,r<te)||(r=t[e+5],n+=(r&Ie)*oc,r<te)||(r=t[e+6],n+=(r&Ie)*sc,r<te)||(r=t[e+7],n+=(r&Ie)*ic,r<te))return n;throw new RangeError("Could not decode varint")}function vy(t,e){let r=t.get(e),n=0;if(n+=r&Ie,r<te||(r=t.get(e+1),n+=(r&Ie)<<7,r<te)||(r=t.get(e+2),n+=(r&Ie)<<14,r<te)||(r=t.get(e+3),n+=(r&Ie)<<21,r<te)||(r=t.get(e+4),n+=(r&Ie)*nc,r<te)||(r=t.get(e+5),n+=(r&Ie)*oc,r<te)||(r=t.get(e+6),n+=(r&Ie)*sc,r<te)||(r=t.get(e+7),n+=(r&Ie)*ic,r<te))return n;throw new RangeError("Could not decode varint")}function xy(t,e,r=0){return e==null&&(e=At(gr(t))),e instanceof Uint8Array?Ef(t,e,r):by(t,e,r)}function kf(t,e=0){return t instanceof Uint8Array?Af(t,e):vy(t,e)}const ac=new Float32Array([-0]),Ut=new Uint8Array(ac.buffer);function Sy(t,e,r){ac[0]=t,e[r]=Ut[0],e[r+1]=Ut[1],e[r+2]=Ut[2],e[r+3]=Ut[3]}function Ey(t,e){return Ut[0]=t[e],Ut[1]=t[e+1],Ut[2]=t[e+2],Ut[3]=t[e+3],ac[0]}const cc=new Float64Array([-0]),Ce=new Uint8Array(cc.buffer);function Ay(t,e,r){cc[0]=t,e[r]=Ce[0],e[r+1]=Ce[1],e[r+2]=Ce[2],e[r+3]=Ce[3],e[r+4]=Ce[4],e[r+5]=Ce[5],e[r+6]=Ce[6],e[r+7]=Ce[7]}function ky(t,e){return Ce[0]=t[e],Ce[1]=t[e+1],Ce[2]=t[e+2],Ce[3]=t[e+3],Ce[4]=t[e+4],Ce[5]=t[e+5],Ce[6]=t[e+6],Ce[7]=t[e+7],cc[0]}const Iy=BigInt(Number.MAX_SAFE_INTEGER),Cy=BigInt(Number.MIN_SAFE_INTEGER);class Re{lo;hi;constructor(e,r){this.lo=e|0,this.hi=r|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){const r=~this.lo+1>>>0;let n=~this.hi>>>0;return r===0&&(n=n+1>>>0),-(r+n*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 r=~this.lo+1>>>0;let n=~this.hi>>>0;return r===0&&(n=n+1>>>0),-(BigInt(r)+(BigInt(n)<<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,r=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?r===0?e<16384?e<128?1:2:e<2097152?3:4:r<16384?r<128?5:6:r<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return rr;if(e<Iy&&e>Cy)return this.fromNumber(Number(e));const r=e<0n;r&&(e=-e);let n=e>>32n,o=e-(n<<32n);return r&&(n=~n|0n,o=~o|0n,++o>kl&&(o=0n,++n>kl&&(n=0n))),new Re(Number(o),Number(n))}static fromNumber(e){if(e===0)return rr;const r=e<0;r&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return r&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new Re(n,o)}static from(e){return typeof e=="number"?Re.fromNumber(e):typeof e=="bigint"?Re.fromBigInt(e):typeof e=="string"?Re.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new Re(e.low>>>0,e.high>>>0):rr}}const rr=new Re(0,0);rr.toBigInt=function(){return 0n};rr.zzEncode=rr.zzDecode=function(){return this};rr.length=function(){return 1};const kl=4294967296n;function Ry(t){let e=0,r=0;for(let n=0;n<t.length;++n)r=t.charCodeAt(n),r<128?e+=1:r<2048?e+=2:(r&64512)===55296&&(t.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function Ty(t,e,r){if(r-e<1)return"";let o;const s=[];let i=0,a;for(;e<r;)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 If(t,e,r){const n=r;let o,s;for(let i=0;i<t.length;++i)o=t.charCodeAt(i),o<128?e[r++]=o:o<2048?(e[r++]=o>>6|192,e[r++]=o&63|128):(o&64512)===55296&&((s=t.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[r++]=o>>18|240,e[r++]=o>>12&63|128,e[r++]=o>>6&63|128,e[r++]=o&63|128):(e[r++]=o>>12|224,e[r++]=o>>6&63|128,e[r++]=o&63|128);return r-n}function Ye(t,e){return RangeError(`index out of range: ${t.pos} + ${e??1} > ${t.len}`)}function wo(t,e){return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0}class Py{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,Ye(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 Ye(this,4);return wo(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Ye(this,4);return wo(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Ye(this,4);const e=Ey(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Ye(this,4);const e=ky(this.buf,this.pos);return this.pos+=8,e}bytes(){const e=this.uint32(),r=this.pos,n=this.pos+e;if(n>this.len)throw Ye(this,e);return this.pos+=e,r===n?new Uint8Array(0):this.buf.subarray(r,n)}string(){const e=this.bytes();return Ty(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Ye(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Ye(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 Re(0,0);let r=0;if(this.len-this.pos>4){for(;r<4;++r)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<r*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;r=0}else{for(;r<3;++r){if(this.pos>=this.len)throw Ye(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<r*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<r*7)>>>0,e}if(this.len-this.pos>4){for(;r<5;++r)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<r*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;r<5;++r){if(this.pos>=this.len)throw Ye(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<r*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw Ye(this,8);const e=wo(this.buf,this.pos+=4),r=wo(this.buf,this.pos+=4);return new Re(e,r)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){const e=Af(this.buf,this.pos);return this.pos+=gr(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 Ny(t){return new Py(t instanceof Uint8Array?t:t.subarray())}function Rs(t,e,r){const n=Ny(t);return e.decode(n,void 0,r)}function Ly(t){let n,o=8192;return function(i){if(i<1||i>4096)return At(i);o+i>8192&&(n=At(8192),o=0);const a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}class Cn{fn;len;next;val;constructor(e,r,n){this.fn=e,this.len=r,this.next=void 0,this.val=n}}function ei(){}class By{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}}const _y=Ly();function Dy(t){return globalThis.Buffer!=null?At(t):_y(t)}class ca{len;head;tail;states;constructor(){this.len=0,this.head=new Cn(ei,0,0),this.tail=this.head,this.states=null}_push(e,r,n){return this.tail=this.tail.next=new Cn(e,r,n),this.len+=r,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Oy((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(yo,10,Re.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){const r=Re.fromBigInt(e);return this._push(yo,r.length(),r)}uint64Number(e){return this._push(Ef,gr(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 r=Re.fromBigInt(e).zzEncode();return this._push(yo,r.length(),r)}sint64Number(e){const r=Re.fromNumber(e).zzEncode();return this._push(yo,r.length(),r)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(ti,1,e?1:0)}fixed32(e){return this._push(hn,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){const r=Re.fromBigInt(e);return this._push(hn,4,r.lo)._push(hn,4,r.hi)}fixed64Number(e){const r=Re.fromNumber(e);return this._push(hn,4,r.lo)._push(hn,4,r.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(Sy,4,e)}double(e){return this._push(Ay,8,e)}bytes(e){const r=e.length>>>0;return r===0?this._push(ti,1,0):this.uint32(r)._push(My,r,e)}string(e){const r=Ry(e);return r!==0?this.uint32(r)._push(If,r,e):this._push(ti,1,0)}fork(){return this.states=new By(this),this.head=this.tail=new Cn(ei,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 Cn(ei,0,0),this.len=0),this}ldelim(){const e=this.head,r=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=r,this.len+=n),this}finish(){let e=this.head.next;const r=Dy(this.len);let n=0;for(;e!=null;)e.fn(e.val,r,n),n+=e.len,e=e.next;return r}}function ti(t,e,r){e[r]=t&255}function Fy(t,e,r){for(;t>127;)e[r++]=t&127|128,t>>>=7;e[r]=t}class Oy extends Cn{next;constructor(e,r){super(Fy,e,r),this.next=void 0}}function yo(t,e,r){for(;t.hi!==0;)e[r++]=t.lo&127|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)e[r++]=t.lo&127|128,t.lo=t.lo>>>7;e[r++]=t.lo}function hn(t,e,r){e[r]=t&255,e[r+1]=t>>>8&255,e[r+2]=t>>>16&255,e[r+3]=t>>>24}function My(t,e,r){e.set(t,r)}globalThis.Buffer!=null&&(ca.prototype.bytes=function(t){const e=t.length>>>0;return this.uint32(e),e>0&&this._push(jy,e,t),this},ca.prototype.string=function(t){const e=globalThis.Buffer.byteLength(t);return this.uint32(e),e>0&&this._push(Uy,e,t),this});function jy(t,e,r){e.set(t,r)}function Uy(t,e,r){t.length<40?If(t,e,r):e.utf8Write!=null?e.utf8Write(t,r):e.set(we(t),r)}function $y(){return new ca}function Ts(t,e){const r=$y();return e.encode(t,r,{lengthDelimited:!1}),r.finish()}var Jo;(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"})(Jo||(Jo={}));function Cf(t,e,r,n){return{name:t,type:e,encode:r,decode:n}}function Hy(t){function e(o){if(t[o.toString()]==null)throw new Error("Invalid enum value");return t[o]}const r=function(s,i){const a=e(s);i.int32(a)},n=function(s){const i=s.int32();return e(i)};return Cf("enum",Jo.VARINT,r,n)}function Ps(t,e){return Cf("message",Jo.LENGTH_DELIMITED,t,e)}class Il extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"}var le;(function(t){t.RSA="RSA",t.Ed25519="Ed25519",t.secp256k1="secp256k1",t.ECDSA="ECDSA"})(le||(le={}));var la;(function(t){t[t.RSA=0]="RSA",t[t.Ed25519=1]="Ed25519",t[t.secp256k1=2]="secp256k1",t[t.ECDSA=3]="ECDSA"})(la||(la={}));(function(t){t.codec=()=>Hy(la)})(le||(le={}));var ar;(function(t){let e;t.codec=()=>(e==null&&(e=Ps((r,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),r.Type!=null&&(n.uint32(8),le.codec().encode(r.Type,n)),r.Data!=null&&(n.uint32(18),n.bytes(r.Data)),o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{s.Type=le.codec().decode(r);break}case 2:{s.Data=r.bytes();break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>Ts(r,t.codec()),t.decode=(r,n)=>Rs(r,t.codec(),n)})(ar||(ar={}));var Qo;(function(t){let e;t.codec=()=>(e==null&&(e=Ps((r,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),r.Type!=null&&(n.uint32(8),le.codec().encode(r.Type,n)),r.Data!=null&&(n.uint32(18),n.bytes(r.Data)),o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{s.Type=le.codec().decode(r);break}case 2:{s.Data=r.bytes();break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>Ts(r,t.codec()),t.decode=(r,n)=>Rs(r,t.codec(),n)})(Qo||(Qo={}));const Rf=Ju;class Tf{type="RSA";jwk;_raw;_multihash;constructor(e,r){this.jwk=e,this._multihash=r}get raw(){return this._raw==null&&(this._raw=Nf(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return ce.createV1(114,this._multihash)}toString(){return Ne.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}verify(e,r,n){return nb(this.jwk,r,e,n)}}class qy{type="RSA";jwk;_raw;publicKey;constructor(e,r){this.jwk=e,this.publicKey=r}get raw(){return this._raw==null&&(this._raw=Gy(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}sign(e,r){return rb(this.jwk,e,r)}}const Ky=8192,Pf=18,zy=1062,Vy=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function Wy(t){return{n:J(t[1],"base64url"),e:J(t[2],"base64url"),d:J(t[3],"base64url"),p:J(t[4],"base64url"),q:J(t[5],"base64url"),dp:J(t[6],"base64url"),dq:J(t[7],"base64url"),qi:J(t[8],"base64url"),kty:"RSA"}}function Gy(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 et("JWK was missing components");return xt([Me(Uint8Array.from([0])),Me(we(t.n,"base64url")),Me(we(t.e,"base64url")),Me(we(t.d,"base64url")),Me(we(t.p,"base64url")),Me(we(t.q,"base64url")),Me(we(t.dp,"base64url")),Me(we(t.dq,"base64url")),Me(we(t.qi,"base64url"))]).subarray()}function Xy(t){const e=tn(t[1],{offset:0});return{kty:"RSA",n:J(e[0],"base64url"),e:J(e[1],"base64url")}}function Nf(t){if(t.n==null||t.e==null)throw new et("JWK was missing components");return xt([Vy,Ya(xt([Me(we(t.n,"base64url")),Me(we(t.e,"base64url"))]))]).subarray()}function Yy(t){const e=tn(t);return Zy(e)}function Zy(t){const e=Wy(t);return eb(e)}function Jy(t,e){if(t.byteLength>=zy)throw new Tu("Key size is too large");const r=tn(t,{offset:0});return Qy(r,t,e)}function Qy(t,e,r){const n=Xy(t);if(r==null){const o=Rf(ar.encode({Type:le.RSA,Data:e}));r=Jn(Pf,o)}return new Tf(n,r)}function eb(t){if(ob(t)>Ky)throw new et("Key size is too large");const e=tb(t),r=Rf(ar.encode({Type:le.RSA,Data:Nf(e.publicKey)})),n=Jn(Pf,r);return new qy(e.privateKey,new Tf(e.publicKey,n))}function tb(t){if(t==null)throw new et("Missing key parameter");return{privateKey:t,publicKey:{kty:t.kty,n:t.n,e:t.e}}}async function rb(t,e,r){const n=await kt.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);r?.signal?.throwIfAborted();const o=await kt.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,e instanceof Uint8Array?e:e.subarray());return r?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function nb(t,e,r,n){const o=await kt.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();const s=await kt.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,r instanceof Uint8Array?r:r.subarray());return n?.signal?.throwIfAborted(),s}function ob(t){if(t.kty!=="RSA")throw new et("invalid key type");if(t.n==null)throw new et("invalid key modulus");return we(t.n,"base64url").length*8}class Lf extends Gu{constructor(e,r){super(),this.finished=!1,this.destroyed=!1,Vu(e);const n=Za(r);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(n.length>o?e.create().update(n).digest():n);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),Wr(s)}update(e){return Vo(this),this.iHash.update(e),this}digestInto(e){Vo(this),hr(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:r,iHash:n,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=r._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Bf=(t,e,r)=>new Lf(t,e).update(r).digest();Bf.create=(t,e)=>new Lf(t,e);const Cl=(t,e)=>(t+(t>=0?e:-e)/_f)/e;function sb(t,e,r){const[[n,o],[s,i]]=e,a=Cl(i*t,r),c=Cl(-o*t,r);let l=t-a*n-c*s,d=-a*o-c*i;const u=l<yt,f=d<yt;u&&(l=-l),f&&(d=-d);const h=ro(Math.ceil(tf(r)/2))+Mr;if(l<yt||l>=h||d<yt||d>=h)throw new Error("splitScalar (endomorphism): failed, k="+t);return{k1neg:u,k1:l,k2neg:f,k2:d}}function da(t){if(!["compact","recovered","der"].includes(t))throw new Error('Signature format must be "compact", "recovered", or "der"');return t}function ri(t,e){const r={};for(let n of Object.keys(e))r[n]=t[n]===void 0?e[n]:t[n];return ir(r.lowS,"lowS"),ir(r.prehash,"prehash"),r.format!==void 0&&da(r.format),r}class ib extends Error{constructor(e=""){super(e)}}const mt={Err:ib,_tlv:{encode:(t,e)=>{const{Err:r}=mt;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length&1)throw new r("tlv.encode: unpadded data");const n=e.length/2,o=mo(n);if(o.length/2&128)throw new r("tlv.encode: long form length too big");const s=n>127?mo(o.length/2|128):"";return mo(t)+s+o+e},decode(t,e){const{Err:r}=mt;let n=0;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length<2||e[n++]!==t)throw new r("tlv.decode: wrong tlv");const o=e[n++],s=!!(o&128);let i=0;if(!s)i=o;else{const c=o&127;if(!c)throw new r("tlv.decode(long): indefinite length not supported");if(c>4)throw new r("tlv.decode(long): byte length is too big");const l=e.subarray(n,n+c);if(l.length!==c)throw new r("tlv.decode: length bytes not complete");if(l[0]===0)throw new r("tlv.decode(long): zero leftmost byte");for(const d of l)i=i<<8|d;if(n+=c,i<128)throw new r("tlv.decode(long): not minimal encoding")}const a=e.subarray(n,n+i);if(a.length!==i)throw new r("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(t){const{Err:e}=mt;if(t<yt)throw new e("integer: negative integers are not allowed");let r=mo(t);if(Number.parseInt(r[0],16)&8&&(r="00"+r),r.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return r},decode(t){const{Err:e}=mt;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 Is(t)}},toSig(t){const{Err:e,_int:r,_tlv:n}=mt,o=fe("signature",t),{v:s,l:i}=n.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");const{v:a,l:c}=n.decode(2,s),{v:l,l:d}=n.decode(2,c);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:r.decode(a),s:r.decode(l)}},hexFromSig(t){const{_tlv:e,_int:r}=mt,n=e.encode(2,r.encode(t.r)),o=e.encode(2,r.encode(t.s)),s=n+o;return e.encode(48,s)}},yt=BigInt(0),Mr=BigInt(1),_f=BigInt(2),bo=BigInt(3),ab=BigInt(4);function Pr(t,e){const{BYTES:r}=t;let n;if(typeof e=="bigint")n=e;else{let o=fe("private key",e);try{n=t.fromBytes(o)}catch{throw new Error(`invalid private key: expected ui8a of size ${r}, got ${typeof e}`)}}if(!t.isValidNot0(n))throw new Error("invalid private key: out of range [1..N-1]");return n}function cb(t,e={}){const r=yf("weierstrass",t,e),{Fp:n,Fn:o}=r;let s=r.CURVE;const{h:i,n:a}=s;no(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});const{endo:c}=e;if(c&&(!n.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');const l=Ff(n,o);function d(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(P,b,E){const{x:C,y:L}=b.toAffine(),M=n.toBytes(C);if(ir(E,"isCompressed"),E){d();const $=!n.isOdd(L);return at(Df($),M)}else return at(Uint8Array.of(4),M,n.toBytes(L))}function f(P){Je(P,void 0,"Point");const{publicKey:b,publicKeyUncompressed:E}=l,C=P.length,L=P[0],M=P.subarray(1);if(C===b&&(L===2||L===3)){const $=n.fromBytes(M);if(!n.isValid($))throw new Error("bad point: is not on curve, wrong x");const j=m($);let D;try{D=n.sqrt(j)}catch(q){const H=q instanceof Error?": "+q.message:"";throw new Error("bad point: is not on curve, sqrt error"+H)}d();const _=n.isOdd(D);return(L&1)===1!==_&&(D=n.neg(D)),{x:$,y:D}}else if(C===E&&L===4){const $=n.BYTES,j=n.fromBytes(M.subarray(0,$)),D=n.fromBytes(M.subarray($,$*2));if(!y(j,D))throw new Error("bad point: is not on curve");return{x:j,y:D}}else throw new Error(`bad point: got length ${C}, expected compressed=${b} or uncompressed=${E}`)}const h=e.toBytes||u,g=e.fromBytes||f;function m(P){const b=n.sqr(P),E=n.mul(b,P);return n.add(n.add(E,n.mul(P,s.a)),s.b)}function y(P,b){const E=n.sqr(b),C=m(P);return n.eql(E,C)}if(!y(s.Gx,s.Gy))throw new Error("bad curve params: generator point");const w=n.mul(n.pow(s.a,bo),ab),I=n.mul(n.sqr(s.b),BigInt(27));if(n.is0(n.add(w,I)))throw new Error("bad curve params: a or b");function v(P,b,E=!1){if(!n.isValid(b)||E&&n.is0(b))throw new Error(`bad point coordinate ${P}`);return b}function A(P){if(!(P instanceof x))throw new Error("ProjectivePoint expected")}function B(P){if(!c||!c.basises)throw new Error("no endo");return sb(P,c.basises,o.ORDER)}const T=Go((P,b)=>{const{X:E,Y:C,Z:L}=P;if(n.eql(L,n.ONE))return{x:E,y:C};const M=P.is0();b==null&&(b=M?n.ONE:n.inv(L));const $=n.mul(E,b),j=n.mul(C,b),D=n.mul(L,b);if(M)return{x:n.ZERO,y:n.ZERO};if(!n.eql(D,n.ONE))throw new Error("invZ was invalid");return{x:$,y:j}}),N=Go(P=>{if(P.is0()){if(e.allowInfinityPoint&&!n.is0(P.Y))return;throw new Error("bad point: ZERO")}const{x:b,y:E}=P.toAffine();if(!n.isValid(b)||!n.isValid(E))throw new Error("bad point: x or y not field elements");if(!y(b,E))throw new Error("bad point: equation left != right");if(!P.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function k(P,b,E,C,L){return E=new x(n.mul(E.X,P),E.Y,E.Z),b=Xo(C,b),E=Xo(L,E),b.add(E)}class x{constructor(b,E,C){this.X=v("x",b),this.Y=v("y",E,!0),this.Z=v("z",C),Object.freeze(this)}static CURVE(){return s}static fromAffine(b){const{x:E,y:C}=b||{};if(!b||!n.isValid(E)||!n.isValid(C))throw new Error("invalid affine point");if(b instanceof x)throw new Error("projective point not allowed");return n.is0(E)&&n.is0(C)?x.ZERO:new x(E,C,n.ONE)}static fromBytes(b){const E=x.fromAffine(g(Je(b,void 0,"point")));return E.assertValidity(),E}static fromHex(b){return x.fromBytes(fe("pointHex",b))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(b=8,E=!0){return R.createCache(this,b),E||this.multiply(bo),this}assertValidity(){N(this)}hasEvenY(){const{y:b}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(b)}equals(b){A(b);const{X:E,Y:C,Z:L}=this,{X:M,Y:$,Z:j}=b,D=n.eql(n.mul(E,j),n.mul(M,L)),_=n.eql(n.mul(C,j),n.mul($,L));return D&&_}negate(){return new x(this.X,n.neg(this.Y),this.Z)}double(){const{a:b,b:E}=s,C=n.mul(E,bo),{X:L,Y:M,Z:$}=this;let j=n.ZERO,D=n.ZERO,_=n.ZERO,F=n.mul(L,L),q=n.mul(M,M),H=n.mul($,$),K=n.mul(L,M);return K=n.add(K,K),_=n.mul(L,$),_=n.add(_,_),j=n.mul(b,_),D=n.mul(C,H),D=n.add(j,D),j=n.sub(q,D),D=n.add(q,D),D=n.mul(j,D),j=n.mul(K,j),_=n.mul(C,_),H=n.mul(b,H),K=n.sub(F,H),K=n.mul(b,K),K=n.add(K,_),_=n.add(F,F),F=n.add(_,F),F=n.add(F,H),F=n.mul(F,K),D=n.add(D,F),H=n.mul(M,$),H=n.add(H,H),F=n.mul(H,K),j=n.sub(j,F),_=n.mul(H,q),_=n.add(_,_),_=n.add(_,_),new x(j,D,_)}add(b){A(b);const{X:E,Y:C,Z:L}=this,{X:M,Y:$,Z:j}=b;let D=n.ZERO,_=n.ZERO,F=n.ZERO;const q=s.a,H=n.mul(s.b,bo);let K=n.mul(E,M),z=n.mul(C,$),W=n.mul(L,j),X=n.add(E,C),G=n.add(M,$);X=n.mul(X,G),G=n.add(K,z),X=n.sub(X,G),G=n.add(E,L);let Y=n.add(M,j);return G=n.mul(G,Y),Y=n.add(K,W),G=n.sub(G,Y),Y=n.add(C,L),D=n.add($,j),Y=n.mul(Y,D),D=n.add(z,W),Y=n.sub(Y,D),F=n.mul(q,G),D=n.mul(H,W),F=n.add(D,F),D=n.sub(z,F),F=n.add(z,F),_=n.mul(D,F),z=n.add(K,K),z=n.add(z,K),W=n.mul(q,W),G=n.mul(H,G),z=n.add(z,W),W=n.sub(K,W),W=n.mul(q,W),G=n.add(G,W),K=n.mul(z,G),_=n.add(_,K),K=n.mul(Y,G),D=n.mul(X,D),D=n.sub(D,K),K=n.mul(X,z),F=n.mul(Y,F),F=n.add(F,K),new x(D,_,F)}subtract(b){return this.add(b.negate())}is0(){return this.equals(x.ZERO)}multiply(b){const{endo:E}=e;if(!o.isValidNot0(b))throw new Error("invalid scalar: out of range");let C,L;const M=$=>R.cached(this,$,j=>Jt(x,j));if(E){const{k1neg:$,k1:j,k2neg:D,k2:_}=B(b),{p:F,f:q}=M(j),{p:H,f:K}=M(_);L=q.add(K),C=k(E.beta,F,H,$,D)}else{const{p:$,f:j}=M(b);C=$,L=j}return Jt(x,[C,L])[0]}multiplyUnsafe(b){const{endo:E}=e,C=this;if(!o.isValid(b))throw new Error("invalid scalar: out of range");if(b===yt||C.is0())return x.ZERO;if(b===Mr)return C;if(R.hasCache(this))return this.multiply(b);if(E){const{k1neg:L,k1:M,k2neg:$,k2:j}=B(b),{p1:D,p2:_}=qw(x,C,M,j);return k(E.beta,D,_,L,$)}else return R.unsafe(C,b)}multiplyAndAddUnsafe(b,E,C){const L=this.multiplyUnsafe(E).add(b.multiplyUnsafe(C));return L.is0()?void 0:L}toAffine(b){return T(this,b)}isTorsionFree(){const{isTorsionFree:b}=e;return i===Mr?!0:b?b(x,this):R.unsafe(this,a).is0()}clearCofactor(){const{clearCofactor:b}=e;return i===Mr?this:b?b(x,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(b=!0){return ir(b,"isCompressed"),this.assertValidity(),h(x,this,b)}toHex(b=!0){return tr(this.toBytes(b))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(b=!0){return this.toBytes(b)}_setWindowSize(b){this.precompute(b)}static normalizeZ(b){return Jt(x,b)}static msm(b,E){return wf(x,o,b,E)}static fromPrivateKey(b){return x.BASE.multiply(Pr(o,b))}}x.BASE=new x(s.Gx,s.Gy,n.ONE),x.ZERO=new x(n.ZERO,n.ONE,n.ZERO),x.Fp=n,x.Fn=o;const S=o.BITS,R=new mf(x,e.endo?Math.ceil(S/2):S);return x.BASE.precompute(8),x}function Df(t){return Uint8Array.of(t?2:3)}function Ff(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function lb(t,e={}){const{Fn:r}=t,n=e.randomBytes||Ja,o=Object.assign(Ff(t.Fp,r),{seed:hf(r.ORDER)});function s(h){try{return!!Pr(r,h)}catch{return!1}}function i(h,g){const{publicKey:m,publicKeyUncompressed:y}=o;try{const w=h.length;return g===!0&&w!==m||g===!1&&w!==y?!1:!!t.fromBytes(h)}catch{return!1}}function a(h=n(o.seed)){return Uw(Je(h,o.seed,"seed"),r.ORDER)}function c(h,g=!0){return t.BASE.multiply(Pr(r,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:y}=o;if(r.allowedLengths||g===m)return;const w=fe("key",h).length;return w===m||w===y}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 y=Pr(r,h);return t.fromHex(g).multiply(y).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=>Pr(r,h),precompute(h=8,g=t.BASE){return g.precompute(h,!1)}},lengths:o})}function db(t,e,r={}){Vu(e),no(r,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});const n=r.randomBytes||Ja,o=r.hmac||((E,...C)=>Bf(e,E,at(...C))),{Fp:s,Fn:i}=t,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h}=lb(t,r),g={prehash:!1,lowS:typeof r.lowS=="boolean"?r.lowS:!1,format:void 0,extraEntropy:!1},m="compact";function y(E){const C=a>>Mr;return E>C}function w(E,C){if(!i.isValidNot0(C))throw new Error(`invalid signature ${E}: out of range 1..Point.Fn.ORDER`);return C}function I(E,C){da(C);const L=h.signature,M=C==="compact"?L:C==="recovered"?L+1:void 0;return Je(E,M,`${C} signature`)}class v{constructor(C,L,M){this.r=w("r",C),this.s=w("s",L),M!=null&&(this.recovery=M),Object.freeze(this)}static fromBytes(C,L=m){I(C,L);let M;if(L==="der"){const{r:_,s:F}=mt.toSig(Je(C));return new v(_,F)}L==="recovered"&&(M=C[0],L="compact",C=C.subarray(1));const $=i.BYTES,j=C.subarray(0,$),D=C.subarray($,$*2);return new v(i.fromBytes(j),i.fromBytes(D),M)}static fromHex(C,L){return this.fromBytes(Wo(C),L)}addRecoveryBit(C){return new v(this.r,this.s,C)}recoverPublicKey(C){const L=s.ORDER,{r:M,s:$,recovery:j}=this;if(j==null||![0,1,2,3].includes(j))throw new Error("recovery id invalid");if(a*_f<L&&j>1)throw new Error("recovery id is ambiguous for h>1 curve");const _=j===2||j===3?M+a:M;if(!s.isValid(_))throw new Error("recovery id 2 or 3 invalid");const F=s.toBytes(_),q=t.fromBytes(at(Df((j&1)===0),F)),H=i.inv(_),K=B(fe("msgHash",C)),z=i.create(-K*H),W=i.create($*H),X=t.BASE.multiplyUnsafe(z).add(q.multiplyUnsafe(W));if(X.is0())throw new Error("point at infinify");return X.assertValidity(),X}hasHighS(){return y(this.s)}toBytes(C=m){if(da(C),C==="der")return Wo(mt.hexFromSig(this));const L=i.toBytes(this.r),M=i.toBytes(this.s);if(C==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return at(Uint8Array.of(this.recovery),L,M)}return at(L,M)}toHex(C){return tr(this.toBytes(C))}assertValidity(){}static fromCompact(C){return v.fromBytes(fe("sig",C),"compact")}static fromDER(C){return v.fromBytes(fe("sig",C),"der")}normalizeS(){return this.hasHighS()?new v(this.r,i.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return tr(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return tr(this.toBytes("compact"))}}const A=r.bits2int||function(C){if(C.length>8192)throw new Error("input is too large");const L=Is(C),M=C.length*8-c;return M>0?L>>BigInt(M):L},B=r.bits2int_modN||function(C){return i.create(A(C))},T=ro(c);function N(E){return sa("num < 2^"+c,E,yt,T),i.toBytes(E)}function k(E,C){return Je(E,void 0,"message"),C?Je(e(E),void 0,"prehashed message"):E}function x(E,C,L){if(["recovered","canonical"].some(z=>z in L))throw new Error("sign() legacy options not supported");const{lowS:M,prehash:$,extraEntropy:j}=ri(L,g);E=k(E,$);const D=B(E),_=Pr(i,C),F=[N(_),N(D)];if(j!=null&&j!==!1){const z=j===!0?n(h.secretKey):j;F.push(fe("extraEntropy",z))}const q=at(...F),H=D;function K(z){const W=A(z);if(!i.isValidNot0(W))return;const X=i.inv(W),G=t.BASE.multiply(W).toAffine(),Y=i.create(G.x);if(Y===yt)return;const se=i.create(X*i.create(H+Y*_));if(se===yt)return;let Pe=(G.x===Y?0:2)|Number(G.y&Mr),De=se;return M&&y(se)&&(De=i.neg(se),Pe^=1),new v(Y,De,Pe)}return{seed:q,k2sig:K}}function S(E,C,L={}){E=fe("message",E);const{seed:M,k2sig:$}=x(E,C,L);return Pw(e.outputLen,i.BYTES,o)(M,$)}function R(E){let C;const L=typeof E=="string"||to(E),M=!L&&E!==null&&typeof E=="object"&&typeof E.r=="bigint"&&typeof E.s=="bigint";if(!L&&!M)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(M)C=new v(E.r,E.s);else if(L){try{C=v.fromBytes(fe("sig",E),"der")}catch($){if(!($ instanceof mt.Err))throw $}if(!C)try{C=v.fromBytes(fe("sig",E),"compact")}catch{return!1}}return C||!1}function P(E,C,L,M={}){const{lowS:$,prehash:j,format:D}=ri(M,g);if(L=fe("publicKey",L),C=k(fe("message",C),j),"strict"in M)throw new Error("options.strict was renamed to lowS");const _=D===void 0?R(E):v.fromBytes(fe("sig",E),D);if(_===!1)return!1;try{const F=t.fromBytes(L);if($&&_.hasHighS())return!1;const{r:q,s:H}=_,K=B(C),z=i.inv(H),W=i.create(K*z),X=i.create(q*z),G=t.BASE.multiplyUnsafe(W).add(F.multiplyUnsafe(X));return G.is0()?!1:i.create(G.x)===q}catch{return!1}}function b(E,C,L={}){const{prehash:M}=ri(L,g);return C=k(C,M),v.fromBytes(E,"recovered").recoverPublicKey(C).toBytes()}return Object.freeze({keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h,Point:t,sign:S,verify:P,recoverPublicKey:b,Signature:v,hash:e})}function ub(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},r=t.Fp;let n=t.allowedPrivateKeyLengths?Array.from(new Set(t.allowedPrivateKeyLengths.map(i=>Math.ceil(i/2)))):void 0;const o=pr(e.n,{BITS:t.nBitLength,allowedLengths:n,modFromBytes:t.wrapPrivateKey}),s={Fp:r,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 fb(t){const{CURVE:e,curveOpts:r}=ub(t),n={hmac:t.hmac,randomBytes:t.randomBytes,lowS:t.lowS,bits2int:t.bits2int,bits2int_modN:t.bits2int_modN};return{CURVE:e,curveOpts:r,hash:t.hash,ecdsaOpts:n}}function hb(t,e){const r=e.Point;return Object.assign({},e,{ProjectivePoint:r,CURVE:Object.assign({},t,uf(r.Fn.ORDER,r.Fn.BITS))})}function pb(t){const{CURVE:e,curveOpts:r,hash:n,ecdsaOpts:o}=fb(t),s=cb(e,r),i=db(s,n,o);return hb(t,i)}function gb(t,e){const r=n=>pb({...t,hash:n});return{...r(e),create:r}}const lc={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},mb={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},Rl=BigInt(2);function wb(t){const e=lc.p,r=BigInt(3),n=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=ue(d,r,e)*d%e,f=ue(u,r,e)*d%e,h=ue(f,Rl,e)*l%e,g=ue(h,o,e)*h%e,m=ue(g,s,e)*g%e,y=ue(m,a,e)*m%e,w=ue(y,c,e)*y%e,I=ue(w,a,e)*m%e,v=ue(I,r,e)*d%e,A=ue(v,i,e)*g%e,B=ue(A,n,e)*l%e,T=ue(B,Rl,e);if(!ua.eql(ua.sqr(T),t))throw new Error("Cannot find square root");return T}const ua=pr(lc.p,{sqrt:wb}),qt=gb({...lc,Fp:ua,lowS:!0,endo:mb},Ju);function yb(t,e,r){const n=Xa.digest(e instanceof Uint8Array?e:e.subarray());if(Cs(n))return n.then(({digest:o})=>(r?.signal?.throwIfAborted(),qt.sign(o,t).toDERRawBytes())).catch(o=>{throw o.name==="AbortError"?o:new El(String(o))});try{return qt.sign(n.digest,t).toDERRawBytes()}catch(o){throw new El(String(o))}}function bb(t,e,r,n){const o=Xa.digest(r instanceof Uint8Array?r:r.subarray());if(Cs(o))return o.then(({digest:s})=>(n?.signal?.throwIfAborted(),qt.verify(e,s,t))).catch(s=>{throw s.name==="AbortError"?s:new Al(String(s))});try{return n?.signal?.throwIfAborted(),qt.verify(e,o.digest,t)}catch(s){throw new Al(String(s))}}class Of{type="secp256k1";raw;_key;constructor(e){this._key=Ab(e),this.raw=Sb(this._key)}toMultihash(){return Qn.digest(Ns(this))}toCID(){return ce.createV1(114,this.toMultihash())}toString(){return Ne.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}verify(e,r,n){return bb(this._key,r,e,n)}}class vb{type="secp256k1";raw;publicKey;constructor(e,r){this.raw=Eb(e),this.publicKey=new Of(r??kb(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}sign(e,r){return yb(this.raw,e,r)}}function xb(t){return new vb(t)}function Mf(t){return new Of(t)}function Sb(t){return qt.ProjectivePoint.fromHex(t).toRawBytes(!0)}function Eb(t){try{return qt.getPublicKey(t,!0),t}catch(e){throw new Pu(String(e))}}function Ab(t){try{return qt.ProjectivePoint.fromHex(t),t}catch(e){throw new Tu(String(e))}}function kb(t){try{return qt.getPublicKey(t,!0)}catch(e){throw new Pu(String(e))}}async function Ib(t,e){return gy()}function fa(t,e){const{Type:r,Data:n}=ar.decode(t),o=n??new Uint8Array;switch(r){case le.RSA:return Jy(o,e);case le.Ed25519:return Sf(o);case le.secp256k1:return Mf(o);case le.ECDSA:return Ku(o);default:throw new Ss}}function Cb(t){const{Type:e,Data:r}=ar.decode(t.digest),n=r??new Uint8Array;switch(e){case le.Ed25519:return Sf(n);case le.secp256k1:return Mf(n);case le.ECDSA:return Ku(n);default:throw new Ss}}function Ns(t){return ar.encode({Type:le[t.type],Data:t.raw})}function Rb(t){const e=Qo.decode(t),r=e.Data??new Uint8Array;switch(e.Type){case le.RSA:return Yy(r);case le.Ed25519:return py(r);case le.secp256k1:return xb(r);case le.ECDSA:return ow(r);default:throw new Ss}}function Tb(t){return Qo.encode({Type:le[t.type],Data:t.raw})}const jf=Symbol.for("nodejs.util.inspect.custom"),Pb=114;class dc{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()})`}[Nu]=!0;toString(){return this.string==null&&(this.string=Ne.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return ce.createV1(Pb,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return tt(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return tt(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[jf](){return`PeerId(${this.toString()})`}}class Uf extends dc{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}}class $f extends dc{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}}class Hf extends dc{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}}const Nb=2336;class qf{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=Qn.digest(we(this.url))}[jf](){return`PeerId(${this.url})`}[Nu]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return ce.createV1(Nb,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=J(e)),e.toString()===this.toString())}}const Lb=114,Tl=2336;function Bb(t,e){let r;if(t.charAt(0)==="1"||t.charAt(0)==="Q")r=_u(Ne.decode(`z${t}`));else{if(t.startsWith("k51qzi5uqu5")||t.startsWith("kzwfwjn5ji4")||t.startsWith("k2k4r8")||t.startsWith("bafz"))return _b(ce.parse(t));throw new et('Please pass a multibase decoder for strings that do not start with "1" or "Q"')}return Kf(r)}function Xr(t){if(t.type==="Ed25519")return new $f({multihash:t.toCID().multihash,publicKey:t});if(t.type==="secp256k1")return new Hf({multihash:t.toCID().multihash,publicKey:t});if(t.type==="RSA")return new Uf({multihash:t.toCID().multihash,publicKey:t});throw new Ss}function Kf(t){if(Fb(t))return new Uf({multihash:t});if(Db(t))try{const e=Cb(t);if(e.type==="Ed25519")return new $f({multihash:t,publicKey:e});if(e.type==="secp256k1")return new Hf({multihash:t,publicKey:e})}catch{const r=J(t.digest);return new qf(new URL(r))}throw new mg("Supplied PeerID Multihash is invalid")}function _b(t){if(t?.multihash==null||t.version==null||t.version===1&&t.code!==Lb&&t.code!==Tl)throw new gg("Supplied PeerID CID is invalid");if(t.code===Tl){const e=J(t.multihash.digest);return new qf(new URL(e))}return Kf(t.multihash)}function Db(t){return t.code===Qn.code}function Fb(t){return t.code===Xa.code}class zf extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}}class Ob extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}}class pn extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}}class Pl extends Error{static name="StreamBufferError";constructor(e="The stream buffer was full"){super(e),this.name="StreamBufferError"}}class Mb extends Event{data;constructor(e,r){super("message",r),this.data=e}}class uc extends Event{error;local;constructor(e,r,n){super("close",n),this.error=r,this.local=e}}class jb extends uc{constructor(e,r){super(!0,e,r)}}class Ub extends uc{constructor(e,r){super(!1,e,r)}}const $b=t=>t/2**32|0,Hb=t=>t>>>0;function qb(t,e,r,n){const o=$b(r),s=Hb(r);t.setUint32(e,n?s:o,n),t.setUint32(e+4,n?o:s,n)}function ha(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const pa=t=>t?`"${t}" `:"";function It(t,e=""){if(typeof t!="number")throw new TypeError(pa(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(pa(e)+"expected integer >= 0, got "+t);return t}function Ct(t,e,r=""){if(ha(t)&&(e===void 0||t.length===e))return t;e!==void 0&&It(e,"length");const n=ha(t),o=e!==void 0?` of length ${e}`:"",s=n?`length=${t.length}`:`type=${typeof t}`,i=pa(r)+"expected Uint8Array"+o+", got "+s;throw n?new RangeError(i):new TypeError(i)}function fc(t){if(typeof t!="function"||typeof t.create!="function")throw new TypeError("expected hash wrapped by utils.createHasher");if(It(t.outputLen),It(t.blockLen),t.outputLen<1||t.blockLen<1)throw new Error("hash blockLen / outputLen must be >= 1")}const Kb=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError((e==="object"?"":`"${e}" `)+"expected object, got type="+typeof t)},Nl=(t,e)=>{Kb(t,e);const r=Object.getPrototypeOf(t);if(r!==Object.prototype&&r!==null)throw new TypeError(`"${e}" expected plain object`);if(Object.hasOwn(t,"__proto__"))throw new TypeError(`"${e}.__proto__" is not allowed`)};function es(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function Vf(t,e){Ct(t,void 0,"output");const r=e.outputLen;if(!(t.length>=r))throw new RangeError('"output" expected length >= '+r)}function Rk(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function nr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function ni(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function st(t,e){return t<<32-e|t>>>e}function Tk(t,e){return t<<e|t>>>32-e>>>0}const zb=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Vb(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function Wb(t){for(let e=0;e<t.length;e++)t[e]=Vb(t[e]);return t}const Pk=zb?t=>t:Wb,Wf=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Gb=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function hc(t){if(Ct(t),Wf)return t.toHex();let e="";for(let r=0;r<t.length;r++)e+=Gb[t[r]];return e}function Ll(t){return t>=48&&t<=57?t-48:t>=65&&t<=70?t-55:t>=97&&t<=102?t-87:void 0}function Gf(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);if(Wf)try{return Uint8Array.fromHex(t)}catch(o){throw o instanceof SyntaxError?new RangeError(o.message):o}const e=t.length,r=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(r);for(let o=0,s=0;o<r;o++,s+=2){const i=Ll(t.charCodeAt(s)),a=Ll(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)}n[o]=i*16+a}return n}function Xb(t){const e=globalThis;if(typeof e.scheduler?.yield=="function"){const r=e.scheduler.yield();return t&&r.catch(t),r}return new Promise(r=>e.setTimeout(r,0))}async function Nk(t,e,r,n){if(It(t,"iters"),It(e,"tick"),typeof r!="function")throw new TypeError("callback must be a function");let o=Date.now();for(let s=0;s<t;s++){r(s);const i=Date.now()-o;i>=0&&i<e||(await Xb(n),o=Date.now())}}function Yb(t){if(typeof t!="string")throw new TypeError("string expected");const e=new TextEncoder().encode(t);try{return new Uint8Array(e)}finally{nr(e)}}function Lk(t,e=""){return typeof t=="string"?Yb(t):Ct(t,void 0,e)}function Zb(t,e,r="opts"){return Nl(t,"defaults"),e!==void 0&&Nl(e,r),Object.assign(Object.create(null),t,e)}function Jb(t,e={}){if(typeof t!="function")throw new TypeError('"hashCons" expected function, got type='+typeof t);e=Zb({},e,"info");const r=(o,s)=>t(s).update(o).digest(),n=t(void 0);return r.outputLen=n.outputLen,r.blockLen=n.blockLen,r.canXOF=n.canXOF,r.create=o=>t(o),Object.assign(r,e),Object.freeze(r)}function Qb(t=32){It(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 e0=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function t0(t,e,r){return t&e^~t&r}function r0(t,e,r){return t&e^t&r^e&r}class n0{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,r,n,o){this.blockLen=e,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=ni(this.buffer)}update(e){es(this),Ct(e);const{view:r,buffer:n,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=ni(e);for(;o<=s-a;a+=o)this.process(l,a);i=!0;continue}n.set(a===0&&c===s?e:e.subarray(a,a+c),this.pos),this.pos+=c,a+=c,this.pos===o&&(this.process(r,0),this.pos=0,i=!0)}return this.length+=e.length,i&&this.roundClean(),this}digestInto(e){es(this),Vf(e,this),this.finished=!0;const{buffer:r,view:n,blockLen:o,isLE:s}=this;let{pos:i}=this;r[i++]=128,r.fill(0,i),this.padOffset>o-i&&(this.process(n,0),r.fill(0)),qb(n,o-8,this.length*8,s),this.process(n,0),this.roundClean();const a=e===r?n:ni(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:r}=this;this.digestInto(e);const n=e.slice(0,r);return this.destroy(),n}_cloneIntoMeta(e){const{buffer:r,length:n,finished:o,destroyed:s,pos:i}=this;return e.destroyed=s,e.finished=o,e.length=n,e.pos=i,i&&e.buffer.set(r),e}clone(){return this._cloneInto()}}const o0=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),s0=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 i0 extends n0{A=0;B=0;C=0;D=0;E=0;F=0;G=0;H=0;constructor(e,r){super(64,e,8,!1),this.A=r[0]|0,this.B=r[1]|0,this.C=r[2]|0,this.D=r[3]|0,this.E=r[4]|0,this.F=r[5]|0,this.G=r[6]|0,this.H=r[7]|0}get(){const{A:e,B:r,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,r,n,o,s,i,a,c]}set(e,r,n,o,s,i,a,c){this.A=e|0,this.B=r|0,this.C=n|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,r){for(let u=0;u<16;u++,r+=4)_t[u]=e.getUint32(r,!1);for(let u=16;u<64;u++){const f=_t[u-15],h=_t[u-2],g=st(f,7)^st(f,18)^f>>>3,m=st(h,17)^st(h,19)^h>>>10;_t[u]=m+_t[u-7]+g+_t[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=st(a,6)^st(a,11)^st(a,25),h=d+f+t0(a,c,l)+s0[u]+_t[u]|0,m=(st(n,2)^st(n,13)^st(n,22))+r0(n,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+m|0}n=n+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(n,o,s,i,a,c,l,d)}roundClean(){nr(_t)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),nr(this.buffer)}}class a0 extends i0{constructor(){super(32,o0)}}const oi=Jb(()=>new a0,e0(1));function Xf(t,e,r=()=>{}){if(!Array.isArray(t))throw new TypeError(`"${e}" expected array, got type=${typeof t}`);for(let n=0;n<t.length;n++)r(t[n],`${e}[${n}]`);return t}const jr=(t,e,r)=>Ct(t,e,r),Yf=It;function Ur(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 Dn(t,e){if(typeof t!="function")throw new TypeError(`"${e}" is invalid: expected function, got ${typeof t}`);return t}const c0=hc,l0=t=>Gf(t),Zf=ha,Jf=t=>Qb(t),ts=BigInt(0),Bl=BigInt(1),d0=t=>t?`"${t}" `:"";function Ls(t,e=""){if(typeof t!="boolean")throw new TypeError(d0(e)+"expected boolean, got type="+typeof t);return t}function u0(t){if(typeof t=="bigint"){if(!or(t))throw new RangeError("positive bigint expected, got "+t)}else Yf(t);return t}function ga(t,e=""){if(typeof t!="number"){const r=e&&`"${e}" `;throw new TypeError(r+"expected number, got type="+typeof t)}if(!Number.isSafeInteger(t)){const r=e&&`"${e}" `;throw new RangeError(r+"expected safe integer, got "+t)}}function Qf(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);return t===""?ts:BigInt("0x"+t)}function eh(t){return Qf(hc(t))}function rs(t){return Qf(hc(Kn(Ct(t)).reverse()))}function th(t,e){if(It(e),e===0)throw new Error("zero output length is invalid");t=u0(t);const r=e*2,n=t.toString(16);if(n.length>r)throw new RangeError("number is too large");return Gf(n.padStart(r,"0"))}function rh(t,e){return th(t,e).reverse()}function Kn(t){return Uint8Array.from(jr(t))}function or(t){return typeof t=="bigint"&&ts<=t}function nh(t,e,r){return or(t)&&or(e)&&or(r)&&e<=t&&t<r}function Fn(t,e,r,n){if(!nh(e,r,n))throw new RangeError("expected valid "+t+": "+r+" <= n < "+n+", got "+e)}function f0(t){if(t<ts)throw new Error("expected non-negative bigint, got "+t);return t===ts?0:t.toString(2).length}const h0=t=>(ga(t,"n"),(Bl<<BigInt(t))-Bl);function ns(t,e={},r={},n="object"){Ur(t,n),Ur(e,"fields"),Ur(r,"optFields");function o(i,a,c){const l=n==="object"?`param "${String(i)}"`:`"${n}.${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(r,!0)}const xe=BigInt(0),ae=BigInt(1),Qt=BigInt(2),oh=BigInt(3),pc=BigInt(4),sh=BigInt(5),p0=BigInt(7),ih=BigInt(8),g0=BigInt(9),m0=BigInt(15),ah=BigInt(16),w0=BigInt("0x10000000000000000");function ie(t,e){if(e<=xe)throw new Error("mod: expected positive modulus, got "+e);const r=t%e;return r>=xe?r:e+r}function y0(t,e,r){if(r<=ae)throw new Error("pow: expected modulus > 1, got "+r);if(typeof e!="bigint")throw new TypeError("invalid exponent: expected bigint, got "+typeof e);if(e<xe)throw new Error("invalid exponent, negatives unsupported");if(e===xe)return ae;if(e===ae)return t;let n=t%r;if(n<xe&&(n+=r),e<w0){let a=ae;for(;e>xe;)e&ae&&(a=a*n%r),n=n*n%r,e>>=ae;return a}const o=[];for(;e>xe;)o.push(Number(e&m0)),e>>=pc;const s=new Array(16);s[0]=ae,s[1]=n;for(let a=2;a<16;a++)s[a]=s[a-1]*n%r;let i=s[o[o.length-1]];for(let a=o.length-2;a>=0;a--){i=i*i%r,i=i*i%r,i=i*i%r,i=i*i%r;const c=o[a];c!==0&&(i=i*s[c]%r)}return i}function Ze(t,e,r){if(r<=ae)throw new Error("pow2: expected modulus > 1, got "+r);if(e<xe)throw new Error("pow2: expected non-negative exponent, got "+e);let n=t;for(;e-- >xe;)n*=n,n%=r;return n}function _l(t,e){if(t===xe)throw new Error("invert: expected non-zero number");if(e<=ae)throw new Error("invert: expected modulus > 1, got "+e);let r=ie(t,e),n=e,o=xe,s=ae;for(;r!==xe;){const a=n/r,c=n-r*a,l=o-s*a;n=r,r=c,o=s,s=l}if(n!==ae)throw new Error("invert: does not exist");return ie(o,e)}function gc(t,e,r){const n=t;if(!n.eql(n.sqr(e),r))throw new Error("Cannot find square root")}function mc(t,e){if((t&ae)===xe)throw new Error(e+": expected odd modulus, got "+t)}function ch(t,e){const r=t,n=(r.ORDER+ae)/pc,o=r.pow(e,n);return gc(r,o,e),o}function b0(t,e){const r=t,n=(r.ORDER-sh)/ih,o=r.mul(e,Qt),s=r.pow(o,n),i=r.mul(e,s),a=r.mul(r.mul(i,Qt),s),c=r.mul(i,r.sub(a,r.ONE));return gc(r,c,e),c}function v0(t){const e=wc(t),r=lh(t),n=r(e,e.neg(e.ONE)),o=r(e,n),s=r(e,e.neg(n)),i=(t+p0)/ah;return((a,c)=>{const l=a;let d=l.pow(c,i),u=l.mul(d,n);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 y=l.eql(l.sqr(u),c),w=l.cmov(d,u,y);return gc(l,w,c),w})}function lh(t){if(t<oh)throw new Error("sqrt is not defined for small field");mc(t,"tonelliShanks");let e=t-ae,r=0;for(;e%Qt===xe;)e/=Qt,r++;let n=Qt;const o=wc(t);for(;os(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return ch;let s=o.pow(n,e);const i=(e+ae)/Qt;return function(c,l){const d=c;if(d.is0(l))return l;if(os(d,l)!==1)throw new Error("Cannot find square root");let u=r,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,y=d.sqr(h);for(;!d.eql(y,d.ONE);)if(m++,y=d.sqr(y),m===u)throw new Error("Cannot find square root");const w=ae<<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 x0(t){return mc(t,"Fp.sqrt"),t%pc===oh?ch:t%ih===sh?b0:t%ah===g0?v0(t):lh(t)}const S0=(t,e)=>(ie(t,e)&ae)===ae,E0=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function zn(t){if(Ur(t,"field"),typeof t.ORDER!="bigint")throw new TypeError('param "ORDER" is invalid: expected bigint, got '+typeof t.ORDER);ga(t.BYTES,"BYTES"),ga(t.BITS,"BITS");for(const e of E0)Dn(t[e],"field."+e);if(t.BYTES<1||t.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(t.ORDER<=ae)throw new Error("invalid field: expected ORDER > 1, got "+t.ORDER);return t}function dh(t,e,r=!1){zn(t),Xf(e,"nums"),Ls(r,"passZero");const n=t,o=new Array(e.length).fill(r?n.ZERO:void 0),s=e.reduce((a,c,l)=>n.is0(c)?a:(o[l]=a,n.mul(a,c)),n.ONE),i=n.inv(s);return e.reduceRight((a,c,l)=>n.is0(c)?a:(o[l]=n.mul(a,o[l]),n.mul(a,c)),i),o}function os(t,e){zn(t);const r=t;mc(r.ORDER,"FpLegendre");const n=(r.ORDER-ae)/Qt,o=r.pow(e,n),s=r.eql(o,r.ONE),i=r.eql(o,r.ZERO),a=r.eql(o,r.neg(r.ONE));if(!s&&!i&&!a)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function A0(t,e){if(e!==void 0&&Yf(e),t<=xe)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 r=f0(t);if(e!==void 0&&e<r)throw new Error(`invalid n length: expected nBitLength (${e}) >= bitLen(n) (${r})`);const n=e!==void 0?e:r,o=Math.ceil(n/8);return{nBitLength:n,nByteLength:o}}const Dl=new WeakMap;class Fl{ORDER;BITS;BYTES;isLE;ZERO=xe;ONE=ae;_lengths;_mod;constructor(e,r={}){if(e<=ae)throw new Error("invalid field: expected ORDER > 1, got "+e);let n;this.isLE=!1,r!=null&&typeof r=="object"&&(typeof r.BITS=="number"&&(n=r.BITS),typeof r.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:r.sqrt,enumerable:!0}),typeof r.isLE=="boolean"&&(this.isLE=r.isLE),r.allowedLengths&&(this._lengths=Object.freeze(r.allowedLengths.slice())),typeof r.modFromBytes=="boolean"&&(this._mod=r.modFromBytes));const{nBitLength:o,nByteLength:s}=A0(e,n);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 ie(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return xe<=e&&e<this.ORDER}is0(e){return e===xe}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&ae)===ae}neg(e){return ie(-e,this.ORDER)}eql(e,r){return e===r}sqr(e){return ie(e*e,this.ORDER)}add(e,r){return ie(e+r,this.ORDER)}sub(e,r){return ie(e-r,this.ORDER)}mul(e,r){return ie(e*r,this.ORDER)}pow(e,r){return y0(e,r,this.ORDER)}div(e,r){return ie(e*_l(r,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,r){return e+r}subN(e,r){return e-r}mulN(e,r){return e*r}inv(e){return _l(e,this.ORDER)}sqrt(e){let r=Dl.get(this);return r||Dl.set(this,r=x0(this.ORDER)),r(this,e)}toBytes(e){return this.isLE?rh(e,this.BYTES):th(e,this.BYTES)}fromBytes(e,r=!1){jr(e);const{_lengths:n,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(n){if(e.length<1||!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" 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):eh(e);if(a&&(c=ie(c,i)),!r&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return dh(this,e,!0)}cmov(e,r,n){return Ls(n,"condition"),n?r:e}}function wc(t,e={}){return Object.freeze(Fl.prototype),new Fl(t,e)}const yc=BigInt(0),Vn=BigInt(1),k0=BigInt(4),si=16,Ol=128,I0=5,Ml=2**31;function bc(t){const e=t;if(typeof e!="function")throw new TypeError('"Point" expected constructor, got type='+typeof t);Dn(e.fromAffine,"Point.fromAffine"),Dn(e.fromBytes,"Point.fromBytes"),Dn(e.fromHex,"Point.fromHex"),Ur(e.BASE,"Point.BASE"),Ur(e.ZERO,"Point.ZERO"),zn(e.Fp),zn(e.Fn)}function C0(t,e){bc(t),uh(e,t);const r=dh(t.Fp,e.map(n=>n.Z));return e.map((n,o)=>t.fromAffine(n.toAffine(r[o])))}function R0(t,e,r=1){if(!Number.isSafeInteger(t)||t<r||t>e)throw new Error("invalid window size, expected ["+r+".."+e+"], got W="+t)}function T0(t,e){const r=t*(4*e+128);if(r>Ml)throw new Error("invalid window size: table would need ~"+Math.ceil(r/2**20)+" MiB, max "+Ml/2**20+" MiB")}function P0(t,e){if(t!==void 0){Dn(t,"randomBytes");try{const r=t(e);if(!Zf(r)||r.length!==e)return}catch{return}return t}}function uh(t,e){Xf(t,"points"),t.forEach((r,n)=>{if(!(r instanceof e))throw new Error("invalid point at index "+n)})}function N0(t,e,r){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((n,o)=>{if(!(r===void 0?e.isValid(n):or(n)&&n<r))throw new Error("invalid scalar at index "+o)})}const fh=new WeakMap;function ii(t){return fh.get(t)||1}function L0(t,e){const r=t.double(),n=[t];for(let o=1;o<e;o++)n.push(n[o-1].add(r));return n}function B0(t,e){const r=2**e,n=r/2,o=BigInt(r-1),s=[];for(;t>yc;){let i=0;t&Vn&&(i=Number(t&o),i>=n&&(i-=r),t-=BigInt(i)),s.push(i),t>>=Vn}return s}function _0(t,e,r){const n=2**e,o=n/2,s=BigInt(n-1),i=BigInt(e),a=[];for(let c=0;c<r;c++){let l=Number(t&s);t>>=i,l>o&&(l-=n,t+=Vn),a.push(l)}if(t!==yc)throw new Error("invalid wnaf");return a}function D0(t,e,r){let n=0;for(const s of r)n=Math.max(n,s.length);let o=t;for(let s=n-1;s>=0;s--){s!==n-1&&(o=o.double());for(let i=0;i<r.length;i++){const a=r[i][s];if(a){const c=e[i][Math.abs(a)-1>>1];o=o.add(a<0?c.negate():c)}}}return o}class F0{Point;BASE;ZERO;randomBytes;wnafPrecomputes=new WeakMap;baseCanBeBlinded;bits;constructor(e,r){bc(e),this.randomBytes=P0(r,si),this.Point=e,this.BASE=e.BASE,this.ZERO=e.ZERO,this.bits=e.Fn.BITS}buildWnafTable(e,r,n){const o=Math.ceil(n/r)+1,s=2**(r-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:r,bits:n,windows:o,comp:i}}wnafCachedCT(e,r){const{W:n,windows:o,comp:s}=e,i=2**(n-1),a=_0(r,n,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 y=1;y<i;y++)g=y===h?s[f+y]: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,r,n,o){let s=this.wnafPrecomputes.get(r),i=s?.find(a=>a.W===e&&a.bits===n);return i||(i=this.buildWnafTable(r,e,n),typeof o=="function"&&(i={...i,comp:o(i.comp)}),s||(s=[],this.wnafPrecomputes.set(r,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,r){if(this.assertPoint(e),!nh(r,Vn,this.Point.Fn.ORDER))throw new Error("invalid scalar")}runCT(e,r,n,o){const s=ii(e);return s===1?this.fixedWindowCT(e,r,n):this.wnafCachedCT(this.getWnafPrecomputes(s,e,n,o),r)}mulCT(e,r,n){return this.validateMulInput(e,r),this.runCT(e,r,this.bits,n)}mulCTBlinded(e,r,n){if(this.validateMulInput(e,r),this.randomBytes===void 0)throw new Error("randomBytes is required for scalar blinding");const o=this.Point.Fn.BITS+Ol,s=this.randomBytes(si);if(!Zf(s)||s.length!==si)throw new Error("randomBytes returned invalid byte array");s[0]=s[0]&63|128;const i=r+eh(s)*this.Point.Fn.ORDER;return this.runCT(e,i,o,n)}fixedWindowCT(e,r,n){const o=I0,s=1<<o,i=h0(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(n/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(r>>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,r){return this.randomBytes===void 0?!1:r===Vn?!0:e!==this.BASE?!1:(this.baseCanBeBlinded===void 0&&(this.baseCanBeBlinded=this.mulUnsafe(this.BASE,this.Point.Fn.ORDER).is0()),this.baseCanBeBlinded)}mulSecret(e,r,n,o){return this.shouldBlind(e,n)?this.mulCTBlinded(e,r,o):this.mulCT(e,r,o)}mulUnsafe(e,r,n){if(this.assertPoint(e),!or(r))throw new Error("invalid scalar");const o=ii(e);if(o===1||r>=this.Point.Fn.ORDER)return O0(this.Point,[e],[r],!0);const s=this.getWnafPrecomputes(o,e,this.bits,n);return this.wnafCachedCT(s,r).p}setWindowSize(e,r){this.assertPoint(e),R0(r,this.bits);const n=Math.ceil((this.bits+Ol)/r)+1;T0(n*2**(r-1),this.Point.Fp.BYTES),fh.set(e,r),this.wnafPrecomputes.delete(e)}hasWindowSize(e){return ii(e)!==1}}function O0(t,e,r,n=!1){if(bc(t),uh(e,t),Ls(n,"allowOversized"),N0(r,t.Fn,n?t.Fn.ORDER**k0:void 0),e.length!==r.length)throw new Error("arrays of points and scalars must have equal length");const o=e.map(i=>L0(i,4)),s=r.map(i=>B0(i,4));return D0(t.ZERO,o,s)}function jl(t,e,r){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return zn(e),e}else return wc(t,{isLE:r})}function M0(t,e,r={},n){if(n===void 0&&(n=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);ns(r);for(const c of["p","n","h"]){const l=e[c];if(!(or(l)&&l!==yc))throw new Error(`CURVE.${c} must be positive bigint`)}const o=jl(e.p,r.Fp,n),s=jl(e.n,r.Fn,n),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 j0(t,e){return function(n){const o=t(n);return{secretKey:o,publicKey:e(o)}}}const vo=BigInt(0),xo=BigInt(1),So=BigInt(2),U0=BigInt(4),Ul=BigInt(8);function $0(t,e,r,n){const o=t.sqr(r),s=t.sqr(n),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 H0(t,e={}){ns(e,{},{},"extraOpts");const r=e,n=M0("edwards",t,r,r.FpFnLE),{Fp:o,Fn:s}=n;let i=n.CURVE;const{h:a}=i;if(os(o,i.a)!==1)throw new Error("edwards: CURVE.a must be a square in Fp for complete addition formulas");if(os(o,i.d)!==-1)throw new Error("edwards: CURVE.d must be a non-square in Fp for complete addition formulas");ns(r,{},{uvRatio:"function",randomBytes:"function"});const c=r.randomBytes===void 0?Jf:r.randomBytes,l=So<<BigInt(o.BYTES*8)-xo;function d(I){if(!o.isOdd)throw new Error("Field does not have .isOdd()");return o.isOdd(I)}const u=r.uvRatio===void 0?(I,v)=>{try{return{isValid:!0,value:o.sqrt(o.div(I,v))}}catch{return{isValid:!1,value:vo}}}:r.uvRatio;if(!$0(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,v,A=!1){const B=A?xo:vo;return Fn("coordinate "+I,v,B,l),v}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(v,A,B,T){this.X=h("x",v),this.Y=h("y",A),this.Z=h("z",B,!0),this.T=h("t",T),Object.freeze(this)}static CURVE(){return i}static fromAffine(v){if(v instanceof m)throw new Error("extended point not allowed");const{x:A,y:B}=v||{};return h("x",A),h("y",B),new m(A,B,o.ONE,o.mul(A,B))}static fromBytes(v,A=!1){const B=o.BYTES,{a:T,d:N}=i;v=Kn(jr(v,B,"point")),Ls(A,"zip215");const k=Kn(v),x=v[B-1];k[B-1]=x&-129;const S=rs(k),R=A?l:o.ORDER;Fn("point.y",S,vo,R);const P=o.sqr(S),b=o.sub(P,o.ONE),E=o.sub(o.mulN(N,P),T);let{isValid:C,value:L}=u(b,E);if(!C)throw new Error("bad point: invalid y coordinate");const M=d(L),$=(x&128)!==0;if(!A&&o.is0(L)&&$)throw new Error("bad point: x=0 and x_0=1");return $!==M&&(L=o.neg(L)),m.fromAffine({x:L,y:S})}static fromHex(v,A=!1){return m.fromBytes(l0(v),A)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(v=6,A=!0){return w.setWindowSize(this,v),A||this.multiply(So),this}assertValidity(){const v=this,{a:A,d:B}=i;if(v.is0())throw new Error("bad point: ZERO");const{X:T,Y:N,Z:k,T:x}=v,S=o.sqr(T),R=o.sqr(N),P=o.sqr(k),b=o.sqr(P),E=o.mul(S,A),C=o.mul(o.add(E,R),P),L=o.add(b,o.mul(B,o.mul(S,R)));if(!o.eql(C,L))throw new Error("bad point: equation left != right (1)");const M=o.mul(T,N),$=o.mul(k,x);if(!o.eql(M,$))throw new Error("bad point: equation left != right (2)")}equals(v){g(v);const{X:A,Y:B,Z:T}=this,{X:N,Y:k,Z:x}=v,S=o.mul(A,x),R=o.mul(N,T),P=o.mul(B,x),b=o.mul(k,T);return o.eql(S,R)&&o.eql(P,b)}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:v,Y:A,Z:B}=this,T=o.sqr(v),N=o.sqr(A),k=o.mul(o.sqr(B),So),x=f(T),S=o.addN(v,A),R=o.sub(o.subN(o.sqr(S),T),N),P=o.addN(x,N),b=o.subN(P,k),E=o.subN(x,N),C=o.mul(R,b),L=o.mul(P,E),M=o.mul(R,E),$=o.mul(b,P);return new m(C,L,$,M)}add(v){g(v);const{d:A}=i,{X:B,Y:T,Z:N,T:k}=this,{X:x,Y:S,Z:R,T:P}=v,b=o.mul(B,x),E=o.mul(T,S),C=o.mul(o.mulN(k,A),P),L=o.mul(N,R),M=o.sub(o.subN(o.mulN(o.addN(B,T),o.addN(x,S)),b),E),$=o.subN(L,C),j=o.addN(L,C),D=o.sub(E,f(b)),_=o.mul(M,$),F=o.mul(j,D),q=o.mul(M,D),H=o.mul($,j);return new m(_,F,H,q)}subtract(v){return g(v),this.add(v.negate())}multiply(v){if(!s.isValidNot0(v))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:A,f:B}=w.mulSecret(this,v,a,y);return y([A,B])[0]}multiplyUnsafe(v){if(!s.isValid(v))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return v===vo?m.ZERO:this.is0()||v===xo?this:w.mulUnsafe(this,v,y)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return w.mulUnsafe(this,i.n).is0()}toAffine(v){const A=this;let B=v;if(B!=null&&typeof B!="bigint")throw new TypeError('"invertedZ" expected bigint, got type='+typeof B);const{X:T,Y:N,Z:k}=A,x=A.is0();B==null&&(B=x?o.create(Ul):o.inv(k));const S=o.mul(T,B),R=o.mul(N,B),P=o.mul(k,B);if(x)return{x:o.ZERO,y:o.ONE};if(!o.eql(P,o.ONE))throw new Error("invZ was invalid");return{x:S,y:R}}clearCofactor(){return a===xo?this:a===So?this.double():a===U0?this.double().double():a===Ul?this.double().double().double():this.multiplyUnsafe(a)}toBytes(){const{x:v,y:A}=this.toAffine(),B=o.toBytes(A);return B[B.length-1]|=d(v)?128:0,B}toHex(){return c0(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const y=I=>C0(m,I),w=new F0(m,c);return w.bits>=6&&m.BASE.precompute(6),Object.freeze(m.prototype),Object.freeze(m),m}const Wt=BigInt(0),ze=BigInt(1),Eo=BigInt(2);function $l(t,e){return t+e-(e>>ze<<ze)}function q0(t){const e=BigInt(6)*t;return(r,n,o)=>{const s=n+o,a=((e+o-n)*r+n)%t;return{x_2:a,x_3:s-a}}}function K0(t){return ns(t,{P:"bigint",type:"string",adjustScalarBytes:"function",powPminus2:"function"},{randomBytes:"function",scalarMultBase:"function"}),Object.freeze({...t})}function z0(t){const e=K0(t),{P:r,type:n,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,a=e.scalarMultBase,c=n==="x25519";if(!c&&n!=="x448")throw new Error("invalid type");const l=i===void 0?Jf:i,d=c?255:448,u=q0(r),f=c?32:56,h=BigInt(c?9:5),g=BigInt(c?121665:39081),m=c?Eo**BigInt(254):Eo**BigInt(447),y=c?BigInt(8)*(Eo**BigInt(251)-ze):BigInt(4)*(Eo**BigInt(445)-ze),w=m+y+ze,I=L=>ie(L,r),v=A(h);function A(L){return rh(I(L),f)}function B(L){const M=Kn(jr(L,f,"uCoordinate"));return c&&(M[31]&=127),I(rs(M))}function T(L){return rs(o(Kn(jr(L,f,"scalar"))))}const N=new Set(c?[Wt,ze,r-ze,BigInt("325606250916557431795983626356110631294008115727848805560023387167927233504"),BigInt("39382357235489614581723060781553021112529911719440698176882885853963445705823")]:[Wt,ze,r-ze]);function k(L,M){const $=B(M);if(N.has($))throw new Error("invalid private or public key received");const j=P($,T(L));if(j===Wt)throw new Error("invalid private or public key received");return A(j)}function x(L){if(a===void 0)return k(L,v);const M=T(L);Fn("scalar",M,m,w);const $=I(a(M));if($===Wt)throw new Error("invalid private or public key received");return A($)}const S=x,R=k;function P(L,M){Fn("u",L,Wt,r),Fn("scalar",M,m,w);const $=M,j=L;let D=ze,_=Wt,F=L,q=ze;const H=$^$>>ze;for(let W=BigInt(d-1);W>=Wt;W--){const X=$l(r,H>>W);({x_2:D,x_3:F}=u(X,D,F)),{x_2:_,x_3:q}=u(X,_,q);const G=D+_,Y=I(G*G),se=D-_,Pe=I(se*se),De=Y-Pe,oe=F+q,nt=F-q,br=I(nt*G),Rt=I(oe*se),Xe=br+Rt,io=br-Rt;F=I(Xe*Xe),q=I(j*I(io*io)),D=I(Y*Pe),_=I(De*(Y+I(g*De)))}const K=$l(r,$);({x_2:D,x_3:F}=u(K,D,F)),{x_2:_,x_3:q}=u(K,_,q);const z=s(_);return I(D*z)}const b={secretKey:f,publicKey:f,seed:f},E=L=>(L=L===void 0?l(f):L,jr(L,b.seed,"seed"),L),C={randomSecretKey:E};return Object.freeze(b),Object.freeze(C),Object.freeze({keygen:j0(E,S),getSharedSecret:R,getPublicKey:S,scalarMult:k,scalarMultBase:x,utils:C,GuBytes:v.slice(),lengths:b})}const Hl=BigInt(0),V0=BigInt(1),ql=BigInt(2),W0=BigInt(3),G0=BigInt(5),X0=BigInt(8),Bs=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),Y0={p:Bs,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:X0,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function hh(t){const e=BigInt(10),r=BigInt(20),n=BigInt(40),o=BigInt(80),s=Bs,a=t*t%s*t%s,c=Ze(a,ql,s)*a%s,l=Ze(c,V0,s)*t%s,d=Ze(l,G0,s)*l%s,u=Ze(d,e,s)*d%s,f=Ze(u,r,s)*u%s,h=Ze(f,n,s)*f%s,g=Ze(h,o,s)*h%s,m=Ze(g,o,s)*h%s,y=Ze(m,e,s)*d%s;return{pow_p_5_8:Ze(y,ql,s)*t%s,b2:a}}function Z0(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Kl=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function J0(t,e){const r=Bs,n=ie(e*e*e,r),o=ie(n*n*e,r),s=hh(t*o).pow_p_5_8;let i=ie(t*n*s,r);const a=ie(e*i*i,r),c=i,l=ie(i*Kl,r),d=a===t,u=a===ie(-t,r),f=a===ie(-t*Kl,r);return d&&(i=c),(u||f)&&(i=l),S0(i,r)&&(i=ie(-i,r)),{isValid:d||u,value:i}}const zl=H0(Y0,{uvRatio:J0}),Ao=(()=>{const t=Bs,e=r=>{const{pow_p_5_8:n,b2:o}=hh(r);return ie(Ze(n,W0,t)*o,t)};return z0({P:t,type:"x25519",powPminus2:e,adjustScalarBytes:Z0,scalarMultBase:r=>{const n=ie(r,zl.Fn.ORDER);if(n===Hl)return Hl;const o=zl.BASE.multiply(n);return ie((o.Z+o.Y)*e(ie(o.Z-o.Y,t)),t)}})})();class Vl{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,r){if(fc(e),Ct(r,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 n=this.blockLen,o=new Uint8Array(n);o.set(r.length>n?e.create().update(r).digest():r);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),nr(o)}update(e){return es(this),this.iHash.update(e),this}digestInto(e){es(this),Vf(e,this),this.finished=!0;const r=e.subarray(0,this.outputLen);this.iHash.digestInto(r),this.oHash.update(r),this.oHash.digestInto(r),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:r,iHash:n,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=r._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const ph=(()=>{const t=((e,r,n)=>new Vl(e,r).update(n).digest());return t.create=(e,r)=>new Vl(e,r),t})();function Wl(){const t={};return t.promise=new Promise((e,r)=>{t.resolve=e,t.reject=r}),t}class Gl{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 ai{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Gl(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 r=this.head;this.head=r.next=new Gl(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){const r=this.tail.next;this.tail.next=null,this.tail=r,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}}class Q0 extends Error{type;code;constructor(e,r){super(e??"The operation was aborted"),this.type="aborted",this.code=r??"ABORT_ERR"}}function ev(t={}){return tv(r=>{const n=r.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},t)}function tv(t,e){e=e??{};let r=e.onEnd,n=new ai,o,s,i,a=Wl();const c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((y,w)=>{s=I=>{s=null,n.push(I);try{y(t(n))}catch(v){w(v)}return o}}):t(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=Wl()})}},l=y=>s!=null?s(y):(n.push(y),o),d=y=>(n=new ai,s!=null?s({error:y}):(n.push({error:y}),o)),u=y=>{if(i)return o;if(e?.objectMode!==!0&&y?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:y})},f=y=>i?o:(i=!0,y!=null?d(y):l({done:!0})),h=()=>(n=new ai,f(),{done:!0}),g=y=>(f(y),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:g,push:u,end:f,get readableLength(){return n.size},onEmpty:async y=>{const w=y?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let I,v;w!=null&&(I=new Promise((A,B)=>{v=()=>{B(new Q0)},w.addEventListener("abort",v)}));try{await Promise.race([a.promise,I])}finally{v!=null&&w!=null&&w?.removeEventListener("abort",v)}}},r==null)return o;const m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(y){return m.throw(y),r!=null&&(r(y),r=void 0),{done:!0}},return(){return m.return(),r!=null&&(r(),r=void 0),{done:!0}},push:u,end(y){return m.end(y),r!=null&&(r(y),r=void 0),o},get readableLength(){return m.readableLength},onEmpty:y=>m.onEmpty(y)},o}class vc extends Error{name="TimeoutError";constructor(e,r){super(e,r),Error.captureStackTrace?.(this,vc)}}const Xl=t=>t.reason??new DOMException("This operation was aborted.","AbortError");function rv(t,e){const{milliseconds:r,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout},signal:i}=e;let a,c;const d=new Promise((u,f)=>{if(typeof r!="number"||Math.sign(r)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${r}\``);if(i?.aborted){f(Xl(i));return}if(i&&(c=()=>{f(Xl(i))},i.addEventListener("abort",c,{once:!0})),t.then(u,f),r===Number.POSITIVE_INFINITY)return;const h=new vc;a=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}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 ${r} milliseconds`,f(h))},r)}).finally(()=>{d.clear(),c&&i&&i.removeEventListener("abort",c)});return d.clear=()=>{s.clearTimeout.call(void 0,a),a=void 0},d}const nv=t=>{const e=t.addEventListener||t.on||t.addListener,r=t.removeEventListener||t.off||t.removeListener;if(!e||!r)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(t),removeListener:r.bind(t)}};function ov(t,e,r){let n;const o=new Promise((s,i)=>{if(r={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...r},!(r.count>=0&&(r.count===Number.POSITIVE_INFINITY||Number.isInteger(r.count))))throw new TypeError("The `count` option should be at least 0 or more");r.signal?.throwIfAborted();const a=[e].flat(),c=[],{addListener:l,removeListener:d}=nv(t),u=async(...h)=>{const g=r.multiArgs?h:h[0];if(r.filter)try{if(!await r.filter(g))return}catch(m){n(),i(m);return}c.push(g),r.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(r.rejectionMultiArgs?h:h[0])};n=()=>{for(const h of a)d(h,u);for(const h of r.rejectionEvents)a.includes(h)||d(h,f)};for(const h of a)l(h,u);for(const h of r.rejectionEvents)a.includes(h)||l(h,f);r.signal&&r.signal.addEventListener("abort",()=>{f(r.signal.reason)},{once:!0}),r.resolveImmediately&&s(c)});if(o.cancel=n,typeof r.timeout=="number"){const s=rv(o,{milliseconds:r.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function sv(t,e,r){typeof r=="function"&&(r={filter:r}),r={...r,count:1,resolveImmediately:!1};const n=ov(t,e,r),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}class ss extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"}class iv extends Error{static name="StreamClosedError";name="StreamClosedError"}function av(t){return t.reason}function gh(t,e,r){if(e==null||t==null)return t;const n=av;if(e.aborted)return t.catch(()=>{}),Promise.reject(n(e));let o;return Promise.race([t,new Promise((s,i)=>{o=()=>{i(n(e))},e.addEventListener("abort",o)})]).finally(()=>{o!=null&&e.removeEventListener("abort",o)})}const cv=Math.pow(2,20)*4;class mh extends vg{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??cv,this.maxWriteBufferLength=e.maxWriteBufferLength,this.maxMessageSize=e.maxMessageSize,this.readBuffer=new re,this.writeBuffer=new re,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 r=()=>{this.writableNeedsDrain&&(this.log.trace("drain event received, continue sending data"),this.writableNeedsDrain=!1,this.processSendQueue()),this.onDrainPromise?.resolve()};this.addEventListener("drain",r);const n=o=>{this.onDrainPromise?.reject(o.error??new iv)};this.addEventListener("close",n)}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()),gh(this.onDrainPromise.promise,e?.signal))}async*[Symbol.asyncIterator](){if(this.readStatus!=="readable"&&this.readStatus!=="paused")return;const e=ev(),r=s=>{e.push(s.data)};this.addEventListener("message",r);const n=s=>{e.end(s.error)};this.addEventListener("close",n);const o=()=>{e.end()};this.addEventListener("remoteCloseWrite",o);try{yield*e}finally{this.removeEventListener("message",r),this.removeEventListener("close",n),this.removeEventListener("remoteCloseWrite",o)}}isReadable(){return this.status==="open"}send(e){if(this.writeStatus==="closed"||this.writeStatus==="closing")throw new pn(`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(r){this.log("failed to send reset to remote - %e",r)}this.dispatchEvent(new jb(e))}}pause(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new pn("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 pn("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 pn(`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 pn(`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 Ob;this.dispatchEvent(new Ub(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 uc))}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 r=this.writeBuffer.byteLength;let n=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 re(s);this.writeBuffer.consume(s.byteLength);const a=this.sendData(s);if(e=a.canSendMore,n+=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",n,r,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 Mb(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 Pl(`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 Pl(`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 lv=4194304;class Yl extends Error{static name="UnwrappedError";name="UnwrappedError"}class wh extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"}class dv extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"}class uv extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"}function fv(t){return typeof t?.closeRead=="function"}function hv(t){return typeof t?.close=="function"}function ci(t){return fv(t)?t.remoteWriteStatus!=="writable"&&t.readBufferLength===0:hv(t)?t.status!=="open":!1}function pv(t){return t?.addEventListener!=null&&t?.removeEventListener!=null&&t?.send!=null&&t?.push!=null&&t?.log!=null}function gv(t,e){const r=e?.maxBufferSize??lv,n=new re;let o,s=!1;if(!pv(t))throw new zf("Argument should be a Stream or a Multiaddr");const i=d=>{if(n.append(d.data),n.byteLength>r){const u=n.byteLength;n.consume(n.byteLength),o?.reject(new Error(`Read buffer overflow - ${u} > ${r}`))}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:n,async read(d){if(s===!0)throw new Yl("Stream was unwrapped");if(ci(t)){if(d?.bytes==null)return null;if(n.byteLength<d.bytes)throw t.log.error("closed after reading %d/%d bytes",n.byteLength,d.bytes),new ss(`Unexpected EOF - stream closed after reading ${n.byteLength}/${d.bytes} bytes`)}const u=d?.bytes??1;for(o=Promise.withResolvers();;){if(n.byteLength>=u){o.resolve();break}if(await gh(o.promise,d?.signal),ci(t)){if(n.byteLength===0&&d?.bytes==null)return null;break}o=Promise.withResolvers()}const f=d?.bytes??n.byteLength;if(n.byteLength<f){if(ci(t))throw t.log.error("closed while reading %d/%d bytes",n.byteLength,f),new ss(`Unexpected EOF - stream closed while reading ${n.byteLength}/${f} bytes`);return l.read(d)}const h=n.sublist(0,f);return n.consume(f),h},async write(d,u){if(s===!0)throw new Yl("Stream was unwrapped");t.send(d)||await sv(t,"drain",{signal:u?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,t.removeEventListener("message",i),t.removeEventListener("close",a),t.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(t.log("stream unwrapped with %d unread bytes",n.byteLength),t.push(n))),t}};return l}function Zl(t,e={}){const r=gv(t,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=gr(e.maxDataLength));const n=e?.lengthDecoder??kf,o=e?.lengthEncoder??xy;return{async read(i){let a=-1;const c=new re;for(;;){const d=await r.read({...i,bytes:1});if(d==null)break;c.append(d);try{a=n(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new wh("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new uv(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new dv(`Message length too long - ${a} > ${e.maxDataLength}`);const l=await r.read({...i,bytes:a});if(l==null)throw t.log.error("tried to read %d bytes but the stream closed",a),new ss(`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 ss(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await r.write(new re(o(i.byteLength),i),a)},async writeV(i,a){const c=new re(...i.flatMap(l=>[o(l.byteLength),l]));await r.write(c,a)},unwrap(){return r.unwrap()}}}const mv=1024*1024*4,wv=1024*1024*4;class yv{buffer;maxBufferSize;lengthDecoder;maxDataLength;encodingLength;constructor(e={}){this.buffer=new re,this.maxBufferSize=e.maxBufferSize??mv,this.maxDataLength=e.maxDataLength??wv,this.lengthDecoder=e.lengthDecoder??kf,this.encodingLength=e.encodingLength??gr}*decode(e){if(this.buffer.append(e),this.buffer.byteLength>this.maxBufferSize)throw new zf(`Buffer length limit exceeded - ${this.buffer.byteLength}/${this.maxBufferSize}`);for(;;){let r;try{r=this.lengthDecoder(this.buffer)}catch(s){if(s instanceof RangeError)break;throw s}if(r<0||r>this.maxDataLength)throw new wh("Invalid message length");const n=this.encodingLength(r),o=n+r;if(this.buffer.byteLength>=o){const s=this.buffer.sublist(n,o);this.buffer.consume(o),s.byteLength>0&&(yield s)}else break}}}var bv={};const Wn=65535,Jl=Wn-16,oo=!!bv?.DUMP_SESSION_KEYS,Ql=16;function ma(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const is=t=>t?`"${t}" `:"";function wa(t,e=""){if(typeof t!="boolean")throw new TypeError(is(e)+"expected boolean, got type="+typeof t);return t}function $r(t,e=""){if(typeof t!="number")throw new TypeError(is(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(is(e)+"expected integer >= 0, got "+t);return t}function ve(t,e,r=""){if(ma(t)&&(e===void 0||t.length===e))return t;e!==void 0&&$r(e,"length");const n=ma(t),o=e!==void 0?` of length ${e}`:"",s=n?`length=${t.length}`:`type=${typeof t}`,i=is(r)+"expected Uint8Array"+o+", got "+s;throw n?new RangeError(i):new TypeError(i)}const ed=(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 td(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function vv(t,e){ve(t,void 0,"output");const r=e.outputLen;if(!(t.length>=r))throw new RangeError('"output" expected length >= '+r)}function bt(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function $t(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function xv(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}const Hr=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Sv(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function Ev(t){for(let e=0;e<t.length;e++)t[e]=Sv(t[e]);return t}const er=Hr?t=>t:Ev;function Av(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 kv(t,e){if(Av(t,e)&&t.byteOffset<e.byteOffset)throw new Error("complex overlap of input and output is not supported")}function Iv(t,e){return ed(t,"defaults"),ed(e,"opts"),Object.assign(t,e)}function Cv(t,e){if(t=ve(t),e=ve(e),t.length!==e.length)return!1;let r=0;for(let n=0;n<t.length;n++)r|=t[n]^e[n];return r===0}function Rv(t,e,r){const n=e,o=(()=>[]),s=(a,c)=>n(c,...o(a)).update(a).digest(),i=n(new Uint8Array(t),...o(new Uint8Array(0)));return s.outputLen=i.outputLen,s.blockLen=i.blockLen,s.create=(a,...c)=>n(a,...c),s}const Tv=(t,e)=>{function r(n,...o){if(ve(n,void 0,"key"),t.nonceLength!==void 0){const u=o[0];ve(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(ma(o[u]))throw new Error("AAD not supported")}t.withAAD&&o[i]!==void 0&&ve(o[i],void 0,"AAD");const a=e(n,...o),c=(u,f)=>{if(f!==void 0){if(u!==2)throw new Error("cipher output not supported");ve(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,ve(u,void 0,"data"),c(a.encrypt.length,f),a.encrypt(u,f)},decrypt(u,f){if(ve(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(r,t),r};function ya(t,e,r=!0){if(e===void 0)return new Uint8Array(t);if(ve(e,t,"output"),r&&!as(e))throw new Error("invalid output, must be aligned");return e}function Pv(t,e,r){$r(t),$r(e),wa(r);const n=new Uint8Array(16),o=xv(n);return o.setBigUint64(0,BigInt(e),r),o.setBigUint64(8,BigInt(t),r),n}function as(t){return t.byteOffset%4===0}function cs(t){return Uint8Array.from(ve(t))}const yh=t=>Uint8Array.from(t.split(""),e=>e.charCodeAt(0)),Nv=er(bt(yh("expand 16-byte k"))),Lv=er(bt(yh("expand 32-byte k")));function ee(t,e){return t<<e|t>>>32-e}const gn=64,Bv=16,ba=2**32-1,rd=Uint32Array.of();function _v(t,e,r,n,o,s,i,a){const c=o.length,l=new Uint8Array(gn),d=bt(l),u=Hr&&as(o)&&as(s),f=u?bt(o):rd,h=u?bt(s):rd;if(!Hr){for(let g=0;g<c;i++){if(t(e,r,n,d,i,a),er(d),i>=ba)throw new Error("arx: counter overflow");const m=Math.min(gn,c-g);for(let y=0,w;y<m;y++)w=g+y,s[w]=o[w]^l[y];g+=m}return}for(let g=0;g<c;i++){if(t(e,r,n,d,i,a),i>=ba)throw new Error("arx: counter overflow");const m=Math.min(gn,c-g);if(u&&m===gn){const y=g/4;if(g%4!==0)throw new Error("arx: invalid block position");for(let w=0,I;w<Bv;w++)I=y+w,h[I]=f[I]^d[w];g+=gn;continue}for(let y=0,w;y<m;y++)w=g+y,s[w]=o[w]^l[y];g+=m}}function Dv(t,e){const{allowShortKeys:r,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=Iv({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof t!="function")throw new Error("core must be a function");return $r(o),$r(i),wa(s),wa(r),(a,c,l,d,u=0)=>{ve(a,void 0,"key"),ve(c,void 0,"nonce"),ve(l,void 0,"data");const f=l.length,h=d!==void 0;if(d=ya(f,d,!1),h&&kv(l,d),$r(u),u<0||u>=ba)throw new Error("arx: counter overflow");const g=[];let m=a.length,y,w;if(m===32)g.push(y=cs(a)),w=Lv;else if(m===16&&r)y=new Uint8Array(32),y.set(a),y.set(a,16),w=Nv,g.push(y);else throw ve(a,32,"arx key"),new Error("invalid key size");(!Hr||!as(c))&&g.push(c=cs(c));let I=bt(y);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");const B=c.subarray(0,16);if(Hr)n(w,I,bt(B),I);else{const T=er(Uint32Array.from(w));n(T,I,bt(B),I),$t(T),er(I)}c=c.subarray(16)}else Hr||er(I);const v=16-o;if(v!==c.length)throw new Error(`arx: nonce must be ${v} or 16 bytes`);if(v!==12){const B=new Uint8Array(12);B.set(c,s?0:12-c.length),c=B,g.push(c)}const A=er(bt(c));try{return _v(t,w,I,A,l,d,u,i),d}finally{$t(...g)}}}function Se(t,e){return t[e++]&255|(t[e++]&255)<<8}class Fv{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=cs(ve(e,32,"key"));const r=Se(e,0),n=Se(e,2),o=Se(e,4),s=Se(e,6),i=Se(e,8),a=Se(e,10),c=Se(e,12),l=Se(e,14);this.r[0]=r&8191,this.r[1]=(r>>>13|n<<3)&8191,this.r[2]=(n>>>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]=Se(e,16+2*d)}process(e,r,n=!1){const o=n?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],y=i[9],w=Se(e,r+0),I=Se(e,r+2),v=Se(e,r+4),A=Se(e,r+6),B=Se(e,r+8),T=Se(e,r+10),N=Se(e,r+12),k=Se(e,r+14);let x=s[0]+(w&8191),S=s[1]+((w>>>13|I<<3)&8191),R=s[2]+((I>>>10|v<<6)&8191),P=s[3]+((v>>>7|A<<9)&8191),b=s[4]+((A>>>4|B<<12)&8191),E=s[5]+(B>>>1&8191),C=s[6]+((B>>>14|T<<2)&8191),L=s[7]+((T>>>11|N<<5)&8191),M=s[8]+((N>>>8|k<<8)&8191),$=s[9]+(k>>>5|o),j=0,D=j+x*a+S*(5*y)+R*(5*m)+P*(5*g)+b*(5*h);j=D>>>13,D&=8191,D+=E*(5*f)+C*(5*u)+L*(5*d)+M*(5*l)+$*(5*c),j+=D>>>13,D&=8191;let _=j+x*c+S*a+R*(5*y)+P*(5*m)+b*(5*g);j=_>>>13,_&=8191,_+=E*(5*h)+C*(5*f)+L*(5*u)+M*(5*d)+$*(5*l),j+=_>>>13,_&=8191;let F=j+x*l+S*c+R*a+P*(5*y)+b*(5*m);j=F>>>13,F&=8191,F+=E*(5*g)+C*(5*h)+L*(5*f)+M*(5*u)+$*(5*d),j+=F>>>13,F&=8191;let q=j+x*d+S*l+R*c+P*a+b*(5*y);j=q>>>13,q&=8191,q+=E*(5*m)+C*(5*g)+L*(5*h)+M*(5*f)+$*(5*u),j+=q>>>13,q&=8191;let H=j+x*u+S*d+R*l+P*c+b*a;j=H>>>13,H&=8191,H+=E*(5*y)+C*(5*m)+L*(5*g)+M*(5*h)+$*(5*f),j+=H>>>13,H&=8191;let K=j+x*f+S*u+R*d+P*l+b*c;j=K>>>13,K&=8191,K+=E*a+C*(5*y)+L*(5*m)+M*(5*g)+$*(5*h),j+=K>>>13,K&=8191;let z=j+x*h+S*f+R*u+P*d+b*l;j=z>>>13,z&=8191,z+=E*c+C*a+L*(5*y)+M*(5*m)+$*(5*g),j+=z>>>13,z&=8191;let W=j+x*g+S*h+R*f+P*u+b*d;j=W>>>13,W&=8191,W+=E*l+C*c+L*a+M*(5*y)+$*(5*m),j+=W>>>13,W&=8191;let X=j+x*m+S*g+R*h+P*f+b*u;j=X>>>13,X&=8191,X+=E*d+C*l+L*c+M*a+$*(5*y),j+=X>>>13,X&=8191;let G=j+x*y+S*m+R*g+P*h+b*f;j=G>>>13,G&=8191,G+=E*u+C*d+L*l+M*c+$*a,j+=G>>>13,G&=8191,j=(j<<2)+j|0,j=j+D|0,D=j&8191,j=j>>>13,_+=j,s[0]=D,s[1]=_,s[2]=F,s[3]=q,s[4]=H,s[5]=K,s[6]=z,s[7]=W,s[8]=X,s[9]=G}finalize(){const{h:e,pad:r}=this,n=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,n[0]=e[0]+5,o=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=e[a]+o,o=n[a]>>>13,n[a]&=8191;n[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)n[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|n[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]+r[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+r[a]|0)+(i>>>16)|0,e[a]=i&65535;$t(n)}update(e){td(this),ve(e),e=cs(e);const{buffer:r,blockLen:n}=this,o=e.length;for(let s=0;s<o;){const i=Math.min(n-this.pos,o-s);if(i===n){for(;n<=o-s;s+=n)this.process(e,s);continue}r.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===n&&(this.process(r,0,!1),this.pos=0)}return this}destroy(){this.destroyed=!0,$t(this.h,this.r,this.buffer,this.pad)}digestInto(e){td(this),vv(e,this),this.finished=!0;const{buffer:r,h:n}=this;let{pos:o}=this;if(o){for(r[o++]=1;o<16;o++)r[o]=0;this.process(r,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=n[i]>>>0,e[s++]=n[i]>>>8}digest(){const{buffer:e,outputLen:r}=this;this.digestInto(e);const n=e.slice(0,r);return this.destroy(),n}}const Ov=Rv(32,t=>new Fv(t));function Mv(t,e,r,n,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],y=e[6],w=e[7],I=o,v=r[0],A=r[1],B=r[2],T=i,N=a,k=c,x=l,S=d,R=u,P=f,b=h,E=g,C=m,L=y,M=w,$=I,j=v,D=A,_=B;for(let q=0;q<s;q+=2)T=T+S|0,$=ee($^T,16),E=E+$|0,S=ee(S^E,12),T=T+S|0,$=ee($^T,8),E=E+$|0,S=ee(S^E,7),N=N+R|0,j=ee(j^N,16),C=C+j|0,R=ee(R^C,12),N=N+R|0,j=ee(j^N,8),C=C+j|0,R=ee(R^C,7),k=k+P|0,D=ee(D^k,16),L=L+D|0,P=ee(P^L,12),k=k+P|0,D=ee(D^k,8),L=L+D|0,P=ee(P^L,7),x=x+b|0,_=ee(_^x,16),M=M+_|0,b=ee(b^M,12),x=x+b|0,_=ee(_^x,8),M=M+_|0,b=ee(b^M,7),T=T+R|0,_=ee(_^T,16),L=L+_|0,R=ee(R^L,12),T=T+R|0,_=ee(_^T,8),L=L+_|0,R=ee(R^L,7),N=N+P|0,$=ee($^N,16),M=M+$|0,P=ee(P^M,12),N=N+P|0,$=ee($^N,8),M=M+$|0,P=ee(P^M,7),k=k+b|0,j=ee(j^k,16),E=E+j|0,b=ee(b^E,12),k=k+b|0,j=ee(j^k,8),E=E+j|0,b=ee(b^E,7),x=x+S|0,D=ee(D^x,16),C=C+D|0,S=ee(S^C,12),x=x+S|0,D=ee(D^x,8),C=C+D|0,S=ee(S^C,7);let F=0;n[F++]=i+T|0,n[F++]=a+N|0,n[F++]=c+k|0,n[F++]=l+x|0,n[F++]=d+S|0,n[F++]=u+R|0,n[F++]=f+P|0,n[F++]=h+b|0,n[F++]=g+E|0,n[F++]=m+C|0,n[F++]=y+L|0,n[F++]=w+M|0,n[F++]=I+$|0,n[F++]=v+j|0,n[F++]=A+D|0,n[F++]=B+_|0}const jv=Dv(Mv,{counterRight:!1,counterLength:4,allowShortKeys:!1}),Uv=new Uint8Array(16),nd=(t,e)=>{t.update(e);const r=e.length%16;r&&t.update(Uv.subarray(r))},$v=new Uint8Array(32);function od(t,e,r,n,o){o!==void 0&&ve(o,void 0,"AAD");const s=t(e,r,$v),i=Pv(n.length,o?o.length:0,!0),a=Ov.create(s);o&&nd(a,o),nd(a,n),a.update(i);const c=a.digest();return $t(s,i),c}const Hv=t=>(e,r,n)=>({encrypt(s,i){const a=s.length;i=ya(a+16,i,!1),i.set(s);const c=i.subarray(0,-16);t(e,r,c,c,1);const l=od(t,e,r,c,n);return i.set(l,a),$t(l),i},decrypt(s,i){i=ya(s.length-16,i,!1);const a=s.subarray(0,-16),c=s.subarray(-16),l=od(t,e,r,a,n);if(!Cv(c,l))throw $t(l),new Error("invalid tag");return i.set(s.subarray(0,-16)),t(e,r,i,i,1),$t(l),i}}),sd=Tv({blockSize:64,nonceLength:12,tagLength:16,withAAD:!0},Hv(jv));function qv(t,e,r){return fc(t),r===void 0&&(r=new Uint8Array(t.outputLen)),ph(t,r,e)}const mn=Uint8Array.of(0),Kv=Uint8Array.of();function zv(t,e,r,n=32,o){fc(t),It(n,"length"),Ct(e,void 0,"prk");const s=t.outputLen;if(e.length<s)throw new Error('"prk" must be at least HashLen octets');if(n>255*s)throw new Error("Length must be <= 255*HashLen");const i=Math.ceil(n/s);if(r===void 0?r=Kv:Ct(r,void 0,"info"),!i)return new Uint8Array;const a=new Uint8Array(i*s),{iHash:c,oHash:l}=ph.create(t,e),d=new Uint8Array(s),u=i>1?t.create():void 0;for(let h=0;h<i-1;h++){mn[0]=h+1;const g=c._cloneInto(u);h&&g.update(d),g.update(r).update(mn).digestInto(d),l._cloneInto(u).update(d).digestInto(d),a.set(d,s*h)}if(mn[0]=i,i>1&&c.update(d),c.update(r).update(mn).digestInto(d),l.update(d).digestInto(d),a.set(d,s*(i-1)),c.destroy(),l.destroy(),u?.destroy(),d!==a&&nr(d),nr(mn),n===a.length)return a;const f=a.slice(0,n);return nr(a),f}const bh={hashSHA256(t){return oi(t.subarray())},getHKDF(t,e){const r=qv(oi,e,t),o=zv(oi,r,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=Ao.utils.randomSecretKey();return{publicKey:Ao.getPublicKey(t),privateKey:t}},generateX25519KeyPairFromSeed(t){return{publicKey:Ao.getPublicKey(t),privateKey:t}},generateX25519SharedKey(t,e){return Ao.getSharedSecret(t.subarray(),e.subarray())},chaCha20Poly1305Encrypt(t,e,r,n){return sd(n,e,r).encrypt(t.subarray())},chaCha20Poly1305Decrypt(t,e,r,n,o){return sd(n,e,r).decrypt(t.subarray(),o)}},Vv=bh;function Wv(t){return{generateKeypair:t.generateX25519KeyPair,dh:(e,r)=>t.generateX25519SharedKey(e.privateKey,r).subarray(0,32),encrypt:t.chaCha20Poly1305Encrypt,decrypt:t.chaCha20Poly1305Decrypt,hash:t.hashSHA256,hkdf:t.getHKDF}}const ls=t=>{const e=At(2);return e[0]=t>>8,e[1]=t,e};ls.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 Gv(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 vh(t,e){!e.enabled||!oo||(t?(e(`LOCAL_STATIC_PUBLIC_KEY ${J(t.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${J(t.privateKey,"hex")}`)):e("Missing local static keys."))}function xh(t,e){!e.enabled||!oo||(t?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${J(t.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${J(t.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function Xv(t,e){!e.enabled||!oo||e(t?`REMOTE_STATIC_PUBLIC_KEY ${J(t.subarray(),"hex")}`:"Missing remote static public key.")}function Sh(t,e){!e.enabled||!oo||e(t?`REMOTE_EPHEMERAL_PUBLIC_KEY ${J(t.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function Eh(t,e,r){!r.enabled||!oo||(r(`CIPHER_STATE_1 ${t.n.getUint64()} ${t.k&&J(t.k,"hex")}`),r(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&J(e.k,"hex")}`))}class On extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=On.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"}const Yv=0,Zv=4294967295,Jv="Cipherstate has reached maximum n, a new handshake must be performed";class Qv{n;bytes;view;constructor(e=Yv){this.n=e,this.bytes=Be(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>Zv)throw new Error(Jv)}}const qr=Be(0);class ko{k;n;crypto;constructor(e,r=void 0,n=0){this.crypto=e,this.k=r,this.n=new Qv(n)}hasKey(){return!!this.k}encryptWithAd(e,r){if(!this.hasKey())return r;this.n.assertValue();const n=this.crypto.encrypt(r,this.n.getBytes(),e,this.k);return this.n.increment(),n}decryptWithAd(e,r,n){if(!this.hasKey())return r;this.n.assertValue();const o=this.crypto.decrypt(r,this.n.getBytes(),e,this.k,n);return this.n.increment(),o}}class ex{cs;ck;h;crypto;constructor(e,r){this.crypto=e;const n=we(r,"utf-8");this.h=rx(e,n),this.ck=this.h,this.cs=new ko(e)}mixKey(e){const[r,n]=this.crypto.hkdf(this.ck,e);this.ck=r,this.cs=new ko(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new re(this.h,e))}encryptAndHash(e){const r=this.cs.encryptWithAd(this.h,e);return this.mixHash(r),r}decryptAndHash(e){const r=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),r}split(){const[e,r]=this.crypto.hkdf(this.ck,qr);return[new ko(this.crypto,e),new ko(this.crypto,r)]}}class tx{ss;s;e;rs;re;initiator;crypto;constructor(e){const{crypto:r,protocolName:n,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=r,this.ss=new ex(r,n),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,r=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<r+32)throw new Error("message is not long enough");this.re=e.sublist(r,r+32),this.ss.mixHash(this.re)}readS(e,r=0){if(this.rs)throw new Error("remote static public key is already set");const n=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<r+n)throw new Error("message is not long enough");const o=e.sublist(r,r+n);return this.rs=this.ss.decryptAndHash(o),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}}class Ah extends tx{writeMessageA(e){return new re(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){const r=this.writeE();this.writeEE();const n=this.writeS();return this.writeES(),new re(r,n,this.ss.encryptAndHash(e))}writeMessageC(e){const r=this.writeS();return this.writeSE(),new re(r,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(r){throw new On(`handshake stage 0 validation fail: ${r.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();const r=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+r))}catch(r){throw new On(`handshake stage 1 validation fail: ${r.message}`)}}readMessageC(e){try{const r=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(r))}catch(r){throw new On(`handshake stage 2 validation fail: ${r.message}`)}}}function rx(t,e){if(e.length<=32){const r=Be(32);return r.set(e),r}else return t.hash(e)}var us;(function(t){let e;t.codec=()=>(e==null&&(e=Ps((r,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),r.webtransportCerthashes!=null)for(const s of r.webtransportCerthashes)n.uint32(10),n.bytes(s);if(r.streamMuxers!=null)for(const s of r.streamMuxers)n.uint32(18),n.string(s);o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={webtransportCerthashes:[],streamMuxers:[]},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{if(o.limits?.webtransportCerthashes!=null&&s.webtransportCerthashes.length===o.limits.webtransportCerthashes)throw new Il('Decode error - map field "webtransportCerthashes" had too many elements');s.webtransportCerthashes.push(r.bytes());break}case 2:{if(o.limits?.streamMuxers!=null&&s.streamMuxers.length===o.limits.streamMuxers)throw new Il('Decode error - map field "streamMuxers" had too many elements');s.streamMuxers.push(r.string());break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>Ts(r,t.codec()),t.decode=(r,n)=>Rs(r,t.codec(),n)})(us||(us={}));var fs;(function(t){let e;t.codec=()=>(e==null&&(e=Ps((r,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),r.identityKey!=null&&r.identityKey.byteLength>0&&(n.uint32(10),n.bytes(r.identityKey)),r.identitySig!=null&&r.identitySig.byteLength>0&&(n.uint32(18),n.bytes(r.identitySig)),r.extensions!=null&&(n.uint32(34),us.codec().encode(r.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={identityKey:Be(0),identitySig:Be(0)},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{s.identityKey=r.bytes();break}case 2:{s.identitySig=r.bytes();break}case 4:{s.extensions=us.codec().decode(r,r.uint32(),{limits:o.limits?.extensions});break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>Ts(r,t.codec()),t.decode=(r,n)=>Rs(r,t.codec(),n)})(fs||(fs={}));async function kh(t,e,r){const n=await t.sign(Ch(e));return fs.encode({identityKey:Ns(t.publicKey),identitySig:n,extensions:r})}async function Ih(t,e,r){try{const n=fs.decode(t),o=fa(n.identityKey);if(r?.equals(o)===!1)throw new Error(`Payload identity key ${o} does not match expected remote identity key ${r}`);if(!e)throw new Error("Remote static does not exist");const s=Ch(e);if(!await o.verify(s,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new hg(n.message)}}function Ch(t){const e=we("noise-libp2p-static-key:");return t instanceof Uint8Array?ta([e,t],e.length+t.length):(t.prepend(e),t)}class nx extends mh{stream;handshake;metrics;decoder;constructor(e,r,n){super({log:e.log,inactivityTimeout:e.inactivityTimeout,maxReadBufferLength:e.maxReadBufferLength,direction:e.direction}),this.stream=e,this.handshake=r,this.metrics=n,this.decoder=new yv({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 r=new re;for(let n=0;n<e.byteLength;n+=Jl){let o=n+Jl;o>e.byteLength&&(o=e.byteLength);let s;e instanceof Uint8Array?s=this.handshake.encrypt(e.subarray(n,o)):s=this.handshake.encrypt(e.sublist(n,o)),this.metrics?.encryptedPackets.increment(),r.append(ls(s.byteLength)),r.append(s)}return r}decrypt(e){const r=new re;for(let n=0;n<e.byteLength;n+=Wn){let o=n+Wn;if(o>e.byteLength&&(o=e.byteLength),o-Ql<n)throw new Error("Invalid chunk");let s;e instanceof Uint8Array?s=e.subarray(n,o):s=e.sublist(n,o);const i=e.subarray(n,o-Ql);try{const a=this.handshake.decrypt(s,i);this.metrics?.decryptedPackets.increment(),r.append(a)}catch(a){throw this.metrics?.decryptErrors.increment(),a}}return r}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 id(t,e,r){return new nx(t,e,r)}async function ox(t,e){const{log:r,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await kh(s,a.publicKey,l),u=new Ah({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:i,s:a});vh(u.s,r),r.trace("Stage 0 - Initiator starting to send first message."),await n.write(u.writeMessageA(qr),e),r.trace("Stage 0 - Initiator finished sending first message."),xh(u.e,r),r.trace("Stage 1 - Initiator waiting to receive first message from responder...");const f=u.readMessageB(await n.read(e));r.trace("Stage 1 - Initiator received the message."),Sh(u.re,r),Xv(u.rs,r),r.trace("Initiator going to check remote's signature...");const h=await Ih(f,u.rs,c);r.trace("All good with the signature!"),r.trace("Stage 2 - Initiator sending third handshake message."),await n.write(u.writeMessageC(d),e),r.trace("Stage 2 - Initiator sent message with signed payload.");const[g,m]=u.ss.split();return Eh(g,m,r),{payload:h,encrypt:y=>g.encryptWithAd(qr,y),decrypt:(y,w)=>m.decryptWithAd(qr,y,w)}}async function sx(t,e){const{log:r,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await kh(s,a.publicKey,l),u=new Ah({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:i,s:a});vh(u.s,r),r.trace("Stage 0 - Responder waiting to receive first message."),u.readMessageA(await n.read(e)),r.trace("Stage 0 - Responder received first message."),Sh(u.re,r),r.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await n.write(u.writeMessageB(d),e),r.trace("Stage 1 - Responder sent the second handshake message with signed payload."),xh(u.e,r),r.trace("Stage 2 - Responder waiting for third handshake message...");const f=u.readMessageC(await n.read(e));r.trace("Stage 2 - Responder received the message, finished handshake.");const h=await Ih(f,u.rs,c),[g,m]=u.ss.split();return Eh(g,m,r),{payload:h,encrypt:y=>m.encryptWithAd(qr,y),decrypt:(y,w)=>g.decryptWithAd(qr,y,w)}}class ix{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;log;constructor(e,r={}){const{staticNoiseKey:n,extensions:o,crypto:s,prologueBytes:i}=r,{metrics:a}=e;this.components=e,this.log=e.logger.forComponent("libp2p:noise");const c=s??Vv;this.crypto=Wv(c),this.extensions={webtransportCerthashes:[],...o},this.metrics=a?Gv(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??Be(0)}[Symbol.toStringTag]="@chainsafe/libp2p-noise";[xg]=["@libp2p/connection-encryption","@chainsafe/libp2p-noise"];async secureOutbound(e,r){const n=e.log?.newScope("noise")??this.log,o=Zl(e,{lengthEncoder:ls,lengthDecoder:ds,maxDataLength:Wn}),s=await this.performHandshakeInitiator(o,this.components.privateKey,n,r?.remotePeer?.publicKey,r),i=fa(s.payload.identityKey);return{connection:id(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:Xr(i),streamMuxer:r?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}getStreamMuxer(e){if(e==null||e.length===0)return;const r=this.components.upgrader.getStreamMuxers();if(r!=null)for(const n of e){const o=r.get(n);if(o!=null)return o}if(e.length)throw new pg("Early muxer negotiation was requested but the initiator and responder had no common muxers")}async secureInbound(e,r){const n=e.log?.newScope("noise")??this.log,o=Zl(e,{lengthEncoder:ls,lengthDecoder:ds,maxDataLength:Wn}),s=await this.performHandshakeResponder(o,this.components.privateKey,n,r?.remotePeer?.publicKey,r),i=fa(s.payload.identityKey);return{connection:id(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:Xr(i),streamMuxer:r?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}async performHandshakeInitiator(e,r,n,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await ox({connection:e,privateKey:r,remoteIdentityKey:o,log:n.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,r,n,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await sx({connection:e,privateKey:r,remoteIdentityKey:o,log:n.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 ax(t={}){return e=>new ix(e,t)}const cx="termdock-e2ee-v1",ad=3600*1e3,cd=512*1024*1024,va=4*1024*1024,Do=()=>{},_s=Object.assign(Do,{enabled:!1,error:Do,trace:Do,newScope:()=>_s});Object.freeze(_s);async function Rh(){const t=await Ib();return{privateKey:t,peerId:Xr(t.publicKey).toString()}}function lx(t){return btoa(String.fromCharCode(...Tb(t.privateKey)))}function ld(t){if(t.length>512||!/^[A-Za-z0-9+/]+={0,2}$/.test(t))throw new Error("Invalid identity encoding");const e=Rb(Uint8Array.from(atob(t),r=>r.charCodeAt(0)));if(e.type!=="Ed25519")throw new Error("Only Ed25519 device identities are supported");return{privateKey:e,peerId:Xr(e.publicKey).toString()}}class Th{constructor(e=Do){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>va)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(r=>{this.wake=r})}}}}class dx extends mh{constructor(e,r){super({log:_s,direction:r?"outbound":"inbound",maxReadBufferLength:va,maxWriteBufferLength:va}),this.duplex=e,this.finished=e.sink(this.outgoing).catch(n=>{this.abort(Yr(n))}),this.readTransport()}duplex;outgoing=new Th(()=>this.onMuxerDrain());finished;async readTransport(){try{for await(const e of this.duplex.source)this.onData(e.slice());this.onTransportClosed()}catch(e){this.onTransportClosed(Yr(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 Yr(t){return t instanceof Error?t:new Error("Secure transport failed")}class ux extends Error{code="E2EE_REHANDSHAKE_REQUIRED";constructor(){super("Encrypted connection lifetime reached; establish a new handshake without replaying pending input")}}function fx(t){const e=t?.maxAgeMs??ad,r=t?.maxBytesPerDirection??cd;if(!Number.isSafeInteger(e)||e<=0||e>ad||!Number.isSafeInteger(r)||r<=0||r>cd)throw new Error("Encrypted connection limits cannot exceed the production maximum");return{maxAgeMs:e,maxBytesPerDirection:r}}async function hx(t){const{identity:e,duplex:r,initiator:n,targetPinnedPeerId:o,signal:s}=t,i=fx(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(n&&!o)throw new Error("A pinned target identity is required");const a=o?Bb(o):void 0;if(a&&a.type!=="Ed25519")throw new Error("Only Ed25519 target identities are supported");if(e.peerId!==Xr(e.privateKey.publicKey).toString())throw new Error("Local identity mismatch");if(s?.aborted)throw s.reason??new Error("Connection aborted");const c=new dx(r,n),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(Yr(s?.reason))};s?.addEventListener("abort",u,{once:!0}),c.addEventListener("close",()=>s?.removeEventListener("abort",u),{once:!0});const f=ax({crypto:bh,prologueBytes:new TextEncoder().encode(cx)})({privateKey:e.privateKey,peerId:Xr(e.privateKey.publicKey),logger:{forComponent:()=>_s},upgrader:{getStreamMuxers:()=>new Map}});try{const h=await(n?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:px(h.connection,i)}}catch(h){throw c.abort(Yr(h)),h}finally{clearTimeout(d),s?.removeEventListener("abort",u)}}function px(t,e){const r=new Th,n=performance.now(),o=Date.now();let s=0,i=0,a;const c=()=>(a??=new ux,r.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()-n,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,r.push(f.data.subarray())}catch(h){t.abort(Yr(h))}}),t.addEventListener("close",f=>{clearTimeout(l),r.end(f.error)},{once:!0});let u=!1;return{source:r,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(Yr(h)),h}},close(f){f?t.abort(f):t.close()}}}class xc{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(r=>{this.wake=r}),this.wake=void 0}}}const li=2*1024*1024,gx=new TextEncoder,mx=new TextDecoder("utf-8",{fatal:!0});class wx{constructor(e){this.duplex=e;const r=this;this.done=e.sink((async function*(){for await(const n of r.outgoing)try{yield n}finally{r.outgoingBytes-=n.byteLength}})()),this.done.catch(n=>this.close(n instanceof Error?n:new Error("Transport failed")))}duplex;outgoing=new xc(256);outgoingBytes=0;done;send(e){const r=gx.encode(JSON.stringify(e));if(r.length>li)throw new Error("Record too large");const n=new Uint8Array(r.length+4);if(new DataView(n.buffer).setUint32(0,r.length),n.set(r,4),this.outgoingBytes+n.byteLength>4*1024*1024)throw new Error("Record queue byte budget exceeded");this.outgoingBytes+=n.byteLength;try{this.outgoing.push(n)}catch(o){throw this.outgoingBytes-=n.byteLength,o}}close(e){this.outgoing.end(e),this.duplex.close?.(e)}async*read(){let e=new Uint8Array(0);for await(const r of this.duplex.source){if(e.length+r.length>li*2+8)throw new Error("Record buffer exceeded");const n=new Uint8Array(e.length+r.length);for(n.set(e),n.set(r,e.length),e=n;e.length>=4;){const o=new DataView(e.buffer,e.byteOffset,4).getUint32(0);if(o>li||o===0)throw new Error("Invalid record size");if(e.length<o+4)break;const s=JSON.parse(mx.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 Ph(t){let e="";for(let r=0;r<t.length;r+=8192)e+=String.fromCharCode(...t.subarray(r,r+8192));return btoa(e)}function Nh(t){const e=atob(t);return Uint8Array.from(e,r=>r.charCodeAt(0))}function yx(t){const e=new xc(64);t.binaryType="arraybuffer";const r=n=>{e.end(n),t.close(1e3)};return t.addEventListener("message",n=>{try{if(!(n.data instanceof ArrayBuffer)||n.data.byteLength>1024*1024)throw new Error("Invalid encrypted frame");e.push(new Uint8Array(n.data))}catch{r(new Error("Encrypted transport rejected frame"))}}),t.addEventListener("close",()=>e.end()),t.addEventListener("error",()=>e.end(new Error("Encrypted transport disconnected"))),{source:e,close:r,async sink(n){try{for await(const o of n)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 r(o instanceof Error?o:new Error("Encrypted transport failed")),o}}}}const Lh=8,Bh=128,bx=5*1024*1024,vx=Bh+Lh+8,xx=256,Io=3e4,wn=64*1024;function Mt(t){return t instanceof Error?t:new Error(String(t??"Secure connection closed"))}function dd(t){if(!t.startsWith("/")||t.startsWith("//")||t.includes("#"))throw new Error("A local API path is required");return t}class _h extends EventTarget{constructor(e,r,n){super(),this.url=e,this.transmit=r,this.disconnect=n}url;transmit;disconnect;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;binaryType="arraybuffer";bufferedAmount=0;protocol="termdock-e2ee-v1";extensions="";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,r=""){this.readyState!==3&&(this.disconnect(),this.finish(e,r))}accept(e){if(this.readyState!==3)if(e.type==="ws-ready"){this.readyState=1;const r=new Event("open");this.dispatchEvent(r),this.onopen?.(r)}else if(e.type==="ws-data"&&typeof e.data=="string"){const r=new MessageEvent("message",{data:e.data});this.dispatchEvent(r),this.onmessage?.(r)}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(Mt(e.error))}fail(e){if(this.readyState===3)return;const r=new Event("error");this.dispatchEvent(r),this.onerror?.(r),this.finish(1006,e.message)}finish(e,r){if(this.readyState===3)return;this.readyState=3;const n=new CloseEvent("close",{code:e,reason:r,wasClean:e===1e3});this.dispatchEvent(n),this.onclose?.(n)}}class Sx{constructor(e,r,n){this.channel=e,this.identity=r,this.targetPeerId=n,this.read().catch(o=>this.close(Mt(o))),e.done.catch(o=>this.close(Mt(o)))}channel;identity;targetPeerId;pending=new Map;waiting=[];stopped=!1;closeReason;get canSwitchTransport(){return![...this.pending.values()].some(e=>e.kind==="http")&&!this.waiting.some(e=>e.kind==="http")}get closed(){return this.stopped}hasCapacity(e){if(this.pending.size>=vx)return!1;const r=[...this.pending.values()].filter(n=>n.kind===e).length;return e==="http"?r<Lh:e==="socket"?r<Bh:!0}allocate(e){if(this.stopped)throw this.closeReason??new Error("Secure connection closed");const r=crypto.randomUUID(),n=new xc(4);return this.pending.set(r,{queue:n,kind:e}),{id:r,queue:n}}reserve(e,r){return r?.aborted?Promise.reject(r.reason):this.stopped?Promise.reject(this.closeReason??new Error("Secure connection closed")):this.hasCapacity(e)?Promise.resolve(this.allocate(e)):this.waiting.length>=xx?Promise.reject(new Error("连接繁忙,请稍后重试。")):new Promise((n,o)=>{const s=l=>{this.waiting=this.waiting.filter(d=>d!==c),c.cleanup(),o(l)},i=()=>s(r?.reason??new Error("Request aborted")),a=setTimeout(()=>s(new Error("连接等待超时,请重试。")),Io),c={kind:e,resolve:n,reject:o,cleanup:()=>{clearTimeout(a),r?.removeEventListener("abort",i)}};this.waiting.push(c),r?.addEventListener("abort",i,{once:!0})})}dispatchWaiting(){if(!this.stopped)for(let e=0;e<this.waiting.length;){const r=this.waiting[e];if(!this.hasCapacity(r.kind)){e++;continue}this.waiting.splice(e,1),r.cleanup(),r.resolve(this.allocate(r.kind))}}async read(){try{for await(const e of this.channel.read()){const r=this.pending.get(e.id);r&&(r.socket?(r.socket.accept(e),(e.type==="ws-close"||e.type==="error")&&this.release(e.id)):(r.queue.push(e),(e.type==="end"||e.type==="error")&&(r.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,r){const{id:n,queue:o}=await this.reserve("request"),s=setTimeout(()=>this.close(new Error("Secure connection timed out")),Math.max(1e3,Math.min(Io,r?.timeoutMs??Io)));try{if(this.stopped)throw this.closeReason;this.channel.send({...e,id:n});const i=(await o[Symbol.asyncIterator]().next()).value;if(!i)throw new Error("Secure request closed");if(i.type==="error")throw Mt(i.error);return i}finally{clearTimeout(s),this.release(n)}}openSocket(e){dd(e);let r;const n=new AbortController,o=new _h(e,s=>{r&&this.channel.send({id:r,type:"ws-data",data:s})},()=>{if(n.abort(),r)try{this.channel.send({id:r,type:"ws-close"})}finally{this.release(r)}});return this.reserve("socket",n.signal).then(s=>{if(r=s.id,o.readyState===3){this.release(r);return}const i=this.pending.get(r);if(!i)throw new Error("Secure connection closed");i.socket=o,this.channel.send({id:r,type:"ws-open",path:e})}).catch(s=>{r&&this.release(r),o.fail(Mt(s))}),o}async fetch(e,r){const n=typeof location>"u"?"https://termdock.invalid":location.origin,o=e instanceof Request?e:null,s=new URL(o?.url??String(e),n);if(s.origin!==n)throw new Error("Only current-service API requests are supported");const i=new Request(s,o?new Request(o,r):r),a=i.method.toUpperCase(),c=dd(s.pathname+s.search),l=s.pathname==="/api/terminal/fs/upload"?110*1024*1024:bx;if(i.signal.aborted)throw i.signal.reason;const d={};i.headers.forEach((A,B)=>{["cookie","authorization","host","connection","content-length"].includes(B)||(d[B]=A)});const{id:u,queue:f}=await this.reserve("http",i.signal),h=f[Symbol.asyncIterator]();let g;const m=()=>{g?.cancel().catch(()=>{})},y=this.pending.get(u);if(!y)throw new Error("Secure connection closed");y.cancelUpload=m;const w=()=>{m();try{this.channel.send({id:u,type:"cancel"})}catch{}f.end(Mt(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)},v=async()=>{let A;try{const B=(await Promise.race([h.next(),new Promise((T,N)=>{A=setTimeout(()=>N(new Error("服务响应超时,请重试。")),Io)})])).value;if(!B)throw new Error("Secure response ended unexpectedly");if(B.type==="error")throw Mt(B.error);return B}finally{clearTimeout(A)}};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 k=i.body.getReader();g=k;let x=0,S=0;try{for(;;){const{done:R,value:P}=await k.read();if(R)break;if(x+=P.byteLength,x>l)throw new Error("Request body exceeds upload limit");for(let b=0;b<P.byteLength;b+=wn){if(this.channel.send({id:u,type:"upload",data:Ph(P.subarray(b,b+wn))}),(await v()).type!=="upload-ack")throw new Error("Invalid upload acknowledgement");S+=Math.min(wn,P.byteLength-b),r?.onUploadProgress?.(S)}}}catch(R){throw await k.cancel(R).catch(()=>{}),R}finally{g=void 0,k.releaseLock()}}if(i.signal.aborted||this.stopped)throw new Error("Request aborted");this.channel.send({id:u,type:"upload-end"});const A=await v();if(A.type!=="head"||typeof A.status!="number")throw new Error("Invalid response header");const B=new Headers(A.headers);if(a==="HEAD"||[204,205,304].includes(A.status)){if((await v()).type!=="end")throw new Error("Unexpected response body");return I(),new Response(null,{status:A.status,headers:B})}let T=!1;const N=new ReadableStream({pull:async k=>{try{T&&(this.channel.send({id:u,type:"ack"}),T=!1);const x=await v();if(x.type==="end"){k.close(),I();return}if(x.type!=="chunk"||typeof x.data!="string")throw new Error("Invalid response chunk");const S=Nh(x.data);if(S.length>wn)throw new Error("Response chunk exceeds budget");k.enqueue(S),T=!0}catch(x){k.error(x),w(),I()}},cancel:()=>{w(),I()}},{highWaterMark:wn,size:k=>k.byteLength});return new Response(N,{status:A.status,headers:B})}catch(A){throw w(),I(),A}}close(e=new Error("Secure connection closed")){if(!this.stopped){this.stopped=!0,this.closeReason=e;for(const r of this.waiting.splice(0))r.cleanup(),r.reject(e);for(const r of this.pending.values())r.queue.end(e),r.cancelUpload?.(),r.socket?.fail(e);this.pending.clear(),this.channel.close(e)}}}async function cr(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 r=t.identity??await Rh(),n=(t.socketFactory??(c=>new WebSocket(c)))(e.href),o=yx(n),s=new AbortController,i=setTimeout(()=>s.abort(new Error("Secure handshake timed out")),2e4),a=t.signal?AbortSignal.any([t.signal,s.signal]):s.signal;try{await new Promise((d,u)=>{if(a.aborted){u(a.reason);return}const f=()=>{a.removeEventListener("abort",m),n.removeEventListener("open",h),n.removeEventListener("error",g),n.removeEventListener("close",g)},h=()=>{f(),d()},g=()=>{f(),u(new Error("Secure transport unavailable"))},m=()=>{f(),u(a.reason)};a.addEventListener("abort",m,{once:!0}),n.addEventListener("open",h),n.addEventListener("error",g),n.addEventListener("close",g),n.readyState===1&&h()});const c=await hx({identity:r,duplex:o,initiator:!0,targetPinnedPeerId:t.targetPeerId,signal:a}),l=new Sx(new wx(c.duplex),r,c.authenticatedPeerId);if(t.pairingCode)try{await l.request({type:"pair",code:t.pairingCode})}catch(d){throw l.close(Mt(d)),d}return l}catch(c){throw n.close(),c}finally{clearTimeout(i)}}const ud=256*1024,Ex=1024*1024;class Ax extends EventTarget{constructor(e,r,n=o=>new WebSocket(o)){if(super(),this.url=e,!/^[a-zA-Z0-9_.:-]{1,160}$/.test(r))throw new Error("Invalid target identity");this.upstream=n(e),this.deadline=setTimeout(()=>this.fail("Relay connection timed out"),2e4),this.upstream.addEventListener("message",o=>{if(this.readyState!==3)try{if(typeof o.data!="string"||new TextEncoder().encode(o.data).length>ud)throw new Error("Invalid relay envelope");const s=JSON.parse(o.data);if(s.type==="ready"&&!this.requested){this.requested=!0,this.transmit({type:"open",streamId:this.streamId,serviceId:r});return}if(s.streamId!==this.streamId)return;if(s.type==="opened"&&this.readyState===0){clearTimeout(this.deadline),this.readyState=1;const l=new Event("open");this.dispatchEvent(l),this.onopen?.(l);return}if(s.type==="close"){this.finish(1001,"Relay route closed"),this.upstream.close();return}if(s.type!=="data"||this.readyState!==1||s.encoding!=="base64"||typeof s.payload!="string"||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(s.payload))throw new Error("Invalid ciphertext relay frame");const i=Nh(s.payload),a=this.binaryType==="blob"?new Blob([i]):i.buffer,c=new MessageEvent("message",{data:a});this.dispatchEvent(c),this.onmessage?.(c)}catch{this.fail("Relay protocol rejected frame")}}),this.upstream.addEventListener("close",o=>this.finish(o.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;upstream;streamId=crypto.randomUUID();requested=!1;deadline;get bufferedAmount(){return this.upstream.bufferedAmount}transmit(e){const r=JSON.stringify(e);if(this.upstream.readyState!==1||this.upstream.bufferedAmount+r.length>Ex||r.length>ud)throw new Error("Relay unavailable or congested");this.upstream.send(r)}send(e){if(this.readyState!==1)throw new Error("Relay socket is not open");let r;if(ArrayBuffer.isView(e))r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);else if(e instanceof ArrayBuffer)r=new Uint8Array(e);else throw new Error("Relay secure transport requires binary bytes");try{this.transmit({type:"data",streamId:this.streamId,encoding:"base64",payload:Ph(r)})}catch(n){throw this.fail("Relay transport congested"),n}}close(e=1e3,r=""){if(this.readyState!==3){try{this.requested&&this.transmit({type:"close",streamId:this.streamId})}catch{}this.finish(e,r),this.upstream.close()}}fail(e){if(this.readyState===3)return;const r=new Event("error");this.dispatchEvent(r),this.onerror?.(r),this.finish(1006,e),this.upstream.close()}finish(e,r){if(this.readyState===3)return;clearTimeout(this.deadline),this.readyState=3;const n=new CloseEvent("close",{code:e,reason:r,wasClean:e===1e3});this.dispatchEvent(n),this.onclose?.(n)}}function Dh(t){return e=>new Ax(e,t)}function kx(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 n=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 n.endsWith("/")&&!n.startsWith("/api/terminal/fs/preview/")?null:n}catch{return null}}function Ix(t){if(!("serviceWorker"in navigator))return()=>{};const e=new Set,r=n=>{if(n.source!==navigator.serviceWorker.controller||n.data?.type!=="termdock-secure-fetch"||n.ports.length!==1)return;const o=n.ports[0],{path:s,method:i,headers:a,body:c,expectedTargetPeerId:l,previewPrefix:d}=n.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)||!kx(u.pathname)?.startsWith(d))){o.postMessage({type:"error"}),o.close();return}const f=new AbortController;let h,g,m=!1,y=!1;const w=()=>{y||(y=!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||y||(m=!0,(async()=>{if(!h){o.postMessage({type:"end"}),w();return}if(!g?.length){const A=await h.read();if(A.done){o.postMessage({type:"end"}),w();return}g=A.value}const v=g.slice(0,64*1024);g=g.subarray(v.length),o.postMessage({type:"chunk",data:v.buffer},[v.buffer])})().catch(()=>{o.postMessage({type:"error"}),w()}).finally(()=>{m=!1}))},o.onmessageerror=w,o.start(),(async()=>{const I=await t();if(y)return;if(l&&l!==I.targetPeerId)throw new Error("Preview target changed");const v=await I.fetch(u.pathname+u.search,{method:i,headers:a,body:["GET","HEAD"].includes(i)?void 0:c,signal:f.signal});if(y){await v.body?.cancel();return}h=v.body?.getReader();const A={};v.headers.forEach((B,T)=>{A[T]=B}),o.postMessage({type:"head",status:v.status,headers:A,bodyless:!h,targetPeerId:I.targetPeerId})})().catch(()=>{y||(o.postMessage({type:"error"}),w())})};return navigator.serviceWorker.addEventListener("message",r),()=>{navigator.serviceWorker.removeEventListener("message",r);for(const n of[...e])n()}}class Ve extends Error{constructor(){super("Device authorization expired or revoked")}}const Co=new WeakMap;function rn(t,e={}){const r=Co.get(t);if(!t.closed&&r&&(!r.settled||Date.now()-r.at<(e.maxAgeMs??1e3)))return r.pending;const n={at:Date.now(),settled:!1,pending:void 0},o=Cx(t,e.timeoutMs??5e3).then(s=>(n.at=Date.now(),n.settled=!0,s),s=>{throw Co.get(t)===n&&Co.delete(t),s});return n.pending=o,Co.set(t,n),o}async function Cx(t,e){const r=await t.request({type:"permissions"},{timeoutMs:e});if(r.type!=="result"||typeof r.fullService!="boolean"||!Array.isArray(r.grants))throw new Error("Invalid permission response");const n=r.grants,o=r.fullService===!0;if(!o&&n.length===0)throw new Ve;return{fullService:o,grants:n,canManage:o&&n.length>0||n.some(s=>s.actions.includes("authorization.manage"))}}const Fh="termdock-secure-last-path:",Rx=10*6e4;function Oh(t){try{const e=JSON.parse(sessionStorage.getItem(Fh+t)||"null");return e&&typeof e.key=="string"&&Date.now()-e.at<Rx?e.key:void 0}catch{return}}function Mh(t,e){try{sessionStorage.setItem(Fh+t,JSON.stringify({key:e,at:Date.now()}))}catch{}}function jh(t,e,r=!1){return new Promise((n,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>=(r?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}})},y=new AbortController;d.add(y),i++,h.run(y.signal).then(w=>{if(m(!0),d.delete(y),a){e(w);return}a=!0,u(),n({value:w,key:h.key})},w=>{if(m(!1),d.delete(y),i--,!a){if(c=w,w instanceof Ve){a=!0,u(),o(w);return}f()}}),clearTimeout(l),!r&&s<t.length&&(l=setTimeout(f,400))};f()})}const Uh="termdock-workspace",xa="termdock:workspace-visibility",Sa="termdock:workspace-activate";function Sc(){return window.parent!==window&&location.pathname==="/workspace.html"&&new URLSearchParams(location.search).get(Uh)||"root"}let fd,hd;function St(){try{if(window.parent===window)return window.__termdockWorkspaceHost;const t=window.parent.__termdockWorkspaceHost;return t&&t!==fd&&(fd=t,hd={...t,subscribe(e){const r=t.subscribe(e),n=o=>{o.persisted||r()};return window.addEventListener("pagehide",n),()=>{r(),window.removeEventListener("pagehide",n)}}}),t?hd:void 0}catch{return}}function di(){const t=St();return!t||t.snapshot().activeKey===Sc()}function hs(t,e=!0){return St()?.activate(t,e)??!1}function Rn(t){St()?.report(Sc(),t)}const Ea="termdock-secure-workspace-session:";function Bk(t){if(t)try{const e=JSON.parse(localStorage.getItem(Ea+t)||"null");return localStorage.removeItem(Ea+t),e&&typeof e.sessionId=="string"&&Date.now()-e.at<6e4?e.sessionId:void 0}catch{return}}function Tx(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 c=sessionStorage.getItem("termdock-secure-last-workspace"),l=t&&c!==t.targetPeerId?Ht().find(d=>d.targetPeerId===c):void 0;l?.targetPeerId&&(e={activeKey:l.targetPeerId,items:[...e.items,{key:l.targetPeerId,service:l,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()}]})}catch{}const r=new Set,n=new Map([["root",window]]),o=new Set,s=()=>{for(const c of[...r])c()},i=(c,l)=>{try{const d=l.document.createEvent("CustomEvent");if(d.initCustomEvent(xa,!1,!1,{active:e.activeKey===c}),l.dispatchEvent(d),e.activeKey===c){const u=l.document.createEvent("Event");if(u.initEvent("resize",!1,!1),l.dispatchEvent(u),o.delete(c)){const f=l.document.createEvent("Event");f.initEvent(Sa,!1,!1),l.dispatchEvent(f)}}else l.document.activeElement?.blur?.()}catch{}},a={snapshot:()=>e,subscribe:c=>(r.add(c),()=>{r.delete(c)}),activate(c,l=!0){const d=xs(c);if(!d?.targetPeerId)return!1;const u=e.items.find(g=>g.service?.targetPeerId===d.targetPeerId),f=u?.key||d.targetPeerId,h=u?{...u,service:d,touchedAt:Date.now()}:{key:f,service:d,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()};e={activeKey:f,items:u?e.items.map(g=>g===u?h:g):[...e.items,h]};try{sessionStorage.setItem("termdock-secure-last-workspace",d.targetPeerId)}catch{}l&&o.add(f),s();for(const[g,m]of n)i(g,m);return!0},report(c,l){const d=e.items.find(f=>f.key===c);if(!d||l.service&&d.service?.targetPeerId&&l.service.targetPeerId!==d.service.targetPeerId)return;const u={...d,...l};JSON.stringify(u)!==JSON.stringify(d)&&(e={...e,items:e.items.map(f=>f===d?u:f)},s())},attach(c,l){l?(n.set(c,l),i(c,l)):n.delete(c)},focusSession(c,l){const d=Ht().find(f=>f.targetPeerId===c);if(!d)return!1;try{localStorage.setItem(Ea+c,JSON.stringify({sessionId:l,at:Date.now()}))}catch{return!1}a.activate(d,!1);const u=n.get(e.activeKey);if(u){const f=u.document.createEvent("CustomEvent");f.initCustomEvent("termdock:workspace-session",!1,!1,null),u.dispatchEvent(f)}return!0}};return window.__termdockWorkspaceHost=a,a}let ui;async function Ge(){return ui||(ui=(async()=>{const t=await new Promise((e,r)=>{const n=indexedDB.open("termdock-device-identity",1);n.onupgradeneeded=()=>n.result.createObjectStore("keys"),n.onsuccess=()=>e(n.result),n.onerror=()=>r(n.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 ld(e);const r=await Rh();let n=r;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"?n=ld(c.result):a.put(lx(r),"identity")},i.oncomplete=()=>o(),i.onerror=()=>s(i.error)}),n}finally{t.close()}})()),ui}const lr="termdock:secure-state";let Q,yn,Ue,Gn="direct",fi=!1,pd=0;const Zr=globalThis.fetch.bind(globalThis);function ne(){return Br()}function bn(){return Q}function Px(){return Ue}function $h(){Q?.close(),Ue?.close(),Q=void 0,Ue=void 0}async function Hh(){const t=await Zr("/api/auth/status",{signal:AbortSignal.timeout(5e3)});if(!t.ok)throw new Error("Failed to query auth status");return t.json()}async function Nx(){if(ne()){await ct();return}if((await Hh()).enabled)return;const t=await Zr("/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 Qe({url:location.origin,targetPeerId:e,serviceName:location.hostname})}async function Lx(t,e){const{startPasswordBootstrap:r,finishPasswordBootstrap:n}=await Kt(async()=>{const{startPasswordBootstrap:l,finishPasswordBootstrap:d}=await import("./passwordBootstrap-DXFQ8-hp.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 Zr(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 Ge(),c=await r(e,i);try{const l=await s("/api/auth/password/start",{startLoginRequest:c.startLoginRequest,clientIdentity:a.peerId});let d;try{d=await n(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 Ec(t,e){const r=ne();if(r&&(r.serviceOrigin||r.url)===t)return await Aa(r,e),r;try{return await Lx(t,e)}catch(n){if(!(n instanceof TypeError)&&!(n instanceof DOMException))throw n;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 Aa(s,e),s}}async function Aa(t,e){const r=await qh(t),{startPasswordBootstrap:n,finishPasswordBootstrap:o}=await Kt(async()=>{const{startPasswordBootstrap:i,finishPasswordBootstrap:a}=await import("./passwordBootstrap-DXFQ8-hp.js");return{startPasswordBootstrap:i,finishPasswordBootstrap:a}},__vite__mapDeps([0,1,2,3]));let s;try{const i=await r.request({type:"password-parameters"},{timeoutMs:5e3});s=await n(e,String(i.saltHex));const a=await r.request({type:"password-start",startLoginRequest:s.startLoginRequest,origin:location.origin}),c=await o(s,a,{clientIdentity:(await Ge()).peerId,origin:location.origin});if(c.serverIdentity!==t.targetPeerId)throw new Error("服务身份发生变化。");await r.request({type:"password-finish",attemptId:c.attemptId,finishLoginRequest:c.finishLoginRequest})}catch{throw new Error("暂时无法登录,请检查目标服务密码与入口授权后重试。")}finally{s&&(s.passwordKey=""),r.close()}}async function Bx(t){try{const e=ne(),r=e?.serviceOrigin||location.origin,n=await Ec(r,t);return await Qe({...n,routes:e?.routes,serviceName:e?.serviceName||n.serviceName}),Response.json({ok:!0})}catch(e){return Response.json({error:e instanceof Error?e.message:"暂时无法登录,请重试。",code:"INVALID_PASSWORD"},{status:401})}}async function gd(t,e){const r=Le(t),n=(await We()).find(i=>(i.serviceOrigin||i.url)===r&&i.targetPeerId);if(e===void 0&&n?.targetPeerId)try{return await Qe({...n,targetPeerId:n.targetPeerId,serviceName:n.label}),{}}catch(i){if(!(i instanceof Ve))throw i}if(e!==void 0){const i=await Ec(r,e);if(n?.targetPeerId&&n.targetPeerId!==i.targetPeerId)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await Qe({...i,routes:n?.routes,serviceName:n?.label||i.serviceName}),{}}const o=await Zr(new URL("/api/auth/open/parameters",r).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(n?.targetPeerId&&n.targetPeerId!==s)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await Qe({url:r,targetPeerId:s,serviceName:n?.label||new URL(r).host,serviceOrigin:r}),{}}function dr(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 r=JSON.parse(localStorage.getItem(za)||"null");r&&r.targetPeerId!==t.targetPeerId&&new URL(r.url).host===new URL(t.url).host&&e.push(r)}catch{}return e.flatMap((r,n)=>{try{return r.targetPeerId&&r.targetPeerId!==t.targetPeerId&&e.findIndex(o=>o.targetPeerId===r.targetPeerId)===n?[{url:Le(r.url),targetPeerId:r.targetPeerId}]:[]}catch{return[]}}).slice(0,4)}function so(t){const e=dr(t),r=[t.serviceOrigin||t.url,...(t.routes||[]).slice(0,4).filter(o=>o.targetPeerId===t.targetPeerId).map(o=>o.url)],n=new Set;for(const o of r)try{const s=Le(o);e.some(i=>i.url===s)||n.add(s)}catch{}return[...n]}function ur(t){const e=new URL("/api/federation/secure",Le(t));return e.protocol=e.protocol==="https:"?"wss:":"ws:",e.href}async function zt(t,e){return cr({url:ur(t.url),targetPeerId:t.targetPeerId,identity:await Ge(),signal:e?AbortSignal.any([e,AbortSignal.timeout(5e3)]):AbortSignal.timeout(5e3)})}async function qh(t,e){const r=await Ge(),n=so(t).map(i=>({key:`direct:${i}`,run:a=>cr({url:ur(i),targetPeerId:t.targetPeerId,identity:r,signal:AbortSignal.any([a,AbortSignal.timeout(8e3),...e?[e]:[]])})}));for(const i of dr(t))n.push({key:`relay:${i.targetPeerId}:${i.url}`,run:async a=>{e&&(a=AbortSignal.any([a,e]));const c=[Q,Ue].find(d=>d&&!d.closed&&d.targetPeerId===i.targetPeerId),l=c||await zt(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(ur(i.url));return u.pathname="/api/federation/relay",u.searchParams.set("routeToken",d.routeToken),await cr({url:u.href,targetPeerId:t.targetPeerId,identity:r,socketFactory:Dh(t.targetPeerId),signal:AbortSignal.any([a,AbortSignal.timeout(8e3)])})}finally{c||l.close()}}});const o=Oh(t.targetPeerId);n.sort((i,a)=>+(a.key===o)-+(i.key===o));const s=await jh(n,i=>i.close());return Mh(t.targetPeerId,s.key),s.value}async function _x(t,e){const r=await qh(t,e),n=()=>r.close();e.addEventListener("abort",n,{once:!0});try{if(e.aborted||(await rn(r,{timeoutMs:3e3}),e.aborted))throw e.reason;return r}catch(o){throw r.close(),o}finally{e.removeEventListener("abort",n)}}async function Qe(t,e={}){const r=Q,n=Ue,o=await Ge(),s=Le(t.serviceOrigin||t.url),i=(await We()).find(w=>w.targetPeerId===t.targetPeerId),a={...t,routes:t.routes??i?.routes},c=dr(a),l=so(a);let d,u,f=t.pairingCode,h="direct";const g=new Set,m=new Map,y=async(w,I)=>{if(r&&!r.closed&&r.targetPeerId===w.targetPeerId)return r;if(n&&!n.closed&&n.targetPeerId===w.targetPeerId)return n;const v=m.get(w.targetPeerId);if(v&&!v.closed)return v;const A=await zt(w,I);return g.add(A),m.set(w.targetPeerId,A),A};try{if(t.routeCode&&t.entryServiceId){const k=c.find(R=>R.targetPeerId===t.entryServiceId);if(!k)throw new Error("邀请缺少入口信息。");if((await(await y(k)).request({type:"route-pair",code:t.routeCode})).serviceId!==t.targetPeerId)throw new Error("邀请的目标服务不一致。");t.routeOnly&&await Et({id:t.targetPeerId,url:s,label:t.serviceName||new URL(s).host,targetPeerId:t.targetPeerId,serviceOrigin:s,routes:c})}const w=[],I=async(k,x)=>{const S=()=>k.close();x.addEventListener("abort",S,{once:!0});try{if(x.aborted||(await rn(k),x.aborted))throw x.reason}catch(R){throw k.close(),R}finally{x.removeEventListener("abort",S)}};for(const k of l)w.push({key:`direct:${k}`,run:async x=>{const S=await cr({url:ur(k),targetPeerId:t.targetPeerId,pairingCode:f,identity:o,signal:AbortSignal.any([x,AbortSignal.timeout(8e3)])});return f=void 0,await I(S,x),{client:S,path:"direct"}}});for(const k of c)w.push({key:`relay:${k.targetPeerId}:${k.url}`,run:async x=>{let S,R;try{if(S=await y(k,x),x.aborted)throw x.reason;const P=await S.request({type:"route-ticket",serviceId:t.targetPeerId},{timeoutMs:5e3});if(x.aborted)throw x.reason;if(typeof P.routeToken!="string"||!P.routeToken)throw new Error("入口未允许此设备连接该服务。");const b=new URL(ur(k.url));return b.pathname="/api/federation/relay",b.searchParams.set("routeToken",P.routeToken),R=await cr({url:b.href,targetPeerId:t.targetPeerId,pairingCode:f,identity:o,socketFactory:Dh(t.targetPeerId),signal:AbortSignal.any([x,AbortSignal.timeout(8e3)])}),f=void 0,await I(R,x),{client:R,entry:S,path:"relay"}}catch(P){throw R?.close(),S&&S!==n&&S!==r&&S.close(),P}}});const v=Oh(t.targetPeerId);w.sort((k,x)=>+(x.key===v)-+(k.key===v));const A=await jh(w,k=>{k.client.close(),k.entry&&k.entry!==r&&k.entry!==n&&k.entry.close()},!!f);if(d=A.value.client,u=A.value.entry,h=A.value.path,Mh(t.targetPeerId,A.key),Q!==r&&Q&&!Q.closed&&Q.targetPeerId===t.targetPeerId){d.close();for(const k of g)k!==Ue&&k.close();return Q}h==="direct"&&new URL(s).host===location.host&&cg(t.targetPeerId);const B=(await We()).find(k=>k.targetPeerId===t.targetPeerId||!k.targetPeerId&&(k.serviceOrigin||k.url)===s),T=B?.label||t.serviceName||new URL(s).host,N={url:s,targetPeerId:t.targetPeerId,serviceName:T,serviceOrigin:s,routes:a.routes??c};if(await(e.rememberOnly?ug:Et)({id:B?.id||t.targetPeerId,...N,label:T}),Lr!=="unpaired"&&Lr!==t.targetPeerId&&St()&&hs({id:B?.id||t.targetPeerId,...N,label:T})){d.close();for(const k of g)k!==r&&k!==n&&k.close();return r||d}ku(N),Q=d,Gn=h,Ue=u;for(const k of new Set([r,n,...g]))k&&k!==d&&k!==u&&k.close();return Lr!==t.targetPeerId?(location.reload(),new Promise(()=>{})):(window.dispatchEvent(new Event(lr)),d)}catch(w){d?.close();for(const I of g)I!==n&&I.close();throw w}}async function Dx(){const t=Q,e=ne();if(Date.now()-pd<6e4||fi||Gn!=="relay"||!t||t.closed||!t.canSwitchTransport||!e?.serviceOrigin)return;fi=!0,pd=Date.now();let r;try{for(const o of so(e))try{r=await cr({url:ur(o),targetPeerId:e.targetPeerId,identity:await Ge(),signal:AbortSignal.timeout(3e3)}),await rn(r);break}catch(s){if(r?.close(),r=void 0,s instanceof Ve)throw s}if(!r||Q!==t||!t.canSwitchTransport)return;const n=Ue;Q=r,r=void 0,Ue=void 0,Gn="direct",t.close(),n?.close(),window.dispatchEvent(new Event(lr))}catch(n){n instanceof Ve&&Q===t&&($h(),window.dispatchEvent(new Event("auth:unauthorized")))}finally{r?.close(),fi=!1}}function Fx(){return Gn}async function ct(){if(Q&&!Q.closed)return Q;if(Q=void 0,yn)return yn;const t=ne();if(!t)throw new Error("DEVICE_PAIRING_REQUIRED");return yn=Qe(t,{rememberOnly:!0}).catch(e=>{if(Q&&!Q.closed&&Q.targetPeerId===t.targetPeerId)return Q;throw e}).finally(()=>{yn=void 0}),yn}function Ox(t){const e=new URL(t,location.href);if(Q&&!Q.closed)return Q.openSocket(e.pathname+e.search);let r;const n=new _h(t,o=>r?.send(o),()=>r?.close());return ct().then(o=>{n.readyState!==3&&(r=o.openSocket(e.pathname+e.search),r.onopen=()=>n.accept({type:"ws-ready",id:""}),r.onmessage=s=>n.accept({type:"ws-data",id:"",data:s.data}),r.onclose=s=>n.accept({type:"ws-close",id:"",code:s.code,reason:s.reason}),r.onerror=()=>n.fail(new Error("Encrypted connection unavailable")))}).catch(o=>n.fail(o)),n}function Mx(){Ix(ct),window.fetch=async(t,e)=>{const r=new URL(t instanceof Request?t.url:String(t),location.href);if(!r.pathname.startsWith("/api/"))return Zr(t,e);if(r.origin!==location.origin)throw new Error("Remote business API requires a paired encrypted service");if(r.pathname==="/api/meta")return Zr(t,e);if(r.pathname==="/api/auth/status"){if(!ne()){const o=await Hh();return Response.json({enabled:o.enabled,authenticated:!1})}try{const o=await rn(await ct());return Response.json({enabled:o.grants.length>0,authenticated:!0})}catch(o){if(o instanceof Ve)return Response.json({enabled:!0,authenticated:!1});throw o}}if(r.pathname==="/api/auth/login"){const s=await new Request(t instanceof Request?t:r.href,e).json();return Bx(typeof s.password=="string"?s.password:"")}if(r.pathname==="/api/csrf-token")return Response.json({csrfToken:"encrypted-device-channel"});if(r.pathname==="/api/auth/logout")return Q&&!Q.closed&&await Q.request({type:"logout"}),Q?.close(),Ue?.close(),Q=void 0,Ue=void 0,ag(),location.reload(),Response.json({ok:!0});const n=await ct();return t instanceof Request?n.fetch(t,e):n.fetch(r.pathname+r.search,e)}}async function jx(t){if(!t.targetPeerId)throw new Error("请先连接这台服务,再查看可中转的服务。");for(const e of so({...t,targetPeerId:t.targetPeerId})){let r;const n={url:e,targetPeerId:t.targetPeerId};try{r=await zt(n)}catch{continue}try{const o=await r.request({type:"route-targets"},{timeoutMs:5e3});if(!Array.isArray(o.items))throw new Error("入口服务需要更新后才能查看中转列表。");return{route:n,canManage:o.canManage===!0,items:o.items}}catch(o){throw o instanceof Error&&/UNKNOWN|UNSUPPORTED/i.test(o.message)?new Error("入口服务需要更新后才能查看中转列表。"):o}finally{r.close()}}throw new Error("暂时连不上中转入口,请检查地址和网络后重试。")}async function Ux(t,e){const r=await zt(t);try{const n=await r.request({type:"route-targets"},{timeoutMs:5e3}),o=(Array.isArray(n.items)?n.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(!n.canManage)throw new Error("请先让入口管理员授权此设备。");await r.request({type:"route-grant",serviceId:o.serviceId,subjectId:(await Ge()).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{r.close()}}async function $x(t,e){const r=await zt(t);try{const n=await r.request({type:"route-access"},{timeoutMs:5e3}),o=(await Ge()).peerId;return{canManage:n.canManage===!0,grants:(Array.isArray(n.grants)?n.grants:[]).filter(s=>s.subjectId===o&&s.targetServiceId===e)}}finally{r.close()}}async function Hx(t,e,r){if(r!==void 0&&(await Ec(Le(e.url),r)).targetPeerId!==e.targetPeerId)throw new Error("入口服务的身份已改变,请重新连接并确认。");const n=await zt(e);try{await n.request({type:"route-grant",serviceId:t.targetPeerId,subjectId:(await Ge()).peerId,url:Le(t.serviceOrigin||t.url)})}finally{n.close()}}async function qx(t,e){const r=await zt(e);try{const n=await r.request({type:"route-access"},{timeoutMs:5e3}),o=(await Ge()).peerId,s=(Array.isArray(n.grants)?n.grants:[]).filter(i=>i.subjectId===o&&i.targetServiceId===t&&i.active);for(const i of s)await r.request({type:"route-revoke",grantId:i.id})}finally{r.close()}}async function Kh(t,e){const r=await zt(e);try{const n=await r.request({type:"route-invite-create",serviceId:t.targetPeerId});if(typeof n.routeCode!="string"||typeof n.expiresAt!="number")throw new Error("暂时无法生成备用连接邀请。");return{routeCode:n.routeCode,expiresAt:n.expiresAt}}finally{r.close()}}async function Fo(t,e){const r=(await We()).find(o=>o.id===t.id||t.targetPeerId&&o.targetPeerId===t.targetPeerId)||t;await Et({...r,url:r.serviceOrigin||r.url,entryServiceId:void 0,routes:e});const n=ne();n&&n.targetPeerId===t.targetPeerId&&ku({...n,url:n.serviceOrigin||n.url,entryServiceId:void 0,routes:e})}async function Kx(t,e){const r=t.targetPeerId;if(!r)throw new Error("请先连接这台服务,再添加备用地址。");let n;try{n=Le(e)}catch{throw new Error("请输入有效的 HTTPS 地址,例如 https://电脑地址:9834。")}const o=async()=>(await We()).find(a=>a.targetPeerId===r)||t,s=a=>{const c=a.routes??dr({...a,targetPeerId:r});if(Le(a.serviceOrigin||a.url)===n||c.some(l=>Le(l.url)===n))throw new Error("这个地址已经在连接列表中。");if(c.length>=4)throw new Error("最多保存 4 个备用地址或入口,请先移除不再使用的连接。");return[...c,{url:n,targetPeerId:r}]};s(await o());let i;try{try{i=await cr({url:ur(n),targetPeerId:r,identity:await Ge(),signal:AbortSignal.timeout(5e3)}),await rn(i)}catch(l){throw l instanceof Ve?new Error("这台服务尚未授权当前设备,请先恢复设备授权。"):new Error("无法验证这个地址。请确认能访问该地址、HTTPS 证书受信任,且运行的是同一台 Termdock 服务。")}const a=await o(),c=s(a);if(await Fo(a,c),ne()?.targetPeerId===r&&Lr===r&&(!Q||Q.closed)){const l=Q,d=Ue;Q=i,i=void 0,Ue=void 0,Gn="direct",l?.close(),d?.close(),window.dispatchEvent(new Event(lr))}return c}finally{i?.close()}}async function md(t,e){await Aa(t,e),await Qe({...t,pairingCode:void 0,routeCode:void 0})}function zx(t,e){return e.aborted?Promise.reject(e.reason):new Promise((r,n)=>{const o=()=>n(e.reason);e.addEventListener("abort",o,{once:!0}),t.then(r,n).finally(()=>e.removeEventListener("abort",o))})}function zh(){if(window.termdockDesktop||window.parent!==window)return;if(window.__termdockCollaboration)return window.__termdockCollaboration;const t=new Map;let e=[],r=!1;const n=l=>{const d=l.targetPeerId;if(ne()?.targetPeerId===d)return ct();const u=t.get(d);if(u)return u.then(h=>h.closed?(t.get(d)===u&&t.delete(d),n(l)):h);const f=_x({...l,targetPeerId:d},AbortSignal.timeout(12e3)).then(h=>{if(r||t.get(d)!==f)throw h.close(),new Error("服务连接已移除");return h}).catch(h=>{throw t.get(d)===f&&t.delete(d),h});return t.set(d,f),f},o=()=>{const l=ne(),d=Ht();l&&!d.some(f=>f.targetPeerId===l.targetPeerId)&&d.push({...l,id:l.targetPeerId,label:l.serviceName||l.serviceOrigin||l.url});const u=new Set(d.map(f=>f.targetPeerId));for(const[f,h]of t)u.has(f)||(t.delete(f),h.then(g=>g.close()).catch(()=>{}));e=d.filter(f=>!!f.targetPeerId).map(f=>({origin:f.serviceOrigin||f.url,label:f.label,request:async(h,g="GET",m)=>{if(!/^\/collaboration-(?:federation|groups)(?:\/[^?#]*)?$/.test(h))throw new Error("无效的协作请求");const y=AbortSignal.timeout(18e3),w=await zx(n(f),y),I=new Headers({"Content-Type":"application/json"});if(g!=="GET"&&g!=="HEAD"){const B=await w.fetch("/api/csrf-token",{signal:y});if(!B.ok)throw new Error("无法读取目标服务的请求令牌");const T=await B.json();if(typeof T.csrfToken!="string")throw new Error("目标服务的请求令牌无效");I.set("X-XSRF-TOKEN",T.csrfToken)}const v=await w.fetch(`/api/terminal/operations${h}`,{method:g,headers:I,signal:y,...m===void 0?{}:{body:JSON.stringify(m)}}),A=v.status===204?void 0:await v.json();if(!v.ok)throw new Error(A?.error||"服务不可达或未授权协作访问");return A}}))},s=new dg(()=>e),i={peers:l=>(o(),s.peers(l)),save:async(l,d)=>{o();const u=await s.save(l,d);return a(),u}},a=async()=>{r||document.hidden||!navigator.onLine||!ne()||(o(),!(e.length<2)&&await s.refresh().catch(()=>{}))};window.__termdockCollaboration=i;const c=window.setInterval(()=>{a()},2e3);return document.addEventListener("visibilitychange",a),window.addEventListener("online",a),window.addEventListener("pageshow",a),window.addEventListener("pagehide",l=>{if(!l.persisted){r=!0,clearInterval(c);for(const d of t.values())d.then(u=>u.close()).catch(()=>{});t.clear()}}),a(),i}function Vh(){if(!window.termdockDesktop)try{if(window.parent===window)return zh();if(location.pathname==="/workspace.html"&&window.parent.location.origin===location.origin)return window.parent.__termdockCollaboration}catch{}}var Ro={},wd;function Vx(){if(wd)return Ro;wd=1;var t=Zp();return Ro.createRoot=t.createRoot,Ro.hydrateRoot=t.hydrateRoot,Ro}var Wx=Vx();const Gx=Au(Wx);const Wh=(...t)=>t.filter((e,r,n)=>!!e&&e.trim()!==""&&n.indexOf(e)===r).join(" ").trim();const Xx=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const Yx=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,r,n)=>n?n.toUpperCase():r.toLowerCase());const yd=t=>{const e=Yx(t);return e.charAt(0).toUpperCase()+e.slice(1)};var hi={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 Zx=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1},Jx=O.createContext({}),Qx=()=>O.useContext(Jx),eS=O.forwardRef(({color:t,size:e,strokeWidth:r,absoluteStrokeWidth:n,className:o="",children:s,iconNode:i,...a},c)=>{const{size:l=24,strokeWidth:d=2,absoluteStrokeWidth:u=!1,color:f="currentColor",className:h=""}=Qx()??{},g=n??u?Number(r??d)*24/Number(e??l):r??d;return O.createElement("svg",{ref:c,...hi,width:e??l??hi.width,height:e??l??hi.height,stroke:t??f,strokeWidth:g,className:Wh("lucide",h,o),...!s&&!Zx(a)&&{"aria-hidden":"true"},...a},[...i.map(([m,y])=>O.createElement(m,y)),...Array.isArray(s)?s:[s]])});const Te=(t,e)=>{const r=O.forwardRef(({className:n,...o},s)=>O.createElement(eS,{ref:s,iconNode:e,className:Wh(`lucide-${Xx(yd(t))}`,`lucide-${t}`,n),...o}));return r.displayName=yd(t),r};const tS=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],Gh=Te("arrow-left",tS);const rS=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],nS=Te("arrow-right",rS);const oS=[["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"}]],sS=Te("bell-dot",oS);const iS=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Ac=Te("check",iS);const aS=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],cS=Te("chevron-down",aS);const lS=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],fr=Te("chevron-right",lS);const dS=[["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"}]],Xh=Te("copy",dS);const uS=[["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"}]],fS=Te("ellipsis",uS);const hS=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],$e=Te("loader-circle",hS);const pS=[["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"}]],gS=Te("monitor",pS);const mS=[["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"}]],wS=Te("pencil",mS);const yS=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],Yh=Te("plus",yS);const bS=[["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"}]],Ds=Te("server",bS);const vS=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],Zh=Te("smartphone",vS);const xS=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],SS=Te("terminal",xS);const ES=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],AS=Te("x",ES);function kS(t,e){if(!e)return!1;try{const r=new URL(e.serviceOrigin||e.url);return r.origin===t&&/^(localhost|\[::1\]|127(?:\.\d{1,3}){3})$/.test(r.hostname)&&!(e.routes??[]).some(n=>n.targetPeerId!==e.targetPeerId)}catch{return!1}}function IS(t){const e=s=>s.target instanceof Element?s.target.closest("[data-termdock-terminal-dropzone]"):null,r=()=>!kS(location.origin,Br()),n=s=>{const i=e(s);!i||!r()||!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||!r())return;s.preventDefault(),s.stopImmediatePropagation();const c=i.dataset.termdockTerminalDropzone??"";i.dataset.nativeFileDrag="true",i.dataset.nativeFileDropState="uploading",Kt(async()=>{const{uploadFiles:l}=await Promise.resolve().then(()=>H2);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",n,!0),window.addEventListener("drop",o,!0),()=>{window.removeEventListener("dragover",n,!0),window.removeEventListener("drop",o,!0)}}function Jh(){return typeof window>"u"?null:window.termdockDesktop??null}const pi=new Set;let bd=!1;function _k(t){const e=Jh();if(!e)return()=>{};if(pi.add(t),!bd){const r=n=>{for(const o of pi)o(n)};IS(r),e.onNativeFileDrop(r),bd=!0}return()=>{pi.delete(t)}}function Qh(t=navigator.userAgent,e=navigator.maxTouchPoints){const r=/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":"设备",n=/Electron/.test(t)?"Termdock":/Edg\//.test(t)?"Edge":/Firefox|FxiOS/.test(t)?"Firefox":/Chrome|CriOS/.test(t)?"Chrome":/Safari/.test(t)?"Safari":"浏览器";return`${r} · ${n}`}let CS;function RS(){return CS??=(async()=>{const t=navigator.userAgent,[e,r]=Qh().split(" · "),n=/(?:Edg|Firefox|FxiOS|Chrome|CriOS|Version)\/([\d.]+)/g,o=[...t.matchAll(n)],s=/(?:CPU (?:iPhone )?OS |Mac OS X |Android )([\d._]+)/.exec(t)?.[1]?.replaceAll("_","."),i={system:`${e}${s?` ${s}`:""}`,client:`${r}${o.length?` ${o.at(-1)[1]}`:""}`,mode:matchMedia("(display-mode: standalone)").matches||navigator.standalone?"已安装的网页应用":"网页"},a=Jh();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 TS({service:t,onBusyChange:e,onConnect:r,onConnectWithPassword:n}){const[o,s]=O.useState(),[i,a]=O.useState(!0),[c,l]=O.useState(!1),[d,u]=O.useState(""),[f,h]=O.useState(0),[g,m]=O.useState(),[y,w]=O.useState("");O.useEffect(()=>{let A=!1;return a(!0),u(""),s(void 0),jx(t).then(B=>{A||s(B)}).catch(B=>{A||u(B instanceof Error?B.message:"暂时无法读取中转列表,请重试。")}).finally(()=>{A||a(!1)}),()=>{A=!0}},[t.id,t.url,f]);const I=async A=>{if(!c){l(!0),e(!0),u("");try{await A()}catch(B){u(B instanceof Error?B.message:"暂时无法连接,请重试。")}finally{l(!1),e(!1)}}},v=async A=>{const B=await Ux(o.route,A.serviceId);try{await r(B)}catch(T){if(!(T instanceof Ve))throw T;m(B)}};return p.jsxs("div",{className:"service-form",children:[g?p.jsxs("form",{className:"service-form",onSubmit:A=>{A.preventDefault(),I(async()=>{try{await n?.(g,y)}finally{w("")}})},children:[p.jsxs("p",{className:"service-help",children:["已通过“",t.label,"”连接到“",g.serviceName,"”。请登录目标服务,完成此设备的访问授权。"]}),n?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:y,disabled:c,onChange:A=>w(A.target.value)})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:c||!y,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(A=>A+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($e,{size:16,className:"service-spinning"}),"正在读取可中转的服务…"]}):o&&p.jsxs("div",{className:"service-list",children:[o.items.map(A=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:c||!A.available,onClick:()=>{I(()=>v(A))},children:[p.jsx("span",{className:"service-icon",children:p.jsx(Ds,{size:19})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:A.label||(A.url?new URL(A.url).host:`中转服务 ${A.serviceId.slice(0,8)}`)}),p.jsx("span",{className:"service-description",children:A.available?A.authorized?"已获中转授权 · 连接":"授权此设备并连接":"中转暂不可用"})]}),p.jsx(fr,{size:16})]},A.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($e,{size:16,className:"service-spinning"}),"正在授权并连接目标服务…"]}),!i&&p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:c,onClick:()=>h(A=>A+1),children:"刷新列表"})]}),d&&p.jsx("p",{className:"service-error",role:"alert",children:d})]})}const ka="#termdock-invite=";function ep(t){const e=new URL(t.entryUrl);e.hash="",e.search="",e.pathname="/";const r=new TextEncoder().encode(JSON.stringify(t));return e.hash=ka.slice(1)+btoa(String.fromCharCode(...r)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),e.href}function ps(t){const e=new URL(t);if(!["https:","http:"].includes(e.protocol)||!e.hash.startsWith(ka))throw new Error("这不是有效的 Termdock 邀请链接");const r=e.hash.slice(ka.length);if(r.length>8192)throw new Error("邀请链接过长");let n;try{const i=r.replace(/-/g,"+").replace(/_/g,"/");n=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(Uint8Array.from(atob(i),a=>a.charCodeAt(0))))}catch{throw new Error("邀请链接不完整,请重新复制")}if(n.v!==1||typeof n.serviceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(n.serviceId)||n.routeOnly!==!0&&(typeof n.code!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(n.code)))throw new Error("邀请信息无效或版本不兼容");const o=new URL(n.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(n.entryServiceId!==void 0&&(typeof n.entryServiceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(n.entryServiceId)))throw new Error("邀请入口身份无效");if(n.routeCode!==void 0&&(typeof n.routeCode!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(n.routeCode)||!n.entryServiceId))throw new Error("邀请入口权限无效");if(n.routeOnly===!0&&(!n.entryServiceId||!n.routeCode||n.code!==void 0))throw new Error("备用连接邀请不完整");let s=o.origin;if(n.serviceUrl!==void 0){const i=new URL(n.serviceUrl);if(!["https:","http:"].includes(i.protocol)||i.username||i.password)throw new Error("目标服务地址无效");s=n.entryServiceId&&n.entryServiceId!==n.serviceId?i.origin:o.origin}return{url:o.origin,targetPeerId:n.serviceId,pairingCode:n.code,...n.routeOnly===!0?{routeOnly:!0}:{},serviceOrigin:s,serviceName:typeof n.name=="string"?n.name.slice(0,120):void 0,entryServiceId:n.entryServiceId,routeCode:n.routeCode}}function PS({service:t,onBusyChange:e}){const r={...t,targetPeerId:t.targetPeerId,serviceName:t.label},[n,o]=O.useState(()=>t.routes??dr(r)),[s,i]=O.useState([]),[a,c]=O.useState(!0),[l,d]=O.useState(!1),[u,f]=O.useState(""),h=D=>{d(D),e(D)},[g,m]=O.useState(),[y,w]=O.useState(""),[I,v]=O.useState(""),[A,B]=O.useState(""),[T,N]=O.useState(!1),[k,x]=O.useState(),[S,R]=O.useState(),[P,b]=O.useState(!1);O.useEffect(()=>{let D=!1;return We().then(_=>{D||i(_.filter(F=>F.targetPeerId&&F.targetPeerId!==t.targetPeerId))}).catch(()=>{D||f("暂时无法读取可用服务。")}).finally(()=>{D||c(!1)}),()=>{D=!0}},[t.targetPeerId]);const E=D=>s.find(_=>_.targetPeerId===D.targetPeerId)?.label||new URL(D.url).host,C=async D=>{h(!0),f(""),B("");try{await D()}catch(_){const F=_ instanceof Error?_.message:"";f(/AUTHORIZATION|DENIED/.test(F)?"当前设备没有入口管理权限。请让管理员分享备用连接邀请,或使用入口密码授权。":"暂时无法完成。请确认入口能连接目标服务,且目标地址、证书和授权有效。")}finally{h(!1)}},L=async(D,_)=>{const F={url:D.serviceOrigin||D.url,targetPeerId:D.targetPeerId};await C(async()=>{const q=await $x(F,r.targetPeerId);if(!q.grants.some(K=>K.active)){if(!q.canManage&&_===void 0){m(D);return}await Hx(r,F,_)}const H=[...n.filter(K=>K.targetPeerId!==F.targetPeerId),F];await Fo(t,H),o(H),m(void 0),w("")})};if(S)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:S,onFocus:D=>D.target.select()})]}),p.jsxs("button",{type:"button",className:"service-button service-primary",onClick:()=>{navigator.clipboard.writeText(S).then(()=>b(!0)).catch(()=>f("无法自动复制,请长按链接复制。"))},children:[p.jsx(Xh,{size:16}),P?"已复制":"复制邀请链接"]}),p.jsx("button",{type:"button",className:"service-button service-secondary",onClick:()=>{R(void 0),b(!1)},children:"返回备用连接"}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u})]});if(g)return p.jsxs("form",{className:"service-form",onSubmit:D=>{D.preventDefault(),L(g,y).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:y,onChange:D=>w(D.target.value),autoComplete:"current-password",disabled:l,autoFocus:!0})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:l||!y,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 M=n.filter(D=>D.targetPeerId===r.targetPeerId),$=n.filter(D=>D.targetPeerId!==r.targetPeerId),j=async()=>{if(!l){h(!0),N(!0),f(""),B("");try{o(await Kx({...t,routes:n},I)),v(""),B("备用地址已验证并保存。")}catch(D){f(D instanceof Error?D.message:"暂时无法添加地址,请重试。")}finally{h(!1),N(!1)}}};return p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"电脑换了网络?添加它在新网络下的地址,原地址连不上时会自动尝试。只接受同一台服务。"}),p.jsxs("form",{className:"service-form",onSubmit:D=>{D.preventDefault(),j()},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"备用地址"}),p.jsx("input",{value:I,onChange:D=>{v(D.target.value),f(""),B("")},required:!0,disabled:l||n.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||n.length>=4||!I.trim(),children:T?p.jsxs(p.Fragment,{children:[p.jsx($e,{size:16,className:"service-spinning"}),"正在验证…"]}):"验证并添加"})]}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u}),A&&p.jsx("p",{role:"status",className:"service-help",children:A}),n.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})]}),M.length>0&&p.jsx("div",{className:"service-list",children:M.map(D=>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:D.url}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`移除地址 ${D.url}`,disabled:l,onClick:()=>x(D),children:"移除"})]}),k?.targetPeerId===D.targetPeerId&&k.url===D.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:()=>x(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{C(async()=>{const _=n.filter(F=>F.targetPeerId!==D.targetPeerId||F.url!==D.url);await Fo(t,_),o(_),x(void 0)})},children:"确认移除"})]})]})]},D.url))}),p.jsxs("details",{className:"service-relay-options",children:[p.jsxs("summary",{children:["通过其他服务中转",$.length?`(${$.length})`:""]}),p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"所有直连地址都不可用时,尝试下方已授权入口;直连恢复后自动切回。"}),$.length>0&&p.jsx("div",{className:"service-list",children:$.map(D=>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(Ds,{size:18})}),p.jsx("span",{className:"service-name",children:E(D)}),p.jsx(Ac,{size:16,className:"service-selected"})]}),k?.targetPeerId===D.targetPeerId?p.jsxs("div",{className:"service-form",children:[p.jsxs("p",{className:"service-help",children:["撤销此设备经“",E(D),"”连接目标的权限?如当前无法直连,目标服务将断开。"]}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>x(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{C(async()=>{await qx(r.targetPeerId,D);const _=n.filter(F=>F.targetPeerId!==D.targetPeerId);await Fo(t,_),o(_),x(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:()=>{C(async()=>{const _=await Kh(r,D);R(ep({v:1,routeOnly:!0,serviceId:r.targetPeerId,name:t.label,serviceUrl:t.serviceOrigin||t.url,entryUrl:D.url,entryServiceId:D.targetPeerId,routeCode:_.routeCode}))})},children:"分享备用连接"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>x(D),children:"撤销授权"})]})]},D.targetPeerId))}),a?p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx($e,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{children:[p.jsx("p",{className:"service-help",children:"添加中转入口"}),s.filter(D=>!n.some(_=>_.targetPeerId===D.targetPeerId)).map(D=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:l||n.length>=4,onClick:()=>{L(D)},children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:D.label}),p.jsx("span",{className:"service-description",children:"验证并授权后启用"})]}),p.jsx(fr,{size:16})]},D.id)),s.length===0&&p.jsx("p",{className:"service-empty",children:"添加并登录另一台服务后,可以将它设为中转入口。"})]})]})]}),l&&!T&&p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx($e,{size:16,className:"service-spinning"}),"正在验证连接与授权…"]})]})}function NS({current:t,renderRoutes:e,renderRelayServices:r,onOpen:n,onAdd:o,onInvite:s,hideHeader:i,onNavigation:a,onBusyChange:c,initiallyAdding:l=!1}){const[d,u]=O.useState([]),[f,h]=O.useState(!0),[g,m]=O.useState(l?{kind:"add"}:{kind:"list"}),[y,w]=O.useState(!1),I=O.useCallback(b=>{w(b),c?.(b)},[c]),[v,A]=O.useState(""),B=O.useCallback(()=>{m(b=>b.kind==="routes"||b.kind==="relay-services"?{kind:"edit",service:b.service}:{kind:"list"}),A("")},[]),T=g.kind==="add"?"添加服务":g.kind==="edit"?"服务设置":g.kind==="routes"?"备用连接":g.kind==="relay-services"?"可中转的服务":void 0;O.useEffect(()=>{a?.({title:T,...T?{back:B}:{}})},[T,B,a]),O.useEffect(()=>{let b=!1,E=0;const C=async()=>{const M=++E;try{const $=await We();!b&&E===M&&(u($),A(""))}catch{!b&&E===M&&A("暂时无法读取服务列表,请重试。")}finally{!b&&E===M&&h(!1)}};C();const L=Ru(()=>{C()});return()=>{b=!0,L()}},[]);const N=async b=>{if(!y){I(!0),A("");try{await b()}catch(E){A(E instanceof Error?E.message:"暂时无法完成,请重试。")}finally{I(!1)}}},k=g.kind==="edit"||g.kind==="routes"||g.kind==="relay-services"?d.find(b=>wt(b,g.service))||g.service:void 0,x=t?d.find(b=>wt(b,t))||t:void 0,S=d.filter(b=>!t||!wt(b,t)),R=x?[x,...S]:S,P=p.jsxs(p.Fragment,{children:[f?p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx($e,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{className:"service-list",children:[R.map(b=>{const E=!!t&&wt(b,t);return p.jsxs("div",{className:"service-row",children:[p.jsxs("button",{type:"button",className:"service-row-open",disabled:y||E,onClick:()=>{N(async()=>{(await n(b))?.passwordRequired&&m({kind:"add",input:b.serviceOrigin||b.url,passwordRequired:!0})})},"aria-label":E?`当前服务 ${b.label}`:`打开 ${b.label}`,children:[p.jsx("span",{className:"service-icon",children:p.jsx(Ds,{size:20})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:b.label}),p.jsx("span",{className:"service-description",children:E?"当前服务":new URL(b.serviceOrigin||b.url).host})]}),E?p.jsx(Ac,{size:17,className:"service-selected"}):p.jsx(fr,{size:16,className:"service-muted"})]}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`管理 ${b.label}`,disabled:y,onClick:()=>{m({kind:"edit",service:b}),A("")},children:p.jsx(fS,{size:19})})]},b.id)}),R.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:y,onClick:()=>{m({kind:"add"}),A("")},children:[p.jsx(Yh,{size:16}),"添加服务"]}),s&&p.jsxs("button",{type:"button",className:"service-button service-secondary",disabled:y,onClick:s,children:[p.jsx(Zh,{size:16}),"邀请设备"]})]})]});return p.jsxs("div",{className:"service-manager",children:[!i&&p.jsxs("div",{className:"service-heading",children:[T&&p.jsx("button",{type:"button",className:"service-icon-button","aria-label":"返回服务",disabled:y,onClick:B,children:p.jsx(Gh,{size:20})}),p.jsx("h2",{children:T||"服务"})]}),g.kind==="relay-services"?r?.(k,I):g.kind==="routes"?e?.(k,I):g.kind==="list"?P:g.kind==="add"?p.jsx(LS,{onSave:b=>N(async()=>{const E=Le(b);u(await Et({id:E,url:E,label:new URL(E).host})),B()}),initialInput:g.input,passwordRequired:g.passwordRequired,busy:y,onSubmit:async(b,E)=>{let C;return await N(async()=>{C=await o(b,E),C?.passwordRequired||B()}),C}}):p.jsx(BS,{onRelayServices:r&&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:k,busy:y,canRemove:!t||!wt(g.service,t),onSave:b=>{N(async()=>{u(await Et({...k,label:b})),B()})},onRemove:()=>{N(async()=>{u(await fg(g.service.id)),B()})}}),v&&p.jsx("p",{className:"service-error",role:"alert",children:v})]})}function LS({busy:t,onSubmit:e,onSave:r,initialInput:n="",passwordRequired:o=!1}){const[s,i]=O.useState(n),[a,c]=O.useState(""),[l,d]=O.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:()=>{r(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($e,{size:16,className:"service-spinning"}),"正在连接…"]}):l?"登录并连接":"继续"})]})}function BS({service:t,busy:e,canRemove:r,onSave:n,onRemove:o,onRoutes:s,onRelayServices:i}){const[a,c]=O.useState(t.label),[l,d]=O.useState(!1);return p.jsxs("form",{className:"service-form",onSubmit:u=>{u.preventDefault(),n(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(fr,{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(fr,{size:16})]}),r&&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 Ir={},gi,vd;function _S(){return vd||(vd=1,gi=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),gi}var mi={},Dt={},xd;function mr(){if(xd)return Dt;xd=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 Dt.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return n*4+17},Dt.getSymbolTotalCodewords=function(n){return e[n]},Dt.getBCHDigit=function(r){let n=0;for(;r!==0;)n++,r>>>=1;return n},Dt.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');t=n},Dt.isKanjiModeEnabled=function(){return typeof t<"u"},Dt.toSJIS=function(n){return t(n)},Dt}var wi={},Sd;function kc(){return Sd||(Sd=1,(function(t){t.L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2};function e(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.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: "+r)}}t.isValid=function(n){return n&&typeof n.bit<"u"&&n.bit>=0&&n.bit<4},t.from=function(n,o){if(t.isValid(n))return n;try{return e(n)}catch{return o}}})(wi)),wi}var yi,Ed;function DS(){if(Ed)return yi;Ed=1;function t(){this.buffer=[],this.length=0}return t.prototype={get:function(e){const r=Math.floor(e/8);return(this.buffer[r]>>>7-e%8&1)===1},put:function(e,r){for(let n=0;n<r;n++)this.putBit((e>>>r-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const r=Math.floor(this.length/8);this.buffer.length<=r&&this.buffer.push(0),e&&(this.buffer[r]|=128>>>this.length%8),this.length++}},yi=t,yi}var bi,Ad;function FS(){if(Ad)return bi;Ad=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,r,n,o){const s=e*this.size+r;this.data[s]=n,o&&(this.reservedBit[s]=!0)},t.prototype.get=function(e,r){return this.data[e*this.size+r]},t.prototype.xor=function(e,r,n){this.data[e*this.size+r]^=n},t.prototype.isReserved=function(e,r){return this.reservedBit[e*this.size+r]},bi=t,bi}var vi={},kd;function OS(){return kd||(kd=1,(function(t){const e=mr().getSymbolSize;t.getRowColCoords=function(n){if(n===1)return[];const o=Math.floor(n/7)+2,s=e(n),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(n){const o=[],s=t.getRowColCoords(n),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}})(vi)),vi}var xi={},Id;function MS(){if(Id)return xi;Id=1;const t=mr().getSymbolSize,e=7;return xi.getPositions=function(n){const o=t(n);return[[0,0],[o-e,0],[0,o-e]]},xi}var Si={},Cd;function jS(){return Cd||(Cd=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 r(n,o,s){switch(n){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:"+n)}}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,r(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}})(Si)),Si}var To={},Rd;function tp(){if(Rd)return To;Rd=1;const t=kc(),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],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return To.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}},To.getTotalCodewordsCount=function(o,s){switch(s){case t.L:return r[(o-1)*4+0];case t.M:return r[(o-1)*4+1];case t.Q:return r[(o-1)*4+2];case t.H:return r[(o-1)*4+3];default:return}},To}var Ei={},vn={},Td;function US(){if(Td)return vn;Td=1;const t=new Uint8Array(512),e=new Uint8Array(256);return(function(){let n=1;for(let o=0;o<255;o++)t[o]=n,e[n]=o,n<<=1,n&256&&(n^=285);for(let o=255;o<512;o++)t[o]=t[o-255]})(),vn.log=function(n){if(n<1)throw new Error("log("+n+")");return e[n]},vn.exp=function(n){return t[n]},vn.mul=function(n,o){return n===0||o===0?0:t[e[n]+e[o]]},vn}var Pd;function $S(){return Pd||(Pd=1,(function(t){const e=US();t.mul=function(n,o){const s=new Uint8Array(n.length+o.length-1);for(let i=0;i<n.length;i++)for(let a=0;a<o.length;a++)s[i+a]^=e.mul(n[i],o[a]);return s},t.mod=function(n,o){let s=new Uint8Array(n);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(n){let o=new Uint8Array([1]);for(let s=0;s<n;s++)o=t.mul(o,new Uint8Array([1,e.exp(s)]));return o}})(Ei)),Ei}var Ai,Nd;function HS(){if(Nd)return Ai;Nd=1;const t=$S();function e(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}return e.prototype.initialize=function(n){this.degree=n,this.genPoly=t.generateECPolynomial(this.degree)},e.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const o=new Uint8Array(n.length+this.degree);o.set(n);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},Ai=e,Ai}var ki={},Ii={},Ci={},Ld;function rp(){return Ld||(Ld=1,Ci.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}),Ci}var it={},Bd;function np(){if(Bd)return it;Bd=1;const t="[0-9]+",e="[A-Z $%*+\\-./:]+";let r="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";r=r.replace(/u/g,"\\u");const n="(?:(?![A-Z0-9 $%*+\\-./:]|"+r+`)(?:.|[\r
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/passwordBootstrap-CQsYwRFF.js","assets/react-XDCjal2T.js","assets/dnd-BCFAPC0L.js","assets/terminal-C7X98Amf.js","assets/App-CqPSkz_g.js","assets/gestureArbiter-BVBarnU9.js","assets/gestureArbiter-C2J0D0kV.css","assets/referenceLongPress-B-A_CKaJ.js","assets/triangle-alert-eoJEloNw.js","assets/DagPlayground-B9ly2Wta.js","assets/ChangeWalkthroughPanel-CtZKX2AS.js","assets/sparkles-B3lcHnSJ.js","assets/DiffLab-Bkzvr6Ys.js","assets/DiffViewer-YO7X8DnR.js","assets/DiffViewer-T3uj2-aP.css","assets/DiffReviewLab--K2fE9B_.js","assets/DiffReview-B5AC89kp.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as Ka,a as Zp,g as Au}from"./react-XDCjal2T.js";import{b as O,r as Jp,R as je}from"./dnd-BCFAPC0L.js";import{L as Qp,l as eg}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"]'))n(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"&&n(i)}).observe(document,{childList:!0,subtree:!0});function r(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 n(o){if(o.ep)return;o.ep=!0;const s=r(o);fetch(o.href,s)}})();const tg="modulepreload",rg=function(t){return"/"+t},Wc={},Kt=function(e,r,n){let o=Promise.resolve();if(r&&r.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(r.map(l=>{if(l=rg(l),l in Wc)return;Wc[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":tg,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 Ks={exports:{}},ln={};var Gc;function ng(){if(Gc)return ln;Gc=1;var t=Ka(),e=Symbol.for("react.element"),r=Symbol.for("react.fragment"),n=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)n.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 ln.Fragment=r,ln.jsx=i,ln.jsxs=i,ln}var Xc;function og(){return Xc||(Xc=1,Ks.exports=ng()),Ks.exports}var p=og();const sr="termdock-secure-target-v1",za="termdock-secure-entry-v1",sg=new Set([sr,za,"termdock-color-theme","termdock:locale","termdock.federation.connections.v1"]),co=typeof Storage>"u"?void 0:Storage.prototype.getItem,zs=typeof Storage>"u"?void 0:Storage.prototype.setItem,Yc="termdock-secure-legacy-owner",$n=typeof window<"u"&&window.parent!==window&&location.pathname==="/workspace.html";function ig(){if(typeof window>"u")return null;try{if($n){const e=new URLSearchParams(location.search).get("termdock-workspace"),r=JSON.parse(localStorage.getItem("termdock.federation.connections.v1")||"[]"),n=Array.isArray(r)?r.find(o=>o?.targetPeerId===e):void 0;return n&&typeof n.url=="string"&&typeof n.targetPeerId=="string"?{...n,serviceName:n.label||n.serviceName}:null}const t=JSON.parse(sessionStorage.getItem(sr)??localStorage.getItem(sr)??"null");return t&&typeof t.url=="string"&&typeof t.targetPeerId=="string"?t:null}catch{return null}}let bs=ig();const Lr=bs?.targetPeerId??"unpaired";function Br(){return bs}function ku(t){if(bs=t,$n)return;const e=JSON.stringify(t);sessionStorage.setItem(sr,e),localStorage.setItem(sr,e)}function ag(){bs=null,!$n&&(localStorage.removeItem(sr),sessionStorage.removeItem(sr),localStorage.removeItem(za))}function Bn(t,e=Lr){return sg.has(t)||t.startsWith("termdock-secure-")?t:`termdock-service:${e}:${t}`}function cg(t){if(!(!co||!zs))try{if(co.call(localStorage,Yc))return;zs.call(localStorage,Yc,t);for(const r of[localStorage,sessionStorage]){const n=Array.from({length:r.length},(o,s)=>r.key(s)).filter(o=>!!o);for(const o of n){if(o.startsWith("termdock-service:")||Bn(o,t)===o)continue;const s=Bn(o,t),i=co.call(r,o);i!==null&&co.call(r,s)===null&&zs.call(r,s,i)}}}catch{}}let Zc=!1;function lg(){if(Zc||typeof Storage>"u")return;Zc=!0;const t=Storage.prototype.getItem,e=Storage.prototype.setItem,r=Storage.prototype.removeItem;Storage.prototype.getItem=function(n){return t.call(this,Bn(String(n)))},Storage.prototype.setItem=function(n,o){e.call(this,Bn(String(n)),o)},Storage.prototype.removeItem=function(n){r.call(this,Bn(String(n)))}}lg();const Jc={pending:0,failed:1,expired:1,delivered:2,read:3},lo=32768,$o="remote:";function ut(t,e){return e.startsWith($o)?e:`${$o}${encodeURIComponent(t)}:${encodeURIComponent(e)}`}function qe(t){if(!t.startsWith($o))return null;const e=t.slice($o.length).split(":");if(e.length!==2)return null;try{return{origin:decodeURIComponent(e[0]),id:decodeURIComponent(e[1])}}catch{return null}}function Qc(t,e){const r=qe(e);return r?.origin===t?r.id:e}function uo(t,e){return{...t,fromSessionId:t.fromSessionId?e(t.fromSessionId):null,toSessionId:e(t.toSessionId)}}class dg{constructor(e){this.services=e}services;snapshots=new Map;reachable=new Set;groups=new Map;messages=new Map;sessions=new Map;diagnostics=new Map;serviceErrors=new Map;inFlight=null;catalogInFlight=null;async refresh(){return this.inFlight?this.inFlight:(this.inFlight=this.synchronize().finally(()=>{this.inFlight=null}),this.inFlight)}async refreshCatalog(){return this.catalogInFlight?this.catalogInFlight:(this.catalogInFlight=this.discover().finally(()=>{this.catalogInFlight=null}),this.catalogInFlight)}async discover(){const e=this.services();this.serviceErrors.clear();const r=await Promise.all(e.map(async n=>{try{const o=await n.request("/collaboration-federation");if(!Array.isArray(o.groups)||!Array.isArray(o.sessions)||!Array.isArray(o.messages))throw new Error("协作目录响应无效,请更新服务");return{service:n,data:o}}catch(o){return this.serviceErrors.set(n.origin,o instanceof Error?o.message.slice(0,300):"协作目录请求失败"),null}}));this.reachable.clear();for(const n of r){if(!n)continue;const{service:o,data:s}=n;for(const[i,a]of Object.entries(s.transportDiagnostics??{}))(!this.diagnostics.has(i)||a.checked_at>this.diagnostics.get(i).checked_at)&&this.diagnostics.set(i,a);this.reachable.add(o.origin),this.snapshots.set(o.origin,s);for(const i of s.groups){const a={...i,sessionIds:i.sessionIds.map(l=>ut(o.origin,l))},c=this.groups.get(i.id);(!c||a.updatedAt>c.updatedAt)&&this.groups.set(i.id,a)}for(const i of s.messages)this.mergeMessage(uo(i,a=>ut(o.origin,a)))}this.sessions.clear();for(const n of this.groups.values())for(const o of n.remoteSessions??[])this.sessions.set(o.sessionId,{...o,serviceConnected:!1,status:"offline",serviceCheckedAt:Date.now()});for(const[n,o]of this.snapshots){const s=this.reachable.has(n);for(const i of o.sessions){const a=ut(n,i.sessionId);this.sessions.set(a,{...i,sessionId:a,serviceOrigin:n,serviceLabel:e.find(c=>c.origin===n)?.label??n,serviceConnected:s,serviceCheckedAt:Date.now(),status:s?i.status:"offline"})}}}async synchronize(){await this.refreshCatalog();const e=this.services();for(const r of this.messages.values()){const n=qe(r.toSessionId)?.origin;if(r.status==="pending"&&n&&!this.reachable.has(n)){const o=this.diagnostics.get(r.id);this.diagnostics.set(r.id,{...o,relay_online:!0,peer_reachable:!1,attempt_count:o?.attempt_count??0,next_retry_at:Date.now()+2e3,last_error:"PEER_UNREACHABLE",checked_at:Date.now()})}}await Promise.all(e.filter(r=>this.reachable.has(r.origin)).map(async r=>{for(const n of this.groups.values())if(!(!this.snapshots.get(r.origin)?.groups.some(s=>s.id===n.id)&&!n.sessionIds.some(s=>qe(s)?.origin===r.origin)))try{await this.push(r,n)}catch{this.reachable.delete(r.origin)}})),await Promise.all(e.filter(r=>this.reachable.has(r.origin)).map(async r=>{if(!((this.snapshots.get(r.origin)?.protocolVersion??1)<2))for(const n of this.groups.values()){if(n.deleted||!n.sessionIds.some(s=>qe(s)?.origin===r.origin))continue;const o=[...this.diagnostics].filter(([s])=>this.messages.get(s)?.groupId===n.id).map(([s,i])=>({message_id:s,diagnostic:i,...this.messages.get(s)?.status==="failed"?{failure_reason:this.messages.get(s)?.failureReason}:{}}));if(o.length)try{await r.request("/collaboration-federation","POST",{group:this.groupForService(n,r.origin),messages:[],transport:o})}catch{}}}))}mergeMessage(e){const r=this.messages.get(e.id),n=Jc;if((!r||n[e.status]>n[r.status])&&this.messages.set(e.id,e),this.messages.size>2e3){const o=[...this.messages.values()].find(s=>s.status!=="pending"&&s.status!=="failed");o&&this.messages.delete(o.id)}}groupForService(e,r){const n=e.sessionIds.filter(o=>qe(o)?.origin!==r).map(o=>{const s=qe(o),i=this.sessions.get(o);return{sessionId:o,name:i?.name??s.id,cwd:i?.cwd??"",status:i?.status??"offline",capability:i?.capability??"",currentTask:i?.currentTask??"",updatedAt:i?.updatedAt??0,agent:i?.agent??null,backendSessionId:null,agentNativeSessionId:null,serviceOrigin:s.origin,serviceLabel:i?.serviceLabel??s.origin,serviceConnected:this.reachable.has(s.origin),serviceCheckedAt:Date.now()}});return{...e,sessionIds:e.sessionIds.map(o=>Qc(r,o)),remoteSessions:n}}async push(e,r){const n=Jc,o=new Map((this.snapshots.get(e.origin)?.messages??[]).map(i=>[i.id,i])),s=[...this.messages.values()].filter(i=>i.groupId===r.id&&(!o.has(i.id)||n[i.status]>n[o.get(i.id).status])).map(i=>uo(i,a=>Qc(e.origin,a)));if(!s.length){await e.request("/collaboration-federation","POST",{group:this.groupForService(r,e.origin),messages:[]});return}for(const i of s){const a=this.messages.get(i.id),c=qe(a.toSessionId)?.origin===e.origin,l=this.diagnostics.get(i.id);if(c&&l?.next_retry_at&&l.next_retry_at>Date.now()&&l.last_error!=="PEER_UNREACHABLE")continue;const d={relay_online:!0,peer_reachable:!0,attempt_count:(l?.attempt_count??0)+(c?1:0),next_retry_at:null,last_error:null,checked_at:Date.now(),fragments_sent:0,fragments_total:0},u=this.snapshots.get(e.origin)?.protocolVersion??1;if(u<2&&(String(i.content??"").length>2e4||i.responseKind||i.task||i.metadata||i.expiresAt||i.status==="failed"||i.status==="expired")){c&&(this.messages.set(i.id,{...a,status:"failed",failureReason:"PEER_UPGRADE_REQUIRED"}),this.diagnostics.set(i.id,{...d,last_error:"PEER_UPGRADE_REQUIRED"}));continue}try{const f=new TextEncoder().encode(JSON.stringify(i));if(u>=2&&f.length>lo&&!o.has(i.id)){const h=Math.ceil(f.length/lo),g=Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",f)),m=>m.toString(16).padStart(2,"0")).join("");d.fragments_total=h;for(let m=0;m<h;m++){const y=await e.request("/collaboration-federation","POST",{group:this.groupForService(r,e.origin),messages:[],fragments:[{message_id:i.id,group_id:r.id,index:m,total:h,sha256:g,data:btoa(String.fromCharCode(...f.subarray(m*lo,(m+1)*lo)))}]}),w=y.fragmentReceipts?.find(I=>I.message_id===i.id);if(!w||m===h-1&&!w.complete)throw new Error("FRAGMENT_ACK_MISSING");d.fragments_sent=w.received;for(const I of y.messages??[])this.mergeMessage(uo(I,v=>ut(e.origin,v)));if(c){this.diagnostics.set(i.id,{...d,checked_at:Date.now()});const I=this.services().find(v=>v.origin===qe(a.fromSessionId??"")?.origin);I&&I.origin!==e.origin&&(this.snapshots.get(I.origin)?.protocolVersion??1)>=2&&await I.request("/collaboration-federation","POST",{group:this.groupForService(r,I.origin),messages:[],transport:[{message_id:i.id,diagnostic:d}]}).catch(()=>{})}}}else{const h=await e.request("/collaboration-federation","POST",{group:this.groupForService(r,e.origin),messages:[i]});if(!(h.messages??[]).some(g=>g.id===i.id))throw new Error("PEER_REJECTED_MESSAGE");for(const g of h.messages??[])this.mergeMessage(uo(g,m=>ut(e.origin,m)))}c&&this.diagnostics.set(i.id,{...d,checked_at:Date.now()})}catch(f){c&&this.diagnostics.set(i.id,{...d,checked_at:Date.now(),peer_reachable:null,last_error:f instanceof Error?f.message.slice(0,300):"RELAY_REQUEST_FAILED",next_retry_at:Date.now()+Math.min(3e4,1e3*2**Math.min(d.attempt_count,5))})}}}async peers(e){if(!this.services().some(r=>r.origin===e))throw new Error("当前服务未连接");return await this.refreshCatalog(),{protocolVersion:2,origin:e,sessions:[...this.sessions.values()].filter(r=>qe(r.sessionId)?.origin!==e),services:[...this.snapshots.keys(),...this.services().map(r=>r.origin)].filter((r,n,o)=>o.indexOf(r)===n).map(r=>({origin:r,label:this.services().find(n=>n.origin===r)?.label??r,connected:this.reachable.has(r),error:this.serviceErrors.get(r)}))}}async list(e){const r=this.services().find(s=>s.origin===e);if(!r)throw new Error("当前服务未连接");const[n,o]=await Promise.all([this.peers(e),r.request("/collaboration-groups")]);return{groups:o.groups,sessions:[...n.sessions,...o.sessions]}}async save(e,r){await this.refreshCatalog();const n=this.services().find(d=>d.origin===e);if(!n)throw new Error("当前服务未连接");const o=await n.request("/collaboration-groups"),s=r.id?o.groups.find(d=>d.id===r.id):void 0;if(r.id&&!s)throw new Error("协作组已删除,请刷新列表");if(s&&r.expectedUpdatedAt!==void 0&&r.expectedUpdatedAt!==s.updatedAt)throw new Error("协作组已被修改,请重新打开成员管理后再保存");for(const d of this.sessions.keys())qe(d)?.origin===e&&this.sessions.delete(d);for(const d of o.sessions){const u=ut(e,d.sessionId);this.sessions.set(u,{...d,sessionId:u,serviceOrigin:e,serviceLabel:n.label,serviceConnected:!0})}if(!r.id?.startsWith("cross-")&&!r.sessionIds.some(d=>qe(d)))return n.request("/collaboration-groups","POST",r);if(!this.reachable.has(e))throw new Error("当前服务需要升级 Termdock 后才能跨服务组队");const i=[...new Set(r.sessionIds.map(d=>ut(e,d)))],a=new Set(s?.sessionIds.map(d=>ut(e,d))??[]);if(!r.name?.trim()||i.length<2||i.some(d=>!a.has(d)&&(!this.sessions.has(d)||!this.reachable.has(qe(d).origin))))throw new Error("所选成员已变化或服务不可达,请刷新后重新选择;尚未保存任何修改");const c=s?.federated?{...s,sessionIds:s.sessionIds.map(d=>ut(e,d))}:void 0,l={id:c?.id??`cross-${crypto.randomUUID()}`,name:r.name.trim(),sessionIds:i,createdAt:c?.createdAt??Date.now(),updatedAt:Math.max(Date.now(),(c?.updatedAt??0)+1),federated:!0};if(s&&!s.federated){if(o.capabilities?.groupPromotion!==1)throw new Error("当前服务需要升级后才能将已有组转换为跨服务组;原组和记录均未修改");const d=await n.request(`/collaboration-groups/${encodeURIComponent(s.id)}/promote`,"POST",{group:this.groupForService(l,e),expectedUpdatedAt:r.expectedUpdatedAt??s.updatedAt});l.updatedAt=d.group.updatedAt,l.createdAt=d.group.createdAt}else await n.request("/collaboration-federation","POST",{group:this.groupForService(l,e),messages:[],...c?{expectedUpdatedAt:r.expectedUpdatedAt??c.updatedAt}:{}});return this.groups.set(l.id,l),{group:this.groupForService(l,e)}}async remove(e,r){const n=this.services().find(o=>o.origin===e);if(!n)throw new Error("当前服务未连接");await n.request(`/collaboration-groups/${encodeURIComponent(r)}`,"DELETE")}}const vs="termdock.federation.connections.v1",Yi="termdock:services-changed",Va="termdock-secure-removed-services",Ho=t=>[t.id,t.targetPeerId,t.serviceOrigin||t.url].filter(e=>!!e);function Wa(){try{const t=JSON.parse(localStorage.getItem(Va)||"[]");return Array.isArray(t)?t.filter(e=>typeof e=="string"):[]}catch{return[]}}function Le(t){const e=t.trim();if(!e)throw new Error("请输入服务地址。");const r=new URL(/^[a-z][a-z\d+.-]*:\/\//i.test(e)?e:`https://${e}`);r.protocol==="wss:"&&(r.protocol="https:"),r.protocol==="ws:"&&(r.protocol="http:");const n=["localhost","127.0.0.1","[::1]"].includes(r.hostname);if(!["https:","http:"].includes(r.protocol)||r.protocol==="http:"&&!n)throw new Error("请使用 HTTPS 服务地址。");if(r.username||r.password||r.search||r.hash||!["/","/api/federation/secure"].includes(r.pathname))throw new Error("请输入服务首页地址,不要包含账号或额外参数。");return r.origin}function xs(t){if(!t||typeof t!="object")return;const e=t;if(typeof e.url=="string")try{const r=Le(e.url),n=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(r).host;return{id:typeof e.id=="string"&&e.id?e.id:n||r,url:r,label:o,...n?{targetPeerId:n}:{},...typeof e.serviceOrigin=="string"?{serviceOrigin:Le(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:Le(s.url),targetPeerId:s.targetPeerId}]:[]}catch{return[]}})}:{}}}catch{return}}function wt(t,e){return t.targetPeerId&&e.targetPeerId?t.targetPeerId===e.targetPeerId:(t.serviceOrigin||t.url)===(e.serviceOrigin||e.url)}function Iu(t){const e=[];for(const r of t){const n=e.findIndex(o=>wt(o,r));n<0?e.push(r):e[n]={...e[n],...r,id:e[n].id}}return e}function Yn(){return typeof window>"u"?void 0:window.termdockDesktop}function Ht(){try{const t=JSON.parse(localStorage.getItem(vs)||"[]");return Array.isArray(t)?Iu(t.map(xs).filter(e=>!!e)):[]}catch{return[]}}function Cu(t){localStorage.setItem(vs,JSON.stringify(t.map(e=>({...e,serviceName:e.label})))),window.dispatchEvent(new Event(Yi))}let dn;async function We(){const t=Yn();if(!t?.serviceConnections||!t.saveServiceConnection)return Ht();if(dn)return dn;dn=(async()=>{let e=await t.serviceConnections();const r=Ht();for(const n of r)e.some(o=>wt(o,n))||(e=await(t.importServiceConnection||t.saveServiceConnection)(n));return r.length&&localStorage.removeItem(vs),e})();try{return await dn}finally{dn=void 0}}async function Et(t){const e=xs(t);if(!e)throw new Error("服务地址无效。");const r=Yn();if(r?.saveServiceConnection)return r.saveServiceConnection(e);const n=Ht(),o=n.find(a=>a.id===e.id||wt(a,e)),s=new Set([...Ho(e),...o?Ho(o):[]]);localStorage.setItem(Va,JSON.stringify(Wa().filter(a=>!s.has(a))));const i=Iu([...n.filter(a=>a!==o),{...o,...e,id:o?.id||e.id}]);return Cu(i),i}async function ug(t){const e=xs(t);if(!e)throw new Error("服务地址无效。");const r=Yn();if(r?.importServiceConnection)return r.importServiceConnection(e);if(r?.serviceConnections){const n=await r.serviceConnections();return n.some(o=>wt(o,e))?Et(e):n}return Ho(e).some(n=>Wa().includes(n))?Ht():Et(e)}async function fg(t){const e=Yn();if(e?.removeServiceConnection)return e.removeServiceConnection(t);const r=Ht(),n=r.find(s=>s.id===t);n&&localStorage.setItem(Va,JSON.stringify([...new Set([...Wa(),...Ho(n)])].slice(-768)));const o=r.filter(s=>s.id!==t);return Cu(o),o}function Ru(t){const e=n=>{(n.key===vs||n.key===null)&&t()};window.addEventListener(Yi,t),window.addEventListener("storage",e);const r=Yn()?.onServiceConnections?.(t);return()=>{window.removeEventListener(Yi,t),window.removeEventListener("storage",e),r?.()}}class hg extends Error{static name="UnexpectedPeerError";constructor(e="Unexpected Peer"){super(e),this.name="UnexpectedPeerError"}}let pg=class extends Error{static name="InvalidCryptoExchangeError";constructor(e="Invalid crypto exchange"){super(e),this.name="InvalidCryptoExchangeError"}},et=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}};class Tu extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}}class Pu extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}}class gg extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}}class mg extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}}class Ss extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}}const Nu=Symbol.for("@libp2p/peer-id");function wg(t){return typeof t?.handleEvent=="function"}function yg(t){return t===!0||t===!1}function bg(t){return yg(t)?t:t?.capture??!1}function Zi(t){const e={capture:bg(t),once:!!t?.once};return t?.passive!=null&&(e.passive=t?.passive),t?.signal!=null&&(e.signal=t?.signal),e}function el(t,e){return Zi(t).capture===Zi(e).capture}class vg extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){const r=this.#e.get(e);return r==null?0:r.length}addEventListener(e,r,n){const o=Zi(n);if(o?.signal?.aborted===!0)return;const s=l=>{o.once&&this.removeEventListener(e,r,o),wg(r)?r.handleEvent(l):r(l)};let i=this.#e.get(e);if(i==null&&(i=[],this.#e.set(e,i)),i.some(l=>l.callback!==r?!1:el(l.options,o)))return;super.addEventListener(e,s,o);const c=()=>{this.removeEventListener(e,r,o)};o.signal?.addEventListener("abort",c),i.push({callback:r,wrapper:s,options:o,onAbort:c})}removeEventListener(e,r,n){const o=this.#e.get(e);if(o==null){super.removeEventListener(e,r??null,n);return}this.#e.set(e,o.filter(s=>s.callback===r&&el(s.options,n)?(super.removeEventListener(e,s.wrapper,n),s.options?.signal?.removeEventListener("abort",s.onAbort),!1):!0))}safeDispatchEvent(e,r={}){return this.dispatchEvent(new CustomEvent(e,r))}}const xg=Symbol.for("@libp2p/service-capabilities");function Sg(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let r=0;r<t.byteLength;r++)if(t[r]!==e[r])return!1;return!0}function Es(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 Eg(t){return new TextEncoder().encode(t)}function Ag(t){return new TextDecoder().decode(t)}function kg(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),n=0;n<r.length;n++)r[n]=255;for(var o=0;o<t.length;o++){var s=t.charAt(o),i=s.charCodeAt(0);if(r[i]!==255)throw new TypeError(s+" is ambiguous");r[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,y=0,w=0,I=g.length;w!==I&&g[w]===0;)w++,m++;for(var v=(I-w)*d+1>>>0,A=new Uint8Array(v);w!==I;){for(var B=g[w],T=0,N=v-1;(B!==0||T<y)&&N!==-1;N--,T++)B+=256*A[N]>>>0,A[N]=B%a>>>0,B=B/a>>>0;if(B!==0)throw new Error("Non-zero carry");y=T,w++}for(var k=v-y;k!==v&&A[k]===0;)k++;for(var x=c.repeat(m);k<v;++k)x+=t.charAt(A[k]);return x}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 y=0,w=0;g[m]===c;)y++,m++;for(var I=(g.length-m)*l+1>>>0,v=new Uint8Array(I);g[m];){var A=r[g.charCodeAt(m)];if(A===255)return;for(var B=0,T=I-1;(A!==0||B<w)&&T!==-1;T--,B++)A+=a*v[T]>>>0,v[T]=A%256>>>0,A=A/256>>>0;if(A!==0)throw new Error("Non-zero carry");w=B,m++}if(g[m]!==" "){for(var N=I-w;N!==I&&v[N]===0;)N++;for(var k=new Uint8Array(y+(I-N)),x=y;N!==I;)k[x++]=v[N++];return k}}}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 Ig=kg,Cg=Ig;class Rg{name;prefix;baseEncode;constructor(e,r,n){this.name=e,this.prefix=r,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class Tg{name;prefix;baseDecode;prefixCodePoint;constructor(e,r,n){this.name=e,this.prefix=r;const o=r.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}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 Lu(this,e)}}class Pg{decoders;constructor(e){this.decoders=e}or(e){return Lu(this,e)}decode(e){const r=e[0],n=this.decoders[r];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}function Lu(t,e){return new Pg({...t.decoders??{[t.prefix]:t},...e.decoders??{[e.prefix]:e}})}class Ng{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,r,n,o){this.name=e,this.prefix=r,this.baseEncode=n,this.baseDecode=o,this.encoder=new Rg(e,r,n),this.decoder=new Tg(e,r,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}function As({name:t,prefix:e,encode:r,decode:n}){return new Ng(t,e,r,n)}function Zn({name:t,prefix:e,alphabet:r}){const{encode:n,decode:o}=Cg(r,t);return As({prefix:e,name:t,encode:n,decode:s=>Es(o(s))})}function Lg(t,e,r,n){let o=t.length;for(;t[o-1]==="=";)--o;const s=new Uint8Array(o*r/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-${n} character`);a=a<<r|d,i+=r,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=r||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function Bg(t,e,r){const n=e[e.length-1]==="=",o=(1<<r)-1;let s="",i=0,a=0;for(let c=0;c<t.length;++c)for(a=a<<8|t[c],i+=8;i>r;)i-=r,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<r-i]),n)for(;(s.length*r&7)!==0;)s+="=";return s}function _g(t){const e={};for(let r=0;r<t.length;++r)e[t[r]]=r;return e}function Ae({name:t,prefix:e,bitsPerChar:r,alphabet:n}){const o=_g(n);return As({prefix:e,name:t,encode(s){return Bg(s,n,r)},decode(s){return Lg(s,o,r,t)}})}const Ne=Zn({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Dg=Zn({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"}),Fg=Object.freeze(Object.defineProperty({__proto__:null,base58btc:Ne,base58flickr:Dg},Symbol.toStringTag,{value:"Module"})),_n=Ae({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Og=Ae({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Mg=Ae({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),jg=Ae({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Ug=Ae({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),$g=Ae({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Hg=Ae({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),qg=Ae({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Kg=Ae({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5}),zg=Object.freeze(Object.defineProperty({__proto__:null,base32:_n,base32hex:Ug,base32hexpad:Hg,base32hexpadupper:qg,base32hexupper:$g,base32pad:Mg,base32padupper:jg,base32upper:Og,base32z:Kg},Symbol.toStringTag,{value:"Module"})),Bo=Zn({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Vg=Zn({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}),Wg=Object.freeze(Object.defineProperty({__proto__:null,base36:Bo,base36upper:Vg},Symbol.toStringTag,{value:"Module"}));var Gg=Bu,tl=128,Xg=-128,Yg=Math.pow(2,31);function Bu(t,e,r){e=e||[],r=r||0;for(var n=r;t>=Yg;)e[r++]=t&255|tl,t/=128;for(;t&Xg;)e[r++]=t&255|tl,t>>>=7;return e[r]=t|0,Bu.bytes=r-n+1,e}var Zg=Ji,Jg=128,rl=127;function Ji(t,n){var r=0,n=n||0,o=0,s=n,i,a=t.length;do{if(s>=a)throw Ji.bytes=0,new RangeError("Could not decode varint");i=t[s++],r+=o<28?(i&rl)<<o:(i&rl)*Math.pow(2,o),o+=7}while(i>=Jg);return Ji.bytes=s-n,r}var Qg=Math.pow(2,7),em=Math.pow(2,14),tm=Math.pow(2,21),rm=Math.pow(2,28),nm=Math.pow(2,35),om=Math.pow(2,42),sm=Math.pow(2,49),im=Math.pow(2,56),am=Math.pow(2,63),cm=function(t){return t<Qg?1:t<em?2:t<tm?3:t<rm?4:t<nm?5:t<om?6:t<sm?7:t<im?8:t<am?9:10},lm={encode:Gg,decode:Zg,encodingLength:cm},qo=lm;function Qi(t,e=0){return[qo.decode(t,e),qo.decode.bytes]}function Ko(t,e,r=0){return qo.encode(t,e,r),e}function zo(t){return qo.encodingLength(t)}function Jn(t,e){const r=e.byteLength,n=zo(t),o=n+zo(r),s=new Uint8Array(o+r);return Ko(t,s,0),Ko(r,s,n),s.set(e,o),new Ga(t,r,e,s)}function _u(t){const e=Es(t),[r,n]=Qi(e),[o,s]=Qi(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Ga(r,o,i,e)}function dm(t,e){if(t===e)return!0;{const r=e;return t.code===r.code&&t.size===r.size&&r.bytes instanceof Uint8Array&&Sg(t.bytes,r.bytes)}}class Ga{code;size;digest;bytes;constructor(e,r,n,o){this.code=e,this.size=r,this.digest=n,this.bytes=o}}function nl(t,e){const{bytes:r,version:n}=t;return n===0?fm(r,ea(t),e??Ne.encoder):hm(r,ea(t),e??_n.encoder)}const ol=new WeakMap;function ea(t){const e=ol.get(t);if(e==null){const r=new Map;return ol.set(t,r),r}return e}class ce{code;version;multihash;bytes;"/";constructor(e,r,n,o){this.code=r,this.version=e,this.multihash=n,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:r}=this;if(e!==un)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(r.code!==pm)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return ce.createV0(r)}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:r}=this.multihash,n=Jn(e,r);return ce.createV1(this.code,n)}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 ce.equals(this,e)}static equals(e,r){const n=r;return n!=null&&e.code===n.code&&e.version===n.version&&dm(e.multihash,n.multihash)}toString(e){return nl(this,e)}toJSON(){return{"/":nl(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 r=e;if(r instanceof ce)return r;if(r["/"]!=null&&r["/"]===r.bytes||r.asCID===r){const{version:n,code:o,multihash:s,bytes:i}=r;return new ce(n,o,s,i??sl(n,o,s.bytes))}else if(r[gm]===!0){const{version:n,multihash:o,code:s}=r,i=_u(o);return ce.create(n,s,i)}else return null}static create(e,r,n){if(typeof r!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(r!==un)throw new Error(`Version 0 CID must use dag-pb (code: ${un}) block encoding`);return new ce(e,r,n,n.bytes)}case 1:{const o=sl(e,r,n.bytes);return new ce(e,r,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return ce.create(0,un,e)}static createV1(e,r){return ce.create(1,e,r)}static decode(e){const[r,n]=ce.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return r}static decodeFirst(e){const r=ce.inspectBytes(e),n=r.size-r.multihashSize,o=Es(e.subarray(n,n+r.multihashSize));if(o.byteLength!==r.multihashSize)throw new Error("Incorrect length");const s=o.subarray(r.multihashSize-r.digestSize),i=new Ga(r.multihashCode,r.digestSize,s,o);return[r.version===0?ce.createV0(i):ce.createV1(r.codec,i),e.subarray(r.size)]}static inspectBytes(e){let r=0;const n=()=>{const[u,f]=Qi(e.subarray(r));return r+=f,u};let o=n(),s=un;if(o===18?(o=0,r=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);const i=r,a=n(),c=n(),l=r+c,d=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:d,size:l}}static parse(e,r){const[n,o]=um(e,r),s=ce.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return ea(s).set(n,e),s}}function um(t,e){switch(t[0]){case"Q":{const r=e??Ne;return[Ne.prefix,r.decode(`${Ne.prefix}${t}`)]}case Ne.prefix:{const r=e??Ne;return[Ne.prefix,r.decode(t)]}case _n.prefix:{const r=e??_n;return[_n.prefix,r.decode(t)]}case Bo.prefix:{const r=e??Bo;return[Bo.prefix,r.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 fm(t,e,r){const{prefix:n}=r;if(n!==Ne.prefix)throw Error(`Cannot string encode V0 in ${r.name} encoding`);const o=e.get(n);if(o==null){const s=r.encode(t).slice(1);return e.set(n,s),s}else return o}function hm(t,e,r){const{prefix:n}=r,o=e.get(n);if(o==null){const s=r.encode(t);return e.set(n,s),s}else return o}const un=112,pm=18;function sl(t,e,r){const n=zo(t),o=n+zo(e),s=new Uint8Array(o+r.byteLength);return Ko(t,s,0),Ko(e,s,n),s.set(r,o),s}const gm=Symbol.for("@ipld/js-cid/CID"),Du=0,mm="identity",Fu=Es;function wm(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 Jn(Du,Fu(t))}const Qn={code:Du,name:mm,encode:Fu,digest:wm};function tt(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let r=0;r<t.byteLength;r++)if(t[r]!==e[r])return!1;return!0}function Be(t=0){return new Uint8Array(t)}function At(t=0){return new Uint8Array(t)}function ta(t,e){e==null&&(e=t.reduce((o,s)=>o+s.length,0));const r=At(e);let n=0;for(const o of t)r.set(o,n),n+=o.length;return r}const Ou=Symbol.for("@achingbrain/uint8arraylist");function il(t,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let r=0;for(const n of t){const o=r+n.byteLength;if(e<o)return{buf:n,index:e-r};r=o}throw new RangeError("index is out of bounds")}function fo(t){return!!t?.[Ou]}class re{bufs;length;[Ou]=!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 r=0;for(const n of e)if(n instanceof Uint8Array)r+=n.byteLength,this.bufs.push(n);else if(fo(n)){r+=n.byteLength;for(const o of n.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=r}prepend(...e){this.prependAll(e)}prependAll(e){let r=0;for(const n of e.reverse())if(n instanceof Uint8Array)r+=n.byteLength,this.bufs.unshift(n);else if(fo(n))r+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=r}get(e){const r=il(this.bufs,e);return r.buf[r.index]}set(e,r){const n=il(this.bufs,e);n.buf[n.index]=r}write(e,r=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(r+n,e[n]);else if(fo(e))for(let n=0;n<e.length;n++)this.set(r+n,e.get(n));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,r){const{bufs:n,length:o}=this._subList(e,r);return ta(n,o)}subarray(e,r){const{bufs:n,length:o}=this._subList(e,r);return n.length===1?n[0]:ta(n,o)}sublist(e,r){const{bufs:n,length:o}=this._subList(e,r),s=new re;return s.length=o,s.bufs=n,s}_subList(e,r){if(e=e??0,r=r??this.length,e<0&&(e=this.length+e),r<0&&(r=this.length+r),e<0||r>this.length)throw new RangeError("index is out of bounds");if(e===r)return{bufs:[],length:0};if(e===0&&r===this.length)return{bufs:[...this.bufs],length:this.length};const n=[];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=r>a&&r<=c;if(l&&d){if(e===a&&r===c){n.push(i);break}const u=e-a;n.push(i.subarray(u,u+(r-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(d){if(r===c){n.push(i);break}n.push(i.subarray(0,r-a));break}n.push(i)}return{bufs:n,length:r-e}}indexOf(e,r=0){if(!fo(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');const n=e instanceof Uint8Array?e:e.subarray();if(r=Number(r??0),isNaN(r)&&(r=0),r<0&&(r=this.length+r),r<0&&(r=0),e.length===0)return r>this.length?this.length:r;const o=n.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[n[u]]=u;const a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1;let d;for(let u=r;u<=c;u+=d){d=0;for(let f=l;f>=0;f--){const h=this.get(u+f);if(n[f]!==h){d=Math.max(1,f-a[h]);break}}if(d===0)return u}return-1}getInt8(e){const r=this.subarray(e,e+1);return new DataView(r.buffer,r.byteOffset,r.byteLength).getInt8(0)}setInt8(e,r){const n=At(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,r),this.write(n,e)}getInt16(e,r){const n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,r)}setInt16(e,r,n){const o=Be(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,r,n),this.write(o,e)}getInt32(e,r){const n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,r)}setInt32(e,r,n){const o=Be(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,r,n),this.write(o,e)}getBigInt64(e,r){const n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,r)}setBigInt64(e,r,n){const o=Be(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,r,n),this.write(o,e)}getUint8(e){const r=this.subarray(e,e+1);return new DataView(r.buffer,r.byteOffset,r.byteLength).getUint8(0)}setUint8(e,r){const n=At(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,r),this.write(n,e)}getUint16(e,r){const n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,r)}setUint16(e,r,n){const o=Be(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,r,n),this.write(o,e)}getUint32(e,r){const n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,r)}setUint32(e,r,n){const o=Be(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,r,n),this.write(o,e)}getBigUint64(e,r){const n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,r)}setBigUint64(e,r,n){const o=Be(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,r,n),this.write(o,e)}getFloat32(e,r){const n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,r)}setFloat32(e,r,n){const o=Be(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,r,n),this.write(o,e)}getFloat64(e,r){const n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,r)}setFloat64(e,r,n){const o=Be(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,r,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof re)||e.bufs.length!==this.bufs.length)return!1;for(let r=0;r<this.bufs.length;r++)if(!tt(this.bufs[r],e.bufs[r]))return!1;return!0}static fromUint8Arrays(e,r){const n=new re;return n.bufs=e,r==null&&(r=e.reduce((o,s)=>o+s.byteLength,0)),n.length=r,n}}const ym=Zn({prefix:"9",name:"base10",alphabet:"0123456789"}),bm=Object.freeze(Object.defineProperty({__proto__:null,base10:ym},Symbol.toStringTag,{value:"Module"})),vm=Ae({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),xm=Ae({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4}),Sm=Object.freeze(Object.defineProperty({__proto__:null,base16:vm,base16upper:xm},Symbol.toStringTag,{value:"Module"})),Em=Ae({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1}),Am=Object.freeze(Object.defineProperty({__proto__:null,base2:Em},Symbol.toStringTag,{value:"Module"})),Mu=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),km=Mu.reduce((t,e,r)=>(t[r]=e,t),[]),Im=Mu.reduce((t,e,r)=>{const n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return t[n]=r,t},[]);function Cm(t){return t.reduce((e,r)=>(e+=km[r],e),"")}function Rm(t){const e=[];for(const r of t){const n=r.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${r}`);const o=Im[n];if(o==null)throw new Error(`Non-base256emoji character: ${r}`);e.push(o)}return new Uint8Array(e)}const Tm=As({prefix:"🚀",name:"base256emoji",encode:Cm,decode:Rm}),Pm=Object.freeze(Object.defineProperty({__proto__:null,base256emoji:Tm},Symbol.toStringTag,{value:"Module"})),Nm=Ae({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Lm=Ae({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Bm=Ae({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),_m=Ae({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6}),Dm=Object.freeze(Object.defineProperty({__proto__:null,base64:Nm,base64pad:Lm,base64url:Bm,base64urlpad:_m},Symbol.toStringTag,{value:"Module"})),Fm=Ae({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3}),Om=Object.freeze(Object.defineProperty({__proto__:null,base8:Fm},Symbol.toStringTag,{value:"Module"})),Mm=As({prefix:"\0",name:"identity",encode:t=>Ag(t),decode:t=>Eg(t)}),jm=Object.freeze(Object.defineProperty({__proto__:null,identity:Mm},Symbol.toStringTag,{value:"Module"}));new TextEncoder;new TextDecoder;const Um=20;function $m({name:t,code:e,encode:r,minDigestLength:n,maxDigestLength:o}){return new Hm(t,e,r,n,o)}class Hm{name;code;encode;minDigestLength;maxDigestLength;constructor(e,r,n,o,s){this.name=e,this.code=r,this.encode=n,this.minDigestLength=o??Um,this.maxDigestLength=s}digest(e,r){if(r?.truncate!=null){if(r.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&r.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){const n=this.encode(e);return n instanceof Uint8Array?al(n,this.code,r?.truncate):n.then(o=>al(o,this.code,r?.truncate))}else throw Error("Unknown type, must be binary type")}}function al(t,e,r){if(r!=null&&r!==t.byteLength){if(r>t.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${t.byteLength}`);t=t.subarray(0,r)}return Jn(e,t)}function qm(t){return async e=>new Uint8Array(await crypto.subtle.digest(t,e))}const Xa=$m({name:"sha2-256",code:18,encode:qm("SHA-256")}),cl={...jm,...Am,...Om,...bm,...Sm,...zg,...Wg,...Fg,...Dm,...Pm};function ju(t,e,r,n){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:n}}}const ll=ju("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Vs=ju("ascii","a",t=>{let e="a";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e},t=>{t=t.substring(1);const e=At(t.length);for(let r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}),Uu={utf8:ll,"utf-8":ll,hex:cl.base16,latin1:Vs,ascii:Vs,binary:Vs,...cl};function we(t,e="utf8"){const r=Uu[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return r.decoder.decode(`${r.prefix}${t}`)}function J(t,e="utf8"){const r=Uu[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return r.encoder.encode(t).substring(1)}const Km=parseInt("11111",2),ra=parseInt("10000000",2),zm=parseInt("01111111",2),dl={0:fn,1:fn,2:Vm,3:Xm,4:Ym,5:Gm,6:Wm,16:fn,22:fn,48:fn};function tn(t,e={offset:0}){const r=t[e.offset]&Km;if(e.offset++,dl[r]!=null)return dl[r](t,e);throw new Error("No decoder for tag "+r)}function eo(t,e){let r=0;if((t[e.offset]&ra)===ra){const n=t[e.offset]&zm;let o="0x";e.offset++;for(let s=0;s<n;s++,e.offset++)o+=t[e.offset].toString(16).padStart(2,"0");r=parseInt(o,16)}else r=t[e.offset],e.offset++;return r}function fn(t,e){eo(t,e);const r=[];for(;!(e.offset>=t.byteLength);){const n=tn(t,e);if(n===null)break;r.push(n)}return r}function Vm(t,e){const r=eo(t,e),n=e.offset,o=e.offset+r,s=[];for(let i=n;i<o;i++)i===n&&t[i]===0||s.push(t[i]);return e.offset+=r,Uint8Array.from(s)}function Wm(t,e){const r=eo(t,e),n=e.offset+r,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<n;){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 Gm(t,e){return e.offset++,null}function Xm(t,e){const r=eo(t,e),n=t[e.offset];e.offset++;const o=t.subarray(e.offset,e.offset+r-1);if(e.offset+=r,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function Ym(t,e){const r=eo(t,e),n=t.subarray(e.offset,e.offset+r);return e.offset+=r,n}function Zm(t){let e=t.toString(16);e.length%2===1&&(e="0"+e);const r=new re;for(let n=0;n<e.length;n+=2)r.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return r}function ks(t){if(t.byteLength<128)return Uint8Array.from([t.byteLength]);const e=Zm(t.byteLength);return new re(Uint8Array.from([e.byteLength|ra]),e)}function Me(t){const e=new re,r=128;return(t.subarray()[0]&r)===r&&e.append(Uint8Array.from([0])),e.append(t),new re(Uint8Array.from([2]),ks(e),e)}function Ya(t){const e=Uint8Array.from([0]),r=new re(e,t);return new re(Uint8Array.from([3]),ks(r),r)}function Jm(t){return new re(Uint8Array.from([4]),ks(t),t)}function xt(t,e=48){const r=new re;for(const n of t)r.append(n);return new re(Uint8Array.from([e]),ks(r),r)}async function Qm(t,e,r){const n=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["sign"]);r?.signal?.throwIfAborted();const o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,e.subarray());return r?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function ew(t,e,r,n){const o=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();const s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,r.subarray());return n?.signal?.throwIfAborted(),s}const tw=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),rw=Uint8Array.from([6,5,43,129,4,0,34]),nw=Uint8Array.from([6,5,43,129,4,0,35]),$u={ext:!0,kty:"EC",crv:"P-256"},Hu={ext:!0,kty:"EC",crv:"P-384"},qu={ext:!0,kty:"EC",crv:"P-521"},_r=32,Dr=48,Fr=66;function ow(t){const e=tn(t);return sw(e)}function sw(t){const e=t[1],r=J(e,"base64url"),n=t[2][1][0],o=1;let s,i;if(e.byteLength===_r)return s=J(n.subarray(o,o+_r),"base64url"),i=J(n.subarray(o+_r),"base64url"),new Ws({...$u,key_ops:["sign"],d:r,x:s,y:i});if(e.byteLength===Dr)return s=J(n.subarray(o,o+Dr),"base64url"),i=J(n.subarray(o+Dr),"base64url"),new Ws({...Hu,key_ops:["sign"],d:r,x:s,y:i});if(e.byteLength===Fr)return s=J(n.subarray(o,o+Fr),"base64url"),i=J(n.subarray(o+Fr),"base64url"),new Ws({...qu,key_ops:["sign"],d:r,x:s,y:i});throw new et(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function Ku(t){const e=tn(t);return iw(e)}function iw(t){const e=t[1][1][0],r=1;let n,o;if(e.byteLength===_r*2+1)return n=J(e.subarray(r,r+_r),"base64url"),o=J(e.subarray(r+_r),"base64url"),new _o({...$u,key_ops:["verify"],x:n,y:o});if(e.byteLength===Dr*2+1)return n=J(e.subarray(r,r+Dr),"base64url"),o=J(e.subarray(r+Dr),"base64url"),new _o({...Hu,key_ops:["verify"],x:n,y:o});if(e.byteLength===Fr*2+1)return n=J(e.subarray(r,r+Fr),"base64url"),o=J(e.subarray(r+Fr),"base64url"),new _o({...qu,key_ops:["verify"],x:n,y:o});throw new et(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function aw(t){return xt([Me(Uint8Array.from([1])),Jm(we(t.d??"","base64url")),xt([zu(t.crv)],160),xt([Ya(new re(Uint8Array.from([4]),we(t.x??"","base64url"),we(t.y??"","base64url")))],161)]).subarray()}function cw(t){return xt([Me(Uint8Array.from([1])),xt([zu(t.crv)],160),xt([Ya(new re(Uint8Array.from([4]),we(t.x??"","base64url"),we(t.y??"","base64url")))],161)]).subarray()}function zu(t){if(t==="P-256")return tw;if(t==="P-384")return rw;if(t==="P-521")return nw;throw new et(`Invalid curve ${t}`)}class _o{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=cw(this.jwk)),this._raw}toMultihash(){return Qn.digest(Ns(this))}toCID(){return ce.createV1(114,this.toMultihash())}toString(){return Ne.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}async verify(e,r,n){return ew(this.jwk,r,e,n)}}class Ws{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new _o({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=aw(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}async sign(e,r){return Qm(this.jwk,e,r)}}const Er=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function to(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function na(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function hr(t,...e){if(!to(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 Vu(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");na(t.outputLen),na(t.blockLen)}function Vo(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 lw(t,e){hr(t);const r=e.outputLen;if(t.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)}function Wr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Gs(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function ot(t,e){return t<<32-e|t>>>e}const Wu=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",dw=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function tr(t){if(hr(t),Wu)return t.toHex();let e="";for(let r=0;r<t.length;r++)e+=dw[t[r]];return e}const ft={_0:48,_9:57,A:65,F:70,a:97,f:102};function ul(t){if(t>=ft._0&&t<=ft._9)return t-ft._0;if(t>=ft.A&&t<=ft.F)return t-(ft.A-10);if(t>=ft.a&&t<=ft.f)return t-(ft.a-10)}function Wo(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(Wu)return Uint8Array.fromHex(t);const e=t.length,r=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(r);for(let o=0,s=0;o<r;o++,s+=2){const i=ul(t.charCodeAt(s)),a=ul(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)}n[o]=i*16+a}return n}function uw(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function Za(t){return typeof t=="string"&&(t=uw(t)),hr(t),t}function at(...t){let e=0;for(let n=0;n<t.length;n++){const o=t[n];hr(o),e+=o.length}const r=new Uint8Array(e);for(let n=0,o=0;n<t.length;n++){const s=t[n];r.set(s,o),o+=s.length}return r}class Gu{}function Xu(t){const e=n=>t().update(Za(n)).digest(),r=t();return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=()=>t(),e}function Ja(t=32){if(Er&&typeof Er.getRandomValues=="function")return Er.getRandomValues(new Uint8Array(t));if(Er&&typeof Er.randomBytes=="function")return Uint8Array.from(Er.randomBytes(t));throw new Error("crypto.getRandomValues must be defined")}function fw(t,e,r,n){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,r,n);const o=BigInt(32),s=BigInt(4294967295),i=Number(r>>o&s),a=Number(r&s),c=n?4:0,l=n?0:4;t.setUint32(e+c,i,n),t.setUint32(e+l,a,n)}function hw(t,e,r){return t&e^~t&r}function pw(t,e,r){return t&e^t&r^e&r}let Yu=class extends Gu{constructor(e,r,n,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Gs(this.buffer)}update(e){Vo(this),e=Za(e),hr(e);const{view:r,buffer:n,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=Gs(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(r,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Vo(this),lw(e,this),this.finished=!0;const{buffer:r,view:n,blockLen:o,isLE:s}=this;let{pos:i}=this;r[i++]=128,Wr(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let u=i;u<o;u++)r[u]=0;fw(n,o-8,BigInt(this.length*8),s),this.process(n,0);const a=Gs(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:r}=this;this.digestInto(e);const n=e.slice(0,r);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:r,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%r&&e.buffer.set(n),e}clone(){return this._cloneInto()}};const Tt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ke=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),ho=BigInt(2**32-1),fl=BigInt(32);function gw(t,e=!1){return e?{h:Number(t&ho),l:Number(t>>fl&ho)}:{h:Number(t>>fl&ho)|0,l:Number(t&ho)|0}}function mw(t,e=!1){const r=t.length;let n=new Uint32Array(r),o=new Uint32Array(r);for(let s=0;s<r;s++){const{h:i,l:a}=gw(t[s],e);[n[s],o[s]]=[i,a]}return[n,o]}const hl=(t,e,r)=>t>>>r,pl=(t,e,r)=>t<<32-r|e>>>r,Ar=(t,e,r)=>t>>>r|e<<32-r,kr=(t,e,r)=>t<<32-r|e>>>r,po=(t,e,r)=>t<<64-r|e>>>r-32,go=(t,e,r)=>t>>>r-32|e<<64-r;function ht(t,e,r,n){const o=(e>>>0)+(n>>>0);return{h:t+r+(o/2**32|0)|0,l:o|0}}const ww=(t,e,r)=>(t>>>0)+(e>>>0)+(r>>>0),yw=(t,e,r,n)=>e+r+n+(t/2**32|0)|0,bw=(t,e,r,n)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0),vw=(t,e,r,n,o)=>e+r+n+o+(t/2**32|0)|0,xw=(t,e,r,n,o)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0)+(o>>>0),Sw=(t,e,r,n,o,s)=>e+r+n+o+s+(t/2**32|0)|0,Ew=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]),Pt=new Uint32Array(64);class Aw extends Yu{constructor(e=32){super(64,e,8,!1),this.A=Tt[0]|0,this.B=Tt[1]|0,this.C=Tt[2]|0,this.D=Tt[3]|0,this.E=Tt[4]|0,this.F=Tt[5]|0,this.G=Tt[6]|0,this.H=Tt[7]|0}get(){const{A:e,B:r,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,r,n,o,s,i,a,c]}set(e,r,n,o,s,i,a,c){this.A=e|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,r){for(let u=0;u<16;u++,r+=4)Pt[u]=e.getUint32(r,!1);for(let u=16;u<64;u++){const f=Pt[u-15],h=Pt[u-2],g=ot(f,7)^ot(f,18)^f>>>3,m=ot(h,17)^ot(h,19)^h>>>10;Pt[u]=m+Pt[u-7]+g+Pt[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=ot(a,6)^ot(a,11)^ot(a,25),h=d+f+hw(a,c,l)+Ew[u]+Pt[u]|0,m=(ot(n,2)^ot(n,13)^ot(n,22))+pw(n,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+m|0}n=n+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(n,o,s,i,a,c,l,d)}roundClean(){Wr(Pt)}destroy(){this.set(0,0,0,0,0,0,0,0),Wr(this.buffer)}}const Zu=mw(["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))),kw=Zu[0],Iw=Zu[1],Nt=new Uint32Array(80),Lt=new Uint32Array(80);class Cw extends Yu{constructor(e=64){super(128,e,16,!1),this.Ah=ke[0]|0,this.Al=ke[1]|0,this.Bh=ke[2]|0,this.Bl=ke[3]|0,this.Ch=ke[4]|0,this.Cl=ke[5]|0,this.Dh=ke[6]|0,this.Dl=ke[7]|0,this.Eh=ke[8]|0,this.El=ke[9]|0,this.Fh=ke[10]|0,this.Fl=ke[11]|0,this.Gh=ke[12]|0,this.Gl=ke[13]|0,this.Hh=ke[14]|0,this.Hl=ke[15]|0}get(){const{Ah:e,Al:r,Bh:n,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:y}=this;return[e,r,n,o,s,i,a,c,l,d,u,f,h,g,m,y]}set(e,r,n,o,s,i,a,c,l,d,u,f,h,g,m,y){this.Ah=e|0,this.Al=r|0,this.Bh=n|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=y|0}process(e,r){for(let v=0;v<16;v++,r+=4)Nt[v]=e.getUint32(r),Lt[v]=e.getUint32(r+=4);for(let v=16;v<80;v++){const A=Nt[v-15]|0,B=Lt[v-15]|0,T=Ar(A,B,1)^Ar(A,B,8)^hl(A,B,7),N=kr(A,B,1)^kr(A,B,8)^pl(A,B,7),k=Nt[v-2]|0,x=Lt[v-2]|0,S=Ar(k,x,19)^po(k,x,61)^hl(k,x,6),R=kr(k,x,19)^go(k,x,61)^pl(k,x,6),P=bw(N,R,Lt[v-7],Lt[v-16]),b=vw(P,T,S,Nt[v-7],Nt[v-16]);Nt[v]=b|0,Lt[v]=P|0}let{Ah:n,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:y,Hh:w,Hl:I}=this;for(let v=0;v<80;v++){const A=Ar(u,f,14)^Ar(u,f,18)^po(u,f,41),B=kr(u,f,14)^kr(u,f,18)^go(u,f,41),T=u&h^~u&m,N=f&g^~f&y,k=xw(I,B,N,Iw[v],Lt[v]),x=Sw(k,w,A,T,kw[v],Nt[v]),S=k|0,R=Ar(n,o,28)^po(n,o,34)^po(n,o,39),P=kr(n,o,28)^go(n,o,34)^go(n,o,39),b=n&s^n&a^s&a,E=o&i^o&c^i&c;w=m|0,I=y|0,m=h|0,y=g|0,h=u|0,g=f|0,{h:u,l:f}=ht(l|0,d|0,x|0,S|0),l=a|0,d=c|0,a=s|0,c=i|0,s=n|0,i=o|0;const C=ww(S,P,E);n=yw(C,x,R,b),o=C|0}({h:n,l:o}=ht(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=ht(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=ht(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=ht(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=ht(this.Eh|0,this.El|0,u|0,f|0),{h,l:g}=ht(this.Fh|0,this.Fl|0,h|0,g|0),{h:m,l:y}=ht(this.Gh|0,this.Gl|0,m|0,y|0),{h:w,l:I}=ht(this.Hh|0,this.Hl|0,w|0,I|0),this.set(n,o,s,i,a,c,l,d,u,f,h,g,m,y,w,I)}roundClean(){Wr(Nt,Lt)}destroy(){Wr(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const Ju=Xu(()=>new Aw),Rw=Xu(()=>new Cw);const Qa=BigInt(0),oa=BigInt(1);function ir(t,e=""){if(typeof t!="boolean"){const r=e&&`"${e}"`;throw new Error(r+"expected boolean, got type="+typeof t)}return t}function Je(t,e,r=""){const n=to(t),o=t?.length,s=e!==void 0;if(!n||s&&o!==e){const i=r&&`"${r}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof t}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return t}function mo(t){const e=t.toString(16);return e.length&1?"0"+e:e}function Qu(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?Qa:BigInt("0x"+t)}function Is(t){return Qu(tr(t))}function Hn(t){return hr(t),Qu(tr(Uint8Array.from(t).reverse()))}function ec(t,e){return Wo(t.toString(16).padStart(e*2,"0"))}function ef(t,e){return ec(t,e).reverse()}function fe(t,e,r){let n;if(typeof e=="string")try{n=Wo(e)}catch(s){throw new Error(t+" must be hex string or Uint8Array, cause: "+s)}else if(to(e))n=Uint8Array.from(e);else throw new Error(t+" must be hex string or Uint8Array");const o=n.length;if(typeof r=="number"&&o!==r)throw new Error(t+" of length "+r+" expected, got "+o);return n}function gl(t){return Uint8Array.from(t)}const Xs=t=>typeof t=="bigint"&&Qa<=t;function Tw(t,e,r){return Xs(t)&&Xs(e)&&Xs(r)&&e<=t&&t<r}function sa(t,e,r,n){if(!Tw(e,r,n))throw new Error("expected valid "+t+": "+r+" <= n < "+n+", got "+e)}function tf(t){let e;for(e=0;t>Qa;t>>=oa,e+=1);return e}const ro=t=>(oa<<BigInt(t))-oa;function Pw(t,e,r){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 r!="function")throw new Error("hmacFn must be a function");const n=h=>new Uint8Array(h),o=h=>Uint8Array.of(h);let s=n(t),i=n(t),a=0;const c=()=>{s.fill(1),i.fill(0),a=0},l=(...h)=>r(i,s,...h),d=(h=n(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 at(...g)};return(h,g)=>{c(),d(h);let m;for(;!(m=g(u()));)d();return c(),m}}function no(t,e,r={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function n(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])=>n(o,s,!1)),Object.entries(r).forEach(([o,s])=>n(o,s,!0))}function Go(t){const e=new WeakMap;return(r,...n)=>{const o=e.get(r);if(o!==void 0)return o;const s=t(r,...n);return e.set(r,s),s}}const _e=BigInt(0),Ee=BigInt(1),Yt=BigInt(2),rf=BigInt(3),nf=BigInt(4),of=BigInt(5),Nw=BigInt(7),sf=BigInt(8),Lw=BigInt(9),af=BigInt(16);function ye(t,e){const r=t%e;return r>=_e?r:e+r}function ue(t,e,r){let n=t;for(;e-- >_e;)n*=n,n%=r;return n}function ml(t,e){if(t===_e)throw new Error("invert: expected non-zero number");if(e<=_e)throw new Error("invert: expected positive modulus, got "+e);let r=ye(t,e),n=e,o=_e,s=Ee;for(;r!==_e;){const a=n/r,c=n%r,l=o-s*a;n=r,r=c,o=s,s=l}if(n!==Ee)throw new Error("invert: does not exist");return ye(o,e)}function tc(t,e,r){if(!t.eql(t.sqr(e),r))throw new Error("Cannot find square root")}function cf(t,e){const r=(t.ORDER+Ee)/nf,n=t.pow(e,r);return tc(t,n,e),n}function Bw(t,e){const r=(t.ORDER-of)/sf,n=t.mul(e,Yt),o=t.pow(n,r),s=t.mul(e,o),i=t.mul(t.mul(s,Yt),o),a=t.mul(s,t.sub(i,t.ONE));return tc(t,a,e),a}function _w(t){const e=pr(t),r=lf(t),n=r(e,e.neg(e.ONE)),o=r(e,n),s=r(e,e.neg(n)),i=(t+Nw)/af;return(a,c)=>{let l=a.pow(c,i),d=a.mul(l,n);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),y=a.cmov(l,d,m);return tc(a,y,c),y}}function lf(t){if(t<rf)throw new Error("sqrt is not defined for small field");let e=t-Ee,r=0;for(;e%Yt===_e;)e/=Yt,r++;let n=Yt;const o=pr(t);for(;wl(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return cf;let s=o.pow(n,e);const i=(e+Ee)/Yt;return function(c,l){if(c.is0(l))return l;if(wl(c,l)!==1)throw new Error("Cannot find square root");let d=r,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 y=Ee<<BigInt(d-g-1),w=c.pow(u,y);d=g,u=c.sqr(w),f=c.mul(f,u),h=c.mul(h,w)}return h}}function Dw(t){return t%nf===rf?cf:t%sf===of?Bw:t%af===Lw?_w(t):lf(t)}const Fw=(t,e)=>(ye(t,e)&Ee)===Ee,Ow=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Mw(t){const e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},r=Ow.reduce((n,o)=>(n[o]="function",n),e);return no(t,r),t}function jw(t,e,r){if(r<_e)throw new Error("invalid exponent, negatives unsupported");if(r===_e)return t.ONE;if(r===Ee)return e;let n=t.ONE,o=e;for(;r>_e;)r&Ee&&(n=t.mul(n,o)),o=t.sqr(o),r>>=Ee;return n}function df(t,e,r=!1){const n=new Array(e.length).fill(r?t.ZERO:void 0),o=e.reduce((i,a,c)=>t.is0(a)?i:(n[c]=i,t.mul(i,a)),t.ONE),s=t.inv(o);return e.reduceRight((i,a,c)=>t.is0(a)?i:(n[c]=t.mul(i,n[c]),t.mul(i,a)),s),n}function wl(t,e){const r=(t.ORDER-Ee)/Yt,n=t.pow(e,r),o=t.eql(n,t.ONE),s=t.eql(n,t.ZERO),i=t.eql(n,t.neg(t.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function uf(t,e){e!==void 0&&na(e);const r=e!==void 0?e:t.toString(2).length,n=Math.ceil(r/8);return{nBitLength:r,nByteLength:n}}function pr(t,e,r=!1,n={}){if(t<=_e)throw new Error("invalid field: expected ORDER > 0, got "+t);let o,s,i=!1,a;if(typeof e=="object"&&e!=null){if(n.sqrt||r)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"&&(r=f.isLE),typeof f.modFromBytes=="boolean"&&(i=f.modFromBytes),a=f.allowedLengths}else typeof e=="number"&&(o=e),n.sqrt&&(s=n.sqrt);const{nBitLength:c,nByteLength:l}=uf(t,o);if(l>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let d;const u=Object.freeze({ORDER:t,isLE:r,BITS:c,BYTES:l,MASK:ro(c),ZERO:_e,ONE:Ee,allowedLengths:a,create:f=>ye(f,t),isValid:f=>{if(typeof f!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof f);return _e<=f&&f<t},is0:f=>f===_e,isValidNot0:f=>!u.is0(f)&&u.isValid(f),isOdd:f=>(f&Ee)===Ee,neg:f=>ye(-f,t),eql:(f,h)=>f===h,sqr:f=>ye(f*f,t),add:(f,h)=>ye(f+h,t),sub:(f,h)=>ye(f-h,t),mul:(f,h)=>ye(f*h,t),pow:(f,h)=>jw(u,f,h),div:(f,h)=>ye(f*ml(h,t),t),sqrN:f=>f*f,addN:(f,h)=>f+h,subN:(f,h)=>f-h,mulN:(f,h)=>f*h,inv:f=>ml(f,t),sqrt:s||(f=>(d||(d=Dw(t)),d(u,f))),toBytes:f=>r?ef(f,l):ec(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,r?0:m.length-f.length),f=m}if(f.length!==l)throw new Error("Field.fromBytes: expected "+l+" bytes, got "+f.length);let g=r?Hn(f):Is(f);if(i&&(g=ye(g,t)),!h&&!u.isValid(g))throw new Error("invalid field element: outside of range 0..ORDER");return g},invertBatch:f=>df(u,f),cmov:(f,h,g)=>g?h:f});return Object.freeze(u)}function ff(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 hf(t){const e=ff(t);return e+Math.ceil(e/2)}function Uw(t,e,r=!1){const n=t.length,o=ff(e),s=hf(e);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);const i=r?Hn(t):Is(t),a=ye(i,e-Ee)+Ee;return r?ef(a,o):ec(a,o)}const Gr=BigInt(0),Zt=BigInt(1);function Xo(t,e){const r=e.negate();return t?r:e}function Jt(t,e){const r=df(t.Fp,e.map(n=>n.Z));return e.map((n,o)=>t.fromAffine(n.toAffine(r[o])))}function pf(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function Ys(t,e){pf(t,e);const r=Math.ceil(e/t)+1,n=2**(t-1),o=2**t,s=ro(t),i=BigInt(t);return{windows:r,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function yl(t,e,r){const{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=r;let a=Number(t&o),c=t>>i;a>n&&(a-=s,c+=Zt);const l=e*n,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 $w(t,e){if(!Array.isArray(t))throw new Error("array expected");t.forEach((r,n)=>{if(!(r instanceof e))throw new Error("invalid point at index "+n)})}function Hw(t,e){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((r,n)=>{if(!e.isValid(r))throw new Error("invalid scalar at index "+n)})}const Zs=new WeakMap,gf=new WeakMap;function Js(t){return gf.get(t)||1}function bl(t){if(t!==Gr)throw new Error("invalid wNAF")}class mf{constructor(e,r){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=r}_unsafeLadder(e,r,n=this.ZERO){let o=e;for(;r>Gr;)r&Zt&&(n=n.add(o)),o=o.double(),r>>=Zt;return n}precomputeWindow(e,r){const{windows:n,windowSize:o}=Ys(r,this.bits),s=[];let i=e,a=i;for(let c=0;c<n;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,r,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE;const i=Ys(e,this.bits);for(let a=0;a<i.windows;a++){const{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:f,offsetF:h}=yl(n,a,i);n=c,d?s=s.add(Xo(f,r[h])):o=o.add(Xo(u,r[l]))}return bl(n),{p:o,f:s}}wNAFUnsafe(e,r,n,o=this.ZERO){const s=Ys(e,this.bits);for(let i=0;i<s.windows&&n!==Gr;i++){const{nextN:a,offset:c,isZero:l,isNeg:d}=yl(n,i,s);if(n=a,!l){const u=r[c];o=o.add(d?u.negate():u)}}return bl(n),o}getPrecomputes(e,r,n){let o=Zs.get(r);return o||(o=this.precomputeWindow(r,e),e!==1&&(typeof n=="function"&&(o=n(o)),Zs.set(r,o))),o}cached(e,r,n){const o=Js(e);return this.wNAF(o,this.getPrecomputes(o,e,n),r)}unsafe(e,r,n,o){const s=Js(e);return s===1?this._unsafeLadder(e,r,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,n),r,o)}createCache(e,r){pf(r,this.bits),gf.set(e,r),Zs.delete(e)}hasCache(e){return Js(e)!==1}}function qw(t,e,r,n){let o=e,s=t.ZERO,i=t.ZERO;for(;r>Gr||n>Gr;)r&Zt&&(s=s.add(o)),n&Zt&&(i=i.add(o)),o=o.double(),r>>=Zt,n>>=Zt;return{p1:s,p2:i}}function wf(t,e,r,n){$w(r,t),Hw(n,e);const o=r.length,s=n.length;if(o!==s)throw new Error("arrays of points and scalars must have equal length");const i=t.ZERO,a=tf(BigInt(o));let c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);const l=ro(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 y=n[m],w=Number(y>>BigInt(h)&l);d[w]=d[w].add(r[m])}let g=i;for(let m=d.length-1,y=i;m>0;m--)y=y.add(d[m]),g=g.add(y);if(f=f.add(g),h!==0)for(let m=0;m<c;m++)f=f.double()}return f}function vl(t,e,r){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Mw(e),e}else return pr(t,{isLE:r})}function yf(t,e,r={},n){if(n===void 0&&(n=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>Gr))throw new Error(`CURVE.${c} must be positive bigint`)}const o=vl(e.p,r.Fp,n),s=vl(e.n,r.Fn,n),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 Bt=BigInt(0),be=BigInt(1),Qs=BigInt(2),Kw=BigInt(8);function zw(t,e,r,n){const o=t.sqr(r),s=t.sqr(n),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 Vw(t,e={}){const r=yf("edwards",t,e,e.FpFnLE),{Fp:n,Fn:o}=r;let s=r.CURVE;const{h:i}=s;no(e,{},{uvRatio:"function"});const a=Qs<<BigInt(o.BYTES*8)-be,c=y=>n.create(y),l=e.uvRatio||((y,w)=>{try{return{isValid:!0,value:n.sqrt(n.div(y,w))}}catch{return{isValid:!1,value:Bt}}});if(!zw(n,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function d(y,w,I=!1){const v=I?be:Bt;return sa("coordinate "+y,w,v,a),w}function u(y){if(!(y instanceof g))throw new Error("ExtendedPoint expected")}const f=Go((y,w)=>{const{X:I,Y:v,Z:A}=y,B=y.is0();w==null&&(w=B?Kw:n.inv(A));const T=c(I*w),N=c(v*w),k=n.mul(A,w);if(B)return{x:Bt,y:be};if(k!==be)throw new Error("invZ was invalid");return{x:T,y:N}}),h=Go(y=>{const{a:w,d:I}=s;if(y.is0())throw new Error("bad point: ZERO");const{X:v,Y:A,Z:B,T}=y,N=c(v*v),k=c(A*A),x=c(B*B),S=c(x*x),R=c(N*w),P=c(x*c(R+k)),b=c(S+c(I*c(N*k)));if(P!==b)throw new Error("bad point: equation left != right (1)");const E=c(v*A),C=c(B*T);if(E!==C)throw new Error("bad point: equation left != right (2)");return!0});class g{constructor(w,I,v,A){this.X=d("x",w),this.Y=d("y",I),this.Z=d("z",v,!0),this.T=d("t",A),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:v}=w||{};return d("x",I),d("y",v),new g(I,v,be,c(I*v))}static fromBytes(w,I=!1){const v=n.BYTES,{a:A,d:B}=s;w=gl(Je(w,v,"point")),ir(I,"zip215");const T=gl(w),N=w[v-1];T[v-1]=N&-129;const k=Hn(T),x=I?a:n.ORDER;sa("point.y",k,Bt,x);const S=c(k*k),R=c(S-be),P=c(B*S-A);let{isValid:b,value:E}=l(R,P);if(!b)throw new Error("bad point: invalid y coordinate");const C=(E&be)===be,L=(N&128)!==0;if(!I&&E===Bt&&L)throw new Error("bad point: x=0 and x_0=1");return L!==C&&(E=c(-E)),g.fromAffine({x:E,y:k})}static fromHex(w,I=!1){return g.fromBytes(fe("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(Qs),this}assertValidity(){h(this)}equals(w){u(w);const{X:I,Y:v,Z:A}=this,{X:B,Y:T,Z:N}=w,k=c(I*N),x=c(B*A),S=c(v*N),R=c(T*A);return k===x&&S===R}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:v,Z:A}=this,B=c(I*I),T=c(v*v),N=c(Qs*c(A*A)),k=c(w*B),x=I+v,S=c(c(x*x)-B-T),R=k+T,P=R-N,b=k-T,E=c(S*P),C=c(R*b),L=c(S*b),M=c(P*R);return new g(E,C,M,L)}add(w){u(w);const{a:I,d:v}=s,{X:A,Y:B,Z:T,T:N}=this,{X:k,Y:x,Z:S,T:R}=w,P=c(A*k),b=c(B*x),E=c(N*v*R),C=c(T*S),L=c((A+B)*(k+x)-P-b),M=C-E,$=C+E,j=c(b-I*P),D=c(L*M),_=c($*j),F=c(L*j),q=c(M*$);return new g(D,_,q,F)}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:v}=m.cached(this,w,A=>Jt(g,A));return Jt(g,[I,v])[0]}multiplyUnsafe(w,I=g.ZERO){if(!o.isValid(w))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return w===Bt?g.ZERO:this.is0()||w===be?this:m.unsafe(this,w,v=>Jt(g,v),I)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return m.unsafe(this,s.n).is0()}toAffine(w){return f(this,w)}clearCofactor(){return i===be?this:this.multiplyUnsafe(i)}toBytes(){const{x:w,y:I}=this.toAffine(),v=n.toBytes(I);return v[v.length-1]|=w&be?128:0,v}toHex(){return tr(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 Jt(g,w)}static msm(w,I){return wf(g,o,w,I)}_setWindowSize(w){this.precompute(w)}toRawBytes(){return this.toBytes()}}g.BASE=new g(s.Gx,s.Gy,be,c(s.Gx*s.Gy)),g.ZERO=new g(Bt,be,be,Bt),g.Fp=n,g.Fn=o;const m=new mf(g,o.BITS);return g.BASE.precompute(8),g}function Ww(t,e,r={}){if(typeof e!="function")throw new Error('"hash" function param is required');no(r,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});const{prehash:n}=r,{BASE:o,Fp:s,Fn:i}=t,a=r.randomBytes||Ja,c=r.adjustScalarBytes||(x=>x),l=r.domain||((x,S,R)=>{if(ir(R,"phflag"),S.length||R)throw new Error("Contexts/pre-hash are not supported");return x});function d(x){return i.create(Hn(x))}function u(x){const S=v.secretKey;x=fe("private key",x,S);const R=fe("hashed private key",e(x),2*S),P=c(R.slice(0,S)),b=R.slice(S,2*S),E=d(P);return{head:P,prefix:b,scalar:E}}function f(x){const{head:S,prefix:R,scalar:P}=u(x),b=o.multiply(P),E=b.toBytes();return{head:S,prefix:R,scalar:P,point:b,pointBytes:E}}function h(x){return f(x).pointBytes}function g(x=Uint8Array.of(),...S){const R=at(...S);return d(e(l(R,fe("context",x),!!n)))}function m(x,S,R={}){x=fe("message",x),n&&(x=n(x));const{prefix:P,scalar:b,pointBytes:E}=f(S),C=g(R.context,P,x),L=o.multiply(C).toBytes(),M=g(R.context,L,E,x),$=i.create(C+M*b);if(!i.isValid($))throw new Error("sign failed: invalid s");const j=at(L,i.toBytes($));return Je(j,v.signature,"result")}const y={zip215:!0};function w(x,S,R,P=y){const{context:b,zip215:E}=P,C=v.signature;x=fe("signature",x,C),S=fe("message",S),R=fe("publicKey",R,v.publicKey),E!==void 0&&ir(E,"zip215"),n&&(S=n(S));const L=C/2,M=x.subarray(0,L),$=Hn(x.subarray(L,C));let j,D,_;try{j=t.fromBytes(R,E),D=t.fromBytes(M,E),_=o.multiplyUnsafe($)}catch{return!1}if(!E&&j.isSmallOrder())return!1;const F=g(b,D.toBytes(),j.toBytes(),S);return D.add(j.multiplyUnsafe(F)).subtract(_).clearCofactor().is0()}const I=s.BYTES,v={secretKey:I,publicKey:I,signature:2*I,seed:I};function A(x=a(v.seed)){return Je(x,v.seed,"seed")}function B(x){const S=k.randomSecretKey(x);return{secretKey:S,publicKey:h(S)}}function T(x){return to(x)&&x.length===i.BYTES}function N(x,S){try{return!!t.fromBytes(x,S)}catch{return!1}}const k={getExtendedPublicKey:f,randomSecretKey:A,isValidSecretKey:T,isValidPublicKey:N,toMontgomery(x){const{y:S}=t.fromBytes(x),R=v.publicKey,P=R===32;if(!P&&R!==57)throw new Error("only defined for 25519 and 448");const b=P?s.div(be+S,be-S):s.div(S-be,S+be);return s.toBytes(b)},toMontgomerySecret(x){const S=v.secretKey;Je(x,S);const R=e(x.subarray(0,S));return c(R).subarray(0,S)},randomPrivateKey:A,precompute(x=8,S=t.BASE){return S.precompute(x,!1)}};return Object.freeze({keygen:B,getPublicKey:h,sign:m,verify:w,utils:k,Point:t,lengths:v})}function Gw(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},r=t.Fp,n=pr(e.n,t.nBitLength,!0),o={Fp:r,Fn:n,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 Xw(t,e){const r=e.Point;return Object.assign({},e,{ExtendedPoint:r,CURVE:t,nBitLength:r.Fn.BITS,nByteLength:r.Fn.BYTES})}function Yw(t){const{CURVE:e,curveOpts:r,hash:n,eddsaOpts:o}=Gw(t),s=Vw(e,r),i=Ww(s,n,o);return Xw(t,i)}const Zw=BigInt(1),xl=BigInt(2);BigInt(3);const Jw=BigInt(5),Qw=BigInt(8),rc=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),bf={p:rc,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:Qw,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function ey(t){const e=BigInt(10),r=BigInt(20),n=BigInt(40),o=BigInt(80),s=rc,a=t*t%s*t%s,c=ue(a,xl,s)*a%s,l=ue(c,Zw,s)*t%s,d=ue(l,Jw,s)*l%s,u=ue(d,e,s)*d%s,f=ue(u,r,s)*u%s,h=ue(f,n,s)*f%s,g=ue(h,o,s)*h%s,m=ue(g,o,s)*h%s,y=ue(m,e,s)*d%s;return{pow_p_5_8:ue(y,xl,s)*t%s,b2:a}}function ty(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Sl=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function ry(t,e){const r=rc,n=ye(e*e*e,r),o=ye(n*n*e,r),s=ey(t*o).pow_p_5_8;let i=ye(t*n*s,r);const a=ye(e*i*i,r),c=i,l=ye(i*Sl,r),d=a===t,u=a===ye(-t,r),f=a===ye(-t*Sl,r);return d&&(i=c),(u||f)&&(i=l),Fw(i,r)&&(i=ye(-i,r)),{isValid:d||u,value:i}}const ny=pr(bf.p,{isLE:!0}),oy={...bf,Fp:ny,hash:Rw,adjustScalarBytes:ty,uvRatio:ry},Yo=Yw(oy);class El extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}}class Al extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}}class sy extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}}const kt={get(t=globalThis){const e=t.crypto;if(e?.subtle==null)throw new sy("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}},Zo=32,gt=64,ia=32;let Or;const vf=(async()=>{try{return await kt.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function iy(){const t=Yo.utils.randomPrivateKey(),e=Yo.getPublicKey(t);return{privateKey:hy(t,e),publicKey:e}}async function ay(t,e){let r;t.length===gt?r=t.subarray(0,32):r=t;const n={crv:"Ed25519",kty:"OKP",x:J(t.subarray(32),"base64url"),d:J(r,"base64url"),ext:!0,key_ops:["sign"]},o=await kt.get().subtle.importKey("jwk",n,{name:"Ed25519"},!0,["sign"]),s=await kt.get().subtle.sign({name:"Ed25519"},o,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(s,0,s.byteLength)}function cy(t,e){const r=t.subarray(0,ia);return Yo.sign(e instanceof Uint8Array?e:e.subarray(),r)}async function ly(t,e){return Or==null&&(Or=await vf),Or?ay(t,e):cy(t,e)}async function dy(t,e,r){if(t.buffer instanceof ArrayBuffer){const n=await kt.get().subtle.importKey("raw",t.buffer,{name:"Ed25519"},!1,["verify"]);return await kt.get().subtle.verify({name:"Ed25519"},n,e,r instanceof Uint8Array?r:r.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function uy(t,e,r){return Yo.verify(e,r instanceof Uint8Array?r:r.subarray(),t)}async function fy(t,e,r){return Or==null&&(Or=await vf),Or?dy(t,e,r):uy(t,e,r)}function hy(t,e){const r=new Uint8Array(gt);for(let n=0;n<ia;n++)r[n]=t[n],r[ia+n]=e[n];return r}function Cs(t){return t==null?!1:typeof t.then=="function"&&typeof t.catch=="function"&&typeof t.finally=="function"}class xf{type="Ed25519";raw;constructor(e){this.raw=qn(e,Zo)}toMultihash(){return Qn.digest(Ns(this))}toCID(){return ce.createV1(114,this.toMultihash())}toString(){return Ne.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}verify(e,r,n){n?.signal?.throwIfAborted();const o=fy(this.raw,r,e);return Cs(o)?o.then(s=>(n?.signal?.throwIfAborted(),s)):o}}class aa{type="Ed25519";raw;publicKey;constructor(e,r){this.raw=qn(e,gt),this.publicKey=new xf(r)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}sign(e,r){r?.signal?.throwIfAborted();const n=ly(this.raw,e);return Cs(n)?n.then(o=>(r?.signal?.throwIfAborted(),o)):(r?.signal?.throwIfAborted(),n)}}function py(t){if(t.length>gt){t=qn(t,gt+Zo);const n=t.subarray(0,gt),o=t.subarray(gt,t.length);return new aa(n,o)}t=qn(t,gt);const e=t.subarray(0,gt),r=t.subarray(Zo);return new aa(e,r)}function Sf(t){return t=qn(t,Zo),new xf(t)}async function gy(){const{privateKey:t,publicKey:e}=iy();return new aa(t,e)}function qn(t,e){if(t=Uint8Array.from(t??[]),t.length!==e)throw new et(`Key must be a Uint8Array of length ${e}, got ${t.length}`);return t}const my=Math.pow(2,7),wy=Math.pow(2,14),yy=Math.pow(2,21),nc=Math.pow(2,28),oc=Math.pow(2,35),sc=Math.pow(2,42),ic=Math.pow(2,49),te=128,Ie=127;function gr(t){if(t<my)return 1;if(t<wy)return 2;if(t<yy)return 3;if(t<nc)return 4;if(t<oc)return 5;if(t<sc)return 6;if(t<ic)return 7;if(Number.MAX_SAFE_INTEGER!=null&&t>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Ef(t,e,r=0){switch(gr(t)){case 8:e[r++]=t&255|te,t/=128;case 7:e[r++]=t&255|te,t/=128;case 6:e[r++]=t&255|te,t/=128;case 5:e[r++]=t&255|te,t/=128;case 4:e[r++]=t&255|te,t>>>=7;case 3:e[r++]=t&255|te,t>>>=7;case 2:e[r++]=t&255|te,t>>>=7;case 1:{e[r++]=t&255,t>>>=7;break}default:throw new Error("unreachable")}return e}function by(t,e,r=0){switch(gr(t)){case 8:e.set(r++,t&255|te),t/=128;case 7:e.set(r++,t&255|te),t/=128;case 6:e.set(r++,t&255|te),t/=128;case 5:e.set(r++,t&255|te),t/=128;case 4:e.set(r++,t&255|te),t>>>=7;case 3:e.set(r++,t&255|te),t>>>=7;case 2:e.set(r++,t&255|te),t>>>=7;case 1:{e.set(r++,t&255),t>>>=7;break}default:throw new Error("unreachable")}return e}function Af(t,e){let r=t[e],n=0;if(n+=r&Ie,r<te||(r=t[e+1],n+=(r&Ie)<<7,r<te)||(r=t[e+2],n+=(r&Ie)<<14,r<te)||(r=t[e+3],n+=(r&Ie)<<21,r<te)||(r=t[e+4],n+=(r&Ie)*nc,r<te)||(r=t[e+5],n+=(r&Ie)*oc,r<te)||(r=t[e+6],n+=(r&Ie)*sc,r<te)||(r=t[e+7],n+=(r&Ie)*ic,r<te))return n;throw new RangeError("Could not decode varint")}function vy(t,e){let r=t.get(e),n=0;if(n+=r&Ie,r<te||(r=t.get(e+1),n+=(r&Ie)<<7,r<te)||(r=t.get(e+2),n+=(r&Ie)<<14,r<te)||(r=t.get(e+3),n+=(r&Ie)<<21,r<te)||(r=t.get(e+4),n+=(r&Ie)*nc,r<te)||(r=t.get(e+5),n+=(r&Ie)*oc,r<te)||(r=t.get(e+6),n+=(r&Ie)*sc,r<te)||(r=t.get(e+7),n+=(r&Ie)*ic,r<te))return n;throw new RangeError("Could not decode varint")}function xy(t,e,r=0){return e==null&&(e=At(gr(t))),e instanceof Uint8Array?Ef(t,e,r):by(t,e,r)}function kf(t,e=0){return t instanceof Uint8Array?Af(t,e):vy(t,e)}const ac=new Float32Array([-0]),Ut=new Uint8Array(ac.buffer);function Sy(t,e,r){ac[0]=t,e[r]=Ut[0],e[r+1]=Ut[1],e[r+2]=Ut[2],e[r+3]=Ut[3]}function Ey(t,e){return Ut[0]=t[e],Ut[1]=t[e+1],Ut[2]=t[e+2],Ut[3]=t[e+3],ac[0]}const cc=new Float64Array([-0]),Ce=new Uint8Array(cc.buffer);function Ay(t,e,r){cc[0]=t,e[r]=Ce[0],e[r+1]=Ce[1],e[r+2]=Ce[2],e[r+3]=Ce[3],e[r+4]=Ce[4],e[r+5]=Ce[5],e[r+6]=Ce[6],e[r+7]=Ce[7]}function ky(t,e){return Ce[0]=t[e],Ce[1]=t[e+1],Ce[2]=t[e+2],Ce[3]=t[e+3],Ce[4]=t[e+4],Ce[5]=t[e+5],Ce[6]=t[e+6],Ce[7]=t[e+7],cc[0]}const Iy=BigInt(Number.MAX_SAFE_INTEGER),Cy=BigInt(Number.MIN_SAFE_INTEGER);class Re{lo;hi;constructor(e,r){this.lo=e|0,this.hi=r|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){const r=~this.lo+1>>>0;let n=~this.hi>>>0;return r===0&&(n=n+1>>>0),-(r+n*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 r=~this.lo+1>>>0;let n=~this.hi>>>0;return r===0&&(n=n+1>>>0),-(BigInt(r)+(BigInt(n)<<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,r=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?r===0?e<16384?e<128?1:2:e<2097152?3:4:r<16384?r<128?5:6:r<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return rr;if(e<Iy&&e>Cy)return this.fromNumber(Number(e));const r=e<0n;r&&(e=-e);let n=e>>32n,o=e-(n<<32n);return r&&(n=~n|0n,o=~o|0n,++o>kl&&(o=0n,++n>kl&&(n=0n))),new Re(Number(o),Number(n))}static fromNumber(e){if(e===0)return rr;const r=e<0;r&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return r&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new Re(n,o)}static from(e){return typeof e=="number"?Re.fromNumber(e):typeof e=="bigint"?Re.fromBigInt(e):typeof e=="string"?Re.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new Re(e.low>>>0,e.high>>>0):rr}}const rr=new Re(0,0);rr.toBigInt=function(){return 0n};rr.zzEncode=rr.zzDecode=function(){return this};rr.length=function(){return 1};const kl=4294967296n;function Ry(t){let e=0,r=0;for(let n=0;n<t.length;++n)r=t.charCodeAt(n),r<128?e+=1:r<2048?e+=2:(r&64512)===55296&&(t.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function Ty(t,e,r){if(r-e<1)return"";let o;const s=[];let i=0,a;for(;e<r;)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 If(t,e,r){const n=r;let o,s;for(let i=0;i<t.length;++i)o=t.charCodeAt(i),o<128?e[r++]=o:o<2048?(e[r++]=o>>6|192,e[r++]=o&63|128):(o&64512)===55296&&((s=t.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[r++]=o>>18|240,e[r++]=o>>12&63|128,e[r++]=o>>6&63|128,e[r++]=o&63|128):(e[r++]=o>>12|224,e[r++]=o>>6&63|128,e[r++]=o&63|128);return r-n}function Ye(t,e){return RangeError(`index out of range: ${t.pos} + ${e??1} > ${t.len}`)}function wo(t,e){return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0}class Py{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,Ye(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 Ye(this,4);return wo(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Ye(this,4);return wo(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Ye(this,4);const e=Ey(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Ye(this,4);const e=ky(this.buf,this.pos);return this.pos+=8,e}bytes(){const e=this.uint32(),r=this.pos,n=this.pos+e;if(n>this.len)throw Ye(this,e);return this.pos+=e,r===n?new Uint8Array(0):this.buf.subarray(r,n)}string(){const e=this.bytes();return Ty(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Ye(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Ye(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 Re(0,0);let r=0;if(this.len-this.pos>4){for(;r<4;++r)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<r*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;r=0}else{for(;r<3;++r){if(this.pos>=this.len)throw Ye(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<r*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<r*7)>>>0,e}if(this.len-this.pos>4){for(;r<5;++r)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<r*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;r<5;++r){if(this.pos>=this.len)throw Ye(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<r*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw Ye(this,8);const e=wo(this.buf,this.pos+=4),r=wo(this.buf,this.pos+=4);return new Re(e,r)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){const e=Af(this.buf,this.pos);return this.pos+=gr(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 Ny(t){return new Py(t instanceof Uint8Array?t:t.subarray())}function Rs(t,e,r){const n=Ny(t);return e.decode(n,void 0,r)}function Ly(t){let n,o=8192;return function(i){if(i<1||i>4096)return At(i);o+i>8192&&(n=At(8192),o=0);const a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}class Cn{fn;len;next;val;constructor(e,r,n){this.fn=e,this.len=r,this.next=void 0,this.val=n}}function ei(){}class By{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}}const _y=Ly();function Dy(t){return globalThis.Buffer!=null?At(t):_y(t)}class ca{len;head;tail;states;constructor(){this.len=0,this.head=new Cn(ei,0,0),this.tail=this.head,this.states=null}_push(e,r,n){return this.tail=this.tail.next=new Cn(e,r,n),this.len+=r,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Oy((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(yo,10,Re.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){const r=Re.fromBigInt(e);return this._push(yo,r.length(),r)}uint64Number(e){return this._push(Ef,gr(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 r=Re.fromBigInt(e).zzEncode();return this._push(yo,r.length(),r)}sint64Number(e){const r=Re.fromNumber(e).zzEncode();return this._push(yo,r.length(),r)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(ti,1,e?1:0)}fixed32(e){return this._push(hn,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){const r=Re.fromBigInt(e);return this._push(hn,4,r.lo)._push(hn,4,r.hi)}fixed64Number(e){const r=Re.fromNumber(e);return this._push(hn,4,r.lo)._push(hn,4,r.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(Sy,4,e)}double(e){return this._push(Ay,8,e)}bytes(e){const r=e.length>>>0;return r===0?this._push(ti,1,0):this.uint32(r)._push(My,r,e)}string(e){const r=Ry(e);return r!==0?this.uint32(r)._push(If,r,e):this._push(ti,1,0)}fork(){return this.states=new By(this),this.head=this.tail=new Cn(ei,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 Cn(ei,0,0),this.len=0),this}ldelim(){const e=this.head,r=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=r,this.len+=n),this}finish(){let e=this.head.next;const r=Dy(this.len);let n=0;for(;e!=null;)e.fn(e.val,r,n),n+=e.len,e=e.next;return r}}function ti(t,e,r){e[r]=t&255}function Fy(t,e,r){for(;t>127;)e[r++]=t&127|128,t>>>=7;e[r]=t}class Oy extends Cn{next;constructor(e,r){super(Fy,e,r),this.next=void 0}}function yo(t,e,r){for(;t.hi!==0;)e[r++]=t.lo&127|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)e[r++]=t.lo&127|128,t.lo=t.lo>>>7;e[r++]=t.lo}function hn(t,e,r){e[r]=t&255,e[r+1]=t>>>8&255,e[r+2]=t>>>16&255,e[r+3]=t>>>24}function My(t,e,r){e.set(t,r)}globalThis.Buffer!=null&&(ca.prototype.bytes=function(t){const e=t.length>>>0;return this.uint32(e),e>0&&this._push(jy,e,t),this},ca.prototype.string=function(t){const e=globalThis.Buffer.byteLength(t);return this.uint32(e),e>0&&this._push(Uy,e,t),this});function jy(t,e,r){e.set(t,r)}function Uy(t,e,r){t.length<40?If(t,e,r):e.utf8Write!=null?e.utf8Write(t,r):e.set(we(t),r)}function $y(){return new ca}function Ts(t,e){const r=$y();return e.encode(t,r,{lengthDelimited:!1}),r.finish()}var Jo;(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"})(Jo||(Jo={}));function Cf(t,e,r,n){return{name:t,type:e,encode:r,decode:n}}function Hy(t){function e(o){if(t[o.toString()]==null)throw new Error("Invalid enum value");return t[o]}const r=function(s,i){const a=e(s);i.int32(a)},n=function(s){const i=s.int32();return e(i)};return Cf("enum",Jo.VARINT,r,n)}function Ps(t,e){return Cf("message",Jo.LENGTH_DELIMITED,t,e)}class Il extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"}var le;(function(t){t.RSA="RSA",t.Ed25519="Ed25519",t.secp256k1="secp256k1",t.ECDSA="ECDSA"})(le||(le={}));var la;(function(t){t[t.RSA=0]="RSA",t[t.Ed25519=1]="Ed25519",t[t.secp256k1=2]="secp256k1",t[t.ECDSA=3]="ECDSA"})(la||(la={}));(function(t){t.codec=()=>Hy(la)})(le||(le={}));var ar;(function(t){let e;t.codec=()=>(e==null&&(e=Ps((r,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),r.Type!=null&&(n.uint32(8),le.codec().encode(r.Type,n)),r.Data!=null&&(n.uint32(18),n.bytes(r.Data)),o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{s.Type=le.codec().decode(r);break}case 2:{s.Data=r.bytes();break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>Ts(r,t.codec()),t.decode=(r,n)=>Rs(r,t.codec(),n)})(ar||(ar={}));var Qo;(function(t){let e;t.codec=()=>(e==null&&(e=Ps((r,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),r.Type!=null&&(n.uint32(8),le.codec().encode(r.Type,n)),r.Data!=null&&(n.uint32(18),n.bytes(r.Data)),o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{s.Type=le.codec().decode(r);break}case 2:{s.Data=r.bytes();break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>Ts(r,t.codec()),t.decode=(r,n)=>Rs(r,t.codec(),n)})(Qo||(Qo={}));const Rf=Ju;class Tf{type="RSA";jwk;_raw;_multihash;constructor(e,r){this.jwk=e,this._multihash=r}get raw(){return this._raw==null&&(this._raw=Nf(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return ce.createV1(114,this._multihash)}toString(){return Ne.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}verify(e,r,n){return nb(this.jwk,r,e,n)}}class qy{type="RSA";jwk;_raw;publicKey;constructor(e,r){this.jwk=e,this.publicKey=r}get raw(){return this._raw==null&&(this._raw=Gy(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}sign(e,r){return rb(this.jwk,e,r)}}const Ky=8192,Pf=18,zy=1062,Vy=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function Wy(t){return{n:J(t[1],"base64url"),e:J(t[2],"base64url"),d:J(t[3],"base64url"),p:J(t[4],"base64url"),q:J(t[5],"base64url"),dp:J(t[6],"base64url"),dq:J(t[7],"base64url"),qi:J(t[8],"base64url"),kty:"RSA"}}function Gy(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 et("JWK was missing components");return xt([Me(Uint8Array.from([0])),Me(we(t.n,"base64url")),Me(we(t.e,"base64url")),Me(we(t.d,"base64url")),Me(we(t.p,"base64url")),Me(we(t.q,"base64url")),Me(we(t.dp,"base64url")),Me(we(t.dq,"base64url")),Me(we(t.qi,"base64url"))]).subarray()}function Xy(t){const e=tn(t[1],{offset:0});return{kty:"RSA",n:J(e[0],"base64url"),e:J(e[1],"base64url")}}function Nf(t){if(t.n==null||t.e==null)throw new et("JWK was missing components");return xt([Vy,Ya(xt([Me(we(t.n,"base64url")),Me(we(t.e,"base64url"))]))]).subarray()}function Yy(t){const e=tn(t);return Zy(e)}function Zy(t){const e=Wy(t);return eb(e)}function Jy(t,e){if(t.byteLength>=zy)throw new Tu("Key size is too large");const r=tn(t,{offset:0});return Qy(r,t,e)}function Qy(t,e,r){const n=Xy(t);if(r==null){const o=Rf(ar.encode({Type:le.RSA,Data:e}));r=Jn(Pf,o)}return new Tf(n,r)}function eb(t){if(ob(t)>Ky)throw new et("Key size is too large");const e=tb(t),r=Rf(ar.encode({Type:le.RSA,Data:Nf(e.publicKey)})),n=Jn(Pf,r);return new qy(e.privateKey,new Tf(e.publicKey,n))}function tb(t){if(t==null)throw new et("Missing key parameter");return{privateKey:t,publicKey:{kty:t.kty,n:t.n,e:t.e}}}async function rb(t,e,r){const n=await kt.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);r?.signal?.throwIfAborted();const o=await kt.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,e instanceof Uint8Array?e:e.subarray());return r?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function nb(t,e,r,n){const o=await kt.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();const s=await kt.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,r instanceof Uint8Array?r:r.subarray());return n?.signal?.throwIfAborted(),s}function ob(t){if(t.kty!=="RSA")throw new et("invalid key type");if(t.n==null)throw new et("invalid key modulus");return we(t.n,"base64url").length*8}class Lf extends Gu{constructor(e,r){super(),this.finished=!1,this.destroyed=!1,Vu(e);const n=Za(r);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(n.length>o?e.create().update(n).digest():n);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),Wr(s)}update(e){return Vo(this),this.iHash.update(e),this}digestInto(e){Vo(this),hr(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:r,iHash:n,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=r._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Bf=(t,e,r)=>new Lf(t,e).update(r).digest();Bf.create=(t,e)=>new Lf(t,e);const Cl=(t,e)=>(t+(t>=0?e:-e)/_f)/e;function sb(t,e,r){const[[n,o],[s,i]]=e,a=Cl(i*t,r),c=Cl(-o*t,r);let l=t-a*n-c*s,d=-a*o-c*i;const u=l<yt,f=d<yt;u&&(l=-l),f&&(d=-d);const h=ro(Math.ceil(tf(r)/2))+Mr;if(l<yt||l>=h||d<yt||d>=h)throw new Error("splitScalar (endomorphism): failed, k="+t);return{k1neg:u,k1:l,k2neg:f,k2:d}}function da(t){if(!["compact","recovered","der"].includes(t))throw new Error('Signature format must be "compact", "recovered", or "der"');return t}function ri(t,e){const r={};for(let n of Object.keys(e))r[n]=t[n]===void 0?e[n]:t[n];return ir(r.lowS,"lowS"),ir(r.prehash,"prehash"),r.format!==void 0&&da(r.format),r}class ib extends Error{constructor(e=""){super(e)}}const mt={Err:ib,_tlv:{encode:(t,e)=>{const{Err:r}=mt;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length&1)throw new r("tlv.encode: unpadded data");const n=e.length/2,o=mo(n);if(o.length/2&128)throw new r("tlv.encode: long form length too big");const s=n>127?mo(o.length/2|128):"";return mo(t)+s+o+e},decode(t,e){const{Err:r}=mt;let n=0;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length<2||e[n++]!==t)throw new r("tlv.decode: wrong tlv");const o=e[n++],s=!!(o&128);let i=0;if(!s)i=o;else{const c=o&127;if(!c)throw new r("tlv.decode(long): indefinite length not supported");if(c>4)throw new r("tlv.decode(long): byte length is too big");const l=e.subarray(n,n+c);if(l.length!==c)throw new r("tlv.decode: length bytes not complete");if(l[0]===0)throw new r("tlv.decode(long): zero leftmost byte");for(const d of l)i=i<<8|d;if(n+=c,i<128)throw new r("tlv.decode(long): not minimal encoding")}const a=e.subarray(n,n+i);if(a.length!==i)throw new r("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(t){const{Err:e}=mt;if(t<yt)throw new e("integer: negative integers are not allowed");let r=mo(t);if(Number.parseInt(r[0],16)&8&&(r="00"+r),r.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return r},decode(t){const{Err:e}=mt;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 Is(t)}},toSig(t){const{Err:e,_int:r,_tlv:n}=mt,o=fe("signature",t),{v:s,l:i}=n.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");const{v:a,l:c}=n.decode(2,s),{v:l,l:d}=n.decode(2,c);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:r.decode(a),s:r.decode(l)}},hexFromSig(t){const{_tlv:e,_int:r}=mt,n=e.encode(2,r.encode(t.r)),o=e.encode(2,r.encode(t.s)),s=n+o;return e.encode(48,s)}},yt=BigInt(0),Mr=BigInt(1),_f=BigInt(2),bo=BigInt(3),ab=BigInt(4);function Pr(t,e){const{BYTES:r}=t;let n;if(typeof e=="bigint")n=e;else{let o=fe("private key",e);try{n=t.fromBytes(o)}catch{throw new Error(`invalid private key: expected ui8a of size ${r}, got ${typeof e}`)}}if(!t.isValidNot0(n))throw new Error("invalid private key: out of range [1..N-1]");return n}function cb(t,e={}){const r=yf("weierstrass",t,e),{Fp:n,Fn:o}=r;let s=r.CURVE;const{h:i,n:a}=s;no(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});const{endo:c}=e;if(c&&(!n.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');const l=Ff(n,o);function d(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(P,b,E){const{x:C,y:L}=b.toAffine(),M=n.toBytes(C);if(ir(E,"isCompressed"),E){d();const $=!n.isOdd(L);return at(Df($),M)}else return at(Uint8Array.of(4),M,n.toBytes(L))}function f(P){Je(P,void 0,"Point");const{publicKey:b,publicKeyUncompressed:E}=l,C=P.length,L=P[0],M=P.subarray(1);if(C===b&&(L===2||L===3)){const $=n.fromBytes(M);if(!n.isValid($))throw new Error("bad point: is not on curve, wrong x");const j=m($);let D;try{D=n.sqrt(j)}catch(q){const H=q instanceof Error?": "+q.message:"";throw new Error("bad point: is not on curve, sqrt error"+H)}d();const _=n.isOdd(D);return(L&1)===1!==_&&(D=n.neg(D)),{x:$,y:D}}else if(C===E&&L===4){const $=n.BYTES,j=n.fromBytes(M.subarray(0,$)),D=n.fromBytes(M.subarray($,$*2));if(!y(j,D))throw new Error("bad point: is not on curve");return{x:j,y:D}}else throw new Error(`bad point: got length ${C}, expected compressed=${b} or uncompressed=${E}`)}const h=e.toBytes||u,g=e.fromBytes||f;function m(P){const b=n.sqr(P),E=n.mul(b,P);return n.add(n.add(E,n.mul(P,s.a)),s.b)}function y(P,b){const E=n.sqr(b),C=m(P);return n.eql(E,C)}if(!y(s.Gx,s.Gy))throw new Error("bad curve params: generator point");const w=n.mul(n.pow(s.a,bo),ab),I=n.mul(n.sqr(s.b),BigInt(27));if(n.is0(n.add(w,I)))throw new Error("bad curve params: a or b");function v(P,b,E=!1){if(!n.isValid(b)||E&&n.is0(b))throw new Error(`bad point coordinate ${P}`);return b}function A(P){if(!(P instanceof x))throw new Error("ProjectivePoint expected")}function B(P){if(!c||!c.basises)throw new Error("no endo");return sb(P,c.basises,o.ORDER)}const T=Go((P,b)=>{const{X:E,Y:C,Z:L}=P;if(n.eql(L,n.ONE))return{x:E,y:C};const M=P.is0();b==null&&(b=M?n.ONE:n.inv(L));const $=n.mul(E,b),j=n.mul(C,b),D=n.mul(L,b);if(M)return{x:n.ZERO,y:n.ZERO};if(!n.eql(D,n.ONE))throw new Error("invZ was invalid");return{x:$,y:j}}),N=Go(P=>{if(P.is0()){if(e.allowInfinityPoint&&!n.is0(P.Y))return;throw new Error("bad point: ZERO")}const{x:b,y:E}=P.toAffine();if(!n.isValid(b)||!n.isValid(E))throw new Error("bad point: x or y not field elements");if(!y(b,E))throw new Error("bad point: equation left != right");if(!P.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function k(P,b,E,C,L){return E=new x(n.mul(E.X,P),E.Y,E.Z),b=Xo(C,b),E=Xo(L,E),b.add(E)}class x{constructor(b,E,C){this.X=v("x",b),this.Y=v("y",E,!0),this.Z=v("z",C),Object.freeze(this)}static CURVE(){return s}static fromAffine(b){const{x:E,y:C}=b||{};if(!b||!n.isValid(E)||!n.isValid(C))throw new Error("invalid affine point");if(b instanceof x)throw new Error("projective point not allowed");return n.is0(E)&&n.is0(C)?x.ZERO:new x(E,C,n.ONE)}static fromBytes(b){const E=x.fromAffine(g(Je(b,void 0,"point")));return E.assertValidity(),E}static fromHex(b){return x.fromBytes(fe("pointHex",b))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(b=8,E=!0){return R.createCache(this,b),E||this.multiply(bo),this}assertValidity(){N(this)}hasEvenY(){const{y:b}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(b)}equals(b){A(b);const{X:E,Y:C,Z:L}=this,{X:M,Y:$,Z:j}=b,D=n.eql(n.mul(E,j),n.mul(M,L)),_=n.eql(n.mul(C,j),n.mul($,L));return D&&_}negate(){return new x(this.X,n.neg(this.Y),this.Z)}double(){const{a:b,b:E}=s,C=n.mul(E,bo),{X:L,Y:M,Z:$}=this;let j=n.ZERO,D=n.ZERO,_=n.ZERO,F=n.mul(L,L),q=n.mul(M,M),H=n.mul($,$),K=n.mul(L,M);return K=n.add(K,K),_=n.mul(L,$),_=n.add(_,_),j=n.mul(b,_),D=n.mul(C,H),D=n.add(j,D),j=n.sub(q,D),D=n.add(q,D),D=n.mul(j,D),j=n.mul(K,j),_=n.mul(C,_),H=n.mul(b,H),K=n.sub(F,H),K=n.mul(b,K),K=n.add(K,_),_=n.add(F,F),F=n.add(_,F),F=n.add(F,H),F=n.mul(F,K),D=n.add(D,F),H=n.mul(M,$),H=n.add(H,H),F=n.mul(H,K),j=n.sub(j,F),_=n.mul(H,q),_=n.add(_,_),_=n.add(_,_),new x(j,D,_)}add(b){A(b);const{X:E,Y:C,Z:L}=this,{X:M,Y:$,Z:j}=b;let D=n.ZERO,_=n.ZERO,F=n.ZERO;const q=s.a,H=n.mul(s.b,bo);let K=n.mul(E,M),z=n.mul(C,$),W=n.mul(L,j),X=n.add(E,C),G=n.add(M,$);X=n.mul(X,G),G=n.add(K,z),X=n.sub(X,G),G=n.add(E,L);let Y=n.add(M,j);return G=n.mul(G,Y),Y=n.add(K,W),G=n.sub(G,Y),Y=n.add(C,L),D=n.add($,j),Y=n.mul(Y,D),D=n.add(z,W),Y=n.sub(Y,D),F=n.mul(q,G),D=n.mul(H,W),F=n.add(D,F),D=n.sub(z,F),F=n.add(z,F),_=n.mul(D,F),z=n.add(K,K),z=n.add(z,K),W=n.mul(q,W),G=n.mul(H,G),z=n.add(z,W),W=n.sub(K,W),W=n.mul(q,W),G=n.add(G,W),K=n.mul(z,G),_=n.add(_,K),K=n.mul(Y,G),D=n.mul(X,D),D=n.sub(D,K),K=n.mul(X,z),F=n.mul(Y,F),F=n.add(F,K),new x(D,_,F)}subtract(b){return this.add(b.negate())}is0(){return this.equals(x.ZERO)}multiply(b){const{endo:E}=e;if(!o.isValidNot0(b))throw new Error("invalid scalar: out of range");let C,L;const M=$=>R.cached(this,$,j=>Jt(x,j));if(E){const{k1neg:$,k1:j,k2neg:D,k2:_}=B(b),{p:F,f:q}=M(j),{p:H,f:K}=M(_);L=q.add(K),C=k(E.beta,F,H,$,D)}else{const{p:$,f:j}=M(b);C=$,L=j}return Jt(x,[C,L])[0]}multiplyUnsafe(b){const{endo:E}=e,C=this;if(!o.isValid(b))throw new Error("invalid scalar: out of range");if(b===yt||C.is0())return x.ZERO;if(b===Mr)return C;if(R.hasCache(this))return this.multiply(b);if(E){const{k1neg:L,k1:M,k2neg:$,k2:j}=B(b),{p1:D,p2:_}=qw(x,C,M,j);return k(E.beta,D,_,L,$)}else return R.unsafe(C,b)}multiplyAndAddUnsafe(b,E,C){const L=this.multiplyUnsafe(E).add(b.multiplyUnsafe(C));return L.is0()?void 0:L}toAffine(b){return T(this,b)}isTorsionFree(){const{isTorsionFree:b}=e;return i===Mr?!0:b?b(x,this):R.unsafe(this,a).is0()}clearCofactor(){const{clearCofactor:b}=e;return i===Mr?this:b?b(x,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(b=!0){return ir(b,"isCompressed"),this.assertValidity(),h(x,this,b)}toHex(b=!0){return tr(this.toBytes(b))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(b=!0){return this.toBytes(b)}_setWindowSize(b){this.precompute(b)}static normalizeZ(b){return Jt(x,b)}static msm(b,E){return wf(x,o,b,E)}static fromPrivateKey(b){return x.BASE.multiply(Pr(o,b))}}x.BASE=new x(s.Gx,s.Gy,n.ONE),x.ZERO=new x(n.ZERO,n.ONE,n.ZERO),x.Fp=n,x.Fn=o;const S=o.BITS,R=new mf(x,e.endo?Math.ceil(S/2):S);return x.BASE.precompute(8),x}function Df(t){return Uint8Array.of(t?2:3)}function Ff(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function lb(t,e={}){const{Fn:r}=t,n=e.randomBytes||Ja,o=Object.assign(Ff(t.Fp,r),{seed:hf(r.ORDER)});function s(h){try{return!!Pr(r,h)}catch{return!1}}function i(h,g){const{publicKey:m,publicKeyUncompressed:y}=o;try{const w=h.length;return g===!0&&w!==m||g===!1&&w!==y?!1:!!t.fromBytes(h)}catch{return!1}}function a(h=n(o.seed)){return Uw(Je(h,o.seed,"seed"),r.ORDER)}function c(h,g=!0){return t.BASE.multiply(Pr(r,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:y}=o;if(r.allowedLengths||g===m)return;const w=fe("key",h).length;return w===m||w===y}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 y=Pr(r,h);return t.fromHex(g).multiply(y).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=>Pr(r,h),precompute(h=8,g=t.BASE){return g.precompute(h,!1)}},lengths:o})}function db(t,e,r={}){Vu(e),no(r,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});const n=r.randomBytes||Ja,o=r.hmac||((E,...C)=>Bf(e,E,at(...C))),{Fp:s,Fn:i}=t,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h}=lb(t,r),g={prehash:!1,lowS:typeof r.lowS=="boolean"?r.lowS:!1,format:void 0,extraEntropy:!1},m="compact";function y(E){const C=a>>Mr;return E>C}function w(E,C){if(!i.isValidNot0(C))throw new Error(`invalid signature ${E}: out of range 1..Point.Fn.ORDER`);return C}function I(E,C){da(C);const L=h.signature,M=C==="compact"?L:C==="recovered"?L+1:void 0;return Je(E,M,`${C} signature`)}class v{constructor(C,L,M){this.r=w("r",C),this.s=w("s",L),M!=null&&(this.recovery=M),Object.freeze(this)}static fromBytes(C,L=m){I(C,L);let M;if(L==="der"){const{r:_,s:F}=mt.toSig(Je(C));return new v(_,F)}L==="recovered"&&(M=C[0],L="compact",C=C.subarray(1));const $=i.BYTES,j=C.subarray(0,$),D=C.subarray($,$*2);return new v(i.fromBytes(j),i.fromBytes(D),M)}static fromHex(C,L){return this.fromBytes(Wo(C),L)}addRecoveryBit(C){return new v(this.r,this.s,C)}recoverPublicKey(C){const L=s.ORDER,{r:M,s:$,recovery:j}=this;if(j==null||![0,1,2,3].includes(j))throw new Error("recovery id invalid");if(a*_f<L&&j>1)throw new Error("recovery id is ambiguous for h>1 curve");const _=j===2||j===3?M+a:M;if(!s.isValid(_))throw new Error("recovery id 2 or 3 invalid");const F=s.toBytes(_),q=t.fromBytes(at(Df((j&1)===0),F)),H=i.inv(_),K=B(fe("msgHash",C)),z=i.create(-K*H),W=i.create($*H),X=t.BASE.multiplyUnsafe(z).add(q.multiplyUnsafe(W));if(X.is0())throw new Error("point at infinify");return X.assertValidity(),X}hasHighS(){return y(this.s)}toBytes(C=m){if(da(C),C==="der")return Wo(mt.hexFromSig(this));const L=i.toBytes(this.r),M=i.toBytes(this.s);if(C==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return at(Uint8Array.of(this.recovery),L,M)}return at(L,M)}toHex(C){return tr(this.toBytes(C))}assertValidity(){}static fromCompact(C){return v.fromBytes(fe("sig",C),"compact")}static fromDER(C){return v.fromBytes(fe("sig",C),"der")}normalizeS(){return this.hasHighS()?new v(this.r,i.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return tr(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return tr(this.toBytes("compact"))}}const A=r.bits2int||function(C){if(C.length>8192)throw new Error("input is too large");const L=Is(C),M=C.length*8-c;return M>0?L>>BigInt(M):L},B=r.bits2int_modN||function(C){return i.create(A(C))},T=ro(c);function N(E){return sa("num < 2^"+c,E,yt,T),i.toBytes(E)}function k(E,C){return Je(E,void 0,"message"),C?Je(e(E),void 0,"prehashed message"):E}function x(E,C,L){if(["recovered","canonical"].some(z=>z in L))throw new Error("sign() legacy options not supported");const{lowS:M,prehash:$,extraEntropy:j}=ri(L,g);E=k(E,$);const D=B(E),_=Pr(i,C),F=[N(_),N(D)];if(j!=null&&j!==!1){const z=j===!0?n(h.secretKey):j;F.push(fe("extraEntropy",z))}const q=at(...F),H=D;function K(z){const W=A(z);if(!i.isValidNot0(W))return;const X=i.inv(W),G=t.BASE.multiply(W).toAffine(),Y=i.create(G.x);if(Y===yt)return;const se=i.create(X*i.create(H+Y*_));if(se===yt)return;let Pe=(G.x===Y?0:2)|Number(G.y&Mr),De=se;return M&&y(se)&&(De=i.neg(se),Pe^=1),new v(Y,De,Pe)}return{seed:q,k2sig:K}}function S(E,C,L={}){E=fe("message",E);const{seed:M,k2sig:$}=x(E,C,L);return Pw(e.outputLen,i.BYTES,o)(M,$)}function R(E){let C;const L=typeof E=="string"||to(E),M=!L&&E!==null&&typeof E=="object"&&typeof E.r=="bigint"&&typeof E.s=="bigint";if(!L&&!M)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(M)C=new v(E.r,E.s);else if(L){try{C=v.fromBytes(fe("sig",E),"der")}catch($){if(!($ instanceof mt.Err))throw $}if(!C)try{C=v.fromBytes(fe("sig",E),"compact")}catch{return!1}}return C||!1}function P(E,C,L,M={}){const{lowS:$,prehash:j,format:D}=ri(M,g);if(L=fe("publicKey",L),C=k(fe("message",C),j),"strict"in M)throw new Error("options.strict was renamed to lowS");const _=D===void 0?R(E):v.fromBytes(fe("sig",E),D);if(_===!1)return!1;try{const F=t.fromBytes(L);if($&&_.hasHighS())return!1;const{r:q,s:H}=_,K=B(C),z=i.inv(H),W=i.create(K*z),X=i.create(q*z),G=t.BASE.multiplyUnsafe(W).add(F.multiplyUnsafe(X));return G.is0()?!1:i.create(G.x)===q}catch{return!1}}function b(E,C,L={}){const{prehash:M}=ri(L,g);return C=k(C,M),v.fromBytes(E,"recovered").recoverPublicKey(C).toBytes()}return Object.freeze({keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h,Point:t,sign:S,verify:P,recoverPublicKey:b,Signature:v,hash:e})}function ub(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},r=t.Fp;let n=t.allowedPrivateKeyLengths?Array.from(new Set(t.allowedPrivateKeyLengths.map(i=>Math.ceil(i/2)))):void 0;const o=pr(e.n,{BITS:t.nBitLength,allowedLengths:n,modFromBytes:t.wrapPrivateKey}),s={Fp:r,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 fb(t){const{CURVE:e,curveOpts:r}=ub(t),n={hmac:t.hmac,randomBytes:t.randomBytes,lowS:t.lowS,bits2int:t.bits2int,bits2int_modN:t.bits2int_modN};return{CURVE:e,curveOpts:r,hash:t.hash,ecdsaOpts:n}}function hb(t,e){const r=e.Point;return Object.assign({},e,{ProjectivePoint:r,CURVE:Object.assign({},t,uf(r.Fn.ORDER,r.Fn.BITS))})}function pb(t){const{CURVE:e,curveOpts:r,hash:n,ecdsaOpts:o}=fb(t),s=cb(e,r),i=db(s,n,o);return hb(t,i)}function gb(t,e){const r=n=>pb({...t,hash:n});return{...r(e),create:r}}const lc={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},mb={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},Rl=BigInt(2);function wb(t){const e=lc.p,r=BigInt(3),n=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=ue(d,r,e)*d%e,f=ue(u,r,e)*d%e,h=ue(f,Rl,e)*l%e,g=ue(h,o,e)*h%e,m=ue(g,s,e)*g%e,y=ue(m,a,e)*m%e,w=ue(y,c,e)*y%e,I=ue(w,a,e)*m%e,v=ue(I,r,e)*d%e,A=ue(v,i,e)*g%e,B=ue(A,n,e)*l%e,T=ue(B,Rl,e);if(!ua.eql(ua.sqr(T),t))throw new Error("Cannot find square root");return T}const ua=pr(lc.p,{sqrt:wb}),qt=gb({...lc,Fp:ua,lowS:!0,endo:mb},Ju);function yb(t,e,r){const n=Xa.digest(e instanceof Uint8Array?e:e.subarray());if(Cs(n))return n.then(({digest:o})=>(r?.signal?.throwIfAborted(),qt.sign(o,t).toDERRawBytes())).catch(o=>{throw o.name==="AbortError"?o:new El(String(o))});try{return qt.sign(n.digest,t).toDERRawBytes()}catch(o){throw new El(String(o))}}function bb(t,e,r,n){const o=Xa.digest(r instanceof Uint8Array?r:r.subarray());if(Cs(o))return o.then(({digest:s})=>(n?.signal?.throwIfAborted(),qt.verify(e,s,t))).catch(s=>{throw s.name==="AbortError"?s:new Al(String(s))});try{return n?.signal?.throwIfAborted(),qt.verify(e,o.digest,t)}catch(s){throw new Al(String(s))}}class Of{type="secp256k1";raw;_key;constructor(e){this._key=Ab(e),this.raw=Sb(this._key)}toMultihash(){return Qn.digest(Ns(this))}toCID(){return ce.createV1(114,this.toMultihash())}toString(){return Ne.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}verify(e,r,n){return bb(this._key,r,e,n)}}class vb{type="secp256k1";raw;publicKey;constructor(e,r){this.raw=Eb(e),this.publicKey=new Of(r??kb(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:tt(this.raw,e.raw)}sign(e,r){return yb(this.raw,e,r)}}function xb(t){return new vb(t)}function Mf(t){return new Of(t)}function Sb(t){return qt.ProjectivePoint.fromHex(t).toRawBytes(!0)}function Eb(t){try{return qt.getPublicKey(t,!0),t}catch(e){throw new Pu(String(e))}}function Ab(t){try{return qt.ProjectivePoint.fromHex(t),t}catch(e){throw new Tu(String(e))}}function kb(t){try{return qt.getPublicKey(t,!0)}catch(e){throw new Pu(String(e))}}async function Ib(t,e){return gy()}function fa(t,e){const{Type:r,Data:n}=ar.decode(t),o=n??new Uint8Array;switch(r){case le.RSA:return Jy(o,e);case le.Ed25519:return Sf(o);case le.secp256k1:return Mf(o);case le.ECDSA:return Ku(o);default:throw new Ss}}function Cb(t){const{Type:e,Data:r}=ar.decode(t.digest),n=r??new Uint8Array;switch(e){case le.Ed25519:return Sf(n);case le.secp256k1:return Mf(n);case le.ECDSA:return Ku(n);default:throw new Ss}}function Ns(t){return ar.encode({Type:le[t.type],Data:t.raw})}function Rb(t){const e=Qo.decode(t),r=e.Data??new Uint8Array;switch(e.Type){case le.RSA:return Yy(r);case le.Ed25519:return py(r);case le.secp256k1:return xb(r);case le.ECDSA:return ow(r);default:throw new Ss}}function Tb(t){return Qo.encode({Type:le[t.type],Data:t.raw})}const jf=Symbol.for("nodejs.util.inspect.custom"),Pb=114;class dc{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()})`}[Nu]=!0;toString(){return this.string==null&&(this.string=Ne.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return ce.createV1(Pb,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return tt(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return tt(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[jf](){return`PeerId(${this.toString()})`}}class Uf extends dc{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}}class $f extends dc{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}}class Hf extends dc{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}}const Nb=2336;class qf{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=Qn.digest(we(this.url))}[jf](){return`PeerId(${this.url})`}[Nu]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return ce.createV1(Nb,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=J(e)),e.toString()===this.toString())}}const Lb=114,Tl=2336;function Bb(t,e){let r;if(t.charAt(0)==="1"||t.charAt(0)==="Q")r=_u(Ne.decode(`z${t}`));else{if(t.startsWith("k51qzi5uqu5")||t.startsWith("kzwfwjn5ji4")||t.startsWith("k2k4r8")||t.startsWith("bafz"))return _b(ce.parse(t));throw new et('Please pass a multibase decoder for strings that do not start with "1" or "Q"')}return Kf(r)}function Xr(t){if(t.type==="Ed25519")return new $f({multihash:t.toCID().multihash,publicKey:t});if(t.type==="secp256k1")return new Hf({multihash:t.toCID().multihash,publicKey:t});if(t.type==="RSA")return new Uf({multihash:t.toCID().multihash,publicKey:t});throw new Ss}function Kf(t){if(Fb(t))return new Uf({multihash:t});if(Db(t))try{const e=Cb(t);if(e.type==="Ed25519")return new $f({multihash:t,publicKey:e});if(e.type==="secp256k1")return new Hf({multihash:t,publicKey:e})}catch{const r=J(t.digest);return new qf(new URL(r))}throw new mg("Supplied PeerID Multihash is invalid")}function _b(t){if(t?.multihash==null||t.version==null||t.version===1&&t.code!==Lb&&t.code!==Tl)throw new gg("Supplied PeerID CID is invalid");if(t.code===Tl){const e=J(t.multihash.digest);return new qf(new URL(e))}return Kf(t.multihash)}function Db(t){return t.code===Qn.code}function Fb(t){return t.code===Xa.code}class zf extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}}class Ob extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}}class pn extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}}class Pl extends Error{static name="StreamBufferError";constructor(e="The stream buffer was full"){super(e),this.name="StreamBufferError"}}class Mb extends Event{data;constructor(e,r){super("message",r),this.data=e}}class uc extends Event{error;local;constructor(e,r,n){super("close",n),this.error=r,this.local=e}}class jb extends uc{constructor(e,r){super(!0,e,r)}}class Ub extends uc{constructor(e,r){super(!1,e,r)}}const $b=t=>t/2**32|0,Hb=t=>t>>>0;function qb(t,e,r,n){const o=$b(r),s=Hb(r);t.setUint32(e,n?s:o,n),t.setUint32(e+4,n?o:s,n)}function ha(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const pa=t=>t?`"${t}" `:"";function It(t,e=""){if(typeof t!="number")throw new TypeError(pa(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(pa(e)+"expected integer >= 0, got "+t);return t}function Ct(t,e,r=""){if(ha(t)&&(e===void 0||t.length===e))return t;e!==void 0&&It(e,"length");const n=ha(t),o=e!==void 0?` of length ${e}`:"",s=n?`length=${t.length}`:`type=${typeof t}`,i=pa(r)+"expected Uint8Array"+o+", got "+s;throw n?new RangeError(i):new TypeError(i)}function fc(t){if(typeof t!="function"||typeof t.create!="function")throw new TypeError("expected hash wrapped by utils.createHasher");if(It(t.outputLen),It(t.blockLen),t.outputLen<1||t.blockLen<1)throw new Error("hash blockLen / outputLen must be >= 1")}const Kb=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError((e==="object"?"":`"${e}" `)+"expected object, got type="+typeof t)},Nl=(t,e)=>{Kb(t,e);const r=Object.getPrototypeOf(t);if(r!==Object.prototype&&r!==null)throw new TypeError(`"${e}" expected plain object`);if(Object.hasOwn(t,"__proto__"))throw new TypeError(`"${e}.__proto__" is not allowed`)};function es(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function Vf(t,e){Ct(t,void 0,"output");const r=e.outputLen;if(!(t.length>=r))throw new RangeError('"output" expected length >= '+r)}function Rk(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function nr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function ni(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function st(t,e){return t<<32-e|t>>>e}function Tk(t,e){return t<<e|t>>>32-e>>>0}const zb=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Vb(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function Wb(t){for(let e=0;e<t.length;e++)t[e]=Vb(t[e]);return t}const Pk=zb?t=>t:Wb,Wf=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Gb=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function hc(t){if(Ct(t),Wf)return t.toHex();let e="";for(let r=0;r<t.length;r++)e+=Gb[t[r]];return e}function Ll(t){return t>=48&&t<=57?t-48:t>=65&&t<=70?t-55:t>=97&&t<=102?t-87:void 0}function Gf(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);if(Wf)try{return Uint8Array.fromHex(t)}catch(o){throw o instanceof SyntaxError?new RangeError(o.message):o}const e=t.length,r=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(r);for(let o=0,s=0;o<r;o++,s+=2){const i=Ll(t.charCodeAt(s)),a=Ll(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)}n[o]=i*16+a}return n}function Xb(t){const e=globalThis;if(typeof e.scheduler?.yield=="function"){const r=e.scheduler.yield();return t&&r.catch(t),r}return new Promise(r=>e.setTimeout(r,0))}async function Nk(t,e,r,n){if(It(t,"iters"),It(e,"tick"),typeof r!="function")throw new TypeError("callback must be a function");let o=Date.now();for(let s=0;s<t;s++){r(s);const i=Date.now()-o;i>=0&&i<e||(await Xb(n),o=Date.now())}}function Yb(t){if(typeof t!="string")throw new TypeError("string expected");const e=new TextEncoder().encode(t);try{return new Uint8Array(e)}finally{nr(e)}}function Lk(t,e=""){return typeof t=="string"?Yb(t):Ct(t,void 0,e)}function Zb(t,e,r="opts"){return Nl(t,"defaults"),e!==void 0&&Nl(e,r),Object.assign(Object.create(null),t,e)}function Jb(t,e={}){if(typeof t!="function")throw new TypeError('"hashCons" expected function, got type='+typeof t);e=Zb({},e,"info");const r=(o,s)=>t(s).update(o).digest(),n=t(void 0);return r.outputLen=n.outputLen,r.blockLen=n.blockLen,r.canXOF=n.canXOF,r.create=o=>t(o),Object.assign(r,e),Object.freeze(r)}function Qb(t=32){It(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 e0=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function t0(t,e,r){return t&e^~t&r}function r0(t,e,r){return t&e^t&r^e&r}class n0{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,r,n,o){this.blockLen=e,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=ni(this.buffer)}update(e){es(this),Ct(e);const{view:r,buffer:n,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=ni(e);for(;o<=s-a;a+=o)this.process(l,a);i=!0;continue}n.set(a===0&&c===s?e:e.subarray(a,a+c),this.pos),this.pos+=c,a+=c,this.pos===o&&(this.process(r,0),this.pos=0,i=!0)}return this.length+=e.length,i&&this.roundClean(),this}digestInto(e){es(this),Vf(e,this),this.finished=!0;const{buffer:r,view:n,blockLen:o,isLE:s}=this;let{pos:i}=this;r[i++]=128,r.fill(0,i),this.padOffset>o-i&&(this.process(n,0),r.fill(0)),qb(n,o-8,this.length*8,s),this.process(n,0),this.roundClean();const a=e===r?n:ni(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:r}=this;this.digestInto(e);const n=e.slice(0,r);return this.destroy(),n}_cloneIntoMeta(e){const{buffer:r,length:n,finished:o,destroyed:s,pos:i}=this;return e.destroyed=s,e.finished=o,e.length=n,e.pos=i,i&&e.buffer.set(r),e}clone(){return this._cloneInto()}}const o0=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),s0=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 i0 extends n0{A=0;B=0;C=0;D=0;E=0;F=0;G=0;H=0;constructor(e,r){super(64,e,8,!1),this.A=r[0]|0,this.B=r[1]|0,this.C=r[2]|0,this.D=r[3]|0,this.E=r[4]|0,this.F=r[5]|0,this.G=r[6]|0,this.H=r[7]|0}get(){const{A:e,B:r,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,r,n,o,s,i,a,c]}set(e,r,n,o,s,i,a,c){this.A=e|0,this.B=r|0,this.C=n|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,r){for(let u=0;u<16;u++,r+=4)_t[u]=e.getUint32(r,!1);for(let u=16;u<64;u++){const f=_t[u-15],h=_t[u-2],g=st(f,7)^st(f,18)^f>>>3,m=st(h,17)^st(h,19)^h>>>10;_t[u]=m+_t[u-7]+g+_t[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=st(a,6)^st(a,11)^st(a,25),h=d+f+t0(a,c,l)+s0[u]+_t[u]|0,m=(st(n,2)^st(n,13)^st(n,22))+r0(n,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+m|0}n=n+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(n,o,s,i,a,c,l,d)}roundClean(){nr(_t)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),nr(this.buffer)}}class a0 extends i0{constructor(){super(32,o0)}}const oi=Jb(()=>new a0,e0(1));function Xf(t,e,r=()=>{}){if(!Array.isArray(t))throw new TypeError(`"${e}" expected array, got type=${typeof t}`);for(let n=0;n<t.length;n++)r(t[n],`${e}[${n}]`);return t}const jr=(t,e,r)=>Ct(t,e,r),Yf=It;function Ur(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 Dn(t,e){if(typeof t!="function")throw new TypeError(`"${e}" is invalid: expected function, got ${typeof t}`);return t}const c0=hc,l0=t=>Gf(t),Zf=ha,Jf=t=>Qb(t),ts=BigInt(0),Bl=BigInt(1),d0=t=>t?`"${t}" `:"";function Ls(t,e=""){if(typeof t!="boolean")throw new TypeError(d0(e)+"expected boolean, got type="+typeof t);return t}function u0(t){if(typeof t=="bigint"){if(!or(t))throw new RangeError("positive bigint expected, got "+t)}else Yf(t);return t}function ga(t,e=""){if(typeof t!="number"){const r=e&&`"${e}" `;throw new TypeError(r+"expected number, got type="+typeof t)}if(!Number.isSafeInteger(t)){const r=e&&`"${e}" `;throw new RangeError(r+"expected safe integer, got "+t)}}function Qf(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);return t===""?ts:BigInt("0x"+t)}function eh(t){return Qf(hc(t))}function rs(t){return Qf(hc(Kn(Ct(t)).reverse()))}function th(t,e){if(It(e),e===0)throw new Error("zero output length is invalid");t=u0(t);const r=e*2,n=t.toString(16);if(n.length>r)throw new RangeError("number is too large");return Gf(n.padStart(r,"0"))}function rh(t,e){return th(t,e).reverse()}function Kn(t){return Uint8Array.from(jr(t))}function or(t){return typeof t=="bigint"&&ts<=t}function nh(t,e,r){return or(t)&&or(e)&&or(r)&&e<=t&&t<r}function Fn(t,e,r,n){if(!nh(e,r,n))throw new RangeError("expected valid "+t+": "+r+" <= n < "+n+", got "+e)}function f0(t){if(t<ts)throw new Error("expected non-negative bigint, got "+t);return t===ts?0:t.toString(2).length}const h0=t=>(ga(t,"n"),(Bl<<BigInt(t))-Bl);function ns(t,e={},r={},n="object"){Ur(t,n),Ur(e,"fields"),Ur(r,"optFields");function o(i,a,c){const l=n==="object"?`param "${String(i)}"`:`"${n}.${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(r,!0)}const xe=BigInt(0),ae=BigInt(1),Qt=BigInt(2),oh=BigInt(3),pc=BigInt(4),sh=BigInt(5),p0=BigInt(7),ih=BigInt(8),g0=BigInt(9),m0=BigInt(15),ah=BigInt(16),w0=BigInt("0x10000000000000000");function ie(t,e){if(e<=xe)throw new Error("mod: expected positive modulus, got "+e);const r=t%e;return r>=xe?r:e+r}function y0(t,e,r){if(r<=ae)throw new Error("pow: expected modulus > 1, got "+r);if(typeof e!="bigint")throw new TypeError("invalid exponent: expected bigint, got "+typeof e);if(e<xe)throw new Error("invalid exponent, negatives unsupported");if(e===xe)return ae;if(e===ae)return t;let n=t%r;if(n<xe&&(n+=r),e<w0){let a=ae;for(;e>xe;)e&ae&&(a=a*n%r),n=n*n%r,e>>=ae;return a}const o=[];for(;e>xe;)o.push(Number(e&m0)),e>>=pc;const s=new Array(16);s[0]=ae,s[1]=n;for(let a=2;a<16;a++)s[a]=s[a-1]*n%r;let i=s[o[o.length-1]];for(let a=o.length-2;a>=0;a--){i=i*i%r,i=i*i%r,i=i*i%r,i=i*i%r;const c=o[a];c!==0&&(i=i*s[c]%r)}return i}function Ze(t,e,r){if(r<=ae)throw new Error("pow2: expected modulus > 1, got "+r);if(e<xe)throw new Error("pow2: expected non-negative exponent, got "+e);let n=t;for(;e-- >xe;)n*=n,n%=r;return n}function _l(t,e){if(t===xe)throw new Error("invert: expected non-zero number");if(e<=ae)throw new Error("invert: expected modulus > 1, got "+e);let r=ie(t,e),n=e,o=xe,s=ae;for(;r!==xe;){const a=n/r,c=n-r*a,l=o-s*a;n=r,r=c,o=s,s=l}if(n!==ae)throw new Error("invert: does not exist");return ie(o,e)}function gc(t,e,r){const n=t;if(!n.eql(n.sqr(e),r))throw new Error("Cannot find square root")}function mc(t,e){if((t&ae)===xe)throw new Error(e+": expected odd modulus, got "+t)}function ch(t,e){const r=t,n=(r.ORDER+ae)/pc,o=r.pow(e,n);return gc(r,o,e),o}function b0(t,e){const r=t,n=(r.ORDER-sh)/ih,o=r.mul(e,Qt),s=r.pow(o,n),i=r.mul(e,s),a=r.mul(r.mul(i,Qt),s),c=r.mul(i,r.sub(a,r.ONE));return gc(r,c,e),c}function v0(t){const e=wc(t),r=lh(t),n=r(e,e.neg(e.ONE)),o=r(e,n),s=r(e,e.neg(n)),i=(t+p0)/ah;return((a,c)=>{const l=a;let d=l.pow(c,i),u=l.mul(d,n);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 y=l.eql(l.sqr(u),c),w=l.cmov(d,u,y);return gc(l,w,c),w})}function lh(t){if(t<oh)throw new Error("sqrt is not defined for small field");mc(t,"tonelliShanks");let e=t-ae,r=0;for(;e%Qt===xe;)e/=Qt,r++;let n=Qt;const o=wc(t);for(;os(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return ch;let s=o.pow(n,e);const i=(e+ae)/Qt;return function(c,l){const d=c;if(d.is0(l))return l;if(os(d,l)!==1)throw new Error("Cannot find square root");let u=r,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,y=d.sqr(h);for(;!d.eql(y,d.ONE);)if(m++,y=d.sqr(y),m===u)throw new Error("Cannot find square root");const w=ae<<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 x0(t){return mc(t,"Fp.sqrt"),t%pc===oh?ch:t%ih===sh?b0:t%ah===g0?v0(t):lh(t)}const S0=(t,e)=>(ie(t,e)&ae)===ae,E0=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function zn(t){if(Ur(t,"field"),typeof t.ORDER!="bigint")throw new TypeError('param "ORDER" is invalid: expected bigint, got '+typeof t.ORDER);ga(t.BYTES,"BYTES"),ga(t.BITS,"BITS");for(const e of E0)Dn(t[e],"field."+e);if(t.BYTES<1||t.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(t.ORDER<=ae)throw new Error("invalid field: expected ORDER > 1, got "+t.ORDER);return t}function dh(t,e,r=!1){zn(t),Xf(e,"nums"),Ls(r,"passZero");const n=t,o=new Array(e.length).fill(r?n.ZERO:void 0),s=e.reduce((a,c,l)=>n.is0(c)?a:(o[l]=a,n.mul(a,c)),n.ONE),i=n.inv(s);return e.reduceRight((a,c,l)=>n.is0(c)?a:(o[l]=n.mul(a,o[l]),n.mul(a,c)),i),o}function os(t,e){zn(t);const r=t;mc(r.ORDER,"FpLegendre");const n=(r.ORDER-ae)/Qt,o=r.pow(e,n),s=r.eql(o,r.ONE),i=r.eql(o,r.ZERO),a=r.eql(o,r.neg(r.ONE));if(!s&&!i&&!a)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function A0(t,e){if(e!==void 0&&Yf(e),t<=xe)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 r=f0(t);if(e!==void 0&&e<r)throw new Error(`invalid n length: expected nBitLength (${e}) >= bitLen(n) (${r})`);const n=e!==void 0?e:r,o=Math.ceil(n/8);return{nBitLength:n,nByteLength:o}}const Dl=new WeakMap;class Fl{ORDER;BITS;BYTES;isLE;ZERO=xe;ONE=ae;_lengths;_mod;constructor(e,r={}){if(e<=ae)throw new Error("invalid field: expected ORDER > 1, got "+e);let n;this.isLE=!1,r!=null&&typeof r=="object"&&(typeof r.BITS=="number"&&(n=r.BITS),typeof r.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:r.sqrt,enumerable:!0}),typeof r.isLE=="boolean"&&(this.isLE=r.isLE),r.allowedLengths&&(this._lengths=Object.freeze(r.allowedLengths.slice())),typeof r.modFromBytes=="boolean"&&(this._mod=r.modFromBytes));const{nBitLength:o,nByteLength:s}=A0(e,n);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 ie(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return xe<=e&&e<this.ORDER}is0(e){return e===xe}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&ae)===ae}neg(e){return ie(-e,this.ORDER)}eql(e,r){return e===r}sqr(e){return ie(e*e,this.ORDER)}add(e,r){return ie(e+r,this.ORDER)}sub(e,r){return ie(e-r,this.ORDER)}mul(e,r){return ie(e*r,this.ORDER)}pow(e,r){return y0(e,r,this.ORDER)}div(e,r){return ie(e*_l(r,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,r){return e+r}subN(e,r){return e-r}mulN(e,r){return e*r}inv(e){return _l(e,this.ORDER)}sqrt(e){let r=Dl.get(this);return r||Dl.set(this,r=x0(this.ORDER)),r(this,e)}toBytes(e){return this.isLE?rh(e,this.BYTES):th(e,this.BYTES)}fromBytes(e,r=!1){jr(e);const{_lengths:n,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(n){if(e.length<1||!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" 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):eh(e);if(a&&(c=ie(c,i)),!r&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return dh(this,e,!0)}cmov(e,r,n){return Ls(n,"condition"),n?r:e}}function wc(t,e={}){return Object.freeze(Fl.prototype),new Fl(t,e)}const yc=BigInt(0),Vn=BigInt(1),k0=BigInt(4),si=16,Ol=128,I0=5,Ml=2**31;function bc(t){const e=t;if(typeof e!="function")throw new TypeError('"Point" expected constructor, got type='+typeof t);Dn(e.fromAffine,"Point.fromAffine"),Dn(e.fromBytes,"Point.fromBytes"),Dn(e.fromHex,"Point.fromHex"),Ur(e.BASE,"Point.BASE"),Ur(e.ZERO,"Point.ZERO"),zn(e.Fp),zn(e.Fn)}function C0(t,e){bc(t),uh(e,t);const r=dh(t.Fp,e.map(n=>n.Z));return e.map((n,o)=>t.fromAffine(n.toAffine(r[o])))}function R0(t,e,r=1){if(!Number.isSafeInteger(t)||t<r||t>e)throw new Error("invalid window size, expected ["+r+".."+e+"], got W="+t)}function T0(t,e){const r=t*(4*e+128);if(r>Ml)throw new Error("invalid window size: table would need ~"+Math.ceil(r/2**20)+" MiB, max "+Ml/2**20+" MiB")}function P0(t,e){if(t!==void 0){Dn(t,"randomBytes");try{const r=t(e);if(!Zf(r)||r.length!==e)return}catch{return}return t}}function uh(t,e){Xf(t,"points"),t.forEach((r,n)=>{if(!(r instanceof e))throw new Error("invalid point at index "+n)})}function N0(t,e,r){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((n,o)=>{if(!(r===void 0?e.isValid(n):or(n)&&n<r))throw new Error("invalid scalar at index "+o)})}const fh=new WeakMap;function ii(t){return fh.get(t)||1}function L0(t,e){const r=t.double(),n=[t];for(let o=1;o<e;o++)n.push(n[o-1].add(r));return n}function B0(t,e){const r=2**e,n=r/2,o=BigInt(r-1),s=[];for(;t>yc;){let i=0;t&Vn&&(i=Number(t&o),i>=n&&(i-=r),t-=BigInt(i)),s.push(i),t>>=Vn}return s}function _0(t,e,r){const n=2**e,o=n/2,s=BigInt(n-1),i=BigInt(e),a=[];for(let c=0;c<r;c++){let l=Number(t&s);t>>=i,l>o&&(l-=n,t+=Vn),a.push(l)}if(t!==yc)throw new Error("invalid wnaf");return a}function D0(t,e,r){let n=0;for(const s of r)n=Math.max(n,s.length);let o=t;for(let s=n-1;s>=0;s--){s!==n-1&&(o=o.double());for(let i=0;i<r.length;i++){const a=r[i][s];if(a){const c=e[i][Math.abs(a)-1>>1];o=o.add(a<0?c.negate():c)}}}return o}class F0{Point;BASE;ZERO;randomBytes;wnafPrecomputes=new WeakMap;baseCanBeBlinded;bits;constructor(e,r){bc(e),this.randomBytes=P0(r,si),this.Point=e,this.BASE=e.BASE,this.ZERO=e.ZERO,this.bits=e.Fn.BITS}buildWnafTable(e,r,n){const o=Math.ceil(n/r)+1,s=2**(r-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:r,bits:n,windows:o,comp:i}}wnafCachedCT(e,r){const{W:n,windows:o,comp:s}=e,i=2**(n-1),a=_0(r,n,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 y=1;y<i;y++)g=y===h?s[f+y]: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,r,n,o){let s=this.wnafPrecomputes.get(r),i=s?.find(a=>a.W===e&&a.bits===n);return i||(i=this.buildWnafTable(r,e,n),typeof o=="function"&&(i={...i,comp:o(i.comp)}),s||(s=[],this.wnafPrecomputes.set(r,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,r){if(this.assertPoint(e),!nh(r,Vn,this.Point.Fn.ORDER))throw new Error("invalid scalar")}runCT(e,r,n,o){const s=ii(e);return s===1?this.fixedWindowCT(e,r,n):this.wnafCachedCT(this.getWnafPrecomputes(s,e,n,o),r)}mulCT(e,r,n){return this.validateMulInput(e,r),this.runCT(e,r,this.bits,n)}mulCTBlinded(e,r,n){if(this.validateMulInput(e,r),this.randomBytes===void 0)throw new Error("randomBytes is required for scalar blinding");const o=this.Point.Fn.BITS+Ol,s=this.randomBytes(si);if(!Zf(s)||s.length!==si)throw new Error("randomBytes returned invalid byte array");s[0]=s[0]&63|128;const i=r+eh(s)*this.Point.Fn.ORDER;return this.runCT(e,i,o,n)}fixedWindowCT(e,r,n){const o=I0,s=1<<o,i=h0(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(n/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(r>>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,r){return this.randomBytes===void 0?!1:r===Vn?!0:e!==this.BASE?!1:(this.baseCanBeBlinded===void 0&&(this.baseCanBeBlinded=this.mulUnsafe(this.BASE,this.Point.Fn.ORDER).is0()),this.baseCanBeBlinded)}mulSecret(e,r,n,o){return this.shouldBlind(e,n)?this.mulCTBlinded(e,r,o):this.mulCT(e,r,o)}mulUnsafe(e,r,n){if(this.assertPoint(e),!or(r))throw new Error("invalid scalar");const o=ii(e);if(o===1||r>=this.Point.Fn.ORDER)return O0(this.Point,[e],[r],!0);const s=this.getWnafPrecomputes(o,e,this.bits,n);return this.wnafCachedCT(s,r).p}setWindowSize(e,r){this.assertPoint(e),R0(r,this.bits);const n=Math.ceil((this.bits+Ol)/r)+1;T0(n*2**(r-1),this.Point.Fp.BYTES),fh.set(e,r),this.wnafPrecomputes.delete(e)}hasWindowSize(e){return ii(e)!==1}}function O0(t,e,r,n=!1){if(bc(t),uh(e,t),Ls(n,"allowOversized"),N0(r,t.Fn,n?t.Fn.ORDER**k0:void 0),e.length!==r.length)throw new Error("arrays of points and scalars must have equal length");const o=e.map(i=>L0(i,4)),s=r.map(i=>B0(i,4));return D0(t.ZERO,o,s)}function jl(t,e,r){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return zn(e),e}else return wc(t,{isLE:r})}function M0(t,e,r={},n){if(n===void 0&&(n=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);ns(r);for(const c of["p","n","h"]){const l=e[c];if(!(or(l)&&l!==yc))throw new Error(`CURVE.${c} must be positive bigint`)}const o=jl(e.p,r.Fp,n),s=jl(e.n,r.Fn,n),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 j0(t,e){return function(n){const o=t(n);return{secretKey:o,publicKey:e(o)}}}const vo=BigInt(0),xo=BigInt(1),So=BigInt(2),U0=BigInt(4),Ul=BigInt(8);function $0(t,e,r,n){const o=t.sqr(r),s=t.sqr(n),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 H0(t,e={}){ns(e,{},{},"extraOpts");const r=e,n=M0("edwards",t,r,r.FpFnLE),{Fp:o,Fn:s}=n;let i=n.CURVE;const{h:a}=i;if(os(o,i.a)!==1)throw new Error("edwards: CURVE.a must be a square in Fp for complete addition formulas");if(os(o,i.d)!==-1)throw new Error("edwards: CURVE.d must be a non-square in Fp for complete addition formulas");ns(r,{},{uvRatio:"function",randomBytes:"function"});const c=r.randomBytes===void 0?Jf:r.randomBytes,l=So<<BigInt(o.BYTES*8)-xo;function d(I){if(!o.isOdd)throw new Error("Field does not have .isOdd()");return o.isOdd(I)}const u=r.uvRatio===void 0?(I,v)=>{try{return{isValid:!0,value:o.sqrt(o.div(I,v))}}catch{return{isValid:!1,value:vo}}}:r.uvRatio;if(!$0(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,v,A=!1){const B=A?xo:vo;return Fn("coordinate "+I,v,B,l),v}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(v,A,B,T){this.X=h("x",v),this.Y=h("y",A),this.Z=h("z",B,!0),this.T=h("t",T),Object.freeze(this)}static CURVE(){return i}static fromAffine(v){if(v instanceof m)throw new Error("extended point not allowed");const{x:A,y:B}=v||{};return h("x",A),h("y",B),new m(A,B,o.ONE,o.mul(A,B))}static fromBytes(v,A=!1){const B=o.BYTES,{a:T,d:N}=i;v=Kn(jr(v,B,"point")),Ls(A,"zip215");const k=Kn(v),x=v[B-1];k[B-1]=x&-129;const S=rs(k),R=A?l:o.ORDER;Fn("point.y",S,vo,R);const P=o.sqr(S),b=o.sub(P,o.ONE),E=o.sub(o.mulN(N,P),T);let{isValid:C,value:L}=u(b,E);if(!C)throw new Error("bad point: invalid y coordinate");const M=d(L),$=(x&128)!==0;if(!A&&o.is0(L)&&$)throw new Error("bad point: x=0 and x_0=1");return $!==M&&(L=o.neg(L)),m.fromAffine({x:L,y:S})}static fromHex(v,A=!1){return m.fromBytes(l0(v),A)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(v=6,A=!0){return w.setWindowSize(this,v),A||this.multiply(So),this}assertValidity(){const v=this,{a:A,d:B}=i;if(v.is0())throw new Error("bad point: ZERO");const{X:T,Y:N,Z:k,T:x}=v,S=o.sqr(T),R=o.sqr(N),P=o.sqr(k),b=o.sqr(P),E=o.mul(S,A),C=o.mul(o.add(E,R),P),L=o.add(b,o.mul(B,o.mul(S,R)));if(!o.eql(C,L))throw new Error("bad point: equation left != right (1)");const M=o.mul(T,N),$=o.mul(k,x);if(!o.eql(M,$))throw new Error("bad point: equation left != right (2)")}equals(v){g(v);const{X:A,Y:B,Z:T}=this,{X:N,Y:k,Z:x}=v,S=o.mul(A,x),R=o.mul(N,T),P=o.mul(B,x),b=o.mul(k,T);return o.eql(S,R)&&o.eql(P,b)}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:v,Y:A,Z:B}=this,T=o.sqr(v),N=o.sqr(A),k=o.mul(o.sqr(B),So),x=f(T),S=o.addN(v,A),R=o.sub(o.subN(o.sqr(S),T),N),P=o.addN(x,N),b=o.subN(P,k),E=o.subN(x,N),C=o.mul(R,b),L=o.mul(P,E),M=o.mul(R,E),$=o.mul(b,P);return new m(C,L,$,M)}add(v){g(v);const{d:A}=i,{X:B,Y:T,Z:N,T:k}=this,{X:x,Y:S,Z:R,T:P}=v,b=o.mul(B,x),E=o.mul(T,S),C=o.mul(o.mulN(k,A),P),L=o.mul(N,R),M=o.sub(o.subN(o.mulN(o.addN(B,T),o.addN(x,S)),b),E),$=o.subN(L,C),j=o.addN(L,C),D=o.sub(E,f(b)),_=o.mul(M,$),F=o.mul(j,D),q=o.mul(M,D),H=o.mul($,j);return new m(_,F,H,q)}subtract(v){return g(v),this.add(v.negate())}multiply(v){if(!s.isValidNot0(v))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:A,f:B}=w.mulSecret(this,v,a,y);return y([A,B])[0]}multiplyUnsafe(v){if(!s.isValid(v))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return v===vo?m.ZERO:this.is0()||v===xo?this:w.mulUnsafe(this,v,y)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return w.mulUnsafe(this,i.n).is0()}toAffine(v){const A=this;let B=v;if(B!=null&&typeof B!="bigint")throw new TypeError('"invertedZ" expected bigint, got type='+typeof B);const{X:T,Y:N,Z:k}=A,x=A.is0();B==null&&(B=x?o.create(Ul):o.inv(k));const S=o.mul(T,B),R=o.mul(N,B),P=o.mul(k,B);if(x)return{x:o.ZERO,y:o.ONE};if(!o.eql(P,o.ONE))throw new Error("invZ was invalid");return{x:S,y:R}}clearCofactor(){return a===xo?this:a===So?this.double():a===U0?this.double().double():a===Ul?this.double().double().double():this.multiplyUnsafe(a)}toBytes(){const{x:v,y:A}=this.toAffine(),B=o.toBytes(A);return B[B.length-1]|=d(v)?128:0,B}toHex(){return c0(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const y=I=>C0(m,I),w=new F0(m,c);return w.bits>=6&&m.BASE.precompute(6),Object.freeze(m.prototype),Object.freeze(m),m}const Wt=BigInt(0),ze=BigInt(1),Eo=BigInt(2);function $l(t,e){return t+e-(e>>ze<<ze)}function q0(t){const e=BigInt(6)*t;return(r,n,o)=>{const s=n+o,a=((e+o-n)*r+n)%t;return{x_2:a,x_3:s-a}}}function K0(t){return ns(t,{P:"bigint",type:"string",adjustScalarBytes:"function",powPminus2:"function"},{randomBytes:"function",scalarMultBase:"function"}),Object.freeze({...t})}function z0(t){const e=K0(t),{P:r,type:n,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,a=e.scalarMultBase,c=n==="x25519";if(!c&&n!=="x448")throw new Error("invalid type");const l=i===void 0?Jf:i,d=c?255:448,u=q0(r),f=c?32:56,h=BigInt(c?9:5),g=BigInt(c?121665:39081),m=c?Eo**BigInt(254):Eo**BigInt(447),y=c?BigInt(8)*(Eo**BigInt(251)-ze):BigInt(4)*(Eo**BigInt(445)-ze),w=m+y+ze,I=L=>ie(L,r),v=A(h);function A(L){return rh(I(L),f)}function B(L){const M=Kn(jr(L,f,"uCoordinate"));return c&&(M[31]&=127),I(rs(M))}function T(L){return rs(o(Kn(jr(L,f,"scalar"))))}const N=new Set(c?[Wt,ze,r-ze,BigInt("325606250916557431795983626356110631294008115727848805560023387167927233504"),BigInt("39382357235489614581723060781553021112529911719440698176882885853963445705823")]:[Wt,ze,r-ze]);function k(L,M){const $=B(M);if(N.has($))throw new Error("invalid private or public key received");const j=P($,T(L));if(j===Wt)throw new Error("invalid private or public key received");return A(j)}function x(L){if(a===void 0)return k(L,v);const M=T(L);Fn("scalar",M,m,w);const $=I(a(M));if($===Wt)throw new Error("invalid private or public key received");return A($)}const S=x,R=k;function P(L,M){Fn("u",L,Wt,r),Fn("scalar",M,m,w);const $=M,j=L;let D=ze,_=Wt,F=L,q=ze;const H=$^$>>ze;for(let W=BigInt(d-1);W>=Wt;W--){const X=$l(r,H>>W);({x_2:D,x_3:F}=u(X,D,F)),{x_2:_,x_3:q}=u(X,_,q);const G=D+_,Y=I(G*G),se=D-_,Pe=I(se*se),De=Y-Pe,oe=F+q,nt=F-q,br=I(nt*G),Rt=I(oe*se),Xe=br+Rt,io=br-Rt;F=I(Xe*Xe),q=I(j*I(io*io)),D=I(Y*Pe),_=I(De*(Y+I(g*De)))}const K=$l(r,$);({x_2:D,x_3:F}=u(K,D,F)),{x_2:_,x_3:q}=u(K,_,q);const z=s(_);return I(D*z)}const b={secretKey:f,publicKey:f,seed:f},E=L=>(L=L===void 0?l(f):L,jr(L,b.seed,"seed"),L),C={randomSecretKey:E};return Object.freeze(b),Object.freeze(C),Object.freeze({keygen:j0(E,S),getSharedSecret:R,getPublicKey:S,scalarMult:k,scalarMultBase:x,utils:C,GuBytes:v.slice(),lengths:b})}const Hl=BigInt(0),V0=BigInt(1),ql=BigInt(2),W0=BigInt(3),G0=BigInt(5),X0=BigInt(8),Bs=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),Y0={p:Bs,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:X0,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function hh(t){const e=BigInt(10),r=BigInt(20),n=BigInt(40),o=BigInt(80),s=Bs,a=t*t%s*t%s,c=Ze(a,ql,s)*a%s,l=Ze(c,V0,s)*t%s,d=Ze(l,G0,s)*l%s,u=Ze(d,e,s)*d%s,f=Ze(u,r,s)*u%s,h=Ze(f,n,s)*f%s,g=Ze(h,o,s)*h%s,m=Ze(g,o,s)*h%s,y=Ze(m,e,s)*d%s;return{pow_p_5_8:Ze(y,ql,s)*t%s,b2:a}}function Z0(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Kl=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function J0(t,e){const r=Bs,n=ie(e*e*e,r),o=ie(n*n*e,r),s=hh(t*o).pow_p_5_8;let i=ie(t*n*s,r);const a=ie(e*i*i,r),c=i,l=ie(i*Kl,r),d=a===t,u=a===ie(-t,r),f=a===ie(-t*Kl,r);return d&&(i=c),(u||f)&&(i=l),S0(i,r)&&(i=ie(-i,r)),{isValid:d||u,value:i}}const zl=H0(Y0,{uvRatio:J0}),Ao=(()=>{const t=Bs,e=r=>{const{pow_p_5_8:n,b2:o}=hh(r);return ie(Ze(n,W0,t)*o,t)};return z0({P:t,type:"x25519",powPminus2:e,adjustScalarBytes:Z0,scalarMultBase:r=>{const n=ie(r,zl.Fn.ORDER);if(n===Hl)return Hl;const o=zl.BASE.multiply(n);return ie((o.Z+o.Y)*e(ie(o.Z-o.Y,t)),t)}})})();class Vl{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,r){if(fc(e),Ct(r,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 n=this.blockLen,o=new Uint8Array(n);o.set(r.length>n?e.create().update(r).digest():r);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),nr(o)}update(e){return es(this),this.iHash.update(e),this}digestInto(e){es(this),Vf(e,this),this.finished=!0;const r=e.subarray(0,this.outputLen);this.iHash.digestInto(r),this.oHash.update(r),this.oHash.digestInto(r),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:r,iHash:n,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=r._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const ph=(()=>{const t=((e,r,n)=>new Vl(e,r).update(n).digest());return t.create=(e,r)=>new Vl(e,r),t})();function Wl(){const t={};return t.promise=new Promise((e,r)=>{t.resolve=e,t.reject=r}),t}class Gl{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 ai{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Gl(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 r=this.head;this.head=r.next=new Gl(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){const r=this.tail.next;this.tail.next=null,this.tail=r,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}}class Q0 extends Error{type;code;constructor(e,r){super(e??"The operation was aborted"),this.type="aborted",this.code=r??"ABORT_ERR"}}function ev(t={}){return tv(r=>{const n=r.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},t)}function tv(t,e){e=e??{};let r=e.onEnd,n=new ai,o,s,i,a=Wl();const c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((y,w)=>{s=I=>{s=null,n.push(I);try{y(t(n))}catch(v){w(v)}return o}}):t(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=Wl()})}},l=y=>s!=null?s(y):(n.push(y),o),d=y=>(n=new ai,s!=null?s({error:y}):(n.push({error:y}),o)),u=y=>{if(i)return o;if(e?.objectMode!==!0&&y?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:y})},f=y=>i?o:(i=!0,y!=null?d(y):l({done:!0})),h=()=>(n=new ai,f(),{done:!0}),g=y=>(f(y),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:g,push:u,end:f,get readableLength(){return n.size},onEmpty:async y=>{const w=y?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let I,v;w!=null&&(I=new Promise((A,B)=>{v=()=>{B(new Q0)},w.addEventListener("abort",v)}));try{await Promise.race([a.promise,I])}finally{v!=null&&w!=null&&w?.removeEventListener("abort",v)}}},r==null)return o;const m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(y){return m.throw(y),r!=null&&(r(y),r=void 0),{done:!0}},return(){return m.return(),r!=null&&(r(),r=void 0),{done:!0}},push:u,end(y){return m.end(y),r!=null&&(r(y),r=void 0),o},get readableLength(){return m.readableLength},onEmpty:y=>m.onEmpty(y)},o}class vc extends Error{name="TimeoutError";constructor(e,r){super(e,r),Error.captureStackTrace?.(this,vc)}}const Xl=t=>t.reason??new DOMException("This operation was aborted.","AbortError");function rv(t,e){const{milliseconds:r,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout},signal:i}=e;let a,c;const d=new Promise((u,f)=>{if(typeof r!="number"||Math.sign(r)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${r}\``);if(i?.aborted){f(Xl(i));return}if(i&&(c=()=>{f(Xl(i))},i.addEventListener("abort",c,{once:!0})),t.then(u,f),r===Number.POSITIVE_INFINITY)return;const h=new vc;a=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}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 ${r} milliseconds`,f(h))},r)}).finally(()=>{d.clear(),c&&i&&i.removeEventListener("abort",c)});return d.clear=()=>{s.clearTimeout.call(void 0,a),a=void 0},d}const nv=t=>{const e=t.addEventListener||t.on||t.addListener,r=t.removeEventListener||t.off||t.removeListener;if(!e||!r)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(t),removeListener:r.bind(t)}};function ov(t,e,r){let n;const o=new Promise((s,i)=>{if(r={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...r},!(r.count>=0&&(r.count===Number.POSITIVE_INFINITY||Number.isInteger(r.count))))throw new TypeError("The `count` option should be at least 0 or more");r.signal?.throwIfAborted();const a=[e].flat(),c=[],{addListener:l,removeListener:d}=nv(t),u=async(...h)=>{const g=r.multiArgs?h:h[0];if(r.filter)try{if(!await r.filter(g))return}catch(m){n(),i(m);return}c.push(g),r.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(r.rejectionMultiArgs?h:h[0])};n=()=>{for(const h of a)d(h,u);for(const h of r.rejectionEvents)a.includes(h)||d(h,f)};for(const h of a)l(h,u);for(const h of r.rejectionEvents)a.includes(h)||l(h,f);r.signal&&r.signal.addEventListener("abort",()=>{f(r.signal.reason)},{once:!0}),r.resolveImmediately&&s(c)});if(o.cancel=n,typeof r.timeout=="number"){const s=rv(o,{milliseconds:r.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function sv(t,e,r){typeof r=="function"&&(r={filter:r}),r={...r,count:1,resolveImmediately:!1};const n=ov(t,e,r),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}class ss extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"}class iv extends Error{static name="StreamClosedError";name="StreamClosedError"}function av(t){return t.reason}function gh(t,e,r){if(e==null||t==null)return t;const n=av;if(e.aborted)return t.catch(()=>{}),Promise.reject(n(e));let o;return Promise.race([t,new Promise((s,i)=>{o=()=>{i(n(e))},e.addEventListener("abort",o)})]).finally(()=>{o!=null&&e.removeEventListener("abort",o)})}const cv=Math.pow(2,20)*4;class mh extends vg{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??cv,this.maxWriteBufferLength=e.maxWriteBufferLength,this.maxMessageSize=e.maxMessageSize,this.readBuffer=new re,this.writeBuffer=new re,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 r=()=>{this.writableNeedsDrain&&(this.log.trace("drain event received, continue sending data"),this.writableNeedsDrain=!1,this.processSendQueue()),this.onDrainPromise?.resolve()};this.addEventListener("drain",r);const n=o=>{this.onDrainPromise?.reject(o.error??new iv)};this.addEventListener("close",n)}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()),gh(this.onDrainPromise.promise,e?.signal))}async*[Symbol.asyncIterator](){if(this.readStatus!=="readable"&&this.readStatus!=="paused")return;const e=ev(),r=s=>{e.push(s.data)};this.addEventListener("message",r);const n=s=>{e.end(s.error)};this.addEventListener("close",n);const o=()=>{e.end()};this.addEventListener("remoteCloseWrite",o);try{yield*e}finally{this.removeEventListener("message",r),this.removeEventListener("close",n),this.removeEventListener("remoteCloseWrite",o)}}isReadable(){return this.status==="open"}send(e){if(this.writeStatus==="closed"||this.writeStatus==="closing")throw new pn(`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(r){this.log("failed to send reset to remote - %e",r)}this.dispatchEvent(new jb(e))}}pause(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new pn("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 pn("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 pn(`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 pn(`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 Ob;this.dispatchEvent(new Ub(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 uc))}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 r=this.writeBuffer.byteLength;let n=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 re(s);this.writeBuffer.consume(s.byteLength);const a=this.sendData(s);if(e=a.canSendMore,n+=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",n,r,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 Mb(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 Pl(`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 Pl(`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 lv=4194304;class Yl extends Error{static name="UnwrappedError";name="UnwrappedError"}class wh extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"}class dv extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"}class uv extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"}function fv(t){return typeof t?.closeRead=="function"}function hv(t){return typeof t?.close=="function"}function ci(t){return fv(t)?t.remoteWriteStatus!=="writable"&&t.readBufferLength===0:hv(t)?t.status!=="open":!1}function pv(t){return t?.addEventListener!=null&&t?.removeEventListener!=null&&t?.send!=null&&t?.push!=null&&t?.log!=null}function gv(t,e){const r=e?.maxBufferSize??lv,n=new re;let o,s=!1;if(!pv(t))throw new zf("Argument should be a Stream or a Multiaddr");const i=d=>{if(n.append(d.data),n.byteLength>r){const u=n.byteLength;n.consume(n.byteLength),o?.reject(new Error(`Read buffer overflow - ${u} > ${r}`))}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:n,async read(d){if(s===!0)throw new Yl("Stream was unwrapped");if(ci(t)){if(d?.bytes==null)return null;if(n.byteLength<d.bytes)throw t.log.error("closed after reading %d/%d bytes",n.byteLength,d.bytes),new ss(`Unexpected EOF - stream closed after reading ${n.byteLength}/${d.bytes} bytes`)}const u=d?.bytes??1;for(o=Promise.withResolvers();;){if(n.byteLength>=u){o.resolve();break}if(await gh(o.promise,d?.signal),ci(t)){if(n.byteLength===0&&d?.bytes==null)return null;break}o=Promise.withResolvers()}const f=d?.bytes??n.byteLength;if(n.byteLength<f){if(ci(t))throw t.log.error("closed while reading %d/%d bytes",n.byteLength,f),new ss(`Unexpected EOF - stream closed while reading ${n.byteLength}/${f} bytes`);return l.read(d)}const h=n.sublist(0,f);return n.consume(f),h},async write(d,u){if(s===!0)throw new Yl("Stream was unwrapped");t.send(d)||await sv(t,"drain",{signal:u?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,t.removeEventListener("message",i),t.removeEventListener("close",a),t.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(t.log("stream unwrapped with %d unread bytes",n.byteLength),t.push(n))),t}};return l}function Zl(t,e={}){const r=gv(t,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=gr(e.maxDataLength));const n=e?.lengthDecoder??kf,o=e?.lengthEncoder??xy;return{async read(i){let a=-1;const c=new re;for(;;){const d=await r.read({...i,bytes:1});if(d==null)break;c.append(d);try{a=n(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new wh("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new uv(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new dv(`Message length too long - ${a} > ${e.maxDataLength}`);const l=await r.read({...i,bytes:a});if(l==null)throw t.log.error("tried to read %d bytes but the stream closed",a),new ss(`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 ss(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await r.write(new re(o(i.byteLength),i),a)},async writeV(i,a){const c=new re(...i.flatMap(l=>[o(l.byteLength),l]));await r.write(c,a)},unwrap(){return r.unwrap()}}}const mv=1024*1024*4,wv=1024*1024*4;class yv{buffer;maxBufferSize;lengthDecoder;maxDataLength;encodingLength;constructor(e={}){this.buffer=new re,this.maxBufferSize=e.maxBufferSize??mv,this.maxDataLength=e.maxDataLength??wv,this.lengthDecoder=e.lengthDecoder??kf,this.encodingLength=e.encodingLength??gr}*decode(e){if(this.buffer.append(e),this.buffer.byteLength>this.maxBufferSize)throw new zf(`Buffer length limit exceeded - ${this.buffer.byteLength}/${this.maxBufferSize}`);for(;;){let r;try{r=this.lengthDecoder(this.buffer)}catch(s){if(s instanceof RangeError)break;throw s}if(r<0||r>this.maxDataLength)throw new wh("Invalid message length");const n=this.encodingLength(r),o=n+r;if(this.buffer.byteLength>=o){const s=this.buffer.sublist(n,o);this.buffer.consume(o),s.byteLength>0&&(yield s)}else break}}}var bv={};const Wn=65535,Jl=Wn-16,oo=!!bv?.DUMP_SESSION_KEYS,Ql=16;function ma(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const is=t=>t?`"${t}" `:"";function wa(t,e=""){if(typeof t!="boolean")throw new TypeError(is(e)+"expected boolean, got type="+typeof t);return t}function $r(t,e=""){if(typeof t!="number")throw new TypeError(is(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(is(e)+"expected integer >= 0, got "+t);return t}function ve(t,e,r=""){if(ma(t)&&(e===void 0||t.length===e))return t;e!==void 0&&$r(e,"length");const n=ma(t),o=e!==void 0?` of length ${e}`:"",s=n?`length=${t.length}`:`type=${typeof t}`,i=is(r)+"expected Uint8Array"+o+", got "+s;throw n?new RangeError(i):new TypeError(i)}const ed=(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 td(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function vv(t,e){ve(t,void 0,"output");const r=e.outputLen;if(!(t.length>=r))throw new RangeError('"output" expected length >= '+r)}function bt(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function $t(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function xv(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}const Hr=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Sv(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function Ev(t){for(let e=0;e<t.length;e++)t[e]=Sv(t[e]);return t}const er=Hr?t=>t:Ev;function Av(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 kv(t,e){if(Av(t,e)&&t.byteOffset<e.byteOffset)throw new Error("complex overlap of input and output is not supported")}function Iv(t,e){return ed(t,"defaults"),ed(e,"opts"),Object.assign(t,e)}function Cv(t,e){if(t=ve(t),e=ve(e),t.length!==e.length)return!1;let r=0;for(let n=0;n<t.length;n++)r|=t[n]^e[n];return r===0}function Rv(t,e,r){const n=e,o=(()=>[]),s=(a,c)=>n(c,...o(a)).update(a).digest(),i=n(new Uint8Array(t),...o(new Uint8Array(0)));return s.outputLen=i.outputLen,s.blockLen=i.blockLen,s.create=(a,...c)=>n(a,...c),s}const Tv=(t,e)=>{function r(n,...o){if(ve(n,void 0,"key"),t.nonceLength!==void 0){const u=o[0];ve(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(ma(o[u]))throw new Error("AAD not supported")}t.withAAD&&o[i]!==void 0&&ve(o[i],void 0,"AAD");const a=e(n,...o),c=(u,f)=>{if(f!==void 0){if(u!==2)throw new Error("cipher output not supported");ve(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,ve(u,void 0,"data"),c(a.encrypt.length,f),a.encrypt(u,f)},decrypt(u,f){if(ve(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(r,t),r};function ya(t,e,r=!0){if(e===void 0)return new Uint8Array(t);if(ve(e,t,"output"),r&&!as(e))throw new Error("invalid output, must be aligned");return e}function Pv(t,e,r){$r(t),$r(e),wa(r);const n=new Uint8Array(16),o=xv(n);return o.setBigUint64(0,BigInt(e),r),o.setBigUint64(8,BigInt(t),r),n}function as(t){return t.byteOffset%4===0}function cs(t){return Uint8Array.from(ve(t))}const yh=t=>Uint8Array.from(t.split(""),e=>e.charCodeAt(0)),Nv=er(bt(yh("expand 16-byte k"))),Lv=er(bt(yh("expand 32-byte k")));function ee(t,e){return t<<e|t>>>32-e}const gn=64,Bv=16,ba=2**32-1,rd=Uint32Array.of();function _v(t,e,r,n,o,s,i,a){const c=o.length,l=new Uint8Array(gn),d=bt(l),u=Hr&&as(o)&&as(s),f=u?bt(o):rd,h=u?bt(s):rd;if(!Hr){for(let g=0;g<c;i++){if(t(e,r,n,d,i,a),er(d),i>=ba)throw new Error("arx: counter overflow");const m=Math.min(gn,c-g);for(let y=0,w;y<m;y++)w=g+y,s[w]=o[w]^l[y];g+=m}return}for(let g=0;g<c;i++){if(t(e,r,n,d,i,a),i>=ba)throw new Error("arx: counter overflow");const m=Math.min(gn,c-g);if(u&&m===gn){const y=g/4;if(g%4!==0)throw new Error("arx: invalid block position");for(let w=0,I;w<Bv;w++)I=y+w,h[I]=f[I]^d[w];g+=gn;continue}for(let y=0,w;y<m;y++)w=g+y,s[w]=o[w]^l[y];g+=m}}function Dv(t,e){const{allowShortKeys:r,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=Iv({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof t!="function")throw new Error("core must be a function");return $r(o),$r(i),wa(s),wa(r),(a,c,l,d,u=0)=>{ve(a,void 0,"key"),ve(c,void 0,"nonce"),ve(l,void 0,"data");const f=l.length,h=d!==void 0;if(d=ya(f,d,!1),h&&kv(l,d),$r(u),u<0||u>=ba)throw new Error("arx: counter overflow");const g=[];let m=a.length,y,w;if(m===32)g.push(y=cs(a)),w=Lv;else if(m===16&&r)y=new Uint8Array(32),y.set(a),y.set(a,16),w=Nv,g.push(y);else throw ve(a,32,"arx key"),new Error("invalid key size");(!Hr||!as(c))&&g.push(c=cs(c));let I=bt(y);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");const B=c.subarray(0,16);if(Hr)n(w,I,bt(B),I);else{const T=er(Uint32Array.from(w));n(T,I,bt(B),I),$t(T),er(I)}c=c.subarray(16)}else Hr||er(I);const v=16-o;if(v!==c.length)throw new Error(`arx: nonce must be ${v} or 16 bytes`);if(v!==12){const B=new Uint8Array(12);B.set(c,s?0:12-c.length),c=B,g.push(c)}const A=er(bt(c));try{return _v(t,w,I,A,l,d,u,i),d}finally{$t(...g)}}}function Se(t,e){return t[e++]&255|(t[e++]&255)<<8}class Fv{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=cs(ve(e,32,"key"));const r=Se(e,0),n=Se(e,2),o=Se(e,4),s=Se(e,6),i=Se(e,8),a=Se(e,10),c=Se(e,12),l=Se(e,14);this.r[0]=r&8191,this.r[1]=(r>>>13|n<<3)&8191,this.r[2]=(n>>>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]=Se(e,16+2*d)}process(e,r,n=!1){const o=n?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],y=i[9],w=Se(e,r+0),I=Se(e,r+2),v=Se(e,r+4),A=Se(e,r+6),B=Se(e,r+8),T=Se(e,r+10),N=Se(e,r+12),k=Se(e,r+14);let x=s[0]+(w&8191),S=s[1]+((w>>>13|I<<3)&8191),R=s[2]+((I>>>10|v<<6)&8191),P=s[3]+((v>>>7|A<<9)&8191),b=s[4]+((A>>>4|B<<12)&8191),E=s[5]+(B>>>1&8191),C=s[6]+((B>>>14|T<<2)&8191),L=s[7]+((T>>>11|N<<5)&8191),M=s[8]+((N>>>8|k<<8)&8191),$=s[9]+(k>>>5|o),j=0,D=j+x*a+S*(5*y)+R*(5*m)+P*(5*g)+b*(5*h);j=D>>>13,D&=8191,D+=E*(5*f)+C*(5*u)+L*(5*d)+M*(5*l)+$*(5*c),j+=D>>>13,D&=8191;let _=j+x*c+S*a+R*(5*y)+P*(5*m)+b*(5*g);j=_>>>13,_&=8191,_+=E*(5*h)+C*(5*f)+L*(5*u)+M*(5*d)+$*(5*l),j+=_>>>13,_&=8191;let F=j+x*l+S*c+R*a+P*(5*y)+b*(5*m);j=F>>>13,F&=8191,F+=E*(5*g)+C*(5*h)+L*(5*f)+M*(5*u)+$*(5*d),j+=F>>>13,F&=8191;let q=j+x*d+S*l+R*c+P*a+b*(5*y);j=q>>>13,q&=8191,q+=E*(5*m)+C*(5*g)+L*(5*h)+M*(5*f)+$*(5*u),j+=q>>>13,q&=8191;let H=j+x*u+S*d+R*l+P*c+b*a;j=H>>>13,H&=8191,H+=E*(5*y)+C*(5*m)+L*(5*g)+M*(5*h)+$*(5*f),j+=H>>>13,H&=8191;let K=j+x*f+S*u+R*d+P*l+b*c;j=K>>>13,K&=8191,K+=E*a+C*(5*y)+L*(5*m)+M*(5*g)+$*(5*h),j+=K>>>13,K&=8191;let z=j+x*h+S*f+R*u+P*d+b*l;j=z>>>13,z&=8191,z+=E*c+C*a+L*(5*y)+M*(5*m)+$*(5*g),j+=z>>>13,z&=8191;let W=j+x*g+S*h+R*f+P*u+b*d;j=W>>>13,W&=8191,W+=E*l+C*c+L*a+M*(5*y)+$*(5*m),j+=W>>>13,W&=8191;let X=j+x*m+S*g+R*h+P*f+b*u;j=X>>>13,X&=8191,X+=E*d+C*l+L*c+M*a+$*(5*y),j+=X>>>13,X&=8191;let G=j+x*y+S*m+R*g+P*h+b*f;j=G>>>13,G&=8191,G+=E*u+C*d+L*l+M*c+$*a,j+=G>>>13,G&=8191,j=(j<<2)+j|0,j=j+D|0,D=j&8191,j=j>>>13,_+=j,s[0]=D,s[1]=_,s[2]=F,s[3]=q,s[4]=H,s[5]=K,s[6]=z,s[7]=W,s[8]=X,s[9]=G}finalize(){const{h:e,pad:r}=this,n=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,n[0]=e[0]+5,o=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=e[a]+o,o=n[a]>>>13,n[a]&=8191;n[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)n[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|n[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]+r[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+r[a]|0)+(i>>>16)|0,e[a]=i&65535;$t(n)}update(e){td(this),ve(e),e=cs(e);const{buffer:r,blockLen:n}=this,o=e.length;for(let s=0;s<o;){const i=Math.min(n-this.pos,o-s);if(i===n){for(;n<=o-s;s+=n)this.process(e,s);continue}r.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===n&&(this.process(r,0,!1),this.pos=0)}return this}destroy(){this.destroyed=!0,$t(this.h,this.r,this.buffer,this.pad)}digestInto(e){td(this),vv(e,this),this.finished=!0;const{buffer:r,h:n}=this;let{pos:o}=this;if(o){for(r[o++]=1;o<16;o++)r[o]=0;this.process(r,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=n[i]>>>0,e[s++]=n[i]>>>8}digest(){const{buffer:e,outputLen:r}=this;this.digestInto(e);const n=e.slice(0,r);return this.destroy(),n}}const Ov=Rv(32,t=>new Fv(t));function Mv(t,e,r,n,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],y=e[6],w=e[7],I=o,v=r[0],A=r[1],B=r[2],T=i,N=a,k=c,x=l,S=d,R=u,P=f,b=h,E=g,C=m,L=y,M=w,$=I,j=v,D=A,_=B;for(let q=0;q<s;q+=2)T=T+S|0,$=ee($^T,16),E=E+$|0,S=ee(S^E,12),T=T+S|0,$=ee($^T,8),E=E+$|0,S=ee(S^E,7),N=N+R|0,j=ee(j^N,16),C=C+j|0,R=ee(R^C,12),N=N+R|0,j=ee(j^N,8),C=C+j|0,R=ee(R^C,7),k=k+P|0,D=ee(D^k,16),L=L+D|0,P=ee(P^L,12),k=k+P|0,D=ee(D^k,8),L=L+D|0,P=ee(P^L,7),x=x+b|0,_=ee(_^x,16),M=M+_|0,b=ee(b^M,12),x=x+b|0,_=ee(_^x,8),M=M+_|0,b=ee(b^M,7),T=T+R|0,_=ee(_^T,16),L=L+_|0,R=ee(R^L,12),T=T+R|0,_=ee(_^T,8),L=L+_|0,R=ee(R^L,7),N=N+P|0,$=ee($^N,16),M=M+$|0,P=ee(P^M,12),N=N+P|0,$=ee($^N,8),M=M+$|0,P=ee(P^M,7),k=k+b|0,j=ee(j^k,16),E=E+j|0,b=ee(b^E,12),k=k+b|0,j=ee(j^k,8),E=E+j|0,b=ee(b^E,7),x=x+S|0,D=ee(D^x,16),C=C+D|0,S=ee(S^C,12),x=x+S|0,D=ee(D^x,8),C=C+D|0,S=ee(S^C,7);let F=0;n[F++]=i+T|0,n[F++]=a+N|0,n[F++]=c+k|0,n[F++]=l+x|0,n[F++]=d+S|0,n[F++]=u+R|0,n[F++]=f+P|0,n[F++]=h+b|0,n[F++]=g+E|0,n[F++]=m+C|0,n[F++]=y+L|0,n[F++]=w+M|0,n[F++]=I+$|0,n[F++]=v+j|0,n[F++]=A+D|0,n[F++]=B+_|0}const jv=Dv(Mv,{counterRight:!1,counterLength:4,allowShortKeys:!1}),Uv=new Uint8Array(16),nd=(t,e)=>{t.update(e);const r=e.length%16;r&&t.update(Uv.subarray(r))},$v=new Uint8Array(32);function od(t,e,r,n,o){o!==void 0&&ve(o,void 0,"AAD");const s=t(e,r,$v),i=Pv(n.length,o?o.length:0,!0),a=Ov.create(s);o&&nd(a,o),nd(a,n),a.update(i);const c=a.digest();return $t(s,i),c}const Hv=t=>(e,r,n)=>({encrypt(s,i){const a=s.length;i=ya(a+16,i,!1),i.set(s);const c=i.subarray(0,-16);t(e,r,c,c,1);const l=od(t,e,r,c,n);return i.set(l,a),$t(l),i},decrypt(s,i){i=ya(s.length-16,i,!1);const a=s.subarray(0,-16),c=s.subarray(-16),l=od(t,e,r,a,n);if(!Cv(c,l))throw $t(l),new Error("invalid tag");return i.set(s.subarray(0,-16)),t(e,r,i,i,1),$t(l),i}}),sd=Tv({blockSize:64,nonceLength:12,tagLength:16,withAAD:!0},Hv(jv));function qv(t,e,r){return fc(t),r===void 0&&(r=new Uint8Array(t.outputLen)),ph(t,r,e)}const mn=Uint8Array.of(0),Kv=Uint8Array.of();function zv(t,e,r,n=32,o){fc(t),It(n,"length"),Ct(e,void 0,"prk");const s=t.outputLen;if(e.length<s)throw new Error('"prk" must be at least HashLen octets');if(n>255*s)throw new Error("Length must be <= 255*HashLen");const i=Math.ceil(n/s);if(r===void 0?r=Kv:Ct(r,void 0,"info"),!i)return new Uint8Array;const a=new Uint8Array(i*s),{iHash:c,oHash:l}=ph.create(t,e),d=new Uint8Array(s),u=i>1?t.create():void 0;for(let h=0;h<i-1;h++){mn[0]=h+1;const g=c._cloneInto(u);h&&g.update(d),g.update(r).update(mn).digestInto(d),l._cloneInto(u).update(d).digestInto(d),a.set(d,s*h)}if(mn[0]=i,i>1&&c.update(d),c.update(r).update(mn).digestInto(d),l.update(d).digestInto(d),a.set(d,s*(i-1)),c.destroy(),l.destroy(),u?.destroy(),d!==a&&nr(d),nr(mn),n===a.length)return a;const f=a.slice(0,n);return nr(a),f}const bh={hashSHA256(t){return oi(t.subarray())},getHKDF(t,e){const r=qv(oi,e,t),o=zv(oi,r,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=Ao.utils.randomSecretKey();return{publicKey:Ao.getPublicKey(t),privateKey:t}},generateX25519KeyPairFromSeed(t){return{publicKey:Ao.getPublicKey(t),privateKey:t}},generateX25519SharedKey(t,e){return Ao.getSharedSecret(t.subarray(),e.subarray())},chaCha20Poly1305Encrypt(t,e,r,n){return sd(n,e,r).encrypt(t.subarray())},chaCha20Poly1305Decrypt(t,e,r,n,o){return sd(n,e,r).decrypt(t.subarray(),o)}},Vv=bh;function Wv(t){return{generateKeypair:t.generateX25519KeyPair,dh:(e,r)=>t.generateX25519SharedKey(e.privateKey,r).subarray(0,32),encrypt:t.chaCha20Poly1305Encrypt,decrypt:t.chaCha20Poly1305Decrypt,hash:t.hashSHA256,hkdf:t.getHKDF}}const ls=t=>{const e=At(2);return e[0]=t>>8,e[1]=t,e};ls.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 Gv(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 vh(t,e){!e.enabled||!oo||(t?(e(`LOCAL_STATIC_PUBLIC_KEY ${J(t.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${J(t.privateKey,"hex")}`)):e("Missing local static keys."))}function xh(t,e){!e.enabled||!oo||(t?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${J(t.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${J(t.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function Xv(t,e){!e.enabled||!oo||e(t?`REMOTE_STATIC_PUBLIC_KEY ${J(t.subarray(),"hex")}`:"Missing remote static public key.")}function Sh(t,e){!e.enabled||!oo||e(t?`REMOTE_EPHEMERAL_PUBLIC_KEY ${J(t.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function Eh(t,e,r){!r.enabled||!oo||(r(`CIPHER_STATE_1 ${t.n.getUint64()} ${t.k&&J(t.k,"hex")}`),r(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&J(e.k,"hex")}`))}class On extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=On.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"}const Yv=0,Zv=4294967295,Jv="Cipherstate has reached maximum n, a new handshake must be performed";class Qv{n;bytes;view;constructor(e=Yv){this.n=e,this.bytes=Be(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>Zv)throw new Error(Jv)}}const qr=Be(0);class ko{k;n;crypto;constructor(e,r=void 0,n=0){this.crypto=e,this.k=r,this.n=new Qv(n)}hasKey(){return!!this.k}encryptWithAd(e,r){if(!this.hasKey())return r;this.n.assertValue();const n=this.crypto.encrypt(r,this.n.getBytes(),e,this.k);return this.n.increment(),n}decryptWithAd(e,r,n){if(!this.hasKey())return r;this.n.assertValue();const o=this.crypto.decrypt(r,this.n.getBytes(),e,this.k,n);return this.n.increment(),o}}class ex{cs;ck;h;crypto;constructor(e,r){this.crypto=e;const n=we(r,"utf-8");this.h=rx(e,n),this.ck=this.h,this.cs=new ko(e)}mixKey(e){const[r,n]=this.crypto.hkdf(this.ck,e);this.ck=r,this.cs=new ko(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new re(this.h,e))}encryptAndHash(e){const r=this.cs.encryptWithAd(this.h,e);return this.mixHash(r),r}decryptAndHash(e){const r=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),r}split(){const[e,r]=this.crypto.hkdf(this.ck,qr);return[new ko(this.crypto,e),new ko(this.crypto,r)]}}class tx{ss;s;e;rs;re;initiator;crypto;constructor(e){const{crypto:r,protocolName:n,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=r,this.ss=new ex(r,n),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,r=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<r+32)throw new Error("message is not long enough");this.re=e.sublist(r,r+32),this.ss.mixHash(this.re)}readS(e,r=0){if(this.rs)throw new Error("remote static public key is already set");const n=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<r+n)throw new Error("message is not long enough");const o=e.sublist(r,r+n);return this.rs=this.ss.decryptAndHash(o),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}}class Ah extends tx{writeMessageA(e){return new re(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){const r=this.writeE();this.writeEE();const n=this.writeS();return this.writeES(),new re(r,n,this.ss.encryptAndHash(e))}writeMessageC(e){const r=this.writeS();return this.writeSE(),new re(r,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(r){throw new On(`handshake stage 0 validation fail: ${r.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();const r=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+r))}catch(r){throw new On(`handshake stage 1 validation fail: ${r.message}`)}}readMessageC(e){try{const r=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(r))}catch(r){throw new On(`handshake stage 2 validation fail: ${r.message}`)}}}function rx(t,e){if(e.length<=32){const r=Be(32);return r.set(e),r}else return t.hash(e)}var us;(function(t){let e;t.codec=()=>(e==null&&(e=Ps((r,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),r.webtransportCerthashes!=null)for(const s of r.webtransportCerthashes)n.uint32(10),n.bytes(s);if(r.streamMuxers!=null)for(const s of r.streamMuxers)n.uint32(18),n.string(s);o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={webtransportCerthashes:[],streamMuxers:[]},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{if(o.limits?.webtransportCerthashes!=null&&s.webtransportCerthashes.length===o.limits.webtransportCerthashes)throw new Il('Decode error - map field "webtransportCerthashes" had too many elements');s.webtransportCerthashes.push(r.bytes());break}case 2:{if(o.limits?.streamMuxers!=null&&s.streamMuxers.length===o.limits.streamMuxers)throw new Il('Decode error - map field "streamMuxers" had too many elements');s.streamMuxers.push(r.string());break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>Ts(r,t.codec()),t.decode=(r,n)=>Rs(r,t.codec(),n)})(us||(us={}));var fs;(function(t){let e;t.codec=()=>(e==null&&(e=Ps((r,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),r.identityKey!=null&&r.identityKey.byteLength>0&&(n.uint32(10),n.bytes(r.identityKey)),r.identitySig!=null&&r.identitySig.byteLength>0&&(n.uint32(18),n.bytes(r.identitySig)),r.extensions!=null&&(n.uint32(34),us.codec().encode(r.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={identityKey:Be(0),identitySig:Be(0)},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{s.identityKey=r.bytes();break}case 2:{s.identitySig=r.bytes();break}case 4:{s.extensions=us.codec().decode(r,r.uint32(),{limits:o.limits?.extensions});break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>Ts(r,t.codec()),t.decode=(r,n)=>Rs(r,t.codec(),n)})(fs||(fs={}));async function kh(t,e,r){const n=await t.sign(Ch(e));return fs.encode({identityKey:Ns(t.publicKey),identitySig:n,extensions:r})}async function Ih(t,e,r){try{const n=fs.decode(t),o=fa(n.identityKey);if(r?.equals(o)===!1)throw new Error(`Payload identity key ${o} does not match expected remote identity key ${r}`);if(!e)throw new Error("Remote static does not exist");const s=Ch(e);if(!await o.verify(s,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new hg(n.message)}}function Ch(t){const e=we("noise-libp2p-static-key:");return t instanceof Uint8Array?ta([e,t],e.length+t.length):(t.prepend(e),t)}class nx extends mh{stream;handshake;metrics;decoder;constructor(e,r,n){super({log:e.log,inactivityTimeout:e.inactivityTimeout,maxReadBufferLength:e.maxReadBufferLength,direction:e.direction}),this.stream=e,this.handshake=r,this.metrics=n,this.decoder=new yv({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 r=new re;for(let n=0;n<e.byteLength;n+=Jl){let o=n+Jl;o>e.byteLength&&(o=e.byteLength);let s;e instanceof Uint8Array?s=this.handshake.encrypt(e.subarray(n,o)):s=this.handshake.encrypt(e.sublist(n,o)),this.metrics?.encryptedPackets.increment(),r.append(ls(s.byteLength)),r.append(s)}return r}decrypt(e){const r=new re;for(let n=0;n<e.byteLength;n+=Wn){let o=n+Wn;if(o>e.byteLength&&(o=e.byteLength),o-Ql<n)throw new Error("Invalid chunk");let s;e instanceof Uint8Array?s=e.subarray(n,o):s=e.sublist(n,o);const i=e.subarray(n,o-Ql);try{const a=this.handshake.decrypt(s,i);this.metrics?.decryptedPackets.increment(),r.append(a)}catch(a){throw this.metrics?.decryptErrors.increment(),a}}return r}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 id(t,e,r){return new nx(t,e,r)}async function ox(t,e){const{log:r,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await kh(s,a.publicKey,l),u=new Ah({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:i,s:a});vh(u.s,r),r.trace("Stage 0 - Initiator starting to send first message."),await n.write(u.writeMessageA(qr),e),r.trace("Stage 0 - Initiator finished sending first message."),xh(u.e,r),r.trace("Stage 1 - Initiator waiting to receive first message from responder...");const f=u.readMessageB(await n.read(e));r.trace("Stage 1 - Initiator received the message."),Sh(u.re,r),Xv(u.rs,r),r.trace("Initiator going to check remote's signature...");const h=await Ih(f,u.rs,c);r.trace("All good with the signature!"),r.trace("Stage 2 - Initiator sending third handshake message."),await n.write(u.writeMessageC(d),e),r.trace("Stage 2 - Initiator sent message with signed payload.");const[g,m]=u.ss.split();return Eh(g,m,r),{payload:h,encrypt:y=>g.encryptWithAd(qr,y),decrypt:(y,w)=>m.decryptWithAd(qr,y,w)}}async function sx(t,e){const{log:r,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await kh(s,a.publicKey,l),u=new Ah({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:i,s:a});vh(u.s,r),r.trace("Stage 0 - Responder waiting to receive first message."),u.readMessageA(await n.read(e)),r.trace("Stage 0 - Responder received first message."),Sh(u.re,r),r.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await n.write(u.writeMessageB(d),e),r.trace("Stage 1 - Responder sent the second handshake message with signed payload."),xh(u.e,r),r.trace("Stage 2 - Responder waiting for third handshake message...");const f=u.readMessageC(await n.read(e));r.trace("Stage 2 - Responder received the message, finished handshake.");const h=await Ih(f,u.rs,c),[g,m]=u.ss.split();return Eh(g,m,r),{payload:h,encrypt:y=>m.encryptWithAd(qr,y),decrypt:(y,w)=>g.decryptWithAd(qr,y,w)}}class ix{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;log;constructor(e,r={}){const{staticNoiseKey:n,extensions:o,crypto:s,prologueBytes:i}=r,{metrics:a}=e;this.components=e,this.log=e.logger.forComponent("libp2p:noise");const c=s??Vv;this.crypto=Wv(c),this.extensions={webtransportCerthashes:[],...o},this.metrics=a?Gv(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??Be(0)}[Symbol.toStringTag]="@chainsafe/libp2p-noise";[xg]=["@libp2p/connection-encryption","@chainsafe/libp2p-noise"];async secureOutbound(e,r){const n=e.log?.newScope("noise")??this.log,o=Zl(e,{lengthEncoder:ls,lengthDecoder:ds,maxDataLength:Wn}),s=await this.performHandshakeInitiator(o,this.components.privateKey,n,r?.remotePeer?.publicKey,r),i=fa(s.payload.identityKey);return{connection:id(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:Xr(i),streamMuxer:r?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}getStreamMuxer(e){if(e==null||e.length===0)return;const r=this.components.upgrader.getStreamMuxers();if(r!=null)for(const n of e){const o=r.get(n);if(o!=null)return o}if(e.length)throw new pg("Early muxer negotiation was requested but the initiator and responder had no common muxers")}async secureInbound(e,r){const n=e.log?.newScope("noise")??this.log,o=Zl(e,{lengthEncoder:ls,lengthDecoder:ds,maxDataLength:Wn}),s=await this.performHandshakeResponder(o,this.components.privateKey,n,r?.remotePeer?.publicKey,r),i=fa(s.payload.identityKey);return{connection:id(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:Xr(i),streamMuxer:r?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}async performHandshakeInitiator(e,r,n,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await ox({connection:e,privateKey:r,remoteIdentityKey:o,log:n.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,r,n,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await sx({connection:e,privateKey:r,remoteIdentityKey:o,log:n.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 ax(t={}){return e=>new ix(e,t)}const cx="termdock-e2ee-v1",ad=3600*1e3,cd=512*1024*1024,va=4*1024*1024,Do=()=>{},_s=Object.assign(Do,{enabled:!1,error:Do,trace:Do,newScope:()=>_s});Object.freeze(_s);async function Rh(){const t=await Ib();return{privateKey:t,peerId:Xr(t.publicKey).toString()}}function lx(t){return btoa(String.fromCharCode(...Tb(t.privateKey)))}function ld(t){if(t.length>512||!/^[A-Za-z0-9+/]+={0,2}$/.test(t))throw new Error("Invalid identity encoding");const e=Rb(Uint8Array.from(atob(t),r=>r.charCodeAt(0)));if(e.type!=="Ed25519")throw new Error("Only Ed25519 device identities are supported");return{privateKey:e,peerId:Xr(e.publicKey).toString()}}class Th{constructor(e=Do){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>va)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(r=>{this.wake=r})}}}}class dx extends mh{constructor(e,r){super({log:_s,direction:r?"outbound":"inbound",maxReadBufferLength:va,maxWriteBufferLength:va}),this.duplex=e,this.finished=e.sink(this.outgoing).catch(n=>{this.abort(Yr(n))}),this.readTransport()}duplex;outgoing=new Th(()=>this.onMuxerDrain());finished;async readTransport(){try{for await(const e of this.duplex.source)this.onData(e.slice());this.onTransportClosed()}catch(e){this.onTransportClosed(Yr(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 Yr(t){return t instanceof Error?t:new Error("Secure transport failed")}class ux extends Error{code="E2EE_REHANDSHAKE_REQUIRED";constructor(){super("Encrypted connection lifetime reached; establish a new handshake without replaying pending input")}}function fx(t){const e=t?.maxAgeMs??ad,r=t?.maxBytesPerDirection??cd;if(!Number.isSafeInteger(e)||e<=0||e>ad||!Number.isSafeInteger(r)||r<=0||r>cd)throw new Error("Encrypted connection limits cannot exceed the production maximum");return{maxAgeMs:e,maxBytesPerDirection:r}}async function hx(t){const{identity:e,duplex:r,initiator:n,targetPinnedPeerId:o,signal:s}=t,i=fx(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(n&&!o)throw new Error("A pinned target identity is required");const a=o?Bb(o):void 0;if(a&&a.type!=="Ed25519")throw new Error("Only Ed25519 target identities are supported");if(e.peerId!==Xr(e.privateKey.publicKey).toString())throw new Error("Local identity mismatch");if(s?.aborted)throw s.reason??new Error("Connection aborted");const c=new dx(r,n),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(Yr(s?.reason))};s?.addEventListener("abort",u,{once:!0}),c.addEventListener("close",()=>s?.removeEventListener("abort",u),{once:!0});const f=ax({crypto:bh,prologueBytes:new TextEncoder().encode(cx)})({privateKey:e.privateKey,peerId:Xr(e.privateKey.publicKey),logger:{forComponent:()=>_s},upgrader:{getStreamMuxers:()=>new Map}});try{const h=await(n?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:px(h.connection,i)}}catch(h){throw c.abort(Yr(h)),h}finally{clearTimeout(d),s?.removeEventListener("abort",u)}}function px(t,e){const r=new Th,n=performance.now(),o=Date.now();let s=0,i=0,a;const c=()=>(a??=new ux,r.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()-n,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,r.push(f.data.subarray())}catch(h){t.abort(Yr(h))}}),t.addEventListener("close",f=>{clearTimeout(l),r.end(f.error)},{once:!0});let u=!1;return{source:r,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(Yr(h)),h}},close(f){f?t.abort(f):t.close()}}}class xc{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(r=>{this.wake=r}),this.wake=void 0}}}const li=2*1024*1024,gx=new TextEncoder,mx=new TextDecoder("utf-8",{fatal:!0});class wx{constructor(e){this.duplex=e;const r=this;this.done=e.sink((async function*(){for await(const n of r.outgoing)try{yield n}finally{r.outgoingBytes-=n.byteLength}})()),this.done.catch(n=>this.close(n instanceof Error?n:new Error("Transport failed")))}duplex;outgoing=new xc(256);outgoingBytes=0;done;send(e){const r=gx.encode(JSON.stringify(e));if(r.length>li)throw new Error("Record too large");const n=new Uint8Array(r.length+4);if(new DataView(n.buffer).setUint32(0,r.length),n.set(r,4),this.outgoingBytes+n.byteLength>4*1024*1024)throw new Error("Record queue byte budget exceeded");this.outgoingBytes+=n.byteLength;try{this.outgoing.push(n)}catch(o){throw this.outgoingBytes-=n.byteLength,o}}close(e){this.outgoing.end(e),this.duplex.close?.(e)}async*read(){let e=new Uint8Array(0);for await(const r of this.duplex.source){if(e.length+r.length>li*2+8)throw new Error("Record buffer exceeded");const n=new Uint8Array(e.length+r.length);for(n.set(e),n.set(r,e.length),e=n;e.length>=4;){const o=new DataView(e.buffer,e.byteOffset,4).getUint32(0);if(o>li||o===0)throw new Error("Invalid record size");if(e.length<o+4)break;const s=JSON.parse(mx.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 Ph(t){let e="";for(let r=0;r<t.length;r+=8192)e+=String.fromCharCode(...t.subarray(r,r+8192));return btoa(e)}function Nh(t){const e=atob(t);return Uint8Array.from(e,r=>r.charCodeAt(0))}function yx(t){const e=new xc(64);t.binaryType="arraybuffer";const r=n=>{e.end(n),t.close(1e3)};return t.addEventListener("message",n=>{try{if(!(n.data instanceof ArrayBuffer)||n.data.byteLength>1024*1024)throw new Error("Invalid encrypted frame");e.push(new Uint8Array(n.data))}catch{r(new Error("Encrypted transport rejected frame"))}}),t.addEventListener("close",()=>e.end()),t.addEventListener("error",()=>e.end(new Error("Encrypted transport disconnected"))),{source:e,close:r,async sink(n){try{for await(const o of n)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 r(o instanceof Error?o:new Error("Encrypted transport failed")),o}}}}const Lh=8,Bh=128,bx=5*1024*1024,vx=Bh+Lh+8,xx=256,Io=3e4,wn=64*1024;function Mt(t){return t instanceof Error?t:new Error(String(t??"Secure connection closed"))}function dd(t){if(!t.startsWith("/")||t.startsWith("//")||t.includes("#"))throw new Error("A local API path is required");return t}class _h extends EventTarget{constructor(e,r,n){super(),this.url=e,this.transmit=r,this.disconnect=n}url;transmit;disconnect;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;binaryType="arraybuffer";bufferedAmount=0;protocol="termdock-e2ee-v1";extensions="";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,r=""){this.readyState!==3&&(this.disconnect(),this.finish(e,r))}accept(e){if(this.readyState!==3)if(e.type==="ws-ready"){this.readyState=1;const r=new Event("open");this.dispatchEvent(r),this.onopen?.(r)}else if(e.type==="ws-data"&&typeof e.data=="string"){const r=new MessageEvent("message",{data:e.data});this.dispatchEvent(r),this.onmessage?.(r)}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(Mt(e.error))}fail(e){if(this.readyState===3)return;const r=new Event("error");this.dispatchEvent(r),this.onerror?.(r),this.finish(1006,e.message)}finish(e,r){if(this.readyState===3)return;this.readyState=3;const n=new CloseEvent("close",{code:e,reason:r,wasClean:e===1e3});this.dispatchEvent(n),this.onclose?.(n)}}class Sx{constructor(e,r,n){this.channel=e,this.identity=r,this.targetPeerId=n,this.read().catch(o=>this.close(Mt(o))),e.done.catch(o=>this.close(Mt(o)))}channel;identity;targetPeerId;pending=new Map;waiting=[];stopped=!1;closeReason;get canSwitchTransport(){return![...this.pending.values()].some(e=>e.kind==="http")&&!this.waiting.some(e=>e.kind==="http")}get closed(){return this.stopped}hasCapacity(e){if(this.pending.size>=vx)return!1;const r=[...this.pending.values()].filter(n=>n.kind===e).length;return e==="http"?r<Lh:e==="socket"?r<Bh:!0}allocate(e){if(this.stopped)throw this.closeReason??new Error("Secure connection closed");const r=crypto.randomUUID(),n=new xc(4);return this.pending.set(r,{queue:n,kind:e}),{id:r,queue:n}}reserve(e,r){return r?.aborted?Promise.reject(r.reason):this.stopped?Promise.reject(this.closeReason??new Error("Secure connection closed")):this.hasCapacity(e)?Promise.resolve(this.allocate(e)):this.waiting.length>=xx?Promise.reject(new Error("连接繁忙,请稍后重试。")):new Promise((n,o)=>{const s=l=>{this.waiting=this.waiting.filter(d=>d!==c),c.cleanup(),o(l)},i=()=>s(r?.reason??new Error("Request aborted")),a=setTimeout(()=>s(new Error("连接等待超时,请重试。")),Io),c={kind:e,resolve:n,reject:o,cleanup:()=>{clearTimeout(a),r?.removeEventListener("abort",i)}};this.waiting.push(c),r?.addEventListener("abort",i,{once:!0})})}dispatchWaiting(){if(!this.stopped)for(let e=0;e<this.waiting.length;){const r=this.waiting[e];if(!this.hasCapacity(r.kind)){e++;continue}this.waiting.splice(e,1),r.cleanup(),r.resolve(this.allocate(r.kind))}}async read(){try{for await(const e of this.channel.read()){const r=this.pending.get(e.id);r&&(r.socket?(r.socket.accept(e),(e.type==="ws-close"||e.type==="error")&&this.release(e.id)):(r.queue.push(e),(e.type==="end"||e.type==="error")&&(r.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,r){const{id:n,queue:o}=await this.reserve("request"),s=setTimeout(()=>this.close(new Error("Secure connection timed out")),Math.max(1e3,Math.min(Io,r?.timeoutMs??Io)));try{if(this.stopped)throw this.closeReason;this.channel.send({...e,id:n});const i=(await o[Symbol.asyncIterator]().next()).value;if(!i)throw new Error("Secure request closed");if(i.type==="error")throw Mt(i.error);return i}finally{clearTimeout(s),this.release(n)}}openSocket(e){dd(e);let r;const n=new AbortController,o=new _h(e,s=>{r&&this.channel.send({id:r,type:"ws-data",data:s})},()=>{if(n.abort(),r)try{this.channel.send({id:r,type:"ws-close"})}finally{this.release(r)}});return this.reserve("socket",n.signal).then(s=>{if(r=s.id,o.readyState===3){this.release(r);return}const i=this.pending.get(r);if(!i)throw new Error("Secure connection closed");i.socket=o,this.channel.send({id:r,type:"ws-open",path:e})}).catch(s=>{r&&this.release(r),o.fail(Mt(s))}),o}async fetch(e,r){const n=typeof location>"u"?"https://termdock.invalid":location.origin,o=e instanceof Request?e:null,s=new URL(o?.url??String(e),n);if(s.origin!==n)throw new Error("Only current-service API requests are supported");const i=new Request(s,o?new Request(o,r):r),a=i.method.toUpperCase(),c=dd(s.pathname+s.search),l=s.pathname==="/api/terminal/fs/upload"?110*1024*1024:bx;if(i.signal.aborted)throw i.signal.reason;const d={};i.headers.forEach((A,B)=>{["cookie","authorization","host","connection","content-length"].includes(B)||(d[B]=A)});const{id:u,queue:f}=await this.reserve("http",i.signal),h=f[Symbol.asyncIterator]();let g;const m=()=>{g?.cancel().catch(()=>{})},y=this.pending.get(u);if(!y)throw new Error("Secure connection closed");y.cancelUpload=m;const w=()=>{m();try{this.channel.send({id:u,type:"cancel"})}catch{}f.end(Mt(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)},v=async()=>{let A;try{const B=(await Promise.race([h.next(),new Promise((T,N)=>{A=setTimeout(()=>N(new Error("服务响应超时,请重试。")),Io)})])).value;if(!B)throw new Error("Secure response ended unexpectedly");if(B.type==="error")throw Mt(B.error);return B}finally{clearTimeout(A)}};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 k=i.body.getReader();g=k;let x=0,S=0;try{for(;;){const{done:R,value:P}=await k.read();if(R)break;if(x+=P.byteLength,x>l)throw new Error("Request body exceeds upload limit");for(let b=0;b<P.byteLength;b+=wn){if(this.channel.send({id:u,type:"upload",data:Ph(P.subarray(b,b+wn))}),(await v()).type!=="upload-ack")throw new Error("Invalid upload acknowledgement");S+=Math.min(wn,P.byteLength-b),r?.onUploadProgress?.(S)}}}catch(R){throw await k.cancel(R).catch(()=>{}),R}finally{g=void 0,k.releaseLock()}}if(i.signal.aborted||this.stopped)throw new Error("Request aborted");this.channel.send({id:u,type:"upload-end"});const A=await v();if(A.type!=="head"||typeof A.status!="number")throw new Error("Invalid response header");const B=new Headers(A.headers);if(a==="HEAD"||[204,205,304].includes(A.status)){if((await v()).type!=="end")throw new Error("Unexpected response body");return I(),new Response(null,{status:A.status,headers:B})}let T=!1;const N=new ReadableStream({pull:async k=>{try{T&&(this.channel.send({id:u,type:"ack"}),T=!1);const x=await v();if(x.type==="end"){k.close(),I();return}if(x.type!=="chunk"||typeof x.data!="string")throw new Error("Invalid response chunk");const S=Nh(x.data);if(S.length>wn)throw new Error("Response chunk exceeds budget");k.enqueue(S),T=!0}catch(x){k.error(x),w(),I()}},cancel:()=>{w(),I()}},{highWaterMark:wn,size:k=>k.byteLength});return new Response(N,{status:A.status,headers:B})}catch(A){throw w(),I(),A}}close(e=new Error("Secure connection closed")){if(!this.stopped){this.stopped=!0,this.closeReason=e;for(const r of this.waiting.splice(0))r.cleanup(),r.reject(e);for(const r of this.pending.values())r.queue.end(e),r.cancelUpload?.(),r.socket?.fail(e);this.pending.clear(),this.channel.close(e)}}}async function cr(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 r=t.identity??await Rh(),n=(t.socketFactory??(c=>new WebSocket(c)))(e.href),o=yx(n),s=new AbortController,i=setTimeout(()=>s.abort(new Error("Secure handshake timed out")),2e4),a=t.signal?AbortSignal.any([t.signal,s.signal]):s.signal;try{await new Promise((d,u)=>{if(a.aborted){u(a.reason);return}const f=()=>{a.removeEventListener("abort",m),n.removeEventListener("open",h),n.removeEventListener("error",g),n.removeEventListener("close",g)},h=()=>{f(),d()},g=()=>{f(),u(new Error("Secure transport unavailable"))},m=()=>{f(),u(a.reason)};a.addEventListener("abort",m,{once:!0}),n.addEventListener("open",h),n.addEventListener("error",g),n.addEventListener("close",g),n.readyState===1&&h()});const c=await hx({identity:r,duplex:o,initiator:!0,targetPinnedPeerId:t.targetPeerId,signal:a}),l=new Sx(new wx(c.duplex),r,c.authenticatedPeerId);if(t.pairingCode)try{await l.request({type:"pair",code:t.pairingCode})}catch(d){throw l.close(Mt(d)),d}return l}catch(c){throw n.close(),c}finally{clearTimeout(i)}}const ud=256*1024,Ex=1024*1024;class Ax extends EventTarget{constructor(e,r,n=o=>new WebSocket(o)){if(super(),this.url=e,!/^[a-zA-Z0-9_.:-]{1,160}$/.test(r))throw new Error("Invalid target identity");this.upstream=n(e),this.deadline=setTimeout(()=>this.fail("Relay connection timed out"),2e4),this.upstream.addEventListener("message",o=>{if(this.readyState!==3)try{if(typeof o.data!="string"||new TextEncoder().encode(o.data).length>ud)throw new Error("Invalid relay envelope");const s=JSON.parse(o.data);if(s.type==="ready"&&!this.requested){this.requested=!0,this.transmit({type:"open",streamId:this.streamId,serviceId:r});return}if(s.streamId!==this.streamId)return;if(s.type==="opened"&&this.readyState===0){clearTimeout(this.deadline),this.readyState=1;const l=new Event("open");this.dispatchEvent(l),this.onopen?.(l);return}if(s.type==="close"){this.finish(1001,"Relay route closed"),this.upstream.close();return}if(s.type!=="data"||this.readyState!==1||s.encoding!=="base64"||typeof s.payload!="string"||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(s.payload))throw new Error("Invalid ciphertext relay frame");const i=Nh(s.payload),a=this.binaryType==="blob"?new Blob([i]):i.buffer,c=new MessageEvent("message",{data:a});this.dispatchEvent(c),this.onmessage?.(c)}catch{this.fail("Relay protocol rejected frame")}}),this.upstream.addEventListener("close",o=>this.finish(o.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;upstream;streamId=crypto.randomUUID();requested=!1;deadline;get bufferedAmount(){return this.upstream.bufferedAmount}transmit(e){const r=JSON.stringify(e);if(this.upstream.readyState!==1||this.upstream.bufferedAmount+r.length>Ex||r.length>ud)throw new Error("Relay unavailable or congested");this.upstream.send(r)}send(e){if(this.readyState!==1)throw new Error("Relay socket is not open");let r;if(ArrayBuffer.isView(e))r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);else if(e instanceof ArrayBuffer)r=new Uint8Array(e);else throw new Error("Relay secure transport requires binary bytes");try{this.transmit({type:"data",streamId:this.streamId,encoding:"base64",payload:Ph(r)})}catch(n){throw this.fail("Relay transport congested"),n}}close(e=1e3,r=""){if(this.readyState!==3){try{this.requested&&this.transmit({type:"close",streamId:this.streamId})}catch{}this.finish(e,r),this.upstream.close()}}fail(e){if(this.readyState===3)return;const r=new Event("error");this.dispatchEvent(r),this.onerror?.(r),this.finish(1006,e),this.upstream.close()}finish(e,r){if(this.readyState===3)return;clearTimeout(this.deadline),this.readyState=3;const n=new CloseEvent("close",{code:e,reason:r,wasClean:e===1e3});this.dispatchEvent(n),this.onclose?.(n)}}function Dh(t){return e=>new Ax(e,t)}function kx(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 n=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 n.endsWith("/")&&!n.startsWith("/api/terminal/fs/preview/")?null:n}catch{return null}}function Ix(t){if(!("serviceWorker"in navigator))return()=>{};const e=new Set,r=n=>{if(n.source!==navigator.serviceWorker.controller||n.data?.type!=="termdock-secure-fetch"||n.ports.length!==1)return;const o=n.ports[0],{path:s,method:i,headers:a,body:c,expectedTargetPeerId:l,previewPrefix:d}=n.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)||!kx(u.pathname)?.startsWith(d))){o.postMessage({type:"error"}),o.close();return}const f=new AbortController;let h,g,m=!1,y=!1;const w=()=>{y||(y=!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||y||(m=!0,(async()=>{if(!h){o.postMessage({type:"end"}),w();return}if(!g?.length){const A=await h.read();if(A.done){o.postMessage({type:"end"}),w();return}g=A.value}const v=g.slice(0,64*1024);g=g.subarray(v.length),o.postMessage({type:"chunk",data:v.buffer},[v.buffer])})().catch(()=>{o.postMessage({type:"error"}),w()}).finally(()=>{m=!1}))},o.onmessageerror=w,o.start(),(async()=>{const I=await t();if(y)return;if(l&&l!==I.targetPeerId)throw new Error("Preview target changed");const v=await I.fetch(u.pathname+u.search,{method:i,headers:a,body:["GET","HEAD"].includes(i)?void 0:c,signal:f.signal});if(y){await v.body?.cancel();return}h=v.body?.getReader();const A={};v.headers.forEach((B,T)=>{A[T]=B}),o.postMessage({type:"head",status:v.status,headers:A,bodyless:!h,targetPeerId:I.targetPeerId})})().catch(()=>{y||(o.postMessage({type:"error"}),w())})};return navigator.serviceWorker.addEventListener("message",r),()=>{navigator.serviceWorker.removeEventListener("message",r);for(const n of[...e])n()}}class Ve extends Error{constructor(){super("Device authorization expired or revoked")}}const Co=new WeakMap;function rn(t,e={}){const r=Co.get(t);if(!t.closed&&r&&(!r.settled||Date.now()-r.at<(e.maxAgeMs??1e3)))return r.pending;const n={at:Date.now(),settled:!1,pending:void 0},o=Cx(t,e.timeoutMs??5e3).then(s=>(n.at=Date.now(),n.settled=!0,s),s=>{throw Co.get(t)===n&&Co.delete(t),s});return n.pending=o,Co.set(t,n),o}async function Cx(t,e){const r=await t.request({type:"permissions"},{timeoutMs:e});if(r.type!=="result"||typeof r.fullService!="boolean"||!Array.isArray(r.grants))throw new Error("Invalid permission response");const n=r.grants,o=r.fullService===!0;if(!o&&n.length===0)throw new Ve;return{fullService:o,grants:n,canManage:o&&n.length>0||n.some(s=>s.actions.includes("authorization.manage"))}}const Fh="termdock-secure-last-path:",Rx=10*6e4;function Oh(t){try{const e=JSON.parse(sessionStorage.getItem(Fh+t)||"null");return e&&typeof e.key=="string"&&Date.now()-e.at<Rx?e.key:void 0}catch{return}}function Mh(t,e){try{sessionStorage.setItem(Fh+t,JSON.stringify({key:e,at:Date.now()}))}catch{}}function jh(t,e,r=!1){return new Promise((n,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>=(r?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}})},y=new AbortController;d.add(y),i++,h.run(y.signal).then(w=>{if(m(!0),d.delete(y),a){e(w);return}a=!0,u(),n({value:w,key:h.key})},w=>{if(m(!1),d.delete(y),i--,!a){if(c=w,w instanceof Ve){a=!0,u(),o(w);return}f()}}),clearTimeout(l),!r&&s<t.length&&(l=setTimeout(f,400))};f()})}const Uh="termdock-workspace",xa="termdock:workspace-visibility",Sa="termdock:workspace-activate";function Sc(){return window.parent!==window&&location.pathname==="/workspace.html"&&new URLSearchParams(location.search).get(Uh)||"root"}let fd,hd;function St(){try{if(window.parent===window)return window.__termdockWorkspaceHost;const t=window.parent.__termdockWorkspaceHost;return t&&t!==fd&&(fd=t,hd={...t,subscribe(e){const r=t.subscribe(e),n=o=>{o.persisted||r()};return window.addEventListener("pagehide",n),()=>{r(),window.removeEventListener("pagehide",n)}}}),t?hd:void 0}catch{return}}function di(){const t=St();return!t||t.snapshot().activeKey===Sc()}function hs(t,e=!0){return St()?.activate(t,e)??!1}function Rn(t){St()?.report(Sc(),t)}const Ea="termdock-secure-workspace-session:";function Bk(t){if(t)try{const e=JSON.parse(localStorage.getItem(Ea+t)||"null");return localStorage.removeItem(Ea+t),e&&typeof e.sessionId=="string"&&Date.now()-e.at<6e4?e.sessionId:void 0}catch{return}}function Tx(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 c=sessionStorage.getItem("termdock-secure-last-workspace"),l=t&&c!==t.targetPeerId?Ht().find(d=>d.targetPeerId===c):void 0;l?.targetPeerId&&(e={activeKey:l.targetPeerId,items:[...e.items,{key:l.targetPeerId,service:l,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()}]})}catch{}const r=new Set,n=new Map([["root",window]]),o=new Set,s=()=>{for(const c of[...r])c()},i=(c,l)=>{try{const d=l.document.createEvent("CustomEvent");if(d.initCustomEvent(xa,!1,!1,{active:e.activeKey===c}),l.dispatchEvent(d),e.activeKey===c){const u=l.document.createEvent("Event");if(u.initEvent("resize",!1,!1),l.dispatchEvent(u),o.delete(c)){const f=l.document.createEvent("Event");f.initEvent(Sa,!1,!1),l.dispatchEvent(f)}}else l.document.activeElement?.blur?.()}catch{}},a={snapshot:()=>e,subscribe:c=>(r.add(c),()=>{r.delete(c)}),activate(c,l=!0){const d=xs(c);if(!d?.targetPeerId)return!1;const u=e.items.find(g=>g.service?.targetPeerId===d.targetPeerId),f=u?.key||d.targetPeerId,h=u?{...u,service:d,touchedAt:Date.now()}:{key:f,service:d,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()};e={activeKey:f,items:u?e.items.map(g=>g===u?h:g):[...e.items,h]};try{sessionStorage.setItem("termdock-secure-last-workspace",d.targetPeerId)}catch{}l&&o.add(f),s();for(const[g,m]of n)i(g,m);return!0},report(c,l){const d=e.items.find(f=>f.key===c);if(!d||l.service&&d.service?.targetPeerId&&l.service.targetPeerId!==d.service.targetPeerId)return;const u={...d,...l};JSON.stringify(u)!==JSON.stringify(d)&&(e={...e,items:e.items.map(f=>f===d?u:f)},s())},attach(c,l){l?(n.set(c,l),i(c,l)):n.delete(c)},focusSession(c,l){const d=Ht().find(f=>f.targetPeerId===c);if(!d)return!1;try{localStorage.setItem(Ea+c,JSON.stringify({sessionId:l,at:Date.now()}))}catch{return!1}a.activate(d,!1);const u=n.get(e.activeKey);if(u){const f=u.document.createEvent("CustomEvent");f.initCustomEvent("termdock:workspace-session",!1,!1,null),u.dispatchEvent(f)}return!0}};return window.__termdockWorkspaceHost=a,a}let ui;async function Ge(){return ui||(ui=(async()=>{const t=await new Promise((e,r)=>{const n=indexedDB.open("termdock-device-identity",1);n.onupgradeneeded=()=>n.result.createObjectStore("keys"),n.onsuccess=()=>e(n.result),n.onerror=()=>r(n.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 ld(e);const r=await Rh();let n=r;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"?n=ld(c.result):a.put(lx(r),"identity")},i.oncomplete=()=>o(),i.onerror=()=>s(i.error)}),n}finally{t.close()}})()),ui}const lr="termdock:secure-state";let Q,yn,Ue,Gn="direct",fi=!1,pd=0;const Zr=globalThis.fetch.bind(globalThis);function ne(){return Br()}function bn(){return Q}function Px(){return Ue}function $h(){Q?.close(),Ue?.close(),Q=void 0,Ue=void 0}async function Hh(){const t=await Zr("/api/auth/status",{signal:AbortSignal.timeout(5e3)});if(!t.ok)throw new Error("Failed to query auth status");return t.json()}async function Nx(){if(ne()){await ct();return}if((await Hh()).enabled)return;const t=await Zr("/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 Qe({url:location.origin,targetPeerId:e,serviceName:location.hostname})}async function Lx(t,e){const{startPasswordBootstrap:r,finishPasswordBootstrap:n}=await Kt(async()=>{const{startPasswordBootstrap:l,finishPasswordBootstrap:d}=await import("./passwordBootstrap-CQsYwRFF.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 Zr(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 Ge(),c=await r(e,i);try{const l=await s("/api/auth/password/start",{startLoginRequest:c.startLoginRequest,clientIdentity:a.peerId});let d;try{d=await n(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 Ec(t,e){const r=ne();if(r&&(r.serviceOrigin||r.url)===t)return await Aa(r,e),r;try{return await Lx(t,e)}catch(n){if(!(n instanceof TypeError)&&!(n instanceof DOMException))throw n;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 Aa(s,e),s}}async function Aa(t,e){const r=await qh(t),{startPasswordBootstrap:n,finishPasswordBootstrap:o}=await Kt(async()=>{const{startPasswordBootstrap:i,finishPasswordBootstrap:a}=await import("./passwordBootstrap-CQsYwRFF.js");return{startPasswordBootstrap:i,finishPasswordBootstrap:a}},__vite__mapDeps([0,1,2,3]));let s;try{const i=await r.request({type:"password-parameters"},{timeoutMs:5e3});s=await n(e,String(i.saltHex));const a=await r.request({type:"password-start",startLoginRequest:s.startLoginRequest,origin:location.origin}),c=await o(s,a,{clientIdentity:(await Ge()).peerId,origin:location.origin});if(c.serverIdentity!==t.targetPeerId)throw new Error("服务身份发生变化。");await r.request({type:"password-finish",attemptId:c.attemptId,finishLoginRequest:c.finishLoginRequest})}catch{throw new Error("暂时无法登录,请检查目标服务密码与入口授权后重试。")}finally{s&&(s.passwordKey=""),r.close()}}async function Bx(t){try{const e=ne(),r=e?.serviceOrigin||location.origin,n=await Ec(r,t);return await Qe({...n,routes:e?.routes,serviceName:e?.serviceName||n.serviceName}),Response.json({ok:!0})}catch(e){return Response.json({error:e instanceof Error?e.message:"暂时无法登录,请重试。",code:"INVALID_PASSWORD"},{status:401})}}async function gd(t,e){const r=Le(t),n=(await We()).find(i=>(i.serviceOrigin||i.url)===r&&i.targetPeerId);if(e===void 0&&n?.targetPeerId)try{return await Qe({...n,targetPeerId:n.targetPeerId,serviceName:n.label}),{}}catch(i){if(!(i instanceof Ve))throw i}if(e!==void 0){const i=await Ec(r,e);if(n?.targetPeerId&&n.targetPeerId!==i.targetPeerId)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await Qe({...i,routes:n?.routes,serviceName:n?.label||i.serviceName}),{}}const o=await Zr(new URL("/api/auth/open/parameters",r).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(n?.targetPeerId&&n.targetPeerId!==s)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await Qe({url:r,targetPeerId:s,serviceName:n?.label||new URL(r).host,serviceOrigin:r}),{}}function dr(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 r=JSON.parse(localStorage.getItem(za)||"null");r&&r.targetPeerId!==t.targetPeerId&&new URL(r.url).host===new URL(t.url).host&&e.push(r)}catch{}return e.flatMap((r,n)=>{try{return r.targetPeerId&&r.targetPeerId!==t.targetPeerId&&e.findIndex(o=>o.targetPeerId===r.targetPeerId)===n?[{url:Le(r.url),targetPeerId:r.targetPeerId}]:[]}catch{return[]}}).slice(0,4)}function so(t){const e=dr(t),r=[t.serviceOrigin||t.url,...(t.routes||[]).slice(0,4).filter(o=>o.targetPeerId===t.targetPeerId).map(o=>o.url)],n=new Set;for(const o of r)try{const s=Le(o);e.some(i=>i.url===s)||n.add(s)}catch{}return[...n]}function ur(t){const e=new URL("/api/federation/secure",Le(t));return e.protocol=e.protocol==="https:"?"wss:":"ws:",e.href}async function zt(t,e){return cr({url:ur(t.url),targetPeerId:t.targetPeerId,identity:await Ge(),signal:e?AbortSignal.any([e,AbortSignal.timeout(5e3)]):AbortSignal.timeout(5e3)})}async function qh(t,e){const r=await Ge(),n=so(t).map(i=>({key:`direct:${i}`,run:a=>cr({url:ur(i),targetPeerId:t.targetPeerId,identity:r,signal:AbortSignal.any([a,AbortSignal.timeout(8e3),...e?[e]:[]])})}));for(const i of dr(t))n.push({key:`relay:${i.targetPeerId}:${i.url}`,run:async a=>{e&&(a=AbortSignal.any([a,e]));const c=[Q,Ue].find(d=>d&&!d.closed&&d.targetPeerId===i.targetPeerId),l=c||await zt(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(ur(i.url));return u.pathname="/api/federation/relay",u.searchParams.set("routeToken",d.routeToken),await cr({url:u.href,targetPeerId:t.targetPeerId,identity:r,socketFactory:Dh(t.targetPeerId),signal:AbortSignal.any([a,AbortSignal.timeout(8e3)])})}finally{c||l.close()}}});const o=Oh(t.targetPeerId);n.sort((i,a)=>+(a.key===o)-+(i.key===o));const s=await jh(n,i=>i.close());return Mh(t.targetPeerId,s.key),s.value}async function _x(t,e){const r=await qh(t,e),n=()=>r.close();e.addEventListener("abort",n,{once:!0});try{if(e.aborted||(await rn(r,{timeoutMs:3e3}),e.aborted))throw e.reason;return r}catch(o){throw r.close(),o}finally{e.removeEventListener("abort",n)}}async function Qe(t,e={}){const r=Q,n=Ue,o=await Ge(),s=Le(t.serviceOrigin||t.url),i=(await We()).find(w=>w.targetPeerId===t.targetPeerId),a={...t,routes:t.routes??i?.routes},c=dr(a),l=so(a);let d,u,f=t.pairingCode,h="direct";const g=new Set,m=new Map,y=async(w,I)=>{if(r&&!r.closed&&r.targetPeerId===w.targetPeerId)return r;if(n&&!n.closed&&n.targetPeerId===w.targetPeerId)return n;const v=m.get(w.targetPeerId);if(v&&!v.closed)return v;const A=await zt(w,I);return g.add(A),m.set(w.targetPeerId,A),A};try{if(t.routeCode&&t.entryServiceId){const k=c.find(R=>R.targetPeerId===t.entryServiceId);if(!k)throw new Error("邀请缺少入口信息。");if((await(await y(k)).request({type:"route-pair",code:t.routeCode})).serviceId!==t.targetPeerId)throw new Error("邀请的目标服务不一致。");t.routeOnly&&await Et({id:t.targetPeerId,url:s,label:t.serviceName||new URL(s).host,targetPeerId:t.targetPeerId,serviceOrigin:s,routes:c})}const w=[],I=async(k,x)=>{const S=()=>k.close();x.addEventListener("abort",S,{once:!0});try{if(x.aborted||(await rn(k),x.aborted))throw x.reason}catch(R){throw k.close(),R}finally{x.removeEventListener("abort",S)}};for(const k of l)w.push({key:`direct:${k}`,run:async x=>{const S=await cr({url:ur(k),targetPeerId:t.targetPeerId,pairingCode:f,identity:o,signal:AbortSignal.any([x,AbortSignal.timeout(8e3)])});return f=void 0,await I(S,x),{client:S,path:"direct"}}});for(const k of c)w.push({key:`relay:${k.targetPeerId}:${k.url}`,run:async x=>{let S,R;try{if(S=await y(k,x),x.aborted)throw x.reason;const P=await S.request({type:"route-ticket",serviceId:t.targetPeerId},{timeoutMs:5e3});if(x.aborted)throw x.reason;if(typeof P.routeToken!="string"||!P.routeToken)throw new Error("入口未允许此设备连接该服务。");const b=new URL(ur(k.url));return b.pathname="/api/federation/relay",b.searchParams.set("routeToken",P.routeToken),R=await cr({url:b.href,targetPeerId:t.targetPeerId,pairingCode:f,identity:o,socketFactory:Dh(t.targetPeerId),signal:AbortSignal.any([x,AbortSignal.timeout(8e3)])}),f=void 0,await I(R,x),{client:R,entry:S,path:"relay"}}catch(P){throw R?.close(),S&&S!==n&&S!==r&&S.close(),P}}});const v=Oh(t.targetPeerId);w.sort((k,x)=>+(x.key===v)-+(k.key===v));const A=await jh(w,k=>{k.client.close(),k.entry&&k.entry!==r&&k.entry!==n&&k.entry.close()},!!f);if(d=A.value.client,u=A.value.entry,h=A.value.path,Mh(t.targetPeerId,A.key),Q!==r&&Q&&!Q.closed&&Q.targetPeerId===t.targetPeerId){d.close();for(const k of g)k!==Ue&&k.close();return Q}h==="direct"&&new URL(s).host===location.host&&cg(t.targetPeerId);const B=(await We()).find(k=>k.targetPeerId===t.targetPeerId||!k.targetPeerId&&(k.serviceOrigin||k.url)===s),T=B?.label||t.serviceName||new URL(s).host,N={url:s,targetPeerId:t.targetPeerId,serviceName:T,serviceOrigin:s,routes:a.routes??c};if(await(e.rememberOnly?ug:Et)({id:B?.id||t.targetPeerId,...N,label:T}),Lr!=="unpaired"&&Lr!==t.targetPeerId&&St()&&hs({id:B?.id||t.targetPeerId,...N,label:T})){d.close();for(const k of g)k!==r&&k!==n&&k.close();return r||d}ku(N),Q=d,Gn=h,Ue=u;for(const k of new Set([r,n,...g]))k&&k!==d&&k!==u&&k.close();return Lr!==t.targetPeerId?(location.reload(),new Promise(()=>{})):(window.dispatchEvent(new Event(lr)),d)}catch(w){d?.close();for(const I of g)I!==n&&I.close();throw w}}async function Dx(){const t=Q,e=ne();if(Date.now()-pd<6e4||fi||Gn!=="relay"||!t||t.closed||!t.canSwitchTransport||!e?.serviceOrigin)return;fi=!0,pd=Date.now();let r;try{for(const o of so(e))try{r=await cr({url:ur(o),targetPeerId:e.targetPeerId,identity:await Ge(),signal:AbortSignal.timeout(3e3)}),await rn(r);break}catch(s){if(r?.close(),r=void 0,s instanceof Ve)throw s}if(!r||Q!==t||!t.canSwitchTransport)return;const n=Ue;Q=r,r=void 0,Ue=void 0,Gn="direct",t.close(),n?.close(),window.dispatchEvent(new Event(lr))}catch(n){n instanceof Ve&&Q===t&&($h(),window.dispatchEvent(new Event("auth:unauthorized")))}finally{r?.close(),fi=!1}}function Fx(){return Gn}async function ct(){if(Q&&!Q.closed)return Q;if(Q=void 0,yn)return yn;const t=ne();if(!t)throw new Error("DEVICE_PAIRING_REQUIRED");return yn=Qe(t,{rememberOnly:!0}).catch(e=>{if(Q&&!Q.closed&&Q.targetPeerId===t.targetPeerId)return Q;throw e}).finally(()=>{yn=void 0}),yn}function Ox(t){const e=new URL(t,location.href);if(Q&&!Q.closed)return Q.openSocket(e.pathname+e.search);let r;const n=new _h(t,o=>r?.send(o),()=>r?.close());return ct().then(o=>{n.readyState!==3&&(r=o.openSocket(e.pathname+e.search),r.onopen=()=>n.accept({type:"ws-ready",id:""}),r.onmessage=s=>n.accept({type:"ws-data",id:"",data:s.data}),r.onclose=s=>n.accept({type:"ws-close",id:"",code:s.code,reason:s.reason}),r.onerror=()=>n.fail(new Error("Encrypted connection unavailable")))}).catch(o=>n.fail(o)),n}function Mx(){Ix(ct),window.fetch=async(t,e)=>{const r=new URL(t instanceof Request?t.url:String(t),location.href);if(!r.pathname.startsWith("/api/"))return Zr(t,e);if(r.origin!==location.origin)throw new Error("Remote business API requires a paired encrypted service");if(r.pathname==="/api/meta")return Zr(t,e);if(r.pathname==="/api/auth/status"){if(!ne()){const o=await Hh();return Response.json({enabled:o.enabled,authenticated:!1})}try{const o=await rn(await ct());return Response.json({enabled:o.grants.length>0,authenticated:!0})}catch(o){if(o instanceof Ve)return Response.json({enabled:!0,authenticated:!1});throw o}}if(r.pathname==="/api/auth/login"){const s=await new Request(t instanceof Request?t:r.href,e).json();return Bx(typeof s.password=="string"?s.password:"")}if(r.pathname==="/api/csrf-token")return Response.json({csrfToken:"encrypted-device-channel"});if(r.pathname==="/api/auth/logout")return Q&&!Q.closed&&await Q.request({type:"logout"}),Q?.close(),Ue?.close(),Q=void 0,Ue=void 0,ag(),location.reload(),Response.json({ok:!0});const n=await ct();return t instanceof Request?n.fetch(t,e):n.fetch(r.pathname+r.search,e)}}async function jx(t){if(!t.targetPeerId)throw new Error("请先连接这台服务,再查看可中转的服务。");for(const e of so({...t,targetPeerId:t.targetPeerId})){let r;const n={url:e,targetPeerId:t.targetPeerId};try{r=await zt(n)}catch{continue}try{const o=await r.request({type:"route-targets"},{timeoutMs:5e3});if(!Array.isArray(o.items))throw new Error("入口服务需要更新后才能查看中转列表。");return{route:n,canManage:o.canManage===!0,items:o.items}}catch(o){throw o instanceof Error&&/UNKNOWN|UNSUPPORTED/i.test(o.message)?new Error("入口服务需要更新后才能查看中转列表。"):o}finally{r.close()}}throw new Error("暂时连不上中转入口,请检查地址和网络后重试。")}async function Ux(t,e){const r=await zt(t);try{const n=await r.request({type:"route-targets"},{timeoutMs:5e3}),o=(Array.isArray(n.items)?n.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(!n.canManage)throw new Error("请先让入口管理员授权此设备。");await r.request({type:"route-grant",serviceId:o.serviceId,subjectId:(await Ge()).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{r.close()}}async function $x(t,e){const r=await zt(t);try{const n=await r.request({type:"route-access"},{timeoutMs:5e3}),o=(await Ge()).peerId;return{canManage:n.canManage===!0,grants:(Array.isArray(n.grants)?n.grants:[]).filter(s=>s.subjectId===o&&s.targetServiceId===e)}}finally{r.close()}}async function Hx(t,e,r){if(r!==void 0&&(await Ec(Le(e.url),r)).targetPeerId!==e.targetPeerId)throw new Error("入口服务的身份已改变,请重新连接并确认。");const n=await zt(e);try{await n.request({type:"route-grant",serviceId:t.targetPeerId,subjectId:(await Ge()).peerId,url:Le(t.serviceOrigin||t.url)})}finally{n.close()}}async function qx(t,e){const r=await zt(e);try{const n=await r.request({type:"route-access"},{timeoutMs:5e3}),o=(await Ge()).peerId,s=(Array.isArray(n.grants)?n.grants:[]).filter(i=>i.subjectId===o&&i.targetServiceId===t&&i.active);for(const i of s)await r.request({type:"route-revoke",grantId:i.id})}finally{r.close()}}async function Kh(t,e){const r=await zt(e);try{const n=await r.request({type:"route-invite-create",serviceId:t.targetPeerId});if(typeof n.routeCode!="string"||typeof n.expiresAt!="number")throw new Error("暂时无法生成备用连接邀请。");return{routeCode:n.routeCode,expiresAt:n.expiresAt}}finally{r.close()}}async function Fo(t,e){const r=(await We()).find(o=>o.id===t.id||t.targetPeerId&&o.targetPeerId===t.targetPeerId)||t;await Et({...r,url:r.serviceOrigin||r.url,entryServiceId:void 0,routes:e});const n=ne();n&&n.targetPeerId===t.targetPeerId&&ku({...n,url:n.serviceOrigin||n.url,entryServiceId:void 0,routes:e})}async function Kx(t,e){const r=t.targetPeerId;if(!r)throw new Error("请先连接这台服务,再添加备用地址。");let n;try{n=Le(e)}catch{throw new Error("请输入有效的 HTTPS 地址,例如 https://电脑地址:9834。")}const o=async()=>(await We()).find(a=>a.targetPeerId===r)||t,s=a=>{const c=a.routes??dr({...a,targetPeerId:r});if(Le(a.serviceOrigin||a.url)===n||c.some(l=>Le(l.url)===n))throw new Error("这个地址已经在连接列表中。");if(c.length>=4)throw new Error("最多保存 4 个备用地址或入口,请先移除不再使用的连接。");return[...c,{url:n,targetPeerId:r}]};s(await o());let i;try{try{i=await cr({url:ur(n),targetPeerId:r,identity:await Ge(),signal:AbortSignal.timeout(5e3)}),await rn(i)}catch(l){throw l instanceof Ve?new Error("这台服务尚未授权当前设备,请先恢复设备授权。"):new Error("无法验证这个地址。请确认能访问该地址、HTTPS 证书受信任,且运行的是同一台 Termdock 服务。")}const a=await o(),c=s(a);if(await Fo(a,c),ne()?.targetPeerId===r&&Lr===r&&(!Q||Q.closed)){const l=Q,d=Ue;Q=i,i=void 0,Ue=void 0,Gn="direct",l?.close(),d?.close(),window.dispatchEvent(new Event(lr))}return c}finally{i?.close()}}async function md(t,e){await Aa(t,e),await Qe({...t,pairingCode:void 0,routeCode:void 0})}function zx(t,e){return e.aborted?Promise.reject(e.reason):new Promise((r,n)=>{const o=()=>n(e.reason);e.addEventListener("abort",o,{once:!0}),t.then(r,n).finally(()=>e.removeEventListener("abort",o))})}function zh(){if(window.termdockDesktop||window.parent!==window)return;if(window.__termdockCollaboration)return window.__termdockCollaboration;const t=new Map;let e=[],r=!1;const n=l=>{const d=l.targetPeerId;if(ne()?.targetPeerId===d)return ct();const u=t.get(d);if(u)return u.then(h=>h.closed?(t.get(d)===u&&t.delete(d),n(l)):h);const f=_x({...l,targetPeerId:d},AbortSignal.timeout(12e3)).then(h=>{if(r||t.get(d)!==f)throw h.close(),new Error("服务连接已移除");return h}).catch(h=>{throw t.get(d)===f&&t.delete(d),h});return t.set(d,f),f},o=()=>{const l=ne(),d=Ht();l&&!d.some(f=>f.targetPeerId===l.targetPeerId)&&d.push({...l,id:l.targetPeerId,label:l.serviceName||l.serviceOrigin||l.url});const u=new Set(d.map(f=>f.targetPeerId));for(const[f,h]of t)u.has(f)||(t.delete(f),h.then(g=>g.close()).catch(()=>{}));e=d.filter(f=>!!f.targetPeerId).map(f=>({origin:f.serviceOrigin||f.url,label:f.label,request:async(h,g="GET",m)=>{if(!/^\/collaboration-(?:federation|groups)(?:\/[^?#]*)?$/.test(h))throw new Error("无效的协作请求");const y=AbortSignal.timeout(18e3),w=await zx(n(f),y),I=new Headers({"Content-Type":"application/json"});if(g!=="GET"&&g!=="HEAD"){const B=await w.fetch("/api/csrf-token",{signal:y});if(!B.ok)throw new Error("无法读取目标服务的请求令牌");const T=await B.json();if(typeof T.csrfToken!="string")throw new Error("目标服务的请求令牌无效");I.set("X-XSRF-TOKEN",T.csrfToken)}const v=await w.fetch(`/api/terminal/operations${h}`,{method:g,headers:I,signal:y,...m===void 0?{}:{body:JSON.stringify(m)}}),A=v.status===204?void 0:await v.json();if(!v.ok)throw new Error(A?.error||"服务不可达或未授权协作访问");return A}}))},s=new dg(()=>e),i={peers:l=>(o(),s.peers(l)),save:async(l,d)=>{o();const u=await s.save(l,d);return a(),u}},a=async()=>{r||document.hidden||!navigator.onLine||!ne()||(o(),!(e.length<2)&&await s.refresh().catch(()=>{}))};window.__termdockCollaboration=i;const c=window.setInterval(()=>{a()},2e3);return document.addEventListener("visibilitychange",a),window.addEventListener("online",a),window.addEventListener("pageshow",a),window.addEventListener("pagehide",l=>{if(!l.persisted){r=!0,clearInterval(c);for(const d of t.values())d.then(u=>u.close()).catch(()=>{});t.clear()}}),a(),i}function Vh(){if(!window.termdockDesktop)try{if(window.parent===window)return zh();if(location.pathname==="/workspace.html"&&window.parent.location.origin===location.origin)return window.parent.__termdockCollaboration}catch{}}var Ro={},wd;function Vx(){if(wd)return Ro;wd=1;var t=Zp();return Ro.createRoot=t.createRoot,Ro.hydrateRoot=t.hydrateRoot,Ro}var Wx=Vx();const Gx=Au(Wx);const Wh=(...t)=>t.filter((e,r,n)=>!!e&&e.trim()!==""&&n.indexOf(e)===r).join(" ").trim();const Xx=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const Yx=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,r,n)=>n?n.toUpperCase():r.toLowerCase());const yd=t=>{const e=Yx(t);return e.charAt(0).toUpperCase()+e.slice(1)};var hi={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 Zx=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1},Jx=O.createContext({}),Qx=()=>O.useContext(Jx),eS=O.forwardRef(({color:t,size:e,strokeWidth:r,absoluteStrokeWidth:n,className:o="",children:s,iconNode:i,...a},c)=>{const{size:l=24,strokeWidth:d=2,absoluteStrokeWidth:u=!1,color:f="currentColor",className:h=""}=Qx()??{},g=n??u?Number(r??d)*24/Number(e??l):r??d;return O.createElement("svg",{ref:c,...hi,width:e??l??hi.width,height:e??l??hi.height,stroke:t??f,strokeWidth:g,className:Wh("lucide",h,o),...!s&&!Zx(a)&&{"aria-hidden":"true"},...a},[...i.map(([m,y])=>O.createElement(m,y)),...Array.isArray(s)?s:[s]])});const Te=(t,e)=>{const r=O.forwardRef(({className:n,...o},s)=>O.createElement(eS,{ref:s,iconNode:e,className:Wh(`lucide-${Xx(yd(t))}`,`lucide-${t}`,n),...o}));return r.displayName=yd(t),r};const tS=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],Gh=Te("arrow-left",tS);const rS=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],nS=Te("arrow-right",rS);const oS=[["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"}]],sS=Te("bell-dot",oS);const iS=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Ac=Te("check",iS);const aS=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],cS=Te("chevron-down",aS);const lS=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],fr=Te("chevron-right",lS);const dS=[["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"}]],Xh=Te("copy",dS);const uS=[["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"}]],fS=Te("ellipsis",uS);const hS=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],$e=Te("loader-circle",hS);const pS=[["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"}]],gS=Te("monitor",pS);const mS=[["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"}]],wS=Te("pencil",mS);const yS=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],Yh=Te("plus",yS);const bS=[["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"}]],Ds=Te("server",bS);const vS=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],Zh=Te("smartphone",vS);const xS=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],SS=Te("terminal",xS);const ES=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],AS=Te("x",ES);function kS(t,e){if(!e)return!1;try{const r=new URL(e.serviceOrigin||e.url);return r.origin===t&&/^(localhost|\[::1\]|127(?:\.\d{1,3}){3})$/.test(r.hostname)&&!(e.routes??[]).some(n=>n.targetPeerId!==e.targetPeerId)}catch{return!1}}function IS(t){const e=s=>s.target instanceof Element?s.target.closest("[data-termdock-terminal-dropzone]"):null,r=()=>!kS(location.origin,Br()),n=s=>{const i=e(s);!i||!r()||!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||!r())return;s.preventDefault(),s.stopImmediatePropagation();const c=i.dataset.termdockTerminalDropzone??"";i.dataset.nativeFileDrag="true",i.dataset.nativeFileDropState="uploading",Kt(async()=>{const{uploadFiles:l}=await Promise.resolve().then(()=>H2);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",n,!0),window.addEventListener("drop",o,!0),()=>{window.removeEventListener("dragover",n,!0),window.removeEventListener("drop",o,!0)}}function Jh(){return typeof window>"u"?null:window.termdockDesktop??null}const pi=new Set;let bd=!1;function _k(t){const e=Jh();if(!e)return()=>{};if(pi.add(t),!bd){const r=n=>{for(const o of pi)o(n)};IS(r),e.onNativeFileDrop(r),bd=!0}return()=>{pi.delete(t)}}function Qh(t=navigator.userAgent,e=navigator.maxTouchPoints){const r=/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":"设备",n=/Electron/.test(t)?"Termdock":/Edg\//.test(t)?"Edge":/Firefox|FxiOS/.test(t)?"Firefox":/Chrome|CriOS/.test(t)?"Chrome":/Safari/.test(t)?"Safari":"浏览器";return`${r} · ${n}`}let CS;function RS(){return CS??=(async()=>{const t=navigator.userAgent,[e,r]=Qh().split(" · "),n=/(?:Edg|Firefox|FxiOS|Chrome|CriOS|Version)\/([\d.]+)/g,o=[...t.matchAll(n)],s=/(?:CPU (?:iPhone )?OS |Mac OS X |Android )([\d._]+)/.exec(t)?.[1]?.replaceAll("_","."),i={system:`${e}${s?` ${s}`:""}`,client:`${r}${o.length?` ${o.at(-1)[1]}`:""}`,mode:matchMedia("(display-mode: standalone)").matches||navigator.standalone?"已安装的网页应用":"网页"},a=Jh();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 TS({service:t,onBusyChange:e,onConnect:r,onConnectWithPassword:n}){const[o,s]=O.useState(),[i,a]=O.useState(!0),[c,l]=O.useState(!1),[d,u]=O.useState(""),[f,h]=O.useState(0),[g,m]=O.useState(),[y,w]=O.useState("");O.useEffect(()=>{let A=!1;return a(!0),u(""),s(void 0),jx(t).then(B=>{A||s(B)}).catch(B=>{A||u(B instanceof Error?B.message:"暂时无法读取中转列表,请重试。")}).finally(()=>{A||a(!1)}),()=>{A=!0}},[t.id,t.url,f]);const I=async A=>{if(!c){l(!0),e(!0),u("");try{await A()}catch(B){u(B instanceof Error?B.message:"暂时无法连接,请重试。")}finally{l(!1),e(!1)}}},v=async A=>{const B=await Ux(o.route,A.serviceId);try{await r(B)}catch(T){if(!(T instanceof Ve))throw T;m(B)}};return p.jsxs("div",{className:"service-form",children:[g?p.jsxs("form",{className:"service-form",onSubmit:A=>{A.preventDefault(),I(async()=>{try{await n?.(g,y)}finally{w("")}})},children:[p.jsxs("p",{className:"service-help",children:["已通过“",t.label,"”连接到“",g.serviceName,"”。请登录目标服务,完成此设备的访问授权。"]}),n?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:y,disabled:c,onChange:A=>w(A.target.value)})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:c||!y,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(A=>A+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($e,{size:16,className:"service-spinning"}),"正在读取可中转的服务…"]}):o&&p.jsxs("div",{className:"service-list",children:[o.items.map(A=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:c||!A.available,onClick:()=>{I(()=>v(A))},children:[p.jsx("span",{className:"service-icon",children:p.jsx(Ds,{size:19})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:A.label||(A.url?new URL(A.url).host:`中转服务 ${A.serviceId.slice(0,8)}`)}),p.jsx("span",{className:"service-description",children:A.available?A.authorized?"已获中转授权 · 连接":"授权此设备并连接":"中转暂不可用"})]}),p.jsx(fr,{size:16})]},A.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($e,{size:16,className:"service-spinning"}),"正在授权并连接目标服务…"]}),!i&&p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:c,onClick:()=>h(A=>A+1),children:"刷新列表"})]}),d&&p.jsx("p",{className:"service-error",role:"alert",children:d})]})}const ka="#termdock-invite=";function ep(t){const e=new URL(t.entryUrl);e.hash="",e.search="",e.pathname="/";const r=new TextEncoder().encode(JSON.stringify(t));return e.hash=ka.slice(1)+btoa(String.fromCharCode(...r)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),e.href}function ps(t){const e=new URL(t);if(!["https:","http:"].includes(e.protocol)||!e.hash.startsWith(ka))throw new Error("这不是有效的 Termdock 邀请链接");const r=e.hash.slice(ka.length);if(r.length>8192)throw new Error("邀请链接过长");let n;try{const i=r.replace(/-/g,"+").replace(/_/g,"/");n=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(Uint8Array.from(atob(i),a=>a.charCodeAt(0))))}catch{throw new Error("邀请链接不完整,请重新复制")}if(n.v!==1||typeof n.serviceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(n.serviceId)||n.routeOnly!==!0&&(typeof n.code!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(n.code)))throw new Error("邀请信息无效或版本不兼容");const o=new URL(n.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(n.entryServiceId!==void 0&&(typeof n.entryServiceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(n.entryServiceId)))throw new Error("邀请入口身份无效");if(n.routeCode!==void 0&&(typeof n.routeCode!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(n.routeCode)||!n.entryServiceId))throw new Error("邀请入口权限无效");if(n.routeOnly===!0&&(!n.entryServiceId||!n.routeCode||n.code!==void 0))throw new Error("备用连接邀请不完整");let s=o.origin;if(n.serviceUrl!==void 0){const i=new URL(n.serviceUrl);if(!["https:","http:"].includes(i.protocol)||i.username||i.password)throw new Error("目标服务地址无效");s=n.entryServiceId&&n.entryServiceId!==n.serviceId?i.origin:o.origin}return{url:o.origin,targetPeerId:n.serviceId,pairingCode:n.code,...n.routeOnly===!0?{routeOnly:!0}:{},serviceOrigin:s,serviceName:typeof n.name=="string"?n.name.slice(0,120):void 0,entryServiceId:n.entryServiceId,routeCode:n.routeCode}}function PS({service:t,onBusyChange:e}){const r={...t,targetPeerId:t.targetPeerId,serviceName:t.label},[n,o]=O.useState(()=>t.routes??dr(r)),[s,i]=O.useState([]),[a,c]=O.useState(!0),[l,d]=O.useState(!1),[u,f]=O.useState(""),h=D=>{d(D),e(D)},[g,m]=O.useState(),[y,w]=O.useState(""),[I,v]=O.useState(""),[A,B]=O.useState(""),[T,N]=O.useState(!1),[k,x]=O.useState(),[S,R]=O.useState(),[P,b]=O.useState(!1);O.useEffect(()=>{let D=!1;return We().then(_=>{D||i(_.filter(F=>F.targetPeerId&&F.targetPeerId!==t.targetPeerId))}).catch(()=>{D||f("暂时无法读取可用服务。")}).finally(()=>{D||c(!1)}),()=>{D=!0}},[t.targetPeerId]);const E=D=>s.find(_=>_.targetPeerId===D.targetPeerId)?.label||new URL(D.url).host,C=async D=>{h(!0),f(""),B("");try{await D()}catch(_){const F=_ instanceof Error?_.message:"";f(/AUTHORIZATION|DENIED/.test(F)?"当前设备没有入口管理权限。请让管理员分享备用连接邀请,或使用入口密码授权。":"暂时无法完成。请确认入口能连接目标服务,且目标地址、证书和授权有效。")}finally{h(!1)}},L=async(D,_)=>{const F={url:D.serviceOrigin||D.url,targetPeerId:D.targetPeerId};await C(async()=>{const q=await $x(F,r.targetPeerId);if(!q.grants.some(K=>K.active)){if(!q.canManage&&_===void 0){m(D);return}await Hx(r,F,_)}const H=[...n.filter(K=>K.targetPeerId!==F.targetPeerId),F];await Fo(t,H),o(H),m(void 0),w("")})};if(S)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:S,onFocus:D=>D.target.select()})]}),p.jsxs("button",{type:"button",className:"service-button service-primary",onClick:()=>{navigator.clipboard.writeText(S).then(()=>b(!0)).catch(()=>f("无法自动复制,请长按链接复制。"))},children:[p.jsx(Xh,{size:16}),P?"已复制":"复制邀请链接"]}),p.jsx("button",{type:"button",className:"service-button service-secondary",onClick:()=>{R(void 0),b(!1)},children:"返回备用连接"}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u})]});if(g)return p.jsxs("form",{className:"service-form",onSubmit:D=>{D.preventDefault(),L(g,y).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:y,onChange:D=>w(D.target.value),autoComplete:"current-password",disabled:l,autoFocus:!0})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:l||!y,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 M=n.filter(D=>D.targetPeerId===r.targetPeerId),$=n.filter(D=>D.targetPeerId!==r.targetPeerId),j=async()=>{if(!l){h(!0),N(!0),f(""),B("");try{o(await Kx({...t,routes:n},I)),v(""),B("备用地址已验证并保存。")}catch(D){f(D instanceof Error?D.message:"暂时无法添加地址,请重试。")}finally{h(!1),N(!1)}}};return p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"电脑换了网络?添加它在新网络下的地址,原地址连不上时会自动尝试。只接受同一台服务。"}),p.jsxs("form",{className:"service-form",onSubmit:D=>{D.preventDefault(),j()},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"备用地址"}),p.jsx("input",{value:I,onChange:D=>{v(D.target.value),f(""),B("")},required:!0,disabled:l||n.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||n.length>=4||!I.trim(),children:T?p.jsxs(p.Fragment,{children:[p.jsx($e,{size:16,className:"service-spinning"}),"正在验证…"]}):"验证并添加"})]}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u}),A&&p.jsx("p",{role:"status",className:"service-help",children:A}),n.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})]}),M.length>0&&p.jsx("div",{className:"service-list",children:M.map(D=>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:D.url}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`移除地址 ${D.url}`,disabled:l,onClick:()=>x(D),children:"移除"})]}),k?.targetPeerId===D.targetPeerId&&k.url===D.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:()=>x(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{C(async()=>{const _=n.filter(F=>F.targetPeerId!==D.targetPeerId||F.url!==D.url);await Fo(t,_),o(_),x(void 0)})},children:"确认移除"})]})]})]},D.url))}),p.jsxs("details",{className:"service-relay-options",children:[p.jsxs("summary",{children:["通过其他服务中转",$.length?`(${$.length})`:""]}),p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"所有直连地址都不可用时,尝试下方已授权入口;直连恢复后自动切回。"}),$.length>0&&p.jsx("div",{className:"service-list",children:$.map(D=>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(Ds,{size:18})}),p.jsx("span",{className:"service-name",children:E(D)}),p.jsx(Ac,{size:16,className:"service-selected"})]}),k?.targetPeerId===D.targetPeerId?p.jsxs("div",{className:"service-form",children:[p.jsxs("p",{className:"service-help",children:["撤销此设备经“",E(D),"”连接目标的权限?如当前无法直连,目标服务将断开。"]}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>x(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{C(async()=>{await qx(r.targetPeerId,D);const _=n.filter(F=>F.targetPeerId!==D.targetPeerId);await Fo(t,_),o(_),x(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:()=>{C(async()=>{const _=await Kh(r,D);R(ep({v:1,routeOnly:!0,serviceId:r.targetPeerId,name:t.label,serviceUrl:t.serviceOrigin||t.url,entryUrl:D.url,entryServiceId:D.targetPeerId,routeCode:_.routeCode}))})},children:"分享备用连接"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>x(D),children:"撤销授权"})]})]},D.targetPeerId))}),a?p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx($e,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{children:[p.jsx("p",{className:"service-help",children:"添加中转入口"}),s.filter(D=>!n.some(_=>_.targetPeerId===D.targetPeerId)).map(D=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:l||n.length>=4,onClick:()=>{L(D)},children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:D.label}),p.jsx("span",{className:"service-description",children:"验证并授权后启用"})]}),p.jsx(fr,{size:16})]},D.id)),s.length===0&&p.jsx("p",{className:"service-empty",children:"添加并登录另一台服务后,可以将它设为中转入口。"})]})]})]}),l&&!T&&p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx($e,{size:16,className:"service-spinning"}),"正在验证连接与授权…"]})]})}function NS({current:t,renderRoutes:e,renderRelayServices:r,onOpen:n,onAdd:o,onInvite:s,hideHeader:i,onNavigation:a,onBusyChange:c,initiallyAdding:l=!1}){const[d,u]=O.useState([]),[f,h]=O.useState(!0),[g,m]=O.useState(l?{kind:"add"}:{kind:"list"}),[y,w]=O.useState(!1),I=O.useCallback(b=>{w(b),c?.(b)},[c]),[v,A]=O.useState(""),B=O.useCallback(()=>{m(b=>b.kind==="routes"||b.kind==="relay-services"?{kind:"edit",service:b.service}:{kind:"list"}),A("")},[]),T=g.kind==="add"?"添加服务":g.kind==="edit"?"服务设置":g.kind==="routes"?"备用连接":g.kind==="relay-services"?"可中转的服务":void 0;O.useEffect(()=>{a?.({title:T,...T?{back:B}:{}})},[T,B,a]),O.useEffect(()=>{let b=!1,E=0;const C=async()=>{const M=++E;try{const $=await We();!b&&E===M&&(u($),A(""))}catch{!b&&E===M&&A("暂时无法读取服务列表,请重试。")}finally{!b&&E===M&&h(!1)}};C();const L=Ru(()=>{C()});return()=>{b=!0,L()}},[]);const N=async b=>{if(!y){I(!0),A("");try{await b()}catch(E){A(E instanceof Error?E.message:"暂时无法完成,请重试。")}finally{I(!1)}}},k=g.kind==="edit"||g.kind==="routes"||g.kind==="relay-services"?d.find(b=>wt(b,g.service))||g.service:void 0,x=t?d.find(b=>wt(b,t))||t:void 0,S=d.filter(b=>!t||!wt(b,t)),R=x?[x,...S]:S,P=p.jsxs(p.Fragment,{children:[f?p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx($e,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{className:"service-list",children:[R.map(b=>{const E=!!t&&wt(b,t);return p.jsxs("div",{className:"service-row",children:[p.jsxs("button",{type:"button",className:"service-row-open",disabled:y||E,onClick:()=>{N(async()=>{(await n(b))?.passwordRequired&&m({kind:"add",input:b.serviceOrigin||b.url,passwordRequired:!0})})},"aria-label":E?`当前服务 ${b.label}`:`打开 ${b.label}`,children:[p.jsx("span",{className:"service-icon",children:p.jsx(Ds,{size:20})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:b.label}),p.jsx("span",{className:"service-description",children:E?"当前服务":new URL(b.serviceOrigin||b.url).host})]}),E?p.jsx(Ac,{size:17,className:"service-selected"}):p.jsx(fr,{size:16,className:"service-muted"})]}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`管理 ${b.label}`,disabled:y,onClick:()=>{m({kind:"edit",service:b}),A("")},children:p.jsx(fS,{size:19})})]},b.id)}),R.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:y,onClick:()=>{m({kind:"add"}),A("")},children:[p.jsx(Yh,{size:16}),"添加服务"]}),s&&p.jsxs("button",{type:"button",className:"service-button service-secondary",disabled:y,onClick:s,children:[p.jsx(Zh,{size:16}),"邀请设备"]})]})]});return p.jsxs("div",{className:"service-manager",children:[!i&&p.jsxs("div",{className:"service-heading",children:[T&&p.jsx("button",{type:"button",className:"service-icon-button","aria-label":"返回服务",disabled:y,onClick:B,children:p.jsx(Gh,{size:20})}),p.jsx("h2",{children:T||"服务"})]}),g.kind==="relay-services"?r?.(k,I):g.kind==="routes"?e?.(k,I):g.kind==="list"?P:g.kind==="add"?p.jsx(LS,{onSave:b=>N(async()=>{const E=Le(b);u(await Et({id:E,url:E,label:new URL(E).host})),B()}),initialInput:g.input,passwordRequired:g.passwordRequired,busy:y,onSubmit:async(b,E)=>{let C;return await N(async()=>{C=await o(b,E),C?.passwordRequired||B()}),C}}):p.jsx(BS,{onRelayServices:r&&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:k,busy:y,canRemove:!t||!wt(g.service,t),onSave:b=>{N(async()=>{u(await Et({...k,label:b})),B()})},onRemove:()=>{N(async()=>{u(await fg(g.service.id)),B()})}}),v&&p.jsx("p",{className:"service-error",role:"alert",children:v})]})}function LS({busy:t,onSubmit:e,onSave:r,initialInput:n="",passwordRequired:o=!1}){const[s,i]=O.useState(n),[a,c]=O.useState(""),[l,d]=O.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:()=>{r(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($e,{size:16,className:"service-spinning"}),"正在连接…"]}):l?"登录并连接":"继续"})]})}function BS({service:t,busy:e,canRemove:r,onSave:n,onRemove:o,onRoutes:s,onRelayServices:i}){const[a,c]=O.useState(t.label),[l,d]=O.useState(!1);return p.jsxs("form",{className:"service-form",onSubmit:u=>{u.preventDefault(),n(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(fr,{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(fr,{size:16})]}),r&&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 Ir={},gi,vd;function _S(){return vd||(vd=1,gi=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),gi}var mi={},Dt={},xd;function mr(){if(xd)return Dt;xd=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 Dt.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return n*4+17},Dt.getSymbolTotalCodewords=function(n){return e[n]},Dt.getBCHDigit=function(r){let n=0;for(;r!==0;)n++,r>>>=1;return n},Dt.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');t=n},Dt.isKanjiModeEnabled=function(){return typeof t<"u"},Dt.toSJIS=function(n){return t(n)},Dt}var wi={},Sd;function kc(){return Sd||(Sd=1,(function(t){t.L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2};function e(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.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: "+r)}}t.isValid=function(n){return n&&typeof n.bit<"u"&&n.bit>=0&&n.bit<4},t.from=function(n,o){if(t.isValid(n))return n;try{return e(n)}catch{return o}}})(wi)),wi}var yi,Ed;function DS(){if(Ed)return yi;Ed=1;function t(){this.buffer=[],this.length=0}return t.prototype={get:function(e){const r=Math.floor(e/8);return(this.buffer[r]>>>7-e%8&1)===1},put:function(e,r){for(let n=0;n<r;n++)this.putBit((e>>>r-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const r=Math.floor(this.length/8);this.buffer.length<=r&&this.buffer.push(0),e&&(this.buffer[r]|=128>>>this.length%8),this.length++}},yi=t,yi}var bi,Ad;function FS(){if(Ad)return bi;Ad=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,r,n,o){const s=e*this.size+r;this.data[s]=n,o&&(this.reservedBit[s]=!0)},t.prototype.get=function(e,r){return this.data[e*this.size+r]},t.prototype.xor=function(e,r,n){this.data[e*this.size+r]^=n},t.prototype.isReserved=function(e,r){return this.reservedBit[e*this.size+r]},bi=t,bi}var vi={},kd;function OS(){return kd||(kd=1,(function(t){const e=mr().getSymbolSize;t.getRowColCoords=function(n){if(n===1)return[];const o=Math.floor(n/7)+2,s=e(n),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(n){const o=[],s=t.getRowColCoords(n),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}})(vi)),vi}var xi={},Id;function MS(){if(Id)return xi;Id=1;const t=mr().getSymbolSize,e=7;return xi.getPositions=function(n){const o=t(n);return[[0,0],[o-e,0],[0,o-e]]},xi}var Si={},Cd;function jS(){return Cd||(Cd=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 r(n,o,s){switch(n){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:"+n)}}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,r(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}})(Si)),Si}var To={},Rd;function tp(){if(Rd)return To;Rd=1;const t=kc(),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],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return To.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}},To.getTotalCodewordsCount=function(o,s){switch(s){case t.L:return r[(o-1)*4+0];case t.M:return r[(o-1)*4+1];case t.Q:return r[(o-1)*4+2];case t.H:return r[(o-1)*4+3];default:return}},To}var Ei={},vn={},Td;function US(){if(Td)return vn;Td=1;const t=new Uint8Array(512),e=new Uint8Array(256);return(function(){let n=1;for(let o=0;o<255;o++)t[o]=n,e[n]=o,n<<=1,n&256&&(n^=285);for(let o=255;o<512;o++)t[o]=t[o-255]})(),vn.log=function(n){if(n<1)throw new Error("log("+n+")");return e[n]},vn.exp=function(n){return t[n]},vn.mul=function(n,o){return n===0||o===0?0:t[e[n]+e[o]]},vn}var Pd;function $S(){return Pd||(Pd=1,(function(t){const e=US();t.mul=function(n,o){const s=new Uint8Array(n.length+o.length-1);for(let i=0;i<n.length;i++)for(let a=0;a<o.length;a++)s[i+a]^=e.mul(n[i],o[a]);return s},t.mod=function(n,o){let s=new Uint8Array(n);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(n){let o=new Uint8Array([1]);for(let s=0;s<n;s++)o=t.mul(o,new Uint8Array([1,e.exp(s)]));return o}})(Ei)),Ei}var Ai,Nd;function HS(){if(Nd)return Ai;Nd=1;const t=$S();function e(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}return e.prototype.initialize=function(n){this.degree=n,this.genPoly=t.generateECPolynomial(this.degree)},e.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const o=new Uint8Array(n.length+this.degree);o.set(n);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},Ai=e,Ai}var ki={},Ii={},Ci={},Ld;function rp(){return Ld||(Ld=1,Ci.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}),Ci}var it={},Bd;function np(){if(Bd)return it;Bd=1;const t="[0-9]+",e="[A-Z $%*+\\-./:]+";let r="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";r=r.replace(/u/g,"\\u");const n="(?:(?![A-Z0-9 $%*+\\-./:]|"+r+`)(?:.|[\r
|
|
3
3
|
]))+`;it.KANJI=new RegExp(r,"g"),it.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),it.BYTE=new RegExp(n,"g"),it.NUMERIC=new RegExp(t,"g"),it.ALPHANUMERIC=new RegExp(e,"g");const o=new RegExp("^"+r+"$"),s=new RegExp("^"+t+"$"),i=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return it.testKanji=function(c){return o.test(c)},it.testNumeric=function(c){return s.test(c)},it.testAlphanumeric=function(c){return i.test(c)},it}var _d;function wr(){return _d||(_d=1,(function(t){const e=rp(),r=np();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 r.testNumeric(s)?t.NUMERIC:r.testAlphanumeric(s)?t.ALPHANUMERIC:r.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 n(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 n(s)}catch{return i}}})(Ii)),Ii}var Dd;function qS(){return Dd||(Dd=1,(function(t){const e=mr(),r=tp(),n=kc(),o=wr(),s=rp(),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 y=l(m.mode,h);g+=y+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 y=e.getSymbolTotalCodewords(h),w=r.getTotalCodewordsCount(h,g),I=(y-w)*8;if(m===o.MIXED)return I;const v=I-l(m,h);switch(m){case o.NUMERIC:return Math.floor(v/10*3);case o.ALPHANUMERIC:return Math.floor(v/11*2);case o.KANJI:return Math.floor(v/13);case o.BYTE:default:return Math.floor(v/8)}},t.getBestVersionForData=function(h,g){let m;const y=n.from(g,n.M);if(Array.isArray(h)){if(h.length>1)return u(h,y);if(h.length===0)return 1;m=h[0]}else m=h;return c(m.mode,m.getLength(),y)},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}})(ki)),ki}var Ri={},Fd;function KS(){if(Fd)return Ri;Fd=1;const t=mr(),e=1335,r=21522,n=t.getBCHDigit(e);return Ri.getEncodedBits=function(s,i){const a=s.bit<<3|i;let c=a<<10;for(;t.getBCHDigit(c)-n>=0;)c^=e<<t.getBCHDigit(c)-n;return(a<<10|c)^r},Ri}var Ti={},Pi,Od;function zS(){if(Od)return Pi;Od=1;const t=wr();function e(r){this.mode=t.NUMERIC,this.data=r.toString()}return e.getBitsLength=function(n){return 10*Math.floor(n/3)+(n%3?n%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(n){let o,s,i;for(o=0;o+3<=this.data.length;o+=3)s=this.data.substr(o,3),i=parseInt(s,10),n.put(i,10);const a=this.data.length-o;a>0&&(s=this.data.substr(o),i=parseInt(s,10),n.put(i,a*3+1))},Pi=e,Pi}var Ni,Md;function VS(){if(Md)return Ni;Md=1;const t=wr(),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 r(n){this.mode=t.ALPHANUMERIC,this.data=n}return r.getBitsLength=function(o){return 11*Math.floor(o/2)+6*(o%2)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.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)},Ni=r,Ni}var Li,jd;function WS(){if(jd)return Li;jd=1;const t=wr();function e(r){this.mode=t.BYTE,typeof r=="string"?this.data=new TextEncoder().encode(r):this.data=new Uint8Array(r)}return e.getBitsLength=function(n){return n*8},e.prototype.getLength=function(){return this.data.length},e.prototype.getBitsLength=function(){return e.getBitsLength(this.data.length)},e.prototype.write=function(r){for(let n=0,o=this.data.length;n<o;n++)r.put(this.data[n],8)},Li=e,Li}var Bi,Ud;function GS(){if(Ud)return Bi;Ud=1;const t=wr(),e=mr();function r(n){this.mode=t.KANJI,this.data=n}return r.getBitsLength=function(o){return o*13},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(n){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),n.put(s,13)}},Bi=r,Bi}var _i={exports:{}},$d;function XS(){return $d||($d=1,(function(t){var e={single_source_shortest_paths:function(r,n,o){var s={},i={};i[n]=0;var a=e.PriorityQueue.make();a.push(n,0);for(var c,l,d,u,f,h,g,m,y;!a.empty();){c=a.pop(),l=c.value,u=c.cost,f=r[l]||{};for(d in f)f.hasOwnProperty(d)&&(h=f[d],g=u+h,m=i[d],y=typeof i[d]>"u",(y||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 ",n," to ",o,"."].join("");throw new Error(w)}return s},extract_shortest_path_from_predecessor_list:function(r,n){for(var o=[],s=n;s;)o.push(s),r[s],s=r[s];return o.reverse(),o},find_path:function(r,n,o){var s=e.single_source_shortest_paths(r,n,o);return e.extract_shortest_path_from_predecessor_list(s,o)},PriorityQueue:{make:function(r){var n=e.PriorityQueue,o={},s;r=r||{};for(s in n)n.hasOwnProperty(s)&&(o[s]=n[s]);return o.queue=[],o.sorter=r.sorter||n.default_sorter,o},default_sorter:function(r,n){return r.cost-n.cost},push:function(r,n){var o={value:r,cost:n};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})(_i)),_i.exports}var Hd;function YS(){return Hd||(Hd=1,(function(t){const e=wr(),r=zS(),n=VS(),o=WS(),s=GS(),i=np(),a=mr(),c=XS();function l(w){return unescape(encodeURIComponent(w)).length}function d(w,I,v){const A=[];let B;for(;(B=w.exec(v))!==null;)A.push({data:B[0],index:B.index,mode:I,length:B[0].length});return A}function u(w){const I=d(i.NUMERIC,e.NUMERIC,w),v=d(i.ALPHANUMERIC,e.ALPHANUMERIC,w);let A,B;return a.isKanjiModeEnabled()?(A=d(i.BYTE,e.BYTE,w),B=d(i.KANJI,e.KANJI,w)):(A=d(i.BYTE_KANJI,e.BYTE,w),B=[]),I.concat(v,A,B).sort(function(N,k){return N.index-k.index}).map(function(N){return{data:N.data,mode:N.mode,length:N.length}})}function f(w,I){switch(I){case e.NUMERIC:return r.getBitsLength(w);case e.ALPHANUMERIC:return n.getBitsLength(w);case e.KANJI:return s.getBitsLength(w);case e.BYTE:return o.getBitsLength(w)}}function h(w){return w.reduce(function(I,v){const A=I.length-1>=0?I[I.length-1]:null;return A&&A.mode===v.mode?(I[I.length-1].data+=v.data,I):(I.push(v),I)},[])}function g(w){const I=[];for(let v=0;v<w.length;v++){const A=w[v];switch(A.mode){case e.NUMERIC:I.push([A,{data:A.data,mode:e.ALPHANUMERIC,length:A.length},{data:A.data,mode:e.BYTE,length:A.length}]);break;case e.ALPHANUMERIC:I.push([A,{data:A.data,mode:e.BYTE,length:A.length}]);break;case e.KANJI:I.push([A,{data:A.data,mode:e.BYTE,length:l(A.data)}]);break;case e.BYTE:I.push([{data:A.data,mode:e.BYTE,length:l(A.data)}])}}return I}function m(w,I){const v={},A={start:{}};let B=["start"];for(let T=0;T<w.length;T++){const N=w[T],k=[];for(let x=0;x<N.length;x++){const S=N[x],R=""+T+x;k.push(R),v[R]={node:S,lastCount:0},A[R]={};for(let P=0;P<B.length;P++){const b=B[P];v[b]&&v[b].node.mode===S.mode?(A[b][R]=f(v[b].lastCount+S.length,S.mode)-f(v[b].lastCount,S.mode),v[b].lastCount+=S.length):(v[b]&&(v[b].lastCount=S.length),A[b][R]=f(S.length,S.mode)+4+e.getCharCountIndicator(S.mode,I))}}B=k}for(let T=0;T<B.length;T++)A[B[T]].end=0;return{map:A,table:v}}function y(w,I){let v;const A=e.getBestModeForData(w);if(v=e.from(I,A),v!==e.BYTE&&v.bit<A.bit)throw new Error('"'+w+'" cannot be encoded with mode '+e.toString(v)+`.
|
|
5
5
|
Suggested mode is: `+e.toString(A));switch(v===e.KANJI&&!a.isKanjiModeEnabled()&&(v=e.BYTE),v){case e.NUMERIC:return new r(w);case e.ALPHANUMERIC:return new n(w);case e.KANJI:return new s(w);case e.BYTE:return new o(w)}}t.fromArray=function(I){return I.reduce(function(v,A){return typeof A=="string"?v.push(y(A,null)):A.data&&v.push(y(A.data,A.mode)),v},[])},t.fromString=function(I,v){const A=u(I,a.isKanjiModeEnabled()),B=g(A),T=m(B,v),N=c.find_path(T.map,"start","end"),k=[];for(let x=1;x<N.length-1;x++)k.push(T.table[N[x]].node);return t.fromArray(h(k))},t.rawSplit=function(I){return t.fromArray(u(I,a.isKanjiModeEnabled()))}})(Ti)),Ti}var qd;function ZS(){if(qd)return mi;qd=1;const t=mr(),e=kc(),r=DS(),n=FS(),o=OS(),s=MS(),i=jS(),a=tp(),c=HS(),l=qS(),d=KS(),u=wr(),f=YS();function h(T,N){const k=T.size,x=s.getPositions(N);for(let S=0;S<x.length;S++){const R=x[S][0],P=x[S][1];for(let b=-1;b<=7;b++)if(!(R+b<=-1||k<=R+b))for(let E=-1;E<=7;E++)P+E<=-1||k<=P+E||(b>=0&&b<=6&&(E===0||E===6)||E>=0&&E<=6&&(b===0||b===6)||b>=2&&b<=4&&E>=2&&E<=4?T.set(R+b,P+E,!0,!0):T.set(R+b,P+E,!1,!0))}}function g(T){const N=T.size;for(let k=8;k<N-8;k++){const x=k%2===0;T.set(k,6,x,!0),T.set(6,k,x,!0)}}function m(T,N){const k=o.getPositions(N);for(let x=0;x<k.length;x++){const S=k[x][0],R=k[x][1];for(let P=-2;P<=2;P++)for(let b=-2;b<=2;b++)P===-2||P===2||b===-2||b===2||P===0&&b===0?T.set(S+P,R+b,!0,!0):T.set(S+P,R+b,!1,!0)}}function y(T,N){const k=T.size,x=l.getEncodedBits(N);let S,R,P;for(let b=0;b<18;b++)S=Math.floor(b/3),R=b%3+k-8-3,P=(x>>b&1)===1,T.set(S,R,P,!0),T.set(R,S,P,!0)}function w(T,N,k){const x=T.size,S=d.getEncodedBits(N,k);let R,P;for(R=0;R<15;R++)P=(S>>R&1)===1,R<6?T.set(R,8,P,!0):R<8?T.set(R+1,8,P,!0):T.set(x-15+R,8,P,!0),R<8?T.set(8,x-R-1,P,!0):R<9?T.set(8,15-R-1+1,P,!0):T.set(8,15-R-1,P,!0);T.set(x-8,8,1,!0)}function I(T,N){const k=T.size;let x=-1,S=k-1,R=7,P=0;for(let b=k-1;b>0;b-=2)for(b===6&&b--;;){for(let E=0;E<2;E++)if(!T.isReserved(S,b-E)){let C=!1;P<N.length&&(C=(N[P]>>>R&1)===1),T.set(S,b-E,C),R--,R===-1&&(P++,R=7)}if(S+=x,S<0||k<=S){S-=x,x=-x;break}}}function v(T,N,k){const x=new r;k.forEach(function(E){x.put(E.mode.bit,4),x.put(E.getLength(),u.getCharCountIndicator(E.mode,T)),E.write(x)});const S=t.getSymbolTotalCodewords(T),R=a.getTotalCodewordsCount(T,N),P=(S-R)*8;for(x.getLengthInBits()+4<=P&&x.put(0,4);x.getLengthInBits()%8!==0;)x.putBit(0);const b=(P-x.getLengthInBits())/8;for(let E=0;E<b;E++)x.put(E%2?17:236,8);return A(x,T,N)}function A(T,N,k){const x=t.getSymbolTotalCodewords(N),S=a.getTotalCodewordsCount(N,k),R=x-S,P=a.getBlocksCount(N,k),b=x%P,E=P-b,C=Math.floor(x/P),L=Math.floor(R/P),M=L+1,$=C-L,j=new c($);let D=0;const _=new Array(P),F=new Array(P);let q=0;const H=new Uint8Array(T.buffer);for(let G=0;G<P;G++){const Y=G<E?L:M;_[G]=H.slice(D,D+Y),F[G]=j.encode(_[G]),D+=Y,q=Math.max(q,Y)}const K=new Uint8Array(x);let z=0,W,X;for(W=0;W<q;W++)for(X=0;X<P;X++)W<_[X].length&&(K[z++]=_[X][W]);for(W=0;W<$;W++)for(X=0;X<P;X++)K[z++]=F[X][W];return K}function B(T,N,k,x){let S;if(Array.isArray(T))S=f.fromArray(T);else if(typeof T=="string"){let C=N;if(!C){const L=f.rawSplit(T);C=l.getBestVersionForData(L,k)}S=f.fromString(T,C||40)}else throw new Error("Invalid data");const R=l.getBestVersionForData(S,k);if(!R)throw new Error("The amount of data is too big to be stored in a QR Code");if(!N)N=R;else if(N<R)throw new Error(`
|
|
@@ -31,4 +31,4 @@ Stack:
|
|
|
31
31
|
${t.stack}`:"",e?`
|
|
32
32
|
React component stack:
|
|
33
33
|
${e.trim()}`:""].filter(Boolean).join(`
|
|
34
|
-
`)}async function WA(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 GA({error:t,componentStack:e}){const{t:r}=Mc(),[n,o]=je.useState("idle"),s=async()=>{const i=VA(t,e,{url:window.location.href,userAgent:navigator.userAgent,capturedAt:new Date().toISOString()});o(await WA(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:r("errorBoundary.title")}),p.jsx("p",{className:"text-sm text-muted-foreground",children:t?.message||r("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:r(n==="copied"?"errorBoundary.copied":n==="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:r("errorBoundary.retry")})]})]})})}class XA extends je.Component{state={hasError:!1,error:null,componentStack:""};static getDerivedStateFromError(e){return{hasError:!0,error:e,componentStack:""}}componentDidCatch(e,r){console.error("Terminal error caught by boundary:",e,r),this.setState({componentStack:r.componentStack??""})}render(){return this.state.hasError?this.props.fallback?this.props.fallback:p.jsx(GA,{error:this.state.error,componentStack:this.state.componentStack}):this.props.children}}function me(){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 YA="debug",ZA="termdock:debug";function mu(t){return t?new Set(t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)):new Set}function JA(){if(typeof window>"u")return new Set;const t=mu(new URLSearchParams(window.location.search).get(YA));let e=new Set;try{e=mu(window.localStorage.getItem(ZA))}catch{e=new Set}const r=new Set([...t,...e]);return r.has("1")||r.has("true")||r.has("*")||r.has("all")?new Set(["*"]):r}function QA(t){const e=JA();return e.has("*")||e.has(t)}function ek(t){const e=QA(t);return(...r)=>{e&&console.log(`[debug:${t}]`,...r)}}const wu=80,tk=60,rk="termdock:viewport-keyboard-change",nk="termdock:viewport-layout-change",vt=240,yu=640,bu=360;function ok({measuredHeight:t,documentVisible:e,editableFocused:r}){return e&&r&&t>0}function vu(){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 ys=t=>{const e=typeof t=="number"?t:Number.parseFloat(typeof t=="string"?t:"0");return Number.isFinite(e)&&e>0?Math.round(e):0},Mp=(t,e)=>{const r=t.map(ys).filter(n=>n>0);return r.find(n=>n>=vt)??r[0]??e},Un=()=>typeof window>"u"?yu:Mp([me().innerHeight,document.documentElement?.clientHeight,document.body?.clientHeight,me().visualViewport?.height,window.screen?.availHeight,window.screen?.height],yu),jp=()=>typeof window>"u"?bu:Mp([me().innerWidth,document.documentElement?.clientWidth,document.body?.clientWidth,me().visualViewport?.width,window.screen?.availWidth,window.screen?.width],bu),Ot=t=>{const e=Number.parseFloat(t||"0");return Number.isFinite(e)?Math.max(0,Math.round(e)):0},sk=()=>typeof navigator>"u"?!1:/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1,ik=()=>typeof window>"u"?!1:me().navigator.standalone===!0||me().matchMedia?.("(display-mode: standalone)").matches===!0,Up=()=>{if(typeof window>"u"||!sk()||!ik())return{top:0,right:0,bottom:0,left:0};if(!(Un()>=jp()))return{top:0,right:0,bottom:0,left:0};const e=window.screen?.width||window.innerWidth,r=window.screen?.height||window.innerHeight,n=Math.min(e,r),o=Math.max(e,r);return n>=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 ak(t="--app-vh"){if(typeof window>"u"||typeof document>"u")return;const e=ys(me().visualViewport?.height),r=Math.max(0,Math.round(me().visualViewport?.offsetTop??0)),n=Un(),s=e>=vt?Math.min(n,e+r):n,i=Math.max(n,s),a=document.documentElement.style;a.setProperty(t,`${Math.max(s,vt)}px`),a.setProperty("--app-base-vh",`${Math.max(i,vt)}px`),a.setProperty("--app-visible-vh",`${Math.max(s,vt)}px`),a.setProperty("--app-vv-offset-top",`${r}px`),a.setProperty("--kb-translate-y","0px"),a.setProperty("--kb-margin-top","0px"),a.setProperty("--kb-height","0px");const c=Up();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 qk(t={}){const{cssVarName:e="--app-vh"}=t,r=je.useMemo(()=>ek("viewport"),[]),n=je.useCallback(()=>{if(typeof window>"u")return 0;const d=me().visualViewport,u=Un();if(!d)return u;const f=ys(d.height);if(f<vt&&u>=vt)return u;const h=d.offsetTop,m=f<u-1&&h>0&&h<=96?f+h:f,y=Math.max(0,Math.min(u,m));return y>0?Math.round(y):u},[]),[o,s]=je.useState(n),i=je.useRef(0),a=je.useRef(0),c=je.useRef(0),l=je.useRef(!1);return je.useEffect(()=>{if(typeof window>"u")return;let d=null,u=null;const f=()=>{if(u?.isConnected)return u;try{return u=document.createElement("div"),u.setAttribute("aria-hidden","true"),u.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(u),u}catch{}return null},h=()=>{let P={top:0,right:0,bottom:0,left:0};try{const L=f();if(L){const M=getComputedStyle(L);P={top:Ot(M.paddingTop),right:Ot(M.paddingRight),bottom:Ot(M.paddingBottom),left:Ot(M.paddingLeft)}}}catch{}const b=me();if(b!==window){const L=b.getComputedStyle(b.document.documentElement);P={top:Math.max(P.top,Ot(L.getPropertyValue("--safe-top-inset"))),right:Math.max(P.right,Ot(L.getPropertyValue("--safe-right-inset"))),bottom:Math.max(P.bottom,Ot(L.getPropertyValue("--safe-bottom-inset"))),left:Math.max(P.left,Ot(L.getPropertyValue("--safe-left-inset")))}}const E=Up(),C={top:Math.max(P.top,E.top),right:Math.max(P.right,E.right),bottom:Math.max(P.bottom,E.bottom),left:Math.max(P.left,E.left)};return document.documentElement.style.setProperty("--safe-top-inset",`${C.top}px`),document.documentElement.style.setProperty("--safe-right-inset",`${C.right}px`),document.documentElement.style.setProperty("--safe-bottom-inset",`${C.bottom}px`),document.documentElement.style.setProperty("--safe-left-inset",`${C.left}px`),C},g=(P,b,E,C)=>{const L=Math.max(b,E);if(i.current===0){i.current=L,a.current=P,document.documentElement.style.setProperty("--app-base-vh",`${L}px`);return}const M=Math.abs(P-a.current),$=C<=wu;(M>tk||$)&&(i.current=L,a.current=P,document.documentElement.style.setProperty("--app-base-vh",`${L}px`))},m=(P="event")=>{d=null;const b=n(),E=Math.round(me().visualViewport?.offsetTop??0),C=ys(me().visualViewport?.height),L=C>=vt?C:b,M=Un(),$=jp(),j=Math.max(0,L+E),D=h(),_=D.bottom,F=Math.max(0,i.current-j-_);g($,M,j,F),s(Rt=>Rt===b?Rt:b);const q=Number.parseInt(document.documentElement.style.getPropertyValue(e)||"0",10);document.documentElement.style.setProperty(e,`${b}px`),document.documentElement.style.setProperty("--app-vv-offset-top",`${E}px`);const H=i.current,K=Math.min(b,L),z=Math.max(0,Math.min(H,j)),W=Math.max(0,Math.round(H-z-_)),X=vu(),G=ok({measuredHeight:W,documentVisible:document.visibilityState==="visible",editableFocused:X}),Y=G?W:0,se=Y>=wu,Pe=-Y,De=Y;document.documentElement.style.setProperty("--kb-translate-y",`${Pe}px`),document.documentElement.style.setProperty("--kb-margin-top",`${De}px`),document.documentElement.style.setProperty("--kb-height",`${Y}px`),document.documentElement.style.setProperty("--app-visible-vh",`${z}px`);const oe=Math.abs(Y-c.current)>1,nt=se!==l.current;(oe||nt)&&(c.current=Y,l.current=se,document.dispatchEvent(new CustomEvent(rk,{detail:{baseHeight:H,visibleHeight:z,visualViewportHeight:L,offsetTop:E,keyboardHeight:Y,isOpen:se,source:P}}))),(q!==b||E>0||oe||nt)&&r("sync",{cssVarName:e,innerHeight:M,baseHeight:H,rawViewportHeight:L,offsetTop:E,visibleHeight:z,rawHeight:b,appliedHeight:b,keyboardViewportHeight:K,measuredKeyboardHeight:W,editableFocused:X,applyKeyboardInset:G,keyboardHeight:Y,isKeyboardOpen:se,safeAreaInsets:D,source:P}),document.dispatchEvent(new CustomEvent(nk,{detail:{height:b,baseHeight:H,visibleHeight:z,offsetTop:E,source:P}}))},y=(P="event")=>{(P.includes("visibilitychange")||P.includes("pageshow"))&&r("schedule",{source:P}),d===null&&(d=window.requestAnimationFrame(()=>m(P)))};y("mount");const w=()=>y("resize"),I=()=>y("orientationchange"),v=()=>y("visualViewport.resize"),A=()=>y("visualViewport.scroll"),B=()=>y("focusin"),T=()=>y("focusout"),N=P=>{const b=document.activeElement;b instanceof HTMLElement&&vu()&&b.blur(),c.current=0,l.current=!1;const E=Math.max(i.current,Un(),vt),C=document.documentElement.style;C.setProperty(e,`${E}px`),C.setProperty("--app-visible-vh",`${E}px`),C.setProperty("--app-vv-offset-top","0px"),C.setProperty("--kb-translate-y","0px"),C.setProperty("--kb-margin-top","0px"),C.setProperty("--kb-height","0px"),s(L=>L===E?L:E),r("keyboard session reset",{source:P,baseHeight:E})};window.addEventListener("resize",w),window.addEventListener("orientationchange",I),me().visualViewport?.addEventListener("resize",v),me().visualViewport?.addEventListener("scroll",A),document.addEventListener("focusin",B),document.addEventListener("focusout",T);const k=P=>{r("resume",{source:P,innerHeight:Math.round(window.innerHeight),visualViewport:me().visualViewport?{width:Math.round(me().visualViewport.width),height:Math.round(me().visualViewport.height),offsetTop:Math.round(me().visualViewport.offsetTop)}:null,hidden:document.hidden}),y(P)},x=()=>{document.hidden?N("visibilitychange:hidden"):k("visibilitychange")},S=()=>k("pageshow"),R=()=>N("pagehide");return document.addEventListener("visibilitychange",x),window.addEventListener("pageshow",S),window.addEventListener("pagehide",R),()=>{window.removeEventListener("resize",w),window.removeEventListener("orientationchange",I),me().visualViewport?.removeEventListener("resize",v),me().visualViewport?.removeEventListener("scroll",A),document.removeEventListener("focusin",B),document.removeEventListener("focusout",T),document.removeEventListener("visibilitychange",x),window.removeEventListener("pageshow",S),window.removeEventListener("pagehide",R),d!==null&&window.cancelAnimationFrame(d),u?.remove()}},[e,r,n]),o}const xu=5*6e4;let Ha,$p=!1,Hp=!1,Su=!1;const qa=new Set;function Eu(){$p=!0,qa.forEach(t=>t())}function ck(){return O.useSyncExternalStore(t=>(qa.add(t),()=>{qa.delete(t)}),()=>$p,()=>!1)}function lk(){window.dispatchEvent(new Event("termdock:before-update")),Hp=!0,Ha?.waiting?Ha.waiting.postMessage({type:"SKIP_WAITING"}):window.location.reload()}function dk(t,e){let r=t;return()=>{if(!r){r=!0;return}e()}}function uk(){if(Su||typeof window>"u"||!("serviceWorker"in navigator))return;Su=!0,navigator.serviceWorker.addEventListener("controllerchange",dk(!!navigator.serviceWorker.controller,()=>{Hp?window.location.reload():Eu()}));const t=()=>{navigator.serviceWorker.register("/sw.js",{scope:"/",updateViaCache:"none"}).then(e=>{Ha=e;const r=()=>{e.waiting&&Eu()},n=()=>{const i=e.installing;i?.addEventListener("statechange",()=>{i.state==="installed"&&navigator.serviceWorker.controller&&r()})};e.addEventListener("updatefound",n),n(),r();let o=0;const s=()=>{document.visibilityState!=="visible"||Date.now()-o<xu||(o=Date.now(),e.update().then(r).catch(()=>{}))};s(),window.setInterval(s,xu),document.addEventListener("visibilitychange",s)}).catch(()=>{})};document.readyState==="complete"?t():window.addEventListener("load",t,{once:!0})}function fk(){const t=ck(),[e,r]=O.useState(!1),{locale:n}=Mc();if(!t||e)return null;const o=n==="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:lk,children:o?"重新加载":"Reload"}),p.jsx("button",{type:"button",className:"whitespace-nowrap text-muted-foreground",onClick:()=>r(!0),children:o?"稍后":"Later"})]})}function qp(t){const e=document.querySelector('meta[name="theme-color"]');e&&e.setAttribute("content",t==="light"?"#FFFCF0":"#1C1B1A")}const hk={activeKey:"root",items:[]},pk=()=>()=>{},gk=()=>hk;function mk({host:t,item:e,active:r}){const n=O.useRef(null);return O.useEffect(()=>{n.current?.toggleAttribute("inert",!r)},[r]),O.useEffect(()=>()=>t.attach(e.key,null),[t,e.key]),p.jsx("iframe",{ref:n,title:e.service?.label||"服务工作区",src:`/workspace.html?${Uh}=${encodeURIComponent(e.key)}`,className:"absolute inset-0 h-full w-full border-0 bg-[var(--chrome-bg)]",style:{visibility:r?"visible":"hidden",pointerEvents:r?"auto":"none"},"aria-hidden":!r,tabIndex:r?0:-1,allow:"clipboard-read; clipboard-write; fullscreen",onLoad:o=>t.attach(e.key,o.currentTarget.contentWindow)})}function wk({children:t}){const e=window.parent===window?St():void 0,r=O.useSyncExternalStore(e?.subscribe||pk,e?.snapshot||gk),n=O.useRef(null);return O.useEffect(()=>{n.current?.toggleAttribute("inert",r.activeKey!=="root")},[r.activeKey]),O.useEffect(()=>{if(!e)return;const o=()=>{try{const s=JSON.parse(localStorage.getItem("termdock-color-theme")||"null");(s==="dark"||s==="light")&&(document.documentElement.dataset.theme=s,qp(s))}catch{}};return window.addEventListener("storage",o),()=>window.removeEventListener("storage",o)},[e]),O.useEffect(()=>{if(!e||!("serviceWorker"in navigator))return;const o=a=>{if(a.source!==navigator.serviceWorker.controller)return;const c=a.data;c?.type==="termdock:focus-session"&&typeof c.targetPeerId=="string"&&typeof c.sessionId=="string"&&e.focusSession(c.targetPeerId,c.sessionId)&&(a.ports[0]?.postMessage({type:"termdock:focus-session-ack"}),a.stopImmediatePropagation())},s=async()=>{if("caches"in window)try{const a=await caches.open("termdock-notification-target-v1"),c=await a.match("/__termdock-notification-target");if(!c)return;const l=await c.json();typeof l.targetPeerId=="string"&&typeof l.sessionId=="string"&&Date.now()-l.clickedAt<3e4&&e.focusSession(l.targetPeerId,l.sessionId)&&await a.delete("/__termdock-notification-target")}catch{}},i=()=>{document.hidden||s()};return navigator.serviceWorker.addEventListener("message",o),document.addEventListener("visibilitychange",i),s(),()=>{navigator.serviceWorker.removeEventListener("message",o),document.removeEventListener("visibilitychange",i)}},[e]),e?p.jsxs("div",{className:"relative h-full w-full overflow-hidden bg-[var(--chrome-bg)]",children:[p.jsx("div",{ref:n,className:"h-full w-full","aria-hidden":r.activeKey!=="root",style:{visibility:r.activeKey==="root"?"visible":"hidden"},children:t}),r.items.filter(o=>o.key!=="root").map(o=>p.jsx(mk,{host:e,item:o,active:r.activeKey===o.key},o.key))]}):t}const yk=O.lazy(()=>Kt(()=>import("./App-Cdj9QrTs.js").then(t=>t.A),__vite__mapDeps([4,2,1,5,6,3,7,8]))),bk=O.lazy(()=>Kt(()=>import("./DagPlayground-ByHPEtI-.js"),__vite__mapDeps([9,10,2,1,11,8,3])).then(t=>({default:t.DagPlayground}))),vk=O.lazy(()=>Kt(()=>import("./DiffLab-DRSI8fLW.js"),__vite__mapDeps([12,2,1,13,7,14,3])).then(t=>({default:t.DiffLab}))),xk=O.lazy(()=>Kt(()=>import("./DiffReviewLab-CEXLSbXZ.js"),__vite__mapDeps([15,2,1,16,5,6,11,13,7,14,3])).then(t=>({default:t.DiffReviewLab})));ak();Mx();window.parent===window&&uk();const Ln=ne();Ln&&Kt(()=>import("./App-Cdj9QrTs.js").then(t=>t.A),__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")&&(Tx(Ln?{...Ln,id:Ln.targetPeerId,label:Ln.serviceName||location.host}:void 0),zh());try{const t=JSON.parse(window.localStorage.getItem("termdock-color-theme")||"null");(t==="dark"||t==="light")&&(document.documentElement.dataset.theme=t,qp(t))}catch{}Gx.createRoot(document.getElementById("root")).render(p.jsx(je.StrictMode,{children:p.jsxs(G2,{children:[window.parent===window&&p.jsx(fk,{}),p.jsx(XA,{children:p.jsx(O.Suspense,{fallback:p.jsx("div",{className:"termdock-boot",role:"status",children:"Loading Termdock"}),children:(()=>{const t=new URLSearchParams(window.location.search);return t.get("dag-playground")==="1"?p.jsx(bk,{}):t.get("diff-review-lab")==="1"?p.jsx(xk,{}):t.get("diff-lab")==="1"?p.jsx(vk,{}):p.jsx(wk,{children:p.jsx(zA,{children:p.jsx(yk,{})})})})()})})]})}));export{jE as $,Lc as A,sS as B,Ac as C,nr as D,cp as E,x2 as F,v2 as G,h1 as H,JE as I,SE as J,UE as K,$e as L,ap as M,so as N,dr as O,yA as P,Bk as Q,pA as R,Ds as S,SS as T,k1 as U,nk as V,xa as W,AS as X,ek as Y,Te as Z,Kt as _,Gh as a,F2 as a$,ni as a0,P1 as a1,c2 as a2,i1 as a3,T1 as a4,a2 as a5,ip as a6,EE as a7,gA as a8,t1 as a9,p1 as aA,S2 as aB,bp as aC,St as aD,vu as aE,Gf as aF,ph as aG,s2 as aH,S1 as aI,I1 as aJ,yp as aK,V1 as aL,G1 as aM,$1 as aN,z1 as aO,q1 as aP,di as aQ,p as aR,Lk as aS,o1 as aT,C2 as aU,L1 as aV,_2 as aW,j2 as aX,Z1 as aY,r1 as aZ,b1 as a_,ct as aa,x1 as ab,v1 as ac,A1 as ad,ME as ae,b2 as af,m2 as ag,g2 as ah,w2 as ai,w1 as aj,W1 as ak,h2 as al,k2 as am,r2 as an,E2 as ao,p2 as ap,d2 as aq,O1 as ar,y2 as as,c1 as at,gs as au,Jh as av,vE as aw,cE as ax,m1 as ay,n1 as az,nS as b,Gt as b$,u2 as b0,lE as b1,l1 as b2,B1 as b3,HE as b4,Vt as b5,o2 as b6,t2 as b7,n2 as b8,i2 as b9,ne as bA,J1 as bB,$2 as bC,Ox as bD,GE as bE,U2 as bF,XE as bG,zE as bH,$E as bI,WE as bJ,ZE as bK,P2 as bL,gp as bM,OE as bN,oi as bO,jk as bP,O2 as bQ,L2 as bR,_k as bS,KE as bT,Pk as bU,qp as bV,Rk as bW,E1 as bX,R1 as bY,y1 as bZ,d1 as b_,Hk as ba,Dk as bb,qE as bc,AE as bd,Ca as be,N2 as bf,_1 as bg,M2 as bh,f1 as bi,u1 as bj,M1 as bk,D1 as bl,g1 as bm,j1 as bn,F1 as bo,YE as bp,$k as bq,QE as br,s1 as bs,N1 as bt,B2 as bu,Tk as bv,T2 as bw,A2 as bx,R2 as by,D2 as bz,cS as c,l2 as c0,Mc as c1,Ok as c2,Oe as c3,qk as c4,me as c5,Q1 as c6,rt as c7,Mk as c8,Fk as c9,fr as d,Xh as e,fS as f,XA as g,wS as h,Yh as i,eA as j,pe as k,VE as l,fc as m,It as n,I2 as o,Nk as p,X1 as q,K1 as r,hc as s,e2 as t,kx as u,C1 as v,Zb as w,xE as x,e1 as y,Uk as z};
|
|
34
|
+
`)}async function WA(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 GA({error:t,componentStack:e}){const{t:r}=Mc(),[n,o]=je.useState("idle"),s=async()=>{const i=VA(t,e,{url:window.location.href,userAgent:navigator.userAgent,capturedAt:new Date().toISOString()});o(await WA(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:r("errorBoundary.title")}),p.jsx("p",{className:"text-sm text-muted-foreground",children:t?.message||r("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:r(n==="copied"?"errorBoundary.copied":n==="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:r("errorBoundary.retry")})]})]})})}class XA extends je.Component{state={hasError:!1,error:null,componentStack:""};static getDerivedStateFromError(e){return{hasError:!0,error:e,componentStack:""}}componentDidCatch(e,r){console.error("Terminal error caught by boundary:",e,r),this.setState({componentStack:r.componentStack??""})}render(){return this.state.hasError?this.props.fallback?this.props.fallback:p.jsx(GA,{error:this.state.error,componentStack:this.state.componentStack}):this.props.children}}function me(){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 YA="debug",ZA="termdock:debug";function mu(t){return t?new Set(t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)):new Set}function JA(){if(typeof window>"u")return new Set;const t=mu(new URLSearchParams(window.location.search).get(YA));let e=new Set;try{e=mu(window.localStorage.getItem(ZA))}catch{e=new Set}const r=new Set([...t,...e]);return r.has("1")||r.has("true")||r.has("*")||r.has("all")?new Set(["*"]):r}function QA(t){const e=JA();return e.has("*")||e.has(t)}function ek(t){const e=QA(t);return(...r)=>{e&&console.log(`[debug:${t}]`,...r)}}const wu=80,tk=60,rk="termdock:viewport-keyboard-change",nk="termdock:viewport-layout-change",vt=240,yu=640,bu=360;function ok({measuredHeight:t,documentVisible:e,editableFocused:r}){return e&&r&&t>0}function vu(){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 ys=t=>{const e=typeof t=="number"?t:Number.parseFloat(typeof t=="string"?t:"0");return Number.isFinite(e)&&e>0?Math.round(e):0},Mp=(t,e)=>{const r=t.map(ys).filter(n=>n>0);return r.find(n=>n>=vt)??r[0]??e},Un=()=>typeof window>"u"?yu:Mp([me().innerHeight,document.documentElement?.clientHeight,document.body?.clientHeight,me().visualViewport?.height,window.screen?.availHeight,window.screen?.height],yu),jp=()=>typeof window>"u"?bu:Mp([me().innerWidth,document.documentElement?.clientWidth,document.body?.clientWidth,me().visualViewport?.width,window.screen?.availWidth,window.screen?.width],bu),Ot=t=>{const e=Number.parseFloat(t||"0");return Number.isFinite(e)?Math.max(0,Math.round(e)):0},sk=()=>typeof navigator>"u"?!1:/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1,ik=()=>typeof window>"u"?!1:me().navigator.standalone===!0||me().matchMedia?.("(display-mode: standalone)").matches===!0,Up=()=>{if(typeof window>"u"||!sk()||!ik())return{top:0,right:0,bottom:0,left:0};if(!(Un()>=jp()))return{top:0,right:0,bottom:0,left:0};const e=window.screen?.width||window.innerWidth,r=window.screen?.height||window.innerHeight,n=Math.min(e,r),o=Math.max(e,r);return n>=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 ak(t="--app-vh"){if(typeof window>"u"||typeof document>"u")return;const e=ys(me().visualViewport?.height),r=Math.max(0,Math.round(me().visualViewport?.offsetTop??0)),n=Un(),s=e>=vt?Math.min(n,e+r):n,i=Math.max(n,s),a=document.documentElement.style;a.setProperty(t,`${Math.max(s,vt)}px`),a.setProperty("--app-base-vh",`${Math.max(i,vt)}px`),a.setProperty("--app-visible-vh",`${Math.max(s,vt)}px`),a.setProperty("--app-vv-offset-top",`${r}px`),a.setProperty("--kb-translate-y","0px"),a.setProperty("--kb-margin-top","0px"),a.setProperty("--kb-height","0px");const c=Up();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 qk(t={}){const{cssVarName:e="--app-vh"}=t,r=je.useMemo(()=>ek("viewport"),[]),n=je.useCallback(()=>{if(typeof window>"u")return 0;const d=me().visualViewport,u=Un();if(!d)return u;const f=ys(d.height);if(f<vt&&u>=vt)return u;const h=d.offsetTop,m=f<u-1&&h>0&&h<=96?f+h:f,y=Math.max(0,Math.min(u,m));return y>0?Math.round(y):u},[]),[o,s]=je.useState(n),i=je.useRef(0),a=je.useRef(0),c=je.useRef(0),l=je.useRef(!1);return je.useEffect(()=>{if(typeof window>"u")return;let d=null,u=null;const f=()=>{if(u?.isConnected)return u;try{return u=document.createElement("div"),u.setAttribute("aria-hidden","true"),u.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(u),u}catch{}return null},h=()=>{let P={top:0,right:0,bottom:0,left:0};try{const L=f();if(L){const M=getComputedStyle(L);P={top:Ot(M.paddingTop),right:Ot(M.paddingRight),bottom:Ot(M.paddingBottom),left:Ot(M.paddingLeft)}}}catch{}const b=me();if(b!==window){const L=b.getComputedStyle(b.document.documentElement);P={top:Math.max(P.top,Ot(L.getPropertyValue("--safe-top-inset"))),right:Math.max(P.right,Ot(L.getPropertyValue("--safe-right-inset"))),bottom:Math.max(P.bottom,Ot(L.getPropertyValue("--safe-bottom-inset"))),left:Math.max(P.left,Ot(L.getPropertyValue("--safe-left-inset")))}}const E=Up(),C={top:Math.max(P.top,E.top),right:Math.max(P.right,E.right),bottom:Math.max(P.bottom,E.bottom),left:Math.max(P.left,E.left)};return document.documentElement.style.setProperty("--safe-top-inset",`${C.top}px`),document.documentElement.style.setProperty("--safe-right-inset",`${C.right}px`),document.documentElement.style.setProperty("--safe-bottom-inset",`${C.bottom}px`),document.documentElement.style.setProperty("--safe-left-inset",`${C.left}px`),C},g=(P,b,E,C)=>{const L=Math.max(b,E);if(i.current===0){i.current=L,a.current=P,document.documentElement.style.setProperty("--app-base-vh",`${L}px`);return}const M=Math.abs(P-a.current),$=C<=wu;(M>tk||$)&&(i.current=L,a.current=P,document.documentElement.style.setProperty("--app-base-vh",`${L}px`))},m=(P="event")=>{d=null;const b=n(),E=Math.round(me().visualViewport?.offsetTop??0),C=ys(me().visualViewport?.height),L=C>=vt?C:b,M=Un(),$=jp(),j=Math.max(0,L+E),D=h(),_=D.bottom,F=Math.max(0,i.current-j-_);g($,M,j,F),s(Rt=>Rt===b?Rt:b);const q=Number.parseInt(document.documentElement.style.getPropertyValue(e)||"0",10);document.documentElement.style.setProperty(e,`${b}px`),document.documentElement.style.setProperty("--app-vv-offset-top",`${E}px`);const H=i.current,K=Math.min(b,L),z=Math.max(0,Math.min(H,j)),W=Math.max(0,Math.round(H-z-_)),X=vu(),G=ok({measuredHeight:W,documentVisible:document.visibilityState==="visible",editableFocused:X}),Y=G?W:0,se=Y>=wu,Pe=-Y,De=Y;document.documentElement.style.setProperty("--kb-translate-y",`${Pe}px`),document.documentElement.style.setProperty("--kb-margin-top",`${De}px`),document.documentElement.style.setProperty("--kb-height",`${Y}px`),document.documentElement.style.setProperty("--app-visible-vh",`${z}px`);const oe=Math.abs(Y-c.current)>1,nt=se!==l.current;(oe||nt)&&(c.current=Y,l.current=se,document.dispatchEvent(new CustomEvent(rk,{detail:{baseHeight:H,visibleHeight:z,visualViewportHeight:L,offsetTop:E,keyboardHeight:Y,isOpen:se,source:P}}))),(q!==b||E>0||oe||nt)&&r("sync",{cssVarName:e,innerHeight:M,baseHeight:H,rawViewportHeight:L,offsetTop:E,visibleHeight:z,rawHeight:b,appliedHeight:b,keyboardViewportHeight:K,measuredKeyboardHeight:W,editableFocused:X,applyKeyboardInset:G,keyboardHeight:Y,isKeyboardOpen:se,safeAreaInsets:D,source:P}),document.dispatchEvent(new CustomEvent(nk,{detail:{height:b,baseHeight:H,visibleHeight:z,offsetTop:E,source:P}}))},y=(P="event")=>{(P.includes("visibilitychange")||P.includes("pageshow"))&&r("schedule",{source:P}),d===null&&(d=window.requestAnimationFrame(()=>m(P)))};y("mount");const w=()=>y("resize"),I=()=>y("orientationchange"),v=()=>y("visualViewport.resize"),A=()=>y("visualViewport.scroll"),B=()=>y("focusin"),T=()=>y("focusout"),N=P=>{const b=document.activeElement;b instanceof HTMLElement&&vu()&&b.blur(),c.current=0,l.current=!1;const E=Math.max(i.current,Un(),vt),C=document.documentElement.style;C.setProperty(e,`${E}px`),C.setProperty("--app-visible-vh",`${E}px`),C.setProperty("--app-vv-offset-top","0px"),C.setProperty("--kb-translate-y","0px"),C.setProperty("--kb-margin-top","0px"),C.setProperty("--kb-height","0px"),s(L=>L===E?L:E),r("keyboard session reset",{source:P,baseHeight:E})};window.addEventListener("resize",w),window.addEventListener("orientationchange",I),me().visualViewport?.addEventListener("resize",v),me().visualViewport?.addEventListener("scroll",A),document.addEventListener("focusin",B),document.addEventListener("focusout",T);const k=P=>{r("resume",{source:P,innerHeight:Math.round(window.innerHeight),visualViewport:me().visualViewport?{width:Math.round(me().visualViewport.width),height:Math.round(me().visualViewport.height),offsetTop:Math.round(me().visualViewport.offsetTop)}:null,hidden:document.hidden}),y(P)},x=()=>{document.hidden?N("visibilitychange:hidden"):k("visibilitychange")},S=()=>k("pageshow"),R=()=>N("pagehide");return document.addEventListener("visibilitychange",x),window.addEventListener("pageshow",S),window.addEventListener("pagehide",R),()=>{window.removeEventListener("resize",w),window.removeEventListener("orientationchange",I),me().visualViewport?.removeEventListener("resize",v),me().visualViewport?.removeEventListener("scroll",A),document.removeEventListener("focusin",B),document.removeEventListener("focusout",T),document.removeEventListener("visibilitychange",x),window.removeEventListener("pageshow",S),window.removeEventListener("pagehide",R),d!==null&&window.cancelAnimationFrame(d),u?.remove()}},[e,r,n]),o}const xu=5*6e4;let Ha,$p=!1,Hp=!1,Su=!1;const qa=new Set;function Eu(){$p=!0,qa.forEach(t=>t())}function ck(){return O.useSyncExternalStore(t=>(qa.add(t),()=>{qa.delete(t)}),()=>$p,()=>!1)}function lk(){window.dispatchEvent(new Event("termdock:before-update")),Hp=!0,Ha?.waiting?Ha.waiting.postMessage({type:"SKIP_WAITING"}):window.location.reload()}function dk(t,e){let r=t;return()=>{if(!r){r=!0;return}e()}}function uk(){if(Su||typeof window>"u"||!("serviceWorker"in navigator))return;Su=!0,navigator.serviceWorker.addEventListener("controllerchange",dk(!!navigator.serviceWorker.controller,()=>{Hp?window.location.reload():Eu()}));const t=()=>{navigator.serviceWorker.register("/sw.js",{scope:"/",updateViaCache:"none"}).then(e=>{Ha=e;const r=()=>{e.waiting&&Eu()},n=()=>{const i=e.installing;i?.addEventListener("statechange",()=>{i.state==="installed"&&navigator.serviceWorker.controller&&r()})};e.addEventListener("updatefound",n),n(),r();let o=0;const s=()=>{document.visibilityState!=="visible"||Date.now()-o<xu||(o=Date.now(),e.update().then(r).catch(()=>{}))};s(),window.setInterval(s,xu),document.addEventListener("visibilitychange",s)}).catch(()=>{})};document.readyState==="complete"?t():window.addEventListener("load",t,{once:!0})}function fk(){const t=ck(),[e,r]=O.useState(!1),{locale:n}=Mc();if(!t||e)return null;const o=n==="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:lk,children:o?"重新加载":"Reload"}),p.jsx("button",{type:"button",className:"whitespace-nowrap text-muted-foreground",onClick:()=>r(!0),children:o?"稍后":"Later"})]})}function qp(t){const e=document.querySelector('meta[name="theme-color"]');e&&e.setAttribute("content",t==="light"?"#FFFCF0":"#1C1B1A")}const hk={activeKey:"root",items:[]},pk=()=>()=>{},gk=()=>hk;function mk({host:t,item:e,active:r}){const n=O.useRef(null);return O.useEffect(()=>{n.current?.toggleAttribute("inert",!r)},[r]),O.useEffect(()=>()=>t.attach(e.key,null),[t,e.key]),p.jsx("iframe",{ref:n,title:e.service?.label||"服务工作区",src:`/workspace.html?${Uh}=${encodeURIComponent(e.key)}`,className:"fixed inset-0 w-full border-0 bg-[var(--chrome-bg)]",style:{height:"var(--app-base-vh, 100%)",visibility:r?"visible":"hidden",pointerEvents:r?"auto":"none"},"aria-hidden":!r,tabIndex:r?0:-1,allow:"clipboard-read; clipboard-write; fullscreen",onLoad:o=>t.attach(e.key,o.currentTarget.contentWindow)})}function wk({children:t}){const e=window.parent===window?St():void 0,r=O.useSyncExternalStore(e?.subscribe||pk,e?.snapshot||gk),n=O.useRef(null);return O.useEffect(()=>{n.current?.toggleAttribute("inert",r.activeKey!=="root")},[r.activeKey]),O.useEffect(()=>{if(!e)return;const o=()=>{try{const s=JSON.parse(localStorage.getItem("termdock-color-theme")||"null");(s==="dark"||s==="light")&&(document.documentElement.dataset.theme=s,qp(s))}catch{}};return window.addEventListener("storage",o),()=>window.removeEventListener("storage",o)},[e]),O.useEffect(()=>{if(!e||!("serviceWorker"in navigator))return;const o=a=>{if(a.source!==navigator.serviceWorker.controller)return;const c=a.data;c?.type==="termdock:focus-session"&&typeof c.targetPeerId=="string"&&typeof c.sessionId=="string"&&e.focusSession(c.targetPeerId,c.sessionId)&&(a.ports[0]?.postMessage({type:"termdock:focus-session-ack"}),a.stopImmediatePropagation())},s=async()=>{if("caches"in window)try{const a=await caches.open("termdock-notification-target-v1"),c=await a.match("/__termdock-notification-target");if(!c)return;const l=await c.json();typeof l.targetPeerId=="string"&&typeof l.sessionId=="string"&&Date.now()-l.clickedAt<3e4&&e.focusSession(l.targetPeerId,l.sessionId)&&await a.delete("/__termdock-notification-target")}catch{}},i=()=>{document.hidden||s()};return navigator.serviceWorker.addEventListener("message",o),document.addEventListener("visibilitychange",i),s(),()=>{navigator.serviceWorker.removeEventListener("message",o),document.removeEventListener("visibilitychange",i)}},[e]),e?p.jsxs("div",{className:"relative h-full w-full overflow-hidden bg-[var(--chrome-bg)]",children:[p.jsx("div",{ref:n,className:"h-full w-full","aria-hidden":r.activeKey!=="root",style:{visibility:r.activeKey==="root"?"visible":"hidden"},children:t}),r.items.filter(o=>o.key!=="root").map(o=>p.jsx(mk,{host:e,item:o,active:r.activeKey===o.key},o.key))]}):t}const yk=O.lazy(()=>Kt(()=>import("./App-CqPSkz_g.js").then(t=>t.A),__vite__mapDeps([4,2,1,5,6,3,7,8]))),bk=O.lazy(()=>Kt(()=>import("./DagPlayground-B9ly2Wta.js"),__vite__mapDeps([9,10,2,1,11,8,3])).then(t=>({default:t.DagPlayground}))),vk=O.lazy(()=>Kt(()=>import("./DiffLab-Bkzvr6Ys.js"),__vite__mapDeps([12,2,1,13,7,14,3])).then(t=>({default:t.DiffLab}))),xk=O.lazy(()=>Kt(()=>import("./DiffReviewLab--K2fE9B_.js"),__vite__mapDeps([15,2,1,16,5,6,11,13,7,14,3])).then(t=>({default:t.DiffReviewLab})));ak();Mx();window.parent===window&&uk();const Ln=ne();Ln&&Kt(()=>import("./App-CqPSkz_g.js").then(t=>t.A),__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")&&(Tx(Ln?{...Ln,id:Ln.targetPeerId,label:Ln.serviceName||location.host}:void 0),zh());try{const t=JSON.parse(window.localStorage.getItem("termdock-color-theme")||"null");(t==="dark"||t==="light")&&(document.documentElement.dataset.theme=t,qp(t))}catch{}Gx.createRoot(document.getElementById("root")).render(p.jsx(je.StrictMode,{children:p.jsxs(G2,{children:[window.parent===window&&p.jsx(fk,{}),p.jsx(XA,{children:p.jsx(O.Suspense,{fallback:p.jsx("div",{className:"termdock-boot",role:"status",children:"Loading Termdock"}),children:(()=>{const t=new URLSearchParams(window.location.search);return t.get("dag-playground")==="1"?p.jsx(bk,{}):t.get("diff-review-lab")==="1"?p.jsx(xk,{}):t.get("diff-lab")==="1"?p.jsx(vk,{}):p.jsx(wk,{children:p.jsx(zA,{children:p.jsx(yk,{})})})})()})})]})}));export{jE as $,Lc as A,sS as B,Ac as C,nr as D,cp as E,x2 as F,v2 as G,h1 as H,JE as I,SE as J,UE as K,$e as L,ap as M,so as N,dr as O,yA as P,Bk as Q,pA as R,Ds as S,SS as T,k1 as U,nk as V,xa as W,AS as X,ek as Y,Te as Z,Kt as _,Gh as a,F2 as a$,ni as a0,P1 as a1,c2 as a2,i1 as a3,T1 as a4,a2 as a5,ip as a6,EE as a7,gA as a8,t1 as a9,p1 as aA,S2 as aB,bp as aC,St as aD,vu as aE,Gf as aF,ph as aG,s2 as aH,S1 as aI,I1 as aJ,yp as aK,V1 as aL,G1 as aM,$1 as aN,z1 as aO,q1 as aP,di as aQ,p as aR,Lk as aS,o1 as aT,C2 as aU,L1 as aV,_2 as aW,j2 as aX,Z1 as aY,r1 as aZ,b1 as a_,ct as aa,x1 as ab,v1 as ac,A1 as ad,ME as ae,b2 as af,m2 as ag,g2 as ah,w2 as ai,w1 as aj,W1 as ak,h2 as al,k2 as am,r2 as an,E2 as ao,p2 as ap,d2 as aq,O1 as ar,y2 as as,c1 as at,gs as au,Jh as av,vE as aw,cE as ax,m1 as ay,n1 as az,nS as b,Gt as b$,u2 as b0,lE as b1,l1 as b2,B1 as b3,HE as b4,Vt as b5,o2 as b6,t2 as b7,n2 as b8,i2 as b9,ne as bA,J1 as bB,$2 as bC,Ox as bD,GE as bE,U2 as bF,XE as bG,zE as bH,$E as bI,WE as bJ,ZE as bK,P2 as bL,gp as bM,OE as bN,oi as bO,jk as bP,O2 as bQ,L2 as bR,_k as bS,KE as bT,Pk as bU,qp as bV,Rk as bW,E1 as bX,R1 as bY,y1 as bZ,d1 as b_,Hk as ba,Dk as bb,qE as bc,AE as bd,Ca as be,N2 as bf,_1 as bg,M2 as bh,f1 as bi,u1 as bj,M1 as bk,D1 as bl,g1 as bm,j1 as bn,F1 as bo,YE as bp,$k as bq,QE as br,s1 as bs,N1 as bt,B2 as bu,Tk as bv,T2 as bw,A2 as bx,R2 as by,D2 as bz,cS as c,l2 as c0,Mc as c1,Ok as c2,Oe as c3,qk as c4,me as c5,Q1 as c6,rt as c7,Mk as c8,Fk as c9,fr as d,Xh as e,fS as f,XA as g,wS as h,Yh as i,eA as j,pe as k,VE as l,fc as m,It as n,I2 as o,Nk as p,X1 as q,K1 as r,hc as s,e2 as t,kx as u,C1 as v,Zb as w,xE as x,e1 as y,Uk as z};
|